add historical data to score command
parent
bcfd0cb0a3
commit
1afb41077e
|
@ -16,6 +16,7 @@
|
|||
"@types/express": "^4.17.6",
|
||||
"@types/helmet": "^0.0.47",
|
||||
"@types/jsonwebtoken": "^8.5.0",
|
||||
"@types/mathjs": "^6.0.7",
|
||||
"@types/mongoose": "^5.7.19",
|
||||
"@types/node": "^14.0.1",
|
||||
"@types/nodemailer": "^6.4.0",
|
||||
|
@ -39,6 +40,7 @@
|
|||
"express": "^4.17.1",
|
||||
"helmet": "^3.22.0",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"mathjs": "^7.6.0",
|
||||
"moment": "^2.25.3",
|
||||
"mongoose": "^5.9.13",
|
||||
"nodemailer": "^6.4.8",
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
/* eslint-disable no-continue */
|
||||
/* eslint-disable default-case */
|
||||
import moment from 'moment';
|
||||
import { median, mode, mean } from 'mathjs';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { createPaginationEmbed } from 'eris-pagination';
|
||||
import { Message, User, TextChannel } from 'eris';
|
||||
import { Client, Command, RichEmbed } from '../class';
|
||||
|
||||
|
@ -10,7 +12,7 @@ export default class Score extends Command {
|
|||
super(client);
|
||||
this.name = 'score';
|
||||
this.description = 'Pulls a hard score report for a member.';
|
||||
this.usage = `${this.client.config.prefix}score <member> <type: 'hard' | 'soft'> <reporting department: ex. Library of Code sp-us | Cloud Account Services>:<reason>\n${this.client.config.prefix}score notify <on | off>\n${this.client.config.prefix}score <lock | unlock>`;
|
||||
this.usage = `${this.client.config.prefix}score <member> <type: 'hard' | 'soft'> <reporting department: ex. Library of Code sp-us | Cloud Account Services>:<reason>\n${this.client.config.prefix}score hist <member>\n${this.client.config.prefix}score notify <on | off>\n${this.client.config.prefix}score <lock | unlock>\n${this.client.config.prefix}score hist`;
|
||||
this.permissions = 0;
|
||||
this.guildOnly = false;
|
||||
this.enabled = true;
|
||||
|
@ -20,6 +22,315 @@ export default class Score extends Command {
|
|||
try {
|
||||
let check = false;
|
||||
let user: User;
|
||||
if (args[0] === 'hist') {
|
||||
if (!args[1] || !this.checkCustomPermissions(this.client.util.resolveMember(message.author.id, this.mainGuild), 4)) {
|
||||
user = message.author;
|
||||
if (!user) return this.error(message.channel, 'Member not found.');
|
||||
const hists = await this.client.db.ScoreHistorical.find({ userID: user.id }).lean().exec();
|
||||
if (!hists) return this.error(message.channel, 'No history found.');
|
||||
const histArray: [{ name: string, value: string }?] = [];
|
||||
const totalArray: number[] = [];
|
||||
const activityArray: number[] = [];
|
||||
const moderationArray: number[] = [];
|
||||
const roleArray: number[] = [];
|
||||
const cloudServicesArray: number[] = [];
|
||||
const otherArray: number[] = [];
|
||||
const miscArray: number[] = [];
|
||||
for (const hist of hists) {
|
||||
totalArray.push(hist.report.total);
|
||||
activityArray.push(hist.report.activity);
|
||||
moderationArray.push(hist.report.moderation);
|
||||
roleArray.push(hist.report.roles);
|
||||
cloudServicesArray.push(hist.report.cloudServices);
|
||||
otherArray.push(hist.report.other);
|
||||
miscArray.push(hist.report.staff);
|
||||
let totalScore = '0';
|
||||
let activityScore = '0';
|
||||
let moderationScore = '0';
|
||||
let roleScore = '0';
|
||||
let cloudServicesScore = '0';
|
||||
let otherScore = '0';
|
||||
let miscScore = '0';
|
||||
|
||||
if (hist.report.total < 200) totalScore = '---';
|
||||
else if (hist.report.total > 800) totalScore = '800';
|
||||
else totalScore = `${hist.report.total}`;
|
||||
|
||||
if (hist.report.activity < 10) activityScore = '---';
|
||||
else if (hist.report.activity > Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12))) activityScore = String(Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12)));
|
||||
else activityScore = `${hist.report.activity}`;
|
||||
|
||||
if (hist.report.roles <= 0) roleScore = '---';
|
||||
else if (hist.report.roles > 54) roleScore = '54';
|
||||
else roleScore = `${hist.report.roles}`;
|
||||
|
||||
moderationScore = `${hist.report.moderation}`;
|
||||
|
||||
if (hist.report.other === 0) otherScore = '---';
|
||||
else otherScore = `${hist.report.other}`;
|
||||
|
||||
if (hist.report.staff <= 0) miscScore = '---';
|
||||
else miscScore = `${hist.report.staff}`;
|
||||
|
||||
if (hist.report.cloudServices === 0) cloudServicesScore = '---';
|
||||
else if (hist.report.cloudServices > 10) cloudServicesScore = '10';
|
||||
else cloudServicesScore = `${hist.report.cloudServices}`;
|
||||
|
||||
let data = '';
|
||||
let hardInquiries = 0;
|
||||
if (hist.report?.inquiries?.length > 0) {
|
||||
hist.report.inquiries.forEach((inq) => {
|
||||
const testDate = (new Date(new Date(inq.date).setHours(1460)));
|
||||
// eslint-disable-next-line no-plusplus
|
||||
if (testDate > new Date()) hardInquiries++;
|
||||
});
|
||||
data += `__CommScore™:__ ${totalScore}\n__Activity:__ ${activityScore}\n__Roles:__ ${roleScore}\n__Moderation:__ ${moderationScore}\n__Cloud Services:__ ${cloudServicesScore}\n__Other:__ ${otherScore}\n__Misc:__ ${miscScore}\n\n__Hard Inquiries:__ ${hardInquiries}\n__Soft Inquiries:__ ${hist.report.softInquiries?.length ?? '0'}`;
|
||||
histArray.push({ name: moment(hist.date).calendar(), value: data });
|
||||
}
|
||||
}
|
||||
|
||||
const stat = {
|
||||
totalMean: mean(totalArray),
|
||||
totalMode: mode(totalArray),
|
||||
totalMedian: median(totalArray),
|
||||
activityMean: mean(activityArray),
|
||||
rolesMean: mean(roleArray),
|
||||
moderationMean: mean(moderationArray),
|
||||
cloudServicesMean: mean(cloudServicesArray),
|
||||
otherMean: mean(otherArray),
|
||||
miscMean: mean(miscArray),
|
||||
};
|
||||
const splitHist = this.client.util.splitFields(histArray);
|
||||
const cmdPages: RichEmbed[] = [];
|
||||
splitHist.forEach((split) => {
|
||||
const embed = new RichEmbed();
|
||||
embed.setTitle('Historical Community Report');
|
||||
let totalMean = '0';
|
||||
let totalMedian = '0';
|
||||
let totalMode = '0';
|
||||
let activityMean = '0';
|
||||
let moderationMean = '0';
|
||||
let roleMean = '0';
|
||||
let cloudServicesMean = '0';
|
||||
let otherMean = '0';
|
||||
let miscMean = '0';
|
||||
|
||||
if (stat.totalMean < 200) totalMean = '---';
|
||||
else if (stat.totalMean > 800) totalMean = '800';
|
||||
else totalMean = `${stat.totalMean}`;
|
||||
|
||||
if (stat.totalMedian < 200) totalMedian = '---';
|
||||
else if (stat.totalMedian > 800) totalMedian = '800';
|
||||
else totalMedian = `${stat.totalMedian}`;
|
||||
|
||||
if (stat.totalMode < 200) totalMode = '---';
|
||||
else if (stat.totalMode > 800) totalMode = '800';
|
||||
else totalMode = `${stat.totalMode}`;
|
||||
|
||||
if (stat.activityMean < 10) activityMean = '---';
|
||||
else if (stat.activityMean > Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12))) activityMean = String(Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12)));
|
||||
else activityMean = `${stat.activityMean}`;
|
||||
|
||||
if (stat.rolesMean <= 0) roleMean = '---';
|
||||
else if (stat.rolesMean > 54) roleMean = '54';
|
||||
else roleMean = `${stat.rolesMean}`;
|
||||
|
||||
moderationMean = `${stat.moderationMean}`;
|
||||
|
||||
if (stat.otherMean === 0) otherMean = '---';
|
||||
else otherMean = `${stat.otherMean}`;
|
||||
|
||||
if (stat.miscMean <= 0) miscMean = '---';
|
||||
else miscMean = `${stat.miscMean}`;
|
||||
|
||||
if (stat.cloudServicesMean === 0) cloudServicesMean = '---';
|
||||
else if (stat.cloudServicesMean > 10) cloudServicesMean = '10';
|
||||
else cloudServicesMean = `${stat.cloudServicesMean}`;
|
||||
|
||||
embed.setDescription(`__**Statistical Averages**__\n**CommScore™ Mean:** ${totalMean} | **CommScore™ Mode:** ${totalMode} | **CommScore™ Median:** ${totalMedian}\n\n**Activity Mean:** ${activityMean}\n**Roles Mean:** ${roleMean}\n**Moderation Mean:** ${moderationMean}\n**Cloud Services Mean:** ${cloudServicesMean}\n**Other Mean:** ${otherMean}\n**Misc Mean:** ${miscMean}`);
|
||||
embed.setAuthor(user.username, user.avatarURL);
|
||||
embed.setThumbnail(user.avatarURL);
|
||||
embed.setTimestamp();
|
||||
embed.setFooter(this.client.user.username, this.client.user.avatarURL);
|
||||
split.forEach((c) => embed.addField(c.name, c.value));
|
||||
return cmdPages.push(embed);
|
||||
});
|
||||
const name = `${user.username} VIA DISCORD - [HISTORICAL]`;
|
||||
await this.client.db.Score.updateOne({ userID: user.id }, { $addToSet: { softInquiries: { name: name.toUpperCase(), date: new Date() } } });
|
||||
const embed2 = new RichEmbed();
|
||||
embed2.setTitle('Inquiry Notification');
|
||||
embed2.setColor('#00FFFF');
|
||||
embed2.addField('Member', `${user.username}#${user.discriminator} | <@${user.id}>`, true);
|
||||
embed2.addField('Type', 'SOFT', true);
|
||||
embed2.addField('Department/Service', name.toUpperCase(), true);
|
||||
embed2.setTimestamp();
|
||||
embed2.setFooter(this.client.user.username, this.client.user.avatarURL);
|
||||
const log = <TextChannel> this.client.guilds.get(this.client.config.guildID).channels.get('611584771356622849');
|
||||
log.createMessage({ embed: embed2 }).catch(() => {});
|
||||
|
||||
|
||||
if (cmdPages.length === 1) return message.channel.createMessage({ embed: cmdPages[0] });
|
||||
return createPaginationEmbed(message, cmdPages);
|
||||
} if (args[1] && this.checkCustomPermissions(this.client.util.resolveMember(message.author.id, this.mainGuild), 4)) {
|
||||
user = this.client.util.resolveMember(args[1], this.mainGuild)?.user;
|
||||
if (!user) {
|
||||
const sc = await this.client.db.Score.findOne({ pin: [Number(args[0].split('-')[0]), Number(args[0].split('-')[1]), Number(args[0].split('-')[2])] });
|
||||
user = this.client.util.resolveMember(sc.userID, this.mainGuild)?.user;
|
||||
}
|
||||
if (!user) return this.error(message.channel, 'Member not found.');
|
||||
const hists = await this.client.db.ScoreHistorical.find({ userID: user.id }).lean().exec();
|
||||
if (!hists) return this.error(message.channel, 'No history found.');
|
||||
const histArray: [{ name: string, value: string }?] = [];
|
||||
const totalArray: number[] = [];
|
||||
const activityArray: number[] = [];
|
||||
const moderationArray: number[] = [];
|
||||
const roleArray: number[] = [];
|
||||
const cloudServicesArray: number[] = [];
|
||||
const otherArray: number[] = [];
|
||||
const miscArray: number[] = [];
|
||||
for (const hist of hists) {
|
||||
totalArray.push(hist.report.total);
|
||||
activityArray.push(hist.report.activity);
|
||||
moderationArray.push(hist.report.moderation);
|
||||
roleArray.push(hist.report.roles);
|
||||
cloudServicesArray.push(hist.report.cloudServices);
|
||||
otherArray.push(hist.report.other);
|
||||
miscArray.push(hist.report.staff);
|
||||
let totalScore = '0';
|
||||
let activityScore = '0';
|
||||
let moderationScore = '0';
|
||||
let roleScore = '0';
|
||||
let cloudServicesScore = '0';
|
||||
let otherScore = '0';
|
||||
let miscScore = '0';
|
||||
|
||||
if (hist.report.total < 200) totalScore = '---';
|
||||
else if (hist.report.total > 800) totalScore = '800';
|
||||
else totalScore = `${hist.report.total}`;
|
||||
|
||||
if (hist.report.activity < 10) activityScore = '---';
|
||||
else if (hist.report.activity > Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12))) activityScore = String(Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12)));
|
||||
else activityScore = `${hist.report.activity}`;
|
||||
|
||||
if (hist.report.roles <= 0) roleScore = '---';
|
||||
else if (hist.report.roles > 54) roleScore = '54';
|
||||
else roleScore = `${hist.report.roles}`;
|
||||
|
||||
moderationScore = `${hist.report.moderation}`;
|
||||
|
||||
if (hist.report.other === 0) otherScore = '---';
|
||||
else otherScore = `${hist.report.other}`;
|
||||
|
||||
if (hist.report.staff <= 0) miscScore = '---';
|
||||
else miscScore = `${hist.report.staff}`;
|
||||
|
||||
if (hist.report.cloudServices === 0) cloudServicesScore = '---';
|
||||
else if (hist.report.cloudServices > 10) cloudServicesScore = '10';
|
||||
else cloudServicesScore = `${hist.report.cloudServices}`;
|
||||
|
||||
let data = '';
|
||||
let hardInquiries = 0;
|
||||
if (hist.report?.inquiries?.length > 0) {
|
||||
hist.report.inquiries.forEach((inq) => {
|
||||
const testDate = (new Date(new Date(inq.date).setHours(1460)));
|
||||
// eslint-disable-next-line no-plusplus
|
||||
if (testDate > new Date()) hardInquiries++;
|
||||
});
|
||||
data += `__CommScore™:__ ${totalScore}\n__Activity:__ ${activityScore}\n__Roles:__ ${roleScore}\n__Moderation:__ ${moderationScore}\n__Cloud Services:__ ${cloudServicesScore}\n__Other:__ ${otherScore}\n__Misc:__ ${miscScore}\n\n__Hard Inquiries:__ ${hardInquiries}\n__Soft Inquiries:__ ${hist.report.softInquiries?.length ?? '0'}`;
|
||||
histArray.push({ name: moment(hist.date).calendar(), value: data });
|
||||
}
|
||||
}
|
||||
|
||||
const stat = {
|
||||
totalMean: mean(totalArray),
|
||||
totalMode: mode(totalArray),
|
||||
totalMedian: median(totalArray),
|
||||
activityMean: mean(activityArray),
|
||||
rolesMean: mean(roleArray),
|
||||
moderationMean: mean(moderationArray),
|
||||
cloudServicesMean: mean(cloudServicesArray),
|
||||
otherMean: mean(otherArray),
|
||||
miscMean: mean(miscArray),
|
||||
};
|
||||
const splitHist = this.client.util.splitFields(histArray);
|
||||
const cmdPages: RichEmbed[] = [];
|
||||
splitHist.forEach((split) => {
|
||||
const embed = new RichEmbed();
|
||||
embed.setTitle('Historical Community Report');
|
||||
let totalMean = '0';
|
||||
let totalMedian = '0';
|
||||
let totalMode = '0';
|
||||
let activityMean = '0';
|
||||
let moderationMean = '0';
|
||||
let roleMean = '0';
|
||||
let cloudServicesMean = '0';
|
||||
let otherMean = '0';
|
||||
let miscMean = '0';
|
||||
|
||||
if (stat.totalMean < 200) totalMean = '---';
|
||||
else if (stat.totalMean > 800) totalMean = '800';
|
||||
else totalMean = `${stat.totalMean}`;
|
||||
|
||||
if (stat.totalMedian < 200) totalMedian = '---';
|
||||
else if (stat.totalMedian > 800) totalMedian = '800';
|
||||
else totalMedian = `${stat.totalMedian}`;
|
||||
|
||||
if (stat.totalMode < 200) totalMode = '---';
|
||||
else if (stat.totalMode > 800) totalMode = '800';
|
||||
else totalMode = `${stat.totalMode}`;
|
||||
|
||||
if (stat.activityMean < 10) activityMean = '---';
|
||||
else if (stat.activityMean > Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12))) activityMean = String(Math.floor((Math.log1p(3000 + 300 + 200 + 100) * 12)));
|
||||
else activityMean = `${stat.activityMean}`;
|
||||
|
||||
if (stat.rolesMean <= 0) roleMean = '---';
|
||||
else if (stat.rolesMean > 54) roleMean = '54';
|
||||
else roleMean = `${stat.rolesMean}`;
|
||||
|
||||
moderationMean = `${stat.moderationMean}`;
|
||||
|
||||
if (stat.otherMean === 0) otherMean = '---';
|
||||
else otherMean = `${stat.otherMean}`;
|
||||
|
||||
if (stat.miscMean <= 0) miscMean = '---';
|
||||
else miscMean = `${stat.miscMean}`;
|
||||
|
||||
if (stat.cloudServicesMean === 0) cloudServicesMean = '---';
|
||||
else if (stat.cloudServicesMean > 10) cloudServicesMean = '10';
|
||||
else cloudServicesMean = `${stat.cloudServicesMean}`;
|
||||
|
||||
embed.setDescription(`__**Statistical Averages**__\n**CommScore™ Mean:** ${totalMean} | **CommScore™ Mode:** ${totalMode} | **CommScore™ Median:** ${totalMedian}\n\n**Activity Mean:** ${activityMean}\n**Roles Mean:** ${roleMean}\n**Moderation Mean:** ${moderationMean}\n**Cloud Services Mean:** ${cloudServicesMean}\n**Other Mean:** ${otherMean}\n**Misc Mean:** ${miscMean}`);
|
||||
embed.setAuthor(user.username, user.avatarURL);
|
||||
embed.setThumbnail(user.avatarURL);
|
||||
embed.setTimestamp();
|
||||
embed.setFooter(this.client.user.username, this.client.user.avatarURL);
|
||||
split.forEach((c) => embed.addField(c.name, c.value));
|
||||
return cmdPages.push(embed);
|
||||
});
|
||||
|
||||
let name = '';
|
||||
for (const role of this.client.util.resolveMember(message.author.id, this.mainGuild).roles.map((r) => this.mainGuild.roles.get(r)).sort((a, b) => b.position - a.position)) {
|
||||
name = `Library of Code sp-us | ${role.name} - [HISTORICAL]`;
|
||||
break;
|
||||
}
|
||||
await this.client.db.Score.updateOne({ userID: user.id }, { $addToSet: { softInquiries: { name, date: new Date() } } });
|
||||
const embed2 = new RichEmbed();
|
||||
embed2.setTitle('Inquiry Notification');
|
||||
embed2.setColor('#00FFFF');
|
||||
const mem = this.client.util.resolveMember(user.id, this.client.guilds.get(this.client.config.guildID));
|
||||
embed2.addField('Member', `${mem.user.username}#${mem.user.discriminator} | <@${user.id}>`, true);
|
||||
embed2.addField('Type', 'SOFT', true);
|
||||
embed2.addField('Department/Service', name.toUpperCase(), true);
|
||||
embed2.setTimestamp();
|
||||
embed2.setFooter(this.client.user.username, this.client.user.avatarURL);
|
||||
const log = <TextChannel> this.client.guilds.get(this.client.config.guildID).channels.get('611584771356622849');
|
||||
log.createMessage({ embed: embed2 }).catch(() => {});
|
||||
|
||||
|
||||
if (cmdPages.length === 1) return message.channel.createMessage({ embed: cmdPages[0] });
|
||||
return createPaginationEmbed(message, cmdPages);
|
||||
}
|
||||
}
|
||||
if (args[0] === 'notify') {
|
||||
user = message.author;
|
||||
if (!user) return this.error(message.channel, 'Member not found.');
|
||||
|
@ -226,6 +537,7 @@ export default class Score extends Command {
|
|||
if (args[1] === 'hard' && this.checkCustomPermissions(this.client.util.resolveMember(message.author.id, this.mainGuild), 6)) {
|
||||
await message.channel.createMessage({ embed });
|
||||
await message.channel.createMessage('***===BEGIN ADDITIONAL INFORMATION===***');
|
||||
await this.client.commands.get('score').run(message, ['hist', user.id]);
|
||||
await this.client.commands.get('whois').run(message, [user.id]);
|
||||
await this.client.commands.get('notes').run(message, [user.id]);
|
||||
const whoisMessage = await message.channel.createMessage(`=whois ${user.id} --full`);
|
||||
|
|
61
yarn.lock
61
yarn.lock
|
@ -122,6 +122,13 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/mathjs@^6.0.7":
|
||||
version "6.0.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/mathjs/-/mathjs-6.0.7.tgz#89299b8e0dd369c970ee8f477ba2cd2527c56cd0"
|
||||
integrity sha512-UPpG34wVjlr8uSijJ747q0SmC459t294xm/3Ed8GAnqM/I2K786WgCLQ4BO4lIsM07Gj1UhO7x0n0TSfqO0DNQ==
|
||||
dependencies:
|
||||
decimal.js "^10.0.0"
|
||||
|
||||
"@types/mime@*":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
|
||||
|
@ -642,6 +649,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
|
|||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
complex.js@^2.0.11:
|
||||
version "2.0.11"
|
||||
resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.0.11.tgz#09a873fbf15ffd8c18c9c2201ccef425c32b8bf1"
|
||||
integrity sha512-6IArJLApNtdg1P1dFtn3dnyzoZBEF0MwMnrfF1exSBRpZYoy4yieMkpZhQDC0uwctw48vii0CFVyHfpgZ/DfGw==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
@ -756,6 +768,11 @@ debuglog@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
|
||||
|
||||
decimal.js@^10.0.0, decimal.js@^10.2.1:
|
||||
version "10.2.1"
|
||||
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3"
|
||||
integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==
|
||||
|
||||
decompress-response@^4.2.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
|
||||
|
@ -981,6 +998,11 @@ escape-html@~1.0.3:
|
|||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
|
||||
|
||||
escape-latex@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-latex/-/escape-latex-1.2.0.tgz#07c03818cf7dac250cce517f4fda1b001ef2bca1"
|
||||
integrity sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
@ -1315,6 +1337,11 @@ forwarded@~0.1.2:
|
|||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
|
||||
integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
|
||||
|
||||
fraction.js@^4.0.12:
|
||||
version "4.0.12"
|
||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.12.tgz#0526d47c65a5fb4854df78bc77f7bec708d7b8c3"
|
||||
integrity sha512-8Z1K0VTG4hzYY7kA/1sj4/r1/RWLBD3xwReT/RCrUCbzPszjNQCCsy3ktkU/eaEqX3MYa4pY37a52eiBlPMlhA==
|
||||
|
||||
frameguard@3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/frameguard/-/frameguard-3.1.0.tgz#bd1442cca1d67dc346a6751559b6d04502103a22"
|
||||
|
@ -1798,6 +1825,11 @@ isstream@~0.1.2:
|
|||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||
|
||||
javascript-natural-sort@^0.7.1:
|
||||
version "0.7.1"
|
||||
resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59"
|
||||
integrity sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=
|
||||
|
||||
js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
|
@ -1980,6 +2012,20 @@ lodash@^4.17.19:
|
|||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||
|
||||
mathjs@^7.6.0:
|
||||
version "7.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-7.6.0.tgz#f0b7579e0756b13422995d0c4f29bd17d65d4dcc"
|
||||
integrity sha512-abywR28hUpKF4at5jE8Ys+Kigk40eKMT5mcBLD0/dtsqjfOLbtzd3WjlRqIopNo7oQ6FME51qph6lb8h/bhpUg==
|
||||
dependencies:
|
||||
complex.js "^2.0.11"
|
||||
decimal.js "^10.2.1"
|
||||
escape-latex "^1.2.0"
|
||||
fraction.js "^4.0.12"
|
||||
javascript-natural-sort "^0.7.1"
|
||||
seed-random "^2.2.0"
|
||||
tiny-emitter "^2.1.0"
|
||||
typed-function "^2.0.0"
|
||||
|
||||
media-typer@0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
||||
|
@ -2814,6 +2860,11 @@ saslprep@^1.0.0:
|
|||
dependencies:
|
||||
sparse-bitfield "^3.0.3"
|
||||
|
||||
seed-random@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54"
|
||||
integrity sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
|
@ -3212,6 +3263,11 @@ through@^2.3.6:
|
|||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
||||
|
||||
tiny-emitter@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
|
||||
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
|
||||
|
||||
tmp@^0.0.33:
|
||||
version "0.0.33"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
||||
|
@ -3286,6 +3342,11 @@ type-is@~1.6.17, type-is@~1.6.18:
|
|||
media-typer "0.3.0"
|
||||
mime-types "~2.1.24"
|
||||
|
||||
typed-function@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-2.0.0.tgz#15ab3825845138a8b1113bd89e60cd6a435739e8"
|
||||
integrity sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==
|
||||
|
||||
typescript@^3.9.2:
|
||||
version "3.9.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9"
|
||||
|
|
Loading…
Reference in New Issue