Skip to content

Commit

Permalink
first conversion test
Browse files Browse the repository at this point in the history
  • Loading branch information
f0x52 committed May 20, 2024
1 parent 6e013f9 commit c06f6f8
Show file tree
Hide file tree
Showing 3 changed files with 285 additions and 4 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
"read-chunk": "3.2.0",
"resolve-path": "1.4.0",
"semver": "7.5.2",
"sharp": "0.33.4",
"socket.io": "4.6.1",
"tlds": "1.228.0",
"ua-parser-js": "1.0.33",
Expand Down
99 changes: 96 additions & 3 deletions server/plugins/uploader.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Config from "../config";
import path from "path";
import fs from "fs/promises";
import fs from "fs";
import fileType from "file-type";
import readChunk from "read-chunk";
import isUtf8 from "is-utf8";
Expand All @@ -12,6 +12,7 @@ import Client from "../client";
import resolvePath from "resolve-path";
import multer from "multer";
import { nanoid } from "nanoid";
import sharp from "sharp";

declare module 'express' {
interface Request {
Expand Down Expand Up @@ -42,6 +43,78 @@ const inlineContentDispositionTypes = {
"video/webm": "video.webm",
};

// Multer storage backend adapted from DiskStorage https://github.com/expressjs/multer/blob/master/storage/disk.js
// To be able to transparently convert files if needed

type FilenameFunc = (req: Request, file: Express.Multer.File, cb: (error: Error | null, filename: string) => void) => void;
type DestinationFunc = (req: Request, file: Express.Multer.File, cb: (error: Error | null, destination: string) => void) => void;

class SharpDiskStorage implements multer.StorageEngine {
getFilename: FilenameFunc;
getDestination: DestinationFunc;

constructor(opts: {filename: FilenameFunc, destination: DestinationFunc}) {
this.getFilename = opts.filename;
this.getDestination = opts.destination;
}

_handleFile(req: Request, file: Express.Multer.File, callback: (error?: any, info?: Partial<Express.Multer.File> | undefined) => void): void {
const that = this;

that.getDestination(req, file, function (err, destination) {
if (err) {
return callback(err);
}

that.getFilename(req, file, function (err2, filename) {
if (err2) {
return callback(err2);
}

let convertToJpeg = false;

if (path.parse(filename).ext.toLowerCase() === ".heic") {
convertToJpeg = true;
filename.replace(/\.heic$/, ".jpg");
}

const finalPath = path.join(destination, filename);
const outStream = fs.createWriteStream(finalPath);
outStream.on("error", callback);

if (convertToJpeg) {
const converterStream = sharp()
.rotate()
.toFormat("jpeg");

converterStream.on("error", callback);
file.stream.pipe(converterStream).pipe(outStream);
} else {
file.stream.pipe(outStream);
}

outStream.on("finish", () => {
callback(null, {
destination,
filename,
path: finalPath,
size: outStream.bytesWritten
})
});
})
})
}

_removeFile(req: Request, file: Express.Multer.File, callback: (error: Error | null) => void): void {
const p = file.path;
delete file.destination;

Check failure on line 110 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 18.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

Check failure on line 110 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 20.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

Check failure on line 110 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 21.x on ubuntu-latest

The operand of a 'delete' operator must be optional.
delete file.filename;

Check failure on line 111 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 18.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

Check failure on line 111 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 20.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

Check failure on line 111 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 21.x on ubuntu-latest

The operand of a 'delete' operator must be optional.
delete file.path;

Check failure on line 112 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 18.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

Check failure on line 112 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 20.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

Check failure on line 112 in server/plugins/uploader.ts

View workflow job for this annotation

GitHub Actions / Node 21.x on ubuntu-latest

The operand of a 'delete' operator must be optional.

fs.unlink(p, callback);
}
}

interface UploadToken {
name: string,
timeout: NodeJS.Timeout,
Expand Down Expand Up @@ -184,9 +257,9 @@ class Uploader {
files: 1,
fileSize: Uploader.getMaxFileSize()
},
storage: multer.diskStorage({
storage: new SharpDiskStorage({
destination(_req, file, cb) {
fs.mkdir(userDir, { recursive: true }).then(() => {
fs.promises.mkdir(userDir, { recursive: true }).then(() => {
cb(null, userDir);
}).catch((err) => {
log.error("File upload error: %s", err.message);
Expand All @@ -204,6 +277,26 @@ class Uploader {
cb(null, id);
}
})
// storage: multer.diskStorage({
// destination(_req, file, cb) {
// fs.promises.mkdir(userDir, { recursive: true }).then(() => {
// cb(null, userDir);
// }).catch((err) => {
// log.error("File upload error: %s", err.message);
// cb(err, "");
// });
// },
// filename(_req, file, cb) {
// let id = nanoid(16);
// const ext = path.parse(file.originalname).ext;

// if (ext) {
// id += ext;
// }

// cb(null, id);
// }
// })
});

uploadMiddleware.single("file")(req, res, next);
Expand Down
189 changes: 188 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1091,6 +1091,13 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==

"@emnapi/runtime@^1.1.1":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.2.0.tgz#71d018546c3a91f3b51106530edbc056b9f2f2e3"
integrity sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==
dependencies:
tslib "^2.4.0"

"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
Expand Down Expand Up @@ -1152,6 +1159,119 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==

"@img/sharp-darwin-arm64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz#a1cf4a7febece334f16e0328b9689f05797d7aec"
integrity sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==
optionalDependencies:
"@img/sharp-libvips-darwin-arm64" "1.0.2"

"@img/sharp-darwin-x64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz#f77be2d7c3609d3e77cd337b199a772e07b87bd2"
integrity sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==
optionalDependencies:
"@img/sharp-libvips-darwin-x64" "1.0.2"

"@img/sharp-libvips-darwin-arm64@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz#b69f49fecbe9572378675769b189410721b0fa53"
integrity sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==

"@img/sharp-libvips-darwin-x64@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz#5665da7360d8e5ed7bee314491c8fe736b6a3c39"
integrity sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==

"@img/sharp-libvips-linux-arm64@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz#8a05e5e9e9b760ff46561e32f19bd5e035fa881c"
integrity sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==

"@img/sharp-libvips-linux-arm@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz#0fd33b9bf3221948ce0ca7a5a725942626577a03"
integrity sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==

"@img/sharp-libvips-linux-s390x@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz#4b89150ec91b256ee2cbb5bb125321bf029a4770"
integrity sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==

"@img/sharp-libvips-linux-x64@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz#947ccc22ca5bc8c8cfe921b39a5fdaebc5e39f3f"
integrity sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==

"@img/sharp-libvips-linuxmusl-arm64@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz#821d58ce774f0f8bed065b69913a62f65d512f2f"
integrity sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==

"@img/sharp-libvips-linuxmusl-x64@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz#4309474bd8b728a61af0b3b4fad0c476b5f3ccbe"
integrity sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==

"@img/sharp-linux-arm64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz#bd390113e256487041411b988ded13a26cfc5f95"
integrity sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==
optionalDependencies:
"@img/sharp-libvips-linux-arm64" "1.0.2"

"@img/sharp-linux-arm@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz#14ecc81f38f75fb4cd7571bc83311746d6745fca"
integrity sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==
optionalDependencies:
"@img/sharp-libvips-linux-arm" "1.0.2"

"@img/sharp-linux-s390x@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz#119e8081e2c6741b5ac908fe02244e4c559e525f"
integrity sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==
optionalDependencies:
"@img/sharp-libvips-linux-s390x" "1.0.2"

"@img/sharp-linux-x64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz#21d4c137b8da9a313b069ff5c920ded709f853d7"
integrity sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==
optionalDependencies:
"@img/sharp-libvips-linux-x64" "1.0.2"

"@img/sharp-linuxmusl-arm64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz#f3fde68fd67b85a32da6f1155818c3b58b8e7ae0"
integrity sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==
optionalDependencies:
"@img/sharp-libvips-linuxmusl-arm64" "1.0.2"

"@img/sharp-linuxmusl-x64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz#44373724aecd7b69900e0578228144e181db7892"
integrity sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==
optionalDependencies:
"@img/sharp-libvips-linuxmusl-x64" "1.0.2"

"@img/sharp-wasm32@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz#88e3f18d7e7cd8cfe1af98e9963db4d7b6491435"
integrity sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==
dependencies:
"@emnapi/runtime" "^1.1.1"

"@img/sharp-win32-ia32@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz#b1c772dd2952e983980b1eb85808fa8129484d46"
integrity sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==

"@img/sharp-win32-x64@0.33.4":
version "0.33.4"
resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz#106f911134035b4157ec92a0c154a6b6f88fa4c1"
integrity sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==

"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
Expand Down Expand Up @@ -2943,16 +3063,32 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==

color-name@~1.1.4:
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==

color-string@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"

color-support@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==

color@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
dependencies:
color-convert "^2.0.1"
color-string "^1.9.0"

colord@^2.9.1, colord@^2.9.2:
version "2.9.2"
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
Expand Down Expand Up @@ -3406,6 +3542,11 @@ detect-libc@^2.0.0:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==

detect-libc@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==

diff@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
Expand Down Expand Up @@ -4774,6 +4915,11 @@ is-arrayish@^0.2.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==

is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==

is-bigint@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
Expand Down Expand Up @@ -7382,6 +7528,35 @@ shallow-clone@^3.0.0:
dependencies:
kind-of "^6.0.2"

sharp@0.33.4:
version "0.33.4"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.4.tgz#b88e6e843e095c6ab5e1a0c59c4885e580cd8405"
integrity sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==
dependencies:
color "^4.2.3"
detect-libc "^2.0.3"
semver "^7.6.0"
optionalDependencies:
"@img/sharp-darwin-arm64" "0.33.4"
"@img/sharp-darwin-x64" "0.33.4"
"@img/sharp-libvips-darwin-arm64" "1.0.2"
"@img/sharp-libvips-darwin-x64" "1.0.2"
"@img/sharp-libvips-linux-arm" "1.0.2"
"@img/sharp-libvips-linux-arm64" "1.0.2"
"@img/sharp-libvips-linux-s390x" "1.0.2"
"@img/sharp-libvips-linux-x64" "1.0.2"
"@img/sharp-libvips-linuxmusl-arm64" "1.0.2"
"@img/sharp-libvips-linuxmusl-x64" "1.0.2"
"@img/sharp-linux-arm" "0.33.4"
"@img/sharp-linux-arm64" "0.33.4"
"@img/sharp-linux-s390x" "0.33.4"
"@img/sharp-linux-x64" "0.33.4"
"@img/sharp-linuxmusl-arm64" "0.33.4"
"@img/sharp-linuxmusl-x64" "0.33.4"
"@img/sharp-wasm32" "0.33.4"
"@img/sharp-win32-ia32" "0.33.4"
"@img/sharp-win32-x64" "0.33.4"

shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
Expand Down Expand Up @@ -7444,6 +7619,13 @@ simple-get@^4.0.0:
once "^1.3.1"
simple-concat "^1.0.0"

simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
dependencies:
is-arrayish "^0.3.1"

sinon@13.0.2:
version "13.0.2"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-13.0.2.tgz#c6a8ddd655dc1415bbdc5ebf0e5b287806850c3a"
Expand Down Expand Up @@ -8079,6 +8261,11 @@ ts-sinon@2.0.2:
"@types/sinon-chai" "^3.2.4"
sinon "^9.0.3"

tslib@^2.4.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==

tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
Expand Down

0 comments on commit c06f6f8

Please sign in to comment.