Browse Source

添加文档说明 #47

IdentityServer4
WangJunZzz 4 years ago
parent
commit
1068dae4ab
  1. 1
      docs/content/CNAME
  2. 13
      docs/content/about/contact-us.md
  3. 25
      docs/content/about/license.md
  4. 43
      docs/content/about/release-notes.md
  5. BIN
      docs/content/img/dic.png
  6. BIN
      docs/content/img/donate.png
  7. BIN
      docs/content/img/favicon.ico
  8. BIN
      docs/content/img/file.png
  9. BIN
      docs/content/img/login.png
  10. BIN
      docs/content/img/logo.png
  11. 172
      docs/content/img/logo.svg
  12. BIN
      docs/content/img/migrating.png
  13. BIN
      docs/content/img/role.png
  14. BIN
      docs/content/img/send.png
  15. BIN
      docs/content/img/send1.png
  16. BIN
      docs/content/img/uo.png
  17. BIN
      docs/content/img/user.png
  18. 45
      docs/content/index.md
  19. 183
      docs/content/user-guide/zh/deploy/docker.md
  20. 225
      docs/content/user-guide/zh/deploy/github.md
  21. 38
      docs/content/user-guide/zh/extension/MagicodesIE.md
  22. 201
      docs/content/user-guide/zh/extension/统一返回值格式.md
  23. 21
      docs/content/user-guide/zh/getting-started/contributing.md
  24. 91
      docs/content/user-guide/zh/getting-started/introduction.md
  25. 72
      docs/content/user-guide/zh/getting-started/quick-start.md
  26. 166
      docs/content/user-guide/zh/infrastructure/config.md
  27. 49
      docs/content/user-guide/zh/infrastructure/freesql.md
  28. 116
      docs/content/user-guide/zh/infrastructure/frontend.md
  29. 57
      docs/content/user-guide/zh/modules/dic.md
  30. 60
      docs/content/user-guide/zh/modules/file.md
  31. 39
      docs/content/user-guide/zh/modules/identity.md
  32. 90
      docs/content/user-guide/zh/modules/setting.md
  33. 111
      docs/content/user-guide/zh/modules/signalr.md
  34. 5
      docs/content/user-guide/zh/problem/problem.md
  35. 101
      docs/mkdocs.yml
  36. 957
      docs/site/404.html
  37. 1
      docs/site/CNAME
  38. 1088
      docs/site/about/contact-us/index.html
  39. 1027
      docs/site/about/license/index.html
  40. 1148
      docs/site/about/release-notes/index.html
  41. BIN
      docs/site/assets/images/favicon.png
  42. 29
      docs/site/assets/javascripts/bundle.6c7ad80a.min.js
  43. 8
      docs/site/assets/javascripts/bundle.6c7ad80a.min.js.map
  44. 1
      docs/site/assets/javascripts/lunr/min/lunr.ar.min.js
  45. 18
      docs/site/assets/javascripts/lunr/min/lunr.da.min.js
  46. 18
      docs/site/assets/javascripts/lunr/min/lunr.de.min.js
  47. 18
      docs/site/assets/javascripts/lunr/min/lunr.du.min.js
  48. 18
      docs/site/assets/javascripts/lunr/min/lunr.es.min.js
  49. 18
      docs/site/assets/javascripts/lunr/min/lunr.fi.min.js
  50. 18
      docs/site/assets/javascripts/lunr/min/lunr.fr.min.js
  51. 1
      docs/site/assets/javascripts/lunr/min/lunr.hi.min.js
  52. 18
      docs/site/assets/javascripts/lunr/min/lunr.hu.min.js
  53. 18
      docs/site/assets/javascripts/lunr/min/lunr.it.min.js
  54. 1
      docs/site/assets/javascripts/lunr/min/lunr.ja.min.js
  55. 1
      docs/site/assets/javascripts/lunr/min/lunr.jp.min.js
  56. 1
      docs/site/assets/javascripts/lunr/min/lunr.multi.min.js
  57. 18
      docs/site/assets/javascripts/lunr/min/lunr.nl.min.js
  58. 18
      docs/site/assets/javascripts/lunr/min/lunr.no.min.js
  59. 18
      docs/site/assets/javascripts/lunr/min/lunr.pt.min.js
  60. 18
      docs/site/assets/javascripts/lunr/min/lunr.ro.min.js
  61. 18
      docs/site/assets/javascripts/lunr/min/lunr.ru.min.js
  62. 1
      docs/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
  63. 18
      docs/site/assets/javascripts/lunr/min/lunr.sv.min.js
  64. 1
      docs/site/assets/javascripts/lunr/min/lunr.th.min.js
  65. 18
      docs/site/assets/javascripts/lunr/min/lunr.tr.min.js
  66. 1
      docs/site/assets/javascripts/lunr/min/lunr.vi.min.js
  67. 1
      docs/site/assets/javascripts/lunr/min/lunr.zh.min.js
  68. 206
      docs/site/assets/javascripts/lunr/tinyseg.js
  69. 6708
      docs/site/assets/javascripts/lunr/wordcut.js
  70. 48
      docs/site/assets/javascripts/workers/search.b97dbffb.min.js
  71. 8
      docs/site/assets/javascripts/workers/search.b97dbffb.min.js.map
  72. 1
      docs/site/assets/stylesheets/main.1d29e8d0.min.css
  73. 1
      docs/site/assets/stylesheets/main.1d29e8d0.min.css.map
  74. 1
      docs/site/assets/stylesheets/palette.cbb835fc.min.css
  75. 1
      docs/site/assets/stylesheets/palette.cbb835fc.min.css.map
  76. BIN
      docs/site/img/dic.png
  77. BIN
      docs/site/img/donate.png
  78. BIN
      docs/site/img/favicon.ico
  79. BIN
      docs/site/img/file.png
  80. BIN
      docs/site/img/login.png
  81. BIN
      docs/site/img/logo.png
  82. 172
      docs/site/img/logo.svg
  83. BIN
      docs/site/img/migrating.png
  84. BIN
      docs/site/img/role.png
  85. BIN
      docs/site/img/send.png
  86. BIN
      docs/site/img/send1.png
  87. BIN
      docs/site/img/uo.png
  88. BIN
      docs/site/img/user.png
  89. 1123
      docs/site/index.html
  90. 1
      docs/site/search/search_index.json
  91. 103
      docs/site/sitemap.xml
  92. BIN
      docs/site/sitemap.xml.gz
  93. 1274
      docs/site/user-guide/zh/deploy/docker/index.html
  94. 1333
      docs/site/user-guide/zh/deploy/github/index.html
  95. 1113
      docs/site/user-guide/zh/extension/MagicodesIE/index.html
  96. 1290
      docs/site/user-guide/zh/extension/统一返回值格式/index.html
  97. 1103
      docs/site/user-guide/zh/getting-started/contributing/index.html
  98. 1196
      docs/site/user-guide/zh/getting-started/introduction/index.html
  99. 1254
      docs/site/user-guide/zh/getting-started/quick-start/index.html
  100. 1312
      docs/site/user-guide/zh/infrastructure/config/index.html

1
docs/content/CNAME

@ -0,0 +1 @@
doc.cncore.club

13
docs/content/about/contact-us.md

@ -0,0 +1,13 @@
## Authors
* Author: [@WangJunZzz](https://github.com/WangJunZzz)
* Email: 510423039@qq.com
* Blogs: https://www.cnblogs.com/WangJunZzz
## 赞助
如果你觉得这个项目对你有帮助,你可以帮作者买一杯咖啡表示支持!
![](../img/donate.png)

25
docs/content/about/license.md

@ -0,0 +1,25 @@
# License
**MIT License**
MIT License
Copyright (c) 2021 WangJunZzz
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

43
docs/content/about/release-notes.md

@ -0,0 +1,43 @@
# 发行说明
## 5.3.2.4
**Bug**
* 升级Vben2.8,组织机构编辑错误 #62
## 5.3.2.3
**功能**
* 权限菜单级联操作 #48
**Bug**
* 统一参数返回值过滤器,空指针异常 #61
## 5.3.2.2
**功能**
* 启用GlobalUsing功能 #56
* 采用Directory.Build.targets管理 nuget包 #55
**Bug**
* Vben 分页组件总条数显示异常 #59
## 5.3.2.1
**功能**
* 调整NotificationManagement聚合设计 #51
* 调整NotificationManagement,Redis配置 #50
* 升级Abp5.3.2
**Bug**
* 多个hangfire定时任务,只执行单个问题 #54
* vue客户端先启动,SignalR不尝试重连 #49

BIN
docs/content/img/dic.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
docs/content/img/donate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
docs/content/img/favicon.ico

Binary file not shown.

BIN
docs/content/img/file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
docs/content/img/login.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/content/img/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

172
docs/content/img/logo.svg

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="86px" height="86px" viewBox="0 0 86 86" enable-background="new 0 0 86 86" xml:space="preserve"> <image id="image0" width="86" height="86" x="0" y="0"
href="data:image/png;base64,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" />
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/content/img/migrating.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/content/img/role.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/content/img/send.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
docs/content/img/send1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/content/img/uo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
docs/content/img/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

45
docs/content/index.md

@ -0,0 +1,45 @@
Title: Abp Vnext Pro
# Abp Vnext Pro
<img width="140" align="right" src="/img/logo.svg">
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/WangJunZzz/abp-vnext-pro/blob/main/LICENSE)
## 介绍
- 完全免费开源
- ABP vNext的前身是asp.net boilerplate(老版abp),它不是一个简单的版本更新,而是完全基于.NET Core的重写。
- ABP vNext 社区版的UI不使用于实际项目开发。为此,结合Vben Admin 打造开箱即用的ABP vNext Pro。
## 系统功能
- [x] 用户管理
- [x] 角色管理
- [x] 审计日志
- [x] 后台任务
- [x] 集成事件
- [ ] IdentityServer4
* [x] 客户端管理
* [x] Api 资源管理
* [x] ApiScope 管理
* [x] Identity 资源管理
- [x] SinglaR 消息通知(站内信)
- [x] 多语言
- [x] 数据字典
- [x] 容器化部署
- [x] 单元测试
- [x] ES 日志
- [x] Setting 管理
- [x] 多租户
- [x] 文件管理
## 演示
- [演示地址](http://120.24.194.14:8012/)
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/4.4/4.4login.png)
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/01.png)
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/02.png)
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/03.png)
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/04.png)
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/05.png)

