diff --git a/apps/chat.js b/apps/chat.js index b4072961..631d2f24 100644 --- a/apps/chat.js +++ b/apps/chat.js @@ -803,7 +803,7 @@ export class chatgpt extends plugin { if (!msg || e.msg?.startsWith('#')) { return false } - if ((e.isGroup || e.group_id) && !(e.atme || e.atBot)) { + if ((e.isGroup || e.group_id) && !(e.atme || e.atBot || (e.at === e.self_id))) { return false } if (e.user_id == getUin(e)) return false @@ -1652,7 +1652,7 @@ export class chatgpt extends plugin { opt.groupId = e.group_id opt.qq = e.sender.user_id opt.nickname = e.sender.card - opt.groupName = e.group.name + opt.groupName = e.group.name || e.group_name opt.botName = e.isGroup ? (e.group.pickMember(getUin(e)).card || e.group.pickMember(getUin(e)).nickname) : e.bot.nickname let master = (await getMasterQQ())[0] if (master && e.group) { diff --git a/apps/entertainment.js b/apps/entertainment.js index eb6e9d85..3b888d85 100644 --- a/apps/entertainment.js +++ b/apps/entertainment.js @@ -12,6 +12,7 @@ import { translate, translateLangSupports } from '../utils/translate.js' import AzureTTS from '../utils/tts/microsoft-azure.js' import VoiceVoxTTS from '../utils/tts/voicevox.js' import { URL } from 'node:url' +import { getBots } from '../utils/bot.js' let useSilk = false try { @@ -350,7 +351,7 @@ ${translateLangLabels} let groupId = e.msg.replace(/^#chatgpt打招呼/, '') logger.info(groupId) groupId = parseInt(groupId) - if (groupId && !e.bot.getGroupList().get(groupId)) { + if (groupId && !e.bot.gl.get(groupId)) { await e.reply('机器人不在这个群里!') return } @@ -379,74 +380,77 @@ ${translateLangLabels} continue } let groupId = parseInt(element) - if (this.e.bot.getGroupList().get(groupId)) { - // 打招呼概率 - if (Math.floor(Math.random() * 100) < Config.helloProbability) { - let message = await generateHello() - logger.info(`打招呼给群聊${groupId}:` + message) - if (Config.defaultUseTTS) { - let audio - const [defaultVitsTTSRole, defaultAzureTTSRole, defaultVoxTTSRole] = [Config.defaultTTSRole, Config.azureTTSSpeaker, Config.voicevoxTTSSpeaker] - let ttsSupportKinds = [] - if (Config.azureTTSKey) ttsSupportKinds.push(1) - if (Config.ttsSpace) ttsSupportKinds.push(2) - if (Config.voicevoxSpace) ttsSupportKinds.push(3) - if (!ttsSupportKinds.length) { - logger.warn('没有配置任何语音服务!') - return false - } - const randomIndex = Math.floor(Math.random() * ttsSupportKinds.length) - switch (ttsSupportKinds[randomIndex]) { - case 1 : { - const isEn = AzureTTS.supportConfigurations.find(config => config.code === defaultAzureTTSRole)?.language.includes('en') - if (isEn) { - message = (await translate(message, '英')).replace('\n', '') - } - audio = await AzureTTS.generateAudio(message, { - defaultAzureTTSRole - }) - break + let bots = this.e ? [this.e.bot] : getBots() + for (let bot of bots) { + if (bot.gl?.get(groupId)) { + // 打招呼概率 + if (Math.floor(Math.random() * 100) < Config.helloProbability) { + let message = await generateHello() + logger.info(`打招呼给群聊${groupId}:` + message) + if (Config.defaultUseTTS) { + let audio + const [defaultVitsTTSRole, defaultAzureTTSRole, defaultVoxTTSRole] = [Config.defaultTTSRole, Config.azureTTSSpeaker, Config.voicevoxTTSSpeaker] + let ttsSupportKinds = [] + if (Config.azureTTSKey) ttsSupportKinds.push(1) + if (Config.ttsSpace) ttsSupportKinds.push(2) + if (Config.voicevoxSpace) ttsSupportKinds.push(3) + if (!ttsSupportKinds.length) { + logger.warn('没有配置任何语音服务!') + return false } - case 2 : { - if (Config.autoJapanese) { + const randomIndex = Math.floor(Math.random() * ttsSupportKinds.length) + switch (ttsSupportKinds[randomIndex]) { + case 1 : { + const isEn = AzureTTS.supportConfigurations.find(config => config.code === defaultAzureTTSRole)?.language.includes('en') + if (isEn) { + message = (await translate(message, '英')).replace('\n', '') + } + audio = await AzureTTS.generateAudio(message, { + defaultAzureTTSRole + }) + break + } + case 2 : { + if (Config.autoJapanese) { + try { + message = await translate(message, '日') + } catch (err) { + logger.error(err) + } + } try { - message = await translate(message, '日') + audio = await generateVitsAudio(message, defaultVitsTTSRole, '中日混合(中文用[ZH][ZH]包裹起来,日文用[JA][JA]包裹起来)') } catch (err) { logger.error(err) } + break } - try { - audio = await generateVitsAudio(message, defaultVitsTTSRole, '中日混合(中文用[ZH][ZH]包裹起来,日文用[JA][JA]包裹起来)') - } catch (err) { - logger.error(err) + case 3 : { + message = (await translate(message, '日')).replace('\n', '') + try { + audio = await VoiceVoxTTS.generateAudio(message, { + speaker: defaultVoxTTSRole + }) + } catch (err) { + logger.error(err) + } + break } - break } - case 3 : { - message = (await translate(message, '日')).replace('\n', '') - try { - audio = await VoiceVoxTTS.generateAudio(message, { - speaker: defaultVoxTTSRole - }) - } catch (err) { - logger.error(err) - } - break + if (useSilk) { + await this.e.bot.sendGroupMsg(groupId, await uploadRecord(audio)) + } else { + await this.e.bot.sendGroupMsg(groupId, segment.record(audio)) } - } - if (useSilk) { - await this.e.bot.sendGroupMsg(groupId, await uploadRecord(audio)) } else { - await this.e.bot.sendGroupMsg(groupId, segment.record(audio)) + await this.e.bot.sendGroupMsg(groupId, message) } } else { - await this.e.bot.sendGroupMsg(groupId, message) + logger.info(`时机未到,这次就不打招呼给群聊${groupId}了`) } } else { - logger.info(`时机未到,这次就不打招呼给群聊${groupId}了`) + logger.warn('机器人不在要发送的群组里,忽略群。同时建议检查配置文件修改要打招呼的群号。' + groupId) } - } else { - logger.warn('机器人不在要发送的群组里,忽略群。同时建议检查配置文件修改要打招呼的群号。' + groupId) } } } diff --git a/apps/management.js b/apps/management.js index 94386e4b..008d798e 100644 --- a/apps/management.js +++ b/apps/management.js @@ -272,6 +272,25 @@ export class ChatgptManagement extends plugin { reg: '^#chatgpt(开启|关闭)智能模式$', fnc: 'switchSmartMode', permission: 'master' + }, + { + reg: '^#chatgpt模型列表$', + fnc: 'viewAPIModel' + }, + { + reg: '^#chatgpt设置(API|api)模型$', + fnc: 'setAPIModel', + permission: 'master' + }, + { + reg: '^#chatgpt设置(API|api)反代$', + fnc: 'setOpenAiBaseUrl', + permission: 'master' + }, + { + reg: '^#chatgpt设置星火模型$', + fnc: 'setXinghuoModel', + permission: 'master' } ] }) @@ -1435,4 +1454,94 @@ Poe 模式会调用 Poe 中的 Claude-instant 进行对话。需要提供 Cookie await e.reply('好的,已经关闭智能模式') } } + + async viewAPIModel (e) { + const contents = [ + '仅列出部分模型以供参考', + 'gpt-3.5-turbo', + 'gpt-3.5-turbo-0301', + 'gpt-3.5-turbo-0613', + 'gpt-3.5-turbo-1106', + 'gpt-3.5-turbo-16k', + 'gpt-3.5-turbo-16k-0613', + 'gpt-4', + 'gpt-4-32k', + 'gpt-4-1106-preview' + ] + let modelList = [] + contents.forEach(value => { + // console.log(value) + modelList.push(value) + }) + await this.e.reply(makeForwardMsg(e, modelList, '模型列表')) + } + + async setAPIModel (e) { + this.setContext('saveAPIModel') + await this.reply('请发送API模型', true) + return false + } + + async saveAPIModel () { + if (!this.e.msg) return + let token = this.e.msg + Config.model = token + await this.reply('API模型设置成功', true) + this.finish('saveAPIModel') + } + + async setOpenAiBaseUrl (e) { + this.setContext('saveOpenAiBaseUrl') + await this.reply('请发送API反代', true) + return false + } + + async saveOpenAiBaseUrl () { + if (!this.e.msg) return + let token = this.e.msg + // console.log(token.startsWith('http://') || token.startsWith('https://')) + if (token.startsWith('http://') || token.startsWith('https://')) { + Config.openAiBaseUrl = token + await this.reply('API反代设置成功', true) + this.finish('saveOpenAiBaseUrl') + return + } + await this.reply('你的输入不是一个有效的URL,请检查是否含有http://或https://', true) + this.finish('saveOpenAiBaseUrl') + } + + async setXinghuoModel (e) { + this.setContext('saveXinghuoModel') + await this.reply('1:星火V1.5\n2:星火V2\n3:星火V3\n4:星火助手') + await this.reply('请发送序号', true) + return false + } + + async saveXinghuoModel (e) { + if (!this.e.msg) return + let token = this.e.msg + let ver + switch (token) { + case '3': + ver = 'V3' + Config.xhmode = 'apiv3' + break + case '2': + ver = 'V2' + Config.xhmode = 'apiv2' + break + case '1': + ver = 'V1.5' + Config.xhmode = 'api' + break + case '4': + ver = '助手' + Config.xhmode = 'assistants' + break + default: + break + } + await this.reply(`已成功切换到星火${ver}`, true) + this.finish('saveXinghuoModel') + } } diff --git a/guoba.support.js b/guoba.support.js index 7ca12608..4e85cd63 100644 --- a/guoba.support.js +++ b/guoba.support.js @@ -315,7 +315,7 @@ export function supportGuoba () { { field: 'model', label: 'OpenAI 模型', - bottomHelpMessage: 'gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo, gpt-3.5-turbo-0613, gpt-3.5-turbo-16k-0613。默认为gpt-3.5-turbo,gpt-4需账户支持', + bottomHelpMessage: 'gpt-4, gpt-4-0613, gpt-4-1106, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo, gpt-3.5-turbo-0613, gpt-3.5-turbo-1106, gpt-3.5-turbo-16k-0613。默认为gpt-3.5-turbo,gpt-4需账户支持', component: 'Input' }, { @@ -456,7 +456,7 @@ export function supportGuoba () { { field: 'sydneyWebsocketUseProxy', label: '对话使用sydney反代', - bottomHelpMessage: '【一般情况无需也不建议开启】默认情况下仅创建对话走反代,对话时仍然直连微软。开启本选项将使对话过程也走反,需反代支持', + bottomHelpMessage: '默认情况下仅创建对话走反代,对话时仍然直连微软。开启本选项将使对话过程也走反代,需反代支持。默认开启', component: 'Switch' }, { @@ -505,40 +505,6 @@ export function supportGuoba () { bottomHelpMessage: '使用GPT-4,注意试用配额较低,如果用不了就关掉', component: 'Switch' }, - { - label: '以下为浏览器方式的配置.(Deprecated)', - component: 'Divider' - }, - { - field: 'username', - label: '用户名', - bottomHelpMessage: 'OpenAI用户名。', - component: 'Input' - }, - { - field: 'password', - label: '密码', - bottomHelpMessage: 'OpenAI密码。', - component: 'InputPassword' - }, - { - field: 'UA', - label: '浏览器UA', - bottomHelpMessage: '模拟浏览器UA,无特殊需求保持默认即可', - component: 'InputTextArea' - }, - { - field: 'headless', - label: '无头模式', - bottomHelpMessage: '无界面的服务器可以开启,但遇到验证码时可能无法使用。(实测很容易卡住,几乎不可用)', - component: 'Switch' - }, - { - field: 'chromePath', - label: 'Chrome路径', - bottomHelpMessage: '为空使用默认puppeteer的chromium,也可以传递自己本机安装的Chrome可执行文件地址,提高通过率。windows可以是‘C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe’,linux通过which查找路径', - component: 'Input' - }, { label: '以下为Slack Claude方式的配置', component: 'Divider' @@ -625,16 +591,6 @@ export function supportGuoba () { bottomHelpMessage: '等待响应的超时时间,单位为秒,默认为120。如果不使用反代而是使用代理可以适当调低。', component: 'InputNumber' }, - { - label: '以下为ChatGLM方式的配置', - component: 'Divider' - }, - { - field: 'chatglmBaseUrl', - label: 'ChatGLM API地址', - bottomHelpMessage: '如 http://localhost:8080', - component: 'Input' - }, { label: '以下为星火方式的配置', component: 'Divider' @@ -649,6 +605,7 @@ export function supportGuoba () { { label: '体验版', value: 'web' }, { label: '讯飞星火认知大模型V1.5', value: 'api' }, { label: '讯飞星火认知大模型V2.0', value: 'apiv2' }, + { label: '讯飞星火认知大模型V3.0', value: 'apiv3' }, { label: '讯飞星火助手', value: 'assistants' } ] } diff --git a/package-lock.json b/package-lock.json index f09a2292..c29e27ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,11 +45,15 @@ "@node-rs/jieba": "^1.6.2", "cycletls": "^1.0.21", "jimp": "^0.22.7", + "mammoth": "^1.6.0", "node-silk": "^0.1.0", + "nodejs-pptx": "^1.2.4", + "pdfjs-dist": "^3.11.174", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-recaptcha": "^3.6.8", "puppeteer-extra-plugin-stealth": "^2.11.2", - "sharp": "^0.32.3" + "sharp": "^0.32.3", + "xlsx": "^0.18.5" } }, "../../node_modules/.pnpm/axios@1.4.0/node_modules/axios": { @@ -1209,6 +1213,56 @@ "node": ">= 10" } }, + "node_modules/@postman/form-data": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", + "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "optional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@postman/tough-cookie": { + "version": "4.1.3-postman.1", + "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", + "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", + "optional": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@postman/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@postman/tunnel-agent": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", + "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/@slack/bolt": { "version": "3.13.2", "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-3.13.2.tgz", @@ -1615,6 +1669,15 @@ "node": ">=16.15" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", @@ -1670,6 +1733,15 @@ "node": ">=0.4.0" } }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", @@ -1845,6 +1917,15 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", @@ -1883,6 +1964,15 @@ "node": ">= 0.4" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "optional": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz", @@ -1894,6 +1984,24 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "optional": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", @@ -1955,6 +2063,21 @@ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "optional": true + }, "node_modules/axios": { "version": "0.27.2", "resolved": "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz", @@ -1980,6 +2103,15 @@ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "optional": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/bent": { "version": "7.3.12", "resolved": "https://registry.npmmirror.com/bent/-/bent-7.3.12.tgz", @@ -2021,6 +2153,12 @@ "node": ">= 6" } }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "optional": true + }, "node_modules/bmp-js": { "version": "0.1.0", "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz", @@ -2095,6 +2233,15 @@ "balanced-match": "^1.0.0" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "optional": true, + "dependencies": { + "base64-js": "^1.1.2" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", @@ -2167,11 +2314,74 @@ "node": ">=14.16" } }, + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/canvas/node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "optional": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/canvas/node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "optional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/canvas/node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "optional": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "optional": true, + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/chalk": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz", @@ -2288,6 +2498,15 @@ "node": ">=0.10.0" } }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmmirror.com/color/-/color-4.2.3.tgz", @@ -2409,6 +2628,24 @@ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "optional": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "optional": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz", @@ -2471,6 +2708,18 @@ } } }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -2607,6 +2856,12 @@ "node": ">=0.3.1" } }, + "node_modules/dingbat-to-unicode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", + "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==", + "optional": true + }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", @@ -2632,11 +2887,30 @@ "node": ">=12" } }, + "node_modules/duck": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz", + "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", + "optional": true, + "dependencies": { + "underscore": "^1.13.1" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "optional": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -2933,6 +3207,12 @@ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", @@ -2946,6 +3226,15 @@ "node": ">=4" } }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, "node_modules/fast-content-type-parse": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", @@ -2966,6 +3255,12 @@ "resolved": "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.2.0.tgz", "integrity": "sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg==" }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "optional": true + }, "node_modules/fast-json-stringify": { "version": "5.7.0", "resolved": "https://registry.npmmirror.com/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", @@ -3174,6 +3469,15 @@ "node": ">=0.10.0" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", @@ -3206,6 +3510,15 @@ "node": ">= 0.6" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", @@ -3359,6 +3672,15 @@ "node": ">= 0.4" } }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmmirror.com/gifwrap/-/gifwrap-0.9.4.tgz", @@ -3424,6 +3746,51 @@ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "optional": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "optional": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", @@ -3549,6 +3916,20 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/https-proxy-agent": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", @@ -3632,6 +4013,24 @@ "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", "optional": true }, + "node_modules/image-size": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", + "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "optional": true + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", @@ -4140,6 +4539,12 @@ "node": ">= 0.4" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "optional": true + }, "node_modules/is-unicode-supported": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", @@ -4216,6 +4621,12 @@ } } }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "optional": true + }, "node_modules/it-pushable": { "version": "1.4.2", "resolved": "https://registry.npmmirror.com/it-pushable/-/it-pushable-1.4.2.tgz", @@ -4295,6 +4706,12 @@ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "optional": true + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", @@ -4305,6 +4722,12 @@ "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "optional": true + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -4315,6 +4738,12 @@ "resolved": "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz", "integrity": "sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "optional": true + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", @@ -4343,6 +4772,69 @@ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "optional": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "optional": true + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/jwa/-/jwa-1.4.1.tgz", @@ -4422,6 +4914,15 @@ "node": ">=0.10.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "optional": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/light-my-request": { "version": "5.10.0", "resolved": "https://registry.npmmirror.com/light-my-request/-/light-my-request-5.10.0.tgz", @@ -4498,6 +4999,17 @@ "node": ">=12" } }, + "node_modules/lop": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/lop/-/lop-0.4.1.tgz", + "integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==", + "optional": true, + "dependencies": { + "duck": "^0.1.12", + "option": "~0.2.1", + "underscore": "^1.13.1" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4536,6 +5048,39 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/mammoth": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.6.0.tgz", + "integrity": "sha512-jOwbj6BwJzxCf6jr2l1zmSemniIkLnchvELXnDJCANlJawhzyIKObIq48B8kWEPLgUUh57k7FtEO3DHFQMnjMg==", + "optional": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.6", + "argparse": "~1.0.3", + "base64-js": "^1.5.1", + "bluebird": "~3.4.0", + "dingbat-to-unicode": "^1.0.1", + "jszip": "^3.7.1", + "lop": "^0.4.1", + "path-is-absolute": "^1.0.0", + "underscore": "^1.13.1", + "xmlbuilder": "^10.0.0" + }, + "bin": { + "mammoth": "bin/mammoth" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mammoth/node_modules/xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "optional": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", @@ -4892,6 +5437,44 @@ "nan": "^2.15.0" } }, + "node_modules/nodejs-pptx": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/nodejs-pptx/-/nodejs-pptx-1.2.4.tgz", + "integrity": "sha512-qoDCsizXiIq2Slzi8cwN2M6P1iSuKAprF/vUWAVI6ZElAWKtebcqb6HAbFPy/7z1bLpGk+JtkvzP3uqdbWDizg==", + "optional": true, + "dependencies": { + "async": "^2.6.4", + "image-size": "^0.6.2", + "jszip": "^3.1.5", + "postman-request": "^2.88.1-postman.33", + "uuid": "^8.3.0", + "xml-js": "^1.5.2", + "xml2js": "^0.4.19", + "xmlbuilder": "~09.0.1", + "yarn": "^1.22.10" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodejs-pptx/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/nodejs-pptx/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==", + "optional": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", @@ -4944,6 +5527,15 @@ "set-blocking": "^2.0.0" } }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", @@ -5051,6 +5643,12 @@ "follow-redirects": "^1.14.8" } }, + "node_modules/option": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz", + "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==", + "optional": true + }, "node_modules/ora": { "version": "6.3.1", "resolved": "https://registry.npmmirror.com/ora/-/ora-6.3.1.tgz", @@ -5311,6 +5909,28 @@ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz", "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" }, + "node_modules/path2d-polyfill": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz", + "integrity": "sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pdfjs-dist": { + "version": "3.11.174", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz", + "integrity": "sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==", + "optional": true, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d-polyfill": "^2.0.1" + } + }, "node_modules/peek-readable": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/peek-readable/-/peek-readable-4.1.0.tgz", @@ -5320,6 +5940,12 @@ "node": ">=8" } }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "optional": true + }, "node_modules/phin": { "version": "2.9.3", "resolved": "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz", @@ -5404,6 +6030,57 @@ "node": ">=12.13.0" } }, + "node_modules/postman-request": { + "version": "2.88.1-postman.33", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", + "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", + "optional": true, + "dependencies": { + "@postman/form-data": "~3.1.1", + "@postman/tough-cookie": "~4.1.3-postman.1", + "@postman/tunnel-agent": "^0.6.3", + "aws-sign2": "~0.7.0", + "aws4": "^1.12.0", + "brotli": "^1.3.3", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "har-validator": "~5.1.3", + "http-signature": "~1.3.1", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "^2.1.35", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.3", + "safe-buffer": "^5.1.2", + "stream-length": "^1.0.2", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postman-request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/postman-request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.1.tgz", @@ -5438,6 +6115,12 @@ "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, "node_modules/process-warning": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/process-warning/-/process-warning-2.2.0.tgz", @@ -5471,6 +6154,12 @@ "node": ">= 0.10" } }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "optional": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", @@ -5835,6 +6524,12 @@ "node": ">=0.6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "optional": true + }, "node_modules/queue-tick": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", @@ -6004,6 +6699,12 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "optional": true + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -6253,6 +6954,12 @@ "resolved": "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "optional": true + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -6449,6 +7156,49 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "optional": true + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "optional": true, + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "optional": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", @@ -6479,6 +7229,21 @@ "node": ">= 0.4" } }, + "node_modules/stream-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", + "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", + "optional": true, + "dependencies": { + "bluebird": "^2.6.2" + } + }, + "node_modules/stream-length/node_modules/bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", + "optional": true + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/streamsearch/-/streamsearch-1.1.0.tgz", @@ -6887,6 +7652,12 @@ "node": "*" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "optional": true + }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz", @@ -6942,6 +7713,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "optional": true + }, "node_modules/undici": { "version": "5.22.1", "resolved": "https://registry.npmmirror.com/undici/-/undici-5.22.1.tgz", @@ -6977,6 +7754,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "optional": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/utif2": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/utif2/-/utif2-4.1.0.tgz", @@ -7030,6 +7817,20 @@ "node": ">= 0.8" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", @@ -7155,6 +7956,24 @@ "node": ">=12" } }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -7224,6 +8043,39 @@ "xtend": "^4.0.0" } }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "optional": true, + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "optional": true, + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, "node_modules/xml-parse-from-string": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", @@ -7266,6 +8118,20 @@ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yarn": { + "version": "1.22.19", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz", + "integrity": "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==", + "hasInstallScript": true, + "optional": true, + "bin": { + "yarn": "bin/yarn.js", + "yarnpkg": "bin/yarn.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz", diff --git a/server/modules/user.js b/server/modules/user.js index 1677c226..38b98304 100644 --- a/server/modules/user.js +++ b/server/modules/user.js @@ -1,171 +1,171 @@ import { UserInfo, AddUser } from './user_data.js' import { randomString, getUserData, getMasterQQ, getUin } from '../../utils/common.js' +import { getBots } from '../../utils/bot.js'; import fs from 'fs' +import path from 'path'; -async function User(fastify, options) { - // 登录 - fastify.post('/login', async (request, reply) => { - const body = request.body || {} - let guobaLoginService - let guobaAPI = '' - try { - let { LoginService } = await import('../../../Guoba-Plugin/server/service/both/LoginService.js') - let { getAllWebAddress } = await import('../../../Guoba-Plugin/utils/common.js') - guobaLoginService = new LoginService() - guobaAPI = await getAllWebAddress() - } - catch (err) { - console.error(err) - guobaLoginService = { - signToken: () => {return null} - } - } - if (body.qq && body.passwd) { - const token = randomString(32) - if (body.qq == getUin() && await redis.get('CHATGPT:ADMIN_PASSWD') == body.passwd) { - const guobaToken = await guobaLoginService.signToken(body.qq) - AddUser({ user: body.qq, token: token, autho: 'admin' }) - reply.setCookie('token', token, { path: '/' }) - reply.send({ login: true, autho: 'admin', token: token, guobaToken: guobaToken, guoba: guobaAPI }) - } else { - const user = await getUserData(body.qq) - if (user.passwd != '' && user.passwd === body.passwd) { - AddUser({ user: body.qq, token: token, autho: 'user' }) - reply.setCookie('token', token, { path: '/' }) - reply.send({ login: true, autho: 'user', token: token }) - } else { - reply.send({ login: false, err: `用户名密码错误,如果忘记密码请私聊机器人输入 ${body.qq == getUin() ? '#修改管理密码' : '#修改用户密码'} 进行修改` }) - } - } - } else if (body.otp) { - const token = randomString(32) - const opt = await redis.get(`CHATGPT:SERVER_QUICK`) - if (opt && body.otp == opt) { - const guobaToken = await guobaLoginService.signToken(getUin()) - AddUser({ user: getUin(), token: token, autho: 'admin' }) - reply.setCookie('token', token, { path: '/' }) - reply.send({ login: true, autho: 'admin', token: token, user: getUin(), guobaToken: guobaToken, guoba: guobaAPI }) - } else { - reply.send({ login: false, err: `快捷登录代码错误,请检查后重试` }) - } +async function User (fastify, options) { + // 登录 + fastify.post('/login', async (request, reply) => { + const body = request.body || {} + let guobaLoginService + let guobaAPI = '' + try { + let { LoginService } = await import('../../../Guoba-Plugin/server/service/both/LoginService.js') + let { getAllWebAddress } = await import('../../../Guoba-Plugin/utils/common.js') + guobaLoginService = new LoginService() + guobaAPI = await getAllWebAddress() + } catch (err) { + console.error(err) + guobaLoginService = { + signToken: () => { return null } + } + } + if (body.qq && body.passwd) { + const token = randomString(32) + if (body.qq == getUin() && await redis.get('CHATGPT:ADMIN_PASSWD') == body.passwd) { + const guobaToken = await guobaLoginService.signToken(body.qq) + AddUser({ user: body.qq, token, autho: 'admin' }) + reply.setCookie('token', token, { path: '/' }) + reply.send({ login: true, autho: 'admin', token, guobaToken, guoba: guobaAPI }) + } else { + const user = await getUserData(body.qq) + if (user.passwd != '' && user.passwd === body.passwd) { + AddUser({ user: body.qq, token, autho: 'user' }) + reply.setCookie('token', token, { path: '/' }) + reply.send({ login: true, autho: 'user', token }) } else { - reply.send({ login: false, err: '未输入用户名或密码' }) + reply.send({ login: false, err: `用户名密码错误,如果忘记密码请私聊机器人输入 ${body.qq == getUin() ? '#修改管理密码' : '#修改用户密码'} 进行修改` }) } - return reply + } + } else if (body.otp) { + const token = randomString(32) + const opt = await redis.get('CHATGPT:SERVER_QUICK') + if (opt && body.otp == opt) { + const guobaToken = await guobaLoginService.signToken(getUin()) + AddUser({ user: getUin(), token, autho: 'admin' }) + reply.setCookie('token', token, { path: '/' }) + reply.send({ login: true, autho: 'admin', token, user: getUin(), guobaToken, guoba: guobaAPI }) + } else { + reply.send({ login: false, err: '快捷登录代码错误,请检查后重试' }) + } + } else { + reply.send({ login: false, err: '未输入用户名或密码' }) + } + return reply + }) + // 快速登录 + fastify.post('/quick', async (request, reply) => { + const otp = randomString(6) + await redis.set( + 'CHATGPT:SERVER_QUICK', + otp, + { EX: 60000 } + ) + const master = (await getMasterQQ())[0] + let bots = getBots() + for (let bot of bots) { + bot.pickUser(master).sendMsg(`收到工具箱快捷登录请求,1分钟内有效:${otp}`) + } + reply.send({ state: true }) + return reply + }) + // 检查用户是否存在 + fastify.post('/verify', async (request, reply) => { + const token = request.cookies.token || request.body?.token || 'unknown' + const user = UserInfo(token) + if (!user || token === 'unknown') { + reply.send({ + verify: false + }) + return + } + reply.send({ + verify: true, + user: user.user, + autho: user.autho, + version: 10016 }) - // 快速登录 - fastify.post('/quick', async (request, reply) => { - const otp = randomString(6) - await redis.set( - `CHATGPT:SERVER_QUICK`, - otp, - { EX: 60000 } - ) - const master = (await getMasterQQ())[0] - if (Array.isArray(Bot.uin)) { - Bot.pickFriend(master).sendMsg(`收到工具箱快捷登录请求,1分钟内有效:${otp}`) - } else { - Bot.sendPrivateMsg(master, `收到工具箱快捷登录请求,1分钟内有效:${otp}`, false) - } - reply.send({ state: true }) - return reply + return reply + }) + // 获取用户数据 + fastify.post('/userData', async (request, reply) => { + const token = request.cookies.token || request.body?.token || 'unknown' + let user = UserInfo(token) + if (!user) user = { user: '' } + const userData = await getUserData(user.user) + reply.send({ + chat: userData.chat || [], + mode: userData.mode || '', + cast: userData.cast || { + api: '', // API设定 + bing: '', // 必应设定 + bing_resource: '', // 必应扩展资料 + slack: '' // Slack设定 + } }) - // 检查用户是否存在 - fastify.post('/verify', async (request, reply) => { - const token = request.cookies.token || request.body?.token || 'unknown' - const user = UserInfo(token) - if (!user || token === 'unknown') { - reply.send({ - verify: false, - }) + return reply + }) + // 删除用户 + fastify.post('/deleteUser', async (request, reply) => { + const token = request.cookies.token || request.body?.token || 'unknown' + const user = UserInfo(token) + if (!user || user === 'unknown') { + reply.send({ state: false, error: '无效token' }) + return + } + const filepath = `resources/ChatGPTCache/user/${user.user}.json` + fs.unlinkSync(filepath) + reply.send({ state: true }) + return reply + }) + // 修改密码 + fastify.post('/changePassword', async (request, reply) => { + const token = request.cookies.token || request.body?.token || 'unknown' + const user = UserInfo(token) + if (!user || user === 'unknown') { + reply.send({ state: false, error: '无效的用户信息' }) + return + } + const userData = await getUserData(user.user) + const body = request.body || {} + if (!body.newPasswd) { + reply.send({ state: false, error: '无效参数' }) + return + } + if (body.passwd && body.passwd != userData.passwd) { + reply.send({ state: false, error: '原始密码错误' }) + return + } + if (user.autho === 'admin') { + await redis.set('CHATGPT:ADMIN_PASSWD', body.newPasswd) + } else if (user.autho === 'user') { + const dir = 'resources/ChatGPTCache/user' + const filename = `${user.user}.json` + const filepath = path.join(dir, filename) + fs.mkdirSync(dir, { recursive: true }) + if (fs.existsSync(filepath)) { + fs.readFile(filepath, 'utf8', (err, data) => { + if (err) { + console.error(err) return - } - reply.send({ - verify: true, - user: user.user, - autho: user.autho, - version: 10016, - }) - return reply - }) - // 获取用户数据 - fastify.post('/userData', async (request, reply) => { - const token = request.cookies.token || request.body?.token || 'unknown' - let user = UserInfo(token) - if (!user) user = { user: '' } - const userData = await getUserData(user.user) - reply.send({ - chat: userData.chat || [], - mode: userData.mode || '', - cast: userData.cast || { - api: '', //API设定 - bing: '', //必应设定 - bing_resource: '', //必应扩展资料 - slack: '', //Slack设定 + } + const config = JSON.parse(data) + config.passwd = body.newPasswd + fs.writeFile(filepath, JSON.stringify(config), 'utf8', (err) => { + if (err) { + console.error(err) } + }) }) - return reply - }) - // 删除用户 - fastify.post('/deleteUser', async (request, reply) => { - const token = request.cookies.token || request.body?.token || 'unknown' - const user = UserInfo(token) - if (!user || user === 'unknown') { - reply.send({ state: false, error: '无效token' }) - return - } - const filepath = `resources/ChatGPTCache/user/${user.user}.json` - fs.unlinkSync(filepath) - reply.send({ state: true }) - return reply - }) - // 修改密码 - fastify.post('/changePassword', async (request, reply) => { - const token = request.cookies.token || request.body?.token || 'unknown' - const user = UserInfo(token) - if (!user || user === 'unknown') { - reply.send({ state: false, error: '无效的用户信息' }) - return - } - const userData = await getUserData(user.user) - const body = request.body || {} - if (!body.newPasswd) { - reply.send({ state: false, error: '无效参数' }) - return - } - if (body.passwd && body.passwd != userData.passwd) { - reply.send({ state: false, error: '原始密码错误' }) - return - } - if (user.autho === 'admin') { - await redis.set('CHATGPT:ADMIN_PASSWD', body.newPasswd) - } else if (user.autho === 'user') { - const dir = 'resources/ChatGPTCache/user' - const filename = `${user.user}.json` - const filepath = path.join(dir, filename) - fs.mkdirSync(dir, { recursive: true }) - if (fs.existsSync(filepath)) { - fs.readFile(filepath, 'utf8', (err, data) => { - if (err) { - console.error(err) - return - } - const config = JSON.parse(data) - config.passwd = body.newPasswd - fs.writeFile(filepath, JSON.stringify(config), 'utf8', (err) => { - if (err) { - console.error(err) - } - }) - }) - } else { - reply.send({ state: false, error: '错误的用户数据' }) - return - } - } - reply.send({ state: true }) - return reply - }) + } else { + reply.send({ state: false, error: '错误的用户数据' }) + return + } + } + reply.send({ state: true }) + return reply + }) } -export default User \ No newline at end of file +export default User diff --git a/utils/bot.js b/utils/bot.js new file mode 100644 index 00000000..6662a7da --- /dev/null +++ b/utils/bot.js @@ -0,0 +1,15 @@ +export function getBots () { + if (Bot.uin === 88888) { + // 找适配器 + let adapters = Bot.adapter + return adapters?.map(uin => Bot[uin]) + } else if (Bot.adapter && Bot.adapter.length > 0) { + let bots = [Bot] + Bot.adapter.forEach(uin => { + bots.push(Bot[uin]) + }) + return bots + } else { + return [Bot] + } +} diff --git a/utils/chat.js b/utils/chat.js index 31102ddf..e249d0ff 100644 --- a/utils/chat.js +++ b/utils/chat.js @@ -1,33 +1,34 @@ export async function getChatHistoryGroup (e, num) { - if (e.adapter === 'shamrock') { - return await e.group.getChatHistory(0, num, false) - } else { - let latestChats = await e.group.getChatHistory(0, 1) - if (latestChats.length > 0) { - let latestChat = latestChats[0] - if (latestChat) { - let seq = latestChat.seq - let chats = [] - while (chats.length < num) { - let chatHistory = await e.group.getChatHistory(seq, 20) - chats.push(...chatHistory) - } - chats = chats.slice(0, num) - try { - let mm = await e.group.getMemberMap() - chats.forEach(chat => { - let sender = mm.get(chat.sender.user_id) - if (sender) { - chat.sender = sender - } - }) - } catch (err) { - logger.warn(err) - } - // console.log(chats) - return chats + // if (e.adapter === 'shamrock') { + // return await e.group.getChatHistory(0, num, false) + // } else { + let latestChats = await e.group.getChatHistory(0, 1) + if (latestChats.length > 0) { + let latestChat = latestChats[0] + if (latestChat) { + let seq = latestChat.seq || latestChat.message_id + let chats = [] + while (chats.length < num) { + let chatHistory = await e.group.getChatHistory(seq, 20) + chats.push(...chatHistory) + seq = chatHistory[0].seq || chatHistory[0].message_id } + chats = chats.slice(0, num) + try { + let mm = await e.group.getMemberMap() + chats.forEach(chat => { + let sender = mm.get(chat.sender.user_id) + if (sender) { + chat.sender = sender + } + }) + } catch (err) { + logger.warn(err) + } + // console.log(chats) + return chats } } + // } return [] } diff --git a/utils/claude.ai/index.js b/utils/claude.ai/index.js index e208731e..ba12726f 100644 --- a/utils/claude.ai/index.js +++ b/utils/claude.ai/index.js @@ -136,7 +136,7 @@ export class ClaudeAIClient { attachments, completion: { incremental: true, - model: 'claude-2', + model: 'claude-2.1', prompt: text, timezone: 'Asia/Hong_Kong' } diff --git a/utils/common.js b/utils/common.js index 5f455720..f9b2de94 100644 --- a/utils/common.js +++ b/utils/common.js @@ -820,6 +820,7 @@ export async function getImageOcrText (e) { // logger.warn('resultArr', resultArr) return resultArr } catch (err) { + logger.warn('OCR失败,可能使用的适配器不支持OCR') return false // logger.error(err) } @@ -847,6 +848,7 @@ export function getMaxModelTokens (model = 'gpt-3.5-turbo') { } export function getUin (e) { + if (e?.self_id) return e.self_id if (e?.bot?.uin) return e.bot.uin if (Array.isArray(Bot.uin)) { if (Config.trssBotUin && Bot.uin.indexOf(Config.trssBotUin) > -1) { return Config.trssBotUin } else { @@ -1051,6 +1053,7 @@ export function isPureText (filename) { /** * 从文件中提取文本内容 * @param fileMsgElem MessageElem + * @param e * @returns {Promise<{}>} 提取的文本内容和文件名 */ export async function extractContentFromFile (fileMsgElem, e) { diff --git a/utils/config.js b/utils/config.js index 308338d3..9b145e67 100644 --- a/utils/config.js +++ b/utils/config.js @@ -144,7 +144,7 @@ const defaultConfig = { serpSource: 'ikechan8370', extraUrl: 'https://cpe.ikechan8370.com', smartMode: false, - bingCaptchaOneShotUrl: 'http://bingcaptcha.ikechan8370.com/bing', + bingCaptchaOneShotUrl: '', // claude2 claudeAIOrganizationId: '', claudeAISessionKey: '', diff --git a/utils/xinghuo/xinghuo.js b/utils/xinghuo/xinghuo.js index 04aa7280..b090410f 100644 --- a/utils/xinghuo/xinghuo.js +++ b/utils/xinghuo/xinghuo.js @@ -3,6 +3,7 @@ import { Config } from '../config.js' import { createParser } from 'eventsource-parser' import https from 'https' import WebSocket from 'ws' +import { createHmac } from 'crypto' const referer = atob('aHR0cHM6Ly94aW5naHVvLnhmeXVuLmNuL2NoYXQ/aWQ9') const origin = atob('aHR0cHM6Ly94aW5naHVvLnhmeXVuLmNu') @@ -14,13 +15,7 @@ try { } catch (err) { logger.warn('未安装form-data,无法使用星火模式') } -let crypto -try { - crypto = (await import('crypto')).default -} catch (err) { - logger.warn('未安装crypto,无法使用星火api模式') -} -async function getKeyv() { +async function getKeyv () { let Keyv try { Keyv = (await import('keyv')).default @@ -30,7 +25,7 @@ async function getKeyv() { return Keyv } export default class XinghuoClient { - constructor(opts) { + constructor (opts) { this.cache = opts.cache this.ssoSessionId = opts.ssoSessionId this.headers = { @@ -41,7 +36,7 @@ export default class XinghuoClient { } } - apiErrorInfo(code) { + apiErrorInfo (code) { switch (code) { case 10000: return '升级为ws出现错误' case 10001: return '通过ws读取用户的消息出错' @@ -74,7 +69,7 @@ export default class XinghuoClient { } } - async initCache() { + async initCache () { if (!this.conversationsCache) { const cacheOptions = this.cache || {} cacheOptions.namespace = cacheOptions.namespace || 'xh' @@ -83,38 +78,37 @@ export default class XinghuoClient { } } - async getWsUrl() { - if (!crypto) return false + async getWsUrl () { const APISecret = Config.xhAPISecret const APIKey = Config.xhAPIKey let APILink = '/v1.1/chat' - if (Config.xhmode == 'apiv2') { + if (Config.xhmode === 'apiv2') { APILink = '/v2.1/chat' - } else if (Config.xhmode == 'apiv3') { + } else if (Config.xhmode === 'apiv3') { APILink = '/v3.1/chat' } const date = new Date().toGMTString() const algorithm = 'hmac-sha256' const headers = 'host date request-line' const signatureOrigin = `host: spark-api.xf-yun.com\ndate: ${date}\nGET ${APILink} HTTP/1.1` - const hmac = crypto.createHmac('sha256', APISecret) + const hmac = createHmac('sha256', APISecret) hmac.update(signatureOrigin) const signature = hmac.digest('base64') const authorizationOrigin = `api_key="${APIKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"` const authorization = Buffer.from(authorizationOrigin).toString('base64') const v = { - authorization: authorization, - date: date, - host: "spark-api.xf-yun.com" + authorization, + date, + host: 'spark-api.xf-yun.com' } const url = `wss://spark-api.xf-yun.com${APILink}?${Object.keys(v).map(key => `${key}=${v[key]}`).join('&')}` return url } - async uploadImage(url) { + async uploadImage (url) { // 获取图片 let response = await fetch(url, { - method: 'GET', + method: 'GET' }) const blob = await response.blob() const arrayBuffer = await blob.arrayBuffer() @@ -125,7 +119,7 @@ export default class XinghuoClient { const respOss = await fetch('https://xinghuo.xfyun.cn/iflygpt/oss/sign', { method: 'POST', headers: { - Cookie: 'ssoSessionId=' + this.ssoSessionId + ';', + Cookie: 'ssoSessionId=' + this.ssoSessionId + ';' }, body: formData }) @@ -167,7 +161,7 @@ export default class XinghuoClient { } } - async apiMessage(prompt, chatId, ePrompt = []) { + async apiMessage (prompt, chatId, ePrompt = []) { if (!chatId) chatId = (Math.floor(Math.random() * 1000000) + 100000).toString() // 初始化缓存 @@ -180,12 +174,9 @@ export default class XinghuoClient { // 获取ws链接 const wsUrl = Config.xhmode == 'assistants' ? Config.xhAssistants : await this.getWsUrl() - if (!wsUrl) throw new Error('缺少依赖:crypto。请安装依赖后重试') + if (!wsUrl) throw new Error('获取ws链接失败') let domain = 'general' - if (Config.xhmode == 'apiv2') - domain = "generalv2" - else if (Config.xhmode == 'apiv3') - domain = "generalv3" + if (Config.xhmode == 'apiv2') { domain = 'generalv2' } else if (Config.xhmode == 'apiv3') { domain = 'generalv3' } // 编写消息内容 const wsSendData = { header: { @@ -194,7 +185,7 @@ export default class XinghuoClient { }, parameter: { chat: { - domain: domain, + domain, temperature: Config.xhTemperature, // 核采样阈值 max_tokens: Config.xhMaxTokens, // tokens最大长度 chat_id: chatId, @@ -203,10 +194,10 @@ export default class XinghuoClient { }, payload: { message: { - "text": [ + text: [ ...ePrompt, ...conversation.messages, - { "role": "user", "content": prompt } + { role: 'user', content: prompt } ] } } @@ -229,8 +220,8 @@ export default class XinghuoClient { const half = Math.floor(conversation.messages.length / 2) conversation.messages.splice(0, half) await this.conversationsCache.set(conversationKey, conversation) - resolve({ - id: (Math.floor(Math.random() * 1000000) + 100000).toString() , + resolve({ + id: (Math.floor(Math.random() * 1000000) + 100000).toString(), response: '对话以达到上限,已自动清理对话,请重试' }) } else { @@ -256,8 +247,8 @@ export default class XinghuoClient { conversation.messages.splice(0, half) } await this.conversationsCache.set(conversationKey, conversation) - resolve({ - id: chatId , + resolve({ + id: chatId, response: resMessage }) } @@ -271,7 +262,7 @@ export default class XinghuoClient { }) } - async webMessage(prompt, chatId, botId) { + async webMessage (prompt, chatId, botId) { if (!FormData) { throw new Error('缺少依赖:form-data。请安装依赖后重试') } @@ -281,7 +272,7 @@ export default class XinghuoClient { formData.append('clientType', '2') formData.append('chatId', chatId) if (prompt.image) { - prompt.text = prompt.text.replace("[图片]", "") // 清理消息中中首个被使用的图片 + prompt.text = prompt.text.replace('[图片]', '') // 清理消息中中首个被使用的图片 const imgdata = await this.uploadImage(prompt.image) if (imgdata) { formData.append('fileUrl', imgdata.url) @@ -313,7 +304,7 @@ export default class XinghuoClient { logger.error('星火statusCode:' + statusCode) } let response = '' - function onMessage(data) { + function onMessage (data) { // console.log(data) if (data === '') { return resolve({ @@ -380,7 +371,7 @@ export default class XinghuoClient { }) } - async sendMessage(prompt, option) { + async sendMessage (prompt, option) { let chatId = option?.chatId let image = option?.image @@ -396,9 +387,9 @@ export default class XinghuoClient { logger.warn('星火设定序列化失败,本次对话不附带设定') } } else { - Prompt = Config.xhPrompt ? [{ "role": "user", "content": Config.xhPrompt }] : [] + Prompt = Config.xhPrompt ? [{ role: 'user', content: Config.xhPrompt }] : [] } - if(Config.xhPromptEval) { + if (Config.xhPromptEval) { Prompt.forEach(obj => { try { obj.content = obj.content.replace(/{{(.*?)}}/g, (match, variable) => { @@ -427,7 +418,7 @@ export default class XinghuoClient { if (!chatId) { chatId = (await this.createChatList()).chatListId } - let { response } = await this.webMessage({ text: prompt, image: image }, chatId, botId) + let { response } = await this.webMessage({ text: prompt, image }, chatId, botId) // logger.info(response) // let responseText = atob(response) // 处理图片 @@ -451,14 +442,14 @@ export default class XinghuoClient { return { conversationId: chatId, text: response, - images: images + images } } else { throw new Error('星火模式错误') } } - async createChatList(bot = false) { + async createChatList (bot = false) { let createChatListRes = await fetch(createChatUrl, { method: 'POST', headers: Object.assign(this.headers, { @@ -487,6 +478,6 @@ export default class XinghuoClient { } } -function atob(s) { +function atob (s) { return Buffer.from(s, 'base64').toString() } diff --git a/yarn.lock b/yarn.lock index 0391f81e..431261da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -482,7 +482,7 @@ resolved "https://registry.npmmirror.com/@lukeed/ms/-/ms-2.0.1.tgz" integrity sha512-Xs/4RZltsAL7pkvaNStUQt7netTkyxrS0K+RILcVr3TRMS/ToOg4I6uNfhB9SlGsnWBym4U+EaXq0f0cEMNkHA== -"@mapbox/node-pre-gyp@^1.0.9": +"@mapbox/node-pre-gyp@^1.0.0", "@mapbox/node-pre-gyp@^1.0.9": version "1.0.10" resolved "https://registry.npmmirror.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz" integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA== @@ -521,6 +521,32 @@ "@node-rs/jieba-win32-ia32-msvc" "1.7.0" "@node-rs/jieba-win32-x64-msvc" "1.7.0" +"@postman/form-data@~3.1.1": + version "3.1.1" + resolved "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz" + integrity sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +"@postman/tough-cookie@~4.1.3-postman.1": + version "4.1.3-postman.1" + resolved "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz" + integrity sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +"@postman/tunnel-agent@^0.6.3": + version "0.6.3" + resolved "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz" + integrity sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg== + dependencies: + safe-buffer "^5.0.1" + "@slack/bolt@^3.13.2": version "3.13.2" resolved "https://registry.npmjs.org/@slack/bolt/-/bolt-3.13.2.tgz" @@ -814,6 +840,11 @@ resolved "https://registry.npmmirror.com/@waylaidwanderer/fetch-event-source/-/fetch-event-source-3.0.1.tgz" integrity sha512-gkc7vmBW9uulRj7tY30/1D8iBrpcgphBpI+e7LP744x/hAzaQxUuyF+n4O5dctKx+dE3i4BFuCWMEz9fAx2jlQ== +"@xmldom/xmldom@^0.8.6": + version "0.8.10" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + abbrev@1: version "1.1.1" resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz" @@ -849,6 +880,11 @@ acorn@^8.4.1: resolved "https://registry.npmmirror.com/acorn/-/acorn-8.9.0.tgz" integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + agent-base@^6.0.1, agent-base@6: version "6.0.2" resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz" @@ -875,6 +911,16 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.12.0: version "8.12.0" resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz" @@ -968,6 +1014,13 @@ arg@^4.1.0: resolved "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +argparse@~1.0.3: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + arr-union@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz" @@ -1007,6 +1060,25 @@ asn1.js@^5.0.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@^1.0.0, assert-plus@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz" @@ -1039,6 +1111,16 @@ avvio@^8.2.1: debug "^4.0.0" fastq "^1.6.1" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.12.0: + version "1.12.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + axios@^0.26.0: version "0.26.1" resolved "https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz" @@ -1064,11 +1146,18 @@ balanced-match@^1.0.0: resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.1.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + bent@^7.3.12: version "7.3.12" resolved "https://registry.npmmirror.com/bent/-/bent-7.3.12.tgz" @@ -1105,6 +1194,16 @@ bl@^5.0.0: inherits "^2.0.4" readable-stream "^3.4.0" +bluebird@^2.6.2: + version "2.11.0" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz" + integrity sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ== + +bluebird@~3.4.0: + version "3.4.7" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" + integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== + bmp-js@^0.1.0: version "0.1.0" resolved "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz" @@ -1162,6 +1261,13 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +brotli@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz" + integrity sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg== + dependencies: + base64-js "^1.1.2" + buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" @@ -1231,11 +1337,28 @@ camelcase@^7.0.1: resolved "https://registry.npmmirror.com/camelcase/-/camelcase-7.0.1.tgz" integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== +canvas@^2.11.2: + version "2.11.2" + resolved "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz" + integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + nan "^2.17.0" + simple-get "^3.0.3" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +cfb@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz" + integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA== + dependencies: + adler-32 "~1.3.0" + crc-32 "~1.2.0" + chalk@^2.0.0: version "2.4.2" resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" @@ -1342,6 +1465,11 @@ clone@^1.0.2: resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +codepage@~1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz" + integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz" @@ -1387,7 +1515,7 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -combined-stream@^1.0.6, combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -1440,6 +1568,16 @@ cookie@^0.5.0, cookie@0.5.0: resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +core-util-is@~1.0.0, core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz" @@ -1467,6 +1605,13 @@ cycletls@^1.0.21: "@types/node" "^17.0.24" ws "^7.5.7" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + data-uri-to-buffer@^4.0.0: version "4.0.1" resolved "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz" @@ -1507,6 +1652,13 @@ debug@2.6.9: dependencies: ms "2.0.0" +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz" @@ -1579,6 +1731,11 @@ diff@^5.1.0: resolved "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== +dingbat-to-unicode@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz" + integrity sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w== + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz" @@ -1596,11 +1753,26 @@ dotenv@^16.0.3: resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.3.0.tgz" integrity sha512-tHB+hmf8MRCkT3VVivGiG8kq9HiGTmQ3FzOKgztfpJQH1IWuZTOvKSJmHNnQPowecAmkCJhLrxdPhOr06LLqIQ== +duck@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz" + integrity sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg== + dependencies: + underscore "^1.13.1" + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" @@ -1849,6 +2021,11 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz" @@ -1858,6 +2035,11 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +extsprintf@^1.2.0, extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + fast-content-type-parse@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz" @@ -1878,6 +2060,11 @@ fast-fifo@^1.0.0, fast-fifo@^1.1.0, fast-fifo@^1.2.0: resolved "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.2.0.tgz" integrity sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg== +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + fast-json-stringify@^5.7.0: version "5.7.0" resolved "https://registry.npmmirror.com/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz" @@ -2037,6 +2224,11 @@ for-own@^0.1.3: dependencies: for-in "^1.0.1" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + form-data@^2.5.0: version "2.5.1" resolved "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz" @@ -2067,6 +2259,11 @@ forwarded@0.2.0: resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + fresh@0.5.2: version "0.5.2" resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz" @@ -2170,6 +2367,13 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + gifwrap@^0.9.2: version "0.9.4" resolved "https://registry.npmmirror.com/gifwrap/-/gifwrap-0.9.4.tgz" @@ -2233,6 +2437,19 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz" @@ -2311,6 +2528,15 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-signature@~1.3.1: + version "1.3.6" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz" + integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== + dependencies: + assert-plus "^1.0.0" + jsprim "^2.0.2" + sshpk "^1.14.1" + https-proxy-agent@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" @@ -2359,6 +2585,16 @@ image-q@^4.0.0: dependencies: "@types/node" "16.9.1" +image-size@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz" @@ -2367,7 +2603,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@2, inherits@2.0.4: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2603,6 +2839,11 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" @@ -2632,6 +2873,11 @@ isarray@^2.0.5: resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz" @@ -2650,6 +2896,11 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + it-pushable@^1.4.2: version "1.4.2" resolved "https://registry.npmmirror.com/it-pushable/-/it-pushable-1.4.2.tgz" @@ -2709,6 +2960,11 @@ js-tokens@^4.0.0: resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz" @@ -2719,6 +2975,11 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + json-schema-traverse@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" @@ -2729,6 +2990,16 @@ json-schema-typed@^8.0.1: resolved "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz" integrity sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg== +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +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" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz" @@ -2755,6 +3026,26 @@ jsonwebtoken@^9.0.0: ms "^2.1.1" semver "^7.3.8" +jsprim@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz" + integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +jszip@^3.1.5, jszip@^3.7.1: + version "3.10.1" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + jwa@^1.4.1: version "1.4.1" resolved "https://registry.npmmirror.com/jwa/-/jwa-1.4.1.tgz" @@ -2812,6 +3103,13 @@ lazy-cache@^1.0.3: resolved "https://registry.npmmirror.com/lazy-cache/-/lazy-cache-1.0.4.tgz" integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + light-my-request@^5.9.1: version "5.10.0" resolved "https://registry.npmmirror.com/light-my-request/-/light-my-request-5.10.0.tgz" @@ -2852,7 +3150,7 @@ lodash.isstring@^4.0.1: resolved "https://registry.npmmirror.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== -lodash@^4.17.21: +lodash@^4.17.14, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2873,6 +3171,15 @@ log-symbols@^5.1.0: chalk "^5.0.0" is-unicode-supported "^1.1.0" +lop@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/lop/-/lop-0.4.1.tgz" + integrity sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ== + dependencies: + duck "^0.1.12" + option "~0.2.1" + underscore "^1.13.1" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz" @@ -2892,6 +3199,22 @@ make-error@^1.1.1: resolved "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +mammoth@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mammoth/-/mammoth-1.6.0.tgz" + integrity sha512-jOwbj6BwJzxCf6jr2l1zmSemniIkLnchvELXnDJCANlJawhzyIKObIq48B8kWEPLgUUh57k7FtEO3DHFQMnjMg== + dependencies: + "@xmldom/xmldom" "^0.8.6" + argparse "~1.0.3" + base64-js "^1.5.1" + bluebird "~3.4.0" + dingbat-to-unicode "^1.0.1" + jszip "^3.7.1" + lop "^0.4.1" + path-is-absolute "^1.0.0" + underscore "^1.13.1" + xmlbuilder "^10.0.0" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz" @@ -2937,7 +3260,7 @@ mime-db@1.52.0: resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -2969,6 +3292,11 @@ mimic-fn@^4.0.0: resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + mimic-response@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz" @@ -3080,7 +3408,7 @@ mute-stream@1.0.0: resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-1.0.0.tgz" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== -nan@^2.15.0: +nan@^2.15.0, nan@^2.17.0: version "2.17.0" resolved "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== @@ -3143,6 +3471,21 @@ node-silk@^0.1.0: "@mapbox/node-pre-gyp" "^1.0.9" nan "^2.15.0" +nodejs-pptx@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/nodejs-pptx/-/nodejs-pptx-1.2.4.tgz" + integrity sha512-qoDCsizXiIq2Slzi8cwN2M6P1iSuKAprF/vUWAVI6ZElAWKtebcqb6HAbFPy/7z1bLpGk+JtkvzP3uqdbWDizg== + dependencies: + async "^2.6.4" + image-size "^0.6.2" + jszip "^3.1.5" + postman-request "^2.88.1-postman.33" + uuid "^8.3.0" + xml-js "^1.5.2" + xml2js "^0.4.19" + xmlbuilder "~09.0.1" + yarn "^1.22.10" + nopt@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz" @@ -3177,6 +3520,11 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz" @@ -3246,6 +3594,11 @@ openai@^3.2.1: axios "^0.26.0" form-data "^4.0.0" +option@~0.2.1: + version "0.2.4" + resolved "https://registry.npmjs.org/option/-/option-0.2.4.tgz" + integrity sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A== + ora@^5.4.1: version "5.4.1" resolved "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz" @@ -3358,7 +3711,7 @@ p-timeout@^6.1.1, p-timeout@^6.1.2: resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz" integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== -pako@^1.0.11: +pako@^1.0.11, pako@~1.0.2: version "1.0.11" resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -3426,11 +3779,29 @@ path-to-regexp@0.1.7: resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path2d-polyfill@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz" + integrity sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA== + +pdfjs-dist@^3.11.174: + version "3.11.174" + resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz" + integrity sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA== + optionalDependencies: + canvas "^2.11.2" + path2d-polyfill "^2.0.1" + peek-readable@^4.1.0: version "4.1.0" resolved "https://registry.npmmirror.com/peek-readable/-/peek-readable-4.1.0.tgz" integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + phin@^2.9.1: version "2.9.3" resolved "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz" @@ -3495,6 +3866,34 @@ pngjs@^6.0.0: resolved "https://registry.npmmirror.com/pngjs/-/pngjs-6.0.0.tgz" integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== +postman-request@^2.88.1-postman.33: + version "2.88.1-postman.33" + resolved "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz" + integrity sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA== + dependencies: + "@postman/form-data" "~3.1.1" + "@postman/tough-cookie" "~4.1.3-postman.1" + "@postman/tunnel-agent" "^0.6.3" + aws-sign2 "~0.7.0" + aws4 "^1.12.0" + brotli "^1.3.3" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + har-validator "~5.1.3" + http-signature "~1.3.1" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "^2.1.35" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.3" + safe-buffer "^5.1.2" + stream-length "^1.0.2" + uuid "^8.3.2" + prebuild-install@^7.1.1: version "7.1.1" resolved "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.1.tgz" @@ -3513,6 +3912,11 @@ prebuild-install@^7.1.1: tar-fs "^2.0.0" tunnel-agent "^0.6.0" +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + process-warning@^2.0.0, process-warning@^2.2.0: version "2.2.0" resolved "https://registry.npmmirror.com/process-warning/-/process-warning-2.2.0.tgz" @@ -3543,6 +3947,11 @@ proxy-addr@^2.0.7, proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + pump@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz" @@ -3551,7 +3960,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== @@ -3612,6 +4021,11 @@ puppeteer-extra@*, puppeteer-extra@^3.3.6: debug "^4.1.1" deepmerge "^4.2.2" +qs@~6.5.3: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + qs@6.11.0: version "6.11.0" resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz" @@ -3619,6 +4033,11 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-tick@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz" @@ -3723,6 +4142,19 @@ readable-stream@^4.0.0: events "^3.3.0" process "^0.11.10" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-web-to-node-stream@^3.0.0: version "3.0.2" resolved "https://registry.npmmirror.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz" @@ -3754,6 +4186,11 @@ require-from-string@^2.0.2: resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz" @@ -3814,11 +4251,16 @@ rxjs@^7.5.6, rxjs@^7.8.1: dependencies: tslib "^2.1.0" -safe-buffer@^5.0.1, safe-buffer@~5.2.0, safe-buffer@5.2.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz" @@ -3840,12 +4282,12 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== -safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3": +safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@>=0.6.0: +sax@^1.2.4, sax@>=0.6.0: version "1.2.4" resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -3916,6 +4358,11 @@ set-cookie-parser@^2.4.1: resolved "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz" integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz" @@ -3976,6 +4423,15 @@ simple-concat@^1.0.0: resolved "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== +simple-get@^3.0.3: + version "3.1.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz" + integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-get@^4.0.0, simple-get@^4.0.1: version "4.0.1" resolved "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz" @@ -4030,6 +4486,33 @@ split2@^4.0.0: resolved "https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssf@~0.11.2: + version "0.11.2" + resolved "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz" + integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g== + dependencies: + frac "~1.1.2" + +sshpk@^1.14.1: + version "1.18.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + statuses@2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz" @@ -4049,6 +4532,13 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +stream-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz" + integrity sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg== + dependencies: + bluebird "^2.6.2" + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/streamsearch/-/streamsearch-1.1.0.tgz" @@ -4069,6 +4559,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + "string-width@^1.0.2 || 2 || 3 || 4": version "4.2.3" resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz" @@ -4335,6 +4832,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz" @@ -4382,6 +4884,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +underscore@^1.13.1: + version "1.13.6" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + undici@^5.0.0, undici@^5.20.0, undici@^5.21.0, undici@^5.22.1: version "5.22.1" resolved "https://registry.npmmirror.com/undici/-/undici-5.22.1.tgz" @@ -4394,6 +4901,11 @@ universalify@^0.1.0: resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz" @@ -4411,6 +4923,14 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + utif2@^4.0.1: version "4.1.0" resolved "https://registry.npmmirror.com/utif2/-/utif2-4.1.0.tgz" @@ -4418,7 +4938,7 @@ utif2@^4.0.1: dependencies: pako "^1.0.11" -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -4428,6 +4948,16 @@ utils-merge@1.0.1: resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + uuid@^9.0.0: version "9.0.0" resolved "https://registry.npmmirror.com/uuid/-/uuid-9.0.0.tgz" @@ -4451,6 +4981,15 @@ vary@~1.1.2: resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz" @@ -4530,6 +5069,16 @@ widest-line@^4.0.1: dependencies: string-width "^5.0.1" +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/word/-/word-0.3.0.tgz" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + wrap-ansi@^6.0.1: version "6.2.0" resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -4583,12 +5132,32 @@ xhr@^2.0.1: parse-headers "^2.0.0" xtend "^4.0.0" +xlsx@^0.18.5: + version "0.18.5" + resolved "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz" + integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ== + dependencies: + adler-32 "~1.3.0" + cfb "~1.2.1" + codepage "~1.15.0" + crc-32 "~1.2.1" + ssf "~0.11.2" + wmf "~1.0.1" + word "~0.3.0" + +xml-js@^1.5.2: + version "1.6.11" + resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + xml-parse-from-string@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz" integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== -xml2js@^0.4.5: +xml2js@^0.4.19, xml2js@^0.4.5: version "0.4.23" resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz" integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== @@ -4596,6 +5165,16 @@ xml2js@^0.4.5: sax ">=0.6.0" xmlbuilder "~11.0.0" +xmlbuilder@^10.0.0: + version "10.1.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz" + integrity sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg== + +xmlbuilder@~09.0.1: + version "9.0.7" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz" + integrity sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ== + xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz" @@ -4611,6 +5190,11 @@ yallist@^4.0.0: resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yarn@^1.22.10: + version "1.22.19" + resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + yn@3.1.1: version "3.1.1" resolved "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz"