diff --git a/package.json b/package.json index d64ae69..1361bdc 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,15 @@ "ip": "^1.1.5", "logdna": "^3.5.2", "logdna-winston": "^3.0.5", - "node-fetch": "^2.6.1", - "node-schedule": "^2.0.0", + "node-fetch": "^2.6.2", "string-similarity": "^4.0.4", - "typescript": "^4.4.2", + "typescript": "^4.4.3", "winston": "^3.3.3" }, "devDependencies": { + "@tsconfig/node14": "^1.0.1", "@types/ip": "^1.1.0", - "@types/node": "^14.14.21", + "@types/node": "^16.9.1", "@types/node-fetch": "^2.5.12", "@types/string-similarity": "^4.0.0", "@types/ws": "^7.4.7", diff --git a/src/commands/clearWarnings.ts b/src/commands/clearWarnings.ts index 8fb2fb0..ebfa753 100644 --- a/src/commands/clearWarnings.ts +++ b/src/commands/clearWarnings.ts @@ -16,6 +16,6 @@ export function command (message: discord.Message) { } logger.info(`${message.author.username} has cleared all warnings for ${user} ${user.username} [${count?.length}].`); - state.logChannel.send(`${message.author.toString()} has cleared all warnings for ${user.toString()} [${count?.length}].`); + state.logChannel?.send(`${message.author.toString()} has cleared all warnings for ${user.toString()} [${count?.length}].`); }); }; diff --git a/src/commands/game.ts b/src/commands/game.ts index e617432..a94c287 100644 --- a/src/commands/game.ts +++ b/src/commands/game.ts @@ -22,7 +22,7 @@ const compatStrings: ICompatList = { }; async function updateDatabase () { - let body; + let body: any; if (!targetServer) { logger.error('Unable to download latest games list!'); return; diff --git a/src/commands/grantDeveloper.ts b/src/commands/grantDeveloper.ts index 8019e9c..fc716ad 100644 --- a/src/commands/grantDeveloper.ts +++ b/src/commands/grantDeveloper.ts @@ -24,14 +24,14 @@ export function command (message: discord.Message) { member.roles.remove(role).then(() => { message.channel.send(`${user.toString()}'s speech has been revoked in the #development channel.`); }).catch(() => { - state.logChannel.send(`Error revoking ${user.toString()}'s developer speech...`); + state.logChannel?.send(`Error revoking ${user.toString()}'s developer speech...`); logger.error(`Error revoking ${user} ${user.username}'s developer speech...`); }); } else { member.roles.add(role).then(() => { message.channel.send(`${user.toString()} has been granted speech in the #development channel.`); }).catch(() => { - state.logChannel.send(`Error granting ${user.toString()}'s developer speech...`); + state.logChannel?.send(`Error granting ${user.toString()}'s developer speech...`); logger.error(`Error granting ${user} ${user.username}'s developer speech...`); }); } diff --git a/src/commands/status.ts b/src/commands/status.ts index bd9440b..8fe34b3 100644 --- a/src/commands/status.ts +++ b/src/commands/status.ts @@ -10,11 +10,11 @@ export const roles = ['Admins', 'Moderators', 'Developer']; export function command(message: discord.Message) { const pr_number = message.content.substr(message.content.indexOf(' ') + 1).replace(/\n/g, ''); const url = `https://api.github.com/repos/${repo}/pulls/${pr_number}`; - fetch(url, fetchOptions).then(response => response.json()).then(pr => { + fetch(url, fetchOptions).then(response => response.json()).then((pr: any) => { if (!pr || pr.documentation_url || !pr.head) throw new Error('PR not found'); const headSHA = pr.head.sha; // use the new GitHub checks API - fetch(`https://api.github.com/repos/${repo}/commits/${headSHA}/check-runs`, fetchOptions).then(response => response.json()).then(statuses => { + fetch(`https://api.github.com/repos/${repo}/commits/${headSHA}/check-runs`, fetchOptions).then(response => response.json()).then((statuses: any) => { if (!statuses.check_runs || statuses.total_count < 1) throw new Error('No check runs'); let msg = new discord.MessageEmbed().setTitle(`Status for PR #${pr_number}`).setURL(pr.html_url); let color = 'GREEN'; diff --git a/src/commands/warn.ts b/src/commands/warn.ts index 6767815..a815325 100644 --- a/src/commands/warn.ts +++ b/src/commands/warn.ts @@ -16,7 +16,7 @@ exports.command = function (message: discord.Message) { } logger.info(`${message.author.username} ${message.author} has warned ${user.username} ${user} [${count} + 1].`); - state.logChannel.send(`${message.author.toString()} has warned ${user.toString()} (${user.username}) [${user}] [${count} + 1].`); + state.logChannel?.send(`${message.author.toString()} has warned ${user.toString()} (${user.username}) [${user}] [${count} + 1].`); state.warnings.push(new UserWarning(user.id, user.username, message.author.id, message.author.username, count, silent)); data.flushWarnings(); diff --git a/src/common.ts b/src/common.ts index 25d1bf7..3cc2573 100644 --- a/src/common.ts +++ b/src/common.ts @@ -8,17 +8,17 @@ export function ban(user: discord.User, moderator: discord.User, guild: discord. const count = state.warnings.filter(x => x.id === user.id && !x.cleared).length || 0; logger.info(`${moderator.toString()} has banned ${user.toString()} ${user} ${user.username}.`); - state.logChannel.send(`${moderator.toString()} has banned ${user} ${user.toString()} [${count}].`); + state.logChannel?.send(`${moderator.toString()} has banned ${user} ${user.toString()} [${count}].`); state.bans.push(new UserBan(user.id, user.username, moderator.id, moderator.username, count)); let member = guild?.member(user); if (!member) { - state.logChannel.send(`Error banning ${user} ${user.username}: user not found.`); + state.logChannel?.send(`Error banning ${user} ${user.username}: user not found.`); logger.error(`User not found: ${user.toString()} ${user} ${user.username} when executing a ban`); // we don't need a return here, because of the optional chaining below } member?.ban().catch(function (error) { - state.logChannel.send(`Error banning ${user.toString()} ${user.username}`); + state.logChannel?.send(`Error banning ${user.toString()} ${user.username}`); logger.error(`Error banning ${user.toString()} ${user} ${user.username}.`, error); }); diff --git a/src/server.ts b/src/server.ts index 8f918b0..bc63ae7 100644 --- a/src/server.ts +++ b/src/server.ts @@ -3,7 +3,6 @@ require('checkenv').check(); import discord = require('discord.js'); import path = require('path'); -// const schedule = require('node-schedule'); import fs = require('fs'); import logger from './logging'; @@ -11,8 +10,6 @@ import state from './state'; import * as data from './data'; import { IModule, ITrigger } from './models/interfaces'; -state.responses = require('./responses.json'); - interface IModuleMap { [name: string]: IModule; } @@ -102,7 +99,7 @@ client.on('messageDelete', message => { let userInfo = `${message.author?.toString()} (${message.author?.username}) (${message.author})` - state.msglogChannel.send(userInfo, { embed: deletionEmbed }); + state.msglogChannel?.send(userInfo, { embed: deletionEmbed }); logger.info(`${message.author?.username} ${message.author} deleted message: ${message.cleanContent}.`); } } @@ -136,7 +133,7 @@ client.on('messageUpdate', (oldMessage, newMessage) => { let userInfo = `${oldMessage.author?.toString()} (${oldMessage.author?.username}) (${oldMessage.author})` - state.msglogChannel.send(userInfo, { embed: editedEmbed }); + state.msglogChannel?.send(userInfo, { embed: editedEmbed }); logger.info(`${oldMessage.author?.username} ${oldMessage.author} edited message from: ${oldM} to: ${newM}.`); } } @@ -204,7 +201,7 @@ client.on('message', message => { return; } if (cachedModule && cachedModule.roles && !findArray(authorRoles, cachedModule.roles)) { - state.logChannel.send(`${message.author.toString()} attempted to use admin command: ${message.content}`); + state.logChannel?.send(`${message.author.toString()} attempted to use admin command: ${message.content}`); logger.info(`${message.author.username} ${message.author} attempted to use admin command: ${message.content}`); return; } diff --git a/src/state.ts b/src/state.ts index 6570bc3..e12c0b3 100644 --- a/src/state.ts +++ b/src/state.ts @@ -5,8 +5,8 @@ import discord = require('discord.js'); /* Application State */ class State { - logChannel: discord.TextChannel | discord.DMChannel; - msglogChannel: discord.TextChannel | discord.DMChannel; + logChannel: discord.TextChannel | discord.DMChannel | null; + msglogChannel: discord.TextChannel | discord.DMChannel | null; warnings: UserWarning[]; responses: IResponses; bans: UserBan[]; @@ -16,10 +16,10 @@ class State { gameDBPromise: Promise | null; constructor () { - this.logChannel; - this.msglogChannel; + this.logChannel = null; + this.msglogChannel = null; this.warnings = []; - this.responses; + this.responses = require('./responses.json'); this.bans = []; this.stats = { joins: 0, diff --git a/src/triggers/pingBomb.ts b/src/triggers/pingBomb.ts index cf4b7dc..515200b 100644 --- a/src/triggers/pingBomb.ts +++ b/src/triggers/pingBomb.ts @@ -10,6 +10,6 @@ export function trigger(message: discord.Message) { export function execute(message: discord.Message) { const count = message.mentions.users.array().length; logger.info(`${message.author.toString()} tagged ${count} users in ${message.channel.toString()}`); - state.logChannel.send(`Ping bomb detected in ${message.channel.toString()} by ${message.author.toString()}`); + state.logChannel?.send(`Ping bomb detected in ${message.channel.toString()} by ${message.author.toString()}`); ban(message.author, message.author, message.guild); }; diff --git a/tsconfig.json b/tsconfig.json index e5065a0..536cb93 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "@tsconfig/node14/tsconfig.json", "compilerOptions": { "module": "CommonJS", "noImplicitAny": true, @@ -6,7 +7,7 @@ "removeComments": true, "preserveConstEnums": true, "outDir": "dist/", - "sourceMap": true + "sourceMap": true, }, "include": [ "src/**/*" diff --git a/yarn.lock b/yarn.lock index 775696a..221cfdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -88,15 +88,21 @@ integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== "@logdna/logger@^2.2.4": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@logdna/logger/-/logger-2.3.2.tgz#5eaea2d344a57dff41c7a2f6de3c73d411f2225e" - integrity sha512-ZbP/5Ozl2jKLImMrDDsJH2gK3ew6C6CHpTNAxmXWWUxSBcYaT0ZUv1otRDtVETRgFtD9ds4ojqx/gtoKUfJ8cw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/@logdna/logger/-/logger-2.4.0.tgz#0244b57bb0d7fa96a6748e449dc9d3272e9980ee" + integrity sha512-QiBsblzfgYP+iyxCy4A8owx3NQntJEFtjMXyQyA7vxnEbf3e2ZVxzgvqXgxYCbkWAAdQ0DZA59yEp6bUb5flyQ== dependencies: + "@logdna/stdlib" "^1.1.5" agentkeepalive "^4.1.3" axios "^0.21.1" https-proxy-agent "^5.0.0" json-stringify-safe "^5.0.1" +"@logdna/stdlib@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@logdna/stdlib/-/stdlib-1.1.5.tgz#e6795149c8e195e71a46237f744b7bdc90eef88c" + integrity sha512-SFSLi7TT260tDPRVKpSvbDrYwJSbD+b9zpuf2YdPOBqJjvt5LUbFCur/RJ+whaNArguZhgdi/Lv7aR12T7aCBQ== + "@tsconfig/node10@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" @@ -107,7 +113,7 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== -"@tsconfig/node14@^1.0.0": +"@tsconfig/node14@^1.0.0", "@tsconfig/node14@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== @@ -137,15 +143,10 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "16.7.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.2.tgz#0465a39b5456b61a04d98bd5545f8b34be340cb7" - integrity sha512-TbG4TOx9hng8FKxaVrCisdaxKxqEwJ3zwHoCWXZ0Jw6mnvTInpaB99/2Cy4+XxpXtjNv9/TgfGSvZFyfV/t8Fw== - -"@types/node@^14.14.21": - version "14.17.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.12.tgz#7a31f720b85a617e54e42d24c4ace136601656c7" - integrity sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw== +"@types/node@*", "@types/node@^16.9.1": + version "16.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" + integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== "@types/string-similarity@^4.0.0": version "4.0.0" @@ -172,9 +173,9 @@ acorn-jsx@^5.3.1: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" - integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^7.4.0: version "7.4.1" @@ -182,9 +183,9 @@ acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + version "8.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== agent-base@6: version "6.0.2" @@ -218,9 +219,9 @@ ajv@^6.10.0, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.6.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" - integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== + version "8.6.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -309,11 +310,11 @@ asynckit@^0.4.0: integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.0" balanced-match@^1.0.0: version "1.0.2" @@ -463,23 +464,15 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cron-parser@^3.1.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-3.5.0.tgz#b1a9da9514c0310aa7ef99c2f3f1d0f8c235257c" - integrity sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ== - dependencies: - is-nan "^1.3.2" - luxon "^1.26.0" - cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -511,9 +504,9 @@ debug@^3.2.7: ms "^2.1.1" deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== define-properties@^1.1.3: version "1.1.3" @@ -595,21 +588,22 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.5.tgz#9b10de7d4c206a3581fd5b2124233e04db49ae19" - integrity sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA== + version "1.18.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456" + integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" has "^1.0.3" has-symbols "^1.0.2" internal-slot "^1.0.3" - is-callable "^1.2.3" + is-callable "^1.2.4" is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" + is-regex "^1.1.4" + is-string "^1.0.7" object-inspect "^1.11.0" object-keys "^1.1.1" object.assign "^4.1.2" @@ -848,9 +842,9 @@ fast-levenshtein@^2.0.6: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-safe-stringify@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" - integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fecha@^4.2.0: version "4.2.1" @@ -889,10 +883,10 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.10.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.2.tgz#cecb825047c00f5e66b142f90fed4f515dec789b" - integrity sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA== +follow-redirects@^1.14.0: + version "1.14.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.3.tgz#6ada78118d8d24caee595595accdc0ac6abd022e" + integrity sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw== form-data@^3.0.0: version "3.0.1" @@ -927,6 +921,14 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1099,7 +1101,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-callable@^1.1.4, is-callable@^1.2.3: +is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -1142,14 +1144,6 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" -is-nan@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -1162,7 +1156,7 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-regex@^1.1.3: +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -1175,7 +1169,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.6: +is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -1340,11 +1334,6 @@ logform@^2.2.0: ms "^2.1.1" triple-beam "^1.3.0" -long-timeout@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" - integrity sha1-lyHXiLR+C8taJMLivuGg2lXatRQ= - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1352,11 +1341,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -luxon@^1.26.0: - version "1.28.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" - integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== - make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -1406,19 +1390,10 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-schedule@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-2.0.0.tgz#73ab4957d056c63708409cc1fab676e0e149c191" - integrity sha512-cHc9KEcfiuXxYDU+HjsBVo2FkWL1jRAUoczFoMIzRBpOA4p/NRHuuLs85AWOLgKsHtSPjN8csvwIxc2SqMv+CQ== - dependencies: - cron-parser "^3.1.0" - long-timeout "0.1.1" - sorted-array-functions "^1.3.0" +node-fetch@^2.6.1, node-fetch@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.2.tgz#986996818b73785e47b1965cc34eb093a1d464d0" + integrity sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA== normalize-package-data@^2.3.2: version "2.5.0" @@ -1740,11 +1715,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -sorted-array-functions@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" - integrity sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -1949,10 +1919,10 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" - integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== +typescript@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" + integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== unbox-primitive@^1.0.1: version "1.0.1" @@ -2066,9 +2036,9 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@^7.4.4: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== yallist@^4.0.0: version "4.0.0"