Showing preview only (4,402K chars total). Download the full file or copy to clipboard to get everything.
Repository: cool-team-official/cool-admin-midway
Branch: 8.x
Commit: 43b0e10f6e20
Files: 199
Total size: 4.2 MB
Directory structure:
gitextract_s3igecng/
├── .cursor/
│ └── rules/
│ ├── authority.mdc
│ ├── cache.mdc
│ ├── controller.mdc
│ ├── db.mdc
│ ├── event.mdc
│ ├── exception.mdc
│ ├── module.mdc
│ ├── service.mdc
│ ├── socket.mdc
│ ├── task.mdc
│ └── tenant.mdc
├── .cursorrules
├── .editorconfig
├── .eslintrc.json
├── .gitattributes
├── .gitignore
├── .prettierrc.js
├── .vscode/
│ ├── config.code-snippets
│ ├── controller.code-snippets
│ ├── entity.code-snippets
│ ├── event.code-snippets
│ ├── middleware.code-snippets
│ ├── queue.code-snippets
│ └── service.code-snippets
├── Dockerfile
├── LICENSE
├── README.md
├── bootstrap.js
├── docker-compose.yml
├── jest.config.js
├── package.json
├── public/
│ ├── css/
│ │ └── welcome.css
│ ├── index.html
│ ├── js/
│ │ └── welcome.js
│ └── swagger/
│ ├── LICENSE
│ ├── NOTICE
│ ├── README.md
│ ├── absolute-path.js
│ ├── index.css
│ ├── index.html
│ ├── index.js
│ ├── oauth2-redirect.html
│ ├── package.json
│ ├── swagger-initializer.js
│ ├── swagger-ui-bundle.js
│ ├── swagger-ui-es-bundle-core.js
│ ├── swagger-ui-es-bundle.js
│ ├── swagger-ui-standalone-preset.js
│ ├── swagger-ui.css
│ └── swagger-ui.js
├── src/
│ ├── comm/
│ │ ├── path.ts
│ │ ├── port.ts
│ │ └── utils.ts
│ ├── config/
│ │ ├── config.default.ts
│ │ ├── config.local.ts
│ │ └── config.prod.ts
│ ├── configuration.ts
│ ├── entities.ts
│ ├── interface.ts
│ └── modules/
│ ├── base/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── coding.ts
│ │ │ │ ├── comm.ts
│ │ │ │ ├── open.ts
│ │ │ │ └── sys/
│ │ │ │ ├── department.ts
│ │ │ │ ├── log.ts
│ │ │ │ ├── menu.ts
│ │ │ │ ├── param.ts
│ │ │ │ ├── role.ts
│ │ │ │ └── user.ts
│ │ │ └── app/
│ │ │ ├── README.md
│ │ │ └── comm.ts
│ │ ├── db/
│ │ │ └── tenant.ts
│ │ ├── db.json
│ │ ├── dto/
│ │ │ └── login.ts
│ │ ├── entity/
│ │ │ ├── base.ts
│ │ │ └── sys/
│ │ │ ├── conf.ts
│ │ │ ├── department.ts
│ │ │ ├── log.ts
│ │ │ ├── menu.ts
│ │ │ ├── param.ts
│ │ │ ├── role.ts
│ │ │ ├── role_department.ts
│ │ │ ├── role_menu.ts
│ │ │ ├── user.ts
│ │ │ └── user_role.ts
│ │ ├── event/
│ │ │ ├── app.ts
│ │ │ └── menu.ts
│ │ ├── job/
│ │ │ └── log.ts
│ │ ├── menu.json
│ │ ├── middleware/
│ │ │ ├── authority.ts
│ │ │ ├── log.ts
│ │ │ └── translate.ts
│ │ └── service/
│ │ ├── coding.ts
│ │ ├── sys/
│ │ │ ├── conf.ts
│ │ │ ├── data.ts
│ │ │ ├── department.ts
│ │ │ ├── log.ts
│ │ │ ├── login.ts
│ │ │ ├── menu.ts
│ │ │ ├── param.ts
│ │ │ ├── perms.ts
│ │ │ ├── role.ts
│ │ │ └── user.ts
│ │ └── translate.ts
│ ├── demo/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── goods.ts
│ │ │ │ └── tenant.ts
│ │ │ └── open/
│ │ │ ├── cache.ts
│ │ │ ├── event.ts
│ │ │ ├── goods.ts
│ │ │ ├── i18n.ts
│ │ │ ├── plugin.ts
│ │ │ ├── queue.ts
│ │ │ ├── rpc.ts
│ │ │ ├── sse.ts
│ │ │ ├── tenant.ts
│ │ │ └── transaction.ts
│ │ ├── entity/
│ │ │ └── goods.ts
│ │ ├── event/
│ │ │ └── comm.ts
│ │ ├── queue/
│ │ │ ├── comm.ts
│ │ │ ├── getter.ts
│ │ │ └── single.ts
│ │ └── service/
│ │ ├── cache.ts
│ │ ├── goods.ts
│ │ ├── i18n.ts
│ │ ├── rpc.ts
│ │ ├── tenant.ts
│ │ └── transaction.ts
│ ├── dict/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── info.ts
│ │ │ │ └── type.ts
│ │ │ └── app/
│ │ │ └── info.ts
│ │ ├── db.json
│ │ ├── entity/
│ │ │ ├── info.ts
│ │ │ └── type.ts
│ │ └── service/
│ │ ├── info.ts
│ │ └── type.ts
│ ├── plugin/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── admin/
│ │ │ └── info.ts
│ │ ├── entity/
│ │ │ └── info.ts
│ │ ├── event/
│ │ │ ├── app.ts
│ │ │ └── init.ts
│ │ ├── hooks/
│ │ │ ├── base.ts
│ │ │ └── upload/
│ │ │ ├── index.ts
│ │ │ └── interface.ts
│ │ ├── interface.ts
│ │ └── service/
│ │ ├── center.ts
│ │ ├── info.ts
│ │ └── types.ts
│ ├── recycle/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── admin/
│ │ │ └── data.ts
│ │ ├── entity/
│ │ │ └── data.ts
│ │ ├── event/
│ │ │ └── data.ts
│ │ ├── schedule/
│ │ │ └── data.ts
│ │ └── service/
│ │ └── data.ts
│ ├── space/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── info.ts
│ │ │ │ └── type.ts
│ │ │ └── 说明.md
│ │ ├── entity/
│ │ │ ├── info.ts
│ │ │ └── type.ts
│ │ └── service/
│ │ ├── info.ts
│ │ └── type.ts
│ ├── swagger/
│ │ ├── builder.ts
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── index.ts
│ │ └── event/
│ │ └── app.ts
│ ├── task/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── admin/
│ │ │ └── info.ts
│ │ ├── db.json
│ │ ├── entity/
│ │ │ ├── info.ts
│ │ │ └── log.ts
│ │ ├── event/
│ │ │ └── comm.ts
│ │ ├── middleware/
│ │ │ └── task.ts
│ │ ├── queue/
│ │ │ └── task.ts
│ │ └── service/
│ │ ├── bull.ts
│ │ ├── demo.ts
│ │ ├── info.ts
│ │ └── local.ts
│ └── user/
│ ├── config.ts
│ ├── controller/
│ │ ├── admin/
│ │ │ ├── address.ts
│ │ │ └── info.ts
│ │ └── app/
│ │ ├── address.ts
│ │ ├── comm.ts
│ │ ├── info.ts
│ │ └── login.ts
│ ├── entity/
│ │ ├── address.ts
│ │ ├── info.ts
│ │ └── wx.ts
│ ├── middleware/
│ │ └── app.ts
│ └── service/
│ ├── address.ts
│ ├── info.ts
│ ├── login.ts
│ ├── sms.ts
│ └── wx.ts
├── test/
│ └── README.md
├── tsconfig.json
└── typings/
├── plugin.d.ts
└── upload.d.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .cursor/rules/authority.mdc
================================================
---
description: 权限管理(Authority)
globs:
---
# 权限管理(Authority)
cool-admin 采用是是一种无状态的权限校验方式。[jwt](mdc:https:/jwt.io/introduction), 通俗地讲他就是把用户的一些信息经过处理生成一段加密的字符串,后端解密到信息进行校验。而且这个信息是带有时效的。
cool-admin 默认约定每个模块下的 `controller/admin`为后台编写接口,`controller/app`编写对外如 app、小程序的接口。
- 框架会对路由前缀 `/admin/**` 开头的接口进行权限校验,校验逻辑写在`base`模块下的`middleware/authority.ts`中间件
- 框架会对路由前缀 `/app/**` 开头的接口进行权限校验,校验逻辑写在`user`模块下的`middleware/app.ts`中间件
::: tip
也就是说模块`controller/admin`与`controller/app`是需要进行 token 校验的,如果你不想 token 校验有两种方式:
- 使用路由标签的形式,忽略 token 校验,详细查看[路由标签](mdc:src/guide/core/controller.html#路由标签);
- 新建其他的文件夹比如:`controller/open`;
这样就不会提示登录失效~
:::
## 登录
查询校验用户信息,然后将用户信息用 jwt 的方式加密保存返回给客户端。
`src/app/modules/base/service/sys/login.ts`
```ts
/**
* 登录
* @param login
*/
async login(login: LoginDTO) {
const { username, captchaId, verifyCode, password } = login;
// 校验验证码
const checkV = await this.captchaCheck(captchaId, verifyCode);
if (checkV) {
const user = await this.baseSysUserEntity.findOne({ username });
// 校验用户
if (user) {
// 校验用户状态及密码
if (user.status === 0 || user.password !== md5(password)) {
throw new CoolCommException('账户或密码不正确~');
}
} else {
throw new CoolCommException('账户或密码不正确~');
}
// 校验角色
const roleIds = await this.baseSysRoleService.getByUser(user.id);
if (_.isEmpty(roleIds)) {
throw new CoolCommException('该用户未设置任何角色,无法登录~');
}
// 生成token
const { expire, refreshExpire } = this.coolConfig.jwt.token;
const result = {
expire,
token: await this.generateToken(user, roleIds, expire),
refreshExpire,
refreshToken: await this.generateToken(
user,
roleIds,
refreshExpire,
true
),
};
// 将用户相关信息保存到缓存
const perms = await this.baseSysMenuService.getPerms(roleIds);
const departments = await this.baseSysDepartmentService.getByRoleIds(
roleIds,
user.username === 'admin'
);
await this.coolCache.set(
`admin:department:${user.id}`,
JSON.stringify(departments)
);
await this.coolCache.set(`admin:perms:${user.id}`, JSON.stringify(perms));
await this.coolCache.set(`admin:token:${user.id}`, result.token);
await this.coolCache.set(`admin:token:refresh:${user.id}`, result.token);
return result;
} else {
throw new CoolCommException('验证码不正确');
}
}
```
## 权限配置
admin 用户拥有所有的权限,无需配置,但是对于其他只拥有部分权限的用户,我们得选择他们的权限,在这之前我们得先录入我们的系统有哪些权限是可以配置的
可以登录后台管理系统,`系统管理/权限管理/菜单列表`

## 选择权限
新建一个角色,就可以为这个角色配置对应的权限,用户管理可以选择对应的角色,那么该用户就有对应的权限,一个用户可以选择多个角色

## 全局校验
通过一个全局的中间件,我们在全局统一处理,这样就无需在每个 controller 处理,显得有点多余。
`src/app/modules/base/middleware/authority.ts`
```ts
import { App, Config, Middleware } from "@midwayjs/core";
import * as _ from "lodash";
import { RESCODE } from "@cool-midway/core";
import * as jwt from "jsonwebtoken";
import { NextFunction, Context } from "@midwayjs/koa";
import { IMiddleware, IMidwayApplication } from "@midwayjs/core";
/**
* 权限校验
*/
@Middleware()
export class BaseAuthorityMiddleware
implements IMiddleware<Context, NextFunction>
{
@Config("koa.globalPrefix")
prefix;
@Config("module.base")
jwtConfig;
coolCache;
@App()
app: IMidwayApplication;
resolve() {
return async (ctx: Context, next: NextFunction) => {
let statusCode = 200;
let { url } = ctx;
url = url.replace(this.prefix, "");
const token = ctx.get("Authorization");
const adminUrl = "/admin/";
// 路由地址为 admin前缀的 需要权限校验
if (_.startsWith(url, adminUrl)) {
try {
ctx.admin = jwt.verify(token, this.jwtConfig.jwt.secret);
} catch (err) {}
// 不需要登录 无需权限校验
if (new RegExp(`^${adminUrl}?.*/open/`).test(url)) {
await next();
return;
}
if (ctx.admin) {
// 超管拥有所有权限
if (ctx.admin.username == "admin" && !ctx.admin.isRefresh) {
await next();
return;
}
// 要登录每个人都有权限的接口
if (new RegExp(`^${adminUrl}?.*/comm/`).test(url)) {
await next();
return;
}
// 如果传的token是refreshToken则校验失败
if (ctx.admin.isRefresh) {
ctx.status = 401;
ctx.body = {
code: RESCODE.COMMFAIL,
message: "登录失效~",
};
return;
}
// 需要动态获得缓存
this.coolCache = await ctx.requestContext.getAsync("cool:cache");
// 判断密码版本是否正确
const passwordV = await this.coolCache.get(
`admin:passwordVersion:${ctx.admin.userId}`
);
if (passwordV != ctx.admin.passwordVersion) {
ctx.status = 401;
ctx.body = {
code: RESCODE.COMMFAIL,
message: "登录失效~",
};
return;
}
const rToken = await this.coolCache.get(
`admin:token:${ctx.admin.userId}`
);
if (!rToken) {
ctx.status = 401;
ctx.body = {
code: RESCODE.COMMFAIL,
message: "登录失效或无权限访问~",
};
return;
}
if (rToken !== token && this.jwtConfig.sso) {
statusCode = 401;
} else {
let perms = await this.coolCache.get(
`admin:perms:${ctx.admin.userId}`
);
if (!_.isEmpty(perms)) {
perms = JSON.parse(perms).map((e) => {
return e.replace(/:/g, "/");
});
if (!perms.includes(url.split("?")[0].replace("/admin/", ""))) {
statusCode = 403;
}
} else {
statusCode = 403;
}
}
} else {
statusCode = 401;
}
if (statusCode > 200) {
ctx.status = statusCode;
ctx.body = {
code: RESCODE.COMMFAIL,
message: "登录失效或无权限访问~",
};
return;
}
}
await next();
};
}
}
```
## 令牌续期
jwt 加密完的字符串是有时效的,系统默认时效时间为 2 个小时。这期间就需要续期令牌才可以继续操作。
框架登录设置了一个 refreshToken,默认过期时间为 30 天。可以使用这个去换取新的 token,这时候又可以延长 2 个小时。
## 其他权限
你可以单独编写一个中间间来控制其他权限,如 app、小程序及其他对外接口,但是可以参考后台管理系统权限过滤、token 生成校验的实现方式
================================================
FILE: .cursor/rules/cache.mdc
================================================
---
description: 缓存(Cache)
globs:
---
# 缓存
为了方便开发者进行缓存操作的组件,它有利于改善项目的性能。它为我们提供了一个数据中心以便进行高效的数据访问。
:::
## 使用
```ts
import { InjectClient, Provide } from '@midwayjs/core';
import { CachingFactory, MidwayCache } from '@midwayjs/cache-manager';
@Provide()
export class UserService {
@InjectClient(CachingFactory, 'default')
cache: MidwayCache;
async invoke(name: string, value: string) {
// 设置缓存
await this.cache.set(name, value);
// 获取缓存
const data = await this.cache.get(name);
// ...
}
}
```
## 换成 Redis (v7.1 版本)
安装依赖,具体可以查看@midwayjs cache
```bash
pnpm i cache-manager-ioredis-yet --save
```
`src/config/config.default.ts`
```ts
import { CoolFileConfig, MODETYPE } from "@cool-midway/file";
import { MidwayConfig } from "@midwayjs/core";
// redis缓存
import { redisStore } from "cache-manager-ioredis-yet";
export default {
// Redis缓存
cacheManager: {
clients: {
default: {
store: redisStore,
options: {
port: 6379,
host: "127.0.0.1",
password: "",
ttl: 0,
db: 0,
},
},
},
},
} as unknown as MidwayConfig;
```
## 换成 Redis (以往版本)
```bash
pnpm i cache-manager-ioredis --save
```
`src/config/config.default.ts`
```ts
import { CoolFileConfig, MODETYPE } from "@cool-midway/file";
import { MidwayConfig } from "@midwayjs/core";
// redis缓存
import * as redisStore from "cache-manager-ioredis";
export default {
// Redis缓存
cache: {
store: redisStore,
options: {
port: 6379,
host: "127.0.0.1",
password: "",
db: 0,
keyPrefix: "cool:",
ttl: null,
},
},
} as unknown as MidwayConfig;
```
## 使用
`src/modules/demo/controller/open/cache.ts`
```ts
import { DemoCacheService } from "../../service/cache";
import { Inject, Post, Provide, Get, InjectClient } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { CachingFactory, MidwayCache } from "@midwayjs/cache-manager";
/**
* 缓存
*/
@Provide()
@CoolController()
export class AppDemoCacheController extends BaseController {
@InjectClient(CachingFactory, "default")
midwayCache: MidwayCache;
@Inject()
demoCacheService: DemoCacheService;
/**
* 设置缓存
* @returns
*/
@Post("/set")
async set() {
await this.midwayCache.set("a", 1);
// 缓存10秒
await this.midwayCache.set("a", 1, 10 * 1000);
return this.ok(await this.midwayCache.get("a"));
}
/**
* 获得缓存
* @returns
*/
@Get("/get")
async get() {
return this.ok(await this.demoCacheService.get());
}
}
```
## 方法缓存
有些业务场景,我们并不希望每次请求接口都需要操作数据库,如:今日推荐、上个月排行榜等,数据存储在 redis
框架提供了 `@CoolCache` 方法装饰器,方法设置缓存,让代码更优雅
`src/modules/demo/service/cache.ts`
```ts
import { Provide } from "@midwayjs/core";
import { CoolCache } from "@cool-midway/core";
/**
* 缓存
*/
@Provide()
export class DemoCacheService {
// 数据缓存5秒
@CoolCache(5000)
async get() {
console.log("执行方法");
return {
a: 1,
b: 2,
};
}
}
```
::: warning
service 主要是处理业务逻辑,`@CoolCache`应该要在 service 中使用,不要在 controller 等其他位置使用
:::
================================================
FILE: .cursor/rules/controller.mdc
================================================
---
description: 控制器(Controller)
globs:
---
# 控制器(Controller)
为了实现`快速CRUD`与`自动路由`功能,框架基于[midwayjs controller](mdc:https:/www.midwayjs.org/docs/controller),进行改造加强
完全继承[midwayjs controller](mdc:https:/www.midwayjs.org/docs/controller)的所有功能
`快速CRUD`与`自动路由`,大大提高编码效率与编码量
## 路由前缀
虽然可以手动设置,但是我们并不推荐,cool-admin 在全局权限校验包含一定的规则,
如果你没有很了解框架原理手动设置可能产生部分功能失效的问题
### 手动
`/api/other`
无通用 CRUD 设置方法
```ts
import { CoolController, BaseController } from "@cool-midway/core";
/**
* 商品
*/
@CoolController("/api")
export class AppDemoGoodsController extends BaseController {
/**
* 其他接口
*/
@Get("/other")
async other() {
return this.ok("hello, cool-admin!!!");
}
}
```
含通用 CRUD 配置方法
```ts
import { Get } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { DemoGoodsEntity } from "../../entity/goods";
/**
* 商品
*/
@CoolController({
prefix: "/api",
api: ["add", "delete", "update", "info", "list", "page"],
entity: DemoGoodsEntity,
})
export class AppDemoGoodsController extends BaseController {
/**
* 其他接口
*/
@Get("/other")
async other() {
return this.ok("hello, cool-admin!!!");
}
}
```
### 自动
大多数情况下你无需指定自己的路由前缀,路由前缀将根据规则自动生成。
::: warning 警告
自动路由只影响模块中的 controller,其他位置建议不要使用
:::
`src/modules/demo/controller/app/goods.ts`
路由前缀是根据文件目录文件名按照[规则](mdc:src/guide/core/controller.html#规则)生成的,上述示例生成的路由为
`http://127.0.0.1:8001/app/demo/goods/xxx`
`xxx`代表具体的方法,如: `add`、`page`、`other`
```ts
import { Get } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { DemoGoodsEntity } from "../../entity/goods";
/**
* 商品
*/
@CoolController({
api: ["add", "delete", "update", "info", "list", "page"],
entity: DemoGoodsEntity,
})
export class AppDemoGoodsController extends BaseController {
/**
* 其他接口
*/
@Get("/other")
async other() {
return this.ok("hello, cool-admin!!!");
}
}
```
### 规则
/controller 文件夹下的文件夹名或者文件名/模块文件夹名/方法名
#### 举例
```ts
// 模块目录
├── modules
│ └── demo(模块名)
│ │ └── controller(api接口)
│ │ │ └── app(参数校验)
│ │ │ │ └── goods.ts(商品的controller)
│ │ │ └── pay.ts(支付的controller)
│ │ └── config.ts(必须,模块的配置)
│ │ └── init.sql(可选,初始化该模块的sql)
```
生成的路由前缀为:
`/pay/demo/xxx(具体的方法)`与`/app/demo/goods/xxx(具体的方法)`
## CRUD
### 参数配置(CurdOption)
通用增删改查配置参数
| 参数 | 类型 | 说明 | 备注 |
| ------------------ | -------- | ------------------------------------------------------------- | ---- |
| prefix | String | 手动设置路由前缀 | |
| api | Array | 快速 API 接口可选`add` `delete` `update` `info` `list` `page` | |
| serviceApis | Array | 将 service 方法注册为 api,通过 post 请求,直接调用 service 方法 | |
| pageQueryOp | QueryOp | 分页查询设置 | |
| listQueryOp | QueryOp | 列表查询设置 | |
| insertParam | Function | 请求插入参数,如新增的时候需要插入当前登录用户的 ID | |
| infoIgnoreProperty | Array | `info`接口忽略返回的参数,如用户信息不想返回密码 | |
### 查询配置(QueryOp)
分页查询与列表查询配置参数
| 参数 | 类型 | 说明 | 备注 |
| ----------------- | -------- | ----------------------------------------------------------------------------------- | ---- |
| keyWordLikeFields | Array | 支持模糊查询的字段,如一个表中的`name`字段需要模糊查询 | |
| where | Function | 其他查询条件 | |
| select | Array | 选择查询字段 | |
| fieldEq | Array | 筛选字段,字符串数组或者对象数组{ column: string, requestParam: string },如 type=1 | |
| fieldLike | Array | 模糊查询字段,字符串数组或者对象数组{ column: string, requestParam: string },如 title | |
| addOrderBy | Object | 排序 | |
| join | JoinOp[] | 关联表查询 | |
### 关联表(JoinOp)
关联表查询配置参数
| 参数 | 类型 | 说明 |
| --------- | ------ | ------------------------------------------------------------------ |
| entity | Class | 实体类,注意不能写表名 |
| alias | String | 别名,如果有关联表默认主表的别名为`a`, 其他表一般按 b、c、d...设置 |
| condition | String | 关联条件 |
| type | String | 内关联: 'innerJoin', 左关联:'leftJoin' |
### 完整示例
```ts
import { Get } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { BaseSysUserEntity } from "../../../base/entity/sys/user";
import { DemoAppGoodsEntity } from "../../entity/goods";
/**
* 商品
*/
@CoolController({
// 添加通用CRUD接口
api: ["add", "delete", "update", "info", "list", "page"],
// 8.x新增,将service方法注册为api,通过post请求,直接调用service方法
serviceApis: [
'use',
{
method: 'test1',
summary: '不使用多租户', // 接口描述
},
'test2', // 也可以不设置summary
]
// 设置表实体
entity: DemoAppGoodsEntity,
// 向表插入当前登录用户ID
insertParam: (ctx) => {
return {
// 获得当前登录的后台用户ID,需要请求头传Authorization参数
userId: ctx.admin.userId,
};
},
// 操作crud之前做的事情 @cool-midway/core@3.2.14 新增
before: (ctx) => {
// 将前端的数据转JSON格式存数据库
const { data } = ctx.request.body;
ctx.request.body.data = JSON.stringify(data);
},
// info接口忽略价格字段
infoIgnoreProperty: ["price"],
// 分页查询配置
pageQueryOp: {
// 让title字段支持模糊查询
keyWordLikeFields: ["title"],
// 让type字段支持筛选,请求筛选字段与表字段一致是情况
fieldEq: ["type"],
// 多表关联,请求筛选字段与表字段不一致的情况
fieldEq: [{ column: "a.id", requestParam: "id" }],
// 让title字段支持模糊查询,请求参数为title
fieldLike: ['a.title'],
// 让title字段支持模糊查询,请求筛选字段与表字段不一致的情况
fieldLike: [{ column: "a.title", requestParam: "title" }],
// 指定返回字段,注意多表查询这个是必要的,否则会出现重复字段的问题
select: ["a.*", "b.name", "a.name AS userName"],
// 4.x置为过时 改用 join 关联表用户表
leftJoin: [
{
entity: BaseSysUserEntity,
alias: "b",
condition: "a.userId = b.id",
},
],
// 4.x新增
join: [
{
entity: BaseSysUserEntity,
alias: "b",
condition: "a.userId = b.id",
type: "innerJoin",
},
],
// 4.x 新增 追加其他条件
extend: async (find: SelectQueryBuilder<DemoGoodsEntity>) => {
find.groupBy("a.id");
},
// 增加其他条件
where: async (ctx) => {
// 获取body参数
const { a } = ctx.request.body;
return [
// 价格大于90
["a.price > :price", { price: 90.0 }],
// 满足条件才会执行
["a.price > :price", { price: 90.0 }, "条件"],
// 多个条件一起
[
"(a.price = :price or a.userId = :userId)",
{ price: 90.0, userId: ctx.admin.userId },
],
];
},
// 添加排序
addOrderBy: {
price: "desc",
},
},
})
export class DemoAppGoodsController extends BaseController {
/**
* 其他接口
*/
@Get("/other")
async other() {
return this.ok("hello, cool-admin!!!");
}
}
```
::: warning
如果是多表查询,必须设置 select 参数,否则会出现重复字段的错误,因为每个表都继承了 BaseEntity,至少都有 id、createTime、updateTime 三个相同的字段。
:::
通过这一波操作之后,我们的商品接口的功能已经很强大了,除了通用的 CRUD,我们的接口还支持多种方式的数据筛选
### 获得 ctx 对象
```ts
@CoolController(
{
api: ['add', 'delete', 'update', 'info', 'list', 'page'],
entity: DemoAppGoodsEntity,
// 获得ctx对象
listQueryOp: ctx => {
return new Promise<QueryOp>(res => {
res({
fieldEq: [],
});
});
},
// 获得ctx对象
pageQueryOp: ctx => {
return new Promise<QueryOp>(res => {
res({
fieldEq: [],
});
});
},
},
{
middleware: [],
}
)
```
### 接口调用
`add` `delete` `update` `info` 等接口可以用法[参照快速开始](mdc:src/guide/quick.html#接口调用)
这里详细说明下`page` `list`两个接口的调用方式,这两个接口调用方式差不多,一个是分页一个是非分页。
以`page`接口为例
#### 分页
POST `/admin/demo/goods/page` 分页数据
**请求**
Url: http://127.0.0.1:8001/admin/demo/goods/page
Method: POST
#### Body
```json
{
"keyWord": "商品标题", // 模糊搜索,搜索的字段对应keyWordLikeFields
"type": 1, // 全等于筛选,对应fieldEq
"page": 2, // 第几页
"size": 1, // 每页返回个数
"sort": "desc", // 排序方向
"order": "id" // 排序字段
}
```
**返回**
```json
{
"code": 1000,
"message": "success",
"data": {
"list": [
{
"id": 4,
"createTime": "2021-03-12 16:23:46",
"updateTime": "2021-03-12 16:23:46",
"title": "这是一个商品2",
"pic": "https://show.cool-admin.com/uploads/20210311/2e393000-8226-11eb-abcf-fd7ae6caeb70.png",
"price": "99.00",
"userId": 1,
"type": 1,
"name": "超级管理员"
}
],
"pagination": {
"page": 2,
"size": 1,
"total": 4
}
}
}
```
### 服务注册成 Api
很多情况下,我们在`Controller`层并不想过多地操作,而是想直接调用`Service`层的方法,这个时候我们可以将`Service`层的方法注册成`Api`,那么你的某个`Service`方法就变成了`Api`。
#### 示例:
在 Controller 中
```ts
import { CoolController, BaseController } from "@cool-midway/core";
import { DemoGoodsEntity } from "../../entity/goods";
import { DemoTenantService } from "../../service/tenant";
/**
* 示例
*/
@CoolController({
serviceApis: [
"use",
{
method: "test1",
summary: "不使用多租户", // 接口描述
},
"test2", // 也可以不设置summary
],
entity: DemoGoodsEntity,
service: DemoXxxService,
})
export class AdminDemoTenantController extends BaseController {}
```
在 Service 中
```ts
/**
* 示例服务
*/
@Provide()
export class DemoXxxService extends BaseService {
/**
* 示例方法1
*/
async test1(params) {
console.log(params);
return "test1";
}
/**
* 示例方法2
*/
async test2() {
return "test2";
}
}
```
::: warning 注意
`serviceApis` 注册为`Api`的请求方法是`POST`,所以`Service`层的方法参数需要通过`body`传递
:::
### 重写 CRUD 实现
在实际开发过程中,除了这些通用的接口可以满足大部分的需求,但是也有一些特殊的需求无法满足用户要求,这个时候也可以重写`add` `delete` `update` `info` `list` `page` 的实现
#### 编写 service
在模块新建 service 文件夹(名称非强制性),再新建一个`service`实现,继承框架的`BaseService`
```ts
import { Inject, Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/orm";
import { Repository } from "typeorm";
import { BaseSysMenuEntity } from "../../entity/sys/menu";
import * as _ from "lodash";
import { BaseSysPermsService } from "./perms";
/**
* 菜单
*/
@Provide()
export class BaseSysMenuService extends BaseService {
@Inject()
ctx;
@InjectEntityModel(BaseSysMenuEntity)
baseSysMenuEntity: Repository<BaseSysMenuEntity>;
@Inject()
baseSysPermsService: BaseSysPermsService;
/**
* 重写list实现
*/
async list() {
const menus = await this.getMenus(
this.ctx.admin.roleIds,
this.ctx.admin.username === "admin"
);
if (!_.isEmpty(menus)) {
menus.forEach((e) => {
const parentMenu = menus.filter((m) => {
e.parentId = parseInt(e.parentId);
if (e.parentId == m.id) {
return m.name;
}
});
if (!_.isEmpty(parentMenu)) {
e.parentName = parentMenu[0].name;
}
});
}
return menus;
}
}
```
#### 设置服务实现
`CoolController`设置自己的服务实现
```ts
import { Inject } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { BaseSysMenuEntity } from "../../../entity/sys/menu";
import { BaseSysMenuService } from "../../../service/sys/menu";
/**
* 菜单
*/
@CoolController({
api: ["add", "delete", "update", "info", "list", "page"],
entity: BaseSysMenuEntity,
service: BaseSysMenuService,
})
export class BaseSysMenuController extends BaseController {
@Inject()
baseSysMenuService: BaseSysMenuService;
}
```
## 路由标签
我们经常有这样的需求:给某个请求地址打上标记,如忽略 token,忽略签名等。
```ts
import { Get, Inject } from "@midwayjs/core";
import {
CoolController,
BaseController,
CoolUrlTag,
TagTypes,
CoolUrlTagData,
} from "@cool-midway/core";
/**
* 测试给URL打标签
*/
@CoolController({
api: [],
entity: "",
pageQueryOp: () => {},
})
// add 接口忽略token
@CoolUrlTag({
key: TagTypes.IGNORE_TOKEN,
value: ["add"],
})
export class DemoAppTagController extends BaseController {
@Inject()
tag: CoolUrlTagData;
/**
* 获得标签数据, 如可以标记忽略token的url,然后在中间件判断
* @returns
*/
// 这是6.x支持的,可以直接标记这个接口忽略token,更加灵活优雅,但是记得配合@CoolUrlTag()一起使用,也就是Controller上要有这个注解,@CoolTag才会生效
@CoolTag(TagTypes.IGNORE_TOKEN)
@Get("/data")
async data() {
return this.ok(this.tag.byKey(TagTypes.IGNORE_TOKEN));
}
}
```
#### 中间件
```ts
import { CoolUrlTagData, TagTypes } from "@cool-midway/core";
import { IMiddleware } from "@midwayjs/core";
import { Inject, Middleware } from "@midwayjs/core";
import { NextFunction, Context } from "@midwayjs/koa";
@Middleware()
export class DemoMiddleware implements IMiddleware<Context, NextFunction> {
@Inject()
tag: CoolUrlTagData;
resolve() {
return async (ctx: Context, next: NextFunction) => {
const urls = this.tag.byKey(TagTypes.IGNORE_TOKEN);
console.log("忽略token的URL数组", urls);
// 这里可以拿到下一个中间件或者控制器的返回值
const result = await next();
// 控制器之后执行的逻辑
// 返回给上一个中间件的结果
return result;
};
}
}
```
================================================
FILE: .cursor/rules/db.mdc
================================================
---
description: 数据库(db)
globs:
---
# 数据库(db)
数据库使用的是`typeorm`库
中文文档:](httpsom)
官方文档:[https://typeorm.io](mdc:https:/据库文档:[https:/www.midwayjs.org/docs/extensions/orm](https:/www.midwayjs.org/docs/extensions/orm)
## 数据库配置
支持`Mysql`、`PostgreSQL`、`Sqlite`三种数据库
#### Mysql
`src/config/config.local.ts`
```ts
import { CoolConfig } from "@cool-midway/core";
import { MidwayConfig } from "@midwayjs/core";
export default {
typeorm: {
dataSource: {
default: {
type: "mysql",
host: "127.0.0.1",
port: 3306,
username: "root",
password: "123456",
database: "cool",
// 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
synchronize: true,
// 打印日志
logging: false,
// 字符集
charset: "utf8mb4",
// 是否开启缓存
cache: true,
// 实体路径
entities: ["**/modules/*/entity"],
},
},
},
} as MidwayConfig;
```
#### PostgreSQL
需要先安装驱动
```shell
npm install pg --save
```
`src/config/config.local.ts`
```ts
import { CoolConfig } from "@cool-midway/core";
import { MidwayConfig } from "@midwayjs/core";
export default {
typeorm: {
dataSource: {
default: {
type: "postgres",
host: "127.0.0.1",
port: 5432,
username: "postgres",
password: "123456",
database: "cool",
// 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
synchronize: true,
// 打印日志
logging: false,
// 字符集
charset: "utf8mb4",
// 是否开启缓存
cache: true,
// 实体路径
entities: ["**/modules/*/entity"],
},
},
},
} as MidwayConfig;
```
#### Sqlite
需要先安装驱动
```shell
npm install sqlite3 --save
```
`src/config/config.local.ts`
```ts
import { CoolConfig } from "@cool-midway/core";
import { MidwayConfig } from "@midwayjs/core";
import * as path from "path";
export default {
typeorm: {
dataSource: {
default: {
type: "sqlite",
// 数据库文件地址
database: path.join(__dirname, "../../cool.sqlite"),
// 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
synchronize: true,
// 打印日志
logging: false,
// 实体路径
entities: ["**/modules/*/entity"],
},
},
},
} as MidwayConfig;
```
## 事务示例
`cool-admin`封装了自己事务,让代码更简洁
#### 示例
```ts
import { Inject, Provide } from "@midwayjs/core";
import { BaseService, CoolTransaction } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/orm";
import { Repository, QueryRunner } from "typeorm";
import { DemoAppGoodsEntity } from "../entity/goods";
/**
* 商品
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoAppGoodsEntity)
demoAppGoodsEntity: Repository<DemoAppGoodsEntity>;
/**
* 事务
* @param params
* @param queryRunner 无需调用者传参, 自动注入,最后一个参数
*/
@CoolTransaction({ isolation: "SERIALIZABLE" })
async testTransaction(params: any, queryRunner?: QueryRunner) {
await queryRunner.manager.insert<DemoAppGoodsEntity>(DemoAppGoodsEntity, {
title: "这是个商品",
pic: "商品图",
price: 99.0,
type: 1,
});
}
}
```
::: tip
`CoolTransaction`中已经做了异常捕获,所以方法内部无需捕获异常,必须使用`queryRunner`做数据库操作,
而且不能是异步的,否则事务无效,
`queryRunner`会注入到被注解的方法最后一个参数中, 无需调用者传参
:::
## 字段
BaseEntity 是实体基类,所有实体类都需要继承它。
- v8.x 之前位于`@cool-midway/core`包中
- v8.x 之后位于`src/modules/base/entity/base.ts`
```typescript
import { Index, PrimaryGeneratedColumn, Column } from "typeorm";
import * as moment from "moment";
import { CoolBaseEntity } from "@cool-midway/core";
const transformer = {
to(value) {
return value
? moment(value).format("YYYY-MM-DD HH:mm:ss")
: moment().format("YYYY-MM-DD HH:mm:ss");
},
from(value) {
return value;
},
};
/**
* 实体基类
*/
export abstract class BaseEntity extends CoolBaseEntity {
// 默认自增
@PrimaryGeneratedColumn("increment", {
comment: "ID",
})
id: number;
@Index()
@Column({
comment: "创建时间",
type: "varchar",
transformer,
})
createTime: Date;
@Index()
@Column({
comment: "更新时间",
type: "varchar",
transformer,
})
updateTime: Date;
@Index()
@Column({ comment: "租户ID", nullable: true })
tenantId: number;
}
```
```typescript
// v8.x 之前
import { BaseEntity } from "@cool-midway/core";
// v8.x 之后
import { BaseEntity } from "../../base/entity/base";
import { Column, Entity, Index } from "typeorm";
/**
* demo模块-用户信息
*/
// 表名必须包含模块固定格式:模块_,
@Entity("demo_user_info")
// DemoUserInfoEntity是模块+表名+Entity
export class DemoUserInfoEntity extends BaseEntity {
@Index()
@Column({ comment: "手机号", length: 11 })
phone: string;
@Index({ unique: true })
@Column({ comment: "身份证", length: 50 })
idCard: string;
// 生日只需要精确到哪一天,所以type:'date',如果需要精确到时分秒,应为'datetime'
@Column({ comment: "生日", type: "date" })
birthday: Date;
@Column({ comment: "状态 0-禁用 1-启用", default: 1 })
status: number;
@Column({
comment: "分类 0-普通 1-会员 2-超级会员",
default: 0,
type: "tinyint",
})
type: number;
// 由于labels的类型是一个数组,所以Column中的type类型必须得是'json'
@Column({ comment: "标签", nullable: true, type: "json" })
labels: string[];
@Column({
comment: "余额",
type: "decimal",
precision: 5,
scale: 2,
})
balance: number;
@Column({ comment: "备注", nullable: true })
remark: string;
@Column({ comment: "简介", type: "text", nullable: true })
summary: string;
}
```
## 虚拟字段
虚拟字段是指数据库中没有实际存储的字段,而是通过其他字段计算得到的字段,这种字段在查询时可以直接使用,但是不能进行更新操作
```ts
import { BaseEntity } from "@cool-midway/core";
import { Column, Entity, Index } from "typeorm";
/**
* 数据实体
*/
@Entity("xxx_xxx")
export class XxxEntity extends BaseEntity {
@Index()
@Column({
type: "varchar",
length: 7,
asExpression: "DATE_FORMAT(createTime, '%Y-%m')",
generatedType: "VIRTUAL",
comment: "月份",
})
month: string;
@Index()
@Column({
type: "varchar",
length: 4,
asExpression: "DATE_FORMAT(createTime, '%Y')",
generatedType: "VIRTUAL",
comment: "年份",
})
year: string;
@Index()
@Column({
type: "varchar",
length: 10,
asExpression: "DATE_FORMAT(createTime, '%Y-%m-%d')",
generatedType: "VIRTUAL",
comment: "日期",
})
date: string;
@Column({ comment: "退款", type: "json", nullable: true })
refund: {
// 退款单号
orderNum: string;
// 金额
amount: number;
// 实际退款金额
realAmount: number;
// 状态 0-申请中 1-已退款 2-拒绝
status: number;
// 申请时间
applyTime: Date;
// 退款时间
time: Date;
// 退款原因
reason: string;
// 拒绝原因
refuseReason: string;
};
// 将退款状态提取出来,方便查询
@Index()
@Column({
asExpression: "JSON_EXTRACT(refund, '$.status')",
generatedType: "VIRTUAL",
comment: "退款状态",
nullable: true,
})
refundStatus: number;
}
```
## 不使用外键
typeorm 有很多 OneToMany, ManyToOne, ManyToMany 等关联关系,这种都会生成外键,但是在实际生产开发中,不推荐使用外键:
- 性能影响:外键会在插入、更新或删除操作时增加额外的开销。数据库需要检查外键约束是否满足,这可能会降低数据库的性能,特别是在大规模数据操作时更为明显。
- 复杂性增加:随着系统的发展,数据库结构可能会变得越来越复杂。外键约束增加了数据库结构的复杂性,使得数据库的维护和理解变得更加困难。
- 可扩展性问题:在分布式数据库系统中,数据可能分布在不同的服务器上。外键约束会影响数据的分片和分布,限制了数据库的可扩展性。
- 迁移和备份困难:带有外键约束的数据库迁移或备份可能会变得更加复杂。迁移时需要保证数据的完整性和约束的一致性,这可能会增加迁移的难度和时间。
- 业务逻辑耦合:过多依赖数据库的外键约束可能会导致业务逻辑过度耦合于数据库层。这可能会限制应用程序的灵活性和后期的业务逻辑调整。
- 并发操作问题:在高并发的场景下,外键约束可能会导致锁的竞争,增加死锁的风险,影响系统的稳定性和响应速度。
尽管外键提供了数据完整性保障,但在某些场景下,特别是在高性能和高可扩展性要求的系统中,可能会选择在应用层实现相应的完整性检查和约束逻辑,以避免上述问题。这需要在设计系统时根据实际需求和环境来权衡利弊,做出合适的决策。
## 多表关联查询
cool-admin 有三种方式的联表查询:
1、controller 上配置
特别注意要配置 select, 不然会报重复字段错误
```ts
@CoolController({
// 添加通用CRUD接口
api: ['add', 'delete', 'update', 'info', 'list', 'page'],
// 设置表实体
entity: DemoAppGoodsEntity,
// 分页查询配置
pageQueryOp: {
// 指定返回字段,注意多表查询这个是必要的,否则会出现重复字段的问题
select: ['a.*', 'b.name', 'a.name AS userName'],
// 联表查询
join: [
{
entity: BaseSysUserEntity,
alias: 'b',
condition: 'a.userId = b.id'
},
]
})
```
2、service 中
通过`this.nativeQuery`或者`this.sqlRenderPage`两种方法执行自定义 sql
- nativeQuery:执行原生 sql,返回数组
- sqlRenderPage:执行原生 sql,返回分页对象
模板 sql 示例,方便动态传入参数,千万不要直接拼接 sql,有 sql 注入风险,以下方法 cool-admin 内部已经做了防注入处理
- setSql:第一个参数是条件,第二个参数是 sql,第三个参数是参数数组
```ts
this.nativeQuery(
`SELECT
a.*,
b.nickName
FROM
demo_goods a
LEFT JOIN user_info b ON a.userId = b.id
${this.setSql(true, 'and b.userId = ?', [userId])}`
```
3、通过 typeorm 原生的写法
示例
```ts
const find = this.demoGoodsEntity
.createQueryBuilder("a")
.select(["a.*", "b.nickName as userName"])
.leftJoin(UserInfoEntity, "b", "a.id = b.id")
.getRawMany();
```
## 配置字典和可选项(8.x 新增)
为了让前端可能自动识别某个字段的可选项或者属于哪个字典,我们可以在@Column 注解上配置`options`和`dict`属性,
旧的写法
```ts
// 无法指定字典
// 可选项只能按照一定规则编写,否则前端无法识别
@Column({ comment: '状态 0-禁用 1-启用', default: 1 })
status: number;
```
新的写法
```ts
// 指定字典为goodsType,这样前端生成的时候就会默认指定这个字典
@Column({ comment: '分类', dict: 'goodsType' })
type: number;
// 状态的可选项有禁用和启用,默认是启用,值是数组的下标,0-禁用,1-启用
@Column({ comment: '状态', dict: ['禁用', '启用'], default: 1 })
status: number;
```
================================================
FILE: .cursor/rules/event.mdc
================================================
---
description: 事件(Event)
globs:
---
# 事件(Event)
事件是开发过程中经常使用到的功能,我们经常利用它来做一些解耦的操作。如:更新了用户信息,其他需要更新相关信息的操作自行监听更新等
## 新建监听
```ts
import { Provide, Scope, ScopeEnum } from "@midwayjs/core";
import { CoolEvent, Event } from "@cool-midway/core";
/**
* 接收事件
*/
@CoolEvent()
export class DemoEvent {
/**
* 根据事件名接收事件
* @param msg
* @param a
*/
@Event("updateUser")
async updateUser(msg, a) {
console.log("ImEvent", "updateUser", msg, a);
}
}
```
## 发送事件
```ts
import { Get, Inject, Provide } from "@midwayjs/core";
import {
CoolController,
BaseController,
CoolEventManager,
} from "@cool-midway/core";
/**
* 事件
*/
@CoolController()
export class DemoEventController extends BaseController {
@Inject()
coolEventManager: CoolEventManager;
/**
* 发送事件
*/
@Get("/send")
public async send() {
this.coolEventManager.emit("updateUser", { a: 1 }, 12);
}
}
```
## 多进程通信
当你的项目利用如`pm2`等工具部署为 cluster 模式的时候,你的项目会有多个进程,这时候你的事件监听和发送只会在当前进程内有效,如果你需要触发到所有或者随机一个进程,需要使用多进程通信,这里我们提供了一个简单的方式来实现多进程通信。
需要根据你的业务需求来使用该功能!!!
```ts
import { Get, Inject, Provide } from "@midwayjs/core";
import {
CoolController,
BaseController,
CoolEventManager,
} from "@cool-midway/core";
/**
* 事件
*/
@Provide()
@CoolController()
export class DemoEventController extends BaseController {
@Inject()
coolEventManager: CoolEventManager;
@Post("/global", { summary: "全局事件,多进程都有效" })
async global() {
await this.coolEventManager.globalEmit("demo", false, { a: 2 }, 1);
return this.ok();
}
}
```
**globalEmit**
```ts
/**
* 发送全局事件
* @param event 事件
* @param random 是否随机一个
* @param args 参数
* @returns
*/
globalEmit(event: string, random?: boolean, ...args: any[])
```
================================================
FILE: .cursor/rules/exception.mdc
================================================
---
description: 异常处理(Exception)
globs:
---
# 异常处理
框架自带有: `CoolCommException`
## 通用异常
CoolCommException
返回码: 1001
返回消息:comm fail
用法:
```ts
// 可以自定义返回消息
throw new CoolCommException('用户不存在~');
```
================================================
FILE: .cursor/rules/module.mdc
================================================
---
description: 模块开发(module)
globs:
---
# 模块开发(module)
对于一个应用开发,我们应该更加有规划,`cool-admin`提供了模块开发的概念。
建议模块目录`src/modules/模块名`
```ts
├── modules
│ └── base(基础的权限管理系统)
│ │ └── controller(api接口, 用法参考 [controller.mdc](mdc:.cursor/rules/controller.mdc) ,必要时需要创建关联查询, 配置pageQueryOp)
│ │ │ └── admin(后台管理接口)
│ │ │ └── app(应用接口,如小程序APP等)
│ │ └── dto(可选,参数校验)
│ │ └── entity(实体类, 用法参考 [db.mdc](mdc:.cursor/rules/db.mdc) )
│ │ └── middleware(可选,中间件, 参考 [middleware.code-snippets](mdc:.vscode/middleware.code-snippets) [authority.ts](mdc:src/modules/base/middleware/authority.ts) )
│ │ └── schedule(可选,定时任务 参考 [task.mdc](mdc:.cursor/rules/task.mdc) )
│ │ └── service(服务,写业务逻辑,参考 [service.mdc](mdc:.cursor/rules/service.mdc) )
│ │ └── config.ts(必须,模块的配置)
│ │ └── db.json(可选,初始化该模块的数据,参考 [db.json](mdc:src/modules/base/db.json) )
│ │ └── menu.json(可选(7.x新增,配合模块市场使用),初始化该模块的菜单,参考 [menu.json](mdc:src/modules/base/menu.json) )
```
创建模块一般需要创建`controller`、`entity`、`service`,
如果entity文件夹没有子文件夹,那么引用BaseEntity是
- 引用BaseEntity固定为
```ts
import { BaseEntity } from '../../modules/base/entity/base';
```
错误示例
```ts
import { BaseEntity } from '../../../modules/base/entity/base';
```
多了一个层级
## 模块配置
#### config.ts
```ts
import { ModuleConfig } from '@cool-midway/core';
/**
* 模块配置
*/
export default () => {
return {
// 必须,模块名称
name: '聊天模块',
// 必须,模块描述
description: '基于socket.io提供即时通讯聊天功能',
// 可选,中间件,只对本模块有效
middlewares: [],
// 可选,全局中间件
globalMiddlewares: [],
// 可选,模块加载顺序,默认为0,值越大越优先加载
order: 1;
// 其他配置,jwt配置
jwt: 'IUFHOFNIWI',
} as ModuleConfig;
};
```
::: warning
config.ts 的配置文件是必须的,有几个必填项描述着模块的功能,当然除此之外,你还可以设置模块的一些特有配置
:::
#### 引入配置
```ts
@Config('module.模块名,模块文件夹名称,如demo')
config;
```
## 数据导入
在模块中预设要导入的数据,位于`模块/db.json`
1、向`dict_type`表导入数据
```json
{
"dict_type": [
{
"name": "升级类型",
"key": "upgradeType"
}
]
}
```
2、导入有层级的数据,比如`dict_info`表需要先插入`dict_type`拿到`id`,再插入`dict_info`
```json
{
"dict_type": [
{
"name": "升级类型",
"key": "upgradeType",
"@childDatas": {
"dict_info": [
{
"typeId": "@id",
"name": "安卓",
"orderNum": 1,
"remark": null,
"parentId": null,
"value": "0"
},
{
"typeId": "@id",
"name": "IOS",
"orderNum": 1,
"remark": null,
"parentId": null,
"value": "1"
}
]
}
}
]
}
```
`@childDatas`是一个特殊的字段,表示该字段下的数据需要先插入父级表,再插入子级表,`@id`表示父级表的`id`,`@id`是一个特殊的字段,表示插入父级表后,会返回`id`,然后插入子级表
## 菜单导入
在模块中预设要导入的菜单,位于`模块/menu.json`,菜单数据可以通过后台管理系统的菜单管理导出,不需要手动编写
详细参考 [menu.json](mdc:src/modules/base/menu.json)
```json
[
{
"name": "应用管理",
"router": null,
"perms": null,
"type": 0,
"icon": "icon-app",
"orderNum": 2,
"viewPath": null,
"keepAlive": true,
"isShow": true,
"childMenus": [
{
"name": "套餐管理",
"router": "/app/goods",
"perms": null,
"type": 1,
"icon": "icon-goods",
"orderNum": 0,
"viewPath": "modules/app/views/goods.vue",
"keepAlive": true,
"isShow": true
}
]
}
]
```
#### 关闭自动导入
通过该配置开启自动初始化模块数据库脚本
```ts
cool: {
// 是否自动导入数据库
initDB: false,
} as CoolConfig,
```
::: warning
我们不建议在生产环境使用该功能,生产环境是数据库请通过本地导入与同步数据库结构
:::
#### 重新初始化
首次启动会初始化模块数据库,初始化完成会在项目根目录生成`.lock`文件,下次启动就不会重复导入,如果需要重新导入,删除该文件夹即可
```ts
├── lock
│ ├── db
│ └── base.db.lock(base模块)
│ └── task.db.lock(task模块)
│ ├── menu
│ └── base.menu.lock(base模块)
│ └── task.menu.lock(task模块)
│──package.json
```
================================================
FILE: .cursor/rules/service.mdc
================================================
---
description: 服务(Service)
globs:
---
# 服务(Service)
我们一般将业务逻辑写在`Service`层,`Controller`层只做参数校验、数据转换等操作,`Service`层做具体的业务逻辑处理。
`cool-admin`对基本的`Service`进行封装;
## 重写 CRUD
`Controller`的六个快速方法,`add`、`update`、`delete`、`info`、`list`、`page`,是通过调用一个通用的`BaseService`的方法实现,所以我们可以重写`Service`的方法来实现自己的业务逻辑。
**示例**
重写 add 方法
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 新增
* @param param
* @returns
*/
async add(param: any) {
// 调用原本的add,如果不需要可以不用这样写,完全按照自己的新增逻辑写
const result = await super.add(param);
// 你自己的业务逻辑
return result;
}
}
```
记得在`Controller`上配置对应的`Service`才会使其生效
```ts
import { DemoGoodsService } from "../../service/goods";
import { DemoGoodsEntity } from "../../entity/goods";
import { Body, Inject, Post, Provide } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 测试
*/
@Provide()
@CoolController({
api: ["add", "delete", "update", "info", "list", "page"],
entity: DemoGoodsEntity,
service: DemoGoodsService
})
export class AppDemoGoodsController extends BaseController {}
```
## 普通查询(TypeOrm)
普通查询基于[TypeOrm](mdc:https:/typeorm.io),点击查看官方详细文档
**示例**
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { In, Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
async typeorm() {
// 新增单个,传入的参数字段在数据库中一定要存在
await this.demoGoodsEntity.insert({ title: "xxx" });
// 新增单个,传入的参数字段在数据库中可以不存在
await this.demoGoodsEntity.save({ title: "xxx" });
// 新增多个
await this.demoGoodsEntity.save([{ title: "xxx" }]);
// 查找单个
await this.demoGoodsEntity.findOneBy({ id: 1 });
// 查找多个
await this.demoGoodsEntity.findBy({ id: In([1, 2]) });
// 删除单个
await this.demoGoodsEntity.delete(1);
// 删除多个
await this.demoGoodsEntity.delete([1]);
// 根据ID更新
await this.demoGoodsEntity.update(1, { title: "xxx" });
// 根据条件更新
await this.demoGoodsEntity.update({ price: 20 }, { title: "xxx" });
// 多条件操作
await this.demoGoodsEntity
.createQueryBuilder()
.where("id = :id", { id: 1 })
.andWhere("price = :price", { price: 20 })
.getOne();
}
}
```
## 高级查询(SQL)
**1、普通 SQL 查询**
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行sql
*/
async sql(query) {
return this.nativeQuery("select * from demo_goods a where a.id = ?", [query.id]);
}
}
```
**2、分页 SQL 查询**
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行分页sql
*/
async sqlPage(query) {
return this.sqlRenderPage("select * from demo_goods ORDER BY id ASC", query, false);
}
}
```
**3、非 SQL 的分页查询**
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { In, Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行entity分页
*/
async entityPage(query) {
const find = this.demoGoodsEntity.createQueryBuilder();
find.where("id = :id", { id: 1 });
return this.entityRenderPage(find, query);
}
}
```
**4、SQL 动态条件**
分页查询和普通的 SQL 查询都支持动态条件,通过`this.setSql(条件,sql语句,参数)`来配置
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行sql
*/
async sql(query) {
return this.nativeQuery(`
select * from demo_goods a
WHERE 1=1
${this.setSql(query.id, "and a.id = ?", [query.id])}
ORDER BY id ASC
`);
}
}
```
## 修改之前(modifyBefore)
有时候我们需要在数据进行修改动作之前,对它进行一些处理,比如:修改密码时,需要对密码进行加密,这时候我们可以使用`modifyBefore`方法来实现
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
import * as md5 from "md5";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 修改之前
* @param data
* @param type
*/
async modifyBefore(data: any, type: "delete" | "update" | "add") {
if (type == "update") {
data.password = md5(data.password);
}
}
}
```
## 修改之后(modifyAfter)
有时候我们需要在数据进行修改动作之后,对它进行一些处理,比如:修改完数据之后将它放入队列或者 ElasticSearch
```ts
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
import * as md5 from "md5";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 修改之后
* @param data
* @param type
*/
async modifyAfter(data: any, type: "delete" | "update" | "add") {
// 你想做的其他事情
}
}
```
## 设置实体
`Service`与`Service`之间相互调用`BaseService`里的方法,有可能出现“未设置操作实体”的问题可以通过以下方式设置实体
::: warning 建议
但是一般不建议这样做,因为这样会导致`Service`与`Service`耦合,不利于代码的维护,如果要操作对应的表直接在当前的`Service`注入对应的表操作即可
:::
```ts
@Provide()
export class XxxService extends BaseService {
@InjectEntityModel(XxxEntity)
xxxEntity: Repository<XxxEntity>;
@Init()
async init() {
await super.init();
// 设置实体
this.setEntity(this.xxxEntity);
}
}
```
================================================
FILE: .cursor/rules/socket.mdc
================================================
---
description: 即时通讯(Socket)
globs:
---
# 即时通讯(Socket)
`cool-admin`即时通讯功能基于[Socket.io(v4)](https://socket.io/docs/v4)开发,[midwayjs 官方 Socket.io 文档](http://midwayjs.org/docs/extensions/socketio)
## 配置
`configuration.ts`
```ts
import * as socketio from "@midwayjs/socketio";
@Configuration({
imports: [
// socketio http://www.midwayjs.org/docs/extensions/socketio
socketio,
],
importConfigs: [join(__dirname, "./config")],
})
export class ContainerLifeCycle {
@App()
app: koa.Application;
async onReady() {}
}
```
## 配置`config/config.default.ts`
需要配置 redis 适配器,让进程之间能够进行通讯
```ts
import { CoolConfig, MODETYPE } from "@cool-midway/core";
import { MidwayConfig } from "@midwayjs/core";
import * as fsStore from "@cool-midway/cache-manager-fs-hash";
import { createAdapter } from "@socket.io/redis-adapter";
// @ts-ignore
import Redis from "ioredis";
const redis = {
host: "127.0.0.1",
port: 6379,
password: "",
db: 0,
};
const pubClient = new Redis(redis);
const subClient = pubClient.duplicate();
export default {
// ...
// socketio
socketIO: {
upgrades: ["websocket"], // 可升级的协议
adapter: createAdapter(pubClient, subClient),
},
} as MidwayConfig;
```
## 服务端
```ts
import {
WSController,
OnWSConnection,
Inject,
OnWSMessage,
} from "@midwayjs/core";
import { Context } from "@midwayjs/socketio";
/**
* 测试
*/
@WSController("/")
export class HelloController {
@Inject()
ctx: Context;
// 客户端连接
@OnWSConnection()
async onConnectionMethod() {
console.log("on client connect", this.ctx.id);
console.log("参数", this.ctx.handshake.query);
this.ctx.emit("data", "连接成功");
}
// 消息事件
@OnWSMessage("myEvent")
async gotMessage(data) {
console.log("on data got", this.ctx.id, data);
}
}
```
## 客户端
```ts
const io = require("socket.io-client");
const socket = io("http://127.0.0.1:8001", {
auth: {
token: "xxx",
},
});
socket.on("data", (msg) => {
console.log("服务端消息", msg);
});
```
## 注意事项
如果部署为多线程的,为了让进程之间能够进行通讯,需要配置 redis 适配器,[配置方式](http://midwayjs.org/docs/extensions/socketio#%E9%85%8D%E7%BD%AE-redis-%E9%80%82%E9%85%8D%E5%99%A8)
```ts
// src/config/config.default
import { createRedisAdapter } from "@midwayjs/socketio";
export default {
// ...
socketIO: {
adapter: createRedisAdapter({ host: "127.0.0.1", port: 6379 }),
},
};
```
================================================
FILE: .cursor/rules/task.mdc
================================================
---
description: 任务与队列(Task)
globs:
---
# 任务与队列(Task)
## 内置任务(代码中配置)
内置定时任务能力来自于[midwayjs](https://www.midwayjs.org/docs/extensions/cron)
### 引入组件
```ts
import { Configuration } from "@midwayjs/core";
import * as cron from "@midwayjs/cron"; // 导入模块
import { join } from "path";
@Configuration({
imports: [cron],
importConfigs: [join(__dirname, "config")],
})
export class AutoConfiguration {}
```
### 使用
```ts
import { Job, IJob } from "@midwayjs/cron";
import { FORMAT } from "@midwayjs/core";
@Job({
cronTime: FORMAT.CRONTAB.EVERY_PER_30_MINUTE,
start: true,
})
export class DataSyncCheckerJob implements IJob {
async onTick() {
// ...
}
}
```
```ts
@Job("syncJob", {
cronTime: "*/2 * * * * *", // 每隔 2s 执行
})
export class DataSyncCheckerJob implements IJob {
async onTick() {
// ...
}
}
```
### 规则 cron
```ts
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, optional)
```
::: warning 警告
注意:该方式在多实例部署的情况下无法做到任务之前的协同,任务存在重复执行的可能
:::
## 本地任务(管理后台配置,v8.0 新增)
可以到登录后台`/系统管理/任务管理/任务列表`,配置任务。默认是不需要任何依赖的, 旧版需要依赖`redis`才能使用该功能。
### 配置任务
配置完任务可以调用你配置的 service 方法,如:taskDemoService.test()
### 规则 cron
规则 cron
```ts
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, optional)
```
规则示例:
- 每 5 秒执行一次: `*/5 * * * * *`
- 每 5 分钟执行一次: `*/5 * * * *`
- 每小时执行一次: `0 * * * *`
- 每天执行一次: `0 0 * * *`
- 每天 1 点执行: `0 1 * * *`
- 每周执行一次: `0 0 * * 0`
- 每月执行一次: `0 0 1 * *`

## 分布式任务(管理后台配置)
当需要分布式部署时,需要开启分布式任务,通过 redis 作为协同整个集群的任务,防止任务重复执行等异常情况。
#### 引入插件
`src/configuration.ts`
```ts
import { Configuration, App } from "@midwayjs/core";
import { join } from "path";
import * as task from "@cool-midway/task";
@Configuration({
imports: [task],
importConfigs: [join(__dirname, "./config")],
})
export class ContainerLifeCycle {
@App()
app: koa.Application;
async onReady() {}
}
```
#### 配置
[redis>=5.x](https://redis.io/),推荐[redis>=7.x](https://redis.io/)
`src/config/config.default.ts`
::: warning 注意
很多人忽略了这个配置,导致项目包 redis 连接错误!!!
:::
```ts
import { CoolFileConfig, MODETYPE } from "@cool-midway/file";
import { MidwayConfig } from "@midwayjs/core";
import * as fsStore from "cache-manager-fs-hash";
export default {
// 修改成你自己独有的key
keys: "cool-admin for node",
koa: {
port: 8001,
},
// cool配置
cool: {
redis: {
host: "127.0.0.1",
port: 6379,
password: "",
db: 0,
},
},
} as unknown as MidwayConfig;
```
redis cluster 方式
```ts
[
{
host: "192.168.0.103",
port: 7000,
},
{
host: "192.168.0.103",
port: 7001,
},
{
host: "192.168.0.103",
port: 7002,
},
{
host: "192.168.0.103",
port: 7003,
},
{
host: "192.168.0.103",
port: 7004,
},
{
host: "192.168.0.103",
port: 7005,
},
];
```
### 创建执行任务的 service
```ts
import { Provide } from "@midwayjs/core";
import { BaseService } from "@cool-midway/core";
/**
* 任务执行的demo示例
*/
@Provide()
export class DemoTaskService extends BaseService {
/**
* 测试任务执行
* @param params 接收的参数 数组 [] 可不传
*/
async test(params?: []) {
// 需要登录后台任务管理配置任务
console.log("任务执行了", params);
}
}
```
### 配置定时任务
登录后台 任务管理/任务列表

::: warning
截图中的 demoTaskService 为上一步执行任务的 service 的实例 ID,midwayjs 默认为类名首字母小写!!!
任务调度基于 redis,所有的任务都需要通过代码去维护任务的创建,启动,暂停。 所以直接改变数据库的任务状态是无效的,redis 中的信息还未清空, 任务将继续执行。
:::
## 队列
之前的分布式任务调度,其实是利用了[bullmq](https://docs.bullmq.io/)的重复队列机制。
在项目开发过程中特别是较大型、数据量较大、业务较复杂的场景下往往需要用到队列。 如:抢购、批量发送消息、分布式事务、订单 2 小时后失效等。
得益于[bullmq](https://docs.bullmq.io/),cool 的队列也支持`延迟`、`重复`、`优先级`等高级特性。
### 创建队列
一般放在名称为 queue 文件夹下
#### 普通队列
普通队列数据由消费者自动消费,必须重写 data 方法用于被动消费数据。
`src/modules/demo/queue/comm.ts`
```ts
import { BaseCoolQueue, CoolQueue } from "@cool-midway/task";
import { IMidwayApplication } from "@midwayjs/core";
import { App } from "@midwayjs/core";
/**
* 普通队列
*/
@CoolQueue()
export class DemoCommQueue extends BaseCoolQueue {
@App()
app: IMidwayApplication;
async data(job: any, done: any): Promise<void> {
// 这边可以执行定时任务具体的业务或队列的业务
console.log("数据", job.data);
// 抛出错误 可以让队列重试,默认重试5次
//throw new Error('错误');
done();
}
}
```
#### 主动队列
主动队列数据由消费者主动消费
`src/modules/demo/queue/getter.ts`
```ts
import { BaseCoolQueue, CoolQueue } from "@cool-midway/task";
/**
* 主动消费队列
*/
@CoolQueue({ type: "getter" })
export class DemoGetterQueue extends BaseCoolQueue {}
```
主动消费数据
```ts
// 主动消费队列
@Inject()
demoGetterQueue: DemoGetterQueue;
const job = await this.demoGetterQueue.getters.getJobs(['wait'], 0, 0, true);
// 获得完将数据从队列移除
await job[0].remove();
```
### 发送数据
```ts
import { Get, Inject, Post, Provide } from "@midwayjs/core";
import { CoolController, BaseController } from "@cool-midway/core";
import { DemoCommQueue } from "../../queue/comm";
import { DemoGetterQueue } from "../../queue/getter";
/**
* 队列
*/
@Provide()
@CoolController()
export class DemoQueueController extends BaseController {
// 普通队列
@Inject()
demoCommQueue: DemoCommQueue;
// 主动消费队列
@Inject()
demoGetterQueue: DemoGetterQueue;
/**
* 发送数据到队列
*/
@Post("/add", { summary: "发送队列数据" })
async queue() {
this.demoCommQueue.add({ a: 2 });
return this.ok();
}
/**
* 获得队列中的数据,只有当队列类型为getter时有效
*/
@Get("/getter")
async getter() {
const job = await this.demoCommQueue.getters.getJobs(["wait"], 0, 0, true);
// 获得完将数据从队列移除
await job[0].remove();
return this.ok(job[0].data);
}
}
```
队列配置
```ts
interface JobOpts {
priority: number; // Optional priority value. ranges from 1 (highest priority) to MAX_INT (lowest priority). Note that
// using priorities has a slight impact on performance, so do not use it if not required.
delay: number; // An amount of milliseconds to wait until this job can be processed. Note that for accurate delays, both
// server and clients should have their clocks synchronized. [optional].
attempts: number; // The total number of attempts to try the job until it completes.
repeat: RepeatOpts; // Repeat job according to a cron specification.
backoff: number | BackoffOpts; // Backoff setting for automatic retries if the job fails, default strategy: `fixed`
lifo: boolean; // if true, adds the job to the right of the queue instead of the left (default false)
timeout: number; // The number of milliseconds after which the job should be fail with a timeout error [optional]
jobId: number | string; // Override the job ID - by default, the job ID is a unique
// integer, but you can use this setting to override it.
// If you use this option, it is up to you to ensure the
// jobId is unique. If you attempt to add a job with an id that
// already exists, it will not be added.
removeOnComplete: boolean | number; // If true, removes the job when it successfully
// completes. A number specified the amount of jobs to keep. Default behavior is to keep the job in the completed set.
removeOnFail: boolean | number; // If true, removes the job when it fails after all attempts. A number specified the amount of jobs to keep
// Default behavior is to keep the job in the failed set.
stackTraceLimit: number; // Limits the amount of stack trace lines that will be recorded in the stacktrace.
}
```
::: tip
this.demoQueue.queue 获得的就是 bull 实例,更多 bull 的高级用户可以查看[bull 文档](https://github.com/OptimalBits/bull/blob/develop/REFERENCE.md)
:::
================================================
FILE: .cursor/rules/tenant.mdc
================================================
---
description: 多租户(Tenant)
globs:
---
# 多租户(v8.0新增)
多租户(Multi-tenancy)是一种软件架构模式,允许单个应用实例服务多个租户(客户组织)。每个租户的数据是相互隔离的,但共享同一个应用程序代码和基础设施。
## 主要特点
- **数据隔离**: 确保不同租户之间的数据严格分离,互不可见
- **资源共享**: 多个租户共享同一套应用程序代码和基础设施
- **独立配置**: 每个租户可以有自己的个性化配置和定制化需求
- **成本优化**: 通过资源共享降低运营和维护成本
## 实现
### 1、数据隔离
多租户的数据隔离有许多种方案,但最为常见的是以列进行隔离的方式。Cool Admin 通过在`BaseEntity`中加入指定的列(租户ID `tenantId`)对数据进行隔离。
::: tip 小贴士
v8.0之后,`BaseEntity`已经从`cool-midway/core`中移动至`src/modules/base/entity/base.ts`,方便开发者扩展定制
:::
`src/modules/base/entity/base.ts`
```ts
import {
Index,
UpdateDateColumn,
CreateDateColumn,
PrimaryGeneratedColumn,
Column,
} from 'typeorm';
import { CoolBaseEntity } from '@cool-midway/core';
/**
* 实体基类
*/
export abstract class BaseEntity extends CoolBaseEntity {
// 默认自增
@PrimaryGeneratedColumn('increment', {
comment: 'ID',
})
id: number;
@Index()
@CreateDateColumn({ comment: '创建时间' })
createTime: Date;
@Index()
@UpdateDateColumn({ comment: '更新时间' })
updateTime: Date;
@Index()
@Column({ comment: '租户ID', nullable: true })
tenantId: number;
}
```
### 2、条件注入
Cool 改造了 `typeorm`的 `Subscriber`,新增了以下四种监听:
```ts
/**
* 当进行select的QueryBuilder构建之后触发
*/
afterSelectQueryBuilder?(queryBuilder: SelectQueryBuilder<any>): void;
/**
* 当进行insert的QueryBuilder构建之后触发
*/
afterInsertQueryBuilder?(queryBuilder: InsertQueryBuilder<any>): void;
/**
* 当进行update的QueryBuilder构建之后触发
*/
afterUpdateQueryBuilder?(queryBuilder: UpdateQueryBuilder<any>): void;
/**
* 当进行delete的QueryBuilder构建之后触发
*/
afterDeleteQueryBuilder?(queryBuilder: DeleteQueryBuilder<any>): void;
```
在`src/modules/base/db/tenant.ts`中,通过`tenantId`进行条件注入,从而实现数据隔离。
## 使用
### 1、开启多租户
框架默认关闭多租户,需要手动开启,在`src/config/config.default.ts`中开启多租户
```ts
cool: {
// 是否开启多租户
tenant: {
// 是否开启多租户
enable: true,
// 需要过滤多租户的url, 支持通配符,如/admin/**/* 表示admin模块下的所有接口都进行多租户过滤
urls: [],
},
}
```
tenant
### 2、代码中使用
只要开启了多租户,并配置了`urls`,那么框架会自动注入`tenantId`,开发者原本的代码不需要做任何修改,框架会自动进行数据隔离。
#### Controller
@CoolController的`add`、`delete`、`update`、`info`、`list`、`page`方法都支持过滤多租户。
#### Service
`Service`中使用多租户,以下是一个完整的示例,包含有效和无效的情况,开发者需要结合实际业务进行选择。
```ts
import { Inject, Provide } from '@midwayjs/core';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/typeorm';
import { Repository } from 'typeorm';
import { DemoGoodsEntity } from '../entity/goods';
import { UserInfoEntity } from '../../user/entity/info';
import { noTenant } from '../../base/db/tenant';
/**
* 商品服务
*/
@Provide()
export class DemoTenantService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
@Inject()
ctx;
/**
* 使用多租户
*/
async use() {
await this.demoGoodsEntity.createQueryBuilder().getMany();
await this.demoGoodsEntity.find();
}
/**
* 不使用多租户(局部不使用)
*/
async noUse() {
// 过滤多租户
await this.demoGoodsEntity.createQueryBuilder().getMany();
// 被noTenant包裹,不会过滤多租户
await noTenant(this.ctx, async () => {
return await this.demoGoodsEntity.createQueryBuilder().getMany();
});
// 过滤多租户
await this.demoGoodsEntity.find();
}
/**
* 无效多租户
*/
async invalid() {
// 自定义sql,不进行多租户过滤
await this.nativeQuery('select * from demo_goods');
// 自定义分页sql,进行多租户过滤
await this.sqlRenderPage('select * from demo_goods', {});
}
}
```
================================================
FILE: .cursorrules
================================================
# 项目背景
- 数据库:MySQL、Sqlite、Postgres、Typeorm(0.3.20版本, 不使用外键方式,如@ManyToOne、@OneToMany等)
- 语言:TypeScript、JavaScript、CommonJS
- 框架:Koa.js、midway.js、cool-admin-midway
- 项目版本:8.x
# 目录
项目目录:
├── .vscode(代码片段,根据关键字可以快速地生成代码)
├── public(静态资源文件,如js、css或者上传的文件)
├── src
│ └── comm(通用库)
│ └── modules(项目模块)
│ └── config
│ │ └── config.default.ts(默认配置,不区分环境,都生效)
│ │ └── config.local.ts(本地开发配置,对应npm run dev)
│ │ └── config.prod.ts(生产环境配置,对应npm run start)
│ └── configuration.ts(midway的配置文件)
│ └── welcome.ts(环境的controller)
│ └── interface.ts(类型声明)
├── package.json(依赖管理,项目信息)
├── bootstrap.js(生产环境启动入口文件,可借助pm2等工具多进程启动)
└── ...
模块目录
├── modules
│ └── base(基础的权限管理系统)
│ │ └── controller(api接口)
│ │ └── dto(参数校验)
│ │ └── entity(实体类)
│ │ └── middleware(中间件)
│ │ └── schedule(定时任务)
│ │ └── service(服务,写业务逻辑)
│ │ └── config.ts(必须,模块的配置)
│ │ └── db.json(可选,初始化该模块的数据)
│ │ └── menu.json(可选,初始化该模块的菜单)
# 其它
- 始终使用中文回复,包括代码注释等
- `@midwayjs/decorator`,已弃用,使用`@midwayjs/core`
- 不要使用自定义sql来操作数据库,而是使用typeorm的api,统计相关的可以考虑使用原生sql
- Controller中不允许重写`add`、`delete`、`update`、`info`、`list`、`page`方法
- Controller不需要加@Provide()注解
- page接口关联表查询一般写在Controller的pageQueryOp中,尽量不要使用自定义sql
- Entity字段使用驼峰命名,如:studentNo
- Entity不允许使用@ManyToOne、@OneToMany等外键关系
- Entity的BaseEntity引用固定为:`import { BaseEntity } from '../../base/entity/base';`,禁止修改层级
- 创建api接口时,不要多层级如:`/student/detail`,改为`/studentDetail`,用驼峰法;
- 本项目是版本8.x,所有代码都需要按照新的写法进行编写,如Entity字典的配置
- 文件的命名不要使用驼峰法,而是使用下划线法,如:student_info.entity.ts,另外禁止太啰嗦,比如:student模块下的学生信息,不要写成:student_info, 而是写成info.ts,班级信息:class.ts,不要写成student_class.ts
- 创建模块代码需要读取.cursor/rules的module.mdc、controller.mdc、service.mdc、db.mdc,其它的rules根据需要进行参考
================================================
FILE: .editorconfig
================================================
# 🎨 editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
================================================
FILE: .eslintrc.json
================================================
{
"extends": "./node_modules/mwts/",
"ignorePatterns": [
"node_modules",
"dist",
"test",
"jest.config.js",
"typings",
"public/**/**",
"view/**/**",
"packages"
],
"env": {
"jest": true
},
"rules": {
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/ban-ts-comment": "off",
"node/no-extraneous-import": "off",
"no-empty": "off",
"node/no-extraneous-require": "off",
"node/no-unpublished-import": "off",
"eqeqeq": "off",
"node/no-unsupported-features/node-builtins": "off",
"@typescript-eslint/ban-types": "off",
"no-control-regex": "off",
"prefer-const": "off"
}
}
================================================
FILE: .gitattributes
================================================
*.js text eol=lf
*.json text eol=lf
*.ts text eol=lf
*.code-snippets text eol=lf
================================================
FILE: .gitignore
================================================
logs/
cache/
npm-debug.log
yarn-error.log
node_modules/
package-lock.json
yarn.lock
coverage/
dist/
.idea/
run/
build/
.DS_Store
launch.json
*.sw*
*.un~
.tsbuildinfo
.tsbuildinfo.*
data/*
pnpm-lock.yaml
public/uploads/*
================================================
FILE: .prettierrc.js
================================================
module.exports = {
...require('mwts/.prettierrc.json')
}
================================================
FILE: .vscode/config.code-snippets
================================================
{
"config": {
"prefix": "config",
"body": [
"import { ModuleConfig } from '@cool-midway/core';",
"",
"/**",
" * 模块配置",
" */",
"export default () => {",
" return {",
" // 模块名称",
" name: 'xxx',",
" // 模块描述",
" description: 'xxx',",
" // 中间件,只对本模块有效",
" middlewares: [],",
" // 中间件,全局有效",
" globalMiddlewares: [],",
" // 模块加载顺序,默认为0,值越大越优先加载",
" order: 0,",
" } as ModuleConfig;",
"};",
""
],
"description": "cool-admin config代码片段"
}
}
================================================
FILE: .vscode/controller.code-snippets
================================================
{
"controller": {
"prefix": "controller",
"body": [
"import { CoolController, BaseController } from '@cool-midway/core';",
"",
"/**",
" * 描述",
" */",
"@CoolController({",
" api: ['add', 'delete', 'update', 'info', 'list', 'page'],",
" entity: 实体,",
"})",
"export class XxxController extends BaseController {}",
""
],
"description": "cool-admin controller代码片段"
}
}
================================================
FILE: .vscode/entity.code-snippets
================================================
{
"entity": {
"prefix": "entity",
"body": [
"import { BaseEntity } from '../../base/entity/base';",
"import { Column, Entity } from 'typeorm';",
"",
"/**",
" * 描述",
" */",
"@Entity('xxx_xxx_xxx')",
"export class XxxEntity extends BaseEntity {",
" @Column({ comment: '描述' })",
" xxx: string;",
"}",
""
],
"description": "cool-admin entity代码片段"
}
}
================================================
FILE: .vscode/event.code-snippets
================================================
{
"event": {
"prefix": "event",
"body": [
"import { CoolEvent, Event } from '@cool-midway/core';",
"",
"/**",
" * 接收事件",
" */",
"@CoolEvent()",
"export class xxxEvent {",
" @Event('updateUser')",
" async updateUser(msg, a) {",
" console.log('ImEvent', 'updateUser', msg, a);",
" }",
"}",
""
],
"description": "cool-admin event代码片段"
}
}
================================================
FILE: .vscode/middleware.code-snippets
================================================
{
"middleware": {
"prefix": "middleware",
"body": [
"import { Middleware } from '@midwayjs/core';",
"import { NextFunction, Context } from '@midwayjs/koa';",
"import { IMiddleware } from '@midwayjs/core';",
"",
"/**",
" * 描述",
" */",
"@Middleware()",
"export class XxxMiddleware implements IMiddleware<Context, NextFunction> {",
" resolve() {",
" return async (ctx: Context, next: NextFunction) => {",
" // 控制器前执行的逻辑",
" const startTime = Date.now();",
" // 执行下一个 Web 中间件,最后执行到控制器",
" await next();",
" // 控制器之后执行的逻辑",
" console.log(Date.now() - startTime);",
" };",
" }",
"}",
""
],
"description": "cool-admin middleware代码片段"
}
}
================================================
FILE: .vscode/queue.code-snippets
================================================
{
"queue": {
"prefix": "queue",
"body": [
"import { BaseCoolQueue, CoolQueue } from '@cool-midway/task';",
"",
"/**",
" * 队列",
" */",
"@CoolQueue()",
"export abstract class xxxQueue extends BaseCoolQueue {",
" async data(job: any, done: any) {",
" console.log('收到的数据', job.data);",
" done();",
" }",
"}",
""
],
"description": "cool-admin service代码片段"
}
}
================================================
FILE: .vscode/service.code-snippets
================================================
{
"service": {
"prefix": "service",
"body": [
"import { Init, Provide } from '@midwayjs/core';",
"import { BaseService } from '@cool-midway/core';",
"import { InjectEntityModel } from '@midwayjs/typeorm';",
"import { Repository } from 'typeorm';",
"",
"/**",
" * 描述",
" */",
"@Provide()",
"export class XxxService extends BaseService {",
" @InjectEntityModel(实体)",
" xxxEntity: Repository<实体>;",
""
" @Init()"
" async init() {",
" await super.init();",
" this.setEntity(this.xxxEntity);",
" }",
"",
" /**",
" * 描述",
" */",
" async xxx() {}",
"}",
""
],
"description": "cool-admin service代码片段"
}
}
================================================
FILE: Dockerfile
================================================
FROM node:lts-alpine
WORKDIR /app
# 配置alpine国内镜像加速
RUN sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositories
# 安装tzdata,默认的alpine基础镜像不包含时区组件,安装后可通过TZ环境变量配置时区
RUN apk add --no-cache tzdata
# 设置时区为中国东八区,这里的配置可以被docker-compose.yml或docker run时指定的时区覆盖
ENV TZ="Asia/Shanghai"
# 如果各公司有自己的私有源,可以替换registry地址,如使用官方源注释下一行
RUN npm config set registry https://registry.npmmirror.com
# 复制package.json
COPY package.json ./package.json
# 安装依赖
RUN npm install
# 构建项目
COPY . .
RUN npm run build
# 删除开发期依赖
RUN rm -rf node_modules && rm package-lock.json
# 安装生产环境依赖
RUN npm install
# 如果端口更换,这边可以更新一下
EXPOSE 8001
CMD ["npm", "run", "start"]
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) [2025] [厦门闪酷科技开发有限公司]
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.
---
MIT 许可证
版权所有 (c) [2025] [厦门闪酷科技开发有限公司]
特此免费授予获得本软件及相关文档文件(“软件”)副本的任何人无限制地处理本软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许软件提供给其的人员这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权持有人均不对因软件或软件使用或其他交易而产生的任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中。
================================================
FILE: README.md
================================================
<p align="center">
<a href="https://midwayjs.org/" target="blank"><img src="https://cool-show.oss-cn-shanghai.aliyuncs.com/admin/logo.png" width="200" alt="Midway Logo" /></a>
</p>
<p align="center">cool-admin(nodejs版)一个很酷的后台权限管理系统,开源免费,Ai编码、流程编排、模块化、插件化、极速开发CRUD,方便快速构建迭代后台管理系统,支持原生、docker、普通服务器等多种方式部署
到 <a href="https://cool-js.com" target="_blank">官网</a> 进一步了解。
<p align="center">
<a href="https://github.com/cool-team-official/cool-admin-midway/blob/master/LICENSE" target="_blank"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="GitHub license" />
<a href=""><img src="https://img.shields.io/github/package-json/v/cool-team-official/cool-admin-midway?style=flat-square" alt="GitHub tag"></a>
<img src="https://img.shields.io/github/last-commit/cool-team-official/cool-admin-midway?style=flat-square" alt="GitHub tag"></a>
</p>
## 特性
Ai 时代,很多老旧的框架已经无法满足现代化的开发需求,Cool-Admin 开发了一系列的功能,让开发变得更简单、更快速、更高效。
- **Ai 编码**:通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成[详情](https://node.cool-admin.com/src/guide/ai.html)
- **流程编排**:通过拖拽编排方式,即可实现类似像智能客服这样的功能[详情](https://node.cool-admin.com/src/guide/flow.html)
- **多租户**:支持多租户,采用全局动态注入查询条件[详情](https://node.cool-admin.com/src/guide/core/tenant.html)
- **多语言**:基于大模型自动翻译,无需更改原有代码[详情](https://node.cool-admin.com/src/guide/core/i18n.html)
- **原生打包**:打包成 exe 等安装包,打包完可以直接运行在 windows、mac、linux 等操作系统上[详情](https://node.cool-admin.com/src/guide/core/pkg.html)
- **模块化**:代码是模块化的,清晰明了,方便维护
- **插件化**:插件化的设计,可以通过安装插件的方式扩展如:支付、短信、邮件等功能
- ......

## 技术栈
- 后端:**`node.js` `typescript`**
- 前端:**`vue.js` `element-plus` `jsx` `pinia` `vue-router`**
- 数据库:**`mysql` `postgresql` `sqlite`**
如果你是前端,后端的这些技术选型对你是特别友好的,前端开发者可以较快速地上手。
如果你是后端,Typescript 的语法又跟 java、php 等特别类似,一切看起来也是那么得熟悉。
如果你想使用 java 版本后端,请移步[cool-admin-java](https://cool-js.com/admin/java/introduce.html)
#### 官网
[https://cool-js.com](https://cool-js.com)
## 视频教程
[官方 B 站视频教程](https://www.bilibili.com/video/BV1j1421R7aB)
<!-- 在此次添加使用文档 -->
## 演示
[AI 极速编码](https://node.cool-admin.com/src/guide/ai.html)
[https://show.cool-admin.com](https://show.cool-admin.com)
- 账户:admin
- 密码:123456
<img src="https://cool-show.oss-cn-shanghai.aliyuncs.com/admin/home-mini.png" alt="Admin Home"></a>
#### 项目前端
[https://github.com/cool-team-official/cool-admin-vue](https://github.com/cool-team-official/cool-admin-vue)
或
[https://gitee.com/cool-team-official/cool-admin-vue](https://gitee.com/cool-team-official/cool-admin-vue)
或
[https://gitcode.com/cool_team/cool-admin-vue](https://gitcode.com/cool_team/cool-admin-vue)
## 微信群
<img width="260" src="https://cool-show.oss-cn-shanghai.aliyuncs.com/admin/wechat.jpeg?v=1" alt="Admin Wechat"></a>
## 运行
#### 修改数据库配置,配置文件位于`src/config/config.local.ts`
以 Mysql 为例,其他数据库请参考[数据库配置文档](https://cool-js.com/admin/node/quick.html#%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE)
Mysql(`>=5.7版本`),建议 8.0,node 版本(`>=18.x`),首次启动会自动初始化并导入数据
```ts
// mysql,驱动已经内置,无需安装
typeorm: {
dataSource: {
default: {
type: 'mysql',
host: '127.0.0.1',
port: 3306,
username: 'root',
password: '123456',
database: 'cool',
// 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
synchronize: true,
// 打印日志
logging: false,
// 字符集
charset: 'utf8mb4',
// 是否开启缓存
cache: true,
// 实体路径
entities: ['**/modules/*/entity'],
},
},
},
```
#### 安装依赖并运行
```bash
$ npm i
$ npm run dev
```
启动完成访问:[http://localhost:8001/](http://localhost:8001)
注: `npm i`如果安装失败可以尝试使用切换您的镜像源,推荐使用[pnpm](https://pnpm.io/)安装
## CURD(快速增删改查)
大部分的后台管理系统,或者 API 服务都是对数据进行管理,所以可以看到大量的 CRUD 场景(增删改查),cool-admin 对此进行了大量地封装,让这块的编码量变得极其地少。
#### 新建一个数据表
`src/modules/demo/entity/goods.ts`,项目启动数据库会自动创建该表,无需手动创建
```ts
import { BaseEntity } from '../../base/entity/base';
import { Column, Entity, Index } from 'typeorm';
/**
* 商品
*/
@Entity('demo_app_goods')
export class DemoAppGoodsEntity extends BaseEntity {
@Column({ comment: '标题' })
title: string;
@Column({ comment: '图片' })
pic: string;
@Column({ comment: '价格', type: 'decimal', precision: 5, scale: 2 })
price: number;
}
```
#### 编写 api 接口
`src/modules/demo/controller/app/goods.ts`,快速编写 6 个 api 接口
```ts
import { CoolController, BaseController } from '@cool-midway/core';
import { DemoAppGoodsEntity } from '../../entity/goods';
/**
* 商品
*/
@CoolController({
api: ['add', 'delete', 'update', 'info', 'list', 'page'],
entity: DemoAppGoodsEntity,
})
export class DemoAppGoodsController extends BaseController {
/**
* 其他接口
*/
@Get('/other')
async other() {
return this.ok('hello, cool-admin!!!');
}
}
```
这样我们就完成了 6 个接口的编写,对应的接口如下:
- `POST /app/demo/goods/add` 新增
- `POST /app/demo/goods/delete` 删除
- `POST /app/demo/goods/update` 更新
- `GET /app/demo/goods/info` 单个信息
- `POST /app/demo/goods/list` 列表信息
- `POST /app/demo/goods/page` 分页查询(包含模糊查询、字段全匹配等)
### 部署
[部署教程](https://node.cool-admin.com/src/guide/deploy.html)
### 内置指令
- 使用 `npm run lint` 来做代码风格检查。
[midway]: https://midwayjs.org
### 低价服务器
[阿里云、腾讯云、华为云低价云服务器,不限新老](https://cool-js.com/service/cloud)
================================================
FILE: bootstrap.js
================================================
const { Bootstrap } = require('@midwayjs/bootstrap');
// 显式以组件方式引入用户代码
Bootstrap.configure({
// 这里引用的是编译后的入口,本地开发不走这个文件
// eslint-disable-next-line node/no-unpublished-require
imports: require('./dist/index'),
// 禁用依赖注入的目录扫描
moduleDetector: false,
}).run();
================================================
FILE: docker-compose.yml
================================================
# 本地数据库环境
# 数据存放在当前目录下的 data里
# 推荐使用安装了docker扩展的vscode打开目录 在本文件上右键可以快速启动,停止
# 如不需要相关容器开机自启动,可注释掉 restart: always
# 如遇端口冲突 可调整ports下 :前面的端口号
version: "3.1"
services:
coolDB:
image: mysql
command:
--default-authentication-plugin=mysql_native_password
--sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
--group_concat_max_len=102400
restart: always
volumes:
- ./data/mysql/:/var/lib/mysql/
environment:
TZ: Asia/Shanghai # 指定时区
MYSQL_ROOT_PASSWORD: "123456" # 配置root用户密码
MYSQL_DATABASE: "cool" # 业务库名
MYSQL_USER: "root" # 业务库用户名
MYSQL_PASSWORD: "123456" # 业务库密码
networks:
- cool
ports:
- 3306:3306
coolRedis:
image: redis
#command: --requirepass "12345678" # redis库密码,不需要密码注释本行
restart: always
environment:
TZ: Asia/Shanghai # 指定时区
volumes:
- ./data/redis/:/data/
networks:
- cool
ports:
- 6379:6379
================================================
FILE: jest.config.js
================================================
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testPathIgnorePatterns: ['<rootDir>/test/fixtures'],
coveragePathIgnorePatterns: ['<rootDir>/test/'],
};
================================================
FILE: package.json
================================================
{
"name": "cool-admin",
"version": "8.0.0",
"description": "一个很酷的Ai快速开发框架",
"private": true,
"dependencies": {
"@cool-midway/core": "^8.0.7",
"@cool-midway/rpc": "^8.0.1",
"@cool-midway/task": "^8.0.2",
"@midwayjs/bootstrap": "^3.20.3",
"@midwayjs/cache-manager": "^3.20.3",
"@midwayjs/core": "^3.20.3",
"@midwayjs/cron": "^3.20.3",
"@midwayjs/cross-domain": "^3.20.3",
"@midwayjs/info": "^3.20.3",
"@midwayjs/koa": "^3.20.3",
"@midwayjs/logger": "^3.4.2",
"@midwayjs/static-file": "^3.20.3",
"@midwayjs/typeorm": "^3.20.3",
"@midwayjs/upload": "^3.20.3",
"@midwayjs/validate": "^3.20.3",
"adm-zip": "^0.5.16",
"axios": "^1.8.4",
"cron": "^4.1.3",
"download": "^8.0.0",
"jsonwebtoken": "^9.0.2",
"lodash": "^4.17.21",
"md5": "^2.3.0",
"moment": "^2.30.1",
"mysql2": "^3.14.0",
"svg-captcha": "^1.4.0",
"tslib": "^2.8.1",
"typeorm": "npm:@cool-midway/typeorm@0.3.20",
"uuid": "^11.1.0",
"ws": "^8.18.1"
},
"devDependencies": {
"@midwayjs/bundle-helper": "^1.3.0",
"@midwayjs/mock": "^3.20.3",
"@types/jest": "^29.5.14",
"@types/node": "22",
"@yao-pkg/pkg": "^6.3.2",
"cross-env": "^7.0.3",
"jest": "^29.7.0",
"mwts": "^1.3.0",
"mwtsc": "^1.15.1",
"rimraf": "^6.0.1",
"ts-jest": "^29.3.0",
"typescript": "~5.8.2"
},
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"start": "NODE_ENV=production node ./bootstrap.js",
"dev": "rimraf src/index.ts && cool check && cross-env NODE_ENV=local mwtsc --cleanOutDir --watch --run @midwayjs/mock/app.js --keepalive",
"test": "cross-env NODE_ENV=unittest jest",
"cov": "jest --coverage",
"lint": "mwts check",
"lint:fix": "mwts fix",
"ci": "npm run cov",
"build": "cool entity && bundle && mwtsc --cleanOutDir",
"build:obfuscate": "cool entity && bundle && mwtsc --cleanOutDir && cool obfuscate",
"pkg": "rimraf build && mkdir build && npm run build && pkg . -d > build/pkg.log",
"pm2:start": "pm2 start ./bootstrap.js -i 1 --name cool-admin",
"pm2:stop": "pm2 stop cool-admin & pm2 delete cool-admin"
},
"bin": "./bootstrap.js",
"pkg": {
"scripts": [
"dist/**/*",
"node_modules/axios/dist/node/*"
],
"assets": [
"public/**/*",
"typings/**/*",
"src/locales/**/*"
],
"targets": [
"node20-win-x64"
],
"outputPath": "build"
},
"repository": {
"type": "git",
"url": "https://cool-js.com"
},
"author": "COOL",
"license": "MIT"
}
================================================
FILE: public/css/welcome.css
================================================
body {
display: flex;
min-height: 100vh;
margin: 0;
justify-content: center;
align-items: center;
text-align: center;
background: #222;
overflow-y: hidden;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.footer-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
color: #6ee1f5;
padding: 10px 0 20px 0;
text-align: center;
opacity: 0;
animation: fadeIn 5s forwards;
background: #222;
}
.link {
color: #6ee1f5;
}
.reveal {
position: relative;
display: flex;
color: #6ee1f5;
font-size: 2em;
font-family: Raleway, sans-serif;
letter-spacing: 3px;
text-transform: uppercase;
white-space: pre;
}
.reveal span {
opacity: 0;
transform: scale(0);
animation: fadeIn 2.4s forwards;
}
.reveal::before, .reveal::after {
position: absolute;
content: "";
top: 0;
bottom: 0;
width: 2px;
height: 100%;
background: white;
opacity: 0;
transform: scale(0);
}
.reveal::before {
left: 50%;
animation: slideLeft 1.5s cubic-bezier(0.7, -0.6, 0.3, 1.5) forwards;
}
.reveal::after {
right: 50%;
animation: slideRight 1.5s cubic-bezier(0.7, -0.6, 0.3, 1.5) forwards;
}
@keyframes fadeIn {
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes slideLeft {
to {
left: -6%;
opacity: 1;
transform: scale(0.9);
}
}
@keyframes slideRight {
to {
right: -6%;
opacity: 1;
transform: scale(0.9);
}
}
================================================
FILE: public/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>COOL-ADMIN 一个很酷的后台权限管理系统</title>
<meta name="keywords" content="cool-admin,后台管理系统,vue,element-ui,nodejs" />
<meta name="description" content="element-ui、midway.js、mysql、redis、node.js、前后端分离、权限管理、快速开发, COOL-AMIND 一个很酷的后台权限管理系统" />
<link rel="stylesheet" href="css/welcome.css">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<body>
<div class="reveal">HELLO COOL-ADMIN AI快速开发框架</div>
<!-- 添加底部说明 -->
<div class="footer-bar">
<span>当前版本:v8.x</span>
<div class="notice">
<span>本项目采用前后端分离架构,这是后端服务。</span>
<span>前端项目请访问:</span>
<a class="link" target="_blank" href="https://vue.cool-admin.com/">COOL-ADMIN 前端</a>
</div>
</div>
<script src="js/welcome.js"></script>
</body>
</html>
================================================
FILE: public/js/welcome.js
================================================
const duration = 0.8;
const delay = 0.3;
// eslint-disable-next-line no-undef
const revealText = document.querySelector('.reveal');
const letters = revealText.textContent.split('');
revealText.textContent = '';
const middle = letters.filter(e => e !== ' ').length / 2;
letters.forEach((letter, i) => {
// eslint-disable-next-line no-undef
const span = document.createElement('span');
span.textContent = letter;
span.style.animationDelay = `${delay + Math.abs(i - middle) * 0.1}s`;
revealText.append(span);
});
================================================
FILE: public/swagger/LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: public/swagger/NOTICE
================================================
swagger-ui
Copyright 2020-2021 SmartBear Software Inc.
================================================
FILE: public/swagger/README.md
================================================
# Swagger UI Dist
[](http://badge.fury.io/js/swagger-ui-dist)
# API
This module, `swagger-ui-dist`, exposes Swagger-UI's entire dist folder as a dependency-free npm module.
Use `swagger-ui` instead, if you'd like to have npm install dependencies for you.
`SwaggerUIBundle` and `SwaggerUIStandalonePreset` can be imported:
```javascript
import { SwaggerUIBundle, SwaggerUIStandalonePreset } from "swagger-ui-dist"
```
To get an absolute path to this directory for static file serving, use the exported `getAbsoluteFSPath` method:
```javascript
const swaggerUiAssetPath = require("swagger-ui-dist").getAbsoluteFSPath()
// then instantiate server that serves files from the swaggerUiAssetPath
```
For anything else, check the [Swagger-UI](https://github.com/swagger-api/swagger-ui) repository.
================================================
FILE: public/swagger/absolute-path.js
================================================
/*
* getAbsoluteFSPath
* @return {string} When run in NodeJS env, returns the absolute path to the current directory
* When run outside of NodeJS, will return an error message
*/
const getAbsoluteFSPath = function () {
// detect whether we are running in a browser or nodejs
if (typeof module !== "undefined" && module.exports) {
return require("path").resolve(__dirname)
}
throw new Error('getAbsoluteFSPath can only be called within a Nodejs environment');
}
module.exports = getAbsoluteFSPath
================================================
FILE: public/swagger/index.css
================================================
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
================================================
FILE: public/swagger/index.html
================================================
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
<link rel="stylesheet" type="text/css" href="index.css" />
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script src="./swagger-initializer.js" charset="UTF-8"> </script>
</body>
</html>
================================================
FILE: public/swagger/index.js
================================================
try {
module.exports.SwaggerUIBundle = require("./swagger-ui-bundle.js")
module.exports.SwaggerUIStandalonePreset = require("./swagger-ui-standalone-preset.js")
} catch(e) {
// swallow the error if there's a problem loading the assets.
// allows this module to support providing the assets for browserish contexts,
// without exploding in a Node context.
//
// see https://github.com/swagger-api/swagger-ui/issues/3291#issuecomment-311195388
// for more information.
}
// `absolutePath` and `getAbsoluteFSPath` are both here because at one point,
// we documented having one and actually implemented the other.
// They were both retained so we don't break anyone's code.
module.exports.absolutePath = require("./absolute-path.js")
module.exports.getAbsoluteFSPath = require("./absolute-path.js")
================================================
FILE: public/swagger/oauth2-redirect.html
================================================
<!doctype html>
<html lang="en-US">
<head>
<title>Swagger UI: OAuth2 Redirect</title>
</head>
<body>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;
if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1).replace('?', '&');
} else {
qp = location.search.substring(1);
}
arr = qp.split("&");
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';});
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value);
}
) : {};
isValid = qp.state === sentState;
if ((
oauth2.auth.schema.get("flow") === "accessCode" ||
oauth2.auth.schema.get("flow") === "authorizationCode" ||
oauth2.auth.schema.get("flow") === "authorization_code"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
});
}
if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
let oauthErrorMsg;
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
}
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
if (document.readyState !== 'loading') {
run();
} else {
document.addEventListener('DOMContentLoaded', function () {
run();
});
}
</script>
</body>
</html>
================================================
FILE: public/swagger/package.json
================================================
{
"name": "swagger-ui-dist",
"version": "5.10.0",
"main": "index.js",
"repository": "git@github.com:swagger-api/swagger-ui.git",
"contributors": [
"(in alphabetical order)",
"Anna Bodnia <anna.bodnia@gmail.com>",
"Buu Nguyen <buunguyen@gmail.com>",
"Josh Ponelat <jponelat@gmail.com>",
"Kyle Shockey <kyleshockey1@gmail.com>",
"Robert Barnwell <robert@robertismy.name>",
"Sahar Jafari <shr.jafari@gmail.com>"
],
"license": "Apache-2.0",
"dependencies": {},
"devDependencies": {}
}
================================================
FILE: public/swagger/swagger-initializer.js
================================================
window.onload = function() {
//<editor-fold desc="Changeable Configuration Block">
// the following lines will be replaced by docker/configurator, when it runs in a docker-container
window.ui = SwaggerUIBundle({
url: "/swagger/json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
//</editor-fold>
};
================================================
FILE: public/swagger/swagger-ui-bundle.js
================================================
/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */
!function webpackUniversalModuleDefinition(i,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):"object"==typeof exports?exports.SwaggerUIBundle=s():i.SwaggerUIBundle=s()}(this,(()=>(()=>{var i={17967:(i,s)=>{"use strict";s.Nm=s.Rq=void 0;var u=/^([^\w]*)(javascript|data|vbscript)/im,m=/&#(\w+)(^\w|;)?/g,v=/&(newline|tab);/gi,_=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,j=/^.+(:|:)/gim,M=[".","/"];s.Rq="about:blank",s.Nm=function sanitizeUrl(i){if(!i)return s.Rq;var $=function decodeHtmlCharacters(i){return i.replace(_,"").replace(m,(function(i,s){return String.fromCharCode(s)}))}(i).replace(v,"").replace(_,"").trim();if(!$)return s.Rq;if(function isRelativeUrlWithoutProtocol(i){return M.indexOf(i[0])>-1}($))return $;var W=$.match(j);if(!W)return $;var X=W[0];return u.test(X)?s.Rq:$}},79742:(i,s)=>{"use strict";s.byteLength=function byteLength(i){var s=getLens(i),u=s[0],m=s[1];return 3*(u+m)/4-m},s.toByteArray=function toByteArray(i){var s,u,_=getLens(i),j=_[0],M=_[1],$=new v(function _byteLength(i,s,u){return 3*(s+u)/4-u}(0,j,M)),W=0,X=M>0?j-4:j;for(u=0;u<X;u+=4)s=m[i.charCodeAt(u)]<<18|m[i.charCodeAt(u+1)]<<12|m[i.charCodeAt(u+2)]<<6|m[i.charCodeAt(u+3)],$[W++]=s>>16&255,$[W++]=s>>8&255,$[W++]=255&s;2===M&&(s=m[i.charCodeAt(u)]<<2|m[i.charCodeAt(u+1)]>>4,$[W++]=255&s);1===M&&(s=m[i.charCodeAt(u)]<<10|m[i.charCodeAt(u+1)]<<4|m[i.charCodeAt(u+2)]>>2,$[W++]=s>>8&255,$[W++]=255&s);return $},s.fromByteArray=function fromByteArray(i){for(var s,m=i.length,v=m%3,_=[],j=16383,M=0,$=m-v;M<$;M+=j)_.push(encodeChunk(i,M,M+j>$?$:M+j));1===v?(s=i[m-1],_.push(u[s>>2]+u[s<<4&63]+"==")):2===v&&(s=(i[m-2]<<8)+i[m-1],_.push(u[s>>10]+u[s>>4&63]+u[s<<2&63]+"="));return _.join("")};for(var u=[],m=[],v="undefined"!=typeof Uint8Array?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",j=0;j<64;++j)u[j]=_[j],m[_.charCodeAt(j)]=j;function getLens(i){var s=i.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var u=i.indexOf("=");return-1===u&&(u=s),[u,u===s?0:4-u%4]}function encodeChunk(i,s,m){for(var v,_,j=[],M=s;M<m;M+=3)v=(i[M]<<16&16711680)+(i[M+1]<<8&65280)+(255&i[M+2]),j.push(u[(_=v)>>18&63]+u[_>>12&63]+u[_>>6&63]+u[63&_]);return j.join("")}m["-".charCodeAt(0)]=62,m["_".charCodeAt(0)]=63},48764:(i,s,u)=>{"use strict";const m=u(79742),v=u(80645),_="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;s.Buffer=Buffer,s.SlowBuffer=function SlowBuffer(i){+i!=i&&(i=0);return Buffer.alloc(+i)},s.INSPECT_MAX_BYTES=50;const j=2147483647;function createBuffer(i){if(i>j)throw new RangeError('The value "'+i+'" is invalid for option "size"');const s=new Uint8Array(i);return Object.setPrototypeOf(s,Buffer.prototype),s}function Buffer(i,s,u){if("number"==typeof i){if("string"==typeof s)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(i)}return from(i,s,u)}function from(i,s,u){if("string"==typeof i)return function fromString(i,s){"string"==typeof s&&""!==s||(s="utf8");if(!Buffer.isEncoding(s))throw new TypeError("Unknown encoding: "+s);const u=0|byteLength(i,s);let m=createBuffer(u);const v=m.write(i,s);v!==u&&(m=m.slice(0,v));return m}(i,s);if(ArrayBuffer.isView(i))return function fromArrayView(i){if(isInstance(i,Uint8Array)){const s=new Uint8Array(i);return fromArrayBuffer(s.buffer,s.byteOffset,s.byteLength)}return fromArrayLike(i)}(i);if(null==i)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i);if(isInstance(i,ArrayBuffer)||i&&isInstance(i.buffer,ArrayBuffer))return fromArrayBuffer(i,s,u);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(i,SharedArrayBuffer)||i&&isInstance(i.buffer,SharedArrayBuffer)))return fromArrayBuffer(i,s,u);if("number"==typeof i)throw new TypeError('The "value" argument must not be of type number. Received type number');const m=i.valueOf&&i.valueOf();if(null!=m&&m!==i)return Buffer.from(m,s,u);const v=function fromObject(i){if(Buffer.isBuffer(i)){const s=0|checked(i.length),u=createBuffer(s);return 0===u.length||i.copy(u,0,0,s),u}if(void 0!==i.length)return"number"!=typeof i.length||numberIsNaN(i.length)?createBuffer(0):fromArrayLike(i);if("Buffer"===i.type&&Array.isArray(i.data))return fromArrayLike(i.data)}(i);if(v)return v;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof i[Symbol.toPrimitive])return Buffer.from(i[Symbol.toPrimitive]("string"),s,u);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i)}function assertSize(i){if("number"!=typeof i)throw new TypeError('"size" argument must be of type number');if(i<0)throw new RangeError('The value "'+i+'" is invalid for option "size"')}function allocUnsafe(i){return assertSize(i),createBuffer(i<0?0:0|checked(i))}function fromArrayLike(i){const s=i.length<0?0:0|checked(i.length),u=createBuffer(s);for(let m=0;m<s;m+=1)u[m]=255&i[m];return u}function fromArrayBuffer(i,s,u){if(s<0||i.byteLength<s)throw new RangeError('"offset" is outside of buffer bounds');if(i.byteLength<s+(u||0))throw new RangeError('"length" is outside of buffer bounds');let m;return m=void 0===s&&void 0===u?new Uint8Array(i):void 0===u?new Uint8Array(i,s):new Uint8Array(i,s,u),Object.setPrototypeOf(m,Buffer.prototype),m}function checked(i){if(i>=j)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+j.toString(16)+" bytes");return 0|i}function byteLength(i,s){if(Buffer.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||isInstance(i,ArrayBuffer))return i.byteLength;if("string"!=typeof i)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);const u=i.length,m=arguments.length>2&&!0===arguments[2];if(!m&&0===u)return 0;let v=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return u;case"utf8":case"utf-8":return utf8ToBytes(i).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return base64ToBytes(i).length;default:if(v)return m?-1:utf8ToBytes(i).length;s=(""+s).toLowerCase(),v=!0}}function slowToString(i,s,u){let m=!1;if((void 0===s||s<0)&&(s=0),s>this.length)return"";if((void 0===u||u>this.length)&&(u=this.length),u<=0)return"";if((u>>>=0)<=(s>>>=0))return"";for(i||(i="utf8");;)switch(i){case"hex":return hexSlice(this,s,u);case"utf8":case"utf-8":return utf8Slice(this,s,u);case"ascii":return asciiSlice(this,s,u);case"latin1":case"binary":return latin1Slice(this,s,u);case"base64":return base64Slice(this,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,s,u);default:if(m)throw new TypeError("Unknown encoding: "+i);i=(i+"").toLowerCase(),m=!0}}function swap(i,s,u){const m=i[s];i[s]=i[u],i[u]=m}function bidirectionalIndexOf(i,s,u,m,v){if(0===i.length)return-1;if("string"==typeof u?(m=u,u=0):u>2147483647?u=2147483647:u<-2147483648&&(u=-2147483648),numberIsNaN(u=+u)&&(u=v?0:i.length-1),u<0&&(u=i.length+u),u>=i.length){if(v)return-1;u=i.length-1}else if(u<0){if(!v)return-1;u=0}if("string"==typeof s&&(s=Buffer.from(s,m)),Buffer.isBuffer(s))return 0===s.length?-1:arrayIndexOf(i,s,u,m,v);if("number"==typeof s)return s&=255,"function"==typeof Uint8Array.prototype.indexOf?v?Uint8Array.prototype.indexOf.call(i,s,u):Uint8Array.prototype.lastIndexOf.call(i,s,u):arrayIndexOf(i,[s],u,m,v);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(i,s,u,m,v){let _,j=1,M=i.length,$=s.length;if(void 0!==m&&("ucs2"===(m=String(m).toLowerCase())||"ucs-2"===m||"utf16le"===m||"utf-16le"===m)){if(i.length<2||s.length<2)return-1;j=2,M/=2,$/=2,u/=2}function read(i,s){return 1===j?i[s]:i.readUInt16BE(s*j)}if(v){let m=-1;for(_=u;_<M;_++)if(read(i,_)===read(s,-1===m?0:_-m)){if(-1===m&&(m=_),_-m+1===$)return m*j}else-1!==m&&(_-=_-m),m=-1}else for(u+$>M&&(u=M-$),_=u;_>=0;_--){let u=!0;for(let m=0;m<$;m++)if(read(i,_+m)!==read(s,m)){u=!1;break}if(u)return _}return-1}function hexWrite(i,s,u,m){u=Number(u)||0;const v=i.length-u;m?(m=Number(m))>v&&(m=v):m=v;const _=s.length;let j;for(m>_/2&&(m=_/2),j=0;j<m;++j){const m=parseInt(s.substr(2*j,2),16);if(numberIsNaN(m))return j;i[u+j]=m}return j}function utf8Write(i,s,u,m){return blitBuffer(utf8ToBytes(s,i.length-u),i,u,m)}function asciiWrite(i,s,u,m){return blitBuffer(function asciiToBytes(i){const s=[];for(let u=0;u<i.length;++u)s.push(255&i.charCodeAt(u));return s}(s),i,u,m)}function base64Write(i,s,u,m){return blitBuffer(base64ToBytes(s),i,u,m)}function ucs2Write(i,s,u,m){return blitBuffer(function utf16leToBytes(i,s){let u,m,v;const _=[];for(let j=0;j<i.length&&!((s-=2)<0);++j)u=i.charCodeAt(j),m=u>>8,v=u%256,_.push(v),_.push(m);return _}(s,i.length-u),i,u,m)}function base64Slice(i,s,u){return 0===s&&u===i.length?m.fromByteArray(i):m.fromByteArray(i.slice(s,u))}function utf8Slice(i,s,u){u=Math.min(i.length,u);const m=[];let v=s;for(;v<u;){const s=i[v];let _=null,j=s>239?4:s>223?3:s>191?2:1;if(v+j<=u){let u,m,M,$;switch(j){case 1:s<128&&(_=s);break;case 2:u=i[v+1],128==(192&u)&&($=(31&s)<<6|63&u,$>127&&(_=$));break;case 3:u=i[v+1],m=i[v+2],128==(192&u)&&128==(192&m)&&($=(15&s)<<12|(63&u)<<6|63&m,$>2047&&($<55296||$>57343)&&(_=$));break;case 4:u=i[v+1],m=i[v+2],M=i[v+3],128==(192&u)&&128==(192&m)&&128==(192&M)&&($=(15&s)<<18|(63&u)<<12|(63&m)<<6|63&M,$>65535&&$<1114112&&(_=$))}}null===_?(_=65533,j=1):_>65535&&(_-=65536,m.push(_>>>10&1023|55296),_=56320|1023&_),m.push(_),v+=j}return function decodeCodePointsArray(i){const s=i.length;if(s<=M)return String.fromCharCode.apply(String,i);let u="",m=0;for(;m<s;)u+=String.fromCharCode.apply(String,i.slice(m,m+=M));return u}(m)}s.kMaxLength=j,Buffer.TYPED_ARRAY_SUPPORT=function typedArraySupport(){try{const i=new Uint8Array(1),s={foo:function(){return 42}};return Object.setPrototypeOf(s,Uint8Array.prototype),Object.setPrototypeOf(i,s),42===i.foo()}catch(i){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Buffer.prototype,"parent",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,"offset",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(i,s,u){return from(i,s,u)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(i,s,u){return function alloc(i,s,u){return assertSize(i),i<=0?createBuffer(i):void 0!==s?"string"==typeof u?createBuffer(i).fill(s,u):createBuffer(i).fill(s):createBuffer(i)}(i,s,u)},Buffer.allocUnsafe=function(i){return allocUnsafe(i)},Buffer.allocUnsafeSlow=function(i){return allocUnsafe(i)},Buffer.isBuffer=function isBuffer(i){return null!=i&&!0===i._isBuffer&&i!==Buffer.prototype},Buffer.compare=function compare(i,s){if(isInstance(i,Uint8Array)&&(i=Buffer.from(i,i.offset,i.byteLength)),isInstance(s,Uint8Array)&&(s=Buffer.from(s,s.offset,s.byteLength)),!Buffer.isBuffer(i)||!Buffer.isBuffer(s))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(i===s)return 0;let u=i.length,m=s.length;for(let v=0,_=Math.min(u,m);v<_;++v)if(i[v]!==s[v]){u=i[v],m=s[v];break}return u<m?-1:m<u?1:0},Buffer.isEncoding=function isEncoding(i){switch(String(i).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function concat(i,s){if(!Array.isArray(i))throw new TypeError('"list" argument must be an Array of Buffers');if(0===i.length)return Buffer.alloc(0);let u;if(void 0===s)for(s=0,u=0;u<i.length;++u)s+=i[u].length;const m=Buffer.allocUnsafe(s);let v=0;for(u=0;u<i.length;++u){let s=i[u];if(isInstance(s,Uint8Array))v+s.length>m.length?(Buffer.isBuffer(s)||(s=Buffer.from(s)),s.copy(m,v)):Uint8Array.prototype.set.call(m,s,v);else{if(!Buffer.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(m,v)}v+=s.length}return m},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const i=this.length;if(i%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let s=0;s<i;s+=2)swap(this,s,s+1);return this},Buffer.prototype.swap32=function swap32(){const i=this.length;if(i%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let s=0;s<i;s+=4)swap(this,s,s+3),swap(this,s+1,s+2);return this},Buffer.prototype.swap64=function swap64(){const i=this.length;if(i%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let s=0;s<i;s+=8)swap(this,s,s+7),swap(this,s+1,s+6),swap(this,s+2,s+5),swap(this,s+3,s+4);return this},Buffer.prototype.toString=function toString(){const i=this.length;return 0===i?"":0===arguments.length?utf8Slice(this,0,i):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function equals(i){if(!Buffer.isBuffer(i))throw new TypeError("Argument must be a Buffer");return this===i||0===Buffer.compare(this,i)},Buffer.prototype.inspect=function inspect(){let i="";const u=s.INSPECT_MAX_BYTES;return i=this.toString("hex",0,u).replace(/(.{2})/g,"$1 ").trim(),this.length>u&&(i+=" ... "),"<Buffer "+i+">"},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(i,s,u,m,v){if(isInstance(i,Uint8Array)&&(i=Buffer.from(i,i.offset,i.byteLength)),!Buffer.isBuffer(i))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof i);if(void 0===s&&(s=0),void 0===u&&(u=i?i.length:0),void 0===m&&(m=0),void 0===v&&(v=this.length),s<0||u>i.length||m<0||v>this.length)throw new RangeError("out of range index");if(m>=v&&s>=u)return 0;if(m>=v)return-1;if(s>=u)return 1;if(this===i)return 0;let _=(v>>>=0)-(m>>>=0),j=(u>>>=0)-(s>>>=0);const M=Math.min(_,j),$=this.slice(m,v),W=i.slice(s,u);for(let i=0;i<M;++i)if($[i]!==W[i]){_=$[i],j=W[i];break}return _<j?-1:j<_?1:0},Buffer.prototype.includes=function includes(i,s,u){return-1!==this.indexOf(i,s,u)},Buffer.prototype.indexOf=function indexOf(i,s,u){return bidirectionalIndexOf(this,i,s,u,!0)},Buffer.prototype.lastIndexOf=function lastIndexOf(i,s,u){return bidirectionalIndexOf(this,i,s,u,!1)},Buffer.prototype.write=function write(i,s,u,m){if(void 0===s)m="utf8",u=this.length,s=0;else if(void 0===u&&"string"==typeof s)m=s,u=this.length,s=0;else{if(!isFinite(s))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");s>>>=0,isFinite(u)?(u>>>=0,void 0===m&&(m="utf8")):(m=u,u=void 0)}const v=this.length-s;if((void 0===u||u>v)&&(u=v),i.length>0&&(u<0||s<0)||s>this.length)throw new RangeError("Attempt to write outside buffer bounds");m||(m="utf8");let _=!1;for(;;)switch(m){case"hex":return hexWrite(this,i,s,u);case"utf8":case"utf-8":return utf8Write(this,i,s,u);case"ascii":case"latin1":case"binary":return asciiWrite(this,i,s,u);case"base64":return base64Write(this,i,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,i,s,u);default:if(_)throw new TypeError("Unknown encoding: "+m);m=(""+m).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const M=4096;function asciiSlice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;v<u;++v)m+=String.fromCharCode(127&i[v]);return m}function latin1Slice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;v<u;++v)m+=String.fromCharCode(i[v]);return m}function hexSlice(i,s,u){const m=i.length;(!s||s<0)&&(s=0),(!u||u<0||u>m)&&(u=m);let v="";for(let m=s;m<u;++m)v+=X[i[m]];return v}function utf16leSlice(i,s,u){const m=i.slice(s,u);let v="";for(let i=0;i<m.length-1;i+=2)v+=String.fromCharCode(m[i]+256*m[i+1]);return v}function checkOffset(i,s,u){if(i%1!=0||i<0)throw new RangeError("offset is not uint");if(i+s>u)throw new RangeError("Trying to access beyond buffer length")}function checkInt(i,s,u,m,v,_){if(!Buffer.isBuffer(i))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>v||s<_)throw new RangeError('"value" argument is out of bounds');if(u+m>i.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,u}function wrtBigUInt64BE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u+7]=_,_>>=8,i[u+6]=_,_>>=8,i[u+5]=_,_>>=8,i[u+4]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u+3]=j,j>>=8,i[u+2]=j,j>>=8,i[u+1]=j,j>>=8,i[u]=j,u+8}function checkIEEE754(i,s,u,m,v,_){if(u+m>i.length)throw new RangeError("Index out of range");if(u<0)throw new RangeError("Index out of range")}function writeFloat(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,4),v.write(i,s,u,m,23,4),u+4}function writeDouble(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,8),v.write(i,s,u,m,52,8),u+8}Buffer.prototype.slice=function slice(i,s){const u=this.length;(i=~~i)<0?(i+=u)<0&&(i=0):i>u&&(i=u),(s=void 0===s?u:~~s)<0?(s+=u)<0&&(s=0):s>u&&(s=u),s<i&&(s=i);const m=this.subarray(i,s);return Object.setPrototypeOf(m,Buffer.prototype),m},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_<s&&(v*=256);)m+=this[i+_]*v;return m},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i+--s],v=1;for(;s>0&&(v*=256);)m+=this[i+--s]*v;return m},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),this[i]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]|this[i+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]<<8|this[i+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),(this[i]|this[i+1]<<8|this[i+2]<<16)+16777216*this[i+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),16777216*this[i]+(this[i+1]<<16|this[i+2]<<8|this[i+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s+256*this[++i]+65536*this[++i]+this[++i]*2**24,v=this[++i]+256*this[++i]+65536*this[++i]+u*2**24;return BigInt(m)+(BigInt(v)<<BigInt(32))})),Buffer.prototype.readBigUInt64BE=defineBigIntMethod((function readBigUInt64BE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s*2**24+65536*this[++i]+256*this[++i]+this[++i],v=this[++i]*2**24+65536*this[++i]+256*this[++i]+u;return(BigInt(m)<<BigInt(32))+BigInt(v)})),Buffer.prototype.readIntLE=function readIntLE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_<s&&(v*=256);)m+=this[i+_]*v;return v*=128,m>=v&&(m-=Math.pow(2,8*s)),m},Buffer.prototype.readIntBE=function readIntBE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=s,v=1,_=this[i+--m];for(;m>0&&(v*=256);)_+=this[i+--m]*v;return v*=128,_>=v&&(_-=Math.pow(2,8*s)),_},Buffer.prototype.readInt8=function readInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),128&this[i]?-1*(255-this[i]+1):this[i]},Buffer.prototype.readInt16LE=function readInt16LE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i]|this[i+1]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt16BE=function readInt16BE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i+1]|this[i]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt32LE=function readInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]|this[i+1]<<8|this[i+2]<<16|this[i+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]<<24|this[i+1]<<16|this[i+2]<<8|this[i+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=this[i+4]+256*this[i+5]+65536*this[i+6]+(u<<24);return(BigInt(m)<<BigInt(32))+BigInt(s+256*this[++i]+65536*this[++i]+this[++i]*2**24)})),Buffer.prototype.readBigInt64BE=defineBigIntMethod((function readBigInt64BE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=(s<<24)+65536*this[++i]+256*this[++i]+this[++i];return(BigInt(m)<<BigInt(32))+BigInt(this[++i]*2**24+65536*this[++i]+256*this[++i]+u)})),Buffer.prototype.readFloatLE=function readFloatLE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(i,s,u,m){if(i=+i,s>>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=1,_=0;for(this[s]=255&i;++_<u&&(v*=256);)this[s+_]=i/v&255;return s+u},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(i,s,u,m){if(i=+i,s>>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=u-1,_=1;for(this[s+v]=255&i;--v>=0&&(_*=256);)this[s+v]=i/_&255;return s+u},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,255,0),this[s]=255&i,s+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s+3]=i>>>24,this[s+2]=i>>>16,this[s+1]=i>>>8,this[s]=255&i,s+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=0,_=1,j=0;for(this[s]=255&i;++v<u&&(_*=256);)i<0&&0===j&&0!==this[s+v-1]&&(j=1),this[s+v]=(i/_>>0)-j&255;return s+u},Buffer.prototype.writeIntBE=function writeIntBE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=u-1,_=1,j=0;for(this[s+v]=255&i;--v>=0&&(_*=256);)i<0&&0===j&&0!==this[s+v+1]&&(j=1),this[s+v]=(i/_>>0)-j&255;return s+u},Buffer.prototype.writeInt8=function writeInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,127,-128),i<0&&(i=255+i+1),this[s]=255&i,s+1},Buffer.prototype.writeInt16LE=function writeInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeInt16BE=function writeInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeInt32LE=function writeInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),this[s]=255&i,this[s+1]=i>>>8,this[s+2]=i>>>16,this[s+3]=i>>>24,s+4},Buffer.prototype.writeInt32BE=function writeInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),i<0&&(i=4294967295+i+1),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(i,s,u){return writeFloat(this,i,s,!0,u)},Buffer.prototype.writeFloatBE=function writeFloatBE(i,s,u){return writeFloat(this,i,s,!1,u)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(i,s,u){return writeDouble(this,i,s,!0,u)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(i,s,u){return writeDouble(this,i,s,!1,u)},Buffer.prototype.copy=function copy(i,s,u,m){if(!Buffer.isBuffer(i))throw new TypeError("argument should be a Buffer");if(u||(u=0),m||0===m||(m=this.length),s>=i.length&&(s=i.length),s||(s=0),m>0&&m<u&&(m=u),m===u)return 0;if(0===i.length||0===this.length)return 0;if(s<0)throw new RangeError("targetStart out of bounds");if(u<0||u>=this.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("sourceEnd out of bounds");m>this.length&&(m=this.length),i.length-s<m-u&&(m=i.length-s+u);const v=m-u;return this===i&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(s,u,m):Uint8Array.prototype.set.call(i,this.subarray(u,m),s),v},Buffer.prototype.fill=function fill(i,s,u,m){if("string"==typeof i){if("string"==typeof s?(m=s,s=0,u=this.length):"string"==typeof u&&(m=u,u=this.length),void 0!==m&&"string"!=typeof m)throw new TypeError("encoding must be a string");if("string"==typeof m&&!Buffer.isEncoding(m))throw new TypeError("Unknown encoding: "+m);if(1===i.length){const s=i.charCodeAt(0);("utf8"===m&&s<128||"latin1"===m)&&(i=s)}}else"number"==typeof i?i&=255:"boolean"==typeof i&&(i=Number(i));if(s<0||this.length<s||this.length<u)throw new RangeError("Out of range index");if(u<=s)return this;let v;if(s>>>=0,u=void 0===u?this.length:u>>>0,i||(i=0),"number"==typeof i)for(v=s;v<u;++v)this[v]=i;else{const _=Buffer.isBuffer(i)?i:Buffer.from(i,m),j=_.length;if(0===j)throw new TypeError('The value "'+i+'" is invalid for argument "value"');for(v=0;v<u-s;++v)this[v+s]=_[v%j]}return this};const $={};function E(i,s,u){$[i]=class NodeError extends u{constructor(){super(),Object.defineProperty(this,"message",{value:s.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${i}]`,this.stack,delete this.name}get code(){return i}set code(i){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:i,writable:!0})}toString(){return`${this.name} [${i}]: ${this.message}`}}}function addNumericalSeparator(i){let s="",u=i.length;const m="-"===i[0]?1:0;for(;u>=m+4;u-=3)s=`_${i.slice(u-3,u)}${s}`;return`${i.slice(0,u)}${s}`}function checkIntBI(i,s,u,m,v,_){if(i>u||i<s){const m="bigint"==typeof s?"n":"";let v;throw v=_>3?0===s||s===BigInt(0)?`>= 0${m} and < 2${m} ** ${8*(_+1)}${m}`:`>= -(2${m} ** ${8*(_+1)-1}${m}) and < 2 ** ${8*(_+1)-1}${m}`:`>= ${s}${m} and <= ${u}${m}`,new $.ERR_OUT_OF_RANGE("value",v,i)}!function checkBounds(i,s,u){validateNumber(s,"offset"),void 0!==i[s]&&void 0!==i[s+u]||boundsError(s,i.length-(u+1))}(m,v,_)}function validateNumber(i,s){if("number"!=typeof i)throw new $.ERR_INVALID_ARG_TYPE(s,"number",i)}function boundsError(i,s,u){if(Math.floor(i)!==i)throw validateNumber(i,u),new $.ERR_OUT_OF_RANGE(u||"offset","an integer",i);if(s<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(u||"offset",`>= ${u?1:0} and <= ${s}`,i)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(i){return i?`${i} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(i,s){return`The "${i}" argument must be of type number. Received type ${typeof s}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(i,s,u){let m=`The value of "${i}" is out of range.`,v=u;return Number.isInteger(u)&&Math.abs(u)>2**32?v=addNumericalSeparator(String(u)):"bigint"==typeof u&&(v=String(u),(u>BigInt(2)**BigInt(32)||u<-(BigInt(2)**BigInt(32)))&&(v=addNumericalSeparator(v)),v+="n"),m+=` It must be ${s}. Received ${v}`,m}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(i,s){let u;s=s||1/0;const m=i.length;let v=null;const _=[];for(let j=0;j<m;++j){if(u=i.charCodeAt(j),u>55295&&u<57344){if(!v){if(u>56319){(s-=3)>-1&&_.push(239,191,189);continue}if(j+1===m){(s-=3)>-1&&_.push(239,191,189);continue}v=u;continue}if(u<56320){(s-=3)>-1&&_.push(239,191,189),v=u;continue}u=65536+(v-55296<<10|u-56320)}else v&&(s-=3)>-1&&_.push(239,191,189);if(v=null,u<128){if((s-=1)<0)break;_.push(u)}else if(u<2048){if((s-=2)<0)break;_.push(u>>6|192,63&u|128)}else if(u<65536){if((s-=3)<0)break;_.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((s-=4)<0)break;_.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return _}function base64ToBytes(i){return m.toByteArray(function base64clean(i){if((i=(i=i.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;i.length%4!=0;)i+="=";return i}(i))}function blitBuffer(i,s,u,m){let v;for(v=0;v<m&&!(v+u>=s.length||v>=i.length);++v)s[v+u]=i[v];return v}function isInstance(i,s){return i instanceof s||null!=i&&null!=i.constructor&&null!=i.constructor.name&&i.constructor.name===s.name}function numberIsNaN(i){return i!=i}const X=function(){const i="0123456789abcdef",s=new Array(256);for(let u=0;u<16;++u){const m=16*u;for(let v=0;v<16;++v)s[m+v]=i[u]+i[v]}return s}();function defineBigIntMethod(i){return"undefined"==typeof BigInt?BufferBigIntNotDefined:i}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},21924:(i,s,u)=>{"use strict";var m=u(40210),v=u(55559),_=v(m("String.prototype.indexOf"));i.exports=function callBoundIntrinsic(i,s){var u=m(i,!!s);return"function"==typeof u&&_(i,".prototype.")>-1?v(u):u}},55559:(i,s,u)=>{"use strict";var m=u(58612),v=u(40210),_=v("%Function.prototype.apply%"),j=v("%Function.prototype.call%"),M=v("%Reflect.apply%",!0)||m.call(j,_),$=v("%Object.getOwnPropertyDescriptor%",!0),W=v("%Object.defineProperty%",!0),X=v("%Math.max%");if(W)try{W({},"a",{value:1})}catch(i){W=null}i.exports=function callBind(i){var s=M(m,j,arguments);$&&W&&($(s,"length").configurable&&W(s,"length",{value:1+X(0,i.length-(arguments.length-1))}));return s};var Y=function applyBind(){return M(m,_,arguments)};W?W(i.exports,"apply",{value:Y}):i.exports.apply=Y},94184:(i,s)=>{var u;!function(){"use strict";var m={}.hasOwnProperty;function classNames(){for(var i=[],s=0;s<arguments.length;s++){var u=arguments[s];if(u){var v=typeof u;if("string"===v||"number"===v)i.push(u);else if(Array.isArray(u)){if(u.length){var _=classNames.apply(null,u);_&&i.push(_)}}else if("object"===v){if(u.toString!==Object.prototype.toString&&!u.toString.toString().includes("[native code]")){i.push(u.toString());continue}for(var j in u)m.call(u,j)&&u[j]&&i.push(j)}}}return i.join(" ")}i.exports?(classNames.default=classNames,i.exports=classNames):void 0===(u=function(){return classNames}.apply(s,[]))||(i.exports=u)}()},76489:(i,s)=>{"use strict";s.parse=function parse(i,s){if("string"!=typeof i)throw new TypeError("argument str must be a string");var u={},m=(s||{}).decode||decode,v=0;for(;v<i.length;){var _=i.indexOf("=",v);if(-1===_)break;var j=i.indexOf(";",v);if(-1===j)j=i.length;else if(j<_){v=i.lastIndexOf(";",_-1)+1;continue}var M=i.slice(v,_).trim();if(void 0===u[M]){var $=i.slice(_+1,j).trim();34===$.charCodeAt(0)&&($=$.slice(1,-1)),u[M]=tryDecode($,m)}v=j+1}return u},s.serialize=function serialize(i,s,v){var _=v||{},j=_.encode||encode;if("function"!=typeof j)throw new TypeError("option encode is invalid");if(!m.test(i))throw new TypeError("argument name is invalid");var M=j(s);if(M&&!m.test(M))throw new TypeError("argument val is invalid");var $=i+"="+M;if(null!=_.maxAge){var W=_.maxAge-0;if(isNaN(W)||!isFinite(W))throw new TypeError("option maxAge is invalid");$+="; Max-Age="+Math.floor(W)}if(_.domain){if(!m.test(_.domain))throw new TypeError("option domain is invalid");$+="; Domain="+_.domain}if(_.path){if(!m.test(_.path))throw new TypeError("option path is invalid");$+="; Path="+_.path}if(_.expires){var X=_.expires;if(!function isDate(i){return"[object Date]"===u.call(i)||i instanceof Date}(X)||isNaN(X.valueOf()))throw new TypeError("option expires is invalid");$+="; Expires="+X.toUTCString()}_.httpOnly&&($+="; HttpOnly");_.secure&&($+="; Secure");if(_.priority){switch("string"==typeof _.priority?_.priority.toLowerCase():_.priority){case"low":$+="; Priority=Low";break;case"medium":$+="; Priority=Medium";break;case"high":$+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(_.sameSite){switch("string"==typeof _.sameSite?_.sameSite.toLowerCase():_.sameSite){case!0:$+="; SameSite=Strict";break;case"lax":$+="; SameSite=Lax";break;case"strict":$+="; SameSite=Strict";break;case"none":$+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return $};var u=Object.prototype.toString,m=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function decode(i){return-1!==i.indexOf("%")?decodeURIComponent(i):i}function encode(i){return encodeURIComponent(i)}function tryDecode(i,s){try{return s(i)}catch(s){return i}}},20640:(i,s,u)=>{"use strict";var m=u(11742),v={"text/plain":"Text","text/html":"Url",default:"Text"};i.exports=function copy(i,s){var u,_,j,M,$,W,X=!1;s||(s={}),u=s.debug||!1;try{if(j=m(),M=document.createRange(),$=document.getSelection(),(W=document.createElement("span")).textContent=i,W.ariaHidden="true",W.style.all="unset",W.style.position="fixed",W.style.top=0,W.style.clip="rect(0, 0, 0, 0)",W.style.whiteSpace="pre",W.style.webkitUserSelect="text",W.style.MozUserSelect="text",W.style.msUserSelect="text",W.style.userSelect="text",W.addEventListener("copy",(function(m){if(m.stopPropagation(),s.format)if(m.preventDefault(),void 0===m.clipboardData){u&&console.warn("unable to use e.clipboardData"),u&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=v[s.format]||v.default;window.clipboardData.setData(_,i)}else m.clipboardData.clearData(),m.clipboardData.setData(s.format,i);s.onCopy&&(m.preventDefault(),s.onCopy(m.clipboardData))})),document.body.appendChild(W),M.selectNodeContents(W),$.addRange(M),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");X=!0}catch(m){u&&console.error("unable to copy using execCommand: ",m),u&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(s.format||"text",i),s.onCopy&&s.onCopy(window.clipboardData),X=!0}catch(m){u&&console.error("unable to copy using clipboardData: ",m),u&&console.error("falling back to prompt"),_=function format(i){var s=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return i.replace(/#{\s*key\s*}/g,s)}("message"in s?s.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,i)}}finally{$&&("function"==typeof $.removeRange?$.removeRange(M):$.removeAllRanges()),W&&document.body.removeChild(W),j()}return X}},44101:(i,s,u)=>{var m=u(18957);i.exports=m},90093:(i,s,u)=>{var m=u(28196);i.exports=m},65362:(i,s,u)=>{var m=u(63383);i.exports=m},50415:(i,s,u)=>{u(61181),u(47627),u(24415),u(66274),u(77971);var m=u(54058);i.exports=m.AggregateError},27700:(i,s,u)=>{u(73381);var m=u(35703);i.exports=m("Function").bind},16246:(i,s,u)=>{var m=u(7046),v=u(27700),_=Function.prototype;i.exports=function(i){var s=i.bind;return i===_||m(_,i)&&s===_.bind?v:s}},45999:(i,s,u)=>{u(49221);var m=u(54058);i.exports=m.Object.assign},16121:(i,s,u)=>{i.exports=u(38644)},14122:(i,s,u)=>{i.exports=u(89097)},60269:(i,s,u)=>{i.exports=u(76936)},38644:(i,s,u)=>{u(89731);var m=u(44101);i.exports=m},89097:(i,s,u)=>{var m=u(90093);i.exports=m},76936:(i,s,u)=>{var m=u(65362);i.exports=m},24883:(i,s,u)=>{var m=u(57475),v=u(69826),_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not a function")}},11851:(i,s,u)=>{var m=u(57475),v=String,_=TypeError;i.exports=function(i){if("object"==typeof i||m(i))return i;throw _("Can't set "+v(i)+" as a prototype")}},18479:i=>{i.exports=function(){}},96059:(i,s,u)=>{var m=u(10941),v=String,_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not an object")}},31692:(i,s,u)=>{var m=u(74529),v=u(59413),_=u(10623),createMethod=function(i){return function(s,u,j){var M,$=m(s),W=_($),X=v(j,W);if(i&&u!=u){for(;W>X;)if((M=$[X++])!=M)return!0}else for(;W>X;X++)if((i||X in $)&&$[X]===u)return i||X||0;return!i&&-1}};i.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},93765:(i,s,u)=>{var m=u(95329);i.exports=m([].slice)},82532:(i,s,u)=>{var m=u(95329),v=m({}.toString),_=m("".slice);i.exports=function(i){return _(v(i),8,-1)}},9697:(i,s,u)=>{var m=u(22885),v=u(57475),_=u(82532),j=u(99813)("toStringTag"),M=Object,$="Arguments"==_(function(){return arguments}());i.exports=m?_:function(i){var s,u,m;return void 0===i?"Undefined":null===i?"Null":"string"==typeof(u=function(i,s){try{return i[s]}catch(i){}}(s=M(i),j))?u:$?_(s):"Object"==(m=_(s))&&v(s.callee)?"Arguments":m}},23489:(i,s,u)=>{var m=u(90953),v=u(31136),_=u(49677),j=u(65988);i.exports=function(i,s,u){for(var M=v(s),$=j.f,W=_.f,X=0;X<M.length;X++){var Y=M[X];m(i,Y)||u&&m(u,Y)||$(i,Y,W(s,Y))}}},91310:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},23538:i=>{i.exports=function(i,s){return{value:i,done:s}}},32029:(i,s,u)=>{var m=u(55746),v=u(65988),_=u(31887);i.exports=m?function(i,s,u){return v.f(i,s,_(1,u))}:function(i,s,u){return i[s]=u,i}},31887:i=>{i.exports=function(i,s){return{enumerable:!(1&i),configurable:!(2&i),writable:!(4&i),value:s}}},95929:(i,s,u)=>{var m=u(32029);i.exports=function(i,s,u,v){return v&&v.enumerable?i[s]=u:m(i,s,u),i}},75609:(i,s,u)=>{var m=u(21899),v=Object.defineProperty;i.exports=function(i,s){try{v(m,i,{value:s,configurable:!0,writable:!0})}catch(u){m[i]=s}return s}},55746:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},76616:i=>{var s="object"==typeof document&&document.all,u=void 0===s&&void 0!==s;i.exports={all:s,IS_HTMLDDA:u}},61333:(i,s,u)=>{var m=u(21899),v=u(10941),_=m.document,j=v(_)&&v(_.createElement);i.exports=function(i){return j?_.createElement(i):{}}},63281:i=>{i.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},2861:i=>{i.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},53385:(i,s,u)=>{var m,v,_=u(21899),j=u(2861),M=_.process,$=_.Deno,W=M&&M.versions||$&&$.version,X=W&&W.v8;X&&(v=(m=X.split("."))[0]>0&&m[0]<4?1:+(m[0]+m[1])),!v&&j&&(!(m=j.match(/Edge\/(\d+)/))||m[1]>=74)&&(m=j.match(/Chrome\/(\d+)/))&&(v=+m[1]),i.exports=v},35703:(i,s,u)=>{var m=u(54058);i.exports=function(i){return m[i+"Prototype"]}},56759:i=>{i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},53995:(i,s,u)=>{var m=u(95329),v=Error,_=m("".replace),j=String(v("zxcasd").stack),M=/\n\s*at [^:]*:[^\n]*/,$=M.test(j);i.exports=function(i,s){if($&&"string"==typeof i&&!v.prepareStackTrace)for(;s--;)i=_(i,M,"");return i}},79585:(i,s,u)=>{var m=u(32029),v=u(53995),_=u(18780),j=Error.captureStackTrace;i.exports=function(i,s,u,M){_&&(j?j(i,s):m(i,"stack",v(u,M)))}},18780:(i,s,u)=>{var m=u(95981),v=u(31887);i.exports=!m((function(){var i=Error("a");return!("stack"in i)||(Object.defineProperty(i,"stack",v(1,7)),7!==i.stack)}))},76887:(i,s,u)=>{"use strict";var m=u(21899),v=u(79730),_=u(97484),j=u(57475),M=u(49677).f,$=u(37252),W=u(54058),X=u(86843),Y=u(32029),Z=u(90953),wrapConstructor=function(i){var Wrapper=function(s,u,m){if(this instanceof Wrapper){switch(arguments.length){case 0:return new i;case 1:return new i(s);case 2:return new i(s,u)}return new i(s,u,m)}return v(i,this,arguments)};return Wrapper.prototype=i.prototype,Wrapper};i.exports=function(i,s){var u,v,ee,ie,ae,le,ce,pe,de,fe=i.target,ye=i.global,be=i.stat,_e=i.proto,we=ye?m:be?m[fe]:(m[fe]||{}).prototype,Se=ye?W:W[fe]||Y(W,fe,{})[fe],xe=Se.prototype;for(ie in s)v=!(u=$(ye?ie:fe+(be?".":"#")+ie,i.forced))&&we&&Z(we,ie),le=Se[ie],v&&(ce=i.dontCallGetSet?(de=M(we,ie))&&de.value:we[ie]),ae=v&&ce?ce:s[ie],v&&typeof le==typeof ae||(pe=i.bind&&v?X(ae,m):i.wrap&&v?wrapConstructor(ae):_e&&j(ae)?_(ae):ae,(i.sham||ae&&ae.sham||le&&le.sham)&&Y(pe,"sham",!0),Y(Se,ie,pe),_e&&(Z(W,ee=fe+"Prototype")||Y(W,ee,{}),Y(W[ee],ie,ae),i.real&&xe&&(u||!xe[ie])&&Y(xe,ie,ae)))}},95981:i=>{i.exports=function(i){try{return!!i()}catch(i){return!0}}},79730:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.apply,j=v.call;i.exports="object"==typeof Reflect&&Reflect.apply||(m?j.bind(_):function(){return j.apply(_,arguments)})},86843:(i,s,u)=>{var m=u(97484),v=u(24883),_=u(18285),j=m(m.bind);i.exports=function(i,s){return v(i),void 0===s?i:_?j(i,s):function(){return i.apply(s,arguments)}}},18285:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){var i=function(){}.bind();return"function"!=typeof i||i.hasOwnProperty("prototype")}))},98308:(i,s,u)=>{"use strict";var m=u(95329),v=u(24883),_=u(10941),j=u(90953),M=u(93765),$=u(18285),W=Function,X=m([].concat),Y=m([].join),Z={};i.exports=$?W.bind:function bind(i){var s=v(this),u=s.prototype,m=M(arguments,1),$=function bound(){var u=X(m,M(arguments));return this instanceof $?function(i,s,u){if(!j(Z,s)){for(var m=[],v=0;v<s;v++)m[v]="a["+v+"]";Z[s]=W("C,a","return new C("+Y(m,",")+")")}return Z[s](i,u)}(s,u.length,u):s.apply(i,u)};return _(u)&&($.prototype=u),$}},78834:(i,s,u)=>{var m=u(18285),v=Function.prototype.call;i.exports=m?v.bind(v):function(){return v.apply(v,arguments)}},79417:(i,s,u)=>{var m=u(55746),v=u(90953),_=Function.prototype,j=m&&Object.getOwnPropertyDescriptor,M=v(_,"name"),$=M&&"something"===function something(){}.name,W=M&&(!m||m&&j(_,"name").configurable);i.exports={EXISTS:M,PROPER:$,CONFIGURABLE:W}},45526:(i,s,u)=>{var m=u(95329),v=u(24883);i.exports=function(i,s,u){try{return m(v(Object.getOwnPropertyDescriptor(i,s)[u]))}catch(i){}}},97484:(i,s,u)=>{var m=u(82532),v=u(95329);i.exports=function(i){if("Function"===m(i))return v(i)}},95329:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.call,j=m&&v.bind.bind(_,_);i.exports=m?j:function(i){return function(){return _.apply(i,arguments)}}},626:(i,s,u)=>{var m=u(54058),v=u(21899),_=u(57475),aFunction=function(i){return _(i)?i:void 0};i.exports=function(i,s){return arguments.length<2?aFunction(m[i])||aFunction(v[i]):m[i]&&m[i][s]||v[i]&&v[i][s]}},22902:(i,s,u)=>{var m=u(9697),v=u(14229),_=u(82119),j=u(12077),M=u(99813)("iterator");i.exports=function(i){if(!_(i))return v(i,M)||v(i,"@@iterator")||j[m(i)]}},53476:(i,s,u)=>{var m=u(78834),v=u(24883),_=u(96059),j=u(69826),M=u(22902),$=TypeError;i.exports=function(i,s){var u=arguments.length<2?M(i):s;if(v(u))return _(m(u,i));throw $(j(i)+" is not iterable")}},14229:(i,s,u)=>{var m=u(24883),v=u(82119);i.exports=function(i,s){var u=i[s];return v(u)?void 0:m(u)}},21899:function(i,s,u){var check=function(i){return i&&i.Math==Math&&i};i.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof u.g&&u.g)||function(){return this}()||this||Function("return this")()},90953:(i,s,u)=>{var m=u(95329),v=u(89678),_=m({}.hasOwnProperty);i.exports=Object.hasOwn||function hasOwn(i,s){return _(v(i),s)}},27748:i=>{i.exports={}},15463:(i,s,u)=>{var m=u(626);i.exports=m("document","documentElement")},2840:(i,s,u)=>{var m=u(55746),v=u(95981),_=u(61333);i.exports=!m&&!v((function(){return 7!=Object.defineProperty(_("div"),"a",{get:function(){return 7}}).a}))},37026:(i,s,u)=>{var m=u(95329),v=u(95981),_=u(82532),j=Object,M=m("".split);i.exports=v((function(){return!j("z").propertyIsEnumerable(0)}))?function(i){return"String"==_(i)?M(i,""):j(i)}:j},70926:(i,s,u)=>{var m=u(57475),v=u(10941),_=u(88929);i.exports=function(i,s,u){var j,M;return _&&m(j=s.constructor)&&j!==u&&v(M=j.prototype)&&M!==u.prototype&&_(i,M),i}},53794:(i,s,u)=>{var m=u(10941),v=u(32029);i.exports=function(i,s){m(s)&&"cause"in s&&v(i,"cause",s.cause)}},45402:(i,s,u)=>{var m,v,_,j=u(47093),M=u(21899),$=u(10941),W=u(32029),X=u(90953),Y=u(63030),Z=u(44262),ee=u(27748),ie="Object already initialized",ae=M.TypeError,le=M.WeakMap;if(j||Y.state){var ce=Y.state||(Y.state=new le);ce.get=ce.get,ce.has=ce.has,ce.set=ce.set,m=function(i,s){if(ce.has(i))throw ae(ie);return s.facade=i,ce.set(i,s),s},v=function(i){return ce.get(i)||{}},_=function(i){return ce.has(i)}}else{var pe=Z("state");ee[pe]=!0,m=function(i,s){if(X(i,pe))throw ae(ie);return s.facade=i,W(i,pe,s),s},v=function(i){return X(i,pe)?i[pe]:{}},_=function(i){return X(i,pe)}}i.exports={set:m,get:v,has:_,enforce:function(i){return _(i)?v(i):m(i,{})},getterFor:function(i){return function(s){var u;if(!$(s)||(u=v(s)).type!==i)throw ae("Incompatible receiver, "+i+" required");return u}}}},6782:(i,s,u)=>{var m=u(99813),v=u(12077),_=m("iterator"),j=Array.prototype;i.exports=function(i){return void 0!==i&&(v.Array===i||j[_]===i)}},57475:(i,s,u)=>{var m=u(76616),v=m.all;i.exports=m.IS_HTMLDDA?function(i){return"function"==typeof i||i===v}:function(i){return"function"==typeof i}},37252:(i,s,u)=>{var m=u(95981),v=u(57475),_=/#|\.prototype\./,isForced=function(i,s){var u=M[j(i)];return u==W||u!=$&&(v(s)?m(s):!!s)},j=isForced.normalize=function(i){return String(i).replace(_,".").toLowerCase()},M=isForced.data={},$=isForced.NATIVE="N",W=isForced.POLYFILL="P";i.exports=isForced},82119:i=>{i.exports=function(i){return null==i}},10941:(i,s,u)=>{var m=u(57475),v=u(76616),_=v.all;i.exports=v.IS_HTMLDDA?function(i){return"object"==typeof i?null!==i:m(i)||i===_}:function(i){return"object"==typeof i?null!==i:m(i)}},82529:i=>{i.exports=!0},56664:(i,s,u)=>{var m=u(626),v=u(57475),_=u(7046),j=u(32302),M=Object;i.exports=j?function(i){return"symbol"==typeof i}:function(i){var s=m("Symbol");return v(s)&&_(s.prototype,M(i))}},93091:(i,s,u)=>{var m=u(86843),v=u(78834),_=u(96059),j=u(69826),M=u(6782),$=u(10623),W=u(7046),X=u(53476),Y=u(22902),Z=u(7609),ee=TypeError,Result=function(i,s){this.stopped=i,this.result=s},ie=Result.prototype;i.exports=function(i,s,u){var ae,le,ce,pe,de,fe,ye,be=u&&u.that,_e=!(!u||!u.AS_ENTRIES),we=!(!u||!u.IS_RECORD),Se=!(!u||!u.IS_ITERATOR),xe=!(!u||!u.INTERRUPTED),Ie=m(s,be),stop=function(i){return ae&&Z(ae,"normal",i),new Result(!0,i)},callFn=function(i){return _e?(_(i),xe?Ie(i[0],i[1],stop):Ie(i[0],i[1])):xe?Ie(i,stop):Ie(i)};if(we)ae=i.iterator;else if(Se)ae=i;else{if(!(le=Y(i)))throw ee(j(i)+" is not iterable");if(M(le)){for(ce=0,pe=$(i);pe>ce;ce++)if((de=callFn(i[ce]))&&W(ie,de))return de;return new Result(!1)}ae=X(i,le)}for(fe=we?i.next:ae.next;!(ye=v(fe,ae)).done;){try{de=callFn(ye.value)}catch(i){Z(ae,"throw",i)}if("object"==typeof de&&de&&W(ie,de))return de}return new Result(!1)}},7609:(i,s,u)=>{var m=u(78834),v=u(96059),_=u(14229);i.exports=function(i,s,u){var j,M;v(i);try{if(!(j=_(i,"return"))){if("throw"===s)throw u;return u}j=m(j,i)}catch(i){M=!0,j=i}if("throw"===s)throw u;if(M)throw j;return v(j),u}},53847:(i,s,u)=>{"use strict";var m=u(35143).IteratorPrototype,v=u(29290),_=u(31887),j=u(90904),M=u(12077),returnThis=function(){return this};i.exports=function(i,s,u,$){var W=s+" Iterator";return i.prototype=v(m,{next:_(+!$,u)}),j(i,W,!1,!0),M[W]=returnThis,i}},75105:(i,s,u)=>{"use strict";var m=u(76887),v=u(78834),_=u(82529),j=u(79417),M=u(57475),$=u(53847),W=u(249),X=u(88929),Y=u(90904),Z=u(32029),ee=u(95929),ie=u(99813),ae=u(12077),le=u(35143),ce=j.PROPER,pe=j.CONFIGURABLE,de=le.IteratorPrototype,fe=le.BUGGY_SAFARI_ITERATORS,ye=ie("iterator"),be="keys",_e="values",we="entries",returnThis=function(){return this};i.exports=function(i,s,u,j,ie,le,Se){$(u,s,j);var xe,Ie,Pe,getIterationMethod=function(i){if(i===ie&&Ve)return Ve;if(!fe&&i in qe)return qe[i];switch(i){case be:return function keys(){return new u(this,i)};case _e:return function values(){return new u(this,i)};case we:return function entries(){return new u(this,i)}}return function(){return new u(this)}},Te=s+" Iterator",Re=!1,qe=i.prototype,ze=qe[ye]||qe["@@iterator"]||ie&&qe[ie],Ve=!fe&&ze||getIterationMethod(ie),We="Array"==s&&qe.entries||ze;if(We&&(xe=W(We.call(new i)))!==Object.prototype&&xe.next&&(_||W(xe)===de||(X?X(xe,de):M(xe[ye])||ee(xe,ye,returnThis)),Y(xe,Te,!0,!0),_&&(ae[Te]=returnThis)),ce&&ie==_e&&ze&&ze.name!==_e&&(!_&&pe?Z(qe,"name",_e):(Re=!0,Ve=function values(){return v(ze,this)})),ie)if(Ie={values:getIterationMethod(_e),keys:le?Ve:getIterationMethod(be),entries:getIterationMethod(we)},Se)for(Pe in Ie)(fe||Re||!(Pe in qe))&&ee(qe,Pe,Ie[Pe]);else m({target:s,proto:!0,forced:fe||Re},Ie);return _&&!Se||qe[ye]===Ve||ee(qe,ye,Ve,{name:ie}),ae[s]=Ve,Ie}},35143:(i,s,u)=>{"use strict";var m,v,_,j=u(95981),M=u(57475),$=u(10941),W=u(29290),X=u(249),Y=u(95929),Z=u(99813),ee=u(82529),ie=Z("iterator"),ae=!1;[].keys&&("next"in(_=[].keys())?(v=X(X(_)))!==Object.prototype&&(m=v):ae=!0),!$(m)||j((function(){var i={};return m[ie].call(i)!==i}))?m={}:ee&&(m=W(m)),M(m[ie])||Y(m,ie,(function(){return this})),i.exports={IteratorPrototype:m,BUGGY_SAFARI_ITERATORS:ae}},12077:i=>{i.exports={}},10623:(i,s,u)=>{var m=u(43057);i.exports=function(i){return m(i.length)}},35331:i=>{var s=Math.ceil,u=Math.floor;i.exports=Math.trunc||function trunc(i){var m=+i;return(m>0?u:s)(m)}},14649:(i,s,u)=>{var m=u(85803);i.exports=function(i,s){return void 0===i?arguments.length<2?"":s:m(i)}},24420:(i,s,u)=>{"use strict";var m=u(55746),v=u(95329),_=u(78834),j=u(95981),M=u(14771),$=u(87857),W=u(36760),X=u(89678),Y=u(37026),Z=Object.assign,ee=Object.defineProperty,ie=v([].concat);i.exports=!Z||j((function(){if(m&&1!==Z({b:1},Z(ee({},"a",{enumerable:!0,get:function(){ee(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var i={},s={},u=Symbol(),v="abcdefghijklmnopqrst";return i[u]=7,v.split("").forEach((function(i){s[i]=i})),7!=Z({},i)[u]||M(Z({},s)).join("")!=v}))?function assign(i,s){for(var u=X(i),v=arguments.length,j=1,Z=$.f,ee=W.f;v>j;)for(var ae,le=Y(arguments[j++]),ce=Z?ie(M(le),Z(le)):M(le),pe=ce.length,de=0;pe>de;)ae=ce[de++],m&&!_(ee,le,ae)||(u[ae]=le[ae]);return u}:Z},29290:(i,s,u)=>{var m,v=u(96059),_=u(59938),j=u(56759),M=u(27748),$=u(15463),W=u(61333),X=u(44262),Y="prototype",Z="script",ee=X("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(i){return"<"+Z+">"+i+"</"+Z+">"},NullProtoObjectViaActiveX=function(i){i.write(scriptTag("")),i.close();var s=i.parentWindow.Object;return i=null,s},NullProtoObject=function(){try{m=new ActiveXObject("htmlfile")}catch(i){}var i,s,u;NullProtoObject="undefined"!=typeof document?document.domain&&m?NullProtoObjectViaActiveX(m):(s=W("iframe"),u="java"+Z+":",s.style.display="none",$.appendChild(s),s.src=String(u),(i=s.contentWindow.document).open(),i.write(scriptTag("document.F=Object")),i.close(),i.F):NullProtoObjectViaActiveX(m);for(var v=j.length;v--;)delete NullProtoObject[Y][j[v]];return NullProtoObject()};M[ee]=!0,i.exports=Object.create||function create(i,s){var u;return null!==i?(EmptyConstructor[Y]=v(i),u=new EmptyConstructor,EmptyConstructor[Y]=null,u[ee]=i):u=NullProtoObject(),void 0===s?u:_.f(u,s)}},59938:(i,s,u)=>{var m=u(55746),v=u(83937),_=u(65988),j=u(96059),M=u(74529),$=u(14771);s.f=m&&!v?Object.defineProperties:function defineProperties(i,s){j(i);for(var u,m=M(s),v=$(s),W=v.length,X=0;W>X;)_.f(i,u=v[X++],m[u]);return i}},65988:(i,s,u)=>{var m=u(55746),v=u(2840),_=u(83937),j=u(96059),M=u(83894),$=TypeError,W=Object.defineProperty,X=Object.getOwnPropertyDescriptor,Y="enumerable",Z="configurable",ee="writable";s.f=m?_?function defineProperty(i,s,u){if(j(i),s=M(s),j(u),"function"==typeof i&&"prototype"===s&&"value"in u&&ee in u&&!u[ee]){var m=X(i,s);m&&m[ee]&&(i[s]=u.value,u={configurable:Z in u?u[Z]:m[Z],enumerable:Y in u?u[Y]:m[Y],writable:!1})}return W(i,s,u)}:W:function defineProperty(i,s,u){if(j(i),s=M(s),j(u),v)try{return W(i,s,u)}catch(i){}if("get"in u||"set"in u)throw $("Accessors not supported");return"value"in u&&(i[s]=u.value),i}},49677:(i,s,u)=>{var m=u(55746),v=u(78834),_=u(36760),j=u(31887),M=u(74529),$=u(83894),W=u(90953),X=u(2840),Y=Object.getOwnPropertyDescriptor;s.f=m?Y:function getOwnPropertyDescriptor(i,s){if(i=M(i),s=$(s),X)try{return Y(i,s)}catch(i){}if(W(i,s))return j(!v(_.f,i,s),i[s])}},10946:(i,s,u)=>{var m=u(55629),v=u(56759).concat("length","prototype");s.f=Object.getOwnPropertyNames||function getOwnPropertyNames(i){return m(i,v)}},87857:(i,s)=>{s.f=Object.getOwnPropertySymbols},249:(i,s,u)=>{var m=u(90953),v=u(57475),_=u(89678),j=u(44262),M=u(91310),$=j("IE_PROTO"),W=Object,X=W.prototype;i.exports=M?W.getPrototypeOf:function(i){var s=_(i);if(m(s,$))return s[$];var u=s.constructor;return v(u)&&s instanceof u?u.prototype:s instanceof W?X:null}},7046:(i,s,u)=>{var m=u(95329);i.exports=m({}.isPrototypeOf)},55629:(i,s,u)=>{var m=u(95329),v=u(90953),_=u(74529),j=u(31692).indexOf,M=u(27748),$=m([].push);i.exports=function(i,s){var u,m=_(i),W=0,X=[];for(u in m)!v(M,u)&&v(m,u)&&$(X,u);for(;s.length>W;)v(m,u=s[W++])&&(~j(X,u)||$(X,u));return X}},14771:(i,s,u)=>{var m=u(55629),v=u(56759);i.exports=Object.keys||function keys(i){return m(i,v)}},36760:(i,s)=>{"use strict";var u={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,v=m&&!u.call({1:2},1);s.f=v?function propertyIsEnumerable(i){var s=m(this,i);return!!s&&s.enumerable}:u},88929:(i,s,u)=>{var m=u(45526),v=u(96059),_=u(11851);i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i,s=!1,u={};try{(i=m(Object.prototype,"__proto__","set"))(u,[]),s=u instanceof Array}catch(i){}return function setPrototypeOf(u,m){return v(u),_(m),s?i(u,m):u.__proto__=m,u}}():void 0)},95623:(i,s,u)=>{"use strict";var m=u(22885),v=u(9697);i.exports=m?{}.toString:function toString(){return"[object "+v(this)+"]"}},39811:(i,s,u)=>{var m=u(78834),v=u(57475),_=u(10941),j=TypeError;i.exports=function(i,s){var u,M;if("string"===s&&v(u=i.toString)&&!_(M=m(u,i)))return M;if(v(u=i.valueOf)&&!_(M=m(u,i)))return M;if("string"!==s&&v(u=i.toString)&&!_(M=m(u,i)))return M;throw j("Can't convert object to primitive value")}},31136:(i,s,u)=>{var m=u(626),v=u(95329),_=u(10946),j=u(87857),M=u(96059),$=v([].concat);i.exports=m("Reflect","ownKeys")||function ownKeys(i){var s=_.f(M(i)),u=j.f;return u?$(s,u(i)):s}},54058:i=>{i.exports={}},9056:(i,s,u)=>{var m=u(65988).f;i.exports=function(i,s,u){u in i||m(i,u,{configurable:!0,get:function(){return s[u]},set:function(i){s[u]=i}})}},48219:(i,s,u)=>{var m=u(82119),v=TypeError;i.exports=function(i){if(m(i))throw v("Can't call method on "+i);return i}},90904:(i,s,u)=>{var m=u(22885),v=u(65988).f,_=u(32029),j=u(90953),M=u(95623),$=u(99813)("toStringTag");i.exports=function(i,s,u,W){if(i){var X=u?i:i.prototype;j(X,$)||v(X,$,{configurable:!0,value:s}),W&&!m&&_(X,"toString",M)}}},44262:(i,s,u)=>{var m=u(68726),v=u(99418),_=m("keys");i.exports=function(i){return _[i]||(_[i]=v(i))}},63030:(i,s,u)=>{var m=u(21899),v=u(75609),_="__core-js_shared__",j=m[_]||v(_,{});i.exports=j},68726:(i,s,u)=>{var m=u(82529),v=u(63030);(i.exports=function(i,s){return v[i]||(v[i]=void 0!==s?s:{})})("versions",[]).push({version:"3.31.1",mode:m?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},64620:(i,s,u)=>{var m=u(95329),v=u(62435),_=u(85803),j=u(48219),M=m("".charAt),$=m("".charCodeAt),W=m("".slice),createMethod=function(i){return function(s,u){var m,X,Y=_(j(s)),Z=v(u),ee=Y.length;return Z<0||Z>=ee?i?"":void 0:(m=$(Y,Z))<55296||m>56319||Z+1===ee||(X=$(Y,Z+1))<56320||X>57343?i?M(Y,Z):m:i?W(Y,Z,Z+2):X-56320+(m-55296<<10)+65536}};i.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},63405:(i,s,u)=>{var m=u(53385),v=u(95981),_=u(21899).String;i.exports=!!Object.getOwnPropertySymbols&&!v((function(){var i=Symbol();return!_(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&m&&m<41}))},59413:(i,s,u)=>{var m=u(62435),v=Math.max,_=Math.min;i.exports=function(i,s){var u=m(i);return u<0?v(u+s,0):_(u,s)}},74529:(i,s,u)=>{var m=u(37026),v=u(48219);i.exports=function(i){return m(v(i))}},62435:(i,s,u)=>{var m=u(35331);i.exports=function(i){var s=+i;return s!=s||0===s?0:m(s)}},43057:(i,s,u)=>{var m=u(62435),v=Math.min;i.exports=function(i){return i>0?v(m(i),9007199254740991):0}},89678:(i,s,u)=>{var m=u(48219),v=Object;i.exports=function(i){return v(m(i))}},46935:(i,s,u)=>{var m=u(78834),v=u(10941),_=u(56664),j=u(14229),M=u(39811),$=u(99813),W=TypeError,X=$("toPrimitive");i.exports=function(i,s){if(!v(i)||_(i))return i;var u,$=j(i,X);if($){if(void 0===s&&(s="default"),u=m($,i,s),!v(u)||_(u))return u;throw W("Can't convert object to primitive value")}return void 0===s&&(s="number"),M(i,s)}},83894:(i,s,u)=>{var m=u(46935),v=u(56664);i.exports=function(i){var s=m(i,"string");return v(s)?s:s+""}},22885:(i,s,u)=>{var m={};m[u(99813)("toStringTag")]="z",i.exports="[object z]"===String(m)},85803:(i,s,u)=>{var m=u(9697),v=String;i.exports=function(i){if("Symbol"===m(i))throw TypeError("Cannot convert a Symbol value to a string");return v(i)}},69826:i=>{var s=String;i.exports=function(i){try{return s(i)}catch(i){return"Object"}}},99418:(i,s,u)=>{var m=u(95329),v=0,_=Math.random(),j=m(1..toString);i.exports=function(i){return"Symbol("+(void 0===i?"":i)+")_"+j(++v+_,36)}},32302:(i,s,u)=>{var m=u(63405);i.exports=m&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},83937:(i,s,u)=>{var m=u(55746),v=u(95981);i.exports=m&&v((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},47093:(i,s,u)=>{var m=u(21899),v=u(57475),_=m.WeakMap;i.exports=v(_)&&/native code/.test(String(_))},99813:(i,s,u)=>{var m=u(21899),v=u(68726),_=u(90953),j=u(99418),M=u(63405),$=u(32302),W=m.Symbol,X=v("wks"),Y=$?W.for||W:W&&W.withoutSetter||j;i.exports=function(i){return _(X,i)||(X[i]=M&&_(W,i)?W[i]:Y("Symbol."+i)),X[i]}},62864:(i,s,u)=>{"use strict";var m=u(626),v=u(90953),_=u(32029),j=u(7046),M=u(88929),$=u(23489),W=u(9056),X=u(70926),Y=u(14649),Z=u(53794),ee=u(79585),ie=u(55746),ae=u(82529);i.exports=function(i,s,u,le){var ce="stackTraceLimit",pe=le?2:1,de=i.split("."),fe=de[de.length-1],ye=m.apply(null,de);if(ye){var be=ye.prototype;if(!ae&&v(be,"cause")&&delete be.cause,!u)return ye;var _e=m("Error"),we=s((function(i,s){var u=Y(le?s:i,void 0),m=le?new ye(i):new ye;return void 0!==u&&_(m,"message",u),ee(m,we,m.stack,2),this&&j(be,this)&&X(m,this,we),arguments.length>pe&&Z(m,arguments[pe]),m}));if(we.prototype=be,"Error"!==fe?M?M(we,_e):$(we,_e,{name:!0}):ie&&ce in ye&&(W(we,ye,ce),W(we,ye,"prepareStackTrace")),$(we,ye),!ae)try{be.name!==fe&&_(be,"name",fe),be.constructor=we}catch(i){}return we}}},24415:(i,s,u)=>{var m=u(76887),v=u(626),_=u(79730),j=u(95981),M=u(62864),$="AggregateError",W=v($),X=!j((function(){return 1!==W([1]).errors[0]}))&&j((function(){return 7!==W([1],$,{cause:7}).cause}));m({global:!0,constructor:!0,arity:2,forced:X},{AggregateError:M($,(function(i){return function AggregateError(s,u){return _(i,this,arguments)}}),X,!0)})},49812:(i,s,u)=>{"use strict";var m=u(76887),v=u(7046),_=u(249),j=u(88929),M=u(23489),$=u(29290),W=u(32029),X=u(31887),Y=u(53794),Z=u(79585),ee=u(93091),ie=u(14649),ae=u(99813)("toStringTag"),le=Error,ce=[].push,pe=function AggregateError(i,s){var u,m=v(de,this);j?u=j(le(),m?_(this):de):(u=m?this:$(de),W(u,ae,"Error")),void 0!==s&&W(u,"message",ie(s)),Z(u,pe,u.stack,1),arguments.length>2&&Y(u,arguments[2]);var M=[];return ee(i,ce,{that:M}),W(u,"errors",M),u};j?j(pe,le):M(pe,le,{name:!0});var de=pe.prototype=$(le.prototype,{constructor:X(1,pe),message:X(1,""),name:X(1,"AggregateError")});m({global:!0,constructor:!0,arity:2},{AggregateError:pe})},47627:(i,s,u)=>{u(49812)},66274:(i,s,u)=>{"use strict";var m=u(74529),v=u(18479),_=u(12077),j=u(45402),M=u(65988).f,$=u(75105),W=u(23538),X=u(82529),Y=u(55746),Z="Array Iterator",ee=j.set,ie=j.getterFor(Z);i.exports=$(Array,"Array",(function(i,s){ee(this,{type:Z,target:m(i),index:0,kind:s})}),(function(){var i=ie(this),s=i.target,u=i.kind,m=i.index++;return!s||m>=s.length?(i.target=void 0,W(void 0,!0)):W("keys"==u?m:"values"==u?s[m]:[m,s[m]],!1)}),"values");var ae=_.Arguments=_.Array;if(v("keys"),v("values"),v("entries"),!X&&Y&&"values"!==ae.name)try{M(ae,"name",{value:"values"})}catch(i){}},61181:(i,s,u)=>{var m=u(76887),v=u(21899),_=u(79730),j=u(62864),M="WebAssembly",$=v[M],W=7!==Error("e",{cause:7}).cause,exportGlobalErrorCauseWrapper=function(i,s){var u={};u[i]=j(i,s,W),m({global:!0,constructor:!0,arity:1,forced:W},u)},exportWebAssemblyErrorCauseWrapper=function(i,s){if($&&$[i]){var u={};u[i]=j(M+"."+i,s,W),m({target:M,stat:!0,constructor:!0,arity:1,forced:W},u)}};exportGlobalErrorCauseWrapper("Error",(function(i){return function Error(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("EvalError",(function(i){return function EvalError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("RangeError",(function(i){return function RangeError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("ReferenceError",(function(i){return function ReferenceError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("SyntaxError",(function(i){return function SyntaxError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("TypeError",(function(i){return function TypeError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("URIError",(function(i){return function URIError(s){return _(i,this,arguments)}})),exportWebAssemblyErrorCauseWrapper("CompileError",(function(i){return function CompileError(s){return _(i,this,arguments)}})),exportWebAssemblyErrorCauseWrapper("LinkError",(function(i){return function LinkError(s){return _(i,this,arguments)}})),exportWebAssemblyErrorCauseWrapper("RuntimeError",(function(i){return function RuntimeError(s){return _(i,this,arguments)}}))},73381:(i,s,u)=>{var m=u(76887),v=u(98308);m({target:"Function",proto:!0,forced:Function.bind!==v},{bind:v})},49221:(i,s,u)=>{var m=u(76887),v=u(24420);m({target:"Object",stat:!0,arity:2,forced:Object.assign!==v},{assign:v})},77971:(i,s,u)=>{"use strict";var m=u(64620).charAt,v=u(85803),_=u(45402),j=u(75105),M=u(23538),$="String Iterator",W=_.set,X=_.getterFor($);j(String,"String",(function(i){W(this,{type:$,string:v(i),index:0})}),(function next(){var i,s=X(this),u=s.string,v=s.index;return v>=u.length?M(void 0,!0):(i=m(u,v),s.index+=i.length,M(i,!1))}))},89731:(i,s,u)=>{u(47627)},7634:(i,s,u)=>{u(66274);var m=u(63281),v=u(21899),_=u(9697),j=u(32029),M=u(12077),$=u(99813)("toStringTag");for(var W in m){var X=v[W],Y=X&&X.prototype;Y&&_(Y)!==$&&j(Y,$,W),M[W]=M.Array}},18957:(i,s,u)=>{u(89731);var m=u(50415);u(7634),i.exports=m},28196:(i,s,u)=>{var m=u(16246);i.exports=m},63383:(i,s,u)=>{var m=u(45999);i.exports=m},8269:function(i,s,u){var m;m=void 0!==u.g?u.g:this,i.exports=function(i){if(i.CSS&&i.CSS.escape)return i.CSS.escape;var cssEscape=function(i){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var s,u=String(i),m=u.length,v=-1,_="",j=u.charCodeAt(0);++v<m;)0!=(s=u.charCodeAt(v))?_+=s>=1&&s<=31||127==s||0==v&&s>=48&&s<=57||1==v&&s>=48&&s<=57&&45==j?"\\"+s.toString(16)+" ":0==v&&1==m&&45==s||!(s>=128||45==s||95==s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122)?"\\"+u.charAt(v):u.charAt(v):_+="�";return _};return i.CSS||(i.CSS={}),i.CSS.escape=cssEscape,cssEscape}(m)},27698:(i,s,u)=>{"use strict";var m=u(48764).Buffer;function isSpecificValue(i){return i instanceof m||i instanceof Date||i instanceof RegExp}function cloneSpecificValue(i){if(i instanceof m){var s=m.alloc?m.alloc(i.length):new m(i.length);return i.copy(s),s}if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i);throw new Error("Unexpected situation")}function deepCloneArray(i){var s=[];return i.forEach((function(i,u){"object"==typeof i&&null!==i?Array.isArray(i)?s[u]=deepCloneArray(i):isSpecificValue(i)?s[u]=cloneSpecificValue(i):s[u]=v({},i):s[u]=i})),s}function safeGetProperty(i,s){return"__proto__"===s?void 0:i[s]}var v=i.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var i,s,u=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(m){"object"!=typeof m||null===m||Array.isArray(m)||Object.keys(m).forEach((function(_){return s=safeGetProperty(u,_),(i=safeGetProperty(m,_))===u?void 0:"object"!=typeof i||null===i?void(u[_]=i):Array.isArray(i)?void(u[_]=deepCloneArray(i)):isSpecificValue(i)?void(u[_]=cloneSpecificValue(i)):"object"!=typeof s||null===s||Array.isArray(s)?void(u[_]=v({},i)):void(u[_]=v(s,i))}))})),u}},9996:i=>{"use strict";var s=function isMergeableObject(i){return function isNonNullObject(i){return!!i&&"object"==typeof i}(i)&&!function isSpecial(i){var s=Object.prototype.toString.call(i);return"[object RegExp]"===s||"[object Date]"===s||function isReactElement(i){return i.$$typeof===u}(i)}(i)};var u="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(i,s){return!1!==s.clone&&s.isMergeableObject(i)?deepmerge(function emptyTarget(i){return Array.isArray(i)?[]:{}}(i),i,s):i}function defaultArrayMerge(i,s,u){return i.concat(s).map((function(i){return cloneUnlessOtherwiseSpecified(i,u)}))}function getKeys(i){return Object.keys(i).concat(function getEnumerableOwnPropertySymbols(i){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(i).filter((function(s){return Object.propertyIsEnumerable.call(i,s)})):[]}(i))}function propertyIsOnObject(i,s){try{return s in i}catch(i){return!1}}function mergeObject(i,s,u){var m={};return u.isMergeableObject(i)&&getKeys(i).forEach((function(s){m[s]=cloneUnlessOtherwiseSpecified(i[s],u)})),getKeys(s).forEach((function(v){(function propertyIsUnsafe(i,s){return propertyIsOnObject(i,s)&&!(Object.hasOwnProperty.call(i,s)&&Object.propertyIsEnumerable.call(i,s))})(i,v)||(propertyIsOnObject(i,v)&&u.isMergeableObject(s[v])?m[v]=function getMergeFunction(i,s){if(!s.customMerge)return deepmerge;var u=s.customMerge(i);return"function"==typeof u?u:deepmerge}(v,u)(i[v],s[v],u):m[v]=cloneUnlessOtherwiseSpecified(s[v],u))})),m}function deepmerge(i,u,m){(m=m||{}).arrayMerge=m.arrayMerge||defaultArrayMerge,m.isMergeableObject=m.isMergeableObject||s,m.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var v=Array.isArray(u);return v===Array.isArray(i)?v?m.arrayMerge(i,u,m):mergeObject(i,u,m):cloneUnlessOtherwiseSpecified(u,m)}deepmerge.all=function deepmergeAll(i,s){if(!Array.isArray(i))throw new Error("first argument should be an array");return i.reduce((function(i,u){return deepmerge(i,u,s)}),{})};var m=deepmerge;i.exports=m},27856:function(i){i.exports=function(){"use strict";const{entries:i,setPrototypeOf:s,isFrozen:u,getPrototypeOf:m,getOwnPropertyDescriptor:v}=Object;let{freeze:_,seal:j,create:M}=Object,{apply:$,construct:W}="undefined"!=typeof Reflect&&Reflect;_||(_=function freeze(i){return i}),j||(j=function seal(i){return i}),$||($=function apply(i,s,u){return i.apply(s,u)}),W||(W=function construct(i,s){return new i(...s)});const X=unapply(Array.prototype.forEach),Y=unapply(Array.prototype.pop),Z=unapply(Array.prototype.push),ee=unapply(String.prototype.toLowerCase),ie=unapply(String.prototype.toString),ae=unapply(String.prototype.match),le=unapply(String.prototype.replace),ce=unapply(String.prototype.indexOf),pe=unapply(String.prototype.trim),de=unapply(RegExp.prototype.test),fe=unconstruct(TypeError);function unapply(i){return function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v<u;v++)m[v-1]=arguments[v];return $(i,s,m)}}function unconstruct(i){return function(){for(var s=arguments.length,u=new Array(s),m=0;m<s;m++)u[m]=arguments[m];return W(i,u)}}function addToSet(i,m){let v=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ee;s&&s(i,null);let _=m.length;for(;_--;){let s=m[_];if("string"==typeof s){const i=v(s);i!==s&&(u(m)||(m[_]=i),s=i)}i[s]=!0}return i}function clone(s){const u=M(null);for(const[m,_]of i(s))void 0!==v(s,m)&&(u[m]=_);return u}function lookupGetter(i,s){for(;null!==i;){const u=v(i,s);if(u){if(u.get)return unapply(u.get);if("function"==typeof u.value)return unapply(u.value)}i=m(i)}function fallbackValue(i){return console.warn("fallback value for",i),null}return fallbackValue}const ye=_(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),be=_(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),_e=_(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),we=_(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Se=_(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),xe=_(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Ie=_(["#text"]),Pe=_(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Te=_(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Re=_(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),qe=_(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),ze=j(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ve=j(/<%[\w\W]*|[\w\W]*%>/gm),We=j(/\${[\w\W]*}/gm),He=j(/^data-[\-\w.\u00B7-\uFFFF]/),Xe=j(/^aria-[\-\w]+$/),Ye=j(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Qe=j(/^(?:\w+script|data):/i),et=j(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),tt=j(/^html$/i);var rt=Object.freeze({__proto__:null,MUSTACHE_EXPR:ze,ERB_EXPR:Ve,TMPLIT_EXPR:We,DATA_ATTR:He,ARIA_ATTR:Xe,IS_ALLOWED_URI:Ye,IS_SCRIPT_OR_DATA:Qe,ATTR_WHITESPACE:et,DOCTYPE_NAME:tt});const nt=function getGlobal(){return"undefined"==typeof window?null:window},ot=function _createTrustedTypesPolicy(i,s){if("object"!=typeof i||"function"!=typeof i.createPolicy)return null;let u=null;const m="data-tt-policy-suffix";s&&s.hasAttribute(m)&&(u=s.getAttribute(m));const v="dompurify"+(u?"#"+u:"");try{return i.createPolicy(v,{createHTML:i=>i,createScriptURL:i=>i})}catch(i){return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nt();const DOMPurify=i=>createDOMPurify(i);if(DOMPurify.version="3.0.6",DOMPurify.removed=[],!s||!s.document||9!==s.document.nodeType)return DOMPurify.isSupported=!1,DOMPurify;let{document:u}=s;const m=u,v=m.currentScript,{DocumentFragment:j,HTMLTemplateElement:$,Node:W,Element:ze,NodeFilter:Ve,NamedNodeMap:We=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:He,DOMParser:Xe,trustedTypes:Qe}=s,et=ze.prototype,it=lookupGetter(et,"cloneNode"),at=lookupGetter(et,"nextSibling"),st=lookupGetter(et,"childNodes"),lt=lookupGetter(et,"parentNode");if("function"==typeof $){const i=u.createElement("template");i.content&&i.content.ownerDocument&&(u=i.content.ownerDocument)}let ct,ut="";const{implementation:pt,createNodeIterator:ht,createDocumentFragment:dt,getElementsByTagName:mt}=u,{importNode:gt}=m;let yt={};DOMPurify.isSupported="function"==typeof i&&"function"==typeof lt&&pt&&void 0!==pt.createHTMLDocument;const{MUSTACHE_EXPR:vt,ERB_EXPR:bt,TMPLIT_EXPR:_t,DATA_ATTR:wt,ARIA_ATTR:Et,IS_SCRIPT_OR_DATA:St,ATTR_WHITESPACE:xt}=rt;let{IS_ALLOWED_URI:kt}=rt,Ot=null;const At=addToSet({},[...ye,...be,..._e,...Se,...Ie]);let Ct=null;const jt=addToSet({},[...Pe,...Te,...Re,...qe]);let It=Object.seal(M(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Pt=null,Nt=null,Tt=!0,Mt=!0,Rt=!1,Dt=!0,Bt=!1,Lt=!1,Ft=!1,qt=!1,$t=!1,Ut=!1,zt=!1,Vt=!0,Wt=!1;const Kt="user-content-";let Ht=!0,Jt=!1,Gt={},Xt=null;const Yt=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Qt=null;const Zt=addToSet({},["audio","video","img","source","image","track"]);let er=null;const tr=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),rr="http://www.w3.org/1998/Math/MathML",nr="http://www.w3.org/2000/svg",ir="http://www.w3.org/1999/xhtml";let ar=ir,sr=!1,lr=null;const cr=addToSet({},[rr,nr,ir],ie);let ur=null;const pr=["application/xhtml+xml","text/html"],dr="text/html";let fr=null,mr=null;const gr=u.createElement("form"),yr=function isRegexOrFunction(i){return i instanceof RegExp||i instanceof Function},vr=function _parseConfig(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!mr||mr!==i){if(i&&"object"==typeof i||(i={}),i=clone(i),ur=ur=-1===pr.indexOf(i.PARSER_MEDIA_TYPE)?dr:i.PARSER_MEDIA_TYPE,fr="application/xhtml+xml"===ur?ie:ee,Ot="ALLOWED_TAGS"in i?addToSet({},i.ALLOWED_TAGS,fr):At,Ct="ALLOWED_ATTR"in i?addToSet({},i.ALLOWED_ATTR,fr):jt,lr="ALLOWED_NAMESPACES"in i?addToSet({},i.ALLOWED_NAMESPACES,ie):cr,er="ADD_URI_SAFE_ATTR"in i?addToSet(clone(tr),i.ADD_URI_SAFE_ATTR,fr):tr,Qt="ADD_DATA_URI_TAGS"in i?addToSet(clone(Zt),i.ADD_DATA_URI_TAGS,fr):Zt,Xt="FORBID_CONTENTS"in i?addToSet({},i.FORBID_CONTENTS,fr):Yt,Pt="FORBID_TAGS"in i?addToSet({},i.FORBID_TAGS,fr):{},Nt="FORBID_ATTR"in i?addToSet({},i.FORBID_ATTR,fr):{},Gt="USE_PROFILES"in i&&i.USE_PROFILES,Tt=!1!==i.ALLOW_ARIA_ATTR,Mt=!1!==i.ALLOW_DATA_ATTR,Rt=i.ALLOW_UNKNOWN_PROTOCOLS||!1,Dt=!1!==i.ALLOW_SELF_CLOSE_IN_ATTR,Bt=i.SAFE_FOR_TEMPLATES||!1,Lt=i.WHOLE_DOCUMENT||!1,$t=i.RETURN_DOM||!1,Ut=i.RETURN_DOM_FRAGMENT||!1,zt=i.RETURN_TRUSTED_TYPE||!1,qt=i.FORCE_BODY||!1,Vt=!1!==i.SANITIZE_DOM,Wt=i.SANITIZE_NAMED_PROPS||!1,Ht=!1!==i.KEEP_CONTENT,Jt=i.IN_PLACE||!1,kt=i.ALLOWED_URI_REGEXP||Ye,ar=i.NAMESPACE||ir,It=i.CUSTOM_ELEMENT_HANDLING||{},i.CUSTOM_ELEMENT_HANDLING&&yr(i.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(It.tagNameCheck=i.CUSTOM_ELEMENT_HANDLING.tagNameCheck),i.CUSTOM_ELEMENT_HANDLING&&yr(i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(It.attributeNameCheck=i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),i.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(It.allowCustomizedBuiltInElements=i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Bt&&(Mt=!1),Ut&&($t=!0),Gt&&(Ot=addToSet({},[...Ie]),Ct=[],!0===Gt.html&&(addToSet(Ot,ye),addToSet(Ct,Pe)),!0===Gt.svg&&(addToSet(Ot,be),addToSet(Ct,Te),addToSet(Ct,qe)),!0===Gt.svgFilters&&(addToSet(Ot,_e),addToSet(Ct,Te),addToSet(Ct,qe)),!0===Gt.mathMl&&(addToSet(Ot,Se),addToSet(Ct,Re),addToSet(Ct,qe))),i.ADD_TAGS&&(Ot===At&&(Ot=clone(Ot)),addToSet(Ot,i.ADD_TAGS,fr)),i.ADD_ATTR&&(Ct===jt&&(Ct=clone(Ct)),addToSet(Ct,i.ADD_ATTR,fr)),i.ADD_URI_SAFE_ATTR&&addToSet(er,i.ADD_URI_SAFE_ATTR,fr),i.FORBID_CONTENTS&&(Xt===Yt&&(Xt=clone(Xt)),addToSet(Xt,i.FORBID_CONTENTS,fr)),Ht&&(Ot["#text"]=!0),Lt&&addToSet(Ot,["html","head","body"]),Ot.table&&(addToSet(Ot,["tbody"]),delete Pt.tbody),i.TRUSTED_TYPES_POLICY){if("function"!=typeof i.TRUSTED_TYPES_POLICY.createHTML)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof i.TRUSTED_TYPES_POLICY.createScriptURL)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ct=i.TRUSTED_TYPES_POLICY,ut=ct.createHTML("")}else void 0===ct&&(ct=ot(Qe,v)),null!==ct&&"string"==typeof ut&&(ut=ct.createHTML(""));_&&_(i),mr=i}},br=addToSet({},["mi","mo","mn","ms","mtext"]),_r=addToSet({},["foreignobject","desc","title","annotation-xml"]),wr=addToSet({},["title","style","font","a","script"]),Er=addToSet({},be);addToSet(Er,_e),addToSet(Er,we);const Sr=addToSet({},Se);addToSet(Sr,xe);const xr=function _checkValidNamespace(i){let s=lt(i);s&&s.tagName||(s={namespaceURI:ar,tagName:"template"});const u=ee(i.tagName),m=ee(s.tagName);return!!lr[i.namespaceURI]&&(i.namespaceURI===nr?s.namespaceURI===ir?"svg"===u:s.namespaceURI===rr?"svg"===u&&("annotation-xml"===m||br[m]):Boolean(Er[u]):i.namespaceURI===rr?s.namespaceURI===ir?"math"===u:s.namespaceURI===nr?"math"===u&&_r[m]:Boolean(Sr[u]):i.namespaceURI===ir?!(s.namespaceURI===nr&&!_r[m])&&!(s.namespaceURI===rr&&!br[m])&&!Sr[u]&&(wr[u]||!Er[u]):!("application/xhtml+xml"!==ur||!lr[i.namespaceURI]))},kr=function _forceRemove(i){Z(DOMPurify.removed,{element:i});try{i.parentNode.removeChild(i)}catch(s){i.remove()}},Or=function _removeAttribute(i,s){try{Z(DOMPurify.removed,{attribute:s.getAttributeNode(i),from:s})}catch(i){Z(DOMPurify.removed,{attribute:null,from:s})}if(s.removeAttribute(i),"is"===i&&!Ct[i])if($t||Ut)try{kr(s)}catch(i){}else try{s.setAttribute(i,"")}catch(i){}},Ar=function _initDocument(i){let s=null,m=null;if(qt)i="<remove></remove>"+i;else{const s=ae(i,/^[\r\n\t ]+/);m=s&&s[0]}"application/xhtml+xml"===ur&&ar===ir&&(i='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+i+"</body></html>");const v=ct?ct.createHTML(i):i;if(ar===ir)try{s=(new Xe).parseFromString(v,ur)}catch(i){}if(!s||!s.documentElement){s=pt.createDocument(ar,"template",null);try{s.documentElement.innerHTML=sr?ut:v}catch(i){}}const _=s.body||s.documentElement;return i&&m&&_.insertBefore(u.createTextNode(m),_.childNodes[0]||null),ar===ir?mt.call(s,Lt?"html":"body")[0]:Lt?s.documentElement:_},Cr=function _createNodeIterator(i){return ht.call(i.ownerDocument||i,i,Ve.SHOW_ELEMENT|Ve.SHOW_COMMENT|Ve.SHOW_TEXT,null)},jr=function _isClobbered(i){return i instanceof He&&("string"!=typeof i.nodeName||"string"!=typeof i.textContent||"function"!=typeof i.removeChild||!(i.attributes instanceof We)||"function"!=typeof i.removeAttribute||"function"!=typeof i.setAttribute||"string"!=typeof i.namespaceURI||"function"!=typeof i.insertBefore||"function"!=typeof i.hasChildNodes)},Ir=function _isNode(i){return"function"==typeof W&&i instanceof W},Pr=function _executeHook(i,s,u){yt[i]&&X(yt[i],(i=>{i.call(DOMPurify,s,u,mr)}))},Nr=function _sanitizeElements(i){let s=null;if(Pr("beforeSanitizeElements",i,null),jr(i))return kr(i),!0;const u=fr(i.nodeName);if(Pr("uponSanitizeElement",i,{tagName:u,allowedTags:Ot}),i.hasChildNodes()&&!Ir(i.firstElementChild)&&de(/<[/\w]/g,i.innerHTML)&&de(/<[/\w]/g,i.textContent))return kr(i),!0;if(!Ot[u]||Pt[u]){if(!Pt[u]&&Mr(u)){if(It.tagNameCheck instanceof RegExp&&de(It.tagNameCheck,u))return!1;if(It.tagNameCheck instanceof Function&&It.tagNameCheck(u))return!1}if(Ht&&!Xt[u]){const s=lt(i)||i.parentNode,u=st(i)||i.childNodes;if(u&&s)for(let m=u.length-1;m>=0;--m)s.insertBefore(it(u[m],!0),at(i))}return kr(i),!0}return i instanceof ze&&!xr(i)?(kr(i),!0):"noscript"!==u&&"noembed"!==u&&"noframes"!==u||!de(/<\/no(script|embed|frames)/i,i.innerHTML)?(Bt&&3===i.nodeType&&(s=i.textContent,X([vt,bt,_t],(i=>{s=le(s,i," ")})),i.textContent!==s&&(Z(DOMPurify.removed,{element:i.cloneNode()}),i.textContent=s)),Pr("afterSanitizeElements",i,null),!1):(kr(i),!0)},Tr=function _isValidAttribute(i,s,m){if(Vt&&("id"===s||"name"===s)&&(m in u||m in gr))return!1;if(Mt&&!Nt[s]&&de(wt,s));else if(Tt&&de(Et,s));else if(!Ct[s]||Nt[s]){if(!(Mr(i)&&(It.tagNameCheck instanceof RegExp&&de(It.tagNameCheck,i)||It.tagNameCheck instanceof Function&&It.tagNameCheck(i))&&(It.attributeNameCheck instanceof RegExp&&de(It.attributeNameCheck,s)||It.attributeNameCheck instanceof Function&&It.attributeNameCheck(s))||"is"===s&&It.allowCustomizedBuiltInElements&&(It.tagNameCheck instanceof RegExp&&de(It.tagNameCheck,m)||It.tagNameCheck instanceof Function&&It.tagNameCheck(m))))return!1}else if(er[s]);else if(de(kt,le(m,xt,"")));else if("src"!==s&&"xlink:href"!==s&&"href"!==s||"script"===i||0!==ce(m,"data:")||!Qt[i])if(Rt&&!de(St,le(m,xt,"")));else if(m)return!1;return!0},Mr=function _isBasicCustomElement(i){return i.indexOf("-")>0},Rr=function _sanitizeAttributes(i){Pr("beforeSanitizeAttributes",i,null);const{attributes:s}=i;if(!s)return;const u={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ct};let m=s.length;for(;m--;){const v=s[m],{name:_,namespaceURI:j,value:M}=v,$=fr(_);let W="value"===_?M:pe(M);if(u.attrName=$,u.attrValue=W,u.keepAttr=!0,u.forceKeepAttr=void 0,Pr("uponSanitizeAttribute",i,u),W=u.attrValue,u.forceKeepAttr)continue;if(Or(_,i),!u.keepAttr)continue;if(!Dt&&de(/\/>/i,W)){Or(_,i);continue}Bt&&X([vt,bt,_t],(i=>{W=le(W,i," ")}));const Z=fr(i.nodeName);if(Tr(Z,$,W)){if(!Wt||"id"!==$&&"name"!==$||(Or(_,i),W=Kt+W),ct&&"object"==typeof Qe&&"function"==typeof Qe.getAttributeType)if(j);else switch(Qe.getAttributeType(Z,$)){case"TrustedHTML":W=ct.createHTML(W);break;case"TrustedScriptURL":W=ct.createScriptURL(W)}try{j?i.setAttributeNS(j,_,W):i.setAttribute(_,W),Y(DOMPurify.removed)}catch(i){}}}Pr("afterSanitizeAttributes",i,null)},Dr=function _sanitizeShadowDOM(i){let s=null;const u=Cr(i);for(Pr("beforeSanitizeShadowDOM",i,null);s=u.nextNode();)Pr("uponSanitizeShadowNode",s,null),Nr(s)||(s.content instanceof j&&_sanitizeShadowDOM(s.content),Rr(s));Pr("afterSanitizeShadowDOM",i,null)};return DOMPurify.sanitize=function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=null,v=null,_=null,M=null;if(sr=!i,sr&&(i="\x3c!--\x3e"),"string"!=typeof i&&!Ir(i)){if("function"!=typeof i.toString)throw fe("toString is not a function");if("string"!=typeof(i=i.toString()))throw fe("dirty is not a string, aborting")}if(!DOMPurify.isSupported)return i;if(Ft||vr(s),DOMPurify.removed=[],"string"==typeof i&&(Jt=!1),Jt){if(i.nodeName){const s=fr(i.nodeName);if(!Ot[s]||Pt[s])throw fe("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof W)u=Ar("\x3c!----\x3e"),v=u.ownerDocument.importNode(i,!0),1===v.nodeType&&"BODY"===v.nodeName||"HTML"===v.nodeName?u=v:u.appendChild(v);else{if(!$t&&!Bt&&!Lt&&-1===i.indexOf("<"))return ct&&zt?ct.createHTML(i):i;if(u=Ar(i),!u)return $t?null:zt?ut:""}u&&qt&&kr(u.firstChild);const $=Cr(Jt?i:u);for(;_=$.nextNode();)Nr(_)||(_.content instanceof j&&Dr(_.content),Rr(_));if(Jt)return i;if($t){if(Ut)for(M=dt.call(u.ownerDocument);u.firstChild;)M.appendChild(u.firstChild);else M=u;return(Ct.shadowroot||Ct.shadowrootmode)&&(M=gt.call(m,M,!0)),M}let Y=Lt?u.outerHTML:u.innerHTML;return Lt&&Ot["!doctype"]&&u.ownerDocument&&u.ownerDocument.doctype&&u.ownerDocument.doctype.name&&de(tt,u.ownerDocument.doctype.name)&&(Y="<!DOCTYPE "+u.ownerDocument.doctype.name+">\n"+Y),Bt&&X([vt,bt,_t],(i=>{Y=le(Y,i," ")})),ct&&zt?ct.createHTML(Y):Y},DOMPurify.setConfig=function(){vr(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ft=!0},DOMPurify.clearConfig=function(){mr=null,Ft=!1},DOMPurify.isValidAttribute=function(i,s,u){mr||vr({});const m=fr(i),v=fr(s);return Tr(m,v,u)},DOMPurify.addHook=function(i,s){"function"==typeof s&&(yt[i]=yt[i]||[],Z(yt[i],s))},DOMPurify.removeHook=function(i){if(yt[i])return Y(yt[i])},DOMPurify.removeHooks=function(i){yt[i]&&(yt[i]=[])},DOMPurify.removeAllHooks=function(){yt={}},DOMPurify}return createDOMPurify()}()},69450:i=>{"use strict";class SubRange{constructor(i,s){this.low=i,this.high=s,this.length=1+s-i}overlaps(i){return!(this.high<i.low||this.low>i.high)}touches(i){return!(this.high+1<i.low||this.low-1>i.high)}add(i){return new SubRange(Math.min(this.low,i.low),Math.max(this.high,i.high))}subtract(i){return i.low<=this.low&&i.high>=this.high?[]:i.low>this.low&&i.high<this.high?[new SubRange(this.low,i.low-1),new SubRange(i.high+1,this.high)]:i.low<=this.low?[new SubRange(i.high+1,this.high)]:[new SubRange(this.low,i.low-1)]}toString(){return this.low==this.high?this.low.toString():this.low+"-"+this.high}}class DRange{constructor(i,s){this.ranges=[],this.length=0,null!=i&&this.add(i,s)}_update_length(){this.length=this.ranges.reduce(((i,s)=>i+s.length),0)}add(i,s){var _add=i=>{for(var s=0;s<this.ranges.length&&!i.touches(this.ranges[s]);)s++;for(var u=this.ranges.slice(0,s);s<this.ranges.length&&i.touches(this.ranges[s]);)i=i.add(this.ranges[s]),s++;u.push(i),this.ranges=u.concat(this.ranges.slice(s)),this._update_length()};return i instanceof DRange?i.ranges.forEach(_add):(null==s&&(s=i),_add(new SubRange(i,s))),this}subtract(i,s){var _subtract=i=>{for(var s=0;s<this.ranges.length&&!i.overlaps(this.ranges[s]);)s++;for(var u=this.ranges.slice(0,s);s<this.ranges.length&&i.overlaps(this.ranges[s]);)u=u.concat(this.ranges[s].subtract(i)),s++;this.ranges=u.concat(this.ranges.slice(s)),this._update_length()};return i instanceof DRange?i.ranges.forEach(_subtract):(null==s&&(s=i),_subtract(new SubRange(i,s))),this}intersect(i,s){var u=[],_intersect=i=>{for(var s=0;s<this.ranges.length&&!i.overlaps(this.ranges[s]);)s++;for(;s<this.ranges.length&&i.overlaps(this.ranges[s]);){var m=Math.max(this.ranges[s].low,i.low),v=Math.min(this.ranges[s].high,i.high);u.push(new SubRange(m,v)),s++}};return i instanceof DRange?i.ranges.forEach(_intersect):(null==s&&(s=i),_intersect(new SubRange(i,s))),this.ranges=u,this._update_length(),this}index(i){for(var s=0;s<this.ranges.length&&this.ranges[s].length<=i;)i-=this.ranges[s].length,s++;return this.ranges[s].low+i}toString(){return"[ "+this.ranges.join(", ")+" ]"}clone(){return new DRange(this)}numbers(){return this.ranges.reduce(((i,s)=>{for(var u=s.low;u<=s.high;)i.push(u),u++;return i}),[])}subranges(){return this.ranges.map((i=>({low:i.low,high:i.high,length:1+i.high-i.low})))}}i.exports=DRange},17187:i=>{"use strict";var s,u="object"==typeof Reflect?Reflect:null,m=u&&"function"==typeof u.apply?u.apply:function ReflectApply(i,s,u){return Function.prototype.apply.call(i,s,u)};s=u&&"function"==typeof u.ownKeys?u.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i).concat(Object.getOwnPropertySymbols(i))}:function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i)};var v=Number.isNaN||function NumberIsNaN(i){return i!=i};function EventEmitter(){EventEmitter.init.call(this)}i.exports=EventEmitter,i.exports.once=function once(i,s){return new Promise((function(u,m){function errorListener(u){i.removeListener(s,resolver),m(u)}function resolver(){"function"==typeof i.removeListener&&i.removeListener("error",errorListener),u([].slice.call(arguments))}eventTargetAgnosticAddListener(i,s,resolver,{once:!0}),"error"!==s&&function addErrorHandlerIfEventEmitter(i,s,u){"function"==typeof i.on&&eventTargetAgnosticAddListener(i,"error",s,u)}(i,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(i){if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i)}function _getMaxListeners(i){return void 0===i._maxListeners?EventEmitter.defaultMaxListeners:i._maxListeners}function _addListener(i,s,u,m){var v,_,j;if(checkListener(u),void 0===(_=i._events)?(_=i._events=Object.create(null),i._eventsCount=0):(void 0!==_.newListener&&(i.emit("newListener",s,u.listener?u.listener:u),_=i._events),j=_[s]),void 0===j)j=_[s]=u,++i._eventsCount;else if("function"==typeof j?j=_[s]=m?[u,j]:[j,u]:m?j.unshift(u):j.push(u),(v=_getMaxListeners(i))>0&&j.length>v&&!j.warned){j.warned=!0;var M=new Error("Possible EventEmitter memory leak detected. "+j.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");M.name="MaxListenersExceededWarning",M.emitter=i,M.type=s,M.count=j.length,function ProcessEmitWarning(i){console&&console.warn&&console.warn(i)}(M)}return i}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(i,s,u){var m={fired:!1,wrapFn:void 0,target:i,type:s,listener:u},v=onceWrapper.bind(m);return v.listener=u,m.wrapFn=v,v}function _listeners(i,s,u){var m=i._events;if(void 0===m)return[];var v=m[s];return void 0===v?[]:"function"==typeof v?u?[v.listener||v]:[v]:u?function unwrapListeners(i){for(var s=new Array(i.length),u=0;u<s.length;++u)s[u]=i[u].listener||i[u];return s}(v):arrayClone(v,v.length)}function listenerCount(i){var s=this._events;if(void 0!==s){var u=s[i];if("function"==typeof u)return 1;if(void 0!==u)return u.length}return 0}function arrayClone(i,s){for(var u=new Array(s),m=0;m<s;++m)u[m]=i[m];return u}function eventTargetAgnosticAddListener(i,s,u,m){if("function"==typeof i.on)m.once?i.once(s,u):i.on(s,u);else{if("function"!=typeof i.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof i);i.addEventListener(s,(function wrapListener(v){m.once&&i.removeEventListener(s,wrapListener),u(v)}))}}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return _},set:function(i){if("number"!=typeof i||i<0||v(i))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+i+".");_=i}}),EventEmitter.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._even
gitextract_s3igecng/
├── .cursor/
│ └── rules/
│ ├── authority.mdc
│ ├── cache.mdc
│ ├── controller.mdc
│ ├── db.mdc
│ ├── event.mdc
│ ├── exception.mdc
│ ├── module.mdc
│ ├── service.mdc
│ ├── socket.mdc
│ ├── task.mdc
│ └── tenant.mdc
├── .cursorrules
├── .editorconfig
├── .eslintrc.json
├── .gitattributes
├── .gitignore
├── .prettierrc.js
├── .vscode/
│ ├── config.code-snippets
│ ├── controller.code-snippets
│ ├── entity.code-snippets
│ ├── event.code-snippets
│ ├── middleware.code-snippets
│ ├── queue.code-snippets
│ └── service.code-snippets
├── Dockerfile
├── LICENSE
├── README.md
├── bootstrap.js
├── docker-compose.yml
├── jest.config.js
├── package.json
├── public/
│ ├── css/
│ │ └── welcome.css
│ ├── index.html
│ ├── js/
│ │ └── welcome.js
│ └── swagger/
│ ├── LICENSE
│ ├── NOTICE
│ ├── README.md
│ ├── absolute-path.js
│ ├── index.css
│ ├── index.html
│ ├── index.js
│ ├── oauth2-redirect.html
│ ├── package.json
│ ├── swagger-initializer.js
│ ├── swagger-ui-bundle.js
│ ├── swagger-ui-es-bundle-core.js
│ ├── swagger-ui-es-bundle.js
│ ├── swagger-ui-standalone-preset.js
│ ├── swagger-ui.css
│ └── swagger-ui.js
├── src/
│ ├── comm/
│ │ ├── path.ts
│ │ ├── port.ts
│ │ └── utils.ts
│ ├── config/
│ │ ├── config.default.ts
│ │ ├── config.local.ts
│ │ └── config.prod.ts
│ ├── configuration.ts
│ ├── entities.ts
│ ├── interface.ts
│ └── modules/
│ ├── base/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── coding.ts
│ │ │ │ ├── comm.ts
│ │ │ │ ├── open.ts
│ │ │ │ └── sys/
│ │ │ │ ├── department.ts
│ │ │ │ ├── log.ts
│ │ │ │ ├── menu.ts
│ │ │ │ ├── param.ts
│ │ │ │ ├── role.ts
│ │ │ │ └── user.ts
│ │ │ └── app/
│ │ │ ├── README.md
│ │ │ └── comm.ts
│ │ ├── db/
│ │ │ └── tenant.ts
│ │ ├── db.json
│ │ ├── dto/
│ │ │ └── login.ts
│ │ ├── entity/
│ │ │ ├── base.ts
│ │ │ └── sys/
│ │ │ ├── conf.ts
│ │ │ ├── department.ts
│ │ │ ├── log.ts
│ │ │ ├── menu.ts
│ │ │ ├── param.ts
│ │ │ ├── role.ts
│ │ │ ├── role_department.ts
│ │ │ ├── role_menu.ts
│ │ │ ├── user.ts
│ │ │ └── user_role.ts
│ │ ├── event/
│ │ │ ├── app.ts
│ │ │ └── menu.ts
│ │ ├── job/
│ │ │ └── log.ts
│ │ ├── menu.json
│ │ ├── middleware/
│ │ │ ├── authority.ts
│ │ │ ├── log.ts
│ │ │ └── translate.ts
│ │ └── service/
│ │ ├── coding.ts
│ │ ├── sys/
│ │ │ ├── conf.ts
│ │ │ ├── data.ts
│ │ │ ├── department.ts
│ │ │ ├── log.ts
│ │ │ ├── login.ts
│ │ │ ├── menu.ts
│ │ │ ├── param.ts
│ │ │ ├── perms.ts
│ │ │ ├── role.ts
│ │ │ └── user.ts
│ │ └── translate.ts
│ ├── demo/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── goods.ts
│ │ │ │ └── tenant.ts
│ │ │ └── open/
│ │ │ ├── cache.ts
│ │ │ ├── event.ts
│ │ │ ├── goods.ts
│ │ │ ├── i18n.ts
│ │ │ ├── plugin.ts
│ │ │ ├── queue.ts
│ │ │ ├── rpc.ts
│ │ │ ├── sse.ts
│ │ │ ├── tenant.ts
│ │ │ └── transaction.ts
│ │ ├── entity/
│ │ │ └── goods.ts
│ │ ├── event/
│ │ │ └── comm.ts
│ │ ├── queue/
│ │ │ ├── comm.ts
│ │ │ ├── getter.ts
│ │ │ └── single.ts
│ │ └── service/
│ │ ├── cache.ts
│ │ ├── goods.ts
│ │ ├── i18n.ts
│ │ ├── rpc.ts
│ │ ├── tenant.ts
│ │ └── transaction.ts
│ ├── dict/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── info.ts
│ │ │ │ └── type.ts
│ │ │ └── app/
│ │ │ └── info.ts
│ │ ├── db.json
│ │ ├── entity/
│ │ │ ├── info.ts
│ │ │ └── type.ts
│ │ └── service/
│ │ ├── info.ts
│ │ └── type.ts
│ ├── plugin/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── admin/
│ │ │ └── info.ts
│ │ ├── entity/
│ │ │ └── info.ts
│ │ ├── event/
│ │ │ ├── app.ts
│ │ │ └── init.ts
│ │ ├── hooks/
│ │ │ ├── base.ts
│ │ │ └── upload/
│ │ │ ├── index.ts
│ │ │ └── interface.ts
│ │ ├── interface.ts
│ │ └── service/
│ │ ├── center.ts
│ │ ├── info.ts
│ │ └── types.ts
│ ├── recycle/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── admin/
│ │ │ └── data.ts
│ │ ├── entity/
│ │ │ └── data.ts
│ │ ├── event/
│ │ │ └── data.ts
│ │ ├── schedule/
│ │ │ └── data.ts
│ │ └── service/
│ │ └── data.ts
│ ├── space/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ ├── admin/
│ │ │ │ ├── info.ts
│ │ │ │ └── type.ts
│ │ │ └── 说明.md
│ │ ├── entity/
│ │ │ ├── info.ts
│ │ │ └── type.ts
│ │ └── service/
│ │ ├── info.ts
│ │ └── type.ts
│ ├── swagger/
│ │ ├── builder.ts
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── index.ts
│ │ └── event/
│ │ └── app.ts
│ ├── task/
│ │ ├── config.ts
│ │ ├── controller/
│ │ │ └── admin/
│ │ │ └── info.ts
│ │ ├── db.json
│ │ ├── entity/
│ │ │ ├── info.ts
│ │ │ └── log.ts
│ │ ├── event/
│ │ │ └── comm.ts
│ │ ├── middleware/
│ │ │ └── task.ts
│ │ ├── queue/
│ │ │ └── task.ts
│ │ └── service/
│ │ ├── bull.ts
│ │ ├── demo.ts
│ │ ├── info.ts
│ │ └── local.ts
│ └── user/
│ ├── config.ts
│ ├── controller/
│ │ ├── admin/
│ │ │ ├── address.ts
│ │ │ └── info.ts
│ │ └── app/
│ │ ├── address.ts
│ │ ├── comm.ts
│ │ ├── info.ts
│ │ └── login.ts
│ ├── entity/
│ │ ├── address.ts
│ │ ├── info.ts
│ │ └── wx.ts
│ ├── middleware/
│ │ └── app.ts
│ └── service/
│ ├── address.ts
│ ├── info.ts
│ ├── login.ts
│ ├── sms.ts
│ └── wx.ts
├── test/
│ └── README.md
├── tsconfig.json
└── typings/
├── plugin.d.ts
└── upload.d.ts
Showing preview only (914K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7751 symbols across 132 files)
FILE: public/swagger/swagger-ui-bundle.js
function getLens (line 2) | function getLens(i){var s=i.length;if(s%4>0)throw new Error("Invalid str...
function encodeChunk (line 2) | function encodeChunk(i,s,m){for(var v,_,j=[],M=s;M<m;M+=3)v=(i[M]<<16&16...
function createBuffer (line 2) | function createBuffer(i){if(i>j)throw new RangeError('The value "'+i+'" ...
function Buffer (line 2) | function Buffer(i,s,u){if("number"==typeof i){if("string"==typeof s)thro...
function from (line 2) | function from(i,s,u){if("string"==typeof i)return function fromString(i,...
function assertSize (line 2) | function assertSize(i){if("number"!=typeof i)throw new TypeError('"size"...
function allocUnsafe (line 2) | function allocUnsafe(i){return assertSize(i),createBuffer(i<0?0:0|checke...
function fromArrayLike (line 2) | function fromArrayLike(i){const s=i.length<0?0:0|checked(i.length),u=cre...
function fromArrayBuffer (line 2) | function fromArrayBuffer(i,s,u){if(s<0||i.byteLength<s)throw new RangeEr...
function checked (line 2) | function checked(i){if(i>=j)throw new RangeError("Attempt to allocate Bu...
function byteLength (line 2) | function byteLength(i,s){if(Buffer.isBuffer(i))return i.length;if(ArrayB...
function slowToString (line 2) | function slowToString(i,s,u){let m=!1;if((void 0===s||s<0)&&(s=0),s>this...
function swap (line 2) | function swap(i,s,u){const m=i[s];i[s]=i[u],i[u]=m}
function bidirectionalIndexOf (line 2) | function bidirectionalIndexOf(i,s,u,m,v){if(0===i.length)return-1;if("st...
function arrayIndexOf (line 2) | function arrayIndexOf(i,s,u,m,v){let _,j=1,M=i.length,$=s.length;if(void...
function hexWrite (line 2) | function hexWrite(i,s,u,m){u=Number(u)||0;const v=i.length-u;m?(m=Number...
function utf8Write (line 2) | function utf8Write(i,s,u,m){return blitBuffer(utf8ToBytes(s,i.length-u),...
function asciiWrite (line 2) | function asciiWrite(i,s,u,m){return blitBuffer(function asciiToBytes(i){...
function base64Write (line 2) | function base64Write(i,s,u,m){return blitBuffer(base64ToBytes(s),i,u,m)}
function ucs2Write (line 2) | function ucs2Write(i,s,u,m){return blitBuffer(function utf16leToBytes(i,...
function base64Slice (line 2) | function base64Slice(i,s,u){return 0===s&&u===i.length?m.fromByteArray(i...
function utf8Slice (line 2) | function utf8Slice(i,s,u){u=Math.min(i.length,u);const m=[];let v=s;for(...
function asciiSlice (line 2) | function asciiSlice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;v...
function latin1Slice (line 2) | function latin1Slice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;...
function hexSlice (line 2) | function hexSlice(i,s,u){const m=i.length;(!s||s<0)&&(s=0),(!u||u<0||u>m...
function utf16leSlice (line 2) | function utf16leSlice(i,s,u){const m=i.slice(s,u);let v="";for(let i=0;i...
function checkOffset (line 2) | function checkOffset(i,s,u){if(i%1!=0||i<0)throw new RangeError("offset ...
function checkInt (line 2) | function checkInt(i,s,u,m,v,_){if(!Buffer.isBuffer(i))throw new TypeErro...
function wrtBigUInt64LE (line 2) | function wrtBigUInt64LE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(...
function wrtBigUInt64BE (line 2) | function wrtBigUInt64BE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(...
function checkIEEE754 (line 2) | function checkIEEE754(i,s,u,m,v,_){if(u+m>i.length)throw new RangeError(...
function writeFloat (line 2) | function writeFloat(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,...
function writeDouble (line 2) | function writeDouble(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u...
function E (line 2) | function E(i,s,u){$[i]=class NodeError extends u{constructor(){super(),O...
function addNumericalSeparator (line 2) | function addNumericalSeparator(i){let s="",u=i.length;const m="-"===i[0]...
function checkIntBI (line 2) | function checkIntBI(i,s,u,m,v,_){if(i>u||i<s){const m="bigint"==typeof s...
function validateNumber (line 2) | function validateNumber(i,s){if("number"!=typeof i)throw new $.ERR_INVAL...
function boundsError (line 2) | function boundsError(i,s,u){if(Math.floor(i)!==i)throw validateNumber(i,...
function utf8ToBytes (line 2) | function utf8ToBytes(i,s){let u;s=s||1/0;const m=i.length;let v=null;con...
function base64ToBytes (line 2) | function base64ToBytes(i){return m.toByteArray(function base64clean(i){i...
function blitBuffer (line 2) | function blitBuffer(i,s,u,m){let v;for(v=0;v<m&&!(v+u>=s.length||v>=i.le...
function isInstance (line 2) | function isInstance(i,s){return i instanceof s||null!=i&&null!=i.constru...
function numberIsNaN (line 2) | function numberIsNaN(i){return i!=i}
function defineBigIntMethod (line 2) | function defineBigIntMethod(i){return"undefined"==typeof BigInt?BufferBi...
function BufferBigIntNotDefined (line 2) | function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}
function classNames (line 2) | function classNames(){for(var i=[],s=0;s<arguments.length;s++){var u=arg...
function decode (line 2) | function decode(i){return-1!==i.indexOf("%")?decodeURIComponent(i):i}
function encode (line 2) | function encode(i){return encodeURIComponent(i)}
function tryDecode (line 2) | function tryDecode(i,s){try{return s(i)}catch(s){return i}}
function F (line 2) | function F(){}
function isSpecificValue (line 2) | function isSpecificValue(i){return i instanceof m||i instanceof Date||i ...
function cloneSpecificValue (line 2) | function cloneSpecificValue(i){if(i instanceof m){var s=m.alloc?m.alloc(...
function deepCloneArray (line 2) | function deepCloneArray(i){var s=[];return i.forEach((function(i,u){"obj...
function safeGetProperty (line 2) | function safeGetProperty(i,s){return"__proto__"===s?void 0:i[s]}
function cloneUnlessOtherwiseSpecified (line 2) | function cloneUnlessOtherwiseSpecified(i,s){return!1!==s.clone&&s.isMerg...
function defaultArrayMerge (line 2) | function defaultArrayMerge(i,s,u){return i.concat(s).map((function(i){re...
function getKeys (line 2) | function getKeys(i){return Object.keys(i).concat(function getEnumerableO...
function propertyIsOnObject (line 2) | function propertyIsOnObject(i,s){try{return s in i}catch(i){return!1}}
function mergeObject (line 2) | function mergeObject(i,s,u){var m={};return u.isMergeableObject(i)&&getK...
function deepmerge (line 2) | function deepmerge(i,u,m){(m=m||{}).arrayMerge=m.arrayMerge||defaultArra...
function unapply (line 2) | function unapply(i){return function(s){for(var u=arguments.length,m=new ...
function unconstruct (line 2) | function unconstruct(i){return function(){for(var s=arguments.length,u=n...
function addToSet (line 2) | function addToSet(i,m){let v=arguments.length>2&&void 0!==arguments[2]?a...
function clone (line 2) | function clone(s){const u=M(null);for(const[m,_]of i(s))void 0!==v(s,m)&...
function lookupGetter (line 2) | function lookupGetter(i,s){for(;null!==i;){const u=v(i,s);if(u){if(u.get...
function createDOMPurify (line 2) | function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[...
class SubRange (line 2) | class SubRange{constructor(i,s){this.low=i,this.high=s,this.length=1+s-i...
method constructor (line 2) | constructor(i,s){this.low=i,this.high=s,this.length=1+s-i}
method overlaps (line 2) | overlaps(i){return!(this.high<i.low||this.low>i.high)}
method touches (line 2) | touches(i){return!(this.high+1<i.low||this.low-1>i.high)}
method add (line 2) | add(i){return new SubRange(Math.min(this.low,i.low),Math.max(this.high...
method subtract (line 2) | subtract(i){return i.low<=this.low&&i.high>=this.high?[]:i.low>this.lo...
method toString (line 2) | toString(){return this.low==this.high?this.low.toString():this.low+"-"...
class DRange (line 2) | class DRange{constructor(i,s){this.ranges=[],this.length=0,null!=i&&this...
method constructor (line 2) | constructor(i,s){this.ranges=[],this.length=0,null!=i&&this.add(i,s)}
method _update_length (line 2) | _update_length(){this.length=this.ranges.reduce(((i,s)=>i+s.length),0)}
method add (line 2) | add(i,s){var _add=i=>{for(var s=0;s<this.ranges.length&&!i.touches(thi...
method subtract (line 2) | subtract(i,s){var _subtract=i=>{for(var s=0;s<this.ranges.length&&!i.o...
method intersect (line 2) | intersect(i,s){var u=[],_intersect=i=>{for(var s=0;s<this.ranges.lengt...
method index (line 2) | index(i){for(var s=0;s<this.ranges.length&&this.ranges[s].length<=i;)i...
method toString (line 2) | toString(){return"[ "+this.ranges.join(", ")+" ]"}
method clone (line 2) | clone(){return new DRange(this)}
method numbers (line 2) | numbers(){return this.ranges.reduce(((i,s)=>{for(var u=s.low;u<=s.high...
method subranges (line 2) | subranges(){return this.ranges.map((i=>({low:i.low,high:i.high,length:...
function EventEmitter (line 2) | function EventEmitter(){EventEmitter.init.call(this)}
function errorListener (line 2) | function errorListener(u){i.removeListener(s,resolver),m(u)}
function resolver (line 2) | function resolver(){"function"==typeof i.removeListener&&i.removeListene...
function checkListener (line 2) | function checkListener(i){if("function"!=typeof i)throw new TypeError('T...
function _getMaxListeners (line 2) | function _getMaxListeners(i){return void 0===i._maxListeners?EventEmitte...
function _addListener (line 2) | function _addListener(i,s,u,m){var v,_,j;if(checkListener(u),void 0===(_...
function onceWrapper (line 2) | function onceWrapper(){if(!this.fired)return this.target.removeListener(...
function _onceWrap (line 2) | function _onceWrap(i,s,u){var m={fired:!1,wrapFn:void 0,target:i,type:s,...
function _listeners (line 2) | function _listeners(i,s,u){var m=i._events;if(void 0===m)return[];var v=...
function listenerCount (line 2) | function listenerCount(i){var s=this._events;if(void 0!==s){var u=s[i];i...
function arrayClone (line 2) | function arrayClone(i,s){for(var u=new Array(s),m=0;m<s;++m)u[m]=i[m];re...
function eventTargetAgnosticAddListener (line 2) | function eventTargetAgnosticAddListener(i,s,u,m){if("function"==typeof i...
function create (line 2) | function create(i){return FormattedError.displayName=i.displayName||i.na...
function format (line 2) | function format(i){for(var s,u,m,v,_=1,j=[].slice.call(arguments),M=0,$=...
function deepFreeze (line 2) | function deepFreeze(i){return i instanceof Map?i.clear=i.delete=i.set=fu...
class Response (line 2) | class Response{constructor(i){void 0===i.data&&(i.data={}),this.data=i.d...
method constructor (line 2) | constructor(i){void 0===i.data&&(i.data={}),this.data=i.data,this.isMa...
method ignoreMatch (line 2) | ignoreMatch(){this.isMatchIgnored=!0}
function escapeHTML (line 2) | function escapeHTML(i){return i.replace(/&/g,"&").replace(/</g,"<...
function inherit (line 2) | function inherit(i,...s){const u=Object.create(null);for(const s in i)u[...
class HTMLRenderer (line 2) | class HTMLRenderer{constructor(i,s){this.buffer="",this.classPrefix=s.cl...
method constructor (line 2) | constructor(i,s){this.buffer="",this.classPrefix=s.classPrefix,i.walk(...
method addText (line 2) | addText(i){this.buffer+=escapeHTML(i)}
method openNode (line 2) | openNode(i){if(!emitsWrappingTags(i))return;let s=i.kind;i.sublanguage...
method closeNode (line 2) | closeNode(i){emitsWrappingTags(i)&&(this.buffer+="</span>")}
method value (line 2) | value(){return this.buffer}
method span (line 2) | span(i){this.buffer+=`<span class="${i}">`}
class TokenTree (line 2) | class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[th...
method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
method top (line 2) | get top(){return this.stack[this.stack.length-1]}
method root (line 2) | get root(){return this.rootNode}
method add (line 2) | add(i){this.top.children.push(i)}
method openNode (line 2) | openNode(i){const s={kind:i,children:[]};this.add(s),this.stack.push(s)}
method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
method walk (line 2) | walk(i){return this.constructor._walk(i,this.rootNode)}
method _walk (line 2) | static _walk(i,s){return"string"==typeof s?i.addText(s):s.children&&(i...
method _collapse (line 2) | static _collapse(i){"string"!=typeof i&&i.children&&(i.children.every(...
class TokenTreeEmitter (line 2) | class TokenTreeEmitter extends TokenTree{constructor(i){super(),this.opt...
method constructor (line 2) | constructor(i){super(),this.options=i}
method addKeyword (line 2) | addKeyword(i,s){""!==i&&(this.openNode(s),this.addText(i),this.closeNo...
method addText (line 2) | addText(i){""!==i&&this.add(i)}
method addSublanguage (line 2) | addSublanguage(i,s){const u=i.root;u.kind=s,u.sublanguage=!0,this.add(u)}
method toHTML (line 2) | toHTML(){return new HTMLRenderer(this,this.options).value()}
method finalize (line 2) | finalize(){return!0}
function source (line 2) | function source(i){return i?"string"==typeof i?i:i.source:null}
function skipIfhasPrecedingDot (line 2) | function skipIfhasPrecedingDot(i,s){"."===i.input[i.index-1]&&s.ignoreMa...
function beginKeywords (line 2) | function beginKeywords(i,s){s&&i.beginKeywords&&(i.begin="\\b("+i.beginK...
function compileIllegal (line 2) | function compileIllegal(i,s){Array.isArray(i.illegal)&&(i.illegal=functi...
function compileMatch (line 2) | function compileMatch(i,s){if(i.match){if(i.begin||i.end)throw new Error...
function compileRelevance (line 2) | function compileRelevance(i,s){void 0===i.relevance&&(i.relevance=1)}
function compileKeywords (line 2) | function compileKeywords(i,s,u=xe){const m={};return"string"==typeof i?c...
function scoreForKeyword (line 2) | function scoreForKeyword(i,s){return s?Number(s):function commonKeyword(...
function compileLanguage (line 2) | function compileLanguage(i,{plugins:s}){function langRe(s,u){return new ...
function dependencyOnParent (line 2) | function dependencyOnParent(i){return!!i&&(i.endsWithParent||dependencyO...
function BuildVuePlugin (line 2) | function BuildVuePlugin(i){const s={props:["language","code","autodetect...
function selectStream (line 2) | function selectStream(){return i.length&&s.length?i[0].offset!==s[0].off...
function open (line 2) | function open(i){function attributeString(i){return" "+i.nodeName+'="'+e...
function close (line 2) | function close(i){v+="</"+tag(i)+">"}
function render (line 2) | function render(i){("start"===i.event?open:close)(i.node)}
function tag (line 2) | function tag(i){return i.nodeName.toLowerCase()}
function nodeStream (line 2) | function nodeStream(i){const s=[];return function _nodeStream(i,u){for(l...
function shouldNotHighlight (line 2) | function shouldNotHighlight(i){return W.noHighlightRe.test(i)}
function highlight (line 2) | function highlight(i,s,u,m){let v="",_="";"object"==typeof s?(v=i,u=s.ig...
function _highlight (line 2) | function _highlight(i,s,m,j){function keywordData(i,s){const u=X.case_in...
function highlightAuto (line 2) | function highlightAuto(i,s){s=s||W.languages||Object.keys(u);const m=fun...
function highlightElement (line 2) | function highlightElement(i){let s=null;const u=function blockLanguage(i...
function highlightAll (line 2) | function highlightAll(){if("loading"===document.readyState)return void(e...
function getLanguage (line 2) | function getLanguage(i){return i=(i||"").toLowerCase(),u[i]||u[m[i]]}
function registerAliases (line 2) | function registerAliases(i,{languageName:s}){"string"==typeof i&&(i=[i])...
function autoDetection (line 2) | function autoDetection(i){const s=getLanguage(i);return s&&!s.disableAut...
function fire (line 2) | function fire(i,s){const u=i;v.forEach((function(i){i[u]&&i[u](s)}))}
function concat (line 2) | function concat(...i){return i.map((i=>function source(i){return i?"stri...
function concat (line 2) | function concat(...i){return i.map((i=>function source(i){return i?"stri...
function lookahead (line 2) | function lookahead(i){return concat("(?=",i,")")}
function concat (line 2) | function concat(...i){return i.map((i=>function source(i){return i?"stri...
function source (line 2) | function source(i){return i?"string"==typeof i?i:i.source:null}
function lookahead (line 2) | function lookahead(i){return concat("(?=",i,")")}
function concat (line 2) | function concat(...i){return i.map((i=>source(i))).join("")}
function either (line 2) | function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}
function getStatics (line 2) | function getStatics(i){return m.isMemo(i)?j:M[i.$$typeof]||v}
function createClass (line 2) | function createClass(i,s){s&&(i.prototype=Object.create(s.prototype)),i....
function Iterable (line 2) | function Iterable(i){return isIterable(i)?i:Seq(i)}
function KeyedIterable (line 2) | function KeyedIterable(i){return isKeyed(i)?i:KeyedSeq(i)}
function IndexedIterable (line 2) | function IndexedIterable(i){return isIndexed(i)?i:IndexedSeq(i)}
function SetIterable (line 2) | function SetIterable(i){return isIterable(i)&&!isAssociative(i)?i:SetSeq...
function isIterable (line 2) | function isIterable(i){return!(!i||!i[s])}
function isKeyed (line 2) | function isKeyed(i){return!(!i||!i[u])}
function isIndexed (line 2) | function isIndexed(i){return!(!i||!i[m])}
function isAssociative (line 2) | function isAssociative(i){return isKeyed(i)||isIndexed(i)}
function isOrdered (line 2) | function isOrdered(i){return!(!i||!i[v])}
function MakeRef (line 2) | function MakeRef(i){return i.value=!1,i}
function SetRef (line 2) | function SetRef(i){i&&(i.value=!0)}
function OwnerID (line 2) | function OwnerID(){}
function arrCopy (line 2) | function arrCopy(i,s){s=s||0;for(var u=Math.max(0,i.length-s),m=new Arra...
function ensureSize (line 2) | function ensureSize(i){return void 0===i.size&&(i.size=i.__iterate(retur...
function wrapIndex (line 2) | function wrapIndex(i,s){if("number"!=typeof s){var u=s>>>0;if(""+u!==s||...
function returnTrue (line 2) | function returnTrue(){return!0}
function wholeSlice (line 2) | function wholeSlice(i,s,u){return(0===i||void 0!==u&&i<=-u)&&(void 0===s...
function resolveBegin (line 2) | function resolveBegin(i,s){return resolveIndex(i,s,0)}
function resolveEnd (line 2) | function resolveEnd(i,s){return resolveIndex(i,s,s)}
function resolveIndex (line 2) | function resolveIndex(i,s,u){return void 0===i?u:i<0?Math.max(0,s+i):voi...
function Iterator (line 2) | function Iterator(i){this.next=i}
function iteratorValue (line 2) | function iteratorValue(i,s,u,m){var v=0===i?s:1===i?u:[s,u];return m?m.v...
function iteratorDone (line 2) | function iteratorDone(){return{value:void 0,done:!0}}
function hasIterator (line 2) | function hasIterator(i){return!!getIteratorFn(i)}
function isIterator (line 2) | function isIterator(i){return i&&"function"==typeof i.next}
function getIterator (line 2) | function getIterator(i){var s=getIteratorFn(i);return s&&s.call(i)}
function getIteratorFn (line 2) | function getIteratorFn(i){var s=i&&(ae&&i[ae]||i[le]);if("function"==typ...
function isArrayLike (line 2) | function isArrayLike(i){return i&&"number"==typeof i.length}
function Seq (line 2) | function Seq(i){return null==i?emptySequence():isIterable(i)?i.toSeq():s...
function KeyedSeq (line 2) | function KeyedSeq(i){return null==i?emptySequence().toKeyedSeq():isItera...
function IndexedSeq (line 2) | function IndexedSeq(i){return null==i?emptySequence():isIterable(i)?isKe...
function SetSeq (line 2) | function SetSeq(i){return(null==i?emptySequence():isIterable(i)?isKeyed(...
function ArraySeq (line 2) | function ArraySeq(i){this._array=i,this.size=i.length}
function ObjectSeq (line 2) | function ObjectSeq(i){var s=Object.keys(i);this._object=i,this._keys=s,t...
function IterableSeq (line 2) | function IterableSeq(i){this._iterable=i,this.size=i.length||i.size}
function IteratorSeq (line 2) | function IteratorSeq(i){this._iterator=i,this._iteratorCache=[]}
function isSeq (line 2) | function isSeq(i){return!(!i||!i[ye])}
function emptySequence (line 2) | function emptySequence(){return pe||(pe=new ArraySeq([]))}
function keyedSeqFromValue (line 2) | function keyedSeqFromValue(i){var s=Array.isArray(i)?new ArraySeq(i).fro...
function indexedSeqFromValue (line 2) | function indexedSeqFromValue(i){var s=maybeIndexedSeqFromValue(i);if(!s)...
function seqFromValue (line 2) | function seqFromValue(i){var s=maybeIndexedSeqFromValue(i)||"object"==ty...
function maybeIndexedSeqFromValue (line 2) | function maybeIndexedSeqFromValue(i){return isArrayLike(i)?new ArraySeq(...
function seqIterate (line 2) | function seqIterate(i,s,u,m){var v=i._cache;if(v){for(var _=v.length-1,j...
function seqIterator (line 2) | function seqIterator(i,s,u,m){var v=i._cache;if(v){var _=v.length-1,j=0;...
function fromJS (line 2) | function fromJS(i,s){return s?fromJSWith(s,i,"",{"":i}):fromJSDefault(i)}
function fromJSWith (line 2) | function fromJSWith(i,s,u,m){return Array.isArray(s)?i.call(m,u,IndexedS...
function fromJSDefault (line 2) | function fromJSDefault(i){return Array.isArray(i)?IndexedSeq(i).map(from...
function isPlainObj (line 2) | function isPlainObj(i){return i&&(i.constructor===Object||void 0===i.con...
function is (line 2) | function is(i,s){if(i===s||i!=i&&s!=s)return!0;if(!i||!s)return!1;if("fu...
function deepEqual (line 2) | function deepEqual(i,s){if(i===s)return!0;if(!isIterable(s)||void 0!==i....
function Repeat (line 2) | function Repeat(i,s){if(!(this instanceof Repeat))return new Repeat(i,s)...
function invariant (line 2) | function invariant(i,s){if(!i)throw new Error(s)}
function Range (line 2) | function Range(i,s,u){if(!(this instanceof Range))return new Range(i,s,u...
function Collection (line 2) | function Collection(){throw TypeError("Abstract")}
function KeyedCollection (line 2) | function KeyedCollection(){}
function IndexedCollection (line 2) | function IndexedCollection(){}
function SetCollection (line 2) | function SetCollection(){}
function smi (line 2) | function smi(i){return i>>>1&1073741824|3221225471&i}
function hash (line 2) | function hash(i){if(!1===i||null==i)return 0;if("function"==typeof i.val...
function cachedHashString (line 2) | function cachedHashString(i){var s=ze[i];return void 0===s&&(s=hashStrin...
function hashString (line 2) | function hashString(i){for(var s=0,u=0;u<i.length;u++)s=31*s+i.charCodeA...
function hashJSObj (line 2) | function hashJSObj(i){var s;if(xe&&void 0!==(s=Se.get(i)))return s;if(vo...
function getIENodeHash (line 2) | function getIENodeHash(i){if(i&&i.nodeType>0)switch(i.nodeType){case 1:r...
function assertNotInfinite (line 2) | function assertNotInfinite(i){invariant(i!==1/0,"Cannot perform this act...
function Map (line 2) | function Map(i){return null==i?emptyMap():isMap(i)&&!isOrdered(i)?i:empt...
function isMap (line 2) | function isMap(i){return!(!i||!i[We])}
function ArrayMapNode (line 2) | function ArrayMapNode(i,s){this.ownerID=i,this.entries=s}
function BitmapIndexedNode (line 2) | function BitmapIndexedNode(i,s,u){this.ownerID=i,this.bitmap=s,this.node...
function HashArrayMapNode (line 2) | function HashArrayMapNode(i,s,u){this.ownerID=i,this.count=s,this.nodes=u}
function HashCollisionNode (line 2) | function HashCollisionNode(i,s,u){this.ownerID=i,this.keyHash=s,this.ent...
function ValueNode (line 2) | function ValueNode(i,s,u){this.ownerID=i,this.keyHash=s,this.entry=u}
function MapIterator (line 2) | function MapIterator(i,s,u){this._type=s,this._reverse=u,this._stack=i._...
function mapIteratorValue (line 2) | function mapIteratorValue(i,s){return iteratorValue(i,s[0],s[1])}
function mapIteratorFrame (line 2) | function mapIteratorFrame(i,s){return{node:i,index:0,__prev:s}}
function makeMap (line 2) | function makeMap(i,s,u,m){var v=Object.create(He);return v.size=i,v._roo...
function emptyMap (line 2) | function emptyMap(){return Ve||(Ve=makeMap(0))}
function updateMap (line 2) | function updateMap(i,s,u){var m,v;if(i._root){var _=MakeRef(X),j=MakeRef...
function updateNode (line 2) | function updateNode(i,s,u,m,v,_,j,M){return i?i.update(s,u,m,v,_,j,M):_=...
function isLeafNode (line 2) | function isLeafNode(i){return i.constructor===ValueNode||i.constructor==...
function mergeIntoNode (line 2) | function mergeIntoNode(i,s,u,m,v){if(i.keyHash===m)return new HashCollis...
function createNodes (line 2) | function createNodes(i,s,u,m){i||(i=new OwnerID);for(var v=new ValueNode...
function packNodes (line 2) | function packNodes(i,s,u,m){for(var v=0,_=0,j=new Array(u),M=0,$=1,W=s.l...
function expandNodes (line 2) | function expandNodes(i,s,u,m,v){for(var _=0,j=new Array(M),$=0;0!==u;$++...
function mergeIntoMapWith (line 2) | function mergeIntoMapWith(i,s,u){for(var m=[],v=0;v<u.length;v++){var _=...
function deepMerger (line 2) | function deepMerger(i,s,u){return i&&i.mergeDeep&&isIterable(s)?i.mergeD...
function deepMergerWith (line 2) | function deepMergerWith(i){return function(s,u,m){if(s&&s.mergeDeepWith&...
function mergeIntoCollectionWith (line 2) | function mergeIntoCollectionWith(i,s,u){return 0===(u=u.filter((function...
function updateInDeepMap (line 2) | function updateInDeepMap(i,s,u,m){var v=i===W,_=s.next();if(_.done){var ...
function popCount (line 2) | function popCount(i){return i=(i=(858993459&(i-=i>>1&1431655765))+(i>>2&...
function setIn (line 2) | function setIn(i,s,u,m){var v=m?i:arrCopy(i);return v[s]=u,v}
function spliceIn (line 2) | function spliceIn(i,s,u,m){var v=i.length+1;if(m&&s+1===v)return i[s]=u,...
function spliceOut (line 2) | function spliceOut(i,s,u){var m=i.length-1;if(u&&s===m)return i.pop(),i;...
function List (line 2) | function List(i){var s=emptyList();if(null==i)return s;if(isList(i))retu...
function isList (line 2) | function isList(i){return!(!i||!i[et])}
function VNode (line 2) | function VNode(i,s){this.array=i,this.ownerID=s}
function iterateList (line 2) | function iterateList(i,s){var u=i._origin,m=i._capacity,v=getTailOffset(...
function makeList (line 2) | function makeList(i,s,u,m,v,_,j){var M=Object.create(tt);return M.size=s...
function emptyList (line 2) | function emptyList(){return rt||(rt=makeList(0,0,j))}
function updateList (line 2) | function updateList(i,s,u){if((s=wrapIndex(i,s))!=s)return i;if(s>=i.siz...
function updateVNode (line 2) | function updateVNode(i,s,u,m,v,_){var M,W=m>>>u&$,X=i&&W<i.array.length;...
function editableVNode (line 2) | function editableVNode(i,s){return s&&i&&s===i.ownerID?i:new VNode(i?i.a...
function listNodeFor (line 2) | function listNodeFor(i,s){if(s>=getTailOffset(i._capacity))return i._tai...
function setListBounds (line 2) | function setListBounds(i,s,u){void 0!==s&&(s|=0),void 0!==u&&(u|=0);var ...
function mergeIntoListWith (line 2) | function mergeIntoListWith(i,s,u){for(var m=[],v=0,_=0;_<u.length;_++){v...
function getTailOffset (line 2) | function getTailOffset(i){return i<M?0:i-1>>>j<<j}
function OrderedMap (line 2) | function OrderedMap(i){return null==i?emptyOrderedMap():isOrderedMap(i)?...
function isOrderedMap (line 2) | function isOrderedMap(i){return isMap(i)&&isOrdered(i)}
function makeOrderedMap (line 2) | function makeOrderedMap(i,s,u,m){var v=Object.create(OrderedMap.prototyp...
function emptyOrderedMap (line 2) | function emptyOrderedMap(){return nt||(nt=makeOrderedMap(emptyMap(),empt...
function updateOrderedMap (line 2) | function updateOrderedMap(i,s,u){var m,v,_=i._map,j=i._list,$=_.get(s),X...
function ToKeyedSequence (line 2) | function ToKeyedSequence(i,s){this._iter=i,this._useKeys=s,this.size=i.s...
function ToIndexedSequence (line 2) | function ToIndexedSequence(i){this._iter=i,this.size=i.size}
function ToSetSequence (line 2) | function ToSetSequence(i){this._iter=i,this.size=i.size}
function FromEntriesSequence (line 2) | function FromEntriesSequence(i){this._iter=i,this.size=i.size}
function flipFactory (line 2) | function flipFactory(i){var s=makeSequence(i);return s._iter=i,s.size=i....
function mapFactory (line 2) | function mapFactory(i,s,u){var m=makeSequence(i);return m.size=i.size,m....
function reverseFactory (line 2) | function reverseFactory(i,s){var u=makeSequence(i);return u._iter=i,u.si...
function filterFactory (line 2) | function filterFactory(i,s,u,m){var v=makeSequence(i);return m&&(v.has=f...
function countByFactory (line 2) | function countByFactory(i,s,u){var m=Map().asMutable();return i.__iterat...
function groupByFactory (line 2) | function groupByFactory(i,s,u){var m=isKeyed(i),v=(isOrdered(i)?OrderedM...
function sliceFactory (line 2) | function sliceFactory(i,s,u,m){var v=i.size;if(void 0!==s&&(s|=0),void 0...
function takeWhileFactory (line 2) | function takeWhileFactory(i,s,u){var m=makeSequence(i);return m.__iterat...
function skipWhileFactory (line 2) | function skipWhileFactory(i,s,u,m){var v=makeSequence(i);return v.__iter...
function concatFactory (line 2) | function concatFactory(i,s){var u=isKeyed(i),m=[i].concat(s).map((functi...
function flattenFactory (line 2) | function flattenFactory(i,s,u){var m=makeSequence(i);return m.__iterateU...
function flatMapFactory (line 2) | function flatMapFactory(i,s,u){var m=iterableClass(i);return i.toSeq().m...
function interposeFactory (line 2) | function interposeFactory(i,s){var u=makeSequence(i);return u.size=i.siz...
function sortFactory (line 2) | function sortFactory(i,s,u){s||(s=defaultComparator);var m=isKeyed(i),v=...
function maxFactory (line 2) | function maxFactory(i,s,u){if(s||(s=defaultComparator),u){var m=i.toSeq(...
function maxCompare (line 2) | function maxCompare(i,s,u){var m=i(u,s);return 0===m&&u!==s&&(null==u||u...
function zipWithFactory (line 2) | function zipWithFactory(i,s,u){var m=makeSequence(i);return m.size=new A...
function reify (line 2) | function reify(i,s){return isSeq(i)?s:i.constructor(s)}
function validateEntry (line 2) | function validateEntry(i){if(i!==Object(i))throw new TypeError("Expected...
function resolveSize (line 2) | function resolveSize(i){return assertNotInfinite(i.size),ensureSize(i)}
function iterableClass (line 2) | function iterableClass(i){return isKeyed(i)?KeyedIterable:isIndexed(i)?I...
function makeSequence (line 2) | function makeSequence(i){return Object.create((isKeyed(i)?KeyedSeq:isInd...
function cacheResultThrough (line 2) | function cacheResultThrough(){return this._iter.cacheResult?(this._iter....
function defaultComparator (line 2) | function defaultComparator(i,s){return i>s?1:i<s?-1:0}
function forceIterator (line 2) | function forceIterator(i){var s=getIterator(i);if(!s){if(!isArrayLike(i)...
function Record (line 2) | function Record(i,s){var u,m=function Record(_){if(_ instanceof m)return...
function makeRecord (line 2) | function makeRecord(i,s,u){var m=Object.create(Object.getPrototypeOf(i))...
function recordName (line 2) | function recordName(i){return i._name||i.constructor.name||"Record"}
function setProps (line 2) | function setProps(i,s){try{s.forEach(setProp.bind(void 0,i))}catch(i){}}
function setProp (line 2) | function setProp(i,s){Object.defineProperty(i,s,{get:function(){return t...
function Set (line 2) | function Set(i){return null==i?emptySet():isSet(i)&&!isOrdered(i)?i:empt...
function isSet (line 2) | function isSet(i){return!(!i||!i[st])}
function updateSet (line 2) | function updateSet(i,s){return i.__ownerID?(i.size=s.size,i._map=s,i):s=...
function makeSet (line 2) | function makeSet(i,s){var u=Object.create(lt);return u.size=i?i.size:0,u...
function emptySet (line 2) | function emptySet(){return at||(at=makeSet(emptyMap()))}
function OrderedSet (line 2) | function OrderedSet(i){return null==i?emptyOrderedSet():isOrderedSet(i)?...
function isOrderedSet (line 2) | function isOrderedSet(i){return isSet(i)&&isOrdered(i)}
function makeOrderedSet (line 2) | function makeOrderedSet(i,s){var u=Object.create(ut);return u.size=i?i.s...
function emptyOrderedSet (line 2) | function emptyOrderedSet(){return ct||(ct=makeOrderedSet(emptyOrderedMap...
function Stack (line 2) | function Stack(i){return null==i?emptyStack():isStack(i)?i:emptyStack()....
function isStack (line 2) | function isStack(i){return!(!i||!i[ht])}
function makeStack (line 2) | function makeStack(i,s,u,m){var v=Object.create(dt);return v.size=i,v._h...
function emptyStack (line 2) | function emptyStack(){return pt||(pt=makeStack(0))}
function mixin (line 2) | function mixin(i,s){var keyCopier=function(u){i.prototype[u]=s[u]};retur...
function keyMapper (line 2) | function keyMapper(i,s){return s}
function entryMapper (line 2) | function entryMapper(i,s){return[s,i]}
function not (line 2) | function not(i){return function(){return!i.apply(this,arguments)}}
function neg (line 2) | function neg(i){return function(){return-i.apply(this,arguments)}}
function quoteString (line 2) | function quoteString(i){return"string"==typeof i?JSON.stringify(i):Strin...
function defaultZipper (line 2) | function defaultZipper(){return arrCopy(arguments)}
function defaultNegComparator (line 2) | function defaultNegComparator(i,s){return i<s?1:i>s?-1:0}
function hashIterable (line 2) | function hashIterable(i){if(i.size===1/0)return 0;var s=isOrdered(i),u=i...
function murmurHashOfSize (line 2) | function murmurHashOfSize(i,s){return s=be(s,3432918353),s=be(s<<15|s>>>...
function hashMerge (line 2) | function hashMerge(i,s){return i^s+2654435769+(i<<6)+(i>>2)|0}
function isObject (line 2) | function isObject(i){var s=typeof i;return!!i&&("object"==s||"function"=...
function toNumber (line 2) | function toNumber(i){if("number"==typeof i)return i;if(function isSymbol...
function invokeFunc (line 2) | function invokeFunc(s){var u=m,_=v;return m=v=void 0,W=s,j=i.apply(_,u)}
function shouldInvoke (line 2) | function shouldInvoke(i){var u=i-$;return void 0===$||u>=s||u<0||Y&&i-W>=_}
function timerExpired (line 2) | function timerExpired(){var i=now();if(shouldInvoke(i))return trailingEd...
function trailingEdge (line 2) | function trailingEdge(i){return M=void 0,Z&&m?invokeFunc(i):(m=v=void 0,j)}
function debounced (line 2) | function debounced(){var i=now(),u=shouldInvoke(i);if(m=arguments,v=this...
function Hash (line 2) | function Hash(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s<u;){...
function LazyWrapper (line 2) | function LazyWrapper(i){this.__wrapped__=i,this.__actions__=[],this.__di...
function ListCache (line 2) | function ListCache(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s...
function LodashWrapper (line 2) | function LodashWrapper(i,s){this.__wrapped__=i,this.__actions__=[],this....
function MapCache (line 2) | function MapCache(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s<...
function SetCache (line 2) | function SetCache(i){var s=-1,u=null==i?0:i.length;for(this.__data__=new...
function Stack (line 2) | function Stack(i){var s=this.__data__=new m(i);this.size=s.size}
function object (line 2) | function object(){}
function curry (line 2) | function curry(i,s,u){var v=m(i,8,void 0,void 0,void 0,void 0,void 0,s=u...
function invokeFunc (line 2) | function invokeFunc(s){var u=$,m=W;return $=W=void 0,ie=s,Y=i.apply(m,u)}
function shouldInvoke (line 2) | function shouldInvoke(i){var u=i-ee;return void 0===ee||u>=s||u<0||le&&i...
function timerExpired (line 2) | function timerExpired(){var i=v();if(shouldInvoke(i))return trailingEdge...
function trailingEdge (line 2) | function trailingEdge(i){return Z=void 0,ce&&$?invokeFunc(i):($=W=void 0...
function debounced (line 2) | function debounced(){var i=v(),u=shouldInvoke(i);if($=arguments,W=this,e...
function baseAry (line 2) | function baseAry(i,s){return 2==s?function(s,u){return i(s,u)}:function(...
function cloneArray (line 2) | function cloneArray(i){for(var s=i?i.length:0,u=Array(s);s--;)u[s]=i[s];...
function wrapImmutable (line 2) | function wrapImmutable(i,s){return function(){var u=arguments.length;if(...
function castCap (line 2) | function castCap(i,s){if(W.cap){var u=m.iterateeRearg[i];if(u)return fun...
function castFixed (line 2) | function castFixed(i,s,u){if(W.fixed&&(Z||!m.skipFixed[i])){var v=m.meth...
function castRearg (line 2) | function castRearg(i,s,u){return W.rearg&&u>1&&(ee||!m.skipRearg[i])?xe(...
function cloneByPath (line 2) | function cloneByPath(i,s){for(var u=-1,m=(s=Pe(s)).length,v=m-1,_=pe(Obj...
function createConverter (line 2) | function createConverter(i,s){var u=m.aliasToReal[i]||i,v=m.remap[u]||u,...
function overArg (line 2) | function overArg(i,s){return function(){var u=arguments.length;if(!u)ret...
function wrap (line 2) | function wrap(i,s,u){var v,_=m.aliasToReal[i]||i,j=s,M=Re[_];return M?j=...
function memoize (line 2) | function memoize(i,s){if("function"!=typeof i||null!=s&&"function"!=type...
function lodash (line 2) | function lodash(i){if(M(i)&&!j(i)&&!(i instanceof m)){if(i instanceof v)...
function highlight (line 2) | function highlight(i,s,u){var j,M=m.configure({}),$=(u||{}).prefix;if("s...
function Emitter (line 2) | function Emitter(i){this.options=i,this.rootNode={children:[]},this.stac...
function noop (line 2) | function noop(){}
function coerceElementMatchingCallback (line 2) | function coerceElementMatchingCallback(i){return"string"==typeof i?s=>s....
class ArraySlice (line 2) | class ArraySlice{constructor(i){this.elements=i||[]}toValue(){return thi...
method constructor (line 2) | constructor(i){this.elements=i||[]}
method toValue (line 2) | toValue(){return this.elements.map((i=>i.toValue()))}
method map (line 2) | map(i,s){return this.elements.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return i=coerceElementMatchingCallback(i),new ArraySlice(t...
method reject (line 2) | reject(i,s){return i=coerceElementMatchingCallback(i),new ArraySlice(t...
method find (line 2) | find(i,s){return i=coerceElementMatchingCallback(i),this.elements.find...
method forEach (line 2) | forEach(i,s){this.elements.forEach(i,s)}
method reduce (line 2) | reduce(i,s){return this.elements.reduce(i,s)}
method includes (line 2) | includes(i){return this.elements.some((s=>s.equals(i)))}
method shift (line 2) | shift(){return this.elements.shift()}
method unshift (line 2) | unshift(i){this.elements.unshift(this.refract(i))}
method push (line 2) | push(i){return this.elements.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method get (line 2) | get(i){return this.elements[i]}
method getValue (line 2) | getValue(i){const s=this.elements[i];if(s)return s.toValue()}
method length (line 2) | get length(){return this.elements.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.elements.length}
method first (line 2) | get first(){return this.elements[0]}
class KeyValuePair (line 2) | class KeyValuePair{constructor(i,s){this.key=i,this.value=s}clone(){cons...
method constructor (line 2) | constructor(i,s){this.key=i,this.value=s}
method clone (line 2) | clone(){const i=new KeyValuePair;return this.key&&(i.key=this.key.clon...
class Namespace (line 2) | class Namespace{constructor(i){this.elementMap={},this.elementDetection=...
method constructor (line 2) | constructor(i){this.elementMap={},this.elementDetection=[],this.Elemen...
method use (line 2) | use(i){return i.namespace&&i.namespace({base:this}),i.load&&i.load({ba...
method useDefault (line 2) | useDefault(){return this.register("null",W.NullElement).register("stri...
method register (line 2) | register(i,s){return this._elements=void 0,this.elementMap[i]=s,this}
method unregister (line 2) | unregister(i){return this._elements=void 0,delete this.elementMap[i],t...
method detect (line 2) | detect(i,s,u){return void 0===u||u?this.elementDetection.unshift([i,s]...
method toElement (line 2) | toElement(i){if(i instanceof this.Element)return i;let s;for(let u=0;u...
method getElementClass (line 2) | getElementClass(i){const s=this.elementMap[i];return void 0===s?this.E...
method fromRefract (line 2) | fromRefract(i){return this.serialiser.deserialise(i)}
method toRefract (line 2) | toRefract(i){return this.serialiser.serialise(i)}
method elements (line 2) | get elements(){return void 0===this._elements&&(this._elements={Elemen...
method serialiser (line 2) | get serialiser(){return new $(this)}
method constructor (line 2) | constructor(){super(),this.register("annotation",op),this.register("co...
class ObjectSlice (line 2) | class ObjectSlice extends v{map(i,s){return this.elements.map((u=>i.bind...
method map (line 2) | map(i,s){return this.elements.map((u=>i.bind(s)(u.value,u.key,u)))}
method filter (line 2) | filter(i,s){return new ObjectSlice(this.elements.filter((u=>i.bind(s)(...
method reject (line 2) | reject(i,s){return this.filter(m(i.bind(s)))}
method forEach (line 2) | forEach(i,s){return this.elements.forEach(((u,m)=>{i.bind(s)(u.value,u...
method keys (line 2) | keys(){return this.map(((i,s)=>s.toValue()))}
method values (line 2) | values(){return this.map((i=>i.toValue()))}
function refract (line 2) | function refract(i){if(i instanceof m)return i;if("string"==typeof i)ret...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="link"}
method relation (line 2) | get relation(){return this.attributes.get("relation")}
method relation (line 2) | set relation(i){this.attributes.set("relation",i)}
method href (line 2) | get href(){return this.attributes.get("href")}
method href (line 2) | set href(i){this.attributes.set("href",i)}
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="ref",this.path||(this....
method path (line 2) | get path(){return this.attributes.get("path")}
method path (line 2) | set path(i){this.attributes.set("path",i)}
class ArrayElement (line 2) | class ArrayElement extends v{constructor(i,s,u){super(i||[],s,u),this.el...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}
method length (line 2) | get length(){return this.content.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.content.length}
method first (line 2) | get first(){return this.getIndex(0)}
method second (line 2) | get second(){return this.getIndex(1)}
method last (line 2) | get last(){return this.getIndex(this.length-1)}
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="boolean"}
method primitive (line 2) | primitive(){return"boolean"}
class Element (line 2) | class Element{constructor(i,s,u){s&&(this.meta=s),u&&(this.attributes=u)...
method constructor (line 2) | constructor(i,s,u){s&&(this.meta=s),u&&(this.attributes=u),this.conten...
method freeze (line 2) | freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,th...
method primitive (line 2) | primitive(){}
method clone (line 2) | clone(){const i=new this.constructor;return i.element=this.element,thi...
method toValue (line 2) | toValue(){return this.content instanceof Element?this.content.toValue(...
method toRef (line 2) | toRef(i){if(""===this.id.toValue())throw Error("Cannot create referenc...
method findRecursive (line 2) | findRecursive(...i){if(arguments.length>1&&!this.isFrozen)throw new Er...
method set (line 2) | set(i){return this.content=i,this}
method equals (line 2) | equals(i){return m(this.toValue(),i)}
method getMetaProperty (line 2) | getMetaProperty(i,s){if(!this.meta.hasKey(i)){if(this.isFrozen){const ...
method setMetaProperty (line 2) | setMetaProperty(i,s){this.meta.set(i,s)}
method element (line 2) | get element(){return this._storedElement||"element"}
method element (line 2) | set element(i){this._storedElement=i}
method content (line 2) | get content(){return this._content}
method content (line 2) | set content(i){if(i instanceof Element)this._content=i;else if(i insta...
method meta (line 2) | get meta(){if(!this._meta){if(this.isFrozen){const i=new this.ObjectEl...
method meta (line 2) | set meta(i){i instanceof this.ObjectElement?this._meta=i:this.meta.set...
method attributes (line 2) | get attributes(){if(!this._attributes){if(this.isFrozen){const i=new t...
method attributes (line 2) | set attributes(i){i instanceof this.ObjectElement?this._attributes=i:t...
method id (line 2) | get id(){return this.getMetaProperty("id","")}
method id (line 2) | set id(i){this.setMetaProperty("id",i)}
method classes (line 2) | get classes(){return this.getMetaProperty("classes",[])}
method classes (line 2) | set classes(i){this.setMetaProperty("classes",i)}
method title (line 2) | get title(){return this.getMetaProperty("title","")}
method title (line 2) | set title(i){this.setMetaProperty("title",i)}
method description (line 2) | get description(){return this.getMetaProperty("description","")}
method description (line 2) | set description(i){this.setMetaProperty("description",i)}
method links (line 2) | get links(){return this.getMetaProperty("links",[])}
method links (line 2) | set links(i){this.setMetaProperty("links",i)}
method isFrozen (line 2) | get isFrozen(){return Object.isFrozen(this)}
method parents (line 2) | get parents(){let{parent:i}=this;const s=new _;for(;i;)s.push(i),i=i.p...
method children (line 2) | get children(){if(Array.isArray(this.content))return new _(this.conten...
method recursiveChildren (line 2) | get recursiveChildren(){const i=new _;return this.children.forEach((s=...
method constructor (line 2) | constructor(i,s,u,v){super(new m,u,v),this.element="member",this.key=i,t...
method key (line 2) | get key(){return this.content.key}
method key (line 2) | set key(i){this.content.key=this.refract(i)}
method value (line 2) | get value(){return this.content.value}
method value (line 2) | set value(i){this.content.value=this.refract(i)}
method constructor (line 2) | constructor(i,s,u){super(i||null,s,u),this.element="null"}
method primitive (line 2) | primitive(){return"null"}
method set (line 2) | set(){return new Error("Cannot set the value of null")}
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="number"}
method primitive (line 2) | primitive(){return"number"}
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="object"}
method primitive (line 2) | primitive(){return"object"}
method toValue (line 2) | toValue(){return this.content.reduce(((i,s)=>(i[s.key.toValue()]=s.value...
method get (line 2) | get(i){const s=this.getMember(i);if(s)return s.value}
method getMember (line 2) | getMember(i){if(void 0!==i)return this.content.find((s=>s.key.toValue()=...
method remove (line 2) | remove(i){let s=null;return this.content=this.content.filter((u=>u.key.t...
method getKey (line 2) | getKey(i){const s=this.getMember(i);if(s)return s.key}
method set (line 2) | set(i,s){if(v(i))return Object.keys(i).forEach((s=>{this.set(s,i[s])})),...
method keys (line 2) | keys(){return this.content.map((i=>i.key.toValue()))}
method values (line 2) | values(){return this.content.map((i=>i.value.toValue()))}
method hasKey (line 2) | hasKey(i){return this.content.some((s=>s.key.equals(i)))}
method items (line 2) | items(){return this.content.map((i=>[i.key.toValue(),i.value.toValue()]))}
method map (line 2) | map(i,s){return this.content.map((u=>i.bind(s)(u.value,u.key,u)))}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach(((m,v,_)=>{const j=i.bind...
method filter (line 2) | filter(i,s){return new M(this.content).filter(i,s)}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method forEach (line 2) | forEach(i,s){return this.content.forEach((u=>i.bind(s)(u.value,u.key,u)))}
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="string"}
method primitive (line 2) | primitive(){return"string"}
method length (line 2) | get length(){return this.content.length}
method serialise (line 2) | serialise(i){if(!(i instanceof this.namespace.elements.Element))throw ne...
method shouldSerialiseContent (line 2) | shouldSerialiseContent(i,s){return"parseResult"===i.element||"httpReques...
method refSerialiseContent (line 2) | refSerialiseContent(i,s){return delete s.attributes,{href:i.toValue(),pa...
method sourceMapSerialiseContent (line 2) | sourceMapSerialiseContent(i){return i.toValue()}
method dataStructureSerialiseContent (line 2) | dataStructureSerialiseContent(i){return[this.serialiseContent(i.content)]}
method enumSerialiseAttributes (line 2) | enumSerialiseAttributes(i){const s=i.attributes.clone(),u=s.remove("enum...
method enumSerialiseContent (line 2) | enumSerialiseContent(i){if(i._attributes){const s=i.attributes.get("enum...
method deserialise (line 2) | deserialise(i){if("string"==typeof i)return new this.namespace.elements....
method serialiseContent (line 2) | serialiseContent(i){if(i instanceof this.namespace.elements.Element)retu...
method deserialiseContent (line 2) | deserialiseContent(i){if(i){if(i.element)return this.deserialise(i);if(i...
method shouldRefract (line 2) | shouldRefract(i){return!!(i._attributes&&i.attributes.keys().length||i._...
method convertKeyToRefract (line 2) | convertKeyToRefract(i,s){return this.shouldRefract(s)?this.serialise(s):...
method serialiseEnum (line 2) | serialiseEnum(i){return i.children.map((i=>this.serialise(i)))}
method serialiseObject (line 2) | serialiseObject(i){const s={};return i.forEach(((i,u)=>{if(i){const m=u....
method deserialiseObject (line 2) | deserialiseObject(i,s){Object.keys(i).forEach((u=>{s.set(u,this.deserial...
method constructor (line 2) | constructor(i){this.namespace=i||new this.Namespace}
method serialise (line 2) | serialise(i){if(!(i instanceof this.namespace.elements.Element))throw ne...
method deserialise (line 2) | deserialise(i){if(!i.element)throw new Error("Given value is not an obje...
method serialiseContent (line 2) | serialiseContent(i){if(i instanceof this.namespace.elements.Element)retu...
method deserialiseContent (line 2) | deserialiseContent(i){if(i){if(i.element)return this.deserialise(i);if(i...
method serialiseObject (line 2) | serialiseObject(i){const s={};if(i.forEach(((i,u)=>{i&&(s[u.toValue()]=t...
method deserialiseObject (line 2) | deserialiseObject(i,s){Object.keys(i).forEach((u=>{s.set(u,this.deserial...
function addNumericSeparator (line 2) | function addNumericSeparator(i,s){if(i===1/0||i===-1/0||i!=i||i&&i>-1e3&...
function wrapQuotes (line 2) | function wrapQuotes(i,s,u){var m="double"===(u.quoteStyle||s)?'"':"'";re...
function quote (line 2) | function quote(i){return de.call(String(i),/"/g,""")}
function isArray (line 2) | function isArray(i){return!("[object Array]"!==toStr(i)||qe&&"object"==t...
function isRegExp (line 2) | function isRegExp(i){return!("[object RegExp]"!==toStr(i)||qe&&"object"=...
function isSymbol (line 2) | function isSymbol(i){if(Re)return i&&"object"==typeof i&&i instanceof Sy...
function inspect (line 2) | function inspect(i,s,_){if(s&&(m=Se.call(m)).push(s),_){var j={depth:v.d...
function has (line 2) | function has(i,s){return Ye.call(i,s)}
function toStr (line 2) | function toStr(i){return ae.call(i)}
function indexOf (line 2) | function indexOf(i,s){if(i.indexOf)return i.indexOf(s);for(var u=0,m=i.l...
function inspectString (line 2) | function inspectString(i,s){if(i.length>s.maxStringLength){var u=i.lengt...
function lowbyte (line 2) | function lowbyte(i){var s=i.charCodeAt(0),u={8:"b",9:"t",10:"n",12:"f",1...
function markBoxed (line 2) | function markBoxed(i){return"Object("+i+")"}
function weakCollectionOf (line 2) | function weakCollectionOf(i){return i+" { ? }"}
function collectionOf (line 2) | function collectionOf(i,s,u,m){return i+" ("+s+") {"+(m?indentedJoin(u,m...
function indentedJoin (line 2) | function indentedJoin(i,s){if(0===i.length)return"";var u="\n"+s.prev+s....
function arrObjKeys (line 2) | function arrObjKeys(i,s){var u=isArray(i),m=[];if(u){m.length=i.length;f...
function defaultSetTimout (line 2) | function defaultSetTimout(){throw new Error("setTimeout has not been def...
function defaultClearTimeout (line 2) | function defaultClearTimeout(){throw new Error("clearTimeout has not bee...
function runTimeout (line 2) | function runTimeout(i){if(s===setTimeout)return setTimeout(i,0);if((s===...
function cleanUpNextTick (line 2) | function cleanUpNextTick(){j&&v&&(j=!1,v.length?_=v.concat(_):M=-1,_.len...
function drainQueue (line 2) | function drainQueue(){if(!j){var i=runTimeout(cleanUpNextTick);j=!0;for(...
function Item (line 2) | function Item(i,s){this.fun=i,this.array=s}
function noop (line 2) | function noop(){}
function emptyFunction (line 2) | function emptyFunction(){}
function emptyFunctionWithReset (line 2) | function emptyFunctionWithReset(){}
function shim (line 2) | function shim(i,s,u,v,_,j){if(j!==m){var M=new Error("Calling PropTypes ...
function getShim (line 2) | function getShim(){return shim}
function decode (line 2) | function decode(i){try{return decodeURIComponent(i.replace(/\+/g," "))}c...
function encode (line 2) | function encode(i){try{return encodeURIComponent(i)}catch(i){return null}}
method constructor (line 2) | constructor(i,s){if(this._setDefaults(i),i instanceof RegExp)this.ignore...
method _setDefaults (line 2) | _setDefaults(i){this.max=null!=i.max?i.max:null!=RandExp.prototype.max?R...
method gen (line 2) | gen(){return this._gen(this.tokens,[])}
method _gen (line 2) | _gen(i,s){var u,m,v,j,M;switch(i.type){case _.ROOT:case _.GROUP:if(i.fol...
method _toOtherCase (line 2) | _toOtherCase(i){return i+(97<=i&&i<=122?-32:65<=i&&i<=90?32:0)}
method _randBool (line 2) | _randBool(){return!this.randInt(0,1)}
method _randSelect (line 2) | _randSelect(i){return i instanceof v?i.index(this.randInt(0,i.length-1))...
method _expand (line 2) | _expand(i){if(i.type===m.types.CHAR)return new v(i.value);if(i.type===m....
method randInt (line 2) | randInt(i,s){return i+Math.floor(Math.random()*(1+s-i))}
method defaultRange (line 2) | get defaultRange(){return this._range=this._range||new v(32,126)}
method defaultRange (line 2) | set defaultRange(i){this._range=i}
method randexp (line 2) | static randexp(i,s){var u;return"string"==typeof i&&(i=new RegExp(i,s)),...
method sugar (line 2) | static sugar(){RegExp.prototype.gen=function(){return RandExp.randexp(th...
function _typeof (line 2) | function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==...
function _interopRequireDefault (line 2) | function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}
function ownKeys (line 2) | function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbo...
function _objectSpread (line 2) | function _objectSpread(i){for(var s=1;s<arguments.length;s++){var u=null...
function _objectWithoutProperties (line 2) | function _objectWithoutProperties(i,s){if(null==i)return{};var u,m,v=fun...
function _defineProperties (line 2) | function _defineProperties(i,s){for(var u=0;u<s.length;u++){var m=s[u];m...
function _setPrototypeOf (line 2) | function _setPrototypeOf(i,s){return _setPrototypeOf=Object.setPrototype...
function _createSuper (line 2) | function _createSuper(i){var s=function _isNativeReflectConstruct(){if("...
function _assertThisInitialized (line 2) | function _assertThisInitialized(i){if(void 0===i)throw new ReferenceErro...
function _getPrototypeOf (line 2) | function _getPrototypeOf(i){return _getPrototypeOf=Object.setPrototypeOf...
function _defineProperty (line 2) | function _defineProperty(i,s,u){return s in i?Object.defineProperty(i,s,...
function CopyToClipboard (line 2) | function CopyToClipboard(){var i;!function _classCallCheck(i,s){if(!(i i...
function _typeof (line 2) | function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==...
function _interopRequireDefault (line 2) | function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}
function _objectWithoutProperties (line 2) | function _objectWithoutProperties(i,s){if(null==i)return{};var u,m,v=fun...
function ownKeys (line 2) | function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbo...
function _objectSpread (line 2) | function _objectSpread(i){for(var s=1;s<arguments.length;s++){var u=null...
function _defineProperties (line 2) | function _defineProperties(i,s){for(var u=0;u<s.length;u++){var m=s[u];m...
function _setPrototypeOf (line 2) | function _setPrototypeOf(i,s){return _setPrototypeOf=Object.setPrototype...
function _createSuper (line 2) | function _createSuper(i){var s=function _isNativeReflectConstruct(){if("...
function _assertThisInitialized (line 2) | function _assertThisInitialized(i){if(void 0===i)throw new ReferenceErro...
function _getPrototypeOf (line 2) | function _getPrototypeOf(i){return _getPrototypeOf=Object.setPrototypeOf...
function _defineProperty (line 2) | function _defineProperty(i,s,u){return s in i?Object.defineProperty(i,s,...
function DebounceInput (line 2) | function DebounceInput(i){var u;!function _classCallCheck(i,s){if(!(i in...
function y (line 2) | function y(i){for(var s="https://reactjs.org/docs/error-decoder.html?inv...
function da (line 2) | function da(i,s){ea(i,s),ea(i+"Capture",s)}
function ea (line 2) | function ea(i,s){for(M[i]=s,i=0;i<s.length;i++)j.add(s[i])}
function B (line 2) | function B(i,s,u,m,v,_,j){this.acceptsBooleans=2===s||3===s||4===s,this....
function pa (line 2) | function pa(i){return i[1].toUpperCase()}
function qa (line 2) | function qa(i,s,u,m){var v=ee.hasOwnProperty(s)?ee[s]:null;(null!==v?0==...
function La (line 2) | function La(i){return null===i||"object"!=typeof i?null:"function"==type...
function Na (line 2) | function Na(i){if(void 0===We)try{throw Error()}catch(i){var s=i.stack.t...
function Pa (line 2) | function Pa(i,s){if(!i||Xe)return"";Xe=!0;var u=Error.prepareStackTrace;...
function Qa (line 2) | function Qa(i){switch(i.tag){case 5:return Na(i.type);case 16:return Na(...
function Ra (line 2) | function Ra(i){if(null==i)return null;if("function"==typeof i)return i.d...
function Sa (line 2) | function Sa(i){switch(typeof i){case"boolean":case"number":case"object":...
function Ta (line 2) | function Ta(i){var s=i.type;return(i=i.nodeName)&&"input"===i.toLowerCas...
function Va (line 2) | function Va(i){i._valueTracker||(i._valueTracker=function Ua(i){var s=Ta...
function Wa (line 2) | function Wa(i){if(!i)return!1;var s=i._valueTracker;if(!s)return!0;var u...
function Xa (line 2) | function Xa(i){if(void 0===(i=i||("undefined"!=typeof document?document:...
function Ya (line 2) | function Ya(i,s){var u=s.checked;return v({},s,{defaultChecked:void 0,de...
function Za (line 2) | function Za(i,s){var u=null==s.defaultValue?"":s.defaultValue,m=null!=s....
function $a (line 2) | function $a(i,s){null!=(s=s.checked)&&qa(i,"checked",s,!1)}
function ab (line 2) | function ab(i,s){$a(i,s);var u=Sa(s.value),m=s.type;if(null!=u)"number"=...
function cb (line 2) | function cb(i,s,u){if(s.hasOwnProperty("value")||s.hasOwnProperty("defau...
function bb (line 2) | function bb(i,s,u){"number"===s&&Xa(i.ownerDocument)===i||(null==u?i.def...
function eb (line 2) | function eb(i,s){return i=v({children:void 0},s),(s=function db(i){var s...
function fb (line 2) | function fb(i,s,u,m){if(i=i.options,s){s={};for(var v=0;v<u.length;v++)s...
function gb (line 2) | function gb(i,s){if(null!=s.dangerouslySetInnerHTML)throw Error(y(91));r...
function hb (line 2) | function hb(i,s){var u=s.value;if(null==u){if(u=s.children,s=s.defaultVa...
function ib (line 2) | function ib(i,s){var u=Sa(s.value),m=Sa(s.defaultValue);null!=u&&((u=""+...
function jb (line 2) | function jb(i){var s=i.textContent;s===i._wrapperState.initialValue&&""!...
function lb (line 2) | function lb(i){switch(i){case"svg":return"http://www.w3.org/2000/svg";ca...
function mb (line 2) | function mb(i,s){return null==i||"http://www.w3.org/1999/xhtml"===i?lb(s...
function pb (line 2) | function pb(i,s){if(s){var u=i.firstChild;if(u&&u===i.lastChild&&3===u.n...
function sb (line 2) | function sb(i,s,u){return null==s||"boolean"==typeof s||""===s?"":u||"nu...
function tb (line 2) | function tb(i,s){for(var u in i=i.style,s)if(s.hasOwnProperty(u)){var m=...
function vb (line 2) | function vb(i,s){if(s){if(ot[i]&&(null!=s.children||null!=s.dangerouslyS...
function wb (line 2) | function wb(i,s){if(-1===i.indexOf("-"))return"string"==typeof s.is;swit...
function xb (line 2) | function xb(i){return(i=i.target||i.srcElement||window).correspondingUse...
function Bb (line 2) | function Bb(i){if(i=Cb(i)){if("function"!=typeof it)throw Error(y(280));...
function Eb (line 2) | function Eb(i){at?st?st.push(i):st=[i]:at=i}
function Fb (line 2) | function Fb(){if(at){var i=at,s=st;if(st=at=null,Bb(i),s)for(i=0;i<s.len...
function Gb (line 2) | function Gb(i,s){return i(s)}
function Hb (line 2) | function Hb(i,s,u,m,v){return i(s,u,m,v)}
function Ib (line 2) | function Ib(){}
function Mb (line 2) | function Mb(){null===at&&null===st||(Ib(),Fb())}
function Ob (line 2) | function Ob(i,s){var u=i.stateNode;if(null===u)return null;var m=Db(u);i...
function Rb (line 2) | function Rb(i,s,u,m,v,_,j,M,$){var W=Array.prototype.slice.call(argument...
function Xb (line 2) | function Xb(i,s,u,m,v,_,j,M,$){dt=!1,mt=null,Rb.apply(vt,arguments)}
function Zb (line 2) | function Zb(i){var s=i,u=i;if(i.alternate)for(;s.return;)s=s.return;else...
function $b (line 2) | function $b(i){if(13===i.tag){var s=i.memoizedState;if(null===s&&(null!=...
function ac (line 2) | function ac(i){if(Zb(i)!==i)throw Error(y(188))}
function cc (line 2) | function cc(i){if(i=function bc(i){var s=i.alternate;if(!s){if(null===(s...
function dc (line 2) | function dc(i,s){for(var u=i.alternate;null!==s;){if(s===i||s===u)return...
function rc (line 2) | function rc(i,s,u,m,v){return{blockedOn:i,domEventName:s,eventSystemFlag...
function sc (line 2) | function sc(i,s){switch(i){case"focusin":case"focusout":kt=null;break;ca...
function tc (line 2) | function tc(i,s,u,m,v,_){return null===i||i.nativeEvent!==_?(i=rc(s,u,m,...
function vc (line 2) | function vc(i){var s=wc(i.target);if(null!==s){var u=Zb(s);if(null!==u)i...
function xc (line 2) | function xc(i){if(null!==i.blockedOn)return!1;for(var s=i.targetContaine...
function zc (line 2) | function zc(i,s,u){xc(i)&&u.delete(s)}
function Ac (line 2) | function Ac(){for(St=!1;0<xt.length;){var i=xt[0];if(null!==i.blockedOn)...
function Bc (line 2) | function Bc(i,s){i.blockedOn===s&&(i.blockedOn=null,St||(St=!0,_.unstabl...
function Cc (line 2) | function Cc(i){function b(s){return Bc(s,i)}if(0<xt.length){Bc(xt[0],i);...
function Dc (line 2) | function Dc(i,s){var u={};return u[i.toLowerCase()]=s.toLowerCase(),u["W...
function Hc (line 2) | function Hc(i){if(Tt[i])return Tt[i];if(!Nt[i])return i;var s,u=Nt[i];fo...
function Pc (line 2) | function Pc(i,s){for(var u=0;u<i.length;u+=2){var m=i[u],v=i[u+1];v="on"...
function Rc (line 2) | function Rc(i){if(0!=(1&i))return Ut=15,1;if(0!=(2&i))return Ut=14,2;if(...
function Uc (line 2) | function Uc(i,s){var u=i.pendingLanes;if(0===u)return Ut=0;var m=0,v=0,_...
function Wc (line 2) | function Wc(i){return 0!==(i=-1073741825&i.pendingLanes)?i:1073741824&i?...
function Xc (line 2) | function Xc(i,s){switch(i){case 15:return 1;case 14:return 2;case 12:ret...
function Yc (line 2) | function Yc(i){return i&-i}
function Zc (line 2) | function Zc(i){for(var s=[],u=0;31>u;u++)s.push(i);return s}
function $c (line 2) | function $c(i,s,u){i.pendingLanes|=s;var m=s-1;i.suspendedLanes&=m,i.pin...
function gd (line 2) | function gd(i,s,u,m){ct||Ib();var v=hd,_=ct;ct=!0;try{Hb(v,i,s,u,m)}fina...
function id (line 2) | function id(i,s,u,m){Ht(Kt,hd.bind(null,i,s,u,m))}
function hd (line 2) | function hd(i,s,u,m){var v;if(Jt)if((v=0==(4&s))&&0<xt.length&&-1<Pt.ind...
function yc (line 2) | function yc(i,s,u,m){var v=xb(m);if(null!==(v=wc(v))){var _=Zb(v);if(nul...
function nd (line 2) | function nd(){if(Yt)return Yt;var i,s,u=Xt,m=u.length,v="value"in Gt?Gt....
function od (line 2) | function od(i){var s=i.keyCode;return"charCode"in i?0===(i=i.charCode)&&...
function pd (line 2) | function pd(){return!0}
function qd (line 2) | function qd(){return!1}
function rd (line 2) | function rd(i){function b(s,u,m,v,_){for(var j in this._reactName=s,this...
function Pd (line 2) | function Pd(i){var s=this.nativeEvent;return s.getModifierState?s.getMod...
function zd (line 2) | function zd(){return Pd}
function ge (line 2) | function ge(i,s){switch(i){case"keyup":return-1!==kr.indexOf(s.keyCode);...
function he (line 2) | function he(i){return"object"==typeof(i=i.detail)&&"data"in i?i.data:null}
function me (line 2) | function me(i){var s=i&&i.nodeName&&i.nodeName.toLowerCase();return"inpu...
function ne (line 2) | function ne(i,s,u,m){Eb(m),0<(s=oe(s,"onChange")).length&&(u=new rr("onC...
function re (line 2) | function re(i){se(i,0)}
function te (line 2) | function te(i){if(Wa(ue(i)))return i}
function ve (line 2) | function ve(i,s){if("change"===i)return s}
function Ae (line 2) | function Ae(){Mr&&(Mr.detachEvent("onpropertychange",Be),Rr=Mr=null)}
function Be (line 2) | function Be(i){if("value"===i.propertyName&&te(Rr)){var s=[];if(ne(s,Rr,...
function Ce (line 2) | function Ce(i,s,u){"focusin"===i?(Ae(),Rr=u,(Mr=s).attachEvent("onproper...
function De (line 2) | function De(i){if("selectionchange"===i||"keyup"===i||"keydown"===i)retu...
function Ee (line 2) | function Ee(i,s){if("click"===i)return te(s)}
function Fe (line 2) | function Fe(i,s){if("input"===i||"change"===i)return te(s)}
function Je (line 2) | function Je(i,s){if(qr(i,s))return!0;if("object"!=typeof i||null===i||"o...
function Ke (line 2) | function Ke(i){for(;i&&i.firstChild;)i=i.firstChild;return i}
function Le (line 2) | function Le(i,s){var u,m=Ke(i);for(i=0;m;){if(3===m.nodeType){if(u=i+m.t...
function Me (line 2) | function Me(i,s){return!(!i||!s)&&(i===s||(!i||3!==i.nodeType)&&(s&&3===...
function Ne (line 2) | function Ne(){for(var i=window,s=Xa();s instanceof i.HTMLIFrameElement;)...
function Oe (line 2) | function Oe(i){var s=i&&i.nodeName&&i.nodeName.toLowerCase();return s&&(...
function Ue (line 2) | function Ue(i,s,u){var m=u.window===u?u.document:9===u.nodeType?u:u.owne...
function Ze (line 2) | function Ze(i,s,u){var m=i.type||"unknown-event";i.currentTarget=u,funct...
function se (line 2) | function se(i,s){s=0!=(4&s);for(var u=0;u<i.length;u++){var m=i[u],v=m.e...
function G (line 2) | function G(i,s){var u=$e(s),m=i+"__bubble";u.has(m)||(af(s,i,2,!1),u.add...
function cf (line 2) | function cf(i){i[Yr]||(i[Yr]=!0,j.forEach((function(s){Xr.has(s)||df(s,!...
function df (line 2) | function df(i,s,u,m){var v=4<arguments.length&&void 0!==arguments[4]?arg...
function af (line 2) | function af(i,s,u,m){var v=qt.get(s);switch(void 0===v?2:v){case 0:v=gd;...
function jd (line 2) | function jd(i,s,u,m,v){var _=m;if(0==(1&s)&&0==(2&s)&&null!==m)e:for(;;)...
function ef (line 2) | function ef(i,s,u){return{instance:i,listener:s,currentTarget:u}}
function oe (line 2) | function oe(i,s){for(var u=s+"Capture",m=[];null!==i;){var v=i,_=v.state...
function gf (line 2) | function gf(i){if(null===i)return null;do{i=i.return}while(i&&5!==i.tag)...
function hf (line 2) | function hf(i,s,u,m,v){for(var _=s._reactName,j=[];null!==u&&u!==m;){var...
function jf (line 2) | function jf(){}
function mf (line 2) | function mf(i,s){switch(i){case"button":case"input":case"select":case"te...
function nf (line 2) | function nf(i,s){return"textarea"===i||"option"===i||"noscript"===i||"st...
function qf (line 2) | function qf(i){1===i.nodeType?i.textContent="":9===i.nodeType&&(null!=(i...
function rf (line 2) | function rf(i){for(;null!=i;i=i.nextSibling){var s=i.nodeType;if(1===s||...
function sf (line 2) | function sf(i){i=i.previousSibling;for(var s=0;i;){if(8===i.nodeType){va...
function wc (line 2) | function wc(i){var s=i[on];if(s)return s;for(var u=i.parentNode;u;){if(s...
function Cb (line 2) | function Cb(i){return!(i=i[on]||i[sn])||5!==i.tag&&6!==i.tag&&13!==i.tag...
function ue (line 2) | function ue(i){if(5===i.tag||6===i.tag)return i.stateNode;throw Error(y(...
function Db (line 2) | function Db(i){return i[an]||null}
function $e (line 2) | function $e(i){var s=i[ln];return void 0===s&&(s=i[ln]=new Set),s}
function Bf (line 2) | function Bf(i){return{current:i}}
function H (line 2) | function H(i){0>un||(i.current=cn[un],cn[un]=null,un--)}
function I (line 2) | function I(i,s){un++,cn[un]=i.current,i.current=s}
function Ef (line 2) | function Ef(i,s){var u=i.type.contextTypes;if(!u)return pn;var m=i.state...
function Ff (line 2) | function Ff(i){return null!=(i=i.childContextTypes)}
function Gf (line 2) | function Gf(){H(dn),H(hn)}
function Hf (line 2) | function Hf(i,s,u){if(hn.current!==pn)throw Error(y(168));I(hn,s),I(dn,u)}
function If (line 2) | function If(i,s,u){var m=i.stateNode;if(i=s.childContextTypes,"function"...
function Jf (line 2) | function Jf(i){return i=(i=i.stateNode)&&i.__reactInternalMemoizedMerged...
function Kf (line 2) | function Kf(i,s,u){var m=i.stateNode;if(!m)throw Error(y(169));u?(i=If(i...
function eg (line 2) | function eg(){switch(Sn()){case xn:return 99;case kn:return 98;case On:r...
function fg (line 2) | function fg(i){switch(i){case 99:return xn;case 98:return kn;case 97:ret...
function gg (line 2) | function gg(i,s){return i=fg(i),yn(i,s)}
function hg (line 2) | function hg(i,s,u){return i=fg(i),vn(i,s,u)}
function ig (line 2) | function ig(){if(null!==Nn){var i=Nn;Nn=null,bn(i)}jg()}
function jg (line 2) | function jg(){if(!Tn&&null!==Pn){Tn=!0;var i=0;try{var s=Pn;gg(99,(funct...
function lg (line 2) | function lg(i,s){if(i&&i.defaultProps){for(var u in s=v({},s),i=i.defaul...
function qg (line 2) | function qg(){qn=Fn=Ln=null}
function rg (line 2) | function rg(i){var s=Bn.current;H(Bn),i.type._context._currentValue=s}
function sg (line 2) | function sg(i,s){for(;null!==i;){var u=i.alternate;if((i.childLanes&s)==...
function tg (line 2) | function tg(i,s){Ln=i,qn=Fn=null,null!==(i=i.dependencies)&&null!==i.fir...
function vg (line 2) | function vg(i,s){if(qn!==i&&!1!==s&&0!==s)if("number"==typeof s&&1073741...
function xg (line 2) | function xg(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:...
function yg (line 2) | function yg(i,s){i=i.updateQueue,s.updateQueue===i&&(s.updateQueue={base...
function zg (line 2) | function zg(i,s){return{eventTime:i,lane:s,tag:0,payload:null,callback:n...
function Ag (line 2) | function Ag(i,s){if(null!==(i=i.updateQueue)){var u=(i=i.shared).pending...
function Bg (line 2) | function Bg(i,s){var u=i.updateQueue,m=i.alternate;if(null!==m&&u===(m=m...
function Cg (line 2) | function Cg(i,s,u,m){var _=i.updateQueue;$n=!1;var j=_.firstBaseUpdate,M...
function Eg (line 2) | function Eg(i,s,u){if(i=s.effects,s.effects=null,null!==i)for(s=0;s<i.le...
function Gg (line 2) | function Gg(i,s,u,m){u=null==(u=u(m,s=i.memoizedState))?s:v({},s,u),i.me...
function Lg (line 2) | function Lg(i,s,u,m,v,_,j){return"function"==typeof(i=i.stateNode).shoul...
function Mg (line 2) | function Mg(i,s,u){var m=!1,v=pn,_=s.contextType;return"object"==typeof ...
function Ng (line 2) | function Ng(i,s,u,m){i=s.state,"function"==typeof s.componentWillReceive...
function Og (line 2) | function Og(i,s,u,m){var v=i.stateNode;v.props=u,v.state=i.memoizedState...
function Qg (line 2) | function Qg(i,s,u){if(null!==(i=u.ref)&&"function"!=typeof i&&"object"!=...
function Rg (line 2) | function Rg(i,s){if("textarea"!==i.type)throw Error(y(31,"[object Object...
function Sg (line 2) | function Sg(i){function b(s,u){if(i){var m=s.lastEffect;null!==m?(m.next...
function dh (line 2) | function dh(i){if(i===Hn)throw Error(y(174));return i}
function eh (line 2) | function eh(i,s){switch(I(Xn,s),I(Gn,i),I(Jn,Hn),i=s.nodeType){case 9:ca...
function fh (line 2) | function fh(){H(Jn),H(Gn),H(Xn)}
function gh (line 2) | function gh(i){dh(Xn.current);var s=dh(Jn.current),u=mb(s,i.type);s!==u&...
function hh (line 2) | function hh(i){Gn.current===i&&(H(Jn),H(Gn))}
function ih (line 2) | function ih(i){for(var s=i;null!==s;){if(13===s.tag){var u=s.memoizedSta...
function mh (line 2) | function mh(i,s){var u=nh(5,null,null,0);u.elementType="DELETED",u.type=...
function oh (line 2) | function oh(i,s){switch(i.tag){case 5:var u=i.type;return null!==(s=1!==...
function ph (line 2) | function ph(i){if(eo){var s=Zn;if(s){var u=s;if(!oh(i,s)){if(!(s=rf(u.ne...
function qh (line 2) | function qh(i){for(i=i.return;null!==i&&5!==i.tag&&3!==i.tag&&13!==i.tag...
function rh (line 2) | function rh(i){if(i!==Qn)return!1;if(!eo)return qh(i),eo=!0,!1;var s=i.t...
function sh (line 2) | function sh(){Zn=Qn=null,eo=!1}
function uh (line 2) | function uh(){for(var i=0;i<to.length;i++)to[i]._workInProgressVersionPr...
function Ah (line 2) | function Ah(){throw Error(y(321))}
function Bh (line 2) | function Bh(i,s){if(null===s)return!1;for(var u=0;u<s.length&&u<i.length...
function Ch (line 2) | function Ch(i,s,u,m,v,_){if(oo=_,io=s,s.memoizedState=null,s.updateQueue...
function Hh (line 2) | function Hh(){var i={memoizedState:null,baseState:null,baseQueue:null,qu...
function Ih (line 2) | function Ih(){if(null===ao){var i=io.alternate;i=null!==i?i.memoizedStat...
function Jh (line 2) | function Jh(i,s){return"function"==typeof s?s(i):s}
function Kh (line 2) | function Kh(i){var s=Ih(),u=s.queue;if(null===u)throw Error(y(311));u.la...
function Lh (line 2) | function Lh(i){var s=Ih(),u=s.queue;if(null===u)throw Error(y(311));u.la...
function Mh (line 2) | function Mh(i,s,u){var m=s._getVersion;m=m(s._source);var v=s._workInPro...
function Nh (line 2) | function Nh(i,s,u,m){var v=Co;if(null===v)throw Error(y(349));var _=s._g...
function Ph (line 2) | function Ph(i,s,u){return Nh(Ih(),i,s,u)}
function Qh (line 2) | function Qh(i){var s=Hh();return"function"==typeof i&&(i=i()),s.memoized...
function Rh (line 2) | function Rh(i,s,u,m){return i={tag:i,create:s,destroy:u,deps:m,next:null...
function Sh (line 2) | function Sh(i){return i={current:i},Hh().memoizedState=i}
function Th (line 2) | function Th(){return Ih().memoizedState}
function Uh (line 2) | function Uh(i,s,u,m){var v=Hh();io.flags|=i,v.memoizedState=Rh(1|s,u,voi...
function Vh (line 2) | function Vh(i,s,u,m){var v=Ih();m=void 0===m?null:m;var _=void 0;if(null...
function Wh (line 2) | function Wh(i,s){return Uh(516,4,i,s)}
function Xh (line 2) | function Xh(i,s){return Vh(516,4,i,s)}
function Yh (line 2) | function Yh(i,s){return Vh(4,2,i,s)}
function Zh (line 2) | function Zh(i,s){return"function"==typeof s?(i=i(),s(i),function(){s(nul...
function $h (line 2) | function $h(i,s,u){return u=null!=u?u.concat([i]):null,Vh(4,2,Zh.bind(nu...
function ai (line 2) | function ai(){}
function bi (line 2) | function bi(i,s){var u=Ih();s=void 0===s?null:s;var m=u.memoizedState;re...
function ci (line 2) | function ci(i,s){var u=Ih();s=void 0===s?null:s;var m=u.memoizedState;re...
function di (line 2) | function di(i,s){var u=eg();gg(98>u?98:u,(function(){i(!0)})),gg(97<u?97...
function Oh (line 2) | function Oh(i,s,u){var m=Hg(),v=Ig(i),_={lane:v,action:u,eagerReducer:nu...
function fi (line 2) | function fi(i,s,u,m){s.child=null===i?Kn(s,null,u,m):Wn(s,i.child,u,m)}
function gi (line 2) | function gi(i,s,u,m,v){u=u.render;var _=s.ref;return tg(s,v),m=Ch(i,s,u,...
function ii (line 2) | function ii(i,s,u,m,v,_){if(null===i){var j=u.type;return"function"!=typ...
function ki (line 2) | function ki(i,s,u,m,v,_){if(null!==i&&Je(i.memoizedProps,m)&&i.ref===s.r...
function mi (line 2) | function mi(i,s,u){var m=s.pendingProps,v=m.children,_=null!==i?i.memoiz...
function oi (line 2) | function oi(i,s){var u=s.ref;(null===i&&null!==u||null!==i&&i.ref!==u)&&...
function li (line 2) | function li(i,s,u,m,v){var _=Ff(u)?fn:hn.current;return _=Ef(s,_),tg(s,v...
function pi (line 2) | function pi(i,s,u,m,v){if(Ff(u)){var _=!0;Jf(s)}else _=!1;if(tg(s,v),nul...
function qi (line 2) | function qi(i,s,u,m,v,_){oi(i,s);var j=0!=(64&s.flags);if(!m&&!j)return ...
function ri (line 2) | function ri(i){var s=i.stateNode;s.pendingContext?Hf(0,s.pendingContext,...
function ti (line 2) | function ti(i,s,u){var m,v=s.pendingProps,_=Yn.current,j=!1;return(m=0!=...
function ui (line 2) | function ui(i,s,u,m){var v=i.mode,_=i.child;return s={mode:"hidden",chil...
function xi (line 2) | function xi(i,s,u,m){var v=i.child;return i=v.sibling,u=Tg(v,{mode:"visi...
function wi (line 2) | function wi(i,s,u,m,v){var _=s.mode,j=i.child;i=j.sibling;var M={mode:"h...
function yi (line 2) | function yi(i,s){i.lanes|=s;var u=i.alternate;null!==u&&(u.lanes|=s),sg(...
function zi (line 2) | function zi(i,s,u,m,v,_){var j=i.memoizedState;null===j?i.memoizedState=...
function Ai (line 2) | function Ai(i,s,u){var m=s.pendingProps,v=m.revealOrder,_=m.tail;if(fi(i...
function hi (line 2) | function hi(i,s,u){if(null!==i&&(s.dependencies=i.dependencies),Do|=s.la...
function Fi (line 2) | function Fi(i,s){if(!eo)switch(i.tailMode){case"hidden":s=i.tail;for(var...
function Gi (line 2) | function Gi(i,s,u){var m=s.pendingProps;switch(s.tag){case 2:case 16:cas...
function Li (line 2) | function Li(i){switch(i.tag){case 1:Ff(i.type)&&Gf();var s=i.flags;retur...
function Mi (line 2) | function Mi(i,s){try{var u="",m=s;do{u+=Qa(m),m=m.return}while(m);var v=...
function Ni (line 2) | function Ni(i,s){try{console.error(s.value)}catch(i){setTimeout((functio...
function Pi (line 2) | function Pi(i,s,u){(u=zg(-1,u)).tag=3,u.payload={element:null};var m=s.v...
function Si (line 2) | function Si(i,s,u){(u=zg(-1,u)).tag=3;var m=i.type.getDerivedStateFromEr...
function Vi (line 2) | function Vi(i){var s=i.ref;if(null!==s)if("function"==typeof s)try{s(nul...
function Xi (line 2) | function Xi(i,s){switch(s.tag){case 0:case 11:case 15:case 22:case 5:cas...
function Yi (line 2) | function Yi(i,s,u){switch(u.tag){case 0:case 11:case 15:case 22:if(null!...
function aj (line 2) | function aj(i,s){for(var u=i;;){if(5===u.tag){var m=u.stateNode;if(s)"fu...
function bj (line 2) | function bj(i,s){if(gn&&"function"==typeof gn.onCommitFiberUnmount)try{g...
function dj (line 2) | function dj(i){i.alternate=null,i.child=null,i.dependencies=null,i.first...
function ej (line 2) | function ej(i){return 5===i.tag||3===i.tag||4===i.tag}
function fj (line 2) | function fj(i){e:{for(var s=i.return;null!==s;){if(ej(s))break e;s=s.ret...
function gj (line 2) | function gj(i,s,u){var m=i.tag,v=5===m||6===m;if(v)i=v?i.stateNode:i.sta...
function hj (line 2) | function hj(i,s,u){var m=i.tag,v=5===m||6===m;if(v)i=v?i.stateNode:i.sta...
function cj (line 2) | function cj(i,s){for(var u,m,v=s,_=!1;;){if(!_){_=v.return;e:for(;;){if(...
function ij (line 2) | function ij(i,s){switch(s.tag){case 0:case 11:case 14:case 15:case 22:va...
function kj (line 2) | function kj(i){var s=i.updateQueue;if(null!==s){i.updateQueue=null;var u...
function mj (line 2) | function mj(i,s){return null!==i&&(null===(i=i.memoizedState)||null!==i....
function wj (line 2) | function wj(){$o=Rn()+500}
function Hg (line 2) | function Hg(){return 0!=(48&Ao)?Rn():-1!==si?si:si=Rn()}
function Ig (line 2) | function Ig(i){if(0==(2&(i=i.mode)))return 1;if(0==(4&i))return 99===eg(...
function Jg (line 2) | function Jg(i,s,u){if(50<Zo)throw Zo=0,ei=null,Error(y(185));if(null===(...
function Kj (line 2) | function Kj(i,s){i.lanes|=s;var u=i.alternate;for(null!==u&&(u.lanes|=s)...
function Mj (line 2) | function Mj(i,s){for(var u=i.callbackNode,m=i.suspendedLanes,v=i.pingedL...
function Nj (line 2) | function Nj(i){if(si=-1,Ei=_i=0,0!=(48&Ao))throw Error(y(327));var s=i.c...
function Ii (line 2) | function Ii(i,s){for(s&=~Lo,s&=~Bo,i.suspendedLanes|=s,i.pingedLanes&=~s...
function Lj (line 2) | function Lj(i){if(0!=(48&Ao))throw Error(y(327));if(Oj(),i===Co&&0!=(i.e...
function Wj (line 2) | function Wj(i,s){var u=Ao;Ao|=1;try{return i(s)}finally{0===(Ao=u)&&(wj(...
function Xj (line 2) | function Xj(i,s){var u=Ao;Ao&=-2,Ao|=8;try{return i(s)}finally{0===(Ao=u...
function ni (line 2) | function ni(i,s){I(No,Po),Po|=s,Ro|=s}
function Ki (line 2) | function Ki(){Po=No.current,H(No)}
function Qj (line 2) | function Qj(i,s){i.finishedWork=null,i.finishedLanes=0;var u=i.timeoutHa...
function Sj (line 2) | function Sj(i,s){for(;;){var u=jo;try{if(qg(),ro.current=uo,lo){for(var ...
function Pj (line 2) | function Pj(){var i=ko.current;return ko.current=uo,null===i?uo:i}
function Tj (line 2) | function Tj(i,s){var u=Ao;Ao|=16;var m=Pj();for(Co===i&&Io===s||Qj(i,s);...
function ak (line 2) | function ak(){for(;null!==jo;)bk(jo)}
function Rj (line 2) | function Rj(){for(;null!==jo&&!_n();)bk(jo)}
function bk (line 2) | function bk(i){var s=Uo(i.alternate,i,Po);i.memoizedProps=i.pendingProps...
function Zj (line 2) | function Zj(i){var s=i;do{var u=s.alternate;if(i=s.return,0==(2048&s.fla...
function Uj (line 2) | function Uj(i){var s=eg();return gg(99,dk.bind(null,i,s)),null}
function dk (line 2) | function dk(i,s){do{Oj()}while(null!==Jo);if(0!=(48&Ao))throw Error(y(32...
function ek (line 2) | function ek(){for(;null!==zo;){var i=zo.alternate;Ci||null===Oi||(0!=(8&...
function Oj (line 2) | function Oj(){if(90!==Go){var i=97<Go?97:Go;return Go=90,gg(i,fk)}return!1}
function $i (line 2) | function $i(i,s){Xo.push(s,i),Ho||(Ho=!0,hg(97,(function(){return Oj(),n...
function Zi (line 2) | function Zi(i,s){Yo.push(s,i),Ho||(Ho=!0,hg(97,(function(){return Oj(),n...
function fk (line 2) | function fk(){if(null===Jo)return!1;var i=Jo;if(Jo=null,0!=(48&Ao))throw...
function gk (line 2) | function gk(i,s,u){Ag(i,s=Pi(0,s=Mi(u,s),1)),s=Hg(),null!==(i=Kj(i,1))&&...
function Wi (line 2) | function Wi(i,s){if(3===i.tag)gk(i,i,s);else for(var u=i.return;null!==u...
function Yj (line 2) | function Yj(i,s,u){var m=i.pingCache;null!==m&&m.delete(s),s=Hg(),i.ping...
function lj (line 2) | function lj(i,s){var u=i.stateNode;null!==u&&u.delete(s),0===(s=0)&&(0==...
function ik (line 2) | function ik(i,s,u,m){this.tag=i,this.key=u,this.sibling=this.child=this....
function nh (line 2) | function nh(i,s,u,m){return new ik(i,s,u,m)}
function ji (line 2) | function ji(i){return!(!(i=i.prototype)||!i.isReactComponent)}
function Tg (line 2) | function Tg(i,s){var u=i.alternate;return null===u?((u=nh(i.tag,s,i.key,...
function Vg (line 2) | function Vg(i,s,u,m,v,_){var j=2;if(m=i,"function"==typeof i)ji(i)&&(j=1...
function Xg (line 2) | function Xg(i,s,u,m){return(i=nh(7,i,m,s)).lanes=u,i}
function vi (line 2) | function vi(i,s,u,m){return(i=nh(23,i,m,s)).elementType=qe,i.lanes=u,i}
function Ug (line 2) | function Ug(i,s,u){return(i=nh(6,i,null,s)).lanes=u,i}
function Wg (line 2) | function Wg(i,s,u){return(s=nh(4,null!==i.children?i.children:[],i.key,s...
function jk (line 2) | function jk(i,s,u){this.tag=s,this.containerInfo=i,this.finishedWork=thi...
function lk (line 2) | function lk(i,s,u,m){var v=s.current,_=Hg(),j=Ig(v);e:if(u){t:{if(Zb(u=u...
function mk (line 2) | function mk(i){return(i=i.current).child?(i.child.tag,i.child.stateNode)...
function nk (line 2) | function nk(i,s){if(null!==(i=i.memoizedState)&&null!==i.dehydrated){var...
function ok (line 2) | function ok(i,s){nk(i,s),(i=i.alternate)&&nk(i,s)}
function qk (line 2) | function qk(i,s,u){var m=null!=u&&null!=u.hydrationOptions&&u.hydrationO...
function rk (line 2) | function rk(i){return!(!i||1!==i.nodeType&&9!==i.nodeType&&11!==i.nodeTy...
function tk (line 2) | function tk(i,s,u,m,v){var _=u._reactRootContainer;if(_){var j=_._intern...
function uk (line 2) | function uk(i,s){var u=2<arguments.length&&void 0!==arguments[2]?argumen...
function getPropType (line 2) | function getPropType(i){var s=typeof i;return Array.isArray(i)?"array":i...
function createChainableTypeChecker (line 2) | function createChainableTypeChecker(i){function checkType(s,u,m,v,j,M){f...
function createIterableSubclassTypeChecker (line 2) | function createIterableSubclassTypeChecker(i,s){return function createIm...
function y (line 2) | function y(i){if("object"==typeof i&&null!==i){var s=i.$$typeof;switch(s...
function z (line 2) | function z(i){for(var s="https://reactjs.org/docs/error-decoder.html?inv...
function C (line 2) | function C(i,s,u){this.props=i,this.context=s,this.refs=ie,this.updater=...
function D (line 2) | function D(){}
function E (line 2) | function E(i,s,u){this.props=i,this.context=s,this.refs=ie,this.updater=...
function J (line 2) | function J(i,s,u){var m,_={},j=null,M=null;if(null!=s)for(m in void 0!==...
function L (line 2) | function L(i){return"object"==typeof i&&null!==i&&i.$$typeof===v}
function N (line 2) | function N(i,s){return"object"==typeof i&&null!==i&&null!=i.key?function...
function O (line 2) | function O(i,s,u,m,j){var M=typeof i;"undefined"!==M&&"boolean"!==M||(i=...
function P (line 2) | function P(i,s,u){if(null==i)return i;var m=[],v=0;return O(i,m,"","",(f...
function Q (line 2) | function Q(i){if(-1===i._status){var s=i._result;s=s(),i._status=0,i._re...
function S (line 2) | function S(){var i=fe.current;if(null===i)throw Error(z(321));return i}
function createErrorType (line 2) | function createErrorType(i,u,m){m||(m=Error);var v=function(i){function ...
function oneOf (line 2) | function oneOf(i,s){if(Array.isArray(i)){var u=i.length;return i=i.map((...
function Duplex (line 2) | function Duplex(i){if(!(this instanceof Duplex))return new Duplex(i);_.c...
function onend (line 2) | function onend(){this._writableState.ended||m.nextTick(onEndNT,this)}
function onEndNT (line 2) | function onEndNT(i){i.end()}
function PassThrough (line 2) | function PassThrough(i){if(!(this instanceof PassThrough))return new Pas...
function ReadableState (line 2) | function ReadableState(i,s,v){m=m||u(56753),i=i||{},"boolean"!=typeof v&...
function Readable (line 2) | function Readable(i){if(m=m||u(56753),!(this instanceof Readable))return...
function readableAddChunk (line 2) | function readableAddChunk(i,s,u,m,v){W("readableAddChunk",s);var _,j=i._...
function addChunk (line 2) | function addChunk(i,s,u,m){s.flowing&&0===s.length&&!s.sync?(s.awaitDrai...
function howMuchToRead (line 2) | function howMuchToRead(i,s){return i<=0||0===s.length&&s.ended?0:s.objec...
function emitReadable (line 2) | function emitReadable(i){var s=i._readableState;W("emitReadable",s.needR...
function emitReadable_ (line 2) | function emitReadable_(i){var s=i._readableState;W("emitReadable_",s.des...
function maybeReadMore (line 2) | function maybeReadMore(i,s){s.readingMore||(s.readingMore=!0,v.nextTick(...
function maybeReadMore_ (line 2) | function maybeReadMore_(i,s){for(;!s.reading&&!s.ended&&(s.length<s.high...
function updateReadableListening (line 2) | function updateReadableListening(i){var s=i._readableState;s.readableLis...
function nReadingNextTick (line 2) | function nReadingNextTick(i){W("readable nexttick read 0"),i.read(0)}
function resume_ (line 2) | function resume_(i,s){W("resume",s.reading),s.reading||i.read(0),s.resum...
function flow (line 2) | function flow(i){var s=i._readableState;for(W("flow",s.flowing);s.flowin...
function fromList (line 2) | function fromList(i,s){return 0===s.length?null:(s.objectMode?u=s.buffer...
function endReadable (line 2) | function endReadable(i){var s=i._readableState;W("endReadable",s.endEmit...
function endReadableNT (line 2) | function endReadableNT(i,s){if(W("endReadableNT",i.endEmitted,i.length),...
function indexOf (line 2) | function indexOf(i,s){for(var u=0,m=i.length;u<m;u++)if(i[u]===s)return ...
function onunpipe (line 2) | function onunpipe(s,v){W("onunpipe"),s===u&&v&&!1===v.hasUnpiped&&(v.has...
function onend (line 2) | function onend(){W("onend"),i.end()}
function ondata (line 2) | function ondata(s){W("ondata");var v=i.write(s);W("dest.write",v),!1===v...
function onerror (line 2) | function onerror(s){W("onerror",s),unpipe(),i.removeListener("error",one...
function onclose (line 2) | function onclose(){i.removeListener("finish",onfinish),unpipe()}
function onfinish (line 2) | function onfinish(){W("onfinish"),i.removeListener("close",onclose),unpi...
function unpipe (line 2) | function unpipe(){W("unpipe"),u.unpipe(i)}
function afterTransform (line 2) | function afterTransform(i,s){var u=this._transformState;u.transforming=!...
function Transform (line 2) | function Transform(i){if(!(this instanceof Transform))return new Transfo...
function prefinish (line 2) | function prefinish(){var i=this;"function"!=typeof this._flush||this._re...
function done (line 2) | function done(i,s,u){if(s)return i.emit("error",s);if(null!=u&&i.push(u)...
function CorkedRequest (line 2) | function CorkedRequest(i){var s=this;this.next=null,this.entry=null,this...
function nop (line 2) | function nop(){}
function WritableState (line 2) | function WritableState(i,s,_){m=m||u(56753),i=i||{},"boolean"!=typeof _&...
function Writable (line 2) | function Writable(i){var s=this instanceof(m=m||u(56753));if(!s&&!W.call...
function doWrite (line 2) | function doWrite(i,s,u,m,v,_,j){s.writelen=m,s.writecb=j,s.writing=!0,s....
function afterWrite (line 2) | function afterWrite(i,s,u,m){u||function onwriteDrain(i,s){0===s.length&...
function clearBuffer (line 2) | function clearBuffer(i,s){s.bufferProcessing=!0;var u=s.bufferedRequest;...
function needFinish (line 2) | function needFinish(i){return i.ending&&0===i.length&&null===i.bufferedR...
function callFinal (line 2) | function callFinal(i,s){i._final((function(u){s.pendingcb--,u&&ye(i,u),s...
function finishMaybe (line 2) | function finishMaybe(i,s){var u=needFinish(s);if(u&&(function prefinish(...
function _defineProperty (line 2) | function _defineProperty(i,s,u){return(s=function _toPropertyKey(i){var ...
function createIterResult (line 2) | function createIterResult(i,s){return{value:i,done:s}}
function readAndResolve (line 2) | function readAndResolve(i){var s=i[j];if(null!==s){var u=i[Z].read();nul...
function onReadable (line 2) | function onReadable(i){v.nextTick(readAndResolve,i)}
method stream (line 2) | get stream(){return this[Z]}
function ownKeys (line 2) | function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbo...
function _objectSpread (line 2) | function _objectSpread(i){for(var s=1;s<arguments.length;s++){var u=null...
function _defineProperty (line 2) | function _defineProperty(i,s,u){return(s=_toPropertyKey(s))in i?Object.d...
function _defineProperties (line 2) | function _defineProperties(i,s){for(var u=0;u<s.length;u++){var m=s[u];m...
function _toPropertyKey (line 2) | function _toPropertyKey(i){var s=function _toPrimitive(i,s){if("object"!...
function BufferList (line 2) | function BufferList(){!function _classCallCheck(i,s){if(!(i instanceof s...
function emitErrorAndCloseNT (line 2) | function emitErrorAndCloseNT(i,s){emitErrorNT(i,s),emitCloseNT(i)}
function emitCloseNT (line 2) | function emitCloseNT(i){i._writableState&&!i._writableState.emitClose||i...
function emitErrorNT (line 2) | function emitErrorNT(i,s){i.emit("error",s)}
function noop (line 2) | function noop(){}
function noop (line 2) | function noop(i){if(i)throw i}
function call (line 2) | function call(i){i()}
function pipe (line 2) | function pipe(i,s){return i.pipe(s)}
function _interopRequireDefault (line 2) | function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}
function _interopRequireDefault (line 2) | function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}
function copyProps (line 2) | function copyProps(i,s){for(var u in i)s[u]=i[u]}
function SafeBuffer (line 2) | function SafeBuffer(i,s,u){return v(i,s,u)}
function H (line 2) | function H(i,s){var u=i.length;i.push(s);e:for(;;){var m=u-1>>>1,v=i[m];...
function J (line 2) | function J(i){return void 0===(i=i[0])?null:i}
function K (line 2) | function K(i){var s=i[0];if(void 0!==s){var u=i.pop();if(u!==s){i[0]=u;e...
function I (line 2) | function I(i,s){var u=i.sortIndex-s.sortIndex;return 0!==u?u:i.id-s.id}
function T (line 2) | function T(i){for(var s=J(be);null!==s;){if(null===s.callback)K(be);else...
function U (line 2) | function U(i){if(Pe=!1,T(i),!Ie)if(null!==J(ye))Ie=!0,u(V);else{var s=J(...
function V (line 2) | function V(i,u){Ie=!1,Pe&&(Pe=!1,v()),xe=!0;var _=Se;try{for(T(u),we=J(y...
class NonError (line 2) | class NonError extends Error{constructor(i){super(NonError._prepareSuper...
method constructor (line 2) | constructor(i){super(NonError._prepareSuperMessage(i)),Object.definePr...
method _prepareSuperMessage (line 2) | static _prepareSuperMessage(i){try{return JSON.stringify(i)}catch{retu...
function Hash (line 2) | function Hash(i,s){this._block=m.alloc(i),this._finalSize=s,this._blockS...
function Sha (line 2) | function Sha(){this.init(),this._w=M,v.call(this,64,56)}
function rotl30 (line 2) | function rotl30(i){return i<<30|i>>>2}
function ft (line 2) | function ft(i,s,u,m){return 0===i?s&u|~s&m:2===i?s&u|s&m|u&m:s^u^m}
function Sha1 (line 2) | function Sha1(){this.init(),this._w=M,v.call(this,64,56)}
function rotl5 (line 2) | function rotl5(i){return i<<5|i>>>27}
function rotl30 (line 2) | function rotl30(i){return i<<30|i>>>2}
function ft (line 2) | function ft(i,s,u,m){return 0===i?s&u|~s&m:2===i?s&u|s&m|u&m:s^u^m}
function Sha224 (line 2) | function Sha224(){this.init(),this._w=M,_.call(this,64,56)}
function Sha256 (line 2) | function Sha256(){this.init(),this._w=M,v.call(this,64,56)}
function ch (line 2) | function ch(i,s,u){return u^i&(s^u)}
function maj (line 2) | function maj(i,s,u){return i&s|u&(i|s)}
function sigma0 (line 2) | function sigma0(i){return(i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10)}
function sigma1 (line 2) | function sigma1(i){return(i>>>6|i<<26)^(i>>>11|i<<21)^(i>>>25|i<<7)}
function gamma0 (line 2) | function gamma0(i){return(i>>>7|i<<25)^(i>>>18|i<<14)^i>>>3}
function Sha384 (line 2) | function Sha384(){this.init(),this._w=M,_.call(this,128,112)}
function writeInt64BE (line 2) | function writeInt64BE(s,u,m){i.writeInt32BE(s,m),i.writeInt32BE(u,m+4)}
function Sha512 (line 2) | function Sha512(){this.init(),this._w=M,v.call(this,128,112)}
function Ch (line 2) | function Ch(i,s,u){return u^i&(s^u)}
function maj (line 2) | function maj(i,s,u){return i&s|u&(i|s)}
function sigma0 (line 2) | function sigma0(i,s){return(i>>>28|s<<4)^(s>>>2|i<<30)^(s>>>7|i<<25)}
function sigma1 (line 2) | function sigma1(i,s){return(i>>>14|s<<18)^(i>>>18|s<<14)^(s>>>9|i<<23)}
function Gamma0 (line 2) | function Gamma0(i,s){return(i>>>1|s<<31)^(i>>>8|s<<24)^i>>>7}
function Gamma0l (line 2) | function Gamma0l(i,s){return(i>>>1|s<<31)^(i>>>8|s<<24)^(i>>>7|s<<25)}
function Gamma1 (line 2) | function Gamma1(i,s){return(i>>>19|s<<13)^(s>>>29|i<<3)^i>>>6}
function Gamma1l (line 2) | function Gamma1l(i,s){return(i>>>19|s<<13)^(s>>>29|i<<3)^(i>>>6|s<<26)}
function getCarry (line 2) | function getCarry(i,s){return i>>>0<s>>>0?1:0}
function writeInt64BE (line 2) | function writeInt64BE(s,u,m){i.writeInt32BE(s,m),i.writeInt32BE(u,m+4)}
method constructor (line 2) | constructor(i={}){__publicField(this,"counter"),__publicField(this,"debu...
function S (line 2) | function S(i){return Object.getOwnPropertyNames(i).concat(Object.getOwnP...
function r (line 2) | function r(i,s){return Array.prototype.slice.call(arguments,2).reduce(i,s)}
function C (line 2) | function C(i){return"function"==typeof i}
function N (line 2) | function N(i){return i&&"object"==typeof i||C(i)}
function z (line 2) | function z(i){return i&&"object"==typeof i&&i.__proto__==Object.prototype}
function I (line 2) | function I(){return(u=Array.prototype.concat.apply([],arguments).filter(...
function e (line 2) | function e(i,s){function r(u,m){N(s[u])&&(N(i[u])||(i[u]={}),(m||ye)(i[u...
function R (line 2) | function R(){return function t(i){return u=function r(){return function ...
function V (line 2) | function V(i){return C(i)&&C(i[fe])}
function o (line 2) | function o(i,_){return function(){return(v={})[i]=_.apply(s,Array.protot...
function Stream (line 2) | function Stream(){m.call(this)}
function ondata (line 2) | function ondata(s){i.writable&&!1===i.write(s)&&u.pause&&u.pause()}
function ondrain (line 2) | function ondrain(){u.readable&&u.resume&&u.resume()}
function onend (line 2) | function onend(){v||(v=!0,i.end())}
function onclose (line 2) | function onclose(){v||(v=!0,"function"==typeof i.destroy&&i.destroy())}
function onerror (line 2) | function onerror(i){if(cleanup(),0===m.listenerCount(this,"error"))throw i}
function cleanup (line 2) | function cleanup(){u.removeListener("data",ondata),i.removeListener("dra...
function StringDecoder (line 2) | function StringDecoder(i){var s;switch(this.encoding=function normalizeE...
function utf8CheckByte (line 2) | function utf8CheckByte(i){return i<=127?0:i>>5==6?2:i>>4==14?3:i>>3==30?...
function utf8FillLast (line 2) | function utf8FillLast(i){var s=this.lastTotal-this.lastNeed,u=function u...
function utf16Text (line 2) | function utf16Text(i,s){if((i.length-s)%2==0){var u=i.toString("utf16le"...
function utf16End (line 2) | function utf16End(i){var s=i&&i.length?this.write(i):"";if(this.lastNeed...
function base64Text (line 2) | function base64Text(i,s){var u=(i.length-s)%3;return 0===u?i.toString("b...
function base64End (line 2) | function base64End(i){var s=i&&i.length?this.write(i):"";return this.las...
function simpleWrite (line 2) | function simpleWrite(i){return i.toString(this.encoding)}
function simpleEnd (line 2) | function simpleEnd(i){return i&&i.length?this.write(i):""}
function toS (line 2) | function toS(i){return Object.prototype.toString.call(i)}
function forEach (line 2) | function forEach(i,s){if(i.forEach)return i.forEach(s);for(var u=0;u<i.l...
function copy (line 2) | function copy(i){if("object"==typeof i&&null!==i){var m;if(s(i))m=[];els...
function walk (line 2) | function walk(i,v,_){var j=[],M=[],$=!0;return function walker(i){var W=...
function Traverse (line 2) | function Traverse(i){this.value=i}
function traverse (line 2) | function traverse(i){return new Traverse(i)}
function trimLeft (line 2) | function trimLeft(i){return(i||"").toString().replace(_,"")}
function lolcation (line 2) | function lolcation(i){var s,m=("undefined"!=typeof window?window:void 0!...
function isSpecial (line 2) | function isSpecial(i){return"file:"===i||"ftp:"===i||"http:"===i||"https...
function extractProtocol (line 2) | function extractProtocol(i,s){i=(i=trimLeft(i)).replace(j,""),s=s||{};va...
function Url (line 2) | function Url(i,s,u){if(i=(i=trimLeft(i)).replace(j,""),!(this instanceof...
function r (line 2) | function r(i){var s=i.getSnapshot;i=i.value;try{var u=s();return!v(i,u)}...
function a (line 2) | function a(s){if(!M){if(M=!0,i=s,s=m(s),void 0!==v&&Z.hasValue){var u=Z....
function config (line 2) | function config(i){try{if(!u.g.localStorage)return!1}catch(i){return!1}v...
function getType (line 2) | function getType(i){return v(i)?"ClosingTag":j(i)?"OpeningTag":_(i)?"Sel...
function resolve (line 2) | function resolve(i,s,u){var m,_=function create_indent(i,s){return new A...
function format (line 2) | function format(i,s,u){if("object"!=typeof s)return i(!1,s);var m=s.inte...
function delay (line 2) | function delay(i){$?m.nextTick(i):i()}
function append (line 2) | function append(i,s){if(void 0!==s&&(v+=s),i&&!j&&(u=u||new _,j=!0),i&&j...
function add (line 2) | function add(i,s){format(append,resolve(i,M,M?1:0),s)}
function end (line 2) | function end(){if(u){var i=v;delay((function(){u.emit("data",i),u.emit("...
function _extends (line 2) | function _extends(){var s;return i.exports=_extends=m?v(s=m).call(s):fun...
function __webpack_require__ (line 2) | function __webpack_require__(u){var m=s[u];if(void 0!==m)return m.export...
function _typeof (line 2) | function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==...
function _toPropertyKey (line 2) | function _toPropertyKey(i){var s=function _toPrimitive(i,s){if("object"!...
function _defineProperty (line 2) | function _defineProperty(i,s,u){return(s=_toPropertyKey(s))in i?Object.d...
function ownKeys (line 2) | function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbo...
function _objectSpread2 (line 2) | function _objectSpread2(i){for(var s=1;s<arguments.length;s++){var u=nul...
function formatProdErrorMessage (line 2) | function formatProdErrorMessage(i){return"Minified Redux error #"+i+"; v...
function isPlainObject (line 2) | function isPlainObject(i){if("object"!=typeof i||null===i)return!1;for(v...
function createStore (line 2) | function createStore(i,s,u){var m;if("function"==typeof s&&"function"==t...
function bindActionCreator (line 2) | function bindActionCreator(i,s){return function(){return s(i.apply(this,...
function compose (line 2) | function compose(){for(var i=arguments.length,s=new Array(i),u=0;u<i;u++...
function newThrownErr (line 2) | function newThrownErr(i){return{type:at,payload:(0,nt.serializeError)(i)}}
function newThrownErrBatch (line 2) | function newThrownErrBatch(i){return{type:st,payload:i}}
function newSpecErr (line 2) | function newSpecErr(i){return{type:lt,payload:i}}
function newSpecErrBatch (line 2) | function newSpecErrBatch(i){return{type:ct,payload:i}}
function newAuthErr (line 2) | function newAuthErr(i){return{type:ut,payload:i}}
function clear (line 2) | function clear(){return{type:pt,payload:arguments.length>0&&void 0!==arg...
function clearBy (line 2) | function clearBy(){return{type:ht,payload:arguments.length>0&&void 0!==a...
function getParameterSchema (line 2) | function getParameterSchema(i){let{isOAS3:s}=arguments.length>1&&void 0!...
function objectify (line 2) | function objectify(i){return isObject(i)?isImmutable(i)?i.toJS():i:{}}
function fromJSOrdered (line 2) | function fromJSOrdered(i){if(isImmutable(i))return i;if(i instanceof dt....
function normalizeArray (line 2) | function normalizeArray(i){return Array.isArray(i)?i:[i]}
function isFn (line 2) | function isFn(i){return"function"==typeof i}
function isObject (line 2) | function isObject(i){return!!i&&"object"==typeof i}
function isFunc (line 2) | function isFunc(i){return"function"==typeof i}
function isArray (line 2) | function isArray(i){return Array.isArray(i)}
function objMap (line 2) | function objMap(i,s){return Object.keys(i).reduce(((u,m)=>(u[m]=s(i[m],m...
function objReduce (line 2) | function objReduce(i,s){return Object.keys(i).reduce(((u,m)=>{let v=s(i[...
function systemThunkMiddleware (line 2) | function systemThunkMiddleware(i){return s=>{let{dispatch:u,getState:m}=...
function validateValueBySchema (line 2) | function validateValueBySchema(i,s,u,m,v){if(!s)return[];let _=[],j=s.ge...
function sanitizeUrl (line 2) | function sanitizeUrl(i){return"string"!=typeof i||""===i?"":(0,mt.Nm)(i)}
function requiresValidationURL (line 2) | function requiresValidationURL(i){return!(!i||i.indexOf("localhost")>=0|...
function deeplyStripKey (line 2) | function deeplyStripKey(i,s){let u=arguments.length>2&&void 0!==argument...
function stringify (line 2) | function stringify(i){if("string"==typeof i)return i;if(i&&i.toJS&&(i=i....
function paramToIdentifier (line 2) | function paramToIdentifier(i){let{returnAll:s=!1,allowHashes:u=!0}=argum...
function paramToValue (line 2) | function paramToValue(i,s){return paramToIdentifier(i,{returnAll:!0}).ma...
function b64toB64UrlEncoded (line 2) | function b64toB64UrlEncoded(i){return i.replace(/\+/g,"-").replace(/\//g...
function createStoreWithMiddleware (line 2) | function createStoreWithMiddleware(i,s,u){let m=[systemThunkMiddleware(u...
class Store (line 2) | class Store{constructor(){let i=arguments.length>0&&void 0!==arguments[0...
method constructor (line 2) | constructor(){let i=arguments.length>0&&void 0!==arguments[0]?argument...
method getStore (line 2) | getStore(){return this.store}
method register (line 2) | register(i){let s=!(arguments.length>1&&void 0!==arguments[1])||argume...
method buildSystem (line 2) | buildSystem(){let i=!(arguments.length>0&&void 0!==arguments[0])||argu...
method _getSystem (line 2) | _getSystem(){return this.boundSystem}
method getRootInjects (line 2) | getRootInjects(){return Object.assign({getSystem:this.getSystem,getSto...
method _getConfigs (line 2) | _getConfigs(){return this.system.configs}
method getConfigs (line 2) | getConfigs(){return{configs:this.system.configs}}
method setConfigs (line 2) | setConfigs(i){this.system.configs=i}
method rebuildReducer (line 2) | rebuildReducer(){this.store.replaceReducer(function buildReducer(i){re...
method getType (line 2) | getType(i){let s=i[0].toUpperCase()+i.slice(1);return objReduce(this.s...
method getSelectors (line 2) | getSelectors(){return this.getType("selectors")}
method getActions (line 2) | getActions(){return objMap(this.getType("actions"),(i=>objReduce(i,((i...
method getWrappedAndBoundActions (line 2) | getWrappedAndBoundActions(i){var s=this;return objMap(this.getBoundAct...
method getWrappedAndBoundSelectors (line 2) | getWrappedAndBoundSelectors(i,s){var u=this;return objMap(this.getBoun...
method getStates (line 2) | getStates(i){return Object.keys(this.system.statePlugins).reduce(((s,u...
method getStateThunks (line 2) | getStateThunks(i){return Object.keys(this.system.statePlugins).reduce(...
method getFn (line 2) | getFn(){return{fn:this.system.fn}}
method getComponents (line 2) | getComponents(i){const s=this.system.components[i];return Array.isArra...
method getBoundSelectors (line 2) | getBoundSelectors(i,s){return objMap(this.getSelectors(),((u,m)=>{let ...
method getBoundActions (line 2) | getBoundActions(i){i=i||this.getStore().dispatch;const s=this.getActio...
method getMapStateToProps (line 2) | getMapStateToProps(){return()=>Object.assign({},this.getSystem())}
method getMapDispatchToProps (line 2) | getMapDispatchToProps(i){return s=>We()({},this.getWrappedAndBoundActi...
function combinePlugins (line 2) | function combinePlugins(i,s,u){if(isObject(i)&&!isArray(i))return it()({...
function callAfterLoad (line 2) | function callAfterLoad(i,s){let{hasLoaded:u}=arguments.length>2&&void 0!...
function systemExtend (line 2) | function systemExtend(){let i=arguments.length>0&&void 0!==arguments[0]?...
function wrapWithTryCatch (line 2) | function wrapWithTryCatch(i){let{logErrors:s=!0}=arguments.length>1&&voi...
function showDefinitions (line 2) | function showDefinitions(i){return{type:Ft,payload:i}}
function authorize (line 2) | function authorize(i){return{type:qt,payload:i}}
function logout (line 2) | function logout(i){return{type:$t,payload:i}}
function authorizeOauth2 (line 2) | function authorizeOauth2(i){return{type:zt,payload:i}}
function configureAuth (line 2) | function configureAuth(i){return{type:Wt,payload:i}}
function restoreAuthorization (line 2) | function restoreAuthorization(i){return{type:Kt,payload:i}}
function defaultMemoize (line 2) | function defaultMemoize(i,s){var u="object"==typeof s?s:{equalityCheck:s...
function createSelectorCreator (line 2) | function createSelectorCreator(i){for(var s=arguments.length,u=new Array...
class LockAuthIcon (line 2) | class LockAuthIcon extends He.Component{mapStateToProps(i,s){return{stat...
method mapStateToProps (line 2) | mapStateToProps(i,s){return{state:i,ownProps:rr()(s,Object.keys(s.getS...
method render (line 2) | render(){const{getComponent:i,ownProps:s}=this.props,u=i("LockIcon");r...
class UnlockAuthIcon (line 2) | class UnlockAuthIcon extends He.Component{mapStateToProps(i,s){return{st...
method mapStateToProps (line 2) | mapStateToProps(i,s){return{state:i,ownProps:rr()(s,Object.keys(s.getS...
method render (line 2) | render(){const{getComponent:i,ownProps:s}=this.props,u=i("UnlockIcon")...
function auth (line 2) | function auth(){return{afterLoad(i){this.rootInjects=this.rootInjects||{...
function preauthorizeBasic (line 2) | function preauthorizeBasic(i,s,u,m){const{authActions:{authorize:v},spec...
function preauthorizeApiKey (line 2) | function preauthorizeApiKey(i,s,u){const{authActions:{authorize:m},specS...
function isNothing (line 2) | function isNothing(i){return null==i}
function formatError (line 2) | function formatError(i,s){var u="",m=i.reason||"(unknown reason)";return...
function YAMLException$1 (line 2) | function YAMLException$1(i,s){Error.call(this),this.name="YAMLException"...
function getLine (line 2) | function getLine(i,s,u,m,v){var _="",j="",M=Math.floor(v/2)-1;return m-s...
function padStart (line 2) | function padStart(i,s){return lr.repeat(" ",s-i.length)+i}
function compileList (line 2) | function compileList(i,s){var u=[];return i[s].forEach((function(i){var ...
function Schema$1 (line 2) | function Schema$1(i){return this.extend(i)}
function collectType (line 2) | function collectType(i){i.multi?(u.multi[i.kind].push(i),u.multi.fallbac...
function isOctCode (line 2) | function isOctCode(i){return 48<=i&&i<=55}
function isDecCode (line 2) | function isDecCode(i){return 48<=i&&i<=57}
function _class (line 2) | function _class(i){return Object.prototype.toString.call(i)}
function is_EOL (line 2) | function is_EOL(i){return 10===i||13===i}
function is_WHITE_SPACE (line 2) | function is_WHITE_SPACE(i){return 9===i||32===i}
function is_WS_OR_EOL (line 2) | function is_WS_OR_EOL(i){return 9===i||32===i||10===i||13===i}
function is_FLOW_INDICATOR (line 2) | function is_FLOW_INDICATOR(i){return 44===i||91===i||93===i||123===i||12...
function fromHexCode (line 2) | function fromHexCode(i){var s;return 48<=i&&i<=57?i-48:97<=(s=32|i)&&s<=...
function simpleEscapeSequence (line 2) | function simpleEscapeSequence(i){return 48===i?"\0":97===i?"":98===i?"\...
function charFromCodepoint (line 2) | function charFromCodepoint(i){return i<=65535?String.fromCharCode(i):Str...
function State$1 (line 2) | function State$1(i,s){this.input=i,this.filename=s.filename||null,this.s...
function generateError (line 2) | function generateError(i,s){var u={name:i.filename,buffer:i.input.slice(...
function throwError (line 2) | function throwError(i,s){throw generateError(i,s)}
function throwWarning (line 2) | function throwWarning(i,s){i.onWarning&&i.onWarning.call(null,generateEr...
function captureSegment (line 2) | function captureSegment(i,s,u,m){var v,_,j,M;if(s<u){if(M=i.input.slice(...
function mergeMappings (line 2) | function mergeMappings(i,s,u,m){var v,_,j,M;for(lr.isObject(u)||throwErr...
function storeMappingPair (line 2) | function storeMappingPair(i,s,u,m,v,_,j,M,$){var W,X;if(Array.isArray(v)...
function readLineBreak (line 2) | function readLineBreak(i){var s;10===(s=i.input.charCodeAt(i.position))?...
function skipSeparationSpace (line 2) | function skipSeparationSpace(i,s,u){for(var m=0,v=i.input.charCodeAt(i.p...
function testDocumentSeparator (line 2) | function testDocumentSeparator(i){var s,u=i.position;return!(45!==(s=i.i...
function writeFoldedLines (line 2) | function writeFoldedLines(i,s){1===s?i.result+=" ":s>1&&(i.result+=lr.re...
function readBlockSequence (line 2) | function readBlockSequence(i,s){var u,m,v=i.tag,_=i.anchor,j=[],M=!1;if(...
function readTagProperty (line 2) | function readTagProperty(i){var s,u,m,v,_=!1,j=!1;if(33!==(v=i.input.cha...
function readAnchorProperty (line 2) | function readAnchorProperty(i){var s,u;if(38!==(u=i.input.charCodeAt(i.p...
function composeNode (line 2) | function composeNode(i,s,u,m,v){var _,j,M,$,W,X,Y,Z,ee,ie=1,ae=!1,le=!1;...
function readDocument (line 2) | function readDocument(i){var s,u,m,v,_=i.position,j=!1;for(i.version=nul...
function loadDocuments (line 2) | function loadDocuments(i,s){s=s||{},0!==(i=String(i)).length&&(10!==i.ch...
function encodeHex (line 2) | function encodeHex(i){var s,u,m;if(s=i.toString(16).toUpperCase(),i<=255...
function State (line 2) | function State(i){this.schema=i.schema||$r,this.indent=Math.max(1,i.inde...
function indentString (line 2) | function indentString(i,s){for(var u,m=lr.repeat(" ",s),v=0,_=-1,j="",M=...
function generateNextLine (line 2) | function generateNextLine(i,s){return"\n"+lr.repeat(" ",i.indent*s)}
function isWhitespace (line 2) | function isWhitespace(i){return i===dn||i===un}
function isPrintable (line 2) | function isPrintable(i){return 32<=i&&i<=126||161<=i&&i<=55295&&8232!==i...
function isNsCharOrWhitespace (line 2) | function isNsCharOrWhitespace(i){return isPrintable(i)&&i!==cn&&i!==hn&&...
function isPlainSafe (line 2) | function isPlainSafe(i,s,u){var m=isNsCharOrWhitespace(i),v=m&&!isWhites...
function codePointAt (line 2) | function codePointAt(i,s){var u,m=i.charCodeAt(s);return m>=55296&&m<=56...
function needIndentIndicator (line 2) | function needIndentIndicator(i){return/^\n* /.test(i)}
function chooseScalarStyle (line 2) | function chooseScalarStyle(i,s,u,m,v,_,j,M){var $,W=0,X=null,Y=!1,Z=!1,e...
function writeScalar (line 2) | function writeScalar(i,s,u,m,v){i.dump=function(){if(0===s.length)return...
function blockHeader (line 2) | function blockHeader(i,s){var u=needIndentIndicator(i)?String(s):"",m="\...
function dropEndingNewline (line 2) | function dropEndingNewline(i){return"\n"===i[i.length-1]?i.slice(0,-1):i}
function foldLine (line 2) | function foldLine(i,s){if(""===i||" "===i[0])return i;for(var u,m,v=/ [^...
function writeBlockSequence (line 2) | function writeBlockSequence(i,s,u,m){var v,_,j,M="",$=i.tag;for(v=0,_=u....
function detectType (line 2) | function detectType(i,s,u){var m,v,_,j,M,$;for(_=0,j=(v=u?i.explicitType...
function writeNode (line 2) | function writeNode(i,s,u,m,v,_,j){i.tag=null,i.dump=u,detectType(i,u,!1)...
function getDuplicateReferences (line 2) | function getDuplicateReferences(i,s){var u,m,v=[],_=[];for(inspectNode(i...
function inspectNode (line 2) | function inspectNode(i,s,u){var m,v,_;if(null!==i&&"object"==typeof i)if...
function renamed (line 2) | function renamed(i,s){return function(){throw new Error("Function yaml."...
function update (line 2) | function update(i,s){return{type:ao,payload:{[i]:s}}}
function toggle (line 2) | function toggle(i){return{type:so,payload:i}}
function next (line 2) | function next(u){u instanceof Error||u.status>=400?(m.updateLoadingStatu...
function configsPlugin (line 2) | function configsPlugin(){return{statePlugins:{spec:{actions:_,selectors:...
method isShownKeyFromUrlHashArray (line 2) | isShownKeyFromUrlHashArray(i,s){const[u,m]=s;return m?["operations",u,m]...
method urlHashArrayFromIsShownKey (line 2) | urlHashArrayFromIsShownKey(i,s){let[u,m,v]=s;return"operations"==u?[m,v]...
method render (line 2) | render(){return He.createElement("span",{ref:this.onLoad},He.createEleme...
method render (line 2) | render(){return He.createElement("span",{ref:this.onLoad},He.createEleme...
function deep_linking (line 2) | function deep_linking(){return[mo,{statePlugins:{configs:{wrapActions:{l...
function transform (line 2) | function transform(i){return i.map((i=>{let s="is not of a type(s)",u=i....
function parameter_oneof_transform (line 2) | function parameter_oneof_transform(i,s){let{jsSpec:u}=s;return i}
function transformErrors (line 2) | function transformErrors(i){let s={jsSpec:{}},u=bo()(Eo,((i,u)=>{try{ret...
function err (line 2) | function err(s){return{statePlugins:{err:{reducers:{[at]:(i,s)=>{let{pay...
function opsFilter (line 2) | function opsFilter(i,s){return i.filter(((i,u)=>-1!==u.indexOf(s)))}
function filter (line 2) | function filter(){return{fn:{opsFilter}}}
function updateLayout (line 2) | function updateLayout(i){return{type:Ro,payload:i}}
function updateFilter (line 2) | function updateFilter(i){return{type:Do,payload:i}}
function actions_show (line 2) | function actions_show(i){let s=!(arguments.length>1&&void 0!==arguments[...
function changeMode (line 2) | function changeMode(i){let s=arguments.length>1&&void 0!==arguments[1]?a...
function plugins_layout (line 2) | function plugins_layout(){return{statePlugins:{layout:{reducers:Fo,actio...
function logs (line 2) | function logs(i){let{configs:s}=i;const u={debug:0,info:1,log:2,warn:3,e...
function on_complete (line 2) | function on_complete(){return{statePlugins:{spec:{wrapActions:{updateSpe...
function _objectWithoutPropertiesLoose (line 2) | function _objectWithoutPropertiesLoose(i,s){if(null==i)return{};var u,m,...
function _arrayLikeToArray (line 2) | function _arrayLikeToArray(i,s){(null==s||s>i.length)&&(s=i.length);for(...
function _toConsumableArray (line 2) | function _toConsumableArray(i){return function _arrayWithoutHoles(i){if(...
function _extends (line 2) | function _extends(){return _extends=Object.assign?Object.assign.bind():f...
function create_element_ownKeys (line 2) | function create_element_ownKeys(i,s){var u=Object.keys(i);if(Object.getO...
function _objectSpread (line 2) | function _objectSpread(i){for(var s=1;s<arguments.length;s++){var u=null...
function createStyleObject (line 2) | function createStyleObject(i){var s=arguments.length>1&&void 0!==argumen...
function createClassNameString (line 2) | function createClassNameString(i){return i.join(" ")}
function createElement (line 2) | function createElement(i){var s=i.node,u=i.stylesheet,m=i.style,v=void 0...
function highlight_ownKeys (line 2) | function highlight_ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPro...
function highlight_objectSpread (line 2) | function highlight_objectSpread(i){for(var s=1;s<arguments.length;s++){v...
function AllLineNumbers (line 2) | function AllLineNumbers(i){var s=i.codeString,u=i.codeStyle,m=i.containe...
function getInlineLineNumber (line 2) | function getInlineLineNumber(i,s){return{type:"element",tagName:"span",p...
function assembleLineNumberStyles (line 2) | function assembleLineNumberStyles(i,s,u){var m,v={display:"inline-block"...
function createLineElement (line 2) | function createLineElement(i){var s=i.children,u=i.lineNumber,m=i.lineNu...
function flattenCodeTree (line 2) | function flattenCodeTree(i){for(var s=arguments.length>1&&void 0!==argum...
function processLines (line 2) | function processLines(i,s,u,m,v,_,j,M,$){var W,X=flattenCodeTree(i.value...
function defaultRenderer (line 2) | function defaultRenderer(i){var s=i.rows,u=i.stylesheet,m=i.useInlineSty...
function isHighlightJs (line 2) | function isHighlightJs(i){return i&&void 0!==i.highlightAuto}
class Cache (line 2) | class Cache extends Map{delete(i){const s=Array.from(this.keys()).find(s...
method delete (line 2) | delete(i){const s=Array.from(this.keys()).find(shallowArrayEquals(i));...
method get (line 2) | get(i){const s=Array.from(this.keys()).find(shallowArrayEquals(i));ret...
method has (line 2) | has(i){return-1!==Array.from(this.keys()).findIndex(shallowArrayEquals...
function getParameter (line 2) | function getParameter(i,s,u,m){return s=s||[],i.getIn(["meta","paths",.....
function parameterValues (line 2) | function parameterValues(i,s,u){return s=s||[],operationWithMeta(i,...s)...
function parametersIncludeIn (line 2) | function parametersIncludeIn(i){let s=arguments.length>1&&void 0!==argum...
function parametersIncludeType (line 2) | function parametersIncludeType(i){let s=arguments.length>1&&void 0!==arg...
function contentTypeValues (line 2) | function contentTypeValues(i,s){s=s||[];let u=Ba(i).getIn(["paths",...s]...
function currentProducesFor (line 2) | function currentProducesFor(i,s){s=s||[];const u=Ba(i).getIn(["paths",.....
function producesOptionsFor (line 2) | function producesOptionsFor(i,s){s=s||[];const u=Ba(i),m=u.getIn(["paths...
function consumesOptionsFor (line 2) | function consumesOptionsFor(i,s){s=s||[];const u=Ba(i),m=u.getIn(["paths...
function returnSelfOrNewMap (line 2) | function returnSelfOrNewMap(i){return et.Map.isMap(i)?i:new et.Map}
function updateSpec (line 2) | function updateSpec(i){const s=toStr(i).replace(/\t/g," ");if("string"=...
function updateResolved (line 2) | function updateResolved(i){return{type:Us,payload:i}}
function updateUrl (line 2) | function updateUrl(i){return{type:js,payload:i}}
function updateJsonSpec (line 2) | function updateJsonSpec(i){return{type:Is,payload:i}}
function changeParam (line 2) | function changeParam(i,s,u,m,v){return{type:Ps,payload:{path:i,value:m,p...
function changeParamByIdentity (line 2) | function changeParamByIdentity(i,s,u,m){return{type:Ps,payload:{path:i,p...
function clearValidateParams (line 2) | function clearValidateParams(i){return{type:qs,payload:{pathMethod:i}}}
function changeConsumesValue (line 2) | function changeConsumesValue(i,s){return{type:$s,payload:{path:i,value:s...
function changeProducesValue (line 2) | function changeProducesValue(i,s){return{type:$s,payload:{path:i,value:s...
function clearResponse (line 2) | function clearResponse(i,s){return{type:Ls,payload:{path:i,method:s}}}
function clearRequest (line 2) | function clearRequest(i,s){return{type:Fs,payload:{path:i,method:s}}}
function setScheme (line 2) | function setScheme(i,s,u){return{type:Vs,payload:{scheme:i,path:s,method...
function __ (line 2) | function __(){this.constructor=i}
function module_helpers_hasOwnProperty (line 2) | function module_helpers_hasOwnProperty(i,s){return Xs.call(i,s)}
function _objectKeys (line 2) | function _objectKeys(i){if(Array.isArray(i)){for(var s=new Array(i.lengt...
function _deepClone (line 2) | function _deepClone(i){switch(typeof i){case"object":return JSON.parse(J...
function helpers_isInteger (line 2) | function helpers_isInteger(i){for(var s,u=0,m=i.length;u<m;){if(!((s=i.c...
function escapePathComponent (line 2) | function escapePathComponent(i){return-1===i.indexOf("/")&&-1===i.indexO...
function unescapePathComponent (line 2) | function unescapePathComponent(i){return i.replace(/~1/g,"/").replace(/~...
function hasUndefined (line 2) | function hasUndefined(i){if(void 0===i)return!0;if(i)if(Array.isArray(i)...
function patchErrorMessageFormatter (line 2) | function patchErrorMessageFormatter(i,s){var u=[i];for(var m in s){var v...
function PatchError (line 2) | function PatchError(s,u,m,v,_){var j=this.constructor,M=i.call(this,patc...
function getValueByPointer (line 2) | function getValueByPointer(i,s){if(""==s)return i;var u={op:"_get",path:...
function applyOperation (line 2) | function applyOperation(i,s,u,m,v,_){if(void 0===u&&(u=!1),void 0===m&&(...
function applyPatch (line 2) | function applyPatch(i,s,u,m,v){if(void 0===m&&(m=!0),void 0===v&&(v=!0),...
function applyReducer (line 2) | function applyReducer(i,s,u){var m=applyOperation(i,s);if(!1===m.test)th...
function validator (line 2) | function validator(i,s,u,m){if("object"!=typeof i||null===i||Array.isArr...
function validate (line 2) | function validate(i,s,u){try{if(!Array.isArray(i))throw new Qs("Patch se...
function _areEquals (line 2) | function _areEquals(i,s){if(i===s)return!0;if(i&&s&&"object"==typeof i&&...
function unobserve (line 2) | function unobserve(i,s){s.unobserve()}
function observe (line 2) | function observe(i,s){var u,m=function getMirror(i){return rl.get(i)}(i)...
function generate (line 2) | function generate(i,s){void 0===s&&(s=!1);var u=rl.get(i.object);_genera...
function _generate (line 2) | function _generate(i,s,u,m,v){if(s!==i){"function"==typeof s.toJSON&&(s=...
function compare (line 2) | function compare(i,s,u){void 0===u&&(u=!1);var m=[];return _generate(i,s...
function normalizeJSONPath (line 2) | function normalizeJSONPath(i){return Array.isArray(i)?i.length<1?"":`/${...
function replace (line 2) | function replace(i,s,u){return{op:"replace",path:i,value:s,meta:u}}
function forEachNewPatch (line 2) | function forEachNewPatch(i,s,u){return cleanArray(flatten(i.filter(isAdd...
function forEachPrimitive (line 2) | function forEachPrimitive(i,s,u){return u=u||[],Array.isArray(i)?i.map((...
function forEach (line 2) | function forEach(i,s,u){let m=[];if((u=u||[]).length>0){const v=s(i,u[u....
function lib_normalizeArray (line 2) | function lib_normalizeArray(i){return Array.isArray(i)?i:[i]}
function flatten (line 2) | function flatten(i){return[].concat(...i.map((i=>Array.isArray(i)?flatte...
function cleanArray (line 2) | function cleanArray(i){return i.filter((i=>void 0!==i))}
function lib_isObject (line 2) | function lib_isObject(i){return i&&"object"==typeof i}
function lib_isFunction (line 2) | function lib_isFunction(i){return i&&"function"==typeof i}
function isJsonPatch (line 2) | function isJsonPatch(i){if(isPatch(i)){const{op:s}=i;return"add"===s||"r...
function isMutation (line 2) | function isMutation(i){return isJsonPatch(i)||isPatch(i)&&"mutation"===i...
function isAdditiveMutation (line 2) | function isAdditiveMutation(i){return isMutation(i)&&("add"===i.op||"rep...
function isPatch (line 2) | function isPatch(i){return i&&"object"==typeof i}
function getInByJsonPath (line 2) | function getInByJsonPath(i,s){try{return getValueByPointer(i,s)}catch(i)...
function _isPlaceholder (line 2) | function _isPlaceholder(i){return null!=i&&"object"==typeof i&&!0===i["@...
function _curry1 (line 2) | function _curry1(i){return function f1(s){return 0===arguments.length||_...
function _curry2 (line 2) | function _curry2(i){return function f2(s,u){switch(arguments.length){cas...
function _curry3 (line 2) | function _curry3(i){return function f3(s,u,m){switch(arguments.length){c...
function _isString (line 2) | function _isString(i){return"[object String]"===Object.prototype.toStrin...
function _cloneRegExp (line 2) | function _cloneRegExp(i){return new RegExp(i.source,i.flags?i.flags:(i.g...
function _arrayFromIterator (line 2) | function _arrayFromIterator(i){for(var s,u=[];!(s=i.next()).done;)u.push...
function _includesWith (line 2) | function _includesWith(i,s,u){for(var m=0,v=u.length;m<v;){if(i(s,u[m]))...
function _has (line 2) | function _has(i,s){return Object.prototype.hasOwnProperty.call(s,i)}
function _uniqContentEquals (line 2) | function _uniqContentEquals(i,s,u,m){var v=_arrayFromIterator(i);functio...
function _equals (line 2) | function _equals(i,s,u,m){if(gl(i,s))return!0;var v=kl(i);if(v!==kl(s))r...
function _includes (line 2) | function _includes(i,s){return function _indexOf(i,s,u){var m,v;if("func...
function _map (line 2) | function _map(i,s){for(var u=0,m=s.length,v=Array(m);u<m;)v[u]=i(s[u]),u...
function _quote (line 2) | function _quote(i){return'"'+i.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\...
function _complement (line 2) | function _complement(i){return function(){return!i.apply(this,arguments)}}
function _arrayReduce (line 2) | function _arrayReduce(i,s,u){for(var m=0,v=u.length;m<v;)s=i(s,u[m]),m+=...
function _dispatchable (line 2) | function _dispatchable(i,s,u){return function(){if(0===arguments.length)...
function _isObject (line 2) | function _isObject(i){return"[object Object]"===Object.prototype.toStrin...
function XFilter (line 2) | function XFilter(i,s){this.xf=s,this.f=i}
function _xfilter (line 2) | function _xfilter(i){return function(s){return new Il(i,s)}}
function _toString_toString (line 2) | function _toString_toString(i,s){var u=function recur(u){var m=s.concat(...
function _arity (line 2) | function _arity(i,s){switch(i){case 0:return function(){return s.apply(t...
function _pipe (line 2) | function _pipe(i,s){return function(){return s.call(this,i.apply(this,ar...
function _createReduce (line 2) | function _createReduce(i,s,u){return function _reduce(m,v,_){if(Bl(_))re...
function _xArrayReduce (line 2) | function _xArrayReduce(i,s,u){for(var m=0,v=u.length;m<v;){if((s=i["@@tr...
function _xIterableReduce (line 2) | function _xIterableReduce(i,s,u){for(var m=u.next();!m.done;){if((s=i["@...
function _xMethodReduce (line 2) | function _xMethodReduce(i,s,u,m){return i["@@transducer/result"](u[m](ql...
function XWrap (line 2) | function XWrap(i){this.f=i}
function _xwrap (line 2) | function _xwrap(i){return new Ul(i)}
function _checkForMethod (line 2) | function _checkForMethod(i,s){return function(){var u=arguments.length;i...
function pipe (line 2) | function pipe(){if(0===arguments.length)throw new Error("pipe requires a...
function _curryN (line 2) | function _curryN(i,s,u){return function(){for(var m=[],v=0,_=i,j=0,M=!1;...
function _isFunction (line 2) | function _isFunction(i){var s=Object.prototype.toString.call(i);return"[...
function dropLastWhile (line 2) | function dropLastWhile(i,s){for(var u=s.length-1;u>=0&&i(s[u]);)u-=1;ret...
function XDropLastWhile (line 2) | function XDropLastWhile(i,s){this.f=i,this.retained=[],this.xf=s}
function _xdropLastWhile (line 2) | function _xdropLastWhile(i){return function(s){return new lc(i,s)}}
function _iterableReduce (line 2) | function _iterableReduce(i,s,u){for(var m=u.next();!m.done;)s=i(s,m.valu...
function _methodReduce (line 2) | function _methodReduce(i,s,u,m){return u[m](i,s)}
function XMap (line 2) | function XMap(i,s){this.xf=s,this.f=i}
function safeMax (line 2) | function safeMax(i,s){if(i>s!=s>i)return s>i?s:i}
function createErrorType (line 2) | function createErrorType(i,s){function E(){Error.captureStackTrace?Error...
function isFreelyNamed (line 2) | function isFreelyNamed(i){const s=i[i.length-1],u=i[i.length-2],m=i.join...
function absolutifyPointer (line 2) | function absolutifyPointer(i,s){const[u,m]=i.split("#"),v=null!=s?s:"",_...
function pointToAncestor (line 2) | function pointToAncestor(i){return sl.isObject(i)&&(u.indexOf(i)>=0||Obj...
function absoluteify (line 2) | function absoluteify(i,s){if(!Mu.test(i)){if(!s)throw new Ru(`Tried to r...
function wrapError (line 2) | function wrapError(i,s){let u;return u=i&&i.response&&i.response.body?`$...
function refs_split (line 2) | function refs_split(i){return(i+"").split("#")}
function extractFromDoc (line 2) | function extractFromDoc(i,s){const u=Du[i];if(u&&!sl.isPromise(u))try{co...
function getDoc (line 2) | function getDoc(i){const s=Du[i];return s?sl.isPromise(s)?s:Promise.reso...
function extract (line 2) | function extract(i,s){const u=jsonPointerToArray(i);if(u.length<1)return...
function jsonPointerToArray (line 2) | function jsonPointerToArray(i){if("string"!=typeof i)throw new TypeError...
function unescapeJsonPointerToken (line 2) | function unescapeJsonPointerToken(i){if("string"!=typeof i)return i;retu...
function escapeJsonPointerToken (line 2) | function escapeJsonPointerToken(i){return new URLSearchParams([["",i.rep...
function pointerIsAParent (line 2) | function pointerIsAParent(i,s){if(pointerBoundaryChar(s))return!0;const ...
class ContextTree (line 2) | class ContextTree{constructor(i){this.root=createNode(i||{})}set(i,s){co...
method constructor (line 2) | constructor(i){this.root=createNode(i||{})}
method set (line 2) | set(i,s){const u=this.getParent(i,!0);if(!u)return void updateNode(thi...
method get (line 2) | get(i){if((i=i||[]).length<1)return this.root.value;let s,u,m=this.roo...
method getParent (line 2) | getParent(i,s){return!i||i.length<1?null:i.length<2?this.root:i.slice(...
function createNode (line 2) | function createNode(i,s){return updateNode({children:{}},i,s)}
function updateNode (line 2) | function updateNode(i,s,u){return i.value=s||{},i.protoValue=u?{...u.pro...
class SpecMap (line 2) | class SpecMap{static getPluginName(i){return i.pluginName}static getPatc...
method getPluginName (line 2) | static getPluginName(i){return i.pluginName}
method getPatchesOfType (line 2) | static getPatchesOfType(i,s){return i.filter(s)}
method constructor (line 2) | constructor(i){Object.assign(this,{spec:"",debugLevel:"info",plugins:[...
method debug (line 2) | debug(i){if(this.debugLevel===i){for(var s=arguments.length,u=new Arra...
method verbose (line 2) | verbose(i){if("verbose"===this.debugLevel){for(var s=arguments.length,...
method wrapPlugin (line 2) | wrapPlugin(i,s){const{pathDiscriminator:u}=this;let m,v=null;return i[...
method nextPlugin (line 2) | nextPlugin(){return this.wrappedPlugins.find((i=>this.getMutationsForP...
method nextPromisedPatch (line 2) | nextPromisedPatch(){if(this.promisedPatches.length>0)return Promise.ra...
method getPluginHistory (line 2) | getPluginHistory(i){const s=this.constructor.getPluginName(i);return t...
method getPluginRunCount (line 2) | getPluginRunCount(i){return this.getPluginHistory(i).length}
method getPluginHistoryTip (line 2) | getPluginHistoryTip(i){const s=this.getPluginHistory(i);return s&&s[s....
method getPluginMutationIndex (line 2) | getPluginMutationIndex(i){const s=this.getPluginHistoryTip(i).mutation...
method updatePluginHistory (line 2) | updatePluginHistory(i,s){const u=this.constructor.getPluginName(i);thi...
method updatePatches (line 2) | updatePatches(i){sl.normalizeArray(i).forEach((i=>{if(i instanceof Err...
method updateMutations (line 2) | updateMutations(i){"object"==typeof i.value&&!Array.isArray(i.value)&&...
method removePromisedPatch (line 2) | removePromisedPatch(i){const s=this.promisedPatches.indexOf(i);s<0?thi...
method promisedPatchThen (line 2) | promisedPatchThen(i){return i.value=i.value.then((s=>{const u={...i,va...
method getMutations (line 2) | getMutations(i,s){return i=i||0,"number"!=typeof s&&(s=this.mutations....
method getCurrentMutations (line 2) | getCurrentMutations(){return this.getMutationsForPlugin(this.getCurren...
method getMutationsForPlugin (line 2) | getMutationsForPlugin(i){const s=this.getPluginMutationIndex(i);return...
method getCurrentPlugin (line 2) | getCurrentPlugin(){return this.currentPlugin}
method getLib (line 2) | getLib(){return this.libMethods}
method _get (line 2) | _get(i){return sl.getIn(this.state,i)}
method _getContext (line 2) | _getContext(i){return this.contextTree.get(i)}
method setContext (line 2) | setContext(i,s){return this.contextTree.set(i,s)}
method _hasRun (line 2) | _hasRun(i){return this.getPluginRunCount(this.getCurrentPlugin())>(i||0)}
method dispatch (line 2) | dispatch(){const i=this,s=this.nextPlugin();if(!s){const i=this.nextPr...
function opId (line 2) | function opId(i,s){let u=arguments.length>2&&void 0!==arguments[2]?argum...
function normalize (line 2) | function normalize(i){const{spec:s}=i,{paths:u}=s,m={};if(!u||s.$$normal...
function makeFetchJSON (line 2) | function makeFetchJSON(i){let s=arguments.length>1&&void 0!==arguments[1...
function encodeDisallowedCharacters (line 2) | function encodeDisallowedCharacters(i){let{escape:s}=arguments.length>1&...
function stylize (line 2) | function stylize(i){const{value:s}=i;return Array.isArray(s)?function en...
function http_http (line 2) | async function http_http(i){let s=arguments.length>1&&void 0!==arguments...
function serializeRes (line 2) | function serializeRes(i,s){let{loadSpec:u=!1}=arguments.length>2&&void 0...
function serializeHeaders (line 2) | function serializeHeaders(){let i=arguments.length>0&&void 0!==arguments...
function isFile (line 2) | function isFile(i,s){return s||"undefined"==typeof navigator||(s=navigat...
function isArrayOfFile (line 2) | function isArrayOfFile(i,s){return Array.isArray(i)&&i.some((i=>isFile(i...
class FileWithData (line 2) | class FileWithData extends File{constructor(i){super([i],arguments.lengt...
method constructor (line 2) | constructor(i){super([i],arguments.length>1&&void 0!==arguments[1]?arg...
method valueOf (line 2) | valueOf(){return this.data}
method toString (line 2) | toString(){return this.valueOf()}
function formatKeyValue (line 2) | function formatKeyValue(i,s){let u=arguments.length>2&&void 0!==argument...
function formatKeyValueBySerializationOption (line 2) | function formatKeyValueBySerializationOption(i,s,u,m){const v=m.style||"...
function encodeFormOrQuery (line 2) | function encodeFormOrQuery(i){const s=Object.keys(i).reduce(((s,u)=>{for...
function mergeInQueryOrForm (line 2) | function mergeInQueryOrForm(){let i=arguments.length>0&&void 0!==argumen...
function resolveGenericStrategy (line 2) | async function resolveGenericStrategy(i){const{spec:s,mode:u,allowMetaPa...
method normalize (line 2) | normalize(i){let{spec:s}=i;const{spec:u}=normalize({spec:s});return u}
method match (line 2) | match(i){let{spec:s}=i;return(i=>{try{const{swagger:s}=i;return"2.0"===s...
method normalize (line 2) | normalize(i){let{spec:s}=i;const{spec:u}=normalize({spec:s});return u}
method match (line 2) | match(i){let{spec:s}=i;return isOpenAPI30(s)}
method normalize (line 2) | normalize(i){let{spec:s}=i;const{spec:u}=normalize({spec:s});return u}
class Annotation (line 2) | class Annotation extends np.RP{constructor(i,s,u){super(i,s,u),this.elem...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="annotation"}
method code (line 2) | get code(){return this.attributes.get("code")}
method code (line 2) | set code(i){this.attributes.set("code",i)}
class Comment (line 2) | class Comment extends np.RP{constructor(i,s,u){super(i,s,u),this.element...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="comment"}
class ParseResult (line 2) | class ParseResult extends np.ON{constructor(i,s,u){super(i,s,u),this.ele...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="parseResult"}
method api (line 2) | get api(){return this.children.filter((i=>i.classes.contains("api")))....
method results (line 2) | get results(){return this.children.filter((i=>i.classes.contains("resu...
method result (line 2) | get result(){return this.results.first}
method annotations (line 2) | get annotations(){return this.children.filter((i=>"annotation"===i.ele...
method warnings (line 2) | get warnings(){return this.children.filter((i=>"annotation"===i.elemen...
method errors (line 2) | get errors(){return this.children.filter((i=>"annotation"===i.element&...
method isEmpty (line 2) | get isEmpty(){return this.children.reject((i=>"annotation"===i.element...
method replaceResult (line 2) | replaceResult(i){const{result:s}=this;if(Kc(s))return!1;const u=this.c...
class SourceMap (line 2) | class SourceMap extends np.ON{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="sourceMap"}
method positionStart (line 2) | get positionStart(){return this.children.filter((i=>i.classes.contains...
method positionEnd (line 2) | get positionEnd(){return this.children.filter((i=>i.classes.contains("...
method position (line 2) | set position(i){if(null===i)return;const s=new np.ON([i.start.row,i.st...
function _reduced (line 2) | function _reduced(i){return i&&i["@@transducer/reduced"]?i:{"@@transduce...
function XAll (line 2) | function XAll(i,s){this.xf=s,this.f=i,this.all=!0}
function _xall (line 2) | function _xall(i){return function(s){return new Ep(i,s)}}
function isOfTypeObject_typeof (line 2) | function isOfTypeObject_typeof(i){return isOfTypeObject_typeof="function...
class Namespace (line 2) | class Namespace extends np.lS{constructor(){super(),this.register("annot...
method constructor (line 2) | constructor(i){this.elementMap={},this.elementDetection=[],this.Elemen...
method use (line 2) | use(i){return i.namespace&&i.namespace({base:this}),i.load&&i.load({ba...
method useDefault (line 2) | useDefault(){return this.register("null",W.NullElement).register("stri...
method register (line 2) | register(i,s){return this._elements=void 0,this.elementMap[i]=s,this}
method unregister (line 2) | unregister(i){return this._elements=void 0,delete this.elementMap[i],t...
method detect (line 2) | detect(i,s,u){return void 0===u||u?this.elementDetection.unshift([i,s]...
method toElement (line 2) | toElement(i){if(i instanceof this.Element)return i;let s;for(let u=0;u...
method getElementClass (line 2) | getElementClass(i){const s=this.elementMap[i];return void 0===s?this.E...
method fromRefract (line 2) | fromRefract(i){return this.serialiser.deserialise(i)}
method toRefract (line 2) | toRefract(i){return this.serialiser.serialise(i)}
method elements (line 2) | get elements(){return void 0===this._elements&&(this._elements={Elemen...
method serialiser (line 2) | get serialiser(){return new $(this)}
method constructor (line 2) | constructor(){super(),this.register("annotation",op),this.register("co...
method constructor (line 2) | constructor(i,s,u){if(super(i,s,u),this.name=this.constructor.name,"stri...
class ApiDOMError (line 2) | class ApiDOMError extends Error{static[Symbol.hasInstance](i){return sup...
method constructor (line 2) | constructor(i,s){if(super(i,s),this.name=this.constructor.name,"string...
method [Symbol.hasInstance] (line 2) | static[Symbol.hasInstance](i){return super[Symbol.hasInstance](i)||Funct...
method constructor (line 2) | constructor(i,s){if(super(i,s),null!=s&&"object"==typeof s){const{cause:...
method enter (line 2) | enter(v,..._){for(let j=0;j<i.length;j+=1)if(null===m[j]){const M=s(i[j]...
method leave (line 2) | leave(v,..._){for(let j=0;j<i.length;j+=1)if(null===m[j]){const M=s(i[j]...
method constructor (line 2) | constructor(i,s){super(i,s),void 0!==s&&(this.value=s.value)}
method init (line 2) | init({predicate:i=this.predicate,returnOnTrue:s=this.returnOnTrue,return...
method enter (line 2) | enter(i){return this.predicate(i)?(this.result.push(i),this.returnOnTrue...
method constructor (line 2) | constructor(i){this.content=i,this.reference=[]}
method toReference (line 2) | toReference(){return this.reference}
method toArray (line 2) | toArray(){return this.reference.push(...this.content),this.reference}
method constructor (line 2) | constructor(i){this.content=i,this.reference={}}
method toReference (line 2) | toReference(){return this.reference}
method toObject (line 2) | toObject(){return Object.assign(this.reference,Object.fromEntries(this.c...
method enter (line 2) | enter(s){if(i.has(s))return i.get(s).toReference();const u=new jh(s.cont...
method enter (line 2) | enter(s){if(i.has(s))return i.get(s).toReference();const u=new kh(s.cont...
method constructor (line 2) | constructor(i,s){super(i,s),void 0!==s&&(this.tokens=[...s.tokens])}
function _identity (line 2) | function _identity(i){return i}
function XTake (line 2) | function XTake(i,s){this.xf=s,this.n=i,this.i=0}
function _xtake (line 2) | function _xtake(i){return function(s){return new md(i,s)}}
function XDropWhile (line 2) | function XDropWhile(i,s){this.xf=s,this.f=i}
function _xdropWhile (line 2) | function _xdropWhile(i){return function(s){return new wd(i,s)}}
method constructor (line 2) | constructor(i,s){super(i,s),void 0!==s&&(this.pointer=s.pointer)}
method constructor (line 2) | constructor(i,s){super(i,s),void 0!==s&&(this.pointer=s.pointer,Array.is...
class Callback (line 2) | class Callback extends np.Sb{constructor(i,s,u){super(i,s,u),this.elemen...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="callback"}
class Components (line 2) | class Components extends np.Sb{constructor(i,s,u){super(i,s,u),this.elem...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="components"}
method schemas (line 2) | get schemas(){return this.get("schemas")}
method schemas (line 2) | set schemas(i){this.set("schemas",i)}
method responses (line 2) | get responses(){return this.get("responses")}
method responses (line 2) | set responses(i){this.set("responses",i)}
method parameters (line 2) | get parameters(){return this.get("parameters")}
method parameters (line 2) | set parameters(i){this.set("parameters",i)}
method examples (line 2) | get examples(){return this.get("examples")}
method examples (line 2) | set examples(i){this.set("examples",i)}
method requestBodies (line 2) | get requestBodies(){return this.get("requestBodies")}
method requestBodies (line 2) | set requestBodies(i){this.set("requestBodies",i)}
method headers (line 2) | get headers(){return this.get("headers")}
method headers (line 2) | set headers(i){this.set("headers",i)}
method securitySchemes (line 2) | get securitySchemes(){return this.get("securitySchemes")}
method securitySchemes (line 2) | set securitySchemes(i){this.set("securitySchemes",i)}
method links (line 2) | get links(){return this.get("links")}
method links (line 2) | set links(i){this.set("links",i)}
method callbacks (line 2) | get callbacks(){return this.get("callbacks")}
method callbacks (line 2) | set callbacks(i){this.set("callbacks",i)}
class Contact (line 2) | class Contact extends np.Sb{constructor(i,s,u){super(i,s,u),this.element...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="contact"}
method name (line 2) | get name(){return this.get("name")}
method name (line 2) | set name(i){this.set("name",i)}
method url (line 2) | get url(){return this.get("url")}
method url (line 2) | set url(i){this.set("url",i)}
method email (line 2) | get email(){return this.get("email")}
method email (line 2) | set email(i){this.set("email",i)}
class Discriminator (line 2) | class Discriminator extends np.Sb{constructor(i,s,u){super(i,s,u),this.e...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="discriminator"}
method propertyName (line 2) | get propertyName(){return this.get("propertyName")}
method propertyName (line 2) | set propertyName(i){this.set("propertyName",i)}
method mapping (line 2) | get mapping(){return this.get("mapping")}
method mapping (line 2) | set mapping(i){this.set("mapping",i)}
class Encoding (line 2) | class Encoding extends np.Sb{constructor(i,s,u){super(i,s,u),this.elemen...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="encoding"}
method contentType (line 2) | get contentType(){return this.get("contentType")}
method contentType (line 2) | set contentType(i){this.set("contentType",i)}
method headers (line 2) | get headers(){return this.get("headers")}
method headers (line 2) | set headers(i){this.set("headers",i)}
method style (line 2) | get style(){return this.get("style")}
method style (line 2) | set style(i){this.set("style",i)}
method explode (line 2) | get explode(){return this.get("explode")}
method explode (line 2) | set explode(i){this.set("explode",i)}
method allowedReserved (line 2) | get allowedReserved(){return this.get("allowedReserved")}
method allowedReserved (line 2) | set allowedReserved(i){this.set("allowedReserved",i)}
class Example (line 2) | class Example extends np.Sb{constructor(i,s,u){super(i,s,u),this.element...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="example"}
method summary (line 2) | get summary(){return this.get("summary")}
method summary (line 2) | set summary(i){this.set("summary",i)}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method value (line 2) | get value(){return this.get("value")}
method value (line 2) | set value(i){this.set("value",i)}
method externalValue (line 2) | get externalValue(){return this.get("externalValue")}
method externalValue (line 2) | set externalValue(i){this.set("externalValue",i)}
class ExternalDocumentation (line 2) | class ExternalDocumentation extends np.Sb{constructor(i,s,u){super(i,s,u...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="externalDocumentation"}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method url (line 2) | get url(){return this.get("url")}
method url (line 2) | set url(i){this.set("url",i)}
class Header (line 2) | class Header extends np.Sb{constructor(i,s,u){super(i,s,u),this.element=...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="header"}
method required (line 2) | get required(){return this.hasKey("required")?this.get("required"):new...
method required (line 2) | set required(i){this.set("required",i)}
method deprecated (line 2) | get deprecated(){return this.hasKey("deprecated")?this.get("deprecated...
method deprecated (line 2) | set deprecated(i){this.set("deprecated",i)}
method allowEmptyValue (line 2) | get allowEmptyValue(){return this.get("allowEmptyValue")}
method allowEmptyValue (line 2) | set allowEmptyValue(i){this.set("allowEmptyValue",i)}
method style (line 2) | get style(){return this.get("style")}
method style (line 2) | set style(i){this.set("style",i)}
method explode (line 2) | get explode(){return this.get("explode")}
method explode (line 2) | set explode(i){this.set("explode",i)}
method allowReserved (line 2) | get allowReserved(){return this.get("allowReserved")}
method allowReserved (line 2) | set allowReserved(i){this.set("allowReserved",i)}
method schema (line 2) | get schema(){return this.get("schema")}
method schema (line 2) | set schema(i){this.set("schema",i)}
method example (line 2) | get example(){return this.get("example")}
method example (line 2) | set example(i){this.set("example",i)}
method examples (line 2) | get examples(){return this.get("examples")}
method examples (line 2) | set examples(i){this.set("examples",i)}
method contentProp (line 2) | get contentProp(){return this.get("content")}
method contentProp (line 2) | set contentProp(i){this.set("content",i)}
method get (line 2) | get(){return this.get("description")}
method set (line 2) | set(i){this.set("description",i)}
class Info (line 2) | class Info extends np.Sb{constructor(i,s,u){super(i,s,u),this.element="i...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="info",this.classes.push(...
method title (line 2) | get title(){return this.get("title")}
method title (line 2) | set title(i){this.set("title",i)}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method termsOfService (line 2) | get termsOfService(){return this.get("termsOfService")}
method termsOfService (line 2) | set termsOfService(i){this.set("termsOfService",i)}
method contact (line 2) | get contact(){return this.get("contact")}
method contact (line 2) | set contact(i){this.set("contact",i)}
method license (line 2) | get license(){return this.get("license")}
method license (line 2) | set license(i){this.set("license",i)}
method version (line 2) | get version(){return this.get("version")}
method version (line 2) | set version(i){this.set("version",i)}
class License (line 2) | class License extends np.Sb{constructor(i,s,u){super(i,s,u),this.element...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="license"}
method name (line 2) | get name(){return this.get("name")}
method name (line 2) | set name(i){this.set("name",i)}
method url (line 2) | get url(){return this.get("url")}
method url (line 2) | set url(i){this.set("url",i)}
class Link (line 2) | class Link extends np.Sb{constructor(i,s,u){super(i,s,u),this.element="l...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="link"}
method operationRef (line 2) | get operationRef(){return this.get("operationRef")}
method operationRef (line 2) | set operationRef(i){this.set("operationRef",i)}
method operationId (line 2) | get operationId(){return this.get("operationId")}
method operationId (line 2) | set operationId(i){this.set("operationId",i)}
method operation (line 2) | get operation(){var i,s;return Op(this.operationRef)?null===(i=this.op...
method operation (line 2) | set operation(i){this.set("operation",i)}
method parameters (line 2) | get parameters(){return this.get("parameters")}
method parameters (line 2) | set parameters(i){this.set("parameters",i)}
method requestBody (line 2) | get requestBody(){return this.get("requestBody")}
method requestBody (line 2) | set requestBody(i){this.set("requestBody",i)}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method server (line 2) | get server(){return this.get("server")}
method server (line 2) | set server(i){this.set("server",i)}
class MediaType (line 2) | class MediaType extends np.Sb{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="mediaType"}
method schema (line 2) | get schema(){return this.get("schema")}
method schema (line 2) | set schema(i){this.set("schema",i)}
method example (line 2) | get example(){return this.get("example")}
method example (line 2) | set example(i){this.set("example",i)}
method examples (line 2) | get examples(){return this.get("examples")}
method examples (line 2) | set examples(i){this.set("examples",i)}
method encoding (line 2) | get encoding(){return this.get("encoding")}
method encoding (line 2) | set encoding(i){this.set("encoding",i)}
class OAuthFlow (line 2) | class OAuthFlow extends np.Sb{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="oAuthFlow"}
method authorizationUrl (line 2) | get authorizationUrl(){return this.get("authorizationUrl")}
method authorizationUrl (line 2) | set authorizationUrl(i){this.set("authorizationUrl",i)}
method tokenUrl (line 2) | get tokenUrl(){return this.get("tokenUrl")}
method tokenUrl (line 2) | set tokenUrl(i){this.set("tokenUrl",i)}
method refreshUrl (line 2) | get refreshUrl(){return this.get("refreshUrl")}
method refreshUrl (line 2) | set refreshUrl(i){this.set("refreshUrl",i)}
method scopes (line 2) | get scopes(){return this.get("scopes")}
method scopes (line 2) | set scopes(i){this.set("scopes",i)}
class OAuthFlows (line 2) | class OAuthFlows extends np.Sb{constructor(i,s,u){super(i,s,u),this.elem...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="oAuthFlows"}
method implicit (line 2) | get implicit(){return this.get("implicit")}
method implicit (line 2) | set implicit(i){this.set("implicit",i)}
method password (line 2) | get password(){return this.get("password")}
method password (line 2) | set password(i){this.set("password",i)}
method clientCredentials (line 2) | get clientCredentials(){return this.get("clientCredentials")}
method clientCredentials (line 2) | set clientCredentials(i){this.set("clientCredentials",i)}
method authorizationCode (line 2) | get authorizationCode(){return this.get("authorizationCode")}
method authorizationCode (line 2) | set authorizationCode(i){this.set("authorizationCode",i)}
class Openapi (line 2) | class Openapi extends np.RP{constructor(i,s,u){super(i,s,u),this.element...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="openapi",this.classes.pu...
class OpenApi3_0 (line 2) | class OpenApi3_0 extends np.Sb{constructor(i,s,u){super(i,s,u),this.elem...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="openApi3_0",this.classes...
method openapi (line 2) | get openapi(){return this.get("openapi")}
method openapi (line 2) | set openapi(i){this.set("openapi",i)}
method info (line 2) | get info(){return this.get("info")}
method info (line 2) | set info(i){this.set("info",i)}
method servers (line 2) | get servers(){return this.get("servers")}
method servers (line 2) | set servers(i){this.set("servers",i)}
method paths (line 2) | get paths(){return this.get("paths")}
method paths (line 2) | set paths(i){this.set("paths",i)}
method components (line 2) | get components(){return this.get("components")}
method components (line 2) | set components(i){this.set("components",i)}
method security (line 2) | get security(){return this.get("security")}
method security (line 2) | set security(i){this.set("security",i)}
method tags (line 2) | get tags(){return this.get("tags")}
method tags (line 2) | set tags(i){this.set("tags",i)}
method externalDocs (line 2) | get externalDocs(){return this.get("externalDocs")}
method externalDocs (line 2) | set externalDocs(i){this.set("externalDocs",i)}
class Operation (line 2) | class Operation extends np.Sb{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="operation"}
method tags (line 2) | get tags(){return this.get("tags")}
method tags (line 2) | set tags(i){this.set("tags",i)}
method summary (line 2) | get summary(){return this.get("summary")}
method summary (line 2) | set summary(i){this.set("summary",i)}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method externalDocs (line 2) | set externalDocs(i){this.set("externalDocs",i)}
method externalDocs (line 2) | get externalDocs(){return this.get("externalDocs")}
method operationId (line 2) | get operationId(){return this.get("operationId")}
method operationId (line 2) | set operationId(i){this.set("operationId",i)}
method parameters (line 2) | get parameters(){return this.get("parameters")}
method parameters (line 2) | set parameters(i){this.set("parameters",i)}
method requestBody (line 2) | get requestBody(){return this.get("requestBody")}
method requestBody (line 2) | set requestBody(i){this.set("requestBody",i)}
method responses (line 2) | get responses(){return this.get("responses")}
method responses (line 2) | set responses(i){this.set("responses",i)}
method callbacks (line 2) | get callbacks(){return this.get("callbacks")}
method callbacks (line 2) | set callbacks(i){this.set("callbacks",i)}
method deprecated (line 2) | get deprecated(){return this.hasKey("deprecated")?this.get("deprecated...
method deprecated (line 2) | set deprecated(i){this.set("deprecated",i)}
method security (line 2) | get security(){return this.get("security")}
method security (line 2) | set security(i){this.set("security",i)}
method servers (line 2) | get servers(){return this.get("severs")}
method servers (line 2) | set servers(i){this.set("servers",i)}
class Parameter (line 2) | class Parameter extends np.Sb{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="parameter"}
method name (line 2) | get name(){return this.get("name")}
method name (line 2) | set name(i){this.set("name",i)}
method in (line 2) | get in(){return this.get("in")}
method in (line 2) | set in(i){this.set("in",i)}
method required (line 2) | get required(){return this.hasKey("required")?this.get("required"):new...
method required (line 2) | set required(i){this.set("required",i)}
method deprecated (line 2) | get deprecated(){return this.hasKey("deprecated")?this.get("deprecated...
method deprecated (line 2) | set deprecated(i){this.set("deprecated",i)}
method allowEmptyValue (line 2) | get allowEmptyValue(){return this.get("allowEmptyValue")}
method allowEmptyValue (line 2) | set allowEmptyValue(i){this.set("allowEmptyValue",i)}
method style (line 2) | get style(){return this.get("style")}
method style (line 2) | set style(i){this.set("style",i)}
method explode (line 2) | get explode(){return this.get("explode")}
method explode (line 2) | set explode(i){this.set("explode",i)}
method allowReserved (line 2) | get allowReserved(){return this.get("allowReserved")}
method allowReserved (line 2) | set allowReserved(i){this.set("allowReserved",i)}
method schema (line 2) | get schema(){return this.get("schema")}
method schema (line 2) | set schema(i){this.set("schema",i)}
method example (line 2) | get example(){return this.get("example")}
method example (line 2) | set example(i){this.set("example",i)}
method examples (line 2) | get examples(){return this.get("examples")}
method examples (line 2) | set examples(i){this.set("examples",i)}
method contentProp (line 2) | get contentProp(){return this.get("content")}
method contentProp (line 2) | set contentProp(i){this.set("content",i)}
method get (line 2) | get(){return this.get("description")}
method set (line 2) | set(i){this.set("description",i)}
class PathItem (line 2) | class PathItem extends np.Sb{constructor(i,s,u){super(i,s,u),this.elemen...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="pathItem"}
method $ref (line 2) | get $ref(){return this.get("$ref")}
method $ref (line 2) | set $ref(i){this.set("$ref",i)}
method summary (line 2) | get summary(){return this.get("summary")}
method summary (line 2) | set summary(i){this.set("summary",i)}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method GET (line 2) | get GET(){return this.get("get")}
method GET (line 2) | set GET(i){this.set("GET",i)}
method PUT (line 2) | get PUT(){return this.get("put")}
method PUT (line 2) | set PUT(i){this.set("PUT",i)}
method POST (line 2) | get POST(){return this.get("post")}
method POST (line 2) | set POST(i){this.set("POST",i)}
method DELETE (line 2) | get DELETE(){return this.get("delete")}
method DELETE (line 2) | set DELETE(i){this.set("DELETE",i)}
method OPTIONS (line 2) | get OPTIONS(){return this.get("options")}
method OPTIONS (line 2) | set OPTIONS(i){this.set("OPTIONS",i)}
method HEAD (line 2) | get HEAD(){return this.get("head")}
method HEAD (line 2) | set HEAD(i){this.set("HEAD",i)}
method PATCH (line 2) | get PATCH(){return this.get("patch")}
method PATCH (line 2) | set PATCH(i){this.set("PATCH",i)}
method TRACE (line 2) | get TRACE(){return this.get("trace")}
method TRACE (line 2) | set TRACE(i){this.set("TRACE",i)}
method servers (line 2) | get servers(){return this.get("servers")}
method servers (line 2) | set servers(i){this.set("servers",i)}
method parameters (line 2) | get parameters(){return this.get("parameters")}
method parameters (line 2) | set parameters(i){this.set("parameters",i)}
class Paths (line 2) | class Paths extends np.Sb{constructor(i,s,u){super(i,s,u),this.element="...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="paths"}
class Reference (line 2) | class Reference extends np.Sb{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="reference",this.classes....
method $ref (line 2) | get $ref(){return this.get("$ref")}
method $ref (line 2) | set $ref(i){this.set("$ref",i)}
class RequestBody (line 2) | class RequestBody extends np.Sb{constructor(i,s,u){super(i,s,u),this.ele...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="requestBody"}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method contentProp (line 2) | get contentProp(){return this.get("content")}
method contentProp (line 2) | set contentProp(i){this.set("content",i)}
method required (line 2) | get required(){return this.hasKey("required")?this.get("required"):new...
method required (line 2) | set required(i){this.set("required",i)}
class Response_Response (line 2) | class Response_Response extends np.Sb{constructor(i,s,u){super(i,s,u),th...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="response"}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method headers (line 2) | get headers(){return this.get("headers")}
method headers (line 2) | set headers(i){this.set("headers",i)}
method contentProp (line 2) | get contentProp(){return this.get("content")}
method contentProp (line 2) | set contentProp(i){this.set("content",i)}
method links (line 2) | get links(){return this.get("links")}
method links (line 2) | set links(i){this.set("links",i)}
class Responses (line 2) | class Responses extends np.Sb{constructor(i,s,u){super(i,s,u),this.eleme...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="responses"}
method default (line 2) | get default(){return this.get("default")}
method default (line 2) | set default(i){this.set("default",i)}
class JSONSchema (line 2) | class JSONSchema extends np.Sb{constructor(i,s,u){super(i,s,u),this.elem...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="JSONSchemaDraft4"}
method idProp (line 2) | get idProp(){return this.get("id")}
method idProp (line 2) | set idProp(i){this.set("id",i)}
method $schema (line 2) | get $schema(){return this.get("$schema")}
method $schema (line 2) | set $schema(i){this.set("idProp",i)}
method multipleOf (line 2) | get multipleOf(){return this.get("multipleOf")}
method multipleOf (line 2) | set multipleOf(i){this.set("multipleOf",i)}
method maximum (line 2) | get maximum(){return this.get("maximum")}
method maximum (line 2) | set maximum(i){this.set("maximum",i)}
method exclusiveMaximum (line 2) | get exclusiveMaximum(){return this.get("exclusiveMaximum")}
method exclusiveMaximum (line 2) | set exclusiveMaximum(i){this.set("exclusiveMaximum",i)}
method minimum (line 2) | get minimum(){return this.get("minimum")}
method minimum (line 2) | set minimum(i){this.set("minimum",i)}
method exclusiveMinimum (line 2) | get exclusiveMinimum(){return this.get("exclusiveMinimum")}
method exclusiveMinimum (line 2) | set exclusiveMinimum(i){this.set("exclusiveMinimum",i)}
method maxLength (line 2) | get maxLength(){return this.get("maxLength")}
method maxLength (line 2) | set maxLength(i){this.set("maxLength",i)}
method minLength (line 2) | get minLength(){return this.get("minLength")}
method minLength (line 2) | set minLength(i){this.set("minLength",i)}
method pattern (line 2) | get pattern(){return this.get("pattern")}
method pattern (line 2) | set pattern(i){this.set("pattern",i)}
method additionalItems (line 2) | get additionalItems(){return this.get("additionalItems")}
method additionalItems (line 2) | set additionalItems(i){this.set("additionalItems",i)}
method items (line 2) | get items(){return this.get("items")}
method items (line 2) | set items(i){this.set("items",i)}
method maxItems (line 2) | get maxItems(){return this.get("maxItems")}
method maxItems (line 2) | set maxItems(i){this.set("maxItems",i)}
method minItems (line 2) | get minItems(){return this.get("minItems")}
method minItems (line 2) | set minItems(i){this.set("minItems",i)}
method uniqueItems (line 2) | get uniqueItems(){return this.get("uniqueItems")}
method uniqueItems (line 2) | set uniqueItems(i){this.set("uniqueItems",i)}
method maxProperties (line 2) | get maxProperties(){return this.get("maxProperties")}
method maxProperties (line 2) | set maxProperties(i){this.set("maxProperties",i)}
method minProperties (line 2) | get minProperties(){return this.get("minProperties")}
method minProperties (line 2) | set minProperties(i){this.set("minProperties",i)}
method required (line 2) | get required(){return this.get("required")}
method required (line 2) | set required(i){this.set("required",i)}
method properties (line 2) | get properties(){return this.get("properties")}
method properties (line 2) | set properties(i){this.set("properties",i)}
method additionalProperties (line 2) | get additionalProperties(){return this.get("additionalProperties")}
method additionalProperties (line 2) | set additionalProperties(i){this.set("additionalProperties",i)}
method patternProperties (line 2) | get patternProperties(){return this.get("patternProperties")}
method patternProperties (line 2) | set patternProperties(i){this.set("patternProperties",i)}
method dependencies (line 2) | get dependencies(){return this.get("dependencies")}
method dependencies (line 2) | set dependencies(i){this.set("dependencies",i)}
method enum (line 2) | get enum(){return this.get("enum")}
method enum (line 2) | set enum(i){this.set("enum",i)}
method type (line 2) | get type(){return this.get("type")}
method type (line 2) | set type(i){this.set("type",i)}
method allOf (line 2) | get allOf(){return this.get("allOf")}
method allOf (line 2) | set allOf(i){this.set("allOf",i)}
method anyOf (line 2) | get anyOf(){return this.get("anyOf")}
method anyOf (line 2) | set anyOf(i){this.set("anyOf",i)}
method oneOf (line 2) | get oneOf(){return this.get("oneOf")}
method oneOf (line 2) | set oneOf(i){this.set("oneOf",i)}
method not (line 2) | get not(){return this.get("not")}
method not (line 2) | set not(i){this.set("not",i)}
method definitions (line 2) | get definitions(){return this.get("definitions")}
method definitions (line 2) | set definitions(i){this.set("definitions",i)}
method title (line 2) | get title(){return this.get("title")}
method title (line 2) | set title(i){this.set("title",i)}
method description (line 2) | get description(){return this.get("description")}
method description (line 2) | set description(i){this.set("description",i)}
method default (line 2) | get default(){return this.get("default")}
method default (line 2) | set default(i){this.set("default",i)}
method format (line 2) | get format(){return this.get("format")}
method format (line 2) | set format(i){this.set("format",i)}
method base (line 2) | get base(){return this.get("base")}
method base (line 2) | set base(i){this.set("base",i)}
method links (line 2) | get links(){return this.get("links")}
method links (line 2) | set links(i){this.set("links",i)}
method media (line 2) | get media(){return this.get("media")}
method media (line 2) | set media(i){this.set("media",i)}
method readOnly (line 2) | get readOnly(){return this.get("readOnly")}
method readOnly (line 2) | set readOnly(i){this.set("readOnly",i)}
class JSONReference (line 2) | class JSONReference extends np.Sb{constructor(i,s,u){super(i,s,u),this.e...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="JSONReference",this.clas...
method $ref (line 2) | get $ref(){return this.get("$ref")}
method $ref (line 2) | set $ref(i){this.set("$ref",i)}
class Media (line 2) | class Media extends np.Sb{constructor(i,s,u){super(i,s,u),this.element="...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="media"}
method binaryEncoding (line 2) | get binaryEncoding(){return this.get("binaryEncoding")}
method binaryEncoding (line 2) | set binaryEncoding(i){this.set("binaryEncoding",i)}
method type (line 2) | get type(){return this.get("type")}
method type (line 2) | set type(i){this.set("type",i)}
class LinkDescription (line 2) | class LinkDescription extends np.Sb{constructor(i,s,u){super(i,s,u),this...
method constructor (line 2) | constructor(i,s,u){super(i,s,u),this.element="linkDescription"}
method href (line 2) | get href(){return this.get("href")}
method href (line 2) | set href(i){this.set("href",i)}
method rel (line 2) | get rel(){return this.get("rel")}
method rel (line 2) | set rel(i){this.set("rel",i)}
method title (line 2) | get title(){return this.get("title")}
method title (line 2) | set title(i){this.set("title",i)}
method targetSchema (line 2) | get targetSchema(){return this.get("targetSchema")}
method targetSchema (line 2) | set targetSchema(i){this.set("targetSchema",i)}
method mediaType (line 2) | get mediaType(){return this.get("mediaType")}
method mediaType (line 2) | set mediaType(i){this.set("mediaType",i)}
method method (line 2) | get method(){return this.get("method")}
method method (line 2) | set method(i){this.set("method",i)}
method encType (line 2) | get encType(){return this.get("encType")}
method encType (line 2) | set encType(i){this.set("encType",i)}
method schema (line 2) | get schema(){return this.get("schema")}
method schema (line 2) | set schema(i){this.set("schema",i)}
method copyMetaAndAttributes (line 2) | copyMetaAndAttributes(i,s){hasElementSourceMap(i)&&s.meta.set("sourceMap...
method enter (line 2) | enter(i){return this.element=cloneDeep(i),th}
method init (line 2) | init({specObj:i=this.specObj}){this.specObj=i}
method retrievePassingOptions (line 2) | retrievePassingOptions(){return Nf(this.passingOptionsNames,this)}
method retrieveFixedFields (line 2) | retrieveFixedFields(i){const s=fl(["visitors",...i,"fixedFields"],this.s...
method retrieveVisitor (line 2) | retrieveVisitor(i){return ml(iu,["visitors",...i],this.specObj)?fl(["vis...
method retrieveVisitorInstance (line 2) | retrieveVisitorInstance(i,s={}){const u=this.retrievePassingOptions();re...
method toRefractedElement (line 2) | toRefractedElement(i,s,u={}){const m=this.retrieveVisitorInstance(i,u),v...
method init (line 2) | init({specPath:i=this.specPath,ignoredFields:s=this.ignoredFields}={}){t...
method ObjectElement (line 2) | ObjectElement(i){const s=this.specPath(i),u=this.retrieveFixedFields(s);...
method init (line 2) | init(){this.element=new lf}
method init (line 2) | init({parent:i=this.parent}){this.parent=i,this.passingOptionsNames=[......
method ObjectElement (line 2) | ObjectElement(i){const s=isJSONReferenceLikeElement(i)?["document","obje...
method ArrayElement (line 2) | ArrayElement(i){return this.element=new np.ON,this.element.classes.push(...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}
method length (line 2) | get length(){return this.content.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.content.length}
method first (line 2) | get first(){return this.getIndex(0)}
method second (line 2) | get second(){return this.getIndex(1)}
method last (line 2) | get last(){return this.getIndex(this.length-1)}
method ArrayElement (line 2) | ArrayElement(i){return this.element=cloneDeep(i),this.element.classes.pu...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}
method length (line 2) | get length(){return this.content.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.content.length}
method first (line 2) | get first(){return this.getIndex(0)}
method second (line 2) | get second(){return this.getIndex(1)}
method last (line 2) | get last(){return this.getIndex(this.length-1)}
method init (line 2) | init({specPath:i=this.specPath,ignoredFields:s=this.ignoredFields}={}){t...
method ObjectElement (line 2) | ObjectElement(i){return i.forEach(((i,s,u)=>{if(!this.ignoredFields.incl...
method init (line 2) | init(){this.element=new np.Sb,this.element.classes.push("json-schema-pro...
method init (line 2) | init(){this.element=new np.Sb,this.element.classes.push("json-schema-pat...
method init (line 2) | init(){this.element=new np.Sb,this.element.classes.push("json-schema-dep...
method ArrayElement (line 2) | ArrayElement(i){return this.element=cloneDeep(i),this.element.classes.pu...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}
method length (line 2) | get length(){return this.content.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.content.length}
method first (line 2) | get first(){return this.getIndex(0)}
method second (line 2) | get second(){return this.getIndex(1)}
method last (line 2) | get last(){return this.getIndex(this.length-1)}
method StringElement (line 2) | StringElement(i){return this.element=cloneDeep(i),this.element.classes.p...
method ArrayElement (line 2) | ArrayElement(i){return this.element=cloneDeep(i),this.element.classes.pu...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}
method length (line 2) | get length(){return this.content.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.content.length}
method first (line 2) | get first(){return this.getIndex(0)}
method second (line 2) | get second(){return this.getIndex(1)}
method last (line 2) | get last(){return this.getIndex(this.length-1)}
method init (line 2) | init(){this.element=new np.ON,this.element.classes.push("json-schema-all...
method ArrayElement (line 2) | ArrayElement(i){return i.forEach((i=>{const s=isJSONReferenceLikeElement...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}
method length (line 2) | get length(){return this.content.length}
method isEmpty (line 2) | get isEmpty(){return 0===this.content.length}
method first (line 2) | get first(){return this.getIndex(0)}
method second (line 2) | get second(){return this.getIndex(1)}
method last (line 2) | get last(){return this.getIndex(this.length-1)}
method init (line 2) | init(){this.element=new np.ON,this.element.classes.push("json-schema-any...
method ArrayElement (line 2) | ArrayElement(i){return i.forEach((i=>{const s=isJSONReferenceLikeElement...
method constructor (line 2) | constructor(i,s,u){super(i||[],s,u),this.element="array"}
method primitive (line 2) | primitive(){return"array"}
method get (line 2) | get(i){return this.content[i]}
method getValue (line 2) | getValue(i){const s=this.get(i);if(s)return s.toValue()}
method getIndex (line 2) | getIndex(i){return this.content[i]}
method set (line 2) | set(i,s){return this.content[i]=this.refract(s),this}
method remove (line 2) | remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}
method map (line 2) | map(i,s){return this.content.map(i,s)}
method flatMap (line 2) | flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}
method compactMap (line 2) | compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(...
method filter (line 2) | filter(i,s){return new _(this.content.filter(i,s))}
method reject (line 2) | reject(i,s){return this.filter(m(i),s)}
method reduce (line 2) | reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"...
method forEach (line 2) | forEach(i,s){this.content.forEach(((u,m)=>{i.bind(s)(u,this.refract(m)...
method shift (line 2) | shift(){return this.content.shift()}
method unshift (line 2) | unshift(i){this.content.unshift(this.refract(i))}
method push (line 2) | push(i){return this.content.push(this.refract(i)),this}
method add (line 2) | add(i){this.push(i)}
method findElements (line 2) | findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[...
method find (line 2) | find(i){return new _(this.findElements(i,{recursive:!0}))}
method findByElement (line 2) | findByElement(i){return this.find((s=>s.element===i))}
method findByClass (line 2) | findByClass(i){return this.find((s=>s.classes.includes(i)))}
method getById (line 2) | getById(i){return this.find((s=>s.id.toValue()===i)).first}
method includes (line 2) | includes(i){return this.content.some((s=>s.equals(i)))}
method contains (line 2) | contains(i){return this.includes(i)}
method empty (line 2) | empty(){return new this.constructor([])}
method "fantasy-land/empty" (line 2) | "fantasy-land/empty"(){return this.empty()}
method concat (line 2) | concat(i){return new this.constructor(this.content.concat(i.content))}
method "fantasy-land/concat" (line 2) | "fantasy-land/concat"(i){return this.concat(i)}
method "fantasy-land/map" (line 2) | "fantasy-land/map"(i){return new this.constructor(this.map(i))}
method "fantasy-land/chain" (line 2) | "fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=...
method "fantasy-land/filter" (line 2) | "fantasy-land/filter"(i){return new this.constructor(this.content.filt...
method "fantasy-land/reduce" (line 2) | "fantasy-la
Condensed preview — 199 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,496K chars).
[
{
"path": ".cursor/rules/authority.mdc",
"chars": 6457,
"preview": "---\ndescription: 权限管理(Authority)\nglobs: \n---\n# 权限管理(Authority)\n\ncool-admin 采用是是一种无状态的权限校验方式。[jwt](mdc:https:/jwt.io/intr"
},
{
"path": ".cursor/rules/cache.mdc",
"chars": 3103,
"preview": "---\ndescription: 缓存(Cache)\nglobs: \n---\n# 缓存\n\n为了方便开发者进行缓存操作的组件,它有利于改善项目的性能。它为我们提供了一个数据中心以便进行高效的数据访问。\n\n:::\n\n## 使用\n\n```ts\ni"
},
{
"path": ".cursor/rules/controller.mdc",
"chars": 13370,
"preview": "---\ndescription: 控制器(Controller)\nglobs: \n---\n# 控制器(Controller)\n\n为了实现`快速CRUD`与`自动路由`功能,框架基于[midwayjs controller](mdc:http"
},
{
"path": ".cursor/rules/db.mdc",
"chars": 8945,
"preview": "---\ndescription: 数据库(db)\nglobs: \n---\n# 数据库(db)\n\n数据库使用的是`typeorm`库\n\n中文文档:](httpsom)\n\n官方文档:[https://typeorm.io](mdc:https:"
},
{
"path": ".cursor/rules/event.mdc",
"chars": 1718,
"preview": "---\ndescription: 事件(Event)\nglobs: \n---\n# 事件(Event)\n\n事件是开发过程中经常使用到的功能,我们经常利用它来做一些解耦的操作。如:更新了用户信息,其他需要更新相关信息的操作自行监听更新等\n\n##"
},
{
"path": ".cursor/rules/exception.mdc",
"chars": 202,
"preview": "---\ndescription: 异常处理(Exception)\nglobs: \n---\n# 异常处理\n\n框架自带有: `CoolCommException`\n\n## 通用异常\n\nCoolCommException\n\n返回码: 1001\n\n"
},
{
"path": ".cursor/rules/module.mdc",
"chars": 3579,
"preview": "---\ndescription: 模块开发(module)\nglobs: \n---\n# 模块开发(module)\n\n对于一个应用开发,我们应该更加有规划,`cool-admin`提供了模块开发的概念。\n\n建议模块目录`src/modules"
},
{
"path": ".cursor/rules/service.mdc",
"chars": 7090,
"preview": "---\ndescription: 服务(Service)\nglobs: \n---\n# 服务(Service)\n\n我们一般将业务逻辑写在`Service`层,`Controller`层只做参数校验、数据转换等操作,`Service`层做具体的"
},
{
"path": ".cursor/rules/socket.mdc",
"chars": 2353,
"preview": "---\ndescription: 即时通讯(Socket)\nglobs: \n---\n# 即时通讯(Socket)\n\n`cool-admin`即时通讯功能基于[Socket.io(v4)](https://socket.io/docs/v4)"
},
{
"path": ".cursor/rules/task.mdc",
"chars": 8010,
"preview": "---\ndescription: 任务与队列(Task)\nglobs: \n---\n# 任务与队列(Task)\n\n## 内置任务(代码中配置)\n\n内置定时任务能力来自于[midwayjs](https://www.midwayjs.org/d"
},
{
"path": ".cursor/rules/tenant.mdc",
"chars": 3420,
"preview": "---\ndescription: 多租户(Tenant)\nglobs: \n---\n# 多租户(v8.0新增)\n\n多租户(Multi-tenancy)是一种软件架构模式,允许单个应用实例服务多个租户(客户组织)。每个租户的数据是相互隔离的,但"
},
{
"path": ".cursorrules",
"chars": 1748,
"preview": "# 项目背景\n- 数据库:MySQL、Sqlite、Postgres、Typeorm(0.3.20版本, 不使用外键方式,如@ManyToOne、@OneToMany等)\n- 语言:TypeScript、JavaScript、CommonJ"
},
{
"path": ".editorconfig",
"chars": 168,
"preview": "# 🎨 editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_style = space\nindent_size = 2\ntrim_traili"
},
{
"path": ".eslintrc.json",
"chars": 776,
"preview": "{\n \"extends\": \"./node_modules/mwts/\",\n \"ignorePatterns\": [\n \"node_modules\",\n \"dist\",\n \"test\",\n \"je"
},
{
"path": ".gitattributes",
"chars": 80,
"preview": "*.js text eol=lf\n*.json text eol=lf\n*.ts text eol=lf\n*.code-snippets text eol=lf"
},
{
"path": ".gitignore",
"chars": 220,
"preview": "logs/\ncache/\nnpm-debug.log\nyarn-error.log\nnode_modules/\npackage-lock.json\nyarn.lock\ncoverage/\ndist/\n.idea/\nrun/\nbuild/\n."
},
{
"path": ".prettierrc.js",
"chars": 59,
"preview": "module.exports = {\n ...require('mwts/.prettierrc.json')\n}\n"
},
{
"path": ".vscode/config.code-snippets",
"chars": 605,
"preview": "{\n \"config\": {\n \"prefix\": \"config\",\n \"body\": [\n \"import { ModuleConfig } from '@cool-midway/core';\",\n \""
},
{
"path": ".vscode/controller.code-snippets",
"chars": 452,
"preview": "{\n \"controller\": {\n \"prefix\": \"controller\",\n \"body\": [\n \"import { CoolController, BaseController } from '@co"
},
{
"path": ".vscode/entity.code-snippets",
"chars": 441,
"preview": "{\n \"entity\": {\n \"prefix\": \"entity\",\n \"body\": [\n \"import { BaseEntity } from '../../base/entity/base';\",\n "
},
{
"path": ".vscode/event.code-snippets",
"chars": 440,
"preview": "{\n \"event\": {\n \"prefix\": \"event\",\n \"body\": [\n \"import { CoolEvent, Event } from '@cool-midway/core';\",\n "
},
{
"path": ".vscode/middleware.code-snippets",
"chars": 815,
"preview": "{\n \"middleware\": {\n \"prefix\": \"middleware\",\n \"body\": [\n \"import { Middleware } from '@midwayjs/core';\",\n "
},
{
"path": ".vscode/queue.code-snippets",
"chars": 461,
"preview": "{\n \"queue\": {\n \"prefix\": \"queue\",\n \"body\": [\n \"import { BaseCoolQueue, CoolQueue } from '@cool-midway/task';"
},
{
"path": ".vscode/service.code-snippets",
"chars": 783,
"preview": "{\n \"service\": {\n \"prefix\": \"service\",\n \"body\": [\n \"import { Init, Provide } from '@midwayjs/core';\",\n \""
},
{
"path": "Dockerfile",
"chars": 702,
"preview": "\nFROM node:lts-alpine\n\nWORKDIR /app\n\n# 配置alpine国内镜像加速\nRUN sed -i \"s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicl"
},
{
"path": "LICENSE",
"chars": 1381,
"preview": "MIT License\n\nCopyright (c) [2025] [厦门闪酷科技开发有限公司]\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "README.md",
"chars": 5195,
"preview": "<p align=\"center\">\n <a href=\"https://midwayjs.org/\" target=\"blank\"><img src=\"https://cool-show.oss-cn-shanghai.aliyuncs"
},
{
"path": "bootstrap.js",
"chars": 269,
"preview": "const { Bootstrap } = require('@midwayjs/bootstrap');\n\n// 显式以组件方式引入用户代码\nBootstrap.configure({\n // 这里引用的是编译后的入口,本地开发不走这个"
},
{
"path": "docker-compose.yml",
"chars": 1008,
"preview": "# 本地数据库环境\n# 数据存放在当前目录下的 data里\n# 推荐使用安装了docker扩展的vscode打开目录 在本文件上右键可以快速启动,停止\n# 如不需要相关容器开机自启动,可注释掉 restart: always\n# 如遇端口冲"
},
{
"path": "jest.config.js",
"chars": 175,
"preview": "module.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n testPathIgnorePatterns: ['<rootDir>/test/fixtures']"
},
{
"path": "package.json",
"chars": 2586,
"preview": "{\n \"name\": \"cool-admin\",\n \"version\": \"8.0.0\",\n \"description\": \"一个很酷的Ai快速开发框架\",\n \"private\": true,\n \"dependencies\": {"
},
{
"path": "public/css/welcome.css",
"chars": 1578,
"preview": "body {\n display: flex;\n min-height: 100vh;\n margin: 0;\n justify-content: center;\n align-items: center;\n "
},
{
"path": "public/index.html",
"chars": 923,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n\t<meta charset=\"UTF-8\" />\n\t<meta name=\"viewport\" content=\"width=device-width, i"
},
{
"path": "public/js/welcome.js",
"chars": 520,
"preview": "const duration = 0.8;\nconst delay = 0.3;\n// eslint-disable-next-line no-undef\nconst revealText = document.querySelector("
},
{
"path": "public/swagger/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "public/swagger/NOTICE",
"chars": 55,
"preview": "swagger-ui\nCopyright 2020-2021 SmartBear Software Inc.\n"
},
{
"path": "public/swagger/README.md",
"chars": 860,
"preview": "# Swagger UI Dist\n[](http://badge.fury.io/js/swagger-ui-dist"
},
{
"path": "public/swagger/absolute-path.js",
"chars": 530,
"preview": "/*\n * getAbsoluteFSPath\n * @return {string} When run in NodeJS env, returns the absolute path to the current directory\n "
},
{
"path": "public/swagger/index.css",
"chars": 202,
"preview": "html {\n box-sizing: border-box;\n overflow: -moz-scrollbars-vertical;\n overflow-y: scroll;\n}\n\n*,\n*:before,\n*:aft"
},
{
"path": "public/swagger/index.html",
"chars": 734,
"preview": "<!-- HTML for static distribution bundle build -->\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n"
},
{
"path": "public/swagger/index.js",
"chars": 813,
"preview": "try {\n module.exports.SwaggerUIBundle = require(\"./swagger-ui-bundle.js\")\n module.exports.SwaggerUIStandalonePreset = "
},
{
"path": "public/swagger/oauth2-redirect.html",
"chars": 2715,
"preview": "<!doctype html>\n<html lang=\"en-US\">\n<head>\n <title>Swagger UI: OAuth2 Redirect</title>\n</head>\n<body>\n<script>\n 'u"
},
{
"path": "public/swagger/package.json",
"chars": 527,
"preview": "{\n \"name\": \"swagger-ui-dist\",\n \"version\": \"5.10.0\",\n \"main\": \"index.js\",\n \"repository\": \"git@github.com:swagger-api/"
},
{
"path": "public/swagger/swagger-initializer.js",
"chars": 509,
"preview": "window.onload = function() {\n //<editor-fold desc=\"Changeable Configuration Block\">\n\n // the following lines will be r"
},
{
"path": "public/swagger/swagger-ui-bundle.js",
"chars": 1399000,
"preview": "/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */\n!function webpackUniversalModuleDefinition(i,"
},
{
"path": "public/swagger/swagger-ui-es-bundle-core.js",
"chars": 460500,
"preview": "/*! For license information please see swagger-ui-es-bundle-core.js.LICENSE.txt */\nimport*as e from\"base64-js\";import*as"
},
{
"path": "public/swagger/swagger-ui-es-bundle.js",
"chars": 1398757,
"preview": "/*! For license information please see swagger-ui-es-bundle.js.LICENSE.txt */\n(()=>{var i={17967:(i,s)=>{\"use strict\";s."
},
{
"path": "public/swagger/swagger-ui-standalone-preset.js",
"chars": 230404,
"preview": "/*! For license information please see swagger-ui-standalone-preset.js.LICENSE.txt */\n!function webpackUniversalModuleDe"
},
{
"path": "public/swagger/swagger-ui.css",
"chars": 151817,
"preview": ".swagger-ui{color:#3b4151;font-family:sans-serif/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.cs"
},
{
"path": "public/swagger/swagger-ui.js",
"chars": 340063,
"preview": "!function webpackUniversalModuleDefinition(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"fu"
},
{
"path": "src/comm/path.ts",
"chars": 1316,
"preview": "import * as path from 'path';\nimport * as os from 'os';\nimport * as md5 from 'md5';\nimport * as fs from 'fs';\n\n/**\n * 获得"
},
{
"path": "src/comm/port.ts",
"chars": 1245,
"preview": "import { execSync } from 'child_process';\n\n/**\n * 同步检查端口是否可用(通过系统命令)\n * @param {number} port - 要检查的端口\n * @returns {boole"
},
{
"path": "src/comm/utils.ts",
"chars": 6636,
"preview": "import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';\nimport { Context } from '@midwayjs/koa';\nimport * as"
},
{
"path": "src/config/config.default.ts",
"chars": 1928,
"preview": "import { CoolConfig } from '@cool-midway/core';\nimport { MidwayConfig } from '@midwayjs/core';\nimport { CoolCacheStore }"
},
{
"path": "src/config/config.local.ts",
"chars": 968,
"preview": "import { CoolConfig } from '@cool-midway/core';\nimport { MidwayConfig } from '@midwayjs/core';\nimport { TenantSubscriber"
},
{
"path": "src/config/config.prod.ts",
"chars": 988,
"preview": "import { CoolConfig } from '@cool-midway/core';\nimport { MidwayConfig } from '@midwayjs/core';\nimport { entities } from "
},
{
"path": "src/configuration.ts",
"chars": 1755,
"preview": "import * as orm from '@midwayjs/typeorm';\nimport {\n Configuration,\n App,\n IMidwayApplication,\n Inject,\n ILogger,\n "
},
{
"path": "src/entities.ts",
"chars": 46,
"preview": "// 自动生成的文件,请勿手动修改\nexport const entities = [];\n"
},
{
"path": "src/interface.ts",
"chars": 97,
"preview": "/**\n * @description User-Service parameters\n */\nexport interface IUserOptions {\n uid: number;\n}\n"
},
{
"path": "src/modules/base/config.ts",
"chars": 903,
"preview": "import { BaseLogMiddleware } from './middleware/log';\nimport { BaseAuthorityMiddleware } from './middleware/authority';\n"
},
{
"path": "src/modules/base/controller/admin/coding.ts",
"chars": 706,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { Body, Get, Inject, Post } from '@midwayjs/c"
},
{
"path": "src/modules/base/controller/admin/comm.ts",
"chars": 2177,
"preview": "import {\n BaseController,\n CoolController,\n CoolTag,\n CoolUrlTag,\n TagTypes,\n} from '@cool-midway/core';\nimport { A"
},
{
"path": "src/modules/base/controller/admin/open.ts",
"chars": 2196,
"preview": "import { Provide, Body, Inject, Post, Get, Query } from '@midwayjs/core';\nimport {\n CoolController,\n BaseController,\n "
},
{
"path": "src/modules/base/controller/admin/sys/department.ts",
"chars": 835,
"preview": "import { ALL, Body, Inject, Post, Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool"
},
{
"path": "src/modules/base/controller/admin/sys/log.ts",
"chars": 1504,
"preview": "import { Provide, Post, Inject, Body, Get } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool"
},
{
"path": "src/modules/base/controller/admin/sys/menu.ts",
"chars": 1271,
"preview": "import { Body, Inject, Post, Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midw"
},
{
"path": "src/modules/base/controller/admin/sys/param.ts",
"chars": 905,
"preview": "import { Get, Inject, Provide, Query } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midw"
},
{
"path": "src/modules/base/controller/admin/sys/role.ts",
"chars": 1055,
"preview": "import { Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midway/core';\nimport { C"
},
{
"path": "src/modules/base/controller/admin/sys/user.ts",
"chars": 873,
"preview": "import { Body, Inject, Post, Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midw"
},
{
"path": "src/modules/base/controller/app/README.md",
"chars": 11,
"preview": "这里写对外的api接口"
},
{
"path": "src/modules/base/controller/app/comm.ts",
"chars": 1564,
"preview": "import { Provide, Inject, Get, Post, Query, Config } from '@midwayjs/core';\nimport {\n CoolController,\n BaseController,"
},
{
"path": "src/modules/base/db/tenant.ts",
"chars": 4701,
"preview": "import { EventSubscriberModel } from '@midwayjs/typeorm';\nimport {\n DeleteQueryBuilder,\n EntitySubscriberInterface,\n "
},
{
"path": "src/modules/base/db.json",
"chars": 2125,
"preview": "{\n \"base_sys_param\": [\n {\n \"keyName\": \"rich\",\n \"name\": \"富文本参数\",\n \"data\": \"<h3><strong>这"
},
{
"path": "src/modules/base/dto/login.ts",
"chars": 363,
"preview": "import { Rule, RuleType } from '@midwayjs/validate';\n/**\n * 登录参数校验\n */\nexport class LoginDTO {\n // 用户名\n @Rule(RuleType"
},
{
"path": "src/modules/base/entity/base.ts",
"chars": 1153,
"preview": "import { Index, PrimaryGeneratedColumn, Column } from 'typeorm';\nimport * as moment from 'moment';\nimport { CoolBaseEnti"
},
{
"path": "src/modules/base/entity/sys/conf.ts",
"chars": 305,
"preview": "import { Column, Index, Entity } from 'typeorm';\nimport { BaseEntity } from '../base';\n\n/**\n * 系统配置\n */\n@Entity('base_sy"
},
{
"path": "src/modules/base/entity/sys/department.ts",
"chars": 483,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Entity, Index } from 'typeorm';\n\n/**\n * 部门\n */\n@Entity('base_sys_"
},
{
"path": "src/modules/base/entity/sys/log.ts",
"chars": 531,
"preview": "import { BaseEntity, transformerJson } from '../base';\nimport { Column, Index, Entity } from 'typeorm';\n\n/**\n * 系统日志\n */"
},
{
"path": "src/modules/base/entity/sys/menu.ts",
"chars": 909,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 菜单\n */\n@Entity('base_sys_menu')\n"
},
{
"path": "src/modules/base/entity/sys/param.ts",
"chars": 522,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Index, Entity } from 'typeorm';\n\n/**\n * 参数配置\n */\n@Entity('base_sy"
},
{
"path": "src/modules/base/entity/sys/role.ts",
"chars": 771,
"preview": "import { BaseEntity, transformerJson } from '../base';\nimport { Column, Index, Entity } from 'typeorm';\n\n/**\n * 角色\n */\n@"
},
{
"path": "src/modules/base/entity/sys/role_department.ts",
"chars": 302,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 角色部门\n */\n@Entity('base_sys_role_"
},
{
"path": "src/modules/base/entity/sys/role_menu.ts",
"chars": 284,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 角色菜单\n */\n@Entity('base_sys_role_"
},
{
"path": "src/modules/base/entity/sys/user.ts",
"chars": 1201,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Index, Entity } from 'typeorm';\n\n/**\n * 系统用户\n */\n@Entity('base_sy"
},
{
"path": "src/modules/base/entity/sys/user_role.ts",
"chars": 284,
"preview": "import { BaseEntity } from '../base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 用户角色\n */\n@Entity('base_sys_user_"
},
{
"path": "src/modules/base/event/app.ts",
"chars": 1064,
"preview": "import { CoolEvent, Event } from '@cool-midway/core';\nimport { App, ILogger, IMidwayApplication, Inject } from '@midwayj"
},
{
"path": "src/modules/base/event/menu.ts",
"chars": 1111,
"preview": "import { CoolEvent, CoolEventManager, Event } from '@cool-midway/core';\nimport { BaseSysMenuService } from '../service/s"
},
{
"path": "src/modules/base/job/log.ts",
"chars": 573,
"preview": "import { Job, IJob } from '@midwayjs/cron';\nimport { FORMAT, ILogger, Inject } from '@midwayjs/core';\nimport { BaseSysLo"
},
{
"path": "src/modules/base/menu.json",
"chars": 36599,
"preview": "[\n {\n \"name\": \"系统管理\",\n \"router\": \"/sys\",\n \"perms\": null,\n \"type\": 0,\n \"icon\": \"ico"
},
{
"path": "src/modules/base/middleware/authority.ts",
"chars": 3798,
"preview": "import { App, Config, Inject, Middleware } from '@midwayjs/core';\nimport * as _ from 'lodash';\nimport { CoolCommExceptio"
},
{
"path": "src/modules/base/middleware/log.ts",
"chars": 736,
"preview": "import { Middleware } from '@midwayjs/core';\nimport * as _ from 'lodash';\nimport { NextFunction, Context } from '@midway"
},
{
"path": "src/modules/base/middleware/translate.ts",
"chars": 3086,
"preview": "import { Config, ILogger, Middleware } from '@midwayjs/core';\nimport { NextFunction, Context } from '@midwayjs/koa';\nimp"
},
{
"path": "src/modules/base/service/coding.ts",
"chars": 1735,
"preview": "import { App, IMidwayApplication, Init, Inject, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midw"
},
{
"path": "src/modules/base/service/sys/conf.ts",
"chars": 857,
"preview": "import { Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { InjectEntityModel } "
},
{
"path": "src/modules/base/service/sys/data.ts",
"chars": 180,
"preview": "import { DataSource } from 'typeorm';\n\nexport class TempDataSource extends DataSource {\n /**\n * 重新构造元数据\n */\n async"
},
{
"path": "src/modules/base/service/sys/department.ts",
"chars": 3406,
"preview": "import { Inject, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { InjectEntity"
},
{
"path": "src/modules/base/service/sys/log.ts",
"chars": 1709,
"preview": "import { Inject, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { InjectEntity"
},
{
"path": "src/modules/base/service/sys/login.ts",
"chars": 6460,
"preview": "import { Inject, Provide, Config, InjectClient } from '@midwayjs/core';\nimport { BaseService, CoolCommException } from '"
},
{
"path": "src/modules/base/service/sys/menu.ts",
"chars": 11851,
"preview": "import { App, IMidwayApplication, Scope, ScopeEnum } from '@midwayjs/core';\nimport { ALL, Config, Inject, Provide } from"
},
{
"path": "src/modules/base/service/sys/param.ts",
"chars": 2755,
"preview": "import { InjectClient, Provide } from '@midwayjs/core';\nimport { BaseService, CoolCommException } from '@cool-midway/cor"
},
{
"path": "src/modules/base/service/sys/perms.ts",
"chars": 2414,
"preview": "import { Inject, InjectClient, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport "
},
{
"path": "src/modules/base/service/sys/role.ts",
"chars": 3682,
"preview": "import { Inject, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { InjectEntity"
},
{
"path": "src/modules/base/service/sys/user.ts",
"chars": 6718,
"preview": "import { Inject, InjectClient, Provide } from '@midwayjs/core';\nimport { BaseService, CoolCommException } from '@cool-mi"
},
{
"path": "src/modules/base/service/translate.ts",
"chars": 15528,
"preview": "import { I18N } from '@cool-midway/core';\nimport { InjectEntityModel } from '@midwayjs/typeorm';\nimport { Repository } f"
},
{
"path": "src/modules/demo/config.ts",
"chars": 318,
"preview": "import { ModuleConfig } from '@cool-midway/core';\n\n/**\n * 模块配置\n */\nexport default () => {\n return {\n // 模块名称\n nam"
},
{
"path": "src/modules/demo/controller/admin/goods.ts",
"chars": 749,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { DemoGoodsEntity } from '../../entity/goods'"
},
{
"path": "src/modules/demo/controller/admin/tenant.ts",
"chars": 499,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { DemoGoodsEntity } from '../../entity/goods'"
},
{
"path": "src/modules/demo/controller/open/cache.ts",
"chars": 888,
"preview": "import { DemoCacheService } from '../../service/cache';\nimport { Inject, Post, Provide, Get, InjectClient } from '@midwa"
},
{
"path": "src/modules/demo/controller/open/event.ts",
"chars": 599,
"preview": "import { Inject, Post } from '@midwayjs/core';\nimport {\n CoolController,\n BaseController,\n CoolEventManager,\n} from '"
},
{
"path": "src/modules/demo/controller/open/goods.ts",
"chars": 1029,
"preview": "import { DemoGoodsService } from '../../service/goods';\nimport { DemoGoodsEntity } from '../../entity/goods';\nimport { B"
},
{
"path": "src/modules/demo/controller/open/i18n.ts",
"chars": 381,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { DemoI18nService } from '../../service/i18n'"
},
{
"path": "src/modules/demo/controller/open/plugin.ts",
"chars": 783,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { PluginService } from '../../../plugin/servi"
},
{
"path": "src/modules/demo/controller/open/queue.ts",
"chars": 997,
"preview": "import { Get, Inject, Post, Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midwa"
},
{
"path": "src/modules/demo/controller/open/rpc.ts",
"chars": 705,
"preview": "import { Inject, Provide, Get } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midway/core"
},
{
"path": "src/modules/demo/controller/open/sse.ts",
"chars": 1260,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { Get, Inject } from '@midwayjs/core';\nimport"
},
{
"path": "src/modules/demo/controller/open/tenant.ts",
"chars": 349,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { DemoGoodsEntity } from '../../entity/goods'"
},
{
"path": "src/modules/demo/controller/open/transaction.ts",
"chars": 459,
"preview": "import { DemoGoodsEntity } from '../../entity/goods';\nimport { Provide } from '@midwayjs/core';\nimport { CoolController,"
},
{
"path": "src/modules/demo/entity/goods.ts",
"chars": 868,
"preview": "import { BaseEntity, transformerJson } from '../../base/entity/base';\nimport { Column, Entity, Index } from 'typeorm';\n\n"
},
{
"path": "src/modules/demo/event/comm.ts",
"chars": 467,
"preview": "import { CoolEvent, Event } from '@cool-midway/core';\nimport { EVENT_PLUGIN_READY } from '../../plugin/service/center';\n"
},
{
"path": "src/modules/demo/queue/comm.ts",
"chars": 458,
"preview": "import { BaseCoolQueue, CoolQueue } from '@cool-midway/task';\nimport { IMidwayApplication } from '@midwayjs/core';\nimpor"
},
{
"path": "src/modules/demo/queue/getter.ts",
"chars": 166,
"preview": "import { BaseCoolQueue, CoolQueue } from '@cool-midway/task';\n\n/**\n * 主动消费队列\n */\n@CoolQueue({ type: 'getter' })\nexport c"
},
{
"path": "src/modules/demo/queue/single.ts",
"chars": 506,
"preview": "import { BaseCoolQueue, CoolQueue } from '@cool-midway/task';\nimport { IMidwayApplication } from '@midwayjs/core';\nimpor"
},
{
"path": "src/modules/demo/service/cache.ts",
"chars": 269,
"preview": "import { Provide } from '@midwayjs/core';\nimport { CoolCache } from '@cool-midway/core';\n\n/**\n * 缓存\n */\n@Provide()\nexpor"
},
{
"path": "src/modules/demo/service/goods.ts",
"chars": 942,
"preview": "import { DemoGoodsEntity } from './../entity/goods';\nimport { Inject, Provide } from '@midwayjs/core';\nimport { BaseServ"
},
{
"path": "src/modules/demo/service/i18n.ts",
"chars": 519,
"preview": "import { Inject, Provide } from '@midwayjs/core';\nimport { BaseTranslateService } from '../../base/service/translate';\n\n"
},
{
"path": "src/modules/demo/service/rpc.ts",
"chars": 1397,
"preview": "import { App, Provide } from '@midwayjs/core';\nimport { DemoGoodsEntity } from '../entity/goods';\nimport { IMidwayApplic"
},
{
"path": "src/modules/demo/service/tenant.ts",
"chars": 1169,
"preview": "import { Inject, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { InjectEntity"
},
{
"path": "src/modules/demo/service/transaction.ts",
"chars": 538,
"preview": "import { DemoGoodsEntity } from './../entity/goods';\nimport { Provide } from '@midwayjs/core';\nimport { BaseService, Coo"
},
{
"path": "src/modules/dict/config.ts",
"chars": 318,
"preview": "import { ModuleConfig } from '@cool-midway/core';\n\n/**\n * 模块配置\n */\nexport default () => {\n return {\n // 模块名称\n nam"
},
{
"path": "src/modules/dict/controller/admin/info.ts",
"chars": 988,
"preview": "import { DictInfoEntity } from './../../entity/info';\nimport { Body, Get, Inject, Post, Provide } from '@midwayjs/core';"
},
{
"path": "src/modules/dict/controller/admin/type.ts",
"chars": 499,
"preview": "import { DictTypeEntity } from './../../entity/type';\nimport { Provide } from '@midwayjs/core';\nimport { CoolController,"
},
{
"path": "src/modules/dict/controller/app/info.ts",
"chars": 747,
"preview": "import { Body, Get, Inject, Post, Provide } from '@midwayjs/core';\nimport {\n CoolController,\n BaseController,\n CoolUr"
},
{
"path": "src/modules/dict/db.json",
"chars": 2018,
"preview": "{\n \"dict_info\": [\n {\n \"id\": 21,\n \"typeId\": 19,\n \"name\": \"COOL\",\n \""
},
{
"path": "src/modules/dict/entity/info.ts",
"chars": 533,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 字典信息\n */\n@Entity("
},
{
"path": "src/modules/dict/entity/type.ts",
"chars": 274,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 字典类别\n */\n@Entity("
},
{
"path": "src/modules/dict/service/info.ts",
"chars": 3501,
"preview": "import { DictTypeEntity } from './../entity/type';\nimport { DictInfoEntity } from './../entity/info';\nimport { Config, P"
},
{
"path": "src/modules/dict/service/type.ts",
"chars": 563,
"preview": "import { DictInfoEntity } from './../entity/info';\nimport { Provide } from '@midwayjs/core';\nimport { BaseService } from"
},
{
"path": "src/modules/plugin/config.ts",
"chars": 496,
"preview": "import { ModuleConfig } from '@cool-midway/core';\n\n/**\n * 模块配置\n */\nexport default options => {\n return {\n // 模块名称\n "
},
{
"path": "src/modules/plugin/controller/admin/info.ts",
"chars": 1180,
"preview": "import {\n CoolController,\n BaseController,\n CoolTag,\n CoolUrlTag,\n TagTypes,\n} from '@cool-midway/core';\nimport { P"
},
{
"path": "src/modules/plugin/entity/info.ts",
"chars": 1268,
"preview": "import { BaseEntity, transformerJson } from '../../base/entity/base';\nimport { Column, Entity, Index } from 'typeorm';\n\n"
},
{
"path": "src/modules/plugin/event/app.ts",
"chars": 953,
"preview": "import { CoolEvent, Event } from '@cool-midway/core';\nimport { CachingFactory, MidwayCache } from '@midwayjs/cache-manag"
},
{
"path": "src/modules/plugin/event/init.ts",
"chars": 821,
"preview": "import { CoolEvent, Event } from '@cool-midway/core';\nimport { Inject } from '@midwayjs/core';\nimport { PluginCenterServ"
},
{
"path": "src/modules/plugin/hooks/base.ts",
"chars": 546,
"preview": "import { IMidwayContext, IMidwayApplication } from '@midwayjs/core';\nimport { PluginInfo } from '../interface';\n\n/**\n * "
},
{
"path": "src/modules/plugin/hooks/upload/index.ts",
"chars": 5123,
"preview": "import { BaseUpload, MODETYPE } from './interface';\nimport { BasePluginHook } from '../base';\nimport * as fs from 'fs';\n"
},
{
"path": "src/modules/plugin/hooks/upload/interface.ts",
"chars": 749,
"preview": "// 模式\nexport enum MODETYPE {\n // 本地\n LOCAL = 'local',\n // 云存储\n CLOUD = 'cloud',\n // 其他\n OTHER = 'other',\n}\n\n/**\n *"
},
{
"path": "src/modules/plugin/interface.ts",
"chars": 371,
"preview": "/**\n * 插件信息\n */\nexport interface PluginInfo {\n /** 名称 */\n name?: string;\n /** 唯一标识 */\n key?: string;\n /** 钩子 */\n h"
},
{
"path": "src/modules/plugin/service/center.ts",
"chars": 4860,
"preview": "import {\n App,\n IMidwayApplication,\n Inject,\n InjectClient,\n Scope,\n Provide,\n ScopeEnum,\n} from '@midwayjs/core'"
},
{
"path": "src/modules/plugin/service/info.ts",
"chars": 10763,
"preview": "import {\n BaseService,\n CoolCommException,\n CoolEventManager,\n} from '@cool-midway/core';\nimport { InjectEntityModel "
},
{
"path": "src/modules/plugin/service/types.ts",
"chars": 7358,
"preview": "import { BaseService } from '@cool-midway/core';\nimport { App, IMidwayApplication, Inject, Provide } from '@midwayjs/cor"
},
{
"path": "src/modules/recycle/config.ts",
"chars": 327,
"preview": "import { ModuleConfig } from '@cool-midway/core';\n\n/**\n * 模块配置\n */\nexport default () => {\n return {\n // 模块名称\n nam"
},
{
"path": "src/modules/recycle/controller/admin/data.ts",
"chars": 937,
"preview": "import { BaseSysUserEntity } from './../../../base/entity/sys/user';\nimport { RecycleDataEntity } from './../../entity/d"
},
{
"path": "src/modules/recycle/entity/data.ts",
"chars": 841,
"preview": "import { BaseEntity, transformerJson } from '../../base/entity/base';\nimport { Entity, Column, Index } from 'typeorm';\n\n"
},
{
"path": "src/modules/recycle/event/data.ts",
"chars": 430,
"preview": "import { CoolEvent, EVENT, Event } from '@cool-midway/core';\nimport { Inject } from '@midwayjs/core';\nimport { RecycleDa"
},
{
"path": "src/modules/recycle/schedule/data.ts",
"chars": 653,
"preview": "import {\n Provide,\n Inject,\n CommonSchedule,\n TaskLocal,\n FORMAT,\n} from '@midwayjs/core';\nimport { ILogger } from "
},
{
"path": "src/modules/recycle/service/data.ts",
"chars": 2346,
"preview": "import { RecycleDataEntity } from './../entity/data';\nimport { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'"
},
{
"path": "src/modules/space/config.ts",
"chars": 413,
"preview": "import { ModuleConfig } from '@cool-midway/core';\n\n/**\n * 模块配置\n */\nexport default () => {\n return {\n // 模块名称\n nam"
},
{
"path": "src/modules/space/controller/admin/info.ts",
"chars": 510,
"preview": "import { Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midway/core';\nimport { S"
},
{
"path": "src/modules/space/controller/admin/type.ts",
"chars": 449,
"preview": "import { Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midway/core';\nimport { S"
},
{
"path": "src/modules/space/controller/说明.md",
"chars": 4,
"preview": "编写接口"
},
{
"path": "src/modules/space/entity/info.ts",
"chars": 621,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Index, Entity } from 'typeorm';\n\n/**\n * 文件空间信息\n */"
},
{
"path": "src/modules/space/entity/type.ts",
"chars": 306,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 图片空间信息分类\n */\n@Ent"
},
{
"path": "src/modules/space/service/info.ts",
"chars": 842,
"preview": "import { SpaceInfoEntity } from './../entity/info';\nimport { Inject, Provide } from '@midwayjs/core';\nimport { BaseServi"
},
{
"path": "src/modules/space/service/type.ts",
"chars": 723,
"preview": "import { Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { InjectEntityModel } "
},
{
"path": "src/modules/swagger/builder.ts",
"chars": 8272,
"preview": "import { CoolEps } from '@cool-midway/core';\nimport { Config, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';"
},
{
"path": "src/modules/swagger/config.ts",
"chars": 1021,
"preview": "import { ModuleConfig } from '@cool-midway/core';\n\n/**\n * 模块配置\n */\nexport default ({ app }) => {\n return {\n // 模块名称\n"
},
{
"path": "src/modules/swagger/controller/index.ts",
"chars": 787,
"preview": "import { Config, Controller, Get, Inject } from '@midwayjs/core';\nimport { Context } from '@midwayjs/koa';\nimport { Swag"
},
{
"path": "src/modules/swagger/event/app.ts",
"chars": 647,
"preview": "import { CoolEvent, Event } from '@cool-midway/core';\nimport { App, ILogger, Inject, Logger } from '@midwayjs/core';\nimp"
},
{
"path": "src/modules/task/config.ts",
"chars": 424,
"preview": "import { ModuleConfig } from '@cool-midway/core';\nimport { TaskMiddleware } from './middleware/task';\n\n/**\n * 模块配置\n */\ne"
},
{
"path": "src/modules/task/controller/admin/info.ts",
"chars": 1316,
"preview": "import { Body, Get, Inject, Post, Provide, Query } from '@midwayjs/core';\nimport { CoolController, BaseController } from"
},
{
"path": "src/modules/task/db.json",
"chars": 1011,
"preview": "{\n \"task_info\": [\n {\n \"id\": 1,\n \"jobId\": null,\n \"repeatConf\": null,\n "
},
{
"path": "src/modules/task/entity/info.ts",
"chars": 1349,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Entity } from 'typeorm';\n\n/**\n * 任务信息\n */\n@Entity("
},
{
"path": "src/modules/task/entity/log.ts",
"chars": 415,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Index, Entity } from 'typeorm';\n\n/**\n * 任务日志\n */\n@"
},
{
"path": "src/modules/task/event/comm.ts",
"chars": 552,
"preview": "import { Inject } from '@midwayjs/core';\nimport { CoolEvent, Event } from '@cool-midway/core';\nimport { TaskInfoService "
},
{
"path": "src/modules/task/middleware/task.ts",
"chars": 1026,
"preview": "import { CoolCommException } from '@cool-midway/core';\nimport { Inject, Middleware } from '@midwayjs/core';\nimport { Nex"
},
{
"path": "src/modules/task/queue/task.ts",
"chars": 854,
"preview": "import { App, Inject } from '@midwayjs/core';\nimport { BaseCoolQueue, CoolQueue } from '@cool-midway/task';\nimport { Tas"
},
{
"path": "src/modules/task/service/bull.ts",
"chars": 8331,
"preview": "import {\n App,\n Config,\n Inject,\n Logger,\n Provide,\n Scope,\n ScopeEnum,\n} from '@midwayjs/core';\nimport { BaseSer"
},
{
"path": "src/modules/task/service/demo.ts",
"chars": 356,
"preview": "import { Logger, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { ILogger } fr"
},
{
"path": "src/modules/task/service/info.ts",
"chars": 3382,
"preview": "import { App, Init, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway"
},
{
"path": "src/modules/task/service/local.ts",
"chars": 8059,
"preview": "import {\n App,\n Config,\n Inject,\n Logger,\n Provide,\n Scope,\n ScopeEnum,\n} from '@midwayjs/core';\nimport { BaseSer"
},
{
"path": "src/modules/user/config.ts",
"chars": 659,
"preview": "import { ModuleConfig } from '@cool-midway/core';\nimport { UserMiddleware } from './middleware/app';\n\n/**\n * 模块配置\n */\nex"
},
{
"path": "src/modules/user/controller/admin/address.ts",
"chars": 413,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { UserAddressEntity } from '../../entity/addr"
},
{
"path": "src/modules/user/controller/admin/info.ts",
"chars": 433,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { UserInfoEntity } from '../../entity/info';\n"
},
{
"path": "src/modules/user/controller/app/address.ts",
"chars": 931,
"preview": "import { Get, Inject, Provide } from '@midwayjs/core';\nimport { CoolController, BaseController } from '@cool-midway/core"
},
{
"path": "src/modules/user/controller/app/comm.ts",
"chars": 573,
"preview": "import {\n CoolController,\n BaseController,\n CoolUrlTag,\n TagTypes,\n CoolTag,\n} from '@cool-midway/core';\nimport { B"
},
{
"path": "src/modules/user/controller/app/info.ts",
"chars": 1669,
"preview": "import { CoolController, BaseController } from '@cool-midway/core';\nimport { Body, Get, Inject, Post } from '@midwayjs/c"
},
{
"path": "src/modules/user/controller/app/login.ts",
"chars": 3014,
"preview": "import {\n CoolController,\n BaseController,\n CoolUrlTag,\n TagTypes,\n CoolTag,\n} from '@cool-midway/core';\nimport { B"
},
{
"path": "src/modules/user/entity/address.ts",
"chars": 645,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Entity, Column, Index } from 'typeorm';\n\n/**\n * 用户模块-收货地址\n"
},
{
"path": "src/modules/user/entity/info.ts",
"chars": 923,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Entity, Index } from 'typeorm';\n\n/**\n * 用户信息\n */\n@"
},
{
"path": "src/modules/user/entity/wx.ts",
"chars": 880,
"preview": "import { BaseEntity } from '../../base/entity/base';\nimport { Column, Entity, Index } from 'typeorm';\n\n/**\n * 微信用户\n */\n@"
},
{
"path": "src/modules/user/middleware/app.ts",
"chars": 1648,
"preview": "import { ALL, Config, Middleware } from '@midwayjs/core';\nimport { NextFunction, Context } from '@midwayjs/koa';\nimport "
},
{
"path": "src/modules/user/service/address.ts",
"chars": 1428,
"preview": "import { Init, Inject, Provide } from '@midwayjs/core';\nimport { BaseService } from '@cool-midway/core';\nimport { Equal,"
},
{
"path": "src/modules/user/service/info.ts",
"chars": 3011,
"preview": "import { BaseService, CoolCommException } from '@cool-midway/core';\nimport { Inject, Provide } from '@midwayjs/core';\nim"
},
{
"path": "src/modules/user/service/login.ts",
"chars": 7449,
"preview": "import { Config, Inject, Provide } from '@midwayjs/core';\nimport { BaseService, CoolCommException } from '@cool-midway/c"
},
{
"path": "src/modules/user/service/sms.ts",
"chars": 1800,
"preview": "import { Provide, Config, Inject, Init, InjectClient } from '@midwayjs/core';\nimport { BaseService, CoolCommException } "
},
{
"path": "src/modules/user/service/wx.ts",
"chars": 6406,
"preview": "import { BaseService, CoolCommException } from '@cool-midway/core';\nimport { Config, Inject, Provide } from '@midwayjs/c"
},
{
"path": "test/README.md",
"chars": 222,
"preview": "# 测试方式 \n\n考虑到cool-admin采用了自动化路由技术,它与官方集成的jest测试工具并不兼容。为确保测试环境与实际的开发环境保持一致,我们并不推荐使用jest进行测试。\n\n# 自动化测试API工具\n\n我们为您推荐以下的自动化AP"
},
{
"path": "tsconfig.json",
"chars": 636,
"preview": "{\n \"compileOnSave\": true,\n \"compilerOptions\": {\n \"target\": \"es2018\",\n \"module\": \"commonjs\",\n \"moduleResolutio"
},
{
"path": "typings/plugin.d.ts",
"chars": 143,
"preview": "import { BaseUpload, MODETYPE } from './upload';\ntype AnyString = string & {};\n/**\n * 插件类型声明\n */\ninterface PluginMap {\n "
},
{
"path": "typings/upload.d.ts",
"chars": 749,
"preview": "// 模式\nexport enum MODETYPE {\n // 本地\n LOCAL = 'local',\n // 云存储\n CLOUD = 'cloud',\n // 其他\n OTHER = 'other',\n}\n\n/**\n *"
}
]
About this extraction
This page contains the full source code of the cool-team-official/cool-admin-midway GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 199 files (4.2 MB), approximately 1.1M tokens, and a symbol index with 7751 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.