├── .gitignore ├── README.md ├── fanli-bot ├── README.md ├── package.json ├── src │ └── app.ts ├── tsconfig.json └── yarn.lock ├── fanli-bot_ember ├── README.md ├── package-lock.json ├── package.json ├── src │ └── app.ts ├── tsconfig.json └── yarn.lock ├── scriptable └── medal-list-of-winter-olympics-games │ ├── README.md │ ├── medal_list_of_WOG_v1.js │ ├── medal_list_of_WOG_v2.js │ └── screenshot.jpg └── weather-bot ├── README.md ├── package.json ├── src └── app.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Learning-together 2 | 这个仓库用来存放在YouTube频道直播时产生的一些代码,旨在和大家一起学习、交流编写代码。 3 | 4 | ## 部署环境 5 | 6 | 因为是学习使用`Node.js`来编写代码,所以需要先做一些准备工作。 7 | 8 | ### 编辑器的选择 9 | 10 | 写代码的工具其实有很多,有的大佬可以直接`记事本`或者`notepad++`直接生撸,也有如我这样的小白需要各种辅助工具的。以前用过`WebStrom`,感觉功能是很强大,但是需要收费,虽然网上可以找到各种破解的方法,不过还是希望能够支持正版。而且因为我个人的习惯,经常给电脑重做系统,所以一个相对轻量化的编辑器会更加适合我,这里我推荐使用微软推出的`Visual Studio Code`。首先它是一款免费的编辑器,而且相对于`WebStorm`这类型的IDE会更加的轻量。 11 | 12 | `vscode`的安装非常简单,直接到[Visual Studio Code官网](https://code.visualstudio.com)下载对应系统的安装包版本安装即可。 13 | 14 | ### Node.js的安装 15 | 16 | `Node.js`的安装方式很多,这边根据我自己的习惯,我介绍2种方式。 17 | 18 | - 本机安装 19 | 20 | 直接打开[Node.js官网](https://nodejs.org),选择长期支持的稳定版下载安装即可。 21 | 22 | 以前在 v14 版的时候,这样安装完就没有权限方面的问题了,但是到了 v16 版本之后,这样安装完直接通过包管理器全局安装第三方的包的时候,会出现权限问题的报错。`Node.js`官方给出了两种解决方案,因为个人没有多Node版本切换使用的需求,所以就没有选择 `nvm`(Node version manager)安装的方式来解决。 23 | 24 | 1. 重新安装 `nvm` 来解决权限问题。(官方推荐的方法) 25 | 26 | [Node Version Manager](https://github.com/nvm-sh/nvm)参考其文档安装即可. 27 | 28 | 2. 手动修改`npm`的默认路径。 29 | 30 | ```shell 31 | mkdir ~/.npm-global #在当前用户目录下新建全局安装目录 32 | npm config set prefix '~/.npm-global' #修改npm的设置使用新的目录进行全局安装 33 | touch ~/.profile #确认当前用户目录下有.profile文件 34 | export PATH=~/.npm-global/bin:$PATH #在当前用户目录下的.profile文件中增加配置 35 | source ~/.profile #让当前用户目录下的.profile文件立即生效 36 | ``` 37 | 到此就已经可以正常的使用`npm`进行全局的第三方包的安装了 38 | 39 | 40 | - Docker安装 41 | 42 | 如果你不喜欢在本地安装,想通过容器来构建`Node.js`的基础运行环境,那么可以通过这种方式来安装。 43 | 44 | 1. 在[Docker的官网](https://www.docker.com)下载[Docker Desktop](https://www.docker.com/products/docker-desktop)软件的安装包 45 | 2. 在本地安装好`Docker Desktop`,打开确保`Dcoker`的守护进程已经成功运行。 46 | 3. 打开 `vscode`,在 `vscode`的拓展中心找到 [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)套件包安装。 47 | 4. 重启vscode,在左下角找到绿色的按钮点击打开远程连接,选择`Open folder in container`,然后选择好本地准备映射到容器中的文件夹,下一步选择`Node.js`环境,再下一步选择所需的`Node.js`版本即可。 48 | 5. 等待容器构建好,在 `vscode`中打开终端输入 `node -v`,确保已经能够顺利的看到`Node.js`的版本号即可。 49 | 50 | 51 | ### 第三方包管理器的选择 52 | 53 | `Node.js`中的第三方包管理器我知道的有 `npm`、`yarn`、`cnpm` 54 | 55 | 具体使用哪一个管理器则是根据个人的习惯去选择即可。 56 | 57 | - npm [npm官网](https://www.npmjs.com) 58 | 59 | 常用命令 60 | 61 | `npm init` - 初始化一个项目 62 | 63 | `npm install packageName` - 安装第三方包 64 | 65 | `npm install packageName -g` - 全局安装第三方包 66 | 67 | `npm install packageName -d` - 安装一个开发依赖 68 | 69 | `npm uninstall packageName` - 删除一个第三方包 70 | 71 | - yarn [yarn官网](https://yarnpkg.com) 72 | 73 | 常用命令 74 | 75 | `yarn init` - 初始化一个项目 76 | 77 | `yarn add packageName` - 安装一个第三方包 78 | 79 | `yarn global add packageName` - 全局安装第三方包 80 | 81 | `yarn add packageName -D` - 安装一个开发以来 82 | 83 | `yarn remove packageName` - 删除一个第三方包 84 | 85 | - cnpm [cnpm官网](https://npmmirror.com) 86 | 87 | 这个是npm的中国镜像,因为本地网络没有遇到什么限制,所以没用过这个包管理工具。有需要的可以到官网了解一下。大致使用方式跟npm一致。 88 | 89 | ## 写点儿东西 90 | 91 | - [天气小助手](https://github.com/zooPanda/Learning-together/blob/dev/weather-bot/README.md) 92 | 93 | - [京东返利机器人](https://github.com/zooPanda/Learning-together/blob/dev/fanli-bot/README.md) -------------------------------------------------------------------------------- /fanli-bot/README.md: -------------------------------------------------------------------------------- 1 | # 京东返利机器人 2 | > 发送京东商品链接 将返回返利链接及预估佣金 3 | 4 | ### 准备 5 | 6 | 自行抓包获取京东账号的 `Cookie` 以及 `unionId` 7 | 8 | 找 [@BotFather](https://t.me/BotFather) 申请 `Bot Token` 9 | 10 | 将信息分别填写到 `src/app.ts` 的 `line:5-7` 11 | 12 | ### 运行 13 | 14 | ```shell 15 | npm i #安装依赖 16 | npm run start 17 | ``` 18 | -------------------------------------------------------------------------------- /fanli-bot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fanli-bot", 3 | "description": "京东返利机器人", 4 | "version": "1.0.0", 5 | "main": "dist/app.js", 6 | "license": "MIT", 7 | "dependencies": { 8 | "axios": "^0.25.0", 9 | "node-telegram-bot-api": "^0.56.0" 10 | }, 11 | "devDependencies": { 12 | "@types/axios": "^0.14.0", 13 | "@types/node": "^17.0.17", 14 | "@types/node-telegram-bot-api": "^0.56.0" 15 | }, 16 | "scripts": { 17 | "start": "tsc && node dist/app.js", 18 | "dev": "nodemon scr/app.ts" 19 | } 20 | } -------------------------------------------------------------------------------- /fanli-bot/src/app.ts: -------------------------------------------------------------------------------- 1 | import TelegramBot from "node-telegram-bot-api"; 2 | import axios from "axios"; 3 | import { URL } from "url"; 4 | 5 | const BOT_TOKEN = '';//你申请到的bot token 6 | const JD_COOKIE = '';//抓取你自己的京东cookie 7 | const UNION_ID = '';//抓取你自己的京东联盟ID 8 | 9 | const bot = new TelegramBot(BOT_TOKEN, { polling: true }) 10 | 11 | /** 12 | * 监听开始命令 13 | */ 14 | bot.onText(/\/start/, async msg => { 15 | try { 16 | await bot.sendMessage(msg.from.id, '京东转链,请回复【转链 你需要转链的商品地址】来获取返利信息') 17 | } catch (error) { 18 | console.log('/start', error); 19 | } 20 | }) 21 | /** 22 | * 监听转链请求 23 | */ 24 | bot.onText(/^转链 /, async msg => { 25 | const { text } = msg 26 | try { 27 | let link = text.split(" ")[1]//将链接从消息中提取出来 28 | if (link) {//判断是否存在链接 29 | if (link.includes("jd") || link.includes("jingxi")) {//判断链接是否来自于京东 30 | let linkInfo = await converUrl(link)//请求转链信息 31 | if (linkInfo && linkInfo.code === 200) {//如果转链接结果是否存在 32 | let replyMsg = linkInfo.data.formatContext + `预计佣金:¥${linkInfo.data.wlCommission}` 33 | if (linkInfo.data.imgList && linkInfo.data.imgList.length > 0) {//如果转链信息中包含图片 34 | await bot.sendPhoto(msg.chat.id, `http://img14.360buyimg.com/n1/${linkInfo.data.imgList[0]}`, 35 | { 36 | caption: replyMsg 37 | }) 38 | } else {//转链结果中不存在图片,直接发送文件 39 | await bot.sendMessage(msg.chat.id, replyMsg) 40 | } 41 | } else {//转链失败 42 | await bot.sendMessage(msg.chat.id, "转链失败") 43 | } 44 | } else {//链接不来自于京东 45 | await bot.sendMessage(msg.chat.id, "你发送来的链接好像不是京东的商品链接哟~") 46 | } 47 | } else {//没有检测到链接 48 | await bot.sendMessage(msg.chat.id, "没有接收到链接哟~") 49 | } 50 | } catch (error) {//捕获错误 51 | console.log("转链", error);//记录错误 52 | //尝试给用户回复消息安抚 53 | bot.sendMessage(msg.chat.id, "发生了无法预料的错误,请检查程序。").catch(err => { 54 | console.log(err); 55 | }) 56 | } 57 | }) 58 | 59 | async function converUrl(url: string) { 60 | // 实例化一个URL对象 61 | let reqLink = new URL('https://api.m.jd.com/api') 62 | // 预先准备好请求参数 63 | let payload = { 64 | functionId: 'ConvertSuperLink', 65 | appid: 'u', 66 | _: Date.now(), 67 | body: JSON.stringify({ 68 | funName: 'getSuperClickUrl', 69 | param: { 70 | materialInfo: url 71 | }, 72 | unionId: UNION_ID, 73 | }), 74 | loginType: 2 75 | } 76 | // 通过循环依次将请求参数添加到URL对象中 77 | for (const vo of Object.keys(payload)) { 78 | reqLink.searchParams.append(vo, payload[vo]) 79 | } 80 | // 发起请求 81 | const { data } = await axios.get(reqLink.href, { 82 | headers: { 83 | Cookie: JD_COOKIE 84 | } 85 | }) 86 | return data 87 | } -------------------------------------------------------------------------------- /fanli-bot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "resolveJsonModule": true, 6 | "esModuleInterop": true, 7 | "skipLibCheck": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "watch": false, 10 | "rootDir": "./src", 11 | "outDir": "./dist", 12 | "noImplicitAny": false, 13 | "declaration": true 14 | }, 15 | "include": [ 16 | "src/**/*" 17 | ] 18 | } -------------------------------------------------------------------------------- /fanli-bot/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/axios@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" 8 | integrity sha1-7CMA++fX3d1+udOr+HmZlkyvzkY= 9 | dependencies: 10 | axios "*" 11 | 12 | "@types/caseless@*": 13 | version "0.12.2" 14 | resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" 15 | integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== 16 | 17 | "@types/node-telegram-bot-api@^0.56.0": 18 | version "0.56.0" 19 | resolved "https://registry.yarnpkg.com/@types/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz#0484a0de6399b109598c7d79164b744cc750faf9" 20 | integrity sha512-RmJyBHCM3wItNP5cmovj3Imt2Cp94dMowFttBCsla0yPo5TR8jgplBhAU/UMsAhfT/ozUKXIQ+3PfEc/hH7LGg== 21 | dependencies: 22 | "@types/node" "*" 23 | "@types/request" "*" 24 | 25 | "@types/node@*", "@types/node@^17.0.17": 26 | version "17.0.17" 27 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" 28 | integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== 29 | 30 | "@types/request@*": 31 | version "2.48.8" 32 | resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" 33 | integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== 34 | dependencies: 35 | "@types/caseless" "*" 36 | "@types/node" "*" 37 | "@types/tough-cookie" "*" 38 | form-data "^2.5.0" 39 | 40 | "@types/tough-cookie@*": 41 | version "4.0.1" 42 | resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" 43 | integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== 44 | 45 | ajv@^6.12.3: 46 | version "6.12.6" 47 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 48 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 49 | dependencies: 50 | fast-deep-equal "^3.1.1" 51 | fast-json-stable-stringify "^2.0.0" 52 | json-schema-traverse "^0.4.1" 53 | uri-js "^4.2.2" 54 | 55 | array.prototype.findindex@^2.0.2: 56 | version "2.1.0" 57 | resolved "https://registry.yarnpkg.com/array.prototype.findindex/-/array.prototype.findindex-2.1.0.tgz#f43f8ed823274f0733647ee403b2c0c9771a97fe" 58 | integrity sha512-25kJHCjXltdtljjwcyKvCTywmbUAeTJVB2ADVe0oP4jcefsd+K9pJJ3IdHPahLICoszcCLoNF+evWpEduzBlng== 59 | dependencies: 60 | define-properties "^1.1.3" 61 | es-abstract "^1.17.4" 62 | 63 | asn1@~0.2.3: 64 | version "0.2.6" 65 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" 66 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== 67 | dependencies: 68 | safer-buffer "~2.1.0" 69 | 70 | assert-plus@1.0.0, assert-plus@^1.0.0: 71 | version "1.0.0" 72 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 73 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 74 | 75 | asynckit@^0.4.0: 76 | version "0.4.0" 77 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 78 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 79 | 80 | aws-sign2@~0.7.0: 81 | version "0.7.0" 82 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 83 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 84 | 85 | aws4@^1.8.0: 86 | version "1.11.0" 87 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 88 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 89 | 90 | axios@*, axios@^0.25.0: 91 | version "0.25.0" 92 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" 93 | integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== 94 | dependencies: 95 | follow-redirects "^1.14.7" 96 | 97 | bcrypt-pbkdf@^1.0.0: 98 | version "1.0.2" 99 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 100 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 101 | dependencies: 102 | tweetnacl "^0.14.3" 103 | 104 | bl@^1.2.3: 105 | version "1.2.3" 106 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" 107 | integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== 108 | dependencies: 109 | readable-stream "^2.3.5" 110 | safe-buffer "^5.1.1" 111 | 112 | bluebird@^3.5.0, bluebird@^3.5.1: 113 | version "3.7.2" 114 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 115 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 116 | 117 | call-bind@^1.0.0, call-bind@^1.0.2: 118 | version "1.0.2" 119 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 120 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 121 | dependencies: 122 | function-bind "^1.1.1" 123 | get-intrinsic "^1.0.2" 124 | 125 | caseless@~0.12.0: 126 | version "0.12.0" 127 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 128 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 129 | 130 | combined-stream@^1.0.6, combined-stream@~1.0.6: 131 | version "1.0.8" 132 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 133 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 134 | dependencies: 135 | delayed-stream "~1.0.0" 136 | 137 | core-util-is@1.0.2: 138 | version "1.0.2" 139 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 140 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 141 | 142 | core-util-is@~1.0.0: 143 | version "1.0.3" 144 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 145 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 146 | 147 | dashdash@^1.12.0: 148 | version "1.14.1" 149 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 150 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 151 | dependencies: 152 | assert-plus "^1.0.0" 153 | 154 | debug@^3.1.0: 155 | version "3.2.7" 156 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 157 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 158 | dependencies: 159 | ms "^2.1.1" 160 | 161 | define-properties@^1.1.3: 162 | version "1.1.3" 163 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 164 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 165 | dependencies: 166 | object-keys "^1.0.12" 167 | 168 | delayed-stream@~1.0.0: 169 | version "1.0.0" 170 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 171 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 172 | 173 | depd@^1.1.1: 174 | version "1.1.2" 175 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 176 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 177 | 178 | ecc-jsbn@~0.1.1: 179 | version "0.1.2" 180 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 181 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 182 | dependencies: 183 | jsbn "~0.1.0" 184 | safer-buffer "^2.1.0" 185 | 186 | end-of-stream@^1.1.0: 187 | version "1.4.4" 188 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 189 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 190 | dependencies: 191 | once "^1.4.0" 192 | 193 | es-abstract@^1.17.4: 194 | version "1.19.1" 195 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" 196 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 197 | dependencies: 198 | call-bind "^1.0.2" 199 | es-to-primitive "^1.2.1" 200 | function-bind "^1.1.1" 201 | get-intrinsic "^1.1.1" 202 | get-symbol-description "^1.0.0" 203 | has "^1.0.3" 204 | has-symbols "^1.0.2" 205 | internal-slot "^1.0.3" 206 | is-callable "^1.2.4" 207 | is-negative-zero "^2.0.1" 208 | is-regex "^1.1.4" 209 | is-shared-array-buffer "^1.0.1" 210 | is-string "^1.0.7" 211 | is-weakref "^1.0.1" 212 | object-inspect "^1.11.0" 213 | object-keys "^1.1.1" 214 | object.assign "^4.1.2" 215 | string.prototype.trimend "^1.0.4" 216 | string.prototype.trimstart "^1.0.4" 217 | unbox-primitive "^1.0.1" 218 | 219 | es-to-primitive@^1.2.1: 220 | version "1.2.1" 221 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 222 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 223 | dependencies: 224 | is-callable "^1.1.4" 225 | is-date-object "^1.0.1" 226 | is-symbol "^1.0.2" 227 | 228 | eventemitter3@^3.0.0: 229 | version "3.1.2" 230 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" 231 | integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== 232 | 233 | extend@~3.0.2: 234 | version "3.0.2" 235 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 236 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 237 | 238 | extsprintf@1.3.0: 239 | version "1.3.0" 240 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 241 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 242 | 243 | extsprintf@^1.2.0: 244 | version "1.4.1" 245 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" 246 | integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== 247 | 248 | fast-deep-equal@^3.1.1: 249 | version "3.1.3" 250 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 251 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 252 | 253 | fast-json-stable-stringify@^2.0.0: 254 | version "2.1.0" 255 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 256 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 257 | 258 | file-type@^3.9.0: 259 | version "3.9.0" 260 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 261 | integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= 262 | 263 | follow-redirects@^1.14.7: 264 | version "1.14.8" 265 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" 266 | integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== 267 | 268 | forever-agent@~0.6.1: 269 | version "0.6.1" 270 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 271 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 272 | 273 | form-data@^2.5.0: 274 | version "2.5.1" 275 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 276 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 277 | dependencies: 278 | asynckit "^0.4.0" 279 | combined-stream "^1.0.6" 280 | mime-types "^2.1.12" 281 | 282 | form-data@~2.3.2: 283 | version "2.3.3" 284 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 285 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 286 | dependencies: 287 | asynckit "^0.4.0" 288 | combined-stream "^1.0.6" 289 | mime-types "^2.1.12" 290 | 291 | function-bind@^1.1.1: 292 | version "1.1.1" 293 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 294 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 295 | 296 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 297 | version "1.1.1" 298 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 299 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 300 | dependencies: 301 | function-bind "^1.1.1" 302 | has "^1.0.3" 303 | has-symbols "^1.0.1" 304 | 305 | get-symbol-description@^1.0.0: 306 | version "1.0.0" 307 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 308 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 309 | dependencies: 310 | call-bind "^1.0.2" 311 | get-intrinsic "^1.1.1" 312 | 313 | getpass@^0.1.1: 314 | version "0.1.7" 315 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 316 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 317 | dependencies: 318 | assert-plus "^1.0.0" 319 | 320 | har-schema@^2.0.0: 321 | version "2.0.0" 322 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 323 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 324 | 325 | har-validator@~5.1.3: 326 | version "5.1.5" 327 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 328 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 329 | dependencies: 330 | ajv "^6.12.3" 331 | har-schema "^2.0.0" 332 | 333 | has-bigints@^1.0.1: 334 | version "1.0.1" 335 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 336 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 337 | 338 | has-symbols@^1.0.1, has-symbols@^1.0.2: 339 | version "1.0.2" 340 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 341 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 342 | 343 | has-tostringtag@^1.0.0: 344 | version "1.0.0" 345 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 346 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 347 | dependencies: 348 | has-symbols "^1.0.2" 349 | 350 | has@^1.0.3: 351 | version "1.0.3" 352 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 353 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 354 | dependencies: 355 | function-bind "^1.1.1" 356 | 357 | http-signature@~1.2.0: 358 | version "1.2.0" 359 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 360 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 361 | dependencies: 362 | assert-plus "^1.0.0" 363 | jsprim "^1.2.2" 364 | sshpk "^1.7.0" 365 | 366 | inherits@~2.0.3: 367 | version "2.0.4" 368 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 369 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 370 | 371 | internal-slot@^1.0.3: 372 | version "1.0.3" 373 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 374 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 375 | dependencies: 376 | get-intrinsic "^1.1.0" 377 | has "^1.0.3" 378 | side-channel "^1.0.4" 379 | 380 | is-bigint@^1.0.1: 381 | version "1.0.4" 382 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 383 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 384 | dependencies: 385 | has-bigints "^1.0.1" 386 | 387 | is-boolean-object@^1.1.0: 388 | version "1.1.2" 389 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 390 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 391 | dependencies: 392 | call-bind "^1.0.2" 393 | has-tostringtag "^1.0.0" 394 | 395 | is-callable@^1.1.4, is-callable@^1.2.4: 396 | version "1.2.4" 397 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 398 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 399 | 400 | is-date-object@^1.0.1: 401 | version "1.0.5" 402 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 403 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 404 | dependencies: 405 | has-tostringtag "^1.0.0" 406 | 407 | is-negative-zero@^2.0.1: 408 | version "2.0.2" 409 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 410 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 411 | 412 | is-number-object@^1.0.4: 413 | version "1.0.6" 414 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" 415 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 416 | dependencies: 417 | has-tostringtag "^1.0.0" 418 | 419 | is-regex@^1.1.4: 420 | version "1.1.4" 421 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 422 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 423 | dependencies: 424 | call-bind "^1.0.2" 425 | has-tostringtag "^1.0.0" 426 | 427 | is-shared-array-buffer@^1.0.1: 428 | version "1.0.1" 429 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" 430 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 431 | 432 | is-string@^1.0.5, is-string@^1.0.7: 433 | version "1.0.7" 434 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 435 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 436 | dependencies: 437 | has-tostringtag "^1.0.0" 438 | 439 | is-symbol@^1.0.2, is-symbol@^1.0.3: 440 | version "1.0.4" 441 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 442 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 443 | dependencies: 444 | has-symbols "^1.0.2" 445 | 446 | is-typedarray@~1.0.0: 447 | version "1.0.0" 448 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 449 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 450 | 451 | is-weakref@^1.0.1: 452 | version "1.0.2" 453 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 454 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 455 | dependencies: 456 | call-bind "^1.0.2" 457 | 458 | isarray@~1.0.0: 459 | version "1.0.0" 460 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 461 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 462 | 463 | isstream@~0.1.2: 464 | version "0.1.2" 465 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 466 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 467 | 468 | jsbn@~0.1.0: 469 | version "0.1.1" 470 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 471 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 472 | 473 | json-schema-traverse@^0.4.1: 474 | version "0.4.1" 475 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 476 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 477 | 478 | json-schema@0.4.0: 479 | version "0.4.0" 480 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" 481 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 482 | 483 | json-stringify-safe@~5.0.1: 484 | version "5.0.1" 485 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 486 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 487 | 488 | jsprim@^1.2.2: 489 | version "1.4.2" 490 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" 491 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== 492 | dependencies: 493 | assert-plus "1.0.0" 494 | extsprintf "1.3.0" 495 | json-schema "0.4.0" 496 | verror "1.10.0" 497 | 498 | lodash@^4.17.19: 499 | version "4.17.21" 500 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 501 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 502 | 503 | mime-db@1.51.0: 504 | version "1.51.0" 505 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 506 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 507 | 508 | mime-types@^2.1.12, mime-types@~2.1.19: 509 | version "2.1.34" 510 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 511 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 512 | dependencies: 513 | mime-db "1.51.0" 514 | 515 | mime@^1.6.0: 516 | version "1.6.0" 517 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 518 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 519 | 520 | ms@^2.1.1: 521 | version "2.1.3" 522 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 523 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 524 | 525 | node-telegram-bot-api@^0.56.0: 526 | version "0.56.0" 527 | resolved "https://registry.yarnpkg.com/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz#caf653574ed30530e2855a038b4d806f65c48677" 528 | integrity sha512-gKUlH/uUXdSJ++6y1Y16qEThZouecfl4twuPKe6V2BPFDDfom9j2QMlxfslPEjZPH2ZXlA1S/uoRCKtIjzuaLw== 529 | dependencies: 530 | array.prototype.findindex "^2.0.2" 531 | bl "^1.2.3" 532 | bluebird "^3.5.1" 533 | debug "^3.1.0" 534 | depd "^1.1.1" 535 | eventemitter3 "^3.0.0" 536 | file-type "^3.9.0" 537 | mime "^1.6.0" 538 | pump "^2.0.0" 539 | request "^2.83.0" 540 | request-promise "^4.2.2" 541 | 542 | oauth-sign@~0.9.0: 543 | version "0.9.0" 544 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 545 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 546 | 547 | object-inspect@^1.11.0, object-inspect@^1.9.0: 548 | version "1.12.0" 549 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 550 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 551 | 552 | object-keys@^1.0.12, object-keys@^1.1.1: 553 | version "1.1.1" 554 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 555 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 556 | 557 | object.assign@^4.1.2: 558 | version "4.1.2" 559 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 560 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 561 | dependencies: 562 | call-bind "^1.0.0" 563 | define-properties "^1.1.3" 564 | has-symbols "^1.0.1" 565 | object-keys "^1.1.1" 566 | 567 | once@^1.3.1, once@^1.4.0: 568 | version "1.4.0" 569 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 570 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 571 | dependencies: 572 | wrappy "1" 573 | 574 | performance-now@^2.1.0: 575 | version "2.1.0" 576 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 577 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 578 | 579 | process-nextick-args@~2.0.0: 580 | version "2.0.1" 581 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 582 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 583 | 584 | psl@^1.1.28: 585 | version "1.8.0" 586 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 587 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 588 | 589 | pump@^2.0.0: 590 | version "2.0.1" 591 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 592 | integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 593 | dependencies: 594 | end-of-stream "^1.1.0" 595 | once "^1.3.1" 596 | 597 | punycode@^2.1.0, punycode@^2.1.1: 598 | version "2.1.1" 599 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 600 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 601 | 602 | qs@~6.5.2: 603 | version "6.5.3" 604 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" 605 | integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== 606 | 607 | readable-stream@^2.3.5: 608 | version "2.3.7" 609 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 610 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 611 | dependencies: 612 | core-util-is "~1.0.0" 613 | inherits "~2.0.3" 614 | isarray "~1.0.0" 615 | process-nextick-args "~2.0.0" 616 | safe-buffer "~5.1.1" 617 | string_decoder "~1.1.1" 618 | util-deprecate "~1.0.1" 619 | 620 | request-promise-core@1.1.4: 621 | version "1.1.4" 622 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" 623 | integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== 624 | dependencies: 625 | lodash "^4.17.19" 626 | 627 | request-promise@^4.2.2: 628 | version "4.2.6" 629 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.6.tgz#7e7e5b9578630e6f598e3813c0f8eb342a27f0a2" 630 | integrity sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== 631 | dependencies: 632 | bluebird "^3.5.0" 633 | request-promise-core "1.1.4" 634 | stealthy-require "^1.1.1" 635 | tough-cookie "^2.3.3" 636 | 637 | request@^2.83.0: 638 | version "2.88.2" 639 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 640 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 641 | dependencies: 642 | aws-sign2 "~0.7.0" 643 | aws4 "^1.8.0" 644 | caseless "~0.12.0" 645 | combined-stream "~1.0.6" 646 | extend "~3.0.2" 647 | forever-agent "~0.6.1" 648 | form-data "~2.3.2" 649 | har-validator "~5.1.3" 650 | http-signature "~1.2.0" 651 | is-typedarray "~1.0.0" 652 | isstream "~0.1.2" 653 | json-stringify-safe "~5.0.1" 654 | mime-types "~2.1.19" 655 | oauth-sign "~0.9.0" 656 | performance-now "^2.1.0" 657 | qs "~6.5.2" 658 | safe-buffer "^5.1.2" 659 | tough-cookie "~2.5.0" 660 | tunnel-agent "^0.6.0" 661 | uuid "^3.3.2" 662 | 663 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 664 | version "5.2.1" 665 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 666 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 667 | 668 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 669 | version "5.1.2" 670 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 671 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 672 | 673 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 674 | version "2.1.2" 675 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 676 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 677 | 678 | side-channel@^1.0.4: 679 | version "1.0.4" 680 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 681 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 682 | dependencies: 683 | call-bind "^1.0.0" 684 | get-intrinsic "^1.0.2" 685 | object-inspect "^1.9.0" 686 | 687 | sshpk@^1.7.0: 688 | version "1.17.0" 689 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" 690 | integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== 691 | dependencies: 692 | asn1 "~0.2.3" 693 | assert-plus "^1.0.0" 694 | bcrypt-pbkdf "^1.0.0" 695 | dashdash "^1.12.0" 696 | ecc-jsbn "~0.1.1" 697 | getpass "^0.1.1" 698 | jsbn "~0.1.0" 699 | safer-buffer "^2.0.2" 700 | tweetnacl "~0.14.0" 701 | 702 | stealthy-require@^1.1.1: 703 | version "1.1.1" 704 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 705 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 706 | 707 | string.prototype.trimend@^1.0.4: 708 | version "1.0.4" 709 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 710 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 711 | dependencies: 712 | call-bind "^1.0.2" 713 | define-properties "^1.1.3" 714 | 715 | string.prototype.trimstart@^1.0.4: 716 | version "1.0.4" 717 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 718 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 719 | dependencies: 720 | call-bind "^1.0.2" 721 | define-properties "^1.1.3" 722 | 723 | string_decoder@~1.1.1: 724 | version "1.1.1" 725 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 726 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 727 | dependencies: 728 | safe-buffer "~5.1.0" 729 | 730 | tough-cookie@^2.3.3, tough-cookie@~2.5.0: 731 | version "2.5.0" 732 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 733 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 734 | dependencies: 735 | psl "^1.1.28" 736 | punycode "^2.1.1" 737 | 738 | tunnel-agent@^0.6.0: 739 | version "0.6.0" 740 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 741 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 742 | dependencies: 743 | safe-buffer "^5.0.1" 744 | 745 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 746 | version "0.14.5" 747 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 748 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 749 | 750 | unbox-primitive@^1.0.1: 751 | version "1.0.1" 752 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 753 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 754 | dependencies: 755 | function-bind "^1.1.1" 756 | has-bigints "^1.0.1" 757 | has-symbols "^1.0.2" 758 | which-boxed-primitive "^1.0.2" 759 | 760 | uri-js@^4.2.2: 761 | version "4.4.1" 762 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 763 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 764 | dependencies: 765 | punycode "^2.1.0" 766 | 767 | util-deprecate@~1.0.1: 768 | version "1.0.2" 769 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 770 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 771 | 772 | uuid@^3.3.2: 773 | version "3.4.0" 774 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 775 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 776 | 777 | verror@1.10.0: 778 | version "1.10.0" 779 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 780 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 781 | dependencies: 782 | assert-plus "^1.0.0" 783 | core-util-is "1.0.2" 784 | extsprintf "^1.2.0" 785 | 786 | which-boxed-primitive@^1.0.2: 787 | version "1.0.2" 788 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 789 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 790 | dependencies: 791 | is-bigint "^1.0.1" 792 | is-boolean-object "^1.1.0" 793 | is-number-object "^1.0.4" 794 | is-string "^1.0.5" 795 | is-symbol "^1.0.3" 796 | 797 | wrappy@1: 798 | version "1.0.2" 799 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 800 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 801 | -------------------------------------------------------------------------------- /fanli-bot_ember/README.md: -------------------------------------------------------------------------------- 1 | # 京东返利机器人 2 | > 发送京东商品链接 将返回返利链接及预估佣金 3 | 4 | ### 准备 5 | 6 | 自行抓包获取京东账号的 `Cookie` 以及 `unionId` 7 | 8 | 找 [@BotFather](https://t.me/BotFather) 申请 `Bot Token` 9 | 10 | 自行填写代理,青龙相关配置 11 | 12 | 将信息分别填写到 `src/app.ts` 的 `line:5-7` 13 | 14 | ### 运行 15 | 16 | ```shell 17 | npm i #安装依赖 18 | npm run start 19 | ``` 20 | -------------------------------------------------------------------------------- /fanli-bot_ember/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fanli-bot", 3 | "description": "京东返利机器人", 4 | "version": "1.0.0", 5 | "main": "dist/app.js", 6 | "license": "MIT", 7 | "dependencies": { 8 | "axios": "^0.25.0", 9 | "https-proxy-agent": "^5.0.0", 10 | "node-telegram-bot-api": "^0.56.0", 11 | "telegraf": "^4.7.0", 12 | "url": "^0.11.0" 13 | }, 14 | "devDependencies": { 15 | "@types/axios": "^0.14.0", 16 | "@types/node": "^17.0.17", 17 | "@types/node-telegram-bot-api": "^0.56.0" 18 | }, 19 | "scripts": { 20 | "start": "tsc && node dist/app.js", 21 | "dev": "nodemon scr/app.ts" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /fanli-bot_ember/src/app.ts: -------------------------------------------------------------------------------- 1 | import {Telegraf} from 'telegraf'; 2 | import axios from 'axios'; 3 | import {URL} from 'url'; 4 | 5 | const HttpsProxyAgent = require('https-proxy-agent'); 6 | const BOT_TOKEN = '';//你申请到的bot token 7 | const UNION_ID = '';//抓取你自己的京东联盟ID 8 | const config = { 9 | url: 'http://127.0.0.1:5700',//你的青龙地址:端口 10 | clientID: '', //你的应用ID 11 | clientSecret: '', //你的应用Secret 12 | searchValue: 'JD_COOKIE', 13 | index: 1, //默认获取第一个 cookie 14 | agentHost: '127.0.0.1',//代理地址,没有就置空 15 | agentPort: 7890 //代理端口,,没有就置空 16 | }; 17 | 18 | let bot; 19 | if (config.agentHost && config.agentPort) { 20 | const agent = new HttpsProxyAgent({ 21 | host: config.agentHost, 22 | port: config.agentPort 23 | }); 24 | bot = new Telegraf(BOT_TOKEN, {telegram: {agent}}); 25 | } else { 26 | bot = new Telegraf(BOT_TOKEN); 27 | } 28 | 29 | bot.launch().then(r => { 30 | console.log('启动bot成功'); 31 | }); 32 | 33 | /** 34 | * 监听开始命令 35 | */ 36 | bot.hears(/\/start/, ctx => { 37 | try { 38 | ctx.reply('京东转链机器人'+'\n1.请回复商品 url 来获取返利信息,例如直接发送 https://item.jd.com/70241615154.html' + 39 | '\n 2.回复 /order 查询最近7天返利订单'); 40 | } catch (error) { 41 | console.log('/start', error); 42 | } 43 | }); 44 | 45 | /** 46 | * 监听查询最近7天订单请求 47 | */ 48 | bot.hears(/\/order/, ctx => { 49 | try { 50 | getOrder().then(res => { 51 | let linkInfo = res.data; 52 | if (linkInfo && linkInfo.code === 200) {//如果转链接结果是否存在 53 | let data = linkInfo.result; 54 | if (data.length === 0) { 55 | ctx.reply('没有订单哦!'); 56 | } else { 57 | for (let i = 0; i < data.length; i++) { 58 | let replyMsg = data[i].skuName + '\n' + '----------------' + '\n' + `预计佣金:¥${data[i].estimateFee}`; 59 | ctx.replyWithPhoto({url: `http://img14.360buyimg.com/n1/${data[i].skuImgUrl}`}, 60 | {caption: replyMsg}); 61 | } 62 | } 63 | 64 | } else {//转链失败 65 | ctx.reply('查询失败了'); 66 | } 67 | }); 68 | 69 | } catch (error) {//捕获错误 70 | console.log('转链', error);//记录错误 71 | //尝试给用户回复消息安抚 72 | ctx.reply('发生了无法预料的错误,请检查程序。').catch(err => { 73 | console.log(err); 74 | }); 75 | } 76 | }); 77 | /** 78 | * 监听转链请求 79 | */ 80 | bot.hears(/^(?:(http|https|ftp):\/\/)?((|[\w-]+\.)+[a-z0-9]+)(?:(\/[^/?#]+)*)?(\?[^#]+)?(#.+)?$/i, ctx => { 81 | 82 | const {text} = ctx.message; 83 | try { 84 | let link = text.split(' ')[0];//将链接从消息中提取出来 85 | if (link) {//判断是否存在链接 86 | if (link.includes('jd') || link.includes('jingxi')) {//判断链接是否来自于京东 87 | converUrl(link).then(res => { 88 | let linkInfo = res.data; 89 | if (linkInfo && linkInfo.code === 200) {//如果转链接结果是否存在 90 | let replyMsg = linkInfo.data.formatContext + `预计佣金:¥${linkInfo.data.wlCommission}`; 91 | if (linkInfo.data.imgList && linkInfo.data.imgList.length > 0) {//如果转链信息中包含图片 92 | ctx.replyWithPhoto({url: `http://img14.360buyimg.com/n1/${linkInfo.data.imgList[0]}`}, 93 | {caption: replyMsg}); 94 | } else {//转链结果中不存在图片,直接发送文件 95 | ctx.reply(replyMsg); 96 | } 97 | } else {//转链失败 98 | ctx.reply('转链失败'); 99 | } 100 | }); 101 | 102 | 103 | } else {//链接不来自于京东 104 | ctx.reply('你发送来的链接好像不是京东的商品链接哟~'); 105 | } 106 | } else {//没有检测到链接 107 | ctx.reply('没有接收到链接哟~'); 108 | } 109 | } catch (error) {//捕获错误 110 | console.log('转链', error);//记录错误 111 | //尝试给用户回复消息安抚 112 | ctx.reply('发生了无法预料的错误,请检查程序。').catch(err => { 113 | console.log(err); 114 | }); 115 | } 116 | }); 117 | 118 | async function getCookie() { 119 | const url = `${config.url}/open/auth/token?client_id=${config.clientID}&client_secret=${config.clientSecret}`; 120 | 121 | const {data} = await axios.get(url); 122 | const token = data.data.token; 123 | const evnResult = await axios.get( 124 | `${config.url}/open/envs?searchValue=${config.searchValue}&t=${new Date().getTime()}`, 125 | {headers: {Authorization: 'Bearer ' + token}}); 126 | 127 | return evnResult.data.data[config.index - 1].value; 128 | 129 | 130 | } 131 | 132 | async function converUrl(url: string) { 133 | // 实例化一个URL对象 134 | let reqLink = new URL('https://api.m.jd.com/api'); 135 | // 预先准备好请求参数 136 | let payload = { 137 | functionId: 'ConvertSuperLink', 138 | appid: 'u', 139 | _: Date.now(), 140 | body: JSON.stringify({ 141 | funName: 'getSuperClickUrl', 142 | param: { 143 | materialInfo: url 144 | }, 145 | unionId: UNION_ID, 146 | }), 147 | loginType: 2 148 | }; 149 | // 通过循环依次将请求参数添加到URL对象中 150 | for (const vo of Object.keys(payload)) { 151 | reqLink.searchParams.append(vo, payload[vo]); 152 | } 153 | // 发起请求 154 | const Cookie = await getCookie(); 155 | 156 | return axios.get(reqLink.href, { 157 | headers: { 158 | Cookie, 159 | 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x1800122b) NetType/WIFI Language/zh_CN' 160 | } 161 | }); 162 | 163 | 164 | } 165 | 166 | 167 | async function getOrder() { 168 | // 实例化一个URL对象 169 | let reqLink = new URL('https://api.m.jd.com/api'); 170 | // 预先准备好请求参数 171 | let startTime = new Date().getTime() - 7 * 24 * 60 * 60 * 1000; 172 | 173 | 174 | let payload = { 175 | functionId: 'listOrderSku', 176 | appid: 'u', 177 | _: Date.now(), 178 | body: JSON.stringify({ 179 | funName: 'listOrderSku', 180 | param: { 181 | // @ts-ignore 182 | startTime: new Date(startTime).format('yyyy-MM-dd hh:mm:ss'), 183 | // @ts-ignore 184 | endTime: new Date().format('yyyy-MM-dd hh:mm:ss'), 185 | orderStatus: 0, 186 | optType: 1, 187 | }, 188 | page: { 189 | pageNo: 1, 190 | pageSize: 10 191 | }, 192 | unionId: UNION_ID, 193 | }), 194 | loginType: 2 195 | }; 196 | // 通过循环依次将请求参数添加到URL对象中 197 | for (const vo of Object.keys(payload)) { 198 | reqLink.searchParams.append(vo, payload[vo]); 199 | } 200 | // 发起请求 201 | const Cookie = await getCookie(); 202 | 203 | return axios.get(reqLink.href, { 204 | headers: { 205 | Cookie, 206 | 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x1800122b) NetType/WIFI Language/zh_CN' 207 | } 208 | }); 209 | 210 | 211 | } 212 | 213 | // @ts-ignore 214 | Date.prototype.format = function (fmt) { 215 | var o = { 216 | 'M+': this.getMonth() + 1, //月份 217 | 'd+': this.getDate(), //日 218 | 'h+': this.getHours(), //小时 219 | 'm+': this.getMinutes(), //分 220 | 's+': this.getSeconds(), //秒 221 | 'q+': Math.floor((this.getMonth() + 3) / 3), //季度 222 | 'S': this.getMilliseconds() //毫秒 223 | }; 224 | if (/(y+)/.test(fmt)) { 225 | fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); 226 | } 227 | for (var k in o) { 228 | if (new RegExp('(' + k + ')').test(fmt)) { 229 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))); 230 | } 231 | } 232 | return fmt; 233 | }; 234 | 235 | 236 | -------------------------------------------------------------------------------- /fanli-bot_ember/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "resolveJsonModule": true, 6 | "esModuleInterop": true, 7 | "skipLibCheck": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "watch": false, 10 | "rootDir": "./src", 11 | "outDir": "./dist", 12 | "noImplicitAny": false, 13 | "declaration": true 14 | }, 15 | "include": [ 16 | "src/**/*" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /fanli-bot_ember/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/axios@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" 8 | integrity sha1-7CMA++fX3d1+udOr+HmZlkyvzkY= 9 | dependencies: 10 | axios "*" 11 | 12 | "@types/caseless@*": 13 | version "0.12.2" 14 | resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" 15 | integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== 16 | 17 | "@types/node-telegram-bot-api@^0.56.0": 18 | version "0.56.0" 19 | resolved "https://registry.yarnpkg.com/@types/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz#0484a0de6399b109598c7d79164b744cc750faf9" 20 | integrity sha512-RmJyBHCM3wItNP5cmovj3Imt2Cp94dMowFttBCsla0yPo5TR8jgplBhAU/UMsAhfT/ozUKXIQ+3PfEc/hH7LGg== 21 | dependencies: 22 | "@types/node" "*" 23 | "@types/request" "*" 24 | 25 | "@types/node@*", "@types/node@^17.0.17": 26 | version "17.0.17" 27 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" 28 | integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== 29 | 30 | "@types/request@*": 31 | version "2.48.8" 32 | resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" 33 | integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== 34 | dependencies: 35 | "@types/caseless" "*" 36 | "@types/node" "*" 37 | "@types/tough-cookie" "*" 38 | form-data "^2.5.0" 39 | 40 | "@types/tough-cookie@*": 41 | version "4.0.1" 42 | resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" 43 | integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== 44 | 45 | abort-controller@^3.0.0: 46 | version "3.0.0" 47 | resolved "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 48 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 49 | dependencies: 50 | event-target-shim "^5.0.0" 51 | 52 | agent-base@6: 53 | version "6.0.2" 54 | resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 55 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 56 | dependencies: 57 | debug "4" 58 | 59 | ajv@^6.12.3: 60 | version "6.12.6" 61 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 62 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 63 | dependencies: 64 | fast-deep-equal "^3.1.1" 65 | fast-json-stable-stringify "^2.0.0" 66 | json-schema-traverse "^0.4.1" 67 | uri-js "^4.2.2" 68 | 69 | array.prototype.findindex@^2.0.2: 70 | version "2.1.0" 71 | resolved "https://registry.yarnpkg.com/array.prototype.findindex/-/array.prototype.findindex-2.1.0.tgz#f43f8ed823274f0733647ee403b2c0c9771a97fe" 72 | integrity sha512-25kJHCjXltdtljjwcyKvCTywmbUAeTJVB2ADVe0oP4jcefsd+K9pJJ3IdHPahLICoszcCLoNF+evWpEduzBlng== 73 | dependencies: 74 | define-properties "^1.1.3" 75 | es-abstract "^1.17.4" 76 | 77 | asn1@~0.2.3: 78 | version "0.2.6" 79 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" 80 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== 81 | dependencies: 82 | safer-buffer "~2.1.0" 83 | 84 | assert-plus@1.0.0, assert-plus@^1.0.0: 85 | version "1.0.0" 86 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 87 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 88 | 89 | asynckit@^0.4.0: 90 | version "0.4.0" 91 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 92 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 93 | 94 | aws-sign2@~0.7.0: 95 | version "0.7.0" 96 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 97 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 98 | 99 | aws4@^1.8.0: 100 | version "1.11.0" 101 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 102 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 103 | 104 | axios@*, axios@^0.25.0: 105 | version "0.25.0" 106 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" 107 | integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== 108 | dependencies: 109 | follow-redirects "^1.14.7" 110 | 111 | bcrypt-pbkdf@^1.0.0: 112 | version "1.0.2" 113 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 114 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 115 | dependencies: 116 | tweetnacl "^0.14.3" 117 | 118 | bl@^1.2.3: 119 | version "1.2.3" 120 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" 121 | integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== 122 | dependencies: 123 | readable-stream "^2.3.5" 124 | safe-buffer "^5.1.1" 125 | 126 | bluebird@^3.5.0, bluebird@^3.5.1: 127 | version "3.7.2" 128 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 129 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 130 | 131 | buffer-alloc-unsafe@^1.1.0: 132 | version "1.1.0" 133 | resolved "https://registry.npmmirror.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 134 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 135 | 136 | buffer-alloc@^1.2.0: 137 | version "1.2.0" 138 | resolved "https://registry.npmmirror.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 139 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 140 | dependencies: 141 | buffer-alloc-unsafe "^1.1.0" 142 | buffer-fill "^1.0.0" 143 | 144 | buffer-fill@^1.0.0: 145 | version "1.0.0" 146 | resolved "https://registry.npmmirror.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 147 | integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== 148 | 149 | call-bind@^1.0.0, call-bind@^1.0.2: 150 | version "1.0.2" 151 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 152 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 153 | dependencies: 154 | function-bind "^1.1.1" 155 | get-intrinsic "^1.0.2" 156 | 157 | caseless@~0.12.0: 158 | version "0.12.0" 159 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 160 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 161 | 162 | combined-stream@^1.0.6, combined-stream@~1.0.6: 163 | version "1.0.8" 164 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 165 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 166 | dependencies: 167 | delayed-stream "~1.0.0" 168 | 169 | core-util-is@1.0.2: 170 | version "1.0.2" 171 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 172 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 173 | 174 | core-util-is@~1.0.0: 175 | version "1.0.3" 176 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 177 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 178 | 179 | dashdash@^1.12.0: 180 | version "1.14.1" 181 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 182 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 183 | dependencies: 184 | assert-plus "^1.0.0" 185 | 186 | debug@4, debug@^4.3.3: 187 | version "4.3.3" 188 | resolved "https://registry.npmmirror.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 189 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 190 | dependencies: 191 | ms "2.1.2" 192 | 193 | debug@^3.1.0: 194 | version "3.2.7" 195 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 196 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 197 | dependencies: 198 | ms "^2.1.1" 199 | 200 | define-properties@^1.1.3: 201 | version "1.1.3" 202 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 203 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 204 | dependencies: 205 | object-keys "^1.0.12" 206 | 207 | delayed-stream@~1.0.0: 208 | version "1.0.0" 209 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 210 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 211 | 212 | depd@^1.1.1: 213 | version "1.1.2" 214 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 215 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 216 | 217 | ecc-jsbn@~0.1.1: 218 | version "0.1.2" 219 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 220 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 221 | dependencies: 222 | jsbn "~0.1.0" 223 | safer-buffer "^2.1.0" 224 | 225 | end-of-stream@^1.1.0: 226 | version "1.4.4" 227 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 228 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 229 | dependencies: 230 | once "^1.4.0" 231 | 232 | es-abstract@^1.17.4: 233 | version "1.19.1" 234 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" 235 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 236 | dependencies: 237 | call-bind "^1.0.2" 238 | es-to-primitive "^1.2.1" 239 | function-bind "^1.1.1" 240 | get-intrinsic "^1.1.1" 241 | get-symbol-description "^1.0.0" 242 | has "^1.0.3" 243 | has-symbols "^1.0.2" 244 | internal-slot "^1.0.3" 245 | is-callable "^1.2.4" 246 | is-negative-zero "^2.0.1" 247 | is-regex "^1.1.4" 248 | is-shared-array-buffer "^1.0.1" 249 | is-string "^1.0.7" 250 | is-weakref "^1.0.1" 251 | object-inspect "^1.11.0" 252 | object-keys "^1.1.1" 253 | object.assign "^4.1.2" 254 | string.prototype.trimend "^1.0.4" 255 | string.prototype.trimstart "^1.0.4" 256 | unbox-primitive "^1.0.1" 257 | 258 | es-to-primitive@^1.2.1: 259 | version "1.2.1" 260 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 261 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 262 | dependencies: 263 | is-callable "^1.1.4" 264 | is-date-object "^1.0.1" 265 | is-symbol "^1.0.2" 266 | 267 | event-target-shim@^5.0.0: 268 | version "5.0.1" 269 | resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 270 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 271 | 272 | eventemitter3@^3.0.0: 273 | version "3.1.2" 274 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" 275 | integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== 276 | 277 | extend@~3.0.2: 278 | version "3.0.2" 279 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 280 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 281 | 282 | extsprintf@1.3.0: 283 | version "1.3.0" 284 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 285 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 286 | 287 | extsprintf@^1.2.0: 288 | version "1.4.1" 289 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" 290 | integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== 291 | 292 | fast-deep-equal@^3.1.1: 293 | version "3.1.3" 294 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 295 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 296 | 297 | fast-json-stable-stringify@^2.0.0: 298 | version "2.1.0" 299 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 300 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 301 | 302 | file-type@^3.9.0: 303 | version "3.9.0" 304 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 305 | integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= 306 | 307 | follow-redirects@^1.14.7: 308 | version "1.14.8" 309 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" 310 | integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== 311 | 312 | forever-agent@~0.6.1: 313 | version "0.6.1" 314 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 315 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 316 | 317 | form-data@^2.5.0: 318 | version "2.5.1" 319 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 320 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 321 | dependencies: 322 | asynckit "^0.4.0" 323 | combined-stream "^1.0.6" 324 | mime-types "^2.1.12" 325 | 326 | form-data@~2.3.2: 327 | version "2.3.3" 328 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 329 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 330 | dependencies: 331 | asynckit "^0.4.0" 332 | combined-stream "^1.0.6" 333 | mime-types "^2.1.12" 334 | 335 | function-bind@^1.1.1: 336 | version "1.1.1" 337 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 338 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 339 | 340 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 341 | version "1.1.1" 342 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 343 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 344 | dependencies: 345 | function-bind "^1.1.1" 346 | has "^1.0.3" 347 | has-symbols "^1.0.1" 348 | 349 | get-symbol-description@^1.0.0: 350 | version "1.0.0" 351 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 352 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 353 | dependencies: 354 | call-bind "^1.0.2" 355 | get-intrinsic "^1.1.1" 356 | 357 | getpass@^0.1.1: 358 | version "0.1.7" 359 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 360 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 361 | dependencies: 362 | assert-plus "^1.0.0" 363 | 364 | har-schema@^2.0.0: 365 | version "2.0.0" 366 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 367 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 368 | 369 | har-validator@~5.1.3: 370 | version "5.1.5" 371 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 372 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 373 | dependencies: 374 | ajv "^6.12.3" 375 | har-schema "^2.0.0" 376 | 377 | has-bigints@^1.0.1: 378 | version "1.0.1" 379 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 380 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 381 | 382 | has-symbols@^1.0.1, has-symbols@^1.0.2: 383 | version "1.0.2" 384 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 385 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 386 | 387 | has-tostringtag@^1.0.0: 388 | version "1.0.0" 389 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 390 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 391 | dependencies: 392 | has-symbols "^1.0.2" 393 | 394 | has@^1.0.3: 395 | version "1.0.3" 396 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 397 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 398 | dependencies: 399 | function-bind "^1.1.1" 400 | 401 | http-signature@~1.2.0: 402 | version "1.2.0" 403 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 404 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 405 | dependencies: 406 | assert-plus "^1.0.0" 407 | jsprim "^1.2.2" 408 | sshpk "^1.7.0" 409 | 410 | https-proxy-agent@^5.0.0: 411 | version "5.0.0" 412 | resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 413 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 414 | dependencies: 415 | agent-base "6" 416 | debug "4" 417 | 418 | inherits@~2.0.3: 419 | version "2.0.4" 420 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 421 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 422 | 423 | internal-slot@^1.0.3: 424 | version "1.0.3" 425 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 426 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 427 | dependencies: 428 | get-intrinsic "^1.1.0" 429 | has "^1.0.3" 430 | side-channel "^1.0.4" 431 | 432 | is-bigint@^1.0.1: 433 | version "1.0.4" 434 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 435 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 436 | dependencies: 437 | has-bigints "^1.0.1" 438 | 439 | is-boolean-object@^1.1.0: 440 | version "1.1.2" 441 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 442 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 443 | dependencies: 444 | call-bind "^1.0.2" 445 | has-tostringtag "^1.0.0" 446 | 447 | is-callable@^1.1.4, is-callable@^1.2.4: 448 | version "1.2.4" 449 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 450 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 451 | 452 | is-date-object@^1.0.1: 453 | version "1.0.5" 454 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 455 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 456 | dependencies: 457 | has-tostringtag "^1.0.0" 458 | 459 | is-negative-zero@^2.0.1: 460 | version "2.0.2" 461 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 462 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 463 | 464 | is-number-object@^1.0.4: 465 | version "1.0.6" 466 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" 467 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 468 | dependencies: 469 | has-tostringtag "^1.0.0" 470 | 471 | is-regex@^1.1.4: 472 | version "1.1.4" 473 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 474 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 475 | dependencies: 476 | call-bind "^1.0.2" 477 | has-tostringtag "^1.0.0" 478 | 479 | is-shared-array-buffer@^1.0.1: 480 | version "1.0.1" 481 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" 482 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 483 | 484 | is-string@^1.0.5, is-string@^1.0.7: 485 | version "1.0.7" 486 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 487 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 488 | dependencies: 489 | has-tostringtag "^1.0.0" 490 | 491 | is-symbol@^1.0.2, is-symbol@^1.0.3: 492 | version "1.0.4" 493 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 494 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 495 | dependencies: 496 | has-symbols "^1.0.2" 497 | 498 | is-typedarray@~1.0.0: 499 | version "1.0.0" 500 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 501 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 502 | 503 | is-weakref@^1.0.1: 504 | version "1.0.2" 505 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 506 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 507 | dependencies: 508 | call-bind "^1.0.2" 509 | 510 | isarray@~1.0.0: 511 | version "1.0.0" 512 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 513 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 514 | 515 | isstream@~0.1.2: 516 | version "0.1.2" 517 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 518 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 519 | 520 | jsbn@~0.1.0: 521 | version "0.1.1" 522 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 523 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 524 | 525 | json-schema-traverse@^0.4.1: 526 | version "0.4.1" 527 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 528 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 529 | 530 | json-schema@0.4.0: 531 | version "0.4.0" 532 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" 533 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 534 | 535 | json-stringify-safe@~5.0.1: 536 | version "5.0.1" 537 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 538 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 539 | 540 | jsprim@^1.2.2: 541 | version "1.4.2" 542 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" 543 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== 544 | dependencies: 545 | assert-plus "1.0.0" 546 | extsprintf "1.3.0" 547 | json-schema "0.4.0" 548 | verror "1.10.0" 549 | 550 | lodash@^4.17.19: 551 | version "4.17.21" 552 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 553 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 554 | 555 | mime-db@1.51.0: 556 | version "1.51.0" 557 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 558 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 559 | 560 | mime-types@^2.1.12, mime-types@~2.1.19: 561 | version "2.1.34" 562 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 563 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 564 | dependencies: 565 | mime-db "1.51.0" 566 | 567 | mime@^1.6.0: 568 | version "1.6.0" 569 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 570 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 571 | 572 | minimist@^1.2.5: 573 | version "1.2.5" 574 | resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 575 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 576 | 577 | module-alias@^2.2.2: 578 | version "2.2.2" 579 | resolved "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" 580 | integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== 581 | 582 | ms@2.1.2: 583 | version "2.1.2" 584 | resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 585 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 586 | 587 | ms@^2.1.1: 588 | version "2.1.3" 589 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 590 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 591 | 592 | node-fetch@^2.6.7: 593 | version "2.6.7" 594 | resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 595 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 596 | dependencies: 597 | whatwg-url "^5.0.0" 598 | 599 | node-telegram-bot-api@^0.56.0: 600 | version "0.56.0" 601 | resolved "https://registry.yarnpkg.com/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz#caf653574ed30530e2855a038b4d806f65c48677" 602 | integrity sha512-gKUlH/uUXdSJ++6y1Y16qEThZouecfl4twuPKe6V2BPFDDfom9j2QMlxfslPEjZPH2ZXlA1S/uoRCKtIjzuaLw== 603 | dependencies: 604 | array.prototype.findindex "^2.0.2" 605 | bl "^1.2.3" 606 | bluebird "^3.5.1" 607 | debug "^3.1.0" 608 | depd "^1.1.1" 609 | eventemitter3 "^3.0.0" 610 | file-type "^3.9.0" 611 | mime "^1.6.0" 612 | pump "^2.0.0" 613 | request "^2.83.0" 614 | request-promise "^4.2.2" 615 | 616 | oauth-sign@~0.9.0: 617 | version "0.9.0" 618 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 619 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 620 | 621 | object-inspect@^1.11.0, object-inspect@^1.9.0: 622 | version "1.12.0" 623 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 624 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 625 | 626 | object-keys@^1.0.12, object-keys@^1.1.1: 627 | version "1.1.1" 628 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 629 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 630 | 631 | object.assign@^4.1.2: 632 | version "4.1.2" 633 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 634 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 635 | dependencies: 636 | call-bind "^1.0.0" 637 | define-properties "^1.1.3" 638 | has-symbols "^1.0.1" 639 | object-keys "^1.1.1" 640 | 641 | once@^1.3.1, once@^1.4.0: 642 | version "1.4.0" 643 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 644 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 645 | dependencies: 646 | wrappy "1" 647 | 648 | p-timeout@^4.1.0: 649 | version "4.1.0" 650 | resolved "https://registry.npmmirror.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a" 651 | integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw== 652 | 653 | performance-now@^2.1.0: 654 | version "2.1.0" 655 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 656 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 657 | 658 | process-nextick-args@~2.0.0: 659 | version "2.0.1" 660 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 661 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 662 | 663 | psl@^1.1.28: 664 | version "1.8.0" 665 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 666 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 667 | 668 | pump@^2.0.0: 669 | version "2.0.1" 670 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 671 | integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 672 | dependencies: 673 | end-of-stream "^1.1.0" 674 | once "^1.3.1" 675 | 676 | punycode@1.3.2: 677 | version "1.3.2" 678 | resolved "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 679 | integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== 680 | 681 | punycode@^2.1.0, punycode@^2.1.1: 682 | version "2.1.1" 683 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 684 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 685 | 686 | qs@~6.5.2: 687 | version "6.5.3" 688 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" 689 | integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== 690 | 691 | querystring@0.2.0: 692 | version "0.2.0" 693 | resolved "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 694 | integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== 695 | 696 | readable-stream@^2.3.5: 697 | version "2.3.7" 698 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 699 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 700 | dependencies: 701 | core-util-is "~1.0.0" 702 | inherits "~2.0.3" 703 | isarray "~1.0.0" 704 | process-nextick-args "~2.0.0" 705 | safe-buffer "~5.1.1" 706 | string_decoder "~1.1.1" 707 | util-deprecate "~1.0.1" 708 | 709 | request-promise-core@1.1.4: 710 | version "1.1.4" 711 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" 712 | integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== 713 | dependencies: 714 | lodash "^4.17.19" 715 | 716 | request-promise@^4.2.2: 717 | version "4.2.6" 718 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.6.tgz#7e7e5b9578630e6f598e3813c0f8eb342a27f0a2" 719 | integrity sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== 720 | dependencies: 721 | bluebird "^3.5.0" 722 | request-promise-core "1.1.4" 723 | stealthy-require "^1.1.1" 724 | tough-cookie "^2.3.3" 725 | 726 | request@^2.83.0: 727 | version "2.88.2" 728 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 729 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 730 | dependencies: 731 | aws-sign2 "~0.7.0" 732 | aws4 "^1.8.0" 733 | caseless "~0.12.0" 734 | combined-stream "~1.0.6" 735 | extend "~3.0.2" 736 | forever-agent "~0.6.1" 737 | form-data "~2.3.2" 738 | har-validator "~5.1.3" 739 | http-signature "~1.2.0" 740 | is-typedarray "~1.0.0" 741 | isstream "~0.1.2" 742 | json-stringify-safe "~5.0.1" 743 | mime-types "~2.1.19" 744 | oauth-sign "~0.9.0" 745 | performance-now "^2.1.0" 746 | qs "~6.5.2" 747 | safe-buffer "^5.1.2" 748 | tough-cookie "~2.5.0" 749 | tunnel-agent "^0.6.0" 750 | uuid "^3.3.2" 751 | 752 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 753 | version "5.2.1" 754 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 755 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 756 | 757 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 758 | version "5.1.2" 759 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 760 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 761 | 762 | safe-compare@^1.1.4: 763 | version "1.1.4" 764 | resolved "https://registry.npmmirror.com/safe-compare/-/safe-compare-1.1.4.tgz#5e0128538a82820e2e9250cd78e45da6786ba593" 765 | integrity sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ== 766 | dependencies: 767 | buffer-alloc "^1.2.0" 768 | 769 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 770 | version "2.1.2" 771 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 772 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 773 | 774 | sandwich-stream@^2.0.2: 775 | version "2.0.2" 776 | resolved "https://registry.npmmirror.com/sandwich-stream/-/sandwich-stream-2.0.2.tgz#6d1feb6cf7e9fe9fadb41513459a72c2e84000fa" 777 | integrity sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ== 778 | 779 | side-channel@^1.0.4: 780 | version "1.0.4" 781 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 782 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 783 | dependencies: 784 | call-bind "^1.0.0" 785 | get-intrinsic "^1.0.2" 786 | object-inspect "^1.9.0" 787 | 788 | sshpk@^1.7.0: 789 | version "1.17.0" 790 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" 791 | integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== 792 | dependencies: 793 | asn1 "~0.2.3" 794 | assert-plus "^1.0.0" 795 | bcrypt-pbkdf "^1.0.0" 796 | dashdash "^1.12.0" 797 | ecc-jsbn "~0.1.1" 798 | getpass "^0.1.1" 799 | jsbn "~0.1.0" 800 | safer-buffer "^2.0.2" 801 | tweetnacl "~0.14.0" 802 | 803 | stealthy-require@^1.1.1: 804 | version "1.1.1" 805 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 806 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 807 | 808 | string.prototype.trimend@^1.0.4: 809 | version "1.0.4" 810 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 811 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 812 | dependencies: 813 | call-bind "^1.0.2" 814 | define-properties "^1.1.3" 815 | 816 | string.prototype.trimstart@^1.0.4: 817 | version "1.0.4" 818 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 819 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 820 | dependencies: 821 | call-bind "^1.0.2" 822 | define-properties "^1.1.3" 823 | 824 | string_decoder@~1.1.1: 825 | version "1.1.1" 826 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 827 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 828 | dependencies: 829 | safe-buffer "~5.1.0" 830 | 831 | telegraf@^4.7.0: 832 | version "4.7.0" 833 | resolved "https://registry.npmmirror.com/telegraf/-/telegraf-4.7.0.tgz#6ee8a8f98900a67472f1ca935c0aba3e8fa49f05" 834 | integrity sha512-rspH4kiVHE1zpnyQvlGFj+Tzu7zN02gSOcdLUayvnkaTwww2E6xBkwne+DKkDPdaRhvQ61J+dcVhLQv9fL+FsQ== 835 | dependencies: 836 | abort-controller "^3.0.0" 837 | debug "^4.3.3" 838 | minimist "^1.2.5" 839 | module-alias "^2.2.2" 840 | node-fetch "^2.6.7" 841 | p-timeout "^4.1.0" 842 | safe-compare "^1.1.4" 843 | sandwich-stream "^2.0.2" 844 | typegram "^3.8.0" 845 | 846 | tough-cookie@^2.3.3, tough-cookie@~2.5.0: 847 | version "2.5.0" 848 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 849 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 850 | dependencies: 851 | psl "^1.1.28" 852 | punycode "^2.1.1" 853 | 854 | tr46@~0.0.3: 855 | version "0.0.3" 856 | resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 857 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 858 | 859 | tunnel-agent@^0.6.0: 860 | version "0.6.0" 861 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 862 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 863 | dependencies: 864 | safe-buffer "^5.0.1" 865 | 866 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 867 | version "0.14.5" 868 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 869 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 870 | 871 | typegram@^3.8.0: 872 | version "3.8.0" 873 | resolved "https://registry.npmmirror.com/typegram/-/typegram-3.8.0.tgz#6f09e1f3d27bb4659dcf6e294603550584c7b39c" 874 | integrity sha512-MdlbWu0HfmgFJf4+xj6eqGYuanV2LJxBYTzLrD0kTV+woQ5dxDD2k8UVVjYnbBGkAagAyxzQevPiFZRWLFHSBw== 875 | 876 | unbox-primitive@^1.0.1: 877 | version "1.0.1" 878 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 879 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 880 | dependencies: 881 | function-bind "^1.1.1" 882 | has-bigints "^1.0.1" 883 | has-symbols "^1.0.2" 884 | which-boxed-primitive "^1.0.2" 885 | 886 | uri-js@^4.2.2: 887 | version "4.4.1" 888 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 889 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 890 | dependencies: 891 | punycode "^2.1.0" 892 | 893 | url@^0.11.0: 894 | version "0.11.0" 895 | resolved "https://registry.npmmirror.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 896 | integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== 897 | dependencies: 898 | punycode "1.3.2" 899 | querystring "0.2.0" 900 | 901 | util-deprecate@~1.0.1: 902 | version "1.0.2" 903 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 904 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 905 | 906 | uuid@^3.3.2: 907 | version "3.4.0" 908 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 909 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 910 | 911 | verror@1.10.0: 912 | version "1.10.0" 913 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 914 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 915 | dependencies: 916 | assert-plus "^1.0.0" 917 | core-util-is "1.0.2" 918 | extsprintf "^1.2.0" 919 | 920 | webidl-conversions@^3.0.0: 921 | version "3.0.1" 922 | resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 923 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 924 | 925 | whatwg-url@^5.0.0: 926 | version "5.0.0" 927 | resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 928 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 929 | dependencies: 930 | tr46 "~0.0.3" 931 | webidl-conversions "^3.0.0" 932 | 933 | which-boxed-primitive@^1.0.2: 934 | version "1.0.2" 935 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 936 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 937 | dependencies: 938 | is-bigint "^1.0.1" 939 | is-boolean-object "^1.1.0" 940 | is-number-object "^1.0.4" 941 | is-string "^1.0.5" 942 | is-symbol "^1.0.3" 943 | 944 | wrappy@1: 945 | version "1.0.2" 946 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 947 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 948 | -------------------------------------------------------------------------------- /scriptable/medal-list-of-winter-olympics-games/README.md: -------------------------------------------------------------------------------- 1 | ![](screenshot.jpg) 2 | 3 | # 2022北京冬奥会奖牌榜 4 | > 可以展示当前冬奥会奖牌榜的数据 5 | 6 | # 支持尺寸 7 | 1. 小尺寸 8 | 2. 中尺寸 9 | 10 | # 如何使用 11 | 12 | 1. 下载 [scriptable](https://apps.apple.com/us/app/scriptable/id1405459188?uo=4) 软件。 13 | 2. 通过 Safari 打开[代码地址](https://raw.githubusercontent.com/zooPanda/Learning-together/dev/scriptable/medal-list-of-winter-olympics-games/latest.js) 14 | 3. 全选复制代码后打开scriptable新建一个文件将代码粘贴进去 15 | 4. 回到主页添加scriptable桌面小组件 16 | 5. 在script中选择刚才新建的文件即可 -------------------------------------------------------------------------------- /scriptable/medal-list-of-winter-olympics-games/medal_list_of_WOG_v1.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Github https://github.com/zooPanda 3 | * Youtube https://www.youtube.com/channel/UCcpbYmChGZKBGaB5_POE0Ng 4 | * Bilibili https://space.bilibili.com/31655347 5 | * Telegram https://t.me/zoo_channel 6 | */ 7 | 8 | 9 | /** 10 | * 获取奖牌榜数据 11 | * @returns 12 | */ 13 | async function getDate() { 14 | const url = 'https://api.cntv.cn/olympic/getBjOlyMedals?serviceId=2022dongao&itemcode=GEN-------------------------------' 15 | const req = new Request(url) 16 | req.method = 'get' 17 | req.headers = { 18 | 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15', 19 | 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', 20 | 'host': 'api.cntv.cn' 21 | } 22 | const res = await req.loadJSON() 23 | if (res && res.data && res.data.medalsList) { 24 | return res.data.medalsList 25 | } else { 26 | return null 27 | } 28 | } 29 | /** 30 | * 加载图片 31 | * @param {string} url 需要加载的图片路径 32 | * @returns 图片对象 33 | */ 34 | async function getImage(url) { 35 | console.log(url) 36 | const req = new Request(url) 37 | req.method = 'get' 38 | return await req.loadImage() 39 | } 40 | function zeroPad(numToPad) { 41 | if (numToPad > 9) { 42 | return numToPad 43 | } else { 44 | return `0${numToPad}` 45 | } 46 | } 47 | /** 48 | * 渲染数据加载失败小组件 49 | * @returns widget object 50 | */ 51 | async function renderErr() { 52 | let widget = new ListWidget() 53 | let text = widget.addText(" 加载失败,请稍后重试……") 54 | widget.textColor = Color.red() 55 | text.centerAlignText() 56 | return widget 57 | } 58 | /** 59 | * 渲染小尺寸组件 60 | * @param {array} list 奖牌榜数组 61 | * @returns widget object 62 | */ 63 | async function renderSmallWidget(list) { 64 | if (list) { 65 | let widget = new ListWidget() 66 | let header = widget.addStack() 67 | let _title = header.addText('冬奥会奖牌榜') 68 | _title.font = Font.boldSystemFont(16) 69 | widget.addSpacer(5) 70 | for (let i = 0; i < 3; i++) { 71 | let body = widget.addStack() 72 | let img = body.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${list[i].countryid}.png`)) 73 | let countryName = body.addText(` ${list[i].countryname} `) 74 | let count = body.addText(`${list[i].count}`) 75 | img.imageSize = new Size(16, 16) 76 | countryName.font = Font.systemFont(14) 77 | count.font = Font.systemFont(14) 78 | count.rightAlignText() 79 | } 80 | let _line = widget.addStack() 81 | let line = _line.addText('--------------------') 82 | line.font = Font.lightSystemFont(10) 83 | let china = list.find(v => v.countryid === 'CHN') 84 | let chn = widget.addStack() 85 | let chn_img = chn.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${china.countryid}.png`)) 86 | let chn_cn = chn.addText(` ${china.countryname} `) 87 | let chn_count = chn.addText(china.count) 88 | chn_img.imageSize = new Size(16, 16) 89 | chn_cn.font = Font.boldSystemFont(14) 90 | chn_count.font = Font.boldSystemFont(14) 91 | 92 | let updateTimeArea = widget.addStack() 93 | let reloadSymbol = SFSymbol.named("arrow.triangle.2.circlepath") 94 | let reloadImage = updateTimeArea.addImage(reloadSymbol.image) 95 | reloadImage.imageSize = new Size(8, 8) 96 | let now = new Date() 97 | let updateTime = updateTimeArea.addText(` ${zeroPad(now.getMonth() + 1)}-${zeroPad(now.getDate())} ${zeroPad(now.getHours())}:${zeroPad(now.getMinutes())}`) 98 | updateTime.font = Font.systemFont(8) 99 | updateTime.rightAlignText() 100 | return widget 101 | } else { 102 | return await renderErr() 103 | } 104 | } 105 | /** 106 | * 渲染中尺寸组件 107 | * @param {array} list 奖牌榜数组 108 | * @returns widget object 109 | */ 110 | async function renderMediumWidget(list) { 111 | if (list) { 112 | let widget = new ListWidget() 113 | let header = widget.addStack() 114 | 115 | let titleArea = header.addStack() 116 | let infoArea = header.addStack() 117 | infoArea.layoutVertically() 118 | 119 | let _icon = titleArea.addImage(await getImage('https://s2.loli.net/2022/02/06/RPeQqYBf9UOFJDr.png')) 120 | _icon.imageSize = new Size(20, 22) 121 | let _title = titleArea.addText(' 北京冬奥会奖牌榜') 122 | _title.font = Font.boldSystemFont(16) 123 | 124 | 125 | let _info = infoArea.addText(' 数据来自于CNTV') 126 | _info.font = Font.systemFont(10) 127 | _info.centerAlignText() 128 | _info.textOpacity = 0.7 129 | 130 | let updateTimeArea = infoArea.addStack() 131 | updateTimeArea.addText(' ') 132 | let reloadSymbol = SFSymbol.named("arrow.triangle.2.circlepath") 133 | let reloadImage = updateTimeArea.addImage(reloadSymbol.image) 134 | reloadImage.imageSize = new Size(10, 10) 135 | 136 | let now = new Date() 137 | let _time = updateTimeArea.addText(` ${zeroPad(now.getMonth() + 1)}-${zeroPad(now.getDate())} ${zeroPad(now.getHours())}:${zeroPad(now.getMinutes())}`) 138 | _time.font = Font.systemFont(10) 139 | _time.centerAlignText() 140 | _time.textOpacity = 0.7 141 | widget.addSpacer(5) 142 | let body = widget.addStack() 143 | let countryFlagList = body.addStack() 144 | let countryNameList = body.addStack() 145 | let goldList = body.addStack() 146 | let silverList = body.addStack() 147 | let bronzeList = body.addStack() 148 | let countList = body.addStack() 149 | countryNameList.layoutVertically() 150 | countryFlagList.layoutVertically() 151 | goldList.layoutVertically() 152 | silverList.layoutVertically() 153 | bronzeList.layoutVertically() 154 | countList.layoutVertically() 155 | let goldFlag = await getImage(`https://s2.loli.net/2022/02/06/uEUB1vcfsdl6Wtq.png`) 156 | let silverFlag = await getImage(`https://s2.loli.net/2022/02/06/AKxfijm9tT5uXvk.png`) 157 | let bronzeFlag = await getImage(`https://s2.loli.net/2022/02/06/5AyV1ci6kCL2qKF.png`) 158 | let countFlag = await getImage('https://s2.loli.net/2022/02/06/YbKliGSanQWIdOZ.png') 159 | for (let i = 0; i < 4; i++) { 160 | // 渲染国旗 161 | let img = countryFlagList.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${list[i].countryid}.png`)) 162 | img.imageSize = new Size(16, 17) 163 | let countryName = countryNameList.addText(` ${list[i].countryname} `) 164 | countryName.font = Font.boldSystemFont(14) 165 | // 渲染金牌icon及金牌数量 166 | let goldArea = goldList.addStack() 167 | let gold = goldArea.addImage(goldFlag) 168 | gold.imageSize = new Size(14, 14) 169 | let goldNum = goldArea.addText(list[i].gold + ' ') 170 | goldNum.font = Font.systemFont(14) 171 | // 渲染银牌icon及银牌数量 172 | let silverArea = silverList.addStack() 173 | let silver = silverArea.addImage(silverFlag) 174 | silver.imageSize = new Size(14, 14) 175 | let silverNum = silverArea.addText(list[i].silver + ' ') 176 | silverNum.font = Font.systemFont(14) 177 | // 渲染铜牌icon及铜牌数量 178 | let bronzeArea = bronzeList.addStack() 179 | let bronze = bronzeArea.addImage(bronzeFlag) 180 | bronze.imageSize = new Size(14, 14) 181 | let bronzeNum = bronzeArea.addText(list[i].bronze + ' ') 182 | bronzeNum.font = Font.systemFont(14) 183 | // 渲染总数icon及总奖牌数量 184 | let countArea = countList.addStack() 185 | let count = countArea.addImage(countFlag) 186 | count.imageSize = new Size(14, 14) 187 | let countNum = countArea.addText(list[i].count) 188 | countNum.font = Font.systemFont(14) 189 | } 190 | // 渲染分割线 191 | let _line = widget.addStack() 192 | let line = _line.addText('----------------------------------------') 193 | line.font = Font.lightSystemFont(8) 194 | 195 | // 渲染中国数据 196 | let china = list.find(v => v.countryid === 'CHN') 197 | let chn = widget.addStack() 198 | let chn_img = chn.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${china.countryid}.png`)) 199 | let chn_cn = chn.addText(` ${china.countryname} `) 200 | let chn_goldFlag = chn.addImage(goldFlag) 201 | let chn_gold = chn.addText(`${china.gold} `) 202 | let chn_silverFlag = chn.addImage(silverFlag) 203 | let chn_silver = chn.addText(`${china.silver} `) 204 | let chn_bronzeFlag = chn.addImage(bronzeFlag) 205 | let chn_bronze = chn.addText(`${china.bronze} `) 206 | let chn_countFlag = chn.addImage(countFlag) 207 | let chn_count = chn.addText(`${china.count} `) 208 | let chn_rank = chn.addText(`排名:${china.rank}`) 209 | chn_img.imageSize = new Size(16, 17) 210 | chn_cn.font = Font.boldSystemFont(14) 211 | chn_gold.font = Font.boldSystemFont(14) 212 | chn_silver.font = Font.boldSystemFont(14) 213 | chn_bronze.font = Font.boldSystemFont(14) 214 | chn_count.font = Font.boldSystemFont(14) 215 | chn_rank.font = Font.boldSystemFont(14) 216 | chn_goldFlag.imageSize = new Size(14, 14) 217 | chn_silverFlag.imageSize = new Size(14, 14) 218 | chn_bronzeFlag.imageSize = new Size(14, 14) 219 | chn_countFlag.imageSize = new Size(14, 14) 220 | return widget 221 | } else { 222 | return await renderErr() 223 | } 224 | } 225 | async function init() { 226 | try { 227 | let widget 228 | let data = await getDate() 229 | if (config.runsInWidget) { 230 | switch (config.widgetFamily) { 231 | case 'small': 232 | widget = await renderSmallWidget(data) 233 | break; 234 | default: 235 | widget = await renderMediumWidget(data) 236 | break; 237 | } 238 | Script.setWidget(widget) 239 | Script.complete() 240 | } else { 241 | widget = await renderMediumWidget(data) 242 | widget.presentMedium() 243 | Script.setWidget(widget) 244 | Script.complete() 245 | } 246 | } catch (error) { Script.complete() } 247 | } 248 | await init() -------------------------------------------------------------------------------- /scriptable/medal-list-of-winter-olympics-games/medal_list_of_WOG_v2.js: -------------------------------------------------------------------------------- 1 | // Variables used by Scriptable. 2 | // These must be at the very top of the file. Do not edit. 3 | // icon-color: deep-purple; icon-glyph: magic; 4 | 5 | const baseSettings = { 6 | day: { 7 | bgc: '#ffffff', 8 | fc: '#000000' 9 | }, 10 | night: { 11 | bgc: '#000000', 12 | fc: '#ffffff' 13 | } 14 | } 15 | 16 | function getSettings() { 17 | let settings = {} 18 | if (Keychain.contains(Script.name())) { 19 | settings = JSON.parse(Keychain.get(Script.name())) 20 | } 21 | return settings 22 | } 23 | function saveSettings(settings) { 24 | Keychain.set(Script.name(), JSON.stringify(settings)) 25 | } 26 | async function notify(title, msg) { 27 | const notification = new Notification() 28 | notification.title = title 29 | notification.body = msg 30 | return await notification.schedule() 31 | } 32 | async function getData() { 33 | const url = 'https://api.cntv.cn/olympic/getBjOlyMedals?serviceId=2022dongao&itemcode=GEN-------------------------------' 34 | const req = new Request(url) 35 | req.method = 'get' 36 | req.headers = { 37 | 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15', 38 | 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', 39 | 'host': 'api.cntv.cn' 40 | } 41 | const res = await req.loadJSON() 42 | if (res && res.data && res.data.medalsList) { 43 | return res.data.medalsList 44 | } else { 45 | return null 46 | } 47 | } 48 | async function getImage(url) { 49 | const req = new Request(url) 50 | req.method = 'get' 51 | return await req.loadImage() 52 | } 53 | function zeroPad(numToPad) { 54 | if (numToPad > 9) { 55 | return numToPad 56 | } else { 57 | return `0${numToPad}` 58 | } 59 | } 60 | const render = { 61 | Small: async () => { 62 | log("开始渲染小尺寸组件") 63 | let countryName = args.widgetParameter || '中国' 64 | let data = await getData() 65 | if (data) { 66 | data = data.find(item => item.countryname === countryName) 67 | if (data) { 68 | const currentSettings = getSettings() 69 | const widget = new ListWidget() 70 | const header = widget.addStack() 71 | const title = header.addText(`冬奥会奖牌`) 72 | title.font = Font.boldSystemFont(16) 73 | title.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 74 | title.centerAlignText() 75 | 76 | widget.addSpacer(5) 77 | 78 | const countryRow = widget.addStack() 79 | const countryFlag = countryRow.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${data.countryid}.png`)) 80 | countryFlag.imageSize = new Size(20, 20) 81 | const country = countryRow.addText(` ${data.countryname}`) 82 | country.font = Font.systemFont(16) 83 | country.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 84 | 85 | let goldRow = widget.addStack() 86 | let goldFlag = goldRow.addImage(await getImage(`https://search-operate.cdn.bcebos.com/aec5a78d18e7dd650651bb2164c6b0f1.png`)) 87 | goldFlag.leftAlignImage() 88 | goldFlag.imageSize = new Size(16, 16) 89 | let goldNum = goldRow.addText(' - ' + data.gold) 90 | goldNum.font = Font.systemFont(16) 91 | goldNum.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 92 | widget.addSpacer(3) 93 | 94 | let silverRow = widget.addStack() 95 | let silverFlag = silverRow.addImage(await getImage(`https://search-operate.cdn.bcebos.com/81aa79c261d9211749f1187cf3ff143f.png`)) 96 | silverFlag.leftAlignImage() 97 | silverFlag.imageSize = new Size(16, 16) 98 | let silverNum = silverRow.addText(' - ' + data.silver) 99 | silverNum.font = Font.systemFont(16) 100 | silverNum.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 101 | widget.addSpacer(3) 102 | 103 | let bronzeRow = widget.addStack() 104 | let bronzeFlag = bronzeRow.addImage(await getImage(`https://search-operate.cdn.bcebos.com/b554700c0272a25b10e0c8f0117f6b37.png`)) 105 | bronzeFlag.leftAlignImage() 106 | bronzeFlag.imageSize = new Size(16, 16) 107 | let bronzeNum = bronzeRow.addText(' - ' + data.bronze) 108 | bronzeNum.font = Font.systemFont(16) 109 | bronzeNum.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 110 | bronzeNum.rightAlignText() 111 | 112 | let lineRow = widget.addStack() 113 | let line = lineRow.addText('--------------------------------------') 114 | line.font = Font.lightSystemFont(5) 115 | line.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 116 | 117 | let countRow = widget.addStack() 118 | let count = countRow.addText("当前排名: ") 119 | count.font = Font.systemFont(16) 120 | count.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 121 | let countNum = countRow.addText(data.rank) 122 | countNum.font = Font.systemFont(16) 123 | countNum.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 124 | 125 | let updateTimeRow = widget.addStack() 126 | let reloadSymbol = SFSymbol.named("arrow.triangle.2.circlepath") 127 | let reloadImage = updateTimeRow.addImage(reloadSymbol.image) 128 | reloadImage.imageSize = new Size(8, 8) 129 | reloadImage.tintColor = Color.gray() 130 | let now = new Date() 131 | let updateTime = updateTimeRow.addText(` ${zeroPad(now.getMonth() + 1)}-${zeroPad(now.getDate())} ${zeroPad(now.getHours())}:${zeroPad(now.getMinutes())}`) 132 | updateTime.font = Font.systemFont(8) 133 | updateTime.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 134 | updateTime.rightAlignText() 135 | return widget 136 | } else { 137 | return renderError('没有找到所选国家的数据……') 138 | } 139 | } else { 140 | return renderError('获取数据失败,请稍后再试……') 141 | } 142 | }, 143 | Medium: async () => { 144 | log("开始渲染中尺寸组件") 145 | let pinCountry = args.widgetParameter || '中国' 146 | let data = await getData() 147 | if (data) { 148 | let widget = new ListWidget() 149 | const currentSettings = getSettings() 150 | 151 | let header = widget.addStack() 152 | 153 | let titleArea = header.addStack() 154 | let icon = titleArea.addImage(await getImage('https://s2.loli.net/2022/02/06/RPeQqYBf9UOFJDr.png')) 155 | icon.imageSize = new Size(20, 22) 156 | let title = titleArea.addText(' 北京冬奥会奖牌榜 ') 157 | title.font = Font.boldSystemFont(20) 158 | title.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 159 | 160 | let infoArea = header.addStack() 161 | infoArea.layoutVertically() 162 | let info = infoArea.addText('数据来自于CNTV') 163 | info.font = Font.lightSystemFont(10) 164 | info.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 165 | 166 | let updateTimeArea = infoArea.addStack() 167 | let reloadSymbol = SFSymbol.named("arrow.triangle.2.circlepath") 168 | let reloadImage = updateTimeArea.addImage(reloadSymbol.image) 169 | reloadImage.imageSize = new Size(8, 8) 170 | reloadImage.tintColor = Color.gray() 171 | let now = new Date() 172 | let updateTime = updateTimeArea.addText(` ${zeroPad(now.getMonth() + 1)}-${zeroPad(now.getDate())} ${zeroPad(now.getHours())}:${zeroPad(now.getMinutes())}`) 173 | updateTime.font = Font.systemFont(8) 174 | updateTime.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 175 | 176 | widget.addSpacer(5) 177 | let body = widget.addStack() 178 | body.layoutVertically() 179 | 180 | let bodyHeader = body.addStack() 181 | 182 | let bodyHeaderRankArea = bodyHeader.addStack() 183 | let headerRank = bodyHeaderRankArea.addText('排名') 184 | headerRank.font = Font.systemFont(14) 185 | headerRank.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 186 | bodyHeaderRankArea.layoutVertically() 187 | bodyHeader.addSpacer(10) 188 | 189 | let bodyHeaderRegionArea = bodyHeader.addStack() 190 | let headerRegion = bodyHeaderRegionArea.addText("国家/地区") 191 | headerRegion.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 192 | headerRegion.font = Font.systemFont(14) 193 | bodyHeaderRegionArea.layoutVertically() 194 | bodyHeader.addSpacer(25) 195 | 196 | let bodyHeaderGoldFlagArea = bodyHeader.addStack() 197 | let headerGoldFlag = bodyHeaderGoldFlagArea.addImage(await getImage(`https://search-operate.cdn.bcebos.com/aec5a78d18e7dd650651bb2164c6b0f1.png`)) 198 | headerGoldFlag.imageSize = new Size(14, 14) 199 | bodyHeaderGoldFlagArea.layoutVertically() 200 | bodyHeader.addSpacer(20) 201 | 202 | let bodyHeaderSilverFlagArea = bodyHeader.addStack() 203 | let headerSilverFlag = bodyHeaderSilverFlagArea.addImage(await getImage(`https://search-operate.cdn.bcebos.com/81aa79c261d9211749f1187cf3ff143f.png`)) 204 | headerSilverFlag.imageSize = new Size(14, 14) 205 | bodyHeaderSilverFlagArea.layoutVertically() 206 | bodyHeader.addSpacer(20) 207 | 208 | let bodyHeaderBronzeFlagArea = bodyHeader.addStack() 209 | let headerBronzeFlag = bodyHeaderBronzeFlagArea.addImage(await getImage(`https://search-operate.cdn.bcebos.com/b554700c0272a25b10e0c8f0117f6b37.png`)) 210 | headerBronzeFlag.imageSize = new Size(14, 14) 211 | bodyHeaderBronzeFlagArea.layoutVertically() 212 | bodyHeader.addSpacer(20) 213 | 214 | let bodyHeaderCountArea = bodyHeader.addStack() 215 | let headerCount = bodyHeaderCountArea.addText("总计") 216 | headerCount.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 217 | headerCount.font = Font.systemFont(14) 218 | bodyHeaderCountArea.layoutVertically() 219 | 220 | for (let i = 0; i < 3; i++) { 221 | let rank = bodyHeaderRankArea.addText(data[i].rank) 222 | rank.font = Font.systemFont(14) 223 | rank.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 224 | let region = bodyHeaderRegionArea.addStack() 225 | region.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${data[i].countryid}.png`)).imageSize = new Size(14, 14) 226 | let cn = region.addText(' ' + data[i].countryname) 227 | cn.font = Font.systemFont(14) 228 | cn.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 229 | let gold = bodyHeaderGoldFlagArea.addText(data[i].gold) 230 | gold.font = Font.systemFont(14) 231 | gold.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 232 | let silver = bodyHeaderSilverFlagArea.addText(data[i].silver) 233 | silver.font = Font.systemFont(14) 234 | silver.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 235 | let bronze = bodyHeaderBronzeFlagArea.addText(data[i].bronze) 236 | bronze.font = Font.systemFont(14) 237 | bronze.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 238 | let count = bodyHeaderCountArea.addText(data[i].count) 239 | count.font = Font.systemFont(14) 240 | count.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 241 | } 242 | 243 | let lineArea = body.addStack() 244 | let line = lineArea.addText(' ------------------------------------------------------') 245 | line.font = Font.lightSystemFont(10) 246 | line.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 247 | line.centerAlignText() 248 | 249 | let pinCountryData = data.find(item => item.countryname === pinCountry) 250 | if (pinCountryData) { 251 | let pindRow = body.addStack() 252 | 253 | let pindRowRankArea = pindRow.addStack() 254 | pindRowRankArea.layoutVertically() 255 | let rank = pindRowRankArea.addText(pinCountryData.rank) 256 | rank.font = Font.systemFont(14) 257 | rank.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 258 | pindRow.addSpacer(30) 259 | 260 | let pindRowRegionArea = pindRow.addStack() 261 | pindRowRegionArea.layoutVertically() 262 | let region = pindRowRegionArea.addStack() 263 | region.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${pinCountryData.countryid}.png`)).imageSize = new Size(14, 14) 264 | let cn = region.addText(' ' + pinCountryData.countryname) 265 | cn.font = Font.systemFont(14) 266 | cn.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 267 | 268 | pindRow.addSpacer(82) 269 | 270 | let pindRowGoldFlagArea = pindRow.addStack() 271 | pindRowGoldFlagArea.layoutVertically() 272 | let gold = pindRowGoldFlagArea.addText(pinCountryData.gold) 273 | gold.font = Font.systemFont(14) 274 | gold.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 275 | pindRow.addSpacer(25) 276 | 277 | let pindRowSilverFlagArea = pindRow.addStack() 278 | pindRowSilverFlagArea.layoutVertically() 279 | let silver = pindRowSilverFlagArea.addText(pinCountryData.silver) 280 | silver.font = Font.systemFont(14) 281 | silver.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 282 | pindRow.addSpacer(25) 283 | 284 | let pindRowBronzeFlagArea = pindRow.addStack() 285 | pindRowBronzeFlagArea.layoutVertically() 286 | let bronze = pindRowBronzeFlagArea.addText(pinCountryData.bronze) 287 | bronze.font = Font.systemFont(14) 288 | bronze.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 289 | pindRow.addSpacer(25) 290 | 291 | let pindRowCountArea = pindRow.addStack() 292 | pindRowCountArea.layoutVertically() 293 | let count = pindRowCountArea.addText(pinCountryData.count) 294 | count.font = Font.systemFont(14) 295 | count.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 296 | } 297 | return widget 298 | } else { 299 | return renderError('获取数据失败,请稍后再试……') 300 | } 301 | }, 302 | Large: async () => { 303 | log("开始渲染大尺寸组件") 304 | let data = await getData() 305 | if (data) { 306 | let widget = new ListWidget() 307 | const currentSettings = getSettings() 308 | 309 | let header = widget.addStack() 310 | 311 | let titleArea = header.addStack() 312 | let icon = titleArea.addImage(await getImage('https://s2.loli.net/2022/02/06/RPeQqYBf9UOFJDr.png')) 313 | icon.imageSize = new Size(20, 22) 314 | let title = titleArea.addText(' 北京冬奥会奖牌榜 ') 315 | title.font = Font.boldSystemFont(20) 316 | title.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 317 | 318 | let infoArea = header.addStack() 319 | infoArea.layoutVertically() 320 | let info = infoArea.addText('数据来自于CNTV') 321 | info.font = Font.lightSystemFont(10) 322 | info.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 323 | 324 | let updateTimeArea = infoArea.addStack() 325 | let reloadSymbol = SFSymbol.named("arrow.triangle.2.circlepath") 326 | let reloadImage = updateTimeArea.addImage(reloadSymbol.image) 327 | reloadImage.imageSize = new Size(8, 8) 328 | reloadImage.tintColor = Color.gray() 329 | let now = new Date() 330 | let updateTime = updateTimeArea.addText(` ${zeroPad(now.getMonth() + 1)}-${zeroPad(now.getDate())} ${zeroPad(now.getHours())}:${zeroPad(now.getMinutes())}`) 331 | updateTime.font = Font.systemFont(8) 332 | updateTime.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 333 | 334 | widget.addSpacer(5) 335 | let body = widget.addStack() 336 | body.layoutVertically() 337 | 338 | let bodyHeader = body.addStack() 339 | 340 | let bodyHeaderRankArea = bodyHeader.addStack() 341 | let headerRank = bodyHeaderRankArea.addText('排名') 342 | headerRank.font = Font.systemFont(14) 343 | headerRank.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 344 | bodyHeaderRankArea.layoutVertically() 345 | bodyHeader.addSpacer(10) 346 | 347 | let bodyHeaderRegionArea = bodyHeader.addStack() 348 | let headerRegion = bodyHeaderRegionArea.addText("国家/地区") 349 | headerRegion.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 350 | headerRegion.font = Font.systemFont(14) 351 | bodyHeaderRegionArea.layoutVertically() 352 | bodyHeader.addSpacer(25) 353 | 354 | let bodyHeaderGoldFlagArea = bodyHeader.addStack() 355 | let headerGoldFlag = bodyHeaderGoldFlagArea.addImage(await getImage(`https://search-operate.cdn.bcebos.com/aec5a78d18e7dd650651bb2164c6b0f1.png`)) 356 | headerGoldFlag.imageSize = new Size(14, 14) 357 | bodyHeaderGoldFlagArea.layoutVertically() 358 | bodyHeader.addSpacer(20) 359 | 360 | let bodyHeaderSilverFlagArea = bodyHeader.addStack() 361 | let headerSilverFlag = bodyHeaderSilverFlagArea.addImage(await getImage(`https://search-operate.cdn.bcebos.com/81aa79c261d9211749f1187cf3ff143f.png`)) 362 | headerSilverFlag.imageSize = new Size(14, 14) 363 | bodyHeaderSilverFlagArea.layoutVertically() 364 | bodyHeader.addSpacer(20) 365 | 366 | let bodyHeaderBronzeFlagArea = bodyHeader.addStack() 367 | let headerBronzeFlag = bodyHeaderBronzeFlagArea.addImage(await getImage(`https://search-operate.cdn.bcebos.com/b554700c0272a25b10e0c8f0117f6b37.png`)) 368 | headerBronzeFlag.imageSize = new Size(14, 14) 369 | bodyHeaderBronzeFlagArea.layoutVertically() 370 | bodyHeader.addSpacer(20) 371 | 372 | let bodyHeaderCountArea = bodyHeader.addStack() 373 | let headerCount = bodyHeaderCountArea.addText("总计") 374 | headerCount.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 375 | headerCount.font = Font.systemFont(14) 376 | bodyHeaderCountArea.layoutVertically() 377 | 378 | for (let i = 0; i < 15; i++) { 379 | let rank = bodyHeaderRankArea.addText(data[i].rank) 380 | rank.font = Font.systemFont(14) 381 | rank.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 382 | let region = bodyHeaderRegionArea.addStack() 383 | region.addImage(await getImage(`https://p1.img.cctvpic.com/sports/data/olympic/teamImg/${data[i].countryid}.png`)).imageSize = new Size(14, 14) 384 | let cn = region.addText(' ' + data[i].countryname) 385 | cn.font = Font.systemFont(14) 386 | cn.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 387 | let gold = bodyHeaderGoldFlagArea.addText(data[i].gold) 388 | gold.font = Font.systemFont(14) 389 | gold.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 390 | let silver = bodyHeaderSilverFlagArea.addText(data[i].silver) 391 | silver.font = Font.systemFont(14) 392 | silver.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 393 | let bronze = bodyHeaderBronzeFlagArea.addText(data[i].bronze) 394 | bronze.font = Font.systemFont(14) 395 | bronze.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 396 | let count = bodyHeaderCountArea.addText(data[i].count) 397 | count.font = Font.systemFont(14) 398 | count.textColor = new Color(Device.isUsingDarkAppearance() ? currentSettings.night.fc : currentSettings.day.fc) 399 | } 400 | return widget 401 | } else { 402 | return render.Error('获取数据失败,请稍后再试……') 403 | } 404 | }, 405 | Error: (notice = '发生错误了,请稍后再试或等待后更新脚本再试……') => { 406 | const widget = new ListWidget() 407 | const note = widget.addText(notice) 408 | note.centerAlignText() 409 | note.font = Font.boldSystemFont(20) 410 | note.textColor = Color.red() 411 | return widget 412 | } 413 | 414 | } 415 | async function renderPreferences() { 416 | 417 | const table = new UITable() 418 | const previewOnClick = async (item) => { 419 | if (item.val === 'ExtraLarge') { 420 | const alert = new Alert() 421 | alert.title = '无法完成渲染' 422 | alert.message = '因为没有iPad,很抱歉没有制作这一尺寸的组件' 423 | alert.presentAlert() 424 | return Script.complete() 425 | } 426 | try { 427 | let widget = await render[item.val]() 428 | let type = Device.isUsingDarkAppearance() ? 'night' : 'day' 429 | const settings = getSettings() 430 | widget.backgroundColor = new Color(settings[type]['bgc']) 431 | widget[`present${item.val}`]() 432 | } catch (error) { 433 | return await notify('发生错误', error.message) 434 | } 435 | } 436 | 437 | // 预览组件相关设置 438 | const previewHeader = new UITableRow() 439 | const previewHeaderTitle = previewHeader.addText('预览组件') 440 | previewHeaderTitle.centerAligned() 441 | previewHeaderTitle.titleFont = Font.boldSystemFont(20) 442 | table.addRow(previewHeader) 443 | // 可预览项 444 | const previewList = [ 445 | { 446 | icon: 'https://z3.ax1x.com/2021/03/26/6v5wIP.png', 447 | title: '小尺寸', 448 | val: 'Small', 449 | previewOnClick 450 | }, 451 | { 452 | icon: 'https://z3.ax1x.com/2021/03/26/6v5dat.png', 453 | title: '中尺寸', 454 | val: 'Medium', 455 | previewOnClick 456 | }, 457 | { 458 | icon: 'https://z3.ax1x.com/2021/03/26/6v5BPf.png', 459 | title: '大尺寸', 460 | val: 'Large', 461 | previewOnClick 462 | }, 463 | { 464 | icon: 'https://z3.ax1x.com/2021/03/26/6v5BPf.png', 465 | title: '特大尺寸', 466 | val: 'ExtraLarge', 467 | previewOnClick 468 | } 469 | ] 470 | // 将可预览项渲染到设置页面 471 | for (const vo of previewList) { 472 | const previewItemRow = new UITableRow() 473 | const icon = previewItemRow.addImageAtURL(vo.icon) 474 | icon.widthWeight = 10 475 | const title = previewItemRow.addText(vo.title) 476 | title.titleFont = Font.systemFont(15) 477 | title.widthWeight = 40 478 | title.leftAligned() 479 | const rightText = previewItemRow.addText('展示') 480 | title.titleFont = Font.systemFont(15) 481 | rightText.widthWeight = 50 482 | rightText.rightAligned() 483 | previewItemRow.onSelect = async () => { 484 | await vo.previewOnClick(vo) 485 | } 486 | if (vo.val === 'ExtraLarge') {//单独处理特大号小组件的现实 487 | if (Device.isPad() && parseInt(Device.systemVersion()) >= 15) { 488 | table.addRow(previewItemRow) 489 | } 490 | } else { 491 | table.addRow(previewItemRow) 492 | } 493 | } 494 | 495 | // 组件参数相关设置 496 | const settingHeader = new UITableRow() 497 | const settingHeaderTitle = settingHeader.addText('组件参数') 498 | settingHeaderTitle.centerAligned() 499 | settingHeaderTitle.titleFont = Font.boldSystemFont(20) 500 | table.addRow(settingHeader) 501 | const settingOnClick = async (item) => { 502 | let currentSettings = getSettings() 503 | if (item.type === 'reset') { 504 | const alert = new Alert() 505 | alert.title = item.title 506 | alert.message = '是否要将设置恢复默认?' 507 | alert.addAction('确定') 508 | alert.addCancelAction('取消') 509 | if ((await alert.presentAlert()) !== -1) { 510 | saveSettings(baseSettings) 511 | notify('恢复成功', `组件稍后刷新。`) 512 | } 513 | } else { 514 | const alert = new Alert() 515 | alert.title = item.title 516 | alert.message = '请填写Hex格式的颜色' 517 | alert.addTextField('', item.val) 518 | alert.addAction('确定') 519 | alert.addCancelAction('取消') 520 | if ((await alert.presentAlert()) !== -1) { 521 | currentSettings[item.type][item.key] = alert.textFieldValue(0) 522 | saveSettings(currentSettings) 523 | notify('修改成功', `修改${item.title}成功,组件稍后刷新。`) 524 | } 525 | } 526 | } 527 | const currentSettings = getSettings() 528 | const settingList = [ 529 | { 530 | title: '白天背景颜色', 531 | val: currentSettings.day.bgc, 532 | key: 'bgc', 533 | type: 'day', 534 | settingOnClick 535 | }, 536 | { 537 | title: '晚上背景颜色', 538 | key: 'bgc', 539 | type: 'night', 540 | val: currentSettings.night.bgc, 541 | settingOnClick 542 | }, 543 | { 544 | title: '白天字体颜色', 545 | key: 'fc', 546 | type: 'day', 547 | val: currentSettings.day.fc, 548 | settingOnClick 549 | }, 550 | { 551 | title: '晚上字体颜色', 552 | val: currentSettings.night.fc, 553 | type: 'night', 554 | key: 'fc', 555 | settingOnClick 556 | }, 557 | { 558 | title: '恢复默认设置', 559 | val: 'reset', 560 | type: 'reset', 561 | key: 'reset', 562 | settingOnClick 563 | } 564 | ] 565 | 566 | for (const vo of settingList) { 567 | const settingListRow = new UITableRow() 568 | const title = settingListRow.addText(vo.title) 569 | title.titleFont = Font.systemFont(15) 570 | title.widthWeight = 50 571 | title.leftAligned() 572 | const rightText = settingListRow.addText(vo.val) 573 | rightText.titleFont = Font.systemFont(15) 574 | rightText.titleColor = vo.type === 'reset' ? Color.red() : Color.blue() 575 | rightText.widthWeight = 50 576 | rightText.rightAligned() 577 | table.addRow(settingListRow) 578 | settingListRow.onSelect = async () => { 579 | await vo.settingOnClick(vo) 580 | } 581 | } 582 | 583 | table.reload() 584 | return table.present() 585 | } 586 | 587 | async function init() { 588 | 589 | let currentSettings = getSettings() 590 | if (!Object.keys(currentSettings).length) { 591 | saveSettings(baseSettings) 592 | } 593 | if (config.runsInWidget) {// 在组件运行 594 | try { 595 | let widget 596 | switch (config.widgetFamily) { 597 | case "small"://渲染小组件 598 | widget = await render.Small() 599 | break; 600 | case 'medium'://渲染中组件 601 | widget = await render.Medium() 602 | break; 603 | case 'large'://渲染大组件 604 | widget = await render.Large() 605 | break; 606 | default://渲染iPad用超大组件 607 | break; 608 | 609 | } 610 | let type = Device.isUsingDarkAppearance() ? 'night' : 'day' 611 | const settings = getSettings() 612 | widget.backgroundColor = new Color(settings[type].bgc) 613 | Script.setWidget(widget) 614 | } catch (error) { 615 | return await notify('发生错误', error.message) 616 | } 617 | } else if (config.runsInApp) {//在应用中运行 618 | console.log('渲染配置页面') 619 | await renderPreferences() 620 | } 621 | 622 | } 623 | 624 | await init() -------------------------------------------------------------------------------- /scriptable/medal-list-of-winter-olympics-games/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zooPanda/Learning-together/752e549fad7b9be62f33c8f9accd3957d72fb89b/scriptable/medal-list-of-winter-olympics-games/screenshot.jpg -------------------------------------------------------------------------------- /weather-bot/README.md: -------------------------------------------------------------------------------- 1 | # 天气查询机器人 2 | > 发送查询地址 将返回天气信息 3 | 4 | ### 准备 5 | 6 | 到[和风天气开发者中心](https://dev.qweather.com)申请 `web api key` 7 | 8 | 找 [@BotFather](https://t.me/BotFather) 申请 `Bot Token` 9 | 10 | 将信息分别填写到 `src/app.ts` 的 `line:5-6` 11 | 12 | ### 运行 13 | 14 | ```shell 15 | npm i #安装依赖 16 | npm run start 17 | ``` 18 | -------------------------------------------------------------------------------- /weather-bot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fanli-bot", 3 | "description": "京东返利机器人", 4 | "version": "1.0.0", 5 | "main": "dist/app.js", 6 | "license": "MIT", 7 | "dependencies": { 8 | "axios": "^0.25.0", 9 | "node-telegram-bot-api": "^0.56.0" 10 | }, 11 | "devDependencies": { 12 | "@types/axios": "^0.14.0", 13 | "@types/node": "^17.0.17", 14 | "@types/node-telegram-bot-api": "^0.56.0" 15 | }, 16 | "scripts": { 17 | "start": "tsc && node dist/app.js", 18 | "dev": "nodemon scr/app.ts" 19 | } 20 | } -------------------------------------------------------------------------------- /weather-bot/src/app.ts: -------------------------------------------------------------------------------- 1 | import TelegramBot from "node-telegram-bot-api"; 2 | import axios from "axios"; 3 | import { URL } from "url"; 4 | 5 | const BOT_TOKEN = '';//你申请到的bot token 6 | const HEFENG_KEY = '';//你申请到的和风天气的api key 7 | 8 | const bot = new TelegramBot(BOT_TOKEN, { polling: true }) 9 | 10 | /** 11 | * 监听开始命令 12 | */ 13 | bot.onText(/\/start/, async msg => { 14 | try { 15 | await bot.sendMessage(msg.from.id, '查询天气,请回复【天气 你需要查询天气的地址】来获取天气信息') 16 | } catch (error) { 17 | console.log('/start', error); 18 | } 19 | }) 20 | /** 21 | * 监听天气查询请求 22 | */ 23 | bot.onText(/^天气 /, async msg => { 24 | try { 25 | let local = msg.text.split(" ")[1] 26 | if (local) { 27 | await weather(local, msg.from.id) 28 | } else { 29 | await bot.sendMessage(msg.chat.id, "没有接收到你需要查询天气的地方哟~") 30 | } 31 | } catch (error) { 32 | console.log('天气', error); 33 | } 34 | }) 35 | 36 | /** 37 | * 监听回调查询 38 | */ 39 | bot.on('callback_query', async query => { 40 | const { data, from, message } = query 41 | try { 42 | // 如果回调查询有参数且参数为字符串 43 | if (data && typeof data === 'string') { 44 | // 通过下划线分割区分回调命令 45 | let cmd = data.split("_") 46 | // 如果有命令 47 | if (cmd) { 48 | // 根据命令判断该如何处理 49 | switch (cmd[0]) { 50 | case 'weather': 51 | let weather_data = await weatherInfo(cmd[1]) 52 | await bot.sendMessage(from.id, ` 53 | ${cmd[2]}当前的天气是${weather_data.now.text} 54 | 温度:${weather_data.now.temp}°C 55 | 体感温度:${weather_data.now.feelsLike}°C 56 | 相对湿度:${weather_data.now.humidity}% 57 | 风向:${weather_data.now.windDir} ${weather_data.now.windScale}级 58 | 详情:${weather_data.fxLink} 59 | `) 60 | break; 61 | 62 | default: 63 | break; 64 | } 65 | } 66 | } 67 | await bot.deleteMessage(from.id, `${message.message_id}`) 68 | 69 | } catch (error) { 70 | console.log('callback_query', data, error); 71 | } 72 | }) 73 | 74 | /** 75 | * 获取具体位置的实时天气信息 76 | * @param location 请求的地址ID 77 | */ 78 | async function weatherInfo(location: string) { 79 | const reqLink = new URL('https://devapi.qweather.com/v7/weather/now') 80 | reqLink.searchParams.append('key', HEFENG_KEY) 81 | reqLink.searchParams.append('location', location) 82 | try { 83 | const { data } = await axios.get(reqLink.href) 84 | return data 85 | } catch (error) { 86 | console.log('getWearher', error); 87 | return null 88 | } 89 | } 90 | /** 91 | * 通过关键字查找地址 92 | * @param {string} text 用于模糊查询地址的关键字 93 | * @returns 地址列表 94 | */ 95 | async function findLocationId(text: string) { 96 | const reqLink = new URL('https://geoapi.qweather.com/v2/city/lookup') 97 | reqLink.searchParams.append('key', HEFENG_KEY) 98 | reqLink.searchParams.append('location', text) 99 | try { 100 | const { data } = await axios.get(reqLink.href) 101 | return data 102 | } catch (error) { 103 | console.log('findLocationId', error); 104 | return null 105 | } 106 | } 107 | 108 | /** 109 | * 天气查询处理函数 110 | * @param {string} text 需要查询的地址 111 | * @param {number|string} id 用户ID 112 | */ 113 | async function weather(text: string, id: number) { 114 | try { 115 | let list = await findLocationId(text) 116 | if (list) { 117 | //如果获取到地址 118 | if (list.length > 1) { 119 | // 如果获取到的可选位置特别多 120 | let buttons = []//可选按钮 121 | let rowButton = []//每一行按钮 122 | for (let i = 0; i < list.length; i++) { 123 | rowButton.push({ 124 | text: list[i].adm1 + list[i].adm2 + list[i].name, 125 | callback_data: 'weather_' + list[i].id + `_${list[i].name}` 126 | }) 127 | if (i !== list.length - 1) { 128 | if (rowButton.length === 2) { 129 | buttons.push(rowButton) 130 | rowButton = [] 131 | } 132 | } else { 133 | buttons.push(rowButton) 134 | } 135 | } 136 | await bot.sendMessage(id, '有几个相似的地方,你要哪一个?', { 137 | reply_markup: { 138 | inline_keyboard: buttons 139 | } 140 | }) 141 | 142 | } else { 143 | //只有一个地方了,没得选。 144 | let weather_data = await weatherInfo(list[0].id) 145 | await bot.sendMessage(id, ` 146 | ${list[0].name}当前的天气是${weather_data.now.text} 147 | 温度:${weather_data.now.temp}°C 148 | 体感温度:${weather_data.now.feelsLike}°C 149 | 相对湿度:${weather_data.now.humidity}% 150 | 风向:${weather_data.now.windDir} ${weather_data.now.windScale}级 151 | 详情:${weather_data.fxLink} 152 | `) 153 | } 154 | } else { 155 | //没有获取到地址 156 | await bot.sendMessage(id, '很抱歉,没有找到这个地址。') 157 | } 158 | } catch (error) { 159 | console.log('weather', error); 160 | } 161 | } -------------------------------------------------------------------------------- /weather-bot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "resolveJsonModule": true, 6 | "esModuleInterop": true, 7 | "skipLibCheck": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "watch": false, 10 | "rootDir": "./src", 11 | "outDir": "./dist", 12 | "noImplicitAny": false, 13 | "declaration": true 14 | }, 15 | "include": [ 16 | "src/**/*" 17 | ] 18 | } -------------------------------------------------------------------------------- /weather-bot/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/axios@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" 8 | integrity sha1-7CMA++fX3d1+udOr+HmZlkyvzkY= 9 | dependencies: 10 | axios "*" 11 | 12 | "@types/caseless@*": 13 | version "0.12.2" 14 | resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" 15 | integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== 16 | 17 | "@types/node-telegram-bot-api@^0.56.0": 18 | version "0.56.0" 19 | resolved "https://registry.yarnpkg.com/@types/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz#0484a0de6399b109598c7d79164b744cc750faf9" 20 | integrity sha512-RmJyBHCM3wItNP5cmovj3Imt2Cp94dMowFttBCsla0yPo5TR8jgplBhAU/UMsAhfT/ozUKXIQ+3PfEc/hH7LGg== 21 | dependencies: 22 | "@types/node" "*" 23 | "@types/request" "*" 24 | 25 | "@types/node@*", "@types/node@^17.0.17": 26 | version "17.0.17" 27 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" 28 | integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== 29 | 30 | "@types/request@*": 31 | version "2.48.8" 32 | resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" 33 | integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== 34 | dependencies: 35 | "@types/caseless" "*" 36 | "@types/node" "*" 37 | "@types/tough-cookie" "*" 38 | form-data "^2.5.0" 39 | 40 | "@types/tough-cookie@*": 41 | version "4.0.1" 42 | resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" 43 | integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== 44 | 45 | ajv@^6.12.3: 46 | version "6.12.6" 47 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 48 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 49 | dependencies: 50 | fast-deep-equal "^3.1.1" 51 | fast-json-stable-stringify "^2.0.0" 52 | json-schema-traverse "^0.4.1" 53 | uri-js "^4.2.2" 54 | 55 | array.prototype.findindex@^2.0.2: 56 | version "2.1.0" 57 | resolved "https://registry.yarnpkg.com/array.prototype.findindex/-/array.prototype.findindex-2.1.0.tgz#f43f8ed823274f0733647ee403b2c0c9771a97fe" 58 | integrity sha512-25kJHCjXltdtljjwcyKvCTywmbUAeTJVB2ADVe0oP4jcefsd+K9pJJ3IdHPahLICoszcCLoNF+evWpEduzBlng== 59 | dependencies: 60 | define-properties "^1.1.3" 61 | es-abstract "^1.17.4" 62 | 63 | asn1@~0.2.3: 64 | version "0.2.6" 65 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" 66 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== 67 | dependencies: 68 | safer-buffer "~2.1.0" 69 | 70 | assert-plus@1.0.0, assert-plus@^1.0.0: 71 | version "1.0.0" 72 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 73 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 74 | 75 | asynckit@^0.4.0: 76 | version "0.4.0" 77 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 78 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 79 | 80 | aws-sign2@~0.7.0: 81 | version "0.7.0" 82 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 83 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 84 | 85 | aws4@^1.8.0: 86 | version "1.11.0" 87 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 88 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 89 | 90 | axios@*, axios@^0.25.0: 91 | version "0.25.0" 92 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" 93 | integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== 94 | dependencies: 95 | follow-redirects "^1.14.7" 96 | 97 | bcrypt-pbkdf@^1.0.0: 98 | version "1.0.2" 99 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 100 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 101 | dependencies: 102 | tweetnacl "^0.14.3" 103 | 104 | bl@^1.2.3: 105 | version "1.2.3" 106 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" 107 | integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== 108 | dependencies: 109 | readable-stream "^2.3.5" 110 | safe-buffer "^5.1.1" 111 | 112 | bluebird@^3.5.0, bluebird@^3.5.1: 113 | version "3.7.2" 114 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 115 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 116 | 117 | call-bind@^1.0.0, call-bind@^1.0.2: 118 | version "1.0.2" 119 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 120 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 121 | dependencies: 122 | function-bind "^1.1.1" 123 | get-intrinsic "^1.0.2" 124 | 125 | caseless@~0.12.0: 126 | version "0.12.0" 127 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 128 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 129 | 130 | combined-stream@^1.0.6, combined-stream@~1.0.6: 131 | version "1.0.8" 132 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 133 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 134 | dependencies: 135 | delayed-stream "~1.0.0" 136 | 137 | core-util-is@1.0.2: 138 | version "1.0.2" 139 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 140 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 141 | 142 | core-util-is@~1.0.0: 143 | version "1.0.3" 144 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 145 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 146 | 147 | dashdash@^1.12.0: 148 | version "1.14.1" 149 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 150 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 151 | dependencies: 152 | assert-plus "^1.0.0" 153 | 154 | debug@^3.1.0: 155 | version "3.2.7" 156 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 157 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 158 | dependencies: 159 | ms "^2.1.1" 160 | 161 | define-properties@^1.1.3: 162 | version "1.1.3" 163 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 164 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 165 | dependencies: 166 | object-keys "^1.0.12" 167 | 168 | delayed-stream@~1.0.0: 169 | version "1.0.0" 170 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 171 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 172 | 173 | depd@^1.1.1: 174 | version "1.1.2" 175 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 176 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 177 | 178 | ecc-jsbn@~0.1.1: 179 | version "0.1.2" 180 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 181 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 182 | dependencies: 183 | jsbn "~0.1.0" 184 | safer-buffer "^2.1.0" 185 | 186 | end-of-stream@^1.1.0: 187 | version "1.4.4" 188 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 189 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 190 | dependencies: 191 | once "^1.4.0" 192 | 193 | es-abstract@^1.17.4: 194 | version "1.19.1" 195 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" 196 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 197 | dependencies: 198 | call-bind "^1.0.2" 199 | es-to-primitive "^1.2.1" 200 | function-bind "^1.1.1" 201 | get-intrinsic "^1.1.1" 202 | get-symbol-description "^1.0.0" 203 | has "^1.0.3" 204 | has-symbols "^1.0.2" 205 | internal-slot "^1.0.3" 206 | is-callable "^1.2.4" 207 | is-negative-zero "^2.0.1" 208 | is-regex "^1.1.4" 209 | is-shared-array-buffer "^1.0.1" 210 | is-string "^1.0.7" 211 | is-weakref "^1.0.1" 212 | object-inspect "^1.11.0" 213 | object-keys "^1.1.1" 214 | object.assign "^4.1.2" 215 | string.prototype.trimend "^1.0.4" 216 | string.prototype.trimstart "^1.0.4" 217 | unbox-primitive "^1.0.1" 218 | 219 | es-to-primitive@^1.2.1: 220 | version "1.2.1" 221 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 222 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 223 | dependencies: 224 | is-callable "^1.1.4" 225 | is-date-object "^1.0.1" 226 | is-symbol "^1.0.2" 227 | 228 | eventemitter3@^3.0.0: 229 | version "3.1.2" 230 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" 231 | integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== 232 | 233 | extend@~3.0.2: 234 | version "3.0.2" 235 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 236 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 237 | 238 | extsprintf@1.3.0: 239 | version "1.3.0" 240 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 241 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 242 | 243 | extsprintf@^1.2.0: 244 | version "1.4.1" 245 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" 246 | integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== 247 | 248 | fast-deep-equal@^3.1.1: 249 | version "3.1.3" 250 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 251 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 252 | 253 | fast-json-stable-stringify@^2.0.0: 254 | version "2.1.0" 255 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 256 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 257 | 258 | file-type@^3.9.0: 259 | version "3.9.0" 260 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 261 | integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= 262 | 263 | follow-redirects@^1.14.7: 264 | version "1.14.8" 265 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" 266 | integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== 267 | 268 | forever-agent@~0.6.1: 269 | version "0.6.1" 270 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 271 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 272 | 273 | form-data@^2.5.0: 274 | version "2.5.1" 275 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 276 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 277 | dependencies: 278 | asynckit "^0.4.0" 279 | combined-stream "^1.0.6" 280 | mime-types "^2.1.12" 281 | 282 | form-data@~2.3.2: 283 | version "2.3.3" 284 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 285 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 286 | dependencies: 287 | asynckit "^0.4.0" 288 | combined-stream "^1.0.6" 289 | mime-types "^2.1.12" 290 | 291 | function-bind@^1.1.1: 292 | version "1.1.1" 293 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 294 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 295 | 296 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 297 | version "1.1.1" 298 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 299 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 300 | dependencies: 301 | function-bind "^1.1.1" 302 | has "^1.0.3" 303 | has-symbols "^1.0.1" 304 | 305 | get-symbol-description@^1.0.0: 306 | version "1.0.0" 307 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 308 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 309 | dependencies: 310 | call-bind "^1.0.2" 311 | get-intrinsic "^1.1.1" 312 | 313 | getpass@^0.1.1: 314 | version "0.1.7" 315 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 316 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 317 | dependencies: 318 | assert-plus "^1.0.0" 319 | 320 | har-schema@^2.0.0: 321 | version "2.0.0" 322 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 323 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 324 | 325 | har-validator@~5.1.3: 326 | version "5.1.5" 327 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 328 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 329 | dependencies: 330 | ajv "^6.12.3" 331 | har-schema "^2.0.0" 332 | 333 | has-bigints@^1.0.1: 334 | version "1.0.1" 335 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 336 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 337 | 338 | has-symbols@^1.0.1, has-symbols@^1.0.2: 339 | version "1.0.2" 340 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 341 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 342 | 343 | has-tostringtag@^1.0.0: 344 | version "1.0.0" 345 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 346 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 347 | dependencies: 348 | has-symbols "^1.0.2" 349 | 350 | has@^1.0.3: 351 | version "1.0.3" 352 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 353 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 354 | dependencies: 355 | function-bind "^1.1.1" 356 | 357 | http-signature@~1.2.0: 358 | version "1.2.0" 359 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 360 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 361 | dependencies: 362 | assert-plus "^1.0.0" 363 | jsprim "^1.2.2" 364 | sshpk "^1.7.0" 365 | 366 | inherits@~2.0.3: 367 | version "2.0.4" 368 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 369 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 370 | 371 | internal-slot@^1.0.3: 372 | version "1.0.3" 373 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 374 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 375 | dependencies: 376 | get-intrinsic "^1.1.0" 377 | has "^1.0.3" 378 | side-channel "^1.0.4" 379 | 380 | is-bigint@^1.0.1: 381 | version "1.0.4" 382 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 383 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 384 | dependencies: 385 | has-bigints "^1.0.1" 386 | 387 | is-boolean-object@^1.1.0: 388 | version "1.1.2" 389 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 390 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 391 | dependencies: 392 | call-bind "^1.0.2" 393 | has-tostringtag "^1.0.0" 394 | 395 | is-callable@^1.1.4, is-callable@^1.2.4: 396 | version "1.2.4" 397 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 398 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 399 | 400 | is-date-object@^1.0.1: 401 | version "1.0.5" 402 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 403 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 404 | dependencies: 405 | has-tostringtag "^1.0.0" 406 | 407 | is-negative-zero@^2.0.1: 408 | version "2.0.2" 409 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 410 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 411 | 412 | is-number-object@^1.0.4: 413 | version "1.0.6" 414 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" 415 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 416 | dependencies: 417 | has-tostringtag "^1.0.0" 418 | 419 | is-regex@^1.1.4: 420 | version "1.1.4" 421 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 422 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 423 | dependencies: 424 | call-bind "^1.0.2" 425 | has-tostringtag "^1.0.0" 426 | 427 | is-shared-array-buffer@^1.0.1: 428 | version "1.0.1" 429 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" 430 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 431 | 432 | is-string@^1.0.5, is-string@^1.0.7: 433 | version "1.0.7" 434 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 435 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 436 | dependencies: 437 | has-tostringtag "^1.0.0" 438 | 439 | is-symbol@^1.0.2, is-symbol@^1.0.3: 440 | version "1.0.4" 441 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 442 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 443 | dependencies: 444 | has-symbols "^1.0.2" 445 | 446 | is-typedarray@~1.0.0: 447 | version "1.0.0" 448 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 449 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 450 | 451 | is-weakref@^1.0.1: 452 | version "1.0.2" 453 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 454 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 455 | dependencies: 456 | call-bind "^1.0.2" 457 | 458 | isarray@~1.0.0: 459 | version "1.0.0" 460 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 461 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 462 | 463 | isstream@~0.1.2: 464 | version "0.1.2" 465 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 466 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 467 | 468 | jsbn@~0.1.0: 469 | version "0.1.1" 470 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 471 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 472 | 473 | json-schema-traverse@^0.4.1: 474 | version "0.4.1" 475 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 476 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 477 | 478 | json-schema@0.4.0: 479 | version "0.4.0" 480 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" 481 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 482 | 483 | json-stringify-safe@~5.0.1: 484 | version "5.0.1" 485 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 486 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 487 | 488 | jsprim@^1.2.2: 489 | version "1.4.2" 490 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" 491 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== 492 | dependencies: 493 | assert-plus "1.0.0" 494 | extsprintf "1.3.0" 495 | json-schema "0.4.0" 496 | verror "1.10.0" 497 | 498 | lodash@^4.17.19: 499 | version "4.17.21" 500 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 501 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 502 | 503 | mime-db@1.51.0: 504 | version "1.51.0" 505 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 506 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 507 | 508 | mime-types@^2.1.12, mime-types@~2.1.19: 509 | version "2.1.34" 510 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 511 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 512 | dependencies: 513 | mime-db "1.51.0" 514 | 515 | mime@^1.6.0: 516 | version "1.6.0" 517 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 518 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 519 | 520 | ms@^2.1.1: 521 | version "2.1.3" 522 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 523 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 524 | 525 | node-telegram-bot-api@^0.56.0: 526 | version "0.56.0" 527 | resolved "https://registry.yarnpkg.com/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz#caf653574ed30530e2855a038b4d806f65c48677" 528 | integrity sha512-gKUlH/uUXdSJ++6y1Y16qEThZouecfl4twuPKe6V2BPFDDfom9j2QMlxfslPEjZPH2ZXlA1S/uoRCKtIjzuaLw== 529 | dependencies: 530 | array.prototype.findindex "^2.0.2" 531 | bl "^1.2.3" 532 | bluebird "^3.5.1" 533 | debug "^3.1.0" 534 | depd "^1.1.1" 535 | eventemitter3 "^3.0.0" 536 | file-type "^3.9.0" 537 | mime "^1.6.0" 538 | pump "^2.0.0" 539 | request "^2.83.0" 540 | request-promise "^4.2.2" 541 | 542 | oauth-sign@~0.9.0: 543 | version "0.9.0" 544 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 545 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 546 | 547 | object-inspect@^1.11.0, object-inspect@^1.9.0: 548 | version "1.12.0" 549 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 550 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 551 | 552 | object-keys@^1.0.12, object-keys@^1.1.1: 553 | version "1.1.1" 554 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 555 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 556 | 557 | object.assign@^4.1.2: 558 | version "4.1.2" 559 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 560 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 561 | dependencies: 562 | call-bind "^1.0.0" 563 | define-properties "^1.1.3" 564 | has-symbols "^1.0.1" 565 | object-keys "^1.1.1" 566 | 567 | once@^1.3.1, once@^1.4.0: 568 | version "1.4.0" 569 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 570 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 571 | dependencies: 572 | wrappy "1" 573 | 574 | performance-now@^2.1.0: 575 | version "2.1.0" 576 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 577 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 578 | 579 | process-nextick-args@~2.0.0: 580 | version "2.0.1" 581 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 582 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 583 | 584 | psl@^1.1.28: 585 | version "1.8.0" 586 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 587 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 588 | 589 | pump@^2.0.0: 590 | version "2.0.1" 591 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 592 | integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 593 | dependencies: 594 | end-of-stream "^1.1.0" 595 | once "^1.3.1" 596 | 597 | punycode@^2.1.0, punycode@^2.1.1: 598 | version "2.1.1" 599 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 600 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 601 | 602 | qs@~6.5.2: 603 | version "6.5.3" 604 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" 605 | integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== 606 | 607 | readable-stream@^2.3.5: 608 | version "2.3.7" 609 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 610 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 611 | dependencies: 612 | core-util-is "~1.0.0" 613 | inherits "~2.0.3" 614 | isarray "~1.0.0" 615 | process-nextick-args "~2.0.0" 616 | safe-buffer "~5.1.1" 617 | string_decoder "~1.1.1" 618 | util-deprecate "~1.0.1" 619 | 620 | request-promise-core@1.1.4: 621 | version "1.1.4" 622 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" 623 | integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== 624 | dependencies: 625 | lodash "^4.17.19" 626 | 627 | request-promise@^4.2.2: 628 | version "4.2.6" 629 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.6.tgz#7e7e5b9578630e6f598e3813c0f8eb342a27f0a2" 630 | integrity sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== 631 | dependencies: 632 | bluebird "^3.5.0" 633 | request-promise-core "1.1.4" 634 | stealthy-require "^1.1.1" 635 | tough-cookie "^2.3.3" 636 | 637 | request@^2.83.0: 638 | version "2.88.2" 639 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 640 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 641 | dependencies: 642 | aws-sign2 "~0.7.0" 643 | aws4 "^1.8.0" 644 | caseless "~0.12.0" 645 | combined-stream "~1.0.6" 646 | extend "~3.0.2" 647 | forever-agent "~0.6.1" 648 | form-data "~2.3.2" 649 | har-validator "~5.1.3" 650 | http-signature "~1.2.0" 651 | is-typedarray "~1.0.0" 652 | isstream "~0.1.2" 653 | json-stringify-safe "~5.0.1" 654 | mime-types "~2.1.19" 655 | oauth-sign "~0.9.0" 656 | performance-now "^2.1.0" 657 | qs "~6.5.2" 658 | safe-buffer "^5.1.2" 659 | tough-cookie "~2.5.0" 660 | tunnel-agent "^0.6.0" 661 | uuid "^3.3.2" 662 | 663 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 664 | version "5.2.1" 665 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 666 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 667 | 668 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 669 | version "5.1.2" 670 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 671 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 672 | 673 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 674 | version "2.1.2" 675 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 676 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 677 | 678 | side-channel@^1.0.4: 679 | version "1.0.4" 680 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 681 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 682 | dependencies: 683 | call-bind "^1.0.0" 684 | get-intrinsic "^1.0.2" 685 | object-inspect "^1.9.0" 686 | 687 | sshpk@^1.7.0: 688 | version "1.17.0" 689 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" 690 | integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== 691 | dependencies: 692 | asn1 "~0.2.3" 693 | assert-plus "^1.0.0" 694 | bcrypt-pbkdf "^1.0.0" 695 | dashdash "^1.12.0" 696 | ecc-jsbn "~0.1.1" 697 | getpass "^0.1.1" 698 | jsbn "~0.1.0" 699 | safer-buffer "^2.0.2" 700 | tweetnacl "~0.14.0" 701 | 702 | stealthy-require@^1.1.1: 703 | version "1.1.1" 704 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 705 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 706 | 707 | string.prototype.trimend@^1.0.4: 708 | version "1.0.4" 709 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 710 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 711 | dependencies: 712 | call-bind "^1.0.2" 713 | define-properties "^1.1.3" 714 | 715 | string.prototype.trimstart@^1.0.4: 716 | version "1.0.4" 717 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 718 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 719 | dependencies: 720 | call-bind "^1.0.2" 721 | define-properties "^1.1.3" 722 | 723 | string_decoder@~1.1.1: 724 | version "1.1.1" 725 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 726 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 727 | dependencies: 728 | safe-buffer "~5.1.0" 729 | 730 | tough-cookie@^2.3.3, tough-cookie@~2.5.0: 731 | version "2.5.0" 732 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 733 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 734 | dependencies: 735 | psl "^1.1.28" 736 | punycode "^2.1.1" 737 | 738 | tunnel-agent@^0.6.0: 739 | version "0.6.0" 740 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 741 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 742 | dependencies: 743 | safe-buffer "^5.0.1" 744 | 745 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 746 | version "0.14.5" 747 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 748 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 749 | 750 | unbox-primitive@^1.0.1: 751 | version "1.0.1" 752 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 753 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 754 | dependencies: 755 | function-bind "^1.1.1" 756 | has-bigints "^1.0.1" 757 | has-symbols "^1.0.2" 758 | which-boxed-primitive "^1.0.2" 759 | 760 | uri-js@^4.2.2: 761 | version "4.4.1" 762 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 763 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 764 | dependencies: 765 | punycode "^2.1.0" 766 | 767 | util-deprecate@~1.0.1: 768 | version "1.0.2" 769 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 770 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 771 | 772 | uuid@^3.3.2: 773 | version "3.4.0" 774 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 775 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 776 | 777 | verror@1.10.0: 778 | version "1.10.0" 779 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 780 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 781 | dependencies: 782 | assert-plus "^1.0.0" 783 | core-util-is "1.0.2" 784 | extsprintf "^1.2.0" 785 | 786 | which-boxed-primitive@^1.0.2: 787 | version "1.0.2" 788 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 789 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 790 | dependencies: 791 | is-bigint "^1.0.1" 792 | is-boolean-object "^1.1.0" 793 | is-number-object "^1.0.4" 794 | is-string "^1.0.5" 795 | is-symbol "^1.0.3" 796 | 797 | wrappy@1: 798 | version "1.0.2" 799 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 800 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 801 | --------------------------------------------------------------------------------