From ed9f7afa809dfdb94751fa6586729e0375ae7e65 Mon Sep 17 00:00:00 2001 From: ruying408 <1877972603@qq.com> Date: Sun, 13 Apr 2025 10:47:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vitepress/dist/404.html | 4 +- .vitepress/dist/README.html | 6 +- .../{app.BeNJ_eOC.js => app.DesQjko7.js} | 2 +- .../chunks/@localSearchIndexroot.C3ZioJfZ.js | 1 + .../chunks/@localSearchIndexroot.Dj1POoFC.js | 1 - ...qQBmGX.js => VPLocalSearchBox.MfGJa_gn.js} | 2 +- .../{theme.BjsOw0kB.js => theme.BAM3wGj3.js} | 4 +- ...zuL3k.js => src_guide_i18n.md.D4ikqxxm.js} | 2 +- ....js => src_guide_i18n.md.D4ikqxxm.lean.js} | 2 +- .vitepress/dist/hashmap.json | 2 +- .vitepress/dist/index.html | 6 +- .vitepress/dist/src/about/index.html | 6 +- .vitepress/dist/src/guide/ai.html | 6 +- .vitepress/dist/src/guide/cache.html | 6 +- .vitepress/dist/src/guide/controller.html | 6 +- .vitepress/dist/src/guide/db.html | 6 +- .vitepress/dist/src/guide/deploy.html | 6 +- .vitepress/dist/src/guide/dev.html | 6 +- .vitepress/dist/src/guide/dir.html | 6 +- .vitepress/dist/src/guide/exception.html | 6 +- .vitepress/dist/src/guide/flow.html | 6 +- .vitepress/dist/src/guide/i18n.html | 10 +- .vitepress/dist/src/guide/initData.html | 6 +- .vitepress/dist/src/guide/lock.html | 6 +- .vitepress/dist/src/guide/noRepeatSubmit.html | 6 +- .vitepress/dist/src/guide/plugin.html | 6 +- .vitepress/dist/src/guide/quick.html | 6 +- .vitepress/dist/src/guide/recordLog.html | 6 +- .vitepress/dist/src/guide/security.html | 6 +- .vitepress/dist/src/guide/service.html | 6 +- .vitepress/dist/src/guide/swagger.html | 6 +- .vitepress/dist/src/guide/tenant.html | 6 +- .vitepress/dist/src/guide/uniqueIDGen.html | 6 +- .vitepress/dist/src/guide/upload.html | 6 +- .vitepress/dist/src/introduce/index.html | 6 +- .vitepress/dist/src/introduce/show.html | 6 +- .vitepress/dist/src/introduce/src.html | 6 +- .vitepress/dist/src/question/common.html | 6 +- .vitepress/dist/src/todo/plan.html | 6 +- .vitepress/dist/src/todo/update.html | 6 +- docs/.vitepress/cache/deps/@theme_index.js | 275 + .../.vitepress/cache/deps/@theme_index.js.map | 7 + docs/.vitepress/cache/deps/_metadata.json | 40 + docs/.vitepress/cache/deps/chunk-AU3CLKKL.js | 11440 ++++++++++++++++ .../cache/deps/chunk-AU3CLKKL.js.map | 7 + docs/.vitepress/cache/deps/chunk-O4DXW3DK.js | 9719 +++++++++++++ .../cache/deps/chunk-O4DXW3DK.js.map | 7 + docs/.vitepress/cache/deps/package.json | 3 + .../deps/vitepress___@vue_devtools-api.js | 4504 ++++++ .../deps/vitepress___@vue_devtools-api.js.map | 7 + .../cache/deps/vitepress___@vueuse_core.js | 583 + .../deps/vitepress___@vueuse_core.js.map | 7 + docs/.vitepress/cache/deps/vue.js | 323 + docs/.vitepress/cache/deps/vue.js.map | 7 + 54 files changed, 27034 insertions(+), 105 deletions(-) rename .vitepress/dist/assets/{app.BeNJ_eOC.js => app.DesQjko7.js} (95%) create mode 100644 .vitepress/dist/assets/chunks/@localSearchIndexroot.C3ZioJfZ.js delete mode 100644 .vitepress/dist/assets/chunks/@localSearchIndexroot.Dj1POoFC.js rename .vitepress/dist/assets/chunks/{VPLocalSearchBox.DPqQBmGX.js => VPLocalSearchBox.MfGJa_gn.js} (99%) rename .vitepress/dist/assets/chunks/{theme.BjsOw0kB.js => theme.BAM3wGj3.js} (99%) rename .vitepress/dist/assets/{src_guide_i18n.md.CMvzuL3k.js => src_guide_i18n.md.D4ikqxxm.js} (98%) rename .vitepress/dist/assets/{src_guide_i18n.md.CMvzuL3k.lean.js => src_guide_i18n.md.D4ikqxxm.lean.js} (85%) create mode 100644 docs/.vitepress/cache/deps/@theme_index.js create mode 100644 docs/.vitepress/cache/deps/@theme_index.js.map create mode 100644 docs/.vitepress/cache/deps/_metadata.json create mode 100644 docs/.vitepress/cache/deps/chunk-AU3CLKKL.js create mode 100644 docs/.vitepress/cache/deps/chunk-AU3CLKKL.js.map create mode 100644 docs/.vitepress/cache/deps/chunk-O4DXW3DK.js create mode 100644 docs/.vitepress/cache/deps/chunk-O4DXW3DK.js.map create mode 100644 docs/.vitepress/cache/deps/package.json create mode 100644 docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js create mode 100644 docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map create mode 100644 docs/.vitepress/cache/deps/vitepress___@vueuse_core.js create mode 100644 docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map create mode 100644 docs/.vitepress/cache/deps/vue.js create mode 100644 docs/.vitepress/cache/deps/vue.js.map diff --git a/.vitepress/dist/404.html b/.vitepress/dist/404.html index 8879c85..ded3c47 100644 --- a/.vitepress/dist/404.html +++ b/.vitepress/dist/404.html @@ -9,14 +9,14 @@ - +
- + \ No newline at end of file diff --git a/.vitepress/dist/README.html b/.vitepress/dist/README.html index a86f0e9..c4fb385 100644 --- a/.vitepress/dist/README.html +++ b/.vitepress/dist/README.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

介绍 ​

这是 Cool Admin(Java 版)的在线文档仓库,我们会尽力完善文档。也希望广大开发者粉丝帮助完善文档,积极提交Pull requests,共同参与开源,你的贡献可能给其他人代码巨大的帮助

地址 ​

- + \ No newline at end of file diff --git a/.vitepress/dist/assets/app.BeNJ_eOC.js b/.vitepress/dist/assets/app.DesQjko7.js similarity index 95% rename from .vitepress/dist/assets/app.BeNJ_eOC.js rename to .vitepress/dist/assets/app.DesQjko7.js index 07e376c..92b0825 100644 --- a/.vitepress/dist/assets/app.BeNJ_eOC.js +++ b/.vitepress/dist/assets/app.DesQjko7.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.BjsOw0kB.js";import{U as s,a5 as i,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,d as v,u as w,s as y,q as C,af as P,ag as R,ah as b,ai as E}from"./chunks/framework.BjhQB2K5.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&P(),R(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; +import{R as p}from"./chunks/theme.BAM3wGj3.js";import{U as s,a5 as i,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,d as v,u as w,s as y,q as C,af as P,ag as R,ah as b,ai as E}from"./chunks/framework.BjhQB2K5.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&P(),R(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/.vitepress/dist/assets/chunks/@localSearchIndexroot.C3ZioJfZ.js b/.vitepress/dist/assets/chunks/@localSearchIndexroot.C3ZioJfZ.js new file mode 100644 index 0000000..27c82cd --- /dev/null +++ b/.vitepress/dist/assets/chunks/@localSearchIndexroot.C3ZioJfZ.js @@ -0,0 +1 @@ +const e='{"documentCount":119,"nextId":119,"documentIds":{"0":"/README.html#介绍","1":"/README.html#地址","2":"/src/about/#交流合作","3":"/src/about/#微信","4":"/src/about/#抖音","5":"/src/about/#b-站","6":"/src/about/#公众号","7":"/src/guide/ai.html#ai-编码","8":"/src/guide/cache.html#缓存","9":"/src/guide/cache.html#使用","10":"/src/guide/cache.html#框架特有的通用工具类-coolcache","11":"/src/guide/cache.html#通过coolcache缓存模板-获取数据","12":"/src/guide/controller.html#控制器","13":"/src/guide/controller.html#示例","14":"/src/guide/controller.html#查询配置","15":"/src/guide/controller.html#请求参数","16":"/src/guide/controller.html#重写实现","17":"/src/guide/controller.html#原理","18":"/src/guide/controller.html#接口路由规则","19":"/src/guide/controller.html#自定义路由注解","20":"/src/guide/controller.html#重写-getmappingformethod","21":"/src/guide/db.html#数据库","22":"/src/guide/db.html#功能对比","23":"/src/guide/db.html#支持数据库","24":"/src/guide/db.html#自动建表","25":"/src/guide/deploy.html#项目部署","26":"/src/guide/deploy.html#普通方式","27":"/src/guide/deploy.html#_1、部署流程-以宝塔为例","28":"/src/guide/deploy.html#_2、推荐使用-pnpm-安装依赖","29":"/src/guide/deploy.html#_3、pm2-运行后端服务","30":"/src/guide/deploy.html#_4、nginx-配置示例","31":"/src/guide/deploy.html#docker-方式","32":"/src/guide/deploy.html#_1、部署流程-以宝塔为例-1","33":"/src/guide/deploy.html#_2、打包镜像","34":"/src/guide/deploy.html#_3、运行","35":"/src/guide/deploy.html#注意事项","36":"/src/guide/dev.html#开发方式","37":"/src/guide/dev.html#ai-全自动","38":"/src/guide/dev.html#半自动","39":"/src/guide/dir.html#目录结构","40":"/src/guide/dir.html#结构","41":"/src/guide/exception.html#统一异常处理","42":"/src/guide/exception.html#异常统一捕获","43":"/src/guide/flow.html#ai-流程编排","44":"/src/guide/i18n.html#国际化多语言-v8-0新增","45":"/src/guide/i18n.html#实现","46":"/src/guide/i18n.html#使用","47":"/src/guide/initData.html#数据初始化","48":"/src/guide/lock.html#锁","49":"/src/guide/noRepeatSubmit.html#防重复提交","50":"/src/guide/plugin.html#扩展插件","51":"/src/guide/plugin.html#使用插件","52":"/src/guide/plugin.html#_1、安装","53":"/src/guide/plugin.html#_2、调用","54":"/src/guide/plugin.html#_3、配置","55":"/src/guide/plugin.html#开发插件","56":"/src/guide/plugin.html#_1、脚手架","57":"/src/guide/plugin.html#_2、目录结构","58":"/src/guide/plugin.html#_3、开发过程","59":"/src/guide/plugin.html#_4、字段解释","60":"/src/guide/plugin.html#插件详解","61":"/src/guide/plugin.html#打包","62":"/src/guide/plugin.html#安装插件","63":"/src/guide/plugin.html#实现原理","64":"/src/guide/quick.html#快速开始","65":"/src/guide/quick.html#环境准备","66":"/src/guide/quick.html#运行系统","67":"/src/guide/quick.html#_1、拉取源码","68":"/src/guide/quick.html#_2、配置数据库","69":"/src/guide/quick.html#_3、启动后端服务","70":"/src/guide/quick.html#_4、启动前端服务","71":"/src/guide/recordLog.html#请求日志记录","72":"/src/guide/security.html#权限校验","73":"/src/guide/security.html#配置","74":"/src/guide/security.html#原理","75":"/src/guide/security.html#当前用户","76":"/src/guide/security.html#后端用户","77":"/src/guide/security.html#应用用户","78":"/src/guide/security.html#忽略-token","79":"/src/guide/security.html#方式一-注解","80":"/src/guide/security.html#方法上","81":"/src/guide/security.html#类上","82":"/src/guide/security.html#方式二-配置文件","83":"/src/guide/service.html#服务","84":"/src/guide/service.html#crud","85":"/src/guide/service.html#修改前后","86":"/src/guide/tenant.html#多租户-v8-0新增","87":"/src/guide/tenant.html#主要特点","88":"/src/guide/tenant.html#实现","89":"/src/guide/tenant.html#_1、数据隔离","90":"/src/guide/tenant.html#使用","91":"/src/guide/tenant.html#_1、开启多租户","92":"/src/guide/tenant.html#_2、继承对象调整","93":"/src/guide/swagger.html#swagger-文档","94":"/src/guide/uniqueIDGen.html#唯一id","95":"/src/guide/upload.html#文件上传","96":"/src/guide/upload.html#使用","97":"/src/introduce/#简介","98":"/src/introduce/#技术选型","99":"/src/introduce/#一、环境要求","100":"/src/introduce/#二、后端框架","101":"/src/introduce/#三、前端框架","102":"/src/introduce/#为什么选择-cool-admin","103":"/src/introduce/#内置功能","104":"/src/introduce/show.html#演示","105":"/src/introduce/src.html#源码","106":"/src/introduce/src.html#后端-点个-star-哦","107":"/src/introduce/src.html#前端-点个-star-哦","108":"/src/introduce/src.html#文档-star-哦","109":"/src/question/common.html#常见问题","110":"/src/question/common.html#_1、找不到类似xxxtabledef文件","111":"/src/todo/plan.html#计划","112":"/src/todo/plan.html#完善插件","113":"/src/todo/update.html#更新","114":"/src/todo/update.html#v8-0-0-2025-04-13","115":"/src/todo/update.html#v7-1-3-2024-08-25","116":"/src/todo/update.html#v7-1-2-2024-08-04","117":"/src/todo/update.html#v7-1-1-2024-07-15","118":"/src/todo/update.html#v7-1-0-2024-06-27"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,13],"1":[1,1,8],"2":[1,1,4],"3":[1,1,2],"4":[1,1,11],"5":[2,1,3],"6":[1,1,6],"7":[2,1,8],"8":[1,1,35],"9":[1,1,31],"10":[2,1,22],"11":[2,1,37],"12":[1,1,15],"13":[1,1,48],"14":[1,1,171],"15":[1,1,57],"16":[1,1,63],"17":[1,1,1],"18":[1,1,44],"19":[1,1,14],"20":[2,1,43],"21":[1,1,41],"22":[1,1,79],"23":[1,1,112],"24":[1,1,21],"25":[1,1,9],"26":[1,1,8],"27":[4,2,36],"28":[4,2,15],"29":[3,2,41],"30":[3,2,92],"31":[2,1,10],"32":[4,3,12],"33":[2,3,31],"34":[2,3,16],"35":[1,3,9],"36":[1,1,7],"37":[2,1,12],"38":[1,1,51],"39":[1,1,4],"40":[1,1,58],"41":[1,1,8],"42":[1,1,78],"43":[2,1,23],"44":[4,1,21],"45":[1,1,11],"46":[1,1,149],"47":[1,1,76],"48":[1,1,27],"49":[1,1,70],"50":[1,1,9],"51":[1,1,1],"52":[2,2,9],"53":[2,2,204],"54":[2,2,18],"55":[1,1,1],"56":[2,2,16],"57":[2,2,25],"58":[2,2,31],"59":[2,2,27],"60":[1,1,185],"61":[1,1,31],"62":[1,1,5],"63":[1,1,66],"64":[1,1,4],"65":[1,1,19],"66":[1,1,1],"67":[2,2,4],"68":[2,2,45],"69":[2,2,59],"70":[2,2,25],"71":[1,1,44],"72":[1,1,7],"73":[1,1,14],"74":[1,1,243],"75":[1,1,2],"76":[1,2,39],"77":[1,2,6],"78":[2,1,5],"79":[2,3,1],"80":[1,5,14],"81":[1,5,22],"82":[2,3,25],"83":[1,1,2],"84":[1,1,5],"85":[1,1,21],"86":[4,1,9],"87":[1,1,10],"88":[1,1,1],"89":[2,1,11],"90":[1,1,1],"91":[2,1,17],"92":[2,1,6],"93":[2,1,48],"94":[1,1,64],"95":[1,1,17],"96":[1,1,98],"97":[1,1,1],"98":[1,1,4],"99":[2,2,14],"100":[2,2,10],"101":[2,2,5],"102":[4,1,26],"103":[1,1,38],"104":[1,1,11],"105":[1,1,7],"106":[5,1,12],"107":[5,1,13],"108":[4,1,15],"109":[1,1,2],"110":[2,1,29],"111":[1,1,4],"112":[1,1,9],"113":[1,1,8],"114":[6,1,26],"115":[7,1,24],"116":[7,1,11],"117":[6,1,9],"118":[7,1,8]},"averageFieldLength":[1.781512605042017,1.3361344537815127,29.966386554621852],"storedFields":{"0":{"title":"介绍","titles":[]},"1":{"title":"地址","titles":[]},"2":{"title":"交流合作","titles":[]},"3":{"title":"微信","titles":["交流合作"]},"4":{"title":"抖音","titles":["交流合作"]},"5":{"title":"B 站","titles":["交流合作"]},"6":{"title":"公众号","titles":["交流合作"]},"7":{"title":"Ai 编码","titles":[]},"8":{"title":"缓存","titles":[]},"9":{"title":"使用","titles":["缓存"]},"10":{"title":"框架特有的通用工具类,CoolCache","titles":["缓存"]},"11":{"title":"通过coolCache缓存模板,获取数据","titles":["缓存"]},"12":{"title":"控制器","titles":[]},"13":{"title":"示例","titles":["控制器"]},"14":{"title":"查询配置","titles":["控制器"]},"15":{"title":"请求参数","titles":["控制器"]},"16":{"title":"重写实现","titles":["控制器"]},"17":{"title":"原理","titles":[]},"18":{"title":"接口路由规则","titles":["原理"]},"19":{"title":"自定义路由注解","titles":["原理"]},"20":{"title":"重写 getMappingForMethod","titles":["原理"]},"21":{"title":"数据库","titles":[]},"22":{"title":"功能对比","titles":["数据库"]},"23":{"title":"支持数据库","titles":["数据库"]},"24":{"title":"自动建表","titles":["数据库"]},"25":{"title":"项目部署","titles":[]},"26":{"title":"普通方式","titles":["项目部署"]},"27":{"title":"1、部署流程(以宝塔为例):","titles":["项目部署","普通方式"]},"28":{"title":"2、推荐使用 pnpm 安装依赖","titles":["项目部署","普通方式"]},"29":{"title":"3、PM2 运行后端服务","titles":["项目部署","普通方式"]},"30":{"title":"4、nginx 配置示例","titles":["项目部署","普通方式"]},"31":{"title":"Docker 方式","titles":["项目部署"]},"32":{"title":"1、部署流程(以宝塔为例):","titles":["项目部署","Docker 方式"]},"33":{"title":"2、打包镜像","titles":["项目部署","Docker 方式"]},"34":{"title":"3、运行","titles":["项目部署","Docker 方式"]},"35":{"title":"注意事项","titles":["项目部署","Docker 方式"]},"36":{"title":"开发方式","titles":[]},"37":{"title":"Ai 全自动","titles":["开发方式"]},"38":{"title":"半自动","titles":["开发方式"]},"39":{"title":"目录结构","titles":[]},"40":{"title":"结构","titles":["目录结构"]},"41":{"title":"统一异常处理","titles":[]},"42":{"title":"异常统一捕获","titles":["统一异常处理"]},"43":{"title":"Ai 流程编排","titles":[]},"44":{"title":"国际化多语言(v8.0新增)","titles":[]},"45":{"title":"实现","titles":[]},"46":{"title":"使用","titles":[]},"47":{"title":"数据初始化","titles":[]},"48":{"title":"锁","titles":[]},"49":{"title":"防重复提交","titles":[]},"50":{"title":"扩展插件","titles":[]},"51":{"title":"使用插件","titles":["扩展插件"]},"52":{"title":"1、安装","titles":["扩展插件","使用插件"]},"53":{"title":"2、调用","titles":["扩展插件","使用插件"]},"54":{"title":"3、配置","titles":["扩展插件","使用插件"]},"55":{"title":"开发插件","titles":["扩展插件"]},"56":{"title":"1、脚手架","titles":["扩展插件","开发插件"]},"57":{"title":"2、目录结构","titles":["扩展插件","开发插件"]},"58":{"title":"3、开发过程","titles":["扩展插件","开发插件"]},"59":{"title":"4、字段解释","titles":["扩展插件","开发插件"]},"60":{"title":"插件详解","titles":["扩展插件"]},"61":{"title":"打包","titles":["扩展插件"]},"62":{"title":"安装插件","titles":["扩展插件"]},"63":{"title":"实现原理","titles":["扩展插件"]},"64":{"title":"快速开始","titles":[]},"65":{"title":"环境准备","titles":["快速开始"]},"66":{"title":"运行系统","titles":["快速开始"]},"67":{"title":"1、拉取源码","titles":["快速开始","运行系统"]},"68":{"title":"2、配置数据库","titles":["快速开始","运行系统"]},"69":{"title":"3、启动后端服务","titles":["快速开始","运行系统"]},"70":{"title":"4、启动前端服务","titles":["快速开始","运行系统"]},"71":{"title":"请求日志记录","titles":[]},"72":{"title":"权限校验","titles":[]},"73":{"title":"配置","titles":["权限校验"]},"74":{"title":"原理","titles":["权限校验"]},"75":{"title":"当前用户","titles":["权限校验"]},"76":{"title":"后端用户","titles":["权限校验","当前用户"]},"77":{"title":"应用用户","titles":["权限校验","当前用户"]},"78":{"title":"忽略 token","titles":["权限校验"]},"79":{"title":"方式一: 注解","titles":["权限校验","忽略 token"]},"80":{"title":"方法上","titles":["权限校验","忽略 token","方式一: 注解"]},"81":{"title":"类上","titles":["权限校验","忽略 token","方式一: 注解"]},"82":{"title":"方式二: 配置文件","titles":["权限校验","忽略 token"]},"83":{"title":"服务","titles":[]},"84":{"title":"Crud","titles":["服务"]},"85":{"title":"修改前后","titles":["服务"]},"86":{"title":"多租户(v8.0新增)","titles":[]},"87":{"title":"主要特点","titles":[]},"88":{"title":"实现","titles":[]},"89":{"title":"1、数据隔离","titles":["实现"]},"90":{"title":"使用","titles":[]},"91":{"title":"1、开启多租户","titles":["使用"]},"92":{"title":"2、继承对象调整","titles":["使用"]},"93":{"title":"swagger 文档","titles":[]},"94":{"title":"唯一id","titles":[]},"95":{"title":"文件上传","titles":[]},"96":{"title":"使用","titles":[]},"97":{"title":"简介","titles":[]},"98":{"title":"技术选型","titles":["简介"]},"99":{"title":"一、环境要求","titles":["简介","技术选型"]},"100":{"title":"二、后端框架","titles":["简介","技术选型"]},"101":{"title":"三、前端框架","titles":["简介","技术选型"]},"102":{"title":"为什么选择 Cool Admin?","titles":["简介"]},"103":{"title":"内置功能","titles":["简介"]},"104":{"title":"演示","titles":[]},"105":{"title":"源码","titles":[]},"106":{"title":"后端(点个 Star 哦)","titles":["源码"]},"107":{"title":"前端(点个 Star 哦)","titles":["源码"]},"108":{"title":"文档 (Star 哦)","titles":["源码"]},"109":{"title":"常见问题","titles":[]},"110":{"title":"1、找不到类似xxxTableDef文件","titles":["常见问题"]},"111":{"title":"计划","titles":[]},"112":{"title":"完善插件","titles":["计划"]},"113":{"title":"更新","titles":[]},"114":{"title":"v8.0.0(2025-04-13)","titles":["更新"]},"115":{"title":"v7.1.3(2024-08-25)","titles":["更新"]},"116":{"title":"v7.1.2(2024-08-04)","titles":["更新"]},"117":{"title":"v7.1.1(2024-07-15)","titles":["更新"]},"118":{"title":"v7.1.0(2024-06-27)","titles":["更新"]}},"dirtCount":0,"index":[["移除插件jar文件落库",{"2":{"116":1}}],["移除锁",{"2":{"49":1}}],["鉴权调整兼容app端",{"2":{"116":1}}],["鉴权拦截配置",{"2":{"74":1}}],["指定id插入不生效问题",{"2":{"115":1}}],["修复",{"2":{"115":2,"116":1}}],["修改之后",{"2":{"85":2}}],["修改之前",{"2":{"85":2}}],["修改类型",{"2":{"85":2}}],["修改前后",{"0":{"85":1}}],["修改",{"2":{"13":1,"103":1}}],["图形验证码获取区分app和admin",{"2":{"115":1}}],["解析规则",{"2":{"115":1}}],["解析设计",{"2":{"22":1}}],["参考",{"2":{"115":6}}],["参数管理",{"2":{"103":1}}],["参数",{"2":{"53":1}}],["涉及包结构变更",{"2":{"114":1}}],["升级所有相关依赖到最新",{"2":{"118":1}}],["升级到",{"2":{"118":1}}],["升级autotable和mybatis",{"2":{"114":1}}],["升级",{"2":{"114":2}}],["响应类型封装优化",{"2":{"114":1}}],["全局动态注入查询条件详情",{"2":{"114":1}}],["全自动",{"0":{"37":1}}],["支付",{"2":{"117":1}}],["支付插件",{"2":{"112":1}}],["支持postgresql",{"2":{"116":1}}],["支持自定义返回结果类型",{"2":{"115":1}}],["支持多语言",{"2":{"114":1}}],["支持多租户",{"2":{"114":1}}],["支持多主键",{"2":{"22":1}}],["支持动态安装",{"2":{"103":1}}],["支持回滚操作",{"2":{"103":1}}],["支持静态资源文件上传云端进行云管理",{"2":{"103":1}}],["支持通配",{"2":{"82":1}}],["支持很多数据库",{"2":{"23":1}}],["支持的数据库类型",{"2":{"23":1}}],["支持数据库",{"0":{"23":1}}],["支持关联查询",{"2":{"21":1}}],["短信等功能可以通过安装插件的方式添加",{"2":{"117":1}}],["短信插件",{"2":{"112":1}}],["短信这类功能的插件可以通过后台动态安装卸载",{"2":{"102":1}}],["完善插件",{"0":{"112":1}}],["计划",{"0":{"111":1},"1":{"112":1}}],["找不到类似xxxtabledef文件",{"0":{"110":1}}],["常见问题",{"0":{"109":1},"1":{"110":1}}],["常用的技术进行选择",{"2":{"98":1}}],["常用命令",{"2":{"29":1}}],["您的贡献可能会给其他人来带巨大的帮助",{"2":{"108":1}}],["哦",{"0":{"106":1,"107":1,"108":1}}],["点个",{"0":{"106":1,"107":1}}],["点击前往前端项目详细文档",{"2":{"70":1,"107":1}}],["点击前往插件市场",{"2":{"50":1}}],["点击前往插件市场下载安装",{"2":{"43":1}}],["点击+按钮",{"2":{"52":1}}],["点击左侧菜单扩展管理",{"2":{"52":1}}],["源码",{"0":{"105":1},"1":{"106":1,"107":1,"108":1}}],["源码仓库",{"2":{"67":1}}],["演示",{"0":{"104":1}}],["卸载插件",{"2":{"103":1}}],["卸载和替换",{"2":{"63":2}}],["前后端插件",{"2":{"103":1}}],["前端",{"0":{"107":1}}],["前端框架",{"0":{"101":1}}],["前端会根据后端返回的上传模式进行本地上传或者云存储签名直传",{"2":{"95":1}}],["前端请前往前端文档查看",{"2":{"45":1}}],["前端不需要特意写调用接口的",{"2":{"33":1}}],["前端打包完放这边",{"2":{"30":1}}],["前端访问后端的接口地址默认是前端根地址+",{"2":{"27":1}}],["前端接口",{"2":{"18":1}}],["天的保留",{"2":{"103":1}}],["任务调度包含执行结果日志",{"2":{"103":1}}],["添加",{"2":{"103":1}}],["定时任务",{"2":{"103":1}}],["定时任务模块",{"2":{"40":1}}],["便于问题排查",{"2":{"103":1}}],["设置角色按机构进行数据范围权限划分",{"2":{"103":1}}],["呈现公司组织部门树形结构",{"2":{"103":1}}],["内置功能",{"0":{"103":1}}],["代码简洁",{"2":{"102":1}}],["代理服务端地址",{"2":{"30":1}}],["灵活又不臃肿",{"2":{"102":1}}],["灵活性",{"2":{"63":1}}],["灵活性高",{"2":{"63":1}}],["专门为",{"2":{"102":1}}],["部分功能实现零代码",{"2":{"102":1}}],["部署",{"2":{"35":1}}],["部署的简单流程",{"2":{"31":1}}],["部署的配置方式可以参考普通的部署方式",{"2":{"31":1}}],["部署成功",{"2":{"27":1,"32":1}}],["部署流程",{"0":{"27":1,"32":1}}],["部署视频教程",{"2":{"26":1,"31":1}}],["从页面到后端代码",{"2":{"102":1}}],["从第三方",{"2":{"11":1}}],["特别是最近",{"2":{"102":1}}],["特别是跟",{"2":{"4":1}}],["三",{"0":{"101":1}}],["二",{"0":{"100":1}}],["环境要求",{"0":{"99":1}}],["环境准备",{"0":{"65":1}}],["减少技术栈的复杂度",{"2":{"98":1}}],["技术选型",{"0":{"98":1},"1":{"99":1,"100":1,"101":1}}],["技术分享",{"2":{"4":1,"6":1}}],["水印等处理",{"2":{"96":1}}],["裁剪",{"2":{"96":1}}],["条件允许的话尽量选择云存储上传",{"2":{"96":1}}],["动静分离有许多好处",{"2":{"96":1}}],["动态加载使得应用程序能够在不停机的情况下进行热更新",{"2":{"63":1}}],["动态加载允许应用程序在运行时根据需求加载",{"2":{"63":1}}],["动态加载",{"2":{"63":2}}],["动态",{"2":{"22":1}}],["动态表名",{"2":{"22":1}}],["线上环境请用nginx等静态服务器代理",{"2":{"96":1}}],["线上的数据库是需要本地传上去的",{"2":{"27":1}}],["七牛云等",{"2":{"95":1}}],["腾讯云",{"2":{"95":1}}],["云存储上传服务端值提供签名供前端直传到对应的云存储",{"2":{"95":1}}],["云存储",{"2":{"95":1}}],["直接上传到对应的云存储",{"2":{"95":1}}],["分布式id",{"2":{"115":1}}],["分布式id生成组件",{"2":{"115":1}}],["分布式唯一id组件",{"2":{"94":1}}],["分页查询无",{"2":{"22":1}}],["分页查询之总量缓存",{"2":{"22":1}}],["分页查询配置",{"2":{"14":1}}],["分页查询",{"2":{"13":1,"22":1}}],["启用唯一id组件",{"2":{"94":1}}],["启动",{"2":{"70":1}}],["启动前端服务",{"0":{"70":1}}],["启动文件",{"2":{"69":1}}],["启动后端服务",{"0":{"69":1}}],["启动一个服务",{"2":{"29":1}}],["启动服务",{"2":{"27":1}}],["入参为key",{"2":{"94":1}}],["步长",{"2":{"94":1}}],["唯一id分配",{"2":{"94":1}}],["唯一id",{"0":{"94":1}}],["继承对象调整",{"0":{"92":1}}],["关于tenantid的使用请参考",{"2":{"91":1}}],["关联查询用法参考",{"2":{"14":1}}],["租户id",{"2":{"89":1}}],["成本优化",{"2":{"87":1}}],["成功",{"2":{"46":1}}],["独立配置",{"2":{"87":1}}],["互不可见",{"2":{"87":1}}],["确保不同租户之间的数据严格分离",{"2":{"87":1}}],["但最为常见的是以列进行隔离的方式",{"2":{"89":1}}],["但共享同一个应用程序代码和基础设施",{"2":{"86":1}}],["但是每次都是用代码手搓",{"2":{"43":1}}],["但是它为我们提供了改造的可能",{"2":{"23":1}}],["但是",{"2":{"23":1}}],["客户组织",{"2":{"86":1}}],["允许单个应用实例服务多个租户",{"2":{"86":1}}],["允许网页iframe",{"2":{"74":1}}],["操作日志",{"2":{"103":1}}],["操作权限标识等",{"2":{"103":1}}],["操作",{"2":{"84":1}}],["处理业务逻辑的代码应该被封装在服务中",{"2":{"83":1}}],["处理逻辑在以下方法",{"2":{"47":1}}],["都必须配合coolrestcontroller使用",{"2":{"81":1}}],["都继承自",{"2":{"12":1}}],["校验",{"2":{"78":1,"80":1}}],["应用用户",{"0":{"77":1}}],["应用必备",{"2":{"43":1}}],["类上",{"0":{"81":1}}],["类型",{"2":{"76":1}}],["类必须继承",{"2":{"53":1,"60":2}}],["类必须要有",{"2":{"53":1,"60":2}}],["当前最大id",{"2":{"94":1}}],["当前用户",{"0":{"75":1},"1":{"76":1,"77":1}}],["当你在控制台看到这样的输出",{"2":{"46":1}}],["监控用户行为",{"2":{"74":1}}],["监听",{"2":{"22":1}}],["权限管理拦截器",{"2":{"74":1}}],["权限校验",{"0":{"72":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1}}],["每次调用接口的时候spring",{"2":{"74":1}}],["每个租户可以有自己的个性化配置和定制化需求",{"2":{"87":1}}],["每个租户的数据是相互隔离的",{"2":{"86":1}}],["每个插件的配置各不相同",{"2":{"59":1}}],["每个对象中的",{"2":{"47":1}}],["每个模块都有其特有的功能",{"2":{"39":1}}],["判定用户请求的url是否在权限表中",{"2":{"74":1}}],["判断",{"2":{"42":1}}],["刷新token过期时间",{"2":{"73":1}}],["半小时",{"2":{"73":1}}],["半自动",{"0":{"38":1}}],["秒",{"2":{"73":2}}],["单位",{"2":{"73":2}}],["单主键配置",{"2":{"22":1}}],["过期时间",{"2":{"73":1}}],["作为文档",{"2":{"93":1}}],["作为myaccessdecisionmanager类的decide的第三个参数",{"2":{"74":1}}],["作为框架安全与权限校验",{"2":{"72":1}}],["作者",{"2":{"58":1,"59":1}}],["采用",{"2":{"72":1}}],["忽略后台鉴权url",{"2":{"82":1}}],["忽略",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1},"2":{"78":1}}],["忽略权限控制的地址",{"2":{"74":1}}],["忽略记录请求日志url配置",{"2":{"116":1}}],["忽略记录请求日志url",{"2":{"71":1}}],["忽略url",{"2":{"71":1,"82":1}}],["记录日志",{"2":{"71":1}}],["记录接口请求日志入库",{"2":{"71":1}}],["密码版本号",{"2":{"76":1}}],["密码",{"2":{"70":1,"104":1}}],["账户",{"2":{"70":1,"104":1}}],["账户密码不正确",{"2":{"42":1}}],["执行",{"2":{"110":1}}],["执行命令",{"2":{"70":1}}],["执行的过程中",{"2":{"21":1}}],["跟进nodejs",{"2":{"118":1}}],["跟",{"2":{"70":1}}],["跟分页查询一样",{"2":{"14":1}}],["端口",{"2":{"69":1}}],["服务",{"0":{"83":1},"1":{"84":1,"85":1}}],["服务启动成功",{"2":{"69":1}}],["服务器环境准备",{"2":{"27":1}}],["构建eps信息",{"2":{"69":1}}],["控制台打印出下面信息",{"2":{"69":1}}],["控制器",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1},"2":{"115":1}}],["驱动已经内置",{"2":{"68":1}}],["yamlcool",{"2":{"73":1}}],["yaml",{"2":{"68":1,"82":1,"91":1,"94":1}}],["yamlspring",{"2":{"8":1,"96":1}}],["yml",{"2":{"68":1,"96":1}}],["9000",{"2":{"70":1}}],["941+08",{"2":{"69":1}}],["9",{"2":{"65":1}}],["7天",{"2":{"73":1}}],["7版本",{"2":{"68":1}}],["7",{"2":{"65":1,"99":1}}],["选择",{"2":{"65":1,"99":1}}],["选择插件包进行安装",{"2":{"52":1}}],["开启",{"2":{"110":1}}],["开启多租户",{"0":{"91":1}}],["开放接口",{"2":{"78":1}}],["开始使用",{"2":{"64":1}}],["开发几乎不用写代码",{"2":{"102":1}}],["开发设计的",{"2":{"102":1}}],["开发过程",{"0":{"58":1}}],["开发过程只需点一点",{"2":{"37":1}}],["开发插件",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1}}],["开发的时候无法调试",{"2":{"53":1}}],["开发的时候只是模拟",{"2":{"53":1}}],["开发的一个",{"2":{"8":1}}],["开发",{"2":{"43":1}}],["开发方式",{"0":{"36":1},"1":{"37":1,"38":1}}],["开发者可以从中方便的获取各种参数",{"2":{"15":1}}],["快速开始",{"0":{"64":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1}}],["扩展性",{"2":{"63":1}}],["扩展插件",{"0":{"50":1},"1":{"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"102":1}}],["大大提高了系统的可用性和稳定性",{"2":{"63":1}}],["热更新",{"2":{"63":1}}],["优化若干问题",{"2":{"118":1}}],["优化插件过大加载慢问题",{"2":{"116":1}}],["优化角色修改循环单个处理为批量处理",{"2":{"115":1}}],["优化eps解析规则",{"2":{"115":1}}],["优化",{"2":{"114":1}}],["优势",{"2":{"63":1}}],["优炫数据库",{"2":{"23":1}}],["远程服务器和",{"2":{"63":1}}],["它可以加载指定的",{"2":{"63":1}}],["它是指让软件支持多种语言和地区的功能",{"2":{"44":1}}],["标准库中提供的一个类加载器",{"2":{"63":1}}],["最终打出的包为",{"2":{"61":1}}],["里指定",{"2":{"61":1}}],["里面是个数组",{"2":{"47":1}}],["后台人员查询列表字段关联错误",{"2":{"115":1}}],["后端",{"0":{"106":1}}],["后端框架",{"0":{"100":1}}],["后端用户",{"0":{"76":1}}],["后端修改数据库配置",{"2":{"68":1}}],["后端接口",{"2":{"18":1}}],["后缀的文件",{"2":{"61":1}}],["避免打包结果过大",{"2":{"60":1}}],["避免插件过大不会在打入jar包中",{"2":{"60":1}}],["主应用以有这些依赖",{"2":{"60":1}}],["主应用项目已经有的依赖给排除掉",{"2":{"60":1}}],["主应用没有这些依赖",{"2":{"60":1}}],["主要特点",{"0":{"87":1},"2":{"21":1,"102":1}}],["主要是做一些技术教程",{"2":{"4":1}}],["引入依赖",{"2":{"60":1}}],["引入插件",{"2":{"46":1}}],["可商用",{"2":{"105":1}}],["可插拔",{"2":{"102":1}}],["可选",{"2":{"96":1}}],["可维护性",{"2":{"63":1}}],["可控性强",{"2":{"63":1}}],["可在",{"2":{"61":1}}],["可使用",{"2":{"60":1}}],["可以重写modifybefore和modifyafter方法",{"2":{"85":1}}],["可以参考baseservice的实现",{"2":{"84":1}}],["可以轻松地添加新的功能模块或服务",{"2":{"63":1}}],["可以将应用程序的核心逻辑和配置分离",{"2":{"63":1}}],["可以通过代码控制加载",{"2":{"63":1}}],["可以通过插件的方式来扩展系统功能",{"2":{"50":1}}],["可以动态指定",{"2":{"63":1}}],["可以快速开发我们的插件",{"2":{"56":1}}],["可以大大节省开发时间",{"2":{"36":1}}],["可以大大简化代码",{"2":{"12":1}}],["可以考虑这个时间配置长一点",{"2":{"30":1}}],["可以自己指定数量",{"2":{"29":1}}],["可以自动创建表",{"2":{"24":1}}],["可以在yml文件中配置",{"2":{"71":1}}],["可以在打包日志中查看我们排除和引入了哪些包",{"2":{"60":1}}],["可以在",{"2":{"47":1}}],["可以在对应的",{"2":{"16":1}}],["可以在这边实现一下列表数据排序规则",{"2":{"13":1,"15":1,"16":1,"93":1}}],["可以选择你想使用的缓存",{"2":{"8":1}}],["满足以上条件",{"2":{"60":1}}],["拼音",{"2":{"60":1}}],["汉字",{"2":{"60":1}}],["汉字字符",{"2":{"60":1}}],["会持续不断地更新",{"2":{"113":1}}],["会展示在插件的详情中",{"2":{"59":1}}],["会更加简洁",{"2":{"42":1}}],["建议",{"2":{"68":1}}],["建议尺寸",{"2":{"59":1}}],["建议将缓存换成",{"2":{"35":1}}],["说明后端服务启动成功",{"2":{"69":1}}],["说明",{"2":{"59":1,"76":1}}],["测试",{"2":{"58":1}}],["测试curd",{"2":{"13":2,"14":2,"15":2,"16":2,"38":1,"93":2}}],["或",{"2":{"56":1,"106":2,"107":2,"108":1}}],["或者db",{"2":{"11":1}}],["脚手架源码仓库",{"2":{"56":1}}],["脚手架",{"0":{"56":1}}],["下",{"2":{"54":1}}],["下的",{"2":{"47":1}}],["范围在",{"2":{"54":1}}],["路径可以自己指定",{"2":{"54":1}}],["例如原本的配置文件是这样的",{"2":{"54":1}}],["其它的无效",{"2":{"81":1}}],["其中对应的包名称",{"2":{"61":1}}],["其中",{"2":{"54":1}}],["其中我们可以在插件包里通过",{"2":{"53":1}}],["其他数据库适配中",{"2":{"68":1}}],["其他部署方式也可以参考这个流程",{"2":{"26":1}}],["其他查询方式",{"2":{"14":2}}],["获得用户信息",{"2":{"74":1,"76":1}}],["获得其他插件",{"2":{"53":1}}],["获取id",{"2":{"94":1}}],["获取当前用户信息",{"2":{"75":1}}],["获取启用的权限操作请求",{"2":{"74":1}}],["获取主应用resources下的",{"2":{"53":1}}],["获取主应用resources目录下的资源文件",{"2":{"53":1}}],["获取锁后的逻辑",{"2":{"48":1}}],["获取物流信息",{"2":{"11":1}}],["获取数据",{"0":{"11":1},"2":{"11":1}}],["||",{"2":{"53":7}}],["|",{"2":{"53":67}}],["一",{"0":{"99":1}}],["一个插件",{"2":{"60":1}}],["一个插件jar有且只能有一个类被",{"2":{"53":1,"60":1}}],["一个项目用cool就够了",{"2":{"53":2}}],["一般抛异常写法",{"2":{"42":1}}],["`",{"2":{"53":10}}],["`update",{"2":{"53":1}}],["`create",{"2":{"53":1}}],["`params`",{"2":{"53":1}}],["`ip`",{"2":{"53":1}}],["`action`",{"2":{"53":1}}],["`base",{"2":{"53":1}}],["500",{"2":{"94":2}}],["564+08",{"2":{"53":1}}],["556",{"2":{"69":1}}],["559+08",{"2":{"53":1}}],["558+08",{"2":{"53":1}}],["557+08",{"2":{"53":1}}],["554+08",{"2":{"53":1}}],["544+08",{"2":{"53":1}}],["543+08",{"2":{"53":2}}],["5",{"2":{"53":8,"60":6,"65":1,"99":1}}],["就是我们的插件包",{"2":{"61":1}}],["就可以在代码中调用插件的方法了",{"2":{"53":1}}],["就不需要在entity",{"2":{"14":1}}],["调整",{"2":{"115":4,"116":2}}],["调用其他插件",{"2":{"53":1}}],["调用其他插件aliyun",{"2":{"53":1}}],["调用主应用获取缓存",{"2":{"53":1}}],["调用主应用设置缓存",{"2":{"53":1}}],["调用主应用",{"2":{"53":3}}],["调用插件类",{"2":{"53":1}}],["调用",{"0":{"53":1}}],["调一调",{"2":{"37":1}}],["打开后台管理系统",{"2":{"52":1}}],["打包结果",{"2":{"61":1}}],["打包命令",{"2":{"61":1}}],["打包",{"0":{"61":1}}],["打包时可以排除",{"2":{"60":1}}],["打包前端镜像",{"2":{"33":1}}],["打包前后端代码",{"2":{"27":1}}],["打包后端镜像",{"2":{"33":1}}],["打包后端和前端镜像",{"2":{"32":1}}],["打包镜像之前",{"2":{"33":1}}],["打包镜像",{"0":{"33":1}}],["打包之前注意配置生产环境的数据库配置config",{"2":{"27":1}}],["然后在系统中安装插件包",{"2":{"52":1}}],["首次启动会自动初始化并导入数据",{"2":{"68":1}}],["首先下载插件包",{"2":{"52":1}}],["首末字符",{"2":{"44":1}}],["导致系统臃肿",{"2":{"50":1}}],["领取优惠券",{"2":{"49":1}}],["基于deepseek",{"2":{"114":1}}],["基于大模型自动翻译",{"2":{"114":1}}],["基于表来完成分布式id生成",{"2":{"94":1}}],["基于用户维度的防重复提交",{"2":{"49":1}}],["基础模块",{"2":{"40":1}}],["防重提交",{"2":{"115":1}}],["防重提交注解",{"2":{"115":1}}],["防重复提交",{"0":{"49":1}}],["防止上传恶意文件等",{"2":{"96":1}}],["防止操作不当导致的数据丢失",{"2":{"35":1}}],["防止刷新404",{"2":{"30":1}}],["释放锁",{"2":{"48":1}}],["尝试获取锁",{"2":{"48":1}}],["注入service",{"2":{"94":1}}],["注入锁",{"2":{"48":1}}],["注解",{"0":{"79":1},"1":{"80":1,"81":1},"2":{"49":1,"53":2,"60":4}}],["注意事项",{"0":{"35":1}}],["注意",{"2":{"18":1,"22":1,"23":1,"24":1,"25":1,"27":1,"33":1,"47":1,"65":1,"81":1,"96":1}}],["注意如果该表有json字段",{"2":{"14":1}}],["简单功能零代码实现",{"2":{"117":1}}],["简单锁的使用",{"2":{"48":1}}],["简介",{"0":{"97":1},"1":{"98":1,"99":1,"100":1,"101":1,"102":1,"103":1}}],["简体中文",{"2":{"46":1}}],["锁工具",{"2":{"115":2}}],["锁是基于redis",{"2":{"48":1}}],["锁",{"0":{"48":1}}],["加载权限表中所有操作请求权限",{"2":{"74":1}}],["加载成功后文件名称将被当作唯一键标识",{"2":{"47":1}}],["加上",{"2":{"57":1}}],["加锁",{"2":{"49":1}}],["加泰罗尼亚语",{"2":{"46":1}}],["要新增一个",{"2":{"47":1}}],["要让其再次翻译",{"2":{"46":1}}],["初始化数据",{"2":{"115":1}}],["初始化数据json文件",{"2":{"40":1}}],["初始化eps完成",{"2":{"69":1}}],["初始化菜单数据",{"2":{"47":1}}],["初始化自定义的数据",{"2":{"47":1}}],["富文本参数",{"2":{"47":1}}],["规范",{"2":{"47":1}}],["规则为",{"2":{"18":1}}],["数组里可以包含多个对象",{"2":{"47":1}}],["数据有",{"2":{"103":1}}],["数据回收站",{"2":{"103":1}}],["数据回收站模块",{"2":{"40":1}}],["数据隔离",{"0":{"89":1},"2":{"87":1}}],["数据初始化完成",{"2":{"47":1}}],["数据初始化",{"0":{"47":1},"2":{"94":1}}],["数据脱敏",{"2":{"22":1}}],["数据脱敏等等",{"2":{"21":1}}],["数据填充",{"2":{"21":1,"22":1}}],["数据库初始数据初始化",{"2":{"47":1}}],["数据库",{"0":{"21":1},"1":{"22":1,"23":1,"24":1},"2":{"23":32}}],["格式如下",{"2":{"47":1}}],["目录下",{"2":{"61":1}}],["目录下创建",{"2":{"47":1}}],["目录创建",{"2":{"47":1}}],["目录结构",{"0":{"39":1,"57":1},"1":{"40":1}}],["马来语",{"2":{"46":1}}],["孟加拉语",{"2":{"46":1}}],["世界语",{"2":{"46":1}}],["克罗地亚语",{"2":{"46":1}}],["亚美尼亚语",{"2":{"46":1}}],["亚马逊",{"2":{"23":1}}],["吉尔吉斯语",{"2":{"46":1}}],["巴斯克语",{"2":{"46":1}}],["巴西葡萄牙语",{"2":{"46":1}}],["塞尔维亚语",{"2":{"46":1}}],["维吾尔语",{"2":{"46":1}}],["库尔德语",{"2":{"46":2}}],["罗马尼亚语",{"2":{"46":1}}],["匈牙利语",{"2":{"46":1}}],["哈萨克语",{"2":{"46":1}}],["蒙古语",{"2":{"46":1}}],["立陶宛语",{"2":{"46":1}}],["希伯来语",{"2":{"46":1}}],["希腊语",{"2":{"46":1}}],["阿拉伯语",{"2":{"46":1}}],["阿塞拜疆语",{"2":{"46":1}}],["斯洛文尼亚语",{"2":{"46":1}}],["斯洛伐克语",{"2":{"46":1}}],["爱沙尼亚语",{"2":{"46":1}}],["南非荷兰语",{"2":{"46":1}}],["南大通用数据库",{"2":{"23":1}}],["南大通用",{"2":{"23":1}}],["拉取源码",{"0":{"67":1}}],["拉取前后端代码",{"2":{"27":1,"32":1}}],["拉脱维亚语",{"2":{"46":1}}],["泰米尔语",{"2":{"46":1}}],["泰语",{"2":{"46":1}}],["土库曼语",{"2":{"46":1}}],["土耳其语",{"2":{"46":1}}],["乌克兰语",{"2":{"46":1}}],["捷克语",{"2":{"46":1}}],["瑞典语",{"2":{"46":1}}],["芬兰语",{"2":{"46":1}}],["波兰语",{"2":{"46":1}}],["波斯语",{"2":{"46":1}}],["普什图语",{"2":{"46":1}}],["普通方式",{"0":{"26":1},"1":{"27":1,"28":1,"29":1,"30":1}}],["保加利亚语",{"2":{"46":1}}],["印度尼西亚语",{"2":{"46":1}}],["俄语",{"2":{"46":1}}],["越南语",{"2":{"46":1}}],["越来越多的企业开始走向国际化",{"2":{"44":1}}],["荷兰语",{"2":{"46":1}}],["日语",{"2":{"46":1}}],["日志",{"2":{"29":1}}],["韩语",{"2":{"46":1}}],["意大利语",{"2":{"46":1}}],["繁体中文",{"2":{"46":1}}],["挪威语",{"2":{"46":1}}],["法语",{"2":{"46":1}}],["丹麦语",{"2":{"46":1}}],["西班牙语",{"2":{"46":1}}],["葡萄牙语",{"2":{"46":1}}],["德语",{"2":{"46":1}}],["美国英语",{"2":{"46":1}}],["语言配置对照表",{"2":{"46":1}}],["得对应地删除相应的文件",{"2":{"46":1}}],["则框架会自动注入tenantid",{"2":{"89":1}}],["则返回给decide方法",{"2":{"74":1}}],["则该种类的国际化将不会进行翻译",{"2":{"46":1}}],["则代表成功",{"2":{"46":1}}],["翻译完成之后会默认在路径assets",{"2":{"46":1}}],["翻译",{"2":{"46":1}}],["翻译成功",{"2":{"46":1}}],["翻译中",{"2":{"46":1}}],["只需极少编码即可实现大部分需求",{"2":{"102":1}}],["只需拖一拖即可",{"2":{"102":1}}],["只需三步",{"2":{"38":1}}],["只有安装到cool",{"2":{"53":1}}],["只要开启并配置了国际化",{"2":{"46":1}}],["只要开启就能自动翻译",{"2":{"45":1}}],["比传统机翻更加准确",{"2":{"45":1}}],["比如orderid",{"2":{"94":1}}],["比如替换系统的上传组件",{"2":{"59":1}}],["比如你有一个订单管理的模块",{"2":{"40":1}}],["比如",{"2":{"22":1,"47":1,"53":1}}],["显示相应的语言界面",{"2":{"44":1}}],["个字母",{"2":{"44":1}}],["个接口",{"2":{"13":1}}],["之间有",{"2":{"44":1}}],["国际化多语言",{"0":{"44":1}}],["相关配置",{"2":{"73":1}}],["相关应用",{"2":{"43":1}}],["相关的技术发展",{"2":{"102":1}}],["相关的",{"2":{"4":1}}],["很容易就能完成一个",{"2":{"43":1}}],["很多应用希望接入",{"2":{"43":1}}],["结尾",{"2":{"47":1}}],["结合知识库",{"2":{"43":1}}],["结构",{"0":{"40":1}}],["做为后来者有后发优势",{"2":{"102":1}}],["做了一个",{"2":{"43":1}}],["做解析",{"2":{"20":1}}],["于是我们面向开发者和软件开发公司",{"2":{"43":1}}],["容易把我们累死",{"2":{"43":1}}],["随着技术不断地发展",{"2":{"102":1}}],["随着互联网的发展",{"2":{"44":1}}],["随着",{"2":{"43":1}}],["视频演示",{"2":{"43":1}}],["流程编排插件",{"2":{"112":1}}],["流程编排功能",{"2":{"43":1}}],["流程编排",{"0":{"43":1},"2":{"102":1}}],["异常消息",{"2":{"46":1}}],["异常信息为",{"2":{"42":1}}],["异常统一捕获",{"0":{"42":1}}],["即抛异常",{"2":{"42":1}}],["手动抛异常",{"2":{"42":1}}],["手动进行转换",{"2":{"14":1}}],["业务key",{"2":{"94":1}}],["业务校验的工具",{"2":{"42":1}}],["业务代码放在这边",{"2":{"40":1}}],["系统异常信息日志记录和查询",{"2":{"103":1}}],["系统正常操作日志记录和查询",{"2":{"103":1}}],["系统通用",{"2":{"96":2}}],["系统的文件上传就会自动替换成云存储上传的方式",{"2":{"95":1}}],["系统启动完成访问",{"2":{"93":1}}],["系统启动的时候",{"2":{"74":1}}],["系统会查询并向spring",{"2":{"74":1}}],["系统提供了",{"2":{"42":1}}],["系统用户",{"2":{"40":1}}],["请求日志",{"2":{"103":1}}],["请求日志记录",{"0":{"71":1}}],["请求过程中会解析",{"2":{"76":1}}],["请求参数",{"0":{"15":1},"2":{"85":2}}],["请勿重复操作",{"2":{"49":1}}],["请区分post",{"2":{"42":1}}],["不要吝啬你们免费的star哦",{"2":{"105":1}}],["不像一般代码生成器生成一堆冗余代码",{"2":{"102":1}}],["不经过服务器",{"2":{"95":1}}],["不然调用时会报错",{"2":{"60":1}}],["不带声调",{"2":{"60":1}}],["不同的插件有不同的配置",{"2":{"58":1}}],["不会重复初始化",{"2":{"47":1}}],["不支持该请求方式",{"2":{"42":1}}],["不用写一行代码",{"2":{"37":1}}],["已存在该记录",{"2":{"42":1}}],["统一异常处理",{"0":{"41":1},"1":{"42":1}}],["按照简单",{"2":{"98":1}}],["按上面的包结构新增即可",{"2":{"40":1}}],["按规则组装",{"2":{"20":1}}],["为什么选择",{"0":{"102":1}}],["为例",{"2":{"68":1}}],["为排除引入",{"2":{"60":1}}],["为引入",{"2":{"60":1}}],["为主应用",{"2":{"54":1}}],["为插件key",{"2":{"53":1}}],["为对应的值",{"2":{"47":1}}],["为表的字段",{"2":{"47":1}}],["为表的名称",{"2":{"47":1}}],["为业务模块",{"2":{"40":1}}],["为核心模块",{"2":{"40":1}}],["为了使项目能够持续",{"2":{"105":1}}],["为了开发插件如果引入了主应用已经有的maven依赖可以在下面的",{"2":{"60":2}}],["为了方便开发插件和统一插件开发规范",{"2":{"56":1}}],["为了方便获取参数",{"2":{"15":1}}],["为了丰富系统功能",{"2":{"50":1}}],["为了不过多依赖环境",{"2":{"8":1}}],["插件可以在打包的时候将在我们",{"2":{"60":1}}],["插件详解",{"0":{"60":1}}],["插件配置",{"2":{"59":1}}],["插件介绍",{"2":{"59":1}}],["插件",{"2":{"59":1,"112":1}}],["插件钩子",{"2":{"59":1}}],["插件唯一标识",{"2":{"59":1}}],["插件描述",{"2":{"58":1,"59":1}}],["插件运行测试类",{"2":{"57":1}}],["插件信息配置文件",{"2":{"57":1}}],["插件类放在这个包下",{"2":{"57":1}}],["插件包",{"2":{"57":1}}],["插件包可以通过官网下载插件",{"2":{"52":1}}],["插件方法",{"2":{"53":1,"60":1}}],["插件管理",{"2":{"52":1}}],["插件模块",{"2":{"40":1}}],["插件分享等",{"2":{"6":1}}],["插件分享等内容",{"2":{"4":1}}],["角色菜单权限分配",{"2":{"103":1}}],["角色管理",{"2":{"103":1}}],["角色数组",{"2":{"59":1,"76":1}}],["角色",{"2":{"40":1}}],["资源共享",{"2":{"87":1}}],["资源目录下的文件",{"2":{"54":1}}],["资源文件",{"2":{"40":1}}],["资源",{"2":{"40":1,"63":1}}],["菜单管理",{"2":{"103":1}}],["菜单",{"2":{"40":1}}],["└─",{"2":{"40":8,"57":7}}],["└──",{"2":{"18":6}}],["核心包",{"2":{"40":1,"57":1}}],["├─core",{"2":{"57":1}}],["├─",{"2":{"40":15,"57":3}}],["├──",{"2":{"18":1}}],["清晰明了便于管理",{"2":{"39":1}}],["组件会根据字段智能选择",{"2":{"38":1}}],["零代码开发",{"2":{"37":1}}],["提高了代码的可维护性",{"2":{"63":1}}],["提高开发效率",{"2":{"36":1}}],["提示",{"2":{"40":1}}],["提供了极大的灵活性",{"2":{"63":1}}],["提供了简化的业务异常抛出工具",{"2":{"41":1}}],["提供了非常灵活的",{"2":{"21":1}}],["提供了一种高效且可靠的解决方案",{"2":{"8":1}}],["降低开发成本",{"2":{"36":1}}],["推荐",{"2":{"65":2,"110":1}}],["推荐两种快速开发方式",{"2":{"36":1}}],["推荐使用",{"0":{"28":1}}],["文件管理",{"2":{"103":1}}],["文件管理模块",{"2":{"40":1}}],["文件存放路径",{"2":{"96":1}}],["文件根地址",{"2":{"96":1}}],["文件等",{"2":{"63":1}}],["文件上传插件",{"2":{"112":1}}],["文件上传模式",{"2":{"96":1}}],["文件上传相关",{"2":{"96":1}}],["文件上传",{"0":{"95":1},"2":{"62":1,"96":1}}],["文件上传换成云存储",{"2":{"35":1}}],["文件内容",{"2":{"53":1}}],["文件后",{"2":{"47":1}}],["文件",{"2":{"38":1,"40":1,"47":2,"96":1}}],["文档",{"0":{"93":1,"108":1},"2":{"1":1}}],["运行系统",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1}}],["运行结果",{"2":{"53":1}}],["运行代码生成器",{"2":{"38":1}}],["运行",{"0":{"34":1}}],["运行后端",{"2":{"34":2}}],["运行后端和前端",{"2":{"32":1}}],["运行后端服务",{"0":{"29":1}}],["否则使用",{"2":{"48":1}}],["否则你将无法正常访问你的",{"2":{"33":1}}],["否则这个controller",{"2":{"18":1}}],["让前端能够自动生成eps",{"2":{"33":1}}],["创建实体类生成表",{"2":{"38":1}}],["创建docker",{"2":{"33":1}}],["创建",{"2":{"32":1,"47":1}}],["持久化连接相关配置",{"2":{"30":1}}],["持续添加更多的数据库支持",{"2":{"23":1}}],["$",{"2":{"96":1}}],["$1",{"2":{"30":1}}],["$upstream",{"2":{"30":1}}],["$uri",{"2":{"30":2}}],["$http",{"2":{"30":2}}],["$host$request",{"2":{"30":1}}],["$host",{"2":{"30":2}}],["$proxy",{"2":{"30":2}}],["$remote",{"2":{"30":5}}],["访问http",{"2":{"70":1}}],["访问如果登录页正常出现验证码",{"2":{"32":1}}],["访问",{"2":{"30":1,"69":1}}],["访问域名",{"2":{"27":1}}],["8",{"2":{"53":1,"60":3,"65":1,"68":2}}],["80",{"2":{"34":2}}],["8001",{"2":{"30":1,"34":2,"53":5,"69":2,"93":1}}],["86400s",{"2":{"30":1}}],["8s",{"2":{"23":2}}],["403",{"2":{"74":1}}],["401",{"2":{"74":1}}],["46",{"2":{"69":1}}],["45",{"2":{"69":3}}],["4b57",{"2":{"60":1}}],["47ac",{"2":{"60":1}}],["4fd03504",{"2":{"60":1}}],["4",{"0":{"30":1,"59":1,"70":1},"2":{"60":2,"63":1,"74":1}}],["改成自己的应用名称",{"2":{"29":1}}],["表示访问服务端接口而不是静态资源",{"2":{"30":1}}],["表示",{"2":{"29":2}}],["表单",{"2":{"15":1}}],["方便一张图片使用在多种场景",{"2":{"96":1}}],["方式二",{"0":{"82":1}}],["方式一",{"0":{"79":1},"1":{"80":1,"81":1}}],["方式",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1},"2":{"31":1,"76":1}}],["方式启动",{"2":{"29":1}}],["方法上",{"0":{"80":1}}],["方法去调用主应用的一些对象方法",{"2":{"53":1}}],["方法第一个参数如果为",{"2":{"42":1}}],["方法",{"2":{"20":1,"53":5}}],["重启生成表",{"2":{"38":1}}],["重启",{"2":{"29":1}}],["重启某个服务",{"2":{"29":1}}],["重写",{"0":{"20":1}}],["重写逻辑",{"2":{"16":2}}],["重写实现",{"0":{"16":1}}],["停止某个服务",{"2":{"29":1}}],["命令行安装",{"2":{"29":1}}],["到后端服务",{"2":{"27":1}}],["所以需要配置",{"2":{"27":1}}],["所有的",{"2":{"12":1}}],["安全考虑生产环境不会自动初始化数据库",{"2":{"27":1}}],["安装云存储插件",{"2":{"95":1}}],["安装插件将打包好的",{"2":{"62":1}}],["安装插件",{"0":{"62":1}}],["安装插件之后",{"2":{"53":1}}],["安装后",{"2":{"46":1}}],["安装",{"0":{"52":1},"2":{"28":1}}],["安装依赖",{"0":{"28":1},"2":{"27":1,"70":1}}],["安装宝塔",{"2":{"27":1}}],["恭喜你",{"2":{"27":1,"32":1}}],["反向代理",{"2":{"27":2}}],["编写实体类",{"2":{"38":1}}],["编译打包后端服务",{"2":{"27":1}}],["编码",{"0":{"7":1},"2":{"102":1}}],["上传模式",{"2":{"96":1}}],["上传前后端代码到服务器",{"2":{"27":1}}],["上面只是个例子",{"2":{"58":1}}],["上加了这个注解后",{"2":{"20":1}}],["官方多环境配置文档",{"2":{"27":1}}],["官网文档",{"2":{"21":1}}],["官网",{"2":{"1":1,"28":1}}],["查看服务的输出日志",{"2":{"29":1}}],["查看",{"2":{"27":1}}],["查询该用户所具有的权限并缓存",{"2":{"74":1}}],["查询模式querymodeenum",{"2":{"14":1}}],["查询连表字段",{"2":{"14":1}}],["查询另一张表的字段",{"2":{"14":1}}],["查询配置",{"0":{"14":1}}],["查询列表",{"2":{"13":1}}],["查询条件过滤",{"2":{"13":1,"15":1,"16":1,"93":1}}],["本地上传配置",{"2":{"96":1}}],["本地上传",{"2":{"95":1}}],["本地配置完数据库运行",{"2":{"27":1,"32":1}}],["本部署教程以",{"2":{"26":1}}],["本身",{"2":{"21":1}}],["以往的框架已经越来越不能满足现代化的开发需求",{"2":{"102":1}}],["以",{"2":{"68":1}}],["以前该怎么写还是怎么写",{"2":{"45":1}}],["以下包会打入jar",{"2":{"60":1}}],["以下是我们的一些计划",{"2":{"111":1}}],["以下是",{"2":{"31":1}}],["以下教程以",{"2":{"25":1}}],["以宝塔为例",{"0":{"27":1,"32":1}}],["以上包在主应用已经引入",{"2":{"60":1}}],["以上内容来自第三方相关产品的官方文档或第三方平台",{"2":{"22":1}}],["以上是针对entity单表查询方式",{"2":{"14":1}}],["低价云服务器推荐",{"2":{"25":1}}],["🔥",{"2":{"25":1}}],["因为有你们的支持",{"2":{"113":1}}],["因为这可能会造成数据丢失",{"2":{"24":1}}],["因此如果你需要开发",{"2":{"43":1}}],["因此会带来指数级的性能增长",{"2":{"21":1}}],["因此会带来更高的自主性",{"2":{"21":1}}],["切勿在生产环境开启自动建表功能",{"2":{"24":1}}],["并异步进行刷新用户权限",{"2":{"115":1}}],["并可以在init方法中初始化返回字段类型及数据组装函数定义",{"2":{"115":1}}],["并将用户信息存在整个请求过程中的",{"2":{"76":1}}],["并实现",{"2":{"53":1,"60":1}}],["并实现值的插入",{"2":{"47":1}}],["并定义表数据",{"2":{"47":1}}],["并调用大模型对其进行翻译",{"2":{"46":1}}],["并且支持表字段的修改",{"2":{"24":1}}],["并重写了",{"2":{"20":1}}],["节省了大量手动工作",{"2":{"24":1}}],["尤其是开发过程中频繁的新增表及变更表结构",{"2":{"24":1}}],["列出当前的服务",{"2":{"29":1}}],["列的配置",{"2":{"24":1}}],["列表查询",{"2":{"14":1}}],["而不用一味地堆功能",{"2":{"50":1}}],["而不需要关心数据库的表",{"2":{"24":1}}],["而且不需要改变任何原有代码",{"2":{"45":1}}],["而是也非常不灵活",{"2":{"43":1}}],["而是对它做一层封装",{"2":{"20":1}}],["有且只能有一个类被",{"2":{"60":1}}],["有时候开发时的配置和生产环境的配置是不一样的",{"2":{"54":1}}],["有些功能模块上线时",{"2":{"47":1}}],["有了该文件",{"2":{"33":1}}],["有一项重要的能力就是表结构自动维护",{"2":{"24":1}}],["有兴趣的可以关注我们",{"2":{"4":1}}],["用法",{"2":{"94":1}}],["用来判定用户是否有此权限",{"2":{"74":1}}],["用configattribute的集合作为value",{"2":{"74":1}}],["用权限的path作为map的key",{"2":{"74":1}}],["用户是系统操作者",{"2":{"103":1}}],["用户管理",{"2":{"103":1}}],["用户管理模块",{"2":{"40":1}}],["用户",{"2":{"76":1}}],["用户详情",{"2":{"74":1}}],["用户名",{"2":{"76":1}}],["用户名不存在",{"2":{"74":1}}],["用户名已存在",{"2":{"41":1,"42":3}}],["用户登录",{"2":{"74":1}}],["用户id",{"2":{"14":1}}],["用过",{"2":{"24":1}}],["理论上你只需修改一些不兼容的代码就可以正常运行了",{"2":{"23":1}}],["那样工作量太大了",{"2":{"23":1}}],["是否开启多租户",{"2":{"91":1}}],["是否支持在微服务项目下进行",{"2":{"22":1}}],["是一种软件架构模式",{"2":{"86":1}}],["是",{"2":{"63":1}}],["是插件的配置信息",{"2":{"58":1}}],["是软件国际化的标准缩写",{"2":{"44":1}}],["是具体的业务框架",{"2":{"23":1}}],["虽然",{"2":{"23":1}}],["星瑞格数据库",{"2":{"23":1}}],["华为",{"2":{"23":1}}],["华库",{"2":{"23":1}}],["行云数据库",{"2":{"23":1}}],["瀚高数据库",{"2":{"23":1}}],["神通数据库",{"2":{"23":1}}],["人大金仓数据库",{"2":{"23":1}}],["kyi=",{"2":{"53":1}}],["ky",{"2":{"46":1}}],["km",{"2":{"46":1}}],["ku",{"2":{"46":1}}],["kk",{"2":{"46":1}}],["ko",{"2":{"46":1}}],["kingbasees",{"2":{"23":1}}],["keyname",{"2":{"47":2}}],["keyword",{"2":{"14":1}}],["keywordlikefields",{"2":{"14":1}}],["key",{"2":{"9":1,"30":1,"47":1,"48":3,"49":3,"53":4,"58":1,"59":1,"94":2}}],["虚谷数据库",{"2":{"23":1}}],["达梦数据库",{"2":{"23":1}}],["及以上数据库",{"2":{"23":1}}],["及以下数据库",{"2":{"23":1}}],["及更高性能",{"2":{"22":1}}],["描述",{"2":{"23":1,"94":1}}],["欢迎联系我们",{"2":{"111":1}}],["欢迎提交pr",{"2":{"108":1}}],["欢迎纠正",{"2":{"22":1}}],["欢迎加入我们大家庭一起讨论",{"2":{"2":1}}],["若有错误",{"2":{"22":1}}],["项目中常见的问题",{"2":{"109":1}}],["项目是开源免费",{"2":{"105":1}}],["项目是前后端分离的",{"2":{"67":1}}],["项目启动自动插入数据参考",{"2":{"94":1}}],["项目按照模块化的方式组织",{"2":{"39":1}}],["项目部署",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1}}],["项目",{"2":{"22":1}}],["非低代码",{"2":{"37":1}}],["非",{"2":{"22":1}}],["quot",{"2":{"22":2,"41":2,"42":2}}],["querymodeenum",{"2":{"14":2}}],["querywrapper",{"2":{"14":6,"16":3,"21":1,"22":1}}],["query",{"2":{"11":1,"14":1}}],["和",{"2":{"22":1,"44":1}}],["和传统的",{"2":{"16":1}}],["借助其他框架或收费",{"2":{"22":1}}],["字典管理",{"2":{"103":1}}],["字典信息",{"2":{"81":1}}],["字典",{"2":{"46":1}}],["字典回写",{"2":{"22":1}}],["字段",{"2":{"59":1,"76":1}}],["字段解释",{"0":{"59":1}}],["字段模块",{"2":{"40":1}}],["字段加密",{"2":{"22":1}}],["字段权限",{"2":{"22":1}}],["字段的",{"2":{"22":1}}],["字段全匹配",{"2":{"14":1}}],["收费",{"2":{"22":4}}],["✔️",{"2":{"22":4}}],["审计",{"2":{"22":1}}],["乐观锁",{"2":{"22":1}}],["乐观锁更新",{"2":{"21":1}}],["未知",{"2":{"22":1}}],["传输",{"2":{"22":1}}],["无论是注解在方法还是类上",{"2":{"81":1}}],["无需更改原有代码详情",{"2":{"114":1}}],["无需授权的",{"2":{"105":1}}],["无需安装",{"2":{"68":1}}],["无需手动配置",{"2":{"45":1}}],["无需手动通过",{"2":{"42":1}}],["无需额外安装软件",{"2":{"8":1}}],["无法做到全部支持",{"2":{"23":1}}],["无其他第三方依赖",{"2":{"22":1}}],["配置完数据库直接启动",{"2":{"110":1}}],["配置系统菜单",{"2":{"103":1}}],["配置文件",{"0":{"82":1}}],["配置文件位于src",{"2":{"68":1}}],["配置数据库",{"0":{"68":1}}],["配置插件信息",{"2":{"58":1}}],["配置点3",{"2":{"30":1}}],["配置点2",{"2":{"30":1}}],["配置点1",{"2":{"30":1}}],["配置示例",{"0":{"30":1}}],["配置淘宝镜像",{"2":{"28":1}}],["配置",{"0":{"54":1,"73":1},"2":{"22":1,"27":1}}],["复合主键",{"2":{"22":1}}],["生成",{"2":{"38":1}}],["生成前端代码",{"2":{"38":1}}],["生成后端代码",{"2":{"38":1}}],["生成策略",{"2":{"22":1}}],["生成的路由前缀为",{"2":{"18":1}}],["❌",{"2":{"22":30}}],["✅国际化",{"2":{"46":1}}],["✅",{"2":{"22":51}}],["功能",{"2":{"110":1}}],["功能几乎跟nodejs",{"2":{"104":1}}],["功能或特点",{"2":{"22":1}}],["功能对比",{"0":{"22":1}}],["拦截器",{"2":{"21":1}}],["没有可初始化的插件",{"2":{"69":1}}],["没有任何的",{"2":{"21":1}}],["没有任何",{"2":{"21":1}}],["没有设置astype",{"2":{"14":1}}],["高棉语",{"2":{"46":1}}],["高性能",{"2":{"21":1}}],["高效的缓存解决方案",{"2":{"8":1}}],["逻辑删除",{"2":{"21":1,"22":1}}],["多个租户共享同一套应用程序代码和基础设施",{"2":{"87":1}}],["多语言是需要前后端共同支持的",{"2":{"45":1}}],["多语言的支持已经成为了一个必备的功能",{"2":{"44":1}}],["多租户的数据隔离有许多种方案",{"2":{"89":1}}],["多租户",{"0":{"86":1},"2":{"22":1,"86":1}}],["多数据源是否支持",{"2":{"22":2}}],["多数据源支持",{"2":{"22":1}}],["多种",{"2":{"22":1}}],["多张表",{"2":{"22":1}}],["多主键",{"2":{"21":1}}],["多表查询",{"2":{"21":1,"22":3}}],["稳定性越差",{"2":{"21":1}}],["依赖越多",{"2":{"21":1}}],["把控性和稳定性",{"2":{"21":1}}],["再无任何第三方依赖",{"2":{"21":1}}],["除了",{"2":{"21":1,"22":1,"23":1}}],["更新",{"0":{"113":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1}}],["更灵活",{"2":{"21":1}}],["更轻量",{"2":{"21":1,"22":2}}],["更加强大的",{"2":{"21":1}}],["更加简洁",{"2":{"12":1}}],["详细用法请查看",{"2":{"21":1}}],["集成了比",{"2":{"21":1}}],["根据",{"2":{"24":1}}],["根据一定规则生成",{"2":{"20":1}}],["根据列表查询单个信息",{"2":{"13":1}}],["自动编码功能",{"2":{"117":1}}],["自动编码",{"2":{"114":1}}],["自动生成前端页面",{"2":{"38":1}}],["自动映射成数据库的表结构",{"2":{"24":1}}],["自动建表",{"0":{"24":1}}],["自带的注解",{"2":{"20":1}}],["自定义路由注解",{"0":{"19":1}}],["自定义类型默认为",{"2":{"14":1}}],["自定义场景主要使用在关联表查询插件",{"2":{"14":1}}],["自定义查询模式",{"2":{"14":1}}],["自定义的查询方式",{"2":{"14":1}}],["包或其内部的类和资源",{"2":{"63":1}}],["包或类",{"2":{"63":1}}],["包具有以下几个显著的优势",{"2":{"63":1}}],["包的位置和版本",{"2":{"63":1}}],["包括本地文件系统",{"2":{"63":1}}],["包括一些核心的组件工具",{"2":{"40":1}}],["包时会想该插件注入",{"2":{"53":1}}],["包下创建",{"2":{"40":1}}],["包下加一级",{"2":{"18":1}}],["包",{"2":{"18":1,"40":1,"63":3}}],["在线",{"2":{"103":1}}],["在线演示",{"2":{"7":1}}],["在修改数据之前或之后做一些处理",{"2":{"85":1}}],["在配置文件中加需要忽略的路径",{"2":{"82":1}}],["在项目编译的时候会自动生成这些文件",{"2":{"110":1}}],["在项目根目录下",{"2":{"70":1}}],["在项目启动的时候会去加载该文件",{"2":{"47":1}}],["在后台插件管理页面",{"2":{"62":1}}],["在后台插件管理里可以动态修改",{"2":{"58":1}}],["在执行打包的过程",{"2":{"60":1}}],["在我们脚手架上你可以发现",{"2":{"60":1}}],["在开发过程中如果需要引入第三方类库",{"2":{"60":1}}],["在开发环境下重启",{"2":{"46":1}}],["在提供的插件脚手架中已经应用了常用的依赖如",{"2":{"60":1}}],["在插件导入时才能被识别到",{"2":{"60":1}}],["在打包的时候选择要打包的插件",{"2":{"57":1}}],["在加载",{"2":{"53":1}}],["在controller接口上加上",{"2":{"49":1}}],["在某个版本需要新增数据的话",{"2":{"47":1}}],["在官网下载并安装国际化多语言插件",{"2":{"46":1}}],["在新增功能模块时",{"2":{"40":1}}],["在",{"2":{"21":1,"40":2,"42":1,"47":1,"61":1,"63":1}}],["在任何一个系统中",{"2":{"21":1}}],["在历史版本中需在",{"2":{"18":1}}],["27",{"0":{"118":1}}],["2b8",{"2":{"68":1}}],["26",{"2":{"60":3}}],["2025",{"0":{"114":1}}],["2024",{"0":{"115":1,"116":1,"117":1,"118":1},"2":{"18":1,"53":8,"69":4}}],["20",{"2":{"94":1}}],["200",{"2":{"30":1}}],["2",{"0":{"28":1,"33":1,"53":1,"57":1,"68":1,"92":1,"116":1},"2":{"46":1,"60":5,"63":2,"74":1}}],["256x256",{"2":{"59":1}}],["25",{"0":{"115":1},"2":{"18":1}}],["31908",{"2":{"69":4}}],["383+08",{"2":{"69":1}}],["382+08",{"2":{"69":1}}],["38",{"2":{"69":4}}],["3306",{"2":{"68":1}}],["32",{"2":{"60":1}}],["32615",{"2":{"53":8}}],["3c64059230d0",{"2":{"60":1}}],["3600s",{"2":{"30":3}}],["3",{"0":{"29":1,"34":1,"54":1,"58":1,"69":1,"115":1},"2":{"18":1,"46":1,"60":1,"63":1,"65":2,"69":1,"74":1,"99":1,"100":1}}],["3000s",{"2":{"30":2}}],["302",{"2":{"30":1}}],["301",{"2":{"30":1}}],["304",{"2":{"30":1}}],["30",{"2":{"11":1}}],["该功能主要完成系统用户配置",{"2":{"103":1}}],["该接口需要登录鉴权",{"2":{"49":1}}],["该接口解析的前缀则是",{"2":{"18":1}}],["该文件是前端自动扫描后端接口生成的",{"2":{"33":1}}],["该类继承了",{"2":{"20":1}}],["该父类已经实现了以下六个基础方法",{"2":{"12":1}}],["同时如果个别接口需要忽略记录请求日志",{"2":{"71":1}}],["同级",{"2":{"70":1}}],["同级下有个",{"2":{"18":1}}],["同样也可以对",{"2":{"16":1}}],["转成小写替换掉",{"2":{"18":1}}],["与前端紧密结合",{"2":{"95":1}}],["与其它实现方案不同的是",{"2":{"45":1}}],["与",{"2":{"18":1,"72":1}}],["ximu",{"2":{"114":1}}],["x26",{"2":{"68":2}}],["xml",{"2":{"40":1,"60":2,"61":2}}],["x",{"2":{"30":7,"53":1,"100":1,"118":1}}],["xcloud",{"2":{"23":1}}],["xugu",{"2":{"23":1}}],["xxxxx",{"2":{"54":2}}],["xxx",{"2":{"18":3,"53":2,"58":2}}],["x3c",{"2":{"13":1,"14":4,"15":1,"16":5,"20":1,"42":2,"53":1,"60":81,"61":4,"74":13,"93":1,"94":1}}],["模块化",{"2":{"63":1}}],["模块包",{"2":{"40":1}}],["模块名和",{"2":{"18":1}}],["模块名",{"2":{"18":2}}],["模块目录",{"2":{"18":1}}],["│─",{"2":{"57":1}}],["│",{"2":{"18":17,"40":36,"57":12}}],["原理参考美团点评分布式id",{"2":{"94":1}}],["原理",{"0":{"17":1,"74":1},"1":{"18":1,"19":1,"20":1}}],["原生",{"2":{"9":1}}],["接口的请求入参日志",{"2":{"103":1}}],["接口",{"2":{"18":1,"33":1}}],["接口路由规则",{"0":{"18":1}}],["接口到前端页面的一键生成",{"2":{"7":1,"37":1}}],["接下来我们看看实现的原理",{"2":{"16":1}}],["对系统中经常使用的一些较为固定的数据进行维护",{"2":{"103":1}}],["对系统动态配置常用参数",{"2":{"103":1}}],["对于需要租户隔离的表",{"2":{"92":1}}],["对数据进行隔离",{"2":{"89":1}}],["对应实体",{"2":{"85":2}}],["对应插件内的方法",{"2":{"53":1}}],["对应请求参数中的",{"2":{"14":1}}],["对应请求参数中同名参数",{"2":{"14":1}}],["对",{"2":{"22":1}}],["对比一下是简化了不少",{"2":{"16":1}}],["进行重写",{"2":{"16":1}}],["中获得",{"2":{"76":1}}],["中实现动态加载",{"2":{"63":1}}],["中的",{"2":{"61":1}}],["中排除掉不打入jar",{"2":{"60":2}}],["中重写方法",{"2":{"16":1}}],["中加非存储数据库的字段",{"2":{"14":1}}],["r1",{"2":{"114":1}}],["rawpassword",{"2":{"74":4}}],["rich",{"2":{"47":1}}],["ru",{"2":{"46":1}}],["runtimeexception",{"2":{"60":1}}],["run",{"2":{"34":2,"47":1,"70":1}}],["roleids",{"2":{"74":3,"76":1}}],["ro",{"2":{"46":1}}],["root",{"2":{"29":1,"30":1,"68":1}}],["row",{"2":{"22":1}}],["rpc",{"2":{"22":1}}],["r",{"2":{"15":2,"16":1,"42":17,"49":2,"76":1,"80":2,"96":4}}],["refreshtoken可以当token使用问题",{"2":{"116":1}}],["refreshexpire",{"2":{"73":1}}],["replace",{"2":{"74":1}}],["replaceall",{"2":{"74":1}}],["record",{"2":{"71":1}}],["receive",{"2":{"49":3}}],["recycle",{"2":{"40":1}}],["reentrantlock",{"2":{"48":1}}],["required",{"2":{"96":1}}],["requiredargsconstructor",{"2":{"47":1,"49":1,"53":2,"96":1}}],["requirenonnull",{"2":{"49":1}}],["requestpart",{"2":{"96":1}}],["requestparam",{"2":{"53":3}}],["requestparams",{"2":{"13":1,"14":2,"15":4,"16":5,"42":4,"49":2,"71":1,"76":2,"85":4,"93":1}}],["requestmatchers",{"2":{"74":1}}],["requestmappinginfo",{"2":{"20":2}}],["requestmappinghandlermapping",{"2":{"20":2}}],["requestmapping",{"2":{"19":2,"53":1}}],["requestcontextholder",{"2":{"49":1}}],["requestattribute",{"2":{"15":1,"49":1,"76":1}}],["request",{"2":{"13":1,"14":2,"15":1,"16":1,"49":2,"71":3,"74":2,"93":1,"96":2}}],["requests",{"2":{"0":1}}],["remark",{"2":{"47":2}}],["remote",{"2":{"30":2}}],["rewrite",{"2":{"30":1}}],["readme",{"2":{"58":2,"59":1}}],["readbytes",{"2":{"53":1}}],["read",{"2":{"30":2}}],["real",{"2":{"30":2}}],["registry",{"2":{"28":2}}],["redirect",{"2":{"30":1}}],["redis",{"2":{"8":6,"35":1}}],["redshift",{"2":{"23":2}}],["relationonetomany",{"2":{"14":2}}],["relations",{"2":{"14":2}}],["response",{"2":{"74":2}}],["responsebody",{"2":{"53":2}}],["restaccessdeniedhandler",{"2":{"74":3}}],["restart",{"2":{"29":2}}],["restcontrolleradvice",{"2":{"42":1}}],["result",{"2":{"11":3,"53":8}}],["resources",{"2":{"40":1,"47":1,"54":2,"57":1,"68":1,"96":1}}],["resource",{"2":{"10":1,"71":1,"74":10}}],["return",{"2":{"9":1,"10":1,"11":3,"15":1,"16":2,"20":1,"42":8,"49":2,"53":2,"60":1,"74":13,"80":1,"96":2}}],["将由以下这个类实现自动配置模块路由",{"2":{"20":1}}],["将",{"2":{"15":1}}],["gt",{"2":{"65":3,"68":1,"92":1,"99":3,"110":3,"114":1}}],["grantedauthority>",{"2":{"74":1}}],["graalvm",{"2":{"65":1,"99":1}}],["groupid>org",{"2":{"60":1}}],["groupid>com",{"2":{"60":1}}],["groupid>cn",{"2":{"60":1}}],["groupid>",{"2":{"60":3}}],["greenplum",{"2":{"23":2}}],["gitcode",{"2":{"106":1,"107":1}}],["gitee",{"2":{"56":1,"106":1,"107":1,"108":1}}],["github",{"2":{"56":1,"106":1,"107":1,"108":1}}],["g",{"2":{"28":1,"29":1}}],["goal>",{"2":{"60":1}}],["goal>shade",{"2":{"60":1}}],["goals>",{"2":{"60":2}}],["goldilocks",{"2":{"23":2}}],["goodslist",{"2":{"14":1}}],["gbase",{"2":{"23":3}}],["gauss",{"2":{"23":2}}],["getbytes",{"2":{"74":2}}],["geturls",{"2":{"74":1}}],["getusername",{"2":{"42":4,"74":3}}],["getsecureobjectclass",{"2":{"74":1}}],["getstatus",{"2":{"74":2}}],["getstr",{"2":{"15":1}}],["getroles",{"2":{"74":1}}],["getresponse",{"2":{"74":1}}],["getresourceasstream",{"2":{"53":1}}],["getrequesturl",{"2":{"74":1}}],["getrequesturi",{"2":{"49":1}}],["getrequest",{"2":{"49":1,"74":1}}],["getrequestattributes",{"2":{"49":1}}],["getdepartmentidsbyroleids",{"2":{"74":1}}],["getperms",{"2":{"74":1}}],["getparent",{"2":{"53":1}}],["getparentresource",{"2":{"53":2}}],["getpasswordv",{"2":{"74":1}}],["getpassword",{"2":{"42":2,"74":1}}],["getapp",{"2":{"80":1}}],["getadminuserinfo",{"2":{"76":1}}],["getadminusername",{"2":{"76":1}}],["getauthenticationmanager",{"2":{"74":1}}],["getallconfigattributes",{"2":{"74":1}}],["getallperms",{"2":{"74":1}}],["getattributes",{"2":{"74":1}}],["getattribute",{"2":{"71":1}}],["getabsolutepath",{"2":{"63":1}}],["getannotationsbytype",{"2":{"20":1}}],["getinstance",{"2":{"53":1}}],["getid",{"2":{"42":2,"74":6}}],["getone",{"2":{"42":2,"74":1}}],["get等请求方式是否正确",{"2":{"42":1}}],["getmode",{"2":{"96":1}}],["getmapping",{"2":{"76":1,"80":1,"96":1}}],["getmappingformethod",{"0":{"20":1},"2":{"20":3}}],["getmessage",{"2":{"42":7}}],["getchain",{"2":{"74":1}}],["getcontextclassloader",{"2":{"63":1}}],["getcode",{"2":{"42":1}}],["getclassloader",{"2":{"53":1}}],["getclass",{"2":{"53":1}}],["getcurrentuserid",{"2":{"14":1,"49":2,"76":1,"77":1}}],["getter",{"2":{"14":1}}],["getnum",{"2":{"11":1}}],["getlogistics",{"2":{"11":1}}],["get",{"2":{"10":1,"11":2,"13":1,"14":2,"49":1,"53":2,"60":1,"74":1}}],["订单id",{"2":{"94":1}}],["订单商品列表",{"2":{"14":1}}],["订单信息",{"2":{"14":1}}],["订单产品列表也一并查出",{"2":{"14":1}}],["如文件上传",{"2":{"117":1}}],["如支付",{"2":{"102":1}}],["如不占用主服务器带宽",{"2":{"96":1}}],["如阿里云",{"2":{"95":1}}],["如需启用调整为",{"2":{"94":2}}],["如我们这边示例使用到了中文转拼音",{"2":{"60":1}}],["如",{"2":{"35":1,"95":1,"96":1}}],["如下表格所示",{"2":{"23":1}}],["如下面这个订单查询",{"2":{"14":1}}],["如果方便请点下",{"2":{"113":1}}],["如果你有更好的建议",{"2":{"111":1}}],["如果你是自动化部署",{"2":{"33":1}}],["如果文档有缺失",{"2":{"108":1}}],["如果登录的用户token信息有携带tenantid",{"2":{"89":1}}],["如果不在权限表中则放行",{"2":{"74":1}}],["如果不满足需求",{"2":{"16":1}}],["如果项目中启用了redis",{"2":{"48":1}}],["如果同一张表历史已经有初始化过数据",{"2":{"47":1}}],["如果这个文件存在",{"2":{"46":1}}],["如果没效",{"2":{"30":1}}],["如果一切正常",{"2":{"27":1}}],["如果在权限表中",{"2":{"74":1}}],["如果在原文件直接修改将不生效",{"2":{"47":1}}],["如果在",{"2":{"18":1}}],["如果我们有需要连表查询",{"2":{"14":1}}],["如果我们的项目对你有用",{"2":{"2":1}}],["web设置配合使用",{"2":{"96":1}}],["web设置",{"2":{"96":1}}],["web",{"2":{"53":4,"96":1}}],["wrappers",{"2":{"42":2,"74":1}}],["without",{"2":{"60":1}}],["with",{"2":{"14":1}}],["wuliu",{"2":{"11":1}}],["还可以对图片进行各种如压缩",{"2":{"96":1}}],["还可以了解到一些前沿的技术",{"2":{"4":1}}],["还有",{"2":{"14":1}}],["也支持绝对路径",{"2":{"96":1}}],["也可以注解在类上",{"2":{"81":1}}],["也可以使用别人开发的插件",{"2":{"50":1}}],["也可以自己定义vo",{"2":{"14":1}}],["也就是后续你有新增相关的内容",{"2":{"46":1}}],["也对此做了支持",{"2":{"44":1}}],["也希望广大开发者粉丝帮助完善文档",{"2":{"0":1}}],["实际开发中可以根据自己的需求来配置",{"2":{"58":1}}],["实现功能可插拔",{"2":{"103":1}}],["实现应用程序的快速扩展和升级",{"2":{"63":1}}],["实现方法",{"2":{"63":1}}],["实现动态加载的技术方案",{"2":{"63":1}}],["实现原理",{"0":{"63":1},"2":{"46":1}}],["实现",{"0":{"45":1,"88":1},"1":{"89":1},"2":{"48":1}}],["实现简单功能从",{"2":{"7":1,"37":1}}],["实例数量",{"2":{"29":1}}],["实体需以",{"2":{"47":1}}],["实体中",{"2":{"14":1}}],["实体",{"2":{"14":1,"24":1}}],["默认是相对路径",{"2":{"96":1}}],["默认禁用",{"2":{"94":2}}],["默认集成springdoc",{"2":{"93":1}}],["默认关闭",{"2":{"91":1}}],["默认忽略app端接口",{"2":{"71":1}}],["默认账户密码",{"2":{"70":1}}],["默认的日志位置",{"2":{"29":1}}],["默认实现了通用的六个接口方法",{"2":{"16":1}}],["默认实现了两种缓存",{"2":{"8":1}}],["默认为map",{"2":{"14":1}}],["默认为entity",{"2":{"14":1}}],["默认转成map",{"2":{"14":1}}],["连表查询",{"2":{"14":1}}],["utf",{"2":{"53":1}}],["util",{"2":{"53":4}}],["uniindex",{"2":{"94":1}}],["union",{"2":{"22":2}}],["unlock",{"2":{"48":1,"49":1}}],["ug",{"2":{"46":1}}],["uk",{"2":{"46":1}}],["ui",{"2":{"38":1,"82":1,"93":1,"101":1}}],["uploadmode",{"2":{"96":2}}],["uploadpath",{"2":{"96":1}}],["upload",{"2":{"59":1,"82":1,"96":5}}],["upgrade",{"2":{"30":6}}],["updates",{"2":{"53":1}}],["update",{"2":{"12":1,"13":1,"14":1,"15":1,"16":1,"81":1,"93":1}}],["uri$is",{"2":{"30":1}}],["urlclassloader",{"2":{"63":2}}],["url",{"2":{"15":1,"63":3,"68":1,"74":2,"96":1}}],["uxdb",{"2":{"23":1}}],["useunicode=true",{"2":{"68":1}}],["useplugin",{"2":{"53":2}}],["usecache",{"2":{"53":2}}],["usestatus",{"2":{"14":1}}],["users",{"2":{"96":2}}],["userinfo",{"2":{"74":1,"76":2}}],["userid",{"2":{"14":1,"76":2,"77":1}}],["userdetails",{"2":{"74":2}}],["userdetailsservice",{"2":{"74":4}}],["usernamepasswordauthenticationfilter",{"2":{"74":1}}],["usernamenotfoundexception",{"2":{"74":2}}],["username",{"2":{"68":1,"74":2,"76":2}}],["user",{"2":{"14":5,"15":2,"18":2,"40":1}}],["epsevent",{"2":{"69":1}}],["eps",{"2":{"69":2,"80":2}}],["eps识别不了",{"2":{"18":1}}],["eo",{"2":{"46":1}}],["eu",{"2":{"46":1}}],["et",{"2":{"46":1}}],["element",{"2":{"101":1}}],["else",{"2":{"53":1}}],["el",{"2":{"46":1}}],["es",{"2":{"46":1}}],["enable",{"2":{"91":1,"94":1}}],["enable修改为",{"2":{"91":1}}],["enablewebsecurity",{"2":{"74":1}}],["encodedpassword",{"2":{"74":2}}],["encode",{"2":{"74":1}}],["entrypointunauthorizedhandler",{"2":{"74":3}}],["entity",{"2":{"14":8,"22":2,"40":2,"42":12,"47":1}}],["en",{"2":{"46":1}}],["error",{"2":{"42":10}}],["e",{"2":{"42":19,"60":2}}],["expression",{"2":{"60":2}}],["expire",{"2":{"73":1}}],["expiretime",{"2":{"48":1,"49":1}}],["expires",{"2":{"30":1}}],["excluding",{"2":{"60":14}}],["exclude>cn",{"2":{"60":2}}],["exclude>jakarta",{"2":{"60":1}}],["exclude>io",{"2":{"60":4}}],["exclude>",{"2":{"60":16}}],["exclude>org",{"2":{"60":9}}],["excludes>",{"2":{"60":2}}],["exceptionhandling",{"2":{"74":1}}],["exceptionhandler",{"2":{"42":6}}],["exception",{"2":{"42":2,"60":1,"74":2}}],["execution",{"2":{"110":1}}],["execution>",{"2":{"60":2}}],["executions>",{"2":{"60":2}}],["exec",{"2":{"53":5}}],["extern",{"2":{"53":1}}],["extends",{"2":{"13":1,"14":3,"15":1,"16":2,"20":1,"53":1,"60":1,"74":1,"93":1,"94":1}}],["extractedmenu",{"2":{"47":1}}],["extracteddb",{"2":{"47":1}}],["equals",{"2":{"74":1}}],["eq",{"2":{"14":2,"42":2,"74":2}}],["针对这种场景",{"2":{"14":1}}],["zh",{"2":{"14":3,"46":2}}],["false",{"2":{"91":1,"94":1,"96":1}}],["favicon",{"2":{"71":1,"82":1}}],["fa",{"2":{"46":1}}],["frameoptionsconfig",{"2":{"74":1}}],["frameoptions",{"2":{"74":1}}],["fr",{"2":{"46":1}}],["front",{"2":{"30":1}}],["from",{"2":{"14":1,"22":1,"60":13}}],["form",{"2":{"96":1}}],["format",{"2":{"60":7}}],["for",{"2":{"30":4,"69":1,"74":2}}],["forwarded",{"2":{"30":4}}],["fluent",{"2":{"22":1}}],["flex版本",{"2":{"114":1}}],["flex",{"2":{"14":3,"21":2,"22":1,"23":2,"91":1,"100":1,"110":1}}],["filterconfig",{"2":{"74":2}}],["filterchain",{"2":{"71":3,"74":1}}],["filterinvocation",{"2":{"74":5}}],["filterinvocationsecuritymetadatasource",{"2":{"74":2}}],["filter",{"2":{"71":1,"74":1}}],["fileuploadstrategyfactory",{"2":{"96":4}}],["filepath",{"2":{"54":1}}],["files",{"2":{"30":1,"96":2}}],["file",{"2":{"8":1,"63":2,"96":4}}],["finally",{"2":{"49":1,"74":1}}],["final",{"2":{"48":1,"49":1,"94":1,"96":1}}],["fi",{"2":{"46":1,"74":7}}],["firebird",{"2":{"23":2}}],["fieldeq",{"2":{"14":1}}],["具体看",{"2":{"14":2}}],["返回给",{"2":{"20":1}}],["返回字段",{"2":{"14":1}}],["返回哪些字段等",{"2":{"13":1,"15":1,"16":1,"93":1}}],["需和上面的",{"2":{"96":1}}],["需要提取初始化到上面那个",{"2":{"94":1}}],["需要对应的表实体继承对象进行调整",{"2":{"92":1}}],["需要手动开启",{"2":{"91":1}}],["需要分别拉取前后端代码到本地",{"2":{"67":1}}],["需要初始化一些数据",{"2":{"47":1}}],["需要确保前端和后端在本地运行过一次",{"2":{"33":1}}],["需要通过下面的",{"2":{"14":1}}],["需要组装数据",{"2":{"14":1}}],["需要返回的字段分布在各个表里",{"2":{"14":1}}],["需要模糊查询的字段",{"2":{"14":1}}],["需安装",{"2":{"8":1}}],["604800",{"2":{"73":1}}],["6",{"2":{"13":1,"60":12,"65":1,"99":1}}],["6379",{"2":{"8":1}}],["等包",{"2":{"40":1}}],["等待数据库初始化完成",{"2":{"27":1,"32":1}}],["等等",{"2":{"22":1}}],["等参数封装在了一个",{"2":{"15":1}}],["等",{"2":{"13":1,"22":1,"27":1,"38":1,"60":2}}],["删除某个服务",{"2":{"29":1}}],["删除",{"2":{"13":1,"103":1}}],["新增后台扩展插件",{"2":{"117":1}}],["新增一个",{"2":{"40":1}}],["新增",{"2":{"13":1,"114":2,"115":4,"116":3,"117":1}}],["这将会给我们带来更多的动力",{"2":{"113":1}}],["这些方式都可以解决这个问题",{"2":{"110":1}}],["这边使用到了",{"2":{"60":1}}],["这会使得打包结果很臃肿",{"2":{"60":1}}],["这个可能会给你带来巨大的帮助",{"2":{"43":1}}],["这个解析规则在",{"2":{"18":1}}],["这让我们可以可以专注于业务逻辑和实体",{"2":{"24":1}}],["这样就需要在entity加上另一张表的的字段",{"2":{"14":1}}],["这样就默认实现了以下六个接口",{"2":{"13":1}}],["这是",{"2":{"0":1}}],["v3",{"2":{"82":1}}],["vi",{"2":{"46":1}}],["v8",{"0":{"44":1,"86":1,"114":1}}],["vue3",{"2":{"101":1}}],["vue",{"2":{"33":1,"34":2,"107":3}}],["verify",{"2":{"60":1}}],["version>3",{"2":{"60":1}}],["version>2",{"2":{"60":1}}],["version>",{"2":{"60":3}}],["version>5",{"2":{"60":1}}],["version",{"2":{"30":2,"58":1,"59":1}}],["vertica",{"2":{"23":2}}],["valid",{"2":{"30":1}}],["values",{"2":{"53":1}}],["value",{"2":{"13":1,"14":2,"15":1,"16":1,"19":1,"47":1,"81":1,"93":1,"94":1,"96":4}}],["v7",{"0":{"115":1,"116":1,"117":1,"118":1},"2":{"18":1,"53":1}}],["void",{"2":{"13":1,"14":2,"15":1,"16":1,"38":1,"47":1,"53":3,"71":1,"74":6,"85":2,"93":1}}],["nio",{"2":{"53":5}}],["nl",{"2":{"46":1}}],["nb",{"2":{"46":1}}],["n",{"2":{"44":1,"103":1}}],["next",{"2":{"94":1}}],["net",{"2":{"60":4}}],["network",{"2":{"32":1,"33":2,"34":2}}],["new",{"2":{"38":2,"42":2,"60":2,"63":4,"74":12}}],["npm",{"2":{"29":1,"70":2}}],["npmmirror",{"2":{"28":1}}],["nginx",{"0":{"30":1},"2":{"27":3}}],["now",{"2":{"53":2}}],["norepeatsubmitaspect",{"2":{"49":1}}],["norepeatsubmit",{"2":{"48":1,"49":6}}],["no",{"2":{"30":1,"46":1}}],["node",{"2":{"26":1}}],["nodejs",{"2":{"25":1,"27":1}}],["notnull",{"2":{"14":1,"94":3}}],["name>",{"2":{"61":1}}],["name>my",{"2":{"61":1}}],["name",{"2":{"13":1,"14":3,"15":1,"16":1,"19":1,"29":1,"34":2,"47":2,"58":1,"59":1,"68":1,"93":1,"96":1}}],["null",{"2":{"11":1,"41":1,"42":2,"47":2,"53":1,"60":1,"74":3}}],["number",{"2":{"29":1}}],["num",{"2":{"11":4}}],["示例",{"0":{"13":1}}],["使得代码更加清晰",{"2":{"63":1}}],["使得可以在插件中获取主应用中的",{"2":{"53":1}}],["使得同一个软件可以面向不同语言地区的用户",{"2":{"44":1}}],["使得",{"2":{"12":1}}],["使用cool",{"2":{"53":1}}],["使用缓存",{"2":{"53":1}}],["使用插件",{"0":{"51":1},"1":{"52":1,"53":1,"54":1}}],["使用了关联查询",{"2":{"14":1}}],["使用",{"0":{"9":1,"46":1,"90":1,"96":1},"1":{"91":1,"92":1},"2":{"49":1}}],["lt",{"2":{"46":1}}],["lv",{"2":{"46":1}}],["length",{"2":{"94":1}}],["leafallocentity>",{"2":{"94":1}}],["leafallocentity",{"2":{"94":1}}],["leaf",{"2":{"94":3}}],["lealone",{"2":{"23":2}}],["left",{"2":{"22":1}}],["leftjoin",{"2":{"14":2}}],["loaduserbyusername",{"2":{"74":1}}],["loadresourcedefine",{"2":{"74":2}}],["lombok",{"2":{"53":2,"60":2}}],["local",{"2":{"68":1,"96":2}}],["locations",{"2":{"96":1}}],["location",{"2":{"30":3}}],["lockkey",{"2":{"48":1}}],["logurls",{"2":{"71":1}}],["logo",{"2":{"58":2,"59":2}}],["log`",{"2":{"53":1}}],["log",{"2":{"42":5,"47":1}}],["logs",{"2":{"29":3}}],["logistics",{"2":{"11":2}}],["long",{"2":{"14":1,"42":2,"49":2,"74":2,"76":4,"94":2}}],["list和page支持关联查询",{"2":{"115":1}}],["list",{"2":{"12":1,"13":1,"14":2,"15":1,"16":1,"29":1,"74":1,"81":1,"93":1}}],["jwtauthenticationtokenfilter",{"2":{"74":3}}],["jwtsecurityconfig",{"2":{"74":1}}],["jwtuser",{"2":{"74":6}}],["jwtuserdetailsserviceimpl",{"2":{"74":1}}],["jwt",{"2":{"72":1,"74":1}}],["jdbc",{"2":{"68":2}}],["jdk",{"2":{"65":1,"99":1}}],["jcl",{"2":{"60":2}}],["jakarta",{"2":{"60":3}}],["jarfilepath",{"2":{"63":1}}],["jarurl",{"2":{"63":2}}],["jar",{"2":{"53":1,"60":31,"63":9}}],["ja",{"2":{"46":1}}],["javalong",{"2":{"77":1}}],["javaurl",{"2":{"63":1}}],["javapackage",{"2":{"47":1,"53":2,"60":1}}],["javapublic",{"2":{"14":1,"19":1,"20":1,"38":1,"42":2,"71":1}}],["java文件",{"2":{"18":1}}],["java",{"2":{"0":1,"1":1,"8":1,"9":1,"10":1,"11":1,"13":1,"14":2,"15":1,"16":2,"18":3,"24":1,"25":1,"38":2,"40":1,"42":1,"49":2,"53":10,"56":2,"57":2,"60":2,"61":1,"63":1,"65":1,"69":6,"74":4,"76":3,"80":1,"81":1,"85":2,"93":1,"94":1,"96":1,"99":1,"106":3,"108":2}}],["js",{"2":{"29":1,"71":1,"82":1}}],["json参数",{"2":{"47":1}}],["json",{"2":{"47":7,"54":1,"57":1,"58":2,"60":2,"70":1,"94":1}}],["json也提交到代码仓库",{"2":{"33":1}}],["json文件",{"2":{"33":1,"47":1}}],["jsonobject",{"2":{"13":1,"14":2,"15":3,"16":3,"42":2,"49":1,"71":1,"76":1,"85":2,"93":1}}],["jsonutil",{"2":{"11":1,"14":1}}],["jpa",{"2":{"24":2}}],["joinpoint",{"2":{"49":2}}],["join",{"2":{"22":2}}],[">",{"2":{"11":1,"14":1,"20":1,"60":5,"74":10}}],["物流单号",{"2":{"11":1}}],["通过在tenantentity中加入指定的列",{"2":{"89":1}}],["通过在方法上加tokenignore注解可以的接口不会进行",{"2":{"80":1}}],["通过资源共享降低运营和维护成本",{"2":{"87":1}}],["通过动态加载",{"2":{"63":2}}],["通过反射实现",{"2":{"53":1}}],["通过拖动配置",{"2":{"43":1}}],["通过",{"2":{"42":1,"63":1}}],["通过管理后台菜单管理的快速创建即可生成",{"2":{"38":1}}],["通过独特的架构",{"2":{"21":1}}],["通过这种方式",{"2":{"14":1}}],["通过coolcache缓存模板",{"0":{"11":1}}],["通过微调大模型学习框架特有写法",{"2":{"7":1,"37":1}}],["我是插件",{"2":{"60":1}}],["我们还引入了其他包",{"2":{"60":1}}],["我们还可以通过自定义方言的方式",{"2":{"23":1}}],["我们提供了插件脚手架",{"2":{"56":1}}],["我们提供了插件系统",{"2":{"50":1}}],["我们可以在运行时动态地加载外部的",{"2":{"63":1}}],["我们可以通过配置文件来实现",{"2":{"54":1}}],["我们可以使用",{"2":{"14":1}}],["我们正在适配",{"2":{"23":1}}],["我们不直接使用",{"2":{"20":1}}],["我们会尽力完善文档",{"2":{"0":1}}],["我被缓存了",{"2":{"9":1}}],["我被调用了",{"2":{"9":1}}],["ico",{"2":{"71":1,"82":1}}],["img",{"2":{"60":1}}],["import",{"2":{"53":14,"60":6}}],["impala",{"2":{"23":2}}],["implements",{"2":{"9":1,"10":1,"16":1,"47":1,"71":1,"74":3}}],["ioexception",{"2":{"71":1,"74":2}}],["ioutil",{"2":{"53":2}}],["io",{"2":{"53":2,"60":2}}],["it",{"2":{"46":1}}],["i18n下生成对应种类的语言文件",{"2":{"46":1}}],["i18n",{"2":{"44":1,"46":1}}],["illegalargumentexception",{"2":{"42":2,"74":2}}],["ip",{"2":{"30":2}}],["i",{"2":{"29":2,"44":1}}],["ignoredurlsproperties",{"2":{"74":3}}],["ignored",{"2":{"71":1,"82":1}}],["ignore",{"2":{"14":2}}],["is",{"2":{"69":1}}],["isnotempty",{"2":{"14":1}}],["isempty",{"2":{"11":1,"53":1,"74":1}}],["if",{"2":{"11":1,"14":1,"42":2,"48":1,"53":1,"74":2}}],["in",{"2":{"60":1}}],["including",{"2":{"60":2}}],["inputstream",{"2":{"53":4}}],["into",{"2":{"53":1}}],["interceptorstatustoken",{"2":{"74":1}}],["internationalization",{"2":{"44":1}}],["interface",{"2":{"19":1}}],["integer",{"2":{"10":1,"76":1,"94":1}}],["insert",{"2":{"53":4}}],["instances",{"2":{"29":1}}],["install",{"2":{"28":1,"29":1,"70":1}}],["inner",{"2":{"22":1}}],["index",{"2":{"14":1,"30":1,"93":1}}],["init",{"2":{"13":1,"14":2,"15":1,"16":1,"38":1,"69":1,"74":1,"93":1}}],["informix",{"2":{"23":2}}],["info",{"2":{"12":1,"13":1,"14":5,"15":1,"16":1,"18":3,"20":5,"47":1,"53":5,"60":15,"69":4,"81":1,"93":1}}],["invokeotherplugin",{"2":{"53":1}}],["invokemain",{"2":{"53":3,"60":1}}],["invokemethod",{"2":{"53":4}}],["invokeplugin",{"2":{"53":11,"60":2}}],["invoke",{"2":{"11":4,"74":2}}],["idea",{"2":{"110":1}}],["idgenservice",{"2":{"94":3}}],["id",{"2":{"9":1,"10":1,"14":4,"22":1,"46":1,"76":1,"94":1}}],["obtainsecuritymetadatasource",{"2":{"74":1}}],["observation",{"2":{"60":3}}],["objutil",{"2":{"11":1,"14":1,"53":2}}],["objectutil",{"2":{"74":1}}],["object中包含用户请求request",{"2":{"74":1}}],["objects",{"2":{"49":1}}],["object",{"2":{"9":1,"10":1,"11":2,"16":1,"49":1,"53":4,"60":2,"74":1}}],["ossaccesskeyid=ltai5t8xtpd99yzsjqcc",{"2":{"53":1}}],["oss",{"2":{"35":1,"53":3,"95":1,"96":1}}],["oscar",{"2":{"23":1}}],["ofmillis",{"2":{"48":1,"49":1}}],["ofminutes",{"2":{"11":1}}],["official",{"2":{"56":2,"106":2,"107":2,"108":2}}],["off",{"2":{"30":1}}],["open",{"2":{"82":1}}],["openapi",{"2":{"69":1}}],["opengauss",{"2":{"23":2}}],["operation",{"2":{"49":1,"96":2}}],["option",{"2":{"16":2}}],["oceanbase",{"2":{"23":2}}],["org",{"2":{"53":5,"60":8,"114":1}}],["oracle12c",{"2":{"23":2}}],["oracle11g",{"2":{"23":1}}],["oracle",{"2":{"23":1}}],["ordergoodsentity>",{"2":{"14":1}}],["order",{"2":{"14":1,"40":2}}],["orderid",{"2":{"11":1,"14":1,"94":4}}],["orderinfoentity>",{"2":{"14":1}}],["orderinfoentity",{"2":{"11":1,"14":1}}],["ok",{"2":{"15":1,"49":1,"80":1,"96":2}}],["o",{"2":{"14":2,"69":1,"74":3}}],["one",{"2":{"30":1}}],["on",{"2":{"14":1}}],["out",{"2":{"9":1,"15":1,"53":5,"60":1}}],["override",{"2":{"9":1,"10":1,"13":1,"14":1,"15":1,"16":3,"20":1,"47":1,"53":1,"60":1,"71":1,"74":11,"85":2,"93":1}}],["multipartfile",{"2":{"96":1}}],["multipart",{"2":{"96":1}}],["multi",{"2":{"86":1,"91":1}}],["mutate",{"2":{"20":1}}],["mode",{"2":{"96":1}}],["modifyafter",{"2":{"85":1}}],["modifyenum",{"2":{"85":2}}],["modifybefore",{"2":{"85":1}}],["modules",{"2":{"18":1,"40":3}}],["mvn",{"2":{"61":1}}],["micrometer",{"2":{"60":12}}],["midway",{"2":{"27":1,"33":1,"34":2}}],["md",{"2":{"58":1}}],["md5digestashex",{"2":{"74":2}}],["md5",{"2":{"42":2}}],["m",{"2":{"53":6}}],["ms",{"2":{"46":1,"69":1}}],["mn",{"2":{"46":1}}],["mediatype",{"2":{"96":2}}],["message",{"2":{"42":1}}],["method",{"2":{"20":3}}],["methodname",{"2":{"9":1,"53":3}}],["myaccessdecisionmanager",{"2":{"74":3}}],["myfiltersecurityinterceptor",{"2":{"74":1}}],["mysecuritymetadatasource",{"2":{"74":1}}],["mysql",{"2":{"23":3,"27":1,"65":1,"68":5,"99":1}}],["my",{"2":{"61":1}}],["mycoolplugintest",{"2":{"57":1}}],["mycoolplugin",{"2":{"53":1,"57":1}}],["mybatis",{"2":{"14":3,"21":5,"22":4,"23":2,"91":1,"100":1}}],["mac",{"2":{"96":2}}],["matches",{"2":{"74":1}}],["maven",{"2":{"60":7,"65":1,"99":1,"110":1}}],["main",{"2":{"38":1,"40":1,"57":1,"69":3}}],["maxid",{"2":{"94":1}}],["max",{"2":{"29":2,"94":1}}],["mariadb",{"2":{"23":2}}],["marketcouponinfoservice",{"2":{"49":1}}],["marketcouponuserentity>",{"2":{"14":1}}],["marketcouponuserservice",{"2":{"14":1}}],["market",{"2":{"14":7}}],["mappings",{"2":{"96":1}}],["mapper",{"2":{"38":1,"40":4}}],["map",{"2":{"14":9,"74":6}}],["manes",{"2":{"8":1}}],["+",{"2":{"9":2,"11":3,"22":1,"49":2,"53":2,"60":3,"63":2,"74":5}}],["tip",{"2":{"95":1}}],["time`",{"2":{"53":2}}],["timeout",{"2":{"30":6}}],["tenantentity",{"2":{"92":1}}],["tenant",{"2":{"91":1}}],["tenantid",{"2":{"89":1}}],["tenancy",{"2":{"86":1}}],["team",{"2":{"56":2,"106":3,"107":3,"108":2}}],["testplugin",{"2":{"53":2}}],["test",{"2":{"9":1,"10":1,"15":2,"30":1,"38":1,"53":2,"57":1}}],["txt",{"2":{"53":2,"54":2}}],["tk",{"2":{"46":1}}],["this",{"2":{"74":1}}],["thread",{"2":{"63":1,"69":1}}],["throwable",{"2":{"49":1}}],["throws",{"2":{"49":1,"71":1,"74":8}}],["throw",{"2":{"42":1,"60":1,"74":1}}],["the",{"2":{"60":14}}],["th",{"2":{"46":1}}],["tw",{"2":{"46":1}}],["t",{"2":{"33":2,"85":6}}],["tsupstream",{"2":{"30":1}}],["ts",{"2":{"27":1}}],["tdengine",{"2":{"23":2}}],["tr",{"2":{"46":1}}],["trylock",{"2":{"48":1,"49":1}}],["try",{"2":{"30":1,"49":1,"60":1,"74":1}}],["translate",{"2":{"46":1}}],["transparent",{"2":{"30":1}}],["transactiontemplate",{"2":{"22":1}}],["transactional",{"2":{"22":1}}],["transform",{"2":{"14":2}}],["true",{"2":{"14":2,"42":1,"74":1,"91":1,"94":5,"96":1}}],["toarray",{"2":{"74":1}}],["tokenignore",{"2":{"80":1,"81":1}}],["token",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1},"2":{"73":2,"74":2,"76":1,"78":1,"80":1}}],["tohanyupinyinstring",{"2":{"60":1}}],["tone",{"2":{"60":1}}],["todo",{"2":{"48":1}}],["tostring",{"2":{"14":1}}],["tobean",{"2":{"14":1}}],["tangzc",{"2":{"114":1}}],["tao",{"2":{"114":1}}],["ta",{"2":{"46":1}}],["task",{"2":{"40":1,"53":3,"69":1}}],["target",{"2":{"61":2}}],["targetfield",{"2":{"14":1}}],["targetclass",{"2":{"9":1}}],["table",{"2":{"14":1,"24":1,"94":1,"100":1}}],["tag",{"2":{"13":1,"14":1,"15":1,"16":1,"93":1,"96":1}}],["typescript",{"2":{"101":1}}],["typehandler",{"2":{"22":1}}],["type",{"2":{"8":2,"85":4}}],["dromara",{"2":{"114":1}}],["druid",{"2":{"82":1}}],["driver",{"2":{"68":2}}],["dynamicjarclassloader",{"2":{"63":3}}],["daoauthenticationprovider",{"2":{"74":2}}],["da",{"2":{"46":1}}],["datasource",{"2":{"68":1}}],["database",{"2":{"8":1}}],["data",{"2":{"8":1,"40":1,"47":2,"96":1}}],["digestutils",{"2":{"74":2}}],["digesthex",{"2":{"42":2}}],["disable",{"2":{"74":2}}],["dict",{"2":{"40":1}}],["duplicatekeyexception",{"2":{"42":2}}],["duration",{"2":{"11":1,"48":1,"49":1,"69":1}}],["docs",{"2":{"82":1,"108":2}}],["docker",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1},"2":{"31":3,"32":2,"33":3,"34":2,"35":1}}],["download",{"2":{"82":1}}],["dofilter",{"2":{"71":2,"74":2}}],["doris",{"2":{"23":2}}],["dm",{"2":{"23":1}}],["dbfromjsoninit",{"2":{"47":1}}],["db2",{"2":{"23":2}}],["db",{"2":{"22":1,"40":1,"47":2}}],["desktop",{"2":{"96":2}}],["destroy",{"2":{"74":1}}],["description",{"2":{"13":1,"14":1,"15":1,"16":1,"58":1,"59":1,"93":1,"94":2,"96":2}}],["deployment",{"2":{"110":1}}],["department",{"2":{"74":1}}],["departmentids",{"2":{"74":2}}],["dependency>",{"2":{"60":4}}],["dev",{"2":{"70":1}}],["debug",{"2":{"53":3}}],["de",{"2":{"46":1}}],["derby",{"2":{"23":2}}],["defaultvalue",{"2":{"94":2}}],["default",{"2":{"19":3,"60":1}}],["democoolplugin",{"2":{"60":1}}],["democacheservice",{"2":{"9":1,"10":1}}],["democacheserviceimpl",{"2":{"9":1,"10":1}}],["demov2",{"2":{"47":1}}],["demoentity",{"2":{"38":1}}],["demoentity>",{"2":{"13":1,"14":1,"15":1,"16":5,"93":1}}],["demo",{"2":{"18":4,"38":1,"47":4,"58":1}}],["demomapper",{"2":{"16":1}}],["demoserviceimpl",{"2":{"16":1}}],["demoservice",{"2":{"13":1,"14":1,"15":1,"16":2,"93":1}}],["delete",{"2":{"12":1,"13":1,"14":1,"15":1,"16":1,"29":1,"81":1,"93":1}}],["sdk",{"2":{"112":1}}],["swagger",{"0":{"93":1},"2":{"82":2,"93":1}}],["snapshot",{"2":{"61":1}}],["show",{"2":{"104":1}}],["shaded",{"2":{"60":14}}],["shade",{"2":{"60":6}}],["shellpm2",{"2":{"29":1}}],["shell",{"2":{"29":3,"33":1,"34":1,"70":1}}],["s",{"2":{"60":1}}],["sourceforge",{"2":{"60":4}}],["socket",{"2":{"30":3}}],["socket需额外配置",{"2":{"30":1}}],["simplegrantedauthority",{"2":{"74":1}}],["signature=krlj0uv96tbliagpji",{"2":{"53":1}}],["sinodb",{"2":{"23":1}}],["supports",{"2":{"74":1}}],["super",{"2":{"16":2,"20":1,"42":2,"74":3}}],["success",{"2":{"53":1}}],["summary",{"2":{"49":1,"96":2}}],["sr",{"2":{"46":1}}],["src",{"2":{"38":1,"69":1}}],["sl",{"2":{"46":1}}],["slf4j",{"2":{"42":1,"47":1,"53":3,"60":4,"74":2}}],["sk",{"2":{"46":1}}],["sv",{"2":{"46":1}}],["split",{"2":{"74":1}}],["space",{"2":{"40":1}}],["springdoc",{"2":{"69":2}}],["springboot3",{"2":{"118":1}}],["springboot",{"2":{"63":1}}],["springframework",{"2":{"53":5,"60":14}}],["spring",{"2":{"20":3,"22":2,"60":13,"68":1,"72":1,"96":1,"100":1}}],["spring方式",{"2":{"9":1}}],["springcache",{"2":{"8":1}}],["sap",{"2":{"23":1}}],["sysuserentity",{"2":{"74":14}}],["sys",{"2":{"53":4}}],["system",{"2":{"9":1,"15":1,"53":5,"60":1}}],["sybase",{"2":{"23":2}}],["schema",{"2":{"22":1}}],["sqlserver",{"2":{"23":2}}],["sqlserver2005",{"2":{"23":2}}],["sqlite",{"2":{"23":3}}],["sql",{"2":{"21":2,"22":2,"23":1}}],["step",{"2":{"94":2}}],["stereotype",{"2":{"53":1}}],["stream",{"2":{"74":1}}],["str",{"2":{"53":1}}],["strutil",{"2":{"53":2}}],["string",{"2":{"9":1,"10":1,"11":5,"15":1,"19":3,"38":1,"48":1,"49":1,"53":7,"60":4,"74":12,"76":2,"94":2}}],["stop",{"2":{"29":1}}],["star",{"0":{"106":1,"107":1,"108":1},"2":{"113":1}}],["start",{"2":{"29":2}}],["stateless",{"2":{"74":1}}],["static",{"2":{"38":1,"82":1,"96":2}}],["status=200",{"2":{"53":1}}],["status",{"2":{"14":2,"30":1}}],["segment",{"2":{"94":1}}],["sessioncreationpolicy",{"2":{"74":2}}],["sessionmanagement",{"2":{"74":1}}],["securityfilterchain",{"2":{"74":2}}],["securitymetadatasource",{"2":{"74":3}}],["security权限拦截器校验当前用户权限",{"2":{"74":1}}],["securityconfig",{"2":{"74":1}}],["security加载所有设置的权限",{"2":{"74":1}}],["security",{"2":{"72":1,"76":1}}],["send",{"2":{"30":2}}],["servletexception",{"2":{"71":1,"74":3}}],["servletresponse",{"2":{"71":3,"74":1}}],["servletrequest",{"2":{"71":4,"74":1}}],["servletrequestattributes",{"2":{"49":1}}],["servertimezone=gmt",{"2":{"68":1}}],["server",{"2":{"30":2,"96":1}}],["service",{"2":{"9":1,"10":1,"16":3,"33":1,"38":2,"40":2,"69":1}}],["selffield",{"2":{"14":1}}],["select",{"2":{"14":2}}],["setuserdetailsservice",{"2":{"74":1}}],["setaccessdecisionmanager",{"2":{"74":1}}],["setmyaccessdecisionmanager",{"2":{"74":1}}],["setmodule",{"2":{"38":1}}],["setpasswordencoder",{"2":{"74":1}}],["setpassword",{"2":{"42":2}}],["setpageoption",{"2":{"14":2}}],["setentity",{"2":{"38":1}}],["setname",{"2":{"38":1}}],["settings",{"2":{"110":1}}],["settonetype",{"2":{"60":1}}],["settype",{"2":{"38":1}}],["setter",{"2":{"14":1}}],["setlistoption",{"2":{"14":1}}],["set",{"2":{"10":1,"28":1,"30":12,"53":2,"74":5}}],["=5",{"2":{"68":1}}],["==",{"2":{"53":1,"74":2}}],["==>",{"2":{"53":2}}],["=",{"2":{"9":2,"11":4,"13":4,"14":12,"15":4,"16":4,"19":2,"20":3,"38":2,"41":1,"42":5,"48":1,"49":4,"53":8,"60":5,"63":2,"65":3,"71":1,"74":15,"76":3,"77":1,"81":2,"93":4,"94":13,"96":9,"99":3}}],["性能要求比较高或有分布式部署需求的建议配置成",{"2":{"8":1}}],["person",{"2":{"76":2}}],["permitall",{"2":{"74":1}}],["perm",{"2":{"74":5}}],["perms",{"2":{"74":4}}],["phase>",{"2":{"60":1}}],["phase>package",{"2":{"60":1}}],["phoenix",{"2":{"23":2}}],["phone",{"2":{"14":2}}],["pinyin",{"2":{"60":3}}],["pinyinhelper",{"2":{"60":2}}],["pinyin4j",{"2":{"60":5}}],["png",{"2":{"58":1}}],["pnpm",{"0":{"28":1},"2":{"27":1,"28":2}}],["pl",{"2":{"46":1}}],["plugins",{"2":{"60":1}}],["plugins>",{"2":{"60":2}}],["plugin>",{"2":{"60":2}}],["plugin",{"2":{"40":1,"53":6,"56":2,"57":3,"58":2,"60":8,"61":5,"69":1}}],["plus",{"2":{"21":1,"22":1}}],["pt",{"2":{"46":2}}],["p",{"2":{"34":2}}],["pm2将自动检测可用cpu的数量",{"2":{"29":1}}],["pm2",{"0":{"29":1},"2":{"29":11}}],["put",{"2":{"14":1,"42":2,"74":1}}],["public",{"2":{"9":2,"10":2,"11":1,"13":1,"14":2,"15":2,"16":3,"38":1,"42":7,"47":2,"49":3,"53":4,"60":2,"71":1,"74":22,"76":1,"80":1,"81":1,"85":2,"93":1,"94":1,"96":4}}],["pool",{"2":{"69":1}}],["pom",{"2":{"61":1}}],["policy=eyjlehb0wny0xm1qxmjowmto0oc41njvaiiwiy29uzgl0aw9ucyi6w1siy29udgvudc1szw5ndggtcmfuz2uildasnti0mjg4mdbdxx0=",{"2":{"53":1}}],["postgresql",{"2":{"23":3}}],["postmapping",{"2":{"15":1,"16":1,"49":1,"53":2,"96":1}}],["post",{"2":{"13":5}}],["port",{"2":{"8":1,"96":1}}],["preparing",{"2":{"53":1}}],["project",{"2":{"110":2}}],["projectlombok",{"2":{"60":2}}],["properties>",{"2":{"61":2}}],["properties",{"2":{"61":1}}],["proceed",{"2":{"49":1}}],["proceedingjoinpoint",{"2":{"49":1}}],["proxy",{"2":{"30":28}}],["prod",{"2":{"27":1}}],["protected",{"2":{"13":1,"14":2,"15":1,"16":2,"20":1,"93":1}}],["private",{"2":{"14":2,"48":1,"49":1,"53":3,"71":1,"74":11,"94":5,"96":1}}],["println",{"2":{"9":1,"15":1,"53":5,"60":1}}],["package",{"2":{"61":1,"70":1}}],["parentclassloader",{"2":{"53":2}}],["parameter",{"2":{"96":1}}],["parameters",{"2":{"53":1}}],["param",{"2":{"74":1,"85":6}}],["params",{"2":{"53":1,"60":2}}],["parse",{"2":{"21":1}}],["parseobj",{"2":{"11":1}}],["pa",{"2":{"46":1}}],["pass",{"2":{"30":2}}],["passwordencoder",{"2":{"74":4}}],["passwordversion",{"2":{"74":1,"76":1}}],["password",{"2":{"8":1,"68":1}}],["paths",{"2":{"20":1}}],["path",{"2":{"20":3}}],["page",{"2":{"12":1,"13":1,"14":1,"15":1,"16":9,"81":2,"93":1}}],["p0",{"2":{"9":1}}],["15",{"0":{"117":1}}],["15t14",{"2":{"69":4}}],["101+08",{"2":{"69":1}}],["17",{"2":{"65":1,"99":1}}],["13",{"0":{"114":1},"2":{"60":1}}],["13t20",{"2":{"53":8}}],["1800",{"2":{"73":1}}],["18",{"2":{"44":1,"53":8,"60":1}}],["123456",{"2":{"68":1,"70":1,"104":1}}],["12",{"2":{"60":2}}],["12h",{"2":{"30":1}}],["127",{"2":{"8":1,"30":1,"53":1,"68":1,"69":1,"70":1,"93":1,"96":1}}],["1h",{"2":{"30":1}}],["1",{"0":{"27":1,"32":1,"52":1,"56":1,"67":1,"89":1,"91":1,"110":1,"115":1,"116":1,"117":2,"118":1},"2":{"8":1,"10":1,"18":1,"30":5,"33":2,"34":2,"46":1,"53":2,"58":1,"60":11,"61":1,"63":2,"68":1,"69":3,"70":1,"74":3,"93":1,"94":2,"96":1}}],["06",{"0":{"118":1}}],["04",{"0":{"114":1,"116":1}}],["00",{"2":{"53":8,"69":4}}],["01",{"2":{"53":8}}],["07",{"0":{"117":1},"2":{"53":8,"69":4}}],["0新增",{"0":{"44":1,"86":1}}],["08",{"0":{"115":1,"116":1},"2":{"18":1}}],["0",{"0":{"114":2,"118":1},"2":{"8":3,"30":2,"33":2,"34":2,"53":2,"58":2,"60":4,"61":1,"65":1,"68":3,"69":2,"70":2,"74":1,"93":2,"96":2}}],["hashmap",{"2":{"74":1}}],["hanyupinyintonetype",{"2":{"60":2}}],["hanyupinyinoutputformat",{"2":{"60":3}}],["hangzhou",{"2":{"53":1}}],["handleexception",{"2":{"42":1}}],["handleillegalargumentexception",{"2":{"42":1}}],["handlehttprequestmethodnotsupportedexception",{"2":{"42":1}}],["handlebadcredentialsexception",{"2":{"42":1}}],["handleduplicatekeyexception",{"2":{"42":1}}],["handlerrexception",{"2":{"42":1}}],["handlertype",{"2":{"20":3}}],["hana",{"2":{"23":2}}],["hr",{"2":{"46":1}}],["hy",{"2":{"46":1}}],["hutool",{"2":{"53":3,"60":11,"100":1}}],["hu",{"2":{"46":1}}],["hello",{"2":{"53":4,"60":1}}],["he",{"2":{"46":1}}],["headersconfigurer",{"2":{"74":1}}],["headers",{"2":{"74":1}}],["header",{"2":{"30":13}}],["hook",{"2":{"58":1,"59":1}}],["home",{"2":{"30":1}}],["host=https",{"2":{"53":1}}],["host",{"2":{"8":1,"30":4}}],["hive",{"2":{"23":2}}],["highgo",{"2":{"23":1}}],["hbase",{"2":{"23":1}}],["hsql",{"2":{"23":2}}],["h2",{"2":{"23":2}}],["httprequestmethodnotsupportedexception",{"2":{"42":2}}],["http",{"2":{"30":4,"69":1,"93":1,"96":1}}],["httpsecurity",{"2":{"74":3}}],["httpservletrequest",{"2":{"13":1,"14":2,"15":1,"16":1,"49":1,"71":2,"93":1,"96":1}}],["https",{"2":{"1":2,"14":3,"28":1,"53":1,"56":2,"104":1,"106":3,"107":3,"108":2}}],["html",{"2":{"14":1,"30":1,"93":1}}],["html文档",{"2":{"14":2}}],["能够显著提升应用程序的性能和响应速度",{"2":{"8":1}}],["旨在提供高性能",{"2":{"8":1}}],["由该类统一执行初始化",{"2":{"47":1}}],["由",{"2":{"8":1}}],["cfg",{"2":{"74":3}}],["cj",{"2":{"68":1}}],["charsequence",{"2":{"74":2}}],["characterencoding=utf",{"2":{"68":1}}],["chain",{"2":{"74":2}}],["chinesechar",{"2":{"60":4}}],["check",{"2":{"41":2,"42":6,"46":1,"49":1}}],["c",{"2":{"53":6,"69":3}}],["ckb",{"2":{"46":1}}],["csrf",{"2":{"74":1}}],["css",{"2":{"71":1,"82":1}}],["cs",{"2":{"46":1}}],["csiidb",{"2":{"23":2}}],["cn",{"2":{"46":2,"53":4,"60":2}}],["c端用户",{"2":{"40":1}}],["currentthread",{"2":{"63":1}}],["cubrid",{"2":{"23":2}}],["custom",{"2":{"14":1}}],["clean",{"2":{"61":1}}],["cluster",{"2":{"29":1}}],["clickhouse",{"2":{"23":2}}],["classloader",{"2":{"53":4}}],["classpath",{"2":{"47":1,"96":1}}],["class",{"2":{"9":1,"10":2,"13":1,"14":5,"15":1,"16":2,"19":2,"20":3,"38":2,"42":7,"47":1,"49":2,"53":2,"60":1,"68":1,"71":1,"74":8,"81":1,"93":1,"94":1,"96":1}}],["crud",{"0":{"84":1},"2":{"84":1}}],["crudoption",{"2":{"16":1}}],["create",{"2":{"14":2,"33":1,"42":2}}],["createop",{"2":{"14":3}}],["catch",{"2":{"60":1}}],["ca",{"2":{"46":1}}],["cachekey",{"2":{"11":2}}],["cacheable",{"2":{"9":1}}],["cachenames",{"2":{"9":1}}],["cacheconfig",{"2":{"9":1}}],["cache",{"2":{"8":3,"30":8,"53":2,"60":1}}],["caffeine",{"2":{"8":3}}],["collection",{"2":{"74":4}}],["column",{"2":{"14":1}}],["columndefine",{"2":{"14":1,"94":4}}],["columns",{"2":{"14":1}}],["core",{"2":{"40":2,"47":1,"53":12,"60":6,"69":2}}],["code",{"2":{"42":1}}],["codetypeenum",{"2":{"38":1}}],["codemodel",{"2":{"38":10}}],["codegenerator",{"2":{"38":7}}],["consumes",{"2":{"96":1}}],["console",{"2":{"46":1}}],["conf",{"2":{"74":4}}],["configuration",{"2":{"74":1}}],["configuration>",{"2":{"60":2}}],["configattribute",{"2":{"74":1}}],["configattributes",{"2":{"74":4}}],["configattribute>",{"2":{"74":3}}],["configattribute>>",{"2":{"74":1}}],["config",{"2":{"27":1,"28":1,"58":2,"59":1,"74":7}}],["context",{"2":{"60":2}}],["controller",{"2":{"12":2,"16":1,"18":2,"20":1,"38":2,"40":2,"53":3,"76":1}}],["connection",{"2":{"30":2}}],["connect",{"2":{"30":2}}],["condition",{"2":{"14":3}}],["couponid",{"2":{"49":3}}],["coupon",{"2":{"14":8}}],["compiler",{"2":{"110":1}}],["compile命令",{"2":{"110":1}}],["component",{"2":{"49":1,"74":3}}],["combine",{"2":{"20":1}}],["commons",{"2":{"60":3}}],["commoncontroller",{"2":{"53":1}}],["comment",{"2":{"14":2,"94":5}}],["comm",{"2":{"9":1}}],["com",{"2":{"1":2,"14":3,"28":1,"38":1,"40":1,"47":1,"53":12,"56":2,"57":2,"60":4,"68":1,"69":3,"104":1,"106":3,"107":3,"108":2,"114":1}}],["cool相关配置",{"2":{"91":1}}],["cooleps",{"2":{"69":1,"80":1}}],["coolexception",{"2":{"42":3}}],["coolexceptionhandler",{"2":{"42":1}}],["coollock",{"2":{"48":4,"49":4}}],["coolplugin注解",{"2":{"57":1}}],["coolplugin",{"2":{"53":4,"60":6}}],["coolpluginservice",{"2":{"53":1,"69":1}}],["coolplugininvokers",{"2":{"11":1,"53":4}}],["coolpreconditions",{"2":{"41":1,"42":2,"46":1,"49":1}}],["coolapplication",{"2":{"40":1,"69":1}}],["cooladminjavaapplicationtests",{"2":{"38":1}}],["coolcodegeneratortest",{"2":{"38":1}}],["coolcache",{"0":{"10":1},"2":{"10":4,"11":1,"53":5,"60":1,"74":7}}],["coolsecurityutil",{"2":{"14":1,"49":2,"76":3,"77":1}}],["coolrestcontroller",{"2":{"13":1,"14":1,"15":1,"16":1,"19":1,"20":2,"81":1,"93":1,"96":1}}],["cool",{"0":{"102":1},"2":{"0":1,"1":2,"5":1,"6":1,"13":1,"14":1,"15":1,"16":1,"21":1,"23":1,"26":1,"29":3,"30":3,"31":1,"33":3,"34":4,"36":1,"38":1,"40":2,"44":1,"45":1,"47":3,"53":19,"56":4,"57":2,"60":5,"61":8,"62":1,"64":1,"68":1,"69":7,"89":1,"91":1,"93":1,"96":1,"102":2,"104":1,"106":6,"107":6,"108":4,"113":1}}],["框架用到了mybatis",{"2":{"110":1}}],["框架自带两种文件上传方式本地上传与云存储",{"2":{"95":1}}],["框架自带基于",{"2":{"8":1}}],["框架默认关闭多租户",{"2":{"91":1}}],["框架就会自动扫描菜单",{"2":{"46":1}}],["框架就会自动扫描并翻译成对应的语言",{"2":{"46":1}}],["框架集成了auto",{"2":{"24":1}}],["框架封装了一个请求属性",{"2":{"15":1}}],["框架特有的通用工具类",{"0":{"10":1}}],["框架更新",{"2":{"4":1,"6":1}}],["缓存数据模板",{"2":{"115":1}}],["缓存对象",{"2":{"53":1}}],["缓存结果",{"2":{"53":2}}],["缓存相关配置",{"2":{"30":1}}],["缓存库",{"2":{"8":1}}],["缓存",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"8":2,"115":1}}],["的build",{"2":{"110":1}}],["的mvn",{"2":{"110":1}}],["的缩写",{"2":{"44":1}}],["的核心流程",{"2":{"43":1}}],["的能力",{"2":{"43":1}}],["的火热",{"2":{"43":1}}],["的都知道",{"2":{"24":1}}],["的事务管理",{"2":{"22":1}}],["的基本增删改查",{"2":{"22":1}}],["的",{"2":{"20":1,"110":1}}],["的一些最新资讯",{"2":{"6":1}}],["的在线文档仓库",{"2":{"0":1}}],["公众号",{"0":{"6":1}}],["团队哔哩哔哩官方账户",{"2":{"5":1}}],["站视频教程",{"2":{"7":1,"37":1}}],["站",{"0":{"5":1}}],["by",{"2":{"114":1}}],["bypass",{"2":{"30":1}}],["b8e4",{"2":{"60":1}}],["bbb",{"2":{"58":1}}],["beforeinvocation",{"2":{"74":1}}],["belerweb",{"2":{"60":2}}],["beans",{"2":{"60":3}}],["bean",{"2":{"53":1,"74":4}}],["ben",{"2":{"8":1}}],["bn",{"2":{"46":1}}],["bg",{"2":{"46":1}}],["br",{"2":{"46":1}}],["break",{"2":{"30":1}}],["badhanyupinyinoutputformatcombination",{"2":{"60":2}}],["badcredentialsexception",{"2":{"42":2}}],["banner",{"2":{"53":2,"54":2}}],["bashpnpm",{"2":{"28":1}}],["bashnpm",{"2":{"28":1}}],["baselogfilter",{"2":{"71":1}}],["basecoolplugin",{"2":{"53":7,"60":4}}],["basecontroller",{"2":{"12":1,"13":1,"14":2,"15":1,"16":1,"93":1}}],["baseservice中集成了常用的",{"2":{"84":1}}],["baseserviceimpl",{"2":{"16":1}}],["basesysuserservice",{"2":{"74":3}}],["basesysuserentity>lambdaquery",{"2":{"42":2,"74":1}}],["basesysuserentity",{"2":{"42":6,"74":3}}],["basesyspermsservice",{"2":{"74":8}}],["basesyslogservice",{"2":{"71":3}}],["basesyslogmapper",{"2":{"53":3}}],["baseentity",{"2":{"14":1,"92":1,"94":1}}],["base",{"2":{"14":3,"40":1,"53":1,"82":1,"96":1}}],["bind",{"2":{"30":1,"53":4}}],["boot",{"2":{"100":1}}],["bootstrap",{"2":{"29":1}}],["boolean",{"2":{"74":2}}],["body",{"2":{"15":1}}],["build>",{"2":{"60":2}}],["build",{"2":{"20":1,"33":2,"74":1,"110":3}}],["b",{"0":{"5":1},"2":{"7":1,"37":1,"53":3}}],["abstracthttpconfigurer",{"2":{"74":1}}],["abstractsecurityinterceptor",{"2":{"74":1}}],["abstractopenapiresource",{"2":{"69":1}}],["actuator",{"2":{"82":1}}],["action",{"2":{"53":1}}],["accessdeniedhandler",{"2":{"74":1}}],["aclass",{"2":{"74":1}}],["aop",{"2":{"60":2}}],["aaa",{"2":{"58":1}}],["authprovider",{"2":{"74":4}}],["authenticationconfiguration",{"2":{"74":1}}],["authenticationmanager",{"2":{"74":2}}],["authenticationprovider",{"2":{"74":2}}],["authenticationentrypoint",{"2":{"74":1}}],["authenticated",{"2":{"74":1}}],["authorizehttprequests",{"2":{"74":1}}],["authority",{"2":{"74":3}}],["author",{"2":{"58":1,"59":1}}],["autotable",{"2":{"114":2}}],["automatically",{"2":{"110":1}}],["automatically自动编译功能",{"2":{"110":1}}],["auto",{"2":{"100":1}}],["autowired",{"2":{"74":1}}],["autoprefixurlmapping",{"2":{"20":1}}],["am",{"2":{"46":1}}],["arraylist",{"2":{"74":3}}],["artifactset>",{"2":{"60":2}}],["artifactid>maven",{"2":{"60":1}}],["artifactid>pinyin4j",{"2":{"60":1}}],["artifactid>",{"2":{"60":3}}],["artifactid>hutool",{"2":{"60":1}}],["around",{"2":{"49":2}}],["ar",{"2":{"46":1}}],["args",{"2":{"38":1,"47":1}}],["args$args",{"2":{"30":1}}],["afterinvocation",{"2":{"74":1}}],["af",{"2":{"46":1}}],["az",{"2":{"46":1}}],["anyrequest",{"2":{"74":1}}],["annotations",{"2":{"20":1}}],["annotation",{"2":{"19":2,"40":1,"49":1,"53":5,"57":1,"60":5}}],["and",{"2":{"14":1}}],["aliyun",{"2":{"53":1}}],["aliyuncs",{"2":{"53":1}}],["aliasfor",{"2":{"19":2}}],["alloc",{"2":{"94":2}}],["all",{"2":{"14":1,"22":1,"60":1,"96":1}}],["assets",{"2":{"58":2,"96":1}}],["aspect",{"2":{"49":1}}],["ase",{"2":{"23":1}}],["astype",{"2":{"14":1}}],["as",{"2":{"14":1}}],["apt",{"2":{"110":1}}],["apache",{"2":{"60":1}}],["app端手机密码登录和手机验证码登录",{"2":{"116":1}}],["appsecret",{"2":{"54":1}}],["appid",{"2":{"54":1}}],["application",{"2":{"68":1,"96":1}}],["applicationcontext",{"2":{"53":1}}],["applicationarguments",{"2":{"47":1}}],["applicationrunner",{"2":{"47":1}}],["appdemoinfocontroller",{"2":{"18":1}}],["app",{"2":{"18":4,"71":1}}],["appmarketcouponusercontroller",{"2":{"14":1}}],["api",{"2":{"7":1,"13":1,"14":1,"15":1,"16":1,"19":1,"27":2,"30":2,"33":1,"37":1,"60":4,"69":1,"81":1,"82":1,"93":1}}],["age",{"2":{"14":1}}],["addfilterbefore",{"2":{"74":1}}],["addr",{"2":{"30":5}}],["add",{"2":{"12":1,"13":1,"14":1,"15":1,"16":1,"30":3,"42":4,"74":2,"81":1,"93":1,"96":1}}],["adminbasecommcontroller",{"2":{"96":1}}],["adminauthurls",{"2":{"82":1}}],["admindictinfocontroller",{"2":{"81":1}}],["admindemouserinfocontroller",{"2":{"18":1}}],["admindemoinfocontroller",{"2":{"13":1,"14":1,"15":1,"16":1,"18":3,"93":1}}],["adminuserid",{"2":{"76":1}}],["admin中才能调试",{"2":{"53":1}}],["admin的缓存",{"2":{"53":1}}],["admin前后端的多语言都是基于大模型翻译的",{"2":{"45":1}}],["admin",{"0":{"102":1},"2":{"0":1,"1":2,"18":6,"21":1,"23":1,"26":1,"29":3,"31":1,"33":2,"34":2,"36":1,"38":1,"44":1,"53":9,"56":2,"60":2,"61":1,"64":1,"69":4,"70":1,"74":6,"82":1,"89":1,"102":1,"104":2,"106":3,"107":3,"108":2,"113":1}}],["a",{"2":{"10":2,"53":2}}],["ai",{"0":{"7":1,"37":1,"43":1},"2":{"4":1,"43":6,"102":5,"112":1,"114":1,"117":1}}],["你的项目",{"2":{"110":1}}],["你的star是我们最大的动力",{"2":{"105":1}}],["你的贡献可能给其他人代码巨大的帮助",{"2":{"0":1}}],["你将会看到后端的欢迎页面",{"2":{"69":1}}],["你可以这样做",{"2":{"110":1}}],["你可以自己开发插件",{"2":{"50":1}}],["你可以在这边了解到一些关于我们框架的最新动态",{"2":{"4":1}}],["你需要把生成的eps",{"2":{"33":1}}],["抖音",{"0":{"4":1}}],["扫一扫加入微信开发交流群",{"2":{"3":1}}],["微信",{"0":{"3":1},"2":{"112":1}}],["共创一些美好的事情",{"2":{"2":1}}],["共同参与开源",{"2":{"0":1}}],["交流合作",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1}}],["地址",{"0":{"1":1}}],["积极提交pull",{"2":{"0":1}}],["版相关功能",{"2":{"118":1}}],["版本一致",{"2":{"104":1}}],["版本号",{"2":{"59":1}}],["版本+宝塔为例",{"2":{"26":1}}],["版本的也可以参考",{"2":{"25":1}}],["版本为例",{"2":{"25":1}}],["版本才有",{"2":{"18":1}}],["版",{"2":{"0":1}}],["介绍",{"0":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/.vitepress/dist/assets/chunks/@localSearchIndexroot.Dj1POoFC.js b/.vitepress/dist/assets/chunks/@localSearchIndexroot.Dj1POoFC.js deleted file mode 100644 index baf46b6..0000000 --- a/.vitepress/dist/assets/chunks/@localSearchIndexroot.Dj1POoFC.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":119,"nextId":119,"documentIds":{"0":"/README.html#介绍","1":"/README.html#地址","2":"/src/about/#交流合作","3":"/src/about/#微信","4":"/src/about/#抖音","5":"/src/about/#b-站","6":"/src/about/#公众号","7":"/src/guide/ai.html#ai-编码","8":"/src/guide/cache.html#缓存","9":"/src/guide/cache.html#使用","10":"/src/guide/cache.html#框架特有的通用工具类-coolcache","11":"/src/guide/cache.html#通过coolcache缓存模板-获取数据","12":"/src/guide/db.html#数据库","13":"/src/guide/db.html#功能对比","14":"/src/guide/db.html#支持数据库","15":"/src/guide/db.html#自动建表","16":"/src/guide/dev.html#开发方式","17":"/src/guide/dev.html#ai-全自动","18":"/src/guide/dev.html#半自动","19":"/src/guide/deploy.html#项目部署","20":"/src/guide/deploy.html#普通方式","21":"/src/guide/deploy.html#_1、部署流程-以宝塔为例","22":"/src/guide/deploy.html#_2、推荐使用-pnpm-安装依赖","23":"/src/guide/deploy.html#_3、pm2-运行后端服务","24":"/src/guide/deploy.html#_4、nginx-配置示例","25":"/src/guide/deploy.html#docker-方式","26":"/src/guide/deploy.html#_1、部署流程-以宝塔为例-1","27":"/src/guide/deploy.html#_2、打包镜像","28":"/src/guide/deploy.html#_3、运行","29":"/src/guide/deploy.html#注意事项","30":"/src/guide/controller.html#控制器","31":"/src/guide/controller.html#示例","32":"/src/guide/controller.html#查询配置","33":"/src/guide/controller.html#请求参数","34":"/src/guide/controller.html#重写实现","35":"/src/guide/controller.html#原理","36":"/src/guide/controller.html#接口路由规则","37":"/src/guide/controller.html#自定义路由注解","38":"/src/guide/controller.html#重写-getmappingformethod","39":"/src/guide/dir.html#目录结构","40":"/src/guide/dir.html#结构","41":"/src/guide/exception.html#统一异常处理","42":"/src/guide/exception.html#异常统一捕获","43":"/src/guide/i18n.html#国际化多语言-v8-0新增","44":"/src/guide/i18n.html#实现","45":"/src/guide/i18n.html#使用","46":"/src/guide/flow.html#ai-流程编排","47":"/src/guide/initData.html#数据初始化","48":"/src/guide/lock.html#锁","49":"/src/guide/noRepeatSubmit.html#防重复提交","50":"/src/guide/plugin.html#扩展插件","51":"/src/guide/plugin.html#使用插件","52":"/src/guide/plugin.html#_1、安装","53":"/src/guide/plugin.html#_2、调用","54":"/src/guide/plugin.html#_3、配置","55":"/src/guide/plugin.html#开发插件","56":"/src/guide/plugin.html#_1、脚手架","57":"/src/guide/plugin.html#_2、目录结构","58":"/src/guide/plugin.html#_3、开发过程","59":"/src/guide/plugin.html#_4、字段解释","60":"/src/guide/plugin.html#插件详解","61":"/src/guide/plugin.html#打包","62":"/src/guide/plugin.html#安装插件","63":"/src/guide/plugin.html#实现原理","64":"/src/guide/quick.html#快速开始","65":"/src/guide/quick.html#环境准备","66":"/src/guide/quick.html#运行系统","67":"/src/guide/quick.html#_1、拉取源码","68":"/src/guide/quick.html#_2、配置数据库","69":"/src/guide/quick.html#_3、启动后端服务","70":"/src/guide/quick.html#_4、启动前端服务","71":"/src/guide/recordLog.html#请求日志记录","72":"/src/guide/security.html#权限校验","73":"/src/guide/security.html#配置","74":"/src/guide/security.html#原理","75":"/src/guide/security.html#当前用户","76":"/src/guide/security.html#后端用户","77":"/src/guide/security.html#应用用户","78":"/src/guide/security.html#忽略-token","79":"/src/guide/security.html#方式一-注解","80":"/src/guide/security.html#方法上","81":"/src/guide/security.html#类上","82":"/src/guide/security.html#方式二-配置文件","83":"/src/guide/swagger.html#swagger-文档","84":"/src/guide/tenant.html#多租户-v8-0新增","85":"/src/guide/tenant.html#主要特点","86":"/src/guide/tenant.html#实现","87":"/src/guide/tenant.html#_1、数据隔离","88":"/src/guide/tenant.html#使用","89":"/src/guide/tenant.html#_1、开启多租户","90":"/src/guide/tenant.html#_2、继承对象调整","91":"/src/guide/service.html#服务","92":"/src/guide/service.html#crud","93":"/src/guide/service.html#修改前后","94":"/src/guide/uniqueIDGen.html#唯一id","95":"/src/guide/upload.html#文件上传","96":"/src/guide/upload.html#使用","97":"/src/introduce/#简介","98":"/src/introduce/#技术选型","99":"/src/introduce/#一、环境要求","100":"/src/introduce/#二、后端框架","101":"/src/introduce/#三、前端框架","102":"/src/introduce/#为什么选择-cool-admin","103":"/src/introduce/#内置功能","104":"/src/introduce/show.html#演示","105":"/src/introduce/src.html#源码","106":"/src/introduce/src.html#后端-点个-star-哦","107":"/src/introduce/src.html#前端-点个-star-哦","108":"/src/introduce/src.html#文档-star-哦","109":"/src/question/common.html#常见问题","110":"/src/question/common.html#_1、找不到类似xxxtabledef文件","111":"/src/todo/plan.html#计划","112":"/src/todo/plan.html#完善插件","113":"/src/todo/update.html#更新","114":"/src/todo/update.html#v8-0-0-2025-04-13","115":"/src/todo/update.html#v7-1-3-2024-08-25","116":"/src/todo/update.html#v7-1-2-2024-08-04","117":"/src/todo/update.html#v7-1-1-2024-07-15","118":"/src/todo/update.html#v7-1-0-2024-06-27"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,13],"1":[1,1,8],"2":[1,1,4],"3":[1,1,2],"4":[1,1,11],"5":[2,1,3],"6":[1,1,6],"7":[2,1,8],"8":[1,1,35],"9":[1,1,31],"10":[2,1,22],"11":[2,1,37],"12":[1,1,41],"13":[1,1,79],"14":[1,1,112],"15":[1,1,21],"16":[1,1,7],"17":[2,1,12],"18":[1,1,51],"19":[1,1,9],"20":[1,1,8],"21":[4,2,36],"22":[4,2,15],"23":[3,2,41],"24":[3,2,92],"25":[2,1,10],"26":[4,3,12],"27":[2,3,31],"28":[2,3,16],"29":[1,3,9],"30":[1,1,15],"31":[1,1,48],"32":[1,1,171],"33":[1,1,57],"34":[1,1,63],"35":[1,1,1],"36":[1,1,44],"37":[1,1,14],"38":[2,1,43],"39":[1,1,4],"40":[1,1,58],"41":[1,1,8],"42":[1,1,78],"43":[4,1,21],"44":[1,1,11],"45":[1,1,149],"46":[2,1,23],"47":[1,1,76],"48":[1,1,27],"49":[1,1,70],"50":[1,1,9],"51":[1,1,1],"52":[2,2,9],"53":[2,2,204],"54":[2,2,18],"55":[1,1,1],"56":[2,2,16],"57":[2,2,25],"58":[2,2,31],"59":[2,2,27],"60":[1,1,185],"61":[1,1,31],"62":[1,1,5],"63":[1,1,66],"64":[1,1,4],"65":[1,1,19],"66":[1,1,1],"67":[2,2,4],"68":[2,2,45],"69":[2,2,59],"70":[2,2,25],"71":[1,1,44],"72":[1,1,7],"73":[1,1,14],"74":[1,1,243],"75":[1,1,2],"76":[1,2,39],"77":[1,2,6],"78":[2,1,5],"79":[2,3,1],"80":[1,5,14],"81":[1,5,22],"82":[2,3,25],"83":[2,1,48],"84":[4,1,9],"85":[1,1,10],"86":[1,1,1],"87":[2,1,11],"88":[1,1,1],"89":[2,1,17],"90":[2,1,6],"91":[1,1,2],"92":[1,1,5],"93":[1,1,21],"94":[1,1,64],"95":[1,1,17],"96":[1,1,98],"97":[1,1,1],"98":[1,1,4],"99":[2,2,14],"100":[2,2,10],"101":[2,2,5],"102":[4,1,26],"103":[1,1,38],"104":[1,1,11],"105":[1,1,7],"106":[5,1,12],"107":[5,1,13],"108":[4,1,15],"109":[1,1,2],"110":[2,1,29],"111":[1,1,4],"112":[1,1,9],"113":[1,1,8],"114":[6,1,26],"115":[7,1,24],"116":[7,1,11],"117":[6,1,9],"118":[7,1,8]},"averageFieldLength":[1.781512605042017,1.3361344537815123,29.966386554621852],"storedFields":{"0":{"title":"介绍","titles":[]},"1":{"title":"地址","titles":[]},"2":{"title":"交流合作","titles":[]},"3":{"title":"微信","titles":["交流合作"]},"4":{"title":"抖音","titles":["交流合作"]},"5":{"title":"B 站","titles":["交流合作"]},"6":{"title":"公众号","titles":["交流合作"]},"7":{"title":"Ai 编码","titles":[]},"8":{"title":"缓存","titles":[]},"9":{"title":"使用","titles":["缓存"]},"10":{"title":"框架特有的通用工具类,CoolCache","titles":["缓存"]},"11":{"title":"通过coolCache缓存模板,获取数据","titles":["缓存"]},"12":{"title":"数据库","titles":[]},"13":{"title":"功能对比","titles":["数据库"]},"14":{"title":"支持数据库","titles":["数据库"]},"15":{"title":"自动建表","titles":["数据库"]},"16":{"title":"开发方式","titles":[]},"17":{"title":"Ai 全自动","titles":["开发方式"]},"18":{"title":"半自动","titles":["开发方式"]},"19":{"title":"项目部署","titles":[]},"20":{"title":"普通方式","titles":["项目部署"]},"21":{"title":"1、部署流程(以宝塔为例):","titles":["项目部署","普通方式"]},"22":{"title":"2、推荐使用 pnpm 安装依赖","titles":["项目部署","普通方式"]},"23":{"title":"3、PM2 运行后端服务","titles":["项目部署","普通方式"]},"24":{"title":"4、nginx 配置示例","titles":["项目部署","普通方式"]},"25":{"title":"Docker 方式","titles":["项目部署"]},"26":{"title":"1、部署流程(以宝塔为例):","titles":["项目部署","Docker 方式"]},"27":{"title":"2、打包镜像","titles":["项目部署","Docker 方式"]},"28":{"title":"3、运行","titles":["项目部署","Docker 方式"]},"29":{"title":"注意事项","titles":["项目部署","Docker 方式"]},"30":{"title":"控制器","titles":[]},"31":{"title":"示例","titles":["控制器"]},"32":{"title":"查询配置","titles":["控制器"]},"33":{"title":"请求参数","titles":["控制器"]},"34":{"title":"重写实现","titles":["控制器"]},"35":{"title":"原理","titles":[]},"36":{"title":"接口路由规则","titles":["原理"]},"37":{"title":"自定义路由注解","titles":["原理"]},"38":{"title":"重写 getMappingForMethod","titles":["原理"]},"39":{"title":"目录结构","titles":[]},"40":{"title":"结构","titles":["目录结构"]},"41":{"title":"统一异常处理","titles":[]},"42":{"title":"异常统一捕获","titles":["统一异常处理"]},"43":{"title":"国际化多语言(v8.0新增)","titles":[]},"44":{"title":"实现","titles":[]},"45":{"title":"使用","titles":[]},"46":{"title":"Ai 流程编排","titles":[]},"47":{"title":"数据初始化","titles":[]},"48":{"title":"锁","titles":[]},"49":{"title":"防重复提交","titles":[]},"50":{"title":"扩展插件","titles":[]},"51":{"title":"使用插件","titles":["扩展插件"]},"52":{"title":"1、安装","titles":["扩展插件","使用插件"]},"53":{"title":"2、调用","titles":["扩展插件","使用插件"]},"54":{"title":"3、配置","titles":["扩展插件","使用插件"]},"55":{"title":"开发插件","titles":["扩展插件"]},"56":{"title":"1、脚手架","titles":["扩展插件","开发插件"]},"57":{"title":"2、目录结构","titles":["扩展插件","开发插件"]},"58":{"title":"3、开发过程","titles":["扩展插件","开发插件"]},"59":{"title":"4、字段解释","titles":["扩展插件","开发插件"]},"60":{"title":"插件详解","titles":["扩展插件"]},"61":{"title":"打包","titles":["扩展插件"]},"62":{"title":"安装插件","titles":["扩展插件"]},"63":{"title":"实现原理","titles":["扩展插件"]},"64":{"title":"快速开始","titles":[]},"65":{"title":"环境准备","titles":["快速开始"]},"66":{"title":"运行系统","titles":["快速开始"]},"67":{"title":"1、拉取源码","titles":["快速开始","运行系统"]},"68":{"title":"2、配置数据库","titles":["快速开始","运行系统"]},"69":{"title":"3、启动后端服务","titles":["快速开始","运行系统"]},"70":{"title":"4、启动前端服务","titles":["快速开始","运行系统"]},"71":{"title":"请求日志记录","titles":[]},"72":{"title":"权限校验","titles":[]},"73":{"title":"配置","titles":["权限校验"]},"74":{"title":"原理","titles":["权限校验"]},"75":{"title":"当前用户","titles":["权限校验"]},"76":{"title":"后端用户","titles":["权限校验","当前用户"]},"77":{"title":"应用用户","titles":["权限校验","当前用户"]},"78":{"title":"忽略 token","titles":["权限校验"]},"79":{"title":"方式一: 注解","titles":["权限校验","忽略 token"]},"80":{"title":"方法上","titles":["权限校验","忽略 token","方式一: 注解"]},"81":{"title":"类上","titles":["权限校验","忽略 token","方式一: 注解"]},"82":{"title":"方式二: 配置文件","titles":["权限校验","忽略 token"]},"83":{"title":"swagger 文档","titles":[]},"84":{"title":"多租户(v8.0新增)","titles":[]},"85":{"title":"主要特点","titles":[]},"86":{"title":"实现","titles":[]},"87":{"title":"1、数据隔离","titles":["实现"]},"88":{"title":"使用","titles":[]},"89":{"title":"1、开启多租户","titles":["使用"]},"90":{"title":"2、继承对象调整","titles":["使用"]},"91":{"title":"服务","titles":[]},"92":{"title":"Crud","titles":["服务"]},"93":{"title":"修改前后","titles":["服务"]},"94":{"title":"唯一id","titles":[]},"95":{"title":"文件上传","titles":[]},"96":{"title":"使用","titles":[]},"97":{"title":"简介","titles":[]},"98":{"title":"技术选型","titles":["简介"]},"99":{"title":"一、环境要求","titles":["简介","技术选型"]},"100":{"title":"二、后端框架","titles":["简介","技术选型"]},"101":{"title":"三、前端框架","titles":["简介","技术选型"]},"102":{"title":"为什么选择 Cool Admin?","titles":["简介"]},"103":{"title":"内置功能","titles":["简介"]},"104":{"title":"演示","titles":[]},"105":{"title":"源码","titles":[]},"106":{"title":"后端(点个 Star 哦)","titles":["源码"]},"107":{"title":"前端(点个 Star 哦)","titles":["源码"]},"108":{"title":"文档 (Star 哦)","titles":["源码"]},"109":{"title":"常见问题","titles":[]},"110":{"title":"1、找不到类似xxxTableDef文件","titles":["常见问题"]},"111":{"title":"计划","titles":[]},"112":{"title":"完善插件","titles":["计划"]},"113":{"title":"更新","titles":[]},"114":{"title":"v8.0.0(2025-04-13)","titles":["更新"]},"115":{"title":"v7.1.3(2024-08-25)","titles":["更新"]},"116":{"title":"v7.1.2(2024-08-04)","titles":["更新"]},"117":{"title":"v7.1.1(2024-07-15)","titles":["更新"]},"118":{"title":"v7.1.0(2024-06-27)","titles":["更新"]}},"dirtCount":0,"index":[["移除插件jar文件落库",{"2":{"116":1}}],["移除锁",{"2":{"49":1}}],["鉴权调整兼容app端",{"2":{"116":1}}],["鉴权拦截配置",{"2":{"74":1}}],["指定id插入不生效问题",{"2":{"115":1}}],["修复",{"2":{"115":2,"116":1}}],["修改之后",{"2":{"93":2}}],["修改之前",{"2":{"93":2}}],["修改类型",{"2":{"93":2}}],["修改前后",{"0":{"93":1}}],["修改",{"2":{"31":1,"103":1}}],["图形验证码获取区分app和admin",{"2":{"115":1}}],["解析规则",{"2":{"115":1}}],["解析设计",{"2":{"13":1}}],["参考",{"2":{"115":6}}],["参数管理",{"2":{"103":1}}],["参数",{"2":{"53":1}}],["涉及包结构变更",{"2":{"114":1}}],["升级所有相关依赖到最新",{"2":{"118":1}}],["升级到",{"2":{"118":1}}],["升级autotable和mybatis",{"2":{"114":1}}],["升级",{"2":{"114":2}}],["响应类型封装优化",{"2":{"114":1}}],["全局动态注入查询条件详情",{"2":{"114":1}}],["全自动",{"0":{"17":1}}],["支付",{"2":{"117":1}}],["支付插件",{"2":{"112":1}}],["支持postgresql",{"2":{"116":1}}],["支持自定义返回结果类型",{"2":{"115":1}}],["支持多语言",{"2":{"114":1}}],["支持多租户",{"2":{"114":1}}],["支持多主键",{"2":{"13":1}}],["支持动态安装",{"2":{"103":1}}],["支持回滚操作",{"2":{"103":1}}],["支持静态资源文件上传云端进行云管理",{"2":{"103":1}}],["支持通配",{"2":{"82":1}}],["支持很多数据库",{"2":{"14":1}}],["支持的数据库类型",{"2":{"14":1}}],["支持数据库",{"0":{"14":1}}],["支持关联查询",{"2":{"12":1}}],["短信等功能可以通过安装插件的方式添加",{"2":{"117":1}}],["短信插件",{"2":{"112":1}}],["短信这类功能的插件可以通过后台动态安装卸载",{"2":{"102":1}}],["完善插件",{"0":{"112":1}}],["计划",{"0":{"111":1},"1":{"112":1}}],["找不到类似xxxtabledef文件",{"0":{"110":1}}],["常见问题",{"0":{"109":1},"1":{"110":1}}],["常用的技术进行选择",{"2":{"98":1}}],["常用命令",{"2":{"23":1}}],["您的贡献可能会给其他人来带巨大的帮助",{"2":{"108":1}}],["哦",{"0":{"106":1,"107":1,"108":1}}],["点个",{"0":{"106":1,"107":1}}],["点击前往前端项目详细文档",{"2":{"70":1,"107":1}}],["点击前往插件市场",{"2":{"50":1}}],["点击前往插件市场下载安装",{"2":{"46":1}}],["点击+按钮",{"2":{"52":1}}],["点击左侧菜单扩展管理",{"2":{"52":1}}],["源码",{"0":{"105":1},"1":{"106":1,"107":1,"108":1}}],["源码仓库",{"2":{"67":1}}],["演示",{"0":{"104":1}}],["卸载插件",{"2":{"103":1}}],["卸载和替换",{"2":{"63":2}}],["前后端插件",{"2":{"103":1}}],["前端",{"0":{"107":1}}],["前端框架",{"0":{"101":1}}],["前端会根据后端返回的上传模式进行本地上传或者云存储签名直传",{"2":{"95":1}}],["前端请前往前端文档查看",{"2":{"44":1}}],["前端接口",{"2":{"36":1}}],["前端不需要特意写调用接口的",{"2":{"27":1}}],["前端打包完放这边",{"2":{"24":1}}],["前端访问后端的接口地址默认是前端根地址+",{"2":{"21":1}}],["天的保留",{"2":{"103":1}}],["任务调度包含执行结果日志",{"2":{"103":1}}],["添加",{"2":{"103":1}}],["定时任务",{"2":{"103":1}}],["定时任务模块",{"2":{"40":1}}],["便于问题排查",{"2":{"103":1}}],["设置角色按机构进行数据范围权限划分",{"2":{"103":1}}],["呈现公司组织部门树形结构",{"2":{"103":1}}],["内置功能",{"0":{"103":1}}],["代码简洁",{"2":{"102":1}}],["代理服务端地址",{"2":{"24":1}}],["灵活又不臃肿",{"2":{"102":1}}],["灵活性",{"2":{"63":1}}],["灵活性高",{"2":{"63":1}}],["专门为",{"2":{"102":1}}],["部分功能实现零代码",{"2":{"102":1}}],["部署",{"2":{"29":1}}],["部署的简单流程",{"2":{"25":1}}],["部署的配置方式可以参考普通的部署方式",{"2":{"25":1}}],["部署成功",{"2":{"21":1,"26":1}}],["部署流程",{"0":{"21":1,"26":1}}],["部署视频教程",{"2":{"20":1,"25":1}}],["从页面到后端代码",{"2":{"102":1}}],["从第三方",{"2":{"11":1}}],["特别是最近",{"2":{"102":1}}],["特别是跟",{"2":{"4":1}}],["三",{"0":{"101":1}}],["二",{"0":{"100":1}}],["环境要求",{"0":{"99":1}}],["环境准备",{"0":{"65":1}}],["减少技术栈的复杂度",{"2":{"98":1}}],["技术选型",{"0":{"98":1},"1":{"99":1,"100":1,"101":1}}],["技术分享",{"2":{"4":1,"6":1}}],["水印等处理",{"2":{"96":1}}],["裁剪",{"2":{"96":1}}],["条件允许的话尽量选择云存储上传",{"2":{"96":1}}],["动静分离有许多好处",{"2":{"96":1}}],["动态加载使得应用程序能够在不停机的情况下进行热更新",{"2":{"63":1}}],["动态加载允许应用程序在运行时根据需求加载",{"2":{"63":1}}],["动态加载",{"2":{"63":2}}],["动态",{"2":{"13":1}}],["动态表名",{"2":{"13":1}}],["线上环境请用nginx等静态服务器代理",{"2":{"96":1}}],["线上的数据库是需要本地传上去的",{"2":{"21":1}}],["七牛云等",{"2":{"95":1}}],["腾讯云",{"2":{"95":1}}],["云存储上传服务端值提供签名供前端直传到对应的云存储",{"2":{"95":1}}],["云存储",{"2":{"95":1}}],["直接上传到对应的云存储",{"2":{"95":1}}],["分布式id",{"2":{"115":1}}],["分布式id生成组件",{"2":{"115":1}}],["分布式唯一id组件",{"2":{"94":1}}],["分页查询配置",{"2":{"32":1}}],["分页查询无",{"2":{"13":1}}],["分页查询之总量缓存",{"2":{"13":1}}],["分页查询",{"2":{"13":1,"31":1}}],["启用唯一id组件",{"2":{"94":1}}],["启动",{"2":{"70":1}}],["启动前端服务",{"0":{"70":1}}],["启动文件",{"2":{"69":1}}],["启动后端服务",{"0":{"69":1}}],["启动一个服务",{"2":{"23":1}}],["启动服务",{"2":{"21":1}}],["入参为key",{"2":{"94":1}}],["步长",{"2":{"94":1}}],["唯一id分配",{"2":{"94":1}}],["唯一id",{"0":{"94":1}}],["操作日志",{"2":{"103":1}}],["操作权限标识等",{"2":{"103":1}}],["操作",{"2":{"92":1}}],["处理业务逻辑的代码应该被封装在服务中",{"2":{"91":1}}],["处理逻辑在以下方法",{"2":{"47":1}}],["继承对象调整",{"0":{"90":1}}],["关于tenantid的使用请参考",{"2":{"89":1}}],["关联查询用法参考",{"2":{"32":1}}],["租户id",{"2":{"87":1}}],["成本优化",{"2":{"85":1}}],["成功",{"2":{"45":1}}],["独立配置",{"2":{"85":1}}],["互不可见",{"2":{"85":1}}],["确保不同租户之间的数据严格分离",{"2":{"85":1}}],["但最为常见的是以列进行隔离的方式",{"2":{"87":1}}],["但共享同一个应用程序代码和基础设施",{"2":{"84":1}}],["但是每次都是用代码手搓",{"2":{"46":1}}],["但是它为我们提供了改造的可能",{"2":{"14":1}}],["但是",{"2":{"14":1}}],["客户组织",{"2":{"84":1}}],["允许单个应用实例服务多个租户",{"2":{"84":1}}],["允许网页iframe",{"2":{"74":1}}],["都必须配合coolrestcontroller使用",{"2":{"81":1}}],["都继承自",{"2":{"30":1}}],["校验",{"2":{"78":1,"80":1}}],["应用用户",{"0":{"77":1}}],["应用必备",{"2":{"46":1}}],["类上",{"0":{"81":1}}],["类型",{"2":{"76":1}}],["类必须继承",{"2":{"53":1,"60":2}}],["类必须要有",{"2":{"53":1,"60":2}}],["当前最大id",{"2":{"94":1}}],["当前用户",{"0":{"75":1},"1":{"76":1,"77":1}}],["当你在控制台看到这样的输出",{"2":{"45":1}}],["监控用户行为",{"2":{"74":1}}],["监听",{"2":{"13":1}}],["权限管理拦截器",{"2":{"74":1}}],["权限校验",{"0":{"72":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1}}],["每次调用接口的时候spring",{"2":{"74":1}}],["每个租户可以有自己的个性化配置和定制化需求",{"2":{"85":1}}],["每个租户的数据是相互隔离的",{"2":{"84":1}}],["每个插件的配置各不相同",{"2":{"59":1}}],["每个对象中的",{"2":{"47":1}}],["每个模块都有其特有的功能",{"2":{"39":1}}],["判定用户请求的url是否在权限表中",{"2":{"74":1}}],["判断",{"2":{"42":1}}],["刷新token过期时间",{"2":{"73":1}}],["半小时",{"2":{"73":1}}],["半自动",{"0":{"18":1}}],["秒",{"2":{"73":2}}],["单位",{"2":{"73":2}}],["单主键配置",{"2":{"13":1}}],["过期时间",{"2":{"73":1}}],["作为文档",{"2":{"83":1}}],["作为myaccessdecisionmanager类的decide的第三个参数",{"2":{"74":1}}],["作为框架安全与权限校验",{"2":{"72":1}}],["作者",{"2":{"58":1,"59":1}}],["采用",{"2":{"72":1}}],["忽略后台鉴权url",{"2":{"82":1}}],["忽略",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1},"2":{"78":1}}],["忽略权限控制的地址",{"2":{"74":1}}],["忽略记录请求日志url配置",{"2":{"116":1}}],["忽略记录请求日志url",{"2":{"71":1}}],["忽略url",{"2":{"71":1,"82":1}}],["记录日志",{"2":{"71":1}}],["记录接口请求日志入库",{"2":{"71":1}}],["密码版本号",{"2":{"76":1}}],["密码",{"2":{"70":1,"104":1}}],["账户",{"2":{"70":1,"104":1}}],["账户密码不正确",{"2":{"42":1}}],["执行",{"2":{"110":1}}],["执行命令",{"2":{"70":1}}],["执行的过程中",{"2":{"12":1}}],["跟进nodejs",{"2":{"118":1}}],["跟",{"2":{"70":1}}],["跟分页查询一样",{"2":{"32":1}}],["端口",{"2":{"69":1}}],["服务",{"0":{"91":1},"1":{"92":1,"93":1}}],["服务启动成功",{"2":{"69":1}}],["服务器环境准备",{"2":{"21":1}}],["构建eps信息",{"2":{"69":1}}],["控制台打印出下面信息",{"2":{"69":1}}],["控制器",{"0":{"30":1},"1":{"31":1,"32":1,"33":1,"34":1},"2":{"115":1}}],["驱动已经内置",{"2":{"68":1}}],["yamlcool",{"2":{"73":1}}],["yaml",{"2":{"68":1,"82":1,"89":1,"94":1}}],["yamlspring",{"2":{"8":1,"96":1}}],["yml",{"2":{"68":1,"96":1}}],["9000",{"2":{"70":1}}],["941+08",{"2":{"69":1}}],["9",{"2":{"65":1}}],["7天",{"2":{"73":1}}],["7版本",{"2":{"68":1}}],["7",{"2":{"65":1,"99":1}}],["选择",{"2":{"65":1,"99":1}}],["选择插件包进行安装",{"2":{"52":1}}],["开启",{"2":{"110":1}}],["开启多租户",{"0":{"89":1}}],["开放接口",{"2":{"78":1}}],["开始使用",{"2":{"64":1}}],["开发几乎不用写代码",{"2":{"102":1}}],["开发设计的",{"2":{"102":1}}],["开发过程",{"0":{"58":1}}],["开发过程只需点一点",{"2":{"17":1}}],["开发插件",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1}}],["开发的时候无法调试",{"2":{"53":1}}],["开发的时候只是模拟",{"2":{"53":1}}],["开发的一个",{"2":{"8":1}}],["开发",{"2":{"46":1}}],["开发者可以从中方便的获取各种参数",{"2":{"33":1}}],["开发方式",{"0":{"16":1},"1":{"17":1,"18":1}}],["快速开始",{"0":{"64":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1}}],["扩展性",{"2":{"63":1}}],["扩展插件",{"0":{"50":1},"1":{"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"102":1}}],["大大提高了系统的可用性和稳定性",{"2":{"63":1}}],["热更新",{"2":{"63":1}}],["优化若干问题",{"2":{"118":1}}],["优化插件过大加载慢问题",{"2":{"116":1}}],["优化角色修改循环单个处理为批量处理",{"2":{"115":1}}],["优化eps解析规则",{"2":{"115":1}}],["优化",{"2":{"114":1}}],["优势",{"2":{"63":1}}],["优炫数据库",{"2":{"14":1}}],["远程服务器和",{"2":{"63":1}}],["它可以加载指定的",{"2":{"63":1}}],["它是指让软件支持多种语言和地区的功能",{"2":{"43":1}}],["标准库中提供的一个类加载器",{"2":{"63":1}}],["最终打出的包为",{"2":{"61":1}}],["里指定",{"2":{"61":1}}],["里面是个数组",{"2":{"47":1}}],["后台人员查询列表字段关联错误",{"2":{"115":1}}],["后端",{"0":{"106":1}}],["后端框架",{"0":{"100":1}}],["后端用户",{"0":{"76":1}}],["后端修改数据库配置",{"2":{"68":1}}],["后端接口",{"2":{"36":1}}],["后缀的文件",{"2":{"61":1}}],["避免打包结果过大",{"2":{"60":1}}],["避免插件过大不会在打入jar包中",{"2":{"60":1}}],["主应用以有这些依赖",{"2":{"60":1}}],["主应用项目已经有的依赖给排除掉",{"2":{"60":1}}],["主应用没有这些依赖",{"2":{"60":1}}],["主要特点",{"0":{"85":1},"2":{"12":1,"102":1}}],["主要是做一些技术教程",{"2":{"4":1}}],["引入依赖",{"2":{"60":1}}],["引入插件",{"2":{"45":1}}],["可商用",{"2":{"105":1}}],["可插拔",{"2":{"102":1}}],["可选",{"2":{"96":1}}],["可维护性",{"2":{"63":1}}],["可控性强",{"2":{"63":1}}],["可在",{"2":{"61":1}}],["可使用",{"2":{"60":1}}],["可以重写modifybefore和modifyafter方法",{"2":{"93":1}}],["可以参考baseservice的实现",{"2":{"92":1}}],["可以轻松地添加新的功能模块或服务",{"2":{"63":1}}],["可以将应用程序的核心逻辑和配置分离",{"2":{"63":1}}],["可以通过代码控制加载",{"2":{"63":1}}],["可以通过插件的方式来扩展系统功能",{"2":{"50":1}}],["可以动态指定",{"2":{"63":1}}],["可以快速开发我们的插件",{"2":{"56":1}}],["可以在yml文件中配置",{"2":{"71":1}}],["可以在打包日志中查看我们排除和引入了哪些包",{"2":{"60":1}}],["可以在",{"2":{"47":1}}],["可以在对应的",{"2":{"34":1}}],["可以在这边实现一下列表数据排序规则",{"2":{"31":1,"33":1,"34":1,"83":1}}],["可以大大简化代码",{"2":{"30":1}}],["可以大大节省开发时间",{"2":{"16":1}}],["可以考虑这个时间配置长一点",{"2":{"24":1}}],["可以自己指定数量",{"2":{"23":1}}],["可以自动创建表",{"2":{"15":1}}],["可以选择你想使用的缓存",{"2":{"8":1}}],["满足以上条件",{"2":{"60":1}}],["拼音",{"2":{"60":1}}],["汉字",{"2":{"60":1}}],["汉字字符",{"2":{"60":1}}],["会持续不断地更新",{"2":{"113":1}}],["会展示在插件的详情中",{"2":{"59":1}}],["会更加简洁",{"2":{"42":1}}],["建议",{"2":{"68":1}}],["建议尺寸",{"2":{"59":1}}],["建议将缓存换成",{"2":{"29":1}}],["说明后端服务启动成功",{"2":{"69":1}}],["说明",{"2":{"59":1,"76":1}}],["测试",{"2":{"58":1}}],["测试curd",{"2":{"18":1,"31":2,"32":2,"33":2,"34":2,"83":2}}],["或",{"2":{"56":1,"106":2,"107":2,"108":1}}],["或者db",{"2":{"11":1}}],["脚手架源码仓库",{"2":{"56":1}}],["脚手架",{"0":{"56":1}}],["下",{"2":{"54":1}}],["下的",{"2":{"47":1}}],["范围在",{"2":{"54":1}}],["路径可以自己指定",{"2":{"54":1}}],["例如原本的配置文件是这样的",{"2":{"54":1}}],["其它的无效",{"2":{"81":1}}],["其中对应的包名称",{"2":{"61":1}}],["其中",{"2":{"54":1}}],["其中我们可以在插件包里通过",{"2":{"53":1}}],["其他数据库适配中",{"2":{"68":1}}],["其他查询方式",{"2":{"32":2}}],["其他部署方式也可以参考这个流程",{"2":{"20":1}}],["获得用户信息",{"2":{"74":1,"76":1}}],["获得其他插件",{"2":{"53":1}}],["获取id",{"2":{"94":1}}],["获取当前用户信息",{"2":{"75":1}}],["获取启用的权限操作请求",{"2":{"74":1}}],["获取主应用resources下的",{"2":{"53":1}}],["获取主应用resources目录下的资源文件",{"2":{"53":1}}],["获取锁后的逻辑",{"2":{"48":1}}],["获取物流信息",{"2":{"11":1}}],["获取数据",{"0":{"11":1},"2":{"11":1}}],["||",{"2":{"53":7}}],["|",{"2":{"53":67}}],["一",{"0":{"99":1}}],["一个插件",{"2":{"60":1}}],["一个插件jar有且只能有一个类被",{"2":{"53":1,"60":1}}],["一个项目用cool就够了",{"2":{"53":2}}],["一般抛异常写法",{"2":{"42":1}}],["`",{"2":{"53":10}}],["`update",{"2":{"53":1}}],["`create",{"2":{"53":1}}],["`params`",{"2":{"53":1}}],["`ip`",{"2":{"53":1}}],["`action`",{"2":{"53":1}}],["`base",{"2":{"53":1}}],["500",{"2":{"94":2}}],["564+08",{"2":{"53":1}}],["556",{"2":{"69":1}}],["559+08",{"2":{"53":1}}],["558+08",{"2":{"53":1}}],["557+08",{"2":{"53":1}}],["554+08",{"2":{"53":1}}],["544+08",{"2":{"53":1}}],["543+08",{"2":{"53":2}}],["5",{"2":{"53":8,"60":6,"65":1,"99":1}}],["就是我们的插件包",{"2":{"61":1}}],["就可以在代码中调用插件的方法了",{"2":{"53":1}}],["就不需要在entity",{"2":{"32":1}}],["调整",{"2":{"115":4,"116":2}}],["调用其他插件",{"2":{"53":1}}],["调用其他插件aliyun",{"2":{"53":1}}],["调用主应用获取缓存",{"2":{"53":1}}],["调用主应用设置缓存",{"2":{"53":1}}],["调用主应用",{"2":{"53":3}}],["调用插件类",{"2":{"53":1}}],["调用",{"0":{"53":1}}],["调一调",{"2":{"17":1}}],["打开后台管理系统",{"2":{"52":1}}],["打包结果",{"2":{"61":1}}],["打包命令",{"2":{"61":1}}],["打包",{"0":{"61":1}}],["打包时可以排除",{"2":{"60":1}}],["打包前端镜像",{"2":{"27":1}}],["打包前后端代码",{"2":{"21":1}}],["打包后端镜像",{"2":{"27":1}}],["打包后端和前端镜像",{"2":{"26":1}}],["打包镜像之前",{"2":{"27":1}}],["打包镜像",{"0":{"27":1}}],["打包之前注意配置生产环境的数据库配置config",{"2":{"21":1}}],["然后在系统中安装插件包",{"2":{"52":1}}],["首次启动会自动初始化并导入数据",{"2":{"68":1}}],["首先下载插件包",{"2":{"52":1}}],["首末字符",{"2":{"43":1}}],["导致系统臃肿",{"2":{"50":1}}],["领取优惠券",{"2":{"49":1}}],["基于deepseek",{"2":{"114":1}}],["基于大模型自动翻译",{"2":{"114":1}}],["基于表来完成分布式id生成",{"2":{"94":1}}],["基于用户维度的防重复提交",{"2":{"49":1}}],["基础模块",{"2":{"40":1}}],["防重提交",{"2":{"115":1}}],["防重提交注解",{"2":{"115":1}}],["防重复提交",{"0":{"49":1}}],["防止上传恶意文件等",{"2":{"96":1}}],["防止操作不当导致的数据丢失",{"2":{"29":1}}],["防止刷新404",{"2":{"24":1}}],["释放锁",{"2":{"48":1}}],["尝试获取锁",{"2":{"48":1}}],["注入service",{"2":{"94":1}}],["注入锁",{"2":{"48":1}}],["注解",{"0":{"79":1},"1":{"80":1,"81":1},"2":{"49":1,"53":2,"60":4}}],["注意如果该表有json字段",{"2":{"32":1}}],["注意事项",{"0":{"29":1}}],["注意",{"2":{"13":1,"14":1,"15":1,"19":1,"21":1,"27":1,"36":1,"47":1,"65":1,"81":1,"96":1}}],["简单功能零代码实现",{"2":{"117":1}}],["简单锁的使用",{"2":{"48":1}}],["简介",{"0":{"97":1},"1":{"98":1,"99":1,"100":1,"101":1,"102":1,"103":1}}],["简体中文",{"2":{"45":1}}],["锁工具",{"2":{"115":2}}],["锁是基于redis",{"2":{"48":1}}],["锁",{"0":{"48":1}}],["加载权限表中所有操作请求权限",{"2":{"74":1}}],["加载成功后文件名称将被当作唯一键标识",{"2":{"47":1}}],["加上",{"2":{"57":1}}],["加锁",{"2":{"49":1}}],["加泰罗尼亚语",{"2":{"45":1}}],["要新增一个",{"2":{"47":1}}],["要让其再次翻译",{"2":{"45":1}}],["初始化数据",{"2":{"115":1}}],["初始化数据json文件",{"2":{"40":1}}],["初始化eps完成",{"2":{"69":1}}],["初始化菜单数据",{"2":{"47":1}}],["初始化自定义的数据",{"2":{"47":1}}],["富文本参数",{"2":{"47":1}}],["规范",{"2":{"47":1}}],["规则为",{"2":{"36":1}}],["数组里可以包含多个对象",{"2":{"47":1}}],["数据有",{"2":{"103":1}}],["数据回收站",{"2":{"103":1}}],["数据回收站模块",{"2":{"40":1}}],["数据隔离",{"0":{"87":1},"2":{"85":1}}],["数据初始化完成",{"2":{"47":1}}],["数据初始化",{"0":{"47":1},"2":{"94":1}}],["数据脱敏",{"2":{"13":1}}],["数据脱敏等等",{"2":{"12":1}}],["数据填充",{"2":{"12":1,"13":1}}],["数据库初始数据初始化",{"2":{"47":1}}],["数据库",{"0":{"12":1},"1":{"13":1,"14":1,"15":1},"2":{"14":32}}],["格式如下",{"2":{"47":1}}],["目录下",{"2":{"61":1}}],["目录下创建",{"2":{"47":1}}],["目录创建",{"2":{"47":1}}],["目录结构",{"0":{"39":1,"57":1},"1":{"40":1}}],["相关配置",{"2":{"73":1}}],["相关应用",{"2":{"46":1}}],["相关的技术发展",{"2":{"102":1}}],["相关的",{"2":{"4":1}}],["很容易就能完成一个",{"2":{"46":1}}],["很多应用希望接入",{"2":{"46":1}}],["结尾",{"2":{"47":1}}],["结合知识库",{"2":{"46":1}}],["结构",{"0":{"40":1}}],["做为后来者有后发优势",{"2":{"102":1}}],["做了一个",{"2":{"46":1}}],["做解析",{"2":{"38":1}}],["于是我们面向开发者和软件开发公司",{"2":{"46":1}}],["容易把我们累死",{"2":{"46":1}}],["随着技术不断地发展",{"2":{"102":1}}],["随着",{"2":{"46":1}}],["随着互联网的发展",{"2":{"43":1}}],["视频演示",{"2":{"46":1}}],["流程编排插件",{"2":{"112":1}}],["流程编排功能",{"2":{"46":1}}],["流程编排",{"0":{"46":1},"2":{"102":1}}],["马来语",{"2":{"45":1}}],["孟加拉语",{"2":{"45":1}}],["世界语",{"2":{"45":1}}],["克罗地亚语",{"2":{"45":1}}],["亚美尼亚语",{"2":{"45":1}}],["亚马逊",{"2":{"14":1}}],["吉尔吉斯语",{"2":{"45":1}}],["巴斯克语",{"2":{"45":1}}],["巴西葡萄牙语",{"2":{"45":1}}],["塞尔维亚语",{"2":{"45":1}}],["维吾尔语",{"2":{"45":1}}],["库尔德语",{"2":{"45":2}}],["罗马尼亚语",{"2":{"45":1}}],["匈牙利语",{"2":{"45":1}}],["哈萨克语",{"2":{"45":1}}],["蒙古语",{"2":{"45":1}}],["立陶宛语",{"2":{"45":1}}],["希伯来语",{"2":{"45":1}}],["希腊语",{"2":{"45":1}}],["阿拉伯语",{"2":{"45":1}}],["阿塞拜疆语",{"2":{"45":1}}],["斯洛文尼亚语",{"2":{"45":1}}],["斯洛伐克语",{"2":{"45":1}}],["爱沙尼亚语",{"2":{"45":1}}],["南非荷兰语",{"2":{"45":1}}],["南大通用数据库",{"2":{"14":1}}],["南大通用",{"2":{"14":1}}],["拉取源码",{"0":{"67":1}}],["拉取前后端代码",{"2":{"21":1,"26":1}}],["拉脱维亚语",{"2":{"45":1}}],["泰米尔语",{"2":{"45":1}}],["泰语",{"2":{"45":1}}],["土库曼语",{"2":{"45":1}}],["土耳其语",{"2":{"45":1}}],["乌克兰语",{"2":{"45":1}}],["捷克语",{"2":{"45":1}}],["瑞典语",{"2":{"45":1}}],["芬兰语",{"2":{"45":1}}],["波兰语",{"2":{"45":1}}],["波斯语",{"2":{"45":1}}],["普什图语",{"2":{"45":1}}],["普通方式",{"0":{"20":1},"1":{"21":1,"22":1,"23":1,"24":1}}],["保加利亚语",{"2":{"45":1}}],["印度尼西亚语",{"2":{"45":1}}],["俄语",{"2":{"45":1}}],["越南语",{"2":{"45":1}}],["越来越多的企业开始走向国际化",{"2":{"43":1}}],["荷兰语",{"2":{"45":1}}],["日语",{"2":{"45":1}}],["日志",{"2":{"23":1}}],["韩语",{"2":{"45":1}}],["意大利语",{"2":{"45":1}}],["繁体中文",{"2":{"45":1}}],["挪威语",{"2":{"45":1}}],["法语",{"2":{"45":1}}],["丹麦语",{"2":{"45":1}}],["西班牙语",{"2":{"45":1}}],["葡萄牙语",{"2":{"45":1}}],["德语",{"2":{"45":1}}],["美国英语",{"2":{"45":1}}],["语言配置对照表",{"2":{"45":1}}],["得对应地删除相应的文件",{"2":{"45":1}}],["则框架会自动注入tenantid",{"2":{"87":1}}],["则返回给decide方法",{"2":{"74":1}}],["则该种类的国际化将不会进行翻译",{"2":{"45":1}}],["则代表成功",{"2":{"45":1}}],["翻译完成之后会默认在路径assets",{"2":{"45":1}}],["翻译",{"2":{"45":1}}],["翻译成功",{"2":{"45":1}}],["翻译中",{"2":{"45":1}}],["只需极少编码即可实现大部分需求",{"2":{"102":1}}],["只需拖一拖即可",{"2":{"102":1}}],["只需三步",{"2":{"18":1}}],["只有安装到cool",{"2":{"53":1}}],["只要开启并配置了国际化",{"2":{"45":1}}],["只要开启就能自动翻译",{"2":{"44":1}}],["比传统机翻更加准确",{"2":{"44":1}}],["比如orderid",{"2":{"94":1}}],["比如替换系统的上传组件",{"2":{"59":1}}],["比如你有一个订单管理的模块",{"2":{"40":1}}],["比如",{"2":{"13":1,"47":1,"53":1}}],["显示相应的语言界面",{"2":{"43":1}}],["个字母",{"2":{"43":1}}],["个接口",{"2":{"31":1}}],["之间有",{"2":{"43":1}}],["国际化多语言",{"0":{"43":1}}],["异常消息",{"2":{"45":1}}],["异常信息为",{"2":{"42":1}}],["异常统一捕获",{"0":{"42":1}}],["即抛异常",{"2":{"42":1}}],["手动抛异常",{"2":{"42":1}}],["手动进行转换",{"2":{"32":1}}],["业务key",{"2":{"94":1}}],["业务校验的工具",{"2":{"42":1}}],["业务代码放在这边",{"2":{"40":1}}],["系统异常信息日志记录和查询",{"2":{"103":1}}],["系统正常操作日志记录和查询",{"2":{"103":1}}],["系统通用",{"2":{"96":2}}],["系统的文件上传就会自动替换成云存储上传的方式",{"2":{"95":1}}],["系统启动完成访问",{"2":{"83":1}}],["系统启动的时候",{"2":{"74":1}}],["系统会查询并向spring",{"2":{"74":1}}],["系统提供了",{"2":{"42":1}}],["系统用户",{"2":{"40":1}}],["请求日志",{"2":{"103":1}}],["请求日志记录",{"0":{"71":1}}],["请求过程中会解析",{"2":{"76":1}}],["请求参数",{"0":{"33":1},"2":{"93":2}}],["请勿重复操作",{"2":{"49":1}}],["请区分post",{"2":{"42":1}}],["不要吝啬你们免费的star哦",{"2":{"105":1}}],["不像一般代码生成器生成一堆冗余代码",{"2":{"102":1}}],["不经过服务器",{"2":{"95":1}}],["不然调用时会报错",{"2":{"60":1}}],["不带声调",{"2":{"60":1}}],["不同的插件有不同的配置",{"2":{"58":1}}],["不会重复初始化",{"2":{"47":1}}],["不支持该请求方式",{"2":{"42":1}}],["不用写一行代码",{"2":{"17":1}}],["已存在该记录",{"2":{"42":1}}],["统一异常处理",{"0":{"41":1},"1":{"42":1}}],["按照简单",{"2":{"98":1}}],["按上面的包结构新增即可",{"2":{"40":1}}],["按规则组装",{"2":{"38":1}}],["为什么选择",{"0":{"102":1}}],["为例",{"2":{"68":1}}],["为排除引入",{"2":{"60":1}}],["为引入",{"2":{"60":1}}],["为主应用",{"2":{"54":1}}],["为插件key",{"2":{"53":1}}],["为对应的值",{"2":{"47":1}}],["为表的字段",{"2":{"47":1}}],["为表的名称",{"2":{"47":1}}],["为业务模块",{"2":{"40":1}}],["为核心模块",{"2":{"40":1}}],["为了使项目能够持续",{"2":{"105":1}}],["为了开发插件如果引入了主应用已经有的maven依赖可以在下面的",{"2":{"60":2}}],["为了方便开发插件和统一插件开发规范",{"2":{"56":1}}],["为了方便获取参数",{"2":{"33":1}}],["为了丰富系统功能",{"2":{"50":1}}],["为了不过多依赖环境",{"2":{"8":1}}],["插件可以在打包的时候将在我们",{"2":{"60":1}}],["插件详解",{"0":{"60":1}}],["插件配置",{"2":{"59":1}}],["插件介绍",{"2":{"59":1}}],["插件",{"2":{"59":1,"112":1}}],["插件钩子",{"2":{"59":1}}],["插件唯一标识",{"2":{"59":1}}],["插件描述",{"2":{"58":1,"59":1}}],["插件运行测试类",{"2":{"57":1}}],["插件信息配置文件",{"2":{"57":1}}],["插件类放在这个包下",{"2":{"57":1}}],["插件包",{"2":{"57":1}}],["插件包可以通过官网下载插件",{"2":{"52":1}}],["插件方法",{"2":{"53":1,"60":1}}],["插件管理",{"2":{"52":1}}],["插件模块",{"2":{"40":1}}],["插件分享等",{"2":{"6":1}}],["插件分享等内容",{"2":{"4":1}}],["角色菜单权限分配",{"2":{"103":1}}],["角色管理",{"2":{"103":1}}],["角色数组",{"2":{"59":1,"76":1}}],["角色",{"2":{"40":1}}],["资源共享",{"2":{"85":1}}],["资源目录下的文件",{"2":{"54":1}}],["资源文件",{"2":{"40":1}}],["资源",{"2":{"40":1,"63":1}}],["菜单管理",{"2":{"103":1}}],["菜单",{"2":{"40":1}}],["└─",{"2":{"40":8,"57":7}}],["└──",{"2":{"36":6}}],["核心包",{"2":{"40":1,"57":1}}],["├─core",{"2":{"57":1}}],["├─",{"2":{"40":15,"57":3}}],["├──",{"2":{"36":1}}],["清晰明了便于管理",{"2":{"39":1}}],["方便一张图片使用在多种场景",{"2":{"96":1}}],["方法上",{"0":{"80":1}}],["方法去调用主应用的一些对象方法",{"2":{"53":1}}],["方法第一个参数如果为",{"2":{"42":1}}],["方法",{"2":{"38":1,"53":5}}],["方式二",{"0":{"82":1}}],["方式一",{"0":{"79":1},"1":{"80":1,"81":1}}],["方式",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1},"2":{"25":1,"76":1}}],["方式启动",{"2":{"23":1}}],["并异步进行刷新用户权限",{"2":{"115":1}}],["并可以在init方法中初始化返回字段类型及数据组装函数定义",{"2":{"115":1}}],["并将用户信息存在整个请求过程中的",{"2":{"76":1}}],["并实现",{"2":{"53":1,"60":1}}],["并实现值的插入",{"2":{"47":1}}],["并定义表数据",{"2":{"47":1}}],["并调用大模型对其进行翻译",{"2":{"45":1}}],["并重写了",{"2":{"38":1}}],["并且支持表字段的修改",{"2":{"15":1}}],["上传模式",{"2":{"96":1}}],["上传前后端代码到服务器",{"2":{"21":1}}],["上面只是个例子",{"2":{"58":1}}],["上加了这个注解后",{"2":{"38":1}}],["而不用一味地堆功能",{"2":{"50":1}}],["而不需要关心数据库的表",{"2":{"15":1}}],["而是也非常不灵活",{"2":{"46":1}}],["而是对它做一层封装",{"2":{"38":1}}],["而且不需要改变任何原有代码",{"2":{"44":1}}],["否则使用",{"2":{"48":1}}],["否则这个controller",{"2":{"36":1}}],["否则你将无法正常访问你的",{"2":{"27":1}}],["包或其内部的类和资源",{"2":{"63":1}}],["包或类",{"2":{"63":1}}],["包具有以下几个显著的优势",{"2":{"63":1}}],["包的位置和版本",{"2":{"63":1}}],["包括本地文件系统",{"2":{"63":1}}],["包括一些核心的组件工具",{"2":{"40":1}}],["包时会想该插件注入",{"2":{"53":1}}],["包下创建",{"2":{"40":1}}],["包下加一级",{"2":{"36":1}}],["包",{"2":{"36":1,"40":1,"63":3}}],["同时如果个别接口需要忽略记录请求日志",{"2":{"71":1}}],["同级",{"2":{"70":1}}],["同级下有个",{"2":{"36":1}}],["同样也可以对",{"2":{"34":1}}],["转成小写替换掉",{"2":{"36":1}}],["与前端紧密结合",{"2":{"95":1}}],["与其它实现方案不同的是",{"2":{"44":1}}],["与",{"2":{"36":1,"72":1}}],["模块化",{"2":{"63":1}}],["模块包",{"2":{"40":1}}],["模块名和",{"2":{"36":1}}],["模块名",{"2":{"36":2}}],["模块目录",{"2":{"36":1}}],["│─",{"2":{"57":1}}],["│",{"2":{"36":17,"40":36,"57":12}}],["原理参考美团点评分布式id",{"2":{"94":1}}],["原理",{"0":{"35":1,"74":1},"1":{"36":1,"37":1,"38":1}}],["原生",{"2":{"9":1}}],["接下来我们看看实现的原理",{"2":{"34":1}}],["接口的请求入参日志",{"2":{"103":1}}],["接口路由规则",{"0":{"36":1}}],["接口",{"2":{"27":1,"36":1}}],["接口到前端页面的一键生成",{"2":{"7":1,"17":1}}],["进行重写",{"2":{"34":1}}],["中获得",{"2":{"76":1}}],["中实现动态加载",{"2":{"63":1}}],["中的",{"2":{"61":1}}],["中排除掉不打入jar",{"2":{"60":2}}],["中重写方法",{"2":{"34":1}}],["中加非存储数据库的字段",{"2":{"32":1}}],["重写",{"0":{"38":1}}],["重写逻辑",{"2":{"34":2}}],["重写实现",{"0":{"34":1}}],["重启",{"2":{"23":1}}],["重启某个服务",{"2":{"23":1}}],["重启生成表",{"2":{"18":1}}],["表单",{"2":{"33":1}}],["表示访问服务端接口而不是静态资源",{"2":{"24":1}}],["表示",{"2":{"23":2}}],["将由以下这个类实现自动配置模块路由",{"2":{"38":1}}],["将",{"2":{"33":1}}],["用法",{"2":{"94":1}}],["用来判定用户是否有此权限",{"2":{"74":1}}],["用configattribute的集合作为value",{"2":{"74":1}}],["用权限的path作为map的key",{"2":{"74":1}}],["用户是系统操作者",{"2":{"103":1}}],["用户管理",{"2":{"103":1}}],["用户管理模块",{"2":{"40":1}}],["用户",{"2":{"76":1}}],["用户详情",{"2":{"74":1}}],["用户名",{"2":{"76":1}}],["用户名不存在",{"2":{"74":1}}],["用户名已存在",{"2":{"41":1,"42":3}}],["用户登录",{"2":{"74":1}}],["用户id",{"2":{"32":1}}],["用过",{"2":{"15":1}}],["订单id",{"2":{"94":1}}],["订单商品列表",{"2":{"32":1}}],["订单信息",{"2":{"32":1}}],["订单产品列表也一并查出",{"2":{"32":1}}],["web设置配合使用",{"2":{"96":1}}],["web设置",{"2":{"96":1}}],["web",{"2":{"53":4,"96":1}}],["wrappers",{"2":{"42":2,"74":1}}],["without",{"2":{"60":1}}],["with",{"2":{"32":1}}],["wuliu",{"2":{"11":1}}],["还可以对图片进行各种如压缩",{"2":{"96":1}}],["还可以了解到一些前沿的技术",{"2":{"4":1}}],["还有",{"2":{"32":1}}],["没有可初始化的插件",{"2":{"69":1}}],["没有设置astype",{"2":{"32":1}}],["没有任何的",{"2":{"12":1}}],["没有任何",{"2":{"12":1}}],["也支持绝对路径",{"2":{"96":1}}],["也可以注解在类上",{"2":{"81":1}}],["也可以使用别人开发的插件",{"2":{"50":1}}],["也可以自己定义vo",{"2":{"32":1}}],["也就是后续你有新增相关的内容",{"2":{"45":1}}],["也对此做了支持",{"2":{"43":1}}],["也希望广大开发者粉丝帮助完善文档",{"2":{"0":1}}],["连表查询",{"2":{"32":1}}],["自带的注解",{"2":{"38":1}}],["自定义路由注解",{"0":{"37":1}}],["自定义类型默认为",{"2":{"32":1}}],["自定义场景主要使用在关联表查询插件",{"2":{"32":1}}],["自定义查询模式",{"2":{"32":1}}],["自定义的查询方式",{"2":{"32":1}}],["自动编码功能",{"2":{"117":1}}],["自动编码",{"2":{"114":1}}],["自动生成前端页面",{"2":{"18":1}}],["自动映射成数据库的表结构",{"2":{"15":1}}],["自动建表",{"0":{"15":1}}],["针对这种场景",{"2":{"32":1}}],["zh",{"2":{"32":3,"45":2}}],["具体看",{"2":{"32":2}}],["返回给",{"2":{"38":1}}],["返回字段",{"2":{"32":1}}],["返回哪些字段等",{"2":{"31":1,"33":1,"34":1,"83":1}}],["604800",{"2":{"73":1}}],["6",{"2":{"31":1,"60":12,"65":1,"99":1}}],["6379",{"2":{"8":1}}],["删除",{"2":{"31":1,"103":1}}],["删除某个服务",{"2":{"23":1}}],["新增后台扩展插件",{"2":{"117":1}}],["新增一个",{"2":{"40":1}}],["新增",{"2":{"31":1,"114":2,"115":4,"116":3,"117":1}}],["查询该用户所具有的权限并缓存",{"2":{"74":1}}],["查询模式querymodeenum",{"2":{"32":1}}],["查询连表字段",{"2":{"32":1}}],["查询另一张表的字段",{"2":{"32":1}}],["查询配置",{"0":{"32":1}}],["查询列表",{"2":{"31":1}}],["查询条件过滤",{"2":{"31":1,"33":1,"34":1,"83":1}}],["查看服务的输出日志",{"2":{"23":1}}],["查看",{"2":{"21":1}}],["示例",{"0":{"31":1}}],["使得代码更加清晰",{"2":{"63":1}}],["使得可以在插件中获取主应用中的",{"2":{"53":1}}],["使得同一个软件可以面向不同语言地区的用户",{"2":{"43":1}}],["使得",{"2":{"30":1}}],["使用cool",{"2":{"53":1}}],["使用缓存",{"2":{"53":1}}],["使用插件",{"0":{"51":1},"1":{"52":1,"53":1,"54":1}}],["使用了关联查询",{"2":{"32":1}}],["使用",{"0":{"9":1,"45":1,"88":1,"96":1},"1":{"89":1,"90":1},"2":{"49":1}}],["该功能主要完成系统用户配置",{"2":{"103":1}}],["该接口需要登录鉴权",{"2":{"49":1}}],["该接口解析的前缀则是",{"2":{"36":1}}],["该类继承了",{"2":{"38":1}}],["该父类已经实现了以下六个基础方法",{"2":{"30":1}}],["该文件是前端自动扫描后端接口生成的",{"2":{"27":1}}],["所有的",{"2":{"30":1}}],["所以需要配置",{"2":{"21":1}}],["让前端能够自动生成eps",{"2":{"27":1}}],["需和上面的",{"2":{"96":1}}],["需要提取初始化到上面那个",{"2":{"94":1}}],["需要对应的表实体继承对象进行调整",{"2":{"90":1}}],["需要手动开启",{"2":{"89":1}}],["需要分别拉取前后端代码到本地",{"2":{"67":1}}],["需要初始化一些数据",{"2":{"47":1}}],["需要通过下面的",{"2":{"32":1}}],["需要组装数据",{"2":{"32":1}}],["需要返回的字段分布在各个表里",{"2":{"32":1}}],["需要模糊查询的字段",{"2":{"32":1}}],["需要确保前端和后端在本地运行过一次",{"2":{"27":1}}],["需安装",{"2":{"8":1}}],["创建docker",{"2":{"27":1}}],["创建",{"2":{"26":1,"47":1}}],["创建实体类生成表",{"2":{"18":1}}],["epsevent",{"2":{"69":1}}],["eps",{"2":{"69":2,"80":2}}],["eps识别不了",{"2":{"36":1}}],["eo",{"2":{"45":1}}],["eu",{"2":{"45":1}}],["et",{"2":{"45":1}}],["element",{"2":{"101":1}}],["else",{"2":{"53":1}}],["el",{"2":{"45":1}}],["es",{"2":{"45":1}}],["enable",{"2":{"89":1,"94":1}}],["enable修改为",{"2":{"89":1}}],["enablewebsecurity",{"2":{"74":1}}],["encodedpassword",{"2":{"74":2}}],["encode",{"2":{"74":1}}],["entrypointunauthorizedhandler",{"2":{"74":3}}],["entity",{"2":{"13":2,"32":8,"40":2,"42":12,"47":1}}],["en",{"2":{"45":1}}],["error",{"2":{"42":10}}],["e",{"2":{"42":19,"60":2}}],["equals",{"2":{"74":1}}],["eq",{"2":{"32":2,"42":2,"74":2}}],["expression",{"2":{"60":2}}],["expire",{"2":{"73":1}}],["expiretime",{"2":{"48":1,"49":1}}],["expires",{"2":{"24":1}}],["excluding",{"2":{"60":14}}],["exclude>cn",{"2":{"60":2}}],["exclude>jakarta",{"2":{"60":1}}],["exclude>io",{"2":{"60":4}}],["exclude>",{"2":{"60":16}}],["exclude>org",{"2":{"60":9}}],["excludes>",{"2":{"60":2}}],["exceptionhandling",{"2":{"74":1}}],["exceptionhandler",{"2":{"42":6}}],["exception",{"2":{"42":2,"60":1,"74":2}}],["execution",{"2":{"110":1}}],["execution>",{"2":{"60":2}}],["executions>",{"2":{"60":2}}],["exec",{"2":{"53":5}}],["extern",{"2":{"53":1}}],["extends",{"2":{"31":1,"32":3,"33":1,"34":2,"38":1,"53":1,"60":1,"74":1,"83":1,"94":1}}],["extractedmenu",{"2":{"47":1}}],["extracteddb",{"2":{"47":1}}],["持久化连接相关配置",{"2":{"24":1}}],["持续添加更多的数据库支持",{"2":{"14":1}}],["$",{"2":{"96":1}}],["$1",{"2":{"24":1}}],["$upstream",{"2":{"24":1}}],["$uri",{"2":{"24":2}}],["$http",{"2":{"24":2}}],["$host$request",{"2":{"24":1}}],["$host",{"2":{"24":2}}],["$proxy",{"2":{"24":2}}],["$remote",{"2":{"24":5}}],["访问http",{"2":{"70":1}}],["访问如果登录页正常出现验证码",{"2":{"26":1}}],["访问",{"2":{"24":1,"69":1}}],["访问域名",{"2":{"21":1}}],["8",{"2":{"53":1,"60":3,"65":1,"68":2}}],["80",{"2":{"28":2}}],["8001",{"2":{"24":1,"28":2,"53":5,"69":2,"83":1}}],["86400s",{"2":{"24":1}}],["8s",{"2":{"14":2}}],["403",{"2":{"74":1}}],["401",{"2":{"74":1}}],["46",{"2":{"69":1}}],["45",{"2":{"69":3}}],["4b57",{"2":{"60":1}}],["47ac",{"2":{"60":1}}],["4fd03504",{"2":{"60":1}}],["4",{"0":{"24":1,"59":1,"70":1},"2":{"60":2,"63":1,"74":1}}],["默认是相对路径",{"2":{"96":1}}],["默认禁用",{"2":{"94":2}}],["默认关闭",{"2":{"89":1}}],["默认集成springdoc",{"2":{"83":1}}],["默认忽略app端接口",{"2":{"71":1}}],["默认账户密码",{"2":{"70":1}}],["默认实现了通用的六个接口方法",{"2":{"34":1}}],["默认实现了两种缓存",{"2":{"8":1}}],["默认为map",{"2":{"32":1}}],["默认为entity",{"2":{"32":1}}],["默认转成map",{"2":{"32":1}}],["默认的日志位置",{"2":{"23":1}}],["改成自己的应用名称",{"2":{"23":1}}],["停止某个服务",{"2":{"23":1}}],["列表查询",{"2":{"32":1}}],["列出当前的服务",{"2":{"23":1}}],["列的配置",{"2":{"15":1}}],["命令行安装",{"2":{"23":1}}],["运行系统",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1}}],["运行结果",{"2":{"53":1}}],["运行",{"0":{"28":1}}],["运行后端",{"2":{"28":2}}],["运行后端和前端",{"2":{"26":1}}],["运行后端服务",{"0":{"23":1}}],["运行代码生成器",{"2":{"18":1}}],["31908",{"2":{"69":4}}],["383+08",{"2":{"69":1}}],["382+08",{"2":{"69":1}}],["38",{"2":{"69":4}}],["3306",{"2":{"68":1}}],["32",{"2":{"60":1}}],["32615",{"2":{"53":8}}],["3c64059230d0",{"2":{"60":1}}],["3600s",{"2":{"24":3}}],["3",{"0":{"23":1,"28":1,"54":1,"58":1,"69":1,"115":1},"2":{"36":1,"45":1,"60":1,"63":1,"65":2,"69":1,"74":1,"99":1,"100":1}}],["3000s",{"2":{"24":2}}],["302",{"2":{"24":1}}],["301",{"2":{"24":1}}],["304",{"2":{"24":1}}],["30",{"2":{"11":1}}],["推荐",{"2":{"65":2,"110":1}}],["推荐使用",{"0":{"22":1}}],["推荐两种快速开发方式",{"2":{"16":1}}],["27",{"0":{"118":1}}],["2b8",{"2":{"68":1}}],["26",{"2":{"60":3}}],["256x256",{"2":{"59":1}}],["25",{"0":{"115":1},"2":{"36":1}}],["2025",{"0":{"114":1}}],["2024",{"0":{"115":1,"116":1,"117":1,"118":1},"2":{"36":1,"53":8,"69":4}}],["20",{"2":{"94":1}}],["200",{"2":{"24":1}}],["2",{"0":{"22":1,"27":1,"53":1,"57":1,"68":1,"90":1,"116":1},"2":{"45":1,"60":5,"63":2,"74":1}}],["到后端服务",{"2":{"21":1}}],["安全考虑生产环境不会自动初始化数据库",{"2":{"21":1}}],["安装云存储插件",{"2":{"95":1}}],["安装插件将打包好的",{"2":{"62":1}}],["安装插件",{"0":{"62":1}}],["安装插件之后",{"2":{"53":1}}],["安装后",{"2":{"45":1}}],["安装",{"0":{"52":1},"2":{"22":1}}],["安装依赖",{"0":{"22":1},"2":{"21":1,"70":1}}],["安装宝塔",{"2":{"21":1}}],["恭喜你",{"2":{"21":1,"26":1}}],["反向代理",{"2":{"21":2}}],["官方多环境配置文档",{"2":{"21":1}}],["官网文档",{"2":{"12":1}}],["官网",{"2":{"1":1,"22":1}}],["本地上传配置",{"2":{"96":1}}],["本地上传",{"2":{"95":1}}],["本地配置完数据库运行",{"2":{"21":1,"26":1}}],["本部署教程以",{"2":{"20":1}}],["本身",{"2":{"12":1}}],["以往的框架已经越来越不能满足现代化的开发需求",{"2":{"102":1}}],["以",{"2":{"68":1}}],["以前该怎么写还是怎么写",{"2":{"44":1}}],["以上包在主应用已经引入",{"2":{"60":1}}],["以上是针对entity单表查询方式",{"2":{"32":1}}],["以上内容来自第三方相关产品的官方文档或第三方平台",{"2":{"13":1}}],["以下包会打入jar",{"2":{"60":1}}],["以下是我们的一些计划",{"2":{"111":1}}],["以下是",{"2":{"25":1}}],["以下教程以",{"2":{"19":1}}],["以宝塔为例",{"0":{"21":1,"26":1}}],["低价云服务器推荐",{"2":{"19":1}}],["🔥",{"2":{"19":1}}],["组件会根据字段智能选择",{"2":{"18":1}}],["nio",{"2":{"53":5}}],["nl",{"2":{"45":1}}],["nb",{"2":{"45":1}}],["n",{"2":{"43":1,"103":1}}],["next",{"2":{"94":1}}],["net",{"2":{"60":4}}],["network",{"2":{"26":1,"27":2,"28":2}}],["new",{"2":{"18":2,"42":2,"60":2,"63":4,"74":12}}],["now",{"2":{"53":2}}],["norepeatsubmitaspect",{"2":{"49":1}}],["norepeatsubmit",{"2":{"48":1,"49":6}}],["notnull",{"2":{"32":1,"94":3}}],["no",{"2":{"24":1,"45":1}}],["node",{"2":{"20":1}}],["nodejs",{"2":{"19":1,"21":1}}],["name>",{"2":{"61":1}}],["name>my",{"2":{"61":1}}],["name",{"2":{"23":1,"28":2,"31":1,"32":3,"33":1,"34":1,"37":1,"47":2,"58":1,"59":1,"68":1,"83":1,"96":1}}],["npm",{"2":{"23":1,"70":2}}],["npmmirror",{"2":{"22":1}}],["nginx",{"0":{"24":1},"2":{"21":3}}],["null",{"2":{"11":1,"41":1,"42":2,"47":2,"53":1,"60":1,"74":3}}],["number",{"2":{"23":1}}],["num",{"2":{"11":4}}],["v3",{"2":{"82":1}}],["vi",{"2":{"45":1}}],["v8",{"0":{"43":1,"84":1,"114":1}}],["v7",{"0":{"115":1,"116":1,"117":1,"118":1},"2":{"36":1,"53":1}}],["values",{"2":{"53":1}}],["value",{"2":{"31":1,"32":2,"33":1,"34":1,"37":1,"47":1,"81":1,"83":1,"94":1,"96":4}}],["valid",{"2":{"24":1}}],["vue3",{"2":{"101":1}}],["vue",{"2":{"27":1,"28":2,"107":3}}],["verify",{"2":{"60":1}}],["version>3",{"2":{"60":1}}],["version>2",{"2":{"60":1}}],["version>",{"2":{"60":3}}],["version>5",{"2":{"60":1}}],["version",{"2":{"24":2,"58":1,"59":1}}],["vertica",{"2":{"14":2}}],["void",{"2":{"18":1,"31":1,"32":2,"33":1,"34":1,"47":1,"53":3,"71":1,"74":6,"83":1,"93":2}}],["文件管理",{"2":{"103":1}}],["文件管理模块",{"2":{"40":1}}],["文件存放路径",{"2":{"96":1}}],["文件根地址",{"2":{"96":1}}],["文件等",{"2":{"63":1}}],["文件上传插件",{"2":{"112":1}}],["文件上传模式",{"2":{"96":1}}],["文件上传相关",{"2":{"96":1}}],["文件上传",{"0":{"95":1},"2":{"62":1,"96":1}}],["文件上传换成云存储",{"2":{"29":1}}],["文件内容",{"2":{"53":1}}],["文件后",{"2":{"47":1}}],["文件",{"2":{"18":1,"40":1,"47":2,"96":1}}],["文档",{"0":{"83":1,"108":1},"2":{"1":1}}],["编译打包后端服务",{"2":{"21":1}}],["编写实体类",{"2":{"18":1}}],["编码",{"0":{"7":1},"2":{"102":1}}],["生成的路由前缀为",{"2":{"36":1}}],["生成",{"2":{"18":1}}],["生成前端代码",{"2":{"18":1}}],["生成后端代码",{"2":{"18":1}}],["生成策略",{"2":{"13":1}}],["零代码开发",{"2":{"17":1}}],["提高了代码的可维护性",{"2":{"63":1}}],["提高开发效率",{"2":{"16":1}}],["提示",{"2":{"40":1}}],["提供了极大的灵活性",{"2":{"63":1}}],["提供了简化的业务异常抛出工具",{"2":{"41":1}}],["提供了非常灵活的",{"2":{"12":1}}],["提供了一种高效且可靠的解决方案",{"2":{"8":1}}],["降低开发成本",{"2":{"16":1}}],["因为有你们的支持",{"2":{"113":1}}],["因为这可能会造成数据丢失",{"2":{"15":1}}],["因此如果你需要开发",{"2":{"46":1}}],["因此会带来指数级的性能增长",{"2":{"12":1}}],["因此会带来更高的自主性",{"2":{"12":1}}],["切勿在生产环境开启自动建表功能",{"2":{"15":1}}],["节省了大量手动工作",{"2":{"15":1}}],["尤其是开发过程中频繁的新增表及变更表结构",{"2":{"15":1}}],["这将会给我们带来更多的动力",{"2":{"113":1}}],["这些方式都可以解决这个问题",{"2":{"110":1}}],["这边使用到了",{"2":{"60":1}}],["这会使得打包结果很臃肿",{"2":{"60":1}}],["这个可能会给你带来巨大的帮助",{"2":{"46":1}}],["这个解析规则在",{"2":{"36":1}}],["这样就需要在entity加上另一张表的的字段",{"2":{"32":1}}],["这样就默认实现了以下六个接口",{"2":{"31":1}}],["这让我们可以可以专注于业务逻辑和实体",{"2":{"15":1}}],["这是",{"2":{"0":1}}],["有且只能有一个类被",{"2":{"60":1}}],["有时候开发时的配置和生产环境的配置是不一样的",{"2":{"54":1}}],["有些功能模块上线时",{"2":{"47":1}}],["有了该文件",{"2":{"27":1}}],["有一项重要的能力就是表结构自动维护",{"2":{"15":1}}],["有兴趣的可以关注我们",{"2":{"4":1}}],["实际开发中可以根据自己的需求来配置",{"2":{"58":1}}],["实现功能可插拔",{"2":{"103":1}}],["实现应用程序的快速扩展和升级",{"2":{"63":1}}],["实现方法",{"2":{"63":1}}],["实现动态加载的技术方案",{"2":{"63":1}}],["实现原理",{"0":{"63":1},"2":{"45":1}}],["实现",{"0":{"44":1,"86":1},"1":{"87":1},"2":{"48":1}}],["实现简单功能从",{"2":{"7":1,"17":1}}],["实例数量",{"2":{"23":1}}],["实体需以",{"2":{"47":1}}],["实体中",{"2":{"32":1}}],["实体",{"2":{"15":1,"32":1}}],["根据一定规则生成",{"2":{"38":1}}],["根据列表查询单个信息",{"2":{"31":1}}],["根据",{"2":{"15":1}}],["理论上你只需修改一些不兼容的代码就可以正常运行了",{"2":{"14":1}}],["那样工作量太大了",{"2":{"14":1}}],["是否开启多租户",{"2":{"89":1}}],["是否支持在微服务项目下进行",{"2":{"13":1}}],["是一种软件架构模式",{"2":{"84":1}}],["是",{"2":{"63":1}}],["是插件的配置信息",{"2":{"58":1}}],["是软件国际化的标准缩写",{"2":{"43":1}}],["是具体的业务框架",{"2":{"14":1}}],["虽然",{"2":{"14":1}}],["星瑞格数据库",{"2":{"14":1}}],["utf",{"2":{"53":1}}],["util",{"2":{"53":4}}],["uniindex",{"2":{"94":1}}],["union",{"2":{"13":2}}],["unlock",{"2":{"48":1,"49":1}}],["ug",{"2":{"45":1}}],["uk",{"2":{"45":1}}],["urlclassloader",{"2":{"63":2}}],["url",{"2":{"33":1,"63":3,"68":1,"74":2,"96":1}}],["uri$is",{"2":{"24":1}}],["useunicode=true",{"2":{"68":1}}],["useplugin",{"2":{"53":2}}],["usecache",{"2":{"53":2}}],["usestatus",{"2":{"32":1}}],["users",{"2":{"96":2}}],["userinfo",{"2":{"74":1,"76":2}}],["userid",{"2":{"32":1,"76":2,"77":1}}],["userdetails",{"2":{"74":2}}],["userdetailsservice",{"2":{"74":4}}],["usernamepasswordauthenticationfilter",{"2":{"74":1}}],["usernamenotfoundexception",{"2":{"74":2}}],["username",{"2":{"68":1,"74":2,"76":2}}],["user",{"2":{"32":5,"33":2,"36":2,"40":1}}],["uploadmode",{"2":{"96":2}}],["uploadpath",{"2":{"96":1}}],["upload",{"2":{"59":1,"82":1,"96":5}}],["updates",{"2":{"53":1}}],["update",{"2":{"30":1,"31":1,"32":1,"33":1,"34":1,"81":1,"83":1}}],["upgrade",{"2":{"24":6}}],["ui",{"2":{"18":1,"82":1,"83":1,"101":1}}],["uxdb",{"2":{"14":1}}],["华为",{"2":{"14":1}}],["华库",{"2":{"14":1}}],["行云数据库",{"2":{"14":1}}],["ximu",{"2":{"114":1}}],["x26",{"2":{"68":2}}],["xml",{"2":{"40":1,"60":2,"61":2}}],["xxxxx",{"2":{"54":2}}],["xxx",{"2":{"36":3,"53":2,"58":2}}],["x3c",{"2":{"31":1,"32":4,"33":1,"34":5,"38":1,"42":2,"53":1,"60":81,"61":4,"74":13,"83":1,"94":1}}],["x",{"2":{"24":7,"53":1,"100":1,"118":1}}],["xcloud",{"2":{"14":1}}],["xugu",{"2":{"14":1}}],["瀚高数据库",{"2":{"14":1}}],["神通数据库",{"2":{"14":1}}],["gt",{"2":{"65":3,"68":1,"90":1,"99":3,"110":3,"114":1}}],["grantedauthority>",{"2":{"74":1}}],["graalvm",{"2":{"65":1,"99":1}}],["groupid>org",{"2":{"60":1}}],["groupid>com",{"2":{"60":1}}],["groupid>cn",{"2":{"60":1}}],["groupid>",{"2":{"60":3}}],["greenplum",{"2":{"14":2}}],["gitcode",{"2":{"106":1,"107":1}}],["gitee",{"2":{"56":1,"106":1,"107":1,"108":1}}],["github",{"2":{"56":1,"106":1,"107":1,"108":1}}],["goal>",{"2":{"60":1}}],["goal>shade",{"2":{"60":1}}],["goals>",{"2":{"60":2}}],["goodslist",{"2":{"32":1}}],["goldilocks",{"2":{"14":2}}],["g",{"2":{"22":1,"23":1}}],["gbase",{"2":{"14":3}}],["gauss",{"2":{"14":2}}],["getbytes",{"2":{"74":2}}],["geturls",{"2":{"74":1}}],["getusername",{"2":{"42":4,"74":3}}],["getsecureobjectclass",{"2":{"74":1}}],["getstatus",{"2":{"74":2}}],["getstr",{"2":{"33":1}}],["getroles",{"2":{"74":1}}],["getresponse",{"2":{"74":1}}],["getresourceasstream",{"2":{"53":1}}],["getrequesturl",{"2":{"74":1}}],["getrequesturi",{"2":{"49":1}}],["getrequest",{"2":{"49":1,"74":1}}],["getrequestattributes",{"2":{"49":1}}],["getdepartmentidsbyroleids",{"2":{"74":1}}],["getperms",{"2":{"74":1}}],["getparent",{"2":{"53":1}}],["getparentresource",{"2":{"53":2}}],["getpasswordv",{"2":{"74":1}}],["getpassword",{"2":{"42":2,"74":1}}],["getapp",{"2":{"80":1}}],["getadminuserinfo",{"2":{"76":1}}],["getadminusername",{"2":{"76":1}}],["getauthenticationmanager",{"2":{"74":1}}],["getallconfigattributes",{"2":{"74":1}}],["getallperms",{"2":{"74":1}}],["getattributes",{"2":{"74":1}}],["getattribute",{"2":{"71":1}}],["getabsolutepath",{"2":{"63":1}}],["getannotationsbytype",{"2":{"38":1}}],["getinstance",{"2":{"53":1}}],["getid",{"2":{"42":2,"74":6}}],["getone",{"2":{"42":2,"74":1}}],["get等请求方式是否正确",{"2":{"42":1}}],["getmode",{"2":{"96":1}}],["getmapping",{"2":{"76":1,"80":1,"96":1}}],["getmappingformethod",{"0":{"38":1},"2":{"38":3}}],["getmessage",{"2":{"42":7}}],["getchain",{"2":{"74":1}}],["getcontextclassloader",{"2":{"63":1}}],["getcode",{"2":{"42":1}}],["getclassloader",{"2":{"53":1}}],["getclass",{"2":{"53":1}}],["getcurrentuserid",{"2":{"32":1,"49":2,"76":1,"77":1}}],["getter",{"2":{"32":1}}],["getnum",{"2":{"11":1}}],["getlogistics",{"2":{"11":1}}],["get",{"2":{"10":1,"11":2,"31":1,"32":2,"49":1,"53":2,"60":1,"74":1}}],["人大金仓数据库",{"2":{"14":1}}],["kyi=",{"2":{"53":1}}],["ky",{"2":{"45":1}}],["km",{"2":{"45":1}}],["ku",{"2":{"45":1}}],["kk",{"2":{"45":1}}],["ko",{"2":{"45":1}}],["kingbasees",{"2":{"14":1}}],["keyname",{"2":{"47":2}}],["keyword",{"2":{"32":1}}],["keywordlikefields",{"2":{"32":1}}],["key",{"2":{"9":1,"24":1,"47":1,"48":3,"49":3,"53":4,"58":1,"59":1,"94":2}}],["虚谷数据库",{"2":{"14":1}}],["达梦数据库",{"2":{"14":1}}],["及以上数据库",{"2":{"14":1}}],["及以下数据库",{"2":{"14":1}}],["及更高性能",{"2":{"13":1}}],["描述",{"2":{"14":1,"94":1}}],["如文件上传",{"2":{"117":1}}],["如支付",{"2":{"102":1}}],["如不占用主服务器带宽",{"2":{"96":1}}],["如阿里云",{"2":{"95":1}}],["如需启用调整为",{"2":{"94":2}}],["如我们这边示例使用到了中文转拼音",{"2":{"60":1}}],["如下面这个订单查询",{"2":{"32":1}}],["如下表格所示",{"2":{"14":1}}],["如",{"2":{"29":1,"95":1,"96":1}}],["如果方便请点下",{"2":{"113":1}}],["如果你有更好的建议",{"2":{"111":1}}],["如果你是自动化部署",{"2":{"27":1}}],["如果文档有缺失",{"2":{"108":1}}],["如果登录的用户token信息有携带tenantid",{"2":{"87":1}}],["如果不在权限表中则放行",{"2":{"74":1}}],["如果不满足需求",{"2":{"34":1}}],["如果项目中启用了redis",{"2":{"48":1}}],["如果同一张表历史已经有初始化过数据",{"2":{"47":1}}],["如果这个文件存在",{"2":{"45":1}}],["如果在权限表中",{"2":{"74":1}}],["如果在原文件直接修改将不生效",{"2":{"47":1}}],["如果在",{"2":{"36":1}}],["如果我们有需要连表查询",{"2":{"32":1}}],["如果我们的项目对你有用",{"2":{"2":1}}],["如果没效",{"2":{"24":1}}],["如果一切正常",{"2":{"21":1}}],["欢迎联系我们",{"2":{"111":1}}],["欢迎提交pr",{"2":{"108":1}}],["欢迎纠正",{"2":{"13":1}}],["欢迎加入我们大家庭一起讨论",{"2":{"2":1}}],["若有错误",{"2":{"13":1}}],["项目中常见的问题",{"2":{"109":1}}],["项目是开源免费",{"2":{"105":1}}],["项目是前后端分离的",{"2":{"67":1}}],["项目启动自动插入数据参考",{"2":{"94":1}}],["项目按照模块化的方式组织",{"2":{"39":1}}],["项目部署",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1}}],["项目",{"2":{"13":1}}],["非低代码",{"2":{"17":1}}],["非",{"2":{"13":1}}],["quot",{"2":{"13":2,"41":2,"42":2}}],["querymodeenum",{"2":{"32":2}}],["querywrapper",{"2":{"12":1,"13":1,"32":6,"34":3}}],["query",{"2":{"11":1,"32":1}}],["等包",{"2":{"40":1}}],["等参数封装在了一个",{"2":{"33":1}}],["等待数据库初始化完成",{"2":{"21":1,"26":1}}],["等",{"2":{"13":1,"18":1,"21":1,"31":1,"60":2}}],["等等",{"2":{"13":1}}],["和传统的",{"2":{"34":1}}],["和",{"2":{"13":1,"43":1}}],["借助其他框架或收费",{"2":{"13":1}}],["字典管理",{"2":{"103":1}}],["字典信息",{"2":{"81":1}}],["字典",{"2":{"45":1}}],["字典回写",{"2":{"13":1}}],["字段",{"2":{"59":1,"76":1}}],["字段解释",{"0":{"59":1}}],["字段模块",{"2":{"40":1}}],["字段全匹配",{"2":{"32":1}}],["字段加密",{"2":{"13":1}}],["字段权限",{"2":{"13":1}}],["字段的",{"2":{"13":1}}],["收费",{"2":{"13":4}}],["✔️",{"2":{"13":4}}],["审计",{"2":{"13":1}}],["乐观锁",{"2":{"13":1}}],["乐观锁更新",{"2":{"12":1}}],["未知",{"2":{"13":1}}],["传输",{"2":{"13":1}}],["r1",{"2":{"114":1}}],["rawpassword",{"2":{"74":4}}],["rich",{"2":{"47":1}}],["ru",{"2":{"45":1}}],["runtimeexception",{"2":{"60":1}}],["run",{"2":{"28":2,"47":1,"70":1}}],["r",{"2":{"33":2,"34":1,"42":17,"49":2,"76":1,"80":2,"96":4}}],["roleids",{"2":{"74":3,"76":1}}],["ro",{"2":{"45":1}}],["root",{"2":{"23":1,"24":1,"68":1}}],["row",{"2":{"13":1}}],["rpc",{"2":{"13":1}}],["refreshtoken可以当token使用问题",{"2":{"116":1}}],["refreshexpire",{"2":{"73":1}}],["replace",{"2":{"74":1}}],["replaceall",{"2":{"74":1}}],["record",{"2":{"71":1}}],["receive",{"2":{"49":3}}],["recycle",{"2":{"40":1}}],["reentrantlock",{"2":{"48":1}}],["required",{"2":{"96":1}}],["requiredargsconstructor",{"2":{"47":1,"49":1,"53":2,"96":1}}],["requirenonnull",{"2":{"49":1}}],["requestpart",{"2":{"96":1}}],["requestparam",{"2":{"53":3}}],["requestparams",{"2":{"31":1,"32":2,"33":4,"34":5,"42":4,"49":2,"71":1,"76":2,"83":1,"93":4}}],["requestmatchers",{"2":{"74":1}}],["requestmappinginfo",{"2":{"38":2}}],["requestmappinghandlermapping",{"2":{"38":2}}],["requestmapping",{"2":{"37":2,"53":1}}],["requestcontextholder",{"2":{"49":1}}],["requestattribute",{"2":{"33":1,"49":1,"76":1}}],["request",{"2":{"31":1,"32":2,"33":1,"34":1,"49":2,"71":3,"74":2,"83":1,"96":2}}],["requests",{"2":{"0":1}}],["remark",{"2":{"47":2}}],["remote",{"2":{"24":2}}],["relationonetomany",{"2":{"32":2}}],["relations",{"2":{"32":2}}],["rewrite",{"2":{"24":1}}],["readme",{"2":{"58":2,"59":1}}],["readbytes",{"2":{"53":1}}],["read",{"2":{"24":2}}],["real",{"2":{"24":2}}],["registry",{"2":{"22":2}}],["redirect",{"2":{"24":1}}],["redis",{"2":{"8":6,"29":1}}],["redshift",{"2":{"14":2}}],["response",{"2":{"74":2}}],["responsebody",{"2":{"53":2}}],["restaccessdeniedhandler",{"2":{"74":3}}],["restart",{"2":{"23":2}}],["restcontrolleradvice",{"2":{"42":1}}],["result",{"2":{"11":3,"53":8}}],["resources",{"2":{"40":1,"47":1,"54":2,"57":1,"68":1,"96":1}}],["resource",{"2":{"10":1,"71":1,"74":10}}],["return",{"2":{"9":1,"10":1,"11":3,"33":1,"34":2,"38":1,"42":8,"49":2,"53":2,"60":1,"74":13,"80":1,"96":2}}],["无论是注解在方法还是类上",{"2":{"81":1}}],["无需更改原有代码详情",{"2":{"114":1}}],["无需授权的",{"2":{"105":1}}],["无需安装",{"2":{"68":1}}],["无需手动配置",{"2":{"44":1}}],["无需手动通过",{"2":{"42":1}}],["无需额外安装软件",{"2":{"8":1}}],["无法做到全部支持",{"2":{"14":1}}],["无其他第三方依赖",{"2":{"13":1}}],["配置完数据库直接启动",{"2":{"110":1}}],["配置系统菜单",{"2":{"103":1}}],["配置文件",{"0":{"82":1}}],["配置文件位于src",{"2":{"68":1}}],["配置数据库",{"0":{"68":1}}],["配置插件信息",{"2":{"58":1}}],["配置点3",{"2":{"24":1}}],["配置点2",{"2":{"24":1}}],["配置点1",{"2":{"24":1}}],["配置示例",{"0":{"24":1}}],["配置淘宝镜像",{"2":{"22":1}}],["配置",{"0":{"54":1,"73":1},"2":{"13":1,"21":1}}],["复合主键",{"2":{"13":1}}],["lt",{"2":{"45":1}}],["lv",{"2":{"45":1}}],["loaduserbyusername",{"2":{"74":1}}],["loadresourcedefine",{"2":{"74":2}}],["lombok",{"2":{"53":2,"60":2}}],["local",{"2":{"68":1,"96":2}}],["locations",{"2":{"96":1}}],["location",{"2":{"24":3}}],["lockkey",{"2":{"48":1}}],["long",{"2":{"32":1,"42":2,"49":2,"74":2,"76":4,"94":2}}],["logurls",{"2":{"71":1}}],["logo",{"2":{"58":2,"59":2}}],["log`",{"2":{"53":1}}],["log",{"2":{"42":5,"47":1}}],["logs",{"2":{"23":3}}],["logistics",{"2":{"11":2}}],["list和page支持关联查询",{"2":{"115":1}}],["list",{"2":{"23":1,"30":1,"31":1,"32":2,"33":1,"34":1,"74":1,"81":1,"83":1}}],["length",{"2":{"94":1}}],["leafallocentity>",{"2":{"94":1}}],["leafallocentity",{"2":{"94":1}}],["leaf",{"2":{"94":3}}],["lealone",{"2":{"14":2}}],["leftjoin",{"2":{"32":2}}],["left",{"2":{"13":1}}],["❌",{"2":{"13":30}}],["✅国际化",{"2":{"45":1}}],["✅",{"2":{"13":51}}],["对系统中经常使用的一些较为固定的数据进行维护",{"2":{"103":1}}],["对系统动态配置常用参数",{"2":{"103":1}}],["对于需要租户隔离的表",{"2":{"90":1}}],["对数据进行隔离",{"2":{"87":1}}],["对应实体",{"2":{"93":2}}],["对应插件内的方法",{"2":{"53":1}}],["对应请求参数中的",{"2":{"32":1}}],["对应请求参数中同名参数",{"2":{"32":1}}],["对比一下是简化了不少",{"2":{"34":1}}],["对",{"2":{"13":1}}],["功能",{"2":{"110":1}}],["功能几乎跟nodejs",{"2":{"104":1}}],["功能或特点",{"2":{"13":1}}],["功能对比",{"0":{"13":1}}],["拦截器",{"2":{"12":1}}],["高棉语",{"2":{"45":1}}],["高性能",{"2":{"12":1}}],["高效的缓存解决方案",{"2":{"8":1}}],["逻辑删除",{"2":{"12":1,"13":1}}],["多个租户共享同一套应用程序代码和基础设施",{"2":{"85":1}}],["多语言是需要前后端共同支持的",{"2":{"44":1}}],["多语言的支持已经成为了一个必备的功能",{"2":{"43":1}}],["多租户的数据隔离有许多种方案",{"2":{"87":1}}],["多租户",{"0":{"84":1},"2":{"13":1,"84":1}}],["多数据源是否支持",{"2":{"13":2}}],["多数据源支持",{"2":{"13":1}}],["多种",{"2":{"13":1}}],["多张表",{"2":{"13":1}}],["多主键",{"2":{"12":1}}],["多表查询",{"2":{"12":1,"13":3}}],["稳定性越差",{"2":{"12":1}}],["依赖越多",{"2":{"12":1}}],["在线",{"2":{"103":1}}],["在线演示",{"2":{"7":1}}],["在修改数据之前或之后做一些处理",{"2":{"93":1}}],["在配置文件中加需要忽略的路径",{"2":{"82":1}}],["在项目编译的时候会自动生成这些文件",{"2":{"110":1}}],["在项目根目录下",{"2":{"70":1}}],["在项目启动的时候会去加载该文件",{"2":{"47":1}}],["在后台插件管理页面",{"2":{"62":1}}],["在后台插件管理里可以动态修改",{"2":{"58":1}}],["在执行打包的过程",{"2":{"60":1}}],["在我们脚手架上你可以发现",{"2":{"60":1}}],["在开发过程中如果需要引入第三方类库",{"2":{"60":1}}],["在开发环境下重启",{"2":{"45":1}}],["在提供的插件脚手架中已经应用了常用的依赖如",{"2":{"60":1}}],["在插件导入时才能被识别到",{"2":{"60":1}}],["在打包的时候选择要打包的插件",{"2":{"57":1}}],["在加载",{"2":{"53":1}}],["在controller接口上加上",{"2":{"49":1}}],["在某个版本需要新增数据的话",{"2":{"47":1}}],["在官网下载并安装国际化多语言插件",{"2":{"45":1}}],["在新增功能模块时",{"2":{"40":1}}],["在历史版本中需在",{"2":{"36":1}}],["在",{"2":{"12":1,"40":2,"42":1,"47":1,"61":1,"63":1}}],["在任何一个系统中",{"2":{"12":1}}],["把控性和稳定性",{"2":{"12":1}}],["再无任何第三方依赖",{"2":{"12":1}}],["除了",{"2":{"12":1,"13":1,"14":1}}],["更新",{"0":{"113":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1}}],["更加简洁",{"2":{"30":1}}],["更加强大的",{"2":{"12":1}}],["更灵活",{"2":{"12":1}}],["更轻量",{"2":{"12":1,"13":2}}],["详细用法请查看",{"2":{"12":1}}],["false",{"2":{"89":1,"94":1,"96":1}}],["favicon",{"2":{"71":1,"82":1}}],["fa",{"2":{"45":1}}],["frameoptionsconfig",{"2":{"74":1}}],["frameoptions",{"2":{"74":1}}],["fr",{"2":{"45":1}}],["front",{"2":{"24":1}}],["from",{"2":{"13":1,"32":1,"60":13}}],["form",{"2":{"96":1}}],["format",{"2":{"60":7}}],["for",{"2":{"24":4,"69":1,"74":2}}],["forwarded",{"2":{"24":4}}],["filterconfig",{"2":{"74":2}}],["filterchain",{"2":{"71":3,"74":1}}],["filterinvocation",{"2":{"74":5}}],["filterinvocationsecuritymetadatasource",{"2":{"74":2}}],["filter",{"2":{"71":1,"74":1}}],["fileuploadstrategyfactory",{"2":{"96":4}}],["filepath",{"2":{"54":1}}],["files",{"2":{"24":1,"96":2}}],["file",{"2":{"8":1,"63":2,"96":4}}],["finally",{"2":{"49":1,"74":1}}],["final",{"2":{"48":1,"49":1,"94":1,"96":1}}],["fi",{"2":{"45":1,"74":7}}],["fieldeq",{"2":{"32":1}}],["firebird",{"2":{"14":2}}],["fluent",{"2":{"13":1}}],["flex版本",{"2":{"114":1}}],["flex",{"2":{"12":2,"13":1,"14":2,"32":3,"89":1,"100":1,"110":1}}],["集成了比",{"2":{"12":1}}],["jwtauthenticationtokenfilter",{"2":{"74":3}}],["jwtsecurityconfig",{"2":{"74":1}}],["jwtuser",{"2":{"74":6}}],["jwtuserdetailsserviceimpl",{"2":{"74":1}}],["jwt",{"2":{"72":1,"74":1}}],["jdbc",{"2":{"68":2}}],["jdk",{"2":{"65":1,"99":1}}],["jcl",{"2":{"60":2}}],["jakarta",{"2":{"60":3}}],["jarfilepath",{"2":{"63":1}}],["jarurl",{"2":{"63":2}}],["jar",{"2":{"53":1,"60":31,"63":9}}],["ja",{"2":{"45":1}}],["javalong",{"2":{"77":1}}],["javaurl",{"2":{"63":1}}],["javapackage",{"2":{"47":1,"53":2,"60":1}}],["javapublic",{"2":{"18":1,"32":1,"37":1,"38":1,"42":2,"71":1}}],["java文件",{"2":{"36":1}}],["java",{"2":{"0":1,"1":1,"8":1,"9":1,"10":1,"11":1,"15":1,"18":2,"19":1,"31":1,"32":2,"33":1,"34":2,"36":3,"40":1,"42":1,"49":2,"53":10,"56":2,"57":2,"60":2,"61":1,"63":1,"65":1,"69":6,"74":4,"76":3,"80":1,"81":1,"83":1,"93":2,"94":1,"96":1,"99":1,"106":3,"108":2}}],["json参数",{"2":{"47":1}}],["json",{"2":{"47":7,"54":1,"57":1,"58":2,"60":2,"70":1,"94":1}}],["jsonobject",{"2":{"31":1,"32":2,"33":3,"34":3,"42":2,"49":1,"71":1,"76":1,"83":1,"93":2}}],["json也提交到代码仓库",{"2":{"27":1}}],["json文件",{"2":{"27":1,"47":1}}],["jsonutil",{"2":{"11":1,"32":1}}],["js",{"2":{"23":1,"71":1,"82":1}}],["jpa",{"2":{"15":2}}],["joinpoint",{"2":{"49":2}}],["join",{"2":{"13":2}}],[">",{"2":{"11":1,"32":1,"38":1,"60":5,"74":10}}],["物流单号",{"2":{"11":1}}],["通过在tenantentity中加入指定的列",{"2":{"87":1}}],["通过在方法上加tokenignore注解可以的接口不会进行",{"2":{"80":1}}],["通过资源共享降低运营和维护成本",{"2":{"85":1}}],["通过动态加载",{"2":{"63":2}}],["通过反射实现",{"2":{"53":1}}],["通过拖动配置",{"2":{"46":1}}],["通过",{"2":{"42":1,"63":1}}],["通过这种方式",{"2":{"32":1}}],["通过管理后台菜单管理的快速创建即可生成",{"2":{"18":1}}],["通过独特的架构",{"2":{"12":1}}],["通过coolcache缓存模板",{"0":{"11":1}}],["通过微调大模型学习框架特有写法",{"2":{"7":1,"17":1}}],["我是插件",{"2":{"60":1}}],["我们还引入了其他包",{"2":{"60":1}}],["我们还可以通过自定义方言的方式",{"2":{"14":1}}],["我们提供了插件脚手架",{"2":{"56":1}}],["我们提供了插件系统",{"2":{"50":1}}],["我们可以在运行时动态地加载外部的",{"2":{"63":1}}],["我们可以通过配置文件来实现",{"2":{"54":1}}],["我们可以使用",{"2":{"32":1}}],["我们不直接使用",{"2":{"38":1}}],["我们正在适配",{"2":{"14":1}}],["我们会尽力完善文档",{"2":{"0":1}}],["我被缓存了",{"2":{"9":1}}],["我被调用了",{"2":{"9":1}}],["ico",{"2":{"71":1,"82":1}}],["img",{"2":{"60":1}}],["import",{"2":{"53":14,"60":6}}],["impala",{"2":{"14":2}}],["implements",{"2":{"9":1,"10":1,"34":1,"47":1,"71":1,"74":3}}],["ioexception",{"2":{"71":1,"74":2}}],["ioutil",{"2":{"53":2}}],["io",{"2":{"53":2,"60":2}}],["it",{"2":{"45":1}}],["i18n下生成对应种类的语言文件",{"2":{"45":1}}],["i18n",{"2":{"43":1,"45":1}}],["illegalargumentexception",{"2":{"42":2,"74":2}}],["ignoredurlsproperties",{"2":{"74":3}}],["ignored",{"2":{"71":1,"82":1}}],["ignore",{"2":{"32":2}}],["is",{"2":{"69":1}}],["isnotempty",{"2":{"32":1}}],["isempty",{"2":{"11":1,"53":1,"74":1}}],["ip",{"2":{"24":2}}],["i",{"2":{"23":2,"43":1}}],["if",{"2":{"11":1,"32":1,"42":2,"48":1,"53":1,"74":2}}],["in",{"2":{"60":1}}],["including",{"2":{"60":2}}],["inputstream",{"2":{"53":4}}],["into",{"2":{"53":1}}],["interceptorstatustoken",{"2":{"74":1}}],["internationalization",{"2":{"43":1}}],["interface",{"2":{"37":1}}],["integer",{"2":{"10":1,"76":1,"94":1}}],["insert",{"2":{"53":4}}],["instances",{"2":{"23":1}}],["install",{"2":{"22":1,"23":1,"70":1}}],["info",{"2":{"30":1,"31":1,"32":5,"33":1,"34":1,"36":3,"38":5,"47":1,"53":5,"60":15,"69":4,"81":1,"83":1}}],["informix",{"2":{"14":2}}],["index",{"2":{"24":1,"32":1,"83":1}}],["init",{"2":{"18":1,"31":1,"32":2,"33":1,"34":1,"69":1,"74":1,"83":1}}],["inner",{"2":{"13":1}}],["invokeotherplugin",{"2":{"53":1}}],["invokemain",{"2":{"53":3,"60":1}}],["invokemethod",{"2":{"53":4}}],["invokeplugin",{"2":{"53":11,"60":2}}],["invoke",{"2":{"11":4,"74":2}}],["idea",{"2":{"110":1}}],["idgenservice",{"2":{"94":3}}],["id",{"2":{"9":1,"10":1,"13":1,"32":4,"45":1,"76":1,"94":1}}],["obtainsecuritymetadatasource",{"2":{"74":1}}],["observation",{"2":{"60":3}}],["objutil",{"2":{"11":1,"32":1,"53":2}}],["objectutil",{"2":{"74":1}}],["object中包含用户请求request",{"2":{"74":1}}],["objects",{"2":{"49":1}}],["object",{"2":{"9":1,"10":1,"11":2,"34":1,"49":1,"53":4,"60":2,"74":1}}],["open",{"2":{"82":1}}],["openapi",{"2":{"69":1}}],["opengauss",{"2":{"14":2}}],["operation",{"2":{"49":1,"96":2}}],["option",{"2":{"34":2}}],["ok",{"2":{"33":1,"49":1,"80":1,"96":2}}],["o",{"2":{"32":2,"69":1,"74":3}}],["on",{"2":{"32":1}}],["one",{"2":{"24":1}}],["ossaccesskeyid=ltai5t8xtpd99yzsjqcc",{"2":{"53":1}}],["oss",{"2":{"29":1,"53":3,"95":1,"96":1}}],["oscar",{"2":{"14":1}}],["ofmillis",{"2":{"48":1,"49":1}}],["ofminutes",{"2":{"11":1}}],["official",{"2":{"56":2,"106":2,"107":2,"108":2}}],["off",{"2":{"24":1}}],["oceanbase",{"2":{"14":2}}],["org",{"2":{"53":5,"60":8,"114":1}}],["ordergoodsentity>",{"2":{"32":1}}],["order",{"2":{"32":1,"40":2}}],["orderid",{"2":{"11":1,"32":1,"94":4}}],["orderinfoentity>",{"2":{"32":1}}],["orderinfoentity",{"2":{"11":1,"32":1}}],["oracle12c",{"2":{"14":2}}],["oracle11g",{"2":{"14":1}}],["oracle",{"2":{"14":1}}],["out",{"2":{"9":1,"33":1,"53":5,"60":1}}],["override",{"2":{"9":1,"10":1,"31":1,"32":1,"33":1,"34":3,"38":1,"47":1,"53":1,"60":1,"71":1,"74":11,"83":1,"93":2}}],["mode",{"2":{"96":1}}],["modifyafter",{"2":{"93":1}}],["modifyenum",{"2":{"93":2}}],["modifybefore",{"2":{"93":1}}],["modules",{"2":{"36":1,"40":3}}],["multipartfile",{"2":{"96":1}}],["multipart",{"2":{"96":1}}],["multi",{"2":{"84":1,"89":1}}],["mutate",{"2":{"38":1}}],["mvn",{"2":{"61":1}}],["micrometer",{"2":{"60":12}}],["midway",{"2":{"21":1,"27":1,"28":2}}],["md",{"2":{"58":1}}],["md5digestashex",{"2":{"74":2}}],["md5",{"2":{"42":2}}],["m",{"2":{"53":6}}],["ms",{"2":{"45":1,"69":1}}],["mn",{"2":{"45":1}}],["mediatype",{"2":{"96":2}}],["message",{"2":{"42":1}}],["method",{"2":{"38":3}}],["methodname",{"2":{"9":1,"53":3}}],["mac",{"2":{"96":2}}],["matches",{"2":{"74":1}}],["maven",{"2":{"60":7,"65":1,"99":1,"110":1}}],["mappings",{"2":{"96":1}}],["mapper",{"2":{"18":1,"40":4}}],["map",{"2":{"32":9,"74":6}}],["marketcouponinfoservice",{"2":{"49":1}}],["marketcouponuserentity>",{"2":{"32":1}}],["marketcouponuserservice",{"2":{"32":1}}],["market",{"2":{"32":7}}],["mariadb",{"2":{"14":2}}],["maxid",{"2":{"94":1}}],["max",{"2":{"23":2,"94":1}}],["main",{"2":{"18":1,"40":1,"57":1,"69":3}}],["manes",{"2":{"8":1}}],["myaccessdecisionmanager",{"2":{"74":3}}],["myfiltersecurityinterceptor",{"2":{"74":1}}],["mysecuritymetadatasource",{"2":{"74":1}}],["mysql",{"2":{"14":3,"21":1,"65":1,"68":5,"99":1}}],["my",{"2":{"61":1}}],["mycoolplugintest",{"2":{"57":1}}],["mycoolplugin",{"2":{"53":1,"57":1}}],["mybatis",{"2":{"12":5,"13":4,"14":2,"32":3,"89":1,"100":1}}],["+",{"2":{"9":2,"11":3,"13":1,"49":2,"53":2,"60":3,"63":2,"74":5}}],["tip",{"2":{"95":1}}],["time`",{"2":{"53":2}}],["timeout",{"2":{"24":6}}],["tenantentity",{"2":{"90":1}}],["tenant",{"2":{"89":1}}],["tenantid",{"2":{"87":1}}],["tenancy",{"2":{"84":1}}],["team",{"2":{"56":2,"106":3,"107":3,"108":2}}],["testplugin",{"2":{"53":2}}],["test",{"2":{"9":1,"10":1,"18":1,"24":1,"33":2,"53":2,"57":1}}],["txt",{"2":{"53":2,"54":2}}],["tk",{"2":{"45":1}}],["this",{"2":{"74":1}}],["thread",{"2":{"63":1,"69":1}}],["throwable",{"2":{"49":1}}],["throws",{"2":{"49":1,"71":1,"74":8}}],["throw",{"2":{"42":1,"60":1,"74":1}}],["the",{"2":{"60":14}}],["th",{"2":{"45":1}}],["tw",{"2":{"45":1}}],["toarray",{"2":{"74":1}}],["tokenignore",{"2":{"80":1,"81":1}}],["token",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1},"2":{"73":2,"74":2,"76":1,"78":1,"80":1}}],["tohanyupinyinstring",{"2":{"60":1}}],["tone",{"2":{"60":1}}],["todo",{"2":{"48":1}}],["tostring",{"2":{"32":1}}],["tobean",{"2":{"32":1}}],["t",{"2":{"27":2,"93":6}}],["tr",{"2":{"45":1}}],["true",{"2":{"32":2,"42":1,"74":1,"89":1,"94":5,"96":1}}],["translate",{"2":{"45":1}}],["transform",{"2":{"32":2}}],["transparent",{"2":{"24":1}}],["transactiontemplate",{"2":{"13":1}}],["transactional",{"2":{"13":1}}],["trylock",{"2":{"48":1,"49":1}}],["try",{"2":{"24":1,"49":1,"60":1,"74":1}}],["tsupstream",{"2":{"24":1}}],["ts",{"2":{"21":1}}],["tangzc",{"2":{"114":1}}],["tao",{"2":{"114":1}}],["ta",{"2":{"45":1}}],["task",{"2":{"40":1,"53":3,"69":1}}],["target",{"2":{"61":2}}],["targetfield",{"2":{"32":1}}],["targetclass",{"2":{"9":1}}],["tag",{"2":{"31":1,"32":1,"33":1,"34":1,"83":1,"96":1}}],["table",{"2":{"15":1,"32":1,"94":1,"100":1}}],["tdengine",{"2":{"14":2}}],["typescript",{"2":{"101":1}}],["typehandler",{"2":{"13":1}}],["type",{"2":{"8":2,"93":4}}],["dromara",{"2":{"114":1}}],["druid",{"2":{"82":1}}],["driver",{"2":{"68":2}}],["dynamicjarclassloader",{"2":{"63":3}}],["daoauthenticationprovider",{"2":{"74":2}}],["da",{"2":{"45":1}}],["datasource",{"2":{"68":1}}],["database",{"2":{"8":1}}],["data",{"2":{"8":1,"40":1,"47":2,"96":1}}],["digestutils",{"2":{"74":2}}],["digesthex",{"2":{"42":2}}],["disable",{"2":{"74":2}}],["dict",{"2":{"40":1}}],["duplicatekeyexception",{"2":{"42":2}}],["duration",{"2":{"11":1,"48":1,"49":1,"69":1}}],["docs",{"2":{"82":1,"108":2}}],["docker",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1},"2":{"25":3,"26":2,"27":3,"28":2,"29":1}}],["download",{"2":{"82":1}}],["dofilter",{"2":{"71":2,"74":2}}],["doris",{"2":{"14":2}}],["desktop",{"2":{"96":2}}],["destroy",{"2":{"74":1}}],["description",{"2":{"31":1,"32":1,"33":1,"34":1,"58":1,"59":1,"83":1,"94":2,"96":2}}],["deployment",{"2":{"110":1}}],["department",{"2":{"74":1}}],["departmentids",{"2":{"74":2}}],["dependency>",{"2":{"60":4}}],["dev",{"2":{"70":1}}],["debug",{"2":{"53":3}}],["de",{"2":{"45":1}}],["defaultvalue",{"2":{"94":2}}],["default",{"2":{"37":3,"60":1}}],["delete",{"2":{"23":1,"30":1,"31":1,"32":1,"33":1,"34":1,"81":1,"83":1}}],["democoolplugin",{"2":{"60":1}}],["democacheservice",{"2":{"9":1,"10":1}}],["democacheserviceimpl",{"2":{"9":1,"10":1}}],["demov2",{"2":{"47":1}}],["demomapper",{"2":{"34":1}}],["demoserviceimpl",{"2":{"34":1}}],["demoservice",{"2":{"31":1,"32":1,"33":1,"34":2,"83":1}}],["demoentity>",{"2":{"31":1,"32":1,"33":1,"34":5,"83":1}}],["demoentity",{"2":{"18":1}}],["demo",{"2":{"18":1,"36":4,"47":4,"58":1}}],["derby",{"2":{"14":2}}],["dm",{"2":{"14":1}}],["dbfromjsoninit",{"2":{"47":1}}],["db2",{"2":{"14":2}}],["db",{"2":{"13":1,"40":1,"47":2}}],["sdk",{"2":{"112":1}}],["swagger",{"0":{"83":1},"2":{"82":2,"83":1}}],["snapshot",{"2":{"61":1}}],["show",{"2":{"104":1}}],["shaded",{"2":{"60":14}}],["shade",{"2":{"60":6}}],["shellpm2",{"2":{"23":1}}],["shell",{"2":{"23":3,"27":1,"28":1,"70":1}}],["s",{"2":{"60":1}}],["sourceforge",{"2":{"60":4}}],["socket",{"2":{"24":3}}],["socket需额外配置",{"2":{"24":1}}],["simplegrantedauthority",{"2":{"74":1}}],["signature=krlj0uv96tbliagpji",{"2":{"53":1}}],["sinodb",{"2":{"14":1}}],["supports",{"2":{"74":1}}],["super",{"2":{"34":2,"38":1,"42":2,"74":3}}],["success",{"2":{"53":1}}],["summary",{"2":{"49":1,"96":2}}],["sr",{"2":{"45":1}}],["src",{"2":{"18":1,"69":1}}],["sl",{"2":{"45":1}}],["slf4j",{"2":{"42":1,"47":1,"53":3,"60":4,"74":2}}],["sk",{"2":{"45":1}}],["sv",{"2":{"45":1}}],["split",{"2":{"74":1}}],["space",{"2":{"40":1}}],["springdoc",{"2":{"69":2}}],["springboot3",{"2":{"118":1}}],["springboot",{"2":{"63":1}}],["springframework",{"2":{"53":5,"60":14}}],["spring",{"2":{"13":2,"38":3,"60":13,"68":1,"72":1,"96":1,"100":1}}],["spring方式",{"2":{"9":1}}],["springcache",{"2":{"8":1}}],["step",{"2":{"94":2}}],["stereotype",{"2":{"53":1}}],["stream",{"2":{"74":1}}],["str",{"2":{"53":1}}],["strutil",{"2":{"53":2}}],["string",{"2":{"9":1,"10":1,"11":5,"18":1,"33":1,"37":3,"48":1,"49":1,"53":7,"60":4,"74":12,"76":2,"94":2}}],["stop",{"2":{"23":1}}],["star",{"0":{"106":1,"107":1,"108":1},"2":{"113":1}}],["start",{"2":{"23":2}}],["stateless",{"2":{"74":1}}],["status=200",{"2":{"53":1}}],["status",{"2":{"24":1,"32":2}}],["static",{"2":{"18":1,"82":1,"96":2}}],["sap",{"2":{"14":1}}],["sysuserentity",{"2":{"74":14}}],["sys",{"2":{"53":4}}],["system",{"2":{"9":1,"33":1,"53":5,"60":1}}],["sybase",{"2":{"14":2}}],["schema",{"2":{"13":1}}],["sqlserver",{"2":{"14":2}}],["sqlserver2005",{"2":{"14":2}}],["sqlite",{"2":{"14":3}}],["sql",{"2":{"12":2,"13":2,"14":1}}],["segment",{"2":{"94":1}}],["sessioncreationpolicy",{"2":{"74":2}}],["sessionmanagement",{"2":{"74":1}}],["securityfilterchain",{"2":{"74":2}}],["securitymetadatasource",{"2":{"74":3}}],["security权限拦截器校验当前用户权限",{"2":{"74":1}}],["securityconfig",{"2":{"74":1}}],["security加载所有设置的权限",{"2":{"74":1}}],["security",{"2":{"72":1,"76":1}}],["selffield",{"2":{"32":1}}],["select",{"2":{"32":2}}],["send",{"2":{"24":2}}],["servletexception",{"2":{"71":1,"74":3}}],["servletresponse",{"2":{"71":3,"74":1}}],["servletrequest",{"2":{"71":4,"74":1}}],["servletrequestattributes",{"2":{"49":1}}],["servertimezone=gmt",{"2":{"68":1}}],["server",{"2":{"24":2,"96":1}}],["service",{"2":{"9":1,"10":1,"18":2,"27":1,"34":3,"40":2,"69":1}}],["setuserdetailsservice",{"2":{"74":1}}],["setaccessdecisionmanager",{"2":{"74":1}}],["setmyaccessdecisionmanager",{"2":{"74":1}}],["setmodule",{"2":{"18":1}}],["setpasswordencoder",{"2":{"74":1}}],["setpassword",{"2":{"42":2}}],["setpageoption",{"2":{"32":2}}],["settings",{"2":{"110":1}}],["settonetype",{"2":{"60":1}}],["setter",{"2":{"32":1}}],["settype",{"2":{"18":1}}],["setlistoption",{"2":{"32":1}}],["setentity",{"2":{"18":1}}],["setname",{"2":{"18":1}}],["set",{"2":{"10":1,"22":1,"24":12,"53":2,"74":5}}],["=5",{"2":{"68":1}}],["==",{"2":{"53":1,"74":2}}],["==>",{"2":{"53":2}}],["=",{"2":{"9":2,"11":4,"18":2,"31":4,"32":12,"33":4,"34":4,"37":2,"38":3,"41":1,"42":5,"48":1,"49":4,"53":8,"60":5,"63":2,"65":3,"71":1,"74":15,"76":3,"77":1,"81":2,"83":4,"94":13,"96":9,"99":3}}],["性能要求比较高或有分布式部署需求的建议配置成",{"2":{"8":1}}],["person",{"2":{"76":2}}],["permitall",{"2":{"74":1}}],["perm",{"2":{"74":5}}],["perms",{"2":{"74":4}}],["phase>",{"2":{"60":1}}],["phase>package",{"2":{"60":1}}],["phone",{"2":{"32":2}}],["phoenix",{"2":{"14":2}}],["pinyin",{"2":{"60":3}}],["pinyinhelper",{"2":{"60":2}}],["pinyin4j",{"2":{"60":5}}],["png",{"2":{"58":1}}],["pnpm",{"0":{"22":1},"2":{"21":1,"22":2}}],["pl",{"2":{"45":1}}],["plugins",{"2":{"60":1}}],["plugins>",{"2":{"60":2}}],["plugin>",{"2":{"60":2}}],["plugin",{"2":{"40":1,"53":6,"56":2,"57":3,"58":2,"60":8,"61":5,"69":1}}],["plus",{"2":{"12":1,"13":1}}],["pt",{"2":{"45":2}}],["put",{"2":{"32":1,"42":2,"74":1}}],["public",{"2":{"9":2,"10":2,"11":1,"18":1,"31":1,"32":2,"33":2,"34":3,"42":7,"47":2,"49":3,"53":4,"60":2,"71":1,"74":22,"76":1,"80":1,"81":1,"83":1,"93":2,"94":1,"96":4}}],["p",{"2":{"28":2}}],["pm2将自动检测可用cpu的数量",{"2":{"23":1}}],["pm2",{"0":{"23":1},"2":{"23":11}}],["preparing",{"2":{"53":1}}],["private",{"2":{"32":2,"48":1,"49":1,"53":3,"71":1,"74":11,"94":5,"96":1}}],["println",{"2":{"9":1,"33":1,"53":5,"60":1}}],["project",{"2":{"110":2}}],["projectlombok",{"2":{"60":2}}],["properties>",{"2":{"61":2}}],["properties",{"2":{"61":1}}],["proceed",{"2":{"49":1}}],["proceedingjoinpoint",{"2":{"49":1}}],["protected",{"2":{"31":1,"32":2,"33":1,"34":2,"38":1,"83":1}}],["proxy",{"2":{"24":28}}],["prod",{"2":{"21":1}}],["pool",{"2":{"69":1}}],["pom",{"2":{"61":1}}],["policy=eyjlehb0wny0xm1qxmjowmto0oc41njvaiiwiy29uzgl0aw9ucyi6w1siy29udgvudc1szw5ndggtcmfuz2uildasnti0mjg4mdbdxx0=",{"2":{"53":1}}],["postmapping",{"2":{"33":1,"34":1,"49":1,"53":2,"96":1}}],["post",{"2":{"31":5}}],["postgresql",{"2":{"14":3}}],["port",{"2":{"8":1,"96":1}}],["package",{"2":{"61":1,"70":1}}],["parentclassloader",{"2":{"53":2}}],["parameter",{"2":{"96":1}}],["parameters",{"2":{"53":1}}],["param",{"2":{"74":1,"93":6}}],["params",{"2":{"53":1,"60":2}}],["parse",{"2":{"12":1}}],["parseobj",{"2":{"11":1}}],["pa",{"2":{"45":1}}],["paths",{"2":{"38":1}}],["path",{"2":{"38":3}}],["page",{"2":{"30":1,"31":1,"32":1,"33":1,"34":9,"81":2,"83":1}}],["pass",{"2":{"24":2}}],["passwordencoder",{"2":{"74":4}}],["passwordversion",{"2":{"74":1,"76":1}}],["password",{"2":{"8":1,"68":1}}],["p0",{"2":{"9":1}}],["15",{"0":{"117":1}}],["15t14",{"2":{"69":4}}],["101+08",{"2":{"69":1}}],["17",{"2":{"65":1,"99":1}}],["13",{"0":{"114":1},"2":{"60":1}}],["13t20",{"2":{"53":8}}],["1800",{"2":{"73":1}}],["18",{"2":{"43":1,"53":8,"60":1}}],["123456",{"2":{"68":1,"70":1,"104":1}}],["12",{"2":{"60":2}}],["12h",{"2":{"24":1}}],["127",{"2":{"8":1,"24":1,"53":1,"68":1,"69":1,"70":1,"83":1,"96":1}}],["1h",{"2":{"24":1}}],["1",{"0":{"21":1,"26":1,"52":1,"56":1,"67":1,"87":1,"89":1,"110":1,"115":1,"116":1,"117":2,"118":1},"2":{"8":1,"10":1,"24":5,"27":2,"28":2,"36":1,"45":1,"53":2,"58":1,"60":11,"61":1,"63":2,"68":1,"69":3,"70":1,"74":3,"83":1,"94":2,"96":1}}],["06",{"0":{"118":1}}],["04",{"0":{"114":1,"116":1}}],["00",{"2":{"53":8,"69":4}}],["01",{"2":{"53":8}}],["07",{"0":{"117":1},"2":{"53":8,"69":4}}],["0新增",{"0":{"43":1,"84":1}}],["08",{"0":{"115":1,"116":1},"2":{"36":1}}],["0",{"0":{"114":2,"118":1},"2":{"8":3,"24":2,"27":2,"28":2,"53":2,"58":2,"60":4,"61":1,"65":1,"68":3,"69":2,"70":2,"74":1,"83":2,"96":2}}],["hashmap",{"2":{"74":1}}],["hanyupinyintonetype",{"2":{"60":2}}],["hanyupinyinoutputformat",{"2":{"60":3}}],["hangzhou",{"2":{"53":1}}],["handleexception",{"2":{"42":1}}],["handleillegalargumentexception",{"2":{"42":1}}],["handlehttprequestmethodnotsupportedexception",{"2":{"42":1}}],["handlebadcredentialsexception",{"2":{"42":1}}],["handleduplicatekeyexception",{"2":{"42":1}}],["handlerrexception",{"2":{"42":1}}],["handlertype",{"2":{"38":3}}],["hana",{"2":{"14":2}}],["hr",{"2":{"45":1}}],["hy",{"2":{"45":1}}],["hutool",{"2":{"53":3,"60":11,"100":1}}],["hu",{"2":{"45":1}}],["hello",{"2":{"53":4,"60":1}}],["he",{"2":{"45":1}}],["headersconfigurer",{"2":{"74":1}}],["headers",{"2":{"74":1}}],["header",{"2":{"24":13}}],["httprequestmethodnotsupportedexception",{"2":{"42":2}}],["http",{"2":{"24":4,"69":1,"83":1,"96":1}}],["httpsecurity",{"2":{"74":3}}],["httpservletrequest",{"2":{"31":1,"32":2,"33":1,"34":1,"49":1,"71":2,"83":1,"96":1}}],["https",{"2":{"1":2,"22":1,"32":3,"53":1,"56":2,"104":1,"106":3,"107":3,"108":2}}],["html文档",{"2":{"32":2}}],["html",{"2":{"24":1,"32":1,"83":1}}],["hook",{"2":{"58":1,"59":1}}],["home",{"2":{"24":1}}],["host=https",{"2":{"53":1}}],["host",{"2":{"8":1,"24":4}}],["hive",{"2":{"14":2}}],["highgo",{"2":{"14":1}}],["hbase",{"2":{"14":1}}],["hsql",{"2":{"14":2}}],["h2",{"2":{"14":2}}],["能够显著提升应用程序的性能和响应速度",{"2":{"8":1}}],["旨在提供高性能",{"2":{"8":1}}],["由该类统一执行初始化",{"2":{"47":1}}],["由",{"2":{"8":1}}],["cfg",{"2":{"74":3}}],["cj",{"2":{"68":1}}],["charsequence",{"2":{"74":2}}],["characterencoding=utf",{"2":{"68":1}}],["chain",{"2":{"74":2}}],["chinesechar",{"2":{"60":4}}],["check",{"2":{"41":2,"42":6,"45":1,"49":1}}],["c",{"2":{"53":6,"69":3}}],["ckb",{"2":{"45":1}}],["csrf",{"2":{"74":1}}],["css",{"2":{"71":1,"82":1}}],["cs",{"2":{"45":1}}],["csiidb",{"2":{"14":2}}],["cn",{"2":{"45":2,"53":4,"60":2}}],["c端用户",{"2":{"40":1}}],["crud",{"0":{"92":1},"2":{"92":1}}],["crudoption",{"2":{"34":1}}],["createop",{"2":{"32":3}}],["create",{"2":{"27":1,"32":2,"42":2}}],["currentthread",{"2":{"63":1}}],["custom",{"2":{"32":1}}],["cubrid",{"2":{"14":2}}],["clean",{"2":{"61":1}}],["cluster",{"2":{"23":1}}],["clickhouse",{"2":{"14":2}}],["classloader",{"2":{"53":4}}],["classpath",{"2":{"47":1,"96":1}}],["class",{"2":{"9":1,"10":2,"18":2,"31":1,"32":5,"33":1,"34":2,"37":2,"38":3,"42":7,"47":1,"49":2,"53":2,"60":1,"68":1,"71":1,"74":8,"81":1,"83":1,"94":1,"96":1}}],["catch",{"2":{"60":1}}],["ca",{"2":{"45":1}}],["cachekey",{"2":{"11":2}}],["cacheable",{"2":{"9":1}}],["cachenames",{"2":{"9":1}}],["cacheconfig",{"2":{"9":1}}],["cache",{"2":{"8":3,"24":8,"53":2,"60":1}}],["caffeine",{"2":{"8":3}}],["collection",{"2":{"74":4}}],["column",{"2":{"32":1}}],["columndefine",{"2":{"32":1,"94":4}}],["columns",{"2":{"32":1}}],["core",{"2":{"40":2,"47":1,"53":12,"60":6,"69":2}}],["couponid",{"2":{"49":3}}],["coupon",{"2":{"32":8}}],["consumes",{"2":{"96":1}}],["console",{"2":{"45":1}}],["conf",{"2":{"74":4}}],["configuration",{"2":{"74":1}}],["configuration>",{"2":{"60":2}}],["configattribute",{"2":{"74":1}}],["configattributes",{"2":{"74":4}}],["configattribute>",{"2":{"74":3}}],["configattribute>>",{"2":{"74":1}}],["config",{"2":{"21":1,"22":1,"58":2,"59":1,"74":7}}],["context",{"2":{"60":2}}],["controller",{"2":{"18":2,"30":2,"34":1,"36":2,"38":1,"40":2,"53":3,"76":1}}],["condition",{"2":{"32":3}}],["connection",{"2":{"24":2}}],["connect",{"2":{"24":2}}],["code",{"2":{"42":1}}],["codetypeenum",{"2":{"18":1}}],["codemodel",{"2":{"18":10}}],["codegenerator",{"2":{"18":7}}],["compiler",{"2":{"110":1}}],["compile命令",{"2":{"110":1}}],["component",{"2":{"49":1,"74":3}}],["combine",{"2":{"38":1}}],["commons",{"2":{"60":3}}],["commoncontroller",{"2":{"53":1}}],["comment",{"2":{"32":2,"94":5}}],["comm",{"2":{"9":1}}],["com",{"2":{"1":2,"18":1,"22":1,"32":3,"40":1,"47":1,"53":12,"56":2,"57":2,"60":4,"68":1,"69":3,"104":1,"106":3,"107":3,"108":2,"114":1}}],["cool相关配置",{"2":{"89":1}}],["cooleps",{"2":{"69":1,"80":1}}],["coolexception",{"2":{"42":3}}],["coolexceptionhandler",{"2":{"42":1}}],["coollock",{"2":{"48":4,"49":4}}],["coolplugin注解",{"2":{"57":1}}],["coolplugin",{"2":{"53":4,"60":6}}],["coolpluginservice",{"2":{"53":1,"69":1}}],["coolplugininvokers",{"2":{"11":1,"53":4}}],["coolpreconditions",{"2":{"41":1,"42":2,"45":1,"49":1}}],["coolapplication",{"2":{"40":1,"69":1}}],["cooladminjavaapplicationtests",{"2":{"18":1}}],["coolsecurityutil",{"2":{"32":1,"49":2,"76":3,"77":1}}],["coolrestcontroller",{"2":{"31":1,"32":1,"33":1,"34":1,"37":1,"38":2,"81":1,"83":1,"96":1}}],["coolcodegeneratortest",{"2":{"18":1}}],["coolcache",{"0":{"10":1},"2":{"10":4,"11":1,"53":5,"60":1,"74":7}}],["cool",{"0":{"102":1},"2":{"0":1,"1":2,"5":1,"6":1,"12":1,"14":1,"16":1,"18":1,"20":1,"23":3,"24":3,"25":1,"27":3,"28":4,"31":1,"32":1,"33":1,"34":1,"40":2,"43":1,"44":1,"47":3,"53":19,"56":4,"57":2,"60":5,"61":8,"62":1,"64":1,"68":1,"69":7,"83":1,"87":1,"89":1,"96":1,"102":2,"104":1,"106":6,"107":6,"108":4,"113":1}}],["框架用到了mybatis",{"2":{"110":1}}],["框架自带两种文件上传方式本地上传与云存储",{"2":{"95":1}}],["框架自带基于",{"2":{"8":1}}],["框架默认关闭多租户",{"2":{"89":1}}],["框架就会自动扫描菜单",{"2":{"45":1}}],["框架就会自动扫描并翻译成对应的语言",{"2":{"45":1}}],["框架封装了一个请求属性",{"2":{"33":1}}],["框架集成了auto",{"2":{"15":1}}],["框架特有的通用工具类",{"0":{"10":1}}],["框架更新",{"2":{"4":1,"6":1}}],["缓存数据模板",{"2":{"115":1}}],["缓存对象",{"2":{"53":1}}],["缓存结果",{"2":{"53":2}}],["缓存相关配置",{"2":{"24":1}}],["缓存库",{"2":{"8":1}}],["缓存",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"8":2,"115":1}}],["的build",{"2":{"110":1}}],["的mvn",{"2":{"110":1}}],["的核心流程",{"2":{"46":1}}],["的能力",{"2":{"46":1}}],["的火热",{"2":{"46":1}}],["的缩写",{"2":{"43":1}}],["的",{"2":{"38":1,"110":1}}],["的都知道",{"2":{"15":1}}],["的事务管理",{"2":{"13":1}}],["的基本增删改查",{"2":{"13":1}}],["的一些最新资讯",{"2":{"6":1}}],["的在线文档仓库",{"2":{"0":1}}],["公众号",{"0":{"6":1}}],["团队哔哩哔哩官方账户",{"2":{"5":1}}],["站视频教程",{"2":{"7":1,"17":1}}],["站",{"0":{"5":1}}],["by",{"2":{"114":1}}],["bypass",{"2":{"24":1}}],["b8e4",{"2":{"60":1}}],["bbb",{"2":{"58":1}}],["beforeinvocation",{"2":{"74":1}}],["belerweb",{"2":{"60":2}}],["beans",{"2":{"60":3}}],["bean",{"2":{"53":1,"74":4}}],["ben",{"2":{"8":1}}],["bn",{"2":{"45":1}}],["bg",{"2":{"45":1}}],["br",{"2":{"45":1}}],["break",{"2":{"24":1}}],["badhanyupinyinoutputformatcombination",{"2":{"60":2}}],["badcredentialsexception",{"2":{"42":2}}],["banner",{"2":{"53":2,"54":2}}],["baselogfilter",{"2":{"71":1}}],["basecoolplugin",{"2":{"53":7,"60":4}}],["basecontroller",{"2":{"30":1,"31":1,"32":2,"33":1,"34":1,"83":1}}],["baseservice中集成了常用的",{"2":{"92":1}}],["baseserviceimpl",{"2":{"34":1}}],["basesysuserservice",{"2":{"74":3}}],["basesysuserentity>lambdaquery",{"2":{"42":2,"74":1}}],["basesysuserentity",{"2":{"42":6,"74":3}}],["basesyspermsservice",{"2":{"74":8}}],["basesyslogservice",{"2":{"71":3}}],["basesyslogmapper",{"2":{"53":3}}],["baseentity",{"2":{"32":1,"90":1,"94":1}}],["base",{"2":{"32":3,"40":1,"53":1,"82":1,"96":1}}],["bashpnpm",{"2":{"22":1}}],["bashnpm",{"2":{"22":1}}],["boot",{"2":{"100":1}}],["bootstrap",{"2":{"23":1}}],["boolean",{"2":{"74":2}}],["body",{"2":{"33":1}}],["build>",{"2":{"60":2}}],["build",{"2":{"27":2,"38":1,"74":1,"110":3}}],["bind",{"2":{"24":1,"53":4}}],["b",{"0":{"5":1},"2":{"7":1,"17":1,"53":3}}],["abstracthttpconfigurer",{"2":{"74":1}}],["abstractsecurityinterceptor",{"2":{"74":1}}],["abstractopenapiresource",{"2":{"69":1}}],["actuator",{"2":{"82":1}}],["action",{"2":{"53":1}}],["accessdeniedhandler",{"2":{"74":1}}],["aclass",{"2":{"74":1}}],["aop",{"2":{"60":2}}],["aaa",{"2":{"58":1}}],["authprovider",{"2":{"74":4}}],["authenticationconfiguration",{"2":{"74":1}}],["authenticationmanager",{"2":{"74":2}}],["authenticationprovider",{"2":{"74":2}}],["authenticationentrypoint",{"2":{"74":1}}],["authenticated",{"2":{"74":1}}],["authorizehttprequests",{"2":{"74":1}}],["authority",{"2":{"74":3}}],["author",{"2":{"58":1,"59":1}}],["autotable",{"2":{"114":2}}],["automatically",{"2":{"110":1}}],["automatically自动编译功能",{"2":{"110":1}}],["auto",{"2":{"100":1}}],["autowired",{"2":{"74":1}}],["autoprefixurlmapping",{"2":{"38":1}}],["am",{"2":{"45":1}}],["arraylist",{"2":{"74":3}}],["artifactset>",{"2":{"60":2}}],["artifactid>maven",{"2":{"60":1}}],["artifactid>pinyin4j",{"2":{"60":1}}],["artifactid>",{"2":{"60":3}}],["artifactid>hutool",{"2":{"60":1}}],["around",{"2":{"49":2}}],["ar",{"2":{"45":1}}],["args$args",{"2":{"24":1}}],["args",{"2":{"18":1,"47":1}}],["afterinvocation",{"2":{"74":1}}],["af",{"2":{"45":1}}],["az",{"2":{"45":1}}],["anyrequest",{"2":{"74":1}}],["annotations",{"2":{"38":1}}],["annotation",{"2":{"37":2,"40":1,"49":1,"53":5,"57":1,"60":5}}],["and",{"2":{"32":1}}],["aliyun",{"2":{"53":1}}],["aliyuncs",{"2":{"53":1}}],["aliasfor",{"2":{"37":2}}],["alloc",{"2":{"94":2}}],["all",{"2":{"13":1,"32":1,"60":1,"96":1}}],["assets",{"2":{"58":2,"96":1}}],["aspect",{"2":{"49":1}}],["astype",{"2":{"32":1}}],["as",{"2":{"32":1}}],["ase",{"2":{"14":1}}],["apt",{"2":{"110":1}}],["apache",{"2":{"60":1}}],["app端手机密码登录和手机验证码登录",{"2":{"116":1}}],["appsecret",{"2":{"54":1}}],["appid",{"2":{"54":1}}],["application",{"2":{"68":1,"96":1}}],["applicationcontext",{"2":{"53":1}}],["applicationarguments",{"2":{"47":1}}],["applicationrunner",{"2":{"47":1}}],["appdemoinfocontroller",{"2":{"36":1}}],["app",{"2":{"36":4,"71":1}}],["appmarketcouponusercontroller",{"2":{"32":1}}],["api",{"2":{"7":1,"17":1,"21":2,"24":2,"27":1,"31":1,"32":1,"33":1,"34":1,"37":1,"60":4,"69":1,"81":1,"82":1,"83":1}}],["age",{"2":{"32":1}}],["addfilterbefore",{"2":{"74":1}}],["add",{"2":{"24":3,"30":1,"31":1,"32":1,"33":1,"34":1,"42":4,"74":2,"81":1,"83":1,"96":1}}],["addr",{"2":{"24":5}}],["adminbasecommcontroller",{"2":{"96":1}}],["adminauthurls",{"2":{"82":1}}],["admindictinfocontroller",{"2":{"81":1}}],["admindemouserinfocontroller",{"2":{"36":1}}],["admindemoinfocontroller",{"2":{"31":1,"32":1,"33":1,"34":1,"36":3,"83":1}}],["adminuserid",{"2":{"76":1}}],["admin中才能调试",{"2":{"53":1}}],["admin的缓存",{"2":{"53":1}}],["admin前后端的多语言都是基于大模型翻译的",{"2":{"44":1}}],["admin",{"0":{"102":1},"2":{"0":1,"1":2,"12":1,"14":1,"16":1,"18":1,"20":1,"23":3,"25":1,"27":2,"28":2,"36":6,"43":1,"53":9,"56":2,"60":2,"61":1,"64":1,"69":4,"70":1,"74":6,"82":1,"87":1,"102":1,"104":2,"106":3,"107":3,"108":2,"113":1}}],["a",{"2":{"10":2,"53":2}}],["ai",{"0":{"7":1,"17":1,"46":1},"2":{"4":1,"46":6,"102":5,"112":1,"114":1,"117":1}}],["你的项目",{"2":{"110":1}}],["你的star是我们最大的动力",{"2":{"105":1}}],["你的贡献可能给其他人代码巨大的帮助",{"2":{"0":1}}],["你将会看到后端的欢迎页面",{"2":{"69":1}}],["你可以这样做",{"2":{"110":1}}],["你可以自己开发插件",{"2":{"50":1}}],["你可以在这边了解到一些关于我们框架的最新动态",{"2":{"4":1}}],["你需要把生成的eps",{"2":{"27":1}}],["抖音",{"0":{"4":1}}],["扫一扫加入微信开发交流群",{"2":{"3":1}}],["微信",{"0":{"3":1},"2":{"112":1}}],["共创一些美好的事情",{"2":{"2":1}}],["共同参与开源",{"2":{"0":1}}],["交流合作",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1}}],["地址",{"0":{"1":1}}],["积极提交pull",{"2":{"0":1}}],["版相关功能",{"2":{"118":1}}],["版本一致",{"2":{"104":1}}],["版本号",{"2":{"59":1}}],["版本才有",{"2":{"36":1}}],["版本+宝塔为例",{"2":{"20":1}}],["版本的也可以参考",{"2":{"19":1}}],["版本为例",{"2":{"19":1}}],["版",{"2":{"0":1}}],["介绍",{"0":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/.vitepress/dist/assets/chunks/VPLocalSearchBox.DPqQBmGX.js b/.vitepress/dist/assets/chunks/VPLocalSearchBox.MfGJa_gn.js similarity index 99% rename from .vitepress/dist/assets/chunks/VPLocalSearchBox.DPqQBmGX.js rename to .vitepress/dist/assets/chunks/VPLocalSearchBox.MfGJa_gn.js index 8dabcd5..340a919 100644 --- a/.vitepress/dist/assets/chunks/VPLocalSearchBox.DPqQBmGX.js +++ b/.vitepress/dist/assets/chunks/VPLocalSearchBox.MfGJa_gn.js @@ -1,4 +1,4 @@ -var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{X as Ct,D as ce,f as be,ak as tt,al as Rt,am as At,an as Mt,n as je,ao as Lt,d as Dt,ap as nt,r as fe,aq as zt,ar as Pt,q as Vt,as as $t,s as Me,R as pe,Q as Se,at as jt,au as Bt,Y as Wt,U as Kt,a1 as Jt,c as Ut,o as Q,g as x,a2 as qt,av as Gt,j as L,aw as Ht,ax as Qt,a as X,b as Ee,B as st,C as it,F as rt,K as me,h as ve,ay as Yt,p as Zt,k as Xt,az as at,aA as en,a8 as tn,ad as nn,aB as sn,_ as rn}from"./framework.BjhQB2K5.js";import{u as an,c as on}from"./theme.BjsOw0kB.js";const ln={root:()=>Ct(()=>import("./@localSearchIndexroot.Dj1POoFC.js"),[])};/*! +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{X as Ct,D as ce,f as be,ak as tt,al as Rt,am as At,an as Mt,n as je,ao as Lt,d as Dt,ap as nt,r as fe,aq as zt,ar as Pt,q as Vt,as as $t,s as Me,R as pe,Q as Se,at as jt,au as Bt,Y as Wt,U as Kt,a1 as Jt,c as Ut,o as Q,g as x,a2 as qt,av as Gt,j as L,aw as Ht,ax as Qt,a as X,b as Ee,B as st,C as it,F as rt,K as me,h as ve,ay as Yt,p as Zt,k as Xt,az as at,aA as en,a8 as tn,ad as nn,aB as sn,_ as rn}from"./framework.BjhQB2K5.js";import{u as an,c as on}from"./theme.BAM3wGj3.js";const ln={root:()=>Ct(()=>import("./@localSearchIndexroot.C3ZioJfZ.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=vt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var n;t===void 0&&(t=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=s===""||s==="true",i=r||t&&e&&a(e.parentNode);return i},cn=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},bt=function(e,t,n){if(Oe(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&s.unshift(e),s=s.filter(n),s},yt=function a(e,t,n){for(var s=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,n);n.flatten?s.push.apply(s,c):s.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&n.filter(i)&&(t||!e.includes(i))&&s.push(i);var m=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),f=!Oe(m,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,n);n.flatten?s.push.apply(s,b):s.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return s},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||cn(e))&&!wt(e)?0:e.tabIndex},un=function(e,t){var n=re(e);return n<0&&t&&!wt(e)?0:n},dn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},hn=function(e){return _t(e)&&e.type==="hidden"},fn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},pn=function(e,t){for(var n=0;nsummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof s=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&s(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(bn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return ot(e);return!1},wn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},xn=function a(e){var t=[],n=[];return e.forEach(function(s,r){var i=!!s.scopeParent,o=i?s.scopeParent:s,l=un(o,i),c=i?a(s.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:r,tabIndex:l,item:s,isScope:i,content:c})}),n.sort(dn).reduce(function(s,r){return r.isScope?s.push.apply(s,r.content):s.push(r.content),s},[]).concat(t)},Sn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:_n}):n=bt(e,t.includeContainer,Be.bind(null,t)),xn(n)},En=function(e,t){t=t||{};var n;return t.getShadowRoot?n=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=bt(e,t.includeContainer,Ce.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},Tn=vt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Tn)===!1?!1:Ce(t,e)};/*! diff --git a/.vitepress/dist/assets/chunks/theme.BjsOw0kB.js b/.vitepress/dist/assets/chunks/theme.BAM3wGj3.js similarity index 99% rename from .vitepress/dist/assets/chunks/theme.BjsOw0kB.js rename to .vitepress/dist/assets/chunks/theme.BAM3wGj3.js index 709f855..f090d68 100644 --- a/.vitepress/dist/assets/chunks/theme.BjsOw0kB.js +++ b/.vitepress/dist/assets/chunks/theme.BAM3wGj3.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DPqQBmGX.js","assets/chunks/framework.BjhQB2K5.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.MfGJa_gn.js","assets/chunks/framework.BjhQB2K5.js"])))=>i.map(i=>d[i]); import{d as _,c as b,o as s,T as Ae,w as p,a as u,b as h,_ as $,u as Vt,i as wt,t as Tt,e as Be,f as L,g as v,h as A,j as r,p as G,k as q,l as ie,m as Ee,r as H,n as ee,q as $e,s as te,v as Oe,x as Fe,y as It,z as Nt,A as le,B as M,F as B,C as W,D as Qe,E as ye,G as g,H as c,I as xe,J as Q,K as de,L as pe,M as se,N as Le,O as Et,P as et,Q as Ce,R as De,S as tt,U as Pe,V as Ct,W as Ht,X as Mt,Y as ot,Z as nt,$ as zt,a0 as At,a1 as Bt,a2 as Ot,a3 as Ft,a4 as Dt}from"./framework.BjhQB2K5.js";/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var re=Object.assign||function(o){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},n=window.Promise||function(P){function w(){}P(w,w)},a=function(P){var w=P.target;if(w===fe){N();return}D.indexOf(w)!==-1&&F({target:w})},i=function(){if(!(Z||!f.original)){var P=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(Ke-P)>z.scrollOffset&&setTimeout(N,150)}},l=function(P){var w=P.key||P.keyCode;(w==="Escape"||w==="Esc"||w===27)&&N()},d=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=P;if(P.background&&(fe.style.background=P.background),P.container&&P.container instanceof Object&&(w.container=re({},z.container,P.container)),P.template){var O=ge(P.template)?P.template:document.querySelector(P.template);w.template=O}return z=re({},z,w),D.forEach(function(j){j.dispatchEvent(ue("medium-zoom:update",{detail:{zoom:U}}))}),U},m=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return o(re({},z,P))},y=function(){for(var P=arguments.length,w=Array(P),O=0;O0?w.reduce(function(T,K){return[].concat(T,Xe(K))},[]):D;return j.forEach(function(T){T.classList.remove("medium-zoom-image"),T.dispatchEvent(ue("medium-zoom:detach",{detail:{zoom:U}}))}),D=D.filter(function(T){return j.indexOf(T)===-1}),U},k=function(P,w){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return D.forEach(function(j){j.addEventListener("medium-zoom:"+P,w,O)}),ne.push({type:"medium-zoom:"+P,listener:w,options:O}),U},S=function(P,w){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return D.forEach(function(j){j.removeEventListener("medium-zoom:"+P,w,O)}),ne=ne.filter(function(j){return!(j.type==="medium-zoom:"+P&&j.listener.toString()===w.toString())}),U},E=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=P.target,O=function(){var T={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},K=void 0,J=void 0;if(z.container)if(z.container instanceof Object)T=re({},T,z.container),K=T.width-T.left-T.right-z.margin*2,J=T.height-T.top-T.bottom-z.margin*2;else{var ce=ge(z.container)?z.container:document.querySelector(z.container),ae=ce.getBoundingClientRect(),Ve=ae.width,ft=ae.height,ht=ae.left,_t=ae.top;T=re({},T,{width:Ve,height:ft,left:ht,top:_t})}K=K||T.width-z.margin*2,J=J||T.height-z.margin*2;var ve=f.zoomedHd||f.original,gt=Ye(ve)?K:ve.naturalWidth||K,bt=Ye(ve)?J:ve.naturalHeight||J,he=ve.getBoundingClientRect(),kt=he.top,$t=he.left,we=he.width,Te=he.height,yt=Math.min(Math.max(we,gt),K)/we,Lt=Math.min(Math.max(Te,bt),J)/Te,Ie=Math.min(yt,Lt),Pt=(-$t+(K-we)/2+z.margin+T.left)/Ie,St=(-kt+(J-Te)/2+z.margin+T.top)/Ie,Je="scale("+Ie+") translate3d("+Pt+"px, "+St+"px, 0)";f.zoomed.style.transform=Je,f.zoomedHd&&(f.zoomedHd.style.transform=Je)};return new n(function(j){if(w&&D.indexOf(w)===-1){j(U);return}var T=function Ve(){Z=!1,f.zoomed.removeEventListener("transitionend",Ve),f.original.dispatchEvent(ue("medium-zoom:opened",{detail:{zoom:U}})),j(U)};if(f.zoomed){j(U);return}if(w)f.original=w;else if(D.length>0){var K=D;f.original=K[0]}else{j(U);return}if(f.original.dispatchEvent(ue("medium-zoom:open",{detail:{zoom:U}})),Ke=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,Z=!0,f.zoomed=Gt(f.original),document.body.appendChild(fe),z.template){var J=ge(z.template)?z.template:document.querySelector(z.template);f.template=document.createElement("div"),f.template.appendChild(J.content.cloneNode(!0)),document.body.appendChild(f.template)}if(f.original.parentElement&&f.original.parentElement.tagName==="PICTURE"&&f.original.currentSrc&&(f.zoomed.src=f.original.currentSrc),document.body.appendChild(f.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),f.original.classList.add("medium-zoom-image--hidden"),f.zoomed.classList.add("medium-zoom-image--opened"),f.zoomed.addEventListener("click",N),f.zoomed.addEventListener("transitionend",T),f.original.getAttribute("data-zoom-src")){f.zoomedHd=f.zoomed.cloneNode(),f.zoomedHd.removeAttribute("srcset"),f.zoomedHd.removeAttribute("sizes"),f.zoomedHd.removeAttribute("loading"),f.zoomedHd.src=f.zoomed.getAttribute("data-zoom-src"),f.zoomedHd.onerror=function(){clearInterval(ce),console.warn("Unable to reach the zoom image target "+f.zoomedHd.src),f.zoomedHd=null,O()};var ce=setInterval(function(){f.zoomedHd.complete&&(clearInterval(ce),f.zoomedHd.classList.add("medium-zoom-image--opened"),f.zoomedHd.addEventListener("click",N),document.body.appendChild(f.zoomedHd),O())},10)}else if(f.original.hasAttribute("srcset")){f.zoomedHd=f.zoomed.cloneNode(),f.zoomedHd.removeAttribute("sizes"),f.zoomedHd.removeAttribute("loading");var ae=f.zoomedHd.addEventListener("load",function(){f.zoomedHd.removeEventListener("load",ae),f.zoomedHd.classList.add("medium-zoom-image--opened"),f.zoomedHd.addEventListener("click",N),document.body.appendChild(f.zoomedHd),O()})}else O()})},N=function(){return new n(function(P){if(Z||!f.original){P(U);return}var w=function O(){f.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(f.zoomed),f.zoomedHd&&document.body.removeChild(f.zoomedHd),document.body.removeChild(fe),f.zoomed.classList.remove("medium-zoom-image--opened"),f.template&&document.body.removeChild(f.template),Z=!1,f.zoomed.removeEventListener("transitionend",O),f.original.dispatchEvent(ue("medium-zoom:closed",{detail:{zoom:U}})),f.original=null,f.zoomed=null,f.zoomedHd=null,f.template=null,P(U)};Z=!0,document.body.classList.remove("medium-zoom--opened"),f.zoomed.style.transform="",f.zoomedHd&&(f.zoomedHd.style.transform=""),f.template&&(f.template.style.transition="opacity 150ms",f.template.style.opacity=0),f.original.dispatchEvent(ue("medium-zoom:close",{detail:{zoom:U}})),f.zoomed.addEventListener("transitionend",w)})},F=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=P.target;return f.original?N():E({target:w})},C=function(){return z},Y=function(){return D},X=function(){return f.original},D=[],ne=[],Z=!1,Ke=0,z=t,f={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(e)==="[object Object]"?z=e:(e||typeof e=="string")&&y(e),z=re({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},z);var fe=Ut(z.background);document.addEventListener("click",a),document.addEventListener("keyup",l),document.addEventListener("scroll",i),window.addEventListener("resize",N);var U={open:E,close:N,toggle:F,update:d,clone:m,attach:y,detach:I,on:k,off:S,getOptions:C,getImages:Y,getZoomedImage:X};return U};function Wt(o,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t==="top"&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=o:a.appendChild(document.createTextNode(o))}}var Rt=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";Wt(Rt);const Kt={key:0,class:"VPBackdrop"},Jt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(s(),b(Ae,{name:"fade"},{default:p(()=>[e.show?(s(),u("div",Kt)):h("",!0)]),_:1}))}}),Yt=$(Jt,[["__scopeId","data-v-eab00006"]]),V=Vt;function Xt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function He(o){return o.startsWith("/")?o:`/${o}`}function je(o){const{pathname:e,search:t,hash:n,protocol:a}=new URL(o,"http://a.com");if(wt(o)||o.startsWith("#")||!a.startsWith("http")||!Tt(e))return o;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return Be(l)}function me({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:a,hash:i}=V(),l=L(()=>{var m,y;return{label:(m=e.value.locales[t.value])==null?void 0:m.label,link:((y=e.value.locales[t.value])==null?void 0:y.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:L(()=>Object.entries(e.value.locales).flatMap(([m,y])=>l.value.label===y.label?[]:{text:y.label,link:Zt(y.link||(m==="root"?"/":`/${m}/`),a.value.i18nRouting!==!1&&o,n.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function Zt(o,e,t,n){return e?o.replace(/\/$/,"")+He(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const Qt=o=>(G("data-v-60b89e81"),o=o(),q(),o),xt={class:"NotFound"},eo={class:"code"},to={class:"title"},oo=Qt(()=>v("div",{class:"divider"},null,-1)),no={class:"quote"},ao={class:"action"},so=["href","aria-label"],ro=_({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=me();return(n,a)=>{var i,l,d,m,y;return s(),u("div",xt,[v("p",eo,A(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",to,A(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),oo,v("blockquote",no,A(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",ao,[v("a",{class:"link",href:r(Be)(r(t).link),"aria-label":((m=r(e).notFound)==null?void 0:m.linkLabel)??"go to home"},A(((y=r(e).notFound)==null?void 0:y.linkText)??"Take me home"),9,so)])])}}}),io=$(ro,[["__scopeId","data-v-60b89e81"]]);function at(o,e){if(Array.isArray(o))return be(o);if(o==null)return[];e=He(e);const t=Object.keys(o).sort((a,i)=>i.split("/").length-a.split("/").length).find(a=>e.startsWith(He(a))),n=t?o[t]:[];return Array.isArray(n)?be(n):be(n.items,n.base)}function lo(o){const e=[];let t=0;for(const n in o){const a=o[n];if(a.items){t=e.push(a);continue}e[t]||e.push({items:[]}),e[t].items.push(a)}return e}function co(o){const e=[];function t(n){for(const a of n)a.text&&a.link&&e.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&t(a.items)}return t(o),e}function Me(o,e){return Array.isArray(e)?e.some(t=>Me(o,t)):ie(o,e.link)?!0:e.items?Me(o,e.items):!1}function be(o,e){return[...o].map(t=>{const n={...t},a=n.base||e;return a&&n.link&&(n.link=a+n.link),n.items&&(n.items=be(n.items,a)),n})}function oe(){const{frontmatter:o,page:e,theme:t}=V(),n=Ee("(min-width: 960px)"),a=H(!1),i=L(()=>{const F=t.value.sidebar,C=e.value.relativePath;return F?at(F,C):[]}),l=H(i.value);ee(i,(F,C)=>{JSON.stringify(F)!==JSON.stringify(C)&&(l.value=i.value)});const d=L(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),m=L(()=>y?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),y=L(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),I=L(()=>d.value&&n.value),k=L(()=>d.value?lo(l.value):[]);function S(){a.value=!0}function E(){a.value=!1}function N(){a.value?E():S()}return{isOpen:a,sidebar:l,sidebarGroups:k,hasSidebar:d,hasAside:y,leftAside:m,isSidebarEnabled:I,open:S,close:E,toggle:N}}function uo(o,e){let t;$e(()=>{t=o.value?document.activeElement:void 0}),te(()=>{window.addEventListener("keyup",n)}),Oe(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function vo(o){const{page:e,hash:t}=V(),n=H(!1),a=L(()=>o.value.collapsed!=null),i=L(()=>!!o.value.link),l=H(!1),d=()=>{l.value=ie(e.value.relativePath,o.value.link)};ee([e,o,t],d),te(d);const m=L(()=>l.value?!0:o.value.items?Me(e.value.relativePath,o.value.items):!1),y=L(()=>!!(o.value.items&&o.value.items.length));$e(()=>{n.value=!!(a.value&&o.value.collapsed)}),Fe(()=>{(l.value||m.value)&&(n.value=!1)});function I(){a.value&&(n.value=!n.value)}return{collapsed:n,collapsible:a,isLink:i,isActiveLink:l,hasActiveLink:m,hasChildren:y,toggle:I}}function po(){const{hasSidebar:o}=oe(),e=Ee("(min-width: 960px)"),t=Ee("(min-width: 1280px)");return{isAsideEnabled:L(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const mo=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ze=[];function st(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function Ue(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:fo(t),link:"#"+t.id,level:n}});return ho(e,o)}function fo(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(mo.test(t.className))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function ho(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,a]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return bo(o,n,a)}function _o(o,e){const{isAsideEnabled:t}=po(),n=Xt(i,100);let a=null;te(()=>{requestAnimationFrame(i),window.addEventListener("scroll",n)}),It(()=>{l(location.hash)}),Oe(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const d=window.scrollY,m=window.innerHeight,y=document.body.offsetHeight,I=Math.abs(d+m-y)<1,k=ze.map(({element:E,link:N})=>({link:N,top:go(E)})).filter(({top:E})=>!Number.isNaN(E)).sort((E,N)=>E.top-N.top);if(!k.length){l(null);return}if(d<1){l(null);return}if(I){l(k[k.length-1].link);return}let S=null;for(const{link:E,top:N}of k){if(N>d+Nt()+4)break;S=E}l(S)}function l(d){a&&a.classList.remove("active"),d==null?a=null:a=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const m=a;m?(m.classList.add("active"),e.value.style.top=m.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function go(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function bo(o,e,t){ze.length=0;const n=[],a=[];return o.forEach(i=>{const l={...i,children:[]};let d=a[a.length-1];for(;d&&d.level>=l.level;)a.pop(),d=a[a.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){a.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const a=le("VPDocOutlineItem",!0);return s(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(s(!0),u(B,null,W(t.headers,({children:i,link:l,title:d})=>(s(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:d},A(d),9,ko),i!=null&&i.length?(s(),b(a,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),rt=$($o,[["__scopeId","data-v-c8fd7940"]]),yo={class:"content"},Lo={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Po=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),n=Qe([]);ye(()=>{n.value=Ue(e.value.outline??t.value.outline)});const a=H(),i=H();return _o(a,i),(l,d)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:a},[v("div",yo,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",Lo,A(r(st)(r(t))),1),g(rt,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),So=$(Po,[["__scopeId","data-v-beb6bc9f"]]),Vo={class:"VPDocAsideCarbonAds"},wo=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(s(),u("div",Vo,[g(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),To=o=>(G("data-v-c4200bf2"),o=o(),q(),o),Io={class:"VPDocAside"},No=To(()=>v("div",{class:"spacer"},null,-1)),Eo=_({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,n)=>(s(),u("div",Io,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),g(So),c(t.$slots,"aside-outline-after",{},void 0,!0),No,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(s(),b(wo,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Co=$(Eo,[["__scopeId","data-v-c4200bf2"]]);function Ho(){const{theme:o,page:e}=V();return L(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let a;return typeof n=="function"?a=n(e.value):a=n.replace(/:path/g,e.value.filePath),{url:a,text:t}})}function Mo(){const{page:o,theme:e,frontmatter:t}=V();return L(()=>{var y,I,k,S,E,N,F,C;const n=at(e.value.sidebar,o.value.relativePath),a=co(n),i=zo(a,Y=>Y.link.replace(/[?#].*$/,"")),l=i.findIndex(Y=>ie(o.value.relativePath,Y.link)),d=((y=e.value.docFooter)==null?void 0:y.prev)===!1&&!t.value.prev||t.value.prev===!1,m=((I=e.value.docFooter)==null?void 0:I.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((k=i[l-1])==null?void 0:k.docFooterText)??((S=i[l-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((E=i[l-1])==null?void 0:E.link)},next:m?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((N=i[l+1])==null?void 0:N.docFooterText)??((F=i[l+1])==null?void 0:F.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((C=i[l+1])==null?void 0:C.link)}}})}function zo(o,e){const t=new Set;return o.filter(n=>{const a=e(n);return t.has(a)?!1:t.add(a)})}const x=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.tag??(e.href?"a":"span")),n=L(()=>e.href&&xe.test(e.href)||e.target==="_blank");return(a,i)=>(s(),b(Q(t.value),{class:M(["VPLink",{link:a.href,"vp-external-link-icon":n.value,"no-icon":a.noIcon}]),href:a.href?r(je)(a.href):void 0,target:a.target??(n.value?"_blank":void 0),rel:a.rel??(n.value?"noreferrer":void 0)},{default:p(()=>[c(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ao={class:"VPLastUpdated"},Bo=["datetime"],Oo=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:n}=V(),a=L(()=>new Date(t.value.lastUpdated)),i=L(()=>a.value.toISOString()),l=H("");return te(()=>{$e(()=>{var d,m,y;l.value=new Intl.DateTimeFormat((m=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&m.forceLocale?n.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(a.value)})}),(d,m)=>{var y;return s(),u("p",Ao,[de(A(((y=r(e).lastUpdated)==null?void 0:y.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:i.value},A(l.value),9,Bo)])}}}),Fo=$(Oo,[["__scopeId","data-v-32a58613"]]),it=o=>(G("data-v-35768638"),o=o(),q(),o),Do={key:0,class:"VPDocFooter"},jo={key:0,class:"edit-info"},Uo={key:0,class:"edit-link"},Go=it(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),qo={key:1,class:"last-updated"},Wo={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ro=it(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Ko={class:"pager"},Jo=["innerHTML"],Yo=["innerHTML"],Xo={class:"pager"},Zo=["innerHTML"],Qo=["innerHTML"],xo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=V(),a=Ho(),i=Mo(),l=L(()=>e.value.editLink&&n.value.editLink!==!1),d=L(()=>t.value.lastUpdated),m=L(()=>l.value||d.value||i.value.prev||i.value.next);return(y,I)=>{var k,S,E,N;return m.value?(s(),u("footer",Do,[c(y.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(s(),u("div",jo,[l.value?(s(),u("div",Uo,[g(x,{class:"edit-link-button",href:r(a).url,"no-icon":!0},{default:p(()=>[Go,de(" "+A(r(a).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(s(),u("div",qo,[g(Fo)])):h("",!0)])):h("",!0),(k=r(i).prev)!=null&&k.link||(S=r(i).next)!=null&&S.link?(s(),u("nav",Wo,[Ro,v("div",Ko,[(E=r(i).prev)!=null&&E.link?(s(),b(x,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var F;return[v("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.prev)||"Previous page"},null,8,Jo),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,Yo)]}),_:1},8,["href"])):h("",!0)]),v("div",Xo,[(N=r(i).next)!=null&&N.link?(s(),b(x,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var F;return[v("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.next)||"Next page"},null,8,Zo),v("span",{class:"title",innerHTML:r(i).next.text},null,8,Qo)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),en=$(xo,[["__scopeId","data-v-35768638"]]),tn=o=>(G("data-v-4d316cbc"),o=o(),q(),o),on={class:"container"},nn=tn(()=>v("div",{class:"aside-curtain"},null,-1)),an={class:"aside-container"},sn={class:"aside-content"},rn={class:"content"},ln={class:"content-container"},cn={class:"main"},un=_({__name:"VPDoc",setup(o){const{theme:e}=V(),t=pe(),{hasSidebar:n,hasAside:a,leftAside:i}=oe(),l=L(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,m)=>{const y=le("Content");return s(),u("div",{class:M(["VPDoc",{"has-sidebar":r(n),"has-aside":r(a)}])},[c(d.$slots,"doc-top",{},void 0,!0),v("div",on,[r(a)?(s(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[nn,v("div",an,[v("div",sn,[g(Co,null,{"aside-top":p(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),v("div",rn,[v("div",ln,[c(d.$slots,"doc-before",{},void 0,!0),v("main",cn,[g(y,{class:M(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(en,null,{"doc-footer-before":p(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),dn=$(un,[["__scopeId","data-v-4d316cbc"]]),vn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.href&&xe.test(e.href)),n=L(()=>e.tag||(e.href?"a":"button"));return(a,i)=>(s(),b(Q(n.value),{class:M(["VPButton",[a.size,a.theme]]),href:a.href?r(je)(a.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:p(()=>[de(A(a.text),1)]),_:1},8,["class","href","target","rel"]))}}),pn=$(vn,[["__scopeId","data-v-70e9ece9"]]),mn=["src","alt"],fn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=le("VPImage",!0);return e.image?(s(),u(B,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",se({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(Be)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,mn)):(s(),u(B,{key:1},[g(n,se({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(n,se({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ke=$(fn,[["__scopeId","data-v-4d0b3a1f"]]),hn=o=>(G("data-v-b684e0c8"),o=o(),q(),o),_n={class:"container"},gn={class:"main"},bn={class:"heading"},kn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Ln={key:0,class:"actions"},Pn={key:0,class:"image"},Sn={class:"image-container"},Vn=hn(()=>v("div",{class:"image-bg"},null,-1)),wn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=Le("hero-image-slot-exists");return(t,n)=>(s(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[v("div",_n,[v("div",gn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[v("h1",bn,[t.name?(s(),u("span",{key:0,innerHTML:t.name,class:"name clip"},null,8,kn)):h("",!0),t.text?(s(),u("span",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):h("",!0)]),t.tagline?(s(),u("p",{key:0,innerHTML:t.tagline,class:"tagline"},null,8,yn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(s(),u("div",Ln,[(s(!0),u(B,null,W(t.actions,a=>(s(),u("div",{key:a.link,class:"action"},[g(pn,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link,target:a.target,rel:a.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(s(),u("div",Pn,[v("div",Sn,[Vn,c(t.$slots,"home-hero-image",{},()=>[t.image?(s(),b(ke,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Tn=$(wn,[["__scopeId","data-v-b684e0c8"]]),In=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,n)=>r(e).hero?(s(),b(Tn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Nn=o=>(G("data-v-8c30a0c0"),o=o(),q(),o),En={class:"box"},Cn={key:0,class:"icon"},Hn=["innerHTML"],Mn=["innerHTML"],zn=["innerHTML"],An={key:4,class:"link-text"},Bn={class:"link-text-value"},On=Nn(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Fn=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(s(),b(x,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:p(()=>[v("article",En,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",Cn,[g(ke,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),b(ke,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Hn)):h("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Mn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,zn)):h("",!0),e.linkText?(s(),u("div",An,[v("p",Bn,[de(A(e.linkText)+" ",1),On])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(Fn,[["__scopeId","data-v-8c30a0c0"]]),jn={key:0,class:"VPFeatures"},Un={class:"container"},Gn={class:"items"},qn=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=L(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,a)=>n.features?(s(),u("div",jn,[v("div",Un,[v("div",Gn,[(s(!0),u(B,null,W(n.features,i=>(s(),u("div",{key:i.title,class:M(["item",[t.value]])},[g(Dn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Wn=$(qn,[["__scopeId","data-v-7cef5655"]]),Rn=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,n)=>r(e).features?(s(),b(Wn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Kn=_({__name:"VPHomeContent",setup(o){const{width:e}=Et({initialWidth:0,includeScrollbar:!1});return(t,n)=>(s(),u("div",{class:"vp-doc container",style:et(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Jn=$(Kn,[["__scopeId","data-v-5377254e"]]),Yn=_({__name:"VPHome",setup(o){const{frontmatter:e,theme:t}=V();return(n,a)=>{const i=le("Content");return s(),u("div",{class:M(["VPHome",{"external-link-icon-enabled":r(t).externalLinkIcon}])},[c(n.$slots,"home-hero-before",{},void 0,!0),g(In,null,{"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(n.$slots,"home-hero-after",{},void 0,!0),c(n.$slots,"home-features-before",{},void 0,!0),g(Rn),c(n.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(s(),b(Jn,{key:0},{default:p(()=>[g(i)]),_:1})):(s(),b(i,{key:1}))],2)}}}),Xn=$(Yn,[["__scopeId","data-v-1bcd8668"]]),Zn={},Qn={class:"VPPage"};function xn(o,e){const t=le("Content");return s(),u("div",Qn,[c(o.$slots,"page-top"),g(t),c(o.$slots,"page-bottom")])}const ea=$(Zn,[["render",xn]]),ta=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=oe();return(a,i)=>(s(),u("div",{class:M(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(a.$slots,"not-found",{key:0},()=>[g(io)],!0):r(t).layout==="page"?(s(),b(ea,{key:1},{"page-top":p(()=>[c(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(s(),b(Xn,{key:2},{"home-hero-before":p(()=>[c(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(s(),b(Q(r(t).layout),{key:3})):(s(),b(dn,{key:4},{"doc-top":p(()=>[c(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),oa=$(ta,[["__scopeId","data-v-8d143afd"]]),na={class:"container"},aa=["innerHTML"],sa=["innerHTML"],ra=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=oe();return(a,i)=>r(e).footer&&r(t).footer!==!1?(s(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(n)}])},[v("div",na,[r(e).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,aa)):h("",!0),r(e).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,sa)):h("",!0)])],2)):h("",!0)}}),ia=$(ra,[["__scopeId","data-v-45624e61"]]);function la(){const{theme:o,frontmatter:e}=V(),t=Qe([]),n=L(()=>t.value.length>0);return ye(()=>{t.value=Ue(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const ca=o=>(G("data-v-bd1fb31f"),o=o(),q(),o),ua={class:"menu-text"},da=ca(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),va={class:"header"},pa={class:"outline"},ma=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),n=H(!1),a=H(0),i=H(),l=H();function d(k){var S;(S=i.value)!=null&&S.contains(k.target)||(n.value=!1)}ee(n,k=>{if(k){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),Ce("Escape",()=>{n.value=!1}),ye(()=>{n.value=!1});function m(){n.value=!n.value,a.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function y(k){k.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),De(()=>{n.value=!1}))}function I(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,S)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:et({"--vp-vh":a.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(s(),u("button",{key:0,onClick:m,class:M({open:n.value})},[v("span",ua,A(r(st)(r(t))),1),da],2)):(s(),u("button",{key:1,onClick:I},A(r(t).returnToTopLabel||"Return to top"),1)),g(Ae,{name:"flyout"},{default:p(()=>[n.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:y},[v("div",va,[v("a",{class:"top-link",href:"#",onClick:I},A(r(t).returnToTopLabel||"Return to top"),1)]),v("div",pa,[g(rt,{headers:k.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),fa=$(ma,[["__scopeId","data-v-bd1fb31f"]]),ha=o=>(G("data-v-3eeb2970"),o=o(),q(),o),_a={class:"container"},ga=["aria-expanded"],ba=ha(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),ka={class:"menu-text"},$a=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=oe(),{headers:a}=la(),{y:i}=tt(),l=H(0);te(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ye(()=>{a.value=Ue(t.value.outline??e.value.outline)});const d=L(()=>a.value.length===0),m=L(()=>d.value&&!n.value),y=L(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:d.value,fixed:m.value}));return(I,k)=>r(t).layout!=="home"&&(!m.value||r(i)>=l.value)?(s(),u("div",{key:0,class:M(y.value)},[v("div",_a,[r(n)?(s(),u("button",{key:0,class:"menu","aria-expanded":I.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=S=>I.$emit("open-menu"))},[ba,v("span",ka,A(r(e).sidebarMenuLabel||"Menu"),1)],8,ga)):h("",!0),g(fa,{headers:r(a),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ya=$($a,[["__scopeId","data-v-3eeb2970"]]);function La(){const o=H(!1);function e(){o.value=!0,window.addEventListener("resize",a)}function t(){o.value=!1,window.removeEventListener("resize",a)}function n(){o.value?t():e()}function a(){window.outerWidth>=768&&t()}const i=pe();return ee(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const Pa={},Sa={class:"VPSwitch",type:"button",role:"switch"},Va={class:"check"},wa={key:0,class:"icon"};function Ta(o,e){return s(),u("button",Sa,[v("span",Va,[o.$slots.default?(s(),u("span",wa,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ia=$(Pa,[["render",Ta],["__scopeId","data-v-4ec3b2fe"]]),lt=o=>(G("data-v-ae950ac5"),o=o(),q(),o),Na=lt(()=>v("span",{class:"vpi-sun sun"},null,-1)),Ea=lt(()=>v("span",{class:"vpi-moon moon"},null,-1)),Ca=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),n=Le("toggle-appearance",()=>{e.value=!e.value}),a=H("");return Fe(()=>{a.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(s(),b(Ia,{title:a.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:p(()=>[Na,Ea]),_:1},8,["title","aria-checked","onClick"]))}}),Ge=$(Ca,[["__scopeId","data-v-ae950ac5"]]),Ha={key:0,class:"VPNavBarAppearance"},Ma=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",Ha,[g(Ge)])):h("",!0)}}),za=$(Ma,[["__scopeId","data-v-764c0058"]]),qe=H();let ct=!1,Ne=0;function Aa(o){const e=H(!1);if(Pe){!ct&&Ba(),Ne++;const t=ee(qe,n=>{var a,i,l;n===o.el.value||(a=o.el.value)!=null&&a.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});Oe(()=>{t(),Ne--,Ne||Oa()})}return Ct(e)}function Ba(){document.addEventListener("focusin",ut),ct=!0,qe.value=document.activeElement}function Oa(){document.removeEventListener("focusin",ut)}function ut(){qe.value=document.activeElement}const Fa={class:"VPMenuLink"},Da=["innerHTML"],ja=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,n)=>(s(),u("div",Fa,[g(x,{class:M({active:r(ie)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,Da)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),Se=$(ja,[["__scopeId","data-v-acee1e57"]]),Ua={class:"VPMenuGroup"},Ga={key:0,class:"title"},qa=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",Ua,[e.text?(s(),u("p",Ga,A(e.text),1)):h("",!0),(s(!0),u(B,null,W(e.items,n=>(s(),u(B,null,["link"in n?(s(),b(Se,{key:0,item:n},null,8,["item"])):h("",!0)],64))),256))]))}}),Wa=$(qa,[["__scopeId","data-v-9e18ca71"]]),Ra={class:"VPMenu"},Ka={key:0,class:"items"},Ja=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(s(),u("div",Ra,[e.items?(s(),u("div",Ka,[(s(!0),u(B,null,W(e.items,n=>(s(),u(B,{key:JSON.stringify(n)},["link"in n?(s(),b(Se,{key:0,item:n},null,8,["item"])):"component"in n?(s(),b(Q(n.component),se({key:1,ref_for:!0},n.props),null,16)):(s(),b(Wa,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Ya=$(Ja,[["__scopeId","data-v-3e022afb"]]),Xa=o=>(G("data-v-95325d79"),o=o(),q(),o),Za=["aria-expanded","aria-label"],Qa={key:0,class:"text"},xa=["innerHTML"],es=Xa(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),ts={key:1,class:"vpi-more-horizontal icon"},os={class:"menu"},ns=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=H(!1),t=H();Aa({el:t,onBlur:n});function n(){e.value=!1}return(a,i)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":a.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[a.button||a.icon?(s(),u("span",Qa,[a.icon?(s(),u("span",{key:0,class:M([a.icon,"option-icon"])},null,2)):h("",!0),a.button?(s(),u("span",{key:1,innerHTML:a.button},null,8,xa)):h("",!0),es])):(s(),u("span",ts))],8,Za),v("div",os,[g(Ya,{items:a.items},{default:p(()=>[c(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),We=$(ns,[["__scopeId","data-v-95325d79"]]),as=["href","aria-label","innerHTML"],ss=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=H();te(async()=>{var i;await De();const a=(i=t.value)==null?void 0:i.children[0];a instanceof HTMLElement&&a.className.startsWith("vpi-social-")&&(getComputedStyle(a).maskImage||getComputedStyle(a).webkitMaskImage)==="none"&&a.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const n=L(()=>typeof e.icon=="object"?e.icon.svg:``);return(a,i)=>(s(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:a.link,"aria-label":a.ariaLabel??(typeof a.icon=="string"?a.icon:""),target:"_blank",rel:"noopener",innerHTML:n.value},null,8,as))}}),rs=$(ss,[["__scopeId","data-v-71029e87"]]),is={class:"VPSocialLinks"},ls=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(s(),u("div",is,[(s(!0),u(B,null,W(e.links,({link:n,icon:a,ariaLabel:i})=>(s(),b(rs,{key:n,icon:a,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=$(ls,[["__scopeId","data-v-c9b9e435"]]),cs={key:0,class:"group translations"},us={class:"trans-title"},ds={key:1,class:"group"},vs={class:"item appearance"},ps={class:"label"},ms={class:"appearance-action"},fs={key:2,class:"group"},hs={class:"item social-links"},_s=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:a}=me({correspondingLink:!0}),i=L(()=>n.value.length&&a.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(s(),b(We,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(n).length&&r(a).label?(s(),u("div",cs,[v("p",us,A(r(a).label),1),(s(!0),u(B,null,W(r(n),m=>(s(),b(Se,{key:m.link,item:m},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",ds,[v("div",vs,[v("p",ps,A(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",ms,[g(Ge)])])])):h("",!0),r(t).socialLinks?(s(),u("div",fs,[v("div",hs,[g(Re,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),gs=$(_s,[["__scopeId","data-v-cc85dc96"]]),bs=o=>(G("data-v-e08ccaba"),o=o(),q(),o),ks=["aria-expanded"],$s=bs(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),ys=[$s],Ls=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(s(),u("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},ys,10,ks))}}),Ps=$(Ls,[["__scopeId","data-v-e08ccaba"]]),Ss=["innerHTML"],Vs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,n)=>(s(),b(x,{class:M({VPNavBarMenuLink:!0,active:r(ie)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,Ss)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ws=$(Vs,[["__scopeId","data-v-bbf7f74d"]]),Ts=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),n=i=>"component"in i?!1:"link"in i?ie(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),a=L(()=>n(e.item));return(i,l)=>(s(),b(We,{class:M({VPNavBarMenuGroup:!0,active:r(ie)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||a.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Is=o=>(G("data-v-d53bf4df"),o=o(),q(),o),Ns={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Es=Is(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Cs=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,n)=>r(e).nav?(s(),u("nav",Ns,[Es,(s(!0),u(B,null,W(r(e).nav,a=>(s(),u(B,{key:JSON.stringify(a)},["link"in a?(s(),b(ws,{key:0,item:a},null,8,["item"])):"component"in a?(s(),b(Q(a.component),se({key:1,ref_for:!0},a.props),null,16)):(s(),b(Ts,{key:2,item:a},null,8,["item"]))],64))),128))])):h("",!0)}}),Hs=$(Cs,[["__scopeId","data-v-d53bf4df"]]);function Ms(o){const{localeIndex:e,theme:t}=V();function n(a){var N,F,C;const i=a.split("."),l=(N=t.value.search)==null?void 0:N.options,d=l&&typeof l=="object",m=d&&((C=(F=l.locales)==null?void 0:F[e.value])==null?void 0:C.translations)||null,y=d&&l.translations||null;let I=m,k=y,S=o;const E=i.pop();for(const Y of i){let X=null;const D=S==null?void 0:S[Y];D&&(X=S=D);const ne=k==null?void 0:k[Y];ne&&(X=k=ne);const Z=I==null?void 0:I[Y];Z&&(X=I=Z),D||(S=X),ne||(k=X),Z||(I=X)}return(I==null?void 0:I[E])??(k==null?void 0:k[E])??(S==null?void 0:S[E])??""}return n}const zs=["aria-label"],As={class:"DocSearch-Button-Container"},Bs=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Os={class:"DocSearch-Button-Placeholder"},Fs=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ze=_({__name:"VPNavBarSearchButton",setup(o){const t=Ms({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,a)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",As,[Bs,v("span",Os,A(r(t)("button.buttonText")),1)]),Fs],8,zs))}}),Ds={class:"VPNavBarSearch"},js={id:"local-search"},Us={key:1,id:"docsearch"},Gs=_({__name:"VPNavBarSearch",setup(o){const e=Ht(()=>Mt(()=>import("./VPLocalSearchBox.DPqQBmGX.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=V(),a=H(!1),i=H(!1);te(()=>{});function l(){a.value||(a.value=!0,setTimeout(d,16))}function d(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function m(k){const S=k.target,E=S.tagName;return S.isContentEditable||E==="INPUT"||E==="SELECT"||E==="TEXTAREA"}const y=H(!1);Ce("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),y.value=!0)}),Ce("/",k=>{m(k)||(k.preventDefault(),y.value=!0)});const I="local";return(k,S)=>{var E;return s(),u("div",Ds,[r(I)==="local"?(s(),u(B,{key:0},[y.value?(s(),b(r(e),{key:0,onClose:S[0]||(S[0]=N=>y.value=!1)})):h("",!0),v("div",js,[g(Ze,{onClick:S[1]||(S[1]=N=>y.value=!0)})])],64)):r(I)==="algolia"?(s(),u(B,{key:1},[a.value?(s(),b(r(t),{key:0,algolia:((E=r(n).search)==null?void 0:E.options)??r(n).algolia,onVnodeBeforeMount:S[2]||(S[2]=N=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(s(),u("div",Us,[g(Ze,{onClick:l})]))],64)):h("",!0)])}}}),qs=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(s(),b(Re,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ws=$(qs,[["__scopeId","data-v-d6e28fe5"]]),Rs=["href","rel","target"],Ks=["innerHTML"],Js={key:2},Ys=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:n}=oe(),{currentLang:a}=me(),i=L(()=>{var m;return typeof t.value.logoLink=="string"?t.value.logoLink:(m=t.value.logoLink)==null?void 0:m.link}),l=L(()=>{var m;return typeof t.value.logoLink=="string"||(m=t.value.logoLink)==null?void 0:m.rel}),d=L(()=>{var m;return typeof t.value.logoLink=="string"||(m=t.value.logoLink)==null?void 0:m.target});return(m,y)=>(s(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(n)}])},[v("a",{class:"title",href:i.value??r(je)(r(a).link),rel:l.value,target:d.value},[c(m.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(s(),b(ke,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(s(),u("span",{key:1,innerHTML:r(t).siteTitle},null,8,Ks)):r(t).siteTitle===void 0?(s(),u("span",Js,A(r(e).title),1)):h("",!0),c(m.$slots,"nav-bar-title-after",{},void 0,!0)],8,Rs)],2))}}),Xs=$(Ys,[["__scopeId","data-v-211643ab"]]),Zs={class:"items"},Qs={class:"title"},xs=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:n}=me({correspondingLink:!0});return(a,i)=>r(t).length&&r(n).label?(s(),b(We,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:p(()=>[v("div",Zs,[v("p",Qs,A(r(n).label),1),(s(!0),u(B,null,W(r(t),l=>(s(),b(Se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),er=$(xs,[["__scopeId","data-v-9d8c2f62"]]),tr=o=>(G("data-v-511c2cc9"),o=o(),q(),o),or={class:"wrapper"},nr={class:"container"},ar={class:"title"},sr={class:"content"},rr={class:"content-body"},ir=tr(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),lr=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=tt(),{hasSidebar:n}=oe(),{frontmatter:a}=V(),i=H({});return Fe(()=>{i.value={"has-sidebar":n.value,home:a.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(s(),u("div",{class:M(["VPNavBar",i.value])},[v("div",or,[v("div",nr,[v("div",ar,[g(Xs,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",sr,[v("div",rr,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),g(Gs,{class:"search"}),g(Hs,{class:"menu"}),g(er,{class:"translations"}),g(za,{class:"appearance"}),g(Ws,{class:"social-links"}),g(gs,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),g(Ps,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=m=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),ir],2))}}),cr=$(lr,[["__scopeId","data-v-511c2cc9"]]),ur={key:0,class:"VPNavScreenAppearance"},dr={class:"text"},vr=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(n,a)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",ur,[v("p",dr,A(r(t).darkModeSwitchLabel||"Appearance"),1),g(Ge)])):h("",!0)}}),pr=$(vr,[["__scopeId","data-v-15ad096a"]]),mr=["innerHTML"],fr=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),b(x,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,mr)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),hr=$(fr,[["__scopeId","data-v-4fb78c30"]]),_r=["innerHTML"],gr=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),b(x,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,_r)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),dt=$(gr,[["__scopeId","data-v-64059e46"]]),br={class:"VPNavScreenMenuGroupSection"},kr={key:0,class:"title"},$r=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",br,[e.text?(s(),u("p",kr,A(e.text),1)):h("",!0),(s(!0),u(B,null,W(e.items,n=>(s(),b(dt,{key:n.text,item:n},null,8,["item"]))),128))]))}}),yr=$($r,[["__scopeId","data-v-52a35d42"]]),Lr=o=>(G("data-v-1e2bb94d"),o=o(),q(),o),Pr=["aria-controls","aria-expanded"],Sr=["innerHTML"],Vr=Lr(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),wr=["id"],Tr={key:0,class:"item"},Ir={key:1,class:"item"},Nr={key:2,class:"group"},Er=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=H(!1),n=L(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function a(){t.value=!t.value}return(i,l)=>(s(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:a},[v("span",{class:"button-text",innerHTML:i.text},null,8,Sr),Vr],8,Pr),v("div",{id:n.value,class:"items"},[(s(!0),u(B,null,W(i.items,d=>(s(),u(B,{key:JSON.stringify(d)},["link"in d?(s(),u("div",Tr,[g(dt,{item:d},null,8,["item"])])):"component"in d?(s(),u("div",Ir,[(s(),b(Q(d.component),se({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(s(),u("div",Nr,[g(yr,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,wr)],2))}}),Cr=$(Er,[["__scopeId","data-v-1e2bb94d"]]),Hr={key:0,class:"VPNavScreenMenu"},Mr=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,n)=>r(e).nav?(s(),u("nav",Hr,[(s(!0),u(B,null,W(r(e).nav,a=>(s(),u(B,{key:JSON.stringify(a)},["link"in a?(s(),b(hr,{key:0,item:a},null,8,["item"])):"component"in a?(s(),b(Q(a.component),se({key:1,ref_for:!0},a.props,{"screen-menu":""}),null,16)):(s(),b(Cr,{key:2,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),zr=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(s(),b(Re,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),vt=o=>(G("data-v-da51982f"),o=o(),q(),o),Ar=vt(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),Br=vt(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Or={class:"list"},Fr=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=me({correspondingLink:!0}),n=H(!1);function a(){n.value=!n.value}return(i,l)=>r(e).length&&r(t).label?(s(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:n.value}])},[v("button",{class:"title",onClick:a},[Ar,de(" "+A(r(t).label)+" ",1),Br]),v("ul",Or,[(s(!0),u(B,null,W(r(e),d=>(s(),u("li",{key:d.link,class:"item"},[g(x,{class:"link",href:d.link},{default:p(()=>[de(A(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),Dr=$(Fr,[["__scopeId","data-v-da51982f"]]),jr={class:"container"},Ur=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=H(null),t=ot(Pe?document.body:null);return(n,a)=>(s(),b(Ae,{name:"fade",onEnter:a[0]||(a[0]=i=>t.value=!0),onAfterLeave:a[1]||(a[1]=i=>t.value=!1)},{default:p(()=>[n.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",jr,[c(n.$slots,"nav-screen-content-before",{},void 0,!0),g(Mr,{class:"menu"}),g(Dr,{class:"translations"}),g(pr,{class:"appearance"}),g(zr,{class:"social-links"}),c(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),Gr=$(Ur,[["__scopeId","data-v-9cc6cbea"]]),qr={key:0,class:"VPNav"},Wr=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=La(),{frontmatter:a}=V(),i=L(()=>a.value.navbar!==!1);return nt("close-screen",t),$e(()=>{Pe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(s(),u("header",qr,[g(cr,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g(Gr,{open:r(e)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Rr=$(Wr,[["__scopeId","data-v-1f7b0f5c"]]),pt=o=>(G("data-v-6092ddf2"),o=o(),q(),o),Kr=["role","tabindex"],Jr=pt(()=>v("div",{class:"indicator"},null,-1)),Yr=pt(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Xr=[Yr],Zr={key:1,class:"items"},Qr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:a,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:m}=vo(L(()=>e.item)),y=L(()=>d.value?"section":"div"),I=L(()=>a.value?"a":"div"),k=L(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),S=L(()=>a.value?void 0:"button"),E=L(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":a.value},{"is-active":i.value},{"has-active":l.value}]);function N(C){"key"in C&&C.key!=="Enter"||!e.item.link&&m()}function F(){e.item.link&&m()}return(C,Y)=>{const X=le("VPSidebarItem",!0);return s(),b(Q(y.value),{class:M(["VPSidebarItem",E.value])},{default:p(()=>[C.item.text?(s(),u("div",se({key:0,class:"item",role:S.value},zt(C.item.items?{click:N,keydown:N}:{},!0),{tabindex:C.item.items&&0}),[Jr,C.item.link?(s(),b(x,{key:0,tag:I.value,class:"link",href:C.item.link,rel:C.item.rel,target:C.item.target},{default:p(()=>[(s(),b(Q(k.value),{class:"text",innerHTML:C.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),b(Q(k.value),{key:1,class:"text",innerHTML:C.item.text},null,8,["innerHTML"])),C.item.collapsed!=null&&C.item.items&&C.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:F,onKeydown:At(F,["enter"]),tabindex:"0"},Xr,32)):h("",!0)],16,Kr)):h("",!0),C.item.items&&C.item.items.length?(s(),u("div",Zr,[C.depth<5?(s(!0),u(B,{key:0},W(C.item.items,D=>(s(),b(X,{key:D.text,item:D,depth:C.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),xr=$(Qr,[["__scopeId","data-v-6092ddf2"]]),ei=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=H(!0);let t=null;return te(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Bt(()=>{t!=null&&(clearTimeout(t),t=null)}),(n,a)=>(s(!0),u(B,null,W(n.items,i=>(s(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[g(xr,{item:i,depth:0},null,8,["item"])],2))),128))}}),ti=$(ei,[["__scopeId","data-v-7eb7a422"]]),mt=o=>(G("data-v-130e406e"),o=o(),q(),o),oi=mt(()=>v("div",{class:"curtain"},null,-1)),ni={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ai=mt(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),si=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=oe(),n=o,a=H(null),i=ot(Pe?document.body:null);ee([n,a],()=>{var d;n.open?(i.value=!0,(d=a.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=H(0);return ee(e,()=>{l.value+=1},{deep:!0}),(d,m)=>r(t)?(s(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:a,onClick:m[0]||(m[0]=Ot(()=>{},["stop"]))},[oi,v("nav",ni,[ai,c(d.$slots,"sidebar-nav-before",{},void 0,!0),(s(),b(ti,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),ri=$(si,[["__scopeId","data-v-130e406e"]]),ii=_({__name:"VPSkipLink",setup(o){const{theme:e}=V(),t=pe(),n=H();ee(()=>t.path,()=>n.value.focus());function a({target:i}){const l=document.getElementById(decodeURIComponent(i.hash).slice(1));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(i,l)=>(s(),u(B,null,[v("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a},A(r(e).skipToContentLabel||"Skip to content"),1)],64))}}),li=$(ii,[["__scopeId","data-v-5d3e946a"]]),ci=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=oe(),a=pe();ee(()=>a.path,n),uo(e,n);const{frontmatter:i}=V(),l=Ft(),d=L(()=>!!l["home-hero-image"]);return nt("hero-image-slot-exists",d),(m,y)=>{const I=le("Content");return r(i).layout!==!1?(s(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[c(m.$slots,"layout-top",{},void 0,!0),g(li),g(Yt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),g(Rr,null,{"nav-bar-title-before":p(()=>[c(m.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(m.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(m.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(m.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(m.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(m.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(ya,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),g(ri,{open:r(e)},{"sidebar-nav-before":p(()=>[c(m.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(m.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(oa,null,{"page-top":p(()=>[c(m.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(m.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(m.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(m.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(m.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(m.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(m.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(m.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(m.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(m.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(m.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(m.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(m.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(m.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(m.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(m.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(m.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(m.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(m.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(m.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(m.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(m.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(m.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(ia),c(m.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),b(I,{key:1}))}}}),ui=$(ci,[["__scopeId","data-v-fbfa64bf"]]),di={Layout:ui},vi={class:"ad"},pi=["src","onClick"],mi={__name:"layout",setup(o){const{Layout:e}=di,t=Dt({list:[],toLink(n){n.link?window.open(n.link):window.open(`https://cool-js.com/ad/${n.id}`)},get(){fetch("https://service.cool-js.com/api/app/info/ad/list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:1})}).then(n=>n.json()).then(n=>{this.list=n.data})}});return te(()=>{t.get()}),(n,a)=>(s(),b(r(e),null,{"sidebar-nav-before":p(()=>[v("div",vi,[(s(!0),u(B,null,W(t.list,i=>(s(),u("img",{key:i,src:i.pic,onClick:l=>t.toLink(i)},null,8,pi))),128))])]),_:1}))}},fi=$(mi,[["__scopeId","data-v-96d1ba1f"]]),_i={Layout:fi,setup(){const o=pe(),e=()=>{new qt("[data-zoomable]",{background:"var(--vp-c-bg)"})};te(()=>{e()}),ee(()=>o.path,()=>De(()=>e()))}};export{_i as R,Ms as c,V as u}; +See: https://github.com/francoischalifour/medium-zoom`)}},Ut=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t},Gt=function(e){var t=e.getBoundingClientRect(),n=t.top,a=t.left,i=t.width,l=t.height,d=e.cloneNode(),m=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,y=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=n+m+"px",d.style.left=a+y+"px",d.style.width=i+"px",d.style.height=l+"px",d.style.transform="",d},ue=function(e,t){var n=re({bubbles:!1,cancelable:!1,detail:void 0},t);if(typeof window.CustomEvent=="function")return new CustomEvent(e,n);var a=document.createEvent("CustomEvent");return a.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),a},qt=function o(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=window.Promise||function(P){function w(){}P(w,w)},a=function(P){var w=P.target;if(w===fe){N();return}D.indexOf(w)!==-1&&F({target:w})},i=function(){if(!(Z||!f.original)){var P=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(Ke-P)>z.scrollOffset&&setTimeout(N,150)}},l=function(P){var w=P.key||P.keyCode;(w==="Escape"||w==="Esc"||w===27)&&N()},d=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=P;if(P.background&&(fe.style.background=P.background),P.container&&P.container instanceof Object&&(w.container=re({},z.container,P.container)),P.template){var O=ge(P.template)?P.template:document.querySelector(P.template);w.template=O}return z=re({},z,w),D.forEach(function(j){j.dispatchEvent(ue("medium-zoom:update",{detail:{zoom:U}}))}),U},m=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return o(re({},z,P))},y=function(){for(var P=arguments.length,w=Array(P),O=0;O0?w.reduce(function(T,K){return[].concat(T,Xe(K))},[]):D;return j.forEach(function(T){T.classList.remove("medium-zoom-image"),T.dispatchEvent(ue("medium-zoom:detach",{detail:{zoom:U}}))}),D=D.filter(function(T){return j.indexOf(T)===-1}),U},k=function(P,w){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return D.forEach(function(j){j.addEventListener("medium-zoom:"+P,w,O)}),ne.push({type:"medium-zoom:"+P,listener:w,options:O}),U},S=function(P,w){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return D.forEach(function(j){j.removeEventListener("medium-zoom:"+P,w,O)}),ne=ne.filter(function(j){return!(j.type==="medium-zoom:"+P&&j.listener.toString()===w.toString())}),U},E=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=P.target,O=function(){var T={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},K=void 0,J=void 0;if(z.container)if(z.container instanceof Object)T=re({},T,z.container),K=T.width-T.left-T.right-z.margin*2,J=T.height-T.top-T.bottom-z.margin*2;else{var ce=ge(z.container)?z.container:document.querySelector(z.container),ae=ce.getBoundingClientRect(),Ve=ae.width,ft=ae.height,ht=ae.left,_t=ae.top;T=re({},T,{width:Ve,height:ft,left:ht,top:_t})}K=K||T.width-z.margin*2,J=J||T.height-z.margin*2;var ve=f.zoomedHd||f.original,gt=Ye(ve)?K:ve.naturalWidth||K,bt=Ye(ve)?J:ve.naturalHeight||J,he=ve.getBoundingClientRect(),kt=he.top,$t=he.left,we=he.width,Te=he.height,yt=Math.min(Math.max(we,gt),K)/we,Lt=Math.min(Math.max(Te,bt),J)/Te,Ie=Math.min(yt,Lt),Pt=(-$t+(K-we)/2+z.margin+T.left)/Ie,St=(-kt+(J-Te)/2+z.margin+T.top)/Ie,Je="scale("+Ie+") translate3d("+Pt+"px, "+St+"px, 0)";f.zoomed.style.transform=Je,f.zoomedHd&&(f.zoomedHd.style.transform=Je)};return new n(function(j){if(w&&D.indexOf(w)===-1){j(U);return}var T=function Ve(){Z=!1,f.zoomed.removeEventListener("transitionend",Ve),f.original.dispatchEvent(ue("medium-zoom:opened",{detail:{zoom:U}})),j(U)};if(f.zoomed){j(U);return}if(w)f.original=w;else if(D.length>0){var K=D;f.original=K[0]}else{j(U);return}if(f.original.dispatchEvent(ue("medium-zoom:open",{detail:{zoom:U}})),Ke=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,Z=!0,f.zoomed=Gt(f.original),document.body.appendChild(fe),z.template){var J=ge(z.template)?z.template:document.querySelector(z.template);f.template=document.createElement("div"),f.template.appendChild(J.content.cloneNode(!0)),document.body.appendChild(f.template)}if(f.original.parentElement&&f.original.parentElement.tagName==="PICTURE"&&f.original.currentSrc&&(f.zoomed.src=f.original.currentSrc),document.body.appendChild(f.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),f.original.classList.add("medium-zoom-image--hidden"),f.zoomed.classList.add("medium-zoom-image--opened"),f.zoomed.addEventListener("click",N),f.zoomed.addEventListener("transitionend",T),f.original.getAttribute("data-zoom-src")){f.zoomedHd=f.zoomed.cloneNode(),f.zoomedHd.removeAttribute("srcset"),f.zoomedHd.removeAttribute("sizes"),f.zoomedHd.removeAttribute("loading"),f.zoomedHd.src=f.zoomed.getAttribute("data-zoom-src"),f.zoomedHd.onerror=function(){clearInterval(ce),console.warn("Unable to reach the zoom image target "+f.zoomedHd.src),f.zoomedHd=null,O()};var ce=setInterval(function(){f.zoomedHd.complete&&(clearInterval(ce),f.zoomedHd.classList.add("medium-zoom-image--opened"),f.zoomedHd.addEventListener("click",N),document.body.appendChild(f.zoomedHd),O())},10)}else if(f.original.hasAttribute("srcset")){f.zoomedHd=f.zoomed.cloneNode(),f.zoomedHd.removeAttribute("sizes"),f.zoomedHd.removeAttribute("loading");var ae=f.zoomedHd.addEventListener("load",function(){f.zoomedHd.removeEventListener("load",ae),f.zoomedHd.classList.add("medium-zoom-image--opened"),f.zoomedHd.addEventListener("click",N),document.body.appendChild(f.zoomedHd),O()})}else O()})},N=function(){return new n(function(P){if(Z||!f.original){P(U);return}var w=function O(){f.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(f.zoomed),f.zoomedHd&&document.body.removeChild(f.zoomedHd),document.body.removeChild(fe),f.zoomed.classList.remove("medium-zoom-image--opened"),f.template&&document.body.removeChild(f.template),Z=!1,f.zoomed.removeEventListener("transitionend",O),f.original.dispatchEvent(ue("medium-zoom:closed",{detail:{zoom:U}})),f.original=null,f.zoomed=null,f.zoomedHd=null,f.template=null,P(U)};Z=!0,document.body.classList.remove("medium-zoom--opened"),f.zoomed.style.transform="",f.zoomedHd&&(f.zoomedHd.style.transform=""),f.template&&(f.template.style.transition="opacity 150ms",f.template.style.opacity=0),f.original.dispatchEvent(ue("medium-zoom:close",{detail:{zoom:U}})),f.zoomed.addEventListener("transitionend",w)})},F=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=P.target;return f.original?N():E({target:w})},C=function(){return z},Y=function(){return D},X=function(){return f.original},D=[],ne=[],Z=!1,Ke=0,z=t,f={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(e)==="[object Object]"?z=e:(e||typeof e=="string")&&y(e),z=re({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},z);var fe=Ut(z.background);document.addEventListener("click",a),document.addEventListener("keyup",l),document.addEventListener("scroll",i),window.addEventListener("resize",N);var U={open:E,close:N,toggle:F,update:d,clone:m,attach:y,detach:I,on:k,off:S,getOptions:C,getImages:Y,getZoomedImage:X};return U};function Wt(o,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t==="top"&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=o:a.appendChild(document.createTextNode(o))}}var Rt=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";Wt(Rt);const Kt={key:0,class:"VPBackdrop"},Jt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(s(),b(Ae,{name:"fade"},{default:p(()=>[e.show?(s(),u("div",Kt)):h("",!0)]),_:1}))}}),Yt=$(Jt,[["__scopeId","data-v-eab00006"]]),V=Vt;function Xt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function He(o){return o.startsWith("/")?o:`/${o}`}function je(o){const{pathname:e,search:t,hash:n,protocol:a}=new URL(o,"http://a.com");if(wt(o)||o.startsWith("#")||!a.startsWith("http")||!Tt(e))return o;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return Be(l)}function me({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:a,hash:i}=V(),l=L(()=>{var m,y;return{label:(m=e.value.locales[t.value])==null?void 0:m.label,link:((y=e.value.locales[t.value])==null?void 0:y.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:L(()=>Object.entries(e.value.locales).flatMap(([m,y])=>l.value.label===y.label?[]:{text:y.label,link:Zt(y.link||(m==="root"?"/":`/${m}/`),a.value.i18nRouting!==!1&&o,n.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function Zt(o,e,t,n){return e?o.replace(/\/$/,"")+He(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const Qt=o=>(G("data-v-60b89e81"),o=o(),q(),o),xt={class:"NotFound"},eo={class:"code"},to={class:"title"},oo=Qt(()=>v("div",{class:"divider"},null,-1)),no={class:"quote"},ao={class:"action"},so=["href","aria-label"],ro=_({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=me();return(n,a)=>{var i,l,d,m,y;return s(),u("div",xt,[v("p",eo,A(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",to,A(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),oo,v("blockquote",no,A(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",ao,[v("a",{class:"link",href:r(Be)(r(t).link),"aria-label":((m=r(e).notFound)==null?void 0:m.linkLabel)??"go to home"},A(((y=r(e).notFound)==null?void 0:y.linkText)??"Take me home"),9,so)])])}}}),io=$(ro,[["__scopeId","data-v-60b89e81"]]);function at(o,e){if(Array.isArray(o))return be(o);if(o==null)return[];e=He(e);const t=Object.keys(o).sort((a,i)=>i.split("/").length-a.split("/").length).find(a=>e.startsWith(He(a))),n=t?o[t]:[];return Array.isArray(n)?be(n):be(n.items,n.base)}function lo(o){const e=[];let t=0;for(const n in o){const a=o[n];if(a.items){t=e.push(a);continue}e[t]||e.push({items:[]}),e[t].items.push(a)}return e}function co(o){const e=[];function t(n){for(const a of n)a.text&&a.link&&e.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&t(a.items)}return t(o),e}function Me(o,e){return Array.isArray(e)?e.some(t=>Me(o,t)):ie(o,e.link)?!0:e.items?Me(o,e.items):!1}function be(o,e){return[...o].map(t=>{const n={...t},a=n.base||e;return a&&n.link&&(n.link=a+n.link),n.items&&(n.items=be(n.items,a)),n})}function oe(){const{frontmatter:o,page:e,theme:t}=V(),n=Ee("(min-width: 960px)"),a=H(!1),i=L(()=>{const F=t.value.sidebar,C=e.value.relativePath;return F?at(F,C):[]}),l=H(i.value);ee(i,(F,C)=>{JSON.stringify(F)!==JSON.stringify(C)&&(l.value=i.value)});const d=L(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),m=L(()=>y?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),y=L(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),I=L(()=>d.value&&n.value),k=L(()=>d.value?lo(l.value):[]);function S(){a.value=!0}function E(){a.value=!1}function N(){a.value?E():S()}return{isOpen:a,sidebar:l,sidebarGroups:k,hasSidebar:d,hasAside:y,leftAside:m,isSidebarEnabled:I,open:S,close:E,toggle:N}}function uo(o,e){let t;$e(()=>{t=o.value?document.activeElement:void 0}),te(()=>{window.addEventListener("keyup",n)}),Oe(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function vo(o){const{page:e,hash:t}=V(),n=H(!1),a=L(()=>o.value.collapsed!=null),i=L(()=>!!o.value.link),l=H(!1),d=()=>{l.value=ie(e.value.relativePath,o.value.link)};ee([e,o,t],d),te(d);const m=L(()=>l.value?!0:o.value.items?Me(e.value.relativePath,o.value.items):!1),y=L(()=>!!(o.value.items&&o.value.items.length));$e(()=>{n.value=!!(a.value&&o.value.collapsed)}),Fe(()=>{(l.value||m.value)&&(n.value=!1)});function I(){a.value&&(n.value=!n.value)}return{collapsed:n,collapsible:a,isLink:i,isActiveLink:l,hasActiveLink:m,hasChildren:y,toggle:I}}function po(){const{hasSidebar:o}=oe(),e=Ee("(min-width: 960px)"),t=Ee("(min-width: 1280px)");return{isAsideEnabled:L(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const mo=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ze=[];function st(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function Ue(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:fo(t),link:"#"+t.id,level:n}});return ho(e,o)}function fo(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(mo.test(t.className))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function ho(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,a]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return bo(o,n,a)}function _o(o,e){const{isAsideEnabled:t}=po(),n=Xt(i,100);let a=null;te(()=>{requestAnimationFrame(i),window.addEventListener("scroll",n)}),It(()=>{l(location.hash)}),Oe(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const d=window.scrollY,m=window.innerHeight,y=document.body.offsetHeight,I=Math.abs(d+m-y)<1,k=ze.map(({element:E,link:N})=>({link:N,top:go(E)})).filter(({top:E})=>!Number.isNaN(E)).sort((E,N)=>E.top-N.top);if(!k.length){l(null);return}if(d<1){l(null);return}if(I){l(k[k.length-1].link);return}let S=null;for(const{link:E,top:N}of k){if(N>d+Nt()+4)break;S=E}l(S)}function l(d){a&&a.classList.remove("active"),d==null?a=null:a=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const m=a;m?(m.classList.add("active"),e.value.style.top=m.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function go(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function bo(o,e,t){ze.length=0;const n=[],a=[];return o.forEach(i=>{const l={...i,children:[]};let d=a[a.length-1];for(;d&&d.level>=l.level;)a.pop(),d=a[a.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){a.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const a=le("VPDocOutlineItem",!0);return s(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(s(!0),u(B,null,W(t.headers,({children:i,link:l,title:d})=>(s(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:d},A(d),9,ko),i!=null&&i.length?(s(),b(a,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),rt=$($o,[["__scopeId","data-v-c8fd7940"]]),yo={class:"content"},Lo={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Po=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),n=Qe([]);ye(()=>{n.value=Ue(e.value.outline??t.value.outline)});const a=H(),i=H();return _o(a,i),(l,d)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:a},[v("div",yo,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",Lo,A(r(st)(r(t))),1),g(rt,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),So=$(Po,[["__scopeId","data-v-beb6bc9f"]]),Vo={class:"VPDocAsideCarbonAds"},wo=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(s(),u("div",Vo,[g(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),To=o=>(G("data-v-c4200bf2"),o=o(),q(),o),Io={class:"VPDocAside"},No=To(()=>v("div",{class:"spacer"},null,-1)),Eo=_({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,n)=>(s(),u("div",Io,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),g(So),c(t.$slots,"aside-outline-after",{},void 0,!0),No,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(s(),b(wo,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Co=$(Eo,[["__scopeId","data-v-c4200bf2"]]);function Ho(){const{theme:o,page:e}=V();return L(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let a;return typeof n=="function"?a=n(e.value):a=n.replace(/:path/g,e.value.filePath),{url:a,text:t}})}function Mo(){const{page:o,theme:e,frontmatter:t}=V();return L(()=>{var y,I,k,S,E,N,F,C;const n=at(e.value.sidebar,o.value.relativePath),a=co(n),i=zo(a,Y=>Y.link.replace(/[?#].*$/,"")),l=i.findIndex(Y=>ie(o.value.relativePath,Y.link)),d=((y=e.value.docFooter)==null?void 0:y.prev)===!1&&!t.value.prev||t.value.prev===!1,m=((I=e.value.docFooter)==null?void 0:I.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((k=i[l-1])==null?void 0:k.docFooterText)??((S=i[l-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((E=i[l-1])==null?void 0:E.link)},next:m?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((N=i[l+1])==null?void 0:N.docFooterText)??((F=i[l+1])==null?void 0:F.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((C=i[l+1])==null?void 0:C.link)}}})}function zo(o,e){const t=new Set;return o.filter(n=>{const a=e(n);return t.has(a)?!1:t.add(a)})}const x=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.tag??(e.href?"a":"span")),n=L(()=>e.href&&xe.test(e.href)||e.target==="_blank");return(a,i)=>(s(),b(Q(t.value),{class:M(["VPLink",{link:a.href,"vp-external-link-icon":n.value,"no-icon":a.noIcon}]),href:a.href?r(je)(a.href):void 0,target:a.target??(n.value?"_blank":void 0),rel:a.rel??(n.value?"noreferrer":void 0)},{default:p(()=>[c(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ao={class:"VPLastUpdated"},Bo=["datetime"],Oo=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:n}=V(),a=L(()=>new Date(t.value.lastUpdated)),i=L(()=>a.value.toISOString()),l=H("");return te(()=>{$e(()=>{var d,m,y;l.value=new Intl.DateTimeFormat((m=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&m.forceLocale?n.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(a.value)})}),(d,m)=>{var y;return s(),u("p",Ao,[de(A(((y=r(e).lastUpdated)==null?void 0:y.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:i.value},A(l.value),9,Bo)])}}}),Fo=$(Oo,[["__scopeId","data-v-32a58613"]]),it=o=>(G("data-v-35768638"),o=o(),q(),o),Do={key:0,class:"VPDocFooter"},jo={key:0,class:"edit-info"},Uo={key:0,class:"edit-link"},Go=it(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),qo={key:1,class:"last-updated"},Wo={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ro=it(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Ko={class:"pager"},Jo=["innerHTML"],Yo=["innerHTML"],Xo={class:"pager"},Zo=["innerHTML"],Qo=["innerHTML"],xo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=V(),a=Ho(),i=Mo(),l=L(()=>e.value.editLink&&n.value.editLink!==!1),d=L(()=>t.value.lastUpdated),m=L(()=>l.value||d.value||i.value.prev||i.value.next);return(y,I)=>{var k,S,E,N;return m.value?(s(),u("footer",Do,[c(y.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(s(),u("div",jo,[l.value?(s(),u("div",Uo,[g(x,{class:"edit-link-button",href:r(a).url,"no-icon":!0},{default:p(()=>[Go,de(" "+A(r(a).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(s(),u("div",qo,[g(Fo)])):h("",!0)])):h("",!0),(k=r(i).prev)!=null&&k.link||(S=r(i).next)!=null&&S.link?(s(),u("nav",Wo,[Ro,v("div",Ko,[(E=r(i).prev)!=null&&E.link?(s(),b(x,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var F;return[v("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.prev)||"Previous page"},null,8,Jo),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,Yo)]}),_:1},8,["href"])):h("",!0)]),v("div",Xo,[(N=r(i).next)!=null&&N.link?(s(),b(x,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var F;return[v("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.next)||"Next page"},null,8,Zo),v("span",{class:"title",innerHTML:r(i).next.text},null,8,Qo)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),en=$(xo,[["__scopeId","data-v-35768638"]]),tn=o=>(G("data-v-4d316cbc"),o=o(),q(),o),on={class:"container"},nn=tn(()=>v("div",{class:"aside-curtain"},null,-1)),an={class:"aside-container"},sn={class:"aside-content"},rn={class:"content"},ln={class:"content-container"},cn={class:"main"},un=_({__name:"VPDoc",setup(o){const{theme:e}=V(),t=pe(),{hasSidebar:n,hasAside:a,leftAside:i}=oe(),l=L(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,m)=>{const y=le("Content");return s(),u("div",{class:M(["VPDoc",{"has-sidebar":r(n),"has-aside":r(a)}])},[c(d.$slots,"doc-top",{},void 0,!0),v("div",on,[r(a)?(s(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[nn,v("div",an,[v("div",sn,[g(Co,null,{"aside-top":p(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),v("div",rn,[v("div",ln,[c(d.$slots,"doc-before",{},void 0,!0),v("main",cn,[g(y,{class:M(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(en,null,{"doc-footer-before":p(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),dn=$(un,[["__scopeId","data-v-4d316cbc"]]),vn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.href&&xe.test(e.href)),n=L(()=>e.tag||(e.href?"a":"button"));return(a,i)=>(s(),b(Q(n.value),{class:M(["VPButton",[a.size,a.theme]]),href:a.href?r(je)(a.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:p(()=>[de(A(a.text),1)]),_:1},8,["class","href","target","rel"]))}}),pn=$(vn,[["__scopeId","data-v-70e9ece9"]]),mn=["src","alt"],fn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=le("VPImage",!0);return e.image?(s(),u(B,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",se({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(Be)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,mn)):(s(),u(B,{key:1},[g(n,se({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(n,se({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ke=$(fn,[["__scopeId","data-v-4d0b3a1f"]]),hn=o=>(G("data-v-b684e0c8"),o=o(),q(),o),_n={class:"container"},gn={class:"main"},bn={class:"heading"},kn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Ln={key:0,class:"actions"},Pn={key:0,class:"image"},Sn={class:"image-container"},Vn=hn(()=>v("div",{class:"image-bg"},null,-1)),wn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=Le("hero-image-slot-exists");return(t,n)=>(s(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[v("div",_n,[v("div",gn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[v("h1",bn,[t.name?(s(),u("span",{key:0,innerHTML:t.name,class:"name clip"},null,8,kn)):h("",!0),t.text?(s(),u("span",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):h("",!0)]),t.tagline?(s(),u("p",{key:0,innerHTML:t.tagline,class:"tagline"},null,8,yn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(s(),u("div",Ln,[(s(!0),u(B,null,W(t.actions,a=>(s(),u("div",{key:a.link,class:"action"},[g(pn,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link,target:a.target,rel:a.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(s(),u("div",Pn,[v("div",Sn,[Vn,c(t.$slots,"home-hero-image",{},()=>[t.image?(s(),b(ke,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Tn=$(wn,[["__scopeId","data-v-b684e0c8"]]),In=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,n)=>r(e).hero?(s(),b(Tn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Nn=o=>(G("data-v-8c30a0c0"),o=o(),q(),o),En={class:"box"},Cn={key:0,class:"icon"},Hn=["innerHTML"],Mn=["innerHTML"],zn=["innerHTML"],An={key:4,class:"link-text"},Bn={class:"link-text-value"},On=Nn(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Fn=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(s(),b(x,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:p(()=>[v("article",En,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",Cn,[g(ke,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),b(ke,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Hn)):h("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Mn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,zn)):h("",!0),e.linkText?(s(),u("div",An,[v("p",Bn,[de(A(e.linkText)+" ",1),On])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(Fn,[["__scopeId","data-v-8c30a0c0"]]),jn={key:0,class:"VPFeatures"},Un={class:"container"},Gn={class:"items"},qn=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=L(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,a)=>n.features?(s(),u("div",jn,[v("div",Un,[v("div",Gn,[(s(!0),u(B,null,W(n.features,i=>(s(),u("div",{key:i.title,class:M(["item",[t.value]])},[g(Dn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Wn=$(qn,[["__scopeId","data-v-7cef5655"]]),Rn=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,n)=>r(e).features?(s(),b(Wn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Kn=_({__name:"VPHomeContent",setup(o){const{width:e}=Et({initialWidth:0,includeScrollbar:!1});return(t,n)=>(s(),u("div",{class:"vp-doc container",style:et(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Jn=$(Kn,[["__scopeId","data-v-5377254e"]]),Yn=_({__name:"VPHome",setup(o){const{frontmatter:e,theme:t}=V();return(n,a)=>{const i=le("Content");return s(),u("div",{class:M(["VPHome",{"external-link-icon-enabled":r(t).externalLinkIcon}])},[c(n.$slots,"home-hero-before",{},void 0,!0),g(In,null,{"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(n.$slots,"home-hero-after",{},void 0,!0),c(n.$slots,"home-features-before",{},void 0,!0),g(Rn),c(n.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(s(),b(Jn,{key:0},{default:p(()=>[g(i)]),_:1})):(s(),b(i,{key:1}))],2)}}}),Xn=$(Yn,[["__scopeId","data-v-1bcd8668"]]),Zn={},Qn={class:"VPPage"};function xn(o,e){const t=le("Content");return s(),u("div",Qn,[c(o.$slots,"page-top"),g(t),c(o.$slots,"page-bottom")])}const ea=$(Zn,[["render",xn]]),ta=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=oe();return(a,i)=>(s(),u("div",{class:M(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(a.$slots,"not-found",{key:0},()=>[g(io)],!0):r(t).layout==="page"?(s(),b(ea,{key:1},{"page-top":p(()=>[c(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(s(),b(Xn,{key:2},{"home-hero-before":p(()=>[c(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(s(),b(Q(r(t).layout),{key:3})):(s(),b(dn,{key:4},{"doc-top":p(()=>[c(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),oa=$(ta,[["__scopeId","data-v-8d143afd"]]),na={class:"container"},aa=["innerHTML"],sa=["innerHTML"],ra=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=oe();return(a,i)=>r(e).footer&&r(t).footer!==!1?(s(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(n)}])},[v("div",na,[r(e).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,aa)):h("",!0),r(e).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,sa)):h("",!0)])],2)):h("",!0)}}),ia=$(ra,[["__scopeId","data-v-45624e61"]]);function la(){const{theme:o,frontmatter:e}=V(),t=Qe([]),n=L(()=>t.value.length>0);return ye(()=>{t.value=Ue(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const ca=o=>(G("data-v-bd1fb31f"),o=o(),q(),o),ua={class:"menu-text"},da=ca(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),va={class:"header"},pa={class:"outline"},ma=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),n=H(!1),a=H(0),i=H(),l=H();function d(k){var S;(S=i.value)!=null&&S.contains(k.target)||(n.value=!1)}ee(n,k=>{if(k){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),Ce("Escape",()=>{n.value=!1}),ye(()=>{n.value=!1});function m(){n.value=!n.value,a.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function y(k){k.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),De(()=>{n.value=!1}))}function I(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,S)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:et({"--vp-vh":a.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(s(),u("button",{key:0,onClick:m,class:M({open:n.value})},[v("span",ua,A(r(st)(r(t))),1),da],2)):(s(),u("button",{key:1,onClick:I},A(r(t).returnToTopLabel||"Return to top"),1)),g(Ae,{name:"flyout"},{default:p(()=>[n.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:y},[v("div",va,[v("a",{class:"top-link",href:"#",onClick:I},A(r(t).returnToTopLabel||"Return to top"),1)]),v("div",pa,[g(rt,{headers:k.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),fa=$(ma,[["__scopeId","data-v-bd1fb31f"]]),ha=o=>(G("data-v-3eeb2970"),o=o(),q(),o),_a={class:"container"},ga=["aria-expanded"],ba=ha(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),ka={class:"menu-text"},$a=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=oe(),{headers:a}=la(),{y:i}=tt(),l=H(0);te(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ye(()=>{a.value=Ue(t.value.outline??e.value.outline)});const d=L(()=>a.value.length===0),m=L(()=>d.value&&!n.value),y=L(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:d.value,fixed:m.value}));return(I,k)=>r(t).layout!=="home"&&(!m.value||r(i)>=l.value)?(s(),u("div",{key:0,class:M(y.value)},[v("div",_a,[r(n)?(s(),u("button",{key:0,class:"menu","aria-expanded":I.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=S=>I.$emit("open-menu"))},[ba,v("span",ka,A(r(e).sidebarMenuLabel||"Menu"),1)],8,ga)):h("",!0),g(fa,{headers:r(a),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ya=$($a,[["__scopeId","data-v-3eeb2970"]]);function La(){const o=H(!1);function e(){o.value=!0,window.addEventListener("resize",a)}function t(){o.value=!1,window.removeEventListener("resize",a)}function n(){o.value?t():e()}function a(){window.outerWidth>=768&&t()}const i=pe();return ee(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const Pa={},Sa={class:"VPSwitch",type:"button",role:"switch"},Va={class:"check"},wa={key:0,class:"icon"};function Ta(o,e){return s(),u("button",Sa,[v("span",Va,[o.$slots.default?(s(),u("span",wa,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ia=$(Pa,[["render",Ta],["__scopeId","data-v-4ec3b2fe"]]),lt=o=>(G("data-v-ae950ac5"),o=o(),q(),o),Na=lt(()=>v("span",{class:"vpi-sun sun"},null,-1)),Ea=lt(()=>v("span",{class:"vpi-moon moon"},null,-1)),Ca=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),n=Le("toggle-appearance",()=>{e.value=!e.value}),a=H("");return Fe(()=>{a.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(s(),b(Ia,{title:a.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:p(()=>[Na,Ea]),_:1},8,["title","aria-checked","onClick"]))}}),Ge=$(Ca,[["__scopeId","data-v-ae950ac5"]]),Ha={key:0,class:"VPNavBarAppearance"},Ma=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",Ha,[g(Ge)])):h("",!0)}}),za=$(Ma,[["__scopeId","data-v-764c0058"]]),qe=H();let ct=!1,Ne=0;function Aa(o){const e=H(!1);if(Pe){!ct&&Ba(),Ne++;const t=ee(qe,n=>{var a,i,l;n===o.el.value||(a=o.el.value)!=null&&a.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});Oe(()=>{t(),Ne--,Ne||Oa()})}return Ct(e)}function Ba(){document.addEventListener("focusin",ut),ct=!0,qe.value=document.activeElement}function Oa(){document.removeEventListener("focusin",ut)}function ut(){qe.value=document.activeElement}const Fa={class:"VPMenuLink"},Da=["innerHTML"],ja=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,n)=>(s(),u("div",Fa,[g(x,{class:M({active:r(ie)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,Da)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),Se=$(ja,[["__scopeId","data-v-acee1e57"]]),Ua={class:"VPMenuGroup"},Ga={key:0,class:"title"},qa=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",Ua,[e.text?(s(),u("p",Ga,A(e.text),1)):h("",!0),(s(!0),u(B,null,W(e.items,n=>(s(),u(B,null,["link"in n?(s(),b(Se,{key:0,item:n},null,8,["item"])):h("",!0)],64))),256))]))}}),Wa=$(qa,[["__scopeId","data-v-9e18ca71"]]),Ra={class:"VPMenu"},Ka={key:0,class:"items"},Ja=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(s(),u("div",Ra,[e.items?(s(),u("div",Ka,[(s(!0),u(B,null,W(e.items,n=>(s(),u(B,{key:JSON.stringify(n)},["link"in n?(s(),b(Se,{key:0,item:n},null,8,["item"])):"component"in n?(s(),b(Q(n.component),se({key:1,ref_for:!0},n.props),null,16)):(s(),b(Wa,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Ya=$(Ja,[["__scopeId","data-v-3e022afb"]]),Xa=o=>(G("data-v-95325d79"),o=o(),q(),o),Za=["aria-expanded","aria-label"],Qa={key:0,class:"text"},xa=["innerHTML"],es=Xa(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),ts={key:1,class:"vpi-more-horizontal icon"},os={class:"menu"},ns=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=H(!1),t=H();Aa({el:t,onBlur:n});function n(){e.value=!1}return(a,i)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":a.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[a.button||a.icon?(s(),u("span",Qa,[a.icon?(s(),u("span",{key:0,class:M([a.icon,"option-icon"])},null,2)):h("",!0),a.button?(s(),u("span",{key:1,innerHTML:a.button},null,8,xa)):h("",!0),es])):(s(),u("span",ts))],8,Za),v("div",os,[g(Ya,{items:a.items},{default:p(()=>[c(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),We=$(ns,[["__scopeId","data-v-95325d79"]]),as=["href","aria-label","innerHTML"],ss=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=H();te(async()=>{var i;await De();const a=(i=t.value)==null?void 0:i.children[0];a instanceof HTMLElement&&a.className.startsWith("vpi-social-")&&(getComputedStyle(a).maskImage||getComputedStyle(a).webkitMaskImage)==="none"&&a.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const n=L(()=>typeof e.icon=="object"?e.icon.svg:``);return(a,i)=>(s(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:a.link,"aria-label":a.ariaLabel??(typeof a.icon=="string"?a.icon:""),target:"_blank",rel:"noopener",innerHTML:n.value},null,8,as))}}),rs=$(ss,[["__scopeId","data-v-71029e87"]]),is={class:"VPSocialLinks"},ls=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(s(),u("div",is,[(s(!0),u(B,null,W(e.links,({link:n,icon:a,ariaLabel:i})=>(s(),b(rs,{key:n,icon:a,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=$(ls,[["__scopeId","data-v-c9b9e435"]]),cs={key:0,class:"group translations"},us={class:"trans-title"},ds={key:1,class:"group"},vs={class:"item appearance"},ps={class:"label"},ms={class:"appearance-action"},fs={key:2,class:"group"},hs={class:"item social-links"},_s=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:a}=me({correspondingLink:!0}),i=L(()=>n.value.length&&a.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(s(),b(We,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(n).length&&r(a).label?(s(),u("div",cs,[v("p",us,A(r(a).label),1),(s(!0),u(B,null,W(r(n),m=>(s(),b(Se,{key:m.link,item:m},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",ds,[v("div",vs,[v("p",ps,A(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",ms,[g(Ge)])])])):h("",!0),r(t).socialLinks?(s(),u("div",fs,[v("div",hs,[g(Re,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),gs=$(_s,[["__scopeId","data-v-cc85dc96"]]),bs=o=>(G("data-v-e08ccaba"),o=o(),q(),o),ks=["aria-expanded"],$s=bs(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),ys=[$s],Ls=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(s(),u("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},ys,10,ks))}}),Ps=$(Ls,[["__scopeId","data-v-e08ccaba"]]),Ss=["innerHTML"],Vs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,n)=>(s(),b(x,{class:M({VPNavBarMenuLink:!0,active:r(ie)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,Ss)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ws=$(Vs,[["__scopeId","data-v-bbf7f74d"]]),Ts=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),n=i=>"component"in i?!1:"link"in i?ie(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),a=L(()=>n(e.item));return(i,l)=>(s(),b(We,{class:M({VPNavBarMenuGroup:!0,active:r(ie)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||a.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Is=o=>(G("data-v-d53bf4df"),o=o(),q(),o),Ns={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Es=Is(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Cs=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,n)=>r(e).nav?(s(),u("nav",Ns,[Es,(s(!0),u(B,null,W(r(e).nav,a=>(s(),u(B,{key:JSON.stringify(a)},["link"in a?(s(),b(ws,{key:0,item:a},null,8,["item"])):"component"in a?(s(),b(Q(a.component),se({key:1,ref_for:!0},a.props),null,16)):(s(),b(Ts,{key:2,item:a},null,8,["item"]))],64))),128))])):h("",!0)}}),Hs=$(Cs,[["__scopeId","data-v-d53bf4df"]]);function Ms(o){const{localeIndex:e,theme:t}=V();function n(a){var N,F,C;const i=a.split("."),l=(N=t.value.search)==null?void 0:N.options,d=l&&typeof l=="object",m=d&&((C=(F=l.locales)==null?void 0:F[e.value])==null?void 0:C.translations)||null,y=d&&l.translations||null;let I=m,k=y,S=o;const E=i.pop();for(const Y of i){let X=null;const D=S==null?void 0:S[Y];D&&(X=S=D);const ne=k==null?void 0:k[Y];ne&&(X=k=ne);const Z=I==null?void 0:I[Y];Z&&(X=I=Z),D||(S=X),ne||(k=X),Z||(I=X)}return(I==null?void 0:I[E])??(k==null?void 0:k[E])??(S==null?void 0:S[E])??""}return n}const zs=["aria-label"],As={class:"DocSearch-Button-Container"},Bs=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Os={class:"DocSearch-Button-Placeholder"},Fs=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ze=_({__name:"VPNavBarSearchButton",setup(o){const t=Ms({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,a)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",As,[Bs,v("span",Os,A(r(t)("button.buttonText")),1)]),Fs],8,zs))}}),Ds={class:"VPNavBarSearch"},js={id:"local-search"},Us={key:1,id:"docsearch"},Gs=_({__name:"VPNavBarSearch",setup(o){const e=Ht(()=>Mt(()=>import("./VPLocalSearchBox.MfGJa_gn.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=V(),a=H(!1),i=H(!1);te(()=>{});function l(){a.value||(a.value=!0,setTimeout(d,16))}function d(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function m(k){const S=k.target,E=S.tagName;return S.isContentEditable||E==="INPUT"||E==="SELECT"||E==="TEXTAREA"}const y=H(!1);Ce("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),y.value=!0)}),Ce("/",k=>{m(k)||(k.preventDefault(),y.value=!0)});const I="local";return(k,S)=>{var E;return s(),u("div",Ds,[r(I)==="local"?(s(),u(B,{key:0},[y.value?(s(),b(r(e),{key:0,onClose:S[0]||(S[0]=N=>y.value=!1)})):h("",!0),v("div",js,[g(Ze,{onClick:S[1]||(S[1]=N=>y.value=!0)})])],64)):r(I)==="algolia"?(s(),u(B,{key:1},[a.value?(s(),b(r(t),{key:0,algolia:((E=r(n).search)==null?void 0:E.options)??r(n).algolia,onVnodeBeforeMount:S[2]||(S[2]=N=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(s(),u("div",Us,[g(Ze,{onClick:l})]))],64)):h("",!0)])}}}),qs=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(s(),b(Re,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ws=$(qs,[["__scopeId","data-v-d6e28fe5"]]),Rs=["href","rel","target"],Ks=["innerHTML"],Js={key:2},Ys=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:n}=oe(),{currentLang:a}=me(),i=L(()=>{var m;return typeof t.value.logoLink=="string"?t.value.logoLink:(m=t.value.logoLink)==null?void 0:m.link}),l=L(()=>{var m;return typeof t.value.logoLink=="string"||(m=t.value.logoLink)==null?void 0:m.rel}),d=L(()=>{var m;return typeof t.value.logoLink=="string"||(m=t.value.logoLink)==null?void 0:m.target});return(m,y)=>(s(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(n)}])},[v("a",{class:"title",href:i.value??r(je)(r(a).link),rel:l.value,target:d.value},[c(m.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(s(),b(ke,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(s(),u("span",{key:1,innerHTML:r(t).siteTitle},null,8,Ks)):r(t).siteTitle===void 0?(s(),u("span",Js,A(r(e).title),1)):h("",!0),c(m.$slots,"nav-bar-title-after",{},void 0,!0)],8,Rs)],2))}}),Xs=$(Ys,[["__scopeId","data-v-211643ab"]]),Zs={class:"items"},Qs={class:"title"},xs=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:n}=me({correspondingLink:!0});return(a,i)=>r(t).length&&r(n).label?(s(),b(We,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:p(()=>[v("div",Zs,[v("p",Qs,A(r(n).label),1),(s(!0),u(B,null,W(r(t),l=>(s(),b(Se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),er=$(xs,[["__scopeId","data-v-9d8c2f62"]]),tr=o=>(G("data-v-511c2cc9"),o=o(),q(),o),or={class:"wrapper"},nr={class:"container"},ar={class:"title"},sr={class:"content"},rr={class:"content-body"},ir=tr(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),lr=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=tt(),{hasSidebar:n}=oe(),{frontmatter:a}=V(),i=H({});return Fe(()=>{i.value={"has-sidebar":n.value,home:a.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(s(),u("div",{class:M(["VPNavBar",i.value])},[v("div",or,[v("div",nr,[v("div",ar,[g(Xs,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",sr,[v("div",rr,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),g(Gs,{class:"search"}),g(Hs,{class:"menu"}),g(er,{class:"translations"}),g(za,{class:"appearance"}),g(Ws,{class:"social-links"}),g(gs,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),g(Ps,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=m=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),ir],2))}}),cr=$(lr,[["__scopeId","data-v-511c2cc9"]]),ur={key:0,class:"VPNavScreenAppearance"},dr={class:"text"},vr=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(n,a)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",ur,[v("p",dr,A(r(t).darkModeSwitchLabel||"Appearance"),1),g(Ge)])):h("",!0)}}),pr=$(vr,[["__scopeId","data-v-15ad096a"]]),mr=["innerHTML"],fr=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),b(x,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,mr)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),hr=$(fr,[["__scopeId","data-v-4fb78c30"]]),_r=["innerHTML"],gr=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),b(x,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,_r)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),dt=$(gr,[["__scopeId","data-v-64059e46"]]),br={class:"VPNavScreenMenuGroupSection"},kr={key:0,class:"title"},$r=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",br,[e.text?(s(),u("p",kr,A(e.text),1)):h("",!0),(s(!0),u(B,null,W(e.items,n=>(s(),b(dt,{key:n.text,item:n},null,8,["item"]))),128))]))}}),yr=$($r,[["__scopeId","data-v-52a35d42"]]),Lr=o=>(G("data-v-1e2bb94d"),o=o(),q(),o),Pr=["aria-controls","aria-expanded"],Sr=["innerHTML"],Vr=Lr(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),wr=["id"],Tr={key:0,class:"item"},Ir={key:1,class:"item"},Nr={key:2,class:"group"},Er=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=H(!1),n=L(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function a(){t.value=!t.value}return(i,l)=>(s(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:a},[v("span",{class:"button-text",innerHTML:i.text},null,8,Sr),Vr],8,Pr),v("div",{id:n.value,class:"items"},[(s(!0),u(B,null,W(i.items,d=>(s(),u(B,{key:JSON.stringify(d)},["link"in d?(s(),u("div",Tr,[g(dt,{item:d},null,8,["item"])])):"component"in d?(s(),u("div",Ir,[(s(),b(Q(d.component),se({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(s(),u("div",Nr,[g(yr,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,wr)],2))}}),Cr=$(Er,[["__scopeId","data-v-1e2bb94d"]]),Hr={key:0,class:"VPNavScreenMenu"},Mr=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,n)=>r(e).nav?(s(),u("nav",Hr,[(s(!0),u(B,null,W(r(e).nav,a=>(s(),u(B,{key:JSON.stringify(a)},["link"in a?(s(),b(hr,{key:0,item:a},null,8,["item"])):"component"in a?(s(),b(Q(a.component),se({key:1,ref_for:!0},a.props,{"screen-menu":""}),null,16)):(s(),b(Cr,{key:2,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),zr=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(s(),b(Re,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),vt=o=>(G("data-v-da51982f"),o=o(),q(),o),Ar=vt(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),Br=vt(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Or={class:"list"},Fr=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=me({correspondingLink:!0}),n=H(!1);function a(){n.value=!n.value}return(i,l)=>r(e).length&&r(t).label?(s(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:n.value}])},[v("button",{class:"title",onClick:a},[Ar,de(" "+A(r(t).label)+" ",1),Br]),v("ul",Or,[(s(!0),u(B,null,W(r(e),d=>(s(),u("li",{key:d.link,class:"item"},[g(x,{class:"link",href:d.link},{default:p(()=>[de(A(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),Dr=$(Fr,[["__scopeId","data-v-da51982f"]]),jr={class:"container"},Ur=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=H(null),t=ot(Pe?document.body:null);return(n,a)=>(s(),b(Ae,{name:"fade",onEnter:a[0]||(a[0]=i=>t.value=!0),onAfterLeave:a[1]||(a[1]=i=>t.value=!1)},{default:p(()=>[n.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",jr,[c(n.$slots,"nav-screen-content-before",{},void 0,!0),g(Mr,{class:"menu"}),g(Dr,{class:"translations"}),g(pr,{class:"appearance"}),g(zr,{class:"social-links"}),c(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),Gr=$(Ur,[["__scopeId","data-v-9cc6cbea"]]),qr={key:0,class:"VPNav"},Wr=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=La(),{frontmatter:a}=V(),i=L(()=>a.value.navbar!==!1);return nt("close-screen",t),$e(()=>{Pe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(s(),u("header",qr,[g(cr,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g(Gr,{open:r(e)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Rr=$(Wr,[["__scopeId","data-v-1f7b0f5c"]]),pt=o=>(G("data-v-6092ddf2"),o=o(),q(),o),Kr=["role","tabindex"],Jr=pt(()=>v("div",{class:"indicator"},null,-1)),Yr=pt(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Xr=[Yr],Zr={key:1,class:"items"},Qr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:a,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:m}=vo(L(()=>e.item)),y=L(()=>d.value?"section":"div"),I=L(()=>a.value?"a":"div"),k=L(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),S=L(()=>a.value?void 0:"button"),E=L(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":a.value},{"is-active":i.value},{"has-active":l.value}]);function N(C){"key"in C&&C.key!=="Enter"||!e.item.link&&m()}function F(){e.item.link&&m()}return(C,Y)=>{const X=le("VPSidebarItem",!0);return s(),b(Q(y.value),{class:M(["VPSidebarItem",E.value])},{default:p(()=>[C.item.text?(s(),u("div",se({key:0,class:"item",role:S.value},zt(C.item.items?{click:N,keydown:N}:{},!0),{tabindex:C.item.items&&0}),[Jr,C.item.link?(s(),b(x,{key:0,tag:I.value,class:"link",href:C.item.link,rel:C.item.rel,target:C.item.target},{default:p(()=>[(s(),b(Q(k.value),{class:"text",innerHTML:C.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),b(Q(k.value),{key:1,class:"text",innerHTML:C.item.text},null,8,["innerHTML"])),C.item.collapsed!=null&&C.item.items&&C.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:F,onKeydown:At(F,["enter"]),tabindex:"0"},Xr,32)):h("",!0)],16,Kr)):h("",!0),C.item.items&&C.item.items.length?(s(),u("div",Zr,[C.depth<5?(s(!0),u(B,{key:0},W(C.item.items,D=>(s(),b(X,{key:D.text,item:D,depth:C.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),xr=$(Qr,[["__scopeId","data-v-6092ddf2"]]),ei=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=H(!0);let t=null;return te(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Bt(()=>{t!=null&&(clearTimeout(t),t=null)}),(n,a)=>(s(!0),u(B,null,W(n.items,i=>(s(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[g(xr,{item:i,depth:0},null,8,["item"])],2))),128))}}),ti=$(ei,[["__scopeId","data-v-7eb7a422"]]),mt=o=>(G("data-v-130e406e"),o=o(),q(),o),oi=mt(()=>v("div",{class:"curtain"},null,-1)),ni={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ai=mt(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),si=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=oe(),n=o,a=H(null),i=ot(Pe?document.body:null);ee([n,a],()=>{var d;n.open?(i.value=!0,(d=a.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=H(0);return ee(e,()=>{l.value+=1},{deep:!0}),(d,m)=>r(t)?(s(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:a,onClick:m[0]||(m[0]=Ot(()=>{},["stop"]))},[oi,v("nav",ni,[ai,c(d.$slots,"sidebar-nav-before",{},void 0,!0),(s(),b(ti,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),ri=$(si,[["__scopeId","data-v-130e406e"]]),ii=_({__name:"VPSkipLink",setup(o){const{theme:e}=V(),t=pe(),n=H();ee(()=>t.path,()=>n.value.focus());function a({target:i}){const l=document.getElementById(decodeURIComponent(i.hash).slice(1));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(i,l)=>(s(),u(B,null,[v("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a},A(r(e).skipToContentLabel||"Skip to content"),1)],64))}}),li=$(ii,[["__scopeId","data-v-5d3e946a"]]),ci=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=oe(),a=pe();ee(()=>a.path,n),uo(e,n);const{frontmatter:i}=V(),l=Ft(),d=L(()=>!!l["home-hero-image"]);return nt("hero-image-slot-exists",d),(m,y)=>{const I=le("Content");return r(i).layout!==!1?(s(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[c(m.$slots,"layout-top",{},void 0,!0),g(li),g(Yt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),g(Rr,null,{"nav-bar-title-before":p(()=>[c(m.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(m.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(m.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(m.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(m.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(m.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(ya,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),g(ri,{open:r(e)},{"sidebar-nav-before":p(()=>[c(m.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(m.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(oa,null,{"page-top":p(()=>[c(m.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(m.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(m.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(m.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(m.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(m.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(m.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(m.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(m.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(m.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(m.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(m.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(m.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(m.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(m.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(m.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(m.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(m.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(m.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(m.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(m.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(m.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(m.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(ia),c(m.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),b(I,{key:1}))}}}),ui=$(ci,[["__scopeId","data-v-fbfa64bf"]]),di={Layout:ui},vi={class:"ad"},pi=["src","onClick"],mi={__name:"layout",setup(o){const{Layout:e}=di,t=Dt({list:[],toLink(n){n.link?window.open(n.link):window.open(`https://cool-js.com/ad/${n.id}`)},get(){fetch("https://service.cool-js.com/api/app/info/ad/list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:1})}).then(n=>n.json()).then(n=>{this.list=n.data})}});return te(()=>{t.get()}),(n,a)=>(s(),b(r(e),null,{"sidebar-nav-before":p(()=>[v("div",vi,[(s(!0),u(B,null,W(t.list,i=>(s(),u("img",{key:i,src:i.pic,onClick:l=>t.toLink(i)},null,8,pi))),128))])]),_:1}))}},fi=$(mi,[["__scopeId","data-v-96d1ba1f"]]),_i={Layout:fi,setup(){const o=pe(),e=()=>{new qt("[data-zoomable]",{background:"var(--vp-c-bg)"})};te(()=>{e()}),ee(()=>o.path,()=>De(()=>e()))}};export{_i as R,Ms as c,V as u}; diff --git a/.vitepress/dist/assets/src_guide_i18n.md.CMvzuL3k.js b/.vitepress/dist/assets/src_guide_i18n.md.D4ikqxxm.js similarity index 98% rename from .vitepress/dist/assets/src_guide_i18n.md.CMvzuL3k.js rename to .vitepress/dist/assets/src_guide_i18n.md.D4ikqxxm.js index 76dafc0..3b35a70 100644 --- a/.vitepress/dist/assets/src_guide_i18n.md.CMvzuL3k.js +++ b/.vitepress/dist/assets/src_guide_i18n.md.D4ikqxxm.js @@ -1,4 +1,4 @@ -import{_ as i,a as l,o as a,aj as e}from"./chunks/framework.BjhQB2K5.js";const _=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744512083000}'),s={name:"src/guide/i18n.md"},t=e(`

国际化多语言(v8.0新增) ​

i18n(Internationalization 的缩写,首末字符 i 和 n 之间有 18 个字母)是软件国际化的标准缩写。它是指让软件支持多种语言和地区的功能,使得同一个软件可以面向不同语言地区的用户,显示相应的语言界面。

随着互联网的发展,越来越多的企业开始走向国际化,多语言的支持已经成为了一个必备的功能。Cool Admin 也对此做了支持。

实现 ​

多语言是需要前后端共同支持的,前端请前往前端文档查看

与其它实现方案不同的是,Cool Admin前后端的多语言都是基于大模型翻译的(比传统机翻更加准确),无需手动配置,只要开启就能自动翻译,而且不需要改变任何原有代码。

以前该怎么写还是怎么写!!!

使用 ​

1、引入插件 在官网下载并安装国际化多语言插件

安装后,框架就会自动扫描并翻译成对应的语言。

当你在控制台看到这样的输出,则代表成功

console
// 翻译中
+import{_ as i,a as l,o as a,aj as e}from"./chunks/framework.BjhQB2K5.js";const _=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744512308000}'),s={name:"src/guide/i18n.md"},t=e(`

国际化多语言(v8.0新增) ​

i18n(Internationalization 的缩写,首末字符 i 和 n 之间有 18 个字母)是软件国际化的标准缩写。它是指让软件支持多种语言和地区的功能,使得同一个软件可以面向不同语言地区的用户,显示相应的语言界面。

随着互联网的发展,越来越多的企业开始走向国际化,多语言的支持已经成为了一个必备的功能。Cool Admin 也对此做了支持。

实现 ​

多语言是需要前后端共同支持的,前端请前往前端文档查看

与其它实现方案不同的是,Cool Admin前后端的多语言都是基于大模型翻译的(比传统机翻更加准确),无需手动配置,只要开启就能自动翻译,而且不需要改变任何原有代码。

以前该怎么写还是怎么写!!!

使用 ​

1、引入插件 在官网下载并安装国际化多语言插件

安装后,框架就会自动扫描并翻译成对应的语言。

当你在控制台看到这样的输出,则代表成功

console
// 翻译中
 / i18n translate...
 // 翻译成功
 ✅国际化 翻译 成功!!!

2、实现原理 只要开启并配置了国际化,在开发环境下重启,框架就会自动扫描菜单、字典、异常消息(CoolPreconditions.check...),并调用大模型对其进行翻译

翻译完成之后会默认在路径assets/i18n下生成对应种类的语言文件,如果这个文件存在

则该种类的国际化将不会进行翻译,也就是后续你有新增相关的内容,要让其再次翻译,得对应地删除相应的文件。

3、语言配置对照表

  • 简体中文(zh-cn)
  • 美国英语(en)
  • 阿塞拜疆语(az)
  • 德语(de)
  • 葡萄牙语(pt)
  • 西班牙语(es)
  • 丹麦语(da)
  • 法语(fr)
  • 挪威语(nb-NO)
  • 繁体中文(zh-tw)
  • 意大利语(it)
  • 韩语(ko)
  • 日语(ja)
  • 荷兰语(nl)
  • 越南语(vi)
  • 俄语(ru)
  • 土耳其语(tr)
  • 巴西葡萄牙语(pt-br)
  • 波斯语(fa)
  • 泰语(th)
  • 印度尼西亚语(id)
  • 保加利亚语(bg)
  • 普什图语(pa)
  • 波兰语(pl)
  • 芬兰语(fi)
  • 瑞典语(sv)
  • 希腊语(el)
  • 斯洛伐克语(sk)
  • 加泰罗尼亚语(ca)
  • 捷克语(cs)
  • 乌克兰语(uk)
  • 土库曼语(tk)
  • 泰米尔语(ta)
  • 拉脱维亚语(lv)
  • 南非荷兰语(af)
  • 爱沙尼亚语(et)
  • 斯洛文尼亚语(sl)
  • 阿拉伯语(ar)
  • 希伯来语(he)
  • 立陶宛语(lt)
  • 蒙古语(mn)
  • 哈萨克语(kk)
  • 匈牙利语(hu)
  • 罗马尼亚语(ro)
  • 库尔德语(ku)
  • 库尔德语 (ckb)
  • 维吾尔语 (ug-cn)
  • 高棉语 (km)
  • 塞尔维亚语 (sr)
  • 巴斯克语 (eu)
  • 吉尔吉斯语 (ky)
  • 亚美尼亚语 (hy-am)
  • 克罗地亚语(hr)
  • 世界语 (eo)
  • 孟加拉语 (bn)
  • 马来语 (ms)
`,17),n=[t];function r(p,o,c,h,d,k){return a(),l("div",null,n)}const m=i(s,[["render",r]]);export{_ as __pageData,m as default}; diff --git a/.vitepress/dist/assets/src_guide_i18n.md.CMvzuL3k.lean.js b/.vitepress/dist/assets/src_guide_i18n.md.D4ikqxxm.lean.js similarity index 85% rename from .vitepress/dist/assets/src_guide_i18n.md.CMvzuL3k.lean.js rename to .vitepress/dist/assets/src_guide_i18n.md.D4ikqxxm.lean.js index 39a8fb6..c115966 100644 --- a/.vitepress/dist/assets/src_guide_i18n.md.CMvzuL3k.lean.js +++ b/.vitepress/dist/assets/src_guide_i18n.md.D4ikqxxm.lean.js @@ -1 +1 @@ -import{_ as i,a as l,o as a,aj as e}from"./chunks/framework.BjhQB2K5.js";const _=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744512083000}'),s={name:"src/guide/i18n.md"},t=e("",17),n=[t];function r(p,o,c,h,d,k){return a(),l("div",null,n)}const m=i(s,[["render",r]]);export{_ as __pageData,m as default}; +import{_ as i,a as l,o as a,aj as e}from"./chunks/framework.BjhQB2K5.js";const _=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744512308000}'),s={name:"src/guide/i18n.md"},t=e("",17),n=[t];function r(p,o,c,h,d,k){return a(),l("div",null,n)}const m=i(s,[["render",r]]);export{_ as __pageData,m as default}; diff --git a/.vitepress/dist/hashmap.json b/.vitepress/dist/hashmap.json index 2dc5a70..0c1a3f0 100644 --- a/.vitepress/dist/hashmap.json +++ b/.vitepress/dist/hashmap.json @@ -1 +1 @@ -{"index.md":"Dsd7aigo","readme.md":"Rd2D_BZq","src_about_index.md":"-unb0L2u","src_guide_ai.md":"aIl2n3N7","src_guide_cache.md":"DYexoE7d","src_guide_controller.md":"ChJ_NED0","src_guide_db.md":"CH-r16iF","src_guide_deploy.md":"CVc1dXEU","src_guide_dev.md":"DM1UjwvK","src_guide_dir.md":"Bywk12Mo","src_guide_exception.md":"1HCd76m1","src_guide_flow.md":"DMDsOCkF","src_guide_i18n.md":"CMvzuL3k","src_guide_initdata.md":"BhdPvNop","src_guide_lock.md":"C8JTDlsP","src_guide_norepeatsubmit.md":"CvFjLc1r","src_guide_plugin.md":"DSQp6REO","src_guide_quick.md":"g_DIbvkh","src_guide_recordlog.md":"B0w4IZH7","src_guide_security.md":"BFmZQZP9","src_guide_service.md":"CokY9neI","src_guide_swagger.md":"CCfA6TBH","src_guide_tenant.md":"CP_z92JB","src_guide_uniqueidgen.md":"BNiKKfQz","src_guide_upload.md":"D-dQqFKU","src_introduce_index.md":"BaUz4Xtw","src_introduce_show.md":"Ck0DuCIX","src_introduce_src.md":"UlNmfnNt","src_question_common.md":"Caojqqth","src_todo_plan.md":"pGnBM6_r","src_todo_update.md":"DUbMUQW8"} +{"index.md":"Dsd7aigo","readme.md":"Rd2D_BZq","src_about_index.md":"-unb0L2u","src_guide_ai.md":"aIl2n3N7","src_guide_cache.md":"DYexoE7d","src_guide_controller.md":"ChJ_NED0","src_guide_db.md":"CH-r16iF","src_guide_deploy.md":"CVc1dXEU","src_guide_dev.md":"DM1UjwvK","src_guide_dir.md":"Bywk12Mo","src_guide_exception.md":"1HCd76m1","src_guide_flow.md":"DMDsOCkF","src_guide_i18n.md":"D4ikqxxm","src_guide_initdata.md":"BhdPvNop","src_guide_lock.md":"C8JTDlsP","src_guide_norepeatsubmit.md":"CvFjLc1r","src_guide_plugin.md":"DSQp6REO","src_guide_quick.md":"g_DIbvkh","src_guide_recordlog.md":"B0w4IZH7","src_guide_security.md":"BFmZQZP9","src_guide_service.md":"CokY9neI","src_guide_swagger.md":"CCfA6TBH","src_guide_tenant.md":"CP_z92JB","src_guide_uniqueidgen.md":"BNiKKfQz","src_guide_upload.md":"D-dQqFKU","src_introduce_index.md":"BaUz4Xtw","src_introduce_show.md":"Ck0DuCIX","src_introduce_src.md":"UlNmfnNt","src_question_common.md":"Caojqqth","src_todo_plan.md":"pGnBM6_r","src_todo_update.md":"DUbMUQW8"} diff --git a/.vitepress/dist/index.html b/.vitepress/dist/index.html index c8d6243..bdfde1f 100644 --- a/.vitepress/dist/index.html +++ b/.vitepress/dist/index.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

Cool Admin(Java版)一个很酷的后台管理系统开发框架

开源免费、Ai编码、流程编排、扩展插件、模块化

cool-admin
- + \ No newline at end of file diff --git a/.vitepress/dist/src/about/index.html b/.vitepress/dist/src/about/index.html index e76963c..c03734f 100644 --- a/.vitepress/dist/src/about/index.html +++ b/.vitepress/dist/src/about/index.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

交流合作 ​

如果我们的项目对你有用,欢迎加入我们大家庭一起讨论,共创一些美好的事情。

微信 ​

扫一扫加入微信开发交流群

抖音 ​

主要是做一些技术教程、技术分享、框架更新、插件分享等内容。你可以在这边了解到一些关于我们框架的最新动态,还可以了解到一些前沿的技术,特别是跟 Ai 相关的,有兴趣的可以关注我们。

B 站 ​

COOL 团队哔哩哔哩官方账户

公众号 ​

COOL 的一些最新资讯、技术分享、框架更新、插件分享等

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/ai.html b/.vitepress/dist/src/guide/ai.html index 41351b8..e853e34 100644 --- a/.vitepress/dist/src/guide/ai.html +++ b/.vitepress/dist/src/guide/ai.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/cache.html b/.vitepress/dist/src/guide/cache.html index 13aa1e5..d24ef0d 100644 --- a/.vitepress/dist/src/guide/cache.html +++ b/.vitepress/dist/src/guide/cache.html @@ -9,9 +9,9 @@ - + - + @@ -67,7 +67,7 @@ return JSONUtil.parseObj(result).get("result"); }); }
- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/controller.html b/.vitepress/dist/src/guide/controller.html index 4f64656..7995183 100644 --- a/.vitepress/dist/src/guide/controller.html +++ b/.vitepress/dist/src/guide/controller.html @@ -9,9 +9,9 @@ - + - + @@ -138,7 +138,7 @@ return info; } } - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/db.html b/.vitepress/dist/src/guide/db.html index c6f28b0..37c7a8b 100644 --- a/.vitepress/dist/src/guide/db.html +++ b/.vitepress/dist/src/guide/db.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

数据库 ​

Cool Admin 集成了比 Mybatis-Plus 更加强大的,Mybatis-Flex,详细用法请查看 Mybatis-Flex 官网文档

主要特点;

  • 更轻量:除了 MyBatis 本身,再无任何第三方依赖,因此会带来更高的自主性、把控性和稳定性。在任何一个系统中,依赖越多,稳定性越差。

  • 更灵活:提供了非常灵活的 QueryWrapper,支持关联查询、多表查询、多主键、逻辑删除、乐观锁更新、数据填充、数据脱敏等等。

  • 高性能:通过独特的架构,没有任何 MyBatis 拦截器、在 SQL 执行的过程中,没有任何的 SQL Parse,因此会带来指数级的性能增长。

功能对比 ​

功能或特点MyBatis-FlexMyBatis-PlusFluent-MyBatis
对 entity 的基本增删改查✅✅✅
分页查询✅✅✅
分页查询之总量缓存✅✅❌
分页查询无 SQL 解析设计(更轻量,及更高性能)✅❌✅
多表查询: from 多张表✅❌❌
多表查询: left join、inner join 等等✅❌✅
多表查询: union,union all✅❌✅
单主键配置✅✅✅
多种 id 生成策略✅✅✅
支持多主键、复合主键✅❌❌
字段的 typeHandler 配置✅✅✅
除了 MyBatis,无其他第三方依赖(更轻量)✅❌❌
QueryWrapper 是否支持在微服务项目下进行 RPC 传输✅❌未知
逻辑删除✅✅✅
乐观锁✅✅✅
SQL 审计✅❌❌
数据填充✅✅✅
数据脱敏✅✔️ (收费)❌
字段权限✅✔️ (收费)❌
字段加密✅✔️ (收费)❌
字典回写✅✔️ (收费)❌
Db + Row✅❌❌
Entity 监听✅❌❌
多数据源支持✅借助其他框架或收费❌
多数据源是否支持 Spring 的事务管理,比如 @Transactional 和 TransactionTemplate 等✅❌❌
多数据源是否支持 "非 Spring" 项目✅❌❌
多租户✅✅❌
动态表名✅✅❌
动态 Schema✅❌❌

注意

以上内容来自第三方相关产品的官方文档或第三方平台,若有错误,欢迎纠正。

支持数据库 ​

MyBatis-Flex 支持的数据库类型,如下表格所示,我们还可以通过自定义方言的方式,持续添加更多的数据库支持。

数据库描述
mysqlMySQL 数据库
mariadbMariaDB 数据库
oracleOracle11g 及以下数据库
oracle12cOracle12c 及以上数据库
db2DB2 数据库
H2H2 数据库
hsqlHSQL 数据库
sqliteSQLite 数据库
postgresqlPostgreSQL 数据库
sqlserver2005SQLServer2005 数据库
sqlserverSQLServer 数据库
dm达梦数据库
xugu虚谷数据库
kingbasees人大金仓数据库
phoenixPhoenix HBase 数据库
gaussGauss 数据库
clickhouseClickHouse 数据库
gbase南大通用(华库)数据库
gbase-8s南大通用数据库 GBase 8s
oscar神通数据库
sybaseSybase ASE 数据库
OceanBaseOceanBase 数据库
FirebirdFirebird 数据库
derbyDerby 数据库
highgo瀚高数据库
cubridCUBRID 数据库
goldilocksGOLDILOCKS 数据库
csiidbCSIIDB 数据库
hanaSAP_HANA 数据库
impalaImpala 数据库
verticaVertica 数据库
xcloud行云数据库
redshift亚马逊 redshift 数据库
openGauss华为 openGauss 数据库
TDengineTDengine 数据库
informixInformix 数据库
greenplumGreenplum 数据库
uxdb优炫数据库
DorisDoris 数据库
Hive SQLHive 数据库
lealoneLealone 数据库
sinodb星瑞格数据库

注意

虽然 Mybatis-flex 支持很多数据库,但是 Cool Admin 是具体的业务框架,无法做到全部支持,那样工作量太大了。但是它为我们提供了改造的可能,理论上你只需修改一些不兼容的代码就可以正常运行了。

除了 Mysql,我们正在适配:PostgreSQL、Sqlite

自动建表 ​

根据 Java 实体,自动映射成数据库的表结构。

用过 JPA 的都知道,JPA 有一项重要的能力就是表结构自动维护,这让我们可以可以专注于业务逻辑和实体,而不需要关心数据库的表、列的配置,尤其是开发过程中频繁的新增表及变更表结构,节省了大量手动工作。

框架集成了Auto Table,可以自动创建表,并且支持表字段的修改。

注意

切勿在生产环境开启自动建表功能,因为这可能会造成数据丢失。

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/deploy.html b/.vitepress/dist/src/guide/deploy.html index 5e65a4a..6b77ac7 100644 --- a/.vitepress/dist/src/guide/deploy.html +++ b/.vitepress/dist/src/guide/deploy.html @@ -9,9 +9,9 @@ - + - + @@ -111,7 +111,7 @@ // 运行后端 docker run --network cool -p 80:80 --name vue cool-admin-vue:1.0

注意事项 ​

docker 部署,建议将缓存换成 redis,文件上传换成云存储,如:oss,防止操作不当导致的数据丢失。

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/dev.html b/.vitepress/dist/src/guide/dev.html index ff4c67b..f3551ee 100644 --- a/.vitepress/dist/src/guide/dev.html +++ b/.vitepress/dist/src/guide/dev.html @@ -9,9 +9,9 @@ - + - + @@ -35,7 +35,7 @@ codeGenerator.service(codeModel); } }
  • 自动生成前端页面,通过管理后台菜单管理的快速创建即可生成

Ui 组件会根据字段智能选择

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/dir.html b/.vitepress/dist/src/guide/dir.html index 59d1020..47adb84 100644 --- a/.vitepress/dist/src/guide/dir.html +++ b/.vitepress/dist/src/guide/dir.html @@ -9,9 +9,9 @@ - + - + @@ -43,7 +43,7 @@ │ └─ data │ └─ db 初始化数据json文件 └─ mapper mapper xml 文件

提示

  • core 为核心模块,包括一些核心的组件工具
  • modules 为业务模块,业务代码放在这边,在新增功能模块时,按上面的包结构新增即可

    比如你有一个订单管理的模块,在 modules 新增一个 order 包,在 order 包下创建 controller、entity、mapper、service 等包

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/exception.html b/.vitepress/dist/src/guide/exception.html index aac6a21..1d6fe13 100644 --- a/.vitepress/dist/src/guide/exception.html +++ b/.vitepress/dist/src/guide/exception.html @@ -9,9 +9,9 @@ - + - + @@ -77,7 +77,7 @@ super.add(requestParams, entity); return entity.getId(); } - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/flow.html b/.vitepress/dist/src/guide/flow.html index 4fce21a..b2fb4f0 100644 --- a/.vitepress/dist/src/guide/flow.html +++ b/.vitepress/dist/src/guide/flow.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Ai 流程编排 ​

视频演示

点击前往插件市场下载安装

开发 Ai 应用必备!!!

随着 Ai 的火热,很多应用希望接入 Ai 的能力,但是每次都是用代码手搓,容易把我们累死,而是也非常不灵活。

于是我们面向开发者和软件开发公司,做了一个 Ai 流程编排功能,结合知识库,通过拖动配置,很容易就能完成一个 Ai 的核心流程。

因此如果你需要开发 Ai 相关应用,这个可能会给你带来巨大的帮助。

流程编排

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/i18n.html b/.vitepress/dist/src/guide/i18n.html index 730ec65..75200c9 100644 --- a/.vitepress/dist/src/guide/i18n.html +++ b/.vitepress/dist/src/guide/i18n.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,8 +21,8 @@
Skip to content

国际化多语言(v8.0新增) ​

i18n(Internationalization 的缩写,首末字符 i 和 n 之间有 18 个字母)是软件国际化的标准缩写。它是指让软件支持多种语言和地区的功能,使得同一个软件可以面向不同语言地区的用户,显示相应的语言界面。

随着互联网的发展,越来越多的企业开始走向国际化,多语言的支持已经成为了一个必备的功能。Cool Admin 也对此做了支持。

实现 ​

多语言是需要前后端共同支持的,前端请前往前端文档查看

与其它实现方案不同的是,Cool Admin前后端的多语言都是基于大模型翻译的(比传统机翻更加准确),无需手动配置,只要开启就能自动翻译,而且不需要改变任何原有代码。

以前该怎么写还是怎么写!!!

使用 ​

1、引入插件 在官网下载并安装国际化多语言插件

安装后,框架就会自动扫描并翻译成对应的语言。

当你在控制台看到这样的输出,则代表成功

console
// 翻译中
 / i18n translate...
 // 翻译成功
-✅国际化 翻译 成功!!!

2、实现原理 只要开启并配置了国际化,在开发环境下重启,框架就会自动扫描菜单、字典、异常消息(CoolPreconditions.check...),并调用大模型对其进行翻译

翻译完成之后会默认在路径assets/i18n下生成对应种类的语言文件,如果这个文件存在

则该种类的国际化将不会进行翻译,也就是后续你有新增相关的内容,要让其再次翻译,得对应地删除相应的文件。

3、语言配置对照表

  • 简体中文(zh-cn)
  • 美国英语(en)
  • 阿塞拜疆语(az)
  • 德语(de)
  • 葡萄牙语(pt)
  • 西班牙语(es)
  • 丹麦语(da)
  • 法语(fr)
  • 挪威语(nb-NO)
  • 繁体中文(zh-tw)
  • 意大利语(it)
  • 韩语(ko)
  • 日语(ja)
  • 荷兰语(nl)
  • 越南语(vi)
  • 俄语(ru)
  • 土耳其语(tr)
  • 巴西葡萄牙语(pt-br)
  • 波斯语(fa)
  • 泰语(th)
  • 印度尼西亚语(id)
  • 保加利亚语(bg)
  • 普什图语(pa)
  • 波兰语(pl)
  • 芬兰语(fi)
  • 瑞典语(sv)
  • 希腊语(el)
  • 斯洛伐克语(sk)
  • 加泰罗尼亚语(ca)
  • 捷克语(cs)
  • 乌克兰语(uk)
  • 土库曼语(tk)
  • 泰米尔语(ta)
  • 拉脱维亚语(lv)
  • 南非荷兰语(af)
  • 爱沙尼亚语(et)
  • 斯洛文尼亚语(sl)
  • 阿拉伯语(ar)
  • 希伯来语(he)
  • 立陶宛语(lt)
  • 蒙古语(mn)
  • 哈萨克语(kk)
  • 匈牙利语(hu)
  • 罗马尼亚语(ro)
  • 库尔德语(ku)
  • 库尔德语 (ckb)
  • 维吾尔语 (ug-cn)
  • 高棉语 (km)
  • 塞尔维亚语 (sr)
  • 巴斯克语 (eu)
  • 吉尔吉斯语 (ky)
  • 亚美尼亚语 (hy-am)
  • 克罗地亚语(hr)
  • 世界语 (eo)
  • 孟加拉语 (bn)
  • 马来语 (ms)
- +✅国际化 翻译 成功!!!

2、实现原理 只要开启并配置了国际化,在开发环境下重启,框架就会自动扫描菜单、字典、异常消息(CoolPreconditions.check...),并调用大模型对其进行翻译

翻译完成之后会默认在路径assets/i18n下生成对应种类的语言文件,如果这个文件存在

则该种类的国际化将不会进行翻译,也就是后续你有新增相关的内容,要让其再次翻译,得对应地删除相应的文件。

3、语言配置对照表

  • 简体中文(zh-cn)
  • 美国英语(en)
  • 阿塞拜疆语(az)
  • 德语(de)
  • 葡萄牙语(pt)
  • 西班牙语(es)
  • 丹麦语(da)
  • 法语(fr)
  • 挪威语(nb-NO)
  • 繁体中文(zh-tw)
  • 意大利语(it)
  • 韩语(ko)
  • 日语(ja)
  • 荷兰语(nl)
  • 越南语(vi)
  • 俄语(ru)
  • 土耳其语(tr)
  • 巴西葡萄牙语(pt-br)
  • 波斯语(fa)
  • 泰语(th)
  • 印度尼西亚语(id)
  • 保加利亚语(bg)
  • 普什图语(pa)
  • 波兰语(pl)
  • 芬兰语(fi)
  • 瑞典语(sv)
  • 希腊语(el)
  • 斯洛伐克语(sk)
  • 加泰罗尼亚语(ca)
  • 捷克语(cs)
  • 乌克兰语(uk)
  • 土库曼语(tk)
  • 泰米尔语(ta)
  • 拉脱维亚语(lv)
  • 南非荷兰语(af)
  • 爱沙尼亚语(et)
  • 斯洛文尼亚语(sl)
  • 阿拉伯语(ar)
  • 希伯来语(he)
  • 立陶宛语(lt)
  • 蒙古语(mn)
  • 哈萨克语(kk)
  • 匈牙利语(hu)
  • 罗马尼亚语(ro)
  • 库尔德语(ku)
  • 库尔德语 (ckb)
  • 维吾尔语 (ug-cn)
  • 高棉语 (km)
  • 塞尔维亚语 (sr)
  • 巴斯克语 (eu)
  • 吉尔吉斯语 (ky)
  • 亚美尼亚语 (hy-am)
  • 克罗地亚语(hr)
  • 世界语 (eo)
  • 孟加拉语 (bn)
  • 马来语 (ms)
+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/initData.html b/.vitepress/dist/src/guide/initData.html index bba01b3..e27604b 100644 --- a/.vitepress/dist/src/guide/initData.html +++ b/.vitepress/dist/src/guide/initData.html @@ -9,9 +9,9 @@ - + - + @@ -51,7 +51,7 @@ } //...... }

注意:如果同一张表历史已经有初始化过数据,在某个版本需要新增数据的话,要新增一个.json 文件;
比如 demoV2.json, 如果在原文件直接修改将不生效,加载成功后文件名称将被当作唯一键标识,不会重复初始化。

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/lock.html b/.vitepress/dist/src/guide/lock.html index e2e64c8..b57e504 100644 --- a/.vitepress/dist/src/guide/lock.html +++ b/.vitepress/dist/src/guide/lock.html @@ -9,9 +9,9 @@ - + - + @@ -29,7 +29,7 @@ // 释放锁 coolLock.unlock(key); } - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/noRepeatSubmit.html b/.vitepress/dist/src/guide/noRepeatSubmit.html index b40cc90..8a6e6b5 100644 --- a/.vitepress/dist/src/guide/noRepeatSubmit.html +++ b/.vitepress/dist/src/guide/noRepeatSubmit.html @@ -9,9 +9,9 @@ - + - + @@ -46,7 +46,7 @@ Long couponId = requestParams.get("couponId", Long.class); return R.ok(marketCouponInfoService.receive(couponId, CoolSecurityUtil.getCurrentUserId())); } - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/plugin.html b/.vitepress/dist/src/guide/plugin.html index db776df..d8a74bc 100644 --- a/.vitepress/dist/src/guide/plugin.html +++ b/.vitepress/dist/src/guide/plugin.html @@ -9,9 +9,9 @@ - + - + @@ -255,7 +255,7 @@ <cool.plugin.name>my_cool_plugin</cool.plugin.name> </properties>

最终打出的包为: my_cool_plugin.cool

安装插件 ​

在后台插件管理页面,安装插件将打包好的.cool 文件上传。

实现原理 ​

  • 动态加载 Jar 包

    实现动态加载的技术方案
    在 SpringBoot 中实现动态加载 Jar 包: URLClassLoader 是 Java 标准库中提供的一个类加载器,它可以加载指定的 URL 资源,包括本地文件系统、远程服务器和 JAR 文件等。
    通过 URLClassLoader,我们可以在运行时动态地加载外部的 Jar 包或类。

  • 优势:

    1、灵活性高:可以动态指定 Jar 包的位置和版本。
    2、可控性强:可以通过代码控制加载、卸载和替换 Jar 包。

实现方法:

java
URL jarUrl = new URL("jar:file:" + new File(jarFilePath).getAbsolutePath() + "!/");
 DynamicJarClassLoader dynamicJarClassLoader = new DynamicJarClassLoader(new URL[]{jarUrl}, Thread.currentThread().getContextClassLoader());

动态加载 Jar 包具有以下几个显著的优势:

  • 1、灵活性: 动态加载允许应用程序在运行时根据需求加载、卸载和替换 Jar 包或其内部的类和资源,提供了极大的灵活性。
  • 2、可维护性: 通过动态加载,可以将应用程序的核心逻辑和配置分离,使得代码更加清晰、模块化,提高了代码的可维护性。
  • 3、热更新: 动态加载使得应用程序能够在不停机的情况下进行热更新,大大提高了系统的可用性和稳定性。
  • 4、扩展性: 通过动态加载,可以轻松地添加新的功能模块或服务,实现应用程序的快速扩展和升级。
- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/quick.html b/.vitepress/dist/src/guide/quick.html index e5b944a..2a40390 100644 --- a/.vitepress/dist/src/guide/quick.html +++ b/.vitepress/dist/src/guide/quick.html @@ -9,9 +9,9 @@ - + - + @@ -32,7 +32,7 @@ npm install # 启动 npm run dev

访问http://127.0.0.1:9000/ 默认账户密码

账户:admin
密码:123456

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/recordLog.html b/.vitepress/dist/src/guide/recordLog.html index 96b2538..2745472 100644 --- a/.vitepress/dist/src/guide/recordLog.html +++ b/.vitepress/dist/src/guide/recordLog.html @@ -9,9 +9,9 @@ - + - + @@ -40,7 +40,7 @@ - /css/* - /js/* - /favicon.ico - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/security.html b/.vitepress/dist/src/guide/security.html index e992485..401f3cf 100644 --- a/.vitepress/dist/src/guide/security.html +++ b/.vitepress/dist/src/guide/security.html @@ -9,9 +9,9 @@ - + - + @@ -253,7 +253,7 @@ - /js/* - /druid/** - /admin/base/open/** - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/service.html b/.vitepress/dist/src/guide/service.html index 7f64aef..1bda56b 100644 --- a/.vitepress/dist/src/guide/service.html +++ b/.vitepress/dist/src/guide/service.html @@ -9,9 +9,9 @@ - + - + @@ -38,7 +38,7 @@ @Override public void modifyAfter(JSONObject requestParams, T t, ModifyEnum type) { } - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/swagger.html b/.vitepress/dist/src/guide/swagger.html index 7001d0c..01a7d74 100644 --- a/.vitepress/dist/src/guide/swagger.html +++ b/.vitepress/dist/src/guide/swagger.html @@ -9,9 +9,9 @@ - + - + @@ -26,7 +26,7 @@ // 可以在这边实现一下列表数据排序规则,查询条件过滤,返回哪些字段等 } }

系统启动完成访问:http://127.0.0.1:8001/swagger-ui/index.html#/

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/tenant.html b/.vitepress/dist/src/guide/tenant.html index 176dddb..69293b3 100644 --- a/.vitepress/dist/src/guide/tenant.html +++ b/.vitepress/dist/src/guide/tenant.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ multi-tenant: # 是否开启多租户,默认关闭 enable: false

关于tenantId的使用请参考 mybatis-flex

2、继承对象调整 ​

对于需要租户隔离的表,需要对应的表实体继承对象进行调整 BaseEntity -> TenantEntity

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/uniqueIDGen.html b/.vitepress/dist/src/guide/uniqueIDGen.html index da7720c..518d042 100644 --- a/.vitepress/dist/src/guide/uniqueIDGen.html +++ b/.vitepress/dist/src/guide/uniqueIDGen.html @@ -9,9 +9,9 @@ - + - + @@ -48,7 +48,7 @@ segment: # 默认禁用,如需启用调整为 true enable: false - + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/upload.html b/.vitepress/dist/src/guide/upload.html index ffd3188..56188a1 100644 --- a/.vitepress/dist/src/guide/upload.html +++ b/.vitepress/dist/src/guide/upload.html @@ -9,9 +9,9 @@ - + - + @@ -55,7 +55,7 @@ return R.ok(fileUploadStrategyFactory.getMode()); } } - + \ No newline at end of file diff --git a/.vitepress/dist/src/introduce/index.html b/.vitepress/dist/src/introduce/index.html index 96c415b..1a132c2 100644 --- a/.vitepress/dist/src/introduce/index.html +++ b/.vitepress/dist/src/introduce/index.html @@ -9,9 +9,9 @@ - + - + @@ -21,7 +21,7 @@
Skip to content

简介 ​

技术选型 ​

按照简单、常用的技术进行选择,减少技术栈的复杂度。

一、环境要求 ​

  • Java Jdk >= 17 选择 graalvm
  • Mysql >= 5.7
  • Maven >= 3.6

二、后端框架 ​

  • Spring Boot 3.x
  • Mybatis Flex
  • Auto Table
  • Hutool

三、前端框架 ​

  • Vue3
  • Typescript
  • Element-UI

为什么选择 Cool Admin? ​

随着技术不断地发展,特别是最近 Ai 相关的技术发展,以往的框架已经越来越不能满足现代化的开发需求。

Cool Admin 做为后来者有后发优势,主要特点:

  • Ai 编码,从页面到后端代码,部分功能实现零代码;
  • Ai 流程编排,专门为 Ai 开发设计的,Ai 开发几乎不用写代码,只需拖一拖即可;
  • 扩展插件,可插拔,如支付、短信这类功能的插件可以通过后台动态安装卸载,灵活又不臃肿;
  • 代码简洁,不像一般代码生成器生成一堆冗余代码,Cool 只需极少编码即可实现大部分需求;
  • ......

内置功能 ​

  • 用户管理:呈现公司组织部门树形结构,用户是系统操作者,该功能主要完成系统用户配置。
  • 菜单管理:配置系统菜单,操作权限标识等。
  • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  • 参数管理:对系统动态配置常用参数。
  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  • 请求日志:接口的请求入参日志,便于问题排查。
  • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  • 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  • 文件管理:支持静态资源文件上传云端进行云管理。
  • 数据回收站:数据有 n 天的保留,支持回滚操作。
  • 前后端插件:支持动态安装、卸载插件,实现功能可插拔。
- + \ No newline at end of file diff --git a/.vitepress/dist/src/introduce/show.html b/.vitepress/dist/src/introduce/show.html index 24c132e..15f20ba 100644 --- a/.vitepress/dist/src/introduce/show.html +++ b/.vitepress/dist/src/introduce/show.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/.vitepress/dist/src/introduce/src.html b/.vitepress/dist/src/introduce/src.html index 7cc4e43..bdea376 100644 --- a/.vitepress/dist/src/introduce/src.html +++ b/.vitepress/dist/src/introduce/src.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

源码 ​

项目是开源免费、可商用、无需授权的,为了使项目能够持续,不要吝啬你们免费的Star哦!!!你的Star是我们最大的动力!!!

后端(点个 Star 哦) ​

https://github.com/cool-team-official/cool-admin-java

或

https://gitee.com/cool-team-official/cool-admin-java

或

https://gitcode.com/cool_team/cool-admin-java

前端(点个 Star 哦) ​

点击前往前端项目详细文档

https://github.com/cool-team-official/cool-admin-vue

或

https://gitee.com/cool-team-official/cool-admin-vue

或

https://gitcode.com/cool_team/cool-admin-vue

文档 (Star 哦) ​

如果文档有缺失,欢迎提交pr,您的贡献可能会给其他人来带巨大的帮助。

https://github.com/cool-team-official/cool-admin-java-docs

或

https://gitee.com/cool-team-official/cool-admin-java-docs

- + \ No newline at end of file diff --git a/.vitepress/dist/src/question/common.html b/.vitepress/dist/src/question/common.html index 1f86736..07cf4a6 100644 --- a/.vitepress/dist/src/question/common.html +++ b/.vitepress/dist/src/question/common.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

常见问题 ​

项目中常见的问题

1、找不到类似xxxTableDef文件 ​

框架用到了Mybatis Flex 的 APT 功能,在项目编译的时候会自动生成这些文件。

你可以这样做:

  • Build 你的项目;
  • 执行 maven 的mvn compile命令;
  • 配置完数据库直接启动;
  • 【推荐】开启 idea 的Build project automatically自动编译功能(Settings -> Build, Execution, Deployment -> Compiler -> Build Project Automatically);

这些方式都可以解决这个问题。

- + \ No newline at end of file diff --git a/.vitepress/dist/src/todo/plan.html b/.vitepress/dist/src/todo/plan.html index 1e61c5f..73876f5 100644 --- a/.vitepress/dist/src/todo/plan.html +++ b/.vitepress/dist/src/todo/plan.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/.vitepress/dist/src/todo/update.html b/.vitepress/dist/src/todo/update.html index 64e51d9..315310f 100644 --- a/.vitepress/dist/src/todo/update.html +++ b/.vitepress/dist/src/todo/update.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

更新 ​

因为有你们的支持,cool-admin 会持续不断地更新,如果方便请点下 Star,这将会给我们带来更多的动力!!!

v8.0.0(2025-04-13) ​

  • 新增: 支持多租户,全局动态注入查询条件详情
  • 新增: 支持多语言,基于大模型自动翻译,无需更改原有代码详情
  • 优化: 响应类型封装优化 by @ximu-tao
  • 升级: 升级autotable和mybatis-flex版本,涉及包结构变更 com.tangzc.autotable -> org.dromara.autotable
  • 升级: AI 自动编码(基于DeepSeek R1)

v7.1.3(2024-08-25) ​

  • 新增: list和page支持关联查询,支持自定义返回结果类型,并可以在init方法中初始化返回字段类型及数据组装函数定义(参考:控制器)
  • 新增: 分布式ID生成组件(参考:分布式ID)
  • 新增: 锁工具(参考:锁工具)
  • 新增: 防重提交注解(参考:防重提交)
  • 调整: 缓存数据模板(参考:缓存)
  • 调整: 优化eps解析规则 (参考:解析规则)
  • 调整: 优化角色修改循环单个处理为批量处理,并异步进行刷新用户权限
  • 调整: 图形验证码获取区分app和admin
  • 修复: 初始化数据,指定id插入不生效问题
  • 修复: 后台人员查询列表字段关联错误

v7.1.2(2024-08-04) ​

  • 新增: 支持postgresql
  • 新增: 忽略记录请求日志url配置
  • 新增: app端手机密码登录和手机验证码登录
  • 调整: 鉴权调整兼容app端
  • 调整: 优化插件过大加载慢问题,移除插件jar文件落库
  • 修复: refreshToken可以当token使用问题

v7.1.1(2024-07-15) ​

  • 新增 Ai 自动编码功能,简单功能零代码实现;
  • 新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;

v7.1.0(2024-06-27) ​

  • 升级到 Springboot3.x;
  • 升级所有相关依赖到最新;
  • 跟进Nodejs 版相关功能;
  • 优化若干问题;
- + \ No newline at end of file diff --git a/docs/.vitepress/cache/deps/@theme_index.js b/docs/.vitepress/cache/deps/@theme_index.js new file mode 100644 index 0000000..57c1ad0 --- /dev/null +++ b/docs/.vitepress/cache/deps/@theme_index.js @@ -0,0 +1,275 @@ +import { + useMediaQuery +} from "./chunk-O4DXW3DK.js"; +import { + computed, + ref, + shallowRef, + watch +} from "./chunk-AU3CLKKL.js"; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/index.js +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/fonts.css"; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/vars.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/base.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/icons.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/utils.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css"; +import "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css"; +import VPBadge from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; +import Layout from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/Layout.vue"; +import { default as default2 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; +import { default as default3 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue"; +import { default as default4 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue"; +import { default as default5 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPFeatures.vue"; +import { default as default6 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeContent.vue"; +import { default as default7 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue"; +import { default as default8 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue"; +import { default as default9 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue"; +import { default as default10 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue"; +import { default as default11 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPLink.vue"; +import { default as default12 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPNavBarSearch.vue"; +import { default as default13 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLink.vue"; +import { default as default14 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLinks.vue"; +import { default as default15 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue"; +import { default as default16 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue"; +import { default as default17 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue"; +import { default as default18 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue"; +import { default as default19 } from "/Users/mac/work/cool_new/cool-admin-java-docs/node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue"; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js +import { onContentUpdated } from "vitepress"; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/outline.js +import { getScrollOffset } from "vitepress"; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/support/utils.js +import { withBase } from "vitepress"; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/data.js +import { useData as useData$ } from "vitepress"; +var useData = useData$; + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/support/utils.js +function ensureStartingSlash(path) { + return path.startsWith("/") ? path : `/${path}`; +} + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/support/sidebar.js +function getSidebar(_sidebar, path) { + if (Array.isArray(_sidebar)) + return addBase(_sidebar); + if (_sidebar == null) + return []; + path = ensureStartingSlash(path); + const dir = Object.keys(_sidebar).sort((a, b) => { + return b.split("/").length - a.split("/").length; + }).find((dir2) => { + return path.startsWith(ensureStartingSlash(dir2)); + }); + const sidebar = dir ? _sidebar[dir] : []; + return Array.isArray(sidebar) ? addBase(sidebar) : addBase(sidebar.items, sidebar.base); +} +function getSidebarGroups(sidebar) { + const groups = []; + let lastGroupIndex = 0; + for (const index in sidebar) { + const item = sidebar[index]; + if (item.items) { + lastGroupIndex = groups.push(item); + continue; + } + if (!groups[lastGroupIndex]) { + groups.push({ items: [] }); + } + groups[lastGroupIndex].items.push(item); + } + return groups; +} +function addBase(items, _base) { + return [...items].map((_item) => { + const item = { ..._item }; + const base = item.base || _base; + if (base && item.link) + item.link = base + item.link; + if (item.items) + item.items = addBase(item.items, base); + return item; + }); +} + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/sidebar.js +function useSidebar() { + const { frontmatter, page, theme: theme2 } = useData(); + const is960 = useMediaQuery("(min-width: 960px)"); + const isOpen = ref(false); + const _sidebar = computed(() => { + const sidebarConfig = theme2.value.sidebar; + const relativePath = page.value.relativePath; + return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : []; + }); + const sidebar = ref(_sidebar.value); + watch(_sidebar, (next, prev) => { + if (JSON.stringify(next) !== JSON.stringify(prev)) + sidebar.value = _sidebar.value; + }); + const hasSidebar = computed(() => { + return frontmatter.value.sidebar !== false && sidebar.value.length > 0 && frontmatter.value.layout !== "home"; + }); + const leftAside = computed(() => { + if (hasAside) + return frontmatter.value.aside == null ? theme2.value.aside === "left" : frontmatter.value.aside === "left"; + return false; + }); + const hasAside = computed(() => { + if (frontmatter.value.layout === "home") + return false; + if (frontmatter.value.aside != null) + return !!frontmatter.value.aside; + return theme2.value.aside !== false; + }); + const isSidebarEnabled = computed(() => hasSidebar.value && is960.value); + const sidebarGroups = computed(() => { + return hasSidebar.value ? getSidebarGroups(sidebar.value) : []; + }); + function open() { + isOpen.value = true; + } + function close() { + isOpen.value = false; + } + function toggle() { + isOpen.value ? close() : open(); + } + return { + isOpen, + sidebar, + sidebarGroups, + hasSidebar, + hasAside, + leftAside, + isSidebarEnabled, + open, + close, + toggle + }; +} + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/outline.js +var ignoreRE = /\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/; +var resolvedHeaders = []; +function getHeaders(range) { + const headers = [ + ...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)") + ].filter((el) => el.id && el.hasChildNodes()).map((el) => { + const level = Number(el.tagName[1]); + return { + element: el, + title: serializeHeader(el), + link: "#" + el.id, + level + }; + }); + return resolveHeaders(headers, range); +} +function serializeHeader(h) { + let ret = ""; + for (const node of h.childNodes) { + if (node.nodeType === 1) { + if (ignoreRE.test(node.className)) + continue; + ret += node.textContent; + } else if (node.nodeType === 3) { + ret += node.textContent; + } + } + return ret.trim(); +} +function resolveHeaders(headers, range) { + if (range === false) { + return []; + } + const levelsRange = (typeof range === "object" && !Array.isArray(range) ? range.level : range) || 2; + const [high, low] = typeof levelsRange === "number" ? [levelsRange, levelsRange] : levelsRange === "deep" ? [2, 6] : levelsRange; + return buildTree(headers, high, low); +} +function buildTree(data, min, max) { + resolvedHeaders.length = 0; + const result = []; + const stack = []; + data.forEach((item) => { + const node = { ...item, children: [] }; + let parent = stack[stack.length - 1]; + while (parent && parent.level >= node.level) { + stack.pop(); + parent = stack[stack.length - 1]; + } + if (node.element.classList.contains("ignore-header") || parent && "shouldIgnore" in parent) { + stack.push({ level: node.level, shouldIgnore: true }); + return; + } + if (node.level > max || node.level < min) + return; + resolvedHeaders.push({ element: node.element, link: node.link }); + if (parent) + parent.children.push(node); + else + result.push(node); + stack.push(node); + }); + return result; +} + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js +function useLocalNav() { + const { theme: theme2, frontmatter } = useData(); + const headers = shallowRef([]); + const hasLocalNav = computed(() => { + return headers.value.length > 0; + }); + onContentUpdated(() => { + headers.value = getHeaders(frontmatter.value.outline ?? theme2.value.outline); + }); + return { + headers, + hasLocalNav + }; +} + +// node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js +var theme = { + Layout, + enhanceApp: ({ app }) => { + app.component("Badge", VPBadge); + } +}; +var without_fonts_default = theme; +export { + default2 as VPBadge, + default3 as VPButton, + default4 as VPDocAsideSponsors, + default5 as VPFeatures, + default6 as VPHomeContent, + default7 as VPHomeFeatures, + default8 as VPHomeHero, + default9 as VPHomeSponsors, + default10 as VPImage, + default11 as VPLink, + default12 as VPNavBarSearch, + default13 as VPSocialLink, + default14 as VPSocialLinks, + default15 as VPSponsors, + default16 as VPTeamMembers, + default17 as VPTeamPage, + default18 as VPTeamPageSection, + default19 as VPTeamPageTitle, + without_fonts_default as default, + useLocalNav, + useSidebar +}; +//# sourceMappingURL=@theme_index.js.map diff --git a/docs/.vitepress/cache/deps/@theme_index.js.map b/docs/.vitepress/cache/deps/@theme_index.js.map new file mode 100644 index 0000000..9a6f5f3 --- /dev/null +++ b/docs/.vitepress/cache/deps/@theme_index.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/index.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/outline.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/support/utils.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/data.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/support/sidebar.js", "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/sidebar.js"], + "sourcesContent": ["import './styles/fonts.css';\nexport * from './without-fonts';\nexport { default as default } from './without-fonts';\n", "import './styles/vars.css';\nimport './styles/base.css';\nimport './styles/icons.css';\nimport './styles/utils.css';\nimport './styles/components/custom-block.css';\nimport './styles/components/vp-code.css';\nimport './styles/components/vp-code-group.css';\nimport './styles/components/vp-doc.css';\nimport './styles/components/vp-sponsor.css';\nimport VPBadge from './components/VPBadge.vue';\nimport Layout from './Layout.vue';\nexport { default as VPBadge } from './components/VPBadge.vue';\nexport { default as VPButton } from './components/VPButton.vue';\nexport { default as VPDocAsideSponsors } from './components/VPDocAsideSponsors.vue';\nexport { default as VPFeatures } from './components/VPFeatures.vue';\nexport { default as VPHomeContent } from './components/VPHomeContent.vue';\nexport { default as VPHomeFeatures } from './components/VPHomeFeatures.vue';\nexport { default as VPHomeHero } from './components/VPHomeHero.vue';\nexport { default as VPHomeSponsors } from './components/VPHomeSponsors.vue';\nexport { default as VPImage } from './components/VPImage.vue';\nexport { default as VPLink } from './components/VPLink.vue';\nexport { default as VPNavBarSearch } from './components/VPNavBarSearch.vue';\nexport { default as VPSocialLink } from './components/VPSocialLink.vue';\nexport { default as VPSocialLinks } from './components/VPSocialLinks.vue';\nexport { default as VPSponsors } from './components/VPSponsors.vue';\nexport { default as VPTeamMembers } from './components/VPTeamMembers.vue';\nexport { default as VPTeamPage } from './components/VPTeamPage.vue';\nexport { default as VPTeamPageSection } from './components/VPTeamPageSection.vue';\nexport { default as VPTeamPageTitle } from './components/VPTeamPageTitle.vue';\nexport { useLocalNav } from './composables/local-nav';\nexport { useSidebar } from './composables/sidebar';\nconst theme = {\n Layout,\n enhanceApp: ({ app }) => {\n app.component('Badge', VPBadge);\n }\n};\nexport default theme;\n", "import { onContentUpdated } from 'vitepress';\nimport { computed, shallowRef } from 'vue';\nimport { getHeaders } from '../composables/outline';\nimport { useData } from './data';\nexport function useLocalNav() {\n const { theme, frontmatter } = useData();\n const headers = shallowRef([]);\n const hasLocalNav = computed(() => {\n return headers.value.length > 0;\n });\n onContentUpdated(() => {\n headers.value = getHeaders(frontmatter.value.outline ?? theme.value.outline);\n });\n return {\n headers,\n hasLocalNav\n };\n}\n", "import { getScrollOffset } from 'vitepress';\nimport { onMounted, onUnmounted, onUpdated } from 'vue';\nimport { throttleAndDebounce } from '../support/utils';\nimport { useAside } from './aside';\nconst ignoreRE = /\\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\\b/;\n// cached list of anchor elements from resolveHeaders\nconst resolvedHeaders = [];\nexport function resolveTitle(theme) {\n return ((typeof theme.outline === 'object' &&\n !Array.isArray(theme.outline) &&\n theme.outline.label) ||\n theme.outlineTitle ||\n 'On this page');\n}\nexport function getHeaders(range) {\n const headers = [\n ...document.querySelectorAll('.VPDoc :where(h1,h2,h3,h4,h5,h6)')\n ]\n .filter((el) => el.id && el.hasChildNodes())\n .map((el) => {\n const level = Number(el.tagName[1]);\n return {\n element: el,\n title: serializeHeader(el),\n link: '#' + el.id,\n level\n };\n });\n return resolveHeaders(headers, range);\n}\nfunction serializeHeader(h) {\n let ret = '';\n for (const node of h.childNodes) {\n if (node.nodeType === 1) {\n if (ignoreRE.test(node.className))\n continue;\n ret += node.textContent;\n }\n else if (node.nodeType === 3) {\n ret += node.textContent;\n }\n }\n return ret.trim();\n}\nexport function resolveHeaders(headers, range) {\n if (range === false) {\n return [];\n }\n const levelsRange = (typeof range === 'object' && !Array.isArray(range)\n ? range.level\n : range) || 2;\n const [high, low] = typeof levelsRange === 'number'\n ? [levelsRange, levelsRange]\n : levelsRange === 'deep'\n ? [2, 6]\n : levelsRange;\n return buildTree(headers, high, low);\n}\nexport function useActiveAnchor(container, marker) {\n const { isAsideEnabled } = useAside();\n const onScroll = throttleAndDebounce(setActiveLink, 100);\n let prevActiveLink = null;\n onMounted(() => {\n requestAnimationFrame(setActiveLink);\n window.addEventListener('scroll', onScroll);\n });\n onUpdated(() => {\n // sidebar update means a route change\n activateLink(location.hash);\n });\n onUnmounted(() => {\n window.removeEventListener('scroll', onScroll);\n });\n function setActiveLink() {\n if (!isAsideEnabled.value) {\n return;\n }\n const scrollY = window.scrollY;\n const innerHeight = window.innerHeight;\n const offsetHeight = document.body.offsetHeight;\n const isBottom = Math.abs(scrollY + innerHeight - offsetHeight) < 1;\n // resolvedHeaders may be repositioned, hidden or fix positioned\n const headers = resolvedHeaders\n .map(({ element, link }) => ({\n link,\n top: getAbsoluteTop(element)\n }))\n .filter(({ top }) => !Number.isNaN(top))\n .sort((a, b) => a.top - b.top);\n // no headers available for active link\n if (!headers.length) {\n activateLink(null);\n return;\n }\n // page top\n if (scrollY < 1) {\n activateLink(null);\n return;\n }\n // page bottom - highlight last link\n if (isBottom) {\n activateLink(headers[headers.length - 1].link);\n return;\n }\n // find the last header above the top of viewport\n let activeLink = null;\n for (const { link, top } of headers) {\n if (top > scrollY + getScrollOffset() + 4) {\n break;\n }\n activeLink = link;\n }\n activateLink(activeLink);\n }\n function activateLink(hash) {\n if (prevActiveLink) {\n prevActiveLink.classList.remove('active');\n }\n if (hash == null) {\n prevActiveLink = null;\n }\n else {\n prevActiveLink = container.value.querySelector(`a[href=\"${decodeURIComponent(hash)}\"]`);\n }\n const activeLink = prevActiveLink;\n if (activeLink) {\n activeLink.classList.add('active');\n marker.value.style.top = activeLink.offsetTop + 39 + 'px';\n marker.value.style.opacity = '1';\n }\n else {\n marker.value.style.top = '33px';\n marker.value.style.opacity = '0';\n }\n }\n}\nfunction getAbsoluteTop(element) {\n let offsetTop = 0;\n while (element !== document.body) {\n if (element === null) {\n // child element is:\n // - not attached to the DOM (display: none)\n // - set to fixed position (not scrollable)\n // - body or html element (null offsetParent)\n return NaN;\n }\n offsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n return offsetTop;\n}\nfunction buildTree(data, min, max) {\n resolvedHeaders.length = 0;\n const result = [];\n const stack = [];\n data.forEach((item) => {\n const node = { ...item, children: [] };\n let parent = stack[stack.length - 1];\n while (parent && parent.level >= node.level) {\n stack.pop();\n parent = stack[stack.length - 1];\n }\n if (node.element.classList.contains('ignore-header') ||\n (parent && 'shouldIgnore' in parent)) {\n stack.push({ level: node.level, shouldIgnore: true });\n return;\n }\n if (node.level > max || node.level < min)\n return;\n resolvedHeaders.push({ element: node.element, link: node.link });\n if (parent)\n parent.children.push(node);\n else\n result.push(node);\n stack.push(node);\n });\n return result;\n}\n", "import { withBase } from 'vitepress';\nimport { isExternal, treatAsHtml } from '../../shared';\nimport { useData } from '../composables/data';\nexport function throttleAndDebounce(fn, delay) {\n let timeoutId;\n let called = false;\n return () => {\n if (timeoutId)\n clearTimeout(timeoutId);\n if (!called) {\n fn();\n (called = true) && setTimeout(() => (called = false), delay);\n }\n else\n timeoutId = setTimeout(fn, delay);\n };\n}\nexport function ensureStartingSlash(path) {\n return path.startsWith('/') ? path : `/${path}`;\n}\nexport function normalizeLink(url) {\n const { pathname, search, hash, protocol } = new URL(url, 'http://a.com');\n if (isExternal(url) ||\n url.startsWith('#') ||\n !protocol.startsWith('http') ||\n !treatAsHtml(pathname))\n return url;\n const { site } = useData();\n const normalizedPath = pathname.endsWith('/') || pathname.endsWith('.html')\n ? url\n : url.replace(/(?:(^\\.+)\\/)?.*$/, `$1${pathname.replace(/(\\.md)?$/, site.value.cleanUrls ? '' : '.html')}${search}${hash}`);\n return withBase(normalizedPath);\n}\n", "import { useData as useData$ } from 'vitepress';\nexport const useData = useData$;\n", "import { isActive } from '../../shared';\nimport { ensureStartingSlash } from './utils';\n/**\n * Get the `Sidebar` from sidebar option. This method will ensure to get correct\n * sidebar config from `MultiSideBarConfig` with various path combinations such\n * as matching `guide/` and `/guide/`. If no matching config was found, it will\n * return empty array.\n */\nexport function getSidebar(_sidebar, path) {\n if (Array.isArray(_sidebar))\n return addBase(_sidebar);\n if (_sidebar == null)\n return [];\n path = ensureStartingSlash(path);\n const dir = Object.keys(_sidebar)\n .sort((a, b) => {\n return b.split('/').length - a.split('/').length;\n })\n .find((dir) => {\n // make sure the multi sidebar key starts with slash too\n return path.startsWith(ensureStartingSlash(dir));\n });\n const sidebar = dir ? _sidebar[dir] : [];\n return Array.isArray(sidebar)\n ? addBase(sidebar)\n : addBase(sidebar.items, sidebar.base);\n}\n/**\n * Get or generate sidebar group from the given sidebar items.\n */\nexport function getSidebarGroups(sidebar) {\n const groups = [];\n let lastGroupIndex = 0;\n for (const index in sidebar) {\n const item = sidebar[index];\n if (item.items) {\n lastGroupIndex = groups.push(item);\n continue;\n }\n if (!groups[lastGroupIndex]) {\n groups.push({ items: [] });\n }\n groups[lastGroupIndex].items.push(item);\n }\n return groups;\n}\nexport function getFlatSideBarLinks(sidebar) {\n const links = [];\n function recursivelyExtractLinks(items) {\n for (const item of items) {\n if (item.text && item.link) {\n links.push({\n text: item.text,\n link: item.link,\n docFooterText: item.docFooterText\n });\n }\n if (item.items) {\n recursivelyExtractLinks(item.items);\n }\n }\n }\n recursivelyExtractLinks(sidebar);\n return links;\n}\n/**\n * Check if the given sidebar item contains any active link.\n */\nexport function hasActiveLink(path, items) {\n if (Array.isArray(items)) {\n return items.some((item) => hasActiveLink(path, item));\n }\n return isActive(path, items.link)\n ? true\n : items.items\n ? hasActiveLink(path, items.items)\n : false;\n}\nfunction addBase(items, _base) {\n return [...items].map((_item) => {\n const item = { ..._item };\n const base = item.base || _base;\n if (base && item.link)\n item.link = base + item.link;\n if (item.items)\n item.items = addBase(item.items, base);\n return item;\n });\n}\n", "import { useMediaQuery } from '@vueuse/core';\nimport { computed, onMounted, onUnmounted, ref, watch, watchEffect, watchPostEffect } from 'vue';\nimport { isActive } from '../../shared';\nimport { hasActiveLink as containsActiveLink, getSidebar, getSidebarGroups } from '../support/sidebar';\nimport { useData } from './data';\nexport function useSidebar() {\n const { frontmatter, page, theme } = useData();\n const is960 = useMediaQuery('(min-width: 960px)');\n const isOpen = ref(false);\n const _sidebar = computed(() => {\n const sidebarConfig = theme.value.sidebar;\n const relativePath = page.value.relativePath;\n return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];\n });\n const sidebar = ref(_sidebar.value);\n watch(_sidebar, (next, prev) => {\n if (JSON.stringify(next) !== JSON.stringify(prev))\n sidebar.value = _sidebar.value;\n });\n const hasSidebar = computed(() => {\n return (frontmatter.value.sidebar !== false &&\n sidebar.value.length > 0 &&\n frontmatter.value.layout !== 'home');\n });\n const leftAside = computed(() => {\n if (hasAside)\n return frontmatter.value.aside == null\n ? theme.value.aside === 'left'\n : frontmatter.value.aside === 'left';\n return false;\n });\n const hasAside = computed(() => {\n if (frontmatter.value.layout === 'home')\n return false;\n if (frontmatter.value.aside != null)\n return !!frontmatter.value.aside;\n return theme.value.aside !== false;\n });\n const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);\n const sidebarGroups = computed(() => {\n return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];\n });\n function open() {\n isOpen.value = true;\n }\n function close() {\n isOpen.value = false;\n }\n function toggle() {\n isOpen.value ? close() : open();\n }\n return {\n isOpen,\n sidebar,\n sidebarGroups,\n hasSidebar,\n hasAside,\n leftAside,\n isSidebarEnabled,\n open,\n close,\n toggle\n };\n}\n/**\n * a11y: cache the element that opened the Sidebar (the menu button) then\n * focus that button again when Menu is closed with Escape key.\n */\nexport function useCloseSidebarOnEscape(isOpen, close) {\n let triggerElement;\n watchEffect(() => {\n triggerElement = isOpen.value\n ? document.activeElement\n : undefined;\n });\n onMounted(() => {\n window.addEventListener('keyup', onEscape);\n });\n onUnmounted(() => {\n window.removeEventListener('keyup', onEscape);\n });\n function onEscape(e) {\n if (e.key === 'Escape' && isOpen.value) {\n close();\n triggerElement?.focus();\n }\n }\n}\nexport function useSidebarControl(item) {\n const { page, hash } = useData();\n const collapsed = ref(false);\n const collapsible = computed(() => {\n return item.value.collapsed != null;\n });\n const isLink = computed(() => {\n return !!item.value.link;\n });\n const isActiveLink = ref(false);\n const updateIsActiveLink = () => {\n isActiveLink.value = isActive(page.value.relativePath, item.value.link);\n };\n watch([page, item, hash], updateIsActiveLink);\n onMounted(updateIsActiveLink);\n const hasActiveLink = computed(() => {\n if (isActiveLink.value) {\n return true;\n }\n return item.value.items\n ? containsActiveLink(page.value.relativePath, item.value.items)\n : false;\n });\n const hasChildren = computed(() => {\n return !!(item.value.items && item.value.items.length);\n });\n watchEffect(() => {\n collapsed.value = !!(collapsible.value && item.value.collapsed);\n });\n watchPostEffect(() => {\n ;\n (isActiveLink.value || hasActiveLink.value) && (collapsed.value = false);\n });\n function toggle() {\n if (collapsible.value) {\n collapsed.value = !collapsed.value;\n }\n }\n return {\n collapsed,\n collapsible,\n isLink,\n isActiveLink,\n hasActiveLink,\n hasChildren,\n toggle\n };\n}\n"], + "mappings": ";;;;;;;;;;;AAAA,OAAO;;;ACAP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO,aAAa;AACpB,OAAO,YAAY;AACnB,SAAoB,WAAXA,gBAA0B;AACnC,SAAoB,WAAXA,gBAA2B;AACpC,SAAoB,WAAXA,gBAAqC;AAC9C,SAAoB,WAAXA,gBAA6B;AACtC,SAAoB,WAAXA,gBAAgC;AACzC,SAAoB,WAAXA,gBAAiC;AAC1C,SAAoB,WAAXA,gBAA6B;AACtC,SAAoB,WAAXA,gBAAiC;AAC1C,SAAoB,WAAXA,iBAA0B;AACnC,SAAoB,WAAXA,iBAAyB;AAClC,SAAoB,WAAXA,iBAAiC;AAC1C,SAAoB,WAAXA,iBAA+B;AACxC,SAAoB,WAAXA,iBAAgC;AACzC,SAAoB,WAAXA,iBAA6B;AACtC,SAAoB,WAAXA,iBAAgC;AACzC,SAAoB,WAAXA,iBAA6B;AACtC,SAAoB,WAAXA,iBAAoC;AAC7C,SAAoB,WAAXA,iBAAkC;;;AC5B3C,SAAS,wBAAwB;;;ACAjC,SAAS,uBAAuB;;;ACAhC,SAAS,gBAAgB;;;ACAzB,SAAS,WAAW,gBAAgB;AAC7B,IAAM,UAAU;;;ADgBhB,SAAS,oBAAoB,MAAM;AACtC,SAAO,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AACjD;;;AEXO,SAAS,WAAW,UAAU,MAAM;AACvC,MAAI,MAAM,QAAQ,QAAQ;AACtB,WAAO,QAAQ,QAAQ;AAC3B,MAAI,YAAY;AACZ,WAAO,CAAC;AACZ,SAAO,oBAAoB,IAAI;AAC/B,QAAM,MAAM,OAAO,KAAK,QAAQ,EAC3B,KAAK,CAAC,GAAG,MAAM;AAChB,WAAO,EAAE,MAAM,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE;AAAA,EAC9C,CAAC,EACI,KAAK,CAACC,SAAQ;AAEf,WAAO,KAAK,WAAW,oBAAoBA,IAAG,CAAC;AAAA,EACnD,CAAC;AACD,QAAM,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC;AACvC,SAAO,MAAM,QAAQ,OAAO,IACtB,QAAQ,OAAO,IACf,QAAQ,QAAQ,OAAO,QAAQ,IAAI;AAC7C;AAIO,SAAS,iBAAiB,SAAS;AACtC,QAAM,SAAS,CAAC;AAChB,MAAI,iBAAiB;AACrB,aAAW,SAAS,SAAS;AACzB,UAAM,OAAO,QAAQ,KAAK;AAC1B,QAAI,KAAK,OAAO;AACZ,uBAAiB,OAAO,KAAK,IAAI;AACjC;AAAA,IACJ;AACA,QAAI,CAAC,OAAO,cAAc,GAAG;AACzB,aAAO,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AAAA,IAC7B;AACA,WAAO,cAAc,EAAE,MAAM,KAAK,IAAI;AAAA,EAC1C;AACA,SAAO;AACX;AAiCA,SAAS,QAAQ,OAAO,OAAO;AAC3B,SAAO,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU;AAC7B,UAAM,OAAO,EAAE,GAAG,MAAM;AACxB,UAAM,OAAO,KAAK,QAAQ;AAC1B,QAAI,QAAQ,KAAK;AACb,WAAK,OAAO,OAAO,KAAK;AAC5B,QAAI,KAAK;AACL,WAAK,QAAQ,QAAQ,KAAK,OAAO,IAAI;AACzC,WAAO;AAAA,EACX,CAAC;AACL;;;ACnFO,SAAS,aAAa;AACzB,QAAM,EAAE,aAAa,MAAM,OAAAC,OAAM,IAAI,QAAQ;AAC7C,QAAM,QAAQ,cAAc,oBAAoB;AAChD,QAAM,SAAS,IAAI,KAAK;AACxB,QAAM,WAAW,SAAS,MAAM;AAC5B,UAAM,gBAAgBA,OAAM,MAAM;AAClC,UAAM,eAAe,KAAK,MAAM;AAChC,WAAO,gBAAgB,WAAW,eAAe,YAAY,IAAI,CAAC;AAAA,EACtE,CAAC;AACD,QAAM,UAAU,IAAI,SAAS,KAAK;AAClC,QAAM,UAAU,CAAC,MAAM,SAAS;AAC5B,QAAI,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,IAAI;AAC5C,cAAQ,QAAQ,SAAS;AAAA,EACjC,CAAC;AACD,QAAM,aAAa,SAAS,MAAM;AAC9B,WAAQ,YAAY,MAAM,YAAY,SAClC,QAAQ,MAAM,SAAS,KACvB,YAAY,MAAM,WAAW;AAAA,EACrC,CAAC;AACD,QAAM,YAAY,SAAS,MAAM;AAC7B,QAAI;AACA,aAAO,YAAY,MAAM,SAAS,OAC5BA,OAAM,MAAM,UAAU,SACtB,YAAY,MAAM,UAAU;AACtC,WAAO;AAAA,EACX,CAAC;AACD,QAAM,WAAW,SAAS,MAAM;AAC5B,QAAI,YAAY,MAAM,WAAW;AAC7B,aAAO;AACX,QAAI,YAAY,MAAM,SAAS;AAC3B,aAAO,CAAC,CAAC,YAAY,MAAM;AAC/B,WAAOA,OAAM,MAAM,UAAU;AAAA,EACjC,CAAC;AACD,QAAM,mBAAmB,SAAS,MAAM,WAAW,SAAS,MAAM,KAAK;AACvE,QAAM,gBAAgB,SAAS,MAAM;AACjC,WAAO,WAAW,QAAQ,iBAAiB,QAAQ,KAAK,IAAI,CAAC;AAAA,EACjE,CAAC;AACD,WAAS,OAAO;AACZ,WAAO,QAAQ;AAAA,EACnB;AACA,WAAS,QAAQ;AACb,WAAO,QAAQ;AAAA,EACnB;AACA,WAAS,SAAS;AACd,WAAO,QAAQ,MAAM,IAAI,KAAK;AAAA,EAClC;AACA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;;;AJ3DA,IAAM,WAAW;AAEjB,IAAM,kBAAkB,CAAC;AAQlB,SAAS,WAAW,OAAO;AAC9B,QAAM,UAAU;AAAA,IACZ,GAAG,SAAS,iBAAiB,kCAAkC;AAAA,EACnE,EACK,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC,EAC1C,IAAI,CAAC,OAAO;AACb,UAAM,QAAQ,OAAO,GAAG,QAAQ,CAAC,CAAC;AAClC,WAAO;AAAA,MACH,SAAS;AAAA,MACT,OAAO,gBAAgB,EAAE;AAAA,MACzB,MAAM,MAAM,GAAG;AAAA,MACf;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,SAAO,eAAe,SAAS,KAAK;AACxC;AACA,SAAS,gBAAgB,GAAG;AACxB,MAAI,MAAM;AACV,aAAW,QAAQ,EAAE,YAAY;AAC7B,QAAI,KAAK,aAAa,GAAG;AACrB,UAAI,SAAS,KAAK,KAAK,SAAS;AAC5B;AACJ,aAAO,KAAK;AAAA,IAChB,WACS,KAAK,aAAa,GAAG;AAC1B,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AACA,SAAO,IAAI,KAAK;AACpB;AACO,SAAS,eAAe,SAAS,OAAO;AAC3C,MAAI,UAAU,OAAO;AACjB,WAAO,CAAC;AAAA,EACZ;AACA,QAAM,eAAe,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAChE,MAAM,QACN,UAAU;AAChB,QAAM,CAAC,MAAM,GAAG,IAAI,OAAO,gBAAgB,WACrC,CAAC,aAAa,WAAW,IACzB,gBAAgB,SACZ,CAAC,GAAG,CAAC,IACL;AACV,SAAO,UAAU,SAAS,MAAM,GAAG;AACvC;AA8FA,SAAS,UAAU,MAAM,KAAK,KAAK;AAC/B,kBAAgB,SAAS;AACzB,QAAM,SAAS,CAAC;AAChB,QAAM,QAAQ,CAAC;AACf,OAAK,QAAQ,CAAC,SAAS;AACnB,UAAM,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE;AACrC,QAAI,SAAS,MAAM,MAAM,SAAS,CAAC;AACnC,WAAO,UAAU,OAAO,SAAS,KAAK,OAAO;AACzC,YAAM,IAAI;AACV,eAAS,MAAM,MAAM,SAAS,CAAC;AAAA,IACnC;AACA,QAAI,KAAK,QAAQ,UAAU,SAAS,eAAe,KAC9C,UAAU,kBAAkB,QAAS;AACtC,YAAM,KAAK,EAAE,OAAO,KAAK,OAAO,cAAc,KAAK,CAAC;AACpD;AAAA,IACJ;AACA,QAAI,KAAK,QAAQ,OAAO,KAAK,QAAQ;AACjC;AACJ,oBAAgB,KAAK,EAAE,SAAS,KAAK,SAAS,MAAM,KAAK,KAAK,CAAC;AAC/D,QAAI;AACA,aAAO,SAAS,KAAK,IAAI;AAAA;AAEzB,aAAO,KAAK,IAAI;AACpB,UAAM,KAAK,IAAI;AAAA,EACnB,CAAC;AACD,SAAO;AACX;;;AD7KO,SAAS,cAAc;AAC1B,QAAM,EAAE,OAAAC,QAAO,YAAY,IAAI,QAAQ;AACvC,QAAM,UAAU,WAAW,CAAC,CAAC;AAC7B,QAAM,cAAc,SAAS,MAAM;AAC/B,WAAO,QAAQ,MAAM,SAAS;AAAA,EAClC,CAAC;AACD,mBAAiB,MAAM;AACnB,YAAQ,QAAQ,WAAW,YAAY,MAAM,WAAWA,OAAM,MAAM,OAAO;AAAA,EAC/E,CAAC;AACD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;;;ADcA,IAAM,QAAQ;AAAA,EACV;AAAA,EACA,YAAY,CAAC,EAAE,IAAI,MAAM;AACrB,QAAI,UAAU,SAAS,OAAO;AAAA,EAClC;AACJ;AACA,IAAO,wBAAQ;", + "names": ["default", "dir", "theme", "theme"] +} diff --git a/docs/.vitepress/cache/deps/_metadata.json b/docs/.vitepress/cache/deps/_metadata.json new file mode 100644 index 0000000..24fb0d1 --- /dev/null +++ b/docs/.vitepress/cache/deps/_metadata.json @@ -0,0 +1,40 @@ +{ + "hash": "21d4be50", + "configHash": "a1405a8e", + "lockfileHash": "f052b98e", + "browserHash": "2e12d1d9", + "optimized": { + "vue": { + "src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", + "file": "vue.js", + "fileHash": "3a73e88d", + "needsInterop": false + }, + "vitepress > @vue/devtools-api": { + "src": "../../../../node_modules/.pnpm/@vue+devtools-api@7.7.2/node_modules/@vue/devtools-api/dist/index.js", + "file": "vitepress___@vue_devtools-api.js", + "fileHash": "7397da3c", + "needsInterop": false + }, + "vitepress > @vueuse/core": { + "src": "../../../../node_modules/.pnpm/@vueuse+core@12.8.2/node_modules/@vueuse/core/index.mjs", + "file": "vitepress___@vueuse_core.js", + "fileHash": "d783c345", + "needsInterop": false + }, + "@theme/index": { + "src": "../../../../node_modules/.pnpm/vitepress@1.6.3_@algolia+client-search@5.23.3_postcss@8.5.3_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/index.js", + "file": "@theme_index.js", + "fileHash": "7240d99d", + "needsInterop": false + } + }, + "chunks": { + "chunk-O4DXW3DK": { + "file": "chunk-O4DXW3DK.js" + }, + "chunk-AU3CLKKL": { + "file": "chunk-AU3CLKKL.js" + } + } +} \ No newline at end of file diff --git a/docs/.vitepress/cache/deps/chunk-AU3CLKKL.js b/docs/.vitepress/cache/deps/chunk-AU3CLKKL.js new file mode 100644 index 0000000..9263a20 --- /dev/null +++ b/docs/.vitepress/cache/deps/chunk-AU3CLKKL.js @@ -0,0 +1,11440 @@ +// node_modules/@vue/shared/dist/shared.esm-bundler.js +function makeMap(str, expectsLowerCase) { + const set2 = new Set(str.split(",")); + return expectsLowerCase ? (val) => set2.has(val.toLowerCase()) : (val) => set2.has(val); +} +var EMPTY_OBJ = true ? Object.freeze({}) : {}; +var EMPTY_ARR = true ? Object.freeze([]) : []; +var NOOP = () => { +}; +var NO = () => false; +var isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +var isModelListener = (key) => key.startsWith("onUpdate:"); +var extend = Object.assign; +var remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hasOwn = (val, key) => hasOwnProperty.call(val, key); +var isArray = Array.isArray; +var isMap = (val) => toTypeString(val) === "[object Map]"; +var isSet = (val) => toTypeString(val) === "[object Set]"; +var isDate = (val) => toTypeString(val) === "[object Date]"; +var isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +var isFunction = (val) => typeof val === "function"; +var isString = (val) => typeof val === "string"; +var isSymbol = (val) => typeof val === "symbol"; +var isObject = (val) => val !== null && typeof val === "object"; +var isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +var objectToString = Object.prototype.toString; +var toTypeString = (value) => objectToString.call(value); +var toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +var isPlainObject = (val) => toTypeString(val) === "[object Object]"; +var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +var isReservedProp = makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +var isBuiltInDirective = makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +var cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +var camelizeRE = /-(\w)/g; +var camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +var capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +var toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +var hasChanged = (value, oldValue) => !Object.is(value, oldValue); +var invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +var def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +var looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +var toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +var _globalThis; +var getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +var GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"; +var isGloballyAllowed = makeMap(GLOBALS_ALLOWED); +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +var listDelimiterRE = /;(?![^(]*\))/g; +var propertyDelimiterRE = /:([^]+)/; +var styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} +var HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +var SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +var MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +var VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +var isHTMLTag = makeMap(HTML_TAGS); +var isSVGTag = makeMap(SVG_TAGS); +var isMathMLTag = makeMap(MATH_TAGS); +var isVoidTag = makeMap(VOID_TAGS); +var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +var isSpecialBooleanAttr = makeMap(specialBooleanAttrs); +var isBooleanAttr = makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +var isKnownHtmlAttr = makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +var isKnownSvgAttr = makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} +var isRef = (val) => { + return !!(val && val.__v_isRef === true); +}; +var toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +var replacer = (_key, val) => { + if (isRef(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +var stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} +var activeEffectScope; +var EffectScope = class { + constructor(detached = false) { + this.detached = detached; + this._active = true; + this.effects = []; + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else if (true) { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +}; +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect2, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect2); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (true) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} +var activeEffect; +var ReactiveEffect = class { + constructor(fn, trigger2, scheduler, scope) { + this.fn = fn; + this.trigger = trigger2; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this._dirtyLevel = 4; + this._trackId = 0; + this._runnings = 0; + this._shouldSchedule = false; + this._depsLength = 0; + recordEffectScope(this, scope); + } + get dirty() { + if (this._dirtyLevel === 2 || this._dirtyLevel === 3) { + this._dirtyLevel = 1; + pauseTracking(); + for (let i = 0; i < this._depsLength; i++) { + const dep = this.deps[i]; + if (dep.computed) { + triggerComputed(dep.computed); + if (this._dirtyLevel >= 4) { + break; + } + } + } + if (this._dirtyLevel === 1) { + this._dirtyLevel = 0; + } + resetTracking(); + } + return this._dirtyLevel >= 4; + } + set dirty(v) { + this._dirtyLevel = v ? 4 : 0; + } + run() { + this._dirtyLevel = 0; + if (!this.active) { + return this.fn(); + } + let lastShouldTrack = shouldTrack; + let lastEffect = activeEffect; + try { + shouldTrack = true; + activeEffect = this; + this._runnings++; + preCleanupEffect(this); + return this.fn(); + } finally { + postCleanupEffect(this); + this._runnings--; + activeEffect = lastEffect; + shouldTrack = lastShouldTrack; + } + } + stop() { + if (this.active) { + preCleanupEffect(this); + postCleanupEffect(this); + this.onStop && this.onStop(); + this.active = false; + } + } +}; +function triggerComputed(computed3) { + return computed3.value; +} +function preCleanupEffect(effect2) { + effect2._trackId++; + effect2._depsLength = 0; +} +function postCleanupEffect(effect2) { + if (effect2.deps.length > effect2._depsLength) { + for (let i = effect2._depsLength; i < effect2.deps.length; i++) { + cleanupDepEffect(effect2.deps[i], effect2); + } + effect2.deps.length = effect2._depsLength; + } +} +function cleanupDepEffect(dep, effect2) { + const trackId = dep.get(effect2); + if (trackId !== void 0 && effect2._trackId !== trackId) { + dep.delete(effect2); + if (dep.size === 0) { + dep.cleanup(); + } + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn, NOOP, () => { + if (_effect.dirty) { + _effect.run(); + } + }); + if (options) { + extend(_effect, options); + if (options.scope) recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +var shouldTrack = true; +var pauseScheduleStack = 0; +var trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function pauseScheduling() { + pauseScheduleStack++; +} +function resetScheduling() { + pauseScheduleStack--; + while (!pauseScheduleStack && queueEffectSchedulers.length) { + queueEffectSchedulers.shift()(); + } +} +function trackEffect(effect2, dep, debuggerEventExtraInfo) { + var _a; + if (dep.get(effect2) !== effect2._trackId) { + dep.set(effect2, effect2._trackId); + const oldDep = effect2.deps[effect2._depsLength]; + if (oldDep !== dep) { + if (oldDep) { + cleanupDepEffect(oldDep, effect2); + } + effect2.deps[effect2._depsLength++] = dep; + } else { + effect2._depsLength++; + } + if (true) { + (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + } +} +var queueEffectSchedulers = []; +function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { + var _a; + pauseScheduling(); + for (const effect2 of dep.keys()) { + let tracking; + if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0); + effect2._dirtyLevel = dirtyLevel; + } + if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + if (true) { + (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + effect2.trigger(); + if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) { + effect2._shouldSchedule = false; + if (effect2.scheduler) { + queueEffectSchedulers.push(effect2.scheduler); + } + } + } + } + resetScheduling(); +} +var createDep = (cleanup, computed3) => { + const dep = /* @__PURE__ */ new Map(); + dep.cleanup = cleanup; + dep.computed = computed3; + return dep; +}; +var targetMap = /* @__PURE__ */ new WeakMap(); +var ITERATE_KEY = Symbol(true ? "iterate" : ""); +var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : ""); +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep(() => depsMap.delete(key))); + } + trackEffect( + activeEffect, + dep, + true ? { + target, + type, + key + } : void 0 + ); + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + pauseScheduling(); + for (const dep of deps) { + if (dep) { + triggerEffects( + dep, + 4, + true ? { + target, + type, + key, + newValue, + oldValue, + oldTarget + } : void 0 + ); + } + } + resetScheduling(); +} +function getDepFromReactive(object, key) { + const depsMap = targetMap.get(object); + return depsMap && depsMap.get(key); +} +var isNonTrackableKeys = makeMap(`__proto__,__v_isRef,__isVue`); +var builtInSymbols = new Set( + Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +var arrayInstrumentations = createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + pauseScheduling(); + const res = toRaw(this)[key].apply(this, args); + resetScheduling(); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty2(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +var BaseReactiveHandler = class { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the reciever is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty2; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef2(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +}; +var MutableReactiveHandler = class extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef2(oldValue) && !isRef2(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +}; +var ReadonlyReactiveHandler = class extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + if (true) { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + if (true) { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +}; +var mutableHandlers = new MutableReactiveHandler(); +var readonlyHandlers = new ReadonlyReactiveHandler(); +var shallowReactiveHandlers = new MutableReactiveHandler( + true +); +var shallowReadonlyHandlers = new ReadonlyReactiveHandler(true); +var toShallow = (value) => value; +var getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly2 = false, isShallow2 = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly2 = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly2 = false) { + target = target["__v_raw"]; + !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else if (true) { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else if (true) { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly2, isShallow2) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + if (true) { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod(method, false, false); + readonlyInstrumentations2[method] = createIterableMethod(method, true, false); + shallowInstrumentations2[method] = createIterableMethod(method, false, true); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +var [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = createInstrumentations(); +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +var mutableCollectionHandlers = { + get: createInstrumentationGetter(false, false) +}; +var shallowCollectionHandlers = { + get: createInstrumentationGetter(false, true) +}; +var readonlyCollectionHandlers = { + get: createInstrumentationGetter(true, false) +}; +var shallowReadonlyCollectionHandlers = { + get: createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} +var reactiveMap = /* @__PURE__ */ new WeakMap(); +var shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +var readonlyMap = /* @__PURE__ */ new WeakMap(); +var shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2; + default: + return 0; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + if (true) { + warn( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +var toReactive = (value) => isObject(value) ? reactive(value) : value; +var toReadonly = (value) => isObject(value) ? readonly(value) : value; +var COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`; +var ComputedRefImpl = class { + constructor(getter, _setter, isReadonly2, isSSR) { + this.getter = getter; + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this.effect = new ReactiveEffect( + () => getter(this._value), + () => triggerRefValue( + this, + this.effect._dirtyLevel === 2 ? 2 : 3 + ) + ); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly2; + } + get value() { + const self2 = toRaw(this); + if ((!self2._cacheable || self2.effect.dirty) && hasChanged(self2._value, self2._value = self2.effect.run())) { + triggerRefValue(self2, 4); + } + trackRefValue(self2); + if (self2.effect._dirtyLevel >= 2) { + if (this._warnRecursive) { + warn(COMPUTED_SIDE_EFFECT_WARN, ` + +getter: `, this.getter); + } + triggerRefValue(self2, 2); + } + return self2._value; + } + set value(newValue) { + this._setter(newValue); + } + // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x + get _dirty() { + return this.effect.dirty; + } + set _dirty(v) { + this.effect.dirty = v; + } + // #endregion +}; +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = true ? () => { + warn("Write operation failed: computed value is readonly"); + } : NOOP; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} +function trackRefValue(ref2) { + var _a; + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + trackEffect( + activeEffect, + (_a = ref2.dep) != null ? _a : ref2.dep = createDep( + () => ref2.dep = void 0, + ref2 instanceof ComputedRefImpl ? ref2 : void 0 + ), + true ? { + target: ref2, + type: "get", + key: "value" + } : void 0 + ); + } +} +function triggerRefValue(ref2, dirtyLevel = 4, newVal, oldVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + triggerEffects( + dep, + dirtyLevel, + true ? { + target: ref2, + type: "set", + key: "value", + newValue: newVal, + oldValue: oldVal + } : void 0 + ); + } +} +function isRef2(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef2(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +var RefImpl = class { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + const oldVal = this._rawValue; + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, 4, newVal, oldVal); + } + } +}; +function triggerRef(ref2) { + triggerRefValue(ref2, 4, true ? ref2.value : void 0); +} +function unref(ref2) { + return isRef2(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +var shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef2(oldValue) && !isRef2(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +var CustomRefImpl = class { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get: get2, set: set2 } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get2; + this._set = set2; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +}; +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +var ObjectRefImpl = class { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +}; +var GetterRefImpl = class { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +}; +function toRef(source, key, defaultValue) { + if (isRef2(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef2(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} +var TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +var TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; + +// node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +var stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn$1(msg, ...args) { + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef2(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (false) return; + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} +var ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER" +}; +var ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ." +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else if (true) { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = true ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + pauseTracking(); + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + if (true) { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } else { + console.error(err); + } +} +var isFlushing = false; +var isFlushPending = false; +var queue = []; +var flushIndex = 0; +var pendingPostFlushCbs = []; +var activePostFlushCbs = null; +var postFlushIndex = 0; +var resolvedPromise = Promise.resolve(); +var currentFlushPromise = null; +var RECURSION_LIMIT = 100; +function nextTick(fn) { + const p2 = currentFlushPromise || resolvedPromise; + return fn ? p2.then(this ? fn.bind(this) : fn) : p2; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.active !== false) cb(); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +var getId = (job) => job.id == null ? Infinity : job.id; +var comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) return -1; + if (b.pre && !a.pre) return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = true ? (job) => checkRecursiveUpdates(seen, job) : NOOP; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} +var isHmrUpdating = false; +var hmrDirtyComponents = /* @__PURE__ */ new Set(); +if (true) { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +var map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.effect.dirty = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + instance.parent.effect.dirty = true; + queueJob(() => { + instance.parent.update(); + hmrDirtyComponents.delete(oldComp); + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} +var devtools$1; +var buffer = []; +var devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version2) { + emit$1("app:init", app, version2, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount", app); +} +var devtoolsComponentAdded = createDevtoolsComponentHook( + "component:added" + /* COMPONENT_ADDED */ +); +var devtoolsComponentUpdated = createDevtoolsComponentHook( + "component:updated" + /* COMPONENT_UPDATED */ +); +var _devtoolsComponentRemoved = createDevtoolsComponentHook( + "component:removed" + /* COMPONENT_REMOVED */ +); +var devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +var devtoolsPerfStart = createDevtoolsPerformanceHook( + "perf:start" + /* PERFORMANCE_START */ +); +var devtoolsPerfEnd = createDevtoolsPerformanceHook( + "perf:end" + /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit", + component.appContext.app, + component, + event, + params + ); +} +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || EMPTY_OBJ; + if (true) { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener2 = event.startsWith("update:"); + const modelArg = isModelListener2 && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + if (true) { + devtoolsComponentEmit(instance, event, args); + } + if (true) { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener2) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (__VUE_OPTIONS_API__ && !isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} +var currentRenderingInstance = null; +var currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +var withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + if (true) { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} +var accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit: emit2, + render: render2, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + if (true) { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render2.call( + thisProxy, + proxyToUse, + renderCache, + true ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render22 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render22.length > 1 ? render22( + true ? shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit: emit2 + } : { attrs, slots, emit: emit2 } + ) : render22( + true ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +var getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +var getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +var filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +var isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} +var COMPONENTS = "components"; +var DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +var NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else if (true) { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} +var isSuspense = (type) => type.__isSuspense; +var suspenseId = 0; +var SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +var Suspense = SuspenseImpl; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +var hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove: remove2 } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + if (true) { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + if (true) { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) !== suspense.hiddenContainer) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + if (true) { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove2(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (true) { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else if (true) { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` + ); + } +} +var createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +var onBeforeMount = createHook("bm"); +var onMounted = createHook("m"); +var onBeforeUpdate = createHook("bu"); +var onUpdated = createHook("u"); +var onBeforeUnmount = createHook("bum"); +var onUnmounted = createHook("um"); +var onServerPrefetch = createHook("sp"); +var onRenderTriggered = createHook( + "rtg" +); +var onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} +var isAsyncWrapper = (i) => !!i.type.__asyncLoader; +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve2, reject) => { + const userRetry = () => resolve2(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} +var getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +var publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => true ? shallowReadonly(i.props) : i.props, + $attrs: (i) => true ? shallowReadonly(i.attrs) : i.attrs, + $slots: (i) => true ? shallowReadonly(i.slots) : i.slots, + $refs: (i) => true ? shallowReadonly(i.refs) : i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type, + $forceUpdate: (i) => i.f || (i.f = () => { + i.effect.dirty = true; + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP + }) +); +var isReservedPrefix = (key) => key === "_" || key === "$"; +var hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +var PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1: + return setupState[key]; + case 2: + return data[key]; + case 4: + return ctx[key]; + case 3: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) { + accessCache[key] = 0; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate