diff --git a/README.md b/README.md
index fd0046a..f88f13e 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,6 @@
# GenshinCloudPlayHelpper
-每天帮你获取15分钟云原神时间~
-
-## ⚠️请不要进行宣传,谢谢!
-
-## 一旦发现宣传就删库跑路!
+每天帮你获取 15 分钟云原神时间~
## 配置教程
@@ -23,7 +19,7 @@
}
```
-> sendMail 一个bool 代表是否在运行结束后将结果发送至指定邮箱,false时mailConfig内的内容可不填
+> sendMail 一个 bool 代表是否在运行结束后将结果发送至指定邮箱,false 时 mailConfig 内的内容可不填
> mailConfig 具体配置
>
> > user 发送方邮箱
@@ -36,7 +32,7 @@
> >
> > smtpPort smtp 服务器端口
> >
-> > smtpSecure 如果smtp服务器使用SSL/TLS,那么为true,如果使用STARTTLS或不使用加密,那么为false
+> > smtpSecure 如果 smtp 服务器使用 SSL/TLS,那么为 true,如果使用 STARTTLS 或不使用加密,那么为 false
对于常用的邮件而言,配置列举如下
@@ -67,30 +63,30 @@
具体数据 请看“抓包”环节
> token 是在云原神登录后用于验证的标记
-> client_type 1代表ios设备 2代表android&鸿蒙设备
+> client_type 1 代表 ios 设备 2 代表 android&鸿蒙设备
> device_name 设备名称
> device_model 设备型号
-> device_id 在米哈游服务器中注册的uuid
-> sys_version 系统版本 android&鸿蒙中为系统版本 ios设备中为ios版本
-> channel 下载渠道 ios设备填"app store" android&鸿蒙填"mihoyo"(以抓包为准,我也不知道渠道服是不是这个)
+> device_id 在米哈游服务器中注册的 uuid
+> sys_version 系统版本 android&鸿蒙中为系统版本 ios 设备中为 ios 版本
+> channel 下载渠道 ios 设备填"app store" android&鸿蒙填"mihoyo"(以抓包为准,我也不知道渠道服是不是这个)
### 抓包
> > # ios
> >
-> > App Store中下载应用Stream(用于抓包)
+> > App Store 中下载应用 Stream(用于抓包)
> > 然后看视频吧
> > 看不了/不显示的点右边 https://hzsj.coding.net/p/ayakaturtleshop/d/PublicResource/git/raw/master/c9f1a9b91951b0f1c2da8f3817274074.mp4?download=false
> >
>
> # android&鸿蒙
>
-> > (来自https://bili33.top/posts/MHYY-AutoCheckin-Manual)
-> > 因为云原神是在手机上运行的,所以你需要安装一个手机上的抓包软件(例如HttpCanary,或者如果你能够用fiddler电脑运行去抓也行)
+> > (来自 https://bili33.top/posts/MHYY-AutoCheckin-Manual)
+> > 因为云原神是在手机上运行的,所以你需要安装一个手机上的抓包软件(例如 HttpCanary,或者如果你能够用 fiddler 电脑运行去抓也行)
> > [![看就完了](https://cdn.bilicdn.tk/gh/Vikutorika/assets@master/img/Github/MHYY-AutoCheckin/HTTPCANARY-Result.jpg?download=false)]
-> > 一定要记得装抓包软件提供的证书,要不然解不了SSL连接,一定要先登录并成功进去了再启动抓包软件!!!
+> > 一定要记得装抓包软件提供的证书,要不然解不了 SSL 连接,一定要先登录并成功进去了再启动抓包软件!!!
> > [![看就完了](https://cdn.bilicdn.tk/gh/Vikutorika/assets@master/img/Github/MHYY-AutoCheckin/HTTPS-REQUEST-RESULT.png?download=false)]
-> > 这里面只要是个HTTP链接,随便一个里面都有我们所需要的东西,这里我就点开了一个链接,在请求里面有所有我们需要的东西,而解释我都写在图片里面了
+> > 这里面只要是个 HTTP 链接,随便一个里面都有我们所需要的东西,这里我就点开了一个链接,在请求里面有所有我们需要的东西,而解释我都写在图片里面了
二者抓到的包差不多,抓到包之后有以下对应关系
@@ -107,8 +103,8 @@
```
对着填进去就完了
-接着在configs文件夹里创建任意一个json文件,将配置填进去
-如果想一次性签到n个用户,创建不同的json文件即可,程序会自动扫描configs文件夹下面的文件
+接着在 configs 文件夹里创建任意一个 json 文件,将配置填进去
+如果想一次性签到 n 个用户,创建不同的 json 文件即可,程序会自动扫描 configs 文件夹下面的文件
## 另外
diff --git a/index.js b/index.js
deleted file mode 100644
index 09a6762..0000000
--- a/index.js
+++ /dev/null
@@ -1,91 +0,0 @@
-const request = require("sync-request")
-
-const fs = require("fs")
-
-const log4js = require("log4js")
-
-const { getConfigs, checkConfigs, makeHeader, Notification, Wallet, SendLog, AppVersion, getGlobalConfig } = require("./config")
-const urlconfig = require("./config")
-
-const nodemailer = require('nodemailer')
-
-
-var baseLogger = log4js.getLogger()
-baseLogger.level = "info"
-var logContent = ``
-
-global.log = {
- info(content){
- logContent += `[info] ${content}
`
- baseLogger.info(content)
- },
- error(content){
- logContent += `[error] ${content}
`
- baseLogger.error(content)
- }
-}
-
-log.info("开始获取全局配置")
-var globalConfig = getGlobalConfig();
-log.info("获取成功")
-if (globalConfig.sendMail == true) {
- log.info("组装邮件发射器")
- var transporter = nodemailer.createTransport({
- host: globalConfig.mailConfig.smtpServer,
- port: globalConfig.mailConfig.smtpPort,
- secure: globalConfig.mailConfig.smtpSecure,
- auth: {
- user: globalConfig.mailConfig.user,
- pass: globalConfig.mailConfig.pass
- }
- });
-}
-var configs = getConfigs();
-// console.log(configs);
-log.info(`正在检测配置有效性`)
-checkConfigs(configs)
-log.info("检测完毕!")
-
-log.info("正在获取版本号")
-var appversion = AppVersion();
-appversion = appversion.data.package_version
-log.info(`获取成功!当前版本号:${appversion}`)
-var successNum = 0,totalNum = 0;
-for(key in configs) {
- totalNum ++;
- log.info(`正在执行配置 ${key}`)
- log.info("尝试签到……")
- var WalletRespond = Wallet(makeHeader(configs[key]),appversion);
- logContent += `${key} Wallet返回体
${JSON.stringify(WalletRespond)}
`;
- var NotificationRespond = Notification(makeHeader(configs[key]));
- logContent += `${key} Notification返回体
${JSON.stringify(NotificationRespond)}
`;
- if(WalletRespond.data != null) {
- if(WalletRespond.data.free_time.free_time != undefined) {
- successNum ++;
- log.info(`签到完毕! 剩余时长:${WalletRespond.data.free_time.free_time}分钟`)
- let NotificationLength = NotificationRespond.data.list.length
- if(NotificationLength != 0) {
- log.info(`已堆积 ${NotificationLength} 个签到通知 请及时处理!`)
- }
- } else {
- log.error("签到失败")
- }
- } else {
- log.error("签到失败")
- }
- // log.info(`Wallet ${Wallet(makeHeader(configs[key])).StringVersion}`)
- // log.info(`Announcement ${Announcement(makeHeader(configs[key])).StringVersion}`)
- // console.log(makeHeader(configs[key]));
-}
-
-if (globalConfig.sendMail == true) {
- log.info(`运行完毕!丢出日志`)
- SendLog(
- transporter,
- globalConfig.mailConfig.user,
- globalConfig.mailConfig.mailto,
- successNum,
- totalNum,
- logContent
- )
-}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 8197edb..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,833 +0,0 @@
-{
- "name": "genshincloudplayhelpper",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "genshincloudplayhelpper",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "log4js": "^6.5.2",
- "nodemailer": "^6.7.6",
- "sync-request": "^6.1.0"
- }
- },
- "node_modules/@types/concat-stream": {
- "version": "1.6.1",
- "resolved": "https://registry.npmmirror.com/@types/concat-stream/-/concat-stream-1.6.1.tgz",
- "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/form-data": {
- "version": "0.0.33",
- "resolved": "https://registry.npmmirror.com/@types/form-data/-/form-data-0.0.33.tgz",
- "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/node": {
- "version": "10.17.60",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-10.17.60.tgz",
- "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
- },
- "node_modules/@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
- },
- "node_modules/date-format": {
- "version": "4.0.11",
- "resolved": "https://registry.npmmirror.com/date-format/-/date-format-4.0.11.tgz",
- "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg=="
- },
- "node_modules/form-data": {
- "version": "2.5.1",
- "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz",
- "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-intrinsic": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
- "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "node_modules/get-port": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/get-port/-/get-port-3.2.0.tgz",
- "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/http-basic": {
- "version": "8.1.3",
- "resolved": "https://registry.npmmirror.com/http-basic/-/http-basic-8.1.3.tgz",
- "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==",
- "dependencies": {
- "caseless": "^0.12.0",
- "concat-stream": "^1.6.2",
- "http-response-object": "^3.0.1",
- "parse-cache-control": "^1.0.1"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/http-response-object": {
- "version": "3.0.2",
- "resolved": "https://registry.npmmirror.com/http-response-object/-/http-response-object-3.0.2.tgz",
- "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==",
- "dependencies": {
- "@types/node": "^10.0.3"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/log4js": {
- "version": "6.5.2",
- "resolved": "https://registry.npmmirror.com/log4js/-/log4js-6.5.2.tgz",
- "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==",
- "dependencies": {
- "date-format": "^4.0.10",
- "debug": "^4.3.4",
- "flatted": "^3.2.5",
- "rfdc": "^1.3.0",
- "streamroller": "^3.1.1"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/nodemailer": {
- "version": "6.7.6",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.6.tgz",
- "integrity": "sha512-/6KF/umU7r7X21Y648/yiRLrgkfz0dmpyuo4BfgYWIpnT/jCbkPTvegMfxCsDAu+O810p2L1BGXieMTPp3nJVA==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
- },
- "node_modules/parse-cache-control": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
- "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/promise": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/promise/-/promise-8.1.0.tgz",
- "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
- "dependencies": {
- "asap": "~2.0.6"
- }
- },
- "node_modules/qs": {
- "version": "6.10.5",
- "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.5.tgz",
- "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "node_modules/streamroller": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/streamroller/-/streamroller-3.1.1.tgz",
- "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==",
- "dependencies": {
- "date-format": "^4.0.10",
- "debug": "^4.3.4",
- "fs-extra": "^10.1.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/sync-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/sync-request/-/sync-request-6.1.0.tgz",
- "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==",
- "dependencies": {
- "http-response-object": "^3.0.1",
- "sync-rpc": "^1.2.1",
- "then-request": "^6.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/sync-rpc": {
- "version": "1.3.6",
- "resolved": "https://registry.npmmirror.com/sync-rpc/-/sync-rpc-1.3.6.tgz",
- "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==",
- "dependencies": {
- "get-port": "^3.1.0"
- }
- },
- "node_modules/then-request": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/then-request/-/then-request-6.0.2.tgz",
- "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==",
- "dependencies": {
- "@types/concat-stream": "^1.6.0",
- "@types/form-data": "0.0.33",
- "@types/node": "^8.0.0",
- "@types/qs": "^6.2.31",
- "caseless": "~0.12.0",
- "concat-stream": "^1.6.0",
- "form-data": "^2.2.0",
- "http-basic": "^8.1.1",
- "http-response-object": "^3.0.1",
- "promise": "^8.0.0",
- "qs": "^6.4.0"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/then-request/node_modules/@types/node": {
- "version": "8.10.66",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-8.10.66.tgz",
- "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw=="
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
- },
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- }
- },
- "dependencies": {
- "@types/concat-stream": {
- "version": "1.6.1",
- "resolved": "https://registry.npmmirror.com/@types/concat-stream/-/concat-stream-1.6.1.tgz",
- "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/form-data": {
- "version": "0.0.33",
- "resolved": "https://registry.npmmirror.com/@types/form-data/-/form-data-0.0.33.tgz",
- "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/node": {
- "version": "10.17.60",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-10.17.60.tgz",
- "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
- },
- "@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
- },
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
- },
- "date-format": {
- "version": "4.0.11",
- "resolved": "https://registry.npmmirror.com/date-format/-/date-format-4.0.11.tgz",
- "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg=="
- },
- "form-data": {
- "version": "2.5.1",
- "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz",
- "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "get-intrinsic": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
- "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "get-port": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/get-port/-/get-port-3.2.0.tgz",
- "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg=="
- },
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "http-basic": {
- "version": "8.1.3",
- "resolved": "https://registry.npmmirror.com/http-basic/-/http-basic-8.1.3.tgz",
- "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==",
- "requires": {
- "caseless": "^0.12.0",
- "concat-stream": "^1.6.2",
- "http-response-object": "^3.0.1",
- "parse-cache-control": "^1.0.1"
- }
- },
- "http-response-object": {
- "version": "3.0.2",
- "resolved": "https://registry.npmmirror.com/http-response-object/-/http-response-object-3.0.2.tgz",
- "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==",
- "requires": {
- "@types/node": "^10.0.3"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "log4js": {
- "version": "6.5.2",
- "resolved": "https://registry.npmmirror.com/log4js/-/log4js-6.5.2.tgz",
- "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==",
- "requires": {
- "date-format": "^4.0.10",
- "debug": "^4.3.4",
- "flatted": "^3.2.5",
- "rfdc": "^1.3.0",
- "streamroller": "^3.1.1"
- }
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "nodemailer": {
- "version": "6.7.6",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.6.tgz",
- "integrity": "sha512-/6KF/umU7r7X21Y648/yiRLrgkfz0dmpyuo4BfgYWIpnT/jCbkPTvegMfxCsDAu+O810p2L1BGXieMTPp3nJVA=="
- },
- "object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
- },
- "parse-cache-control": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
- "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "promise": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/promise/-/promise-8.1.0.tgz",
- "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
- "requires": {
- "asap": "~2.0.6"
- }
- },
- "qs": {
- "version": "6.10.5",
- "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.5.tgz",
- "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "streamroller": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/streamroller/-/streamroller-3.1.1.tgz",
- "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==",
- "requires": {
- "date-format": "^4.0.10",
- "debug": "^4.3.4",
- "fs-extra": "^10.1.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "sync-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/sync-request/-/sync-request-6.1.0.tgz",
- "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==",
- "requires": {
- "http-response-object": "^3.0.1",
- "sync-rpc": "^1.2.1",
- "then-request": "^6.0.0"
- }
- },
- "sync-rpc": {
- "version": "1.3.6",
- "resolved": "https://registry.npmmirror.com/sync-rpc/-/sync-rpc-1.3.6.tgz",
- "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==",
- "requires": {
- "get-port": "^3.1.0"
- }
- },
- "then-request": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/then-request/-/then-request-6.0.2.tgz",
- "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==",
- "requires": {
- "@types/concat-stream": "^1.6.0",
- "@types/form-data": "0.0.33",
- "@types/node": "^8.0.0",
- "@types/qs": "^6.2.31",
- "caseless": "~0.12.0",
- "concat-stream": "^1.6.0",
- "form-data": "^2.2.0",
- "http-basic": "^8.1.1",
- "http-response-object": "^3.0.1",
- "promise": "^8.0.0",
- "qs": "^6.4.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "8.10.66",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-8.10.66.tgz",
- "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw=="
- }
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- }
- }
-}
diff --git a/package.json b/package.json
index f950a4d..bd70501 100644
--- a/package.json
+++ b/package.json
@@ -18,8 +18,8 @@
},
"homepage": "https://github.com/HuanLinMaster/GenshinCloudPlayHelpper#readme",
"dependencies": {
- "log4js": "^6.5.2",
+ "axios": "^1.5.0",
"nodemailer": "^6.7.6",
- "sync-request": "^6.1.0"
+ "reggol": "^1.4.4"
}
}
diff --git a/config.js b/src/config.js
similarity index 84%
rename from config.js
rename to src/config.js
index 7dd828c..6512caf 100644
--- a/config.js
+++ b/src/config.js
@@ -1,135 +1,136 @@
-const { exit } = require("process")
-const fs = require("fs")
-const request = require("sync-request")
-const nodemailer = require('nodemailer')
-
-exports.NotificationURL = 'https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/listNotifications?status=NotificationStatusUnread&type=NotificationTypePopup&is_sort=true'
-exports.WalletURL = 'https://api-cloudgame.mihoyo.com/hk4e_cg_cn/wallet/wallet/get'
-exports.AnnouncementURL = 'https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/getAnnouncementInfo'
-// Here must be an earlier version so that the response won't be null
-exports.AppVersionURL = 'https://api-takumi.mihoyo.com/ptolemaios/api/getLatestRelease?app_id=1953443910&app_version=3.3.0&channel=mihoyo'
-
-exports.Notification = function(header) {
- let tmp = JSON.parse(request("GET",exports.NotificationURL,{
- headers:header
- }).body.toString());
- tmp.StringVersion = JSON.stringify(tmp);
- return tmp;
-}
-exports.Wallet = function(header) {
- let tmp = JSON.parse(request("GET",exports.WalletURL,{
- headers:header
- }).body.toString());
- tmp.StringVersion = JSON.stringify(tmp);
- return tmp;
-}
-exports.Announcement = function(header) {
- let tmp = JSON.parse(request("GET",exports.AnnouncementURL,{
- headers:header
- }).body.toString());
- tmp.StringVersion = JSON.stringify(tmp);
- return tmp;
-}
-exports.AppVersion = function() {
- let tmp = JSON.parse(request("GET",exports.AppVersionURL).body.toString());
- tmp.StringVersion = JSON.stringify(tmp);
- return tmp;
-}
-var configKeys = [
- "token",
- "client_type",
- "device_name",
- "device_model",
- "sys_version",
- "channel"
-]
-
-exports.getGlobalConfig = function() {
- try {
- var globalConfig = fs.readFileSync("global.json")
- } catch(e) {
- if(e == "Error: ENOENT: no such file or directory, scandir 'global.json'") {
- log.error(`读取配置失败!找不到全局配置文件`)
- } else {
- log.error(`读取配置失败!错误信息:${e}`);
- }
- exit()
- }
- return JSON.parse(globalConfig);
-}
-
-exports.getConfigs = function(){
- // var configsList;
- try {
- var configsList = fs.readdirSync("configs")
- } catch(e) {
- if(e == "Error: ENOENT: no such file or directory, scandir 'configs'") {
- log.error(`读取配置失败!找不到configs文件夹`)
- } else {
- log.error(`读取配置失败!错误信息:${e}`);
- }
- exit()
- }
- log.info(`检测到${configsList.length}个配置文件:`)
- configsList.forEach(file => {
- log.info(`${file}`)
- })
- var configs = {}
- configsList.forEach(file => {
- configs[file] = JSON.parse(fs.readFileSync(`configs/${file}`))
- })
- return configs
-}
-exports.checkConfigs = function(configs){
- for(file in configs) {
- var configThis = configs[file];
- var isNoProbem = true;
- for(key in configKeys) {
- if(configThis[configKeys[key]] == "" || configThis[configKeys[key]] == undefined || configThis[configKeys[key]] == null || configThis[configKeys[key]] == NaN) {
- log.error(`配置文件 ${file} 异常:`);
- log.error(` —— ${configKeys[key]}字段缺失`);
- // isNoProbem = false;
- }
- }
-
- // if(!isNoProbem) {
- // exit();
- // }
- }
-}
-
-// var appversion = exports.AppVersion();
-
-exports.makeHeader = function(data,appversion){
- return {
- 'x-rpc-combo_token': data.token,
- 'x-rpc-client_type': data.client_type,
- 'x-rpc-app_version': appversion,
- 'x-rpc-sys_version': data.sys_version,
- 'x-rpc-channel': data.channel,
- 'x-rpc-device_id': data.device_id,
- 'x-rpc-device_name': data.device_name,
- 'x-rpc-device_model': data.device_model,
- 'x-rpc-app_id': 1953439974,
- 'Referer': 'https://app.mihoyo.com',
- 'Host': 'api-cloudgame.mihoyo.com',
- 'Connection': 'Keep-Alive',
- 'Accept-Encoding': 'gzip',
- 'User-Agent': 'okhttp/4.9.0'
- }
-}
-
-exports.SendLog = function(transporter,mailfrom,mailto,successNum,totalNum,content) {
- transporter.sendMail({
- from: mailfrom+'" Genshin CloudPlay Helper"', //邮件来源
- to: mailto, //邮件发送到哪里,多个邮箱使用逗号隔开
- subject: `今日已签到${successNum}/${totalNum}名用户`, // 邮件主题
- text: '☺️😍😎', // 存文本类型的邮件正文
- html: `${content}` // html类型的邮件正文
- }, (error, info) => {
- if (error) {
- return console.log(error);
- }
- log.info("日志已丢出!")
- });
-}
+const { exit } = require("process")
+const fs = require("fs")
+const nodemailer = require('nodemailer')
+const { default: axios } = require("axios")
+const { log } = require("./logger")
+
+exports.NotificationURL = 'https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/listNotifications?status=NotificationStatusUnread&type=NotificationTypePopup&is_sort=true'
+exports.WalletURL = 'https://api-cloudgame.mihoyo.com/hk4e_cg_cn/wallet/wallet/get'
+exports.AnnouncementURL = 'https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/getAnnouncementInfo'
+// Here must be an earlier version so that the response won't be null
+exports.AppVersionURL = 'https://api-takumi.mihoyo.com/ptolemaios/api/getLatestRelease?app_id=1953443910&app_version=3.3.0&channel=mihoyo'
+
+exports.Notification = async function(header) {
+ let tmp = (await axios(exports.NotificationURL,{
+ headers:header
+ })).data;
+ tmp.StringVersion = JSON.stringify(tmp);
+ return tmp;
+}
+exports.Wallet = async function(header) {
+ let tmp = (await axios(exports.WalletURL,{
+ headers:header
+ })).data;
+ tmp.StringVersion = JSON.stringify(tmp);
+ return tmp;
+}
+exports.Announcement = async function(header) {
+ let tmp = (await axios(exports.AnnouncementURL,{
+ headers:header
+ })).data;
+ tmp.StringVersion = JSON.stringify(tmp);
+ return tmp;
+}
+exports.AppVersion = async function() {
+ let tmp = (await axios(exports.AppVersionURL)).data;
+ tmp.StringVersion = JSON.stringify(tmp);
+ return tmp;
+}
+var configKeys = [
+ "token",
+ "client_type",
+ "device_name",
+ "device_model",
+ "sys_version",
+ "channel"
+]
+
+exports.getGlobalConfig = function() {
+ try {
+ var globalConfig = fs.readFileSync("global.json")
+ } catch(e) {
+ if(e.toString().includes("Error: ENOENT: no such file or directory")) {
+ log.error(`读取配置失败!找不到全局配置文件`)
+ } else {
+ log.error(`读取配置失败!错误信息:${e}`);
+ }
+ exit()
+ }
+ return JSON.parse(globalConfig);
+}
+
+exports.getConfigs = function(){
+ // var configsList;
+ try {
+ var configsList = fs.readdirSync("configs")
+ } catch(e) {
+ if(e == "Error: ENOENT: no such file or directory, scandir 'configs'") {
+ log.error(`读取配置失败!找不到configs文件夹`)
+ } else {
+ log.error(`读取配置失败!错误信息:${e}`);
+ }
+ exit()
+ }
+ log.info(`检测到${configsList.length}个配置文件:`)
+ configsList.forEach(file => {
+ log.info(`${file}`)
+ })
+ var configs = {}
+ configsList.forEach(file => {
+ configs[file] = JSON.parse(fs.readFileSync(`configs/${file}`))
+ })
+ return configs
+}
+exports.checkConfigs = function(configs){
+ for(file in configs) {
+ var configThis = configs[file];
+ var isNoProbem = true;
+ for(key in configKeys) {
+ if(configThis[configKeys[key]] == "" || configThis[configKeys[key]] == undefined || configThis[configKeys[key]] == null || configThis[configKeys[key]] == NaN) {
+ log.error(`配置文件 ${file} 异常:`);
+ log.error(` —— ${configKeys[key]}字段缺失`);
+ // isNoProbem = false;
+ }
+ }
+
+ // if(!isNoProbem) {
+ // exit();
+ // }
+ }
+}
+
+// var appversion = exports.AppVersion();
+
+exports.makeHeader = function(data,appversion){
+ return {
+ 'x-rpc-combo_token': data.token,
+ 'x-rpc-client_type': data.client_type,
+ 'x-rpc-app_version': appversion,
+ 'x-rpc-sys_version': data.sys_version,
+ 'x-rpc-channel': data.channel,
+ 'x-rpc-device_id': data.device_id,
+ 'x-rpc-device_name': data.device_name,
+ 'x-rpc-device_model': data.device_model,
+ 'x-rpc-app_id': 1953439974,
+ 'Referer': 'https://app.mihoyo.com',
+ 'Host': 'api-cloudgame.mihoyo.com',
+ 'Connection': 'Keep-Alive',
+ 'Accept-Encoding': 'gzip',
+ 'User-Agent': 'okhttp/4.9.0'
+ }
+}
+
+exports.SendLog = function(transporter,mailfrom,mailto,successNum,totalNum,content) {
+ transporter.sendMail({
+ from: mailfrom+'" Genshin CloudPlay Helper"', //邮件来源
+ to: mailto, //邮件发送到哪里,多个邮箱使用逗号隔开
+ subject: `今日已签到${successNum}/${totalNum}名用户`, // 邮件主题
+ text: '☺️😍😎', // 存文本类型的邮件正文
+ html: `${content}` // html类型的邮件正文
+ }, (error, info) => {
+ if (error) {
+ return console.log(error);
+ }
+ log.info("日志已丢出!")
+ });
+}
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..c013f61
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,76 @@
+const fs = require("fs")
+
+const reggol = require("reggol")
+
+const { getConfigs, checkConfigs, makeHeader, Notification, Wallet, SendLog, AppVersion, getGlobalConfig } = require("./config")
+const urlconfig = require("./config")
+
+const { log, addLogContent, getLogs } = require("./logger");
+
+const nodemailer = require("nodemailer");
+
+(async () => {
+ log.info("开始获取全局配置")
+ var globalConfig = getGlobalConfig();
+ log.info("获取成功")
+ if (globalConfig.sendMail == true) {
+ log.info("组装邮件发射器")
+ var transporter = nodemailer.createTransport({
+ host: globalConfig.mailConfig.smtpServer,
+ port: globalConfig.mailConfig.smtpPort,
+ secure: globalConfig.mailConfig.smtpSecure,
+ auth: {
+ user: globalConfig.mailConfig.user,
+ pass: globalConfig.mailConfig.pass
+ }
+ });
+ }
+ var configs = getConfigs();
+ // console.log(configs);
+ log.info(`正在检测配置有效性`)
+ checkConfigs(configs)
+ log.info("检测完毕!")
+ log.info("正在获取版本号")
+ var appversion = await AppVersion();
+ appversion = appversion.data.package_version
+ log.info(`获取成功!当前版本号:${appversion}`)
+ var successNum = 0,totalNum = 0;
+ for (key in configs) {
+ totalNum ++;
+ log.info(`正在执行配置 ${key}`)
+ log.info("尝试签到……")
+ var WalletRespond = await Wallet(makeHeader(configs[key]),appversion);
+ addLogContent(`${key} Wallet返回体
${JSON.stringify(WalletRespond)}
`);
+ var NotificationRespond = await Notification(makeHeader(configs[key]));
+ addLogContent(`${key} Notification返回体
${JSON.stringify(NotificationRespond)}
`);
+ if(WalletRespond.data != null) {
+ if(WalletRespond.data.free_time.free_time != undefined) {
+ successNum ++;
+ log.info(`签到完毕! 剩余时长:${WalletRespond.data.free_time.free_time}分钟`)
+ let NotificationLength = NotificationRespond.data.list.length
+ if(NotificationLength != 0) {
+ log.info(`已堆积 ${NotificationLength} 个签到通知 请及时处理!`)
+ }
+ } else {
+ log.error("签到失败")
+ }
+ } else {
+ log.error("签到失败")
+ }
+ // log.info(`Wallet ${Wallet(makeHeader(configs[key])).StringVersion}`)
+ // log.info(`Announcement ${Announcement(makeHeader(configs[key])).StringVersion}`)
+ // console.log(makeHeader(configs[key]));
+ }
+
+ if (globalConfig.sendMail == true) {
+ log.info(`运行完毕!丢出日志`)
+ SendLog(
+ transporter,
+ globalConfig.mailConfig.user,
+ globalConfig.mailConfig.mailto,
+ successNum,
+ totalNum,
+ getLogs()
+ )
+ }
+})()
\ No newline at end of file
diff --git a/src/logger.js b/src/logger.js
new file mode 100644
index 0000000..1213538
--- /dev/null
+++ b/src/logger.js
@@ -0,0 +1,20 @@
+const reggol = require("reggol")
+const baseLogger = new reggol("GenshinCloudPlayHelper")
+let logContent = ``
+exports.addLogContent = function(content) {
+ logContent += content
+}
+exports.getLogs = function() {
+ return logContent
+}
+
+exports.log = {
+ info(content) {
+ logContent += `[info] ${content}
`
+ baseLogger.info(content)
+ },
+ error(content) {
+ logContent += `[error] ${content}
`
+ baseLogger.error(content)
+ }
+}
\ No newline at end of file