diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 0000000..4653564
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,130 @@
+kind: pipeline
+type: docker
+name: isle-website
+
+steps:
+ # 恢复缓存
+ - name: restore-cache
+ pull: if-not-exists # 镜像不存在则拉取,避免多次下载
+ image: drillster/drone-volume-cache
+ volumes:
+ - name: cache
+ path: /cache
+ settings:
+ restore: true
+ mount:
+ - ./node_modules
+
+ # 安装依赖
+ - name: install
+ pull: if-not-exists
+ image: node:16.17.1
+ commands:
+ - echo "安装依赖"
+ - echo "全局安装PNPM"
+ - npm config set registry https://registry.npmmirror.com/
+ - npm install -g pnpm
+ - pnpm -v
+ - echo "PNPM安装完成"
+ - pnpm config get registry
+ - pnpm config set registry https://registry.npmmirror.com/
+ # - pnpm config set registry http://registry.npm.taobao.org/
+ # - pnpm config set registry https://registry.npmjs.org
+ - pnpm install --no-frozen-lockfile
+
+ # 构建
+ - name: build
+ pull: if-not-exists
+ image: node:16.17.1
+ commands:
+ - echo "开始构建"
+ - npm config set registry https://registry.npmmirror.com/
+ - npm install -g pnpm
+ - pnpm docs:build
+ - ls
+
+ # 更新缓存
+ - name: rebuild-cache
+ pull: if-not-exists
+ image: drillster/drone-volume-cache
+ volumes:
+ - name: cache
+ path: /cache
+ settings:
+ rebuild: true
+ mount:
+ - ./node_modules
+
+ # 上传
+ - name: upload
+ image: appleboy/drone-scp
+ settings:
+ host:
+ from_secret: ssh_host
+ username:
+ from_secret: ssh_username
+ password:
+ from_secret: ssh_password
+ target: /srv/nginx/html/isle/website
+ source: ./.vitepress/dist/*
+ strip_components: 1
+
+ - name: deploy
+ pull: if-not-exists
+ image: appleboy/drone-ssh
+ settings:
+ host:
+ from_secret: ssh_host
+ username:
+ from_secret: ssh_username
+ password:
+ from_secret: ssh_password
+ port: 22
+ script:
+ - echo "SSH已连接,开始部署"
+ - cd /srv/nginx
+ - pwd
+ - docker restart nginx
+ # - cp -r /drone/src/dist/* web
+ - echo "部署完成"
+
+ # 通知
+ - name: notify
+ pull: if-not-exists
+ image: drillster/drone-email
+ settings:
+ recipients_only: true # 只发送给指定邮件收件人,不默认发送给流水线创建人
+ host: smtp.feishu.cn # SMTP服务器 例如 smtp.qq.com
+ port: 465 # SMTP服务端口 例如QQ邮箱端口465
+ username: 句末科技研发部
+ password: Ljc15090683283
+ from: develop@sentenceend.com
+ recipients:
+ - lijianchao@sentenceend.com
+ - biankunchao@sentenceend.com
+ subject: "DroneCI构建通知!"
+ body: |
+ DroneCI构建完成!这是一条通知信息,请勿回复!
+
+ 详细信息:
+ - 仓库: ${DRONE_REPO}
+ - 分支: ${DRONE_BRANCH}
+ - 提交SHA值: ${DRONE_COMMIT}
+ - 提交作者: ${DRONE_COMMIT_AUTHOR}
+ - 提交信息: ${DRONE_COMMIT_MESSAGE}
+ - 触发事件: ${DRONE_BUILD_EVENT}
+ - 构建状态: ${DRONE_BUILD_STATUS}
+ - 开始时间: ${DRONE_BUILD_STARTED}
+ - 结束时间: ${DRONE_BUILD_FINISHED}
+ success:
+ subject: "DroneCI构建成功"
+ message: "构建成功!"
+ failure:
+ subject: "DroneCI构建失败"
+ message: "构建失败,请查看日志以了解详细信息!"
+
+trigger:
+ branch:
+ - main
+ event:
+ - push
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e85aa22
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,32 @@
+# mac
+.DS_Store
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+/dist
+/.vitepress/dist
+/.vitepress/cache
+/.vitepress/.temp
+
+# misc
+.DS_Store
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# env files
+.env
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
\ No newline at end of file
diff --git a/.vitepress/config.js b/.vitepress/config.js
new file mode 100644
index 0000000..f056495
--- /dev/null
+++ b/.vitepress/config.js
@@ -0,0 +1,87 @@
+/*
+ * @LastEditTime: 2023-11-01 14:10:24
+ * @Description: ...
+ * @Date: 2023-09-19 19:04:57
+ * @Author: isboyjc
+ * @LastEditors: isboyjc
+ */
+import { defineConfig } from 'vitepress'
+import {logo, description, title, me, keywords, ico, site, icp, publicSecurityFiling, mail} from './meta'
+import {icons} from "./icon"
+
+// https://vitepress.dev/reference/site-config
+export default defineConfig({
+ title,
+ description,
+ locales: {
+ root: { label: '简体中文', lang: 'zh-CN' },
+ },
+ markdown: {
+ lineNumbers: true,
+ },
+ head: [
+ ['meta', { name: 'referrer', content: 'no-referrer-when-downgrade' }],
+ ['meta', { name: 'keywords', content: keywords }],
+ ['meta', { name: 'author', content: me.name }],
+ ['meta', { name: 'application-name', content: title }],
+ ['meta', { name: 'apple-mobile-web-app-title', content: title }],
+ ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'default' }],
+
+ ['link', { rel: 'shortcut icon', href: ico }],
+ ['link', { rel: 'icon', type: 'image/x-icon', href: ico }],
+ // ['link', { rel: 'mask-icon', href: '.svg', color: '#06f' }],
+ // ['meta', { name: 'theme-color', content: '#06f' }],
+
+ // webfont
+ ['link', { rel: 'dns-prefetch', href: 'https://fonts.googleapis.com' }],
+ ['link', { rel: 'dns-prefetch', href: 'https://fonts.gstatic.com' }],
+ ['link', { rel: 'preconnect', crossorigin: 'anonymous', href: 'https://fonts.googleapis.com' }],
+ ['link', { rel: 'preconnect', crossorigin: 'anonymous', href: 'https://fonts.gstatic.com' }],
+
+ // og
+ ['meta', { property: 'og:type', content: 'website' }],
+ ['meta', { property: 'og:description', content: description }],
+ ['meta', { property: 'og:url', content: site }],
+ ['meta', { property: 'og:locale', content: 'zh_CN' }],
+ ],
+ themeConfig: {
+ logo,
+ outline: 'deep',
+ outlineTitle: '目录...',
+ returnToTopLabel: '返回顶部',
+ darkModeSwitchLabel: '模式',
+ sidebarMenuLabel: '归档',
+ lastUpdatedText:"最后更新时间",
+ docFooter: {
+ prev: '上一页',
+ next: '下一页',
+ },
+
+ nav: [
+ // { text: '首页', link: '/' },
+ { text: '关于我们', link: '/about' },
+ { text: '岛屿文档', link: '/docs' },
+ { text: '在线支持', link: '/support' }
+ ],
+
+ // sidebar: [
+ // {
+ // text: 'Examples',
+ // items: [
+ // { text: 'Markdown Examples', link: '/markdown-examples' },
+ // { text: 'Runtime API Examples', link: '/api-examples' }
+ // ]
+ // }
+ // ],
+ socialLinks: [
+ { icon: icons.mail, link: `Mailto:${mail}` }
+ ],
+
+ footer: {
+ message: `
+
京公网安备 ${publicSecurityFiling}号
+ ${icp}`,
+ copyright: `© 2023-${new Date().getFullYear()} ${title}`
+ },
+ }
+})
diff --git a/.vitepress/icon.js b/.vitepress/icon.js
new file mode 100644
index 0000000..babc2ca
--- /dev/null
+++ b/.vitepress/icon.js
@@ -0,0 +1,29 @@
+/*
+ * @LastEditTime: 2023-09-19 20:55:48
+ * @Description: ...
+ * @Date: 2023-09-19 20:53:48
+ * @Author: isboyjc
+ * @LastEditors: isboyjc
+ */
+export const icons = {
+ mail: {
+ svg: ``
+ },
+ github: {
+ svg: ``
+ },
+ tg: {
+ svg: ``
+ },
+ bilibili: {
+ svg: ``,
+ },
+ juejin: {
+ svg: ``
+ },
+ rss: {
+ svg: '',
+ }
+}
\ No newline at end of file
diff --git a/.vitepress/meta.js b/.vitepress/meta.js
new file mode 100644
index 0000000..9edd14d
--- /dev/null
+++ b/.vitepress/meta.js
@@ -0,0 +1,33 @@
+/*
+ * @LastEditTime: 2023-11-15 18:20:43
+ * @Description: ...
+ * @Date: 2023-06-26 00:39:07
+ * @Author: isboyjc
+ * @LastEditors: isboyjc
+ */
+import { version, author, keywords as ks, description as desc } from '../package.json'
+
+// base
+export const title = 'ISLENOTE 岛屿笔记'
+export const site = 'https://sentenceend.com/'
+export const logo = '/img/site/logo_blue.png'
+export const ico = '/img/site/logo_blue.png'
+export const keywords = ks.join("、")
+export const description = "记录灵感,编排灵感"
+export const icp = "京ICP备2023022756号-2"
+export const publicSecurityFiling = "11011402053556"
+export const mail = "islenote@sentenceend.com"
+export const me = {
+ avatar: '/img/me/avatar.jpeg',
+ name: author,
+ desc: '不正经的前端,很正经的摄影!',
+ wx: '/img/me/wx.jpeg',
+ github: 'https://github.com/isboyjc',
+ twitter: 'https://twitter.com/isboyjc',
+ juejin: 'https://juejin.cn/user/2999123452373735',
+}
+
+// link
+
+// version
+export const docsVersion = version
\ No newline at end of file
diff --git a/.vitepress/theme/index.js b/.vitepress/theme/index.js
new file mode 100644
index 0000000..7dc6244
--- /dev/null
+++ b/.vitepress/theme/index.js
@@ -0,0 +1,18 @@
+// https://vitepress.dev/guide/custom-theme
+import { h } from 'vue'
+import Theme from 'vitepress/theme'
+
+import './styles/vars.css'
+import './styles/main.css'
+
+export default {
+ extends: Theme,
+ Layout: () => {
+ return h(Theme.Layout, null, {
+ // https://vitepress.dev/guide/extending-default-theme#layout-slots
+ })
+ },
+ enhanceApp({ app, router, siteData }) {
+ // ...
+ }
+}
diff --git a/.vitepress/theme/styles/main.css b/.vitepress/theme/styles/main.css
new file mode 100644
index 0000000..7a12620
--- /dev/null
+++ b/.vitepress/theme/styles/main.css
@@ -0,0 +1,3 @@
+.VPButton.brand{
+ color: rgba(255, 255, 245, 0.86)!important;
+}
\ No newline at end of file
diff --git a/.vitepress/theme/styles/vars.css b/.vitepress/theme/styles/vars.css
new file mode 100644
index 0000000..96e6c1a
--- /dev/null
+++ b/.vitepress/theme/styles/vars.css
@@ -0,0 +1,93 @@
+/**
+ * Colors
+ * -------------------------------------------------------------------------- */
+
+ :root {
+ --vp-c-accent: #9bbaff;
+ --vp-c-brand: #165dff;
+ --vp-c-brand-dark: #165dff;
+ --vp-c-text-code: #5d6f5d;
+ /* --vp-code-block-bg: rgba(125, 125, 125, 0.04); */
+ --vp-c-disabled-bg: rgba(125, 125, 125, 0.2);
+ /* fix contrast on gray cards: used by --vp-c-text-2 */
+ --vp-c-brand-light: #3774ff;
+ --vp-c-text-light-2: rgba(56 56 56 / 70%);
+ --cho-code-block-bg: rgba(125, 125, 125, 0.04);
+ --vp-c-indigo-1: #598bff;
+ --vp-c-indigo-2: #598bff;
+ --vp-c-indigo-3: #9bbaff;
+}
+
+.dark {
+ --vp-code-block-bg: rgba(0, 0, 0, 0.2);
+ --vp-c-text-code: #c0cec0;
+ /* fix contrast on gray cards: check the same above (this is the default) */
+ --vp-c-text-dark-2: rgba(235, 235, 235, 0.6);
+}
+
+/**
+ * Component: Code
+ * -------------------------------------------------------------------------- */
+
+:root {
+ --vp-code-line-highlight-color: rgba(125, 125, 125, 0.2);
+}
+
+.dark {
+ --vp-code-line-highlight-color: rgba(0, 0, 0, 0.5);
+}
+
+/**
+ * Component: Button
+ * -------------------------------------------------------------------------- */
+
+:root {
+ --vp-button-brand-border: var(--vp-c-brand-light);
+ --vp-button-brand-text: var(--vp-c-text-dark-1);
+ --vp-button-brand-bg: var(--vp-c-brand);
+ --vp-button-brand-hover-border: var(--vp-c-brand-light);
+ --vp-button-brand-hover-text: var(--vp-c-text-dark-1);
+ --vp-button-brand-hover-bg: var(--vp-c-brand-light);
+ --vp-button-brand-active-border: var(--vp-c-brand-light);
+ --vp-button-brand-active-text: var(--vp-c-text-dark-1);
+ --vp-button-brand-active-bg: var(--vp-button-brand-bg);
+}
+
+/**
+ * Component: Home
+ * -------------------------------------------------------------------------- */
+
+:root {
+ --vp-home-hero-name-color: transparent;
+ --vp-home-hero-name-background: -webkit-linear-gradient(
+ 120deg,
+ #9bbaff -80%,
+ #3774ff
+ );
+ --vp-home-hero-image-background-image: linear-gradient(
+ -45deg,
+ #3774ff 30%,
+ #9bbaff80
+ );
+ --vp-home-hero-image-filter: blur(30px);
+}
+
+@media (min-width: 640px) {
+ :root {
+ --vp-home-hero-image-filter: blur(56px);
+ }
+}
+
+@media (min-width: 960px) {
+ :root {
+ --vp-home-hero-image-filter: blur(72px);
+ }
+}
+
+/**
+ * Component: Algolia
+ * -------------------------------------------------------------------------- */
+
+.DocSearch {
+ --docsearch-primary-color: var(--vp-c-brand) !important;
+}
\ No newline at end of file
diff --git a/about.md b/about.md
new file mode 100644
index 0000000..b7d6e0c
--- /dev/null
+++ b/about.md
@@ -0,0 +1,23 @@
+---
+outline: deep
+---
+
+# 关于我们
+
+`ISLENOTE 岛屿笔记` 是 [句末科技](https://sentenceend.com) 旗下的一款工具类产品。
+
+和美式英语中岛屿的 `island` 不同,`isle` 是英式英语中岛屿的意思,`note` 则是笔记,所以岛屿笔记的英文以及域名都是 `islenote`。
+
+你知道什么是岛屿吗?
+
+`岛` 通常是指一个相对较大、有人居住或有明显地理特征的陆地,它被水体(通常是海洋)所包围。
+
+`屿` 通常是指相对较小、不太有人居住或没有明显地理特征的陆地,它也被水体包围,但可能没有像岛那么大或重要。
+
+所以我们的产品取 `岛屿` 二字,当然,它分为两个模块,`屿灵` 用来记录那些琐碎的灵感,`岛记` 用来编排我们记录的这些灵感。So,这也是岛屿笔记 `Slogan` 的来源: 记录灵感,编排灵感!
+
+为了达到良好的用户体验,我们自始至终都在为产品做减法。岛屿专注于记&录,不同与市面上功能繁杂的笔记产品,岛屿的功能很简单,它的核心始终围绕在记录上。`屿灵` 让我们随时随地的记下那些虚无缥缈的灵感片段,我们做的是让用户可以能更便捷的记录下那些碎片化灵感;`岛记` 用最朴实的 `Markdown` 语法去编辑、去连接接我们的想法,你并不能看到一个功能复杂的笔记产品,我们做的只是在还原一款最基础的 `Markdown` 笔记的同时让灵感得以在笔记中填充。
+
+可以再简单一点,其实我们做的只是让数据同步、让碎片连接,仅此而已!
+
+哦,对,我想你应该知道 `Markdown`,否则,,,岛屿将帮不了你!
\ No newline at end of file
diff --git a/default.conf b/default.conf
new file mode 100644
index 0000000..3388375
--- /dev/null
+++ b/default.conf
@@ -0,0 +1,23 @@
+server {
+ listen 80;
+ server_name localhost;
+
+ #charset koi8-r;
+ access_log /var/log/nginx/host.access.log main;
+ error_log /var/log/nginx/error.log error;
+
+ location / {
+ root /usr/share/nginx/html;
+ index index.html index.htm;
+ try_files $uri $uri/ /index.html;
+ }
+
+ #error_page 404 /404.html;
+
+ # redirect server error pages to the static page /50x.html
+ #
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+}
diff --git a/docs.md b/docs.md
new file mode 100644
index 0000000..37da4bd
--- /dev/null
+++ b/docs.md
@@ -0,0 +1,21 @@
+---
+outline: deep
+---
+
+# 文档
+
+
+
+TODO
+
+
\ No newline at end of file
diff --git a/index.md b/index.md
new file mode 100644
index 0000000..c1963c6
--- /dev/null
+++ b/index.md
@@ -0,0 +1,34 @@
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+sidebar: false
+title: 岛屿笔记 | ISLENOTE
+titleTemplate: "记录灵感,编排灵感"
+
+hero:
+ name: "\n屿灵 · 记录灵感"
+ text: " 岛记 · 编排灵感"
+ tagline: " "
+ image:
+ src: /svg/undraw_inspiration_re_ivlv.svg
+ alt: "图片未加载..."
+ actions:
+ - theme: brand
+ text: "立即登录"
+ link: https://baidu.com
+ - theme: alt
+ text: "免费注册"
+ link: https://baidu.com
+
+# features:
+# - title: 创新
+# icon: 💡
+# details: 创新驱动发展,致力于推动产研创新,让体验更好。
+# - title: 生活
+# icon: 🌟
+# details: 凭借先进的技术和持续的创新,不断为生活带来惊喜。
+# - title: 技术
+# icon: 🖥️
+# details: 以创新为动力,以技术为支撑,让生活更加智能化、便捷化。
+---
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..2bfdebb
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "islenote",
+ "version": "1.0.0",
+ "description": "记录灵感,编排灵感",
+ "private": true,
+ "author": "isboyjc",
+ "type": "module",
+ "keywords": [],
+ "devDependencies": {
+ "vitepress": "^1.0.0-rc.14"
+ },
+ "scripts": {
+ "docs:dev": "vitepress dev",
+ "docs:build": "vitepress build",
+ "docs:preview": "vitepress preview"
+ }
+}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..c630717
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,814 @@
+lockfileVersion: 5.3
+
+specifiers:
+ vitepress: ^1.0.0-rc.14
+
+devDependencies:
+ vitepress: 1.0.0-rc.14
+
+packages:
+
+ /@algolia/autocomplete-core/1.9.3_algoliasearch@4.20.0:
+ resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
+ dependencies:
+ '@algolia/autocomplete-plugin-algolia-insights': 1.9.3_algoliasearch@4.20.0
+ '@algolia/autocomplete-shared': 1.9.3_algoliasearch@4.20.0
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+ - search-insights
+ dev: true
+
+ /@algolia/autocomplete-plugin-algolia-insights/1.9.3_algoliasearch@4.20.0:
+ resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
+ peerDependencies:
+ search-insights: '>= 1 < 3'
+ dependencies:
+ '@algolia/autocomplete-shared': 1.9.3_algoliasearch@4.20.0
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+ dev: true
+
+ /@algolia/autocomplete-preset-algolia/1.9.3_algoliasearch@4.20.0:
+ resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+ dependencies:
+ '@algolia/autocomplete-shared': 1.9.3_algoliasearch@4.20.0
+ algoliasearch: 4.20.0
+ dev: true
+
+ /@algolia/autocomplete-shared/1.9.3_algoliasearch@4.20.0:
+ resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+ dependencies:
+ algoliasearch: 4.20.0
+ dev: true
+
+ /@algolia/cache-browser-local-storage/4.20.0:
+ resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==}
+ dependencies:
+ '@algolia/cache-common': 4.20.0
+ dev: true
+
+ /@algolia/cache-common/4.20.0:
+ resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==}
+ dev: true
+
+ /@algolia/cache-in-memory/4.20.0:
+ resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==}
+ dependencies:
+ '@algolia/cache-common': 4.20.0
+ dev: true
+
+ /@algolia/client-account/4.20.0:
+ resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==}
+ dependencies:
+ '@algolia/client-common': 4.20.0
+ '@algolia/client-search': 4.20.0
+ '@algolia/transporter': 4.20.0
+ dev: true
+
+ /@algolia/client-analytics/4.20.0:
+ resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==}
+ dependencies:
+ '@algolia/client-common': 4.20.0
+ '@algolia/client-search': 4.20.0
+ '@algolia/requester-common': 4.20.0
+ '@algolia/transporter': 4.20.0
+ dev: true
+
+ /@algolia/client-common/4.20.0:
+ resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==}
+ dependencies:
+ '@algolia/requester-common': 4.20.0
+ '@algolia/transporter': 4.20.0
+ dev: true
+
+ /@algolia/client-personalization/4.20.0:
+ resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==}
+ dependencies:
+ '@algolia/client-common': 4.20.0
+ '@algolia/requester-common': 4.20.0
+ '@algolia/transporter': 4.20.0
+ dev: true
+
+ /@algolia/client-search/4.20.0:
+ resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==}
+ dependencies:
+ '@algolia/client-common': 4.20.0
+ '@algolia/requester-common': 4.20.0
+ '@algolia/transporter': 4.20.0
+ dev: true
+
+ /@algolia/logger-common/4.20.0:
+ resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==}
+ dev: true
+
+ /@algolia/logger-console/4.20.0:
+ resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==}
+ dependencies:
+ '@algolia/logger-common': 4.20.0
+ dev: true
+
+ /@algolia/requester-browser-xhr/4.20.0:
+ resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==}
+ dependencies:
+ '@algolia/requester-common': 4.20.0
+ dev: true
+
+ /@algolia/requester-common/4.20.0:
+ resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==}
+ dev: true
+
+ /@algolia/requester-node-http/4.20.0:
+ resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==}
+ dependencies:
+ '@algolia/requester-common': 4.20.0
+ dev: true
+
+ /@algolia/transporter/4.20.0:
+ resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==}
+ dependencies:
+ '@algolia/cache-common': 4.20.0
+ '@algolia/logger-common': 4.20.0
+ '@algolia/requester-common': 4.20.0
+ dev: true
+
+ /@babel/parser/7.22.16:
+ resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dev: true
+
+ /@docsearch/css/3.5.2:
+ resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==}
+ dev: true
+
+ /@docsearch/js/3.5.2:
+ resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==}
+ dependencies:
+ '@docsearch/react': 3.5.2
+ preact: 10.17.1
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - '@types/react'
+ - react
+ - react-dom
+ - search-insights
+ dev: true
+
+ /@docsearch/react/3.5.2:
+ resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==}
+ peerDependencies:
+ '@types/react': '>= 16.8.0 < 19.0.0'
+ react: '>= 16.8.0 < 19.0.0'
+ react-dom: '>= 16.8.0 < 19.0.0'
+ search-insights: '>= 1 < 3'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ search-insights:
+ optional: true
+ dependencies:
+ '@algolia/autocomplete-core': 1.9.3_algoliasearch@4.20.0
+ '@algolia/autocomplete-preset-algolia': 1.9.3_algoliasearch@4.20.0
+ '@docsearch/css': 3.5.2
+ algoliasearch: 4.20.0
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ dev: true
+
+ /@esbuild/android-arm/0.18.20:
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64/0.18.20:
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64/0.18.20:
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64/0.18.20:
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64/0.18.20:
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64/0.18.20:
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64/0.18.20:
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm/0.18.20:
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64/0.18.20:
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32/0.18.20:
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64/0.18.20:
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el/0.18.20:
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64/0.18.20:
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64/0.18.20:
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x/0.18.20:
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64/0.18.20:
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64/0.18.20:
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64/0.18.20:
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64/0.18.20:
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64/0.18.20:
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32/0.18.20:
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64/0.18.20:
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@jridgewell/sourcemap-codec/1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
+
+ /@types/web-bluetooth/0.0.17:
+ resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==}
+ dev: true
+
+ /@vue/compiler-core/3.3.4:
+ resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
+ dependencies:
+ '@babel/parser': 7.22.16
+ '@vue/shared': 3.3.4
+ estree-walker: 2.0.2
+ source-map-js: 1.0.2
+ dev: true
+
+ /@vue/compiler-dom/3.3.4:
+ resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
+ dependencies:
+ '@vue/compiler-core': 3.3.4
+ '@vue/shared': 3.3.4
+ dev: true
+
+ /@vue/compiler-sfc/3.3.4:
+ resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
+ dependencies:
+ '@babel/parser': 7.22.16
+ '@vue/compiler-core': 3.3.4
+ '@vue/compiler-dom': 3.3.4
+ '@vue/compiler-ssr': 3.3.4
+ '@vue/reactivity-transform': 3.3.4
+ '@vue/shared': 3.3.4
+ estree-walker: 2.0.2
+ magic-string: 0.30.3
+ postcss: 8.4.30
+ source-map-js: 1.0.2
+ dev: true
+
+ /@vue/compiler-ssr/3.3.4:
+ resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==}
+ dependencies:
+ '@vue/compiler-dom': 3.3.4
+ '@vue/shared': 3.3.4
+ dev: true
+
+ /@vue/devtools-api/6.5.0:
+ resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==}
+ dev: true
+
+ /@vue/reactivity-transform/3.3.4:
+ resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==}
+ dependencies:
+ '@babel/parser': 7.22.16
+ '@vue/compiler-core': 3.3.4
+ '@vue/shared': 3.3.4
+ estree-walker: 2.0.2
+ magic-string: 0.30.3
+ dev: true
+
+ /@vue/reactivity/3.3.4:
+ resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
+ dependencies:
+ '@vue/shared': 3.3.4
+ dev: true
+
+ /@vue/runtime-core/3.3.4:
+ resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==}
+ dependencies:
+ '@vue/reactivity': 3.3.4
+ '@vue/shared': 3.3.4
+ dev: true
+
+ /@vue/runtime-dom/3.3.4:
+ resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==}
+ dependencies:
+ '@vue/runtime-core': 3.3.4
+ '@vue/shared': 3.3.4
+ csstype: 3.1.2
+ dev: true
+
+ /@vue/server-renderer/3.3.4_vue@3.3.4:
+ resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==}
+ peerDependencies:
+ vue: 3.3.4
+ dependencies:
+ '@vue/compiler-ssr': 3.3.4
+ '@vue/shared': 3.3.4
+ vue: 3.3.4
+ dev: true
+
+ /@vue/shared/3.3.4:
+ resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
+ dev: true
+
+ /@vueuse/core/10.4.1_vue@3.3.4:
+ resolution: {integrity: sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==}
+ dependencies:
+ '@types/web-bluetooth': 0.0.17
+ '@vueuse/metadata': 10.4.1
+ '@vueuse/shared': 10.4.1_vue@3.3.4
+ vue-demi: 0.14.6_vue@3.3.4
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: true
+
+ /@vueuse/integrations/10.4.1_focus-trap@7.5.2+vue@3.3.4:
+ resolution: {integrity: sha512-uRBPyG5Lxoh1A/J+boiioPT3ELEAPEo4t8W6Mr4yTKIQBeW/FcbsotZNPr4k9uz+3QEksMmflWloS9wCnypM7g==}
+ 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.4.1_vue@3.3.4
+ '@vueuse/shared': 10.4.1_vue@3.3.4
+ focus-trap: 7.5.2
+ vue-demi: 0.14.6_vue@3.3.4
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: true
+
+ /@vueuse/metadata/10.4.1:
+ resolution: {integrity: sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==}
+ dev: true
+
+ /@vueuse/shared/10.4.1_vue@3.3.4:
+ resolution: {integrity: sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==}
+ dependencies:
+ vue-demi: 0.14.6_vue@3.3.4
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: true
+
+ /algoliasearch/4.20.0:
+ resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==}
+ dependencies:
+ '@algolia/cache-browser-local-storage': 4.20.0
+ '@algolia/cache-common': 4.20.0
+ '@algolia/cache-in-memory': 4.20.0
+ '@algolia/client-account': 4.20.0
+ '@algolia/client-analytics': 4.20.0
+ '@algolia/client-common': 4.20.0
+ '@algolia/client-personalization': 4.20.0
+ '@algolia/client-search': 4.20.0
+ '@algolia/logger-common': 4.20.0
+ '@algolia/logger-console': 4.20.0
+ '@algolia/requester-browser-xhr': 4.20.0
+ '@algolia/requester-common': 4.20.0
+ '@algolia/requester-node-http': 4.20.0
+ '@algolia/transporter': 4.20.0
+ dev: true
+
+ /ansi-sequence-parser/1.1.1:
+ resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==}
+ dev: true
+
+ /csstype/3.1.2:
+ resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+ dev: true
+
+ /esbuild/0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
+
+ /focus-trap/7.5.2:
+ resolution: {integrity: sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==}
+ dependencies:
+ tabbable: 6.2.0
+ dev: true
+
+ /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
+
+ /jsonc-parser/3.2.0:
+ resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+ dev: true
+
+ /magic-string/0.30.3:
+ resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /mark.js/8.11.1:
+ resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
+ dev: true
+
+ /minisearch/6.1.0:
+ resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==}
+ dev: true
+
+ /nanoid/3.3.6:
+ resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ dev: true
+
+ /postcss/8.4.30:
+ resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.6
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /preact/10.17.1:
+ resolution: {integrity: sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==}
+ dev: true
+
+ /rollup/3.29.2:
+ resolution: {integrity: sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /shiki/0.14.4:
+ resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==}
+ dependencies:
+ ansi-sequence-parser: 1.1.1
+ jsonc-parser: 3.2.0
+ vscode-oniguruma: 1.7.0
+ vscode-textmate: 8.0.0
+ dev: true
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /tabbable/6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+ dev: true
+
+ /vite/4.4.9:
+ resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ 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:
+ esbuild: 0.18.20
+ postcss: 8.4.30
+ rollup: 3.29.2
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /vitepress/1.0.0-rc.14:
+ resolution: {integrity: sha512-yChIeXOAcNvVnSVjhziH1vte0uhKb00PuZf7KdIMfx3ixTMAz73Nn+6gREvCv0SdH+anteGUKz5eljv0ygcgGQ==}
+ hasBin: true
+ peerDependencies:
+ markdown-it-mathjax3: ^4.3.2
+ peerDependenciesMeta:
+ markdown-it-mathjax3:
+ optional: true
+ dependencies:
+ '@docsearch/css': 3.5.2
+ '@docsearch/js': 3.5.2
+ '@vue/devtools-api': 6.5.0
+ '@vueuse/core': 10.4.1_vue@3.3.4
+ '@vueuse/integrations': 10.4.1_focus-trap@7.5.2+vue@3.3.4
+ focus-trap: 7.5.2
+ mark.js: 8.11.1
+ minisearch: 6.1.0
+ shiki: 0.14.4
+ vite: 4.4.9
+ vue: 3.3.4
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - '@types/node'
+ - '@types/react'
+ - '@vue/composition-api'
+ - async-validator
+ - axios
+ - change-case
+ - drauu
+ - fuse.js
+ - idb-keyval
+ - jwt-decode
+ - less
+ - lightningcss
+ - nprogress
+ - qrcode
+ - react
+ - react-dom
+ - sass
+ - search-insights
+ - sortablejs
+ - stylus
+ - sugarss
+ - terser
+ - universal-cookie
+ dev: true
+
+ /vscode-oniguruma/1.7.0:
+ resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
+ dev: true
+
+ /vscode-textmate/8.0.0:
+ resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
+ dev: true
+
+ /vue-demi/0.14.6_vue@3.3.4:
+ resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
+ 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.3.4
+ dev: true
+
+ /vue/3.3.4:
+ resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
+ dependencies:
+ '@vue/compiler-dom': 3.3.4
+ '@vue/compiler-sfc': 3.3.4
+ '@vue/runtime-dom': 3.3.4
+ '@vue/server-renderer': 3.3.4_vue@3.3.4
+ '@vue/shared': 3.3.4
+ dev: true
diff --git a/public/img/me/avatar.jpeg b/public/img/me/avatar.jpeg
new file mode 100644
index 0000000..61ef61f
Binary files /dev/null and b/public/img/me/avatar.jpeg differ
diff --git a/public/img/me/wx.jpeg b/public/img/me/wx.jpeg
new file mode 100644
index 0000000..f5e9144
Binary files /dev/null and b/public/img/me/wx.jpeg differ
diff --git a/public/img/site/logo_blue.png b/public/img/site/logo_blue.png
new file mode 100644
index 0000000..a819f43
Binary files /dev/null and b/public/img/site/logo_blue.png differ
diff --git a/public/img/site/psf.png b/public/img/site/psf.png
new file mode 100644
index 0000000..9f76394
Binary files /dev/null and b/public/img/site/psf.png differ
diff --git a/public/svg/custom/vue.svg b/public/svg/custom/vue.svg
new file mode 100644
index 0000000..7565660
--- /dev/null
+++ b/public/svg/custom/vue.svg
@@ -0,0 +1 @@
+
diff --git a/public/svg/undraw_inspiration_re_ivlv.svg b/public/svg/undraw_inspiration_re_ivlv.svg
new file mode 100644
index 0000000..1e5e4cb
--- /dev/null
+++ b/public/svg/undraw_inspiration_re_ivlv.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/support.md b/support.md
new file mode 100644
index 0000000..772e109
--- /dev/null
+++ b/support.md
@@ -0,0 +1,13 @@
+# 在线支持
+
+请发邮件至:
+
+```
+islenote@sentenceend.com
+```
+
+24 小时内无回复,请联系我:
+
+```
+lijianchao@sentenceend.com
+```
\ No newline at end of file