resize image before storing (#831)

* resize image fn

* wip

* simplify transform

* comment

* fix

* rm log

* allow pass-through for non-base-64

Co-authored-by: Alex van Andel <me@alexvanandel.com>
This commit is contained in:
Alex Johansson 2021-09-30 21:37:29 +01:00 committed by GitHub
parent e33962686e
commit 60298f6eeb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 511 additions and 6 deletions

View file

@ -57,6 +57,7 @@
"handlebars": "^4.7.7", "handlebars": "^4.7.7",
"ical.js": "^1.4.0", "ical.js": "^1.4.0",
"ics": "^2.31.0", "ics": "^2.31.0",
"jimp": "^0.16.1",
"lodash.debounce": "^4.0.8", "lodash.debounce": "^4.0.8",
"lodash.merge": "^4.6.2", "lodash.merge": "^4.6.2",
"lodash.throttle": "^4.1.1", "lodash.throttle": "^4.1.1",

View file

@ -1,3 +1,4 @@
import { resizeBase64Image } from "@server/lib/resizeBase64Image";
import { pick } from "lodash"; import { pick } from "lodash";
import type { NextApiRequest, NextApiResponse } from "next"; import type { NextApiRequest, NextApiResponse } from "next";
@ -13,6 +14,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
} }
try { try {
const avatar = req.body.avatar ? await resizeBase64Image(req.body.avatar) : undefined;
await prisma.user.update({ await prisma.user.update({
where: { where: {
id: session.user.id, id: session.user.id,
@ -21,7 +23,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
...pick(req.body, [ ...pick(req.body, [
"username", "username",
"name", "name",
"avatar",
"timeZone", "timeZone",
"weekStart", "weekStart",
"hideBranding", "hideBranding",
@ -29,6 +30,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
"completedOnboarding", "completedOnboarding",
"locale", "locale",
]), ]),
avatar,
bio: req.body.description, bio: req.body.description,
}, },
}); });

View file

@ -0,0 +1,36 @@
import jimp from "jimp";
export async function resizeBase64Image(
base64OrUrl: string,
opts?: {
maxSize?: number;
}
) {
if (!base64OrUrl.startsWith("data:")) {
// might be a `https://` or something
return base64OrUrl;
}
const mimeMatch = base64OrUrl.match(/^data:(\w+\/\w+);/);
const mimetype = mimeMatch?.[1];
if (!mimetype) {
throw new Error(`Could not distinguish mimetype`);
}
const buffer = Buffer.from(base64OrUrl.replace(/^data:image\/\w+;base64,/, ""), "base64");
const {
// 96px is the height of the image on https://cal.com/peer
maxSize = 96 * 4,
} = opts ?? {};
const image = await jimp.read(buffer);
if (image.getHeight() !== image.getHeight()) {
// this could be handled later
throw new Error("Image is not a square");
}
const currentSize = Math.max(image.getWidth(), image.getHeight());
if (currentSize > maxSize) {
image.resize(jimp.AUTO, maxSize);
}
const newBuffer = await image.getBufferAsync(mimetype);
return `data:${mimetype};base64,${newBuffer.toString("base64")}`;
}

View file

@ -8,6 +8,7 @@ import { checkRegularUsername } from "@lib/core/checkRegularUsername";
import slugify from "@lib/slugify"; import slugify from "@lib/slugify";
import { createProtectedRouter } from "../createRouter"; import { createProtectedRouter } from "../createRouter";
import { resizeBase64Image } from "../lib/resizeBase64Image";
const checkUsername = const checkUsername =
process.env.NEXT_PUBLIC_APP_URL === "https://cal.com" ? checkPremiumUsername : checkRegularUsername; process.env.NEXT_PUBLIC_APP_URL === "https://cal.com" ? checkPremiumUsername : checkRegularUsername;
@ -119,6 +120,9 @@ export const viewerRouter = createProtectedRouter()
} }
} }
} }
if (input.avatar) {
data.avatar = await resizeBase64Image(input.avatar);
}
await prisma.user.update({ await prisma.user.update({
where: { where: {

472
yarn.lock
View file

@ -741,6 +741,296 @@
"@types/yargs" "^16.0.0" "@types/yargs" "^16.0.0"
chalk "^4.0.0" chalk "^4.0.0"
"@jimp/bmp@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz#6e2da655b2ba22e721df0795423f34e92ef13768"
integrity sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
bmp-js "^0.1.0"
"@jimp/core@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz#68c4288f6ef7f31a0f6b859ba3fb28dae930d39d"
integrity sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
any-base "^1.1.0"
buffer "^5.2.0"
exif-parser "^0.1.12"
file-type "^9.0.0"
load-bmfont "^1.3.1"
mkdirp "^0.5.1"
phin "^2.9.1"
pixelmatch "^4.0.2"
tinycolor2 "^1.4.1"
"@jimp/custom@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz#28b659c59e20a1d75a0c46067bd3f4bd302cf9c5"
integrity sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/core" "^0.16.1"
"@jimp/gif@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz#d1f7c3a58f4666482750933af8b8f4666414f3ca"
integrity sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
gifwrap "^0.9.2"
omggif "^1.0.9"
"@jimp/jpeg@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz#3b7bb08a4173f2f6d81f3049b251df3ee2ac8175"
integrity sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
jpeg-js "0.4.2"
"@jimp/plugin-blit@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz#09ea919f9d326de3b9c2826fe4155da37dde8edb"
integrity sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-blur@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz#e614fa002797dcd662e705d4cea376e7db968bf5"
integrity sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-circle@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz#20e3194a67ca29740aba2630fd4d0a89afa27491"
integrity sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-color@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz#0f298ba74dee818b663834cd80d53e56f3755233"
integrity sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
tinycolor2 "^1.4.1"
"@jimp/plugin-contain@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz#3c5f5c495fd9bb08a970739d83694934f58123f2"
integrity sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-cover@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz#0e8caec16a40abe15b1b32e5383a603a3306dc41"
integrity sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-crop@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz#b362497c873043fe47ba881ab08604bf7226f50f"
integrity sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-displace@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz#4dd9db518c3e78de9d723f86a234bf98922afe8d"
integrity sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-dither@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz#b47de2c0bb09608bed228b41c3cd01a85ec2d45b"
integrity sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-fisheye@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz#f625047b6cdbe1b83b89e9030fd025ab19cdb1a4"
integrity sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-flip@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz#7a99ea22bde802641017ed0f2615870c144329bb"
integrity sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-gaussian@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz#0845e314085ccd52e34fad9a83949bc0d81a68e8"
integrity sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-invert@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz#7e6f5a15707256f3778d06921675bbcf18545c97"
integrity sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-mask@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz#e7f2460e05c3cda7af5e76f33ccb0579f66f90df"
integrity sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-normalize@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz#032dfd88eefbc4dedc8b1b2d243832e4f3af30c8"
integrity sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-print@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz#66b803563f9d109825970714466e6ab9ae639ff6"
integrity sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
load-bmfont "^1.4.0"
"@jimp/plugin-resize@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz#65e39d848ed13ba2d6c6faf81d5d590396571d10"
integrity sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-rotate@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz#53fb5d51a4b3d05af9c91c2a8fffe5d7a1a47c8c"
integrity sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-scale@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz#89f6ba59feed3429847ed226aebda33a240cc647"
integrity sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-shadow@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz#a7af892a740febf41211e10a5467c3c5c521a04c"
integrity sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugin-threshold@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz#34f3078f9965145b7ae26c53a32ad74b1195bbf5"
integrity sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
"@jimp/plugins@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz#9f08544c97226d6460a16ced79f57e85bec3257b"
integrity sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/plugin-blit" "^0.16.1"
"@jimp/plugin-blur" "^0.16.1"
"@jimp/plugin-circle" "^0.16.1"
"@jimp/plugin-color" "^0.16.1"
"@jimp/plugin-contain" "^0.16.1"
"@jimp/plugin-cover" "^0.16.1"
"@jimp/plugin-crop" "^0.16.1"
"@jimp/plugin-displace" "^0.16.1"
"@jimp/plugin-dither" "^0.16.1"
"@jimp/plugin-fisheye" "^0.16.1"
"@jimp/plugin-flip" "^0.16.1"
"@jimp/plugin-gaussian" "^0.16.1"
"@jimp/plugin-invert" "^0.16.1"
"@jimp/plugin-mask" "^0.16.1"
"@jimp/plugin-normalize" "^0.16.1"
"@jimp/plugin-print" "^0.16.1"
"@jimp/plugin-resize" "^0.16.1"
"@jimp/plugin-rotate" "^0.16.1"
"@jimp/plugin-scale" "^0.16.1"
"@jimp/plugin-shadow" "^0.16.1"
"@jimp/plugin-threshold" "^0.16.1"
timm "^1.6.1"
"@jimp/png@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz#f24cfc31529900b13a2dd9d4fdb4460c1e4d814e"
integrity sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.16.1"
pngjs "^3.3.3"
"@jimp/tiff@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz#0e8756695687d7574b6bc73efab0acd4260b7a12"
integrity sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==
dependencies:
"@babel/runtime" "^7.7.2"
utif "^2.0.1"
"@jimp/types@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz#0dbab37b3202315c91010f16c31766d35a2322cc"
integrity sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/bmp" "^0.16.1"
"@jimp/gif" "^0.16.1"
"@jimp/jpeg" "^0.16.1"
"@jimp/png" "^0.16.1"
"@jimp/tiff" "^0.16.1"
timm "^1.6.1"
"@jimp/utils@^0.16.1":
version "0.16.1"
resolved "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz#2f51e6f14ff8307c4aa83d5e1a277da14a9fe3f7"
integrity sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==
dependencies:
"@babel/runtime" "^7.7.2"
regenerator-runtime "^0.13.3"
"@jitsu/sdk-js@^2.2.4": "@jitsu/sdk-js@^2.2.4":
version "2.2.5" version "2.2.5"
resolved "https://registry.npmjs.org/@jitsu/sdk-js/-/sdk-js-2.2.5.tgz" resolved "https://registry.npmjs.org/@jitsu/sdk-js/-/sdk-js-2.2.5.tgz"
@ -2063,6 +2353,11 @@ bluebird@^3.7.2:
version "3.7.2" version "3.7.2"
resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
bmp-js@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233"
integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM=
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
version "4.12.0" version "4.12.0"
resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz"
@ -2205,6 +2500,11 @@ buffer-equal-constant-time@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz"
buffer-equal@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=
buffer-fill@^1.0.0: buffer-fill@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz"
@ -2232,7 +2532,7 @@ buffer@^4.3.0:
ieee754 "^1.1.4" ieee754 "^1.1.4"
isarray "^1.0.0" isarray "^1.0.0"
buffer@^5.4.3: buffer@^5.2.0, buffer@^5.4.3:
version "5.7.1" version "5.7.1"
resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"
dependencies: dependencies:
@ -2899,6 +3199,11 @@ dom-helpers@^5.0.1:
"@babel/runtime" "^7.8.7" "@babel/runtime" "^7.8.7"
csstype "^3.0.2" csstype "^3.0.2"
dom-walk@^0.1.0:
version "0.1.2"
resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
domain-browser@4.19.0: domain-browser@4.19.0:
version "4.19.0" version "4.19.0"
resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz"
@ -3262,6 +3567,11 @@ executable@^4.1.1:
dependencies: dependencies:
pify "^2.2.0" pify "^2.2.0"
exif-parser@^0.1.12:
version "0.1.12"
resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922"
integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=
exit@^0.1.2: exit@^0.1.2:
version "0.1.2" version "0.1.2"
resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
@ -3364,6 +3674,11 @@ file-entry-cache@^6.0.1:
dependencies: dependencies:
flat-cache "^3.0.4" flat-cache "^3.0.4"
file-type@^9.0.0:
version "9.0.0"
resolved "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18"
integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==
fill-range@^7.0.1: fill-range@^7.0.1:
version "7.0.1" version "7.0.1"
resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
@ -3555,6 +3870,14 @@ getpass@^0.1.1:
dependencies: dependencies:
assert-plus "^1.0.0" assert-plus "^1.0.0"
gifwrap@^0.9.2:
version "0.9.2"
resolved "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz#348e286e67d7cf57942172e1e6f05a71cee78489"
integrity sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==
dependencies:
image-q "^1.1.1"
omggif "^1.0.10"
glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2:
version "5.1.2" version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
@ -3588,6 +3911,14 @@ global-dirs@^3.0.0:
dependencies: dependencies:
ini "2.0.0" ini "2.0.0"
global@~4.4.0:
version "4.4.0"
resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
dependencies:
min-document "^2.19.0"
process "^0.11.10"
globals@^11.1.0: globals@^11.1.0:
version "11.12.0" version "11.12.0"
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
@ -3908,6 +4239,11 @@ ignore@^5.1.4:
version "5.1.8" version "5.1.8"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz"
image-q@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz#fc84099664460b90ca862d9300b6bfbbbfbf8056"
integrity sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=
image-size@1.0.0: image-size@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz" resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz"
@ -4078,6 +4414,11 @@ is-fullwidth-code-point@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
is-function@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08"
integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==
is-generator-fn@^2.0.0: is-generator-fn@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz"
@ -4659,12 +5000,28 @@ jest@^27.2.2:
import-local "^3.0.2" import-local "^3.0.2"
jest-cli "^27.2.2" jest-cli "^27.2.2"
jimp@^0.16.1:
version "0.16.1"
resolved "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz#192f851a30e5ca11112a3d0aa53137659a78ca7a"
integrity sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==
dependencies:
"@babel/runtime" "^7.7.2"
"@jimp/custom" "^0.16.1"
"@jimp/plugins" "^0.16.1"
"@jimp/types" "^0.16.1"
regenerator-runtime "^0.13.3"
jose@^1.27.2: jose@^1.27.2:
version "1.28.1" version "1.28.1"
resolved "https://registry.npmjs.org/jose/-/jose-1.28.1.tgz" resolved "https://registry.npmjs.org/jose/-/jose-1.28.1.tgz"
dependencies: dependencies:
"@panva/asn1.js" "^1.0.0" "@panva/asn1.js" "^1.0.0"
jpeg-js@0.4.2:
version "0.4.2"
resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz#8b345b1ae4abde64c2da2fe67ea216a114ac279d"
integrity sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==
js-sha3@0.8.0: js-sha3@0.8.0:
version "0.8.0" version "0.8.0"
resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz"
@ -4906,6 +5263,20 @@ listr2@^3.8.2, listr2@^3.8.3:
through "^2.3.8" through "^2.3.8"
wrap-ansi "^7.0.0" wrap-ansi "^7.0.0"
load-bmfont@^1.3.1, load-bmfont@^1.4.0:
version "1.4.1"
resolved "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9"
integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==
dependencies:
buffer-equal "0.0.1"
mime "^1.3.4"
parse-bmfont-ascii "^1.0.3"
parse-bmfont-binary "^1.0.5"
parse-bmfont-xml "^1.1.4"
phin "^2.9.1"
xhr "^2.0.1"
xtend "^4.0.0"
loader-utils@1.2.3: loader-utils@1.2.3:
version "1.2.3" version "1.2.3"
resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz"
@ -5115,6 +5486,11 @@ mime-types@^2.1.12, mime-types@~2.1.19:
dependencies: dependencies:
mime-db "1.49.0" mime-db "1.49.0"
mime@^1.3.4:
version "1.6.0"
resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.3.1: mime@^2.3.1:
version "2.5.2" version "2.5.2"
resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
@ -5124,6 +5500,13 @@ mimic-fn@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=
dependencies:
dom-walk "^0.1.0"
mini-svg-data-uri@^1.2.3: mini-svg-data-uri@^1.2.3:
version "1.3.3" version "1.3.3"
resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.3.3.tgz" resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.3.3.tgz"
@ -5146,6 +5529,13 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.5" version "1.2.5"
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.4: mkdirp@^1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
@ -5475,6 +5865,11 @@ oblivious-set@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz" resolved "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz"
omggif@^1.0.10, omggif@^1.0.9:
version "1.0.10"
resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19"
integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==
once@^1.3.0, once@^1.3.1, once@^1.4.0: once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
@ -5568,7 +5963,7 @@ p-try@^2.0.0:
version "2.2.0" version "2.2.0"
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
pako@~1.0.5: pako@^1.0.5, pako@~1.0.5:
version "1.0.11" version "1.0.11"
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
@ -5592,6 +5987,29 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
pbkdf2 "^3.0.3" pbkdf2 "^3.0.3"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
parse-bmfont-ascii@^1.0.3:
version "1.0.6"
resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285"
integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=
parse-bmfont-binary@^1.0.5:
version "1.0.6"
resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006"
integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=
parse-bmfont-xml@^1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389"
integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==
dependencies:
xml-parse-from-string "^1.0.0"
xml2js "^0.4.5"
parse-headers@^2.0.0:
version "2.0.4"
resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf"
integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==
parse-json@^5.0.0: parse-json@^5.0.0:
version "5.2.0" version "5.2.0"
resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
@ -5665,6 +6083,11 @@ performance-now@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz"
phin@^2.9.1:
version "2.9.3"
resolved "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c"
integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz"
@ -5679,6 +6102,13 @@ pirates@^4.0.1:
dependencies: dependencies:
node-modules-regexp "^1.0.0" node-modules-regexp "^1.0.0"
pixelmatch@^4.0.2:
version "4.0.2"
resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=
dependencies:
pngjs "^3.0.0"
pkce-challenge@^2.1.0: pkce-challenge@^2.1.0:
version "2.2.0" version "2.2.0"
resolved "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-2.2.0.tgz" resolved "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-2.2.0.tgz"
@ -5699,7 +6129,7 @@ please-upgrade-node@^3.2.0:
dependencies: dependencies:
semver-compare "^1.0.0" semver-compare "^1.0.0"
pngjs@^3.3.0: pngjs@^3.0.0, pngjs@^3.3.0, pngjs@^3.3.3:
version "3.4.0" version "3.4.0"
resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz"
@ -6215,7 +6645,7 @@ reflect-metadata@^0.1.13:
version "0.1.13" version "0.1.13"
resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz"
regenerator-runtime@^0.13.4: regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
version "0.13.9" version "0.13.9"
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
@ -6877,6 +7307,16 @@ timers-browserify@2.0.12, timers-browserify@^2.0.4:
dependencies: dependencies:
setimmediate "^1.0.4" setimmediate "^1.0.4"
timm@^1.6.1:
version "1.7.1"
resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f"
integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==
tinycolor2@^1.4.1:
version "1.4.2"
resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
tmp@^0.2.1, tmp@~0.2.1: tmp@^0.2.1, tmp@~0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz"
@ -7152,6 +7592,13 @@ use-subscription@1.5.1:
dependencies: dependencies:
object-assign "^4.1.1" object-assign "^4.1.1"
utif@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759"
integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==
dependencies:
pako "^1.0.5"
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
@ -7380,6 +7827,16 @@ ws@^7.3.1, ws@^7.4.6:
version "7.5.5" version "7.5.5"
resolved "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz" resolved "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz"
xhr@^2.0.1:
version "2.6.0"
resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d"
integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==
dependencies:
global "~4.4.0"
is-function "^1.0.1"
parse-headers "^2.0.0"
xtend "^4.0.0"
xml-js@^1.6.11: xml-js@^1.6.11:
version "1.6.11" version "1.6.11"
resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz" resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz"
@ -7390,7 +7847,12 @@ xml-name-validator@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz"
xml2js@^0.4.23: xml-parse-from-string@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28"
integrity sha1-qQKekp09vN7RafPG4oI42VpdWig=
xml2js@^0.4.23, xml2js@^0.4.5:
version "0.4.23" version "0.4.23"
resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz"
dependencies: dependencies: