完成 EDL 的构建,完成 QA 的拒答流
This commit is contained in:
parent
b439c4de7e
commit
3423bddc7b
3
.gitignore
vendored
3
.gitignore
vendored
@ -13,4 +13,5 @@ images
|
||||
logs
|
||||
*.sklearn
|
||||
config/*.story.yml
|
||||
config/story.yml
|
||||
config/story.yml
|
||||
model/*.pth
|
32
README.md
32
README.md
@ -99,3 +99,35 @@ interface CommonResponse<T> {
|
||||
- 非必要,请不要随意宣传本项目。
|
||||
- 虽然曾经无数个 QQ 相关的项目都死了,但是基本的 API 端口算是传承了下来。拉格朗日的返回类型,请参考 [go-cqhttp 帮助中心 - API 篇](https://docs.go-cqhttp.org/api/) 中的内容。
|
||||
|
||||
---
|
||||
|
||||
## 启动
|
||||
|
||||
```bash
|
||||
# 1. 启动 拉格朗日
|
||||
tsc
|
||||
pm2 start dist/main.js --name Lagrange.onebot
|
||||
pm2 start rag/main.py --name rag
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 测试命令
|
||||
|
||||
### 重训练 embedding -> intent 分类层
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:8081/intent/retrain-embedding-mapping
|
||||
```
|
||||
|
||||
### 获取意图
|
||||
|
||||
```bash
|
||||
curl -X POST -H "Content-Type: application/json" -d '{"query": "真的开线程是要tcl指令去改的"}' http://127.0.0.1:8081/intent/get-intent-recogition
|
||||
```
|
||||
|
||||
### 获取向量数据库中的 topk
|
||||
|
||||
```bash
|
||||
curl -X POST -H "Content-Type: application/json" -d '{"query": "这个插件有什么比较好的文档吗?"}' http://127.0.0.1:8081/vecdb/similarity_search_with_score
|
||||
```
|
70
bot/api/llm.ts
Normal file
70
bot/api/llm.ts
Normal file
@ -0,0 +1,70 @@
|
||||
// 配置大模型 请求参数
|
||||
|
||||
import axios from "axios";
|
||||
import { logger } from "lagrange.onebot";
|
||||
|
||||
interface LlmMessageItem {
|
||||
role: 'user' | 'assistant',
|
||||
content: string
|
||||
}
|
||||
|
||||
class ErineLLM {
|
||||
apiKey: string = process.env.BAIDU_API_KEY;
|
||||
secretKey: string = process.env.BAIDU_SECRET_KEY;
|
||||
accessToken: string = '';
|
||||
constructor() {
|
||||
if (this.apiKey === '') {
|
||||
throw Error('百度 api_key 为空');
|
||||
}
|
||||
|
||||
if (this.secretKey === '') {
|
||||
throw Error('百度 secret_key 为空');
|
||||
}
|
||||
|
||||
this.getAccessToken();
|
||||
}
|
||||
|
||||
public async getAccessToken() {
|
||||
const url = `https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${this.apiKey}&client_secret=${this.secretKey}`;
|
||||
const payload = "";
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json'
|
||||
};
|
||||
const { data } = await axios.post(url, payload, { headers });
|
||||
const accessToken = data.access_token;
|
||||
if (accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
logger.info('成功获取大模型访问令牌');
|
||||
} else {
|
||||
logger.error('大模型令牌获取失败:' + JSON.stringify(data))
|
||||
}
|
||||
}
|
||||
|
||||
public async answer(message: LlmMessageItem[]): Promise<string | undefined> {
|
||||
if (message.length % 2 === 0) {
|
||||
logger.error('大模型的 message 长度必须是奇数,目前为 ' + message.length);
|
||||
return undefined;
|
||||
}
|
||||
const url = 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-lite-8k?access_token=' + this.accessToken;
|
||||
|
||||
const payload = {
|
||||
messages: message,
|
||||
system: '你是锦恢开发的用于进行问答的 QA 机器人。主要负责解决 Digital IDE 用户群的答疑问题'
|
||||
}
|
||||
const headers = {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
const { data } = await axios.post(url, payload, { headers });
|
||||
const result = data.result;
|
||||
if (result) {
|
||||
return result;
|
||||
} else {
|
||||
logger.error('大模型返回结果有误: ' + JSON.stringify(data));
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const llm = new ErineLLM();
|
@ -4,6 +4,8 @@ import * as fs from 'fs';
|
||||
import * as yaml from 'yaml';
|
||||
import axios from 'axios';
|
||||
|
||||
|
||||
// 配置 向量数据库 的请求参数
|
||||
// 得到配置文件,组装基础路由
|
||||
const vecdbBuffer = fs.readFileSync('./config/vecdb.yml', 'utf-8');
|
||||
const vecdbConfig = yaml.parse(vecdbBuffer);
|
||||
@ -37,6 +39,7 @@ vecdbRequests.interceptors.response.use(
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
export {
|
||||
vecdbRequests,
|
||||
|
||||
|
@ -47,7 +47,8 @@ export interface apiGetIntentRecogitionRequest {
|
||||
|
||||
export interface apiGetIntentRecogitionData {
|
||||
id: number,
|
||||
name: string
|
||||
name: string,
|
||||
uncertainty: number
|
||||
}
|
||||
|
||||
export interface apiIntentRetrainRequest {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import * as fs from 'fs';
|
||||
|
||||
import { server } from 'lagrange.onebot';
|
||||
import './test';
|
||||
import './digital-ide';
|
||||
import './services/test';
|
||||
import './services/digital-ide';
|
||||
|
||||
const buffer = fs.readFileSync('./app/publish/appsettings.json', 'utf-8');
|
||||
const config = JSON.parse(buffer);
|
||||
|
71
bot/services/intent.ts
Normal file
71
bot/services/intent.ts
Normal file
@ -0,0 +1,71 @@
|
||||
import { mapper, plugins, LagrangeContext, PrivateMessage, GroupMessage, Send, logger } from 'lagrange.onebot'
|
||||
import { llm } from '../api/llm';
|
||||
import { apiQueryVecdb, apiQueryVecdbDataItem } from '../api/vecdb';
|
||||
|
||||
interface IntentResult {
|
||||
id: number,
|
||||
name: string,
|
||||
uncertainty: number
|
||||
}
|
||||
|
||||
function makePrompt(messages: apiQueryVecdbDataItem[]): string {
|
||||
const texts = ['你是一个很聪明的AI,下面是你的知识库和参考内容,请根据参考内容回答上述的问题:'];
|
||||
for (const msg of messages) {
|
||||
texts.push(msg.content);
|
||||
}
|
||||
return texts.join('\n');
|
||||
}
|
||||
|
||||
async function useRagLLM(c: LagrangeContext<GroupMessage>, intentResult: IntentResult) {
|
||||
const texts = [];
|
||||
for (const msg of c.message.message) {
|
||||
if (msg.type === 'text') {
|
||||
texts.push(msg.data.text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const { data } = await apiQueryVecdb({ query: texts.join(' '), k: 3 });
|
||||
if (data.code === 200) {
|
||||
const messages: apiQueryVecdbDataItem[] = data.data.filter(m => m.score <= 0.8);
|
||||
if (messages.length === 0) {
|
||||
c.sendMessage('未在数据库中检索到相关内容。');
|
||||
} else {
|
||||
const query = makePrompt(messages);
|
||||
const res = await llm.answer([
|
||||
{
|
||||
role: 'user',
|
||||
content: query
|
||||
}
|
||||
]);
|
||||
if (typeof res === 'string') {
|
||||
const links = messages.map(m => m.source);
|
||||
|
||||
const reference = ['参考链接:', ...links].join('\n');
|
||||
const anwser = res + '\n\n' + reference;
|
||||
c.sendMessage(anwser);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
logger.error('apiQueryVecdb 接口访问失败: ' + JSON.stringify(data));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export async function handleGroupIntent(c: LagrangeContext<GroupMessage>, intentResult: IntentResult) {
|
||||
switch (intentResult.name) {
|
||||
case 'usage':
|
||||
return await useRagLLM(c, intentResult);
|
||||
break;
|
||||
case 'bug':
|
||||
return await useRagLLM(c, intentResult);
|
||||
break;
|
||||
|
||||
case 'others':
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
51
bot/services/test.ts
Normal file
51
bot/services/test.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import '../plugins/image';
|
||||
|
||||
import { mapper, plugins, LagrangeContext, PrivateMessage, GroupMessage, Send } from 'lagrange.onebot'
|
||||
|
||||
import { apiGetIntentRecogition, apiQueryVecdb } from '../api/vecdb';
|
||||
|
||||
import { handleGroupIntent } from './intent';
|
||||
|
||||
export class Impl {
|
||||
@mapper.onPrivateUser(1193466151)
|
||||
@plugins.use('echo')
|
||||
@plugins.use('pm')
|
||||
@plugins.use('wget-image')
|
||||
async handleJinhui(c: LagrangeContext<PrivateMessage>) {
|
||||
c.sendMessage([{
|
||||
type: 'image',
|
||||
data: {
|
||||
file: 'file:///data/zhelonghuang/project/rag-llm/images/bird.png',
|
||||
timeout: 10000
|
||||
}
|
||||
}])
|
||||
c.finishSession();
|
||||
}
|
||||
|
||||
@mapper.onGroup(956419963, { at: false })
|
||||
async handleTestGroup(c: LagrangeContext<GroupMessage>) {
|
||||
const texts = [];
|
||||
const message = c.message;
|
||||
for (const msg of message.message) {
|
||||
if (msg.type === 'text') {
|
||||
texts.push(msg.data.text);
|
||||
}
|
||||
}
|
||||
const reply: Send.Default[] = [];
|
||||
const axiosRes = await apiGetIntentRecogition({ query: texts.join('\n') });
|
||||
const res = axiosRes.data;
|
||||
if (res.code == 200) {
|
||||
const intentResult = res.data;
|
||||
|
||||
// 如果 不确定性 太高,就将意图修改为
|
||||
if (intentResult.uncertainty >= 0.33) {
|
||||
intentResult.name = 'others';
|
||||
}
|
||||
const uncertainty = Math.round(intentResult.uncertainty * 1000) / 1000;
|
||||
c.sendMessage(`【意图: ${intentResult.name} 不确定度: ${uncertainty}】`);
|
||||
handleGroupIntent(c, intentResult);
|
||||
} else {
|
||||
c.sendMessage('RAG 系统目前离线');
|
||||
}
|
||||
}
|
||||
}
|
28
bot/test.ts
28
bot/test.ts
@ -1,28 +0,0 @@
|
||||
import './plugins';
|
||||
|
||||
import { mapper, plugins, LagrangeContext, PrivateMessage, GroupMessage, Send } from 'lagrange.onebot'
|
||||
|
||||
import { apiQueryVecdb } from './api/vecdb';
|
||||
|
||||
export class Impl {
|
||||
@mapper.onPrivateUser(1193466151)
|
||||
@plugins.use('echo')
|
||||
@plugins.use('pm')
|
||||
@plugins.use('wget-image')
|
||||
async handleJinhui(c: LagrangeContext<PrivateMessage>) {
|
||||
c.sendMessage([{
|
||||
type: 'image',
|
||||
data: {
|
||||
file: 'file:///data/zhelonghuang/project/rag-llm/images/bird.png',
|
||||
timeout: 10000
|
||||
}
|
||||
}])
|
||||
c.finishSession();
|
||||
}
|
||||
|
||||
@mapper.onGroup(956419963, { at: false })
|
||||
async handleTestGroup(c: LagrangeContext<GroupMessage>) {
|
||||
console.log(c.message.message);
|
||||
console.log(c.message.raw_message);
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -19,23 +19,33 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/data/zhelonghuang/miniconda3/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
|
||||
" from .autonotebook import tqdm as notebook_tqdm\n",
|
||||
"/data/zhelonghuang/miniconda3/lib/python3.11/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n",
|
||||
" warnings.warn(\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"整理得到 304 个文档\n",
|
||||
"分块得到 1273 个文档\n",
|
||||
"数据库已存储到 blog-vecdb 中\n"
|
||||
"分块得到 1276 个文档\n",
|
||||
"数据库已存储到 ../blog-vecdb 中\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"embedding = HuggingFaceEmbeddings(model_name='maidalun1020/bce-embedding-base_v1')\n",
|
||||
"\n",
|
||||
"db_persistent_dir = 'blog-vecdb'\n",
|
||||
"db_persistent_dir = '../blog-vecdb'\n",
|
||||
"\n",
|
||||
"if os.path.exists(db_persistent_dir):\n",
|
||||
" db = FAISS.load_local(db_persistent_dir, embedding, allow_dangerous_deserialization=True)\n",
|
||||
@ -60,7 +70,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@ -74,7 +84,7 @@
|
||||
" 0.71963197)]"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@ -88,21 +98,21 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[(Document(page_content='除了b站的两个教程外,建议多出文档以及示例工程,一个刚接触FPGA但有不熟悉vivado的萌新就指望这个加快学习进度了\\n请问B站教程标题是啥?我搜digital-ide啥也搜不到\\n请问B站教程标题是啥?我搜digital-ide啥也搜不到\\n《Digital-IDE使用教程(一个DDS的实现)》\\n《Digital-IDE应用之FM调制解调》\\n请问B站教程标题是啥?我搜digital-ide啥也搜不到\\n《Digital-IDE使用教程(一个DDS的实现)》 《Digital-IDE应用之FM调制解调》\\n好的谢谢\\n那个教程是好早之前我出的了,新的版本一直不稳定,今年稳定之后会出后续教程。\\nDigital IDE 的使用教程可以看\\n官方文档为 https://sterben.nitcloud.cn/zh/ 但是目前文档不是很完善。', metadata={'source': '../docs/digital-issue/issue-47/issue.md', 'start_index': 0}),\n",
|
||||
" 0.64211607),\n",
|
||||
"[(Document(page_content='问题标题 基础教程太少\\n除了b站的两个教程外,建议多出文档以及示例工程,一个刚接触FPGA但有不熟悉vivado的萌新就指望这个加快学习进度了\\n请问B站教程标题是啥?我搜digital-ide啥也搜不到\\n请问B站教程标题是啥?我搜digital-ide啥也搜不到\\n《Digital-IDE使用教程(一个DDS的实现)》\\n《Digital-IDE应用之FM调制解调》\\n请问B站教程标题是啥?我搜digital-ide啥也搜不到\\n《Digital-IDE使用教程(一个DDS的实现)》 《Digital-IDE应用之FM调制解调》\\n好的谢谢\\n那个教程是好早之前我出的了,新的版本一直不稳定,今年稳定之后会出后续教程。\\nDigital IDE 的使用教程可以看\\n官方文档为 https://sterben.nitcloud.cn/zh/ 但是目前文档不是很完善。', metadata={'source': '../docs/digital-issue/issue-47/issue.md', 'start_index': 0}),\n",
|
||||
" 0.63593847),\n",
|
||||
" (Document(page_content='home: true\\nheroImage: /icon.png\\ndescription: Vscode 平台上的 ASIC & FPGA 开发扩展\\nactionText: 快速开始 🐳\\nactionLink: /zh/guide/introduction\\nfeatures:\\n- title: ✨ HDL 语言支持\\n details: 支持 verilog, vhdl, systemverilog, tcl 脚本等\\n- title: 🎯 项目管理\\n details: 在你的项目中查看结构化的 HDL 文件\\n- title: 🛠️ 额外的工具\\n details: FSM, Netlist, 一键仿真, 文档化,让你的编程体验更加舒坦。\\n\\n::: slot footer\\nMIT Licensed | Copyright © 2018-present Digital-EDA\\n:::', metadata={'source': '../docs/digital-document/index.md', 'start_index': 0}),\n",
|
||||
" 0.7582667),\n",
|
||||
" (Document(page_content='TODO\\n\\n找到所有 vcd item 的 type 类型,可参考:https://pyvcd.readthedocs.io/en/latest/vcd.common.html\\n\\nbug\\n\\n详见飞书文档:https://nc-ai-lab.feishu.cn/wiki/Z4AxwU1SdilATAk7GuvcYkIDnwh\\n\\n流程\\n\\n目前需要为Digital-IDE设计一个render用于显示VCD文件。\\n\\nIEEE 1364定义VCD(value change dump)文件是含已选变量(信号)的值变化信息存储文件。\\n\\nwavedrom在GitHub上开发过vcd和hdl的wavedrom脚本格式,可以用于进行DIDE的vcd可视化的二次开发,目前发现,为了实现vcd文件,基本的仓库主要是下面这两个:\\n\\nJS层与一个简单的前端:https://github.com/wavedrom/vcdrom\\n\\nwasm 解析:https://github.com/wavedrom/vcd\\n\\n打算基于这两个仓库二次开发一个好用的vcd渲染模块,再加入DIDE中。\\n\\n开发思路\\n\\nvcd 的渲染器分为如下几步进行开发。\\n\\nmermaid\\ngraph LR\\na(读取)-->b(渲染)-->c(解析)\\n\\nVCD 读取和解析并不难,难在如何快速安全地读取,对于一些长时间的模拟和仿真而言, vcd 文件可能会非常大。因此,vcd 需要分块读取,分块解析,为了避免这些不必要的麻烦,我使用了 https://github.com/wavedrom/vcdrom 这个项目的后端进行修改。\\n\\nwasm 解析器\\n\\n原项目写得过于紧凑,并不适合进行修改,因此需要修改一部分代码。\\n\\n整合项目在 : https://github.com/Digital-EDA/digital-vcd-parser', metadata={'source': '../docs/kirigaya.cn/72.md', 'start_index': 0}),\n",
|
||||
" 0.83628875)]"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
|
12
package.json
12
package.json
@ -18,22 +18,22 @@
|
||||
"@types/node": "^20.12.12",
|
||||
"axios": "^1.7.2",
|
||||
"fs": "^0.0.1-security",
|
||||
"lagrange.onebot": "^1.0.0",
|
||||
"lagrange.onebot": "^1.0.2",
|
||||
"ws": "^8.17.0",
|
||||
"yaml": "^2.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sinonjs/referee-sinon": "^12.0.0",
|
||||
"@types/ws": "^8.5.10",
|
||||
"chai": "4.3.4",
|
||||
"serve": "^14.2.3",
|
||||
"typescript": "^5.4.5",
|
||||
"jsverify": "^0.8.4",
|
||||
"knuth-shuffle": "^1.0.8",
|
||||
"mocha": "^10.4.0",
|
||||
"require-uncached": "^2.0.0",
|
||||
"serve": "^14.2.3",
|
||||
"shelljs": "^0.8.5",
|
||||
"should": "^13.2.3",
|
||||
"sinon": "^18.0.0",
|
||||
"jsverify": "^0.8.4",
|
||||
"knuth-shuffle": "^1.0.8",
|
||||
"@sinonjs/referee-sinon": "^12.0.0"
|
||||
"typescript": "^5.4.5"
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ class PromptEngine:
|
||||
if children is None:
|
||||
children = []
|
||||
|
||||
if name not in self.intent2id:
|
||||
if name != 'root' and name not in self.intent2id:
|
||||
assign_id = len(self.intent2id)
|
||||
self.intent2id[name] = assign_id
|
||||
self.id2intent[assign_id] = name
|
||||
@ -267,4 +267,4 @@ class TreeIntent(ABC):
|
||||
if __name__ == '__main__':
|
||||
prompt_engine = PromptEngine('./config/story.yml')
|
||||
prompt_engine.merge_stories_from_yml('./config/github-issue.story.yml')
|
||||
print(len(prompt_engine.stories))
|
||||
print(prompt_engine.id2intent)
|
0
rag/__init__.py
Normal file
0
rag/__init__.py
Normal file
11
rag/api/__init__.py
Normal file
11
rag/api/__init__.py
Normal file
@ -0,0 +1,11 @@
|
||||
from .admin import logger, app
|
||||
from .config import necessary_files
|
||||
from .constant import StatusCode, MsgCode
|
||||
|
||||
__all__ = [
|
||||
logger,
|
||||
app,
|
||||
necessary_files,
|
||||
StatusCode,
|
||||
MsgCode
|
||||
]
|
@ -12,4 +12,4 @@ logger.add(
|
||||
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
|
||||
)
|
||||
|
||||
app = Flask(__file__)
|
||||
app = Flask(__file__)
|
@ -1,9 +1,8 @@
|
||||
|
||||
necessary_files = {
|
||||
'vecdb-config': './config/vecdb.yml',
|
||||
'intent-story': './config/story.yml',
|
||||
'issue-story': './config/github-issue.story.yml',
|
||||
'blog-vecdb-data': './blog-vecdb/index.faiss',
|
||||
'blog-vecdb-model': './blog-vecdb/index.pkl',
|
||||
'intent-classifier': './model/embedding_mapping.sklearn'
|
||||
'intent-classifier': './model/intent.enn.pth'
|
||||
}
|
6
rag/db/__init__.py
Normal file
6
rag/db/__init__.py
Normal file
@ -0,0 +1,6 @@
|
||||
from .embedding import db, embedding
|
||||
|
||||
__all__ = [
|
||||
db,
|
||||
embedding
|
||||
]
|
12
rag/main.py
12
rag/main.py
@ -1,9 +1,11 @@
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.abspath('.'))
|
||||
|
||||
from admin import app, logger
|
||||
from intent import *
|
||||
from vecdb import *
|
||||
from configs import necessary_files
|
||||
from rag.api.admin import app, logger
|
||||
from rag.api.config import necessary_files
|
||||
from rag.services.intent import *
|
||||
from rag.services.vecdb import *
|
||||
|
||||
def assert_resource(path: str):
|
||||
assert os.path.exists(path), '{} 不存在'.format(file)
|
||||
@ -14,9 +16,11 @@ for file in necessary_files.values():
|
||||
if __name__ == '__main__':
|
||||
from gevent import pywsgi
|
||||
import yaml
|
||||
|
||||
config: dict = yaml.load(open('./config/vecdb.yml'), Loader=yaml.Loader)
|
||||
addr = config.get('addr', '127.0.0.1')
|
||||
port = int(config.get('port', 8081))
|
||||
|
||||
server = pywsgi.WSGIServer((addr, port), app)
|
||||
logger.info('RAG 系统运行在 http://{}:{}'.format(addr, port))
|
||||
server.serve_forever()
|
5
rag/model/__init__.py
Normal file
5
rag/model/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
from .enn import LinearEnn
|
||||
|
||||
__all__ = [
|
||||
LinearEnn
|
||||
]
|
88
rag/model/enn.py
Normal file
88
rag/model/enn.py
Normal file
@ -0,0 +1,88 @@
|
||||
|
||||
import torch
|
||||
import torch.nn as nn
|
||||
import torch.nn.functional as F
|
||||
import numpy as np
|
||||
|
||||
class LinearEnn(nn.Module):
|
||||
in_dim: int
|
||||
out_dim: int
|
||||
alpha_kl: float
|
||||
def __init__(self, in_dim: int, out_dim: int, focal: int, alpha_kl: float):
|
||||
super().__init__()
|
||||
self.in_dim = in_dim
|
||||
self.out_dim = out_dim
|
||||
self.alpha_kl = alpha_kl
|
||||
self.focal = focal
|
||||
self.classifier = nn.Sequential(
|
||||
nn.Linear(in_dim, out_dim),
|
||||
nn.ELU(),
|
||||
)
|
||||
|
||||
def forward(self, inputs: torch.FloatTensor) -> tuple[torch.FloatTensor, torch.FloatTensor]:
|
||||
logits = self.classifier(inputs)
|
||||
evidence = torch.exp(logits)
|
||||
prob = F.normalize(evidence + 1, p=1, dim=1)
|
||||
return evidence, prob
|
||||
|
||||
def criterion(self, evidence: torch.FloatTensor, label: torch.LongTensor) -> torch.FloatTensor:
|
||||
if len(label.shape) == 1:
|
||||
label = F.one_hot(label, self.out_dim)
|
||||
alpha = evidence + 1
|
||||
alpha_0 = alpha.sum(1).unsqueeze(-1).repeat(1, self.out_dim)
|
||||
loss_ece = torch.sum(label * (torch.digamma(alpha_0) - torch.digamma(alpha)), dim=1)
|
||||
loss_ece = torch.mean(loss_ece)
|
||||
if self.alpha_kl > 0:
|
||||
tilde_alpha = label + (1 - label) * alpha
|
||||
uncertainty_alpha = torch.ones_like(tilde_alpha).cuda()
|
||||
estimate_dirichlet = torch.distributions.Dirichlet(tilde_alpha)
|
||||
uncertainty_dirichlet = torch.distributions.Dirichlet(uncertainty_alpha)
|
||||
kl = torch.distributions.kl_divergence(estimate_dirichlet, uncertainty_dirichlet)
|
||||
loss_kl = torch.mean(kl)
|
||||
else:
|
||||
loss_kl = 0
|
||||
return loss_ece + self.alpha_kl * loss_kl
|
||||
|
||||
def predict(self, inputs: torch.FloatTensor | list[list[float]] | np.ndarray) -> tuple[torch.FloatTensor, torch.FloatTensor]:
|
||||
"""
|
||||
返回每个类别的预测概率 和 当前的预测的不确定度 uncertainty
|
||||
"""
|
||||
if not isinstance(inputs, torch.FloatTensor):
|
||||
inputs = torch.FloatTensor(inputs)
|
||||
with torch.no_grad():
|
||||
evidence, prob = self.forward(inputs)
|
||||
alpha = evidence + 1
|
||||
S = alpha.sum(dim=1)
|
||||
u = self.out_dim / S
|
||||
|
||||
return prob, u
|
||||
|
||||
|
||||
def train_enn(enn_model: LinearEnn, embedding: np.ndarray | torch.FloatTensor, labels: np.ndarray | torch.LongTensor, bs: int = 64, lr: float = 1e-3, epoch: int = 100):
|
||||
optimizer = torch.optim.AdamW(enn_model.parameters(), lr=lr)
|
||||
|
||||
sample_num = len(embedding)
|
||||
sample_indice = np.arange(sample_num)
|
||||
bs_num = int(np.ceil(sample_num / bs))
|
||||
|
||||
training_losses = []
|
||||
|
||||
for i in range(epoch):
|
||||
alpha_kl = min(0.9, i / 10)
|
||||
np.random.shuffle(sample_indice)
|
||||
train_loss = 0
|
||||
for bs_i in range(bs_num):
|
||||
start = bs_i * bs
|
||||
end = min(sample_num, start + bs)
|
||||
data_indice = sample_indice[start: end]
|
||||
data = torch.FloatTensor(embedding[data_indice])
|
||||
label = torch.LongTensor(labels[data_indice])
|
||||
evidence, prob = enn_model(data)
|
||||
loss = enn_model.criterion(evidence, label)
|
||||
train_loss += loss.item()
|
||||
|
||||
optimizer.zero_grad()
|
||||
loss.backward()
|
||||
optimizer.step()
|
||||
|
||||
training_losses.append(train_loss / bs_num)
|
0
rag/services/__init__.py
Normal file
0
rag/services/__init__.py
Normal file
@ -2,12 +2,14 @@ from flask import Flask, request, jsonify
|
||||
import numpy as np
|
||||
import joblib
|
||||
import json
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
import torch
|
||||
|
||||
from embedding import embedding
|
||||
from constant import StatusCode, MsgCode
|
||||
from admin import app
|
||||
from configs import necessary_files
|
||||
|
||||
from rag.db.embedding import embedding
|
||||
from rag.api.constant import StatusCode, MsgCode
|
||||
from rag.api.admin import app
|
||||
from rag.api.config import necessary_files
|
||||
from rag.model.enn import LinearEnn, train_enn
|
||||
|
||||
import sys
|
||||
import os
|
||||
@ -17,16 +19,22 @@ from prompt import PromptEngine
|
||||
|
||||
class IntentRecogition:
|
||||
def __init__(self) -> None:
|
||||
self.embed_intent_classificator = joblib.load(necessary_files['intent-classifier'])
|
||||
self.engine = PromptEngine(necessary_files['intent-story'])
|
||||
self.classifier = LinearEnn(in_dim=768, out_dim=7, focal=0, alpha_kl=0)
|
||||
self.classifier.load_state_dict(torch.load(necessary_files['intent-classifier']))
|
||||
|
||||
def get_intent_recogition(self, query: str) -> dict:
|
||||
query_embed = embedding.embed_documents([query])
|
||||
result_id = self.embed_intent_classificator.predict(query_embed)[0]
|
||||
result_id = int(result_id)
|
||||
prob, u = self.classifier.predict(query_embed)
|
||||
|
||||
result_id = prob.argmax(dim=1)
|
||||
u = u.item()
|
||||
|
||||
result_id = int(result_id.item())
|
||||
return {
|
||||
'id': result_id,
|
||||
'name': self.engine.id2intent[result_id]
|
||||
'id': int(result_id),
|
||||
'name': self.engine.id2intent[result_id],
|
||||
'uncertainty': float(u)
|
||||
}
|
||||
|
||||
intent_recogition = IntentRecogition()
|
||||
@ -34,7 +42,7 @@ intent_recogition = IntentRecogition()
|
||||
@app.route('/intent/reload-embedding-mapping', methods=['post'])
|
||||
def reload_embedding_mapping():
|
||||
try:
|
||||
intent_recogition.embed_intent_classificator = joblib.load(necessary_files['intent-classifier'])
|
||||
intent_recogition.classifier.load_state_dict(torch.load(necessary_files['intent-classifier']))
|
||||
except Exception as e:
|
||||
response = jsonify({
|
||||
'code': StatusCode.process_error.value,
|
||||
@ -56,21 +64,18 @@ def reload_embedding_mapping():
|
||||
def retrain_embedding_mapping():
|
||||
engine = PromptEngine(necessary_files['intent-story'])
|
||||
engine.merge_stories_from_yml(necessary_files['issue-story'])
|
||||
model = LogisticRegression()
|
||||
sentences = []
|
||||
labels = []
|
||||
for story in engine.stories:
|
||||
sentences.append(story.message)
|
||||
labels.append(engine.intent2id[story.intent])
|
||||
|
||||
try:
|
||||
labels = np.array(labels)
|
||||
embed = embedding.embed_documents(sentences)
|
||||
model.fit(embed, labels)
|
||||
enn_model = intent_recogition.classifier
|
||||
train_enn(enn_model, embed, labels, bs=64, lr=1e-3, epoch=100)
|
||||
torch.save(enn_model.state_dict(), necessary_files['intent-classifier'])
|
||||
|
||||
intent_recogition.engine = engine
|
||||
intent_recogition.embed_intent_classificator = model
|
||||
joblib.dump(model, necessary_files['intent-classifier'])
|
||||
except Exception as e:
|
||||
response = jsonify({
|
||||
'code': StatusCode.process_error.value,
|
||||
@ -80,7 +85,6 @@ def retrain_embedding_mapping():
|
||||
response.status_code = StatusCode.success.value
|
||||
return response
|
||||
|
||||
|
||||
response = jsonify({
|
||||
'code': StatusCode.success.value,
|
||||
'data': 'save data to ' + necessary_files['intent-classifier'],
|
@ -1,10 +1,10 @@
|
||||
from flask import Flask, request, jsonify
|
||||
import json
|
||||
|
||||
from embedding import db
|
||||
from constant import StatusCode, MsgCode
|
||||
from url_mapping import urlmapping
|
||||
from admin import app
|
||||
from rag.api.admin import app
|
||||
from rag.db.embedding import db
|
||||
from rag.api.constant import StatusCode, MsgCode
|
||||
from rag.utils.url_mapping import urlmapping
|
||||
|
||||
@app.route('/vecdb/similarity_search_with_score', methods=['post'])
|
||||
def post_similarity_search_with_score():
|
||||
@ -31,13 +31,14 @@ def post_similarity_search_with_score():
|
||||
source = meta.get('source', '')
|
||||
if len(source) > 0:
|
||||
source = urlmapping.url_from_mapping(source)
|
||||
|
||||
result_data.append({
|
||||
'content': page_content.strip(),
|
||||
'meta': meta,
|
||||
'source': source,
|
||||
'score': float(score)
|
||||
})
|
||||
|
||||
|
||||
response = jsonify({
|
||||
'code': StatusCode.success.value,
|
||||
'data': result_data,
|
3
rag/utils/__init__.py
Normal file
3
rag/utils/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
from .url_mapping import urlmapping
|
||||
|
||||
__all__ = [ urlmapping ]
|
@ -13,6 +13,7 @@ class UrlMappingRegister:
|
||||
return lambda func: register(start, func)
|
||||
|
||||
def url_from_mapping(self, source: str) -> str:
|
||||
source = source.lstrip('.').lstrip('/')
|
||||
for pattern in self.startsWith_patterns:
|
||||
func = self.startsWith_patterns[pattern]
|
||||
if source.startswith(pattern):
|
||||
@ -32,6 +33,7 @@ def kirigaya_cn(source: str) -> str:
|
||||
template = f'https://kirigaya.cn/blog/article?seq={article_id}'
|
||||
return template
|
||||
|
||||
|
||||
# 样例: docs/digital-document/guide/quick-start.md
|
||||
# 目标: https://sterben.nitcloud.cn/zh/guide/quick-start.html
|
||||
@urlmapping.startsWith('docs/digital-document')
|
||||
@ -42,6 +44,16 @@ def digital_document(source: str) -> str:
|
||||
return router
|
||||
|
||||
|
||||
# 样例: docs/digital-issue/issue-2/issue.md
|
||||
# 目标: https://github.com/Digital-EDA/Digital-IDE/issues/2
|
||||
@urlmapping.startsWith('docs/digital-issue')
|
||||
def digital_document(source: str) -> str:
|
||||
parts = source.split('/')
|
||||
issue_id = parts[2].split('-')[-1]
|
||||
router = f'https://github.com/Digital-EDA/Digital-IDE/issues/{issue_id}'
|
||||
return router
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(kirigaya_cn('docs/kirigaya.cn/129.md'))
|
||||
print(kirigaya_cn('docs/kirigaya.cn/21.md'))
|
@ -41,7 +41,7 @@ suite('test intent recogition', () => {
|
||||
{ input: '我的反撤回还能用', expect: 'others' },
|
||||
{ input: '因为这是养蛊的虚拟机,放了些国产垃圾软件,得用国产流氓之王才能镇得住他们', expect: 'others' },
|
||||
{ input: '你咋装了个360', expect: 'others' },
|
||||
{ input: '???', expect: 'others' },
|
||||
{ input: '???', expect: 'expression,others' },
|
||||
];
|
||||
|
||||
for (const s of intent_suites) {
|
||||
|
206
yarn.lock
206
yarn.lock
@ -4,7 +4,7 @@
|
||||
|
||||
"@pm2/agent@~2.0.0":
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@pm2/agent/-/agent-2.0.3.tgz#6b47fda837f185864767fe1e048f61d1de31fc45"
|
||||
integrity sha512-xkqqCoTf5VsciMqN0vb9jthW7olVAi4KRFNddCc7ZkeJZ3i8QwZANr4NSH2H5DvseRFHq7MiPspRY/EWAFWWTg==
|
||||
dependencies:
|
||||
async "~3.2.0"
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
"@pm2/io@~6.0.0":
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/@pm2/io/-/io-6.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@pm2/io/-/io-6.0.0.tgz#ad7222e7c6975664028fe727ff7b67e9b661eacc"
|
||||
integrity sha512-sKUEgZoQ5/jRwTyMB1I7u2wXL6dG0j/F/M4ANJ7dJCApfW8nWC0RElMW2siEKvZ79iplIPAaWV27oyBoerEflw==
|
||||
dependencies:
|
||||
async "~2.6.1"
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
"@pm2/js-api@~0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.8.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@pm2/js-api/-/js-api-0.8.0.tgz#d1b8aff562dd34befa3cb30fe28e08c9f9743abc"
|
||||
integrity sha512-nmWzrA/BQZik3VBz+npRcNIu01kdBhWL0mxKmP1ciF/gTcujPTQqt027N9fc1pK9ERM8RipFhymw7RcmCyOEYA==
|
||||
dependencies:
|
||||
async "^2.6.3"
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
"@pm2/pm2-version-check@latest":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz#cf97fbb14b0eca95430ca05eedccbd2683806e43"
|
||||
integrity sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==
|
||||
dependencies:
|
||||
debug "^4.3.1"
|
||||
@ -122,7 +122,7 @@
|
||||
|
||||
"@tootallnate/quickjs-emscripten@^0.23.0":
|
||||
version "0.23.0"
|
||||
resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c"
|
||||
integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
|
||||
|
||||
"@types/node@*", "@types/node@^20.12.12":
|
||||
@ -154,7 +154,7 @@ accepts@~1.3.5:
|
||||
|
||||
agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317"
|
||||
integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
|
||||
dependencies:
|
||||
debug "^4.3.4"
|
||||
@ -171,14 +171,14 @@ ajv@8.12.0:
|
||||
|
||||
amp-message@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/amp-message/-/amp-message-0.1.2.tgz#a78f1c98995087ad36192a41298e4db49e3dfc45"
|
||||
integrity sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==
|
||||
dependencies:
|
||||
amp "0.3.1"
|
||||
|
||||
amp@0.3.1, amp@~0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/amp/-/amp-0.3.1.tgz#6adf8d58a74f361e82c1fa8d389c079e139fc47d"
|
||||
integrity sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==
|
||||
|
||||
ansi-align@^3.0.1:
|
||||
@ -195,7 +195,7 @@ ansi-colors@4.1.1:
|
||||
|
||||
ansi-colors@^4.1.1:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
|
||||
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
|
||||
|
||||
ansi-regex@^5.0.1:
|
||||
@ -250,21 +250,21 @@ assertion-error@^1.1.0:
|
||||
|
||||
ast-types@^0.13.4:
|
||||
version "0.13.4"
|
||||
resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
|
||||
integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==
|
||||
dependencies:
|
||||
tslib "^2.0.1"
|
||||
|
||||
async@^2.6.3, async@~2.6.1:
|
||||
version "2.6.4"
|
||||
resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
|
||||
integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
|
||||
dependencies:
|
||||
lodash "^4.17.14"
|
||||
|
||||
async@^3.2.0, async@~3.2.0:
|
||||
version "3.2.5"
|
||||
resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66"
|
||||
integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
@ -295,7 +295,7 @@ balanced-match@^1.0.0:
|
||||
|
||||
basic-ftp@^5.0.2:
|
||||
version "5.0.5"
|
||||
resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0"
|
||||
integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
|
||||
|
||||
binary-extensions@^2.0.0:
|
||||
@ -305,12 +305,12 @@ binary-extensions@^2.0.0:
|
||||
|
||||
blessed@0.1.81:
|
||||
version "0.1.81"
|
||||
resolved "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz"
|
||||
resolved "https://registry.yarnpkg.com/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129"
|
||||
integrity sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==
|
||||
|
||||
bodec@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/bodec/-/bodec-0.1.0.tgz#bc851555430f23c9f7650a75ef64c6a94c3418cc"
|
||||
integrity sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==
|
||||
|
||||
boxen@7.0.0:
|
||||
@ -356,7 +356,7 @@ browser-stdout@1.3.1:
|
||||
|
||||
buffer-from@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
||||
|
||||
bytes@3.0.0:
|
||||
@ -418,7 +418,7 @@ chalk-template@0.4.0:
|
||||
|
||||
chalk@3.0.0, chalk@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
|
||||
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
@ -444,7 +444,7 @@ chalk@^5.0.1:
|
||||
|
||||
charm@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296"
|
||||
integrity sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==
|
||||
|
||||
check-error@^1.0.2:
|
||||
@ -471,7 +471,7 @@ chokidar@3.5.3:
|
||||
|
||||
chokidar@^3.5.3:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
|
||||
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
|
||||
dependencies:
|
||||
anymatch "~3.1.2"
|
||||
@ -491,7 +491,7 @@ cli-boxes@^3.0.0:
|
||||
|
||||
cli-tableau@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/cli-tableau/-/cli-tableau-2.0.1.tgz#baa78d83e08a2d7ab79b7dad9406f0254977053f"
|
||||
integrity sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==
|
||||
dependencies:
|
||||
chalk "3.0.0"
|
||||
@ -535,7 +535,7 @@ combined-stream@^1.0.8:
|
||||
|
||||
commander@2.15.1:
|
||||
version "2.15.1"
|
||||
resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
|
||||
integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
|
||||
|
||||
compressible@~2.0.16:
|
||||
@ -570,7 +570,7 @@ content-disposition@0.5.2:
|
||||
|
||||
croner@~4.1.92:
|
||||
version "4.1.97"
|
||||
resolved "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz"
|
||||
resolved "https://registry.yarnpkg.com/croner/-/croner-4.1.97.tgz#6e373dc7bb3026fab2deb0d82685feef20796766"
|
||||
integrity sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==
|
||||
|
||||
cross-spawn@^7.0.3:
|
||||
@ -584,7 +584,7 @@ cross-spawn@^7.0.3:
|
||||
|
||||
culvert@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/culvert/-/culvert-0.1.2.tgz#9502f5f0154a2d5a22a023e79f71cc936fa6ef6f"
|
||||
integrity sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==
|
||||
|
||||
d@1, d@^1.0.1, d@^1.0.2:
|
||||
@ -597,17 +597,17 @@ d@1, d@^1.0.1, d@^1.0.2:
|
||||
|
||||
data-uri-to-buffer@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b"
|
||||
integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
|
||||
|
||||
dayjs@~1.11.5:
|
||||
version "1.11.11"
|
||||
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e"
|
||||
integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==
|
||||
|
||||
dayjs@~1.8.24:
|
||||
version "1.8.36"
|
||||
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.36.tgz#be36e248467afabf8f5a86bae0de0cdceecced50"
|
||||
integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==
|
||||
|
||||
debug@2.6.9:
|
||||
@ -619,7 +619,7 @@ debug@2.6.9:
|
||||
|
||||
debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@~4.3.1:
|
||||
version "4.3.5"
|
||||
resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
|
||||
integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
@ -633,7 +633,7 @@ debug@4.3.4:
|
||||
|
||||
debug@^3.2.6:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
@ -666,7 +666,7 @@ define-data-property@^1.1.4:
|
||||
|
||||
degenerator@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5"
|
||||
integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==
|
||||
dependencies:
|
||||
ast-types "^0.13.4"
|
||||
@ -705,7 +705,7 @@ emoji-regex@^9.2.2:
|
||||
|
||||
enquirer@2.3.6:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz"
|
||||
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
|
||||
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
|
||||
dependencies:
|
||||
ansi-colors "^4.1.1"
|
||||
@ -761,7 +761,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
|
||||
|
||||
escodegen@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
|
||||
integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
|
||||
dependencies:
|
||||
esprima "^4.0.1"
|
||||
@ -782,17 +782,17 @@ esniff@^2.0.1:
|
||||
|
||||
esprima@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
||||
|
||||
estraverse@^5.2.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
|
||||
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
||||
|
||||
event-emitter@^0.3.5:
|
||||
@ -805,17 +805,17 @@ event-emitter@^0.3.5:
|
||||
|
||||
eventemitter2@5.0.1, eventemitter2@~5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-5.0.1.tgz#6197a095d5fb6b57e8942f6fd7eaad63a09c9452"
|
||||
integrity sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==
|
||||
|
||||
eventemitter2@^6.3.1:
|
||||
version "6.4.9"
|
||||
resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125"
|
||||
integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==
|
||||
|
||||
eventemitter2@~0.4.14:
|
||||
version "0.4.14"
|
||||
resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab"
|
||||
integrity sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==
|
||||
|
||||
execa@^5.1.1:
|
||||
@ -842,7 +842,7 @@ ext@^1.7.0:
|
||||
|
||||
extrareqp2@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/extrareqp2/-/extrareqp2-1.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/extrareqp2/-/extrareqp2-1.0.0.tgz#aaf8ad1495d723f71276b0eab041c061aa21f035"
|
||||
integrity sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.0"
|
||||
@ -854,7 +854,7 @@ fast-deep-equal@^3.1.1:
|
||||
|
||||
fast-json-patch@^3.0.0-1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947"
|
||||
integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==
|
||||
|
||||
fast-url-parser@1.1.3:
|
||||
@ -866,7 +866,7 @@ fast-url-parser@1.1.3:
|
||||
|
||||
fclone@1.0.11, fclone@~1.0.11:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz"
|
||||
resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640"
|
||||
integrity sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==
|
||||
|
||||
fill-range@^7.1.1:
|
||||
@ -921,7 +921,7 @@ fs-extra@^10.0.0:
|
||||
|
||||
fs-extra@^11.2.0:
|
||||
version "11.2.0"
|
||||
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
|
||||
integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
@ -976,7 +976,7 @@ get-stream@^6.0.0:
|
||||
|
||||
get-uri@^6.0.1:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a"
|
||||
integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==
|
||||
dependencies:
|
||||
basic-ftp "^5.0.2"
|
||||
@ -986,12 +986,12 @@ get-uri@^6.0.1:
|
||||
|
||||
git-node-fs@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/git-node-fs/-/git-node-fs-1.0.0.tgz#49b215e242ebe43aa4c7561bbba499521752080f"
|
||||
integrity sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==
|
||||
|
||||
git-sha1@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/git-sha1/-/git-sha1-0.1.2.tgz#599ac192b71875825e13a445f3a6e05118c2f745"
|
||||
integrity sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==
|
||||
|
||||
glob-parent@~5.1.2:
|
||||
@ -1079,7 +1079,7 @@ he@1.2.0:
|
||||
|
||||
http-proxy-agent@^7.0.0:
|
||||
version "7.0.2"
|
||||
resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
|
||||
integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
|
||||
dependencies:
|
||||
agent-base "^7.1.0"
|
||||
@ -1087,7 +1087,7 @@ http-proxy-agent@^7.0.0:
|
||||
|
||||
https-proxy-agent@^7.0.2:
|
||||
version "7.0.4"
|
||||
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168"
|
||||
integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==
|
||||
dependencies:
|
||||
agent-base "^7.0.2"
|
||||
@ -1100,7 +1100,7 @@ human-signals@^2.1.0:
|
||||
|
||||
iconv-lite@^0.4.4:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
@ -1130,7 +1130,7 @@ interpret@^1.0.0:
|
||||
|
||||
ip-address@^9.0.5:
|
||||
version "9.0.5"
|
||||
resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
|
||||
integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==
|
||||
dependencies:
|
||||
jsbn "1.1.0"
|
||||
@ -1243,7 +1243,7 @@ isexe@^2.0.0:
|
||||
|
||||
js-git@^0.7.8:
|
||||
version "0.7.8"
|
||||
resolved "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz"
|
||||
resolved "https://registry.yarnpkg.com/js-git/-/js-git-0.7.8.tgz#52fa655ab61877d6f1079efc6534b554f31e5444"
|
||||
integrity sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==
|
||||
dependencies:
|
||||
bodec "^0.1.0"
|
||||
@ -1260,7 +1260,7 @@ js-yaml@4.1.0, js-yaml@~4.1.0:
|
||||
|
||||
jsbn@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
|
||||
integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
|
||||
|
||||
json-schema-traverse@^1.0.0:
|
||||
@ -1270,7 +1270,7 @@ json-schema-traverse@^1.0.0:
|
||||
|
||||
json-stringify-safe@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
|
||||
|
||||
jsonfile@^6.0.1:
|
||||
@ -1302,10 +1302,10 @@ knuth-shuffle@^1.0.8:
|
||||
resolved "https://registry.yarnpkg.com/knuth-shuffle/-/knuth-shuffle-1.0.8.tgz#929a467b0efd8d297bdcf318ca988a9f1037f80d"
|
||||
integrity sha512-IdC4Hpp+mx53zTt6VAGsAtbGM0g4BV9fP8tTcviCosSwocHcRDw9uG5Rnv6wLWckF4r72qeXFoK9NkvV1gUJCQ==
|
||||
|
||||
lagrange.onebot@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/lagrange.onebot/-/lagrange.onebot-1.0.0.tgz"
|
||||
integrity sha512-KI5EJNiaXtnOdXTDdTaNNw0eZJVwwx5JIuaR1Ci0JhacYaxWd9FSXHEWbBFHFdZejv/uxyqv9yvDT1Zn4w3DIw==
|
||||
lagrange.onebot@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lagrange.onebot/-/lagrange.onebot-1.0.2.tgz#db3aef4b85a4f31c8b28c770c269ca60c09fbd14"
|
||||
integrity sha512-0Plag0DbJp3q88pA0sa72Pzk2X1RZwU/TIxbxiiZ3vauNN3naJ7d2j6mc6fDVfORde94Cxn/BjPRZwUd2pbsaw==
|
||||
dependencies:
|
||||
"@ptkdev/logger" "^1.8.0"
|
||||
"@types/node" "^20.12.12"
|
||||
@ -1321,7 +1321,7 @@ lazy-seq@^1.0.0:
|
||||
|
||||
lazy@~1.0.11:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz"
|
||||
resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690"
|
||||
integrity sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==
|
||||
|
||||
locate-path@^6.0.0:
|
||||
@ -1367,14 +1367,14 @@ lowdb@^1.0.0:
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
lru-cache@^7.14.1:
|
||||
version "7.18.3"
|
||||
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
|
||||
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
@ -1439,7 +1439,7 @@ minimist@^1.2.0:
|
||||
|
||||
mkdirp@1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
mocha@^10.4.0:
|
||||
@ -1470,7 +1470,7 @@ mocha@^10.4.0:
|
||||
|
||||
module-details-from-path@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b"
|
||||
integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==
|
||||
|
||||
ms@2.0.0:
|
||||
@ -1490,12 +1490,12 @@ ms@2.1.3, ms@^2.1.1:
|
||||
|
||||
mute-stream@~0.0.4:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
needle@2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
|
||||
integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
@ -1509,7 +1509,7 @@ negotiator@0.6.3:
|
||||
|
||||
netmask@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
|
||||
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
|
||||
|
||||
next-tick@^1.1.0:
|
||||
@ -1553,7 +1553,7 @@ npm-run-path@^4.0.1:
|
||||
|
||||
nssocket@0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/nssocket/-/nssocket-0.6.0.tgz#59f96f6ff321566f33c70f7dbeeecdfdc07154fa"
|
||||
integrity sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==
|
||||
dependencies:
|
||||
eventemitter2 "~0.4.14"
|
||||
@ -1594,7 +1594,7 @@ p-locate@^5.0.0:
|
||||
|
||||
pac-proxy-agent@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75"
|
||||
integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==
|
||||
dependencies:
|
||||
"@tootallnate/quickjs-emscripten" "^0.23.0"
|
||||
@ -1608,7 +1608,7 @@ pac-proxy-agent@^7.0.1:
|
||||
|
||||
pac-resolver@^7.0.0:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6"
|
||||
integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==
|
||||
dependencies:
|
||||
degenerator "^5.0.0"
|
||||
@ -1616,7 +1616,7 @@ pac-resolver@^7.0.0:
|
||||
|
||||
pako@^0.2.5:
|
||||
version "0.2.9"
|
||||
resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
|
||||
integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
|
||||
|
||||
path-exists@^4.0.0:
|
||||
@ -1666,14 +1666,14 @@ picomatch@^2.0.4, picomatch@^2.2.1:
|
||||
|
||||
pidusage@^2.0.21:
|
||||
version "2.0.21"
|
||||
resolved "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-2.0.21.tgz#7068967b3d952baea73e57668c98b9eaa876894e"
|
||||
integrity sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==
|
||||
dependencies:
|
||||
safe-buffer "^5.2.1"
|
||||
|
||||
pidusage@~3.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.npmjs.org/pidusage/-/pidusage-3.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-3.0.2.tgz#6faa5402b2530b3af2cf93d13bcf202889724a53"
|
||||
integrity sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==
|
||||
dependencies:
|
||||
safe-buffer "^5.2.1"
|
||||
@ -1685,14 +1685,14 @@ pify@^3.0.0:
|
||||
|
||||
pm2-axon-rpc@~0.7.0, pm2-axon-rpc@~0.7.1:
|
||||
version "0.7.1"
|
||||
resolved "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz#2daec5383a63135b3f18babb70266dacdcbc429a"
|
||||
integrity sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==
|
||||
dependencies:
|
||||
debug "^4.3.1"
|
||||
|
||||
pm2-axon@~4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pm2-axon/-/pm2-axon-4.0.1.tgz#a7b4bb586e9aeb35b1042b488cde15b60cabafd2"
|
||||
integrity sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==
|
||||
dependencies:
|
||||
amp "~0.3.1"
|
||||
@ -1702,7 +1702,7 @@ pm2-axon@~4.0.1:
|
||||
|
||||
pm2-deploy@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pm2-deploy/-/pm2-deploy-1.0.2.tgz#98d8385553a3a4dca11c7b3116deb519bc5961a7"
|
||||
integrity sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==
|
||||
dependencies:
|
||||
run-series "^1.1.8"
|
||||
@ -1710,14 +1710,14 @@ pm2-deploy@~1.0.2:
|
||||
|
||||
pm2-multimeter@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz#1a1e55153d41a05534cea23cfe860abaa0eb4ace"
|
||||
integrity sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==
|
||||
dependencies:
|
||||
charm "~0.1.1"
|
||||
|
||||
pm2-sysmonit@^1.2.8:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz#eddea34a53fd8c8d7c3efb73b97a3c548686e24d"
|
||||
integrity sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==
|
||||
dependencies:
|
||||
async "^3.2.0"
|
||||
@ -1728,7 +1728,7 @@ pm2-sysmonit@^1.2.8:
|
||||
|
||||
pm2@^5.4.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.npmjs.org/pm2/-/pm2-5.4.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pm2/-/pm2-5.4.0.tgz#bf7976d8681304c31388ff8aae81633a2a04d54e"
|
||||
integrity sha512-9TrDuckcSEnINoURygr3yfruK20qXuOUPOPQyIh4FIskQduyDNst9ys1XAt9YPY3RyGxVr2+x8Irsdma3klVQw==
|
||||
dependencies:
|
||||
"@pm2/agent" "~2.0.0"
|
||||
@ -1770,14 +1770,14 @@ possible-typed-array-names@^1.0.0:
|
||||
|
||||
promptly@^2:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/promptly/-/promptly-2.2.0.tgz#2a13fa063688a2a5983b161fff0108a07d26fc74"
|
||||
integrity sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==
|
||||
dependencies:
|
||||
read "^1.0.4"
|
||||
|
||||
proxy-agent@~6.3.0:
|
||||
version "6.3.1"
|
||||
resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.1.tgz#40e7b230552cf44fd23ffaf7c59024b692612687"
|
||||
integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==
|
||||
dependencies:
|
||||
agent-base "^7.0.2"
|
||||
@ -1833,7 +1833,7 @@ rc@^1.0.1, rc@^1.1.6:
|
||||
|
||||
read@^1.0.4:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
|
||||
integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==
|
||||
dependencies:
|
||||
mute-stream "~0.0.4"
|
||||
@ -1879,7 +1879,7 @@ require-from-string@^2.0.2:
|
||||
|
||||
require-in-the-middle@^5.0.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz#4b71e3cc7f59977100af9beb76bf2d056a5a6de2"
|
||||
integrity sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==
|
||||
dependencies:
|
||||
debug "^4.1.1"
|
||||
@ -1915,7 +1915,7 @@ rotating-file-stream@^2.1.5:
|
||||
|
||||
run-series@^1.1.8:
|
||||
version "1.1.9"
|
||||
resolved "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz"
|
||||
resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.9.tgz#15ba9cb90e6a6c054e67c98e1dc063df0ecc113a"
|
||||
integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==
|
||||
|
||||
safe-buffer@5.1.2:
|
||||
@ -1930,22 +1930,22 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.2.1:
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sax@^1.2.4:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f"
|
||||
integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
|
||||
|
||||
semver@^7.2:
|
||||
version "7.6.2"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
|
||||
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
|
||||
|
||||
semver@~7.5.0, semver@~7.5.4:
|
||||
version "7.5.4"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
|
||||
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
@ -2023,7 +2023,7 @@ shelljs@^0.8.5:
|
||||
|
||||
shimmer@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337"
|
||||
integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==
|
||||
|
||||
should-equal@^2.0.0:
|
||||
@ -2101,12 +2101,12 @@ sinon@^18.0.0:
|
||||
|
||||
smart-buffer@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
|
||||
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
|
||||
|
||||
socks-proxy-agent@^8.0.2:
|
||||
version "8.0.3"
|
||||
resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d"
|
||||
integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==
|
||||
dependencies:
|
||||
agent-base "^7.1.1"
|
||||
@ -2115,7 +2115,7 @@ socks-proxy-agent@^8.0.2:
|
||||
|
||||
socks@^2.7.1:
|
||||
version "2.8.3"
|
||||
resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5"
|
||||
integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
|
||||
dependencies:
|
||||
ip-address "^9.0.5"
|
||||
@ -2123,7 +2123,7 @@ socks@^2.7.1:
|
||||
|
||||
source-map-support@0.5.21:
|
||||
version "0.5.21"
|
||||
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
|
||||
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
|
||||
dependencies:
|
||||
buffer-from "^1.0.0"
|
||||
@ -2131,17 +2131,17 @@ source-map-support@0.5.21:
|
||||
|
||||
source-map@^0.6.0, source-map@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
sprintf-js@1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
|
||||
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
|
||||
|
||||
sprintf-js@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
|
||||
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
|
||||
|
||||
steno@^0.4.1:
|
||||
@ -2219,7 +2219,7 @@ supports-preserve-symlinks-flag@^1.0.0:
|
||||
|
||||
systeminformation@^5.7:
|
||||
version "5.22.10"
|
||||
resolved "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.10.tgz"
|
||||
resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.22.10.tgz#9465306edd4db4bd5a3a04766703b35b279369b7"
|
||||
integrity sha512-RJ3oed80NkqgHtpB0TLkxEKEpQ3pUm2lgVolkHeoaExPidkWsj2D/hO6Rwwi9i+Odl1vm8TMiRNIKK7hBaqDsw==
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
@ -2236,22 +2236,22 @@ trampa@^1.0.0:
|
||||
|
||||
tslib@1.9.3:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
||||
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
|
||||
|
||||
tslib@^2.0.1:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
|
||||
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
|
||||
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
|
||||
|
||||
tv4@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.3.0.tgz#d020c846fadd50c855abb25ebaecc68fc10f7963"
|
||||
integrity sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==
|
||||
|
||||
tx2@~1.0.4:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/tx2/-/tx2-1.0.5.tgz#ee0b0e5e2c351f8d23e54bdf46dd60afa3bbc73d"
|
||||
integrity sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==
|
||||
dependencies:
|
||||
json-stringify-safe "^5.0.1"
|
||||
@ -2324,7 +2324,7 @@ vary@~1.1.2:
|
||||
|
||||
vizion@~2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/vizion/-/vizion-2.2.1.tgz#04201ea45ffd145d5b5210e385a8f35170387fb2"
|
||||
integrity sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==
|
||||
dependencies:
|
||||
async "^2.6.3"
|
||||
@ -2387,7 +2387,7 @@ wrappy@1:
|
||||
|
||||
ws@^7.0.0:
|
||||
version "7.5.9"
|
||||
resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
|
||||
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
|
||||
|
||||
ws@^8.17.0:
|
||||
@ -2397,7 +2397,7 @@ ws@^8.17.0:
|
||||
|
||||
ws@~7.4.0:
|
||||
version "7.4.6"
|
||||
resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
|
||||
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
|
||||
|
||||
y18n@^5.0.5:
|
||||
@ -2407,7 +2407,7 @@ y18n@^5.0.5:
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yaml@^2.4.2:
|
||||
|
Loading…
x
Reference in New Issue
Block a user