From d1d9cc613c4975d171ad6b5885f341ad209abcd7 Mon Sep 17 00:00:00 2001 From: COOL Date: Mon, 15 Jul 2024 17:51:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84?= 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 +++--- .../dist/assets/{app.BU4S0woS.js => app.DwJPuxiX.js} | 2 +- .../assets/chunks/@localSearchIndexroot.Bk7JD0Vp.js | 1 - .../assets/chunks/@localSearchIndexroot.a2jsn6zp.js | 1 + ...rchBox.a2Mj6NA7.js => VPLocalSearchBox.LRdAF0PT.js} | 2 +- .../chunks/{theme.C9P7FTri.js => theme.DrrvWx3n.js} | 4 ++-- ...e_ai.md.C2wKEBKg.js => src_guide_ai.md.CQr0rH-R.js} | 2 +- ...wKEBKg.lean.js => src_guide_ai.md.CQr0rH-R.lean.js} | 2 +- ...e.md.BhqP_wiC.js => src_guide_cache.md.sFO9ncvK.js} | 2 +- ...wiC.lean.js => src_guide_cache.md.sFO9ncvK.lean.js} | 2 +- ...DFXsvLef.js => src_guide_controller.md.CKU6QhGJ.js} | 2 +- ...ean.js => src_guide_controller.md.CKU6QhGJ.lean.js} | 2 +- .vitepress/dist/assets/src_guide_db.md.CW_Li52O.js | 1 + .../dist/assets/src_guide_db.md.CW_Li52O.lean.js | 1 + .vitepress/dist/assets/src_guide_db.md.JecGjjcC.js | 1 - .../dist/assets/src_guide_db.md.JecGjjcC.lean.js | 1 - ...dev.md.Cgkglw3x.js => src_guide_dev.md.BolOgpNe.js} | 4 ++-- ...glw3x.lean.js => src_guide_dev.md.BolOgpNe.lean.js} | 2 +- ...dir.md.z6VUJtso.js => src_guide_dir.md.yr-Ujx3e.js} | 2 +- .../dist/assets/src_guide_dir.md.yr-Ujx3e.lean.js | 1 + .../dist/assets/src_guide_dir.md.z6VUJtso.lean.js | 1 - ....DTaAZohQ.js => src_guide_exception.md.BnNhx80g.js} | 2 +- ...lean.js => src_guide_exception.md.BnNhx80g.lean.js} | 2 +- ...ow.md.CDskEDnP.js => src_guide_flow.md.DW-rwMWD.js} | 2 +- ...EDnP.lean.js => src_guide_flow.md.DW-rwMWD.lean.js} | 2 +- ...d.D5kMLxxc.js => src_guide_initData.md.xxcXuYBs.js} | 2 +- ....lean.js => src_guide_initData.md.xxcXuYBs.lean.js} | 2 +- ....md.D4um12uG.js => src_guide_plugin.md.D3cyKMhP.js} | 2 +- ...uG.lean.js => src_guide_plugin.md.D3cyKMhP.lean.js} | 2 +- ...k.md.DbcQSNam.js => src_guide_quick.md.BnN2Y-B1.js} | 2 +- ...Nam.lean.js => src_guide_quick.md.BnN2Y-B1.lean.js} | 2 +- ...d.DjyHN9T3.js => src_guide_security.md.DhNBVqnr.js} | 2 +- ....lean.js => src_guide_security.md.DhNBVqnr.lean.js} | 2 +- .../dist/assets/src_guide_service.md.Coeaaupo.lean.js | 1 - ...md.Coeaaupo.js => src_guide_service.md.NY_1YFAS.js} | 2 +- .../dist/assets/src_guide_service.md.NY_1YFAS.lean.js | 1 + ....md.DSE1ASmj.js => src_guide_upload.md.B0f_XRGJ.js} | 2 +- ...mj.lean.js => src_guide_upload.md.B0f_XRGJ.lean.js} | 2 +- ....CqGpQfmF.js => src_introduce_index.md.BzftqBMQ.js} | 2 +- ...lean.js => src_introduce_index.md.BzftqBMQ.lean.js} | 2 +- ...md.ByQ4FCeZ.js => src_introduce_src.md.DzCw-0KZ.js} | 2 +- ...Z.lean.js => src_introduce_src.md.DzCw-0KZ.lean.js} | 2 +- .../dist/assets/src_question_common.md.BDnOx12Z.js | 1 - .../assets/src_question_common.md.BDnOx12Z.lean.js | 1 - .../dist/assets/src_question_common.md.DWynvsYj.js | 1 + .../assets/src_question_common.md.DWynvsYj.lean.js | 1 + .vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.js | 1 - .../dist/assets/src_todo_plan.md.BzDFnPcU.lean.js | 1 - .vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.js | 1 + .../dist/assets/src_todo_plan.md.Cc4G0Y6B.lean.js | 1 + .vitepress/dist/assets/src_todo_update.md.BLutrh4G.js | 1 - .vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.js | 1 + ...h4G.lean.js => src_todo_update.md.Mxoj04Uf.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 | 10 +++++----- .vitepress/dist/src/guide/cache.html | 10 +++++----- .vitepress/dist/src/guide/controller.html | 10 +++++----- .vitepress/dist/src/guide/db.html | 10 +++++----- .vitepress/dist/src/guide/dev.html | 10 +++++----- .vitepress/dist/src/guide/dir.html | 10 +++++----- .vitepress/dist/src/guide/exception.html | 10 +++++----- .vitepress/dist/src/guide/flow.html | 10 +++++----- .vitepress/dist/src/guide/initData.html | 10 +++++----- .vitepress/dist/src/guide/plugin.html | 10 +++++----- .vitepress/dist/src/guide/quick.html | 10 +++++----- .vitepress/dist/src/guide/security.html | 10 +++++----- .vitepress/dist/src/guide/service.html | 10 +++++----- .vitepress/dist/src/guide/swagger.html | 6 +++--- .vitepress/dist/src/guide/upload.html | 10 +++++----- .vitepress/dist/src/introduce/index.html | 10 +++++----- .vitepress/dist/src/introduce/show.html | 6 +++--- .vitepress/dist/src/introduce/src.html | 10 +++++----- .vitepress/dist/src/question/common.html | 10 +++++----- .vitepress/dist/src/todo/plan.html | 10 +++++----- .vitepress/dist/src/todo/update.html | 10 +++++----- src/todo/plan.md | 9 ++++++--- src/todo/update.md | 5 +++++ 80 files changed, 168 insertions(+), 160 deletions(-) rename .vitepress/dist/assets/{app.BU4S0woS.js => app.DwJPuxiX.js} (95%) delete mode 100644 .vitepress/dist/assets/chunks/@localSearchIndexroot.Bk7JD0Vp.js create mode 100644 .vitepress/dist/assets/chunks/@localSearchIndexroot.a2jsn6zp.js rename .vitepress/dist/assets/chunks/{VPLocalSearchBox.a2Mj6NA7.js => VPLocalSearchBox.LRdAF0PT.js} (99%) rename .vitepress/dist/assets/chunks/{theme.C9P7FTri.js => theme.DrrvWx3n.js} (99%) rename .vitepress/dist/assets/{src_guide_ai.md.C2wKEBKg.js => src_guide_ai.md.CQr0rH-R.js} (85%) rename .vitepress/dist/assets/{src_guide_ai.md.C2wKEBKg.lean.js => src_guide_ai.md.CQr0rH-R.lean.js} (85%) rename .vitepress/dist/assets/{src_guide_cache.md.BhqP_wiC.js => src_guide_cache.md.sFO9ncvK.js} (99%) rename .vitepress/dist/assets/{src_guide_cache.md.BhqP_wiC.lean.js => src_guide_cache.md.sFO9ncvK.lean.js} (84%) rename .vitepress/dist/assets/{src_guide_controller.md.DFXsvLef.js => src_guide_controller.md.CKU6QhGJ.js} (99%) rename .vitepress/dist/assets/{src_guide_controller.md.DFXsvLef.lean.js => src_guide_controller.md.CKU6QhGJ.lean.js} (85%) create mode 100644 .vitepress/dist/assets/src_guide_db.md.CW_Li52O.js create mode 100644 .vitepress/dist/assets/src_guide_db.md.CW_Li52O.lean.js delete mode 100644 .vitepress/dist/assets/src_guide_db.md.JecGjjcC.js delete mode 100644 .vitepress/dist/assets/src_guide_db.md.JecGjjcC.lean.js rename .vitepress/dist/assets/{src_guide_dev.md.Cgkglw3x.js => src_guide_dev.md.BolOgpNe.js} (70%) rename .vitepress/dist/assets/{src_guide_dev.md.Cgkglw3x.lean.js => src_guide_dev.md.BolOgpNe.lean.js} (58%) rename .vitepress/dist/assets/{src_guide_dir.md.z6VUJtso.js => src_guide_dir.md.yr-Ujx3e.js} (77%) create mode 100644 .vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.lean.js delete mode 100644 .vitepress/dist/assets/src_guide_dir.md.z6VUJtso.lean.js rename .vitepress/dist/assets/{src_guide_exception.md.DTaAZohQ.js => src_guide_exception.md.BnNhx80g.js} (99%) rename .vitepress/dist/assets/{src_guide_exception.md.DTaAZohQ.lean.js => src_guide_exception.md.BnNhx80g.lean.js} (85%) rename .vitepress/dist/assets/{src_guide_flow.md.CDskEDnP.js => src_guide_flow.md.DW-rwMWD.js} (95%) rename .vitepress/dist/assets/{src_guide_flow.md.CDskEDnP.lean.js => src_guide_flow.md.DW-rwMWD.lean.js} (85%) rename .vitepress/dist/assets/{src_guide_initData.md.D5kMLxxc.js => src_guide_initData.md.xxcXuYBs.js} (99%) rename .vitepress/dist/assets/{src_guide_initData.md.D5kMLxxc.lean.js => src_guide_initData.md.xxcXuYBs.lean.js} (85%) rename .vitepress/dist/assets/{src_guide_plugin.md.D4um12uG.js => src_guide_plugin.md.D3cyKMhP.js} (99%) rename .vitepress/dist/assets/{src_guide_plugin.md.D4um12uG.lean.js => src_guide_plugin.md.D3cyKMhP.lean.js} (85%) rename .vitepress/dist/assets/{src_guide_quick.md.DbcQSNam.js => src_guide_quick.md.BnN2Y-B1.js} (99%) rename .vitepress/dist/assets/{src_guide_quick.md.DbcQSNam.lean.js => src_guide_quick.md.BnN2Y-B1.lean.js} (85%) rename .vitepress/dist/assets/{src_guide_security.md.DjyHN9T3.js => src_guide_security.md.DhNBVqnr.js} (99%) rename .vitepress/dist/assets/{src_guide_security.md.DjyHN9T3.lean.js => src_guide_security.md.DhNBVqnr.lean.js} (70%) delete mode 100644 .vitepress/dist/assets/src_guide_service.md.Coeaaupo.lean.js rename .vitepress/dist/assets/{src_guide_service.md.Coeaaupo.js => src_guide_service.md.NY_1YFAS.js} (79%) create mode 100644 .vitepress/dist/assets/src_guide_service.md.NY_1YFAS.lean.js rename .vitepress/dist/assets/{src_guide_upload.md.DSE1ASmj.js => src_guide_upload.md.B0f_XRGJ.js} (98%) rename .vitepress/dist/assets/{src_guide_upload.md.DSE1ASmj.lean.js => src_guide_upload.md.B0f_XRGJ.lean.js} (70%) rename .vitepress/dist/assets/{src_introduce_index.md.CqGpQfmF.js => src_introduce_index.md.BzftqBMQ.js} (98%) rename .vitepress/dist/assets/{src_introduce_index.md.CqGpQfmF.lean.js => src_introduce_index.md.BzftqBMQ.lean.js} (85%) rename .vitepress/dist/assets/{src_introduce_src.md.ByQ4FCeZ.js => src_introduce_src.md.DzCw-0KZ.js} (96%) rename .vitepress/dist/assets/{src_introduce_src.md.ByQ4FCeZ.lean.js => src_introduce_src.md.DzCw-0KZ.lean.js} (85%) delete mode 100644 .vitepress/dist/assets/src_question_common.md.BDnOx12Z.js delete mode 100644 .vitepress/dist/assets/src_question_common.md.BDnOx12Z.lean.js create mode 100644 .vitepress/dist/assets/src_question_common.md.DWynvsYj.js create mode 100644 .vitepress/dist/assets/src_question_common.md.DWynvsYj.lean.js delete mode 100644 .vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.js delete mode 100644 .vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.lean.js create mode 100644 .vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.js create mode 100644 .vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.lean.js delete mode 100644 .vitepress/dist/assets/src_todo_update.md.BLutrh4G.js create mode 100644 .vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.js rename .vitepress/dist/assets/{src_todo_update.md.BLutrh4G.lean.js => src_todo_update.md.Mxoj04Uf.lean.js} (69%) diff --git a/.vitepress/dist/404.html b/.vitepress/dist/404.html index 33b3911..50f337d 100644 --- a/.vitepress/dist/404.html +++ b/.vitepress/dist/404.html @@ -8,14 +8,14 @@ - +
- + \ No newline at end of file diff --git a/.vitepress/dist/README.html b/.vitepress/dist/README.html index de38767..8695d66 100644 --- a/.vitepress/dist/README.html +++ b/.vitepress/dist/README.html @@ -8,17 +8,17 @@ - + - +
Skip to content

介绍 ​

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

地址 ​

- + \ No newline at end of file diff --git a/.vitepress/dist/assets/app.BU4S0woS.js b/.vitepress/dist/assets/app.DwJPuxiX.js similarity index 95% rename from .vitepress/dist/assets/app.BU4S0woS.js rename to .vitepress/dist/assets/app.DwJPuxiX.js index 5093d58..a9ac0ed 100644 --- a/.vitepress/dist/assets/app.BU4S0woS.js +++ b/.vitepress/dist/assets/app.DwJPuxiX.js @@ -1 +1 @@ -import{U as o,ae as p,af as u,ag as l,ah as c,ai as f,aj as d,ak as m,al as h,am as g,an as A,d as P,u as v,y,x as w,ao as C,ap as R,aq as b,ar as E}from"./chunks/framework.DkvLLw5I.js";import{R as S}from"./chunks/theme.C9P7FTri.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,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}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; +import{U as o,ae as p,af as u,ag as l,ah as c,ai as f,aj as d,ak as m,al as h,am as g,an as A,d as P,u as v,y,x as w,ao as C,ap as R,aq as b,ar as E}from"./chunks/framework.DkvLLw5I.js";import{R as S}from"./chunks/theme.DrrvWx3n.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,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}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; diff --git a/.vitepress/dist/assets/chunks/@localSearchIndexroot.Bk7JD0Vp.js b/.vitepress/dist/assets/chunks/@localSearchIndexroot.Bk7JD0Vp.js deleted file mode 100644 index dfbd929..0000000 --- a/.vitepress/dist/assets/chunks/@localSearchIndexroot.Bk7JD0Vp.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":80,"nextId":80,"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/controller.html#控制器","11":"/src/guide/controller.html#示例","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#重写-getmappingformethod","19":"/src/guide/db.html#数据库","20":"/src/guide/db.html#功能对比","21":"/src/guide/db.html#支持数据库","22":"/src/guide/db.html#自动建表","23":"/src/guide/dev.html#开发方式","24":"/src/guide/dev.html#ai-全自动","25":"/src/guide/dev.html#半自动","26":"/src/guide/dir.html#目录结构","27":"/src/guide/dir.html#结构","28":"/src/guide/exception.html#统一异常处理","29":"/src/guide/exception.html#异常统一捕获","30":"/src/guide/flow.html#ai-流程编排","31":"/src/guide/initData.html#数据初始化","32":"/src/guide/plugin.html#扩展插件","33":"/src/guide/plugin.html#使用插件","34":"/src/guide/plugin.html#_1、安装","35":"/src/guide/plugin.html#_2、调用","36":"/src/guide/plugin.html#_3、配置","37":"/src/guide/plugin.html#开发插件","38":"/src/guide/plugin.html#_1、脚手架","39":"/src/guide/plugin.html#_2、目录结构","40":"/src/guide/plugin.html#_3、开发过程","41":"/src/guide/plugin.html#_4、字段解释","42":"/src/guide/plugin.html#插件详解","43":"/src/guide/plugin.html#打包","44":"/src/guide/plugin.html#安装插件","45":"/src/guide/plugin.html#实现原理","46":"/src/guide/quick.html#快速开始","47":"/src/guide/quick.html#环境准备","48":"/src/guide/quick.html#运行系统","49":"/src/guide/quick.html#_1、拉取源码","50":"/src/guide/quick.html#_2、配置数据库","51":"/src/guide/quick.html#_3、启动后端服务","52":"/src/guide/quick.html#_4、启动前端服务","53":"/src/guide/security.html#权限校验","54":"/src/guide/security.html#配置","55":"/src/guide/security.html#原理","56":"/src/guide/security.html#当前用户","57":"/src/guide/service.html#服务","58":"/src/guide/service.html#crud","59":"/src/guide/service.html#修改前后","60":"/src/guide/swagger.html#swagger-文档","61":"/src/guide/upload.html#文件上传","62":"/src/guide/upload.html#使用","63":"/src/introduce/#简介","64":"/src/introduce/#技术选型","65":"/src/introduce/#一、环境要求","66":"/src/introduce/#二、后端框架","67":"/src/introduce/#三、前端框架","68":"/src/introduce/#为什么选择-cool-admin","69":"/src/introduce/#内置功能","70":"/src/introduce/show.html#演示","71":"/src/introduce/src.html#源码","72":"/src/introduce/src.html#后端-点个-star","73":"/src/introduce/src.html#前端-点个-star","74":"/src/question/common.html#常见问题","75":"/src/question/common.html#_1、找不到类似xxxtabledef文件","76":"/src/todo/plan.html#计划","77":"/src/todo/plan.html#v7-1-1","78":"/src/todo/update.html#更新","79":"/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,7],"8":[1,1,35],"9":[1,1,40],"10":[1,1,15],"11":[1,1,48],"12":[1,1,64],"13":[1,1,57],"14":[1,1,63],"15":[1,1,1],"16":[1,1,24],"17":[1,1,14],"18":[2,1,43],"19":[1,1,41],"20":[1,1,79],"21":[1,1,112],"22":[1,1,21],"23":[1,1,7],"24":[2,1,12],"25":[1,1,51],"26":[1,1,4],"27":[1,1,58],"28":[1,1,8],"29":[1,1,78],"30":[2,1,28],"31":[1,1,76],"32":[1,1,9],"33":[1,1,1],"34":[2,2,9],"35":[2,2,204],"36":[2,2,18],"37":[1,1,1],"38":[2,2,16],"39":[2,2,25],"40":[2,2,31],"41":[2,2,27],"42":[1,1,185],"43":[1,1,31],"44":[1,1,5],"45":[1,1,66],"46":[1,1,4],"47":[1,1,19],"48":[1,1,1],"49":[2,2,4],"50":[2,2,45],"51":[2,2,59],"52":[2,2,24],"53":[1,1,7],"54":[1,1,14],"55":[1,1,243],"56":[1,1,30],"57":[1,1,2],"58":[1,1,5],"59":[1,1,21],"60":[2,1,48],"61":[1,1,17],"62":[1,1,78],"63":[1,1,1],"64":[1,1,4],"65":[2,2,14],"66":[2,2,10],"67":[2,2,5],"68":[4,1,26],"69":[1,1,38],"70":[1,1,11],"71":[1,1,7],"72":[4,1,11],"73":[4,1,11],"74":[1,1,2],"75":[2,1,29],"76":[1,1,4],"77":[2,1,9],"78":[1,1,8],"79":[7,1,8]},"averageFieldLength":[1.4625000000000001,1.1750000000000005,30.99999999999999],"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":"控制器","titles":[]},"11":{"title":"示例","titles":["控制器"]},"12":{"title":"查询配置","titles":["控制器"]},"13":{"title":"请求参数","titles":["控制器"]},"14":{"title":"重写实现","titles":["控制器"]},"15":{"title":"原理","titles":[]},"16":{"title":"接口路由规则","titles":["原理"]},"17":{"title":"自定义路由注解","titles":["原理"]},"18":{"title":"重写 getMappingForMethod","titles":["原理"]},"19":{"title":"数据库","titles":[]},"20":{"title":"功能对比","titles":["数据库"]},"21":{"title":"支持数据库","titles":["数据库"]},"22":{"title":"自动建表","titles":["数据库"]},"23":{"title":"开发方式","titles":[]},"24":{"title":"Ai 全自动","titles":["开发方式"]},"25":{"title":"半自动","titles":["开发方式"]},"26":{"title":"目录结构","titles":[]},"27":{"title":"结构","titles":["目录结构"]},"28":{"title":"统一异常处理","titles":[]},"29":{"title":"异常统一捕获","titles":["统一异常处理"]},"30":{"title":"Ai 流程编排","titles":[]},"31":{"title":"数据初始化","titles":[]},"32":{"title":"扩展插件","titles":[]},"33":{"title":"使用插件","titles":["扩展插件"]},"34":{"title":"1、安装","titles":["扩展插件","使用插件"]},"35":{"title":"2、调用","titles":["扩展插件","使用插件"]},"36":{"title":"3、配置","titles":["扩展插件","使用插件"]},"37":{"title":"开发插件","titles":["扩展插件"]},"38":{"title":"1、脚手架","titles":["扩展插件","开发插件"]},"39":{"title":"2、目录结构","titles":["扩展插件","开发插件"]},"40":{"title":"3、开发过程","titles":["扩展插件","开发插件"]},"41":{"title":"4、字段解释","titles":["扩展插件","开发插件"]},"42":{"title":"插件详解","titles":["扩展插件"]},"43":{"title":"打包","titles":["扩展插件"]},"44":{"title":"安装插件","titles":["扩展插件"]},"45":{"title":"实现原理","titles":["扩展插件"]},"46":{"title":"快速开始","titles":[]},"47":{"title":"环境准备","titles":["快速开始"]},"48":{"title":"运行系统","titles":["快速开始"]},"49":{"title":"1、拉取源码","titles":["快速开始","运行系统"]},"50":{"title":"2、配置数据库","titles":["快速开始","运行系统"]},"51":{"title":"3、启动后端服务","titles":["快速开始","运行系统"]},"52":{"title":"4、启动前端服务","titles":["快速开始","运行系统"]},"53":{"title":"权限校验","titles":[]},"54":{"title":"配置","titles":["权限校验"]},"55":{"title":"原理","titles":["权限校验"]},"56":{"title":"当前用户","titles":["权限校验"]},"57":{"title":"服务","titles":[]},"58":{"title":"Crud","titles":["服务"]},"59":{"title":"修改前后","titles":["服务"]},"60":{"title":"swagger 文档","titles":[]},"61":{"title":"文件上传","titles":[]},"62":{"title":"使用","titles":[]},"63":{"title":"简介","titles":[]},"64":{"title":"技术选型","titles":["简介"]},"65":{"title":"一、环境要求","titles":["简介","技术选型"]},"66":{"title":"二、后端框架","titles":["简介","技术选型"]},"67":{"title":"三、前端框架","titles":["简介","技术选型"]},"68":{"title":"为什么选择 Cool Admin?","titles":["简介"]},"69":{"title":"内置功能","titles":["简介"]},"70":{"title":"演示","titles":[]},"71":{"title":"源码","titles":[]},"72":{"title":"后端(点个 Star)","titles":["源码"]},"73":{"title":"前端(点个 Star)","titles":["源码"]},"74":{"title":"常见问题","titles":[]},"75":{"title":"1、找不到类似xxxTableDef文件","titles":["常见问题"]},"76":{"title":"计划","titles":[]},"77":{"title":"v7.1.1","titles":["计划"]},"78":{"title":"更新","titles":[]},"79":{"title":"v7.1.0(2024-06-27)","titles":["更新"]}},"dirtCount":0,"index":[["升级所有相关依赖到最新",{"2":{"79":1}}],["升级到",{"2":{"79":1}}],["短信等功能可以通过安装插件的方式添加",{"2":{"77":1}}],["短信这类功能的插件可以通过后台动态安装卸载",{"2":{"68":1}}],["支付",{"2":{"77":1}}],["支持动态安装",{"2":{"69":1}}],["支持回滚操作",{"2":{"69":1}}],["支持静态资源文件上传云端进行云管理",{"2":{"69":1}}],["支持很多数据库",{"2":{"21":1}}],["支持的数据库类型",{"2":{"21":1}}],["支持数据库",{"0":{"21":1}}],["支持多主键",{"2":{"20":1}}],["支持关联查询",{"2":{"19":1}}],["简单功能零代码实现",{"2":{"77":1}}],["简介",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["计划",{"0":{"76":1},"1":{"77":1}}],["找不到类似xxxtabledef文件",{"0":{"75":1}}],["常见问题",{"0":{"74":1},"1":{"75":1}}],["常用的技术进行选择",{"2":{"64":1}}],["点个",{"0":{"72":1,"73":1}}],["点击+按钮",{"2":{"34":1}}],["点击左侧菜单扩展管理",{"2":{"34":1}}],["点击前往插件市场",{"2":{"32":1}}],["源码",{"0":{"71":1},"1":{"72":1,"73":1}}],["源码仓库",{"2":{"49":1}}],["演示",{"0":{"70":1}}],["卸载插件",{"2":{"69":1}}],["卸载和替换",{"2":{"45":2}}],["前后端插件",{"2":{"69":1}}],["前端",{"0":{"73":1}}],["前端框架",{"0":{"67":1}}],["前端会根据后端返回的上传模式进行本地上传或者云存储签名直传",{"2":{"61":1}}],["前端接口",{"2":{"16":1}}],["天的保留",{"2":{"69":1}}],["任务调度包含执行结果日志",{"2":{"69":1}}],["添加",{"2":{"69":1}}],["定时任务",{"2":{"69":1}}],["定时任务模块",{"2":{"27":1}}],["便于问题排查",{"2":{"69":1}}],["设置角色按机构进行数据范围权限划分",{"2":{"69":1}}],["呈现公司组织部门树形结构",{"2":{"69":1}}],["内置功能",{"0":{"69":1}}],["代码简洁",{"2":{"68":1}}],["灵活又不臃肿",{"2":{"68":1}}],["灵活性",{"2":{"45":1}}],["灵活性高",{"2":{"45":1}}],["专门为",{"2":{"68":1}}],["部分功能实现零代码",{"2":{"68":1}}],["从页面到后端代码",{"2":{"68":1}}],["特别是最近",{"2":{"68":1}}],["特别是跟",{"2":{"4":1}}],["三",{"0":{"67":1}}],["二",{"0":{"66":1}}],["环境要求",{"0":{"65":1}}],["环境准备",{"0":{"47":1}}],["减少技术栈的复杂度",{"2":{"64":1}}],["技术选型",{"0":{"64":1},"1":{"65":1,"66":1,"67":1}}],["技术分享",{"2":{"4":1,"6":1}}],["方便一张图片使用在多种场景",{"2":{"62":1}}],["方法去调用主应用的一些对象方法",{"2":{"35":1}}],["方法第一个参数如果为",{"2":{"29":1}}],["方法",{"2":{"18":1,"35":5}}],["水印等处理",{"2":{"62":1}}],["裁剪",{"2":{"62":1}}],["还可以对图片进行各种如压缩",{"2":{"62":1}}],["还可以了解到一些前沿的技术",{"2":{"4":1}}],["条件允许的话尽量选择云存储上传",{"2":{"62":1}}],["防止上传恶意文件等",{"2":{"62":1}}],["动静分离有许多好处",{"2":{"62":1}}],["动态加载使得应用程序能够在不停机的情况下进行热更新",{"2":{"45":1}}],["动态加载允许应用程序在运行时根据需求加载",{"2":{"45":1}}],["动态加载",{"2":{"45":2}}],["动态",{"2":{"20":1}}],["动态表名",{"2":{"20":1}}],["线上环境请用nginx等静态服务器代理",{"2":{"62":1}}],["$",{"2":{"62":1}}],["七牛云等",{"2":{"61":1}}],["腾讯云",{"2":{"61":1}}],["云存储上传服务端值提供签名供前端直传到对应的云存储",{"2":{"61":1}}],["云存储",{"2":{"61":1}}],["本地上传配置",{"2":{"62":1}}],["本地上传",{"2":{"61":1}}],["本身",{"2":{"19":1}}],["直接上传到对应的云存储",{"2":{"61":1}}],["操作日志",{"2":{"69":1}}],["操作权限标识等",{"2":{"69":1}}],["操作",{"2":{"58":1}}],["处理业务逻辑的代码应该被封装在服务中",{"2":{"57":1}}],["处理逻辑在以下方法",{"2":{"31":1}}],["服务",{"0":{"57":1},"1":{"58":1,"59":1}}],["服务启动成功",{"2":{"51":1}}],["类型",{"2":{"56":1}}],["类必须继承",{"2":{"35":1,"42":2}}],["类必须要有",{"2":{"35":1,"42":2}}],["当前用户",{"0":{"56":1}}],["允许网页iframe",{"2":{"55":1}}],["忽略权限控制的地址",{"2":{"55":1}}],["鉴权拦截配置",{"2":{"55":1}}],["监控用户行为",{"2":{"55":1}}],["监听",{"2":{"20":1}}],["权限管理拦截器",{"2":{"55":1}}],["权限校验",{"0":{"53":1},"1":{"54":1,"55":1,"56":1}}],["每次调用接口的时候spring",{"2":{"55":1}}],["每个插件的配置各不相同",{"2":{"41":1}}],["每个对象中的",{"2":{"31":1}}],["每个模块都有其特有的功能",{"2":{"26":1}}],["则返回给decide方法",{"2":{"55":1}}],["判定用户请求的url是否在权限表中",{"2":{"55":1}}],["判断",{"2":{"29":1}}],["刷新token过期时间",{"2":{"54":1}}],["半小时",{"2":{"54":1}}],["半自动",{"0":{"25":1}}],["秒",{"2":{"54":2}}],["单位",{"2":{"54":2}}],["单主键配置",{"2":{"20":1}}],["过期时间",{"2":{"54":1}}],["作为文档",{"2":{"60":1}}],["作为myaccessdecisionmanager类的decide的第三个参数",{"2":{"55":1}}],["作为框架安全与权限校验",{"2":{"53":1}}],["作者",{"2":{"40":1,"41":1}}],["采用",{"2":{"53":1}}],["密码版本号",{"2":{"56":1}}],["密码",{"2":{"52":1,"70":1}}],["账户",{"2":{"52":1,"70":1}}],["账户密码不正确",{"2":{"29":1}}],["默认集成springdoc",{"2":{"60":1}}],["默认账户密码",{"2":{"52":1}}],["默认实现了通用的六个接口方法",{"2":{"14":1}}],["默认实现了两种缓存",{"2":{"8":1}}],["执行",{"2":{"75":1}}],["执行命令",{"2":{"52":1}}],["执行的过程中",{"2":{"19":1}}],["同级",{"2":{"52":1}}],["同样也可以对",{"2":{"14":1}}],["跟进nodejs",{"2":{"79":1}}],["跟",{"2":{"52":1}}],["跟分页查询一样",{"2":{"12":1}}],["访问http",{"2":{"52":1}}],["访问",{"2":{"51":1}}],["端口",{"2":{"51":1}}],["构建eps信息",{"2":{"51":1}}],["没有可初始化的插件",{"2":{"51":1}}],["没有任何的",{"2":{"19":1}}],["没有任何",{"2":{"19":1}}],["控制台打印出下面信息",{"2":{"51":1}}],["控制器",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1}}],["启动",{"2":{"52":1}}],["启动前端服务",{"0":{"52":1}}],["启动文件",{"2":{"51":1}}],["启动后端服务",{"0":{"51":1}}],["驱动已经内置",{"2":{"50":1}}],["首次启动会自动初始化并导入数据",{"2":{"50":1}}],["首先下载插件包",{"2":{"34":1}}],["建议",{"2":{"50":1}}],["建议尺寸",{"2":{"41":1}}],["yamlcool",{"2":{"54":1,"62":1}}],["yaml",{"2":{"50":1}}],["yamlspring",{"2":{"8":1}}],["yml",{"2":{"50":1,"62":1}}],["拉取源码",{"0":{"49":1}}],["9000",{"2":{"52":1}}],["941+08",{"2":{"51":1}}],["9",{"2":{"47":1}}],["推荐",{"2":{"47":2,"75":1}}],["推荐两种快速开发方式",{"2":{"23":1}}],["7天",{"2":{"54":1}}],["7版本",{"2":{"50":1}}],["7",{"2":{"47":1,"65":1}}],["选择",{"2":{"47":1,"65":1}}],["选择插件包进行安装",{"2":{"34":1}}],["开启",{"2":{"75":1}}],["开始使用",{"2":{"46":1}}],["开发几乎不用写代码",{"2":{"68":1}}],["开发设计的",{"2":{"68":1}}],["开发过程",{"0":{"40":1}}],["开发过程只需点一点",{"2":{"24":1}}],["开发插件",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1}}],["开发的时候无法调试",{"2":{"35":1}}],["开发的时候只是模拟",{"2":{"35":1}}],["开发的一个",{"2":{"8":1}}],["开发",{"2":{"30":1}}],["开发方式",{"0":{"23":1},"1":{"24":1,"25":1}}],["开发者可以从中方便的获取各种参数",{"2":{"13":1}}],["快速开始",{"0":{"46":1},"1":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["扩展性",{"2":{"45":1}}],["扩展插件",{"0":{"32":1},"1":{"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1},"2":{"68":1}}],["大大提高了系统的可用性和稳定性",{"2":{"45":1}}],["热更新",{"2":{"45":1}}],["优化若干问题",{"2":{"79":1}}],["优势",{"2":{"45":1}}],["优炫数据库",{"2":{"21":1}}],["远程服务器和",{"2":{"45":1}}],["它可以加载指定的",{"2":{"45":1}}],["标准库中提供的一个类加载器",{"2":{"45":1}}],["最终打出的包为",{"2":{"43":1}}],["里指定",{"2":{"43":1}}],["里面是个数组",{"2":{"31":1}}],["就是我们的插件包",{"2":{"43":1}}],["就可以在代码中调用插件的方法了",{"2":{"35":1}}],["后端",{"0":{"72":1}}],["后端框架",{"0":{"66":1}}],["后端修改数据库配置",{"2":{"50":1}}],["后端接口",{"2":{"16":1}}],["后缀的文件",{"2":{"43":1}}],["打包结果",{"2":{"43":1}}],["打包命令",{"2":{"43":1}}],["打包",{"0":{"43":1}}],["打包时可以排除",{"2":{"42":1}}],["打开后台管理系统",{"2":{"34":1}}],["避免打包结果过大",{"2":{"42":1}}],["避免插件过大不会在打入jar包中",{"2":{"42":1}}],["主应用以有这些依赖",{"2":{"42":1}}],["主应用项目已经有的依赖给排除掉",{"2":{"42":1}}],["主应用没有这些依赖",{"2":{"42":1}}],["主要特点",{"2":{"19":1,"68":1}}],["主要是做一些技术教程",{"2":{"4":1}}],["以下是我们的一些计划",{"2":{"76":1}}],["以下包会打入jar",{"2":{"42":1}}],["以往的框架已经越来越不能满足现代化的开发需求",{"2":{"68":1}}],["以",{"2":{"50":1}}],["以上包在主应用已经引入",{"2":{"42":1}}],["以上内容来自第三方相关产品的官方文档或第三方平台",{"2":{"20":1}}],["中实现动态加载",{"2":{"45":1}}],["中的",{"2":{"43":1}}],["中排除掉不打入jar",{"2":{"42":2}}],["中重写方法",{"2":{"14":1}}],["引入依赖",{"2":{"42":1}}],["可商用",{"2":{"71":1}}],["可插拔",{"2":{"68":1}}],["可选",{"2":{"62":1}}],["可维护性",{"2":{"45":1}}],["可控性强",{"2":{"45":1}}],["可在",{"2":{"43":1}}],["可使用",{"2":{"42":1}}],["可以重写modifybefore和modifyafter方法",{"2":{"59":1}}],["可以参考baseservice的实现",{"2":{"58":1}}],["可以轻松地添加新的功能模块或服务",{"2":{"45":1}}],["可以将应用程序的核心逻辑和配置分离",{"2":{"45":1}}],["可以通过代码控制加载",{"2":{"45":1}}],["可以通过插件的方式来扩展系统功能",{"2":{"32":1}}],["可以动态指定",{"2":{"45":1}}],["可以快速开发我们的插件",{"2":{"38":1}}],["可以大大节省开发时间",{"2":{"23":1}}],["可以大大简化代码",{"2":{"10":1}}],["可以自动创建表",{"2":{"22":1}}],["可以在打包日志中查看我们排除和引入了哪些包",{"2":{"42":1}}],["可以在",{"2":{"31":1}}],["可以在对应的",{"2":{"14":1}}],["可以在这边实现一下列表数据排序规则",{"2":{"11":1,"13":1,"14":1,"60":1}}],["可以选择你想使用的缓存",{"2":{"8":1}}],["满足以上条件",{"2":{"42":1}}],["拼音",{"2":{"42":1}}],["汉字",{"2":{"42":1}}],["汉字字符",{"2":{"42":1}}],["会持续不断地更新",{"2":{"78":1}}],["会展示在插件的详情中",{"2":{"41":1}}],["会更加简洁",{"2":{"29":1}}],["说明后端服务启动成功",{"2":{"51":1}}],["说明",{"2":{"41":1,"56":1}}],["403",{"2":{"55":1}}],["401",{"2":{"55":1}}],["46",{"2":{"51":1}}],["45",{"2":{"51":3}}],["4b57",{"2":{"42":1}}],["47ac",{"2":{"42":1}}],["4fd03504",{"2":{"42":1}}],["4",{"0":{"41":1,"52":1},"2":{"42":2,"45":1,"55":1}}],["上传模式",{"2":{"62":1}}],["上面只是个例子",{"2":{"40":1}}],["上加了这个注解后",{"2":{"18":1}}],["测试",{"2":{"40":1}}],["测试curd",{"2":{"11":2,"12":2,"13":2,"14":2,"25":1,"60":2}}],["加载权限表中所有操作请求权限",{"2":{"55":1}}],["加载成功后文件名称将被当作唯一键标识",{"2":{"31":1}}],["加上",{"2":{"39":1}}],["或",{"2":{"38":1,"72":1,"73":1}}],["脚手架源码仓库",{"2":{"38":1}}],["脚手架",{"0":{"38":1}}],["下",{"2":{"36":1}}],["下的",{"2":{"31":1}}],["范围在",{"2":{"36":1}}],["路径可以自己指定",{"2":{"36":1}}],["例如原本的配置文件是这样的",{"2":{"36":1}}],["31908",{"2":{"51":4}}],["383+08",{"2":{"51":1}}],["382+08",{"2":{"51":1}}],["38",{"2":{"51":4}}],["3306",{"2":{"50":1}}],["32",{"2":{"42":1}}],["32615",{"2":{"35":8}}],["3c64059230d0",{"2":{"42":1}}],["3",{"0":{"36":1,"40":1,"51":1},"2":{"42":1,"45":1,"47":2,"51":1,"55":1,"65":1,"66":1}}],["其他数据库适配中",{"2":{"50":1}}],["其他查询方式",{"2":{"12":1}}],["其中对应的包名称",{"2":{"43":1}}],["其中",{"2":{"36":1}}],["其中我们可以在插件包里通过",{"2":{"35":1}}],["获得用户名",{"2":{"56":1}}],["获得用户信息",{"2":{"55":1,"56":1}}],["获得其他插件",{"2":{"35":1}}],["获取启用的权限操作请求",{"2":{"55":1}}],["获取主应用resources下的",{"2":{"35":1}}],["获取主应用resources目录下的资源文件",{"2":{"35":1}}],["只需极少编码即可实现大部分需求",{"2":{"68":1}}],["只需拖一拖即可",{"2":{"68":1}}],["只需三步",{"2":{"25":1}}],["只有安装到cool",{"2":{"35":1}}],["注解",{"2":{"35":2,"42":4}}],["注意",{"2":{"20":1,"21":1,"22":1,"30":1,"31":1,"47":1}}],["||",{"2":{"35":7}}],["|",{"2":{"35":67}}],["一",{"0":{"65":1}}],["一个插件",{"2":{"42":1}}],["一个插件jar有且只能有一个类被",{"2":{"35":1,"42":1}}],["一个项目用cool就够了",{"2":{"35":2}}],["一般抛异常写法",{"2":{"29":1}}],["`",{"2":{"35":10}}],["`update",{"2":{"35":1}}],["`create",{"2":{"35":1}}],["`params`",{"2":{"35":1}}],["`ip`",{"2":{"35":1}}],["`action`",{"2":{"35":1}}],["`base",{"2":{"35":1}}],["参数管理",{"2":{"69":1}}],["参数",{"2":{"35":1}}],["564+08",{"2":{"35":1}}],["556",{"2":{"51":1}}],["559+08",{"2":{"35":1}}],["558+08",{"2":{"35":1}}],["557+08",{"2":{"35":1}}],["554+08",{"2":{"35":1}}],["544+08",{"2":{"35":1}}],["543+08",{"2":{"35":2}}],["5",{"2":{"35":8,"42":6,"47":1,"65":1}}],["8",{"2":{"35":1,"42":3,"47":1,"50":2}}],["8001",{"2":{"35":5,"51":2,"60":1}}],["8s",{"2":{"21":2}}],["运行系统",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1}}],["运行结果",{"2":{"35":1}}],["运行代码生成器",{"2":{"25":1}}],["without",{"2":{"42":1}}],["web",{"2":{"35":4}}],["wrappers",{"2":{"29":2,"55":1}}],["调用其他插件",{"2":{"35":1}}],["调用其他插件aliyun",{"2":{"35":1}}],["调用主应用获取缓存",{"2":{"35":1}}],["调用主应用设置缓存",{"2":{"35":1}}],["调用主应用",{"2":{"35":3}}],["调用插件类",{"2":{"35":1}}],["调用",{"0":{"35":1}}],["调一调",{"2":{"24":1}}],["27",{"0":{"79":1}}],["2b8",{"2":{"50":1}}],["26",{"2":{"42":3}}],["256x256",{"2":{"41":1}}],["2024",{"0":{"79":1},"2":{"35":8,"51":4}}],["2",{"0":{"35":1,"39":1,"50":1},"2":{"42":5,"45":2,"55":1}}],["然后在系统中安装插件包",{"2":{"34":1}}],["安装云存储插件",{"2":{"61":1}}],["安装依赖",{"2":{"52":1}}],["安装插件将打包好的",{"2":{"44":1}}],["安装插件",{"0":{"44":1}}],["安装插件之后",{"2":{"35":1}}],["安装",{"0":{"34":1}}],["也可以使用别人开发的插件",{"2":{"32":1}}],["也希望广大开发者粉丝帮助完善文档",{"2":{"0":1}}],["导致系统臃肿",{"2":{"32":1}}],["要新增一个",{"2":{"31":1}}],["初始化eps完成",{"2":{"51":1}}],["初始化菜单数据",{"2":{"31":1}}],["初始化自定义的数据",{"2":{"31":1}}],["初始化数据json文件",{"2":{"27":1}}],["创建",{"2":{"31":1}}],["创建实体类生成表",{"2":{"25":1}}],["富文本参数",{"2":{"31":1}}],["规范",{"2":{"31":1}}],["规则为",{"2":{"16":1}}],["数组里可以包含多个对象",{"2":{"31":1}}],["数据有",{"2":{"69":1}}],["数据回收站",{"2":{"69":1}}],["数据回收站模块",{"2":{"27":1}}],["数据初始化完成",{"2":{"31":1}}],["数据初始化",{"0":{"31":1}}],["数据脱敏",{"2":{"20":1}}],["数据脱敏等等",{"2":{"19":1}}],["数据填充",{"2":{"19":1,"20":1}}],["数据库初始数据初始化",{"2":{"31":1}}],["数据库",{"0":{"19":1},"1":{"20":1,"21":1,"22":1},"2":{"21":32}}],["格式如下",{"2":{"31":1}}],["目录下",{"2":{"43":1}}],["目录下创建",{"2":{"31":1}}],["目录创建",{"2":{"31":1}}],["目录结构",{"0":{"26":1,"39":1},"1":{"27":1}}],["相关配置",{"2":{"54":1}}],["相关应用",{"2":{"30":1}}],["相关的技术发展",{"2":{"68":1}}],["相关的",{"2":{"4":1}}],["很容易就能完成一个",{"2":{"30":1}}],["很多应用希望接入",{"2":{"30":1}}],["结尾",{"2":{"31":1}}],["结合知识库",{"2":{"30":1}}],["结构",{"0":{"27":1}}],["做为后来者有后发优势",{"2":{"68":1}}],["做了一个",{"2":{"30":1}}],["做解析",{"2":{"18":1}}],["于是我们面向开发者和软件开发公司",{"2":{"30":1}}],["容易把我们累死",{"2":{"30":1}}],["随着技术不断地发展",{"2":{"68":1}}],["随着",{"2":{"30":1}}],["应用必备",{"2":{"30":1}}],["视频演示",{"2":{"30":1}}],["流程编排+知识库届时会上架到插件市场",{"2":{"30":1}}],["流程编排功能",{"2":{"30":1}}],["流程编排",{"0":{"30":1},"2":{"68":1}}],["异常信息为",{"2":{"29":1}}],["异常统一捕获",{"0":{"29":1}}],["即抛异常",{"2":{"29":1}}],["手动抛异常",{"2":{"29":1}}],["业务校验的工具",{"2":{"29":1}}],["业务代码放在这边",{"2":{"27":1}}],["系统异常信息日志记录和查询",{"2":{"69":1}}],["系统正常操作日志记录和查询",{"2":{"69":1}}],["系统通用",{"2":{"62":2}}],["系统的文件上传就会自动替换成云存储上传的方式",{"2":{"61":1}}],["系统启动完成访问",{"2":{"60":1}}],["系统启动的时候",{"2":{"55":1}}],["系统会查询并向spring",{"2":{"55":1}}],["系统提供了",{"2":{"29":1}}],["系统用户",{"2":{"27":1}}],["请求日志",{"2":{"69":1}}],["请求过程中会解析",{"2":{"56":1}}],["请求参数",{"0":{"13":1},"2":{"59":2}}],["请区分post",{"2":{"29":1}}],["不要吝啬你们免费的star哦",{"2":{"71":1}}],["不像一般代码生成器生成一堆冗余代码",{"2":{"68":1}}],["不经过服务器",{"2":{"61":1}}],["不然调用时会报错",{"2":{"42":1}}],["不带声调",{"2":{"42":1}}],["不同的插件有不同的配置",{"2":{"40":1}}],["不会重复初始化",{"2":{"31":1}}],["不支持该请求方式",{"2":{"29":1}}],["不用写一行代码",{"2":{"24":1}}],["已存在该记录",{"2":{"29":1}}],["统一异常处理",{"0":{"28":1},"1":{"29":1}}],["包或其内部的类和资源",{"2":{"45":1}}],["包或类",{"2":{"45":1}}],["包具有以下几个显著的优势",{"2":{"45":1}}],["包的位置和版本",{"2":{"45":1}}],["包括本地文件系统",{"2":{"45":1}}],["包括一些核心的组件工具",{"2":{"27":1}}],["包时会想该插件注入",{"2":{"35":1}}],["包下创建",{"2":{"27":1}}],["包",{"2":{"27":1,"45":3}}],["按照简单",{"2":{"64":1}}],["按上面的包结构新增即可",{"2":{"27":1}}],["按规则组装",{"2":{"18":1}}],["为什么选择",{"0":{"68":1}}],["为例",{"2":{"50":1}}],["为排除引入",{"2":{"42":1}}],["为引入",{"2":{"42":1}}],["为主应用",{"2":{"36":1}}],["为插件key",{"2":{"35":1}}],["为对应的值",{"2":{"31":1}}],["为表的字段",{"2":{"31":1}}],["为表的名称",{"2":{"31":1}}],["为业务模块",{"2":{"27":1}}],["为核心模块",{"2":{"27":1}}],["为了使项目能够持续",{"2":{"71":1}}],["为了开发插件如果引入了主应用已经有的maven依赖可以在下面的",{"2":{"42":2}}],["为了方便开发插件和统一插件开发规范",{"2":{"38":1}}],["为了方便获取参数",{"2":{"13":1}}],["为了丰富系统功能",{"2":{"32":1}}],["为了不过多依赖环境",{"2":{"8":1}}],["用来判定用户是否有此权限",{"2":{"55":1}}],["用configattribute的集合作为value",{"2":{"55":1}}],["用权限的path作为map的key",{"2":{"55":1}}],["用户是系统操作者",{"2":{"69":1}}],["用户管理",{"2":{"69":1}}],["用户管理模块",{"2":{"27":1}}],["用户",{"2":{"56":1}}],["用户详情",{"2":{"55":1}}],["用户名",{"2":{"56":1}}],["用户名不存在",{"2":{"55":1}}],["用户名已存在",{"2":{"28":1,"29":3}}],["用户登录",{"2":{"55":1}}],["用过",{"2":{"22":1}}],["插件可以在打包的时候将在我们",{"2":{"42":1}}],["插件详解",{"0":{"42":1}}],["插件配置",{"2":{"41":1}}],["插件介绍",{"2":{"41":1}}],["插件",{"2":{"41":1}}],["插件钩子",{"2":{"41":1}}],["插件唯一标识",{"2":{"41":1}}],["插件描述",{"2":{"40":1,"41":1}}],["插件运行测试类",{"2":{"39":1}}],["插件信息配置文件",{"2":{"39":1}}],["插件类放在这个包下",{"2":{"39":1}}],["插件包",{"2":{"39":1}}],["插件包可以通过官网下载插件",{"2":{"34":1}}],["插件方法",{"2":{"35":1,"42":1}}],["插件管理",{"2":{"34":1}}],["插件模块",{"2":{"27":1}}],["插件分享等",{"2":{"6":1}}],["插件分享等内容",{"2":{"4":1}}],["角色菜单权限分配",{"2":{"69":1}}],["角色管理",{"2":{"69":1}}],["角色数组",{"2":{"41":1,"56":1}}],["角色",{"2":{"27":1}}],["资源目录下的文件",{"2":{"36":1}}],["资源文件",{"2":{"27":1}}],["资源",{"2":{"27":1,"45":1}}],["菜单管理",{"2":{"69":1}}],["菜单",{"2":{"27":1}}],["基础模块",{"2":{"27":1}}],["└─",{"2":{"27":8,"39":7}}],["└──",{"2":{"16":6}}],["核心包",{"2":{"27":1,"39":1}}],["├─core",{"2":{"39":1}}],["├─",{"2":{"27":15,"39":3}}],["├──",{"2":{"16":1}}],["清晰明了便于管理",{"2":{"26":1}}],["组件会根据字段智能选择",{"2":{"25":1}}],["n",{"2":{"69":1}}],["npm",{"2":{"52":2}}],["net",{"2":{"42":4}}],["new",{"2":{"25":2,"29":2,"42":2,"45":4,"55":12}}],["now",{"2":{"35":2}}],["nodejs",{"2":{"30":1}}],["nio",{"2":{"35":5}}],["null",{"2":{"28":1,"29":2,"31":2,"35":1,"42":1,"55":3}}],["name>",{"2":{"43":1}}],["name>my",{"2":{"43":1}}],["name",{"2":{"11":1,"12":3,"13":1,"14":1,"17":1,"31":2,"40":1,"41":1,"50":1,"60":1,"62":1}}],["文件管理",{"2":{"69":1}}],["文件管理模块",{"2":{"27":1}}],["文件存放路径",{"2":{"62":1}}],["文件根地址",{"2":{"62":1}}],["文件等",{"2":{"45":1}}],["文件上传模式",{"2":{"62":1}}],["文件上传相关",{"2":{"62":1}}],["文件上传",{"0":{"61":1},"2":{"44":1,"62":1}}],["文件内容",{"2":{"35":1}}],["文件后",{"2":{"31":1}}],["文件",{"2":{"25":1,"27":1,"31":2,"62":1}}],["文档",{"0":{"60":1},"2":{"1":1}}],["重启生成表",{"2":{"25":1}}],["重写",{"0":{"18":1}}],["重写逻辑",{"2":{"14":2}}],["重写实现",{"0":{"14":1}}],["编写实体类",{"2":{"25":1}}],["编码",{"0":{"7":1},"2":{"68":1}}],["零代码开发",{"2":{"24":1}}],["全自动",{"0":{"24":1}}],["提高了代码的可维护性",{"2":{"45":1}}],["提高开发效率",{"2":{"23":1}}],["提示",{"2":{"27":1}}],["提供了极大的灵活性",{"2":{"45":1}}],["提供了简化的业务异常抛出工具",{"2":{"28":1}}],["提供了非常灵活的",{"2":{"19":1}}],["提供了一种高效且可靠的解决方案",{"2":{"8":1}}],["降低开发成本",{"2":{"23":1}}],["因为有你们的支持",{"2":{"78":1}}],["因为这可能会造成数据丢失",{"2":{"22":1}}],["因此如果你需要开发",{"2":{"30":1}}],["因此会带来指数级的性能增长",{"2":{"19":1}}],["因此会带来更高的自主性",{"2":{"19":1}}],["切勿在生产环境开启自动建表功能",{"2":{"22":1}}],["并将用户信息存在整个请求过程中的",{"2":{"56":1}}],["并实现",{"2":{"35":1,"42":1}}],["并实现值的插入",{"2":{"31":1}}],["并定义表数据",{"2":{"31":1}}],["并且支持表字段的修改",{"2":{"22":1}}],["并重写了",{"2":{"18":1}}],["节省了大量手动工作",{"2":{"22":1}}],["尤其是开发过程中频繁的新增表及变更表结构",{"2":{"22":1}}],["列的配置",{"2":{"22":1}}],["列表查询",{"2":{"12":1}}],["而不用一味地堆功能",{"2":{"32":1}}],["而不需要关心数据库的表",{"2":{"22":1}}],["而是也非常不灵活",{"2":{"30":1}}],["而是对它做一层封装",{"2":{"18":1}}],["有且只能有一个类被",{"2":{"42":1}}],["有时候开发时的配置和生产环境的配置是不一样的",{"2":{"36":1}}],["有些功能模块上线时",{"2":{"31":1}}],["有一项重要的能力就是表结构自动维护",{"2":{"22":1}}],["有兴趣的可以关注我们",{"2":{"4":1}}],["实现功能可插拔",{"2":{"69":1}}],["实现应用程序的快速扩展和升级",{"2":{"45":1}}],["实现方法",{"2":{"45":1}}],["实现动态加载的技术方案",{"2":{"45":1}}],["实现原理",{"0":{"45":1}}],["实现简单功能从",{"2":{"7":1,"24":1}}],["实际开发中可以根据自己的需求来配置",{"2":{"40":1}}],["实体需以",{"2":{"31":1}}],["实体",{"2":{"22":1}}],["理论上你只需修改一些不兼容的代码就可以正常运行了",{"2":{"21":1}}],["那样工作量太大了",{"2":{"21":1}}],["是",{"2":{"45":1}}],["是插件的配置信息",{"2":{"40":1}}],["是具体的业务框架",{"2":{"21":1}}],["是否支持在微服务项目下进行",{"2":{"20":1}}],["但是每次都是用代码手搓",{"2":{"30":1}}],["但是它为我们提供了改造的可能",{"2":{"21":1}}],["但是",{"2":{"21":1}}],["虽然",{"2":{"21":1}}],["星瑞格数据库",{"2":{"21":1}}],["华为",{"2":{"21":1}}],["华库",{"2":{"21":1}}],["亚马逊",{"2":{"21":1}}],["行云数据库",{"2":{"21":1}}],["瀚高数据库",{"2":{"21":1}}],["神通数据库",{"2":{"21":1}}],["南大通用数据库",{"2":{"21":1}}],["南大通用",{"2":{"21":1}}],["gt",{"2":{"47":3,"50":1,"65":3,"75":3}}],["goal>",{"2":{"42":1}}],["goal>shade",{"2":{"42":1}}],["goals>",{"2":{"42":2}}],["goldilocks",{"2":{"21":2}}],["grantedauthority>",{"2":{"55":1}}],["graalvm",{"2":{"47":1,"65":1}}],["groupid>org",{"2":{"42":1}}],["groupid>com",{"2":{"42":1}}],["groupid>cn",{"2":{"42":1}}],["groupid>",{"2":{"42":3}}],["greenplum",{"2":{"21":2}}],["gitee",{"2":{"38":1,"72":1,"73":1}}],["github",{"2":{"38":1,"72":1,"73":1}}],["gbase",{"2":{"21":3}}],["gauss",{"2":{"21":2}}],["getbytes",{"2":{"55":2}}],["geturls",{"2":{"55":1}}],["getusername",{"2":{"29":4,"55":3}}],["getsecureobjectclass",{"2":{"55":1}}],["getstatus",{"2":{"55":2}}],["getstr",{"2":{"13":1}}],["getroles",{"2":{"55":1}}],["getresponse",{"2":{"55":1}}],["getresourceasstream",{"2":{"35":1}}],["getrequest",{"2":{"55":1}}],["getrequesturl",{"2":{"55":1}}],["getdepartmentidsbyroleids",{"2":{"55":1}}],["getperms",{"2":{"55":1}}],["getparent",{"2":{"35":1}}],["getparentresource",{"2":{"35":2}}],["getpasswordv",{"2":{"55":1}}],["getpassword",{"2":{"29":2,"55":1}}],["getauthenticationmanager",{"2":{"55":1}}],["getallconfigattributes",{"2":{"55":1}}],["getallperms",{"2":{"55":1}}],["getattributes",{"2":{"55":1}}],["getabsolutepath",{"2":{"45":1}}],["getannotationsbytype",{"2":{"18":1}}],["getchain",{"2":{"55":1}}],["getcontextclassloader",{"2":{"45":1}}],["getcode",{"2":{"29":1}}],["getclassloader",{"2":{"35":1}}],["getclass",{"2":{"35":1}}],["getinstance",{"2":{"35":1}}],["getid",{"2":{"29":2,"55":6}}],["getone",{"2":{"29":2,"55":1}}],["get等请求方式是否正确",{"2":{"29":1}}],["getmode",{"2":{"62":1}}],["getmapping",{"2":{"62":1}}],["getmappingformethod",{"0":{"18":1},"2":{"18":3}}],["getmessage",{"2":{"29":7}}],["get",{"2":{"9":1,"11":1,"35":2,"42":1,"55":1}}],["人大金仓数据库",{"2":{"21":1}}],["kyi=",{"2":{"35":1}}],["kingbasees",{"2":{"21":1}}],["keyname",{"2":{"31":2}}],["keyword",{"2":{"12":1}}],["keywordlikefields",{"2":{"12":1}}],["key",{"2":{"9":1,"31":1,"35":4,"40":1,"41":1}}],["虚谷数据库",{"2":{"21":1}}],["达梦数据库",{"2":{"21":1}}],["及以上数据库",{"2":{"21":1}}],["及以下数据库",{"2":{"21":1}}],["及更高性能",{"2":{"20":1}}],["描述",{"2":{"21":1}}],["持续添加更多的数据库支持",{"2":{"21":1}}],["如文件上传",{"2":{"77":1}}],["如支付",{"2":{"68":1}}],["如不占用主服务器带宽",{"2":{"62":1}}],["如",{"2":{"61":1,"62":1}}],["如阿里云",{"2":{"61":1}}],["如我们这边示例使用到了中文转拼音",{"2":{"42":1}}],["如下表格所示",{"2":{"21":1}}],["如果方便请点下",{"2":{"78":1}}],["如果你有更好的建议",{"2":{"76":1}}],["如果不在权限表中则放行",{"2":{"55":1}}],["如果不满足需求",{"2":{"14":1}}],["如果在权限表中",{"2":{"55":1}}],["如果在原文件直接修改将不生效",{"2":{"31":1}}],["如果同一张表历史已经有初始化过数据",{"2":{"31":1}}],["如果我们的项目对你有用",{"2":{"2":1}}],["欢迎联系我们",{"2":{"76":1}}],["欢迎纠正",{"2":{"20":1}}],["欢迎加入我们大家庭一起讨论",{"2":{"2":1}}],["若有错误",{"2":{"20":1}}],["项目中常见的问题",{"2":{"74":1}}],["项目是开源免费",{"2":{"71":1}}],["项目是前后端分离的",{"2":{"49":1}}],["项目按照模块化的方式组织",{"2":{"26":1}}],["项目",{"2":{"20":1}}],["非低代码",{"2":{"24":1}}],["非",{"2":{"20":1}}],["quot",{"2":{"20":2,"28":2,"29":2}}],["querywrapper",{"2":{"12":3,"14":3,"19":1,"20":1}}],["和",{"2":{"20":1}}],["和传统的",{"2":{"14":1}}],["比如替换系统的上传组件",{"2":{"41":1}}],["比如你有一个订单管理的模块",{"2":{"27":1}}],["比如",{"2":{"20":1,"31":1,"35":1}}],["借助其他框架或收费",{"2":{"20":1}}],["字典管理",{"2":{"69":1}}],["字典回写",{"2":{"20":1}}],["字段",{"2":{"41":1,"56":1}}],["字段解释",{"0":{"41":1}}],["字段模块",{"2":{"27":1}}],["字段加密",{"2":{"20":1}}],["字段权限",{"2":{"20":1}}],["字段的",{"2":{"20":1}}],["字段全匹配",{"2":{"12":1}}],["收费",{"2":{"20":4}}],["✔️",{"2":{"20":4}}],["审计",{"2":{"20":1}}],["乐观锁",{"2":{"20":1}}],["乐观锁更新",{"2":{"19":1}}],["未知",{"2":{"20":1}}],["传输",{"2":{"20":1}}],["无需授权的",{"2":{"71":1}}],["无需安装",{"2":{"50":1}}],["无需手动通过",{"2":{"29":1}}],["无需额外安装软件",{"2":{"8":1}}],["无法做到全部支持",{"2":{"21":1}}],["无其他第三方依赖",{"2":{"20":1}}],["配置完数据库直接启动",{"2":{"75":1}}],["配置系统菜单",{"2":{"69":1}}],["配置文件位于src",{"2":{"50":1}}],["配置数据库",{"0":{"50":1}}],["配置插件信息",{"2":{"40":1}}],["配置",{"0":{"36":1,"54":1},"2":{"20":1}}],["复合主键",{"2":{"20":1}}],["生成",{"2":{"25":1}}],["生成前端代码",{"2":{"25":1}}],["生成后端代码",{"2":{"25":1}}],["生成策略",{"2":{"20":1}}],["生成的路由前缀为",{"2":{"16":1}}],["loaduserbyusername",{"2":{"55":1}}],["loadresourcedefine",{"2":{"55":2}}],["local",{"2":{"50":1,"62":2}}],["lombok",{"2":{"35":2,"42":2}}],["long",{"2":{"29":2,"55":2,"56":2}}],["logo",{"2":{"40":2,"41":2}}],["log`",{"2":{"35":1}}],["log",{"2":{"29":5,"31":1}}],["lealone",{"2":{"21":2}}],["left",{"2":{"20":1}}],["list",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"55":1,"60":1}}],["解析设计",{"2":{"20":1}}],["❌",{"2":{"20":30}}],["✅",{"2":{"20":51}}],["element",{"2":{"67":1}}],["else",{"2":{"35":1}}],["encodedpassword",{"2":{"55":2}}],["encode",{"2":{"55":1}}],["entrypointunauthorizedhandler",{"2":{"55":3}}],["entity",{"2":{"20":2,"27":2,"29":12,"31":1}}],["enablewebsecurity",{"2":{"55":1}}],["epsevent",{"2":{"51":1}}],["eps",{"2":{"51":2}}],["equals",{"2":{"55":1}}],["eq",{"2":{"29":2,"55":2}}],["error",{"2":{"29":10}}],["e",{"2":{"29":19,"42":2}}],["expire",{"2":{"54":1}}],["expression",{"2":{"42":2}}],["excluding",{"2":{"42":14}}],["exclude>cn",{"2":{"42":2}}],["exclude>jakarta",{"2":{"42":1}}],["exclude>io",{"2":{"42":4}}],["exclude>",{"2":{"42":16}}],["exclude>org",{"2":{"42":9}}],["excludes>",{"2":{"42":2}}],["exceptionhandling",{"2":{"55":1}}],["exceptionhandler",{"2":{"29":6}}],["exception",{"2":{"29":2,"42":1,"55":2}}],["execution",{"2":{"75":1}}],["execution>",{"2":{"42":2}}],["executions>",{"2":{"42":2}}],["exec",{"2":{"35":5}}],["extern",{"2":{"35":1}}],["extends",{"2":{"11":1,"12":1,"13":1,"14":2,"18":1,"35":1,"42":1,"55":1,"60":1}}],["extractedmenu",{"2":{"31":1}}],["extracteddb",{"2":{"31":1}}],["功能",{"2":{"75":1}}],["功能几乎跟nodejs",{"2":{"70":1}}],["功能或特点",{"2":{"20":1}}],["功能对比",{"0":{"20":1}}],["在线",{"2":{"69":1}}],["在修改数据之前或之后做一些处理",{"2":{"59":1}}],["在项目编译的时候会自动生成这些文件",{"2":{"75":1}}],["在项目根目录下",{"2":{"52":1}}],["在项目启动的时候会去加载该文件",{"2":{"31":1}}],["在后台插件管理页面",{"2":{"44":1}}],["在后台插件管理里可以动态修改",{"2":{"40":1}}],["在执行打包的过程",{"2":{"42":1}}],["在我们脚手架上你可以发现",{"2":{"42":1}}],["在开发过程中如果需要引入第三方类库",{"2":{"42":1}}],["在提供的插件脚手架中已经应用了常用的依赖如",{"2":{"42":1}}],["在插件导入时才能被识别到",{"2":{"42":1}}],["在打包的时候选择要打包的插件",{"2":{"39":1}}],["在加载",{"2":{"35":1}}],["在某个版本需要新增数据的话",{"2":{"31":1}}],["在新增功能模块时",{"2":{"27":1}}],["在",{"2":{"19":1,"27":2,"29":1,"31":1,"43":1,"45":1}}],["在任何一个系统中",{"2":{"19":1}}],["拦截器",{"2":{"19":1}}],["通过动态加载",{"2":{"45":2}}],["通过反射实现",{"2":{"35":1}}],["通过拖动配置",{"2":{"30":1}}],["通过",{"2":{"29":1,"45":1}}],["通过管理后台菜单管理的快速创建即可生成",{"2":{"25":1}}],["通过独特的架构",{"2":{"19":1}}],["通过微调大模型学习框架特有写法",{"2":{"7":1,"24":1}}],["高性能",{"2":{"19":1}}],["高效的缓存解决方案",{"2":{"8":1}}],["逻辑删除",{"2":{"19":1,"20":1}}],["多租户",{"2":{"20":1}}],["多数据源是否支持",{"2":{"20":2}}],["多数据源支持",{"2":{"20":1}}],["多种",{"2":{"20":1}}],["多张表",{"2":{"20":1}}],["多主键",{"2":{"19":1}}],["多表查询",{"2":{"19":1,"20":3}}],["稳定性越差",{"2":{"19":1}}],["依赖越多",{"2":{"19":1}}],["把控性和稳定性",{"2":{"19":1}}],["再无任何第三方依赖",{"2":{"19":1}}],["除了",{"2":{"19":1,"20":1,"21":1}}],["更新",{"0":{"78":1},"1":{"79":1}}],["更灵活",{"2":{"19":1}}],["更轻量",{"2":{"19":1,"20":2}}],["更加强大的",{"2":{"19":1}}],["更加简洁",{"2":{"10":1}}],["详细用法请查看",{"2":{"19":1}}],["集成了比",{"2":{"19":1}}],[">",{"2":{"18":1,"42":5,"55":10}}],["根据",{"2":{"22":1}}],["根据一定规则生成",{"2":{"18":1}}],["根据列表查询单个信息",{"2":{"11":1}}],["该功能主要完成系统用户配置",{"2":{"69":1}}],["该类继承了",{"2":{"18":1}}],["该父类已经实现了以下六个基础方法",{"2":{"10":1}}],["自动编码功能",{"2":{"77":1}}],["自动生成前端页面",{"2":{"25":1}}],["自动映射成数据库的表结构",{"2":{"22":1}}],["自动建表",{"0":{"22":1}}],["自带的注解",{"2":{"18":1}}],["自定义路由注解",{"0":{"17":1}}],["转成小写替换掉",{"2":{"16":1}}],["与前端紧密结合",{"2":{"61":1}}],["与",{"2":{"16":1,"53":1}}],["x26",{"2":{"50":2}}],["x",{"2":{"35":1,"66":1,"79":1}}],["xml",{"2":{"27":1,"42":2,"43":2}}],["xcloud",{"2":{"21":1}}],["xugu",{"2":{"21":1}}],["xxxxx",{"2":{"36":2}}],["xxx",{"2":{"16":2,"35":2,"40":2}}],["x3c",{"2":{"11":1,"12":1,"13":1,"14":5,"18":1,"29":2,"35":1,"42":81,"43":4,"55":13,"60":1}}],["模块化",{"2":{"45":1}}],["模块包",{"2":{"27":1}}],["模块名和",{"2":{"16":1}}],["模块名",{"2":{"16":2}}],["模块目录",{"2":{"16":1}}],["│─",{"2":{"39":1}}],["│",{"2":{"16":17,"27":36,"39":12}}],["原理",{"0":{"15":1,"55":1},"1":{"16":1,"17":1,"18":1}}],["原生",{"2":{"9":1}}],["接口的请求入参日志",{"2":{"69":1}}],["接口",{"2":{"16":1}}],["接口路由规则",{"0":{"16":1}}],["接口到前端页面的一键生成",{"2":{"7":1,"24":1}}],["接下来我们看看实现的原理",{"2":{"14":1}}],["对系统中经常使用的一些较为固定的数据进行维护",{"2":{"69":1}}],["对系统动态配置常用参数",{"2":{"69":1}}],["对应实体",{"2":{"59":2}}],["对应插件内的方法",{"2":{"35":1}}],["对应请求参数中的",{"2":{"12":1}}],["对应请求参数中同名参数",{"2":{"12":1}}],["对",{"2":{"20":1}}],["对比一下是简化了不少",{"2":{"14":1}}],["进行重写",{"2":{"14":1}}],["rawpassword",{"2":{"55":4}}],["roleids",{"2":{"55":3,"56":1}}],["root",{"2":{"50":1}}],["row",{"2":{"20":1}}],["runtimeexception",{"2":{"42":1}}],["run",{"2":{"31":1,"52":1}}],["rich",{"2":{"31":1}}],["rpc",{"2":{"20":1}}],["r",{"2":{"13":2,"14":1,"29":17,"62":4}}],["replace",{"2":{"55":1}}],["replaceall",{"2":{"55":1}}],["refreshexpire",{"2":{"54":1}}],["readme",{"2":{"40":2,"41":1}}],["readbytes",{"2":{"35":1}}],["required",{"2":{"62":1}}],["requiredargsconstructor",{"2":{"31":1,"35":2,"62":1}}],["requestpart",{"2":{"62":1}}],["requestparam",{"2":{"35":3}}],["requestparams",{"2":{"11":1,"12":1,"13":4,"14":5,"29":4,"56":2,"59":4,"60":1}}],["requestmatchers",{"2":{"55":1}}],["requestmappinginfo",{"2":{"18":2}}],["requestmappinghandlermapping",{"2":{"18":2}}],["requestmapping",{"2":{"17":2,"35":1}}],["requestattribute",{"2":{"13":1}}],["request",{"2":{"11":1,"12":1,"13":1,"14":1,"55":2,"60":1,"62":2}}],["requests",{"2":{"0":1}}],["remark",{"2":{"31":2}}],["restaccessdeniedhandler",{"2":{"55":3}}],["restcontrolleradvice",{"2":{"29":1}}],["response",{"2":{"55":2}}],["responsebody",{"2":{"35":2}}],["result",{"2":{"35":8}}],["resources",{"2":{"27":1,"31":1,"36":2,"39":1,"50":1}}],["resource",{"2":{"9":1,"55":10,"56":2}}],["recycle",{"2":{"27":1}}],["redshift",{"2":{"21":2}}],["redis",{"2":{"8":6}}],["return",{"2":{"9":2,"13":1,"14":2,"18":1,"29":8,"35":2,"42":1,"55":13,"62":2}}],["表单",{"2":{"13":1}}],["uploadmode",{"2":{"62":2}}],["upload",{"2":{"41":1,"62":3}}],["updates",{"2":{"35":1}}],["update",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"60":1}}],["utf",{"2":{"35":1}}],["util",{"2":{"35":4}}],["useunicode=true",{"2":{"50":1}}],["useplugin",{"2":{"35":2}}],["usecache",{"2":{"35":2}}],["userid",{"2":{"56":1}}],["userinfo",{"2":{"55":1,"56":3}}],["userdetails",{"2":{"55":2}}],["userdetailsservice",{"2":{"55":4}}],["usernamepasswordauthenticationfilter",{"2":{"55":1}}],["usernamenotfoundexception",{"2":{"55":2}}],["username",{"2":{"50":1,"55":2,"56":3}}],["user",{"2":{"13":2,"27":1}}],["ui",{"2":{"25":1,"60":1,"67":1}}],["uxdb",{"2":{"21":1}}],["union",{"2":{"20":2}}],["urlclassloader",{"2":{"45":2}}],["url",{"2":{"13":1,"45":3,"50":1,"55":2,"62":1}}],["将由以下这个类实现自动配置模块路由",{"2":{"18":1}}],["将",{"2":{"13":1}}],["zh",{"2":{"12":1}}],["false",{"2":{"62":1}}],["frameoptionsconfig",{"2":{"55":1}}],["frameoptions",{"2":{"55":1}}],["from",{"2":{"20":1,"42":13}}],["form",{"2":{"62":1}}],["format",{"2":{"42":7}}],["for",{"2":{"51":1,"55":2}}],["fluent",{"2":{"20":1}}],["flex",{"2":{"12":1,"19":2,"20":1,"21":2,"66":1,"75":1}}],["final",{"2":{"62":1}}],["finally",{"2":{"55":1}}],["fi",{"2":{"55":7}}],["filterchain",{"2":{"55":1}}],["filterconfig",{"2":{"55":2}}],["filter",{"2":{"55":1}}],["filterinvocation",{"2":{"55":5}}],["filterinvocationsecuritymetadatasource",{"2":{"55":2}}],["files",{"2":{"62":2}}],["fileuploadstrategyfactory",{"2":{"62":4}}],["filepath",{"2":{"36":1,"62":1}}],["file",{"2":{"8":1,"45":2,"62":2}}],["firebird",{"2":{"21":2}}],["fieldeq",{"2":{"12":1}}],["具体看",{"2":{"12":1}}],["返回给",{"2":{"18":1}}],["返回字段",{"2":{"12":1}}],["返回哪些字段等",{"2":{"11":1,"13":1,"14":1,"60":1}}],["需要分别拉取前后端代码到本地",{"2":{"49":1}}],["需要初始化一些数据",{"2":{"31":1}}],["需要模糊查询的字段",{"2":{"12":1}}],["需安装",{"2":{"8":1}}],["个接口",{"2":{"11":1}}],["604800",{"2":{"54":1}}],["6",{"2":{"11":1,"42":12,"47":1,"65":1}}],["6379",{"2":{"8":1}}],["等包",{"2":{"27":1}}],["等等",{"2":{"20":1}}],["等参数封装在了一个",{"2":{"13":1}}],["等",{"2":{"11":1,"20":1,"25":1,"42":2}}],["查询该用户所具有的权限并缓存",{"2":{"55":1}}],["查询配置",{"0":{"12":1}}],["查询列表",{"2":{"11":1}}],["查询条件过滤",{"2":{"11":1,"13":1,"14":1,"60":1}}],["分页查询无",{"2":{"20":1}}],["分页查询之总量缓存",{"2":{"20":1}}],["分页查询配置",{"2":{"12":1}}],["分页查询",{"2":{"11":1,"20":1}}],["修改之后",{"2":{"59":2}}],["修改之前",{"2":{"59":2}}],["修改类型",{"2":{"59":2}}],["修改前后",{"0":{"59":1}}],["修改",{"2":{"11":1,"69":1}}],["删除",{"2":{"11":1,"69":1}}],["新增后台扩展插件",{"2":{"77":1}}],["新增一个",{"2":{"27":1}}],["新增",{"2":{"11":1,"77":1}}],["这将会给我们带来更多的动力",{"2":{"78":1}}],["这些方式都可以解决这个问题",{"2":{"75":1}}],["这边使用到了",{"2":{"42":1}}],["这会使得打包结果很臃肿",{"2":{"42":1}}],["这个可能会给你带来巨大的帮助",{"2":{"30":1}}],["这让我们可以可以专注于业务逻辑和实体",{"2":{"22":1}}],["这样就默认实现了以下六个接口",{"2":{"11":1}}],["这是",{"2":{"0":1}}],["jtw",{"2":{"55":1}}],["jwtauthenticationtokenfilter",{"2":{"55":3}}],["jwtsecurityconfig",{"2":{"55":1}}],["jwtuser",{"2":{"55":6}}],["jwtuserdetailsserviceimpl",{"2":{"55":1}}],["jwt",{"2":{"53":1}}],["jdbc",{"2":{"50":2}}],["jdk",{"2":{"47":1,"65":1}}],["jcl",{"2":{"42":2}}],["jakarta",{"2":{"42":3}}],["jarfilepath",{"2":{"45":1}}],["jarurl",{"2":{"45":2}}],["jar",{"2":{"35":1,"42":31,"45":9}}],["javaurl",{"2":{"45":1}}],["javapackage",{"2":{"31":1,"35":2,"42":1}}],["javapublic",{"2":{"17":1,"18":1,"25":1,"29":2}}],["java",{"2":{"0":1,"1":1,"8":1,"9":2,"11":1,"12":1,"13":1,"14":2,"16":2,"22":1,"25":2,"27":1,"29":1,"35":10,"38":2,"39":2,"42":2,"43":1,"45":1,"47":1,"51":6,"55":4,"56":2,"59":2,"60":1,"62":1,"65":1,"72":2}}],["json文件",{"2":{"31":1}}],["json参数",{"2":{"31":1}}],["json",{"2":{"31":7,"36":1,"39":1,"40":2,"42":2,"52":1}}],["jsonobject",{"2":{"11":1,"12":1,"13":3,"14":3,"29":2,"56":1,"59":2,"60":1}}],["jpa",{"2":{"22":2}}],["join",{"2":{"20":2}}],["vue",{"2":{"73":2}}],["vue3",{"2":{"67":1}}],["verify",{"2":{"42":1}}],["version>3",{"2":{"42":1}}],["version>2",{"2":{"42":1}}],["version>",{"2":{"42":3}}],["version>5",{"2":{"42":1}}],["version",{"2":{"40":1,"41":1}}],["vertica",{"2":{"21":2}}],["v7",{"0":{"77":1,"79":1},"2":{"35":1}}],["void",{"2":{"11":1,"12":1,"13":1,"14":1,"25":1,"31":1,"35":3,"55":6,"59":2,"60":1}}],["values",{"2":{"35":1}}],["value",{"2":{"11":1,"12":1,"13":1,"14":1,"17":1,"31":1,"60":1,"62":4}}],["示例",{"0":{"11":1}}],["使得代码更加清晰",{"2":{"45":1}}],["使得可以在插件中获取主应用中的",{"2":{"35":1}}],["使得",{"2":{"10":1}}],["使用cool",{"2":{"35":1}}],["使用缓存",{"2":{"35":1}}],["使用插件",{"0":{"33":1},"1":{"34":1,"35":1,"36":1}}],["使用",{"0":{"9":1,"62":1}}],["都继承自",{"2":{"10":1}}],["所有的",{"2":{"10":1}}],["我是插件",{"2":{"42":1}}],["我们可以在运行时动态地加载外部的",{"2":{"45":1}}],["我们可以通过配置文件来实现",{"2":{"36":1}}],["我们还引入了其他包",{"2":{"42":1}}],["我们还可以通过自定义方言的方式",{"2":{"21":1}}],["我们提供了插件脚手架",{"2":{"38":1}}],["我们提供了插件系统",{"2":{"32":1}}],["我们正在适配",{"2":{"21":1}}],["我们不直接使用",{"2":{"18":1}}],["我们会尽力完善文档",{"2":{"0":1}}],["我被缓存了",{"2":{"9":1}}],["我被调用了",{"2":{"9":1}}],["ignoredurlsproperties",{"2":{"55":3}}],["is",{"2":{"51":1}}],["isempty",{"2":{"35":1,"55":1}}],["img",{"2":{"42":1}}],["import",{"2":{"35":14,"42":6}}],["impala",{"2":{"21":2}}],["implements",{"2":{"9":2,"14":1,"31":1,"55":3}}],["ioexception",{"2":{"55":2}}],["ioutil",{"2":{"35":2}}],["io",{"2":{"35":2,"42":2}}],["if",{"2":{"29":2,"35":1,"55":2}}],["illegalargumentexception",{"2":{"29":2,"55":2}}],["index",{"2":{"60":1}}],["install",{"2":{"52":1}}],["insert",{"2":{"35":4}}],["in",{"2":{"42":1}}],["including",{"2":{"42":2}}],["inputstream",{"2":{"35":4}}],["into",{"2":{"35":1}}],["interceptorstatustoken",{"2":{"55":1}}],["interface",{"2":{"17":1}}],["integer",{"2":{"9":1,"56":1}}],["invoke",{"2":{"55":2}}],["invokeotherplugin",{"2":{"35":1}}],["invokemain",{"2":{"35":3,"42":1}}],["invokemethod",{"2":{"35":4}}],["invokeplugin",{"2":{"35":11,"42":2}}],["inner",{"2":{"20":1}}],["init",{"2":{"11":1,"12":1,"13":1,"14":1,"25":1,"51":1,"55":1,"60":1}}],["informix",{"2":{"21":2}}],["info",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"16":2,"18":5,"31":1,"35":5,"42":15,"51":4,"60":1}}],["idea",{"2":{"75":1}}],["id",{"2":{"9":2,"20":1,"56":1}}],["o",{"2":{"51":1,"55":3}}],["obtainsecuritymetadatasource",{"2":{"55":1}}],["observation",{"2":{"42":3}}],["objutil",{"2":{"35":2}}],["objectutil",{"2":{"55":1}}],["object中包含用户请求request",{"2":{"55":1}}],["object",{"2":{"9":2,"14":1,"35":4,"42":2,"55":1}}],["official",{"2":{"38":2,"72":2,"73":2}}],["ossaccesskeyid=ltai5t8xtpd99yzsjqcc",{"2":{"35":1}}],["oss",{"2":{"35":3,"61":1,"62":1}}],["oscar",{"2":{"21":1}}],["org",{"2":{"35":5,"42":8}}],["order",{"2":{"27":2}}],["oracle12c",{"2":{"21":2}}],["oracle11g",{"2":{"21":1}}],["oracle",{"2":{"21":1}}],["operation",{"2":{"62":2}}],["openapi",{"2":{"51":1}}],["opengauss",{"2":{"21":2}}],["option",{"2":{"14":2}}],["oceanbase",{"2":{"21":2}}],["ok",{"2":{"13":1,"62":2}}],["out",{"2":{"9":1,"13":1,"35":5,"42":1}}],["override",{"2":{"9":2,"11":1,"12":1,"13":1,"14":3,"18":1,"31":1,"35":1,"42":1,"55":11,"59":2,"60":1}}],["multipartfile",{"2":{"62":1}}],["multipart",{"2":{"62":1}}],["mutate",{"2":{"18":1}}],["mode",{"2":{"62":1}}],["modifyafter",{"2":{"59":1}}],["modifyenum",{"2":{"59":2}}],["modifybefore",{"2":{"59":1}}],["modules",{"2":{"16":1,"27":3}}],["ms",{"2":{"51":1}}],["mvn",{"2":{"43":1}}],["micrometer",{"2":{"42":12}}],["md",{"2":{"40":1}}],["md5digestashex",{"2":{"55":2}}],["md5",{"2":{"29":2}}],["m",{"2":{"35":6}}],["mediatype",{"2":{"62":2}}],["message",{"2":{"29":1}}],["method",{"2":{"18":3}}],["methodname",{"2":{"9":1,"35":3}}],["matches",{"2":{"55":1}}],["map",{"2":{"55":6}}],["mapper",{"2":{"25":1,"27":4}}],["maven",{"2":{"42":7,"47":1,"65":1,"75":1}}],["main",{"2":{"25":1,"27":1,"39":1,"51":3}}],["mariadb",{"2":{"21":2}}],["manes",{"2":{"8":1}}],["myaccessdecisionmanager",{"2":{"55":3}}],["myfiltersecurityinterceptor",{"2":{"55":1}}],["mysecuritymetadatasource",{"2":{"55":1}}],["mysql",{"2":{"21":3,"47":1,"50":5,"65":1}}],["my",{"2":{"43":1}}],["mycoolplugintest",{"2":{"39":1}}],["mycoolplugin",{"2":{"35":1,"39":1}}],["mybatis",{"2":{"12":1,"19":5,"20":4,"21":2,"66":1}}],["+",{"2":{"9":2,"20":1,"35":2,"42":3,"45":2,"55":5}}],["tip",{"2":{"61":1}}],["time`",{"2":{"35":2}}],["t",{"2":{"59":6}}],["this",{"2":{"55":1}}],["thread",{"2":{"45":1,"51":1}}],["throws",{"2":{"55":8}}],["throw",{"2":{"29":1,"42":1,"55":1}}],["the",{"2":{"42":14}}],["toarray",{"2":{"55":1}}],["token",{"2":{"54":2,"55":2,"56":1}}],["tohanyupinyinstring",{"2":{"42":1}}],["tone",{"2":{"42":1}}],["team",{"2":{"38":2,"72":2,"73":2}}],["testplugin",{"2":{"35":2}}],["test",{"2":{"9":2,"13":2,"25":1,"35":2,"39":1}}],["txt",{"2":{"35":2,"36":2}}],["try",{"2":{"42":1,"55":1}}],["true",{"2":{"29":1,"55":1}}],["transactiontemplate",{"2":{"20":1}}],["transactional",{"2":{"20":1}}],["tdengine",{"2":{"21":2}}],["target",{"2":{"43":2}}],["targetclass",{"2":{"9":1}}],["task",{"2":{"27":1,"35":3,"51":1}}],["table",{"2":{"22":1,"66":1}}],["tag",{"2":{"11":1,"12":1,"13":1,"14":1,"60":1,"62":1}}],["typescript",{"2":{"67":1}}],["typehandler",{"2":{"20":1}}],["type",{"2":{"8":2,"59":4}}],["daoauthenticationprovider",{"2":{"55":2}}],["datasource",{"2":{"50":1}}],["database",{"2":{"8":1}}],["data",{"2":{"8":1,"27":1,"31":2,"62":1}}],["dofilter",{"2":{"55":2}}],["doris",{"2":{"21":2}}],["duration",{"2":{"51":1}}],["duplicatekeyexception",{"2":{"29":2}}],["driver",{"2":{"50":2}}],["dynamicjarclassloader",{"2":{"45":3}}],["digestutils",{"2":{"55":2}}],["digesthex",{"2":{"29":2}}],["disable",{"2":{"55":2}}],["dict",{"2":{"27":1}}],["dm",{"2":{"21":1}}],["dbfromjsoninit",{"2":{"31":1}}],["db2",{"2":{"21":2}}],["db",{"2":{"20":1,"27":1,"31":2}}],["destroy",{"2":{"55":1}}],["description",{"2":{"11":1,"12":1,"13":1,"14":1,"40":1,"41":1,"60":1,"62":2}}],["deployment",{"2":{"75":1}}],["department",{"2":{"55":1}}],["departmentids",{"2":{"55":2}}],["dependency>",{"2":{"42":4}}],["dev",{"2":{"52":1}}],["debug",{"2":{"35":3}}],["derby",{"2":{"21":2}}],["default",{"2":{"17":3,"42":1}}],["democoolplugin",{"2":{"42":1}}],["democacheservice",{"2":{"9":2}}],["democacheserviceimpl",{"2":{"9":2}}],["demov2",{"2":{"31":1}}],["demoentity",{"2":{"25":1}}],["demoentity>",{"2":{"11":1,"12":1,"13":1,"14":5,"60":1}}],["demo",{"2":{"16":3,"25":1,"31":4,"40":1}}],["demomapper",{"2":{"14":1}}],["demoserviceimpl",{"2":{"14":1}}],["demoservice",{"2":{"11":1,"12":1,"13":1,"14":2,"60":1}}],["delete",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"60":1}}],["swagger",{"0":{"60":1},"2":{"60":1}}],["show",{"2":{"70":1}}],["shell",{"2":{"52":1}}],["shaded",{"2":{"42":14}}],["shade",{"2":{"42":6}}],["snapshot",{"2":{"43":1}}],["s",{"2":{"42":1}}],["sourceforge",{"2":{"42":4}}],["soon",{"2":{"30":1}}],["summary",{"2":{"62":2}}],["supports",{"2":{"55":1}}],["super",{"2":{"14":2,"18":1,"29":2,"55":3}}],["success",{"2":{"35":1}}],["simplegrantedauthority",{"2":{"55":1}}],["signature=krlj0uv96tbliagpji",{"2":{"35":1}}],["sinodb",{"2":{"21":1}}],["slf4j",{"2":{"29":1,"31":1,"35":3,"42":4,"55":2}}],["split",{"2":{"55":1}}],["space",{"2":{"27":1}}],["springdoc",{"2":{"51":2}}],["springboot3",{"2":{"79":1}}],["springboot",{"2":{"45":1}}],["springframework",{"2":{"35":5,"42":14}}],["spring",{"2":{"18":3,"20":2,"42":13,"50":1,"53":1,"66":1}}],["spring方式",{"2":{"9":1}}],["springcache",{"2":{"8":1}}],["src",{"2":{"25":1,"51":1}}],["sap",{"2":{"21":1}}],["sysuserentity",{"2":{"55":14}}],["sys",{"2":{"35":4}}],["system",{"2":{"9":1,"13":1,"35":5,"42":1}}],["sybase",{"2":{"21":2}}],["schema",{"2":{"20":1}}],["sqlserver",{"2":{"21":2}}],["sqlserver2005",{"2":{"21":2}}],["sqlite",{"2":{"21":3}}],["sql",{"2":{"19":2,"20":2,"21":1}}],["star",{"0":{"72":1,"73":1},"2":{"78":1}}],["stateless",{"2":{"55":1}}],["static",{"2":{"25":1}}],["status=200",{"2":{"35":1}}],["status",{"2":{"12":1}}],["stream",{"2":{"55":1}}],["str",{"2":{"35":1}}],["strutil",{"2":{"35":2}}],["string",{"2":{"9":2,"13":1,"17":3,"25":1,"35":7,"42":4,"55":12,"56":2}}],["stereotype",{"2":{"35":1}}],["sessioncreationpolicy",{"2":{"55":2}}],["sessionmanagement",{"2":{"55":1}}],["securityfilterchain",{"2":{"55":2}}],["securitymetadatasource",{"2":{"55":3}}],["security权限拦截器校验当前用户权限",{"2":{"55":1}}],["securityconfig",{"2":{"55":1}}],["security加载所有设置的权限",{"2":{"55":1}}],["security",{"2":{"53":1}}],["server",{"2":{"62":1}}],["servertimezone=gmt",{"2":{"50":1}}],["servletresponse",{"2":{"55":1}}],["servletrequest",{"2":{"55":1}}],["servletexception",{"2":{"55":3}}],["service",{"2":{"9":2,"14":3,"25":2,"27":2,"51":1}}],["select",{"2":{"12":1}}],["setuserdetailsservice",{"2":{"55":1}}],["setaccessdecisionmanager",{"2":{"55":1}}],["setmyaccessdecisionmanager",{"2":{"55":1}}],["setmodule",{"2":{"25":1}}],["settings",{"2":{"75":1}}],["settonetype",{"2":{"42":1}}],["settype",{"2":{"25":1}}],["setpasswordencoder",{"2":{"55":1}}],["setpassword",{"2":{"29":2}}],["setpageoption",{"2":{"12":1}}],["setentity",{"2":{"25":1}}],["setname",{"2":{"25":1}}],["setlistoption",{"2":{"12":1}}],["set",{"2":{"9":1,"35":2,"55":5}}],["=5",{"2":{"50":1}}],["==",{"2":{"35":1,"55":2}}],["==>",{"2":{"35":2}}],["=",{"2":{"9":2,"11":4,"12":4,"13":4,"14":4,"17":2,"18":3,"25":2,"28":1,"29":5,"35":8,"42":5,"45":2,"47":3,"55":15,"56":2,"60":4,"62":9,"65":3}}],["性能要求比较高或有分布式部署需求的建议配置成",{"2":{"8":1}}],["permitall",{"2":{"55":1}}],["perm",{"2":{"55":5}}],["perms",{"2":{"55":4}}],["phase>",{"2":{"42":1}}],["phase>package",{"2":{"42":1}}],["phoenix",{"2":{"21":2}}],["phone",{"2":{"12":2}}],["pinyin",{"2":{"42":3}}],["pinyinhelper",{"2":{"42":2}}],["pinyin4j",{"2":{"42":5}}],["png",{"2":{"40":1}}],["put",{"2":{"29":2,"55":1}}],["public",{"2":{"9":4,"11":1,"12":1,"13":2,"14":3,"25":1,"29":7,"31":2,"35":4,"42":2,"55":22,"59":2,"60":1,"62":3}}],["plugins",{"2":{"42":1}}],["plugins>",{"2":{"42":2}}],["plugin>",{"2":{"42":2}}],["plugin",{"2":{"27":1,"35":6,"38":2,"39":3,"40":2,"42":8,"43":5,"51":1}}],["plus",{"2":{"19":1,"20":1}}],["pool",{"2":{"51":1}}],["pom",{"2":{"43":1}}],["policy=eyjlehb0wny0xm1qxmjowmto0oc41njvaiiwiy29uzgl0aw9ucyi6w1siy29udgvudc1szw5ndggtcmfuz2uildasnti0mjg4mdbdxx0=",{"2":{"35":1}}],["postgresql",{"2":{"21":3}}],["postmapping",{"2":{"13":1,"14":1,"35":2,"62":1}}],["post",{"2":{"11":5}}],["port",{"2":{"8":1,"62":1}}],["project",{"2":{"75":2}}],["projectlombok",{"2":{"42":2}}],["properties>",{"2":{"43":2}}],["properties",{"2":{"43":1}}],["protected",{"2":{"11":1,"12":1,"13":1,"14":2,"18":1,"60":1}}],["private",{"2":{"35":3,"55":11,"56":2,"62":1}}],["println",{"2":{"9":1,"13":1,"35":5,"42":1}}],["preparing",{"2":{"35":1}}],["package",{"2":{"43":1,"52":1}}],["parentclassloader",{"2":{"35":2}}],["parameter",{"2":{"62":1}}],["parameters",{"2":{"35":1}}],["param",{"2":{"55":1,"59":6}}],["params",{"2":{"35":1,"42":2}}],["parse",{"2":{"19":1}}],["paths",{"2":{"18":1}}],["path",{"2":{"18":3}}],["page",{"2":{"10":1,"11":1,"12":1,"13":1,"14":9,"60":1}}],["passwordencoder",{"2":{"55":4}}],["passwordversion",{"2":{"55":1,"56":1}}],["password",{"2":{"8":1,"50":1}}],["p0",{"2":{"9":1}}],["101+08",{"2":{"51":1}}],["15t14",{"2":{"51":4}}],["17",{"2":{"47":1,"65":1}}],["13",{"2":{"42":1}}],["13t20",{"2":{"35":8}}],["123456",{"2":{"50":1,"52":1,"70":1}}],["12",{"2":{"42":2}}],["127",{"2":{"8":1,"35":1,"50":1,"51":1,"52":1,"60":1,"62":1}}],["1800",{"2":{"54":1}}],["18",{"2":{"35":8,"42":1}}],["1",{"0":{"34":1,"38":1,"49":1,"75":1,"77":2,"79":1},"2":{"8":1,"9":1,"35":2,"40":1,"42":11,"43":1,"45":2,"50":1,"51":3,"52":1,"55":3,"60":1,"62":1}}],["06",{"0":{"79":1}}],["00",{"2":{"35":8,"51":4}}],["01",{"2":{"35":8}}],["07",{"2":{"35":8,"51":4}}],["0",{"0":{"79":1},"2":{"8":3,"35":2,"40":2,"42":4,"43":1,"47":1,"50":3,"51":2,"52":2,"55":1,"60":2,"62":2}}],["headersconfigurer",{"2":{"55":1}}],["headers",{"2":{"55":1}}],["hello",{"2":{"35":4,"42":1}}],["hashmap",{"2":{"55":1}}],["hanyupinyintonetype",{"2":{"42":2}}],["hanyupinyinoutputformat",{"2":{"42":3}}],["hangzhou",{"2":{"35":1}}],["handleexception",{"2":{"29":1}}],["handleillegalargumentexception",{"2":{"29":1}}],["handlehttprequestmethodnotsupportedexception",{"2":{"29":1}}],["handlebadcredentialsexception",{"2":{"29":1}}],["handleduplicatekeyexception",{"2":{"29":1}}],["handlerrexception",{"2":{"29":1}}],["handlertype",{"2":{"18":3}}],["hana",{"2":{"21":2}}],["hook",{"2":{"40":1,"41":1}}],["host=https",{"2":{"35":1}}],["host",{"2":{"8":1}}],["hutool",{"2":{"35":3,"42":11,"66":1}}],["hive",{"2":{"21":2}}],["highgo",{"2":{"21":1}}],["hbase",{"2":{"21":1}}],["hsql",{"2":{"21":2}}],["h2",{"2":{"21":2}}],["html",{"2":{"60":1}}],["html文档",{"2":{"12":1}}],["http",{"2":{"51":1,"60":1,"62":1}}],["httprequestmethodnotsupportedexception",{"2":{"29":2}}],["httpsecurity",{"2":{"55":3}}],["httpservletrequest",{"2":{"11":1,"12":1,"13":1,"14":1,"60":1,"62":1}}],["https",{"2":{"1":2,"12":1,"35":1,"38":2,"70":1,"72":2,"73":2}}],["能够显著提升应用程序的性能和响应速度",{"2":{"8":1}}],["旨在提供高性能",{"2":{"8":1}}],["由该类统一执行初始化",{"2":{"31":1}}],["由",{"2":{"8":1}}],["csrf",{"2":{"55":1}}],["csiidb",{"2":{"21":2}}],["cfg",{"2":{"55":3}}],["cj",{"2":{"50":1}}],["currentthread",{"2":{"45":1}}],["cubrid",{"2":{"21":2}}],["charsequence",{"2":{"55":2}}],["characterencoding=utf",{"2":{"50":1}}],["chain",{"2":{"55":2}}],["chinesechar",{"2":{"42":4}}],["check",{"2":{"28":2,"29":6}}],["c",{"2":{"35":6,"51":3}}],["cn",{"2":{"35":4,"42":2}}],["c端用户",{"2":{"27":1}}],["clean",{"2":{"43":1}}],["clickhouse",{"2":{"21":2}}],["classloader",{"2":{"35":4}}],["classpath",{"2":{"31":1}}],["class",{"2":{"9":3,"11":1,"12":1,"13":1,"14":2,"17":2,"18":3,"25":2,"29":7,"31":1,"35":2,"42":1,"50":1,"55":8,"60":1,"62":1}}],["crud",{"0":{"58":1},"2":{"58":1}}],["crudoption",{"2":{"14":1}}],["create",{"2":{"12":1,"29":2}}],["createop",{"2":{"12":2}}],["catch",{"2":{"42":1}}],["cacheable",{"2":{"9":1}}],["cachenames",{"2":{"9":1}}],["cacheconfig",{"2":{"9":1}}],["cache",{"2":{"8":3,"35":2,"42":1}}],["caffeine",{"2":{"8":3}}],["collection",{"2":{"55":4}}],["consumes",{"2":{"62":1}}],["conf",{"2":{"55":4}}],["configuration",{"2":{"55":1}}],["configuration>",{"2":{"42":2}}],["configattribute",{"2":{"55":1}}],["configattributes",{"2":{"55":4}}],["configattribute>",{"2":{"55":3}}],["configattribute>>",{"2":{"55":1}}],["config",{"2":{"40":2,"41":1,"55":7}}],["context",{"2":{"42":2}}],["controller",{"2":{"10":2,"14":1,"16":2,"18":1,"25":2,"27":2,"35":3}}],["core",{"2":{"27":2,"31":1,"35":12,"42":6,"51":2}}],["code",{"2":{"29":1}}],["codetypeenum",{"2":{"25":1}}],["codemodel",{"2":{"25":10}}],["codegenerator",{"2":{"25":7}}],["compiler",{"2":{"75":1}}],["compile命令",{"2":{"75":1}}],["component",{"2":{"55":3}}],["coming",{"2":{"30":1}}],["combine",{"2":{"18":1}}],["commons",{"2":{"42":3}}],["commoncontroller",{"2":{"35":1}}],["comm",{"2":{"9":1}}],["com",{"2":{"1":2,"12":1,"25":1,"27":1,"31":1,"35":12,"38":2,"39":2,"42":4,"50":1,"51":3,"70":1,"72":2,"73":2}}],["coolsecurityutil",{"2":{"56":6}}],["cooleps",{"2":{"51":1}}],["coolexception",{"2":{"29":3}}],["coolexceptionhandler",{"2":{"29":1}}],["coolplugin注解",{"2":{"39":1}}],["coolplugin",{"2":{"35":4,"42":6}}],["coolpluginservice",{"2":{"35":1,"51":1}}],["coolplugininvokers",{"2":{"35":4}}],["coolpreconditions",{"2":{"28":1,"29":2}}],["coolapplication",{"2":{"27":1,"51":1}}],["cooladminjavaapplicationtests",{"2":{"25":1}}],["coolcodegeneratortest",{"2":{"25":1}}],["coolcache",{"2":{"9":5,"35":5,"42":1,"55":7}}],["coolrestcontroller",{"2":{"11":1,"12":1,"13":1,"14":1,"17":1,"18":2,"60":1,"62":1}}],["cool",{"0":{"68":1},"2":{"0":1,"1":2,"5":1,"6":1,"11":1,"12":1,"13":1,"14":1,"19":1,"21":1,"23":1,"25":1,"27":2,"31":3,"35":19,"38":4,"39":2,"42":5,"43":8,"44":1,"46":1,"50":1,"51":7,"60":1,"68":2,"70":1,"72":4,"73":4,"78":1}}],["框架用到了mybatis",{"2":{"75":1}}],["框架自带两种文件上传方式本地上传与云存储",{"2":{"61":1}}],["框架自带基于",{"2":{"8":1}}],["框架集成了auto",{"2":{"22":1}}],["框架封装了一个请求属性",{"2":{"13":1}}],["框架特有的通用工具类",{"2":{"9":1}}],["框架更新",{"2":{"4":1,"6":1}}],["缓存对象",{"2":{"35":1}}],["缓存结果",{"2":{"35":2}}],["缓存库",{"2":{"8":1}}],["缓存",{"0":{"8":1},"2":{"8":2}}],["的build",{"2":{"75":1}}],["的mvn",{"2":{"75":1}}],["的核心流程",{"2":{"30":1}}],["的能力",{"2":{"30":1}}],["的火热",{"2":{"30":1}}],["的都知道",{"2":{"22":1}}],["的事务管理",{"2":{"20":1}}],["的基本增删改查",{"2":{"20":1}}],["的",{"2":{"18":1,"75":1}}],["的一些最新资讯",{"2":{"6":1}}],["的在线文档仓库",{"2":{"0":1}}],["公众号",{"0":{"6":1}}],["团队哔哩哔哩官方账户",{"2":{"5":1}}],["站视频教程",{"2":{"7":1,"24":1}}],["站",{"0":{"5":1}}],["boot",{"2":{"66":1}}],["boolean",{"2":{"55":2}}],["body",{"2":{"13":1}}],["b8e4",{"2":{"42":1}}],["bbb",{"2":{"40":1}}],["beforeinvocation",{"2":{"55":1}}],["belerweb",{"2":{"42":2}}],["beans",{"2":{"42":3}}],["bean",{"2":{"35":1,"55":4}}],["ben",{"2":{"8":1}}],["bind",{"2":{"35":4}}],["badhanyupinyinoutputformatcombination",{"2":{"42":2}}],["badcredentialsexception",{"2":{"29":2}}],["banner",{"2":{"35":2,"36":2}}],["basecoolplugin",{"2":{"35":7,"42":4}}],["basecontroller",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"60":1}}],["baseservice中集成了常用的",{"2":{"58":1}}],["baseserviceimpl",{"2":{"14":1}}],["basesysuserservice",{"2":{"55":3}}],["basesysuserentity>lambdaquery",{"2":{"29":2,"55":1}}],["basesysuserentity",{"2":{"29":6,"55":3}}],["basesyspermsservice",{"2":{"55":8}}],["basesyslogmapper",{"2":{"35":3}}],["base",{"2":{"12":1,"27":1,"35":1,"62":1}}],["build>",{"2":{"42":2}}],["build",{"2":{"18":1,"55":1,"75":3}}],["b",{"0":{"5":1},"2":{"7":1,"24":1,"35":3}}],["anyrequest",{"2":{"55":1}}],["annotations",{"2":{"18":1}}],["annotation",{"2":{"17":2,"27":1,"35":5,"39":1,"42":5}}],["afterinvocation",{"2":{"55":1}}],["abstracthttpconfigurer",{"2":{"55":1}}],["abstractsecurityinterceptor",{"2":{"55":1}}],["abstractopenapiresource",{"2":{"51":1}}],["accessdeniedhandler",{"2":{"55":1}}],["aclass",{"2":{"55":1}}],["action",{"2":{"35":1}}],["aop",{"2":{"42":2}}],["arraylist",{"2":{"55":3}}],["artifactset>",{"2":{"42":2}}],["artifactid>maven",{"2":{"42":1}}],["artifactid>pinyin4j",{"2":{"42":1}}],["artifactid>",{"2":{"42":3}}],["artifactid>hutool",{"2":{"42":1}}],["args",{"2":{"25":1,"31":1}}],["aaa",{"2":{"40":1}}],["assets",{"2":{"40":2}}],["ase",{"2":{"21":1}}],["authprovider",{"2":{"55":4}}],["authenticationconfiguration",{"2":{"55":1}}],["authenticationmanager",{"2":{"55":2}}],["authenticationprovider",{"2":{"55":2}}],["authenticationentrypoint",{"2":{"55":1}}],["authenticated",{"2":{"55":1}}],["authorizehttprequests",{"2":{"55":1}}],["authority",{"2":{"55":3}}],["author",{"2":{"40":1,"41":1}}],["automatically",{"2":{"75":1}}],["automatically自动编译功能",{"2":{"75":1}}],["auto",{"2":{"66":1}}],["autowired",{"2":{"55":1}}],["autoprefixurlmapping",{"2":{"18":1}}],["aliyun",{"2":{"35":1}}],["aliyuncs",{"2":{"35":1}}],["aliasfor",{"2":{"17":2}}],["all",{"2":{"20":1,"42":1,"62":1}}],["apt",{"2":{"75":1}}],["apache",{"2":{"42":1}}],["appsecret",{"2":{"36":1}}],["appid",{"2":{"36":1}}],["application",{"2":{"50":1,"62":1}}],["applicationcontext",{"2":{"35":1}}],["applicationarguments",{"2":{"31":1}}],["applicationrunner",{"2":{"31":1}}],["appdemoinfocontroller",{"2":{"16":1}}],["app",{"2":{"16":4}}],["api",{"2":{"7":1,"11":1,"12":1,"13":1,"14":1,"17":1,"24":1,"42":4,"51":1,"60":1}}],["age",{"2":{"12":1}}],["addfilterbefore",{"2":{"55":1}}],["add",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"29":4,"55":2,"60":1}}],["adminbasecommcontroller",{"2":{"62":1}}],["admin中才能调试",{"2":{"35":1}}],["admin的缓存",{"2":{"35":1}}],["admindemoinfocontroller",{"2":{"11":1,"12":1,"13":1,"14":1,"16":2,"60":1}}],["admin",{"0":{"68":1},"2":{"0":1,"1":2,"16":4,"19":1,"21":1,"23":1,"25":1,"35":9,"38":2,"42":2,"43":1,"46":1,"51":4,"52":1,"55":6,"68":1,"70":2,"72":2,"73":2,"78":1}}],["a",{"2":{"9":2,"35":2}}],["ai",{"0":{"7":1,"24":1,"30":1},"2":{"4":1,"30":7,"68":5,"77":1}}],["你的项目",{"2":{"75":1}}],["你的star是我们最大的动力",{"2":{"71":1}}],["你的贡献可能给其他人代码巨大的帮助",{"2":{"0":1}}],["你将会看到后端的欢迎页面",{"2":{"51":1}}],["你可以这样做",{"2":{"75":1}}],["你可以自己开发插件",{"2":{"32":1}}],["你可以在这边了解到一些关于我们框架的最新动态",{"2":{"4":1}}],["抖音",{"0":{"4":1}}],["扫一扫加入微信开发交流群",{"2":{"3":1}}],["微信",{"0":{"3":1}}],["共创一些美好的事情",{"2":{"2":1}}],["共同参与开源",{"2":{"0":1}}],["交流合作",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1}}],["官网文档",{"2":{"19":1}}],["官网",{"2":{"1":1}}],["地址",{"0":{"1":1}}],["积极提交pull",{"2":{"0":1}}],["版相关功能",{"2":{"79":1}}],["版本一致",{"2":{"70":1}}],["版本号",{"2":{"41":1}}],["版本",{"2":{"30":1}}],["版",{"2":{"0":1}}],["介绍",{"0":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/.vitepress/dist/assets/chunks/@localSearchIndexroot.a2jsn6zp.js b/.vitepress/dist/assets/chunks/@localSearchIndexroot.a2jsn6zp.js new file mode 100644 index 0000000..c1f6eed --- /dev/null +++ b/.vitepress/dist/assets/chunks/@localSearchIndexroot.a2jsn6zp.js @@ -0,0 +1 @@ +const e='{"documentCount":81,"nextId":81,"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/controller.html#控制器","11":"/src/guide/controller.html#示例","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#重写-getmappingformethod","19":"/src/guide/db.html#数据库","20":"/src/guide/db.html#功能对比","21":"/src/guide/db.html#支持数据库","22":"/src/guide/db.html#自动建表","23":"/src/guide/dev.html#开发方式","24":"/src/guide/dev.html#ai-全自动","25":"/src/guide/dev.html#半自动","26":"/src/guide/dir.html#目录结构","27":"/src/guide/dir.html#结构","28":"/src/guide/exception.html#统一异常处理","29":"/src/guide/exception.html#异常统一捕获","30":"/src/guide/flow.html#ai-流程编排","31":"/src/guide/plugin.html#扩展插件","32":"/src/guide/plugin.html#使用插件","33":"/src/guide/plugin.html#_1、安装","34":"/src/guide/plugin.html#_2、调用","35":"/src/guide/plugin.html#_3、配置","36":"/src/guide/plugin.html#开发插件","37":"/src/guide/plugin.html#_1、脚手架","38":"/src/guide/plugin.html#_2、目录结构","39":"/src/guide/plugin.html#_3、开发过程","40":"/src/guide/plugin.html#_4、字段解释","41":"/src/guide/plugin.html#插件详解","42":"/src/guide/plugin.html#打包","43":"/src/guide/plugin.html#安装插件","44":"/src/guide/plugin.html#实现原理","45":"/src/guide/initData.html#数据初始化","46":"/src/guide/quick.html#快速开始","47":"/src/guide/quick.html#环境准备","48":"/src/guide/quick.html#运行系统","49":"/src/guide/quick.html#_1、拉取源码","50":"/src/guide/quick.html#_2、配置数据库","51":"/src/guide/quick.html#_3、启动后端服务","52":"/src/guide/quick.html#_4、启动前端服务","53":"/src/guide/security.html#权限校验","54":"/src/guide/security.html#配置","55":"/src/guide/security.html#原理","56":"/src/guide/security.html#当前用户","57":"/src/guide/service.html#服务","58":"/src/guide/service.html#crud","59":"/src/guide/service.html#修改前后","60":"/src/guide/swagger.html#swagger-文档","61":"/src/guide/upload.html#文件上传","62":"/src/guide/upload.html#使用","63":"/src/introduce/#简介","64":"/src/introduce/#技术选型","65":"/src/introduce/#一、环境要求","66":"/src/introduce/#二、后端框架","67":"/src/introduce/#三、前端框架","68":"/src/introduce/#为什么选择-cool-admin","69":"/src/introduce/#内置功能","70":"/src/introduce/show.html#演示","71":"/src/introduce/src.html#源码","72":"/src/introduce/src.html#后端-点个-star","73":"/src/introduce/src.html#前端-点个-star","74":"/src/question/common.html#常见问题","75":"/src/question/common.html#_1、找不到类似xxxtabledef文件","76":"/src/todo/plan.html#计划","77":"/src/todo/plan.html#完善插件","78":"/src/todo/update.html#更新","79":"/src/todo/update.html#v7-1-1-2024-07-15","80":"/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,7],"8":[1,1,35],"9":[1,1,40],"10":[1,1,15],"11":[1,1,48],"12":[1,1,64],"13":[1,1,57],"14":[1,1,63],"15":[1,1,1],"16":[1,1,24],"17":[1,1,14],"18":[2,1,43],"19":[1,1,41],"20":[1,1,79],"21":[1,1,112],"22":[1,1,21],"23":[1,1,7],"24":[2,1,12],"25":[1,1,51],"26":[1,1,4],"27":[1,1,58],"28":[1,1,8],"29":[1,1,78],"30":[2,1,28],"31":[1,1,9],"32":[1,1,1],"33":[2,2,9],"34":[2,2,204],"35":[2,2,18],"36":[1,1,1],"37":[2,2,16],"38":[2,2,25],"39":[2,2,31],"40":[2,2,27],"41":[1,1,185],"42":[1,1,31],"43":[1,1,5],"44":[1,1,66],"45":[1,1,76],"46":[1,1,4],"47":[1,1,19],"48":[1,1,1],"49":[2,2,4],"50":[2,2,45],"51":[2,2,59],"52":[2,2,24],"53":[1,1,7],"54":[1,1,14],"55":[1,1,243],"56":[1,1,30],"57":[1,1,2],"58":[1,1,5],"59":[1,1,21],"60":[2,1,48],"61":[1,1,17],"62":[1,1,78],"63":[1,1,1],"64":[1,1,4],"65":[2,2,14],"66":[2,2,10],"67":[2,2,5],"68":[4,1,26],"69":[1,1,38],"70":[1,1,11],"71":[1,1,7],"72":[4,1,11],"73":[4,1,11],"74":[1,1,2],"75":[2,1,29],"76":[1,1,4],"77":[1,1,9],"78":[1,1,8],"79":[6,1,9],"80":[7,1,8]},"averageFieldLength":[1.5061728395061729,1.17283950617284,30.728395061728385],"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":"控制器","titles":[]},"11":{"title":"示例","titles":["控制器"]},"12":{"title":"查询配置","titles":["控制器"]},"13":{"title":"请求参数","titles":["控制器"]},"14":{"title":"重写实现","titles":["控制器"]},"15":{"title":"原理","titles":[]},"16":{"title":"接口路由规则","titles":["原理"]},"17":{"title":"自定义路由注解","titles":["原理"]},"18":{"title":"重写 getMappingForMethod","titles":["原理"]},"19":{"title":"数据库","titles":[]},"20":{"title":"功能对比","titles":["数据库"]},"21":{"title":"支持数据库","titles":["数据库"]},"22":{"title":"自动建表","titles":["数据库"]},"23":{"title":"开发方式","titles":[]},"24":{"title":"Ai 全自动","titles":["开发方式"]},"25":{"title":"半自动","titles":["开发方式"]},"26":{"title":"目录结构","titles":[]},"27":{"title":"结构","titles":["目录结构"]},"28":{"title":"统一异常处理","titles":[]},"29":{"title":"异常统一捕获","titles":["统一异常处理"]},"30":{"title":"Ai 流程编排","titles":[]},"31":{"title":"扩展插件","titles":[]},"32":{"title":"使用插件","titles":["扩展插件"]},"33":{"title":"1、安装","titles":["扩展插件","使用插件"]},"34":{"title":"2、调用","titles":["扩展插件","使用插件"]},"35":{"title":"3、配置","titles":["扩展插件","使用插件"]},"36":{"title":"开发插件","titles":["扩展插件"]},"37":{"title":"1、脚手架","titles":["扩展插件","开发插件"]},"38":{"title":"2、目录结构","titles":["扩展插件","开发插件"]},"39":{"title":"3、开发过程","titles":["扩展插件","开发插件"]},"40":{"title":"4、字段解释","titles":["扩展插件","开发插件"]},"41":{"title":"插件详解","titles":["扩展插件"]},"42":{"title":"打包","titles":["扩展插件"]},"43":{"title":"安装插件","titles":["扩展插件"]},"44":{"title":"实现原理","titles":["扩展插件"]},"45":{"title":"数据初始化","titles":[]},"46":{"title":"快速开始","titles":[]},"47":{"title":"环境准备","titles":["快速开始"]},"48":{"title":"运行系统","titles":["快速开始"]},"49":{"title":"1、拉取源码","titles":["快速开始","运行系统"]},"50":{"title":"2、配置数据库","titles":["快速开始","运行系统"]},"51":{"title":"3、启动后端服务","titles":["快速开始","运行系统"]},"52":{"title":"4、启动前端服务","titles":["快速开始","运行系统"]},"53":{"title":"权限校验","titles":[]},"54":{"title":"配置","titles":["权限校验"]},"55":{"title":"原理","titles":["权限校验"]},"56":{"title":"当前用户","titles":["权限校验"]},"57":{"title":"服务","titles":[]},"58":{"title":"Crud","titles":["服务"]},"59":{"title":"修改前后","titles":["服务"]},"60":{"title":"swagger 文档","titles":[]},"61":{"title":"文件上传","titles":[]},"62":{"title":"使用","titles":[]},"63":{"title":"简介","titles":[]},"64":{"title":"技术选型","titles":["简介"]},"65":{"title":"一、环境要求","titles":["简介","技术选型"]},"66":{"title":"二、后端框架","titles":["简介","技术选型"]},"67":{"title":"三、前端框架","titles":["简介","技术选型"]},"68":{"title":"为什么选择 Cool Admin?","titles":["简介"]},"69":{"title":"内置功能","titles":["简介"]},"70":{"title":"演示","titles":[]},"71":{"title":"源码","titles":[]},"72":{"title":"后端(点个 Star)","titles":["源码"]},"73":{"title":"前端(点个 Star)","titles":["源码"]},"74":{"title":"常见问题","titles":[]},"75":{"title":"1、找不到类似xxxTableDef文件","titles":["常见问题"]},"76":{"title":"计划","titles":[]},"77":{"title":"完善插件","titles":["计划"]},"78":{"title":"更新","titles":[]},"79":{"title":"## v7.1.1(2024-07-15)","titles":["更新"]},"80":{"title":"v7.1.0(2024-06-27)","titles":["更新"]}},"dirtCount":0,"index":[["升级所有相关依赖到最新",{"2":{"80":1}}],["升级到",{"2":{"80":1}}],["简单功能零代码实现",{"2":{"79":1}}],["简介",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["支付",{"2":{"79":1}}],["支付插件",{"2":{"77":1}}],["支持动态安装",{"2":{"69":1}}],["支持回滚操作",{"2":{"69":1}}],["支持静态资源文件上传云端进行云管理",{"2":{"69":1}}],["支持很多数据库",{"2":{"21":1}}],["支持的数据库类型",{"2":{"21":1}}],["支持数据库",{"0":{"21":1}}],["支持多主键",{"2":{"20":1}}],["支持关联查询",{"2":{"19":1}}],["短信等功能可以通过安装插件的方式添加",{"2":{"79":1}}],["短信插件",{"2":{"77":1}}],["短信这类功能的插件可以通过后台动态安装卸载",{"2":{"68":1}}],["完善插件",{"0":{"77":1}}],["计划",{"0":{"76":1},"1":{"77":1}}],["找不到类似xxxtabledef文件",{"0":{"75":1}}],["常见问题",{"0":{"74":1},"1":{"75":1}}],["常用的技术进行选择",{"2":{"64":1}}],["点个",{"0":{"72":1,"73":1}}],["点击+按钮",{"2":{"33":1}}],["点击左侧菜单扩展管理",{"2":{"33":1}}],["点击前往插件市场",{"2":{"31":1}}],["源码",{"0":{"71":1},"1":{"72":1,"73":1}}],["源码仓库",{"2":{"49":1}}],["演示",{"0":{"70":1}}],["卸载插件",{"2":{"69":1}}],["卸载和替换",{"2":{"44":2}}],["前后端插件",{"2":{"69":1}}],["前端",{"0":{"73":1}}],["前端框架",{"0":{"67":1}}],["前端会根据后端返回的上传模式进行本地上传或者云存储签名直传",{"2":{"61":1}}],["前端接口",{"2":{"16":1}}],["天的保留",{"2":{"69":1}}],["任务调度包含执行结果日志",{"2":{"69":1}}],["添加",{"2":{"69":1}}],["定时任务",{"2":{"69":1}}],["定时任务模块",{"2":{"27":1}}],["便于问题排查",{"2":{"69":1}}],["设置角色按机构进行数据范围权限划分",{"2":{"69":1}}],["呈现公司组织部门树形结构",{"2":{"69":1}}],["内置功能",{"0":{"69":1}}],["代码简洁",{"2":{"68":1}}],["灵活又不臃肿",{"2":{"68":1}}],["灵活性",{"2":{"44":1}}],["灵活性高",{"2":{"44":1}}],["专门为",{"2":{"68":1}}],["部分功能实现零代码",{"2":{"68":1}}],["从页面到后端代码",{"2":{"68":1}}],["特别是最近",{"2":{"68":1}}],["特别是跟",{"2":{"4":1}}],["三",{"0":{"67":1}}],["二",{"0":{"66":1}}],["环境要求",{"0":{"65":1}}],["环境准备",{"0":{"47":1}}],["减少技术栈的复杂度",{"2":{"64":1}}],["技术选型",{"0":{"64":1},"1":{"65":1,"66":1,"67":1}}],["技术分享",{"2":{"4":1,"6":1}}],["方便一张图片使用在多种场景",{"2":{"62":1}}],["方法去调用主应用的一些对象方法",{"2":{"34":1}}],["方法第一个参数如果为",{"2":{"29":1}}],["方法",{"2":{"18":1,"34":5}}],["水印等处理",{"2":{"62":1}}],["裁剪",{"2":{"62":1}}],["还可以对图片进行各种如压缩",{"2":{"62":1}}],["还可以了解到一些前沿的技术",{"2":{"4":1}}],["条件允许的话尽量选择云存储上传",{"2":{"62":1}}],["防止上传恶意文件等",{"2":{"62":1}}],["动静分离有许多好处",{"2":{"62":1}}],["动态加载使得应用程序能够在不停机的情况下进行热更新",{"2":{"44":1}}],["动态加载允许应用程序在运行时根据需求加载",{"2":{"44":1}}],["动态加载",{"2":{"44":2}}],["动态",{"2":{"20":1}}],["动态表名",{"2":{"20":1}}],["线上环境请用nginx等静态服务器代理",{"2":{"62":1}}],["$",{"2":{"62":1}}],["七牛云等",{"2":{"61":1}}],["腾讯云",{"2":{"61":1}}],["云存储上传服务端值提供签名供前端直传到对应的云存储",{"2":{"61":1}}],["云存储",{"2":{"61":1}}],["本地上传配置",{"2":{"62":1}}],["本地上传",{"2":{"61":1}}],["本身",{"2":{"19":1}}],["直接上传到对应的云存储",{"2":{"61":1}}],["操作日志",{"2":{"69":1}}],["操作权限标识等",{"2":{"69":1}}],["操作",{"2":{"58":1}}],["处理业务逻辑的代码应该被封装在服务中",{"2":{"57":1}}],["处理逻辑在以下方法",{"2":{"45":1}}],["服务",{"0":{"57":1},"1":{"58":1,"59":1}}],["服务启动成功",{"2":{"51":1}}],["类型",{"2":{"56":1}}],["类必须继承",{"2":{"34":1,"41":2}}],["类必须要有",{"2":{"34":1,"41":2}}],["当前用户",{"0":{"56":1}}],["允许网页iframe",{"2":{"55":1}}],["忽略权限控制的地址",{"2":{"55":1}}],["鉴权拦截配置",{"2":{"55":1}}],["监控用户行为",{"2":{"55":1}}],["监听",{"2":{"20":1}}],["权限管理拦截器",{"2":{"55":1}}],["权限校验",{"0":{"53":1},"1":{"54":1,"55":1,"56":1}}],["每次调用接口的时候spring",{"2":{"55":1}}],["每个对象中的",{"2":{"45":1}}],["每个插件的配置各不相同",{"2":{"40":1}}],["每个模块都有其特有的功能",{"2":{"26":1}}],["则返回给decide方法",{"2":{"55":1}}],["判定用户请求的url是否在权限表中",{"2":{"55":1}}],["判断",{"2":{"29":1}}],["刷新token过期时间",{"2":{"54":1}}],["半小时",{"2":{"54":1}}],["半自动",{"0":{"25":1}}],["秒",{"2":{"54":2}}],["单位",{"2":{"54":2}}],["单主键配置",{"2":{"20":1}}],["过期时间",{"2":{"54":1}}],["作为文档",{"2":{"60":1}}],["作为myaccessdecisionmanager类的decide的第三个参数",{"2":{"55":1}}],["作为框架安全与权限校验",{"2":{"53":1}}],["作者",{"2":{"39":1,"40":1}}],["采用",{"2":{"53":1}}],["密码版本号",{"2":{"56":1}}],["密码",{"2":{"52":1,"70":1}}],["账户",{"2":{"52":1,"70":1}}],["账户密码不正确",{"2":{"29":1}}],["默认集成springdoc",{"2":{"60":1}}],["默认账户密码",{"2":{"52":1}}],["默认实现了通用的六个接口方法",{"2":{"14":1}}],["默认实现了两种缓存",{"2":{"8":1}}],["执行",{"2":{"75":1}}],["执行命令",{"2":{"52":1}}],["执行的过程中",{"2":{"19":1}}],["同级",{"2":{"52":1}}],["同样也可以对",{"2":{"14":1}}],["跟进nodejs",{"2":{"80":1}}],["跟",{"2":{"52":1}}],["跟分页查询一样",{"2":{"12":1}}],["访问http",{"2":{"52":1}}],["访问",{"2":{"51":1}}],["端口",{"2":{"51":1}}],["构建eps信息",{"2":{"51":1}}],["没有可初始化的插件",{"2":{"51":1}}],["没有任何的",{"2":{"19":1}}],["没有任何",{"2":{"19":1}}],["控制台打印出下面信息",{"2":{"51":1}}],["控制器",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1}}],["启动",{"2":{"52":1}}],["启动前端服务",{"0":{"52":1}}],["启动文件",{"2":{"51":1}}],["启动后端服务",{"0":{"51":1}}],["驱动已经内置",{"2":{"50":1}}],["首次启动会自动初始化并导入数据",{"2":{"50":1}}],["首先下载插件包",{"2":{"33":1}}],["建议",{"2":{"50":1}}],["建议尺寸",{"2":{"40":1}}],["yamlcool",{"2":{"54":1,"62":1}}],["yaml",{"2":{"50":1}}],["yamlspring",{"2":{"8":1}}],["yml",{"2":{"50":1,"62":1}}],["拉取源码",{"0":{"49":1}}],["9000",{"2":{"52":1}}],["941+08",{"2":{"51":1}}],["9",{"2":{"47":1}}],["推荐",{"2":{"47":2,"75":1}}],["推荐两种快速开发方式",{"2":{"23":1}}],["7天",{"2":{"54":1}}],["7版本",{"2":{"50":1}}],["7",{"2":{"47":1,"65":1}}],["选择",{"2":{"47":1,"65":1}}],["选择插件包进行安装",{"2":{"33":1}}],["开启",{"2":{"75":1}}],["开始使用",{"2":{"46":1}}],["开发几乎不用写代码",{"2":{"68":1}}],["开发设计的",{"2":{"68":1}}],["开发过程",{"0":{"39":1}}],["开发过程只需点一点",{"2":{"24":1}}],["开发插件",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1}}],["开发的时候无法调试",{"2":{"34":1}}],["开发的时候只是模拟",{"2":{"34":1}}],["开发的一个",{"2":{"8":1}}],["开发",{"2":{"30":1}}],["开发方式",{"0":{"23":1},"1":{"24":1,"25":1}}],["开发者可以从中方便的获取各种参数",{"2":{"13":1}}],["快速开始",{"0":{"46":1},"1":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["加载权限表中所有操作请求权限",{"2":{"55":1}}],["加载成功后文件名称将被当作唯一键标识",{"2":{"45":1}}],["加上",{"2":{"38":1}}],["要新增一个",{"2":{"45":1}}],["初始化eps完成",{"2":{"51":1}}],["初始化菜单数据",{"2":{"45":1}}],["初始化自定义的数据",{"2":{"45":1}}],["初始化数据json文件",{"2":{"27":1}}],["创建",{"2":{"45":1}}],["创建实体类生成表",{"2":{"25":1}}],["富文本参数",{"2":{"45":1}}],["规范",{"2":{"45":1}}],["规则为",{"2":{"16":1}}],["数组里可以包含多个对象",{"2":{"45":1}}],["数据有",{"2":{"69":1}}],["数据回收站",{"2":{"69":1}}],["数据回收站模块",{"2":{"27":1}}],["数据初始化完成",{"2":{"45":1}}],["数据初始化",{"0":{"45":1}}],["数据脱敏",{"2":{"20":1}}],["数据脱敏等等",{"2":{"19":1}}],["数据填充",{"2":{"19":1,"20":1}}],["数据库初始数据初始化",{"2":{"45":1}}],["数据库",{"0":{"19":1},"1":{"20":1,"21":1,"22":1},"2":{"21":32}}],["里面是个数组",{"2":{"45":1}}],["里指定",{"2":{"42":1}}],["格式如下",{"2":{"45":1}}],["扩展性",{"2":{"44":1}}],["扩展插件",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1},"2":{"68":1}}],["大大提高了系统的可用性和稳定性",{"2":{"44":1}}],["热更新",{"2":{"44":1}}],["优化若干问题",{"2":{"80":1}}],["优势",{"2":{"44":1}}],["优炫数据库",{"2":{"21":1}}],["远程服务器和",{"2":{"44":1}}],["它可以加载指定的",{"2":{"44":1}}],["标准库中提供的一个类加载器",{"2":{"44":1}}],["最终打出的包为",{"2":{"42":1}}],["就是我们的插件包",{"2":{"42":1}}],["就可以在代码中调用插件的方法了",{"2":{"34":1}}],["后端",{"0":{"72":1}}],["后端框架",{"0":{"66":1}}],["后端修改数据库配置",{"2":{"50":1}}],["后端接口",{"2":{"16":1}}],["后缀的文件",{"2":{"42":1}}],["目录创建",{"2":{"45":1}}],["目录下创建",{"2":{"45":1}}],["目录下",{"2":{"42":1}}],["目录结构",{"0":{"26":1,"38":1},"1":{"27":1}}],["打包结果",{"2":{"42":1}}],["打包命令",{"2":{"42":1}}],["打包",{"0":{"42":1}}],["打包时可以排除",{"2":{"41":1}}],["打开后台管理系统",{"2":{"33":1}}],["避免打包结果过大",{"2":{"41":1}}],["避免插件过大不会在打入jar包中",{"2":{"41":1}}],["主应用以有这些依赖",{"2":{"41":1}}],["主应用项目已经有的依赖给排除掉",{"2":{"41":1}}],["主应用没有这些依赖",{"2":{"41":1}}],["主要特点",{"2":{"19":1,"68":1}}],["主要是做一些技术教程",{"2":{"4":1}}],["以下是我们的一些计划",{"2":{"76":1}}],["以下包会打入jar",{"2":{"41":1}}],["以往的框架已经越来越不能满足现代化的开发需求",{"2":{"68":1}}],["以",{"2":{"50":1}}],["以上包在主应用已经引入",{"2":{"41":1}}],["以上内容来自第三方相关产品的官方文档或第三方平台",{"2":{"20":1}}],["中实现动态加载",{"2":{"44":1}}],["中的",{"2":{"42":1}}],["中排除掉不打入jar",{"2":{"41":2}}],["中重写方法",{"2":{"14":1}}],["引入依赖",{"2":{"41":1}}],["可商用",{"2":{"71":1}}],["可插拔",{"2":{"68":1}}],["可选",{"2":{"62":1}}],["可维护性",{"2":{"44":1}}],["可控性强",{"2":{"44":1}}],["可在",{"2":{"42":1}}],["可使用",{"2":{"41":1}}],["可以重写modifybefore和modifyafter方法",{"2":{"59":1}}],["可以参考baseservice的实现",{"2":{"58":1}}],["可以轻松地添加新的功能模块或服务",{"2":{"44":1}}],["可以将应用程序的核心逻辑和配置分离",{"2":{"44":1}}],["可以通过代码控制加载",{"2":{"44":1}}],["可以通过插件的方式来扩展系统功能",{"2":{"31":1}}],["可以动态指定",{"2":{"44":1}}],["可以快速开发我们的插件",{"2":{"37":1}}],["可以大大节省开发时间",{"2":{"23":1}}],["可以大大简化代码",{"2":{"10":1}}],["可以自动创建表",{"2":{"22":1}}],["可以在",{"2":{"45":1}}],["可以在打包日志中查看我们排除和引入了哪些包",{"2":{"41":1}}],["可以在对应的",{"2":{"14":1}}],["可以在这边实现一下列表数据排序规则",{"2":{"11":1,"13":1,"14":1,"60":1}}],["可以选择你想使用的缓存",{"2":{"8":1}}],["满足以上条件",{"2":{"41":1}}],["拼音",{"2":{"41":1}}],["汉字",{"2":{"41":1}}],["汉字字符",{"2":{"41":1}}],["会持续不断地更新",{"2":{"78":1}}],["会展示在插件的详情中",{"2":{"40":1}}],["会更加简洁",{"2":{"29":1}}],["说明后端服务启动成功",{"2":{"51":1}}],["说明",{"2":{"40":1,"56":1}}],["403",{"2":{"55":1}}],["401",{"2":{"55":1}}],["46",{"2":{"51":1}}],["45",{"2":{"51":3}}],["4b57",{"2":{"41":1}}],["47ac",{"2":{"41":1}}],["4fd03504",{"2":{"41":1}}],["4",{"0":{"40":1,"52":1},"2":{"41":2,"44":1,"55":1}}],["上传模式",{"2":{"62":1}}],["上面只是个例子",{"2":{"39":1}}],["上加了这个注解后",{"2":{"18":1}}],["测试",{"2":{"39":1}}],["测试curd",{"2":{"11":2,"12":2,"13":2,"14":2,"25":1,"60":2}}],["或",{"2":{"37":1,"72":1,"73":1}}],["脚手架源码仓库",{"2":{"37":1}}],["脚手架",{"0":{"37":1}}],["下的",{"2":{"45":1}}],["下",{"2":{"35":1}}],["范围在",{"2":{"35":1}}],["路径可以自己指定",{"2":{"35":1}}],["例如原本的配置文件是这样的",{"2":{"35":1}}],["31908",{"2":{"51":4}}],["383+08",{"2":{"51":1}}],["382+08",{"2":{"51":1}}],["38",{"2":{"51":4}}],["3306",{"2":{"50":1}}],["32",{"2":{"41":1}}],["32615",{"2":{"34":8}}],["3c64059230d0",{"2":{"41":1}}],["3",{"0":{"35":1,"39":1,"51":1},"2":{"41":1,"44":1,"47":2,"51":1,"55":1,"65":1,"66":1}}],["其他数据库适配中",{"2":{"50":1}}],["其他查询方式",{"2":{"12":1}}],["其中对应的包名称",{"2":{"42":1}}],["其中",{"2":{"35":1}}],["其中我们可以在插件包里通过",{"2":{"34":1}}],["获得用户名",{"2":{"56":1}}],["获得用户信息",{"2":{"55":1,"56":1}}],["获得其他插件",{"2":{"34":1}}],["获取启用的权限操作请求",{"2":{"55":1}}],["获取主应用resources下的",{"2":{"34":1}}],["获取主应用resources目录下的资源文件",{"2":{"34":1}}],["只需极少编码即可实现大部分需求",{"2":{"68":1}}],["只需拖一拖即可",{"2":{"68":1}}],["只需三步",{"2":{"25":1}}],["只有安装到cool",{"2":{"34":1}}],["注解",{"2":{"34":2,"41":4}}],["注意",{"2":{"20":1,"21":1,"22":1,"30":1,"45":1,"47":1}}],["||",{"2":{"34":7}}],["|",{"2":{"34":67}}],["一",{"0":{"65":1}}],["一个插件",{"2":{"41":1}}],["一个插件jar有且只能有一个类被",{"2":{"34":1,"41":1}}],["一个项目用cool就够了",{"2":{"34":2}}],["一般抛异常写法",{"2":{"29":1}}],["`",{"2":{"34":10}}],["`update",{"2":{"34":1}}],["`create",{"2":{"34":1}}],["`params`",{"2":{"34":1}}],["`ip`",{"2":{"34":1}}],["`action`",{"2":{"34":1}}],["`base",{"2":{"34":1}}],["参数管理",{"2":{"69":1}}],["参数",{"2":{"34":1}}],["564+08",{"2":{"34":1}}],["556",{"2":{"51":1}}],["559+08",{"2":{"34":1}}],["558+08",{"2":{"34":1}}],["557+08",{"2":{"34":1}}],["554+08",{"2":{"34":1}}],["544+08",{"2":{"34":1}}],["543+08",{"2":{"34":2}}],["5",{"2":{"34":8,"41":6,"47":1,"65":1}}],["8",{"2":{"34":1,"41":3,"47":1,"50":2}}],["8001",{"2":{"34":5,"51":2,"60":1}}],["8s",{"2":{"21":2}}],["运行系统",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1}}],["运行结果",{"2":{"34":1}}],["运行代码生成器",{"2":{"25":1}}],["without",{"2":{"41":1}}],["web",{"2":{"34":4}}],["wrappers",{"2":{"29":2,"55":1}}],["调用其他插件",{"2":{"34":1}}],["调用其他插件aliyun",{"2":{"34":1}}],["调用主应用获取缓存",{"2":{"34":1}}],["调用主应用设置缓存",{"2":{"34":1}}],["调用主应用",{"2":{"34":3}}],["调用插件类",{"2":{"34":1}}],["调用",{"0":{"34":1}}],["调一调",{"2":{"24":1}}],["27",{"0":{"80":1}}],["2b8",{"2":{"50":1}}],["26",{"2":{"41":3}}],["256x256",{"2":{"40":1}}],["2024",{"0":{"79":1,"80":1},"2":{"34":8,"51":4}}],["2",{"0":{"34":1,"38":1,"50":1},"2":{"41":5,"44":2,"55":1}}],["然后在系统中安装插件包",{"2":{"33":1}}],["安装云存储插件",{"2":{"61":1}}],["安装依赖",{"2":{"52":1}}],["安装插件将打包好的",{"2":{"43":1}}],["安装插件",{"0":{"43":1}}],["安装插件之后",{"2":{"34":1}}],["安装",{"0":{"33":1}}],["也可以使用别人开发的插件",{"2":{"31":1}}],["也希望广大开发者粉丝帮助完善文档",{"2":{"0":1}}],["导致系统臃肿",{"2":{"31":1}}],["相关配置",{"2":{"54":1}}],["相关应用",{"2":{"30":1}}],["相关的技术发展",{"2":{"68":1}}],["相关的",{"2":{"4":1}}],["很容易就能完成一个",{"2":{"30":1}}],["很多应用希望接入",{"2":{"30":1}}],["结尾",{"2":{"45":1}}],["结合知识库",{"2":{"30":1}}],["结构",{"0":{"27":1}}],["做为后来者有后发优势",{"2":{"68":1}}],["做了一个",{"2":{"30":1}}],["做解析",{"2":{"18":1}}],["于是我们面向开发者和软件开发公司",{"2":{"30":1}}],["容易把我们累死",{"2":{"30":1}}],["随着技术不断地发展",{"2":{"68":1}}],["随着",{"2":{"30":1}}],["应用必备",{"2":{"30":1}}],["视频演示",{"2":{"30":1}}],["流程编排插件",{"2":{"77":1}}],["流程编排+知识库届时会上架到插件市场",{"2":{"30":1}}],["流程编排功能",{"2":{"30":1}}],["流程编排",{"0":{"30":1},"2":{"68":1}}],["异常信息为",{"2":{"29":1}}],["异常统一捕获",{"0":{"29":1}}],["即抛异常",{"2":{"29":1}}],["手动抛异常",{"2":{"29":1}}],["业务校验的工具",{"2":{"29":1}}],["业务代码放在这边",{"2":{"27":1}}],["系统异常信息日志记录和查询",{"2":{"69":1}}],["系统正常操作日志记录和查询",{"2":{"69":1}}],["系统通用",{"2":{"62":2}}],["系统的文件上传就会自动替换成云存储上传的方式",{"2":{"61":1}}],["系统启动完成访问",{"2":{"60":1}}],["系统启动的时候",{"2":{"55":1}}],["系统会查询并向spring",{"2":{"55":1}}],["系统提供了",{"2":{"29":1}}],["系统用户",{"2":{"27":1}}],["请求日志",{"2":{"69":1}}],["请求过程中会解析",{"2":{"56":1}}],["请求参数",{"0":{"13":1},"2":{"59":2}}],["请区分post",{"2":{"29":1}}],["不要吝啬你们免费的star哦",{"2":{"71":1}}],["不像一般代码生成器生成一堆冗余代码",{"2":{"68":1}}],["不经过服务器",{"2":{"61":1}}],["不会重复初始化",{"2":{"45":1}}],["不然调用时会报错",{"2":{"41":1}}],["不带声调",{"2":{"41":1}}],["不同的插件有不同的配置",{"2":{"39":1}}],["不支持该请求方式",{"2":{"29":1}}],["不用写一行代码",{"2":{"24":1}}],["已存在该记录",{"2":{"29":1}}],["统一异常处理",{"0":{"28":1},"1":{"29":1}}],["包或其内部的类和资源",{"2":{"44":1}}],["包或类",{"2":{"44":1}}],["包具有以下几个显著的优势",{"2":{"44":1}}],["包的位置和版本",{"2":{"44":1}}],["包括本地文件系统",{"2":{"44":1}}],["包括一些核心的组件工具",{"2":{"27":1}}],["包时会想该插件注入",{"2":{"34":1}}],["包下创建",{"2":{"27":1}}],["包",{"2":{"27":1,"44":3}}],["按照简单",{"2":{"64":1}}],["按上面的包结构新增即可",{"2":{"27":1}}],["按规则组装",{"2":{"18":1}}],["为什么选择",{"0":{"68":1}}],["为例",{"2":{"50":1}}],["为对应的值",{"2":{"45":1}}],["为表的字段",{"2":{"45":1}}],["为表的名称",{"2":{"45":1}}],["为排除引入",{"2":{"41":1}}],["为引入",{"2":{"41":1}}],["为主应用",{"2":{"35":1}}],["为插件key",{"2":{"34":1}}],["为业务模块",{"2":{"27":1}}],["为核心模块",{"2":{"27":1}}],["为了使项目能够持续",{"2":{"71":1}}],["为了开发插件如果引入了主应用已经有的maven依赖可以在下面的",{"2":{"41":2}}],["为了方便开发插件和统一插件开发规范",{"2":{"37":1}}],["为了方便获取参数",{"2":{"13":1}}],["为了丰富系统功能",{"2":{"31":1}}],["为了不过多依赖环境",{"2":{"8":1}}],["用来判定用户是否有此权限",{"2":{"55":1}}],["用configattribute的集合作为value",{"2":{"55":1}}],["用权限的path作为map的key",{"2":{"55":1}}],["用户是系统操作者",{"2":{"69":1}}],["用户管理",{"2":{"69":1}}],["用户管理模块",{"2":{"27":1}}],["用户",{"2":{"56":1}}],["用户详情",{"2":{"55":1}}],["用户名",{"2":{"56":1}}],["用户名不存在",{"2":{"55":1}}],["用户名已存在",{"2":{"28":1,"29":3}}],["用户登录",{"2":{"55":1}}],["用过",{"2":{"22":1}}],["插件可以在打包的时候将在我们",{"2":{"41":1}}],["插件详解",{"0":{"41":1}}],["插件配置",{"2":{"40":1}}],["插件介绍",{"2":{"40":1}}],["插件",{"2":{"40":1,"77":1}}],["插件钩子",{"2":{"40":1}}],["插件唯一标识",{"2":{"40":1}}],["插件描述",{"2":{"39":1,"40":1}}],["插件运行测试类",{"2":{"38":1}}],["插件信息配置文件",{"2":{"38":1}}],["插件类放在这个包下",{"2":{"38":1}}],["插件包",{"2":{"38":1}}],["插件包可以通过官网下载插件",{"2":{"33":1}}],["插件方法",{"2":{"34":1,"41":1}}],["插件管理",{"2":{"33":1}}],["插件模块",{"2":{"27":1}}],["插件分享等",{"2":{"6":1}}],["插件分享等内容",{"2":{"4":1}}],["角色菜单权限分配",{"2":{"69":1}}],["角色管理",{"2":{"69":1}}],["角色数组",{"2":{"40":1,"56":1}}],["角色",{"2":{"27":1}}],["资源目录下的文件",{"2":{"35":1}}],["资源文件",{"2":{"27":1}}],["资源",{"2":{"27":1,"44":1}}],["菜单管理",{"2":{"69":1}}],["菜单",{"2":{"27":1}}],["基础模块",{"2":{"27":1}}],["└─",{"2":{"27":8,"38":7}}],["└──",{"2":{"16":6}}],["核心包",{"2":{"27":1,"38":1}}],["├─core",{"2":{"38":1}}],["├─",{"2":{"27":15,"38":3}}],["├──",{"2":{"16":1}}],["清晰明了便于管理",{"2":{"26":1}}],["组件会根据字段智能选择",{"2":{"25":1}}],["n",{"2":{"69":1}}],["npm",{"2":{"52":2}}],["net",{"2":{"41":4}}],["new",{"2":{"25":2,"29":2,"41":2,"44":4,"55":12}}],["now",{"2":{"34":2}}],["nodejs",{"2":{"30":1}}],["nio",{"2":{"34":5}}],["null",{"2":{"28":1,"29":2,"34":1,"41":1,"45":2,"55":3}}],["name>",{"2":{"42":1}}],["name>my",{"2":{"42":1}}],["name",{"2":{"11":1,"12":3,"13":1,"14":1,"17":1,"39":1,"40":1,"45":2,"50":1,"60":1,"62":1}}],["文件管理",{"2":{"69":1}}],["文件管理模块",{"2":{"27":1}}],["文件存放路径",{"2":{"62":1}}],["文件根地址",{"2":{"62":1}}],["文件后",{"2":{"45":1}}],["文件等",{"2":{"44":1}}],["文件上传插件",{"2":{"77":1}}],["文件上传模式",{"2":{"62":1}}],["文件上传相关",{"2":{"62":1}}],["文件上传",{"0":{"61":1},"2":{"43":1,"62":1}}],["文件内容",{"2":{"34":1}}],["文件",{"2":{"25":1,"27":1,"45":2,"62":1}}],["文档",{"0":{"60":1},"2":{"1":1}}],["重启生成表",{"2":{"25":1}}],["重写",{"0":{"18":1}}],["重写逻辑",{"2":{"14":2}}],["重写实现",{"0":{"14":1}}],["编写实体类",{"2":{"25":1}}],["编码",{"0":{"7":1},"2":{"68":1}}],["零代码开发",{"2":{"24":1}}],["全自动",{"0":{"24":1}}],["提高了代码的可维护性",{"2":{"44":1}}],["提高开发效率",{"2":{"23":1}}],["提示",{"2":{"27":1}}],["提供了极大的灵活性",{"2":{"44":1}}],["提供了简化的业务异常抛出工具",{"2":{"28":1}}],["提供了非常灵活的",{"2":{"19":1}}],["提供了一种高效且可靠的解决方案",{"2":{"8":1}}],["降低开发成本",{"2":{"23":1}}],["因为有你们的支持",{"2":{"78":1}}],["因为这可能会造成数据丢失",{"2":{"22":1}}],["因此如果你需要开发",{"2":{"30":1}}],["因此会带来指数级的性能增长",{"2":{"19":1}}],["因此会带来更高的自主性",{"2":{"19":1}}],["切勿在生产环境开启自动建表功能",{"2":{"22":1}}],["并将用户信息存在整个请求过程中的",{"2":{"56":1}}],["并定义表数据",{"2":{"45":1}}],["并实现值的插入",{"2":{"45":1}}],["并实现",{"2":{"34":1,"41":1}}],["并且支持表字段的修改",{"2":{"22":1}}],["并重写了",{"2":{"18":1}}],["节省了大量手动工作",{"2":{"22":1}}],["尤其是开发过程中频繁的新增表及变更表结构",{"2":{"22":1}}],["列的配置",{"2":{"22":1}}],["列表查询",{"2":{"12":1}}],["而不用一味地堆功能",{"2":{"31":1}}],["而不需要关心数据库的表",{"2":{"22":1}}],["而是也非常不灵活",{"2":{"30":1}}],["而是对它做一层封装",{"2":{"18":1}}],["有些功能模块上线时",{"2":{"45":1}}],["有且只能有一个类被",{"2":{"41":1}}],["有时候开发时的配置和生产环境的配置是不一样的",{"2":{"35":1}}],["有一项重要的能力就是表结构自动维护",{"2":{"22":1}}],["有兴趣的可以关注我们",{"2":{"4":1}}],["实现功能可插拔",{"2":{"69":1}}],["实现应用程序的快速扩展和升级",{"2":{"44":1}}],["实现方法",{"2":{"44":1}}],["实现动态加载的技术方案",{"2":{"44":1}}],["实现原理",{"0":{"44":1}}],["实现简单功能从",{"2":{"7":1,"24":1}}],["实际开发中可以根据自己的需求来配置",{"2":{"39":1}}],["实体需以",{"2":{"45":1}}],["实体",{"2":{"22":1}}],["理论上你只需修改一些不兼容的代码就可以正常运行了",{"2":{"21":1}}],["那样工作量太大了",{"2":{"21":1}}],["是",{"2":{"44":1}}],["是插件的配置信息",{"2":{"39":1}}],["是具体的业务框架",{"2":{"21":1}}],["是否支持在微服务项目下进行",{"2":{"20":1}}],["但是每次都是用代码手搓",{"2":{"30":1}}],["但是它为我们提供了改造的可能",{"2":{"21":1}}],["但是",{"2":{"21":1}}],["虽然",{"2":{"21":1}}],["星瑞格数据库",{"2":{"21":1}}],["华为",{"2":{"21":1}}],["华库",{"2":{"21":1}}],["亚马逊",{"2":{"21":1}}],["行云数据库",{"2":{"21":1}}],["瀚高数据库",{"2":{"21":1}}],["神通数据库",{"2":{"21":1}}],["南大通用数据库",{"2":{"21":1}}],["南大通用",{"2":{"21":1}}],["gt",{"2":{"47":3,"50":1,"65":3,"75":3}}],["goal>",{"2":{"41":1}}],["goal>shade",{"2":{"41":1}}],["goals>",{"2":{"41":2}}],["goldilocks",{"2":{"21":2}}],["grantedauthority>",{"2":{"55":1}}],["graalvm",{"2":{"47":1,"65":1}}],["groupid>org",{"2":{"41":1}}],["groupid>com",{"2":{"41":1}}],["groupid>cn",{"2":{"41":1}}],["groupid>",{"2":{"41":3}}],["greenplum",{"2":{"21":2}}],["gitee",{"2":{"37":1,"72":1,"73":1}}],["github",{"2":{"37":1,"72":1,"73":1}}],["gbase",{"2":{"21":3}}],["gauss",{"2":{"21":2}}],["getbytes",{"2":{"55":2}}],["geturls",{"2":{"55":1}}],["getusername",{"2":{"29":4,"55":3}}],["getsecureobjectclass",{"2":{"55":1}}],["getstatus",{"2":{"55":2}}],["getstr",{"2":{"13":1}}],["getroles",{"2":{"55":1}}],["getresponse",{"2":{"55":1}}],["getresourceasstream",{"2":{"34":1}}],["getrequest",{"2":{"55":1}}],["getrequesturl",{"2":{"55":1}}],["getdepartmentidsbyroleids",{"2":{"55":1}}],["getperms",{"2":{"55":1}}],["getparent",{"2":{"34":1}}],["getparentresource",{"2":{"34":2}}],["getpasswordv",{"2":{"55":1}}],["getpassword",{"2":{"29":2,"55":1}}],["getauthenticationmanager",{"2":{"55":1}}],["getallconfigattributes",{"2":{"55":1}}],["getallperms",{"2":{"55":1}}],["getattributes",{"2":{"55":1}}],["getabsolutepath",{"2":{"44":1}}],["getannotationsbytype",{"2":{"18":1}}],["getchain",{"2":{"55":1}}],["getcontextclassloader",{"2":{"44":1}}],["getcode",{"2":{"29":1}}],["getclassloader",{"2":{"34":1}}],["getclass",{"2":{"34":1}}],["getinstance",{"2":{"34":1}}],["getid",{"2":{"29":2,"55":6}}],["getone",{"2":{"29":2,"55":1}}],["get等请求方式是否正确",{"2":{"29":1}}],["getmode",{"2":{"62":1}}],["getmapping",{"2":{"62":1}}],["getmappingformethod",{"0":{"18":1},"2":{"18":3}}],["getmessage",{"2":{"29":7}}],["get",{"2":{"9":1,"11":1,"34":2,"41":1,"55":1}}],["人大金仓数据库",{"2":{"21":1}}],["kyi=",{"2":{"34":1}}],["kingbasees",{"2":{"21":1}}],["keyname",{"2":{"45":2}}],["keyword",{"2":{"12":1}}],["keywordlikefields",{"2":{"12":1}}],["key",{"2":{"9":1,"34":4,"39":1,"40":1,"45":1}}],["虚谷数据库",{"2":{"21":1}}],["达梦数据库",{"2":{"21":1}}],["及以上数据库",{"2":{"21":1}}],["及以下数据库",{"2":{"21":1}}],["及更高性能",{"2":{"20":1}}],["描述",{"2":{"21":1}}],["持续添加更多的数据库支持",{"2":{"21":1}}],["如文件上传",{"2":{"79":1}}],["如支付",{"2":{"68":1}}],["如不占用主服务器带宽",{"2":{"62":1}}],["如",{"2":{"61":1,"62":1}}],["如阿里云",{"2":{"61":1}}],["如我们这边示例使用到了中文转拼音",{"2":{"41":1}}],["如下表格所示",{"2":{"21":1}}],["如果方便请点下",{"2":{"78":1}}],["如果你有更好的建议",{"2":{"76":1}}],["如果不在权限表中则放行",{"2":{"55":1}}],["如果不满足需求",{"2":{"14":1}}],["如果在权限表中",{"2":{"55":1}}],["如果在原文件直接修改将不生效",{"2":{"45":1}}],["如果同一张表历史已经有初始化过数据",{"2":{"45":1}}],["如果我们的项目对你有用",{"2":{"2":1}}],["欢迎联系我们",{"2":{"76":1}}],["欢迎纠正",{"2":{"20":1}}],["欢迎加入我们大家庭一起讨论",{"2":{"2":1}}],["若有错误",{"2":{"20":1}}],["项目中常见的问题",{"2":{"74":1}}],["项目是开源免费",{"2":{"71":1}}],["项目是前后端分离的",{"2":{"49":1}}],["项目按照模块化的方式组织",{"2":{"26":1}}],["项目",{"2":{"20":1}}],["非低代码",{"2":{"24":1}}],["非",{"2":{"20":1}}],["quot",{"2":{"20":2,"28":2,"29":2}}],["querywrapper",{"2":{"12":3,"14":3,"19":1,"20":1}}],["和",{"2":{"20":1}}],["和传统的",{"2":{"14":1}}],["比如替换系统的上传组件",{"2":{"40":1}}],["比如你有一个订单管理的模块",{"2":{"27":1}}],["比如",{"2":{"20":1,"34":1,"45":1}}],["借助其他框架或收费",{"2":{"20":1}}],["字典管理",{"2":{"69":1}}],["字典回写",{"2":{"20":1}}],["字段",{"2":{"40":1,"56":1}}],["字段解释",{"0":{"40":1}}],["字段模块",{"2":{"27":1}}],["字段加密",{"2":{"20":1}}],["字段权限",{"2":{"20":1}}],["字段的",{"2":{"20":1}}],["字段全匹配",{"2":{"12":1}}],["收费",{"2":{"20":4}}],["✔️",{"2":{"20":4}}],["审计",{"2":{"20":1}}],["乐观锁",{"2":{"20":1}}],["乐观锁更新",{"2":{"19":1}}],["未知",{"2":{"20":1}}],["传输",{"2":{"20":1}}],["无需授权的",{"2":{"71":1}}],["无需安装",{"2":{"50":1}}],["无需手动通过",{"2":{"29":1}}],["无需额外安装软件",{"2":{"8":1}}],["无法做到全部支持",{"2":{"21":1}}],["无其他第三方依赖",{"2":{"20":1}}],["配置完数据库直接启动",{"2":{"75":1}}],["配置系统菜单",{"2":{"69":1}}],["配置文件位于src",{"2":{"50":1}}],["配置数据库",{"0":{"50":1}}],["配置插件信息",{"2":{"39":1}}],["配置",{"0":{"35":1,"54":1},"2":{"20":1}}],["复合主键",{"2":{"20":1}}],["生成",{"2":{"25":1}}],["生成前端代码",{"2":{"25":1}}],["生成后端代码",{"2":{"25":1}}],["生成策略",{"2":{"20":1}}],["生成的路由前缀为",{"2":{"16":1}}],["loaduserbyusername",{"2":{"55":1}}],["loadresourcedefine",{"2":{"55":2}}],["local",{"2":{"50":1,"62":2}}],["lombok",{"2":{"34":2,"41":2}}],["long",{"2":{"29":2,"55":2,"56":2}}],["logo",{"2":{"39":2,"40":2}}],["log`",{"2":{"34":1}}],["log",{"2":{"29":5,"45":1}}],["lealone",{"2":{"21":2}}],["left",{"2":{"20":1}}],["list",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"55":1,"60":1}}],["解析设计",{"2":{"20":1}}],["❌",{"2":{"20":30}}],["✅",{"2":{"20":51}}],["element",{"2":{"67":1}}],["else",{"2":{"34":1}}],["encodedpassword",{"2":{"55":2}}],["encode",{"2":{"55":1}}],["entrypointunauthorizedhandler",{"2":{"55":3}}],["entity",{"2":{"20":2,"27":2,"29":12,"45":1}}],["enablewebsecurity",{"2":{"55":1}}],["epsevent",{"2":{"51":1}}],["eps",{"2":{"51":2}}],["equals",{"2":{"55":1}}],["eq",{"2":{"29":2,"55":2}}],["error",{"2":{"29":10}}],["e",{"2":{"29":19,"41":2}}],["expire",{"2":{"54":1}}],["expression",{"2":{"41":2}}],["extractedmenu",{"2":{"45":1}}],["extracteddb",{"2":{"45":1}}],["extern",{"2":{"34":1}}],["extends",{"2":{"11":1,"12":1,"13":1,"14":2,"18":1,"34":1,"41":1,"55":1,"60":1}}],["excluding",{"2":{"41":14}}],["exclude>cn",{"2":{"41":2}}],["exclude>jakarta",{"2":{"41":1}}],["exclude>io",{"2":{"41":4}}],["exclude>",{"2":{"41":16}}],["exclude>org",{"2":{"41":9}}],["excludes>",{"2":{"41":2}}],["exceptionhandling",{"2":{"55":1}}],["exceptionhandler",{"2":{"29":6}}],["exception",{"2":{"29":2,"41":1,"55":2}}],["execution",{"2":{"75":1}}],["execution>",{"2":{"41":2}}],["executions>",{"2":{"41":2}}],["exec",{"2":{"34":5}}],["功能",{"2":{"75":1}}],["功能几乎跟nodejs",{"2":{"70":1}}],["功能或特点",{"2":{"20":1}}],["功能对比",{"0":{"20":1}}],["在线",{"2":{"69":1}}],["在修改数据之前或之后做一些处理",{"2":{"59":1}}],["在项目编译的时候会自动生成这些文件",{"2":{"75":1}}],["在项目根目录下",{"2":{"52":1}}],["在项目启动的时候会去加载该文件",{"2":{"45":1}}],["在某个版本需要新增数据的话",{"2":{"45":1}}],["在后台插件管理页面",{"2":{"43":1}}],["在后台插件管理里可以动态修改",{"2":{"39":1}}],["在执行打包的过程",{"2":{"41":1}}],["在我们脚手架上你可以发现",{"2":{"41":1}}],["在开发过程中如果需要引入第三方类库",{"2":{"41":1}}],["在提供的插件脚手架中已经应用了常用的依赖如",{"2":{"41":1}}],["在插件导入时才能被识别到",{"2":{"41":1}}],["在打包的时候选择要打包的插件",{"2":{"38":1}}],["在加载",{"2":{"34":1}}],["在新增功能模块时",{"2":{"27":1}}],["在",{"2":{"19":1,"27":2,"29":1,"42":1,"44":1,"45":1}}],["在任何一个系统中",{"2":{"19":1}}],["拦截器",{"2":{"19":1}}],["通过动态加载",{"2":{"44":2}}],["通过反射实现",{"2":{"34":1}}],["通过拖动配置",{"2":{"30":1}}],["通过",{"2":{"29":1,"44":1}}],["通过管理后台菜单管理的快速创建即可生成",{"2":{"25":1}}],["通过独特的架构",{"2":{"19":1}}],["通过微调大模型学习框架特有写法",{"2":{"7":1,"24":1}}],["高性能",{"2":{"19":1}}],["高效的缓存解决方案",{"2":{"8":1}}],["逻辑删除",{"2":{"19":1,"20":1}}],["多租户",{"2":{"20":1}}],["多数据源是否支持",{"2":{"20":2}}],["多数据源支持",{"2":{"20":1}}],["多种",{"2":{"20":1}}],["多张表",{"2":{"20":1}}],["多主键",{"2":{"19":1}}],["多表查询",{"2":{"19":1,"20":3}}],["稳定性越差",{"2":{"19":1}}],["依赖越多",{"2":{"19":1}}],["把控性和稳定性",{"2":{"19":1}}],["再无任何第三方依赖",{"2":{"19":1}}],["除了",{"2":{"19":1,"20":1,"21":1}}],["更新",{"0":{"78":1},"1":{"79":1,"80":1}}],["更灵活",{"2":{"19":1}}],["更轻量",{"2":{"19":1,"20":2}}],["更加强大的",{"2":{"19":1}}],["更加简洁",{"2":{"10":1}}],["详细用法请查看",{"2":{"19":1}}],["集成了比",{"2":{"19":1}}],[">",{"2":{"18":1,"41":5,"55":10}}],["根据",{"2":{"22":1}}],["根据一定规则生成",{"2":{"18":1}}],["根据列表查询单个信息",{"2":{"11":1}}],["该功能主要完成系统用户配置",{"2":{"69":1}}],["该类继承了",{"2":{"18":1}}],["该父类已经实现了以下六个基础方法",{"2":{"10":1}}],["自动编码功能",{"2":{"79":1}}],["自动生成前端页面",{"2":{"25":1}}],["自动映射成数据库的表结构",{"2":{"22":1}}],["自动建表",{"0":{"22":1}}],["自带的注解",{"2":{"18":1}}],["自定义路由注解",{"0":{"17":1}}],["转成小写替换掉",{"2":{"16":1}}],["与前端紧密结合",{"2":{"61":1}}],["与",{"2":{"16":1,"53":1}}],["x26",{"2":{"50":2}}],["x",{"2":{"34":1,"66":1,"80":1}}],["xml",{"2":{"27":1,"41":2,"42":2}}],["xcloud",{"2":{"21":1}}],["xugu",{"2":{"21":1}}],["xxxxx",{"2":{"35":2}}],["xxx",{"2":{"16":2,"34":2,"39":2}}],["x3c",{"2":{"11":1,"12":1,"13":1,"14":5,"18":1,"29":2,"34":1,"41":81,"42":4,"55":13,"60":1}}],["模块化",{"2":{"44":1}}],["模块包",{"2":{"27":1}}],["模块名和",{"2":{"16":1}}],["模块名",{"2":{"16":2}}],["模块目录",{"2":{"16":1}}],["│─",{"2":{"38":1}}],["│",{"2":{"16":17,"27":36,"38":12}}],["原理",{"0":{"15":1,"55":1},"1":{"16":1,"17":1,"18":1}}],["原生",{"2":{"9":1}}],["接口的请求入参日志",{"2":{"69":1}}],["接口",{"2":{"16":1}}],["接口路由规则",{"0":{"16":1}}],["接口到前端页面的一键生成",{"2":{"7":1,"24":1}}],["接下来我们看看实现的原理",{"2":{"14":1}}],["对系统中经常使用的一些较为固定的数据进行维护",{"2":{"69":1}}],["对系统动态配置常用参数",{"2":{"69":1}}],["对应实体",{"2":{"59":2}}],["对应插件内的方法",{"2":{"34":1}}],["对应请求参数中的",{"2":{"12":1}}],["对应请求参数中同名参数",{"2":{"12":1}}],["对",{"2":{"20":1}}],["对比一下是简化了不少",{"2":{"14":1}}],["进行重写",{"2":{"14":1}}],["rawpassword",{"2":{"55":4}}],["roleids",{"2":{"55":3,"56":1}}],["root",{"2":{"50":1}}],["row",{"2":{"20":1}}],["run",{"2":{"45":1,"52":1}}],["runtimeexception",{"2":{"41":1}}],["rich",{"2":{"45":1}}],["rpc",{"2":{"20":1}}],["r",{"2":{"13":2,"14":1,"29":17,"62":4}}],["replace",{"2":{"55":1}}],["replaceall",{"2":{"55":1}}],["refreshexpire",{"2":{"54":1}}],["remark",{"2":{"45":2}}],["readme",{"2":{"39":2,"40":1}}],["readbytes",{"2":{"34":1}}],["required",{"2":{"62":1}}],["requiredargsconstructor",{"2":{"34":2,"45":1,"62":1}}],["requestpart",{"2":{"62":1}}],["requestparam",{"2":{"34":3}}],["requestparams",{"2":{"11":1,"12":1,"13":4,"14":5,"29":4,"56":2,"59":4,"60":1}}],["requestmatchers",{"2":{"55":1}}],["requestmappinginfo",{"2":{"18":2}}],["requestmappinghandlermapping",{"2":{"18":2}}],["requestmapping",{"2":{"17":2,"34":1}}],["requestattribute",{"2":{"13":1}}],["request",{"2":{"11":1,"12":1,"13":1,"14":1,"55":2,"60":1,"62":2}}],["requests",{"2":{"0":1}}],["restaccessdeniedhandler",{"2":{"55":3}}],["restcontrolleradvice",{"2":{"29":1}}],["response",{"2":{"55":2}}],["responsebody",{"2":{"34":2}}],["result",{"2":{"34":8}}],["resources",{"2":{"27":1,"35":2,"38":1,"45":1,"50":1}}],["resource",{"2":{"9":1,"55":10,"56":2}}],["recycle",{"2":{"27":1}}],["redshift",{"2":{"21":2}}],["redis",{"2":{"8":6}}],["return",{"2":{"9":2,"13":1,"14":2,"18":1,"29":8,"34":2,"41":1,"55":13,"62":2}}],["表单",{"2":{"13":1}}],["uploadmode",{"2":{"62":2}}],["upload",{"2":{"40":1,"62":3}}],["updates",{"2":{"34":1}}],["update",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"60":1}}],["utf",{"2":{"34":1}}],["util",{"2":{"34":4}}],["useunicode=true",{"2":{"50":1}}],["useplugin",{"2":{"34":2}}],["usecache",{"2":{"34":2}}],["userid",{"2":{"56":1}}],["userinfo",{"2":{"55":1,"56":3}}],["userdetails",{"2":{"55":2}}],["userdetailsservice",{"2":{"55":4}}],["usernamepasswordauthenticationfilter",{"2":{"55":1}}],["usernamenotfoundexception",{"2":{"55":2}}],["username",{"2":{"50":1,"55":2,"56":3}}],["user",{"2":{"13":2,"27":1}}],["ui",{"2":{"25":1,"60":1,"67":1}}],["uxdb",{"2":{"21":1}}],["union",{"2":{"20":2}}],["urlclassloader",{"2":{"44":2}}],["url",{"2":{"13":1,"44":3,"50":1,"55":2,"62":1}}],["将由以下这个类实现自动配置模块路由",{"2":{"18":1}}],["将",{"2":{"13":1}}],["zh",{"2":{"12":1}}],["false",{"2":{"62":1}}],["frameoptionsconfig",{"2":{"55":1}}],["frameoptions",{"2":{"55":1}}],["from",{"2":{"20":1,"41":13}}],["form",{"2":{"62":1}}],["format",{"2":{"41":7}}],["for",{"2":{"51":1,"55":2}}],["fluent",{"2":{"20":1}}],["flex",{"2":{"12":1,"19":2,"20":1,"21":2,"66":1,"75":1}}],["final",{"2":{"62":1}}],["finally",{"2":{"55":1}}],["fi",{"2":{"55":7}}],["filterchain",{"2":{"55":1}}],["filterconfig",{"2":{"55":2}}],["filter",{"2":{"55":1}}],["filterinvocation",{"2":{"55":5}}],["filterinvocationsecuritymetadatasource",{"2":{"55":2}}],["files",{"2":{"62":2}}],["fileuploadstrategyfactory",{"2":{"62":4}}],["filepath",{"2":{"35":1,"62":1}}],["file",{"2":{"8":1,"44":2,"62":2}}],["firebird",{"2":{"21":2}}],["fieldeq",{"2":{"12":1}}],["具体看",{"2":{"12":1}}],["返回给",{"2":{"18":1}}],["返回字段",{"2":{"12":1}}],["返回哪些字段等",{"2":{"11":1,"13":1,"14":1,"60":1}}],["需要分别拉取前后端代码到本地",{"2":{"49":1}}],["需要初始化一些数据",{"2":{"45":1}}],["需要模糊查询的字段",{"2":{"12":1}}],["需安装",{"2":{"8":1}}],["个接口",{"2":{"11":1}}],["604800",{"2":{"54":1}}],["6",{"2":{"11":1,"41":12,"47":1,"65":1}}],["6379",{"2":{"8":1}}],["等包",{"2":{"27":1}}],["等等",{"2":{"20":1}}],["等参数封装在了一个",{"2":{"13":1}}],["等",{"2":{"11":1,"20":1,"25":1,"41":2}}],["查询该用户所具有的权限并缓存",{"2":{"55":1}}],["查询配置",{"0":{"12":1}}],["查询列表",{"2":{"11":1}}],["查询条件过滤",{"2":{"11":1,"13":1,"14":1,"60":1}}],["分页查询无",{"2":{"20":1}}],["分页查询之总量缓存",{"2":{"20":1}}],["分页查询配置",{"2":{"12":1}}],["分页查询",{"2":{"11":1,"20":1}}],["修改之后",{"2":{"59":2}}],["修改之前",{"2":{"59":2}}],["修改类型",{"2":{"59":2}}],["修改前后",{"0":{"59":1}}],["修改",{"2":{"11":1,"69":1}}],["删除",{"2":{"11":1,"69":1}}],["新增后台扩展插件",{"2":{"79":1}}],["新增一个",{"2":{"27":1}}],["新增",{"2":{"11":1,"79":1}}],["这将会给我们带来更多的动力",{"2":{"78":1}}],["这些方式都可以解决这个问题",{"2":{"75":1}}],["这边使用到了",{"2":{"41":1}}],["这会使得打包结果很臃肿",{"2":{"41":1}}],["这个可能会给你带来巨大的帮助",{"2":{"30":1}}],["这让我们可以可以专注于业务逻辑和实体",{"2":{"22":1}}],["这样就默认实现了以下六个接口",{"2":{"11":1}}],["这是",{"2":{"0":1}}],["jtw",{"2":{"55":1}}],["jwtauthenticationtokenfilter",{"2":{"55":3}}],["jwtsecurityconfig",{"2":{"55":1}}],["jwtuser",{"2":{"55":6}}],["jwtuserdetailsserviceimpl",{"2":{"55":1}}],["jwt",{"2":{"53":1}}],["jdbc",{"2":{"50":2}}],["jdk",{"2":{"47":1,"65":1}}],["jcl",{"2":{"41":2}}],["json文件",{"2":{"45":1}}],["json参数",{"2":{"45":1}}],["json",{"2":{"35":1,"38":1,"39":2,"41":2,"45":7,"52":1}}],["jsonobject",{"2":{"11":1,"12":1,"13":3,"14":3,"29":2,"56":1,"59":2,"60":1}}],["jakarta",{"2":{"41":3}}],["jarfilepath",{"2":{"44":1}}],["jarurl",{"2":{"44":2}}],["jar",{"2":{"34":1,"41":31,"44":9}}],["javaurl",{"2":{"44":1}}],["javapackage",{"2":{"34":2,"41":1,"45":1}}],["javapublic",{"2":{"17":1,"18":1,"25":1,"29":2}}],["java",{"2":{"0":1,"1":1,"8":1,"9":2,"11":1,"12":1,"13":1,"14":2,"16":2,"22":1,"25":2,"27":1,"29":1,"34":10,"37":2,"38":2,"41":2,"42":1,"44":1,"47":1,"51":6,"55":4,"56":2,"59":2,"60":1,"62":1,"65":1,"72":2}}],["jpa",{"2":{"22":2}}],["join",{"2":{"20":2}}],["vue",{"2":{"73":2}}],["vue3",{"2":{"67":1}}],["verify",{"2":{"41":1}}],["version>3",{"2":{"41":1}}],["version>2",{"2":{"41":1}}],["version>",{"2":{"41":3}}],["version>5",{"2":{"41":1}}],["version",{"2":{"39":1,"40":1}}],["vertica",{"2":{"21":2}}],["v7",{"0":{"79":1,"80":1},"2":{"34":1}}],["void",{"2":{"11":1,"12":1,"13":1,"14":1,"25":1,"34":3,"45":1,"55":6,"59":2,"60":1}}],["values",{"2":{"34":1}}],["value",{"2":{"11":1,"12":1,"13":1,"14":1,"17":1,"45":1,"60":1,"62":4}}],["示例",{"0":{"11":1}}],["使得代码更加清晰",{"2":{"44":1}}],["使得可以在插件中获取主应用中的",{"2":{"34":1}}],["使得",{"2":{"10":1}}],["使用cool",{"2":{"34":1}}],["使用缓存",{"2":{"34":1}}],["使用插件",{"0":{"32":1},"1":{"33":1,"34":1,"35":1}}],["使用",{"0":{"9":1,"62":1}}],["都继承自",{"2":{"10":1}}],["所有的",{"2":{"10":1}}],["我是插件",{"2":{"41":1}}],["我们可以在运行时动态地加载外部的",{"2":{"44":1}}],["我们可以通过配置文件来实现",{"2":{"35":1}}],["我们还引入了其他包",{"2":{"41":1}}],["我们还可以通过自定义方言的方式",{"2":{"21":1}}],["我们提供了插件脚手架",{"2":{"37":1}}],["我们提供了插件系统",{"2":{"31":1}}],["我们正在适配",{"2":{"21":1}}],["我们不直接使用",{"2":{"18":1}}],["我们会尽力完善文档",{"2":{"0":1}}],["我被缓存了",{"2":{"9":1}}],["我被调用了",{"2":{"9":1}}],["ignoredurlsproperties",{"2":{"55":3}}],["is",{"2":{"51":1}}],["isempty",{"2":{"34":1,"55":1}}],["img",{"2":{"41":1}}],["import",{"2":{"34":14,"41":6}}],["impala",{"2":{"21":2}}],["implements",{"2":{"9":2,"14":1,"45":1,"55":3}}],["ioexception",{"2":{"55":2}}],["ioutil",{"2":{"34":2}}],["io",{"2":{"34":2,"41":2}}],["if",{"2":{"29":2,"34":1,"55":2}}],["illegalargumentexception",{"2":{"29":2,"55":2}}],["index",{"2":{"60":1}}],["install",{"2":{"52":1}}],["insert",{"2":{"34":4}}],["in",{"2":{"41":1}}],["including",{"2":{"41":2}}],["inputstream",{"2":{"34":4}}],["into",{"2":{"34":1}}],["interceptorstatustoken",{"2":{"55":1}}],["interface",{"2":{"17":1}}],["integer",{"2":{"9":1,"56":1}}],["invoke",{"2":{"55":2}}],["invokeotherplugin",{"2":{"34":1}}],["invokemain",{"2":{"34":3,"41":1}}],["invokemethod",{"2":{"34":4}}],["invokeplugin",{"2":{"34":11,"41":2}}],["inner",{"2":{"20":1}}],["init",{"2":{"11":1,"12":1,"13":1,"14":1,"25":1,"51":1,"55":1,"60":1}}],["informix",{"2":{"21":2}}],["info",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"16":2,"18":5,"34":5,"41":15,"45":1,"51":4,"60":1}}],["idea",{"2":{"75":1}}],["id",{"2":{"9":2,"20":1,"56":1}}],["o",{"2":{"51":1,"55":3}}],["obtainsecuritymetadatasource",{"2":{"55":1}}],["observation",{"2":{"41":3}}],["objutil",{"2":{"34":2}}],["objectutil",{"2":{"55":1}}],["object中包含用户请求request",{"2":{"55":1}}],["object",{"2":{"9":2,"14":1,"34":4,"41":2,"55":1}}],["official",{"2":{"37":2,"72":2,"73":2}}],["ossaccesskeyid=ltai5t8xtpd99yzsjqcc",{"2":{"34":1}}],["oss",{"2":{"34":3,"61":1,"62":1}}],["oscar",{"2":{"21":1}}],["org",{"2":{"34":5,"41":8}}],["order",{"2":{"27":2}}],["oracle12c",{"2":{"21":2}}],["oracle11g",{"2":{"21":1}}],["oracle",{"2":{"21":1}}],["operation",{"2":{"62":2}}],["openapi",{"2":{"51":1}}],["opengauss",{"2":{"21":2}}],["option",{"2":{"14":2}}],["oceanbase",{"2":{"21":2}}],["ok",{"2":{"13":1,"62":2}}],["out",{"2":{"9":1,"13":1,"34":5,"41":1}}],["override",{"2":{"9":2,"11":1,"12":1,"13":1,"14":3,"18":1,"34":1,"41":1,"45":1,"55":11,"59":2,"60":1}}],["multipartfile",{"2":{"62":1}}],["multipart",{"2":{"62":1}}],["mutate",{"2":{"18":1}}],["mode",{"2":{"62":1}}],["modifyafter",{"2":{"59":1}}],["modifyenum",{"2":{"59":2}}],["modifybefore",{"2":{"59":1}}],["modules",{"2":{"16":1,"27":3}}],["ms",{"2":{"51":1}}],["mvn",{"2":{"42":1}}],["micrometer",{"2":{"41":12}}],["md",{"2":{"39":1}}],["md5digestashex",{"2":{"55":2}}],["md5",{"2":{"29":2}}],["m",{"2":{"34":6}}],["mediatype",{"2":{"62":2}}],["message",{"2":{"29":1}}],["method",{"2":{"18":3}}],["methodname",{"2":{"9":1,"34":3}}],["matches",{"2":{"55":1}}],["map",{"2":{"55":6}}],["mapper",{"2":{"25":1,"27":4}}],["maven",{"2":{"41":7,"47":1,"65":1,"75":1}}],["main",{"2":{"25":1,"27":1,"38":1,"51":3}}],["mariadb",{"2":{"21":2}}],["manes",{"2":{"8":1}}],["myaccessdecisionmanager",{"2":{"55":3}}],["myfiltersecurityinterceptor",{"2":{"55":1}}],["mysecuritymetadatasource",{"2":{"55":1}}],["mysql",{"2":{"21":3,"47":1,"50":5,"65":1}}],["my",{"2":{"42":1}}],["mycoolplugintest",{"2":{"38":1}}],["mycoolplugin",{"2":{"34":1,"38":1}}],["mybatis",{"2":{"12":1,"19":5,"20":4,"21":2,"66":1}}],["+",{"2":{"9":2,"20":1,"34":2,"41":3,"44":2,"55":5}}],["tip",{"2":{"61":1}}],["time`",{"2":{"34":2}}],["t",{"2":{"59":6}}],["this",{"2":{"55":1}}],["thread",{"2":{"44":1,"51":1}}],["throws",{"2":{"55":8}}],["throw",{"2":{"29":1,"41":1,"55":1}}],["the",{"2":{"41":14}}],["toarray",{"2":{"55":1}}],["token",{"2":{"54":2,"55":2,"56":1}}],["tohanyupinyinstring",{"2":{"41":1}}],["tone",{"2":{"41":1}}],["team",{"2":{"37":2,"72":2,"73":2}}],["testplugin",{"2":{"34":2}}],["test",{"2":{"9":2,"13":2,"25":1,"34":2,"38":1}}],["txt",{"2":{"34":2,"35":2}}],["try",{"2":{"41":1,"55":1}}],["true",{"2":{"29":1,"55":1}}],["transactiontemplate",{"2":{"20":1}}],["transactional",{"2":{"20":1}}],["tdengine",{"2":{"21":2}}],["target",{"2":{"42":2}}],["targetclass",{"2":{"9":1}}],["task",{"2":{"27":1,"34":3,"51":1}}],["table",{"2":{"22":1,"66":1}}],["tag",{"2":{"11":1,"12":1,"13":1,"14":1,"60":1,"62":1}}],["typescript",{"2":{"67":1}}],["typehandler",{"2":{"20":1}}],["type",{"2":{"8":2,"59":4}}],["daoauthenticationprovider",{"2":{"55":2}}],["datasource",{"2":{"50":1}}],["database",{"2":{"8":1}}],["data",{"2":{"8":1,"27":1,"45":2,"62":1}}],["dofilter",{"2":{"55":2}}],["doris",{"2":{"21":2}}],["duration",{"2":{"51":1}}],["duplicatekeyexception",{"2":{"29":2}}],["driver",{"2":{"50":2}}],["dynamicjarclassloader",{"2":{"44":3}}],["digestutils",{"2":{"55":2}}],["digesthex",{"2":{"29":2}}],["disable",{"2":{"55":2}}],["dict",{"2":{"27":1}}],["dm",{"2":{"21":1}}],["dbfromjsoninit",{"2":{"45":1}}],["db2",{"2":{"21":2}}],["db",{"2":{"20":1,"27":1,"45":2}}],["destroy",{"2":{"55":1}}],["description",{"2":{"11":1,"12":1,"13":1,"14":1,"39":1,"40":1,"60":1,"62":2}}],["deployment",{"2":{"75":1}}],["department",{"2":{"55":1}}],["departmentids",{"2":{"55":2}}],["dependency>",{"2":{"41":4}}],["dev",{"2":{"52":1}}],["debug",{"2":{"34":3}}],["derby",{"2":{"21":2}}],["default",{"2":{"17":3,"41":1}}],["demov2",{"2":{"45":1}}],["democoolplugin",{"2":{"41":1}}],["democacheservice",{"2":{"9":2}}],["democacheserviceimpl",{"2":{"9":2}}],["demoentity",{"2":{"25":1}}],["demoentity>",{"2":{"11":1,"12":1,"13":1,"14":5,"60":1}}],["demo",{"2":{"16":3,"25":1,"39":1,"45":4}}],["demomapper",{"2":{"14":1}}],["demoserviceimpl",{"2":{"14":1}}],["demoservice",{"2":{"11":1,"12":1,"13":1,"14":2,"60":1}}],["delete",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"60":1}}],["sdk",{"2":{"77":1}}],["swagger",{"0":{"60":1},"2":{"60":1}}],["show",{"2":{"70":1}}],["shell",{"2":{"52":1}}],["shaded",{"2":{"41":14}}],["shade",{"2":{"41":6}}],["snapshot",{"2":{"42":1}}],["s",{"2":{"41":1}}],["sourceforge",{"2":{"41":4}}],["soon",{"2":{"30":1}}],["summary",{"2":{"62":2}}],["supports",{"2":{"55":1}}],["super",{"2":{"14":2,"18":1,"29":2,"55":3}}],["success",{"2":{"34":1}}],["simplegrantedauthority",{"2":{"55":1}}],["signature=krlj0uv96tbliagpji",{"2":{"34":1}}],["sinodb",{"2":{"21":1}}],["slf4j",{"2":{"29":1,"34":3,"41":4,"45":1,"55":2}}],["split",{"2":{"55":1}}],["space",{"2":{"27":1}}],["springdoc",{"2":{"51":2}}],["springboot3",{"2":{"80":1}}],["springboot",{"2":{"44":1}}],["springframework",{"2":{"34":5,"41":14}}],["spring",{"2":{"18":3,"20":2,"41":13,"50":1,"53":1,"66":1}}],["spring方式",{"2":{"9":1}}],["springcache",{"2":{"8":1}}],["src",{"2":{"25":1,"51":1}}],["sap",{"2":{"21":1}}],["sysuserentity",{"2":{"55":14}}],["sys",{"2":{"34":4}}],["system",{"2":{"9":1,"13":1,"34":5,"41":1}}],["sybase",{"2":{"21":2}}],["schema",{"2":{"20":1}}],["sqlserver",{"2":{"21":2}}],["sqlserver2005",{"2":{"21":2}}],["sqlite",{"2":{"21":3}}],["sql",{"2":{"19":2,"20":2,"21":1}}],["star",{"0":{"72":1,"73":1},"2":{"78":1}}],["stateless",{"2":{"55":1}}],["static",{"2":{"25":1}}],["status=200",{"2":{"34":1}}],["status",{"2":{"12":1}}],["stream",{"2":{"55":1}}],["str",{"2":{"34":1}}],["strutil",{"2":{"34":2}}],["string",{"2":{"9":2,"13":1,"17":3,"25":1,"34":7,"41":4,"55":12,"56":2}}],["stereotype",{"2":{"34":1}}],["sessioncreationpolicy",{"2":{"55":2}}],["sessionmanagement",{"2":{"55":1}}],["securityfilterchain",{"2":{"55":2}}],["securitymetadatasource",{"2":{"55":3}}],["security权限拦截器校验当前用户权限",{"2":{"55":1}}],["securityconfig",{"2":{"55":1}}],["security加载所有设置的权限",{"2":{"55":1}}],["security",{"2":{"53":1}}],["server",{"2":{"62":1}}],["servertimezone=gmt",{"2":{"50":1}}],["servletresponse",{"2":{"55":1}}],["servletrequest",{"2":{"55":1}}],["servletexception",{"2":{"55":3}}],["service",{"2":{"9":2,"14":3,"25":2,"27":2,"51":1}}],["select",{"2":{"12":1}}],["setuserdetailsservice",{"2":{"55":1}}],["setaccessdecisionmanager",{"2":{"55":1}}],["setmyaccessdecisionmanager",{"2":{"55":1}}],["setmodule",{"2":{"25":1}}],["settings",{"2":{"75":1}}],["settonetype",{"2":{"41":1}}],["settype",{"2":{"25":1}}],["setpasswordencoder",{"2":{"55":1}}],["setpassword",{"2":{"29":2}}],["setpageoption",{"2":{"12":1}}],["setentity",{"2":{"25":1}}],["setname",{"2":{"25":1}}],["setlistoption",{"2":{"12":1}}],["set",{"2":{"9":1,"34":2,"55":5}}],["=5",{"2":{"50":1}}],["==",{"2":{"34":1,"55":2}}],["==>",{"2":{"34":2}}],["=",{"2":{"9":2,"11":4,"12":4,"13":4,"14":4,"17":2,"18":3,"25":2,"28":1,"29":5,"34":8,"41":5,"44":2,"47":3,"55":15,"56":2,"60":4,"62":9,"65":3}}],["性能要求比较高或有分布式部署需求的建议配置成",{"2":{"8":1}}],["permitall",{"2":{"55":1}}],["perm",{"2":{"55":5}}],["perms",{"2":{"55":4}}],["phase>",{"2":{"41":1}}],["phase>package",{"2":{"41":1}}],["phoenix",{"2":{"21":2}}],["phone",{"2":{"12":2}}],["pinyin",{"2":{"41":3}}],["pinyinhelper",{"2":{"41":2}}],["pinyin4j",{"2":{"41":5}}],["png",{"2":{"39":1}}],["put",{"2":{"29":2,"55":1}}],["public",{"2":{"9":4,"11":1,"12":1,"13":2,"14":3,"25":1,"29":7,"34":4,"41":2,"45":2,"55":22,"59":2,"60":1,"62":3}}],["plugins",{"2":{"41":1}}],["plugins>",{"2":{"41":2}}],["plugin>",{"2":{"41":2}}],["plugin",{"2":{"27":1,"34":6,"37":2,"38":3,"39":2,"41":8,"42":5,"51":1}}],["plus",{"2":{"19":1,"20":1}}],["pool",{"2":{"51":1}}],["pom",{"2":{"42":1}}],["policy=eyjlehb0wny0xm1qxmjowmto0oc41njvaiiwiy29uzgl0aw9ucyi6w1siy29udgvudc1szw5ndggtcmfuz2uildasnti0mjg4mdbdxx0=",{"2":{"34":1}}],["postgresql",{"2":{"21":3}}],["postmapping",{"2":{"13":1,"14":1,"34":2,"62":1}}],["post",{"2":{"11":5}}],["port",{"2":{"8":1,"62":1}}],["project",{"2":{"75":2}}],["projectlombok",{"2":{"41":2}}],["properties>",{"2":{"42":2}}],["properties",{"2":{"42":1}}],["protected",{"2":{"11":1,"12":1,"13":1,"14":2,"18":1,"60":1}}],["private",{"2":{"34":3,"55":11,"56":2,"62":1}}],["println",{"2":{"9":1,"13":1,"34":5,"41":1}}],["preparing",{"2":{"34":1}}],["package",{"2":{"42":1,"52":1}}],["parentclassloader",{"2":{"34":2}}],["parameter",{"2":{"62":1}}],["parameters",{"2":{"34":1}}],["param",{"2":{"55":1,"59":6}}],["params",{"2":{"34":1,"41":2}}],["parse",{"2":{"19":1}}],["paths",{"2":{"18":1}}],["path",{"2":{"18":3}}],["page",{"2":{"10":1,"11":1,"12":1,"13":1,"14":9,"60":1}}],["passwordencoder",{"2":{"55":4}}],["passwordversion",{"2":{"55":1,"56":1}}],["password",{"2":{"8":1,"50":1}}],["p0",{"2":{"9":1}}],["15",{"0":{"79":1}}],["15t14",{"2":{"51":4}}],["101+08",{"2":{"51":1}}],["17",{"2":{"47":1,"65":1}}],["13",{"2":{"41":1}}],["13t20",{"2":{"34":8}}],["123456",{"2":{"50":1,"52":1,"70":1}}],["12",{"2":{"41":2}}],["127",{"2":{"8":1,"34":1,"50":1,"51":1,"52":1,"60":1,"62":1}}],["1800",{"2":{"54":1}}],["18",{"2":{"34":8,"41":1}}],["1",{"0":{"33":1,"37":1,"49":1,"75":1,"79":2,"80":1},"2":{"8":1,"9":1,"34":2,"39":1,"41":11,"42":1,"44":2,"50":1,"51":3,"52":1,"55":3,"60":1,"62":1}}],["06",{"0":{"80":1}}],["00",{"2":{"34":8,"51":4}}],["01",{"2":{"34":8}}],["07",{"0":{"79":1},"2":{"34":8,"51":4}}],["0",{"0":{"80":1},"2":{"8":3,"34":2,"39":2,"41":4,"42":1,"47":1,"50":3,"51":2,"52":2,"55":1,"60":2,"62":2}}],["headersconfigurer",{"2":{"55":1}}],["headers",{"2":{"55":1}}],["hello",{"2":{"34":4,"41":1}}],["hashmap",{"2":{"55":1}}],["hanyupinyintonetype",{"2":{"41":2}}],["hanyupinyinoutputformat",{"2":{"41":3}}],["hangzhou",{"2":{"34":1}}],["handleexception",{"2":{"29":1}}],["handleillegalargumentexception",{"2":{"29":1}}],["handlehttprequestmethodnotsupportedexception",{"2":{"29":1}}],["handlebadcredentialsexception",{"2":{"29":1}}],["handleduplicatekeyexception",{"2":{"29":1}}],["handlerrexception",{"2":{"29":1}}],["handlertype",{"2":{"18":3}}],["hana",{"2":{"21":2}}],["hook",{"2":{"39":1,"40":1}}],["host=https",{"2":{"34":1}}],["host",{"2":{"8":1}}],["hutool",{"2":{"34":3,"41":11,"66":1}}],["hive",{"2":{"21":2}}],["highgo",{"2":{"21":1}}],["hbase",{"2":{"21":1}}],["hsql",{"2":{"21":2}}],["h2",{"2":{"21":2}}],["html",{"2":{"60":1}}],["html文档",{"2":{"12":1}}],["http",{"2":{"51":1,"60":1,"62":1}}],["httprequestmethodnotsupportedexception",{"2":{"29":2}}],["httpsecurity",{"2":{"55":3}}],["httpservletrequest",{"2":{"11":1,"12":1,"13":1,"14":1,"60":1,"62":1}}],["https",{"2":{"1":2,"12":1,"34":1,"37":2,"70":1,"72":2,"73":2}}],["能够显著提升应用程序的性能和响应速度",{"2":{"8":1}}],["旨在提供高性能",{"2":{"8":1}}],["由该类统一执行初始化",{"2":{"45":1}}],["由",{"2":{"8":1}}],["csrf",{"2":{"55":1}}],["csiidb",{"2":{"21":2}}],["cfg",{"2":{"55":3}}],["cj",{"2":{"50":1}}],["currentthread",{"2":{"44":1}}],["cubrid",{"2":{"21":2}}],["charsequence",{"2":{"55":2}}],["characterencoding=utf",{"2":{"50":1}}],["chain",{"2":{"55":2}}],["chinesechar",{"2":{"41":4}}],["check",{"2":{"28":2,"29":6}}],["c",{"2":{"34":6,"51":3}}],["cn",{"2":{"34":4,"41":2}}],["c端用户",{"2":{"27":1}}],["clean",{"2":{"42":1}}],["clickhouse",{"2":{"21":2}}],["classpath",{"2":{"45":1}}],["classloader",{"2":{"34":4}}],["class",{"2":{"9":3,"11":1,"12":1,"13":1,"14":2,"17":2,"18":3,"25":2,"29":7,"34":2,"41":1,"45":1,"50":1,"55":8,"60":1,"62":1}}],["crud",{"0":{"58":1},"2":{"58":1}}],["crudoption",{"2":{"14":1}}],["create",{"2":{"12":1,"29":2}}],["createop",{"2":{"12":2}}],["catch",{"2":{"41":1}}],["cacheable",{"2":{"9":1}}],["cachenames",{"2":{"9":1}}],["cacheconfig",{"2":{"9":1}}],["cache",{"2":{"8":3,"34":2,"41":1}}],["caffeine",{"2":{"8":3}}],["collection",{"2":{"55":4}}],["consumes",{"2":{"62":1}}],["conf",{"2":{"55":4}}],["configuration",{"2":{"55":1}}],["configuration>",{"2":{"41":2}}],["configattribute",{"2":{"55":1}}],["configattributes",{"2":{"55":4}}],["configattribute>",{"2":{"55":3}}],["configattribute>>",{"2":{"55":1}}],["config",{"2":{"39":2,"40":1,"55":7}}],["context",{"2":{"41":2}}],["controller",{"2":{"10":2,"14":1,"16":2,"18":1,"25":2,"27":2,"34":3}}],["core",{"2":{"27":2,"34":12,"41":6,"45":1,"51":2}}],["code",{"2":{"29":1}}],["codetypeenum",{"2":{"25":1}}],["codemodel",{"2":{"25":10}}],["codegenerator",{"2":{"25":7}}],["compiler",{"2":{"75":1}}],["compile命令",{"2":{"75":1}}],["component",{"2":{"55":3}}],["coming",{"2":{"30":1}}],["combine",{"2":{"18":1}}],["commons",{"2":{"41":3}}],["commoncontroller",{"2":{"34":1}}],["comm",{"2":{"9":1}}],["com",{"2":{"1":2,"12":1,"25":1,"27":1,"34":12,"37":2,"38":2,"41":4,"45":1,"50":1,"51":3,"70":1,"72":2,"73":2}}],["coolsecurityutil",{"2":{"56":6}}],["cooleps",{"2":{"51":1}}],["coolexception",{"2":{"29":3}}],["coolexceptionhandler",{"2":{"29":1}}],["coolplugin注解",{"2":{"38":1}}],["coolplugin",{"2":{"34":4,"41":6}}],["coolpluginservice",{"2":{"34":1,"51":1}}],["coolplugininvokers",{"2":{"34":4}}],["coolpreconditions",{"2":{"28":1,"29":2}}],["coolapplication",{"2":{"27":1,"51":1}}],["cooladminjavaapplicationtests",{"2":{"25":1}}],["coolcodegeneratortest",{"2":{"25":1}}],["coolcache",{"2":{"9":5,"34":5,"41":1,"55":7}}],["coolrestcontroller",{"2":{"11":1,"12":1,"13":1,"14":1,"17":1,"18":2,"60":1,"62":1}}],["cool",{"0":{"68":1},"2":{"0":1,"1":2,"5":1,"6":1,"11":1,"12":1,"13":1,"14":1,"19":1,"21":1,"23":1,"25":1,"27":2,"34":19,"37":4,"38":2,"41":5,"42":8,"43":1,"45":3,"46":1,"50":1,"51":7,"60":1,"68":2,"70":1,"72":4,"73":4,"78":1}}],["框架用到了mybatis",{"2":{"75":1}}],["框架自带两种文件上传方式本地上传与云存储",{"2":{"61":1}}],["框架自带基于",{"2":{"8":1}}],["框架集成了auto",{"2":{"22":1}}],["框架封装了一个请求属性",{"2":{"13":1}}],["框架特有的通用工具类",{"2":{"9":1}}],["框架更新",{"2":{"4":1,"6":1}}],["缓存对象",{"2":{"34":1}}],["缓存结果",{"2":{"34":2}}],["缓存库",{"2":{"8":1}}],["缓存",{"0":{"8":1},"2":{"8":2}}],["的build",{"2":{"75":1}}],["的mvn",{"2":{"75":1}}],["的核心流程",{"2":{"30":1}}],["的能力",{"2":{"30":1}}],["的火热",{"2":{"30":1}}],["的都知道",{"2":{"22":1}}],["的事务管理",{"2":{"20":1}}],["的基本增删改查",{"2":{"20":1}}],["的",{"2":{"18":1,"75":1}}],["的一些最新资讯",{"2":{"6":1}}],["的在线文档仓库",{"2":{"0":1}}],["公众号",{"0":{"6":1}}],["团队哔哩哔哩官方账户",{"2":{"5":1}}],["站视频教程",{"2":{"7":1,"24":1}}],["站",{"0":{"5":1}}],["boot",{"2":{"66":1}}],["boolean",{"2":{"55":2}}],["body",{"2":{"13":1}}],["b8e4",{"2":{"41":1}}],["bbb",{"2":{"39":1}}],["beforeinvocation",{"2":{"55":1}}],["belerweb",{"2":{"41":2}}],["beans",{"2":{"41":3}}],["bean",{"2":{"34":1,"55":4}}],["ben",{"2":{"8":1}}],["bind",{"2":{"34":4}}],["badhanyupinyinoutputformatcombination",{"2":{"41":2}}],["badcredentialsexception",{"2":{"29":2}}],["banner",{"2":{"34":2,"35":2}}],["basecoolplugin",{"2":{"34":7,"41":4}}],["basecontroller",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"60":1}}],["baseservice中集成了常用的",{"2":{"58":1}}],["baseserviceimpl",{"2":{"14":1}}],["basesysuserservice",{"2":{"55":3}}],["basesysuserentity>lambdaquery",{"2":{"29":2,"55":1}}],["basesysuserentity",{"2":{"29":6,"55":3}}],["basesyspermsservice",{"2":{"55":8}}],["basesyslogmapper",{"2":{"34":3}}],["base",{"2":{"12":1,"27":1,"34":1,"62":1}}],["build>",{"2":{"41":2}}],["build",{"2":{"18":1,"55":1,"75":3}}],["b",{"0":{"5":1},"2":{"7":1,"24":1,"34":3}}],["anyrequest",{"2":{"55":1}}],["annotations",{"2":{"18":1}}],["annotation",{"2":{"17":2,"27":1,"34":5,"38":1,"41":5}}],["afterinvocation",{"2":{"55":1}}],["abstracthttpconfigurer",{"2":{"55":1}}],["abstractsecurityinterceptor",{"2":{"55":1}}],["abstractopenapiresource",{"2":{"51":1}}],["accessdeniedhandler",{"2":{"55":1}}],["aclass",{"2":{"55":1}}],["action",{"2":{"34":1}}],["aop",{"2":{"41":2}}],["arraylist",{"2":{"55":3}}],["artifactset>",{"2":{"41":2}}],["artifactid>maven",{"2":{"41":1}}],["artifactid>pinyin4j",{"2":{"41":1}}],["artifactid>",{"2":{"41":3}}],["artifactid>hutool",{"2":{"41":1}}],["args",{"2":{"25":1,"45":1}}],["aaa",{"2":{"39":1}}],["assets",{"2":{"39":2}}],["ase",{"2":{"21":1}}],["authprovider",{"2":{"55":4}}],["authenticationconfiguration",{"2":{"55":1}}],["authenticationmanager",{"2":{"55":2}}],["authenticationprovider",{"2":{"55":2}}],["authenticationentrypoint",{"2":{"55":1}}],["authenticated",{"2":{"55":1}}],["authorizehttprequests",{"2":{"55":1}}],["authority",{"2":{"55":3}}],["author",{"2":{"39":1,"40":1}}],["automatically",{"2":{"75":1}}],["automatically自动编译功能",{"2":{"75":1}}],["auto",{"2":{"66":1}}],["autowired",{"2":{"55":1}}],["autoprefixurlmapping",{"2":{"18":1}}],["aliyun",{"2":{"34":1}}],["aliyuncs",{"2":{"34":1}}],["aliasfor",{"2":{"17":2}}],["all",{"2":{"20":1,"41":1,"62":1}}],["apt",{"2":{"75":1}}],["apache",{"2":{"41":1}}],["application",{"2":{"50":1,"62":1}}],["applicationarguments",{"2":{"45":1}}],["applicationrunner",{"2":{"45":1}}],["applicationcontext",{"2":{"34":1}}],["appsecret",{"2":{"35":1}}],["appid",{"2":{"35":1}}],["appdemoinfocontroller",{"2":{"16":1}}],["app",{"2":{"16":4}}],["api",{"2":{"7":1,"11":1,"12":1,"13":1,"14":1,"17":1,"24":1,"41":4,"51":1,"60":1}}],["age",{"2":{"12":1}}],["addfilterbefore",{"2":{"55":1}}],["add",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"29":4,"55":2,"60":1}}],["adminbasecommcontroller",{"2":{"62":1}}],["admin中才能调试",{"2":{"34":1}}],["admin的缓存",{"2":{"34":1}}],["admindemoinfocontroller",{"2":{"11":1,"12":1,"13":1,"14":1,"16":2,"60":1}}],["admin",{"0":{"68":1},"2":{"0":1,"1":2,"16":4,"19":1,"21":1,"23":1,"25":1,"34":9,"37":2,"41":2,"42":1,"46":1,"51":4,"52":1,"55":6,"68":1,"70":2,"72":2,"73":2,"78":1}}],["a",{"2":{"9":2,"34":2}}],["ai",{"0":{"7":1,"24":1,"30":1},"2":{"4":1,"30":7,"68":5,"77":1,"79":1}}],["你的项目",{"2":{"75":1}}],["你的star是我们最大的动力",{"2":{"71":1}}],["你的贡献可能给其他人代码巨大的帮助",{"2":{"0":1}}],["你将会看到后端的欢迎页面",{"2":{"51":1}}],["你可以这样做",{"2":{"75":1}}],["你可以自己开发插件",{"2":{"31":1}}],["你可以在这边了解到一些关于我们框架的最新动态",{"2":{"4":1}}],["抖音",{"0":{"4":1}}],["扫一扫加入微信开发交流群",{"2":{"3":1}}],["微信",{"0":{"3":1},"2":{"77":1}}],["共创一些美好的事情",{"2":{"2":1}}],["共同参与开源",{"2":{"0":1}}],["交流合作",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1}}],["官网文档",{"2":{"19":1}}],["官网",{"2":{"1":1}}],["地址",{"0":{"1":1}}],["积极提交pull",{"2":{"0":1}}],["版相关功能",{"2":{"80":1}}],["版本一致",{"2":{"70":1}}],["版本号",{"2":{"40":1}}],["版本",{"2":{"30":1}}],["版",{"2":{"0":1}}],["介绍",{"0":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/.vitepress/dist/assets/chunks/VPLocalSearchBox.a2Mj6NA7.js b/.vitepress/dist/assets/chunks/VPLocalSearchBox.LRdAF0PT.js similarity index 99% rename from .vitepress/dist/assets/chunks/VPLocalSearchBox.a2Mj6NA7.js rename to .vitepress/dist/assets/chunks/VPLocalSearchBox.LRdAF0PT.js index 11885d7..4698aca 100644 --- a/.vitepress/dist/assets/chunks/VPLocalSearchBox.a2Mj6NA7.js +++ b/.vitepress/dist/assets/chunks/VPLocalSearchBox.LRdAF0PT.js @@ -1,4 +1,4 @@ -var Nt=Object.defineProperty;var It=(o,e,t)=>e in o?Nt(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>It(o,typeof e!="symbol"?e+"":e,t);import{X as Dt,s as oe,v as $e,as as kt,at as Ot,d as Rt,G as xe,au as tt,h as Fe,av as _t,aw as Mt,x as Lt,ax as zt,y as Re,R as de,Q as Ee,ay as Pt,az as Bt,Y as Vt,U as $t,a1 as Wt,o as ee,b as Kt,j as k,a2 as Jt,k as j,aA as Ut,aB as jt,aC as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,aD as Qt,p as Ht,l as qt,aE as it,aF as Yt,ah as Zt,an as Xt,aG as er,_ as tr}from"./framework.DkvLLw5I.js";import{u as rr,c as ar}from"./theme.C9P7FTri.js";const nr={root:()=>Dt(()=>import("./@localSearchIndexroot.Bk7JD0Vp.js"),[])};/*! +var Nt=Object.defineProperty;var It=(o,e,t)=>e in o?Nt(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>It(o,typeof e!="symbol"?e+"":e,t);import{X as Dt,s as oe,v as $e,as as kt,at as Ot,d as Rt,G as xe,au as tt,h as Fe,av as _t,aw as Mt,x as Lt,ax as zt,y as Re,R as de,Q as Ee,ay as Pt,az as Bt,Y as Vt,U as $t,a1 as Wt,o as ee,b as Kt,j as k,a2 as Jt,k as j,aA as Ut,aB as jt,aC as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,aD as Qt,p as Ht,l as qt,aE as it,aF as Yt,ah as Zt,an as Xt,aG as er,_ as tr}from"./framework.DkvLLw5I.js";import{u as rr,c as ar}from"./theme.DrrvWx3n.js";const nr={root:()=>Dt(()=>import("./@localSearchIndexroot.a2jsn6zp.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var yt=["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])"],Ce=yt.join(","),mt=typeof Element>"u",ue=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!mt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ce));return t&&ue.call(e,Ce)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ce);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!wt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ur=function(e){return xt(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ne(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=gt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ce)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! diff --git a/.vitepress/dist/assets/chunks/theme.C9P7FTri.js b/.vitepress/dist/assets/chunks/theme.DrrvWx3n.js similarity index 99% rename from .vitepress/dist/assets/chunks/theme.C9P7FTri.js rename to .vitepress/dist/assets/chunks/theme.DrrvWx3n.js index 91c2e28..fcd4820 100644 --- a/.vitepress/dist/assets/chunks/theme.C9P7FTri.js +++ b/.vitepress/dist/assets/chunks/theme.DrrvWx3n.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.a2Mj6NA7.js","assets/chunks/framework.DkvLLw5I.js"])))=>i.map(i=>d[i]); -import{d as _,o as s,c as u,r as l,n as M,a as te,t as C,b as k,w as m,e as h,T as Ae,_ as y,u as Vt,i as wt,f as Tt,g as Be,h as L,j as p,k as r,p as G,l as q,m as le,q as Ee,s as H,v as ee,x as $e,y as re,z as Oe,A as Fe,B as It,C as Nt,D as ce,F as B,E as K,G as Ze,H as ye,I as b,J as Q,K as Qe,L as me,M as se,N as Le,O as Et,P as xe,Q as ze,R as et,S as tt,U as Pe,V as zt,W as Ct,X as Ht,Y as ot,Z as nt,$ as Mt,a0 as At,a1 as Bt,a2 as Ot,a3 as Ft}from"./framework.DkvLLw5I.js";const Dt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(s(),u("span",{class:M(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[te(C(e.text),1)])],2))}}),jt={key:0,class:"VPBackdrop"},Ut=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(s(),k(Ae,{name:"fade"},{default:m(()=>[e.show?(s(),u("div",jt)):h("",!0)]),_:1}))}}),Gt=y(Ut,[["__scopeId","data-v-ee4f8a0b"]]),V=Vt;function qt(o,e){let t,a=!1;return()=>{t&&clearTimeout(t),a?t=setTimeout(o,e):(o(),(a=!0)&&setTimeout(()=>a=!1,e))}}function Ce(o){return/^\//.test(o)?o:`/${o}`}function De(o){const{pathname:e,search:t,hash:a,protocol:n}=new URL(o,"http://a.com");if(wt(o)||o.startsWith("#")||!n.startsWith("http")||!Tt(e))return o;const{site:i}=V(),c=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${a}`);return Be(c)}function pe({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:a,theme:n,hash:i}=V(),c=L(()=>{var v,g;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:L(()=>Object.entries(e.value.locales).flatMap(([v,g])=>c.value.label===g.label?[]:{text:g.label,link:Rt(g.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&o,a.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:c}}function Rt(o,e,t,a){return e?o.replace(/\/$/,"")+Ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):o}const Wt=o=>(G("data-v-25b3c91b"),o=o(),q(),o),Kt={class:"NotFound"},Yt={class:"code"},Jt={class:"title"},Xt=Wt(()=>p("div",{class:"divider"},null,-1)),Zt={class:"quote"},Qt={class:"action"},xt=["href","aria-label"],eo=_({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=pe();return(a,n)=>{var i,c,d,v,g;return s(),u("div",Kt,[p("p",Yt,C(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",Jt,C(((c=r(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),Xt,p("blockquote",Zt,C(((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),p("div",Qt,[p("a",{class:"link",href:r(Be)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},C(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,xt)])])}}}),to=y(eo,[["__scopeId","data-v-25b3c91b"]]);function at(o,e){if(Array.isArray(o))return ge(o);if(o==null)return[];e=Ce(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(Ce(n))),a=t?o[t]:[];return Array.isArray(a)?ge(a):ge(a.items,a.base)}function oo(o){const e=[];let t=0;for(const a in o){const n=o[a];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function no(o){const e=[];function t(a){for(const n of a)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function He(o,e){return Array.isArray(e)?e.some(t=>He(o,t)):le(o,e.link)?!0:e.items?He(o,e.items):!1}function ge(o,e){return[...o].map(t=>{const a={...t},n=a.base||e;return n&&a.link&&(a.link=n+a.link),a.items&&(a.items=ge(a.items,n)),a})}function oe(){const{frontmatter:o,page:e,theme:t}=V(),a=Ee("(min-width: 960px)"),n=H(!1),i=L(()=>{const F=t.value.sidebar,z=e.value.relativePath;return F?at(F,z):[]}),c=H(i.value);ee(i,(F,z)=>{JSON.stringify(F)!==JSON.stringify(z)&&(c.value=i.value)});const d=L(()=>o.value.sidebar!==!1&&c.value.length>0&&o.value.layout!=="home"),v=L(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=L(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),I=L(()=>d.value&&a.value),$=L(()=>d.value?oo(c.value):[]);function S(){n.value=!0}function E(){n.value=!1}function N(){n.value?E():S()}return{isOpen:n,sidebar:c,sidebarGroups:$,hasSidebar:d,hasAside:g,leftAside:v,isSidebarEnabled:I,open:S,close:E,toggle:N}}function ao(o,e){let t;$e(()=>{t=o.value?document.activeElement:void 0}),re(()=>{window.addEventListener("keyup",a)}),Oe(()=>{window.removeEventListener("keyup",a)});function a(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function so(o){const{page:e,hash:t}=V(),a=H(!1),n=L(()=>o.value.collapsed!=null),i=L(()=>!!o.value.link),c=H(!1),d=()=>{c.value=le(e.value.relativePath,o.value.link)};ee([e,o,t],d),re(d);const v=L(()=>c.value?!0:o.value.items?He(e.value.relativePath,o.value.items):!1),g=L(()=>!!(o.value.items&&o.value.items.length));$e(()=>{a.value=!!(n.value&&o.value.collapsed)}),Fe(()=>{(c.value||v.value)&&(a.value=!1)});function I(){n.value&&(a.value=!a.value)}return{collapsed:a,collapsible:n,isLink:i,isActiveLink:c,hasActiveLink:v,hasChildren:g,toggle:I}}function ro(){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 Me=[];function st(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function je(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const a=Number(t.tagName[1]);return{element:t,title:io(t),link:"#"+t.id,level:a}});return lo(e,o)}function io(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function lo(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[a,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(c=>c.level>=a&&c.level<=n),Me.length=0;for(const{element:c,link:d}of o)Me.push({element:c,link:d});const i=[];e:for(let c=0;c=0;v--){const g=o[v];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",a)}),It(()=>{c(location.hash)}),Oe(()=>{window.removeEventListener("scroll",a)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,g=document.body.offsetHeight,I=Math.abs(d+v-g)<1,$=Me.map(({element:E,link:N})=>({link:N,top:uo(E)})).filter(({top:E})=>!Number.isNaN(E)).sort((E,N)=>E.top-N.top);if(!$.length){c(null);return}if(d<1){c(null);return}if(I){c($[$.length-1].link);return}let S=null;for(const{link:E,top:N}of $){if(N>d+Nt()+4)break;S=E}c(S)}function c(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function uo(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const vo=["href","title"],mo=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const a=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(a));n==null||n.focus({preventScroll:!0})}return(t,a)=>{const n=ce("VPDocOutlineItem",!0);return s(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(s(!0),u(B,null,K(t.headers,({children:i,link:c,title:d})=>(s(),u("li",null,[p("a",{class:"outline-link",href:c,onClick:e,title:d},C(d),9,vo),i!=null&&i.length?(s(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),rt=y(mo,[["__scopeId","data-v-a53304d2"]]),po={class:"content"},fo={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},ho=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),a=Ze([]);ye(()=>{a.value=je(e.value.outline??t.value.outline)});const n=H(),i=H();return co(n,i),(c,d)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:n},[p("div",po,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",fo,C(r(st)(r(t))),1),b(rt,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),_o=y(ho,[["__scopeId","data-v-e9242aa7"]]),go={class:"VPDocAsideCarbonAds"},bo=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,a)=>(s(),u("div",go,[b(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),ko=o=>(G("data-v-4ef74901"),o=o(),q(),o),$o={class:"VPDocAside"},yo=ko(()=>p("div",{class:"spacer"},null,-1)),Lo=_({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,a)=>(s(),u("div",$o,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),b(_o),l(t.$slots,"aside-outline-after",{},void 0,!0),yo,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(s(),k(bo,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Po=y(Lo,[["__scopeId","data-v-4ef74901"]]);function So(){const{theme:o,page:e}=V();return L(()=>{const{text:t="Edit this page",pattern:a=""}=o.value.editLink||{};let n;return typeof a=="function"?n=a(e.value):n=a.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Vo(){const{page:o,theme:e,frontmatter:t}=V();return L(()=>{var g,I,$,S,E,N,F,z;const a=at(e.value.sidebar,o.value.relativePath),n=no(a),i=wo(n,J=>J.link.replace(/[?#].*$/,"")),c=i.findIndex(J=>le(o.value.relativePath,J.link)),d=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((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)??(($=i[c-1])==null?void 0:$.docFooterText)??((S=i[c-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((E=i[c-1])==null?void 0:E.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((N=i[c+1])==null?void 0:N.docFooterText)??((F=i[c+1])==null?void 0:F.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((z=i[c+1])==null?void 0:z.link)}}})}function wo(o,e){const t=new Set;return o.filter(a=>{const n=e(a);return t.has(n)?!1:t.add(n)})}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")),a=L(()=>e.href&&Qe.test(e.href)||e.target==="_blank");return(n,i)=>(s(),k(Q(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":a.value,"no-icon":n.noIcon}]),href:n.href?r(De)(n.href):void 0,target:n.target??(a.value?"_blank":void 0),rel:n.rel??(a.value?"noreferrer":void 0)},{default:m(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),To={class:"VPLastUpdated"},Io=["datetime"],No=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:a}=V(),n=L(()=>new Date(t.value.lastUpdated)),i=L(()=>n.value.toISOString()),c=H("");return re(()=>{$e(()=>{var d,v,g;c.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?a.value:void 0,((g=e.value.lastUpdated)==null?void 0:g.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var g;return s(),u("p",To,[te(C(((g=r(e).lastUpdated)==null?void 0:g.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},C(c.value),9,Io)])}}}),Eo=y(No,[["__scopeId","data-v-4e3c18a4"]]),it=o=>(G("data-v-34368ad2"),o=o(),q(),o),zo={key:0,class:"VPDocFooter"},Co={key:0,class:"edit-info"},Ho={key:0,class:"edit-link"},Mo=it(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Ao={key:1,class:"last-updated"},Bo={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Oo=it(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Fo={class:"pager"},Do=["innerHTML"],jo=["innerHTML"],Uo={class:"pager"},Go=["innerHTML"],qo=["innerHTML"],Ro=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:a}=V(),n=So(),i=Vo(),c=L(()=>e.value.editLink&&a.value.editLink!==!1),d=L(()=>t.value.lastUpdated),v=L(()=>c.value||d.value||i.value.prev||i.value.next);return(g,I)=>{var $,S,E,N;return v.value?(s(),u("footer",zo,[l(g.$slots,"doc-footer-before",{},void 0,!0),c.value||d.value?(s(),u("div",Co,[c.value?(s(),u("div",Ho,[b(x,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:m(()=>[Mo,te(" "+C(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(s(),u("div",Ao,[b(Eo)])):h("",!0)])):h("",!0),($=r(i).prev)!=null&&$.link||(S=r(i).next)!=null&&S.link?(s(),u("nav",Bo,[Oo,p("div",Fo,[(E=r(i).prev)!=null&&E.link?(s(),k(x,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:m(()=>{var F;return[p("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.prev)||"Previous page"},null,8,Do),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,jo)]}),_:1},8,["href"])):h("",!0)]),p("div",Uo,[(N=r(i).next)!=null&&N.link?(s(),k(x,{key:0,class:"pager-link next",href:r(i).next.link},{default:m(()=>{var F;return[p("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.next)||"Next page"},null,8,Go),p("span",{class:"title",innerHTML:r(i).next.text},null,8,qo)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Wo=y(Ro,[["__scopeId","data-v-34368ad2"]]),Ko=o=>(G("data-v-b521a168"),o=o(),q(),o),Yo={class:"container"},Jo=Ko(()=>p("div",{class:"aside-curtain"},null,-1)),Xo={class:"aside-container"},Zo={class:"aside-content"},Qo={class:"content"},xo={class:"content-container"},en={class:"main"},tn=_({__name:"VPDoc",setup(o){const{theme:e}=V(),t=me(),{hasSidebar:a,hasAside:n,leftAside:i}=oe(),c=L(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const g=ce("Content");return s(),u("div",{class:M(["VPDoc",{"has-sidebar":r(a),"has-aside":r(n)}])},[l(d.$slots,"doc-top",{},void 0,!0),p("div",Yo,[r(n)?(s(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[Jo,p("div",Xo,[p("div",Zo,[b(Po,null,{"aside-top":m(()=>[l(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":m(()=>[l(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":m(()=>[l(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[l(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[l(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[l(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",Qo,[p("div",xo,[l(d.$slots,"doc-before",{},void 0,!0),p("main",en,[b(g,{class:M(["vp-doc",[c.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(Wo,null,{"doc-footer-before":m(()=>[l(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(d.$slots,"doc-after",{},void 0,!0)])])]),l(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),on=y(tn,[["__scopeId","data-v-b521a168"]]),nn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.href&&Qe.test(e.href)),a=L(()=>e.tag||e.href?"a":"button");return(n,i)=>(s(),k(Q(a.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?r(De)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:m(()=>[te(C(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),an=y(nn,[["__scopeId","data-v-89174608"]]),sn=["src","alt"],rn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const a=ce("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,sn)):(s(),u(B,{key:1},[b(a,se({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),b(a,se({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ke=y(rn,[["__scopeId","data-v-13e6cd18"]]),ln=o=>(G("data-v-0661e2e5"),o=o(),q(),o),cn={class:"container"},un={class:"main"},dn={key:0,class:"name"},vn=["innerHTML"],mn=["innerHTML"],pn=["innerHTML"],fn={key:0,class:"actions"},hn={key:0,class:"image"},_n={class:"image-container"},gn=ln(()=>p("div",{class:"image-bg"},null,-1)),bn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=Le("hero-image-slot-exists");return(t,a)=>(s(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[p("div",cn,[p("div",un,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(s(),u("h1",dn,[p("span",{innerHTML:t.name,class:"clip"},null,8,vn)])):h("",!0),t.text?(s(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,mn)):h("",!0),t.tagline?(s(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,pn)):h("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(s(),u("div",fn,[(s(!0),u(B,null,K(t.actions,n=>(s(),u("div",{key:n.link,class:"action"},[b(an,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(s(),u("div",hn,[p("div",_n,[gn,l(t.$slots,"home-hero-image",{},()=>[t.image?(s(),k(ke,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),kn=y(bn,[["__scopeId","data-v-0661e2e5"]]),$n=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,a)=>r(e).hero?(s(),k(kn,{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":m(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":m(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":m(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":m(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":m(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),yn=o=>(G("data-v-98aa41e6"),o=o(),q(),o),Ln={class:"box"},Pn={key:0,class:"icon"},Sn=["innerHTML"],Vn=["innerHTML"],wn=["innerHTML"],Tn={key:4,class:"link-text"},In={class:"link-text-value"},Nn=yn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),En=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(s(),k(x,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:m(()=>[p("article",Ln,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",Pn,[b(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(),k(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,Sn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Vn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,wn)):h("",!0),e.linkText?(s(),u("div",Tn,[p("p",In,[te(C(e.linkText)+" ",1),Nn])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),zn=y(En,[["__scopeId","data-v-98aa41e6"]]),Cn={key:0,class:"VPFeatures"},Hn={class:"container"},Mn={class:"items"},An=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=L(()=>{const a=e.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,n)=>a.features?(s(),u("div",Cn,[p("div",Hn,[p("div",Mn,[(s(!0),u(B,null,K(a.features,i=>(s(),u("div",{key:i.title,class:M(["item",[t.value]])},[b(zn,{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)}}),Bn=y(An,[["__scopeId","data-v-178d34ad"]]),On=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,a)=>r(e).features?(s(),k(Bn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Fn=_({__name:"VPHomeContent",setup(o){const{width:e}=Et({initialWidth:0,includeScrollbar:!1});return(t,a)=>(s(),u("div",{class:"vp-doc container",style:xe(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),Dn=y(Fn,[["__scopeId","data-v-cfbc1a43"]]),jn={class:"VPHome"},Un=_({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,a)=>{const n=ce("Content");return s(),u("div",jn,[l(t.$slots,"home-hero-before",{},void 0,!0),b($n,null,{"home-hero-info-before":m(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),b(On),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(s(),k(Dn,{key:0},{default:m(()=>[b(n)]),_:1})):(s(),k(n,{key:1}))])}}}),Gn=y(Un,[["__scopeId","data-v-fd2ffb77"]]),qn={},Rn={class:"VPPage"};function Wn(o,e){const t=ce("Content");return s(),u("div",Rn,[l(o.$slots,"page-top"),b(t),l(o.$slots,"page-bottom")])}const Kn=y(qn,[["render",Wn]]),Yn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:a}=oe();return(n,i)=>(s(),u("div",{class:M(["VPContent",{"has-sidebar":r(a),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[b(to)],!0):r(t).layout==="page"?(s(),k(Kn,{key:1},{"page-top":m(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":m(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(s(),k(Gn,{key:2},{"home-hero-before":m(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":m(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":m(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":m(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":m(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(s(),k(Q(r(t).layout),{key:3})):(s(),k(on,{key:4},{"doc-top":m(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":m(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":m(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":m(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":m(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":m(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":m(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":m(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Jn=y(Yn,[["__scopeId","data-v-cb0805a1"]]),Xn={class:"container"},Zn=["innerHTML"],Qn=["innerHTML"],xn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:a}=oe();return(n,i)=>r(e).footer&&r(t).footer!==!1?(s(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(a)}])},[p("div",Xn,[r(e).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Zn)):h("",!0),r(e).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Qn)):h("",!0)])],2)):h("",!0)}}),ea=y(xn,[["__scopeId","data-v-c01e8608"]]);function ta(){const{theme:o,frontmatter:e}=V(),t=Ze([]),a=L(()=>t.value.length>0);return ye(()=>{t.value=je(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:a}}const oa=o=>(G("data-v-f9d4ca59"),o=o(),q(),o),na={class:"menu-text"},aa=oa(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),sa={class:"header"},ra={class:"outline"},ia=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),a=H(!1),n=H(0),i=H(),c=H();function d($){var S;(S=i.value)!=null&&S.contains($.target)||(a.value=!1)}ee(a,$=>{if($){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ze("Escape",()=>{a.value=!1}),ye(()=>{a.value=!1});function v(){a.value=!a.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g($){$.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),et(()=>{a.value=!1}))}function I(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return($,S)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:xe({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[$.headers.length>0?(s(),u("button",{key:0,onClick:v,class:M({open:a.value})},[p("span",na,C(r(st)(r(t))),1),aa],2)):(s(),u("button",{key:1,onClick:I},C(r(t).returnToTopLabel||"Return to top"),1)),b(Ae,{name:"flyout"},{default:m(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:g},[p("div",sa,[p("a",{class:"top-link",href:"#",onClick:I},C(r(t).returnToTopLabel||"Return to top"),1)]),p("div",ra,[b(rt,{headers:$.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),la=y(ia,[["__scopeId","data-v-f9d4ca59"]]),ca=o=>(G("data-v-4b826de3"),o=o(),q(),o),ua={class:"container"},da=["aria-expanded"],va=ca(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),ma={class:"menu-text"},pa=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:a}=oe(),{headers:n}=ta(),{y:i}=tt(),c=H(0);re(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ye(()=>{n.value=je(t.value.outline??e.value.outline)});const d=L(()=>n.value.length===0),v=L(()=>d.value&&!a.value),g=L(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:d.value,fixed:v.value}));return(I,$)=>r(t).layout!=="home"&&(!v.value||r(i)>=c.value)?(s(),u("div",{key:0,class:M(g.value)},[p("div",ua,[r(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":I.open,"aria-controls":"VPSidebarNav",onClick:$[0]||($[0]=S=>I.$emit("open-menu"))},[va,p("span",ma,C(r(e).sidebarMenuLabel||"Menu"),1)],8,da)):h("",!0),b(la,{headers:r(n),navHeight:c.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),fa=y(pa,[["__scopeId","data-v-4b826de3"]]);function ha(){const o=H(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function a(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=me();return ee(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:a}}const _a={},ga={class:"VPSwitch",type:"button",role:"switch"},ba={class:"check"},ka={key:0,class:"icon"};function $a(o,e){return s(),u("button",ga,[p("span",ba,[o.$slots.default?(s(),u("span",ka,[l(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const ya=y(_a,[["render",$a],["__scopeId","data-v-c5a026db"]]),lt=o=>(G("data-v-5e81030c"),o=o(),q(),o),La=lt(()=>p("span",{class:"vpi-sun sun"},null,-1)),Pa=lt(()=>p("span",{class:"vpi-moon moon"},null,-1)),Sa=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),a=Le("toggle-appearance",()=>{e.value=!e.value}),n=H("");return Fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,c)=>(s(),k(ya,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(a)},{default:m(()=>[La,Pa]),_:1},8,["title","aria-checked","onClick"]))}}),Ue=y(Sa,[["__scopeId","data-v-5e81030c"]]),Va={key:0,class:"VPNavBarAppearance"},wa=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,a)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",Va,[b(Ue)])):h("",!0)}}),Ta=y(wa,[["__scopeId","data-v-830f4e0c"]]),Ge=H();let ct=!1,Ne=0;function Ia(o){const e=H(!1);if(Pe){!ct&&Na(),Ne++;const t=ee(Ge,a=>{var n,i,c;a===o.el.value||(n=o.el.value)!=null&&n.contains(a)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(c=o.onBlur)==null||c.call(o))});Oe(()=>{t(),Ne--,Ne||Ea()})}return zt(e)}function Na(){document.addEventListener("focusin",ut),ct=!0,Ge.value=document.activeElement}function Ea(){document.removeEventListener("focusin",ut)}function ut(){Ge.value=document.activeElement}const za={class:"VPMenuLink"},Ca=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,a)=>(s(),u("div",za,[b(x,{class:M({active:r(le)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:m(()=>[te(C(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),Se=y(Ca,[["__scopeId","data-v-47efe451"]]),Ha={class:"VPMenuGroup"},Ma={key:0,class:"title"},Aa=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",Ha,[e.text?(s(),u("p",Ma,C(e.text),1)):h("",!0),(s(!0),u(B,null,K(e.items,a=>(s(),u(B,null,["link"in a?(s(),k(Se,{key:0,item:a},null,8,["item"])):h("",!0)],64))),256))]))}}),Ba=y(Aa,[["__scopeId","data-v-dd99de09"]]),Oa={class:"VPMenu"},Fa={key:0,class:"items"},Da=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(s(),u("div",Oa,[e.items?(s(),u("div",Fa,[(s(!0),u(B,null,K(e.items,a=>(s(),u(B,{key:JSON.stringify(a)},["link"in a?(s(),k(Se,{key:0,item:a},null,8,["item"])):"component"in a?(s(),k(Q(a.component),se({key:1,ref_for:!0},a.props),null,16)):(s(),k(Ba,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),ja=y(Da,[["__scopeId","data-v-0007c525"]]),Ua=o=>(G("data-v-11ef3b07"),o=o(),q(),o),Ga=["aria-expanded","aria-label"],qa={key:0,class:"text"},Ra=["innerHTML"],Wa=Ua(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),Ka={key:1,class:"vpi-more-horizontal icon"},Ya={class:"menu"},Ja=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=H(!1),t=H();Ia({el:t,onBlur:a});function a(){e.value=!1}return(n,i)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=c=>e.value=!0),onMouseleave:i[2]||(i[2]=c=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=c=>e.value=!e.value)},[n.button||n.icon?(s(),u("span",qa,[n.icon?(s(),u("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(s(),u("span",{key:1,innerHTML:n.button},null,8,Ra)):h("",!0),Wa])):(s(),u("span",Ka))],8,Ga),p("div",Ya,[b(ja,{items:n.items},{default:m(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),qe=y(Ja,[["__scopeId","data-v-11ef3b07"]]),Xa=["href","aria-label","innerHTML"],Za=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=L(()=>typeof e.icon=="object"?e.icon.svg:``);return(a,n)=>(s(),u("a",{class:"VPSocialLink no-icon",href:a.link,"aria-label":a.ariaLabel??(typeof a.icon=="string"?a.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Xa))}}),Qa=y(Za,[["__scopeId","data-v-116c6058"]]),xa={class:"VPSocialLinks"},es=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(s(),u("div",xa,[(s(!0),u(B,null,K(e.links,({link:a,icon:n,ariaLabel:i})=>(s(),k(Qa,{key:a,icon:n,link:a,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=y(es,[["__scopeId","data-v-e883f8d0"]]),ts={key:0,class:"group translations"},os={class:"trans-title"},ns={key:1,class:"group"},as={class:"item appearance"},ss={class:"label"},rs={class:"appearance-action"},is={key:2,class:"group"},ls={class:"item social-links"},cs=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:a,currentLang:n}=pe({correspondingLink:!0}),i=L(()=>a.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(c,d)=>i.value?(s(),k(qe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:m(()=>[r(a).length&&r(n).label?(s(),u("div",ts,[p("p",os,C(r(n).label),1),(s(!0),u(B,null,K(r(a),v=>(s(),k(Se,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",ns,[p("div",as,[p("p",ss,C(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",rs,[b(Ue)])])])):h("",!0),r(t).socialLinks?(s(),u("div",is,[p("div",ls,[b(Re,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),us=y(cs,[["__scopeId","data-v-f78a1889"]]),ds=o=>(G("data-v-7ec5116e"),o=o(),q(),o),vs=["aria-expanded"],ms=ds(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),ps=[ms],fs=_({__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]=a=>e.$emit("click"))},ps,10,vs))}}),hs=y(fs,[["__scopeId","data-v-7ec5116e"]]),_s=["innerHTML"],gs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,a)=>(s(),k(x,{class:M({VPNavBarMenuLink:!0,active:r(le)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:m(()=>[p("span",{innerHTML:t.item.text},null,8,_s)]),_:1},8,["class","href","noIcon","target","rel"]))}}),bs=y(gs,[["__scopeId","data-v-6589ed1c"]]),ks=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),a=i=>"component"in i?!1:"link"in i?le(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(a),n=L(()=>a(e.item));return(i,c)=>(s(),k(qe,{class:M({VPNavBarMenuGroup:!0,active:r(le)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),$s=o=>(G("data-v-46876648"),o=o(),q(),o),ys={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ls=$s(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Ps=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,a)=>r(e).nav?(s(),u("nav",ys,[Ls,(s(!0),u(B,null,K(r(e).nav,n=>(s(),u(B,{key:JSON.stringify(n)},["link"in n?(s(),k(bs,{key:0,item:n},null,8,["item"])):"component"in n?(s(),k(Q(n.component),se({key:1,ref_for:!0},n.props),null,16)):(s(),k(ks,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),Ss=y(Ps,[["__scopeId","data-v-46876648"]]);function Vs(o){const{localeIndex:e,theme:t}=V();function a(n){var N,F,z;const i=n.split("."),c=(N=t.value.search)==null?void 0:N.options,d=c&&typeof c=="object",v=d&&((z=(F=c.locales)==null?void 0:F[e.value])==null?void 0:z.translations)||null,g=d&&c.translations||null;let I=v,$=g,S=o;const E=i.pop();for(const J of i){let X=null;const D=S==null?void 0:S[J];D&&(X=S=D);const ne=$==null?void 0:$[J];ne&&(X=$=ne);const Z=I==null?void 0:I[J];Z&&(X=I=Z),D||(S=X),ne||($=X),Z||(I=X)}return(I==null?void 0:I[E])??($==null?void 0:$[E])??(S==null?void 0:S[E])??""}return a}const ws=["aria-label"],Ts={class:"DocSearch-Button-Container"},Is=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Ns={class:"DocSearch-Button-Placeholder"},Es=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ye=_({__name:"VPNavBarSearchButton",setup(o){const t=Vs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,n)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Ts,[Is,p("span",Ns,C(r(t)("button.buttonText")),1)]),Es],8,ws))}}),zs={class:"VPNavBarSearch"},Cs={id:"local-search"},Hs={key:1,id:"docsearch"},Ms=_({__name:"VPNavBarSearch",setup(o){const e=Ct(()=>Ht(()=>import("./VPLocalSearchBox.a2Mj6NA7.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:a}=V(),n=H(!1),i=H(!1);re(()=>{});function c(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const $=new Event("keydown");$.key="k",$.metaKey=!0,window.dispatchEvent($),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v($){const S=$.target,E=S.tagName;return S.isContentEditable||E==="INPUT"||E==="SELECT"||E==="TEXTAREA"}const g=H(!1);ze("k",$=>{($.ctrlKey||$.metaKey)&&($.preventDefault(),g.value=!0)}),ze("/",$=>{v($)||($.preventDefault(),g.value=!0)});const I="local";return($,S)=>{var E;return s(),u("div",zs,[r(I)==="local"?(s(),u(B,{key:0},[g.value?(s(),k(r(e),{key:0,onClose:S[0]||(S[0]=N=>g.value=!1)})):h("",!0),p("div",Cs,[b(Ye,{onClick:S[1]||(S[1]=N=>g.value=!0)})])],64)):r(I)==="algolia"?(s(),u(B,{key:1},[n.value?(s(),k(r(t),{key:0,algolia:((E=r(a).search)==null?void 0:E.options)??r(a).algolia,onVnodeBeforeMount:S[2]||(S[2]=N=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(s(),u("div",Hs,[b(Ye,{onClick:c})]))],64)):h("",!0)])}}}),As=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,a)=>r(e).socialLinks?(s(),k(Re,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Bs=y(As,[["__scopeId","data-v-6a13576c"]]),Os=["href","rel","target"],Fs={key:1},Ds={key:2},js=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:a}=oe(),{currentLang:n}=pe(),i=L(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),c=L(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=L(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,g)=>(s(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(a)}])},[p("a",{class:"title",href:i.value??r(De)(r(n).link),rel:c.value,target:d.value},[l(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(s(),k(ke,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(s(),u("span",Fs,C(r(t).siteTitle),1)):r(t).siteTitle===void 0?(s(),u("span",Ds,C(r(e).title),1)):h("",!0),l(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Os)],2))}}),Us=y(js,[["__scopeId","data-v-ff17a4ae"]]),Gs={class:"items"},qs={class:"title"},Rs=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:a}=pe({correspondingLink:!0});return(n,i)=>r(t).length&&r(a).label?(s(),k(qe,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:m(()=>[p("div",Gs,[p("p",qs,C(r(a).label),1),(s(!0),u(B,null,K(r(t),c=>(s(),k(Se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Ws=y(Rs,[["__scopeId","data-v-540bc5e8"]]),Ks=o=>(G("data-v-3fed1b83"),o=o(),q(),o),Ys={class:"wrapper"},Js={class:"container"},Xs={class:"title"},Zs={class:"content"},Qs={class:"content-body"},xs=Ks(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),er=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=tt(),{hasSidebar:a}=oe(),{frontmatter:n}=V(),i=H({});return Fe(()=>{i.value={"has-sidebar":a.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(c,d)=>(s(),u("div",{class:M(["VPNavBar",i.value])},[p("div",Ys,[p("div",Js,[p("div",Xs,[b(Us,null,{"nav-bar-title-before":m(()=>[l(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[l(c.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Zs,[p("div",Qs,[l(c.$slots,"nav-bar-content-before",{},void 0,!0),b(Ms,{class:"search"}),b(Ss,{class:"menu"}),b(Ws,{class:"translations"}),b(Ta,{class:"appearance"}),b(Bs,{class:"social-links"}),b(us,{class:"extra"}),l(c.$slots,"nav-bar-content-after",{},void 0,!0),b(hs,{class:"hamburger",active:c.isScreenOpen,onClick:d[0]||(d[0]=v=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),xs],2))}}),tr=y(er,[["__scopeId","data-v-3fed1b83"]]),or={key:0,class:"VPNavScreenAppearance"},nr={class:"text"},ar=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(a,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",or,[p("p",nr,C(r(t).darkModeSwitchLabel||"Appearance"),1),b(Ue)])):h("",!0)}}),sr=y(ar,[["__scopeId","data-v-0ceafb5f"]]),rr=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,a)=>(s(),k(x,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ir=y(rr,[["__scopeId","data-v-8abda8b8"]]),lr=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,a)=>(s(),k(x,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:m(()=>[te(C(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),dt=y(lr,[["__scopeId","data-v-ae02dd03"]]),cr={class:"VPNavScreenMenuGroupSection"},ur={key:0,class:"title"},dr=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",cr,[e.text?(s(),u("p",ur,C(e.text),1)):h("",!0),(s(!0),u(B,null,K(e.items,a=>(s(),k(dt,{key:a.text,item:a},null,8,["item"]))),128))]))}}),vr=y(dr,[["__scopeId","data-v-dea7123a"]]),mr=o=>(G("data-v-f76bdb19"),o=o(),q(),o),pr=["aria-controls","aria-expanded"],fr=["innerHTML"],hr=mr(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),_r=["id"],gr={key:0,class:"item"},br={key:1,class:"item"},kr={key:2,class:"group"},$r=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=H(!1),a=L(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,c)=>(s(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":a.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,fr),hr],8,pr),p("div",{id:a.value,class:"items"},[(s(!0),u(B,null,K(i.items,d=>(s(),u(B,{key:JSON.stringify(d)},["link"in d?(s(),u("div",gr,[b(dt,{item:d},null,8,["item"])])):"component"in d?(s(),u("div",br,[(s(),k(Q(d.component),se({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(s(),u("div",kr,[b(vr,{items:d.items},null,8,["items"])]))],64))),128))],8,_r)],2))}}),yr=y($r,[["__scopeId","data-v-f76bdb19"]]),Lr={key:0,class:"VPNavScreenMenu"},Pr=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,a)=>r(e).nav?(s(),u("nav",Lr,[(s(!0),u(B,null,K(r(e).nav,n=>(s(),u(B,{key:JSON.stringify(n)},["link"in n?(s(),k(ir,{key:0,item:n},null,8,["item"])):"component"in n?(s(),k(Q(n.component),se({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(s(),k(yr,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Sr=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,a)=>r(e).socialLinks?(s(),k(Re,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),vt=o=>(G("data-v-eaa0f43e"),o=o(),q(),o),Vr=vt(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),wr=vt(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Tr={class:"list"},Ir=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=pe({correspondingLink:!0}),a=H(!1);function n(){a.value=!a.value}return(i,c)=>r(e).length&&r(t).label?(s(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:a.value}])},[p("button",{class:"title",onClick:n},[Vr,te(" "+C(r(t).label)+" ",1),wr]),p("ul",Tr,[(s(!0),u(B,null,K(r(e),d=>(s(),u("li",{key:d.link,class:"item"},[b(x,{class:"link",href:d.link},{default:m(()=>[te(C(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),Nr=y(Ir,[["__scopeId","data-v-eaa0f43e"]]),Er={class:"container"},zr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=H(null),t=ot(Pe?document.body:null);return(a,n)=>(s(),k(Ae,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:m(()=>[a.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",Er,[l(a.$slots,"nav-screen-content-before",{},void 0,!0),b(Pr,{class:"menu"}),b(Nr,{class:"translations"}),b(sr,{class:"appearance"}),b(Sr,{class:"social-links"}),l(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),Cr=y(zr,[["__scopeId","data-v-334bb4cd"]]),Hr={key:0,class:"VPNav"},Mr=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:a}=ha(),{frontmatter:n}=V(),i=L(()=>n.value.navbar!==!1);return nt("close-screen",t),$e(()=>{Pe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(c,d)=>i.value?(s(),u("header",Hr,[b(tr,{"is-screen-open":r(e),onToggleScreen:r(a)},{"nav-bar-title-before":m(()=>[l(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[l(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":m(()=>[l(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":m(()=>[l(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(Cr,{open:r(e)},{"nav-screen-content-before":m(()=>[l(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":m(()=>[l(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Ar=y(Mr,[["__scopeId","data-v-a6f969fc"]]),mt=o=>(G("data-v-a9de9e44"),o=o(),q(),o),Br=["role","tabindex"],Or=mt(()=>p("div",{class:"indicator"},null,-1)),Fr=mt(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Dr=[Fr],jr={key:1,class:"items"},Ur=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:a,isLink:n,isActiveLink:i,hasActiveLink:c,hasChildren:d,toggle:v}=so(L(()=>e.item)),g=L(()=>d.value?"section":"div"),I=L(()=>n.value?"a":"div"),$=L(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),S=L(()=>n.value?void 0:"button"),E=L(()=>[[`level-${e.depth}`],{collapsible:a.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":c.value}]);function N(z){"key"in z&&z.key!=="Enter"||!e.item.link&&v()}function F(){e.item.link&&v()}return(z,J)=>{const X=ce("VPSidebarItem",!0);return s(),k(Q(g.value),{class:M(["VPSidebarItem",E.value])},{default:m(()=>[z.item.text?(s(),u("div",se({key:0,class:"item",role:S.value},At(z.item.items?{click:N,keydown:N}:{},!0),{tabindex:z.item.items&&0}),[Or,z.item.link?(s(),k(x,{key:0,tag:I.value,class:"link",href:z.item.link,rel:z.item.rel,target:z.item.target},{default:m(()=>[(s(),k(Q($.value),{class:"text",innerHTML:z.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),k(Q($.value),{key:1,class:"text",innerHTML:z.item.text},null,8,["innerHTML"])),z.item.collapsed!=null&&z.item.items&&z.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:F,onKeydown:Mt(F,["enter"]),tabindex:"0"},Dr,32)):h("",!0)],16,Br)):h("",!0),z.item.items&&z.item.items.length?(s(),u("div",jr,[z.depth<5?(s(!0),u(B,{key:0},K(z.item.items,D=>(s(),k(X,{key:D.text,item:D,depth:z.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Gr=y(Ur,[["__scopeId","data-v-a9de9e44"]]),qr=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=H(!0);let t=null;return re(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Bt(()=>{t!=null&&(clearTimeout(t),t=null)}),(a,n)=>(s(!0),u(B,null,K(a.items,i=>(s(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[b(Gr,{item:i,depth:0},null,8,["item"])],2))),128))}}),Rr=y(qr,[["__scopeId","data-v-9c4bd70d"]]),pt=o=>(G("data-v-e024fac9"),o=o(),q(),o),Wr=pt(()=>p("div",{class:"curtain"},null,-1)),Kr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Yr=pt(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Jr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=oe(),a=o,n=H(null),i=ot(Pe?document.body:null);ee([a,n],()=>{var d;a.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const c=H(0);return ee(e,()=>{c.value+=1},{deep:!0}),(d,v)=>r(t)?(s(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=Ot(()=>{},["stop"]))},[Wr,p("nav",Kr,[Yr,l(d.$slots,"sidebar-nav-before",{},void 0,!0),(s(),k(Rr,{items:r(e),key:c.value},null,8,["items"])),l(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Xr=y(Jr,[["__scopeId","data-v-e024fac9"]]),Zr=_({__name:"VPSkipLink",setup(o){const e=me(),t=H();ee(()=>e.path,()=>t.value.focus());function a({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const c=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",c)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",c),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(s(),u(B,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a}," Skip to content ")],64))}}),Qr=y(Zr,[["__scopeId","data-v-497b75be"]]),xr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:a}=oe(),n=me();ee(()=>n.path,a),ao(e,a);const{frontmatter:i}=V(),c=Ft(),d=L(()=>!!c["home-hero-image"]);return nt("hero-image-slot-exists",d),(v,g)=>{const I=ce("Content");return r(i).layout!==!1?(s(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[l(v.$slots,"layout-top",{},void 0,!0),b(Qr),b(Gt,{class:"backdrop",show:r(e),onClick:r(a)},null,8,["show","onClick"]),b(Ar,null,{"nav-bar-title-before":m(()=>[l(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[l(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":m(()=>[l(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":m(()=>[l(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":m(()=>[l(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":m(()=>[l(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(fa,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),b(Xr,{open:r(e)},{"sidebar-nav-before":m(()=>[l(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":m(()=>[l(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(Jn,null,{"page-top":m(()=>[l(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":m(()=>[l(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":m(()=>[l(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":m(()=>[l(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":m(()=>[l(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[l(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[l(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[l(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[l(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":m(()=>[l(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":m(()=>[l(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":m(()=>[l(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":m(()=>[l(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":m(()=>[l(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":m(()=>[l(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":m(()=>[l(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":m(()=>[l(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":m(()=>[l(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":m(()=>[l(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":m(()=>[l(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[l(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[l(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[l(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(ea),l(v.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),k(I,{key:1}))}}}),ei=y(xr,[["__scopeId","data-v-0dd53a6c"]]),ti={Layout:ei,enhanceApp:({app:o})=>{o.component("Badge",Dt)}};/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var ie=Object.assign||function(o){for(var e=1;ei.map(i=>d[i]); +import{d as _,o as s,c as u,r as l,n as M,a as te,t as C,b as k,w as m,e as h,T as Ae,_ as y,u as Vt,i as wt,f as Tt,g as Be,h as L,j as p,k as r,p as G,l as q,m as le,q as Ee,s as H,v as ee,x as $e,y as re,z as Oe,A as Fe,B as It,C as Nt,D as ce,F as B,E as K,G as Ze,H as ye,I as b,J as Q,K as Qe,L as me,M as se,N as Le,O as Et,P as xe,Q as ze,R as et,S as tt,U as Pe,V as zt,W as Ct,X as Ht,Y as ot,Z as nt,$ as Mt,a0 as At,a1 as Bt,a2 as Ot,a3 as Ft}from"./framework.DkvLLw5I.js";const Dt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(s(),u("span",{class:M(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[te(C(e.text),1)])],2))}}),jt={key:0,class:"VPBackdrop"},Ut=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(s(),k(Ae,{name:"fade"},{default:m(()=>[e.show?(s(),u("div",jt)):h("",!0)]),_:1}))}}),Gt=y(Ut,[["__scopeId","data-v-ee4f8a0b"]]),V=Vt;function qt(o,e){let t,a=!1;return()=>{t&&clearTimeout(t),a?t=setTimeout(o,e):(o(),(a=!0)&&setTimeout(()=>a=!1,e))}}function Ce(o){return/^\//.test(o)?o:`/${o}`}function De(o){const{pathname:e,search:t,hash:a,protocol:n}=new URL(o,"http://a.com");if(wt(o)||o.startsWith("#")||!n.startsWith("http")||!Tt(e))return o;const{site:i}=V(),c=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${a}`);return Be(c)}function pe({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:a,theme:n,hash:i}=V(),c=L(()=>{var v,g;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:L(()=>Object.entries(e.value.locales).flatMap(([v,g])=>c.value.label===g.label?[]:{text:g.label,link:Rt(g.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&o,a.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:c}}function Rt(o,e,t,a){return e?o.replace(/\/$/,"")+Ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):o}const Wt=o=>(G("data-v-25b3c91b"),o=o(),q(),o),Kt={class:"NotFound"},Yt={class:"code"},Jt={class:"title"},Xt=Wt(()=>p("div",{class:"divider"},null,-1)),Zt={class:"quote"},Qt={class:"action"},xt=["href","aria-label"],eo=_({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=pe();return(a,n)=>{var i,c,d,v,g;return s(),u("div",Kt,[p("p",Yt,C(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",Jt,C(((c=r(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),Xt,p("blockquote",Zt,C(((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),p("div",Qt,[p("a",{class:"link",href:r(Be)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},C(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,xt)])])}}}),to=y(eo,[["__scopeId","data-v-25b3c91b"]]);function at(o,e){if(Array.isArray(o))return ge(o);if(o==null)return[];e=Ce(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(Ce(n))),a=t?o[t]:[];return Array.isArray(a)?ge(a):ge(a.items,a.base)}function oo(o){const e=[];let t=0;for(const a in o){const n=o[a];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function no(o){const e=[];function t(a){for(const n of a)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function He(o,e){return Array.isArray(e)?e.some(t=>He(o,t)):le(o,e.link)?!0:e.items?He(o,e.items):!1}function ge(o,e){return[...o].map(t=>{const a={...t},n=a.base||e;return n&&a.link&&(a.link=n+a.link),a.items&&(a.items=ge(a.items,n)),a})}function oe(){const{frontmatter:o,page:e,theme:t}=V(),a=Ee("(min-width: 960px)"),n=H(!1),i=L(()=>{const F=t.value.sidebar,z=e.value.relativePath;return F?at(F,z):[]}),c=H(i.value);ee(i,(F,z)=>{JSON.stringify(F)!==JSON.stringify(z)&&(c.value=i.value)});const d=L(()=>o.value.sidebar!==!1&&c.value.length>0&&o.value.layout!=="home"),v=L(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=L(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),I=L(()=>d.value&&a.value),$=L(()=>d.value?oo(c.value):[]);function S(){n.value=!0}function E(){n.value=!1}function N(){n.value?E():S()}return{isOpen:n,sidebar:c,sidebarGroups:$,hasSidebar:d,hasAside:g,leftAside:v,isSidebarEnabled:I,open:S,close:E,toggle:N}}function ao(o,e){let t;$e(()=>{t=o.value?document.activeElement:void 0}),re(()=>{window.addEventListener("keyup",a)}),Oe(()=>{window.removeEventListener("keyup",a)});function a(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function so(o){const{page:e,hash:t}=V(),a=H(!1),n=L(()=>o.value.collapsed!=null),i=L(()=>!!o.value.link),c=H(!1),d=()=>{c.value=le(e.value.relativePath,o.value.link)};ee([e,o,t],d),re(d);const v=L(()=>c.value?!0:o.value.items?He(e.value.relativePath,o.value.items):!1),g=L(()=>!!(o.value.items&&o.value.items.length));$e(()=>{a.value=!!(n.value&&o.value.collapsed)}),Fe(()=>{(c.value||v.value)&&(a.value=!1)});function I(){n.value&&(a.value=!a.value)}return{collapsed:a,collapsible:n,isLink:i,isActiveLink:c,hasActiveLink:v,hasChildren:g,toggle:I}}function ro(){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 Me=[];function st(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function je(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const a=Number(t.tagName[1]);return{element:t,title:io(t),link:"#"+t.id,level:a}});return lo(e,o)}function io(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function lo(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[a,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(c=>c.level>=a&&c.level<=n),Me.length=0;for(const{element:c,link:d}of o)Me.push({element:c,link:d});const i=[];e:for(let c=0;c=0;v--){const g=o[v];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",a)}),It(()=>{c(location.hash)}),Oe(()=>{window.removeEventListener("scroll",a)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,g=document.body.offsetHeight,I=Math.abs(d+v-g)<1,$=Me.map(({element:E,link:N})=>({link:N,top:uo(E)})).filter(({top:E})=>!Number.isNaN(E)).sort((E,N)=>E.top-N.top);if(!$.length){c(null);return}if(d<1){c(null);return}if(I){c($[$.length-1].link);return}let S=null;for(const{link:E,top:N}of $){if(N>d+Nt()+4)break;S=E}c(S)}function c(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function uo(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const vo=["href","title"],mo=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const a=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(a));n==null||n.focus({preventScroll:!0})}return(t,a)=>{const n=ce("VPDocOutlineItem",!0);return s(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(s(!0),u(B,null,K(t.headers,({children:i,link:c,title:d})=>(s(),u("li",null,[p("a",{class:"outline-link",href:c,onClick:e,title:d},C(d),9,vo),i!=null&&i.length?(s(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),rt=y(mo,[["__scopeId","data-v-a53304d2"]]),po={class:"content"},fo={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},ho=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),a=Ze([]);ye(()=>{a.value=je(e.value.outline??t.value.outline)});const n=H(),i=H();return co(n,i),(c,d)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:n},[p("div",po,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",fo,C(r(st)(r(t))),1),b(rt,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),_o=y(ho,[["__scopeId","data-v-e9242aa7"]]),go={class:"VPDocAsideCarbonAds"},bo=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,a)=>(s(),u("div",go,[b(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),ko=o=>(G("data-v-4ef74901"),o=o(),q(),o),$o={class:"VPDocAside"},yo=ko(()=>p("div",{class:"spacer"},null,-1)),Lo=_({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,a)=>(s(),u("div",$o,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),b(_o),l(t.$slots,"aside-outline-after",{},void 0,!0),yo,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(s(),k(bo,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Po=y(Lo,[["__scopeId","data-v-4ef74901"]]);function So(){const{theme:o,page:e}=V();return L(()=>{const{text:t="Edit this page",pattern:a=""}=o.value.editLink||{};let n;return typeof a=="function"?n=a(e.value):n=a.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Vo(){const{page:o,theme:e,frontmatter:t}=V();return L(()=>{var g,I,$,S,E,N,F,z;const a=at(e.value.sidebar,o.value.relativePath),n=no(a),i=wo(n,J=>J.link.replace(/[?#].*$/,"")),c=i.findIndex(J=>le(o.value.relativePath,J.link)),d=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((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)??(($=i[c-1])==null?void 0:$.docFooterText)??((S=i[c-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((E=i[c-1])==null?void 0:E.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((N=i[c+1])==null?void 0:N.docFooterText)??((F=i[c+1])==null?void 0:F.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((z=i[c+1])==null?void 0:z.link)}}})}function wo(o,e){const t=new Set;return o.filter(a=>{const n=e(a);return t.has(n)?!1:t.add(n)})}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")),a=L(()=>e.href&&Qe.test(e.href)||e.target==="_blank");return(n,i)=>(s(),k(Q(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":a.value,"no-icon":n.noIcon}]),href:n.href?r(De)(n.href):void 0,target:n.target??(a.value?"_blank":void 0),rel:n.rel??(a.value?"noreferrer":void 0)},{default:m(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),To={class:"VPLastUpdated"},Io=["datetime"],No=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:a}=V(),n=L(()=>new Date(t.value.lastUpdated)),i=L(()=>n.value.toISOString()),c=H("");return re(()=>{$e(()=>{var d,v,g;c.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?a.value:void 0,((g=e.value.lastUpdated)==null?void 0:g.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var g;return s(),u("p",To,[te(C(((g=r(e).lastUpdated)==null?void 0:g.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},C(c.value),9,Io)])}}}),Eo=y(No,[["__scopeId","data-v-4e3c18a4"]]),it=o=>(G("data-v-34368ad2"),o=o(),q(),o),zo={key:0,class:"VPDocFooter"},Co={key:0,class:"edit-info"},Ho={key:0,class:"edit-link"},Mo=it(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Ao={key:1,class:"last-updated"},Bo={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Oo=it(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Fo={class:"pager"},Do=["innerHTML"],jo=["innerHTML"],Uo={class:"pager"},Go=["innerHTML"],qo=["innerHTML"],Ro=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:a}=V(),n=So(),i=Vo(),c=L(()=>e.value.editLink&&a.value.editLink!==!1),d=L(()=>t.value.lastUpdated),v=L(()=>c.value||d.value||i.value.prev||i.value.next);return(g,I)=>{var $,S,E,N;return v.value?(s(),u("footer",zo,[l(g.$slots,"doc-footer-before",{},void 0,!0),c.value||d.value?(s(),u("div",Co,[c.value?(s(),u("div",Ho,[b(x,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:m(()=>[Mo,te(" "+C(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(s(),u("div",Ao,[b(Eo)])):h("",!0)])):h("",!0),($=r(i).prev)!=null&&$.link||(S=r(i).next)!=null&&S.link?(s(),u("nav",Bo,[Oo,p("div",Fo,[(E=r(i).prev)!=null&&E.link?(s(),k(x,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:m(()=>{var F;return[p("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.prev)||"Previous page"},null,8,Do),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,jo)]}),_:1},8,["href"])):h("",!0)]),p("div",Uo,[(N=r(i).next)!=null&&N.link?(s(),k(x,{key:0,class:"pager-link next",href:r(i).next.link},{default:m(()=>{var F;return[p("span",{class:"desc",innerHTML:((F=r(e).docFooter)==null?void 0:F.next)||"Next page"},null,8,Go),p("span",{class:"title",innerHTML:r(i).next.text},null,8,qo)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Wo=y(Ro,[["__scopeId","data-v-34368ad2"]]),Ko=o=>(G("data-v-b521a168"),o=o(),q(),o),Yo={class:"container"},Jo=Ko(()=>p("div",{class:"aside-curtain"},null,-1)),Xo={class:"aside-container"},Zo={class:"aside-content"},Qo={class:"content"},xo={class:"content-container"},en={class:"main"},tn=_({__name:"VPDoc",setup(o){const{theme:e}=V(),t=me(),{hasSidebar:a,hasAside:n,leftAside:i}=oe(),c=L(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const g=ce("Content");return s(),u("div",{class:M(["VPDoc",{"has-sidebar":r(a),"has-aside":r(n)}])},[l(d.$slots,"doc-top",{},void 0,!0),p("div",Yo,[r(n)?(s(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[Jo,p("div",Xo,[p("div",Zo,[b(Po,null,{"aside-top":m(()=>[l(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":m(()=>[l(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":m(()=>[l(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[l(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[l(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[l(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",Qo,[p("div",xo,[l(d.$slots,"doc-before",{},void 0,!0),p("main",en,[b(g,{class:M(["vp-doc",[c.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(Wo,null,{"doc-footer-before":m(()=>[l(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(d.$slots,"doc-after",{},void 0,!0)])])]),l(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),on=y(tn,[["__scopeId","data-v-b521a168"]]),nn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.href&&Qe.test(e.href)),a=L(()=>e.tag||e.href?"a":"button");return(n,i)=>(s(),k(Q(a.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?r(De)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:m(()=>[te(C(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),an=y(nn,[["__scopeId","data-v-89174608"]]),sn=["src","alt"],rn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const a=ce("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,sn)):(s(),u(B,{key:1},[b(a,se({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),b(a,se({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ke=y(rn,[["__scopeId","data-v-13e6cd18"]]),ln=o=>(G("data-v-0661e2e5"),o=o(),q(),o),cn={class:"container"},un={class:"main"},dn={key:0,class:"name"},vn=["innerHTML"],mn=["innerHTML"],pn=["innerHTML"],fn={key:0,class:"actions"},hn={key:0,class:"image"},_n={class:"image-container"},gn=ln(()=>p("div",{class:"image-bg"},null,-1)),bn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=Le("hero-image-slot-exists");return(t,a)=>(s(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[p("div",cn,[p("div",un,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(s(),u("h1",dn,[p("span",{innerHTML:t.name,class:"clip"},null,8,vn)])):h("",!0),t.text?(s(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,mn)):h("",!0),t.tagline?(s(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,pn)):h("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(s(),u("div",fn,[(s(!0),u(B,null,K(t.actions,n=>(s(),u("div",{key:n.link,class:"action"},[b(an,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(s(),u("div",hn,[p("div",_n,[gn,l(t.$slots,"home-hero-image",{},()=>[t.image?(s(),k(ke,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),kn=y(bn,[["__scopeId","data-v-0661e2e5"]]),$n=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,a)=>r(e).hero?(s(),k(kn,{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":m(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":m(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":m(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":m(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":m(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),yn=o=>(G("data-v-98aa41e6"),o=o(),q(),o),Ln={class:"box"},Pn={key:0,class:"icon"},Sn=["innerHTML"],Vn=["innerHTML"],wn=["innerHTML"],Tn={key:4,class:"link-text"},In={class:"link-text-value"},Nn=yn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),En=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(s(),k(x,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:m(()=>[p("article",Ln,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",Pn,[b(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(),k(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,Sn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Vn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,wn)):h("",!0),e.linkText?(s(),u("div",Tn,[p("p",In,[te(C(e.linkText)+" ",1),Nn])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),zn=y(En,[["__scopeId","data-v-98aa41e6"]]),Cn={key:0,class:"VPFeatures"},Hn={class:"container"},Mn={class:"items"},An=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=L(()=>{const a=e.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,n)=>a.features?(s(),u("div",Cn,[p("div",Hn,[p("div",Mn,[(s(!0),u(B,null,K(a.features,i=>(s(),u("div",{key:i.title,class:M(["item",[t.value]])},[b(zn,{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)}}),Bn=y(An,[["__scopeId","data-v-178d34ad"]]),On=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,a)=>r(e).features?(s(),k(Bn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Fn=_({__name:"VPHomeContent",setup(o){const{width:e}=Et({initialWidth:0,includeScrollbar:!1});return(t,a)=>(s(),u("div",{class:"vp-doc container",style:xe(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),Dn=y(Fn,[["__scopeId","data-v-cfbc1a43"]]),jn={class:"VPHome"},Un=_({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,a)=>{const n=ce("Content");return s(),u("div",jn,[l(t.$slots,"home-hero-before",{},void 0,!0),b($n,null,{"home-hero-info-before":m(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),b(On),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(s(),k(Dn,{key:0},{default:m(()=>[b(n)]),_:1})):(s(),k(n,{key:1}))])}}}),Gn=y(Un,[["__scopeId","data-v-fd2ffb77"]]),qn={},Rn={class:"VPPage"};function Wn(o,e){const t=ce("Content");return s(),u("div",Rn,[l(o.$slots,"page-top"),b(t),l(o.$slots,"page-bottom")])}const Kn=y(qn,[["render",Wn]]),Yn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:a}=oe();return(n,i)=>(s(),u("div",{class:M(["VPContent",{"has-sidebar":r(a),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[b(to)],!0):r(t).layout==="page"?(s(),k(Kn,{key:1},{"page-top":m(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":m(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(s(),k(Gn,{key:2},{"home-hero-before":m(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":m(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":m(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":m(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":m(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(s(),k(Q(r(t).layout),{key:3})):(s(),k(on,{key:4},{"doc-top":m(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":m(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":m(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":m(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":m(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":m(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":m(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":m(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Jn=y(Yn,[["__scopeId","data-v-cb0805a1"]]),Xn={class:"container"},Zn=["innerHTML"],Qn=["innerHTML"],xn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:a}=oe();return(n,i)=>r(e).footer&&r(t).footer!==!1?(s(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(a)}])},[p("div",Xn,[r(e).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Zn)):h("",!0),r(e).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Qn)):h("",!0)])],2)):h("",!0)}}),ea=y(xn,[["__scopeId","data-v-c01e8608"]]);function ta(){const{theme:o,frontmatter:e}=V(),t=Ze([]),a=L(()=>t.value.length>0);return ye(()=>{t.value=je(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:a}}const oa=o=>(G("data-v-f9d4ca59"),o=o(),q(),o),na={class:"menu-text"},aa=oa(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),sa={class:"header"},ra={class:"outline"},ia=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),a=H(!1),n=H(0),i=H(),c=H();function d($){var S;(S=i.value)!=null&&S.contains($.target)||(a.value=!1)}ee(a,$=>{if($){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ze("Escape",()=>{a.value=!1}),ye(()=>{a.value=!1});function v(){a.value=!a.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g($){$.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),et(()=>{a.value=!1}))}function I(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return($,S)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:xe({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[$.headers.length>0?(s(),u("button",{key:0,onClick:v,class:M({open:a.value})},[p("span",na,C(r(st)(r(t))),1),aa],2)):(s(),u("button",{key:1,onClick:I},C(r(t).returnToTopLabel||"Return to top"),1)),b(Ae,{name:"flyout"},{default:m(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:g},[p("div",sa,[p("a",{class:"top-link",href:"#",onClick:I},C(r(t).returnToTopLabel||"Return to top"),1)]),p("div",ra,[b(rt,{headers:$.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),la=y(ia,[["__scopeId","data-v-f9d4ca59"]]),ca=o=>(G("data-v-4b826de3"),o=o(),q(),o),ua={class:"container"},da=["aria-expanded"],va=ca(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),ma={class:"menu-text"},pa=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:a}=oe(),{headers:n}=ta(),{y:i}=tt(),c=H(0);re(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ye(()=>{n.value=je(t.value.outline??e.value.outline)});const d=L(()=>n.value.length===0),v=L(()=>d.value&&!a.value),g=L(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:d.value,fixed:v.value}));return(I,$)=>r(t).layout!=="home"&&(!v.value||r(i)>=c.value)?(s(),u("div",{key:0,class:M(g.value)},[p("div",ua,[r(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":I.open,"aria-controls":"VPSidebarNav",onClick:$[0]||($[0]=S=>I.$emit("open-menu"))},[va,p("span",ma,C(r(e).sidebarMenuLabel||"Menu"),1)],8,da)):h("",!0),b(la,{headers:r(n),navHeight:c.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),fa=y(pa,[["__scopeId","data-v-4b826de3"]]);function ha(){const o=H(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function a(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=me();return ee(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:a}}const _a={},ga={class:"VPSwitch",type:"button",role:"switch"},ba={class:"check"},ka={key:0,class:"icon"};function $a(o,e){return s(),u("button",ga,[p("span",ba,[o.$slots.default?(s(),u("span",ka,[l(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const ya=y(_a,[["render",$a],["__scopeId","data-v-c5a026db"]]),lt=o=>(G("data-v-5e81030c"),o=o(),q(),o),La=lt(()=>p("span",{class:"vpi-sun sun"},null,-1)),Pa=lt(()=>p("span",{class:"vpi-moon moon"},null,-1)),Sa=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),a=Le("toggle-appearance",()=>{e.value=!e.value}),n=H("");return Fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,c)=>(s(),k(ya,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(a)},{default:m(()=>[La,Pa]),_:1},8,["title","aria-checked","onClick"]))}}),Ue=y(Sa,[["__scopeId","data-v-5e81030c"]]),Va={key:0,class:"VPNavBarAppearance"},wa=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,a)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",Va,[b(Ue)])):h("",!0)}}),Ta=y(wa,[["__scopeId","data-v-830f4e0c"]]),Ge=H();let ct=!1,Ne=0;function Ia(o){const e=H(!1);if(Pe){!ct&&Na(),Ne++;const t=ee(Ge,a=>{var n,i,c;a===o.el.value||(n=o.el.value)!=null&&n.contains(a)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(c=o.onBlur)==null||c.call(o))});Oe(()=>{t(),Ne--,Ne||Ea()})}return zt(e)}function Na(){document.addEventListener("focusin",ut),ct=!0,Ge.value=document.activeElement}function Ea(){document.removeEventListener("focusin",ut)}function ut(){Ge.value=document.activeElement}const za={class:"VPMenuLink"},Ca=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,a)=>(s(),u("div",za,[b(x,{class:M({active:r(le)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:m(()=>[te(C(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),Se=y(Ca,[["__scopeId","data-v-47efe451"]]),Ha={class:"VPMenuGroup"},Ma={key:0,class:"title"},Aa=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",Ha,[e.text?(s(),u("p",Ma,C(e.text),1)):h("",!0),(s(!0),u(B,null,K(e.items,a=>(s(),u(B,null,["link"in a?(s(),k(Se,{key:0,item:a},null,8,["item"])):h("",!0)],64))),256))]))}}),Ba=y(Aa,[["__scopeId","data-v-dd99de09"]]),Oa={class:"VPMenu"},Fa={key:0,class:"items"},Da=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(s(),u("div",Oa,[e.items?(s(),u("div",Fa,[(s(!0),u(B,null,K(e.items,a=>(s(),u(B,{key:JSON.stringify(a)},["link"in a?(s(),k(Se,{key:0,item:a},null,8,["item"])):"component"in a?(s(),k(Q(a.component),se({key:1,ref_for:!0},a.props),null,16)):(s(),k(Ba,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),ja=y(Da,[["__scopeId","data-v-0007c525"]]),Ua=o=>(G("data-v-11ef3b07"),o=o(),q(),o),Ga=["aria-expanded","aria-label"],qa={key:0,class:"text"},Ra=["innerHTML"],Wa=Ua(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),Ka={key:1,class:"vpi-more-horizontal icon"},Ya={class:"menu"},Ja=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=H(!1),t=H();Ia({el:t,onBlur:a});function a(){e.value=!1}return(n,i)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=c=>e.value=!0),onMouseleave:i[2]||(i[2]=c=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=c=>e.value=!e.value)},[n.button||n.icon?(s(),u("span",qa,[n.icon?(s(),u("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(s(),u("span",{key:1,innerHTML:n.button},null,8,Ra)):h("",!0),Wa])):(s(),u("span",Ka))],8,Ga),p("div",Ya,[b(ja,{items:n.items},{default:m(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),qe=y(Ja,[["__scopeId","data-v-11ef3b07"]]),Xa=["href","aria-label","innerHTML"],Za=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=L(()=>typeof e.icon=="object"?e.icon.svg:``);return(a,n)=>(s(),u("a",{class:"VPSocialLink no-icon",href:a.link,"aria-label":a.ariaLabel??(typeof a.icon=="string"?a.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Xa))}}),Qa=y(Za,[["__scopeId","data-v-116c6058"]]),xa={class:"VPSocialLinks"},es=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(s(),u("div",xa,[(s(!0),u(B,null,K(e.links,({link:a,icon:n,ariaLabel:i})=>(s(),k(Qa,{key:a,icon:n,link:a,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=y(es,[["__scopeId","data-v-e883f8d0"]]),ts={key:0,class:"group translations"},os={class:"trans-title"},ns={key:1,class:"group"},as={class:"item appearance"},ss={class:"label"},rs={class:"appearance-action"},is={key:2,class:"group"},ls={class:"item social-links"},cs=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:a,currentLang:n}=pe({correspondingLink:!0}),i=L(()=>a.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(c,d)=>i.value?(s(),k(qe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:m(()=>[r(a).length&&r(n).label?(s(),u("div",ts,[p("p",os,C(r(n).label),1),(s(!0),u(B,null,K(r(a),v=>(s(),k(Se,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",ns,[p("div",as,[p("p",ss,C(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",rs,[b(Ue)])])])):h("",!0),r(t).socialLinks?(s(),u("div",is,[p("div",ls,[b(Re,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),us=y(cs,[["__scopeId","data-v-f78a1889"]]),ds=o=>(G("data-v-7ec5116e"),o=o(),q(),o),vs=["aria-expanded"],ms=ds(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),ps=[ms],fs=_({__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]=a=>e.$emit("click"))},ps,10,vs))}}),hs=y(fs,[["__scopeId","data-v-7ec5116e"]]),_s=["innerHTML"],gs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,a)=>(s(),k(x,{class:M({VPNavBarMenuLink:!0,active:r(le)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:m(()=>[p("span",{innerHTML:t.item.text},null,8,_s)]),_:1},8,["class","href","noIcon","target","rel"]))}}),bs=y(gs,[["__scopeId","data-v-6589ed1c"]]),ks=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),a=i=>"component"in i?!1:"link"in i?le(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(a),n=L(()=>a(e.item));return(i,c)=>(s(),k(qe,{class:M({VPNavBarMenuGroup:!0,active:r(le)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),$s=o=>(G("data-v-46876648"),o=o(),q(),o),ys={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ls=$s(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Ps=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,a)=>r(e).nav?(s(),u("nav",ys,[Ls,(s(!0),u(B,null,K(r(e).nav,n=>(s(),u(B,{key:JSON.stringify(n)},["link"in n?(s(),k(bs,{key:0,item:n},null,8,["item"])):"component"in n?(s(),k(Q(n.component),se({key:1,ref_for:!0},n.props),null,16)):(s(),k(ks,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),Ss=y(Ps,[["__scopeId","data-v-46876648"]]);function Vs(o){const{localeIndex:e,theme:t}=V();function a(n){var N,F,z;const i=n.split("."),c=(N=t.value.search)==null?void 0:N.options,d=c&&typeof c=="object",v=d&&((z=(F=c.locales)==null?void 0:F[e.value])==null?void 0:z.translations)||null,g=d&&c.translations||null;let I=v,$=g,S=o;const E=i.pop();for(const J of i){let X=null;const D=S==null?void 0:S[J];D&&(X=S=D);const ne=$==null?void 0:$[J];ne&&(X=$=ne);const Z=I==null?void 0:I[J];Z&&(X=I=Z),D||(S=X),ne||($=X),Z||(I=X)}return(I==null?void 0:I[E])??($==null?void 0:$[E])??(S==null?void 0:S[E])??""}return a}const ws=["aria-label"],Ts={class:"DocSearch-Button-Container"},Is=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Ns={class:"DocSearch-Button-Placeholder"},Es=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ye=_({__name:"VPNavBarSearchButton",setup(o){const t=Vs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,n)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Ts,[Is,p("span",Ns,C(r(t)("button.buttonText")),1)]),Es],8,ws))}}),zs={class:"VPNavBarSearch"},Cs={id:"local-search"},Hs={key:1,id:"docsearch"},Ms=_({__name:"VPNavBarSearch",setup(o){const e=Ct(()=>Ht(()=>import("./VPLocalSearchBox.LRdAF0PT.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:a}=V(),n=H(!1),i=H(!1);re(()=>{});function c(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const $=new Event("keydown");$.key="k",$.metaKey=!0,window.dispatchEvent($),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v($){const S=$.target,E=S.tagName;return S.isContentEditable||E==="INPUT"||E==="SELECT"||E==="TEXTAREA"}const g=H(!1);ze("k",$=>{($.ctrlKey||$.metaKey)&&($.preventDefault(),g.value=!0)}),ze("/",$=>{v($)||($.preventDefault(),g.value=!0)});const I="local";return($,S)=>{var E;return s(),u("div",zs,[r(I)==="local"?(s(),u(B,{key:0},[g.value?(s(),k(r(e),{key:0,onClose:S[0]||(S[0]=N=>g.value=!1)})):h("",!0),p("div",Cs,[b(Ye,{onClick:S[1]||(S[1]=N=>g.value=!0)})])],64)):r(I)==="algolia"?(s(),u(B,{key:1},[n.value?(s(),k(r(t),{key:0,algolia:((E=r(a).search)==null?void 0:E.options)??r(a).algolia,onVnodeBeforeMount:S[2]||(S[2]=N=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(s(),u("div",Hs,[b(Ye,{onClick:c})]))],64)):h("",!0)])}}}),As=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,a)=>r(e).socialLinks?(s(),k(Re,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Bs=y(As,[["__scopeId","data-v-6a13576c"]]),Os=["href","rel","target"],Fs={key:1},Ds={key:2},js=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:a}=oe(),{currentLang:n}=pe(),i=L(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),c=L(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=L(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,g)=>(s(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(a)}])},[p("a",{class:"title",href:i.value??r(De)(r(n).link),rel:c.value,target:d.value},[l(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(s(),k(ke,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(s(),u("span",Fs,C(r(t).siteTitle),1)):r(t).siteTitle===void 0?(s(),u("span",Ds,C(r(e).title),1)):h("",!0),l(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Os)],2))}}),Us=y(js,[["__scopeId","data-v-ff17a4ae"]]),Gs={class:"items"},qs={class:"title"},Rs=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:a}=pe({correspondingLink:!0});return(n,i)=>r(t).length&&r(a).label?(s(),k(qe,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:m(()=>[p("div",Gs,[p("p",qs,C(r(a).label),1),(s(!0),u(B,null,K(r(t),c=>(s(),k(Se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Ws=y(Rs,[["__scopeId","data-v-540bc5e8"]]),Ks=o=>(G("data-v-3fed1b83"),o=o(),q(),o),Ys={class:"wrapper"},Js={class:"container"},Xs={class:"title"},Zs={class:"content"},Qs={class:"content-body"},xs=Ks(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),er=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=tt(),{hasSidebar:a}=oe(),{frontmatter:n}=V(),i=H({});return Fe(()=>{i.value={"has-sidebar":a.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(c,d)=>(s(),u("div",{class:M(["VPNavBar",i.value])},[p("div",Ys,[p("div",Js,[p("div",Xs,[b(Us,null,{"nav-bar-title-before":m(()=>[l(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[l(c.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Zs,[p("div",Qs,[l(c.$slots,"nav-bar-content-before",{},void 0,!0),b(Ms,{class:"search"}),b(Ss,{class:"menu"}),b(Ws,{class:"translations"}),b(Ta,{class:"appearance"}),b(Bs,{class:"social-links"}),b(us,{class:"extra"}),l(c.$slots,"nav-bar-content-after",{},void 0,!0),b(hs,{class:"hamburger",active:c.isScreenOpen,onClick:d[0]||(d[0]=v=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),xs],2))}}),tr=y(er,[["__scopeId","data-v-3fed1b83"]]),or={key:0,class:"VPNavScreenAppearance"},nr={class:"text"},ar=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(a,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(s(),u("div",or,[p("p",nr,C(r(t).darkModeSwitchLabel||"Appearance"),1),b(Ue)])):h("",!0)}}),sr=y(ar,[["__scopeId","data-v-0ceafb5f"]]),rr=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,a)=>(s(),k(x,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ir=y(rr,[["__scopeId","data-v-8abda8b8"]]),lr=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,a)=>(s(),k(x,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:m(()=>[te(C(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),dt=y(lr,[["__scopeId","data-v-ae02dd03"]]),cr={class:"VPNavScreenMenuGroupSection"},ur={key:0,class:"title"},dr=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",cr,[e.text?(s(),u("p",ur,C(e.text),1)):h("",!0),(s(!0),u(B,null,K(e.items,a=>(s(),k(dt,{key:a.text,item:a},null,8,["item"]))),128))]))}}),vr=y(dr,[["__scopeId","data-v-dea7123a"]]),mr=o=>(G("data-v-f76bdb19"),o=o(),q(),o),pr=["aria-controls","aria-expanded"],fr=["innerHTML"],hr=mr(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),_r=["id"],gr={key:0,class:"item"},br={key:1,class:"item"},kr={key:2,class:"group"},$r=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=H(!1),a=L(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,c)=>(s(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":a.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,fr),hr],8,pr),p("div",{id:a.value,class:"items"},[(s(!0),u(B,null,K(i.items,d=>(s(),u(B,{key:JSON.stringify(d)},["link"in d?(s(),u("div",gr,[b(dt,{item:d},null,8,["item"])])):"component"in d?(s(),u("div",br,[(s(),k(Q(d.component),se({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(s(),u("div",kr,[b(vr,{items:d.items},null,8,["items"])]))],64))),128))],8,_r)],2))}}),yr=y($r,[["__scopeId","data-v-f76bdb19"]]),Lr={key:0,class:"VPNavScreenMenu"},Pr=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,a)=>r(e).nav?(s(),u("nav",Lr,[(s(!0),u(B,null,K(r(e).nav,n=>(s(),u(B,{key:JSON.stringify(n)},["link"in n?(s(),k(ir,{key:0,item:n},null,8,["item"])):"component"in n?(s(),k(Q(n.component),se({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(s(),k(yr,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Sr=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,a)=>r(e).socialLinks?(s(),k(Re,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),vt=o=>(G("data-v-eaa0f43e"),o=o(),q(),o),Vr=vt(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),wr=vt(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Tr={class:"list"},Ir=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=pe({correspondingLink:!0}),a=H(!1);function n(){a.value=!a.value}return(i,c)=>r(e).length&&r(t).label?(s(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:a.value}])},[p("button",{class:"title",onClick:n},[Vr,te(" "+C(r(t).label)+" ",1),wr]),p("ul",Tr,[(s(!0),u(B,null,K(r(e),d=>(s(),u("li",{key:d.link,class:"item"},[b(x,{class:"link",href:d.link},{default:m(()=>[te(C(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),Nr=y(Ir,[["__scopeId","data-v-eaa0f43e"]]),Er={class:"container"},zr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=H(null),t=ot(Pe?document.body:null);return(a,n)=>(s(),k(Ae,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:m(()=>[a.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",Er,[l(a.$slots,"nav-screen-content-before",{},void 0,!0),b(Pr,{class:"menu"}),b(Nr,{class:"translations"}),b(sr,{class:"appearance"}),b(Sr,{class:"social-links"}),l(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),Cr=y(zr,[["__scopeId","data-v-334bb4cd"]]),Hr={key:0,class:"VPNav"},Mr=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:a}=ha(),{frontmatter:n}=V(),i=L(()=>n.value.navbar!==!1);return nt("close-screen",t),$e(()=>{Pe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(c,d)=>i.value?(s(),u("header",Hr,[b(tr,{"is-screen-open":r(e),onToggleScreen:r(a)},{"nav-bar-title-before":m(()=>[l(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[l(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":m(()=>[l(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":m(()=>[l(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(Cr,{open:r(e)},{"nav-screen-content-before":m(()=>[l(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":m(()=>[l(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Ar=y(Mr,[["__scopeId","data-v-a6f969fc"]]),mt=o=>(G("data-v-a9de9e44"),o=o(),q(),o),Br=["role","tabindex"],Or=mt(()=>p("div",{class:"indicator"},null,-1)),Fr=mt(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Dr=[Fr],jr={key:1,class:"items"},Ur=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:a,isLink:n,isActiveLink:i,hasActiveLink:c,hasChildren:d,toggle:v}=so(L(()=>e.item)),g=L(()=>d.value?"section":"div"),I=L(()=>n.value?"a":"div"),$=L(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),S=L(()=>n.value?void 0:"button"),E=L(()=>[[`level-${e.depth}`],{collapsible:a.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":c.value}]);function N(z){"key"in z&&z.key!=="Enter"||!e.item.link&&v()}function F(){e.item.link&&v()}return(z,J)=>{const X=ce("VPSidebarItem",!0);return s(),k(Q(g.value),{class:M(["VPSidebarItem",E.value])},{default:m(()=>[z.item.text?(s(),u("div",se({key:0,class:"item",role:S.value},At(z.item.items?{click:N,keydown:N}:{},!0),{tabindex:z.item.items&&0}),[Or,z.item.link?(s(),k(x,{key:0,tag:I.value,class:"link",href:z.item.link,rel:z.item.rel,target:z.item.target},{default:m(()=>[(s(),k(Q($.value),{class:"text",innerHTML:z.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),k(Q($.value),{key:1,class:"text",innerHTML:z.item.text},null,8,["innerHTML"])),z.item.collapsed!=null&&z.item.items&&z.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:F,onKeydown:Mt(F,["enter"]),tabindex:"0"},Dr,32)):h("",!0)],16,Br)):h("",!0),z.item.items&&z.item.items.length?(s(),u("div",jr,[z.depth<5?(s(!0),u(B,{key:0},K(z.item.items,D=>(s(),k(X,{key:D.text,item:D,depth:z.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Gr=y(Ur,[["__scopeId","data-v-a9de9e44"]]),qr=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=H(!0);let t=null;return re(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Bt(()=>{t!=null&&(clearTimeout(t),t=null)}),(a,n)=>(s(!0),u(B,null,K(a.items,i=>(s(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[b(Gr,{item:i,depth:0},null,8,["item"])],2))),128))}}),Rr=y(qr,[["__scopeId","data-v-9c4bd70d"]]),pt=o=>(G("data-v-e024fac9"),o=o(),q(),o),Wr=pt(()=>p("div",{class:"curtain"},null,-1)),Kr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Yr=pt(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Jr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=oe(),a=o,n=H(null),i=ot(Pe?document.body:null);ee([a,n],()=>{var d;a.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const c=H(0);return ee(e,()=>{c.value+=1},{deep:!0}),(d,v)=>r(t)?(s(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=Ot(()=>{},["stop"]))},[Wr,p("nav",Kr,[Yr,l(d.$slots,"sidebar-nav-before",{},void 0,!0),(s(),k(Rr,{items:r(e),key:c.value},null,8,["items"])),l(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Xr=y(Jr,[["__scopeId","data-v-e024fac9"]]),Zr=_({__name:"VPSkipLink",setup(o){const e=me(),t=H();ee(()=>e.path,()=>t.value.focus());function a({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const c=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",c)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",c),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(s(),u(B,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a}," Skip to content ")],64))}}),Qr=y(Zr,[["__scopeId","data-v-497b75be"]]),xr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:a}=oe(),n=me();ee(()=>n.path,a),ao(e,a);const{frontmatter:i}=V(),c=Ft(),d=L(()=>!!c["home-hero-image"]);return nt("hero-image-slot-exists",d),(v,g)=>{const I=ce("Content");return r(i).layout!==!1?(s(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[l(v.$slots,"layout-top",{},void 0,!0),b(Qr),b(Gt,{class:"backdrop",show:r(e),onClick:r(a)},null,8,["show","onClick"]),b(Ar,null,{"nav-bar-title-before":m(()=>[l(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[l(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":m(()=>[l(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":m(()=>[l(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":m(()=>[l(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":m(()=>[l(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(fa,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),b(Xr,{open:r(e)},{"sidebar-nav-before":m(()=>[l(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":m(()=>[l(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(Jn,null,{"page-top":m(()=>[l(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":m(()=>[l(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":m(()=>[l(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":m(()=>[l(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":m(()=>[l(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[l(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[l(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[l(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[l(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":m(()=>[l(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":m(()=>[l(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":m(()=>[l(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":m(()=>[l(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":m(()=>[l(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":m(()=>[l(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":m(()=>[l(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":m(()=>[l(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":m(()=>[l(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":m(()=>[l(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":m(()=>[l(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[l(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[l(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[l(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(ea),l(v.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),k(I,{key:1}))}}}),ei=y(xr,[["__scopeId","data-v-0dd53a6c"]]),ti={Layout:ei,enhanceApp:({app:o})=>{o.component("Badge",Dt)}};/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var ie=Object.assign||function(o){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},a=window.Promise||function(P){function w(){}P(w,w)},n=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(We-P)>A.scrollOffset&&setTimeout(N,150)}},c=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=ie({},A.container,P.container)),P.template){var O=be(P.template)?P.template:document.querySelector(P.template);w.template=O}return A=ie({},A,w),D.forEach(function(j){j.dispatchEvent(de("medium-zoom:update",{detail:{zoom:U}}))}),U},v=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return o(ie({},A,P))},g=function(){for(var P=arguments.length,w=Array(P),O=0;O0?w.reduce(function(T,W){return[].concat(T,Xe(W))},[]):D;return j.forEach(function(T){T.classList.remove("medium-zoom-image"),T.dispatchEvent(de("medium-zoom:detach",{detail:{zoom:U}}))}),D=D.filter(function(T){return j.indexOf(T)===-1}),U},$=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},W=void 0,Y=void 0;if(A.container)if(A.container instanceof Object)T=ie({},T,A.container),W=T.width-T.left-T.right-A.margin*2,Y=T.height-T.top-T.bottom-A.margin*2;else{var ue=be(A.container)?A.container:document.querySelector(A.container),ae=ue.getBoundingClientRect(),Ve=ae.width,ft=ae.height,ht=ae.left,_t=ae.top;T=ie({},T,{width:Ve,height:ft,left:ht,top:_t})}W=W||T.width-A.margin*2,Y=Y||T.height-A.margin*2;var ve=f.zoomedHd||f.original,gt=Je(ve)?W:ve.naturalWidth||W,bt=Je(ve)?Y:ve.naturalHeight||Y,he=ve.getBoundingClientRect(),kt=he.top,$t=he.left,we=he.width,Te=he.height,yt=Math.min(Math.max(we,gt),W)/we,Lt=Math.min(Math.max(Te,bt),Y)/Te,Ie=Math.min(yt,Lt),Pt=(-$t+(W-we)/2+A.margin+T.left)/Ie,St=(-kt+(Y-Te)/2+A.margin+T.top)/Ie,Ke="scale("+Ie+") translate3d("+Pt+"px, "+St+"px, 0)";f.zoomed.style.transform=Ke,f.zoomedHd&&(f.zoomedHd.style.transform=Ke)};return new a(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(de("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 W=D;f.original=W[0]}else{j(U);return}if(f.original.dispatchEvent(de("medium-zoom:open",{detail:{zoom:U}})),We=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,Z=!0,f.zoomed=ai(f.original),document.body.appendChild(fe),A.template){var Y=be(A.template)?A.template:document.querySelector(A.template);f.template=document.createElement("div"),f.template.appendChild(Y.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(ue),console.warn("Unable to reach the zoom image target "+f.zoomedHd.src),f.zoomedHd=null,O()};var ue=setInterval(function(){f.zoomedHd.complete&&(clearInterval(ue),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 a(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(de("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(de("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})},z=function(){return A},J=function(){return D},X=function(){return f.original},D=[],ne=[],Z=!1,We=0,A=t,f={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(e)==="[object Object]"?A=e:(e||typeof e=="string")&&g(e),A=ie({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},A);var fe=ni(A.background);document.addEventListener("click",n),document.addEventListener("keyup",c),document.addEventListener("scroll",i),window.addEventListener("resize",N);var U={open:E,close:N,toggle:F,update:d,clone:v,attach:g,detach:I,on:$,off:S,getOptions:z,getImages:J,getZoomedImage:X};return U};function ri(o,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t==="top"&&a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.styleSheet?n.styleSheet.cssText=o:n.appendChild(document.createTextNode(o))}}var ii=".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}";ri(ii);const ci={...ti,setup(){const o=me(),e=()=>{new si("[data-zoomable]",{background:"var(--vp-c-bg)"})};re(()=>{e()}),ee(()=>o.path,()=>et(()=>e()))}};export{ci as R,Vs as c,V as u}; diff --git a/.vitepress/dist/assets/src_guide_ai.md.C2wKEBKg.js b/.vitepress/dist/assets/src_guide_ai.md.CQr0rH-R.js similarity index 85% rename from .vitepress/dist/assets/src_guide_ai.md.C2wKEBKg.js rename to .vitepress/dist/assets/src_guide_ai.md.CQr0rH-R.js index 427335f..f3e03d7 100644 --- a/.vitepress/dist/assets/src_guide_ai.md.C2wKEBKg.js +++ b/.vitepress/dist/assets/src_guide_ai.md.CQr0rH-R.js @@ -1 +1 @@ -import{_ as a,c as t,o as i,j as e,a as s,a8 as r}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1720593505000}'),o={name:"src/guide/ai.md"},c=e("h1",{id:"ai-编码",tabindex:"-1"},[s("Ai 编码 "),e("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"​")],-1),n=e("p",null,"通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成",-1),d=e("p",null,[e("img",{src:r,alt:"","data-zoomable":""})],-1),l=e("p",null,[e("a",{href:"https://www.bilibili.com/video/BV1Hm421g7Br/?",target:"_blank",rel:"noreferrer"},"B 站视频教程")],-1),_=[c,n,d,l];function p(h,m,f,u,g,b){return i(),t("div",null,_)}const k=a(o,[["render",p]]);export{x as __pageData,k as default}; +import{_ as a,c as t,o as i,j as e,a as s,a8 as r}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1721036629000}'),o={name:"src/guide/ai.md"},c=e("h1",{id:"ai-编码",tabindex:"-1"},[s("Ai 编码 "),e("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"​")],-1),n=e("p",null,"通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成",-1),d=e("p",null,[e("img",{src:r,alt:"","data-zoomable":""})],-1),l=e("p",null,[e("a",{href:"https://www.bilibili.com/video/BV1Hm421g7Br/?",target:"_blank",rel:"noreferrer"},"B 站视频教程")],-1),_=[c,n,d,l];function p(h,m,f,u,g,b){return i(),t("div",null,_)}const k=a(o,[["render",p]]);export{x as __pageData,k as default}; diff --git a/.vitepress/dist/assets/src_guide_ai.md.C2wKEBKg.lean.js b/.vitepress/dist/assets/src_guide_ai.md.CQr0rH-R.lean.js similarity index 85% rename from .vitepress/dist/assets/src_guide_ai.md.C2wKEBKg.lean.js rename to .vitepress/dist/assets/src_guide_ai.md.CQr0rH-R.lean.js index 427335f..f3e03d7 100644 --- a/.vitepress/dist/assets/src_guide_ai.md.C2wKEBKg.lean.js +++ b/.vitepress/dist/assets/src_guide_ai.md.CQr0rH-R.lean.js @@ -1 +1 @@ -import{_ as a,c as t,o as i,j as e,a as s,a8 as r}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1720593505000}'),o={name:"src/guide/ai.md"},c=e("h1",{id:"ai-编码",tabindex:"-1"},[s("Ai 编码 "),e("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"​")],-1),n=e("p",null,"通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成",-1),d=e("p",null,[e("img",{src:r,alt:"","data-zoomable":""})],-1),l=e("p",null,[e("a",{href:"https://www.bilibili.com/video/BV1Hm421g7Br/?",target:"_blank",rel:"noreferrer"},"B 站视频教程")],-1),_=[c,n,d,l];function p(h,m,f,u,g,b){return i(),t("div",null,_)}const k=a(o,[["render",p]]);export{x as __pageData,k as default}; +import{_ as a,c as t,o as i,j as e,a as s,a8 as r}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1721036629000}'),o={name:"src/guide/ai.md"},c=e("h1",{id:"ai-编码",tabindex:"-1"},[s("Ai 编码 "),e("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"​")],-1),n=e("p",null,"通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成",-1),d=e("p",null,[e("img",{src:r,alt:"","data-zoomable":""})],-1),l=e("p",null,[e("a",{href:"https://www.bilibili.com/video/BV1Hm421g7Br/?",target:"_blank",rel:"noreferrer"},"B 站视频教程")],-1),_=[c,n,d,l];function p(h,m,f,u,g,b){return i(),t("div",null,_)}const k=a(o,[["render",p]]);export{x as __pageData,k as default}; diff --git a/.vitepress/dist/assets/src_guide_cache.md.BhqP_wiC.js b/.vitepress/dist/assets/src_guide_cache.md.sFO9ncvK.js similarity index 99% rename from .vitepress/dist/assets/src_guide_cache.md.BhqP_wiC.js rename to .vitepress/dist/assets/src_guide_cache.md.sFO9ncvK.js index e48d30c..c577e04 100644 --- a/.vitepress/dist/assets/src_guide_cache.md.BhqP_wiC.js +++ b/.vitepress/dist/assets/src_guide_cache.md.sFO9ncvK.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1720593505000}'),h={name:"src/guide/cache.md"},l=n(`

缓存 ​

为了不过多依赖环境,框架自带基于 springCache 默认实现了两种缓存

  • caffeine 无需额外安装软件,由 Ben Manes 开发的一个 Java 缓存库,旨在提供高性能、高效的缓存解决方案。
  • redis 需安装 redis,提供了一种高效且可靠的解决方案,能够显著提升应用程序的性能和响应速度。
yaml
spring:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1721036629000}'),h={name:"src/guide/cache.md"},l=n(`

缓存 ​

为了不过多依赖环境,框架自带基于 springCache 默认实现了两种缓存

  • caffeine 无需额外安装软件,由 Ben Manes 开发的一个 Java 缓存库,旨在提供高性能、高效的缓存解决方案。
  • redis 需安装 redis,提供了一种高效且可靠的解决方案,能够显著提升应用程序的性能和响应速度。
yaml
spring:
   # caffeine 缓存
   cache:
     type: caffeine
diff --git a/.vitepress/dist/assets/src_guide_cache.md.BhqP_wiC.lean.js b/.vitepress/dist/assets/src_guide_cache.md.sFO9ncvK.lean.js
similarity index 84%
rename from .vitepress/dist/assets/src_guide_cache.md.BhqP_wiC.lean.js
rename to .vitepress/dist/assets/src_guide_cache.md.sFO9ncvK.lean.js
index 494dfe0..ad289c4 100644
--- a/.vitepress/dist/assets/src_guide_cache.md.BhqP_wiC.lean.js
+++ b/.vitepress/dist/assets/src_guide_cache.md.sFO9ncvK.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1720593505000}'),h={name:"src/guide/cache.md"},l=n("",10),p=[l];function t(e,k,E,r,d,c){return a(),i("div",null,p)}const o=s(h,[["render",t]]);export{y as __pageData,o as default};
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1721036629000}'),h={name:"src/guide/cache.md"},l=n("",10),p=[l];function t(e,k,E,r,d,c){return a(),i("div",null,p)}const o=s(h,[["render",t]]);export{y as __pageData,o as default};
diff --git a/.vitepress/dist/assets/src_guide_controller.md.DFXsvLef.js b/.vitepress/dist/assets/src_guide_controller.md.CKU6QhGJ.js
similarity index 99%
rename from .vitepress/dist/assets/src_guide_controller.md.DFXsvLef.js
rename to .vitepress/dist/assets/src_guide_controller.md.CKU6QhGJ.js
index 986d407..c16253f 100644
--- a/.vitepress/dist/assets/src_guide_controller.md.DFXsvLef.js
+++ b/.vitepress/dist/assets/src_guide_controller.md.CKU6QhGJ.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1720593505000}'),h={name:"src/guide/controller.md"},t=n(`

控制器 ​

所有的 controller 都继承自 BaseController,该父类已经实现了以下六个基础方法:add、delete、update、page、list、info,可以大大简化代码,使得 controller 更加简洁。

示例 ​

java
@Tag(name = "测试CURD", description = "测试CURD")
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1721036629000}'),h={name:"src/guide/controller.md"},t=n(`

控制器 ​

所有的 controller 都继承自 BaseController,该父类已经实现了以下六个基础方法:add、delete、update、page、list、info,可以大大简化代码,使得 controller 更加简洁。

示例 ​

java
@Tag(name = "测试CURD", description = "测试CURD")
 @CoolRestController(value = "/cool", api = {"add", "delete", "update", "page", "list", "info"})
 public class AdminDemoInfoController extends BaseController<DemoService, DemoEntity> {
     @Override
diff --git a/.vitepress/dist/assets/src_guide_controller.md.DFXsvLef.lean.js b/.vitepress/dist/assets/src_guide_controller.md.CKU6QhGJ.lean.js
similarity index 85%
rename from .vitepress/dist/assets/src_guide_controller.md.DFXsvLef.lean.js
rename to .vitepress/dist/assets/src_guide_controller.md.CKU6QhGJ.lean.js
index 1336248..1cc1759 100644
--- a/.vitepress/dist/assets/src_guide_controller.md.DFXsvLef.lean.js
+++ b/.vitepress/dist/assets/src_guide_controller.md.CKU6QhGJ.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1720593505000}'),h={name:"src/guide/controller.md"},t=n("",29),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const o=s(h,[["render",l]]);export{F as __pageData,o as default};
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1721036629000}'),h={name:"src/guide/controller.md"},t=n("",29),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const o=s(h,[["render",l]]);export{F as __pageData,o as default};
diff --git a/.vitepress/dist/assets/src_guide_db.md.CW_Li52O.js b/.vitepress/dist/assets/src_guide_db.md.CW_Li52O.js
new file mode 100644
index 0000000..38b7e53
--- /dev/null
+++ b/.vitepress/dist/assets/src_guide_db.md.CW_Li52O.js
@@ -0,0 +1 @@
+import{_ as t,c as d,o as r,a4 as e}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":1721036629000}'),a={name:"src/guide/db.md"},s=e('

数据库 ​

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,可以自动创建表,并且支持表字段的修改。

注意

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

',16),o=[s];function i(l,n,c,p,h,b){return r(),d("div",null,o)}const g=t(a,[["render",i]]);export{m as __pageData,g as default}; diff --git a/.vitepress/dist/assets/src_guide_db.md.CW_Li52O.lean.js b/.vitepress/dist/assets/src_guide_db.md.CW_Li52O.lean.js new file mode 100644 index 0000000..3f8c218 --- /dev/null +++ b/.vitepress/dist/assets/src_guide_db.md.CW_Li52O.lean.js @@ -0,0 +1 @@ +import{_ as t,c as d,o as r,a4 as e}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":1721036629000}'),a={name:"src/guide/db.md"},s=e("",16),o=[s];function i(l,n,c,p,h,b){return r(),d("div",null,o)}const g=t(a,[["render",i]]);export{m as __pageData,g as default}; diff --git a/.vitepress/dist/assets/src_guide_db.md.JecGjjcC.js b/.vitepress/dist/assets/src_guide_db.md.JecGjjcC.js deleted file mode 100644 index 45fb0c4..0000000 --- a/.vitepress/dist/assets/src_guide_db.md.JecGjjcC.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as d,o as r,a4 as e}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":null}'),a={name:"src/guide/db.md"},s=e('

数据库 ​

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,可以自动创建表,并且支持表字段的修改。

注意

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

',16),o=[s];function i(l,n,c,p,h,b){return r(),d("div",null,o)}const g=t(a,[["render",i]]);export{m as __pageData,g as default}; diff --git a/.vitepress/dist/assets/src_guide_db.md.JecGjjcC.lean.js b/.vitepress/dist/assets/src_guide_db.md.JecGjjcC.lean.js deleted file mode 100644 index b65d1f2..0000000 --- a/.vitepress/dist/assets/src_guide_db.md.JecGjjcC.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as d,o as r,a4 as e}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":null}'),a={name:"src/guide/db.md"},s=e("",16),o=[s];function i(l,n,c,p,h,b){return r(),d("div",null,o)}const g=t(a,[["render",i]]);export{m as __pageData,g as default}; diff --git a/.vitepress/dist/assets/src_guide_dev.md.Cgkglw3x.js b/.vitepress/dist/assets/src_guide_dev.md.BolOgpNe.js similarity index 70% rename from .vitepress/dist/assets/src_guide_dev.md.Cgkglw3x.js rename to .vitepress/dist/assets/src_guide_dev.md.BolOgpNe.js index d0c4bb0..3803db4 100644 --- a/.vitepress/dist/assets/src_guide_dev.md.Cgkglw3x.js +++ b/.vitepress/dist/assets/src_guide_dev.md.BolOgpNe.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":null}'),t={name:"src/guide/dev.md"},h=n('

开发方式 ​

Cool Admin 推荐两种快速开发方式,可以大大节省开发时间,降低开发成本,提高开发效率。

Ai 全自动 ​

零代码开发(非低代码),通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成

开发过程只需点一点,调一调,不用写一行代码

B 站视频教程

半自动 ​

只需三步,创建实体类生成表,生成后端代码,生成前端代码

  • 编写实体类,重启生成表;
  • 运行代码生成器,生成 Service、Controller 等

文件:src/test/java/com/cool/CoolAdminJavaApplicationTests.java

java
public class CoolCodeGeneratorTest {
+import{_ as s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":1721036629000}'),t={name:"src/guide/dev.md"},h=n('

开发方式 ​

Cool Admin 推荐两种快速开发方式,可以大大节省开发时间,降低开发成本,提高开发效率。

Ai 全自动 ​

零代码开发(非低代码),通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成

开发过程只需点一点,调一调,不用写一行代码

B 站视频教程

半自动 ​

只需三步,创建实体类生成表,生成后端代码,生成前端代码

  • 编写实体类,重启生成表;
  • 运行代码生成器,生成 Service、Controller 等

文件:src/test/java/com/cool/CoolAdminJavaApplicationTests.java

java
public class CoolCodeGeneratorTest {
     public static void main(String[] args) {
         CodeGenerator codeGenerator = new CodeGenerator();
         codeGenerator.init();
@@ -13,4 +13,4 @@ import{_ as s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvL
         codeGenerator.mapper(codeModel);
         codeGenerator.service(codeModel);
     }
-}
  • 自动生成前端页面,通过管理后台菜单管理的快速创建即可生成

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

',15),p=[h];function k(d,r,E,o,c,g){return a(),i("div",null,p)}const u=s(t,[["render",k]]);export{F as __pageData,u as default}; +}
  • 自动生成前端页面,通过管理后台菜单管理的快速创建即可生成

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

',15),p=[h];function k(d,r,E,o,c,g){return a(),i("div",null,p)}const _=s(t,[["render",k]]);export{F as __pageData,_ as default}; diff --git a/.vitepress/dist/assets/src_guide_dev.md.Cgkglw3x.lean.js b/.vitepress/dist/assets/src_guide_dev.md.BolOgpNe.lean.js similarity index 58% rename from .vitepress/dist/assets/src_guide_dev.md.Cgkglw3x.lean.js rename to .vitepress/dist/assets/src_guide_dev.md.BolOgpNe.lean.js index 77e8916..d44d259 100644 --- a/.vitepress/dist/assets/src_guide_dev.md.Cgkglw3x.lean.js +++ b/.vitepress/dist/assets/src_guide_dev.md.BolOgpNe.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":null}'),t={name:"src/guide/dev.md"},h=n("",15),p=[h];function k(d,r,E,o,c,g){return a(),i("div",null,p)}const u=s(t,[["render",k]]);export{F as __pageData,u as default}; +import{_ as s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":1721036629000}'),t={name:"src/guide/dev.md"},h=n("",15),p=[h];function k(d,r,E,o,c,g){return a(),i("div",null,p)}const _=s(t,[["render",k]]);export{F as __pageData,_ as default}; diff --git a/.vitepress/dist/assets/src_guide_dir.md.z6VUJtso.js b/.vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.js similarity index 77% rename from .vitepress/dist/assets/src_guide_dir.md.z6VUJtso.js rename to .vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.js index 0f00107..239b4a7 100644 --- a/.vitepress/dist/assets/src_guide_dir.md.z6VUJtso.js +++ b/.vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as n,a4 as p}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":null}'),e={name:"src/guide/dir.md"},l=p(`

目录结构 ​

项目按照模块化的方式组织,每个模块都有其特有的功能,清晰明了便于管理。

结构 ​

.
+import{_ as s,c as a,o as n,a4 as p}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":1721036629000}'),e={name:"src/guide/dir.md"},l=p(`

目录结构 ​

项目按照模块化的方式组织,每个模块都有其特有的功能,清晰明了便于管理。

结构 ​

.
 main
 ├─ java
 │  ├─ com.cool
diff --git a/.vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.lean.js b/.vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.lean.js
new file mode 100644
index 0000000..3c4cb7f
--- /dev/null
+++ b/.vitepress/dist/assets/src_guide_dir.md.yr-Ujx3e.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as a,o as n,a4 as p}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":1721036629000}'),e={name:"src/guide/dir.md"},l=p("",5),c=[l];function i(t,o,r,d,u,_){return n(),a("div",null,c)}const b=s(e,[["render",i]]);export{h as __pageData,b as default};
diff --git a/.vitepress/dist/assets/src_guide_dir.md.z6VUJtso.lean.js b/.vitepress/dist/assets/src_guide_dir.md.z6VUJtso.lean.js
deleted file mode 100644
index b386a28..0000000
--- a/.vitepress/dist/assets/src_guide_dir.md.z6VUJtso.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,c as a,o as n,a4 as p}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":null}'),e={name:"src/guide/dir.md"},l=p("",5),c=[l];function i(t,o,r,d,u,_){return n(),a("div",null,c)}const b=s(e,[["render",i]]);export{h as __pageData,b as default};
diff --git a/.vitepress/dist/assets/src_guide_exception.md.DTaAZohQ.js b/.vitepress/dist/assets/src_guide_exception.md.BnNhx80g.js
similarity index 99%
rename from .vitepress/dist/assets/src_guide_exception.md.DTaAZohQ.js
rename to .vitepress/dist/assets/src_guide_exception.md.BnNhx80g.js
index d7e5e51..50d0f5e 100644
--- a/.vitepress/dist/assets/src_guide_exception.md.DTaAZohQ.js
+++ b/.vitepress/dist/assets/src_guide_exception.md.BnNhx80g.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1720593505000}'),h={name:"src/guide/exception.md"},k=n(`

统一异常处理 ​

提供了简化的业务异常抛出工具

  • CoolPreconditions.check(check != null, "用户名已存在");

异常统一捕获 ​

java
@RestControllerAdvice
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1721036629000}'),h={name:"src/guide/exception.md"},k=n(`

统一异常处理 ​

提供了简化的业务异常抛出工具

  • CoolPreconditions.check(check != null, "用户名已存在");

异常统一捕获 ​

java
@RestControllerAdvice
 @Slf4j
 public class CoolExceptionHandler {
 
diff --git a/.vitepress/dist/assets/src_guide_exception.md.DTaAZohQ.lean.js b/.vitepress/dist/assets/src_guide_exception.md.BnNhx80g.lean.js
similarity index 85%
rename from .vitepress/dist/assets/src_guide_exception.md.DTaAZohQ.lean.js
rename to .vitepress/dist/assets/src_guide_exception.md.BnNhx80g.lean.js
index 511175f..08653d1 100644
--- a/.vitepress/dist/assets/src_guide_exception.md.DTaAZohQ.lean.js
+++ b/.vitepress/dist/assets/src_guide_exception.md.BnNhx80g.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1720593505000}'),h={name:"src/guide/exception.md"},k=n("",9),t=[k];function l(p,e,E,r,d,g){return a(),i("div",null,t)}const c=s(h,[["render",l]]);export{F as __pageData,c as default};
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1721036629000}'),h={name:"src/guide/exception.md"},k=n("",9),t=[k];function l(p,e,E,r,d,g){return a(),i("div",null,t)}const c=s(h,[["render",l]]);export{F as __pageData,c as default};
diff --git a/.vitepress/dist/assets/src_guide_flow.md.CDskEDnP.js b/.vitepress/dist/assets/src_guide_flow.md.DW-rwMWD.js
similarity index 95%
rename from .vitepress/dist/assets/src_guide_flow.md.CDskEDnP.js
rename to .vitepress/dist/assets/src_guide_flow.md.DW-rwMWD.js
index 8decef4..c479b12 100644
--- a/.vitepress/dist/assets/src_guide_flow.md.CDskEDnP.js
+++ b/.vitepress/dist/assets/src_guide_flow.md.DW-rwMWD.js
@@ -1 +1 @@
-import{_ as e,c as a,o as t,a4 as o,aa as i}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1720847903000}'),r={name:"src/guide/flow.md"},s=o('

Ai 流程编排 ​

coming soon!!!

Nodejs 版本

视频演示

开发 Ai 应用必备!!!

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

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

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

流程编排

注意

Ai 流程编排+知识库届时会上架到插件市场

',10),p=[s];function c(l,_,n,d,m,f){return t(),a("div",null,p)}const A=e(r,[["render",c]]);export{u as __pageData,A as default}; +import{_ as e,c as a,o as t,a4 as o,aa as i}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1721036629000}'),r={name:"src/guide/flow.md"},s=o('

Ai 流程编排 ​

coming soon!!!

Nodejs 版本

视频演示

开发 Ai 应用必备!!!

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

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

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

流程编排

注意

Ai 流程编排+知识库届时会上架到插件市场

',10),p=[s];function c(l,_,n,d,m,f){return t(),a("div",null,p)}const A=e(r,[["render",c]]);export{u as __pageData,A as default}; diff --git a/.vitepress/dist/assets/src_guide_flow.md.CDskEDnP.lean.js b/.vitepress/dist/assets/src_guide_flow.md.DW-rwMWD.lean.js similarity index 85% rename from .vitepress/dist/assets/src_guide_flow.md.CDskEDnP.lean.js rename to .vitepress/dist/assets/src_guide_flow.md.DW-rwMWD.lean.js index 823e2a2..6c43c27 100644 --- a/.vitepress/dist/assets/src_guide_flow.md.CDskEDnP.lean.js +++ b/.vitepress/dist/assets/src_guide_flow.md.DW-rwMWD.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a4 as o,aa as i}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1720847903000}'),r={name:"src/guide/flow.md"},s=o("",10),p=[s];function c(l,_,n,d,m,f){return t(),a("div",null,p)}const A=e(r,[["render",c]]);export{u as __pageData,A as default}; +import{_ as e,c as a,o as t,a4 as o,aa as i}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1721036629000}'),r={name:"src/guide/flow.md"},s=o("",10),p=[s];function c(l,_,n,d,m,f){return t(),a("div",null,p)}const A=e(r,[["render",c]]);export{u as __pageData,A as default}; diff --git a/.vitepress/dist/assets/src_guide_initData.md.D5kMLxxc.js b/.vitepress/dist/assets/src_guide_initData.md.xxcXuYBs.js similarity index 99% rename from .vitepress/dist/assets/src_guide_initData.md.D5kMLxxc.js rename to .vitepress/dist/assets/src_guide_initData.md.xxcXuYBs.js index ba873a8..d0f7669 100644 --- a/.vitepress/dist/assets/src_guide_initData.md.D5kMLxxc.js +++ b/.vitepress/dist/assets/src_guide_initData.md.xxcXuYBs.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1720593505000}'),p={name:"src/guide/initData.md"},l=n(`

数据初始化 ​

有些功能模块上线时,需要初始化一些数据

可以在 resources 下的 cool/data/db 目录创建 demo.json 文件

json 格式如下,demo 为表的名称,里面是个数组,数组里可以包含多个对象,每个对象中的 key 为表的字段,value 为对应的值

规范:实体需以 Entity 结尾

json
{
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1721036629000}'),p={name:"src/guide/initData.md"},l=n(`

数据初始化 ​

有些功能模块上线时,需要初始化一些数据

可以在 resources 下的 cool/data/db 目录创建 demo.json 文件

json 格式如下,demo 为表的名称,里面是个数组,数组里可以包含多个对象,每个对象中的 key 为表的字段,value 为对应的值

规范:实体需以 Entity 结尾

json
{
   "demo": [
     {
       "keyName": "rich",
diff --git a/.vitepress/dist/assets/src_guide_initData.md.D5kMLxxc.lean.js b/.vitepress/dist/assets/src_guide_initData.md.xxcXuYBs.lean.js
similarity index 85%
rename from .vitepress/dist/assets/src_guide_initData.md.D5kMLxxc.lean.js
rename to .vitepress/dist/assets/src_guide_initData.md.xxcXuYBs.lean.js
index 9511f94..302c782 100644
--- a/.vitepress/dist/assets/src_guide_initData.md.D5kMLxxc.lean.js
+++ b/.vitepress/dist/assets/src_guide_initData.md.xxcXuYBs.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1720593505000}'),p={name:"src/guide/initData.md"},l=n("",10),t=[l];function h(k,e,E,r,d,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1721036629000}'),p={name:"src/guide/initData.md"},l=n("",10),t=[l];function h(k,e,E,r,d,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
diff --git a/.vitepress/dist/assets/src_guide_plugin.md.D4um12uG.js b/.vitepress/dist/assets/src_guide_plugin.md.D3cyKMhP.js
similarity index 99%
rename from .vitepress/dist/assets/src_guide_plugin.md.D4um12uG.js
rename to .vitepress/dist/assets/src_guide_plugin.md.D3cyKMhP.js
index 96b62a3..c8f9498 100644
--- a/.vitepress/dist/assets/src_guide_plugin.md.D4um12uG.js
+++ b/.vitepress/dist/assets/src_guide_plugin.md.D3cyKMhP.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a4 as n,ab as l}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1720874463000}'),p={name:"src/guide/plugin.md"},t=n('

扩展插件 ​

为了丰富系统功能,我们提供了插件系统,可以通过插件的方式来扩展系统功能。

而不用一味地堆功能,导致系统臃肿。你可以自己开发插件,也可以使用别人开发的插件。

点击前往插件市场

使用插件 ​

1、安装 ​

首先下载插件包,然后在系统中安装插件包。插件包可以通过官网下载插件。

打开后台管理系统,点击左侧菜单扩展管理/插件管理,点击+按钮,选择插件包进行安装。

2、调用 ​

安装插件之后,就可以在代码中调用插件的方法了。

java
package com.cool.core.base.controller;
+import{_ as s,c as i,o as a,a4 as n,ab as l}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1721036629000}'),p={name:"src/guide/plugin.md"},t=n('

扩展插件 ​

为了丰富系统功能,我们提供了插件系统,可以通过插件的方式来扩展系统功能。

而不用一味地堆功能,导致系统臃肿。你可以自己开发插件,也可以使用别人开发的插件。

点击前往插件市场

使用插件 ​

1、安装 ​

首先下载插件包,然后在系统中安装插件包。插件包可以通过官网下载插件。

打开后台管理系统,点击左侧菜单扩展管理/插件管理,点击+按钮,选择插件包进行安装。

2、调用 ​

安装插件之后,就可以在代码中调用插件的方法了。

java
package com.cool.core.base.controller;
 
 import cn.hutool.core.util.ObjUtil;
 import com.cool.core.util.CoolPluginInvokers;
diff --git a/.vitepress/dist/assets/src_guide_plugin.md.D4um12uG.lean.js b/.vitepress/dist/assets/src_guide_plugin.md.D3cyKMhP.lean.js
similarity index 85%
rename from .vitepress/dist/assets/src_guide_plugin.md.D4um12uG.lean.js
rename to .vitepress/dist/assets/src_guide_plugin.md.D3cyKMhP.lean.js
index e201de9..bc69f29 100644
--- a/.vitepress/dist/assets/src_guide_plugin.md.D4um12uG.lean.js
+++ b/.vitepress/dist/assets/src_guide_plugin.md.D3cyKMhP.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n,ab as l}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1720874463000}'),p={name:"src/guide/plugin.md"},t=n("",64),h=[t];function k(e,E,r,d,g,o){return a(),i("div",null,h)}const u=s(p,[["render",k]]);export{c as __pageData,u as default};
+import{_ as s,c as i,o as a,a4 as n,ab as l}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1721036629000}'),p={name:"src/guide/plugin.md"},t=n("",64),h=[t];function k(e,E,r,d,g,o){return a(),i("div",null,h)}const u=s(p,[["render",k]]);export{c as __pageData,u as default};
diff --git a/.vitepress/dist/assets/src_guide_quick.md.DbcQSNam.js b/.vitepress/dist/assets/src_guide_quick.md.BnN2Y-B1.js
similarity index 99%
rename from .vitepress/dist/assets/src_guide_quick.md.DbcQSNam.js
rename to .vitepress/dist/assets/src_guide_quick.md.BnN2Y-B1.js
index 97d298b..3c57871 100644
--- a/.vitepress/dist/assets/src_guide_quick.md.DbcQSNam.js
+++ b/.vitepress/dist/assets/src_guide_quick.md.BnN2Y-B1.js
@@ -1,4 +1,4 @@
-import{_ as a,c as s,o as i,a4 as e,ac as n,ad as l}from"./chunks/framework.DkvLLw5I.js";const E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1720593505000}'),t={name:"src/guide/quick.md"},p=e(`

快速开始 ​

开始使用 Cool-Admin!!!

环境准备 ​

  • Java Jdk >= 17 (注意:选择 GraalVM)
  • Mysql >= 5.7 (推荐 8.0)
  • Maven >= 3.6 (推荐 3.9)

运行系统 ​

1、拉取源码 ​

项目是前后端分离的,需要分别拉取前后端代码到本地,源码仓库

2、配置数据库 ​

后端修改数据库配置,配置文件位于src/resources/application-local.yml

以 Mysql 为例,其他数据库适配中...

Mysql(>=5.7版本),建议 8.0,首次启动会自动初始化并导入数据

yaml
# mysql,驱动已经内置,无需安装
+import{_ as a,c as s,o as i,a4 as e,ac as n,ad as l}from"./chunks/framework.DkvLLw5I.js";const E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1721036629000}'),t={name:"src/guide/quick.md"},p=e(`

快速开始 ​

开始使用 Cool-Admin!!!

环境准备 ​

  • Java Jdk >= 17 (注意:选择 GraalVM)
  • Mysql >= 5.7 (推荐 8.0)
  • Maven >= 3.6 (推荐 3.9)

运行系统 ​

1、拉取源码 ​

项目是前后端分离的,需要分别拉取前后端代码到本地,源码仓库

2、配置数据库 ​

后端修改数据库配置,配置文件位于src/resources/application-local.yml

以 Mysql 为例,其他数据库适配中...

Mysql(>=5.7版本),建议 8.0,首次启动会自动初始化并导入数据

yaml
# mysql,驱动已经内置,无需安装
 spring:
   datasource:
     url: jdbc:mysql://127.0.0.1:3306/cool?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
diff --git a/.vitepress/dist/assets/src_guide_quick.md.DbcQSNam.lean.js b/.vitepress/dist/assets/src_guide_quick.md.BnN2Y-B1.lean.js
similarity index 85%
rename from .vitepress/dist/assets/src_guide_quick.md.DbcQSNam.lean.js
rename to .vitepress/dist/assets/src_guide_quick.md.BnN2Y-B1.lean.js
index 154f4ac..e30fb8b 100644
--- a/.vitepress/dist/assets/src_guide_quick.md.DbcQSNam.lean.js
+++ b/.vitepress/dist/assets/src_guide_quick.md.BnN2Y-B1.lean.js
@@ -1 +1 @@
-import{_ as a,c as s,o as i,a4 as e,ac as n,ad as l}from"./chunks/framework.DkvLLw5I.js";const E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1720593505000}'),t={name:"src/guide/quick.md"},p=e("",23),h=[p];function r(o,c,d,k,g,u){return i(),s("div",null,h)}const _=a(t,[["render",r]]);export{E as __pageData,_ as default};
+import{_ as a,c as s,o as i,a4 as e,ac as n,ad as l}from"./chunks/framework.DkvLLw5I.js";const E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1721036629000}'),t={name:"src/guide/quick.md"},p=e("",23),h=[p];function r(o,c,d,k,g,u){return i(),s("div",null,h)}const _=a(t,[["render",r]]);export{E as __pageData,_ as default};
diff --git a/.vitepress/dist/assets/src_guide_security.md.DjyHN9T3.js b/.vitepress/dist/assets/src_guide_security.md.DhNBVqnr.js
similarity index 99%
rename from .vitepress/dist/assets/src_guide_security.md.DjyHN9T3.js
rename to .vitepress/dist/assets/src_guide_security.md.DhNBVqnr.js
index ac4bead..ddc3c5e 100644
--- a/.vitepress/dist/assets/src_guide_security.md.DjyHN9T3.js
+++ b/.vitepress/dist/assets/src_guide_security.md.DhNBVqnr.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1720593505000}'),h={name:"src/guide/security.md"},k=n(`

权限校验 ​

采用 spring-security 与 jwt 作为框架安全与权限校验。

配置 ​

yaml
cool:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1721036629000}'),h={name:"src/guide/security.md"},k=n(`

权限校验 ​

采用 spring-security 与 jwt 作为框架安全与权限校验。

配置 ​

yaml
cool:
   # token 相关配置
   token:
     # 过期时间 单位:秒 半小时
diff --git a/.vitepress/dist/assets/src_guide_security.md.DjyHN9T3.lean.js b/.vitepress/dist/assets/src_guide_security.md.DhNBVqnr.lean.js
similarity index 70%
rename from .vitepress/dist/assets/src_guide_security.md.DjyHN9T3.lean.js
rename to .vitepress/dist/assets/src_guide_security.md.DhNBVqnr.lean.js
index 9db0e5f..6be031e 100644
--- a/.vitepress/dist/assets/src_guide_security.md.DjyHN9T3.lean.js
+++ b/.vitepress/dist/assets/src_guide_security.md.DhNBVqnr.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1720593505000}'),h={name:"src/guide/security.md"},k=n("",20),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",t]]);export{c as __pageData,F as default};
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1721036629000}'),h={name:"src/guide/security.md"},k=n("",20),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",t]]);export{c as __pageData,F as default};
diff --git a/.vitepress/dist/assets/src_guide_service.md.Coeaaupo.lean.js b/.vitepress/dist/assets/src_guide_service.md.Coeaaupo.lean.js
deleted file mode 100644
index b591680..0000000
--- a/.vitepress/dist/assets/src_guide_service.md.Coeaaupo.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":null}'),e={name:"src/guide/service.md"},l=n("",10),p=[l];function t(h,k,r,d,c,o){return a(),i("div",null,p)}const y=s(e,[["render",t]]);export{g as __pageData,y as default};
diff --git a/.vitepress/dist/assets/src_guide_service.md.Coeaaupo.js b/.vitepress/dist/assets/src_guide_service.md.NY_1YFAS.js
similarity index 79%
rename from .vitepress/dist/assets/src_guide_service.md.Coeaaupo.js
rename to .vitepress/dist/assets/src_guide_service.md.NY_1YFAS.js
index e28c477..f078e63 100644
--- a/.vitepress/dist/assets/src_guide_service.md.Coeaaupo.js
+++ b/.vitepress/dist/assets/src_guide_service.md.NY_1YFAS.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":null}'),e={name:"src/guide/service.md"},l=n(`

服务 ​

处理业务逻辑的代码应该被封装在服务中。

Crud ​

BaseService中集成了常用的 CRUD 操作,可以参考BaseService的实现。

修改前后 ​

可以重写modifyBefore和modifyAfter方法,在修改数据之前或之后做一些处理

  • 修改之前
java
/**
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":1721036629000}'),e={name:"src/guide/service.md"},l=n(`

服务 ​

处理业务逻辑的代码应该被封装在服务中。

Crud ​

BaseService中集成了常用的 CRUD 操作,可以参考BaseService的实现。

修改前后 ​

可以重写modifyBefore和modifyAfter方法,在修改数据之前或之后做一些处理

  • 修改之前
java
/**
  * 修改之前
  *
  * @param requestParams 请求参数
diff --git a/.vitepress/dist/assets/src_guide_service.md.NY_1YFAS.lean.js b/.vitepress/dist/assets/src_guide_service.md.NY_1YFAS.lean.js
new file mode 100644
index 0000000..896898a
--- /dev/null
+++ b/.vitepress/dist/assets/src_guide_service.md.NY_1YFAS.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":1721036629000}'),e={name:"src/guide/service.md"},l=n("",10),p=[l];function t(h,k,r,d,c,o){return a(),i("div",null,p)}const y=s(e,[["render",t]]);export{g as __pageData,y as default};
diff --git a/.vitepress/dist/assets/src_guide_upload.md.DSE1ASmj.js b/.vitepress/dist/assets/src_guide_upload.md.B0f_XRGJ.js
similarity index 98%
rename from .vitepress/dist/assets/src_guide_upload.md.DSE1ASmj.js
rename to .vitepress/dist/assets/src_guide_upload.md.B0f_XRGJ.js
index 0edd0b8..9205605 100644
--- a/.vitepress/dist/assets/src_guide_upload.md.DSE1ASmj.js
+++ b/.vitepress/dist/assets/src_guide_upload.md.B0f_XRGJ.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1720593505000}'),l={name:"src/guide/upload.md"},h=n(`

文件上传 ​

框架自带两种文件上传方式本地上传与云存储,与前端紧密结合,

前端会根据后端返回的上传模式进行本地上传或者云存储签名直传(不经过服务器,直接上传到对应的云存储)

  • 本地上传
  • 云存储,如阿里云、腾讯云、七牛云等

TIP

安装云存储插件,如 Oss,系统的文件上传就会自动替换成云存储上传的方式,云存储上传服务端值提供签名供前端直传到对应的云存储

使用 ​

application.yml

yaml
cool:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1721036629000}'),l={name:"src/guide/upload.md"},h=n(`

文件上传 ​

框架自带两种文件上传方式本地上传与云存储,与前端紧密结合,

前端会根据后端返回的上传模式进行本地上传或者云存储签名直传(不经过服务器,直接上传到对应的云存储)

  • 本地上传
  • 云存储,如阿里云、腾讯云、七牛云等

TIP

安装云存储插件,如 Oss,系统的文件上传就会自动替换成云存储上传的方式,云存储上传服务端值提供签名供前端直传到对应的云存储

使用 ​

application.yml

yaml
cool:
   # 文件上传相关
   file:
     #上传模式
diff --git a/.vitepress/dist/assets/src_guide_upload.md.DSE1ASmj.lean.js b/.vitepress/dist/assets/src_guide_upload.md.B0f_XRGJ.lean.js
similarity index 70%
rename from .vitepress/dist/assets/src_guide_upload.md.DSE1ASmj.lean.js
rename to .vitepress/dist/assets/src_guide_upload.md.B0f_XRGJ.lean.js
index eb4243e..c3f8511 100644
--- a/.vitepress/dist/assets/src_guide_upload.md.DSE1ASmj.lean.js
+++ b/.vitepress/dist/assets/src_guide_upload.md.B0f_XRGJ.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1720593505000}'),l={name:"src/guide/upload.md"},h=n("",11),p=[h];function k(t,e,E,r,d,g){return a(),i("div",null,p)}const F=s(l,[["render",k]]);export{o as __pageData,F as default};
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1721036629000}'),l={name:"src/guide/upload.md"},h=n("",11),p=[h];function k(t,e,E,r,d,g){return a(),i("div",null,p)}const F=s(l,[["render",k]]);export{o as __pageData,F as default};
diff --git a/.vitepress/dist/assets/src_introduce_index.md.CqGpQfmF.js b/.vitepress/dist/assets/src_introduce_index.md.BzftqBMQ.js
similarity index 98%
rename from .vitepress/dist/assets/src_introduce_index.md.CqGpQfmF.js
rename to .vitepress/dist/assets/src_introduce_index.md.BzftqBMQ.js
index 0457e67..ab12547 100644
--- a/.vitepress/dist/assets/src_introduce_index.md.CqGpQfmF.js
+++ b/.vitepress/dist/assets/src_introduce_index.md.BzftqBMQ.js
@@ -1 +1 @@
-import{_ as i,c as l,o as e,a4 as t,ad as a,aa as o}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1720847903000}'),r={name:"src/introduce/index.md"},n=t('

简介 ​

技术选型 ​

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

一、环境要求 ​

  • 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 天的保留,支持回滚操作。
  • 前后端插件:支持动态安装、卸载插件,实现功能可插拔。
',18),d=[n];function s(c,h,u,m,_,p){return e(),l("div",null,d)}const f=i(r,[["render",s]]);export{x as __pageData,f as default}; +import{_ as i,c as l,o as e,a4 as t,ad as a,aa as o}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1721036629000}'),r={name:"src/introduce/index.md"},n=t('

简介 ​

技术选型 ​

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

一、环境要求 ​

  • 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 天的保留,支持回滚操作。
  • 前后端插件:支持动态安装、卸载插件,实现功能可插拔。
',18),d=[n];function s(c,h,u,m,_,p){return e(),l("div",null,d)}const f=i(r,[["render",s]]);export{x as __pageData,f as default}; diff --git a/.vitepress/dist/assets/src_introduce_index.md.CqGpQfmF.lean.js b/.vitepress/dist/assets/src_introduce_index.md.BzftqBMQ.lean.js similarity index 85% rename from .vitepress/dist/assets/src_introduce_index.md.CqGpQfmF.lean.js rename to .vitepress/dist/assets/src_introduce_index.md.BzftqBMQ.lean.js index 9ace700..223461c 100644 --- a/.vitepress/dist/assets/src_introduce_index.md.CqGpQfmF.lean.js +++ b/.vitepress/dist/assets/src_introduce_index.md.BzftqBMQ.lean.js @@ -1 +1 @@ -import{_ as i,c as l,o as e,a4 as t,ad as a,aa as o}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1720847903000}'),r={name:"src/introduce/index.md"},n=t("",18),d=[n];function s(c,h,u,m,_,p){return e(),l("div",null,d)}const f=i(r,[["render",s]]);export{x as __pageData,f as default}; +import{_ as i,c as l,o as e,a4 as t,ad as a,aa as o}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1721036629000}'),r={name:"src/introduce/index.md"},n=t("",18),d=[n];function s(c,h,u,m,_,p){return e(),l("div",null,d)}const f=i(r,[["render",s]]);export{x as __pageData,f as default}; diff --git a/.vitepress/dist/assets/src_introduce_src.md.ByQ4FCeZ.js b/.vitepress/dist/assets/src_introduce_src.md.DzCw-0KZ.js similarity index 96% rename from .vitepress/dist/assets/src_introduce_src.md.ByQ4FCeZ.js rename to .vitepress/dist/assets/src_introduce_src.md.DzCw-0KZ.js index 3e10e0a..4979d50 100644 --- a/.vitepress/dist/assets/src_introduce_src.md.ByQ4FCeZ.js +++ b/.vitepress/dist/assets/src_introduce_src.md.DzCw-0KZ.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1720593505000}'),r={name:"src/introduce/src.md"},c=o('

源码 ​

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

后端(点个 Star) ​

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

或

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

前端(点个 Star) ​

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

或

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

',10),i=[c];function l(s,n,d,h,m,f){return t(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default}; +import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1721036629000}'),r={name:"src/introduce/src.md"},c=o('

源码 ​

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

后端(点个 Star) ​

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

或

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

前端(点个 Star) ​

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

或

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

',10),i=[c];function l(s,n,d,h,m,f){return t(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default}; diff --git a/.vitepress/dist/assets/src_introduce_src.md.ByQ4FCeZ.lean.js b/.vitepress/dist/assets/src_introduce_src.md.DzCw-0KZ.lean.js similarity index 85% rename from .vitepress/dist/assets/src_introduce_src.md.ByQ4FCeZ.lean.js rename to .vitepress/dist/assets/src_introduce_src.md.DzCw-0KZ.lean.js index 90ace4e..16258d6 100644 --- a/.vitepress/dist/assets/src_introduce_src.md.ByQ4FCeZ.lean.js +++ b/.vitepress/dist/assets/src_introduce_src.md.DzCw-0KZ.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1720593505000}'),r={name:"src/introduce/src.md"},c=o("",10),i=[c];function l(s,n,d,h,m,f){return t(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default}; +import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1721036629000}'),r={name:"src/introduce/src.md"},c=o("",10),i=[c];function l(s,n,d,h,m,f){return t(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default}; diff --git a/.vitepress/dist/assets/src_question_common.md.BDnOx12Z.js b/.vitepress/dist/assets/src_question_common.md.BDnOx12Z.js deleted file mode 100644 index a64a36b..0000000 --- a/.vitepress/dist/assets/src_question_common.md.BDnOx12Z.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/common.md","filePath":"src/question/common.md","lastUpdated":null}'),l={name:"src/question/common.md"},i=o('

常见问题 ​

项目中常见的问题

1、找不到类似xxxTableDef文件 ​

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

你可以这样做:

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

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

',7),c=[i];function r(n,s,d,_,m,p){return a(),t("div",null,c)}const x=e(l,[["render",r]]);export{h as __pageData,x as default}; diff --git a/.vitepress/dist/assets/src_question_common.md.BDnOx12Z.lean.js b/.vitepress/dist/assets/src_question_common.md.BDnOx12Z.lean.js deleted file mode 100644 index af9f8e7..0000000 --- a/.vitepress/dist/assets/src_question_common.md.BDnOx12Z.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/common.md","filePath":"src/question/common.md","lastUpdated":null}'),l={name:"src/question/common.md"},i=o("",7),c=[i];function r(n,s,d,_,m,p){return a(),t("div",null,c)}const x=e(l,[["render",r]]);export{h as __pageData,x as default}; diff --git a/.vitepress/dist/assets/src_question_common.md.DWynvsYj.js b/.vitepress/dist/assets/src_question_common.md.DWynvsYj.js new file mode 100644 index 0000000..7c43466 --- /dev/null +++ b/.vitepress/dist/assets/src_question_common.md.DWynvsYj.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/common.md","filePath":"src/question/common.md","lastUpdated":1721036629000}'),l={name:"src/question/common.md"},i=o('

常见问题 ​

项目中常见的问题

1、找不到类似xxxTableDef文件 ​

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

你可以这样做:

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

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

',7),c=[i];function r(n,s,d,_,m,p){return a(),t("div",null,c)}const x=e(l,[["render",r]]);export{u as __pageData,x as default}; diff --git a/.vitepress/dist/assets/src_question_common.md.DWynvsYj.lean.js b/.vitepress/dist/assets/src_question_common.md.DWynvsYj.lean.js new file mode 100644 index 0000000..9c839e2 --- /dev/null +++ b/.vitepress/dist/assets/src_question_common.md.DWynvsYj.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/common.md","filePath":"src/question/common.md","lastUpdated":1721036629000}'),l={name:"src/question/common.md"},i=o("",7),c=[i];function r(n,s,d,_,m,p){return a(),t("div",null,c)}const x=e(l,[["render",r]]);export{u as __pageData,x as default}; diff --git a/.vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.js b/.vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.js deleted file mode 100644 index ae9dcf1..0000000 --- a/.vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as o,o as s,j as e,a}from"./chunks/framework.DkvLLw5I.js";const b=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),n={name:"src/todo/plan.md"},l=e("h1",{id:"计划",tabindex:"-1"},[a("计划 "),e("a",{class:"header-anchor",href:"#计划","aria-label":'Permalink to "计划"'},"​")],-1),r=e("p",null,"以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。",-1),c=e("h2",{id:"v7-1-1",tabindex:"-1"},[a("v7.1.1 "),e("a",{class:"header-anchor",href:"#v7-1-1","aria-label":'Permalink to "v7.1.1"'},"​")],-1),d=e("ul",null,[e("li",null,"新增 Ai 自动编码功能,简单功能零代码实现;"),e("li",null,"新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;")],-1),i=[l,r,c,d];function _(h,p,m,f,u,v){return s(),o("div",null,i)}const k=t(n,[["render",_]]);export{b as __pageData,k as default}; diff --git a/.vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.lean.js b/.vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.lean.js deleted file mode 100644 index ae9dcf1..0000000 --- a/.vitepress/dist/assets/src_todo_plan.md.BzDFnPcU.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as o,o as s,j as e,a}from"./chunks/framework.DkvLLw5I.js";const b=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),n={name:"src/todo/plan.md"},l=e("h1",{id:"计划",tabindex:"-1"},[a("计划 "),e("a",{class:"header-anchor",href:"#计划","aria-label":'Permalink to "计划"'},"​")],-1),r=e("p",null,"以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。",-1),c=e("h2",{id:"v7-1-1",tabindex:"-1"},[a("v7.1.1 "),e("a",{class:"header-anchor",href:"#v7-1-1","aria-label":'Permalink to "v7.1.1"'},"​")],-1),d=e("ul",null,[e("li",null,"新增 Ai 自动编码功能,简单功能零代码实现;"),e("li",null,"新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;")],-1),i=[l,r,c,d];function _(h,p,m,f,u,v){return s(),o("div",null,i)}const k=t(n,[["render",_]]);export{b as __pageData,k as default}; diff --git a/.vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.js b/.vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.js new file mode 100644 index 0000000..7dae91f --- /dev/null +++ b/.vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as e,a4 as o}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),l={name:"src/todo/plan.md"},i=o('

计划 ​

以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。

完善插件 ​

  • Ai 流程编排插件
  • 文件上传插件
  • 短信插件
  • 支付插件
  • 微信 SDK 插件
',4),r=[i];function s(n,_,c,d,p,h){return e(),t("div",null,r)}const f=a(l,[["render",s]]);export{u as __pageData,f as default}; diff --git a/.vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.lean.js b/.vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.lean.js new file mode 100644 index 0000000..ec3f1ad --- /dev/null +++ b/.vitepress/dist/assets/src_todo_plan.md.Cc4G0Y6B.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as e,a4 as o}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),l={name:"src/todo/plan.md"},i=o("",4),r=[i];function s(n,_,c,d,p,h){return e(),t("div",null,r)}const f=a(l,[["render",s]]);export{u as __pageData,f as default}; diff --git a/.vitepress/dist/assets/src_todo_update.md.BLutrh4G.js b/.vitepress/dist/assets/src_todo_update.md.BLutrh4G.js deleted file mode 100644 index e4d4533..0000000 --- a/.vitepress/dist/assets/src_todo_update.md.BLutrh4G.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o('

更新 ​

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

v7.1.0(2024-06-27) ​

  • 升级到 Springboot3.x;
  • 升级所有相关依赖到最新;
  • 跟进Nodejs 版相关功能;
  • 优化若干问题;
',4),s=[l];function i(d,c,n,_,p,h){return t(),e("div",null,s)}const f=a(r,[["render",i]]);export{m as __pageData,f as default}; diff --git a/.vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.js b/.vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.js new file mode 100644 index 0000000..0102644 --- /dev/null +++ b/.vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o('

更新 ​

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

## v7.1.1(2024-07-15) ​

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

v7.1.0(2024-06-27) ​

  • 升级到 Springboot3.x;
  • 升级所有相关依赖到最新;
  • 跟进Nodejs 版相关功能;
  • 优化若干问题;
',6),i=[l];function s(d,c,n,_,h,p){return t(),e("div",null,i)}const f=a(r,[["render",s]]);export{m as __pageData,f as default}; diff --git a/.vitepress/dist/assets/src_todo_update.md.BLutrh4G.lean.js b/.vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.lean.js similarity index 69% rename from .vitepress/dist/assets/src_todo_update.md.BLutrh4G.lean.js rename to .vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.lean.js index 1c7d275..050689e 100644 --- a/.vitepress/dist/assets/src_todo_update.md.BLutrh4G.lean.js +++ b/.vitepress/dist/assets/src_todo_update.md.Mxoj04Uf.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o("",4),s=[l];function i(d,c,n,_,p,h){return t(),e("div",null,s)}const f=a(r,[["render",i]]);export{m as __pageData,f as default}; +import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o("",6),i=[l];function s(d,c,n,_,h,p){return t(),e("div",null,i)}const f=a(r,[["render",s]]);export{m as __pageData,f as default}; diff --git a/.vitepress/dist/hashmap.json b/.vitepress/dist/hashmap.json index 5944c2a..2d2ef8e 100644 --- a/.vitepress/dist/hashmap.json +++ b/.vitepress/dist/hashmap.json @@ -1 +1 @@ -{"index.md":"Cgb96qqp","readme.md":"CH6W0xY-","src_about_index.md":"D5pLvKL8","src_guide_ai.md":"C2wKEBKg","src_guide_cache.md":"BhqP_wiC","src_guide_controller.md":"DFXsvLef","src_guide_db.md":"JecGjjcC","src_guide_dev.md":"Cgkglw3x","src_guide_dir.md":"z6VUJtso","src_guide_exception.md":"DTaAZohQ","src_guide_flow.md":"CDskEDnP","src_guide_initdata.md":"D5kMLxxc","src_guide_plugin.md":"D4um12uG","src_guide_quick.md":"DbcQSNam","src_guide_security.md":"DjyHN9T3","src_guide_service.md":"Coeaaupo","src_guide_swagger.md":"C8SICQIq","src_guide_upload.md":"DSE1ASmj","src_introduce_index.md":"CqGpQfmF","src_introduce_show.md":"y18FuumV","src_introduce_src.md":"ByQ4FCeZ","src_question_common.md":"BDnOx12Z","src_todo_plan.md":"BzDFnPcU","src_todo_update.md":"BLutrh4G"} +{"index.md":"Cgb96qqp","readme.md":"CH6W0xY-","src_about_index.md":"D5pLvKL8","src_guide_ai.md":"CQr0rH-R","src_guide_cache.md":"sFO9ncvK","src_guide_controller.md":"CKU6QhGJ","src_guide_db.md":"CW_Li52O","src_guide_dev.md":"BolOgpNe","src_guide_dir.md":"yr-Ujx3e","src_guide_exception.md":"BnNhx80g","src_guide_flow.md":"DW-rwMWD","src_guide_initdata.md":"xxcXuYBs","src_guide_plugin.md":"D3cyKMhP","src_guide_quick.md":"BnN2Y-B1","src_guide_security.md":"DhNBVqnr","src_guide_service.md":"NY_1YFAS","src_guide_swagger.md":"C8SICQIq","src_guide_upload.md":"B0f_XRGJ","src_introduce_index.md":"BzftqBMQ","src_introduce_show.md":"y18FuumV","src_introduce_src.md":"DzCw-0KZ","src_question_common.md":"DWynvsYj","src_todo_plan.md":"Cc4G0Y6B","src_todo_update.md":"Mxoj04Uf"} diff --git a/.vitepress/dist/index.html b/.vitepress/dist/index.html index f477d21..029ca46 100644 --- a/.vitepress/dist/index.html +++ b/.vitepress/dist/index.html @@ -8,17 +8,17 @@ - + - +
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 2625191..2db5a75 100644 --- a/.vitepress/dist/src/about/index.html +++ b/.vitepress/dist/src/about/index.html @@ -8,17 +8,17 @@ - + - +
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 8b683ad..b353b3a 100644 --- a/.vitepress/dist/src/guide/ai.html +++ b/.vitepress/dist/src/guide/ai.html @@ -8,17 +8,17 @@ - + - - + + - - + + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/cache.html b/.vitepress/dist/src/guide/cache.html index b856645..788e56b 100644 --- a/.vitepress/dist/src/guide/cache.html +++ b/.vitepress/dist/src/guide/cache.html @@ -8,11 +8,11 @@ - + - - + + @@ -50,8 +50,8 @@ coolCache.set("a", 1); return coolCache.get("a", Integer.class); } -}
- +}
+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/controller.html b/.vitepress/dist/src/guide/controller.html index 5b1de6d..a40a664 100644 --- a/.vitepress/dist/src/guide/controller.html +++ b/.vitepress/dist/src/guide/controller.html @@ -8,11 +8,11 @@ - + - - + + @@ -96,8 +96,8 @@ info = info.mutate().paths(path).build().combine(info); 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 e4fddbf..ee28cdf 100644 --- a/.vitepress/dist/src/guide/db.html +++ b/.vitepress/dist/src/guide/db.html @@ -8,17 +8,17 @@ - + - - + + -
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,可以自动创建表,并且支持表字段的修改。

注意

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

- +
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/dev.html b/.vitepress/dist/src/guide/dev.html index 96e9248..b71c6b0 100644 --- a/.vitepress/dist/src/guide/dev.html +++ b/.vitepress/dist/src/guide/dev.html @@ -8,11 +8,11 @@ - + - - + + @@ -32,8 +32,8 @@ codeGenerator.mapper(codeModel); codeGenerator.service(codeModel); } -}
  • 自动生成前端页面,通过管理后台菜单管理的快速创建即可生成

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

- +}
  • 自动生成前端页面,通过管理后台菜单管理的快速创建即可生成

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

+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/dir.html b/.vitepress/dist/src/guide/dir.html index fe9f6eb..d9731f6 100644 --- a/.vitepress/dist/src/guide/dir.html +++ b/.vitepress/dist/src/guide/dir.html @@ -8,11 +8,11 @@ - + - - + + @@ -41,8 +41,8 @@ ├─ cool │ └─ data │ └─ db 初始化数据json文件 - └─ mapper mapper xml 文件

提示

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

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

- + └─ 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 26de0c6..c239c15 100644 --- a/.vitepress/dist/src/guide/exception.html +++ b/.vitepress/dist/src/guide/exception.html @@ -8,11 +8,11 @@ - + - - + + @@ -75,8 +75,8 @@ entity.setPassword(MD5.create().digestHex(entity.getPassword())); 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 a29684d..099c381 100644 --- a/.vitepress/dist/src/guide/flow.html +++ b/.vitepress/dist/src/guide/flow.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

Ai 流程编排 ​

coming soon!!!

Nodejs 版本

视频演示

开发 Ai 应用必备!!!

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

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

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

流程编排

注意

Ai 流程编排+知识库届时会上架到插件市场

- +
Skip to content

Ai 流程编排 ​

coming soon!!!

Nodejs 版本

视频演示

开发 Ai 应用必备!!!

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

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

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

流程编排

注意

Ai 流程编排+知识库届时会上架到插件市场

+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/initData.html b/.vitepress/dist/src/guide/initData.html index 11cbee0..0847f9d 100644 --- a/.vitepress/dist/src/guide/initData.html +++ b/.vitepress/dist/src/guide/initData.html @@ -8,11 +8,11 @@ - + - - + + @@ -49,8 +49,8 @@ log.info("数据初始化完成!"); } //...... -}

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

- +}

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

+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/plugin.html b/.vitepress/dist/src/guide/plugin.html index a2765c7..287ea69 100644 --- a/.vitepress/dist/src/guide/plugin.html +++ b/.vitepress/dist/src/guide/plugin.html @@ -8,11 +8,11 @@ - + - - + + @@ -253,8 +253,8 @@ [INFO] Excluding cn.hutool:hutool-json:jar:5.8.26 from the shaded jar.

打包 ​

打包命令

mvn clean package

打包结果, 在 target 目录下 .cool 后缀的文件,就是我们的插件包

target/cool-admin-java-plugin-1.0-SNAPSHOT.cool

其中对应的包名称 可在 pom.xml 中的 properties 里指定

xml
<properties>
     <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、扩展性: 通过动态加载,可以轻松地添加新的功能模块或服务,实现应用程序的快速扩展和升级。
- +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 577d783..f3e838b 100644 --- a/.vitepress/dist/src/guide/quick.html +++ b/.vitepress/dist/src/guide/quick.html @@ -8,11 +8,11 @@ - + - - + + @@ -29,8 +29,8 @@ 2024-07-15T14:38:46.101+08:00 INFO 31908 --- [cool-admin-java] [pool-3-thread-1] com.cool.core.eps.CoolEps : 初始化eps完成,服务启动成功,端口:8001

访问:http://127.0.0.1:8001,你将会看到后端的欢迎页面

4、启动前端服务 ​

在项目根目录下(跟 package.json 同级)执行命令:

shell
# 安装依赖
 npm install
 # 启动
-npm run dev

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

账户:admin
密码:123456

- +npm run dev

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

账户:admin
密码:123456

+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/security.html b/.vitepress/dist/src/guide/security.html index 35fd563..a58dc65 100644 --- a/.vitepress/dist/src/guide/security.html +++ b/.vitepress/dist/src/guide/security.html @@ -8,11 +8,11 @@ - + - - + + @@ -230,8 +230,8 @@ String username = coolSecurityUtil.username();
  • 获得用户信息 请求过程中会解析 token,并将用户信息存在整个请求过程中的 requestParams
java
 @Resource
  private CoolSecurityUtil coolSecurityUtil;
 
- JSONObject userInfo = coolSecurityUtil.userInfo(requestParams);

userInfo

字段类型说明
roleIdsLong[]角色数组
usernameString用户名
userIdLong用户 ID
passwordVersionInteger密码版本号
- + JSONObject userInfo = coolSecurityUtil.userInfo(requestParams);

userInfo

字段类型说明
roleIdsLong[]角色数组
usernameString用户名
userIdLong用户 ID
passwordVersionInteger密码版本号
+ \ No newline at end of file diff --git a/.vitepress/dist/src/guide/service.html b/.vitepress/dist/src/guide/service.html index 690ea85..7aaaad3 100644 --- a/.vitepress/dist/src/guide/service.html +++ b/.vitepress/dist/src/guide/service.html @@ -8,11 +8,11 @@ - + - - + + @@ -36,8 +36,8 @@ */ @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 5c6f8fa..7081ae2 100644 --- a/.vitepress/dist/src/guide/swagger.html +++ b/.vitepress/dist/src/guide/swagger.html @@ -8,10 +8,10 @@ - + - + @@ -25,7 +25,7 @@ // 可以在这边实现一下列表数据排序规则,查询条件过滤,返回哪些字段等 } }

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

- + \ No newline at end of file diff --git a/.vitepress/dist/src/guide/upload.html b/.vitepress/dist/src/guide/upload.html index e6cbb95..cde81a0 100644 --- a/.vitepress/dist/src/guide/upload.html +++ b/.vitepress/dist/src/guide/upload.html @@ -8,11 +8,11 @@ - + - - + + @@ -47,8 +47,8 @@ public R uploadMode() { 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 744b831..54a6164 100644 --- a/.vitepress/dist/src/introduce/index.html +++ b/.vitepress/dist/src/introduce/index.html @@ -8,17 +8,17 @@ - + - - + + -
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 天的保留,支持回滚操作。
  • 前后端插件:支持动态安装、卸载插件,实现功能可插拔。
- +
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 50a5097..c72bd42 100644 --- a/.vitepress/dist/src/introduce/show.html +++ b/.vitepress/dist/src/introduce/show.html @@ -8,17 +8,17 @@ - + - + - + \ No newline at end of file diff --git a/.vitepress/dist/src/introduce/src.html b/.vitepress/dist/src/introduce/src.html index 90173a8..127ed76 100644 --- a/.vitepress/dist/src/introduce/src.html +++ b/.vitepress/dist/src/introduce/src.html @@ -8,17 +8,17 @@ - + - - + + - - + + \ No newline at end of file diff --git a/.vitepress/dist/src/question/common.html b/.vitepress/dist/src/question/common.html index 0883e1d..4623e94 100644 --- a/.vitepress/dist/src/question/common.html +++ b/.vitepress/dist/src/question/common.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

常见问题 ​

项目中常见的问题

1、找不到类似xxxTableDef文件 ​

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

你可以这样做:

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

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

- +
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 f13ba8d..3ba2d9e 100644 --- a/.vitepress/dist/src/todo/plan.html +++ b/.vitepress/dist/src/todo/plan.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

计划 ​

以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。

v7.1.1 ​

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

计划 ​

以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。

完善插件 ​

  • Ai 流程编排插件
  • 文件上传插件
  • 短信插件
  • 支付插件
  • 微信 SDK 插件
+ \ No newline at end of file diff --git a/.vitepress/dist/src/todo/update.html b/.vitepress/dist/src/todo/update.html index bc69a16..d0456e5 100644 --- a/.vitepress/dist/src/todo/update.html +++ b/.vitepress/dist/src/todo/update.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

更新 ​

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

v7.1.0(2024-06-27) ​

  • 升级到 Springboot3.x;
  • 升级所有相关依赖到最新;
  • 跟进Nodejs 版相关功能;
  • 优化若干问题;
- +
Skip to content

更新 ​

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

## 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/src/todo/plan.md b/src/todo/plan.md index 64a092f..2582e9f 100644 --- a/src/todo/plan.md +++ b/src/todo/plan.md @@ -2,7 +2,10 @@ 以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。 -## v7.1.1 +## 完善插件 -- 新增 Ai 自动编码功能,简单功能零代码实现; -- 新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加; +- Ai 流程编排插件 +- 文件上传插件 +- 短信插件 +- 支付插件 +- 微信 SDK 插件 diff --git a/src/todo/update.md b/src/todo/update.md index aabbb88..5d35423 100644 --- a/src/todo/update.md +++ b/src/todo/update.md @@ -2,6 +2,11 @@ 因为有你们的支持,cool-admin 会持续不断地更新,如果方便请点下 Star,这将会给我们带来更多的动力!!! +## ## v7.1.1(2024-07-15) + +- 新增 Ai 自动编码功能,简单功能零代码实现; +- 新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加; + ## v7.1.0(2024-06-27) - 升级到 Springboot3.x;