183
docs/content/user-guide/zh/deploy/docker.md

@ -0,0 +1,183 @@
# Docker部署
## Lion.AbpPro.HttpApi.Host
- 在Lion.AbpPro.HttpApi.Host目录下执行
```bash
dotnet public -o publish
```
- 生成 Docker 镜像
```bash
docker build -t Lion.AbpPro.HttpApi.Host .
```
- 运行容器
```bash
docker run -itd --name Lion.AbpPro.HttpApi.Host -p 8011:80 Lion.AbpPro.HttpApi.Host
```
- Dockerfile 文件
```yml
FROM mcr.microsoft.com/dotnet/aspnet:6.0
# 创建目录
RUN mkdir /app
COPY publish /app
RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" > /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \
apt-get update && \
apt-get install libgdiplus libc6-dev -y && \
ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll && \
ln -s /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/libdl.dll && apt-get clean
# 设置工作目录
WORKDIR /app
# 暴露80端口
EXPOSE 80
# 设置时区 .net6 才有这个问题
ENV TZ=Asia/Shanghai
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Production
ENTRYPOINT ["dotnet", "Lion.AbpPro.HttpApi.Host.dll"]
```
## Lion.AbpPro.IdentityServer
- 在Lion.AbpPro.IdentityServer目录下执行
```bash
dotnet public -o publish
```
- 生成 Docker 镜像
```bash
docker build -t Lion.AbpPro.IdentityServer .
```
- 运行容器
```bash
docker run -itd --name Lion.AbpPro.IdentityServer -p 8013:80 Lion.AbpPro.IdentityServer
```
- Dockerfile 文件
```yml
FROM mcr.microsoft.com/dotnet/aspnet:6.0
# 创建目录
RUN mkdir /app
COPY publish /app
# 设置工作目录
WORKDIR /app
# 暴露80端口
EXPOSE 80
# 设置时区 .net6 才有这个问题
ENV TZ=Asia/Shanghai
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Production
ENTRYPOINT ["dotnet", "Lion.AbpPro.IdentityServer.dll"]
```
## Lion.AbpPro.WebGateway
- 在Lion.AbpPro.WebGateway目录下执行
```bash
dotnet public -o publish
```
- 生成 Docker 镜像
```bash
docker build -t Lion.AbpPro.WebGateway .
```
- 运行容器
```bash
docker run -itd --name Lion.AbpPro.WebGateway -p 8013:80 Lion.AbpPro.WebGateway
```
- Dockerfile 文件
```yml
FROM mcr.microsoft.com/dotnet/aspnet:6.0
# 创建目录
RUN mkdir /app
COPY publish /app
# 设置工作目录
WORKDIR /app
# 暴露80端口
EXPOSE 80
# 设置时区 .net6 才有这个问题
ENV TZ=Asia/Shanghai
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Production
ENTRYPOINT ["dotnet", "Lion.AbpPro.WebGateway.dll"]
```
## Vue3
- 修改env.production 接口地址为以上你发布的地址
- 打包项目
```bash
npm run build
```
- 生产Docker镜像
```bash
docker build -t Lion.AbpPro.Vue3 .
```
- 运行容器
```bash
docker run -itd --name Lion.AbpPro.Vue3 -p 8012:80 Lion.AbpPro.Vue3
```
- Dockerfile 文件
```yml
FROM nginx:1.17.3-alpine as base
EXPOSE 80
COPY /_nginx/nginx.conf /etc/nginx/nginx.conf
COPY /_nginx/env.js /etc/nginx/env.js
COPY /_nginx/default.conf /etc/nginx/conf.d/default.conf
COPY /dist/ /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
```

225
docs/content/user-guide/zh/deploy/github.md

