Просмотр исходного кода

chore(server): Update sharp to v0.21.0

There is an API deprecation, see https://github.com/lovell/sharp/issues/1135#issuecomment-423770094
Michael Bromley 7 лет назад
Родитель
Сommit
8f1286c5b8

+ 2 - 2
server/package.json

@@ -51,7 +51,7 @@
     "nodemailer": "^4.7.0",
     "reflect-metadata": "^0.1.12",
     "rxjs": "^6.3.3",
-    "sharp": "^0.20.8",
+    "sharp": "^0.21.0",
     "typeorm": "^0.2.9",
     "typescript": "^3.1.6"
   },
@@ -69,7 +69,7 @@
     "@types/nanoid": "^1.2.0",
     "@types/node": "^10.12.9",
     "@types/nodemailer": "^4.6.5",
-    "@types/sharp": "^0.17.10",
+    "@types/sharp": "^0.21.0",
     "faker": "^4.1.0",
     "graphql-request": "^1.8.2",
     "gulp": "^4.0.0",

+ 2 - 6
server/src/plugin/default-asset-server/default-asset-preview-strategy.ts

@@ -23,20 +23,16 @@ export class DefaultAssetPreviewStrategy implements AssetPreviewStrategy {
             const width = metadata.width || 0;
             const height = metadata.height || 0;
             if (maxWidth < width || maxHeight < height) {
-                return image
-                    .resize(maxWidth, maxHeight)
-                    .max()
-                    .toBuffer();
+                return image.resize(maxWidth, maxHeight, { fit: 'inside' }).toBuffer();
             } else {
                 return data;
             }
         } else {
             return sharp(path.join(__dirname, 'file-icon.png'))
-                .resize(800, 800)
+                .resize(800, 800, { fit: 'outside' })
                 .overlayWith(this.generateMimeTypeOverlay(mimeType), {
                     gravity: sharp.gravity.center,
                 })
-                .min()
                 .toBuffer();
         }
     }

+ 7 - 7
server/src/plugin/default-asset-server/transform-image.ts

@@ -1,7 +1,7 @@
-import { Request } from 'express';
 import * as sharp from 'sharp';
+import { ResizeOptions } from 'sharp';
 
