From 50f62b3520764da6c82307c9412f36a7fdc67b04 Mon Sep 17 00:00:00 2001 From: Jaemin Choi <1dotolee@gmail.com> Date: Wed, 6 Mar 2024 01:33:11 +0900 Subject: [PATCH] feat: copy code from codedang --- .eslintrc.cjs | 46 + .gitignore | 155 + env.d.ts | 5 + histoire.config.ts | 11 + index.html | 35 + package.json | 79 + pnpm-lock.yaml | 5040 +++++++++++++++++ postcss.config.js | 6 + public/android-chrome-192x192.png | Bin 0 -> 4911 bytes public/android-chrome-512x512.png | Bin 0 -> 10942 bytes public/apple-touch-icon.png | Bin 0 -> 4340 bytes public/favicon-16x16.png | Bin 0 -> 393 bytes public/favicon-32x32.png | Bin 0 -> 705 bytes public/favicon.ico | Bin 0 -> 15406 bytes public/open-graph.png | Bin 0 -> 7500 bytes public/site.webmanifest | 17 + src/App.vue | 33 + src/admin/components/CreateNoticeModal.vue | 62 + src/admin/components/ImportProblemModal.vue | 249 + .../[groupId]/contest/CreateContestModal.vue | 65 + .../pages/[groupId]/contest/[id]/edit.vue | 7 + .../pages/[groupId]/contest/[id]/index.vue | 274 + src/admin/pages/[groupId]/contest/index.vue | 340 ++ src/admin/pages/[groupId]/home/index.vue | 7 + src/admin/pages/[groupId]/index.vue | 223 + src/admin/pages/[groupId]/member/index.vue | 207 + .../pages/[groupId]/notice/[id]/edit.vue | 7 + src/admin/pages/[groupId]/notice/create.vue | 7 + src/admin/pages/[groupId]/notice/index.vue | 148 + src/admin/pages/[groupId]/pool/[id]/edit.vue | 7 + src/admin/pages/[groupId]/pool/create.vue | 7 + src/admin/pages/[groupId]/pool/index.vue | 7 + .../pages/[groupId]/problem/[id]/edit.vue | 7 + src/admin/pages/[groupId]/problem/create.vue | 415 ++ src/admin/pages/[groupId]/problem/index.vue | 186 + .../submission/SubmissionDetailModal.vue | 114 + .../pages/[groupId]/submission/index.vue | 173 + .../pages/[groupId]/workbook/[id]/edit.vue | 7 + .../pages/[groupId]/workbook/[id]/index.vue | 158 + src/admin/pages/[groupId]/workbook/index.vue | 151 + src/admin/pages/contest.vue | 126 + src/admin/pages/index.vue | 258 + src/admin/pages/notice.vue | 117 + src/admin/pages/pool.vue | 164 + src/admin/pages/problem.vue | 143 + src/admin/pages/workbook.vue | 110 + src/common/assets/codedang.svg | 1 + src/common/assets/dummy.png | Bin 0 -> 97057 bytes src/common/assets/github.svg | 1 + src/common/assets/logo.png | Bin 0 -> 10933 bytes src/common/assets/skkudingLogo.png | Bin 0 -> 27397 bytes src/common/components/Atom/BoxTitle.story.vue | 27 + src/common/components/Atom/BoxTitle.vue | 12 + src/common/components/Atom/Button.story.vue | 42 + src/common/components/Atom/Button.vue | 75 + .../components/Atom/InputItem.story.vue | 63 + src/common/components/Atom/InputItem.vue | 46 + src/common/components/Atom/ListItem.story.vue | 22 + src/common/components/Atom/ListItem.vue | 19 + .../components/Atom/PageSubtitle.story.vue | 9 + src/common/components/Atom/PageSubtitle.vue | 9 + .../components/Atom/PageTitle.story.vue | 9 + src/common/components/Atom/PageTitle.vue | 9 + src/common/components/Atom/Spinner.story.vue | 18 + src/common/components/Atom/Spinner.vue | 51 + .../components/Atom/SymbolLogo.story.vue | 14 + src/common/components/Atom/SymbolLogo.vue | 19 + .../components/Atom/TextEditorButton.vue | 13 + src/common/components/Atom/Toast.story.vue | 55 + src/common/components/Atom/Toast.vue | 64 + .../components/Molecule/Badge.story.vue | 17 + src/common/components/Molecule/Badge.vue | 22 + src/common/components/Molecule/Card.story.vue | 73 + src/common/components/Molecule/Card.vue | 41 + .../components/Molecule/CardItem.story.vue | 27 + src/common/components/Molecule/CardItem.vue | 50 + .../components/Molecule/Dialog.story.vue | 50 + src/common/components/Molecule/Dialog.vue | 61 + .../components/Molecule/Dropdown.story.vue | 42 + src/common/components/Molecule/Dropdown.vue | 40 + .../components/Molecule/Modal.story.vue | 22 + src/common/components/Molecule/Modal.vue | 45 + src/common/components/Molecule/NewCard.vue | 16 + .../components/Molecule/Pagination.story.vue | 33 + src/common/components/Molecule/Pagination.vue | 100 + .../Molecule/ProgressCard.story.vue | 28 + .../components/Molecule/ProgressCard.vue | 43 + .../components/Molecule/RadioButton.story.vue | 15 + .../components/Molecule/RadioButton.vue | 27 + .../components/Molecule/SearchBar.story.vue | 9 + src/common/components/Molecule/SearchBar.vue | 34 + .../components/Molecule/Switch.story.vue | 19 + src/common/components/Molecule/Switch.vue | 37 + src/common/components/Molecule/Tab.story.vue | 26 + src/common/components/Molecule/Tab.vue | 43 + src/common/components/Organism/AuthModal.vue | 59 + .../components/Organism/CodeEditor.story.vue | 36 + src/common/components/Organism/CodeEditor.vue | 115 + .../components/Organism/Footer.story.vue | 11 + src/common/components/Organism/Footer.vue | 51 + .../components/Organism/Header.story.vue | 9 + src/common/components/Organism/Header.vue | 189 + src/common/components/Organism/Login.vue | 60 + .../Organism/PaginationTable.story.vue | 257 + .../components/Organism/PaginationTable.vue | 196 + .../components/Organism/PasswordReset.vue | 65 + .../components/Organism/Sidebar.story.vue | 14 + src/common/components/Organism/Sidebar.vue | 68 + src/common/components/Organism/Signup.vue | 239 + .../components/Organism/TextEditor.story.vue | 14 + src/common/components/Organism/TextEditor.vue | 117 + src/common/composables/api.ts | 105 + src/common/composables/dialog.ts | 37 + src/common/composables/graphql.ts | 112 + src/common/composables/toast.ts | 17 + src/common/layouts/admin.vue | 12 + src/common/layouts/default.vue | 35 + src/common/layouts/empty.vue | 1 + src/common/store/auth.ts | 53 + src/common/store/user.ts | 19 + src/common/styles/style.css | 32 + src/histoire.css | 6 + src/histoire.setup.ts | 5 + src/main.ts | 99 + src/user/contest/components/Notice.vue | 50 + src/user/contest/components/Problem.vue | 30 + src/user/contest/components/Ranking.vue | 83 + src/user/contest/components/Top.vue | 9 + src/user/contest/pages/[id].vue | 58 + src/user/contest/pages/index.vue | 125 + src/user/group/components/Contest.vue | 159 + .../group/components/GroupListSection.vue | 273 + src/user/group/components/Member.vue | 73 + src/user/group/components/NameList.vue | 25 + src/user/group/components/Notice.vue | 50 + src/user/group/components/Problem.vue | 52 + src/user/group/components/Profile.vue | 36 + src/user/group/components/Workbook.vue | 76 + src/user/group/pages/[id].vue | 71 + src/user/group/pages/index.vue | 74 + src/user/home/components/Carousel.story.vue | 41 + src/user/home/components/Carousel.vue | 110 + src/user/home/components/ContestItem.vue | 67 + src/user/home/pages/404.webp | Bin 0 -> 18624 bytes src/user/home/pages/[...all].vue | 14 + src/user/home/pages/index.vue | 130 + src/user/notice/composables/notice.ts | 92 + src/user/notice/pages/[id].vue | 88 + src/user/notice/pages/index.vue | 37 + .../components/Clarification.story.vue | 7 + src/user/problem/components/Clarification.vue | 131 + src/user/problem/components/Header.vue | 79 + src/user/problem/components/Navigator.vue | 223 + .../problem/components/SubmissionDetail.vue | 159 + .../problem/components/SubmissionList.vue | 159 + src/user/problem/pages/[id].vue | 19 + src/user/problem/pages/[id]/index.vue | 180 + src/user/problem/pages/[id]/standings.vue | 3 + src/user/problem/pages/[id]/submissions.vue | 27 + src/user/problem/pages/index.vue | 144 + src/user/problem/store/problem.ts | 54 + src/user/problem/types.ts | 2 + .../workbook/components/WorkbookTitle.vue | 37 + src/user/workbook/composables/workbook.ts | 53 + src/user/workbook/pages/[id].vue | 76 + tailwind.config.ts | 89 + tsconfig.json | 19 + tsconfig.node.json | 9 + vite.config.ts | 56 + 169 files changed, 16053 insertions(+) create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 env.d.ts create mode 100644 histoire.config.ts create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 public/android-chrome-192x192.png create mode 100644 public/android-chrome-512x512.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/favicon.ico create mode 100644 public/open-graph.png create mode 100644 public/site.webmanifest create mode 100644 src/App.vue create mode 100644 src/admin/components/CreateNoticeModal.vue create mode 100644 src/admin/components/ImportProblemModal.vue create mode 100644 src/admin/pages/[groupId]/contest/CreateContestModal.vue create mode 100644 src/admin/pages/[groupId]/contest/[id]/edit.vue create mode 100644 src/admin/pages/[groupId]/contest/[id]/index.vue create mode 100644 src/admin/pages/[groupId]/contest/index.vue create mode 100644 src/admin/pages/[groupId]/home/index.vue create mode 100644 src/admin/pages/[groupId]/index.vue create mode 100644 src/admin/pages/[groupId]/member/index.vue create mode 100644 src/admin/pages/[groupId]/notice/[id]/edit.vue create mode 100644 src/admin/pages/[groupId]/notice/create.vue create mode 100644 src/admin/pages/[groupId]/notice/index.vue create mode 100644 src/admin/pages/[groupId]/pool/[id]/edit.vue create mode 100644 src/admin/pages/[groupId]/pool/create.vue create mode 100644 src/admin/pages/[groupId]/pool/index.vue create mode 100644 src/admin/pages/[groupId]/problem/[id]/edit.vue create mode 100644 src/admin/pages/[groupId]/problem/create.vue create mode 100644 src/admin/pages/[groupId]/problem/index.vue create mode 100644 src/admin/pages/[groupId]/submission/SubmissionDetailModal.vue create mode 100644 src/admin/pages/[groupId]/submission/index.vue create mode 100644 src/admin/pages/[groupId]/workbook/[id]/edit.vue create mode 100644 src/admin/pages/[groupId]/workbook/[id]/index.vue create mode 100644 src/admin/pages/[groupId]/workbook/index.vue create mode 100644 src/admin/pages/contest.vue create mode 100644 src/admin/pages/index.vue create mode 100644 src/admin/pages/notice.vue create mode 100644 src/admin/pages/pool.vue create mode 100644 src/admin/pages/problem.vue create mode 100644 src/admin/pages/workbook.vue create mode 100644 src/common/assets/codedang.svg create mode 100644 src/common/assets/dummy.png create mode 100644 src/common/assets/github.svg create mode 100644 src/common/assets/logo.png create mode 100644 src/common/assets/skkudingLogo.png create mode 100644 src/common/components/Atom/BoxTitle.story.vue create mode 100644 src/common/components/Atom/BoxTitle.vue create mode 100644 src/common/components/Atom/Button.story.vue create mode 100644 src/common/components/Atom/Button.vue create mode 100644 src/common/components/Atom/InputItem.story.vue create mode 100644 src/common/components/Atom/InputItem.vue create mode 100644 src/common/components/Atom/ListItem.story.vue create mode 100644 src/common/components/Atom/ListItem.vue create mode 100644 src/common/components/Atom/PageSubtitle.story.vue create mode 100644 src/common/components/Atom/PageSubtitle.vue create mode 100644 src/common/components/Atom/PageTitle.story.vue create mode 100644 src/common/components/Atom/PageTitle.vue create mode 100644 src/common/components/Atom/Spinner.story.vue create mode 100644 src/common/components/Atom/Spinner.vue create mode 100644 src/common/components/Atom/SymbolLogo.story.vue create mode 100644 src/common/components/Atom/SymbolLogo.vue create mode 100644 src/common/components/Atom/TextEditorButton.vue create mode 100644 src/common/components/Atom/Toast.story.vue create mode 100644 src/common/components/Atom/Toast.vue create mode 100644 src/common/components/Molecule/Badge.story.vue create mode 100644 src/common/components/Molecule/Badge.vue create mode 100644 src/common/components/Molecule/Card.story.vue create mode 100644 src/common/components/Molecule/Card.vue create mode 100644 src/common/components/Molecule/CardItem.story.vue create mode 100644 src/common/components/Molecule/CardItem.vue create mode 100644 src/common/components/Molecule/Dialog.story.vue create mode 100644 src/common/components/Molecule/Dialog.vue create mode 100644 src/common/components/Molecule/Dropdown.story.vue create mode 100644 src/common/components/Molecule/Dropdown.vue create mode 100644 src/common/components/Molecule/Modal.story.vue create mode 100644 src/common/components/Molecule/Modal.vue create mode 100644 src/common/components/Molecule/NewCard.vue create mode 100644 src/common/components/Molecule/Pagination.story.vue create mode 100644 src/common/components/Molecule/Pagination.vue create mode 100644 src/common/components/Molecule/ProgressCard.story.vue create mode 100644 src/common/components/Molecule/ProgressCard.vue create mode 100644 src/common/components/Molecule/RadioButton.story.vue create mode 100644 src/common/components/Molecule/RadioButton.vue create mode 100644 src/common/components/Molecule/SearchBar.story.vue create mode 100644 src/common/components/Molecule/SearchBar.vue create mode 100644 src/common/components/Molecule/Switch.story.vue create mode 100644 src/common/components/Molecule/Switch.vue create mode 100644 src/common/components/Molecule/Tab.story.vue create mode 100644 src/common/components/Molecule/Tab.vue create mode 100644 src/common/components/Organism/AuthModal.vue create mode 100644 src/common/components/Organism/CodeEditor.story.vue create mode 100644 src/common/components/Organism/CodeEditor.vue create mode 100644 src/common/components/Organism/Footer.story.vue create mode 100644 src/common/components/Organism/Footer.vue create mode 100644 src/common/components/Organism/Header.story.vue create mode 100644 src/common/components/Organism/Header.vue create mode 100644 src/common/components/Organism/Login.vue create mode 100644 src/common/components/Organism/PaginationTable.story.vue create mode 100644 src/common/components/Organism/PaginationTable.vue create mode 100644 src/common/components/Organism/PasswordReset.vue create mode 100644 src/common/components/Organism/Sidebar.story.vue create mode 100644 src/common/components/Organism/Sidebar.vue create mode 100644 src/common/components/Organism/Signup.vue create mode 100644 src/common/components/Organism/TextEditor.story.vue create mode 100644 src/common/components/Organism/TextEditor.vue create mode 100644 src/common/composables/api.ts create mode 100644 src/common/composables/dialog.ts create mode 100644 src/common/composables/graphql.ts create mode 100644 src/common/composables/toast.ts create mode 100644 src/common/layouts/admin.vue create mode 100644 src/common/layouts/default.vue create mode 100644 src/common/layouts/empty.vue create mode 100644 src/common/store/auth.ts create mode 100644 src/common/store/user.ts create mode 100644 src/common/styles/style.css create mode 100644 src/histoire.css create mode 100644 src/histoire.setup.ts create mode 100644 src/main.ts create mode 100644 src/user/contest/components/Notice.vue create mode 100644 src/user/contest/components/Problem.vue create mode 100644 src/user/contest/components/Ranking.vue create mode 100644 src/user/contest/components/Top.vue create mode 100644 src/user/contest/pages/[id].vue create mode 100644 src/user/contest/pages/index.vue create mode 100644 src/user/group/components/Contest.vue create mode 100644 src/user/group/components/GroupListSection.vue create mode 100644 src/user/group/components/Member.vue create mode 100644 src/user/group/components/NameList.vue create mode 100644 src/user/group/components/Notice.vue create mode 100644 src/user/group/components/Problem.vue create mode 100644 src/user/group/components/Profile.vue create mode 100644 src/user/group/components/Workbook.vue create mode 100644 src/user/group/pages/[id].vue create mode 100644 src/user/group/pages/index.vue create mode 100644 src/user/home/components/Carousel.story.vue create mode 100644 src/user/home/components/Carousel.vue create mode 100644 src/user/home/components/ContestItem.vue create mode 100644 src/user/home/pages/404.webp create mode 100644 src/user/home/pages/[...all].vue create mode 100644 src/user/home/pages/index.vue create mode 100644 src/user/notice/composables/notice.ts create mode 100644 src/user/notice/pages/[id].vue create mode 100644 src/user/notice/pages/index.vue create mode 100644 src/user/problem/components/Clarification.story.vue create mode 100644 src/user/problem/components/Clarification.vue create mode 100644 src/user/problem/components/Header.vue create mode 100644 src/user/problem/components/Navigator.vue create mode 100644 src/user/problem/components/SubmissionDetail.vue create mode 100644 src/user/problem/components/SubmissionList.vue create mode 100644 src/user/problem/pages/[id].vue create mode 100644 src/user/problem/pages/[id]/index.vue create mode 100644 src/user/problem/pages/[id]/standings.vue create mode 100644 src/user/problem/pages/[id]/submissions.vue create mode 100644 src/user/problem/pages/index.vue create mode 100644 src/user/problem/store/problem.ts create mode 100644 src/user/problem/types.ts create mode 100644 src/user/workbook/components/WorkbookTitle.vue create mode 100644 src/user/workbook/composables/workbook.ts create mode 100644 src/user/workbook/pages/[id].vue create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..1f15032 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,46 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +module.exports = { + env: { + browser: true, + 'vue/setup-compiler-macros': true + }, + parser: 'vue-eslint-parser', + parserOptions: { + ecmaVersion: 'latest', + parser: '@typescript-eslint/parser', + sourceType: 'module' + }, + extends: ['plugin:vue/vue3-recommended', 'plugin:prettier/recommended'], + rules: { + 'vue/component-api-style': ['error', ['script-setup']], + 'vue/component-name-in-template-casing': [ + 'error', + 'PascalCase', + { ignores: ['/^n-/'] } + ], + 'vue/define-props-declaration': 'error', + 'vue/html-self-closing': ['error', { html: { void: 'always' } }], // compatibility with prettier + 'vue/no-empty-component-block': 'error', + 'vue/no-undef-components': [ + 'error', + { + ignorePatterns: [ + 'Transition', + 'TransitionGroup', + 'KeepAlive', + 'Teleport', + 'Suspense', + 'Story', + 'Variant', + 'RouterView', + 'RouterLink' + ] + } + ], + 'vue/padding-line-between-blocks': 'warn', + 'vue/prefer-true-attribute-shorthand': 'warn', + 'vue/require-emit-validator': 'error', + 'vue/multi-word-component-names': 'off', + 'vue/custom-event-name-casing': ['error', 'camelCase'] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f9e96a5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,155 @@ +# Created by https://www.toptal.com/developers/gitignore/api/node,vue +# Edit at https://www.toptal.com/developers/gitignore?templates=node,vue + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### Vue ### +# gitignore template for Vue.js projects +# +# Recommended template: Node.gitignore + +# TODO: where does this rule come from? +docs/_book + +# TODO: where does this rule come from? +test/ + +# End of https://www.toptal.com/developers/gitignore/api/node,vue diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..9a89c2f --- /dev/null +++ b/env.d.ts @@ -0,0 +1,5 @@ +/// +/// +/// +/// +/// diff --git a/histoire.config.ts b/histoire.config.ts new file mode 100644 index 0000000..9b9f922 --- /dev/null +++ b/histoire.config.ts @@ -0,0 +1,11 @@ +import { HstVue } from '@histoire/plugin-vue' +import { defineConfig } from 'histoire' + +export default defineConfig({ + plugins: [HstVue()], + setupFile: '/src/histoire.setup.ts', + theme: { + title: 'SKKUding Histoire' + }, + viteIgnorePlugins: ['vite-plugin-checker'] +}) diff --git a/index.html b/index.html new file mode 100644 index 0000000..42a88d0 --- /dev/null +++ b/index.html @@ -0,0 +1,35 @@ + + + + + + Codedang 코드당 + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c44d09a --- /dev/null +++ b/package.json @@ -0,0 +1,79 @@ +{ + "name": "frontend", + "private": true, + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview --port 5050", + "typecheck": "vue-tsc --noEmit", + "story": "histoire dev --port 3030", + "story:build": "histoire build" + }, + "dependencies": { + "@apollo/client": "^3.9.5", + "@codemirror/autocomplete": "^6.13.0", + "@codemirror/commands": "^6.3.3", + "@codemirror/lang-cpp": "^6.0.2", + "@codemirror/lang-java": "^6.0.1", + "@codemirror/lang-python": "^6.1.4", + "@codemirror/language": "^6.10.1", + "@codemirror/state": "^6.4.1", + "@codemirror/theme-one-dark": "^6.1.2", + "@codemirror/view": "^6.25.0", + "@tiptap/pm": "^2.2.4", + "@tiptap/starter-kit": "^2.2.4", + "@tiptap/vue-3": "^2.2.4", + "@vee-validate/zod": "^4.12.5", + "@vue/apollo-composable": "4.0.1", + "@vueuse/components": "^10.8.0", + "@vueuse/core": "^10.8.0", + "@vueuse/integrations": "^10.8.0", + "@vueuse/math": "^10.8.0", + "@vueuse/router": "^10.8.0", + "axios": "^1.6.7", + "axios-retry": "^4.0.0", + "graphql": "^16.8.1", + "graphql-tag": "^2.12.6", + "naive-ui": "^2.38.1", + "nprogress": "0.2.0", + "pinia": "^2.1.7", + "sortablejs": "^1.15.2", + "vee-validate": "^4.12.5", + "vue": "^3.4.20", + "vue-dompurify-html": "^5.0.1", + "vue-query": "^1.26.0", + "vue-router": "^4.3.0", + "zod": "^3.22.4" + }, + "devDependencies": { + "@histoire/plugin-vue": "^0.17.12", + "@iconify-json/ant-design": "^1.1.15", + "@iconify-json/bi": "^1.1.23", + "@iconify-json/fa": "^1.1.8", + "@iconify-json/fa6-brands": "^1.1.18", + "@iconify-json/fa6-regular": "^1.1.18", + "@iconify-json/fa6-solid": "^1.1.20", + "@iconify-json/fluent": "^1.1.49", + "@iconify-json/iconoir": "^1.1.41", + "@iconify-json/material-symbols": "^1.1.73", + "@iconify-json/ri": "^1.1.20", + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.10", + "@types/node": "^20.11.20", + "@types/nprogress": "^0.2.3", + "@vitejs/plugin-vue": "^5.0.4", + "@vue/tsconfig": "^0.5.1", + "autoprefixer": "^10.4.17", + "histoire": "^0.17.9", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "typescript": "^5.3.3", + "unplugin-icons": "^0.18.5", + "vite": "^5.1.4", + "vite-plugin-checker": "^0.6.4", + "vite-plugin-pages": "^0.32.0", + "vite-plugin-vue-layouts": "^0.11.0", + "vue-tsc": "^1.8.27" + }, + "type": "module" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..77176b9 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5040 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@apollo/client': + specifier: ^3.9.5 + version: 3.9.5(graphql@16.8.1)(react@18.2.0) + '@codemirror/autocomplete': + specifier: ^6.13.0 + version: 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.0)(@lezer/common@1.2.1) + '@codemirror/commands': + specifier: ^6.3.3 + version: 6.3.3 + '@codemirror/lang-cpp': + specifier: ^6.0.2 + version: 6.0.2 + '@codemirror/lang-java': + specifier: ^6.0.1 + version: 6.0.1 + '@codemirror/lang-python': + specifier: ^6.1.4 + version: 6.1.4(@codemirror/view@6.25.0) + '@codemirror/language': + specifier: ^6.10.1 + version: 6.10.1 + '@codemirror/state': + specifier: ^6.4.1 + version: 6.4.1 + '@codemirror/theme-one-dark': + specifier: ^6.1.2 + version: 6.1.2 + '@codemirror/view': + specifier: ^6.25.0 + version: 6.25.0 + '@tiptap/pm': + specifier: ^2.2.4 + version: 2.2.4 + '@tiptap/starter-kit': + specifier: ^2.2.4 + version: 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/vue-3': + specifier: ^2.2.4 + version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(vue@3.4.21) + '@vee-validate/zod': + specifier: ^4.12.5 + version: 4.12.5(vue@3.4.21) + '@vue/apollo-composable': + specifier: 4.0.1 + version: 4.0.1(@apollo/client@3.9.5)(graphql@16.8.1)(typescript@5.3.3)(vue@3.4.21) + '@vueuse/components': + specifier: ^10.8.0 + version: 10.9.0(vue@3.4.21) + '@vueuse/core': + specifier: ^10.8.0 + version: 10.9.0(vue@3.4.21) + '@vueuse/integrations': + specifier: ^10.8.0 + version: 10.9.0(axios@1.6.7)(nprogress@0.2.0)(sortablejs@1.15.2)(vue@3.4.21) + '@vueuse/math': + specifier: ^10.8.0 + version: 10.9.0(vue@3.4.21) + '@vueuse/router': + specifier: ^10.8.0 + version: 10.9.0(vue-router@4.3.0)(vue@3.4.21) + axios: + specifier: ^1.6.7 + version: 1.6.7 + axios-retry: + specifier: ^4.0.0 + version: 4.0.0(axios@1.6.7) + graphql: + specifier: ^16.8.1 + version: 16.8.1 + graphql-tag: + specifier: ^2.12.6 + version: 2.12.6(graphql@16.8.1) + naive-ui: + specifier: ^2.38.1 + version: 2.38.1(vue@3.4.21) + nprogress: + specifier: 0.2.0 + version: 0.2.0 + pinia: + specifier: ^2.1.7 + version: 2.1.7(typescript@5.3.3)(vue@3.4.21) + sortablejs: + specifier: ^1.15.2 + version: 1.15.2 + vee-validate: + specifier: ^4.12.5 + version: 4.12.5(vue@3.4.21) + vue: + specifier: ^3.4.20 + version: 3.4.21(typescript@5.3.3) + vue-dompurify-html: + specifier: ^5.0.1 + version: 5.0.1(vue@3.4.21) + vue-query: + specifier: ^1.26.0 + version: 1.26.0(react@18.2.0)(vue@3.4.21) + vue-router: + specifier: ^4.3.0 + version: 4.3.0(vue@3.4.21) + zod: + specifier: ^3.22.4 + version: 3.22.4 + +devDependencies: + '@histoire/plugin-vue': + specifier: ^0.17.12 + version: 0.17.12(histoire@0.17.9)(vite@5.1.5)(vue@3.4.21) + '@iconify-json/ant-design': + specifier: ^1.1.15 + version: 1.1.15 + '@iconify-json/bi': + specifier: ^1.1.23 + version: 1.1.23 + '@iconify-json/fa': + specifier: ^1.1.8 + version: 1.1.8 + '@iconify-json/fa6-brands': + specifier: ^1.1.18 + version: 1.1.18 + '@iconify-json/fa6-regular': + specifier: ^1.1.18 + version: 1.1.18 + '@iconify-json/fa6-solid': + specifier: ^1.1.20 + version: 1.1.20 + '@iconify-json/fluent': + specifier: ^1.1.49 + version: 1.1.49 + '@iconify-json/iconoir': + specifier: ^1.1.41 + version: 1.1.42 + '@iconify-json/material-symbols': + specifier: ^1.1.73 + version: 1.1.74 + '@iconify-json/ri': + specifier: ^1.1.20 + version: 1.1.20 + '@tailwindcss/forms': + specifier: ^0.5.7 + version: 0.5.7(tailwindcss@3.4.1) + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.4.1) + '@types/node': + specifier: ^20.11.20 + version: 20.11.24 + '@types/nprogress': + specifier: ^0.2.3 + version: 0.2.3 + '@vitejs/plugin-vue': + specifier: ^5.0.4 + version: 5.0.4(vite@5.1.5)(vue@3.4.21) + '@vue/tsconfig': + specifier: ^0.5.1 + version: 0.5.1 + autoprefixer: + specifier: ^10.4.17 + version: 10.4.18(postcss@8.4.35) + histoire: + specifier: ^0.17.9 + version: 0.17.9(@types/node@20.11.24)(vite@5.1.5) + postcss: + specifier: ^8.4.35 + version: 8.4.35 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1 + typescript: + specifier: ^5.3.3 + version: 5.3.3 + unplugin-icons: + specifier: ^0.18.5 + version: 0.18.5 + vite: + specifier: ^5.1.4 + version: 5.1.5(@types/node@20.11.24) + vite-plugin-checker: + specifier: ^0.6.4 + version: 0.6.4(typescript@5.3.3)(vite@5.1.5)(vue-tsc@1.8.27) + vite-plugin-pages: + specifier: ^0.32.0 + version: 0.32.0(vite@5.1.5) + vite-plugin-vue-layouts: + specifier: ^0.11.0 + version: 0.11.0(vite@5.1.5)(vue-router@4.3.0)(vue@3.4.21) + vue-tsc: + specifier: ^1.8.27 + version: 1.8.27(typescript@5.3.3) + +packages: + + /@akryum/tinypool@0.3.1: + resolution: {integrity: sha512-nznEC1ZA/m3hQDEnrGQ4c5gkaa9pcaVnw4LFJyzBAaR7E3nfiAPEHS3otnSafpZouVnoKeITl5D+2LsnwlnK8g==} + engines: {node: '>=14.0.0'} + dev: true + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + + /@antfu/install-pkg@0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/install-pkg@0.3.1: + resolution: {integrity: sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==} + dependencies: + execa: 8.0.1 + dev: true + + /@antfu/utils@0.7.7: + resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + dev: true + + /@apollo/client@3.9.5(graphql@16.8.1)(react@18.2.0): + resolution: {integrity: sha512-7y+c8MTPU+hhTwvcGVtMMGIgWduzrvG1mz5yJMRyqYbheBkkky3Lki6ADWVSBXG1lZoOtPYvB2zDgVfKb2HSsw==} + peerDependencies: + graphql: ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@wry/caches': 1.0.1 + '@wry/equality': 0.5.7 + '@wry/trie': 0.5.0 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + hoist-non-react-statics: 3.3.2 + optimism: 0.18.0 + prop-types: 15.8.1 + react: 18.2.0 + rehackt: 0.0.5(react@18.2.0) + response-iterator: 0.2.6 + symbol-observable: 4.0.0 + ts-invariant: 0.10.3 + tslib: 2.6.2 + zen-observable-ts: 1.2.5 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + + /@babel/runtime@7.24.0: + resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@codemirror/autocomplete@6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.0)(@lezer/common@1.2.1): + resolution: {integrity: sha512-SuDrho1klTINfbcMPnyro1ZxU9xJtwDMtb62R8TjL/tOl71IoOsvBo1a9x+hDvHhIzkTcJHy2VC+rmpGgYkRSw==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.0 + '@lezer/common': 1.2.1 + dev: false + + /@codemirror/commands@6.3.3: + resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==} + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.0 + '@lezer/common': 1.2.1 + + /@codemirror/lang-cpp@6.0.2: + resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==} + dependencies: + '@codemirror/language': 6.10.1 + '@lezer/cpp': 1.1.2 + dev: false + + /@codemirror/lang-java@6.0.1: + resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==} + dependencies: + '@codemirror/language': 6.10.1 + '@lezer/java': 1.1.1 + dev: false + + /@codemirror/lang-json@6.0.1: + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + dependencies: + '@codemirror/language': 6.10.1 + '@lezer/json': 1.0.2 + dev: true + + /@codemirror/lang-python@6.1.4(@codemirror/view@6.25.0): + resolution: {integrity: sha512-b6d1TDqrkCjFNvMO01SWldFiDoZ39yl3tDMC1Y5f8glA2eZpynPxJhwYVTlGFr0stizcJgrp6ojLEGH2myoZAw==} + dependencies: + '@codemirror/autocomplete': 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.0)(@lezer/common@1.2.1) + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@lezer/common': 1.2.1 + '@lezer/python': 1.1.11 + transitivePeerDependencies: + - '@codemirror/view' + dev: false + + /@codemirror/language@6.10.1: + resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.0 + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + style-mod: 4.1.2 + + /@codemirror/lint@6.5.0: + resolution: {integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.0 + crelt: 1.0.6 + dev: true + + /@codemirror/state@6.4.1: + resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + + /@codemirror/theme-one-dark@6.1.2: + resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.0 + '@lezer/highlight': 1.2.0 + + /@codemirror/view@6.25.0: + resolution: {integrity: sha512-XnMGOm6qXB8znzCko0N7k97qZayVdvqpA0JebxA5fHtgBjC/XlCPhH9TK92TahsoCKMPQlaTCUep06Dwj/+GXQ==} + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + /@css-render/plugin-bem@0.15.12(css-render@0.15.12): + resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==} + peerDependencies: + css-render: ~0.15.12 + dependencies: + css-render: 0.15.12 + dev: false + + /@css-render/vue3-ssr@0.15.12(vue@3.4.21): + resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==} + peerDependencies: + vue: ^3.0.11 + dependencies: + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.8.1 + dev: false + + /@histoire/app@0.17.10(vite@5.1.5): + resolution: {integrity: sha512-WN28m1N8x3WkVzzePYekrwgUQNixyUrLdyITpLk3/scFqsDSByG0nsHKi1MAMMHaVxyC9dcdQF4j50QdVWCZgQ==} + dependencies: + '@histoire/controls': 0.17.9(vite@5.1.5) + '@histoire/shared': 0.17.10(vite@5.1.5) + '@histoire/vendors': 0.17.8 + '@types/flexsearch': 0.7.6 + flexsearch: 0.7.21 + shiki-es: 0.2.0 + transitivePeerDependencies: + - vite + dev: true + + /@histoire/controls@0.17.9(vite@5.1.5): + resolution: {integrity: sha512-1f1cE1NZ2emzGMRnGfAb/gCKDtBT3bUZzj3aAcDmhm3MA2Vy5tGYSb9j+KuTTj7+exhOrKefmedr9a0q1/5g2w==} + dependencies: + '@codemirror/commands': 6.3.3 + '@codemirror/lang-json': 6.0.1 + '@codemirror/language': 6.10.1 + '@codemirror/lint': 6.5.0 + '@codemirror/state': 6.4.1 + '@codemirror/theme-one-dark': 6.1.2 + '@codemirror/view': 6.25.0 + '@histoire/shared': 0.17.10(vite@5.1.5) + '@histoire/vendors': 0.17.8 + transitivePeerDependencies: + - vite + dev: true + + /@histoire/plugin-vue@0.17.12(histoire@0.17.9)(vite@5.1.5)(vue@3.4.21): + resolution: {integrity: sha512-mpx2uwHq/qemnX+ARQtDR3M9kIt1y4kBCmzBkOquhJTp61mtHMu4hZKSzzQpQWA2QxEyuuwpaNiU7Mlms13EaQ==} + peerDependencies: + histoire: ^0.17.9 + vue: ^3.2.47 + dependencies: + '@histoire/controls': 0.17.9(vite@5.1.5) + '@histoire/shared': 0.17.10(vite@5.1.5) + '@histoire/vendors': 0.17.8 + change-case: 4.1.2 + globby: 13.2.2 + histoire: 0.17.9(@types/node@20.11.24)(vite@5.1.5) + launch-editor: 2.6.1 + pathe: 1.1.2 + vue: 3.4.21(typescript@5.3.3) + transitivePeerDependencies: + - vite + dev: true + + /@histoire/shared@0.17.10(vite@5.1.5): + resolution: {integrity: sha512-8hzk/WKASrYfaJ+UtR6Mv7aZlP8IZvQ5POoHAi+JvHMJTtzCXZeuL0qdQAXg0zdk3vWIH20oSl6N8hZE1AP7yA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@histoire/vendors': 0.17.8 + '@types/fs-extra': 9.0.13 + '@types/markdown-it': 12.2.3 + chokidar: 3.6.0 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.5(@types/node@20.11.24) + dev: true + + /@histoire/vendors@0.17.8: + resolution: {integrity: sha512-kyNy1yvA8tuEXVuUUdO5k8yQgp1XkcktcLAM4XB3B0mk9qUge7n85bUfGJYPk3ovLeX4RBJHsxh4RzzQ4LBCvg==} + dev: true + + /@iconify-json/ant-design@1.1.15: + resolution: {integrity: sha512-E8XLyDo2HWVeVT8ViNTxF2+0Vgcox8FC73G4v64AM+lvlWpERcY90g7jXoBOeykl1pQCf1awkQUwjkynZ8Xb7A==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/bi@1.1.23: + resolution: {integrity: sha512-1te+g9ZzI+PU1Lv6Xerd3XPXf4DE6g3TvDL2buIopTAfrauPHyXCHPFQMrzoQVNrVPCpN3rv3vBtJMPyBwJ9IA==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/fa6-brands@1.1.18: + resolution: {integrity: sha512-vmeJP06Xbj0XbVGiBHg0q8H3M894d4bGXKCmiHt6JqUdpiGcIV7r96N+BOU4ZS1+hvpV57fTfXlFPiUfxAIfkg==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/fa6-regular@1.1.18: + resolution: {integrity: sha512-+lLtiTHf02rxeC/9R6vzJi9eGcuubzeHfTt/HWvDnovz2Kt5NEntW8foUSLeLo7kPU7RNvea68lt7QM9HYFloQ==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/fa6-solid@1.1.20: + resolution: {integrity: sha512-99P9zOacNS56MNNT7Mzih2Loe3jzwNFKFBOiVh+kF+4D+AHW5zyksyvMizIgGu2cizFz6npaATlCtl3E5Zfjbw==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/fa@1.1.8: + resolution: {integrity: sha512-he23ZsuDxA6Hx7rnrEpSJnmu7t7RtG/SbrENZhMSPiZ4bNRGHjyPZimtOy10k2/nfwNsW57ECDsO5eK0BkcoMg==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/fluent@1.1.49: + resolution: {integrity: sha512-BDgdWb8WjWzvfyv1s8JjYViRN/qPDG1cS56tjKt6p0InZq/+PAQFeFBhirTSKtqa8fGzUJpR4dCEBcZDXEb4EA==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/iconoir@1.1.42: + resolution: {integrity: sha512-5FQfS+dSAvHWCBtsp/E+4AKK6jYVCxw98R4LLsY5s8mSUm9BFstjCA5bmTcIl+iYDgc+vUmtW26jYmBEf4gLIA==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/material-symbols@1.1.74: + resolution: {integrity: sha512-cuQKvpGWrMNJq0i3ynO+V6yus0Smiupw92GW8Gq/4MHfYfbl1MrbVmafKQAd8RJVqiEXq4/F084OEcigf77UqQ==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify-json/ri@1.1.20: + resolution: {integrity: sha512-yScIGjLFBCJKWKskQTWRjNI2Awoq+VRDkRxEsCQvSfdz41n+xkRtFG2K6J1OVI90ClRHfjFC8VJ2+WzxxyFjTQ==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: true + + /@iconify/utils@2.1.22: + resolution: {integrity: sha512-6UHVzTVXmvO8uS6xFF+L/QTSpTzA/JZxtgU+KYGFyDYMEObZ1bu/b5l+zNJjHy+0leWjHI+C0pXlzGvv3oXZMA==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.7 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: false + + /@lezer/common@1.2.1: + resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} + + /@lezer/cpp@1.1.2: + resolution: {integrity: sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==} + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + dev: false + + /@lezer/highlight@1.2.0: + resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} + dependencies: + '@lezer/common': 1.2.1 + + /@lezer/java@1.1.1: + resolution: {integrity: sha512-mt3dX13fRlpY7RlWELYRakanXgmwXsLRCrhstrn+c1sZd7jR2xle46/3heoxGd+oHxnuTnpoyXTyxcLJQs9+mQ==} + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + dev: false + + /@lezer/json@1.0.2: + resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + dev: true + + /@lezer/lr@1.4.0: + resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==} + dependencies: + '@lezer/common': 1.2.1 + + /@lezer/python@1.1.11: + resolution: {integrity: sha512-C3QeLCcdAKJDUOsYjfFP6a1wdn8jhUNX200bgFm8TpKH1eM2PlgYQS5ugw6E38qGeEx7CP21I1Q52SoybXt0OQ==} + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: true + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@remirror/core-constants@2.0.2: + resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==} + dev: false + + /@rollup/rollup-android-arm-eabi@4.12.0: + resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.12.0: + resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.12.0: + resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.12.0: + resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.12.0: + resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.12.0: + resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.12.0: + resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.12.0: + resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.12.0: + resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.12.0: + resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.12.0: + resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.12.0: + resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.12.0: + resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@tailwindcss/forms@0.5.7(tailwindcss@3.4.1): + resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.4.1 + dev: true + + /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1): + resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.1 + dev: true + + /@tiptap/core@2.2.4(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==} + peerDependencies: + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/pm': 2.2.4 + dev: false + + /@tiptap/extension-blockquote@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-bold@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-bubble-menu@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + tippy.js: 6.3.7 + dev: false + + /@tiptap/extension-bullet-list@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-code-block@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + dev: false + + /@tiptap/extension-code@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-document@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-dropcursor@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + dev: false + + /@tiptap/extension-floating-menu@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + tippy.js: 6.3.7 + dev: false + + /@tiptap/extension-gapcursor@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + dev: false + + /@tiptap/extension-hard-break@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-heading@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-history@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + dev: false + + /@tiptap/extension-horizontal-rule@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + dev: false + + /@tiptap/extension-italic@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-list-item@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-ordered-list@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-paragraph@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-strike@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/extension-text@2.2.4(@tiptap/core@2.2.4): + resolution: {integrity: sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==} + peerDependencies: + '@tiptap/core': ^2.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + dev: false + + /@tiptap/pm@2.2.4: + resolution: {integrity: sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==} + dependencies: + prosemirror-changeset: 2.2.1 + prosemirror-collab: 1.3.1 + prosemirror-commands: 1.5.2 + prosemirror-dropcursor: 1.8.1 + prosemirror-gapcursor: 1.3.2 + prosemirror-history: 1.3.2 + prosemirror-inputrules: 1.4.0 + prosemirror-keymap: 1.2.2 + prosemirror-markdown: 1.12.0 + prosemirror-menu: 1.2.4 + prosemirror-model: 1.19.4 + prosemirror-schema-basic: 1.2.2 + prosemirror-schema-list: 1.3.0 + prosemirror-state: 1.4.3 + prosemirror-tables: 1.3.7 + prosemirror-trailing-node: 2.0.8(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.33.1) + prosemirror-transform: 1.8.0 + prosemirror-view: 1.33.1 + dev: false + + /@tiptap/starter-kit@2.2.4(@tiptap/pm@2.2.4): + resolution: {integrity: sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==} + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/extension-blockquote': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-bold': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-bullet-list': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-code': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-code-block': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/extension-document': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-dropcursor': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/extension-gapcursor': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/extension-hard-break': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-heading': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-history': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/extension-horizontal-rule': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/extension-italic': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-list-item': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-ordered-list': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-paragraph': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-strike': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-text': 2.2.4(@tiptap/core@2.2.4) + transitivePeerDependencies: + - '@tiptap/pm' + dev: false + + /@tiptap/vue-3@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(vue@3.4.21): + resolution: {integrity: sha512-6Rue56OUmDl/OT07QcLsH1UvYGUmV8OFSDCrLrUyku/2lAYHwHz6+KhAB5paZt70nEGIw03G1KCT074negj6NQ==} + peerDependencies: + '@tiptap/core': ^2.0.0 + '@tiptap/pm': ^2.0.0 + vue: ^3.0.0 + dependencies: + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/extension-bubble-menu': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/extension-floating-menu': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/pm': 2.2.4 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/flexsearch@0.7.6: + resolution: {integrity: sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA==} + dev: true + + /@types/fs-extra@9.0.13: + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + dependencies: + '@types/node': 20.11.24 + dev: true + + /@types/katex@0.16.7: + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + dev: false + + /@types/linkify-it@3.0.5: + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + dev: true + + /@types/lodash-es@4.17.12: + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + dependencies: + '@types/lodash': 4.14.202 + dev: false + + /@types/lodash@4.14.202: + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + dev: false + + /@types/markdown-it@12.2.3: + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 + dev: true + + /@types/mdurl@1.0.5: + resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + dev: true + + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: true + + /@types/node@20.11.24: + resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/nprogress@0.2.3: + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + dev: true + + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + dev: false + + /@vee-validate/zod@4.12.5(vue@3.4.21): + resolution: {integrity: sha512-hUjvXaa4HHvlZeosucViIDOUikQmyKaXXuL6P8LR1ETOUrBV6ntTsafJGvRYtwhXosoLYuolUD6Km737okK4Gg==} + dependencies: + type-fest: 4.11.1 + vee-validate: 4.12.5(vue@3.4.21) + zod: 3.22.4 + transitivePeerDependencies: + - vue + dev: false + + /@vitejs/plugin-vue@5.0.4(vite@5.1.5)(vue@3.4.21): + resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 5.1.5(@types/node@20.11.24) + vue: 3.4.21(typescript@5.3.3) + dev: true + + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + dependencies: + '@volar/source-map': 1.11.1 + dev: true + + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + dev: true + + /@vue/apollo-composable@4.0.1(@apollo/client@3.9.5)(graphql@16.8.1)(typescript@5.3.3)(vue@3.4.21): + resolution: {integrity: sha512-mUiC2ucO4CeRhedC5wcEzzoweuDLB/rgKPAcZEtDYBpErRTeK3CQ1ffygp1E9GbibuTfKms11k5P/DgDYdzhZA==} + peerDependencies: + '@apollo/client': ^3.4.13 + '@vue/composition-api': ^1.0.0 + graphql: '>=15' + vue: ^2.6.0 || ^3.1.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + '@apollo/client': 3.9.5(graphql@16.8.1)(react@18.2.0) + graphql: 16.8.1 + throttle-debounce: 5.0.0 + ts-essentials: 9.4.1(typescript@5.3.3) + vue: 3.4.21(typescript@5.3.3) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - typescript + dev: false + + /@vue/compiler-core@3.4.21: + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + dependencies: + '@babel/parser': 7.24.0 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + /@vue/compiler-dom@3.4.21: + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + /@vue/compiler-sfc@3.4.21: + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + dependencies: + '@babel/parser': 7.24.0 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.8 + postcss: 8.4.35 + source-map-js: 1.0.2 + + /@vue/compiler-ssr@3.4.21: + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + /@vue/devtools-api@6.6.1: + resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + + /@vue/language-core@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 5.3.3 + vue-template-compiler: 2.7.16 + dev: true + + /@vue/reactivity@3.4.21: + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + dependencies: + '@vue/shared': 3.4.21 + + /@vue/runtime-core@3.4.21: + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + + /@vue/runtime-dom@3.4.21: + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.1.3 + + /@vue/server-renderer@3.4.21(vue@3.4.21): + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@5.3.3) + + /@vue/shared@3.4.21: + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + /@vue/tsconfig@0.5.1: + resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} + dev: true + + /@vueuse/components@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==} + dependencies: + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/core@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/integrations@10.9.0(axios@1.6.7)(nprogress@0.2.0)(sortablejs@1.15.2)(vue@3.4.21): + resolution: {integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/shared': 10.9.0(vue@3.4.21) + axios: 1.6.7 + nprogress: 0.2.0 + sortablejs: 1.15.2 + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/math@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-qb60AzFKzg8Gw85c4YiheEMC2AMkk+eO/nB9MmuQFU/HAHvfVckesiPlwaQqUlZQ4MJt0z8qP18/H7ozpj0sKQ==} + dependencies: + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata@10.9.0: + resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + dev: false + + /@vueuse/router@10.9.0(vue-router@4.3.0)(vue@3.4.21): + resolution: {integrity: sha512-MOmrCMQlRuPS4PExE1hy8T0XbZUXaNbEuh7CAG5mC8kdvdgANQMkdvJ7vIEOP27n5mXK/4YjvXJOZSsur4E0QQ==} + peerDependencies: + vue-router: '>=4.0.0-rc.1' + dependencies: + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + vue-router: 4.3.0(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/shared@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + dependencies: + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@wry/caches@1.0.1: + resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/context@0.7.4: + resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/equality@0.5.7: + resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/trie@0.4.3: + resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/trie@0.5.0: + resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true + + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /autoprefixer@10.4.18(postcss@8.4.35): + resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001594 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axios-retry@4.0.0(axios@1.6.7): + resolution: {integrity: sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA==} + peerDependencies: + axios: 0.x || 1.x + dependencies: + axios: 1.6.7 + is-retry-allowed: 2.2.0 + dev: false + + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /birpc@0.1.1: + resolution: {integrity: sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /broadcast-channel@3.7.0: + resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} + dependencies: + '@babel/runtime': 7.24.0 + detect-node: 2.1.0 + js-sha3: 0.8.0 + microseconds: 0.2.0 + nano-time: 1.0.0 + oblivious-set: 1.0.0 + rimraf: 3.0.2 + unload: 2.2.0 + dev: false + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001594 + electron-to-chromium: 1.4.692 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + 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 + dev: true + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + dev: true + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /caniuse-lite@1.0.30001594: + resolution: {integrity: sha512-VblSX6nYqyJVs8DKFMldE2IVCJjZ225LW00ydtUWwh5hk9IfkTOffO6r8gJNsH0qqqeAF8KrbMYA2VEwTlGW5g==} + dev: true + + /capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case: 2.0.2 + dev: true + + /crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-render@0.15.12: + resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==} + dependencies: + '@emotion/hash': 0.8.0 + csstype: 3.0.11 + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype@3.0.11: + resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /date-fns-tz@2.0.0(date-fns@2.30.0): + resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==} + peerDependencies: + date-fns: '>=2.0.0' + dependencies: + date-fns: 2.30.0 + dev: false + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.24.0 + dev: false + + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.14 + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /diacritics@1.3.0: + resolution: {integrity: sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==} + dev: true + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /dompurify@3.0.9: + resolution: {integrity: sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ==} + dev: false + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.692: + resolution: {integrity: sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /entities@2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /esprima-extract-comments@1.1.0: + resolution: {integrity: sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw==} + engines: {node: '>=4'} + dependencies: + esprima: 4.0.1 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /evtd@0.2.4: + resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extract-comments@1.1.0: + resolution: {integrity: sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==} + engines: {node: '>=6'} + dependencies: + esprima-extract-comments: 1.1.0 + parse-code-context: 1.0.0 + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flexsearch@0.7.21: + resolution: {integrity: sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==} + dev: true + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.1 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphql-tag@2.12.6(graphql@16.8.1): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.8.1 + tslib: 2.6.2 + dev: false + + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: false + + /gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + dependencies: + capital-case: 1.0.4 + tslib: 2.6.2 + dev: true + + /highlight.js@11.9.0: + resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} + engines: {node: '>=12.0.0'} + dev: false + + /histoire@0.17.9(@types/node@20.11.24)(vite@5.1.5): + resolution: {integrity: sha512-z5Jb9QwbOw0TKvpkU0v7+CxJG6hIljIKMhWXzOfteteRZGDFElpTEwbr5/8EdPI6VTdF/k76fqZ07nmS9YdUvA==} + hasBin: true + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@akryum/tinypool': 0.3.1 + '@histoire/app': 0.17.10(vite@5.1.5) + '@histoire/controls': 0.17.9(vite@5.1.5) + '@histoire/shared': 0.17.10(vite@5.1.5) + '@histoire/vendors': 0.17.8 + '@types/flexsearch': 0.7.6 + '@types/markdown-it': 12.2.3 + birpc: 0.1.1 + change-case: 4.1.2 + chokidar: 3.6.0 + connect: 3.7.0 + defu: 6.1.4 + diacritics: 1.3.0 + flexsearch: 0.7.21 + fs-extra: 10.1.0 + globby: 13.2.2 + gray-matter: 4.0.3 + jiti: 1.21.0 + jsdom: 20.0.3 + markdown-it: 12.3.2 + markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) + markdown-it-attrs: 4.1.6(markdown-it@12.3.2) + markdown-it-emoji: 2.0.2 + micromatch: 4.0.5 + mrmime: 1.0.1 + pathe: 1.1.2 + picocolors: 1.0.0 + sade: 1.8.1 + shiki-es: 0.2.0 + sirv: 2.0.4 + vite: 5.1.5(@types/node@20.11.24) + vite-node: 0.34.7(@types/node@20.11.24) + transitivePeerDependencies: + - '@types/node' + - bufferutil + - canvas + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - utf-8-validate + dev: true + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.1 + side-channel: 1.0.6 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.1 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + dev: false + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.11.3 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.16.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /linkify-it@3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + dependencies: + uc.micro: 1.0.6 + dev: true + + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + dependencies: + uc.micro: 2.1.0 + dev: false + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + dev: true + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): + resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} + peerDependencies: + '@types/markdown-it': '*' + markdown-it: '*' + dependencies: + '@types/markdown-it': 12.2.3 + markdown-it: 12.3.2 + dev: true + + /markdown-it-attrs@4.1.6(markdown-it@12.3.2): + resolution: {integrity: sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==} + engines: {node: '>=6'} + peerDependencies: + markdown-it: '>= 9.0.0' + dependencies: + markdown-it: 12.3.2 + dev: true + + /markdown-it-emoji@2.0.2: + resolution: {integrity: sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==} + dev: true + + /markdown-it@12.3.2: + resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: true + + /markdown-it@14.0.0: + resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + dev: false + + /match-sorter@6.3.4: + resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} + dependencies: + '@babel/runtime': 7.24.0 + remove-accents: 0.5.0 + dev: false + + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /microseconds@0.2.0: + resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.4.0 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /naive-ui@2.38.1(vue@3.4.21): + resolution: {integrity: sha512-AnU1FQ7K/CbhguAX++V4kCFjk7h7RvWt4nvZPRjORMpq+fUIlzD+EcQ5Cv1VqDloNF8+eMv4Akc2Ogacc9S+5A==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@css-render/plugin-bem': 0.15.12(css-render@0.15.12) + '@css-render/vue3-ssr': 0.15.12(vue@3.4.21) + '@types/katex': 0.16.7 + '@types/lodash': 4.14.202 + '@types/lodash-es': 4.17.12 + async-validator: 4.2.5 + css-render: 0.15.12 + csstype: 3.1.3 + date-fns: 2.30.0 + date-fns-tz: 2.0.0(date-fns@2.30.0) + evtd: 0.2.4 + highlight.js: 11.9.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + seemly: 0.3.8 + treemate: 0.3.11 + vdirs: 0.1.8(vue@3.4.21) + vooks: 0.2.12(vue@3.4.21) + vue: 3.4.21(typescript@5.3.3) + vueuc: 0.4.58(vue@3.4.21) + dev: false + + /nano-time@1.0.0: + resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} + dependencies: + big-integer: 1.6.52 + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /oblivious-set@1.0.0: + resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} + dev: false + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: false + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /optimism@0.18.0: + resolution: {integrity: sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==} + dependencies: + '@wry/caches': 1.0.1 + '@wry/context': 0.7.4 + '@wry/trie': 0.4.3 + tslib: 2.6.2 + dev: false + + /orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /parse-code-context@1.0.0: + resolution: {integrity: sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA==} + engines: {node: '>=6'} + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + + /path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pinia@2.1.7(typescript@5.3.3)(vue@3.4.21): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.6.1 + typescript: 5.3.3 + vue: 3.4.21(typescript@5.3.3) + vue-demi: 0.14.7(vue@3.4.21) + dev: false + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.6.1 + pathe: 1.1.2 + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss-import@15.1.0(postcss@8.4.35): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.35): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.35 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.35): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.1 + postcss: 8.4.35 + yaml: 2.4.0 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.35): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /prosemirror-changeset@2.2.1: + resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==} + dependencies: + prosemirror-transform: 1.8.0 + dev: false + + /prosemirror-collab@1.3.1: + resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} + dependencies: + prosemirror-state: 1.4.3 + dev: false + + /prosemirror-commands@1.5.2: + resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==} + dependencies: + prosemirror-model: 1.19.4 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + dev: false + + /prosemirror-dropcursor@1.8.1: + resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + prosemirror-view: 1.33.1 + dev: false + + /prosemirror-gapcursor@1.3.2: + resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} + dependencies: + prosemirror-keymap: 1.2.2 + prosemirror-model: 1.19.4 + prosemirror-state: 1.4.3 + prosemirror-view: 1.33.1 + dev: false + + /prosemirror-history@1.3.2: + resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==} + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + prosemirror-view: 1.33.1 + rope-sequence: 1.3.4 + dev: false + + /prosemirror-inputrules@1.4.0: + resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==} + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + dev: false + + /prosemirror-keymap@1.2.2: + resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} + dependencies: + prosemirror-state: 1.4.3 + w3c-keyname: 2.2.8 + dev: false + + /prosemirror-markdown@1.12.0: + resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==} + dependencies: + markdown-it: 14.0.0 + prosemirror-model: 1.19.4 + dev: false + + /prosemirror-menu@1.2.4: + resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} + dependencies: + crelt: 1.0.6 + prosemirror-commands: 1.5.2 + prosemirror-history: 1.3.2 + prosemirror-state: 1.4.3 + dev: false + + /prosemirror-model@1.19.4: + resolution: {integrity: sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==} + dependencies: + orderedmap: 2.1.1 + dev: false + + /prosemirror-schema-basic@1.2.2: + resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==} + dependencies: + prosemirror-model: 1.19.4 + dev: false + + /prosemirror-schema-list@1.3.0: + resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==} + dependencies: + prosemirror-model: 1.19.4 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + dev: false + + /prosemirror-state@1.4.3: + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} + dependencies: + prosemirror-model: 1.19.4 + prosemirror-transform: 1.8.0 + prosemirror-view: 1.33.1 + dev: false + + /prosemirror-tables@1.3.7: + resolution: {integrity: sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==} + dependencies: + prosemirror-keymap: 1.2.2 + prosemirror-model: 1.19.4 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + prosemirror-view: 1.33.1 + dev: false + + /prosemirror-trailing-node@2.0.8(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.33.1): + resolution: {integrity: sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==} + peerDependencies: + prosemirror-model: ^1.19.0 + prosemirror-state: ^1.4.2 + prosemirror-view: ^1.31.2 + dependencies: + '@remirror/core-constants': 2.0.2 + escape-string-regexp: 4.0.0 + prosemirror-model: 1.19.4 + prosemirror-state: 1.4.3 + prosemirror-view: 1.33.1 + dev: false + + /prosemirror-transform@1.8.0: + resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==} + dependencies: + prosemirror-model: 1.19.4 + dev: false + + /prosemirror-view@1.33.1: + resolution: {integrity: sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==} + dependencies: + prosemirror-model: 1.19.4 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.8.0 + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-query@3.39.3(react@18.2.0): + resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.24.0 + broadcast-channel: 3.7.0 + match-sorter: 6.3.4 + react: 18.2.0 + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + + /rehackt@0.0.5(react@18.2.0): + resolution: {integrity: sha512-BI1rV+miEkaHj8zd2n+gaMgzu/fKz7BGlb4zZ6HAiY9adDmJMkaDcmuXlJFv0eyKUob+oszs3/2gdnXUrzx2Tg==} + peerDependencies: + '@types/react': '*' + react: '*' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + react: 18.2.0 + dev: false + + /remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + dev: false + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /response-iterator@0.2.6: + resolution: {integrity: sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==} + engines: {node: '>=0.8'} + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /rollup@4.12.0: + resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.12.0 + '@rollup/rollup-android-arm64': 4.12.0 + '@rollup/rollup-darwin-arm64': 4.12.0 + '@rollup/rollup-darwin-x64': 4.12.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 + '@rollup/rollup-linux-arm64-gnu': 4.12.0 + '@rollup/rollup-linux-arm64-musl': 4.12.0 + '@rollup/rollup-linux-riscv64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-musl': 4.12.0 + '@rollup/rollup-win32-arm64-msvc': 4.12.0 + '@rollup/rollup-win32-ia32-msvc': 4.12.0 + '@rollup/rollup-win32-x64-msvc': 4.12.0 + fsevents: 2.3.3 + dev: true + + /rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + dev: false + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + dev: true + + /seemly@0.3.8: + resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==} + dev: false + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + dev: true + + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /shiki-es@0.2.0: + resolution: {integrity: sha512-RbRMD+IuJJseSZljDdne9ThrUYrwBwJR04FvN4VXpfsU3MNID5VJGHLAD5je/HGThCyEKNgH+nEkSFEWKD7C3Q==} + deprecated: Please migrate to https://github.com/antfu/shikiji + dev: true + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /sortablejs@1.15.2: + resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==} + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.7 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: false + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /tailwindcss@3.4.1: + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-import: 15.1.0(postcss@8.4.35) + postcss-js: 4.0.1(postcss@8.4.35) + postcss-load-config: 4.0.2(postcss@8.4.35) + postcss-nested: 6.0.1(postcss@8.4.35) + postcss-selector-parser: 6.0.15 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + dev: false + + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: true + + /tippy.js@6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + dependencies: + '@popperjs/core': 2.11.8 + dev: false + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.1 + dev: true + + /treemate@0.3.11: + resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} + dev: false + + /ts-essentials@9.4.1(typescript@5.3.3): + resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} + peerDependencies: + typescript: '>=4.1.0' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.3.3 + dev: false + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /ts-invariant@0.10.3: + resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@4.11.1: + resolution: {integrity: sha512-MFMf6VkEVZAETidGGSYW2B1MjXbGX+sWIywn2QPEaJ3j08V+MwVRHMXtf2noB8ENJaD0LIun9wh5Z6OPNf1QzQ==} + engines: {node: '>=16'} + dev: false + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + /uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: true + + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + dev: false + + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /unload@2.2.0: + resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} + dependencies: + '@babel/runtime': 7.24.0 + detect-node: 2.1.0 + dev: false + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /unplugin-icons@0.18.5: + resolution: {integrity: sha512-KVNAohXbZ7tVcG1C3p6QaC7wU9Qrj7etv4XvsMMJAxr5LccQZ+Iuv5LOIv/7GtqXaGN1BuFCqRO1ErsHEgEXdQ==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + dependencies: + '@antfu/install-pkg': 0.3.1 + '@antfu/utils': 0.7.7 + '@iconify/utils': 2.1.22 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.5.0 + unplugin: 1.8.1 + transitivePeerDependencies: + - supports-color + dev: true + + /unplugin@1.8.1: + resolution: {integrity: sha512-NDAvOEnZmeSRRmjfD0FoLzfve2/9lqceO5bR4J/2V72zphnFdq7UYo3fg6F1y1HfZEaSHa+7bZgbEN+z5x8ZDQ==} + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + dependencies: + tslib: 2.6.2 + dev: true + + /upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + dependencies: + tslib: 2.6.2 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /vdirs@0.1.8(vue@3.4.21): + resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} + peerDependencies: + vue: ^3.0.11 + dependencies: + evtd: 0.2.4 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vee-validate@4.12.5(vue@3.4.21): + resolution: {integrity: sha512-rvaDfLPSLwTk+mf016XWE4drB8yXzOsKXiKHTb9gNXNLTtQSZ0Ww26O0/xbIFQe+n3+u8Wv1Y8uO/aLDX4fxOg==} + peerDependencies: + vue: ^3.3.11 + dependencies: + '@vue/devtools-api': 6.6.1 + type-fest: 4.11.1 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vite-node@0.34.7(@types/node@20.11.24): + resolution: {integrity: sha512-0Yzb96QzHmqIKIs/x2q/sqG750V/EF6yDkS2p1WjJc1W2bgRSuQjf5vB9HY8h2nVb5j4pO5paS5Npcv3s69YUg==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.6.1 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.5(@types/node@20.11.24) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-checker@0.6.4(typescript@5.3.3)(vite@5.1.5)(vue-tsc@1.8.27): + resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} + engines: {node: '>=14.16'} + peerDependencies: + eslint: '>=7' + meow: ^9.0.0 + optionator: ^0.9.1 + stylelint: '>=13' + typescript: '*' + vite: '>=2.0.0' + vls: '*' + vti: '*' + vue-tsc: '>=1.3.9' + peerDependenciesMeta: + eslint: + optional: true + meow: + optional: true + optionator: + optional: true + stylelint: + optional: true + typescript: + optional: true + vls: + optional: true + vti: + optional: true + vue-tsc: + optional: true + dependencies: + '@babel/code-frame': 7.23.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.6.0 + commander: 8.3.0 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + npm-run-path: 4.0.1 + semver: 7.6.0 + strip-ansi: 6.0.1 + tiny-invariant: 1.3.3 + typescript: 5.3.3 + vite: 5.1.5(@types/node@20.11.24) + vscode-languageclient: 7.0.0 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + vue-tsc: 1.8.27(typescript@5.3.3) + dev: true + + /vite-plugin-pages@0.32.0(vite@5.1.5): + resolution: {integrity: sha512-OxS3n0zUo5wsfgNCAuw2FiG/KD1ipgQV+2Flst4RyeI2iPv+m0YueVq+nx41k5NOWJj/zhqEas6I0b7HXveXjA==} + peerDependencies: + '@vue/compiler-sfc': ^2.7.0 || ^3.0.0 + vite: ^2.0.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + deep-equal: 2.2.3 + extract-comments: 1.1.0 + fast-glob: 3.3.2 + json5: 2.2.3 + local-pkg: 0.5.0 + picocolors: 1.0.0 + vite: 5.1.5(@types/node@20.11.24) + yaml: 2.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-vue-layouts@0.11.0(vite@5.1.5)(vue-router@4.3.0)(vue@3.4.21): + resolution: {integrity: sha512-uh6NW7lt+aOXujK4eHfiNbeo55K9OTuB7fnv+5RVc4OBn/cZull6ThXdYH03JzKanUfgt6QZ37NbbtJ0og59qw==} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.2.4 + vue-router: ^4.0.11 + dependencies: + debug: 4.3.4 + fast-glob: 3.3.2 + vite: 5.1.5(@types/node@20.11.24) + vue: 3.4.21(typescript@5.3.3) + vue-router: 4.3.0(vue@3.4.21) + transitivePeerDependencies: + - supports-color + dev: true + + /vite@5.1.5(@types/node@20.11.24): + resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.11.24 + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.12.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vooks@0.2.12(vue@3.4.21): + resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} + peerDependencies: + vue: ^3.0.0 + dependencies: + evtd: 0.2.4 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vscode-jsonrpc@6.0.0: + resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} + engines: {node: '>=8.0.0 || >=10.0.0'} + dev: true + + /vscode-languageclient@7.0.0: + resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} + engines: {vscode: ^1.52.0} + dependencies: + minimatch: 3.1.2 + semver: 7.6.0 + vscode-languageserver-protocol: 3.16.0 + dev: true + + /vscode-languageserver-protocol@3.16.0: + resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + dev: true + + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + dev: true + + /vscode-languageserver-types@3.16.0: + resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} + dev: true + + /vscode-languageserver@7.0.0: + resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.16.0 + dev: true + + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + dev: true + + /vue-demi@0.10.1(vue@3.4.21): + resolution: {integrity: sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.6.0 || >=3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vue-demi@0.14.7(vue@3.4.21): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vue-dompurify-html@5.0.1(vue@3.4.21): + resolution: {integrity: sha512-8yoMbo7PX4vt01k0dcCHvP4tY0fOCLkQeMhXXRNmH7/muIUTkFOQNzkAtE0RmqgaF/unabvYnsnCu2CjIMgueg==} + peerDependencies: + vue: ^3.0.0 + dependencies: + dompurify: 3.0.9 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vue-query@1.26.0(react@18.2.0)(vue@3.4.21): + resolution: {integrity: sha512-78JbnLX/3tDll5kDr6PUasRWn05BeWm7yJNeUezA9INrn3AgTCLbsEctnlw6/wM6HiRqFj9F+mf+ruZusyiVOg==} + peerDependencies: + '@nuxtjs/composition-api': ^0.28.0 + '@vue/composition-api': ^1.1.2 + vue: ^2.0.0 || >=3.0.0 + peerDependenciesMeta: + '@nuxtjs/composition-api': + optional: true + '@vue/composition-api': + optional: true + dependencies: + '@vue/devtools-api': 6.6.1 + match-sorter: 6.3.4 + react-query: 3.39.3(react@18.2.0) + vue: 3.4.21(typescript@5.3.3) + vue-demi: 0.10.1(vue@3.4.21) + transitivePeerDependencies: + - react + - react-dom + - react-native + dev: false + + /vue-router@4.3.0(vue@3.4.21): + resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.21(typescript@5.3.3) + + /vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.3.3) + semver: 7.6.0 + typescript: 5.3.3 + dev: true + + /vue@3.4.21(typescript@5.3.3): + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21) + '@vue/shared': 3.4.21 + typescript: 5.3.3 + + /vueuc@0.4.58(vue@3.4.21): + resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==} + peerDependencies: + vue: ^3.0.11 + dependencies: + '@css-render/vue3-ssr': 0.15.12(vue@3.4.21) + '@juggle/resize-observer': 3.4.0 + css-render: 0.15.12 + evtd: 0.2.4 + seemly: 0.3.8 + vdirs: 0.1.8(vue@3.4.21) + vooks: 0.2.12(vue@3.4.21) + vue: 3.4.21(typescript@5.3.3) + dev: false + + /w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@2.4.0: + resolution: {integrity: sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ==} + engines: {node: '>= 14'} + hasBin: true + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zen-observable-ts@1.2.5: + resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} + dependencies: + zen-observable: 0.8.15 + dev: false + + /zen-observable@0.8.15: + resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} + dev: false + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2b75bd8 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +} diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..054dbdf86f01764fdc38e9bf4c54cea63681f33f GIT binary patch literal 4911 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 literal 0 HcmV?d00001 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f3f1982243b42f09309aeb1883493a8e7c6daa GIT binary patch literal 4340 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 nv?Lywa41XA#inmWL00000NkvXXu0mjfo#IFd literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6693900200d2105a1af7e6aabbabd1487332ab7d GIT binary patch literal 15406 zcmeHOYiu1y6<#PvRPZAp0jdy^B?QVZ8Wit3E~TVALIjkDN+6Vi3W5qz3T*+YAw2F~ z+j%t26Q@l|9wLd8C~?!!q@^{aB&Kl_>V!1V5|Y|&liGRJPF%;2yE8k7@65fscklJx z`&eH;0(YeGuJ_KI^PMwiX3m~7YZz}at}&)eF>tLie)u-Sunfbfs!IMp_1%WC0nesQ zOa1;4!)SZ2VN69EbU}~gb6j$kzF6&h9NTJgZ1aM!t={6QdCsY`)=_NcyM%2vJ8_eu zRB2nk2jAf+eYuZ_n`d!#qxOf~z1&}Hy@#B}uN5tWc<37>w)}*={%*%1B3F>yx4Hlg zi{$>bXe-J6PpjYGv1>>^xkNvg&#VchAzL>PN$}ab0Bx*v|CIja-i4syl34d$5^HZK zvF$z*TkpmFw@7UK0g+N9cgNH8Q}X-zTlRUPp*M9q8c`IfflK6|jo&`2zu5H~wCM## zhXm`h{svveLvumXB?a2DWo2l8O?SmDoieO$%bV|n@~ zO6Ke1v(96_?TOkyVVj$&q2~Pw&=7HJ2>Ou4RdX;Aw{~Fu@)9ws!s|>G>P%E#p9&SK zul)dcKLGn}2iDH=SF;oPY!h|nuW8|pSRK=4xUOav)|<;w^<8SeMBMBm+q#|+4A)Kn z5M=HzmBwh>!@gdp*t99o^ZL=!irOExIUj3vSJeJx==ZFi7yi79wqHfYVVf^cDF3+C zQQ?oZ5#ukLe@W^>2g!q*$$8*2={=@gwy|_JxreutI{&iXdy_Vk*1vk~XnJQI>?85$ z{IX$?kJl3oU-9W{A4AKP<}bF~P3rPlzYX8Wwk^N_e>1=9*_A<4^_ z|N4)UeCA>8%XppKL)#+qx5)j+9*+!>7$*7ja&q7^q~%G=pMD1a5k3+7Bwk_t1%EH* zUbd|8x|6!nOX895L>i&0<7JO9pQwtXOlW3@$saKEW;a!-&+`A}a-W24W)j(k$%O@7+!H{2m6_~S{ zG}D7EYFmPywJozfFPR13{to#6@bjIaOccs}*U!?qFhNHrNV*M`@{-1flxAQR@ z=Mej}twZ3yZKC+&9jF2NzaIQY@va^sTOnN{#xT$@{W^XJ#QXZ~ zYCZ~GG;!<dg-h z+SYAO%-o25q!s!-JdqXlvJd-54}f@tBHRVhL-1c1~$CmZA_~s=4RbL@zB`TjG$~9*Y^LJmwd<_)UcMf^FJApl1@1D+z z#?N}i-pqENQTpG&I(?VkA7slaa{tw$^HRKSE9^DuQg^cQJwNMu5oeX2#2U9OdERRK z&xw$`2^P5rXSIsT5g->>s{dSH3p+X)Uhp{e zXCqlwXYr?#Il%__P1u|G45Wm;>)c`I-$$(VLAvg9ThTX|kH^^Okf$X4IBQ7Am**-x zH*?VseFkjV^VX+}d7;lo@L9$jn1jzs!Oy-M=h9v1&V7C-_VvJ8ih0O>SCDqTd(k+@ zhs!srzlY?J$Mim+UTr7w@Z6$km4rX23;0m#?1?l6&L0=C-*_@{o;$eqs8=|jU;Mh` z($AZD+8(|_*U0*3UU-ia%fCp1 z_t=0>TZpIsJM5ABiskSVN?7y#{=hIQ{1NmO%IBLj z?QHWXe;b0_`#a!!EdwrnUVGBu%cD=&{D5Ou|CrBf@Hq&=c^~A#TCNfqaK-`O@-3^q zHh6}EWpHBEOL3N`dyWB26HwiGj`C1U#gS3Ab(62@h40_y;Dc@gyh X_Nx2vJ<^AP5npdsN<{)Hi~FG8JVAD5C5wvSbPh$R0AvuoM+k_J%So^UGEckgYPM19QvOUu#p#vTVy1dgk#1^ep)C(N)ru!2H=Us;&ZpPTS9i{b=FjU!$PoD1 z+pnauUh@9YIfX(o`A9PUNXkKzbI@mYpGjKrr~5~gm7VkUiF3Pb($GA4YK`1Jc|JIQ zUe%yS9d6NzsUaOBnbSX3-Wt7sjQETo+SH!CzbY+Q<~1&C&(*16#w!w zzj9LhBssbH0!w-Pz_5RJz4BIR|IKlQeP4cLRVGk*y23gNv-n~Xscsj z*pJIX{H*UM2=g0LSD1dr?HCF@6c)Z{@qdj7zC)OdDB})*2G2hU;sfdSzRd8sFo=wo z^H9c`e{rvLjT@x*tleYO|IO1?tt?f|mbBDpbec;C(U+2nx71AUVPovaBVjM>z2AH@ z3y`px$o0ePQuTW`hx>Q;)C4>{oh+tc#7y<%;V}A704K$Fsu&5=NO1r7I98&yN&lU> zrT8aMnvZvPyK7c$?qOm81gHJZ+FG~u6Rx;r$~1Db9x9HNa-z55eaAI9We*y^0qCK1 z4E)YHksL79A)@dft-KWt9WGGT=yunb6dda90wTx_N};&BBK3<|9kW-O(gR$Ia^h)K z^z&tlkIeNnX6|xW_`JLIV|w(rp+q?vp|We)B>x{Rdy{OmWz3-_3>6D`Q9Q!cf|1EM ztXJE;tg>m39USilcop^K+T;`W8$4g!KGI(mPg7TV`;uns&+HJa z!aiq`s;c72NA(WLQ5jQ@)L*`jraABrkPc5fFzVGtF6G01Wq5?Voy0vw4JDV##6r7a z))q49!|xWk?_ZVmM)x|bej6*dJLjD9*D2XMHzaiz=0hl}o3-PoCrmCsV)(|1m>>W;1r>w)xk?MfI!CG{-t&l8hl_uZ;Y zni487#(%6=A$QarAq4)0!z(-+H_oMXEktXS%nzCbf}`1wt}^bzZuUCcjv>D40>Fhb z8ev-YJT-S5ABO!ngIV-{yp_QYh^oWXywM6!Kzgp-`OXF?hbJi88R2R}Wbf!B1wH%k!?I18?A8WPs;w<7=`tYNDV8@U zUc$G;Qg$@Lej+5wIhLFzJWWlYJm$;mvpon~A?sSaM0iDxYZI)jN3XFePnJ1xNj|4% z2tec@4Xi6qt0Y!B)&qKeZ`hQ5r9)w^uU#Q5mP$gaECX=5ol)&wu>+rM15WYPrRMwk zaUYfpVegO{${IhQZ52pc`gF4+sJY86^L#azXW;HpA_LzNS#I60RWAZ5hWfVPmCEK~ zsZ)6m4?EEk!}-B9`mXC@J5|-G@}1uMr@uxf!JV#h42iMUV7-*=N-(korvst3Skow) zx1}4e?Cia_oZI3~o72-Iz7mj`Y74O_RVd%v?I_^O|x7haDqb^ds6D$;P%j^5O2gZfAA zO9QvIl20FJpDxD67*93S$Uf<$Zn0A9Pj zjhG1koO{V^lo`DTh^LKVfF&7}9jS^)H|n>N8x1SgGzoTs95=lR%s_1<-OjfU!sV`h zJAN8d+!jERHh-xJrp0PcYj_NyDjB3YGRlhk0lhLsU9}OMZXasS2Uq2@Y)56A?$BC0 zn+|1Z65J1#M?^-XY2jlt8@2C-GGBCeaZR{t65v~>w8Q2jA~mHq-Uz;Kk}wB32~QlR zW1m0radC|&WYw{aB^&HyF=e%NTl)E@sFsvMKid*W2^xC7uCurIxtRM!;bTRvmi}tI zmI0OKVm6iWw*3`{AE$~w^n#6O+AE!Kg!{fk z&-j}^q;6~BuFq5R8pg?tD#+&;`ZG8}2UVhL$hIy7HLPf~`<<7Gv|Dko@63B`4Uodx z(xje1h3pEO)!(t-Z8^jH<^sQ!dE*1zbr~i_9#*4Va;KeAS~m+i^@%#s!Tij9yn%|1 zmlT*lCwiVem5vg9X^1PCkNzfy-Op~ntH>Q^A{9cH$+B=x7#-?aOed)vEUvrem8v?0 zi*g)vrZ$TLLWB~Sk)68k);++Ml#5b}%@)f7FlY9)^kb2lJ-?sKd_iRHlx&IHvCLNvP-t!;*TzC z?c&2FL=#Bx;Vg6ogGf)NoQu z{qAAY%U>5KMyhIpqtYmTI=<(2Uv{Kwj+wyz*_+%-she=`xBYG&XspqOTRk%OaAi5 z@|>-X(?CMKY$$31GZjbk*Od`ADBe(@S%2tLpVU6fnuzY!>tOSB8GoJPckD9ohoAu# zuT@US`&pl9ZBqHXYT$U_=P(4Z9oA&i_h4F~X#LyQy`nei{jndZ2giURC}9Yqvj6Ox zU7s)ys{c5@>LHwinRo@GQe1K~aEXn2b6MypDOl-sWqacC_|HOlI;+!$m(~PikV~?8 zzr%TB5;|x0=IQAl8SSiY<71m-NJdMgw^5_$^D@m0-v}Rb9gutW;|jYzGq8vi?$fyV zG{2lnPSa_KQ#CpK3e@XgZ3~`*n778;`v_@!vA((b+($O@gwV@U94C@KZ2710K;z)pInUR*fzjlF)}$oR;f-!;ZV ztuw?#_YS~D63!1_UFx=)ALH;JVS;J)B@Cr+$Co(tT|c6Gt}H34vGo&kogS-tP_y(l zOJ~5V`Bk;l>pPX<{Bc~?`~!1FG!ZF9L?zMg=U|9@7}t(O8`Crg0F%x@<2rE4sCiYY zR;i~+->&eh%Tg^h^b`ktNCUNd2g>*exRtKRdICi3>wY|Q@c9QxNeq*ACE=$OArH=#jegj-SG&x2PZ1P7b{~%k9NU4`R9X( z4%E1nnZ`(FAq8Q48GDBwORRnS>5WI;;LAd$8C)pO%|@QkI%@I9=(t>gX4L-hN!UP! z)`25pJ#fFu=-2v4C7NN^vv2;iAW$&bLxas$Zj#we7~JXN&sZ^)ZUxF16CA`zo~>*l z-MI>;i(E!EBtKX}_bWCqmLS?Il@LaC7jS?wO0h!QNQbOxZ_&P|4nd1K+IAXiV-L!) zd_wQcqHZfFw#`J%Jx+tdj`JXdkd$^MDU^`g+T8fl@qo#4Py2c#_nfr8uiaQeQ7C3JTL$9)+#7^jIV)0;sCkRf5F3ZKDNgcq)u4mt zGb)te`;^+7z%?%y-bAq%9IDccM|7^UYnvcy@f0!gd4h#n3@K)*f0=1`AVq(uEcAyo$0enkExnY6L&;fBcbs=eU5IT&a#lq@S1I%85B=2u3 zk04?H2zf*$LgQo$e&`XE;5`|N#Pa%7g-UsNX7GYqX9F~$Kgm_R3eO754dpvFSV?}d zcm-(T3zEbT`Qd}LE;K{HC;8s*>atv!VIITLsPfQ-_<=EXyH+CFHn~I4gf>Fxi@<~( zrecux7CuiQC%o0=mEM%-#b%$Mz2jg&aw7{-yKc;22lr+8Gcp0W#^{r#W#P_m$~59r zUs;j4Fr&2Im57EM8dt(?k1d{@813%+9k!j61ZpnaR+z7T}+ zo8Z)24$G9f9uN6eOuDC-Z!Y`zkEMhP1a7e^7}0b_!gWkrz@) z-4+Yf%2plc1SAUSj-o7bC(M>0gr&y6Go5Ec&AxBW5`q(8b4y4JI214_Mu~xW-xMc! zbQC6|f^ER$mU|9G5W*927mdMcxQC) zi`qvvWn*jp+EO#(_qV;L?Oz)5Nbc(Y+-w}U#wbxfCnKh(vQu%X(Vy1J`Q_oN3f9`Q z$Q0CZsd+?kw5=zeormq!Z-Z5B@is)SGA#%1hgqofZw37M4pz+fbL((k7~qM;h4)F0 ziVPlq1M8dR@DJPHHmLXFKny>nrUU9&_`IAqZt4(kiP7(%X5^kom?js`s2TMf<*v=? z(qf%*#%1fimiAi6D#{#M@cq6Y9NHS<7>Fr}$oDM;yXXHsMsZ?V?4ZnHjS|>ytfBu*uW3>)juDU&e*Ix z*IZEPWs+`*G6x>Os>`EVoVJ|i^$G=c<#$w%8b>D$sw(24algh{?b z(Ea1RIa{IW9$eaqX)&I@<2;}8Gx8bBuKg~{ccmR+ZX^-gv0VO8ksW2_Skqi^Rs7Nc zO@ZaFJ6jz=8t_DWlWDgm-KL{fBg>|@T@<0=`{mtoBVDDW$aL-$mFmS~otK)DK0{r+ zd~T`mMeXL{{Ach$h(GQyDpcF@-0g$6#AGX4pXKn*!unXc<`)C5-9HEFO4a96n>=M~ zTQ(pZpEE>0(RDY@_bO2wE)-`28rr-9`~E+g@faTnHFIzsrZz=GQ?3Zt!O-MI`2$Tr zVcxPG;k4MFN1eH2UOqM^pl;{X9|g47UY?jhl6r5L)pOuf3^h>-ZmeUnQ^-F{%21r) zY4is&bq=8fbI+|7-6F#nVd?22;QlrrU=+$@vgzKD-w2{fft``42Die&#>GPCSza{{ zLCq(2r#}IPg(e5k$|)v*^-Jg|VCS{V*znv>w`DLzsX^BOMz=E5Ru9L2n_UAS=&?K9 z=YJ4jX0I-Yd=maw|80O?P3l7qfa%w%QngwI*jRyQT_x%8YOz_MDF!(-d?MojVh_y} z8WoJLc$(@@tD}1SnQMFtma*9|U%o|PuVQL>B5%uzpwl^8e9qJ{2fj85A0})NnmA-F=arwqQ*}RT2F3giZ*ymGmZX_V#{1TJh{tx3H zc=%iqPf-y*IgKvac(eqf*LxWMamx-g{#y~z#Ka2%5iaf*pX9lE{8!~n`8 z$9>8SsyKHlW008qSvVxn(@r3E)iNM+bZeyYJmKkjofz(%jkHqryMPmNTr-9_z;EU$ zNWdQ}|23Uah+V@1T=wKjtBb&c*daRSp5;ihl1=~}{L5wL!LF8aNx?{6xLAaA;A+#8 zTf@1`NjA86gyTufX!7~pt!D4aMtte!2qh&=$058@QmlVH6T_r0iyzwTPdrgt84JTr zpgv|r%yY2Ib?5tk{AypP98mf5FDC*YM0PaIe;yD#qW1WT1;AVVlhvLPpM~|~@od7j z~XLI1)+aB?Ns;i)U)@5-B_L{UEd$ zce_hG3Ih}$G21iAKR`3O9d7!EBdyA2Qneg5za0esNvum8qDQDyQyMU8J1Z<$vj`a_ zR+Bxe_KVmf#ExP|}Jrm3sL+-(^2+FL0r^e{vT7(PdyV1}c4)rHsf1CAMk1}5Wy0&}IjPetAMF0~+ zJOF;r{Sx#kyTYEp?)xmJg3x2nB`ryA%F5-KWL)VN1HZgri#O&XaBBU}`_$sPte$y| zzrf&R=@S}P`>n+HBg=(JcR#bMY?T5)?j|r88o$O0`_skUhFtecdkA0D*r&5nA-5Ul zf7=Z>Q;0-IZ!(SjO9)oOFDp@!mfv{i6DbQp9iW+ zaBMG&t`}f8Uv$5#{STE~2&5R^^wXOcG&pFyzhPzyA}jqJ?_4b^xHw`>_|}?rW9On@ zgW@x=DlCk!+=(o1-A>2fq^aUS=cbOt^%dD{4TsbDvKhvNQP)emn~`|6lB7Aers8ym z2$6W2)K(_0+I}WjAq7e}6?lpyZm9=)n1b3+*yBgvtagaQNV*_`{7NvdU@9f= zG6$eKF1g@`ehFdf%Bb8{6C1VbiIC_1Vf`FIt5YBLKTx%-2ux$;FIQ;w-4gTuN4PcF z6?j$`evJW^J|*{B$MO-xU$*(`NFfk%%WS82Ag%*K*w?Pl{{-L8L5gEPA`QsZ`JoVk zY`t0~KipVoWbfD$MJ*2R($8JK&IV}v@+)>^TY32;Gqqs?JPYK%6cqUMg1nE)B(5|N4_;Sqkk1f z`mmQfaL-rlIrZiVt2=2>`s;(dWs#Z!4cvCFBkTh@n4%pj?|ZYKo2y?{g5moob86R{ zK6+(FyplHo*8KO~JsDsVz}Ig=22}YDedxbEeDrf~qh*KDVPy3&7~-FP9RL=G*>o^K z0idBMG1y%0RXb@xEb%KU%Y?Iy<<&|#Tv?Re%Izkjk0lS}f|Kl5mnT^=J6u>|ftxMJ zC`#)TzfD52NYwySgTb)1)DP&>Q;*MEwxEt!#+E$Iql3t(zia%Of!V&>C>T127AF`g z`XO!4ob4>ZQysTGO?B3T4vxt3lG~9mqUAthq!c_4mC5jd4`z$05P60imc0d=A93%U zDCX3gsv;q)8z%Q6eqINpmmT$bFu^pQ13?n-yNC~;jrEmaoV8k(`XIH-x2?yzMn%et z*qtgxYa|8c!&^jjLCNO8$Dod!cP<<7?W+x0X6ucKcaS&r+d?7oESsJgHvrO5sK>d= zn$1O^+ZBAYfr_KY{@f<@f-iFv2k9kBS7&MOIB(*`C-}17fnU4@e-?%VC(`HlgG@ys z<99BXEQzErW&(CJa1jd-f{%6WK`uJd9brD(d<=Gc8bJ@^l((IKyf_pft#>S_mNd7; zhJh-%kxp5bk7F2g0RHpH_ z5Vbnoz@Ar|2AVmT*bq-)IcH#ivBqk8&w`77Ek3H-MJHfU|2@QT-woLna1g8sXOsx7 z(zF6HGty!+r%G)g{?{!)xDo^=OBF&O9)WnLhlbg!cAJw57+wfT^MF=fM5?}m##EAY z95NBo3s@v~iL>WT&KwSsgBQq&>=%@Itw9Kjjc2KQSF_#1uxgn-6Z#@LLpg8*oVI+i z(9Hc@K}H@4f2Xb#_6d|cl*Oqhh7v6Vs*M>4^aD(=jRtMCwT=84k!8r2)UOJREUyKYcR&M}57A*?A^*bh=mX?FtIK05+_Y!61%`~J(!Mk+QqsI#?-e}^>&r2m~sXcboZ{@UHl7J{oxPMy@^o7-pSZSRby|#??-#$yg>p$~=;kRkV;%RF+dxmQ@s& okx`bB$<3GjHxd6A;O_bQoiq6V4Zx!lkpB>R+Qv_-v_O&n2jBWxkN^Mx literal 0 HcmV?d00001 diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..ce762f9 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1,17 @@ +{ + "name": "Codedang", + "short_name": "Codedang", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "display": "standalone" +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..c7e4741 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/admin/components/CreateNoticeModal.vue b/src/admin/components/CreateNoticeModal.vue new file mode 100644 index 0000000..a96df56 --- /dev/null +++ b/src/admin/components/CreateNoticeModal.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/admin/components/ImportProblemModal.vue b/src/admin/components/ImportProblemModal.vue new file mode 100644 index 0000000..c97245a --- /dev/null +++ b/src/admin/components/ImportProblemModal.vue @@ -0,0 +1,249 @@ + + + diff --git a/src/admin/pages/[groupId]/contest/CreateContestModal.vue b/src/admin/pages/[groupId]/contest/CreateContestModal.vue new file mode 100644 index 0000000..6264f72 --- /dev/null +++ b/src/admin/pages/[groupId]/contest/CreateContestModal.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/admin/pages/[groupId]/contest/[id]/edit.vue b/src/admin/pages/[groupId]/contest/[id]/edit.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/contest/[id]/edit.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/contest/[id]/index.vue b/src/admin/pages/[groupId]/contest/[id]/index.vue new file mode 100644 index 0000000..f169681 --- /dev/null +++ b/src/admin/pages/[groupId]/contest/[id]/index.vue @@ -0,0 +1,274 @@ + + + + + +meta: + layout: admin + diff --git a/src/admin/pages/[groupId]/contest/index.vue b/src/admin/pages/[groupId]/contest/index.vue new file mode 100644 index 0000000..3a684e4 --- /dev/null +++ b/src/admin/pages/[groupId]/contest/index.vue @@ -0,0 +1,340 @@ + + + + + +meta: + layout: admin + diff --git a/src/admin/pages/[groupId]/home/index.vue b/src/admin/pages/[groupId]/home/index.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/home/index.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/index.vue b/src/admin/pages/[groupId]/index.vue new file mode 100644 index 0000000..0df852f --- /dev/null +++ b/src/admin/pages/[groupId]/index.vue @@ -0,0 +1,223 @@ + + + + + +meta: + layout: admin + diff --git a/src/admin/pages/[groupId]/member/index.vue b/src/admin/pages/[groupId]/member/index.vue new file mode 100644 index 0000000..1baa0eb --- /dev/null +++ b/src/admin/pages/[groupId]/member/index.vue @@ -0,0 +1,207 @@ + + + + + +meta: + layout: admin + diff --git a/src/admin/pages/[groupId]/notice/[id]/edit.vue b/src/admin/pages/[groupId]/notice/[id]/edit.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/notice/[id]/edit.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/notice/create.vue b/src/admin/pages/[groupId]/notice/create.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/notice/create.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/notice/index.vue b/src/admin/pages/[groupId]/notice/index.vue new file mode 100644 index 0000000..f8da0ec --- /dev/null +++ b/src/admin/pages/[groupId]/notice/index.vue @@ -0,0 +1,148 @@ + + + + + +meta: + layout: admin + diff --git a/src/admin/pages/[groupId]/pool/[id]/edit.vue b/src/admin/pages/[groupId]/pool/[id]/edit.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/pool/[id]/edit.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/pool/create.vue b/src/admin/pages/[groupId]/pool/create.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/pool/create.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/pool/index.vue b/src/admin/pages/[groupId]/pool/index.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/pool/index.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/problem/[id]/edit.vue b/src/admin/pages/[groupId]/problem/[id]/edit.vue new file mode 100644 index 0000000..346013b --- /dev/null +++ b/src/admin/pages/[groupId]/problem/[id]/edit.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/admin/pages/[groupId]/problem/create.vue b/src/admin/pages/[groupId]/problem/create.vue new file mode 100644 index 0000000..dfb3ffc --- /dev/null +++ b/src/admin/pages/[groupId]/problem/create.vue @@ -0,0 +1,415 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/common/components/Atom/InputItem.vue b/src/common/components/Atom/InputItem.vue new file mode 100644 index 0000000..b6503de --- /dev/null +++ b/src/common/components/Atom/InputItem.vue @@ -0,0 +1,46 @@ + + + diff --git a/src/common/components/Atom/ListItem.story.vue b/src/common/components/Atom/ListItem.story.vue new file mode 100644 index 0000000..6ba5e8a --- /dev/null +++ b/src/common/components/Atom/ListItem.story.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/common/components/Atom/ListItem.vue b/src/common/components/Atom/ListItem.vue new file mode 100644 index 0000000..0d72263 --- /dev/null +++ b/src/common/components/Atom/ListItem.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/common/components/Atom/PageSubtitle.story.vue b/src/common/components/Atom/PageSubtitle.story.vue new file mode 100644 index 0000000..4d4aea0 --- /dev/null +++ b/src/common/components/Atom/PageSubtitle.story.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/common/components/Atom/PageSubtitle.vue b/src/common/components/Atom/PageSubtitle.vue new file mode 100644 index 0000000..46b1c2d --- /dev/null +++ b/src/common/components/Atom/PageSubtitle.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/common/components/Atom/PageTitle.story.vue b/src/common/components/Atom/PageTitle.story.vue new file mode 100644 index 0000000..876dd81 --- /dev/null +++ b/src/common/components/Atom/PageTitle.story.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/common/components/Atom/PageTitle.vue b/src/common/components/Atom/PageTitle.vue new file mode 100644 index 0000000..14b0ac7 --- /dev/null +++ b/src/common/components/Atom/PageTitle.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/common/components/Atom/Spinner.story.vue b/src/common/components/Atom/Spinner.story.vue new file mode 100644 index 0000000..5ac9170 --- /dev/null +++ b/src/common/components/Atom/Spinner.story.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/common/components/Atom/Spinner.vue b/src/common/components/Atom/Spinner.vue new file mode 100644 index 0000000..63c7d4a --- /dev/null +++ b/src/common/components/Atom/Spinner.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/common/components/Atom/SymbolLogo.story.vue b/src/common/components/Atom/SymbolLogo.story.vue new file mode 100644 index 0000000..89e7137 --- /dev/null +++ b/src/common/components/Atom/SymbolLogo.story.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/common/components/Atom/SymbolLogo.vue b/src/common/components/Atom/SymbolLogo.vue new file mode 100644 index 0000000..d548989 --- /dev/null +++ b/src/common/components/Atom/SymbolLogo.vue @@ -0,0 +1,19 @@ + diff --git a/src/common/components/Atom/TextEditorButton.vue b/src/common/components/Atom/TextEditorButton.vue new file mode 100644 index 0000000..82b89cb --- /dev/null +++ b/src/common/components/Atom/TextEditorButton.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/common/components/Atom/Toast.story.vue b/src/common/components/Atom/Toast.story.vue new file mode 100644 index 0000000..53ca431 --- /dev/null +++ b/src/common/components/Atom/Toast.story.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/common/components/Atom/Toast.vue b/src/common/components/Atom/Toast.vue new file mode 100644 index 0000000..8c1ea05 --- /dev/null +++ b/src/common/components/Atom/Toast.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/common/components/Molecule/Badge.story.vue b/src/common/components/Molecule/Badge.story.vue new file mode 100644 index 0000000..98b517a --- /dev/null +++ b/src/common/components/Molecule/Badge.story.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/common/components/Molecule/Badge.vue b/src/common/components/Molecule/Badge.vue new file mode 100644 index 0000000..178bd95 --- /dev/null +++ b/src/common/components/Molecule/Badge.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/common/components/Molecule/Card.story.vue b/src/common/components/Molecule/Card.story.vue new file mode 100644 index 0000000..bbfcc86 --- /dev/null +++ b/src/common/components/Molecule/Card.story.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/common/components/Molecule/Card.vue b/src/common/components/Molecule/Card.vue new file mode 100644 index 0000000..b1dfe0c --- /dev/null +++ b/src/common/components/Molecule/Card.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/common/components/Molecule/CardItem.story.vue b/src/common/components/Molecule/CardItem.story.vue new file mode 100644 index 0000000..b4e2cba --- /dev/null +++ b/src/common/components/Molecule/CardItem.story.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/common/components/Molecule/CardItem.vue b/src/common/components/Molecule/CardItem.vue new file mode 100644 index 0000000..4797186 --- /dev/null +++ b/src/common/components/Molecule/CardItem.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/common/components/Molecule/Dialog.story.vue b/src/common/components/Molecule/Dialog.story.vue new file mode 100644 index 0000000..05530eb --- /dev/null +++ b/src/common/components/Molecule/Dialog.story.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/common/components/Molecule/Dialog.vue b/src/common/components/Molecule/Dialog.vue new file mode 100644 index 0000000..00942be --- /dev/null +++ b/src/common/components/Molecule/Dialog.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/common/components/Molecule/Dropdown.story.vue b/src/common/components/Molecule/Dropdown.story.vue new file mode 100644 index 0000000..49f9807 --- /dev/null +++ b/src/common/components/Molecule/Dropdown.story.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/common/components/Molecule/Dropdown.vue b/src/common/components/Molecule/Dropdown.vue new file mode 100644 index 0000000..dbb79c6 --- /dev/null +++ b/src/common/components/Molecule/Dropdown.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/common/components/Molecule/Modal.story.vue b/src/common/components/Molecule/Modal.story.vue new file mode 100644 index 0000000..34dc9a6 --- /dev/null +++ b/src/common/components/Molecule/Modal.story.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/common/components/Molecule/Modal.vue b/src/common/components/Molecule/Modal.vue new file mode 100644 index 0000000..2b6ac2a --- /dev/null +++ b/src/common/components/Molecule/Modal.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/common/components/Molecule/NewCard.vue b/src/common/components/Molecule/NewCard.vue new file mode 100644 index 0000000..98ee5f8 --- /dev/null +++ b/src/common/components/Molecule/NewCard.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/common/components/Molecule/Pagination.story.vue b/src/common/components/Molecule/Pagination.story.vue new file mode 100644 index 0000000..31fbcd7 --- /dev/null +++ b/src/common/components/Molecule/Pagination.story.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/common/components/Molecule/Pagination.vue b/src/common/components/Molecule/Pagination.vue new file mode 100644 index 0000000..00bb896 --- /dev/null +++ b/src/common/components/Molecule/Pagination.vue @@ -0,0 +1,100 @@ + + + diff --git a/src/common/components/Molecule/ProgressCard.story.vue b/src/common/components/Molecule/ProgressCard.story.vue new file mode 100644 index 0000000..84630e1 --- /dev/null +++ b/src/common/components/Molecule/ProgressCard.story.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/common/components/Molecule/ProgressCard.vue b/src/common/components/Molecule/ProgressCard.vue new file mode 100644 index 0000000..c00513d --- /dev/null +++ b/src/common/components/Molecule/ProgressCard.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/common/components/Molecule/RadioButton.story.vue b/src/common/components/Molecule/RadioButton.story.vue new file mode 100644 index 0000000..cbf1255 --- /dev/null +++ b/src/common/components/Molecule/RadioButton.story.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/common/components/Molecule/RadioButton.vue b/src/common/components/Molecule/RadioButton.vue new file mode 100644 index 0000000..99b8d13 --- /dev/null +++ b/src/common/components/Molecule/RadioButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/common/components/Molecule/SearchBar.story.vue b/src/common/components/Molecule/SearchBar.story.vue new file mode 100644 index 0000000..c36d32f --- /dev/null +++ b/src/common/components/Molecule/SearchBar.story.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/common/components/Molecule/SearchBar.vue b/src/common/components/Molecule/SearchBar.vue new file mode 100644 index 0000000..04f4c4a --- /dev/null +++ b/src/common/components/Molecule/SearchBar.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/common/components/Molecule/Switch.story.vue b/src/common/components/Molecule/Switch.story.vue new file mode 100644 index 0000000..2812350 --- /dev/null +++ b/src/common/components/Molecule/Switch.story.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/common/components/Molecule/Switch.vue b/src/common/components/Molecule/Switch.vue new file mode 100644 index 0000000..5422b9d --- /dev/null +++ b/src/common/components/Molecule/Switch.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/common/components/Molecule/Tab.story.vue b/src/common/components/Molecule/Tab.story.vue new file mode 100644 index 0000000..55a22a3 --- /dev/null +++ b/src/common/components/Molecule/Tab.story.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/common/components/Molecule/Tab.vue b/src/common/components/Molecule/Tab.vue new file mode 100644 index 0000000..b90d3d6 --- /dev/null +++ b/src/common/components/Molecule/Tab.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/common/components/Organism/AuthModal.vue b/src/common/components/Organism/AuthModal.vue new file mode 100644 index 0000000..c514652 --- /dev/null +++ b/src/common/components/Organism/AuthModal.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/common/components/Organism/CodeEditor.story.vue b/src/common/components/Organism/CodeEditor.story.vue new file mode 100644 index 0000000..111ed6a --- /dev/null +++ b/src/common/components/Organism/CodeEditor.story.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/common/components/Organism/CodeEditor.vue b/src/common/components/Organism/CodeEditor.vue new file mode 100644 index 0000000..e364b79 --- /dev/null +++ b/src/common/components/Organism/CodeEditor.vue @@ -0,0 +1,115 @@ + + + diff --git a/src/common/components/Organism/Footer.story.vue b/src/common/components/Organism/Footer.story.vue new file mode 100644 index 0000000..a957da8 --- /dev/null +++ b/src/common/components/Organism/Footer.story.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/common/components/Organism/Footer.vue b/src/common/components/Organism/Footer.vue new file mode 100644 index 0000000..f5cdacd --- /dev/null +++ b/src/common/components/Organism/Footer.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/common/components/Organism/Header.story.vue b/src/common/components/Organism/Header.story.vue new file mode 100644 index 0000000..1219999 --- /dev/null +++ b/src/common/components/Organism/Header.story.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/common/components/Organism/Header.vue b/src/common/components/Organism/Header.vue new file mode 100644 index 0000000..81fd2e2 --- /dev/null +++ b/src/common/components/Organism/Header.vue @@ -0,0 +1,189 @@ + + + diff --git a/src/common/components/Organism/Login.vue b/src/common/components/Organism/Login.vue new file mode 100644 index 0000000..20ab442 --- /dev/null +++ b/src/common/components/Organism/Login.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/common/components/Organism/PaginationTable.story.vue b/src/common/components/Organism/PaginationTable.story.vue new file mode 100644 index 0000000..295def8 --- /dev/null +++ b/src/common/components/Organism/PaginationTable.story.vue @@ -0,0 +1,257 @@ + + + diff --git a/src/common/components/Organism/PaginationTable.vue b/src/common/components/Organism/PaginationTable.vue new file mode 100644 index 0000000..ed6bb61 --- /dev/null +++ b/src/common/components/Organism/PaginationTable.vue @@ -0,0 +1,196 @@ + + + diff --git a/src/common/components/Organism/PasswordReset.vue b/src/common/components/Organism/PasswordReset.vue new file mode 100644 index 0000000..0ec4d66 --- /dev/null +++ b/src/common/components/Organism/PasswordReset.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/common/components/Organism/Sidebar.story.vue b/src/common/components/Organism/Sidebar.story.vue new file mode 100644 index 0000000..5fc2311 --- /dev/null +++ b/src/common/components/Organism/Sidebar.story.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/common/components/Organism/Sidebar.vue b/src/common/components/Organism/Sidebar.vue new file mode 100644 index 0000000..8d10c9d --- /dev/null +++ b/src/common/components/Organism/Sidebar.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/common/components/Organism/Signup.vue b/src/common/components/Organism/Signup.vue new file mode 100644 index 0000000..c9a7a8e --- /dev/null +++ b/src/common/components/Organism/Signup.vue @@ -0,0 +1,239 @@ + + + diff --git a/src/common/components/Organism/TextEditor.story.vue b/src/common/components/Organism/TextEditor.story.vue new file mode 100644 index 0000000..eaf0dde --- /dev/null +++ b/src/common/components/Organism/TextEditor.story.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/common/components/Organism/TextEditor.vue b/src/common/components/Organism/TextEditor.vue new file mode 100644 index 0000000..5853966 --- /dev/null +++ b/src/common/components/Organism/TextEditor.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/common/composables/api.ts b/src/common/composables/api.ts new file mode 100644 index 0000000..07b1518 --- /dev/null +++ b/src/common/composables/api.ts @@ -0,0 +1,105 @@ +import axios from 'axios' +import { ref, computed, type ComputedRef, toValue } from 'vue' + +/** + * Single item of the list + * @param id: unique identifier of the item + */ +interface Item { + id: unknown +} + +/** + * Utility to get cursor-pagination API data. + * `slot` means a group of pages in pagination component. + * For example, if there are 3 pages per slot, [1, 2, 3] is slot 1, [4, 5, 6] is slot 2, and so on. + * + * @param path: url path to call (ex: 'user', () => `group/${id}/user`) + * @param take: number of items to take per page + * @param pagesPerSlot: number of pages per slot + */ +export const useListAPI = ( + path: string | ComputedRef, + take = 20, + pagesPerSlot = 5 +) => { + const currentPage = ref(1) + /** Total number of pages (increase if there are more data than slots) */ + const totalPages = ref(1) + /** Group of pages in current pagination + * (ex: = ) */ + const currentSlot = computed(() => + Math.ceil(currentPage.value / pagesPerSlot) + ) + /** Items of current page */ + const items = ref([]) + /** Items of current slot */ + const slotItems = ref([]) + /** Last item of current slot */ + const cursor = ref() + /** Cursors of previous slots. (work as stack) */ + const previousCursors = ref([]) + /** Data is being loaded */ + const loading = ref(false) + + /** + * Call list API from server. + * Get (all data of current slot + 1), to verify if there are more data to load in next slot. + * For example, if number of items per page is 20 and pages per slot is 5, take 101 items. + * If 101 items are returned, next slot exists. If not, current slot is the last. + */ + const getList = async () => { + loading.value = true + const { data } = await axios.get(`/api/${toValue(path)}`, { + params: { + take: take * pagesPerSlot + 1, + cursor: cursor.value + } + }) + // When current slot is not the last, + if (data.length > take * pagesPerSlot) { + totalPages.value = currentSlot.value * pagesPerSlot + 1 + slotItems.value = data.slice(0, take * pagesPerSlot) + } + // When current slot is the last, + else { + totalPages.value = + (currentSlot.value - 1) * pagesPerSlot + Math.ceil(data.length / take) + slotItems.value = data + } + loading.value = false + } + + const changePage = async (page: number) => { + const oldSlot = currentSlot.value + currentPage.value = page // updates currentSlot automatically (computed) + if (currentSlot.value > oldSlot) { + previousCursors.value.push(cursor.value) + cursor.value = slotItems.value.at(-1)?.id + await getList() + } else if (currentSlot.value < oldSlot) { + cursor.value = previousCursors.value.pop() + await getList() + } + items.value = slotItems.value.slice( + ((currentPage.value - 1) % pagesPerSlot) * take, + ((currentPage.value - 1) % pagesPerSlot) * take + take + ) + } + + // Load initial data + // Do not use await here, because it will block the UI (top-level await) + getList().then(() => { + items.value = slotItems.value.slice( + (currentPage.value - 1) % pagesPerSlot, + ((currentPage.value - 1) % pagesPerSlot) + take + ) + }) + + return { + items, + totalPages, + changePage, + loading + } +} diff --git a/src/common/composables/dialog.ts b/src/common/composables/dialog.ts new file mode 100644 index 0000000..313ed68 --- /dev/null +++ b/src/common/composables/dialog.ts @@ -0,0 +1,37 @@ +import { ref } from 'vue' + +interface DialogOption { + title: string + content: string + + /* 동의 버튼에 보여질 문구 */ + yes?: string + + /* 거절 버튼에 보여질 문구 */ + no?: string +} + +interface DialogInfo extends DialogOption { + type: 'confirm' | 'success' | 'error' +} + +export const dialogInfo = ref() + +export const open = ref(false) + +export const useDialog = () => { + return { + confirm(option: DialogOption) { + dialogInfo.value = { ...option, type: 'confirm' } + open.value = true + }, + success(option: DialogOption) { + dialogInfo.value = { ...option, type: 'success' } + open.value = true + }, + error(option: DialogOption) { + dialogInfo.value = { ...option, type: 'error' } + open.value = true + } + } +} diff --git a/src/common/composables/graphql.ts b/src/common/composables/graphql.ts new file mode 100644 index 0000000..fae3a7f --- /dev/null +++ b/src/common/composables/graphql.ts @@ -0,0 +1,112 @@ +import type { DocumentNode } from '@apollo/client' +import { useQuery } from '@vue/apollo-composable' +import type { MaybeRef } from 'vue' +import { ref, computed, type Ref } from 'vue' +import { useToast } from './toast' + +/** + * Single item of the list + * @param id: unique identifier of the item + */ +interface Item { + id: unknown +} + +interface Response { + [key: string]: T[] +} + +/** + * @param query GraphQL query + * @param variable GraphQL variables + * @param option Custom options { take: number; pagesPerSlot: number } + */ +export const useListGraphQL = ( + query: DocumentNode, + variable: { [key: string]: MaybeRef }, + option?: { take?: number; pagesPerSlot?: number } +) => { + const take = option?.take ?? 20 + const pagesPerSlot = option?.pagesPerSlot ?? 5 + + const currentPage = ref(1) + /** Total number of pages (increase if there are more data than slots) */ + const totalPages = ref(1) + /** Group of pages in current pagination + * (ex: = ) */ + const currentSlot = computed(() => + Math.ceil(currentPage.value / pagesPerSlot) + ) + /** Items of current page */ + const items = ref([]) as Ref + /** Items of current slot */ + const slotItems = ref([]) as Ref + /** Last item of current slot */ + const cursor = ref(0) + /** Cursors of previous slots. (work as stack) */ + const previousCursors = ref([]) + + const { loading, refetch, onResult } = useQuery>( + query, + { ...variable, take: take * pagesPerSlot + 1 }, + { errorPolicy: 'all', notifyOnNetworkStatusChange: true } + ) + + // When data is fetched, + onResult((res) => { + if (res.errors) { + const toast = useToast() + for (const error of res.errors) { + toast({ type: 'error', message: error.message }) + } + return + } + + for (const key in res.data) { + const data = res.data[key] + + // When current slot is not the last, + if (data.length > take * pagesPerSlot) { + totalPages.value = currentSlot.value * pagesPerSlot + 1 + slotItems.value = data.slice(0, take * pagesPerSlot) + } + // When current slot is the last, + else { + totalPages.value = + (currentSlot.value - 1) * pagesPerSlot + Math.ceil(data.length / take) + slotItems.value = data + } + } + + // Update items of current page + items.value = slotItems.value.slice( + ((currentPage.value - 1) % pagesPerSlot) * take, + ((currentPage.value - 1) % pagesPerSlot) * take + take + ) + }) + + const changePage = async (page: number) => { + const oldSlot = currentSlot.value + currentPage.value = page // updates currentSlot automatically (computed) + if (currentSlot.value > oldSlot) { + previousCursors.value.push(cursor.value) + cursor.value = Number(slotItems.value.at(-1)?.id) + await refetch({ cursor: cursor.value || null }) + } else if (currentSlot.value < oldSlot) { + cursor.value = Number(previousCursors.value.pop()) + await refetch({ cursor: cursor.value || null }) + } else { + items.value = slotItems.value.slice( + ((currentPage.value - 1) % pagesPerSlot) * take, + ((currentPage.value - 1) % pagesPerSlot) * take + take + ) + } + } + + return { + items, + totalPages, + changePage, + loading + } +} diff --git a/src/common/composables/toast.ts b/src/common/composables/toast.ts new file mode 100644 index 0000000..04dd5cb --- /dev/null +++ b/src/common/composables/toast.ts @@ -0,0 +1,17 @@ +import { createEventHook } from '@vueuse/core' + +export interface ToastOption { + message: string + type?: 'info' | 'success' | 'warn' | 'error' + duration?: number +} + +const { trigger, on } = createEventHook() + +export const onTrigger = on + +export const useToast = () => { + return (option: ToastOption) => { + trigger(option) + } +} diff --git a/src/common/layouts/admin.vue b/src/common/layouts/admin.vue new file mode 100644 index 0000000..82d16eb --- /dev/null +++ b/src/common/layouts/admin.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/common/layouts/default.vue b/src/common/layouts/default.vue new file mode 100644 index 0000000..ce41319 --- /dev/null +++ b/src/common/layouts/default.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/common/layouts/empty.vue b/src/common/layouts/empty.vue new file mode 100644 index 0000000..f21a49f --- /dev/null +++ b/src/common/layouts/empty.vue @@ -0,0 +1 @@ + diff --git a/src/common/store/auth.ts b/src/common/store/auth.ts new file mode 100644 index 0000000..61bbaf9 --- /dev/null +++ b/src/common/store/auth.ts @@ -0,0 +1,53 @@ +import { useToast } from '@/common/composables/toast' +import { useStorage } from '@vueuse/core' +import axios from 'axios' +import { defineStore } from 'pinia' + +const openToast = useToast() + +export const useAuthStore = defineStore('auth', { + state: () => ({ + isLoggedIn: useStorage('isLoggedIn', false) + }), + actions: { + async login(username: string, password: string) { + try { + const res = await axios.post( + '/api/auth/login', + { username, password }, + { withCredentials: true } // for local development + ) + axios.defaults.headers.common.authorization = res.headers.authorization + this.isLoggedIn = true + openToast({ message: 'Login succeed!', type: 'success' }) + } catch (e) { + openToast({ message: 'Login failed!', type: 'error' }) + throw new Error('Login failed') + } + }, + + async logout() { + try { + await axios.post('/api/auth/logout') + delete axios.defaults.headers.common.authorization + this.isLoggedIn = false + } catch (e) { + openToast({ message: 'Logout failed!', type: 'error' }) + throw new Error('Logout failed') + } + }, + + async reissue() { + try { + const res = await axios.get('/api/auth/reissue', { + // Send cross-site cookie in development mode + withCredentials: import.meta.env.DEV + }) + axios.defaults.headers.common.authorization = res.headers.authorization + this.isLoggedIn = true + } catch (e) { + this.isLoggedIn = false + } + } + } +}) diff --git a/src/common/store/user.ts b/src/common/store/user.ts new file mode 100644 index 0000000..9a4f107 --- /dev/null +++ b/src/common/store/user.ts @@ -0,0 +1,19 @@ +import axios from 'axios' +import { useQuery } from 'vue-query' + +type Role = 'User' | 'Manager' | 'Admin' | 'SuperAdmin' + +interface User { + username: string + role: Role + email: string + lastLogin: string + updateTime: string + userProfile: unknown +} + +export const useUserQuery = () => { + return useQuery('user', async () => + axios.get('/api/user').then((res) => res.data) + ) +} diff --git a/src/common/styles/style.css b/src/common/styles/style.css new file mode 100644 index 0000000..eed8706 --- /dev/null +++ b/src/common/styles/style.css @@ -0,0 +1,32 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html { + @apply text-text; + } + + html, + body { + @apply h-full; + } + + body { + font-size: inherit; + font-family: inherit; + line-height: inherit; + } + + #app { + @apply flex h-full flex-col; + } +} + +#nprogress { + @apply pointer-events-none; +} + +#nprogress .bar { + @apply bg-blue fixed left-0 top-0 h-[2px] w-full; +} diff --git a/src/histoire.css b/src/histoire.css new file mode 100644 index 0000000..3143827 --- /dev/null +++ b/src/histoire.css @@ -0,0 +1,6 @@ +@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono&family=Manrope:wght@400;700&family=Noto+Sans+KR:wght@400;700&display=swap'); + +/* sidebar source */ +.__histoire-code code { + font-family: 'JetBrains Mono', monospace; +} diff --git a/src/histoire.setup.ts b/src/histoire.setup.ts new file mode 100644 index 0000000..023be5d --- /dev/null +++ b/src/histoire.setup.ts @@ -0,0 +1,5 @@ +import './common/styles/style.css' +import './histoire.css' + +/* trigger script */ +console.log('Histoire theme loaded.') diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..525138b --- /dev/null +++ b/src/main.ts @@ -0,0 +1,99 @@ +import { useAuthStore } from '@/common/store/auth' +import { + ApolloClient, + ApolloLink, + from, + HttpLink, + InMemoryCache +} from '@apollo/client/core' +import { onError } from '@apollo/client/link/error' +import { ApolloClients } from '@vue/apollo-composable' +import axios from 'axios' +import axiosRetry from 'axios-retry' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import { createPinia } from 'pinia' +import { setupLayouts } from 'virtual:generated-layouts' +import generatedRoutes from 'virtual:generated-pages' +import { createApp, provide, h } from 'vue' +import VueDOMPurifyHTML from 'vue-dompurify-html' +import { VueQueryPlugin } from 'vue-query' +import { createRouter, createWebHistory } from 'vue-router' +import App from './App.vue' +import './common/styles/style.css' + +// Retry 401 failed request to reissue access token +// since access token expiresin short time. +// Refresh token is stored in cookie, which expires after long time. +axiosRetry(axios, { + retries: 1, + retryCondition: (error) => + error.response?.status === 401 && error.config?.url !== '/api/auth/reissue', + onRetry: async () => { + await useAuthStore().reissue() + } +}) + +// Retry 401 failed request to reissue access token +// just like axiosRetry, but using ApolloLink for GraphQL +const errorLink = onError(({ graphQLErrors, operation, forward }) => { + if (graphQLErrors) + graphQLErrors.forEach(({ message }) => { + if (message.includes('Unauthorized')) { + useAuthStore() + .reissue() + .then(() => { + operation.setContext(({ headers }: { headers: object }) => ({ + headers: { + ...headers, + authorization: axios.defaults.headers.common.authorization + } + })) + forward(operation) + }) + } + }) + // TODO: if retry fails, redirect to login page +}) + +const authLink = new ApolloLink((operation, forward) => { + operation.setContext(({ headers }: { headers: object }) => ({ + headers: { + ...headers, + authorization: axios.defaults.headers.common.authorization + } + })) + return forward(operation) +}) + +const link = from([errorLink, authLink, new HttpLink({ uri: '/graphql' })]) +const cache = new InMemoryCache() +const apolloClient = new ApolloClient({ link, cache }) + +const app = createApp({ + setup() { + provide(ApolloClients, { + default: apolloClient + }) + }, + render: () => h(App) +}) + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: setupLayouts(generatedRoutes) +}) + +NProgress.configure({ showSpinner: false }) +router.beforeEach(() => { + NProgress.start() +}) +router.afterEach(() => { + NProgress.done() +}) + +app.use(router) +app.use(createPinia()) +app.use(VueDOMPurifyHTML) +app.use(VueQueryPlugin) +app.mount('#app') diff --git a/src/user/contest/components/Notice.vue b/src/user/contest/components/Notice.vue new file mode 100644 index 0000000..64e14e8 --- /dev/null +++ b/src/user/contest/components/Notice.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/user/contest/components/Problem.vue b/src/user/contest/components/Problem.vue new file mode 100644 index 0000000..65df17a --- /dev/null +++ b/src/user/contest/components/Problem.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/user/contest/components/Ranking.vue b/src/user/contest/components/Ranking.vue new file mode 100644 index 0000000..84f8ac2 --- /dev/null +++ b/src/user/contest/components/Ranking.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/user/contest/components/Top.vue b/src/user/contest/components/Top.vue new file mode 100644 index 0000000..63dd258 --- /dev/null +++ b/src/user/contest/components/Top.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/user/contest/pages/[id].vue b/src/user/contest/pages/[id].vue new file mode 100644 index 0000000..c904fb0 --- /dev/null +++ b/src/user/contest/pages/[id].vue @@ -0,0 +1,58 @@ + + + diff --git a/src/user/contest/pages/index.vue b/src/user/contest/pages/index.vue new file mode 100644 index 0000000..e19bd23 --- /dev/null +++ b/src/user/contest/pages/index.vue @@ -0,0 +1,125 @@ + + + + + +meta: + title: 🏆 SKKU Coding Platform + coloredTitle: Contests + subtitle: Compete with schoolmates & win the prizes! + diff --git a/src/user/group/components/Contest.vue b/src/user/group/components/Contest.vue new file mode 100644 index 0000000..ae0b6b9 --- /dev/null +++ b/src/user/group/components/Contest.vue @@ -0,0 +1,159 @@ + + + diff --git a/src/user/group/components/GroupListSection.vue b/src/user/group/components/GroupListSection.vue new file mode 100644 index 0000000..1736864 --- /dev/null +++ b/src/user/group/components/GroupListSection.vue @@ -0,0 +1,273 @@ + + + diff --git a/src/user/group/components/Member.vue b/src/user/group/components/Member.vue new file mode 100644 index 0000000..df3c256 --- /dev/null +++ b/src/user/group/components/Member.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/user/group/components/NameList.vue b/src/user/group/components/NameList.vue new file mode 100644 index 0000000..fb6d5a0 --- /dev/null +++ b/src/user/group/components/NameList.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/user/group/components/Notice.vue b/src/user/group/components/Notice.vue new file mode 100644 index 0000000..9a306e3 --- /dev/null +++ b/src/user/group/components/Notice.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/user/group/components/Problem.vue b/src/user/group/components/Problem.vue new file mode 100644 index 0000000..fc6647b --- /dev/null +++ b/src/user/group/components/Problem.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/user/group/components/Profile.vue b/src/user/group/components/Profile.vue new file mode 100644 index 0000000..ae66138 --- /dev/null +++ b/src/user/group/components/Profile.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/user/group/components/Workbook.vue b/src/user/group/components/Workbook.vue new file mode 100644 index 0000000..cc079a9 --- /dev/null +++ b/src/user/group/components/Workbook.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/user/group/pages/[id].vue b/src/user/group/pages/[id].vue new file mode 100644 index 0000000..21b2596 --- /dev/null +++ b/src/user/group/pages/[id].vue @@ -0,0 +1,71 @@ + + + diff --git a/src/user/group/pages/index.vue b/src/user/group/pages/index.vue new file mode 100644 index 0000000..bfd7e2a --- /dev/null +++ b/src/user/group/pages/index.vue @@ -0,0 +1,74 @@ + + + diff --git a/src/user/home/components/Carousel.story.vue b/src/user/home/components/Carousel.story.vue new file mode 100644 index 0000000..4d1d4f5 --- /dev/null +++ b/src/user/home/components/Carousel.story.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/user/home/components/Carousel.vue b/src/user/home/components/Carousel.vue new file mode 100644 index 0000000..0ac4f77 --- /dev/null +++ b/src/user/home/components/Carousel.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/user/home/components/ContestItem.vue b/src/user/home/components/ContestItem.vue new file mode 100644 index 0000000..26d574e --- /dev/null +++ b/src/user/home/components/ContestItem.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/user/home/pages/404.webp b/src/user/home/pages/404.webp new file mode 100644 index 0000000000000000000000000000000000000000..18a97ec72e8a71b939adc9498ff3363cf5d4ce3c GIT binary patch literal 18624 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 XhKkxKM(nU8tk +import img from './404.webp' + + + diff --git a/src/user/home/pages/index.vue b/src/user/home/pages/index.vue new file mode 100644 index 0000000..abdac64 --- /dev/null +++ b/src/user/home/pages/index.vue @@ -0,0 +1,130 @@ + + + + + +meta: + home: true + diff --git a/src/user/notice/composables/notice.ts b/src/user/notice/composables/notice.ts new file mode 100644 index 0000000..5133198 --- /dev/null +++ b/src/user/notice/composables/notice.ts @@ -0,0 +1,92 @@ +import { useDateFormat } from '@vueuse/core' +import axios from 'axios' +import { ref, markRaw, type Component } from 'vue' +import { useRouter } from 'vue-router' +import IconAngleDown from '~icons/fa6-solid/angle-down' +import IconAngleUp from '~icons/fa6-solid/angle-up' + +export interface Field { + key: string + width?: string + label?: string +} + +export interface NoticeItem { + icon?: Component + name?: 'prev' | 'next' + id: number + title: string + createTime?: string + updateTime?: string + content?: string + createdBy?: string +} + +export const useNotice = () => { + const notices = ref([]) + const getNoticeList = async (numberOfPages: number) => { + const res = await axios.get('/api/notice', { + params: + numberOfPages == 1 + ? { take: 10 } + : { take: 10, cursor: 10 * (numberOfPages - 1) } + }) + notices.value = res.data + notices.value.map((notice) => { + notice.createTime = useDateFormat(notice.createTime, 'YYYY-MM-DD').value + }) + } + // TODO: number of pages api로 받아오기 + const numberOfPages = 2 + const currentNotice = ref() + const previousNotice = ref() + const nextNotice = ref() + const adjacentNotices = ref([]) + + const router = useRouter() + + const goDetail = async ({ id }: NoticeItem) => { + await router.push({ + name: 'notice-id', + params: { id } + }) + } + + const getNotice = async (id: number) => { + const res = await axios.get('/api/notice/' + id) + + res.data.current.createTime = useDateFormat( + res.data.current.createTime, + 'YYYY-MM-DD' + ).value + res.data.current.updateTime = useDateFormat( + res.data.current.updateTime, + 'YYYY-MM-DD' + ).value + currentNotice.value = res.data.current + previousNotice.value = res.data.prev + nextNotice.value = res.data.next + adjacentNotices.value = [] + + if (previousNotice.value) { + previousNotice.value.icon = markRaw(IconAngleUp) + previousNotice.value.name = 'prev' + adjacentNotices.value.push(markRaw(previousNotice.value)) + } + if (nextNotice.value) { + nextNotice.value.icon = markRaw(IconAngleDown) + nextNotice.value.name = 'next' + adjacentNotices.value.push(markRaw(nextNotice.value)) + } + } + + return { + notices, + numberOfPages, + currentNotice, + adjacentNotices, + getNoticeList, + goDetail, + getNotice + } +} diff --git a/src/user/notice/pages/[id].vue b/src/user/notice/pages/[id].vue new file mode 100644 index 0000000..d1009eb --- /dev/null +++ b/src/user/notice/pages/[id].vue @@ -0,0 +1,88 @@ + + + diff --git a/src/user/notice/pages/index.vue b/src/user/notice/pages/index.vue new file mode 100644 index 0000000..939717a --- /dev/null +++ b/src/user/notice/pages/index.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/user/problem/components/Clarification.story.vue b/src/user/problem/components/Clarification.story.vue new file mode 100644 index 0000000..a5e7e33 --- /dev/null +++ b/src/user/problem/components/Clarification.story.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/user/problem/components/Clarification.vue b/src/user/problem/components/Clarification.vue new file mode 100644 index 0000000..1df28cc --- /dev/null +++ b/src/user/problem/components/Clarification.vue @@ -0,0 +1,131 @@ + + + diff --git a/src/user/problem/components/Header.vue b/src/user/problem/components/Header.vue new file mode 100644 index 0000000..6a84cd9 --- /dev/null +++ b/src/user/problem/components/Header.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/user/problem/components/Navigator.vue b/src/user/problem/components/Navigator.vue new file mode 100644 index 0000000..d390997 --- /dev/null +++ b/src/user/problem/components/Navigator.vue @@ -0,0 +1,223 @@ + + + diff --git a/src/user/problem/components/SubmissionDetail.vue b/src/user/problem/components/SubmissionDetail.vue new file mode 100644 index 0000000..2917f9c --- /dev/null +++ b/src/user/problem/components/SubmissionDetail.vue @@ -0,0 +1,159 @@ + + + diff --git a/src/user/problem/components/SubmissionList.vue b/src/user/problem/components/SubmissionList.vue new file mode 100644 index 0000000..bc93825 --- /dev/null +++ b/src/user/problem/components/SubmissionList.vue @@ -0,0 +1,159 @@ + + + diff --git a/src/user/problem/pages/[id].vue b/src/user/problem/pages/[id].vue new file mode 100644 index 0000000..6d7f363 --- /dev/null +++ b/src/user/problem/pages/[id].vue @@ -0,0 +1,19 @@ + + + + + +meta: + layout: empty + diff --git a/src/user/problem/pages/[id]/index.vue b/src/user/problem/pages/[id]/index.vue new file mode 100644 index 0000000..b043c4c --- /dev/null +++ b/src/user/problem/pages/[id]/index.vue @@ -0,0 +1,180 @@ + + + diff --git a/src/user/problem/pages/[id]/standings.vue b/src/user/problem/pages/[id]/standings.vue new file mode 100644 index 0000000..9969900 --- /dev/null +++ b/src/user/problem/pages/[id]/standings.vue @@ -0,0 +1,3 @@ + diff --git a/src/user/problem/pages/[id]/submissions.vue b/src/user/problem/pages/[id]/submissions.vue new file mode 100644 index 0000000..a18540f --- /dev/null +++ b/src/user/problem/pages/[id]/submissions.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/user/problem/pages/index.vue b/src/user/problem/pages/index.vue new file mode 100644 index 0000000..2221af7 --- /dev/null +++ b/src/user/problem/pages/index.vue @@ -0,0 +1,144 @@ + + + + + +meta: + title: Problem + subtitle: Find problems with problem set and filters, and solve it! + diff --git a/src/user/problem/store/problem.ts b/src/user/problem/store/problem.ts new file mode 100644 index 0000000..36543b6 --- /dev/null +++ b/src/user/problem/store/problem.ts @@ -0,0 +1,54 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import type { Language } from '../types' + +export interface Problem { + id: string + title: string + description: string + inputDescription: string + outputDescription: string + hint: string + languages: Language[] + timeLimit: number + memoryLimit: number + difficulty: string + source: string + inputExamples: string[] + outputExamples: string[] +} + +type ProblemType = 'problem' | 'contest' | 'workbook' + +export const useProblemStore = defineStore('problem', () => { + const language = ref() + const code = ref('') + const type = ref() + const problem = ref({ + id: '', + title: '', + description: '', + inputDescription: '', + outputDescription: '', + hint: '', + languages: [], + timeLimit: 0, + memoryLimit: 0, + difficulty: '', + source: '', + inputExamples: [], + outputExamples: [] + }) + + const reset = () => { + code.value = '' + } + + return { + code, + language, + type, + problem, + reset + } +}) diff --git a/src/user/problem/types.ts b/src/user/problem/types.ts new file mode 100644 index 0000000..97f594a --- /dev/null +++ b/src/user/problem/types.ts @@ -0,0 +1,2 @@ +export type Language = 'C' | 'Cpp' | 'Java' | 'Python3' +export type Level = 'Level1' | 'Level2' | 'Level3' | 'Level4' | 'Level5' diff --git a/src/user/workbook/components/WorkbookTitle.vue b/src/user/workbook/components/WorkbookTitle.vue new file mode 100644 index 0000000..70b9b1e --- /dev/null +++ b/src/user/workbook/components/WorkbookTitle.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/user/workbook/composables/workbook.ts b/src/user/workbook/composables/workbook.ts new file mode 100644 index 0000000..75383a5 --- /dev/null +++ b/src/user/workbook/composables/workbook.ts @@ -0,0 +1,53 @@ +import axios from 'axios' +import { ref } from 'vue' + +export interface Workbook { + id: number + title: string + description: string + updateTime: string + problems: { + id: string + title: string + tags: string[] + result: string + }[] +} + +export const useWorkbook = () => { + // TODO: workbookList에서 마지막 item 있는지 판별하기 + const containLastItem = ref(false) + const workbookList = ref([]) + const workbook = ref() + + const getWorkbooks = async () => { + const res = await axios.get('/api/workbook', { params: { take: 4 } }) + if (res.data.length < 4) containLastItem.value = true + workbookList.value = res.data + } + + const getMoreWorkbooks = async (take: number) => { + const res = await axios.get('/api/workbook', { + params: { + cursor: workbookList.value[workbookList.value.length - 1].id, + take + } + }) + if (res.data.length < take) containLastItem.value = true + workbookList.value.push(...res.data) + } + + const getWorkbook = async (id: number) => { + const res = await axios.get('/api/workbook/' + id) + workbook.value = res.data + } + + return { + containLastItem, + workbook, + workbookList, + getWorkbooks, + getMoreWorkbooks, + getWorkbook + } +} diff --git a/src/user/workbook/pages/[id].vue b/src/user/workbook/pages/[id].vue new file mode 100644 index 0000000..f0163f9 --- /dev/null +++ b/src/user/workbook/pages/[id].vue @@ -0,0 +1,76 @@ + + + diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..f66c92a --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,89 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import forms from '@tailwindcss/forms' +import typography from '@tailwindcss/typography' +import type { Config } from 'tailwindcss' +import colors from 'tailwindcss/colors' +import defaultTheme from 'tailwindcss/defaultTheme' + +export default { + content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], + theme: { + colors: { + white: colors.white, + black: colors.black, + transparent: colors.transparent, + current: colors.current, + default: '#212529', + yellow: '#f3ec53', + green: { + DEFAULT: '#8dc63f', + dark: '#2d4e00' + }, + gray: { + light: '#f1f3f6', + DEFAULT: '#cdcdcd', + dark: '#7c7a7b' + }, + blue: { + DEFAULT: '#2279fd', + dark: '#002d71' + }, + red: '#ff6663', + text: { + title: '#7c7a7b', + subtitle: '#173747', + DEFAULT: '#212529' + }, + slate: { + 50: '#eceff0', + 100: '#dadfe2', + 200: '#b5bfc4', + 300: '#8f9fa7', + 400: '#6a7f89', + 500: '#455f6c', + 600: '#2e4b59', + 700: '#173747', // Basis (Problem.vue) + 800: '#122c39', + 900: '#0e212b' + }, + level: { + 1: '#CC99C9', + 2: '#9EC1CF', + 3: '#A1F2C2', + 4: '#B8FF81', + 5: '#F3EC53', + 6: '#FEB144', + 7: '#FF6663' + } + }, + extend: { + fontFamily: { + sans: ['Manrope', 'Noto Sans KR', ...defaultTheme.fontFamily.sans], + mono: ['JetBrains Mono', ...defaultTheme.fontFamily.mono] + }, + spacing: { + page: '156px', + 'page-sm': '80px' + }, + typography: { + DEFAULT: { + css: { + 'code::before': { + content: '' + }, + 'code::after': { + content: '' + }, + 'blockquote p:last-of-type::after': { + content: '' + }, + 'blockquote p:first-of-type::before': { + content: '' + } + } + } + } + } + }, + plugins: [forms, typography] +} satisfies Config diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3bb6ea9 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "compilerOptions": { + // Replace moduleResolution "bundler" with "node" + // since some libraries don't support it yet (have to explicilty export types) + "moduleResolution": "node", + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..739951f --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "include": ["vite.config.ts"], + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "Bundler" + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..4e16eba --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,56 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import vue from '@vitejs/plugin-vue' +import icons from 'unplugin-icons/vite' +import { fileURLToPath, URL } from 'url' +import { defineConfig } from 'vite' +import checker from 'vite-plugin-checker' +import pages from 'vite-plugin-pages' +import layouts from 'vite-plugin-vue-layouts' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + icons({ autoInstall: true }), + pages({ + pagesDir: [ + { dir: 'src/user/home/pages', baseRoute: '' }, + { dir: 'src/user/notice/pages', baseRoute: 'notice' }, + { dir: 'src/user/problem/pages', baseRoute: 'problem' }, + { dir: 'src/user/contest/pages', baseRoute: 'contest' }, + { dir: 'src/user/group/pages', baseRoute: 'group' }, + { dir: 'src/user/workbook/pages', baseRoute: 'workbook' }, + { dir: 'src/admin/pages', baseRoute: 'admin' } + ] + }), + layouts({ + layoutsDirs: 'src/common/layouts' + }), + checker({ + eslint: { lintCommand: 'eslint "./src/**/*.{ts,vue}"' }, + vueTsc: true, + enableBuild: false + }) + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server: { + host: true, + proxy: { + '/api': { + target: 'https://dev.codedang.com', + changeOrigin: true + }, + '/graphql': { + target: 'https://dev.codedang.com', + changeOrigin: true + } + } + }, + optimizeDeps: { + exclude: ['@codemirror/state'] + } +})