@ -0,0 +1,225 @@
# Github自动化部署
## 添加部署 yaml
- 在项目根目录下添加 .github/workflow/
### 后端项目
```yaml
name: 后端部署(API,IdentityServer4,Gateways) # 指定名称
on:
push:
branches:
- main # 代码推送到main分支的时候触发jobs
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Dotnet 6.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: "6.0" # 安装Dotnet 环境
include-prerelease: True
- name: 编译
run: dotnet build aspnet-core/Lion.AbpPro.sln # 编译项目
- name: 单元测试
run: dotnet test aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Lion.AbpPro.Domain.Tests.csproj # 运行单元测试
- name: 发布->Lion.AbpPro.HttpApi.Host
run: dotnet publish aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Lion.AbpPro.HttpApi.Host.csproj -o Lion.AbpPro.HttpApi.Host # 发布Host项目
- name: 发布->Lion.AbpPro.IdentityServer
run: dotnet publish aspnet-core/services/host/Lion.AbpPro.IdentityServer/Lion.AbpPro.IdentityServer.csproj -o Lion.AbpPro.IdentityServer # 发布IdentityServer项目
- name: 发布->Lion.AbpPro.IdentityServer
run: dotnet publish aspnet-core/gateways/Lion.AbpPro.WebGateway/Lion.AbpPro.WebGateway.csproj -o Lion.AbpPro.WebGateway # 发布网关项目
- name: 部署->Lion.AbpPro.HttpApi.Host
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # 服务器生成的ssh key 在github 下添加secret
ARGS: "-avzr --delete --exclude 'appsettings.json'" # 把发布好的项目复制到服务器,并且删除服务器上的/root/wwwroot/Lion.AbpPro.HttpApi.Host下的文件但是不包括appsettings.json
SOURCE: "Lion.AbpPro.HttpApi.Host" # 对应上面发布好的目录
REMOTE_HOST: ${{ secrets.REMOTE_HOST }} # 服务器公网ip地址
REMOTE_USER: ${{ secrets.REMOTE_USER }} # 用户名
TARGET: "/root/wwwroot" # 发布到服务器指定目录
- name: 部署->Lion.AbpPro.IdentityServer
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-avzr --delete --exclude 'appsettings.json'"
SOURCE: "Lion.AbpPro.IdentityServer"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: "/root/wwwroot"
- name: 部署->Lion.AbpPro.WebGateway
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-avzr --delete --exclude 'appsettings.json'"
SOURCE: "Lion.AbpPro.WebGateway"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: "/root/wwwroot"
```
## 安装 supervisor
```bash
yum install -y supervisor
systemctl start supervisord
systemctl enable supervisord # 设置为开机启动
```
- 默认配置目录在 /etc/supervisord.d
```bash
yum install -y supervisor
systemctl start supervisord
systemctl enable supervisord # 设置为开机启动
```
- 开启 web 管理界面
```bash
# vi vi /etc/supervisord.conf
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface)
username=admin ; # 管理web端登录用户名
password=1q2w3E*. ; # 管理web端登录密码
```
- 查看是否能访问 http://ip:9001
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/supervisor.png)
- 添加 Lion.AbpPro.HttpApi.Host.ini
```bash
[program:Lion.AbpPro.HttpApi.Host]
command=/bin/bash -c "dotnet Lion.AbpPro.HttpApi.Host.dll --urls=http://*:8011"
directory=/root/wwwroot/Lion.AbpPro.HttpApi.Host
autostart=true
autorestart=true
stderr_logfile=/root/wwwroot/Lion.AbpPro.HttpApi.Host/err.log
stdout_logfile=/root/wwwroot/Lion.AbpPro.HttpApi.Host/out.log
user=root
```
- 添加 Lion.AbpPro.IdentityServer.ini
```bash
[program:Lion.AbpPro.IdentityServer]
command=/bin/bash -c "dotnet Lion.AbpPro.IdentityServer.dll --urls=http://*:8013"
directory=/root/wwwroot/Lion.AbpPro.IdentityServer
autostart=true
autorestart=true
stderr_logfile=/root/wwwroot/Lion.AbpPro.IdentityServer/err.log
stdout_logfile=/root/wwwroot/Lion.AbpPro.IdentityServer/out.log
user=root
```
- 添加 Lion.AbpPro.WebGateway.ini
```bash
[program:Lion.AbpPro.WebGateway]
command=/bin/bash -c "dotnet Lion.AbpPro.WebGateway.dll --urls=http://*:8014"
directory=/root/wwwroot/Lion.AbpPro.WebGateway
autostart=true
autorestart=true
stderr_logfile=/root/wwwroot/Lion.AbpPro.WebGateway/err.log
stdout_logfile=/root/wwwroot/Lion.AbpPro.WebGateway/out.log
user=root
```
- 重新加载配置 supervisorctl reload
## 前端配置
- 安装 Nginx
```bash
sudo yum install -y nginx
systemctl start nginx # 启动 Nginx
systemctl enable nginx # 启用开机启动 Nginx
```
- 访问 http://ip:80
![](https://ask.qcloudimg.com/http-save/yehe-4727679/f0shutgsl8.png?imageView2/2/w/1620)
-- 配置 Yml
```yaml
name: 前端部署(vue)
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.1
with:
persist-credentials: false
- name: 编译|发布
run: |
cd vben271
yarn
npm run build
- name: 部署->Vue
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-avzr --delete"
SOURCE: "vben271/dist"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: "/root/wwwroot"
```
- 配置 Nginx
```bash
# vi /etc/nginx/nginx.conf
server {
listen 8012;
listen [::]:8012;
server_name _;
root /root/wwwroot/dist;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
#vue-router配置 解决刷新浏览器 404问题
location / {
try_files $uri $uri/ @router;
index index.html;
}
location @router {
rewrite ^.*$ /index.html last;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
```

38
docs/content/user-guide/zh/extension/MagicodesIE.md

@ -0,0 +1,38 @@
## 配置
```csharp
/// <summary>
/// 配置Magicodes.IE 导入导出
/// </summary>
private void ConfigureMagicodes(ServiceConfigurationContext context)
{
context.Services.AddTransient<IExporter, ExcelExporter>();
context.Services.AddTransient<IExcelExporter, ExcelExporter>();
}
```
## 示例
```csharp
/// <summary>
/// 用户导出列表
/// </summary>
/// <returns></returns>
[Authorize(AbpProPermissions.SystemManagement.UserExport)]
public async Task<ActionResult> ExportAsync(PagingUserListInput input)
{
var request = new GetIdentityUsersInput
{
Filter = input.Filter?.Trim(),
MaxResultCount = input.PageSize,
SkipCount = input.SkipCount,
Sorting = " LastModificationTime desc"
};
List<Volo.Abp.Identity.IdentityUser> source = await _identityUserRepository
.GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, request.Filter);
var result = ObjectMapper.Map<List<Volo.Abp.Identity.IdentityUser>, List<ExportIdentityUserOutput>>(source);
var bytes = await _excelExporter.ExportAsByteArray<ExportIdentityUserOutput>(result);
return new XlsxFileResult(bytes: bytes, fileDownloadName: $"用户导出列表{DateTime.Now:yyyyMMdd}");
}
```

201
docs/content/user-guide/zh/extension/统一返回值格式.md

@ -0,0 +1,201 @@
# 统一返回值格式
- 在使用 abp 的过程中,如果提供给第三方接口要实现返回值统一需要怎么做?
```csharp
{
// 返回格式类似这种
"success": false,
"message": "请求失败",
"data": null,
"code": 500
}
```
- 定义返回类型
```csharp
public class WrapResult<T>
{
public bool Success { get; private set; }
public string Message { get; private set; }
public T Data { get; private set; }
public int Code { get; private set; }
public WrapResult()
{
Success = true;
Message = "Success";
Data = default;
Code = 200;
}
public void SetSuccess(T data, string message = "Success", int code = 200)
{
Success = true;
Data = data;
Code = code;
}
public void SetFail(string message = "Fail", int code = 500)
{
Success = false;
Message = message;
Code = code;
}
}
```
## 实现思路
- 定义 DontWrapResultAttribute
```csharp
public class DontWrapResultAttribute : Attribute
{
}
```
- 实现 IAsyncExceptionFilter(拦截异常,抛异常时指定返回格式)
```csharp
public sealed class ResultExceptionFilter : IAsyncExceptionFilter, ITransientDependency
{
public async Task OnExceptionAsync(ExceptionContext context)
{
if (!ShouldHandleException(context))
{
return;
}
await HandleAndWrapException(context);
}
private bool ShouldHandleException(ExceptionContext context)
{
if (context.ActionDescriptor.AsControllerActionDescriptor().ControllerTypeInfo.GetCustomAttributes(typeof(DontWrapResultAttribute), true).Any())
{
return true;
}
if (context.ActionDescriptor.GetMethodInfo().GetCustomAttributes(typeof(DontWrapResultAttribute), true).Any())
{
return true;
}
return false;
}
private async Task HandleAndWrapException(ExceptionContext context)
{
var exceptionHandlingOptions = context.GetRequiredService<IOptions<AbpExceptionHandlingOptions>>().Value;
var exceptionToErrorInfoConverter = context.GetRequiredService<IExceptionToErrorInfoConverter>();
var remoteServiceErrorInfo = exceptionToErrorInfoConverter.Convert(context.Exception, options =>
{
options.SendExceptionsDetailsToClients = exceptionHandlingOptions.SendExceptionsDetailsToClients;
options.SendStackTraceToClients = exceptionHandlingOptions.SendStackTraceToClients;
});
var logLevel = context.Exception.GetLogLevel();
var remoteServiceErrorInfoBuilder = new StringBuilder();
remoteServiceErrorInfoBuilder.AppendLine($"---------- {nameof(RemoteServiceErrorInfo)} ----------");
remoteServiceErrorInfoBuilder.AppendLine(context.GetRequiredService<IJsonSerializer>().Serialize(remoteServiceErrorInfo, indented: true));
var logger = context.GetService<ILogger<ResultExceptionFilter>>(NullLogger<ResultExceptionFilter>.Instance);
logger.LogWithLevel(logLevel, remoteServiceErrorInfoBuilder.ToString());
logger.LogException(context.Exception, logLevel);
await context.GetRequiredService<IExceptionNotifier>().NotifyAsync(new ExceptionNotificationContext(context.Exception));
context.HttpContext.Response.StatusCode = 200;
var result = SimplifyMessage(context);
context.Result = new ObjectResult(result);
context.Exception = null; //Handled!
}
private WrapResult<object> SimplifyMessage(ExceptionContext context)
{
var result = new WrapResult<object>();
var localizer = context.GetService<IStringLocalizer<AbpProResource>>();
switch (context.Exception)
{
case AbpAuthorizationException:
result.SetFail("权限不足", 401);
break;
case AbpValidationException:
result.SetFail("请求参数验证失败", 400);
break;
case EntityNotFoundException:
result.SetFail("实体不存在", 506);
break;
case NotImplementedException:
result.SetFail("未实现功能", 507);
break;
default:
{
if (context.Exception is IHasErrorCode codeException)
{
result.SetFail(localizer[codeException.Code]);
foreach (var key in context.Exception.Data.Keys)
{
result.SetFail(result.Message.Replace("{" + key + "}", context.Exception.Data[key]?.ToString()));
}
}
else
{
result.SetFail(context.Exception.Message);
}
break;
}
}
return result;
}
}
```
## 注册 Filter
```csharp
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddMvc(options =>
{
options.Filters.Add(typeof(ResultExceptionFilter));
});
}
```
## 使用
- 在 Controller 上或者 Action 上打上 DontWrapResultAttribute 特性
- 例如
```csharp
[Route("Permissions")]
[DontWrapResult]
public class PermissionController : AbpProController,IRolePermissionAppService
{
private readonly IRolePermissionAppService _rolePermissionAppService;
public PermissionController(IRolePermissionAppService rolePermissionAppService)
{
_rolePermissionAppService = rolePermissionAppService;
}
[HttpPost("tree")]
[SwaggerOperation(summary: "获取角色权限", Tags = new[] { "Permissions" })]
[WrapResult] //控制器上打了 action上就不需要
public Task<PermissionOutput> GetPermissionAsync(GetPermissionInput input)
{
return _rolePermissionAppService.GetPermissionAsync(input);
}
}
```

21
docs/content/user-guide/zh/getting-started/contributing.md

@ -0,0 +1,21 @@
# 贡献
贡献最简单的方式之一就是参与讨论和issue讨论。
如果您有任何疑问或问题,请在Lion.AbpPro仓库中报告:
[提交Issue](https://github.com/WangJunZzz/abp-vnext-pro/issues)
## 提交更改
您还可以通过提交代码更改PR来做出贡献。
>
Pull requests 可让您告诉其他人已推送到GitHub上存储库的更改。 打开 Pull requests 后,您可以与协作者讨论和审查做出的更改,并在更改合并到存储库之前添加后续提交。
## 其他资源
* [issue 和 pull requests](https://help.github.com/articles/filtering-issues-and-pull-requests/)
* [使用搜索过滤 issue 和 pull requests](https://help.github.com/articles/using-search-to-filter-issues-and-pull-requests/)

91
docs/content/user-guide/zh/getting-started/introduction.md

@ -0,0 +1,91 @@
# 介绍
Lion.AbpPro 是Abp Vnext 的Vue3版本实现,同时也是免费开源。它有助于提高开发效率,属于开箱即用的后台管理系统,也能适用微服务。
## 后端项目结构
```bash
├── Directory.Build.props nuget 版本控制
├── frameworks # 公共模块
│ ├── CAP # dotnetcore.cap
│ └── Extensions # 自定义扩展
├── gateways # 网关
│ └── Lion.AbpPro.WebGateway # 基于ocelot网关
├── modules # 模块
│ ├── DataDictionaryManagement # 数据字典
│ ├── FileManagement # 基于阿里云的文件服务
│ └── NotificationManagement # 通知服务
├── services # 公共静态资源目录
│ ├── host # 启动模块
│ ├── CompanyName.ProjectName.HttpApi.Host # admin ui host
│ └── CompanyName.ProjectName.IdentityServer # IdentityServer host
│ ├── src # 源码
│ └── CompanyName.ProjectName.DbMigrator # 迁移控制台程序
│ └── test # 单元测试
├── shared # 公共Host
│ ├── Lion.AbpPro.Shared.Hosting.Gateways # 网关host模块
│ └── Lion.AbpPro.Shared.Hosting.Microservices # 服务host模块
```
## 前端项目结构
```bash
├── _nginx # docker 打包
├── build # 打包脚本相关
│ ├── config # 配置文件
│ ├── generate # 生成器
│ ├── script # 脚本
│ └── vite # vite配置
├── mock # mock文件夹
├── public # 公共静态资源目录
├── src # 主目录
│ ├── api # 接口文件
│ ├── assets # 资源文件
│ │ ├── icons # icon sprite 图标文件夹
│ │ ├── images # 项目存放图片的文件夹
│ │ └── svg # 项目存放svg图片的文件夹
│ ├── components # 公共组件
│ ├── design # 样式文件
│ ├── directives # 指令
│ ├── enums # 枚举/常量
│ ├── hooks # hook
│ │ ├── component # 组件相关hook
│ │ ├── core # 基础hook
│ │ ├── event # 事件相关hook
│ │ ├── setting # 配置相关hook
│ │ └── web # web相关hook
│ ├── layouts # 布局文件
│ │ ├── default # 默认布局
│ │ ├── iframe # iframe布局
│ │ └── page # 页面布局
│ ├── locales # 多语言
│ ├── logics # 逻辑
│ ├── main.ts # 主入口
│ ├── router # 路由配置
│ ├── services # Nswag生成的代理
│ │ ├── ServiceProxies.ts # Nswag生成的代理
│ │ ├── ServiceProxyBase.ts # Nswag生成的代理拦截器
│ ├── settings # 项目配置
│ │ ├── componentSetting.ts # 组件配置
│ │ ├── designSetting.ts # 样式配置
│ │ ├── encryptionSetting.ts # 加密配置
│ │ ├── localeSetting.ts # 多语言配置
│ │ ├── projectSetting.ts # 项目配置
│ │ └── siteSetting.ts # 站点配置
│ ├── store # 数据仓库
│ ├── utils # 工具类
│ └── views # 页面
├── test # 测试
│ └── server # 测试用到的服务
│ ├── api # 测试服务器
│ ├── upload # 测试上传服务器
│ └── websocket # 测试ws服务器
├── types # 类型文件
├── vite.config.ts # vite配置文件
└── windi.config.ts # windcss配置文件
```
## 相关视频
待完善
## 相关文章
待完善

72
docs/content/user-guide/zh/getting-started/quick-start.md

@ -0,0 +1,72 @@
# 快速开始
## 先决条件
- [dotnet core 6.0.202](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
- [nodejs 16+](https://nodejs.org/zh-cn/)
- [pnpm](https://www.pnpm.cn/installation)
- [mysql](https://dev.mysql.com/downloads/installer/)
- [redis](https://redis.io/docs/getting-started/installation/)
- [rabbitmq 可选](https://www.rabbitmq.com/download.html)
!!! info "Docker一键安装Mysql|Redis|Rabbitmq"
快速搭建必要环境,下载 [docker-compose.yaml](docker-compose.yaml) , 执行: docker-compose up -d
## 创建新项目
### 直接Clone
``` bash
git clone https://github.com/WangJunZzz/abp-vnext-pro.git
```
或者
### GUI创建项目
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/gui.png)
### 后端
- 修改 HttpApi.Host-> appsettings.json 配置
- Mysql 连接字符串
- Redis 连接字符串
- RabbitMq(如果不需要启用设置为 false)
- Es 地址即可(如果没有 es 也可以运行,只是前端 es 日志页面无法使用而已,不影响后端项目启动)
- 修改 IdentityServer-> appsettings.json 数据库连接字符串
- 修改 DbMigrator-> appsettings.json 数据库连接字符串
- 右键单击.DbMigrator项目,设置为启动项目运行,按F5(或Ctrl + F5) 运行应用程序. 它将具有如下所示的输出:
![](../../../img/migrating.png)
!!! note 种子数据
初始的种子数据在数据库中创建了 admin 用户(密码为1q2w3E*) 用于登录应用程序. 所以, 对于新数据库至少使用 .DbMigrator 一次.
!!! note Ocelot网关
如果不需要使用Ocelot网关可以移除Lion.AbpPro.WebGateway项目,前端接口地址直接修改为Lion.AbpPro.HttpApi.Host的接口地址。
!!! note IdentityServer4
如果不需要使用IdentityServer4可以移除Lion.AbpPro.IdentityServer项目,请参考如何如何移除IdentityServer4
- 多项目启动(HttpApi.Host,IdentityServer,WebGateway),就能看到后台服务登陆页面,如下:
![](../../../img/login.png)
## 前端
- [Vben Admin 文档](https://vvbin.cn/doc-next/)
### 安装npm包
```bash
pnmp install
```
### 启动项目
```bash
npm run dev
```

166
docs/content/user-guide/zh/infrastructure/config.md

@ -0,0 +1,166 @@
# 配置
## 日志
### 日志级别
!!! info "Debug --> Information --> Warning --> Error --> Fatal"
```json
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": {
// 默认全局日志级别
"Default": "Information",
"Override": {
//名称空间为 Microsoft 日志级别
"Microsoft": "Information",
//名称空间为 Volo.Abp 日志级别
"Volo.Abp": "Information",
//名称空间为 Hangfire 日志级别
"Hangfire": "Information",
//名称空间为 DotNetCore.CAP 日志级别
"DotNetCore.CAP": "Information",
//名称空间为 Serilog.AspNetCore 日志级别
"Serilog.AspNetCore": "Information",
//名称空间为 Microsoft.EntityFrameworkCore 日志级别
"Microsoft.EntityFrameworkCore": "Warning",
//名称空间为 Microsoft.AspNetCore 日志级别
"Microsoft.AspNetCore": "Information"
}
},
"WriteTo": [
{
// 输出到控制台日志
"Name": "Console"
},
{
// 输出到文件
"Name": "File",
"Args": {
"path": "logs/logs-.txt",
// 按天输出
"rollingInterval": "Day"
}
}
]
}
```
### 写入ES
!!! WARNING "先决条件:搭建好ES环境"
- Enabled:是否启用
- Url:es地址
- IndexFormat:es索引
- UserName:用户名
- Password:密码
- SearchIndexFormat:es日志查询索引模式
```json
"ElasticSearch": {
"Enabled": "false",
"Url": "http://es.cn",
"IndexFormat": "Lion.AbpPro.development.{0:yyyy.MM.dd}",
"UserName": "elastic",
"Password": "aVVhjQ95RP7nbwNy",
"SearchIndexFormat": "Lion.AbpPro.development*"
},
```
- 查看Lion.AbpPro.HttpApi.Host.Program.cs
```csharp
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 1024 * 50; });
webBuilder.UseStartup<Startup>();
})
.UseSerilog((context, loggerConfiguration) =>
{
// 配置ES日志
SerilogToEsExtensions.SetSerilogConfiguration(
loggerConfiguration,
context.Configuration);
}).UseAutofac();
}
```
## 跨域(CORS)
- 允许指定策略
```json
"App": {
// 逗号分隔
"CorsOrigins": "http://*.com,http://localhost:4200"
},
```
- 配置跨域
```csharp
private void ConfigureCors(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
context.Services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicyName, builder =>
{
builder
.WithOrigins(
configuration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.RemovePostFix("/"))
.ToArray()
)
.WithAbpExposedHeaders()
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
}
```
## AccessToken
- Audience:接收对象
- Issuer:签发主体
- SecurityKey:密钥
- ExpirationTime:过期时间(单位小时)
```json
"Jwt": {
"Audience": "Lion.AbpPro",
"SecurityKey": "dzehzRz9a8asdfasfdadfasdfasdfafsdadfasbasdf=",
"Issuer": "Lion.AbpPro",
"ExpirationTime": 30
}
```
## CAP
!!! WARNING "如果要切换其他中间件请参考 [dotnetcore.cap](https://cap.dotnetcore.xyz/)"
- Enabled: 是否启用
- RabbitMq:Mq配置
```json
"Cap": {
"Enabled": "true",
"RabbitMq": {
"HostName": "localhost",
"UserName": "admin",
"Password": "admin"
}
}
```

49
docs/content/user-guide/zh/infrastructure/freesql.md

@ -0,0 +1,49 @@
### CQRS
CQRS:命令查询职责隔离,命令是指 插入、修改、删除,就是更改数据的动作.通过 Freesql 解决单一数据模型带来的查询尴尬场面。
当前架构下,Freesql 和 ef 不在一个事务,最好实现就是用来做查询,比如分页查询。
![](https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/abp/cqrs.png)
## 配置
```csharp
public class AbpProFreeSqlModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
var connectionString = configuration.GetConnectionString("Default");
var freeSql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.MySql, connectionString)
.Build();
context.Services.AddSingleton<IFreeSql>(freeSql);
}
}
```
## 使用
- 在 Domain 层添加接口
```csharp
public interface IUserFreeSqlBasicRepository
{
Task<List<UserOutput>> GetListAsync();
}
```
- 在 Freesql 层添加实现
```csharp
public class UserFreeSqlBasicRepository : FreeSqlBasicRepository, IUserFreeSqlBasicRepository
{
public async Task<List<UserOutput>> GetListAsync()
{
var sql = "select id from AbpUsers";
var result = await FreeSql.Select<UserOutput>()
.WithSql(sql)
.ToListAsync();
return result;
}
}
```

116
docs/content/user-guide/zh/infrastructure/frontend.md

@ -0,0 +1,116 @@
# 前端
[Vben Admin 文档](https://vvbin.cn/doc-next/)
## 代码生成
!!! info "前端接口,参数,自动生成,全部采用 Post 方式"
- 所有访问后端接口代码自动生成 [NSwag](https://github.com/RicoSuter/NSwag)
### 配置代理的地址
- nswag->nswag.json
```json
"documentGenerator": {
"fromDocument": {
// 代理地址,只有生成的时候用,不区分环境
"url": "http://localhost:44315/swagger/v1/swagger.json",
}
}
```
- 如果接口参数或者返回值有改变,需要重新生成代理,执行:
```bash
npm run nswag
```
### 后端Api格式
```csharp
// 一定要打Tags,因为前端会根据这个生成代理类
// 建议参数都封装为一个Input
[SwaggerOperation(summary: "登录", Tags = new[] {"Account"})]
public Task<LoginOutput> LoginAsync(LoginInput input)
{
return _loginAppService.LoginAsync(input);
}
```
## 前端多环境
- .env.development 和.env.production
- VITE_API_URL:后端接口地址
- VITE_AUTH_URL:IdentityServer接口地址
## 权限配置
### 菜单权限
```ts
import type { AppRouteModule } from "/@/router/types";
import { LAYOUT } from "/@/router/constant";
import { t } from "/@/hooks/web/useI18n";
const tenant: AppRouteModule = {
path: "/tenant",
name: "Tenant",
component: LAYOUT,
meta: {
orderNo: 30,
icon: "ant-design:contacts-outlined",
title: t("routes.tenant.tenantManagement"),
},
children: [
{
path: "Tenant",
name: "Tenant",
component: () => import("/@/views/tenants/Tenant.vue"),
meta: {
title: t("routes.tenant.tenantList"),
icon: "ant-design:switcher-filled",
policy: "AbpTenantManagement.Tenants", //菜单权限
},
},
],
};
export default tenant;
```
### 按钮权限
```vue
<template>
<div>
<BasicTable @register="registerTable" size="small">
<template #action="{ record }">
<TableAction
:actions="[
{
icon: 'ant-design:edit-outlined',
auth: 'AbpIdentity.Users.Update', // 按钮权限
label: t('common.editText'),
onClick: handleEdit.bind(null, record),
},
]"
:dropDownActions="[
{
auth: 'AbpIdentity.Users.Delete', // 按钮权限
label: t('common.delText'),
onClick: handleDelete.bind(null, record),
},
{
auth: 'System.Users.Enable', // 按钮权限
label: !record.isActive ? t('common.enabled') : t('common.disEnabled'),
onClick: handleLock.bind(null, record),
},
]"
/>
</template>
</BasicTable>
<CreateAbpUser @register="registerCreateAbpUserModal" @reload="reload" :bodyStyle="{ 'padding-top': '0' }" />
<EditAbpUser @register="registerEditAbpUserModal" @reload="reload" :bodyStyle="{ 'padding-top': '0' }" />
</div>
</template>
```

57
docs/content/user-guide/zh/modules/dic.md

@ -0,0 +1,57 @@
# 数据字典模块
Abp自带的Setting模块可能满足不了需求,特意提供数据字典模块。
![](../../../img/dic.png)
## 安装
- Lion.Abp.DataDictionaryManagement.Application
- Lion.Abp.DataDictionaryManagement.Application.Contracts
- Lion.Abp.DataDictionaryManagement.Domain
- Lion.Abp.DataDictionaryManagement.Domain.Shared
- Lion.Abp.DataDictionaryManagement.EntityFrameworkCore
- Lion.Abp.DataDictionaryManagement.HttpApi
- Lion.Abp.DataDictionaryManagement.HttpApi.Client
## 模块依赖
- 添加 DependsOn(typeof(DataDictionaryManagementXxxModule)) 特性到对应模块。
- 在EntityFrameworkCore层添加数据库配置在AbpProDbContext.cs的OnModelCreating()方法中添加builder.ConfigureDataDictionaryManagement();
## 实体
**DataDictionary** 表结构:
字段名 | 描述 | 类型
:---|:---|:---
Id | Id | Guid
TenantId | 租户id | Guid?
Code | 字典编码 | string
DisplayText | 显示名 | string
Description | 描述 | DateTime
Details | 字典明细 | List<DataDictionaryDetail>
IsDeleted | 是否删除 | bool
DeleterId | 删除人 | Guid?
DeletionTime | 删除时间 | DateTime
LastModifierId | 最后修改人 | Guid?
LastModificationTime | 最后修改时间 | DateTime
CreatorId | 创建人 | Guid?
CreationTime | 创建时间 | DateTime
**DataDictionaryDetail** 表结构:
字段名 | 描述 | 类型
:---|:---|:---
Id | Id | Guid
DataDictionaryId | 所属字典Id | Guid
Order | 排序 | Int
Code | 字典编码 | string
IsEnabled | 启/停用(默认启用) | bool
DisplayText | 显示名 | string
Description | 描述 | DateTime
IsDeleted | 是否删除 | bool
DeleterId | 删除人 | Guid?
DeletionTime | 删除时间 | DateTime
LastModifierId | 最后修改人 | Guid?
LastModificationTime | 最后修改时间 | DateTime
CreatorId | 创建人 | Guid?
CreationTime | 创建时间 | DateTime

60
docs/content/user-guide/zh/modules/file.md

@ -0,0 +1,60 @@
# 数据字典模块
- 与abp自带的文件模块不一样,此模块接入阿里云oss作为云存储。
- 前端上传文件到OSS,文件模块保存相对路径。
![](../../../img/file.png)
## 安装
- Lion.Abp.FileManagement.Application
- Lion.Abp.FileManagement.Application.Contracts
- Lion.Abp.FileManagement.Domain
- Lion.Abp.FileManagement.Domain.Shared
- Lion.Abp.FileManagement.EntityFrameworkCore
- Lion.Abp.FileManagement.HttpApi
- Lion.Abp.FileManagement.HttpApi.Client
## 模块依赖
- 添加 DependsOn(typeof(FileManagementXxxModule)) 特性到对应模块。
- 在EntityFrameworkCore层添加数据库配置在AbpProDbContext.cs的OnModelCreating()方法中添加builder.ConfigureFileManagement();
## 实体
**File** 表结构:
字段名 | 描述 | 类型
:---|:---|:---
Id | Id | Guid
TenantId | 租户id | Guid?
FileName | 文件名称 | string
FilePath | 文件路径 | string
IsDeleted | 是否删除 | bool
DeleterId | 删除人 | Guid?
DeletionTime | 删除时间 | DateTime
LastModifierId | 最后修改人 | Guid?
LastModificationTime | 最后修改时间 | DateTime
CreatorId | 创建人 | Guid?
CreationTime | 创建时间 | DateTime
## OSS配置
[阿里云OSS配置](https://help.aliyun.com/document_detail/100624.html)
- 将OSS配置添加到AppSetting
## AppSetting配置
```Json
"AliYun": {
"OSS": {
"AccessKeyId": "LTAI5tLkt3vvScGPVZ5qKJDc1S",
"AccessKeySecret": "BixV8vP5uPrbsdwjYzzsEXOPjkxPST12S",
"Endpoint": "oss-cn-shenzhen.aliyuncs.com",
"ContainerName": "lion-abp-pro",
"RegionId": "oss-cn-shenzhen",
"RoleArn": "acs:ram::1846393972471789:role/ramosst1t"
}
}
```
## 上传组件
- [前端UploadOss.ts](https://github.com/WangJunZzz/abp-vnext-pro/blob/main/vben28/src/views/admin/files/UploadOss.ts)

39
docs/content/user-guide/zh/modules/identity.md

@ -0,0 +1,39 @@
# 身份管理模块
- 身份模块基于 [Microsoft Identity](https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/identity?view=aspnetcore-6.0) 库 用于管理角色,用户及其权限.
## 用户
- 此页用于查看用户列表. 您可以创建/编辑和删除用户, 将角色分配给用户。
![](../../../img/user.png)
- 一个用户可以有零个或多个角色. 用户从其角色继承权限 。
## 角色
- 角色用于按分组给用户分配权限.
![](../../../img/role.png)
- 角色除了角色名称之外还有2个属性:
- Default: 如果某个角色被标记为 "default", 那么当新用户注册到应用程序时, 其将被作为默认角色分配给新用户.
- Public: 用户的公共角色可以被应用程序中的其他用户看到. 这个功能在身份模块中没有用到, 但被提供作为你可能希望在你自己的应用程序中使用的功能.
## 组织单元
- 组织单元由 OrganizationUnit 实体表示. 它的基本属性是:
- TenantId: 组织单元的租户Id. 对于宿主可以是 null.
- ParentId: 父级组织单元的Id. 如果这是一个根级组织单元,它可以是 null.
- Code: 对于租户唯一的层级字符串编码.
- DisplayName: 组织单元的显示名称.
### 组织树
- 由于组织单元可以有父级, 因此租户的所有组织单元是一个 树 结构. 这个树有一些规则;
- 可以有多个根级 (ParentId 是 null 的) .
- 一个组织单元的第一级子项数量有限制 (因为下面解释的固定的组织单元编码单位长度) .
### 组织单元编码
- 组织单元编码是通过 OrganizationUnitManager 服务自动生成和维护的. 它是一个字符串, 像这样:"00001.00042.00005"
- 通常用这种编码可以轻易地 (递归) 查询出数据库中组织单元的所有子项. 这个编码有一些规则 (当你使用 OrganizationUnitManager 时自动被应用的) :
- 对 租户 是 唯一的.
- 同一组织单元的全部子项都具有 以父级组织单元编码开头的 编码.
- 如示例中所示, 它是固定长度的且是基于树中组织单元的级别的.
- 尽管组织单元编码是唯一的, 但如果你移动了相关的组织单元, 它也可以被更改.
- 请注意, 你必须根据Id引用一个组织单元, 而不是编码, 因为编码后续是可以被更改的.
![](../../../img/uo.png)

90
docs/content/user-guide/zh/modules/setting.md

@ -0,0 +1,90 @@
# 设置管理
[官方Setting模块参考文档](https://docs.abp.io/zh-Hans/abp/latest/Settings)
配置系统是在启动时配置应用程序很好的方式. 除了配置之外, ABP提供了另外一种设置和获取应用程序设置的方式.
设置存储在动态数据源(通常是数据库)中的键值对. 设置系统预构建了用户,租户,全局和默认设置方法并且可以进行扩展.
## 定义设置
使用设置之前需要定义它. ABP是 模块化的, 不同的模块可以拥有不同的设置. 只需要实现SettingDefinitionProvider类既可. 示例如下:
!!! info "和官方Setting模块区别,值添加了2个属性,一个分组,一个组件类型"
```csharp
public class CustomSettingProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
context.Add(
new SettingDefinition(
AbpProSettings.Other.Github,
"https://github.com/WangJunZzz/abp-vnext-pro",
L("DisplayName:" + AbpProSettings.Other.Github),
L("Description:" + AbpProSettings.Other.Github)
)
// 分组
.WithProperty(AbpProSettings.Group.Default,AbpProSettings.Group.OtherManagement)
// 前端组件类型
.WithProperty(AbpProSettings.ControlType.Default,AbpProSettings.ControlType.TypeText));
}
}
```
- SettingDefinition 类具有以下属性:
- Name: 应用程序中设置的唯一名称. 是具有约束的唯一属性, 在应用程序获取/设置此设置的值 (设置名称定义为常量而不是魔法字符串是个好主意).
- DefaultValue: 设置的默认值.
- DisplayName: 本地化的字符串,用于在UI上显示名称.
- Description: 本地化的字符串,用于在UI上显示描述.
- 上面添加了2个属性,为了适配vue前端,一个设置Setting属于哪个分组,一个是根据Setting的类型指定对应的前端组件,比如字符串就是,Input组件。
- 支持以下组件:Text,CheckBox,Number
## 读取设置值
ISettingProvider 用于获取指定设置的值或所有设置的值. 示例用法:
```csharp
public class MyService
{
private readonly ISettingProvider _settingProvider;
//Inject ISettingProvider in the constructor
public MyService(ISettingProvider settingProvider)
{
_settingProvider = settingProvider;
}
public async Task FooAsync()
{
//Get a value as string.
string userName = await _settingProvider.GetOrNullAsync("Smtp.UserName");
//Get a bool value and fallback to the default value (false) if not set.
bool enableSsl = await _settingProvider.GetAsync<bool>("Smtp.EnableSsl");
//Get a bool value and fallback to the provided default value (true) if not set.
bool enableSsl = await _settingProvider.GetAsync<bool>(
"Smtp.EnableSsl", defaultValue: true);
//Get a bool value with the IsTrueAsync shortcut extension method
bool enableSsl = await _settingProvider.IsTrueAsync("Smtp.EnableSsl");
//Get an int value or the default value (0) if not set
int port = (await _settingProvider.GetAsync<int>("Smtp.Port"));
//Get an int value or null if not provided
int? port = (await _settingProvider.GetOrNullAsync("Smtp.Port"))?.To<int>();
}
}
```
> ISettingProvider 是非常常用的服务,一些基类中(如IApplicationService)已经将其属性注入. 这种情况下可以直接使用SettingProvider.
ISettingProvider 使用设置值提供程序来获取设置值. 如果值提供程序无法获取设置值,则会回退到下一个值提供程序.
DefaultValueSettingValueProvider: 从设置定义的默认值中获取值.
ConfigurationSettingValueProvider: 从IConfiguration服务中获取值.
GlobalSettingValueProvider: 获取设置的全局值.
TenantSettingValueProvider: 获取当前租户的设置值.
UserSettingValueProvider: 获取当前用户的设置值.
> 设置回退系统从底部 (用户) 到 顶部(默认) 方向起作用.

111
docs/content/user-guide/zh/modules/signalr.md

@ -0,0 +1,111 @@
# 实时通信
集成Abp SignalR,实现类似站内信模块。
- 发送消息会在前端右上角,根据不同消息等级有不同的窗体提示。
![](../../../img/send.png)
- 在右上角灯泡按钮可以看到接受的消息。
![](../../../img/send1.png)
## 安装
- Lion.Abp.NotificationManagement.Application
- Lion.Abp.NotificationManagement.Application.Contracts
- Lion.Abp.NotificationManagement.Domain
- Lion.Abp.NotificationManagement.Domain.Shared
- Lion.Abp.NotificationManagement.EntityFrameworkCore
- Lion.Abp.NotificationManagement.HttpApi
- Lion.Abp.NotificationManagement.HttpApi.Client
## 模块依赖
- 添加 DependsOn(typeof(NotificationManagementXxxModule)) 特性到对应模块。
- 在EntityFrameworkCore层添加数据库配置在AbpProDbContext.cs的OnModelCreating()方法中添加builder.ConfigureNotificationManagement();
## 实体
**Notification** 表结构:
字段名 | 描述 | 类型
:---|:---|:---
Id | Id | Guid
Title | 消息标题 | string
Content | 消息内容 | string
MessageType | 消息类型 | MessageType
MessageLevel | 消息等级 | MessageLevel
SenderId | 创建人 | 发送人
NotificationSubscriptions | 消息订阅者集合 | List<NotificationSubscription>
IsDeleted | 是否删除 | bool
DeleterId | 删除人 | Guid?
DeletionTime | 删除时间 | DateTime
LastModifierId | 最后修改人 | Guid?
LastModificationTime | 最后修改时间 | DateTime
CreatorId | 创建人 | Guid?
CreationTime | 创建时间 | DateTime
**NotificationSubscription** 表结构:
字段名 | 描述 | 类型
:---|:---|:---
Id | Id | Guid
ReceiveId | 接收人 | Guid
Read | 是否已读 | bool
ReadTime | 已读时间 | DateTime?
IsDeleted | 是否删除 | bool
DeleterId | 删除人 | Guid?
DeletionTime | 删除时间 | DateTime
LastModifierId | 最后修改人 | Guid?
LastModificationTime | 最后修改时间 | DateTime
CreatorId | 创建人 | Guid?
CreationTime | 创建时间 | DateTime
## 发送消息
- 注入NotificationManager,NotificationAppService即可发送不同级别,不同等级的消息。
- 发送给指定人
```csharp
/// <summary>
/// 发送警告文本消息
/// </summary>
/// <param name="title">标题</param>
/// <param name="content">消息内容</param>
/// <param name="receiveIds">接受人,发送给谁。</param>
await _notificationManager.SendCommonWarningMessageAsync(title,content,receiveIds);
```
- 发送给所有人
```csharp
/// <summary>
/// 发送警告文本消息
/// </summary>
/// <param name="title">标题</param>
/// <param name="content">消息内容</param>
await _notificationManager.SendBroadCastInformationMessageAsync(title,content);
```
## 依赖
- 如果服务分布式部署,需要使用Redis(默认依赖),解决SignalR消息重复问题。
```csharp
private void ConfigurationSignalR(ServiceConfigurationContext context)
{
var redisConnection = context.Services.GetConfiguration()["Redis:Configuration"];
if (redisConnection.IsNullOrWhiteSpace())
{
throw new UserFriendlyException(message: "Redis连接字符串未配置.");
}
context.Services.AddSignalR()
.AddStackExchangeRedis(redisConnection, options => { options.Configuration.ChannelPrefix = "Lion.AbpPro"; });
}
```
## Vue客户端连接
- 在用户登陆成功之后,连接SignalR,并且带自动重连机制。[源码](https://github.com/WangJunZzz/abp-vnext-pro/blob/main/vben28/src/hooks/web/useSignalR.ts)
- 示例如下:
```ts
const { startConnect } = useSignalR();
onMounted(() => {
startConnect();
});
```

5
docs/content/user-guide/zh/problem/problem.md

@ -0,0 +1,5 @@
## 编译
### VS 编译项目字符串超过 256 个字符
- 把项目拷贝到磁盘根目录 OR 使用 Rider 开发

101
docs/mkdocs.yml

@ -0,0 +1,101 @@
# Project information
site_name: Lion.AbpPro
site_url: http://cap.dotnetcore.xyz
site_description: AbpPro Vue 版本实现
site_author: AbpPro Team
repo_name: "GitHub"
repo_url: "https://github.com/WangJunZzz/abp-vnext-pro"
edit_uri: "edit/master/docs/content"
docs_dir: "content"
# Copyright
copyright: Copyright &copy; 2022 <a href="https://github.com/WangJunZzz/abp-vnext-pro"></a>.
#theme: material
theme:
name: "material"
palette:
primary: "deep purple"
accent: "indigo"
language: en
include_sidebar: true
logo: "img/logo.svg"
favicon: "img/favicon.ico"
features:
- navigation.tabs
- navigation.instant
i18n:
prev: "Previous"
next: "Next"
#Customization
extra:
social:
- icon: "fontawesome/brands/github"
link: "https://github.com/WangJunZzz/abp-vnext-pro"
# Extensions
markdown_extensions:
- markdown.extensions.admonition
- markdown.extensions.codehilite:
guess_lang: true
linenums: false
- markdown.extensions.def_list
- markdown.extensions.footnotes
- markdown.extensions.meta
- markdown.extensions.toc:
permalink: true
- pymdownx.arithmatex
- pymdownx.betterem:
smart_enable: all
- pymdownx.caret
- pymdownx.critic
- pymdownx.details
- pymdownx.emoji:
emoji_generator: !!python/name:pymdownx.emoji.to_svg
- pymdownx.inlinehilite
- pymdownx.keys
- pymdownx.magiclink:
repo_url_shorthand: true
user: dotnetcore
repo: cap
- pymdownx.mark
- pymdownx.smartsymbols
- pymdownx.superfences
- pymdownx.tasklist:
custom_checkbox: true
- pymdownx.tilde
nav:
- Home: index.md
- 文档(中文):
- 入门:
- 快速开始: user-guide/zh/getting-started/quick-start.md
- 介绍: user-guide/zh/getting-started/introduction.md
- 贡献: user-guide/zh/getting-started/contributing.md
- 基础设施:
- 配置: user-guide/zh/infrastructure/config.md
- 前端: user-guide/zh/infrastructure/frontend.md
- FreeSql: user-guide/zh/infrastructure/freesql.md
- 应用模块:
- 身份认证: user-guide/zh/modules/identity.md
- 设置(Setting): user-guide/zh/modules/setting.md
- 数据字典: user-guide/zh/modules/dic.md
- 文件管理: user-guide/zh/modules/file.md
- 实时通信: user-guide/zh/modules/signalr.md
- 扩展:
- 统一返回值格式: user-guide/zh/extension/统一返回值格式.md
- Magicodes.IE: user-guide/zh/extension/MagicodesIE.md
- 部署:
- Docker: user-guide/zh/deploy/docker.md
- Github自动化部署: user-guide/zh/deploy/github.md
- 常见问题:
- 问题: user-guide/zh/problem/problem.md
- Release:
- 发行说明: about/release-notes.md
- 关于:
- Contact Us: about/contact-us.md
- License: about/license.md

957
docs/site/404.html

@ -0,0 +1,957 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="AbpPro Vue 版本实现">
<meta name="author" content="AbpPro Team">
<link rel="icon" href="/img/favicon.ico">
<meta name="generator" content="mkdocs-1.3.0, mkdocs-material-8.3.9">
<title>Lion.AbpPro</title>
<link rel="stylesheet" href="/assets/stylesheets/main.1d29e8d0.min.css">
<link rel="stylesheet" href="/assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#7e56c2">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("/",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="deep-purple" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="/." title="Lion.AbpPro" class="md-header__button md-logo" aria-label="Lion.AbpPro" data-md-component="logo">
<img src="/img/logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Lion.AbpPro
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/WangJunZzz/abp-vnext-pro" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="/." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="/user-guide/zh/getting-started/quick-start/" class="md-tabs__link">
文档(中文)
</a>
</li>
<li class="md-tabs__item">
<a href="/user-guide/zh/problem/problem/" class="md-tabs__link">
常见问题
</a>
</li>
<li class="md-tabs__item">
<a href="/about/release-notes/" class="md-tabs__link">
Release
</a>
</li>
<li class="md-tabs__item">
<a href="/about/contact-us/" class="md-tabs__link">
关于
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="/." title="Lion.AbpPro" class="md-nav__button md-logo" aria-label="Lion.AbpPro" data-md-component="logo">
<img src="/img/logo.svg" alt="logo">
</a>
Lion.AbpPro
</label>
<div class="md-nav__source">
<a href="https://github.com/WangJunZzz/abp-vnext-pro" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2">
文档(中文)
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="文档(中文)" data-md-level="1">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
文档(中文)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_1" type="checkbox" id="__nav_2_1" >
<label class="md-nav__link" for="__nav_2_1">
入门
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="入门" data-md-level="2">
<label class="md-nav__title" for="__nav_2_1">
<span class="md-nav__icon md-icon"></span>
入门
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/user-guide/zh/getting-started/quick-start/" class="md-nav__link">
快速开始
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/getting-started/introduction/" class="md-nav__link">
介绍
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/getting-started/contributing/" class="md-nav__link">
贡献
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_2" type="checkbox" id="__nav_2_2" >
<label class="md-nav__link" for="__nav_2_2">
基础设施
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="基础设施" data-md-level="2">
<label class="md-nav__title" for="__nav_2_2">
<span class="md-nav__icon md-icon"></span>
基础设施
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/user-guide/zh/infrastructure/config/" class="md-nav__link">
配置
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/infrastructure/frontend/" class="md-nav__link">
前端
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/infrastructure/freesql/" class="md-nav__link">
FreeSql
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_3" type="checkbox" id="__nav_2_3" >
<label class="md-nav__link" for="__nav_2_3">
应用模块
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="应用模块" data-md-level="2">
<label class="md-nav__title" for="__nav_2_3">
<span class="md-nav__icon md-icon"></span>
应用模块
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/user-guide/zh/modules/identity/" class="md-nav__link">
身份认证
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/modules/setting/" class="md-nav__link">
设置(Setting)
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/modules/dic/" class="md-nav__link">
数据字典
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/modules/file/" class="md-nav__link">
文件管理
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/modules/signalr/" class="md-nav__link">
实时通信
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" >
<label class="md-nav__link" for="__nav_2_4">
扩展
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="扩展" data-md-level="2">
<label class="md-nav__title" for="__nav_2_4">
<span class="md-nav__icon md-icon"></span>
扩展
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/user-guide/zh/extension/%E7%BB%9F%E4%B8%80%E8%BF%94%E5%9B%9E%E5%80%BC%E6%A0%BC%E5%BC%8F/" class="md-nav__link">
统一返回值格式
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/extension/MagicodesIE/" class="md-nav__link">
Magicodes.IE
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
<label class="md-nav__link" for="__nav_2_5">
部署
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="部署" data-md-level="2">
<label class="md-nav__title" for="__nav_2_5">
<span class="md-nav__icon md-icon"></span>
部署
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/user-guide/zh/deploy/docker/" class="md-nav__link">
Docker
</a>
</li>
<li class="md-nav__item">
<a href="/user-guide/zh/deploy/github/" class="md-nav__link">
Github自动化部署
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3">
常见问题
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="常见问题" data-md-level="1">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
常见问题
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/user-guide/zh/problem/problem/" class="md-nav__link">
问题
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4">
Release
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Release" data-md-level="1">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Release
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/about/release-notes/" class="md-nav__link">
发行说明
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5">
关于
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="关于" data-md-level="1">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
关于
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/about/contact-us/" class="md-nav__link">
Contact Us
</a>
</li>
<li class="md-nav__item">
<a href="/about/license/" class="md-nav__link">
License
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>404 - Not found</h1>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2022 <a href="https://github.com/WangJunZzz/abp-vnext-pro"></a>.
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/WangJunZzz/abp-vnext-pro" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "/", "features": ["navigation.tabs", "navigation.instant"], "search": "/assets/javascripts/workers/search.b97dbffb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}}</script>
<script src="/assets/javascripts/bundle.6c7ad80a.min.js"></script>
</body>
</html>

1
docs/site/CNAME

@ -0,0 +1 @@
doc.cncore.club

1088
docs/site/about/contact-us/index.html

File diff suppressed because it is too large

1027
docs/site/about/license/index.html

File diff suppressed because it is too large

1148
docs/site/about/release-notes/index.html

File diff suppressed because it is too large

BIN
docs/site/assets/images/favicon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

29
docs/site/assets/javascripts/bundle.6c7ad80a.min.js

File diff suppressed because one or more lines are too long

8
docs/site/assets/javascripts/bundle.6c7ad80a.min.js.map

File diff suppressed because one or more lines are too long

1
docs/site/assets/javascripts/lunr/min/lunr.ar.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.da.min.js

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Danish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});

18
docs/site/assets/javascripts/lunr/min/lunr.de.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.du.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.es.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.fi.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.fr.min.js

File diff suppressed because one or more lines are too long

1
docs/site/assets/javascripts/lunr/min/lunr.hi.min.js

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});

18
docs/site/assets/javascripts/lunr/min/lunr.hu.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.it.min.js

File diff suppressed because one or more lines are too long

1
docs/site/assets/javascripts/lunr/min/lunr.ja.min.js

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});

1
docs/site/assets/javascripts/lunr/min/lunr.jp.min.js

@ -0,0 +1 @@
module.exports=require("./lunr.ja");

1
docs/site/assets/javascripts/lunr/min/lunr.multi.min.js

@ -0,0 +1 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});

18
docs/site/assets/javascripts/lunr/min/lunr.nl.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.no.min.js

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Norwegian` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});

18
docs/site/assets/javascripts/lunr/min/lunr.pt.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.ro.min.js

File diff suppressed because one or more lines are too long

18
docs/site/assets/javascripts/lunr/min/lunr.ru.min.js

File diff suppressed because one or more lines are too long

1
docs/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js

@ -0,0 +1 @@
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});

18
docs/site/assets/javascripts/lunr/min/lunr.sv.min.js

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Swedish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});

1
docs/site/assets/javascripts/lunr/min/lunr.th.min.js

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}});

18
docs/site/assets/javascripts/lunr/min/lunr.tr.min.js

File diff suppressed because one or more lines are too long

1
docs/site/assets/javascripts/lunr/min/lunr.vi.min.js

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}});

1
docs/site/assets/javascripts/lunr/min/lunr.zh.min.js

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("nodejieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}});

206
docs/site/assets/javascripts/lunr/tinyseg.js

@ -0,0 +1,206 @@
/**
* export the module via AMD, CommonJS or as a browser global
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
*/
;(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory)
} else if (typeof exports === 'object') {
/**
* Node. Does not work with strict CommonJS, but
* only CommonJS-like environments that support module.exports,
* like Node.
*/
module.exports = factory()
} else {
// Browser globals (root is window)
factory()(root.lunr);
}
}(this, function () {
/**
* Just return a value to define the module export.
* This example returns an object, but the module
* can return a function as the exported value.
*/
return function(lunr) {
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
// (c) 2008 Taku Kudo <taku@chasen.org>
// TinySegmenter is freely distributable under the terms of a new BSD licence.
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
function TinySegmenter() {
var patterns = {
"[一二三四五六七八九十百千万億兆]":"M",
"[一-龠々〆ヵヶ]":"H",
"[ぁ-ん]":"I",
"[ァ-ヴーア-ン゙ー]":"K",
"[a-zA-Za-zA-Z]":"A",
"[0-90-9]":"N"
}
this.chartype_ = [];
for (var i in patterns) {
var regexp = new RegExp(i);
this.chartype_.push([regexp, patterns[i]]);
}
this.BIAS__ = -332
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
this.BP2__ = {"BO":60,"OO":-1762};
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669};
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
this.TW1__ = {"につい":-4681,"東京都":2026};
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
this.UC3__ = {"A":-1370,"I":2311};
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
this.UP1__ = {"O":-214};
this.UP2__ = {"B":69,"O":935};
this.UP3__ = {"B":189};
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496};
return this;
}
TinySegmenter.prototype.ctype_ = function(str) {
for (var i in this.chartype_) {
if (str.match(this.chartype_[i][0])) {
return this.chartype_[i][1];
}
}
return "O";
}
TinySegmenter.prototype.ts_ = function(v) {
if (v) { return v; }
return 0;
}
TinySegmenter.prototype.segment = function(input) {
if (input == null || input == undefined || input == "") {
return [];
}
var result = [];
var seg = ["B3","B2","B1"];
var ctype = ["O","O","O"];
var o = input.split("");
for (i = 0; i < o.length; ++i) {
seg.push(o[i]);
ctype.push(this.ctype_(o[i]))
}
seg.push("E1");
seg.push("E2");
seg.push("E3");
ctype.push("O");
ctype.push("O");
ctype.push("O");
var word = seg[3];
var p1 = "U";
var p2 = "U";
var p3 = "U";
for (var i = 4; i < seg.length - 3; ++i) {
var score = this.BIAS__;
var w1 = seg[i-3];
var w2 = seg[i-2];
var w3 = seg[i-1];
var w4 = seg[i];
var w5 = seg[i+1];
var w6 = seg[i+2];
var c1 = ctype[i-3];
var c2 = ctype[i-2];
var c3 = ctype[i-1];
var c4 = ctype[i];
var c5 = ctype[i+1];
var c6 = ctype[i+2];
score += this.ts_(this.UP1__[p1]);
score += this.ts_(this.UP2__[p2]);
score += this.ts_(this.UP3__[p3]);
score += this.ts_(this.BP1__[p1 + p2]);
score += this.ts_(this.BP2__[p2 + p3]);
score += this.ts_(this.UW1__[w1]);
score += this.ts_(this.UW2__[w2]);
score += this.ts_(this.UW3__[w3]);
score += this.ts_(this.UW4__[w4]);
score += this.ts_(this.UW5__[w5]);
score += this.ts_(this.UW6__[w6]);
score += this.ts_(this.BW1__[w2 + w3]);
score += this.ts_(this.BW2__[w3 + w4]);
score += this.ts_(this.BW3__[w4 + w5]);
score += this.ts_(this.TW1__[w1 + w2 + w3]);
score += this.ts_(this.TW2__[w2 + w3 + w4]);
score += this.ts_(this.TW3__[w3 + w4 + w5]);
score += this.ts_(this.TW4__[w4 + w5 + w6]);
score += this.ts_(this.UC1__[c1]);
score += this.ts_(this.UC2__[c2]);
score += this.ts_(this.UC3__[c3]);
score += this.ts_(this.UC4__[c4]);
score += this.ts_(this.UC5__[c5]);
score += this.ts_(this.UC6__[c6]);
score += this.ts_(this.BC1__[c2 + c3]);
score += this.ts_(this.BC2__[c3 + c4]);
score += this.ts_(this.BC3__[c4 + c5]);
score += this.ts_(this.TC1__[c1 + c2 + c3]);
score += this.ts_(this.TC2__[c2 + c3 + c4]);
score += this.ts_(this.TC3__[c3 + c4 + c5]);
score += this.ts_(this.TC4__[c4 + c5 + c6]);
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
score += this.ts_(this.UQ1__[p1 + c1]);
score += this.ts_(this.UQ2__[p2 + c2]);
score += this.ts_(this.UQ3__[p3 + c3]);
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
var p = "O";
if (score > 0) {
result.push(word);
word = "";
p = "B";
}
p1 = p2;
p2 = p3;
p3 = p;
word += seg[i];
}
result.push(word);
return result;
}
lunr.TinySegmenter = TinySegmenter;
};
}));

6708
docs/site/assets/javascripts/lunr/wordcut.js

File diff suppressed because one or more lines are too long

48
docs/site/assets/javascripts/workers/search.b97dbffb.min.js

File diff suppressed because one or more lines are too long

8
docs/site/assets/javascripts/workers/search.b97dbffb.min.js.map

File diff suppressed because one or more lines are too long

1
docs/site/assets/stylesheets/main.1d29e8d0.min.css

File diff suppressed because one or more lines are too long

1
docs/site/assets/stylesheets/main.1d29e8d0.min.css.map

File diff suppressed because one or more lines are too long

1
docs/site/assets/stylesheets/palette.cbb835fc.min.css

File diff suppressed because one or more lines are too long

1
docs/site/assets/stylesheets/palette.cbb835fc.min.css.map

@ -0,0 +1 @@
{"version":3,"sources":["src/assets/stylesheets/palette/_scheme.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_accent.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"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","file":"palette.css"}

BIN
docs/site/img/dic.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
docs/site/img/donate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
docs/site/img/favicon.ico

Binary file not shown.

BIN
docs/site/img/file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
docs/site/img/login.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/site/img/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

172
docs/site/img/logo.svg

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="86px" height="86px" viewBox="0 0 86 86" enable-background="new 0 0 86 86" xml:space="preserve"> <image id="image0" width="86" height="86" x="0" y="0"
href="data:image/png;base64,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" />
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/site/img/migrating.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/site/img/role.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/site/img/send.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
docs/site/img/send1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/site/img/uo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
docs/site/img/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

1123
docs/site/index.html

File diff suppressed because it is too large

1
docs/site/search/search_index.json

File diff suppressed because one or more lines are too long

103
docs/site/sitemap.xml

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://cap.dotnetcore.xyz/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/about/contact-us/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/about/license/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/about/release-notes/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/deploy/docker/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/deploy/github/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/extension/MagicodesIE/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/extension/%E7%BB%9F%E4%B8%80%E8%BF%94%E5%9B%9E%E5%80%BC%E6%A0%BC%E5%BC%8F/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/getting-started/contributing/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/getting-started/introduction/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/getting-started/quick-start/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/infrastructure/config/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/infrastructure/freesql/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/infrastructure/frontend/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/modules/dic/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/modules/file/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/modules/identity/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/modules/setting/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/modules/signalr/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://cap.dotnetcore.xyz/user-guide/zh/problem/problem/</loc>
<lastmod>2022-08-06</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

BIN
docs/site/sitemap.xml.gz

Binary file not shown.

1274
docs/site/user-guide/zh/deploy/docker/index.html

File diff suppressed because it is too large

1333
docs/site/user-guide/zh/deploy/github/index.html

File diff suppressed because it is too large

1113
docs/site/user-guide/zh/extension/MagicodesIE/index.html

File diff suppressed because it is too large

1290
docs/site/user-guide/zh/extension/统一返回值格式/index.html

File diff suppressed because it is too large

1103
docs/site/user-guide/zh/getting-started/contributing/index.html

File diff suppressed because it is too large

1196
docs/site/user-guide/zh/getting-started/introduction/index.html

File diff suppressed because it is too large

1254
docs/site/user-guide/zh/getting-started/quick-start/index.html

File diff suppressed because it is too large

1312
docs/site/user-guide/zh/infrastructure/config/index.html

File diff suppressed because it is too large

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save