-import { ImageTransformMode, ImageTransformPreset } from './default-asset-server-plugin';
+import { ImageTransformPreset } from './default-asset-server-plugin';
 
 /**
  * Applies transforms to the gifen image according to the query params passed.
@@ -10,7 +10,7 @@ export async function transformImage(
     originalImage: Buffer,
     queryParams: Record<string, string>,
     presets: ImageTransformPreset[],
-): Promise<sharp.SharpInstance> {
+): Promise<sharp.Sharp> {
     let width = +queryParams.w || undefined;
     let height = +queryParams.h || undefined;
     let mode = queryParams.mode || 'crop';
@@ -22,11 +22,11 @@ export async function transformImage(
             mode = matchingPreset.mode;
         }
     }
-    const image = sharp(originalImage).resize(width, height);
+    const options: ResizeOptions = {};
     if (mode === 'crop') {
-        image.crop(sharp.strategy.entropy);
+        options.position = sharp.strategy.entropy;
     } else {
-        image.max();
+        options.fit = 'inside';
     }
-    return image;
+    return sharp(originalImage).resize(width, height, options);
 }

+ 33 - 19
server/yarn.lock

@@ -318,9 +318,10 @@
     "@types/express-serve-static-core" "*"
     "@types/mime" "*"
 
-"@types/sharp@^0.17.10":
-  version "0.17.10"
-  resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.17.10.tgz#4f546861c53fae2b1bffcdd1ae7e691cc68afa52"
+"@types/sharp@^0.21.0":
+  version "0.21.0"
+  resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.21.0.tgz#e364b345c70e5924a5c626aaccaa236e0cfc2455"
+  integrity sha512-BmsCha5/lx2Afz2zwNo9F2txlkZ9HQf49N94lzSFmj5Oc7NfRMZguwVIhytb65qdY2zNF+azovzDNso6JUZpOw==
   dependencies:
     "@types/node" "*"
 
@@ -4714,15 +4715,11 @@ nan@2.10.0, nan@^2.9.2:
   version "2.10.0"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
 
-nan@2.11.1:
+nan@2.11.1, nan@^2.11.1:
   version "2.11.1"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766"
   integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==
 
-nan@^2.11.0:
-  version "2.11.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099"
-
 nanoid@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.0.0.tgz#e1ab4a4b024a38d15531ba34a712a201540de639"
@@ -4744,6 +4741,11 @@ nanomatch@^1.2.9:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
+napi-build-utils@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508"
+  integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==
+
 natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -5332,21 +5334,23 @@ posix-character-classes@^0.1.0:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
 
-prebuild-install@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-4.0.0.tgz#206ce8106ce5efa4b6cf062fc8a0a7d93c17f3a8"
+prebuild-install@^5.2.0:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.1.tgz#87ba8cf17c65360a75eefeb3519e87973bf9791d"
+  integrity sha512-9DAccsInWHB48TBQi2eJkLPE049JuAI6FjIH0oIrij4bpDVEbX6JvlWRAcAAlUqBHhjgq0jNqA3m3bBXWm9v6w==
   dependencies:
     detect-libc "^1.0.3"
     expand-template "^1.0.2"
     github-from-package "0.0.0"
     minimist "^1.2.0"
     mkdirp "^0.5.1"
+    napi-build-utils "^1.0.1"
     node-abi "^2.2.0"
     noop-logger "^0.1.1"
     npmlog "^4.0.1"
     os-homedir "^1.0.1"
     pump "^2.0.1"
-    rc "^1.1.6"
+    rc "^1.2.7"
     simple-get "^2.7.0"
     tar-fs "^1.13.0"
     tunnel-agent "^0.6.0"
@@ -5966,18 +5970,19 @@ setprototypeof@1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
 
-sharp@^0.20.8:
-  version "0.20.8"
-  resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.20.8.tgz#e853f10b53b730824f0c3c5e453c79fa0812a48b"
+sharp@^0.21.0:
+  version "0.21.0"
+  resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.21.0.tgz#e3cf2e4cb9382caf78efb3d45252381730e899c4"
+  integrity sha512-qr6yMl0ju8EGMtjIj5U1Ojj8sKuZ99/DQaNKWmoFHxqg3692AFSrEiPI/yr0O05OWtGD8LuCw8WSGmnZcNrZaA==
   dependencies:
     color "^3.0.0"
     detect-libc "^1.0.3"
     fs-copy-file-sync "^1.1.1"
-    nan "^2.11.0"
+    nan "^2.11.1"
     npmlog "^4.1.2"
-    prebuild-install "^4.0.0"
+    prebuild-install "^5.2.0"
     semver "^5.5.1"
-    simple-get "^2.8.1"
+    simple-get "^3.0.3"
     tar "^4.4.6"
     tunnel-agent "^0.6.0"
 
@@ -6007,7 +6012,7 @@ simple-concat@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
 
-simple-get@^2.7.0, simple-get@^2.8.1:
+simple-get@^2.7.0:
   version "2.8.1"
   resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d"
   dependencies:
@@ -6015,6 +6020,15 @@ simple-get@^2.7.0, simple-get@^2.8.1:
     once "^1.3.1"
     simple-concat "^1.0.0"
 
+simple-get@^3.0.3:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.0.3.tgz#924528ac3f9d7718ce5e9ec1b1a69c0be4d62efa"
+  integrity sha512-Wvre/Jq5vgoz31Z9stYWPLn0PqRqmBDpFSdypAnHu5AvRVCYPRYGnvryNLiXu8GOBNDH82J2FRHUGMjjHUpXFw==
+  dependencies:
+    decompress-response "^3.3.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"