From 37cd32e962c850ad6992e2233db47cac108f2e8e Mon Sep 17 00:00:00 2001 From: Donald Chan Date: Fri, 27 Mar 2020 13:36:01 +0800 Subject: [PATCH] add typings for browser-image-compression (#43165) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add typings for browser-image-compression * Update types/browser-image-compression/index.d.ts Co-Authored-By: Piotr Błażejewicz (Peter Blazejewicz) * update test case Co-authored-by: Piotr Błażejewicz (Peter Blazejewicz) --- .../browser-image-compression-tests.ts | 22 +++++++++++++++ types/browser-image-compression/index.d.ts | 27 +++++++++++++++++++ types/browser-image-compression/tsconfig.json | 25 +++++++++++++++++ types/browser-image-compression/tslint.json | 3 +++ 4 files changed, 77 insertions(+) create mode 100644 types/browser-image-compression/browser-image-compression-tests.ts create mode 100644 types/browser-image-compression/index.d.ts create mode 100644 types/browser-image-compression/tsconfig.json create mode 100644 types/browser-image-compression/tslint.json diff --git a/types/browser-image-compression/browser-image-compression-tests.ts b/types/browser-image-compression/browser-image-compression-tests.ts new file mode 100644 index 0000000000..6c6515a2e9 --- /dev/null +++ b/types/browser-image-compression/browser-image-compression-tests.ts @@ -0,0 +1,22 @@ +import imageCompression = require('browser-image-compression'); + +async function handleImageUpload({ target }: { target: EventTarget & { files: FileList } }) { + const imageFile = target.files[0]; + console.log('originalFile instanceof Blob', imageFile instanceof Blob); // true + console.log(`originalFile size ${imageFile.size / 1024 / 1024} MB`); + + const options = { + maxSizeMB: 1, + maxWidthOrHeight: 1920, + useWebWorker: true + }; + try { + const compressedFile = await imageCompression(imageFile, options); + console.log('compressedFile instanceof Blob', compressedFile instanceof Blob); // true + console.log(`compressedFile size ${compressedFile.size / 1024 / 1024} MB`); // smaller than maxSizeMB + + // await uploadToServer(compressedFile); // write your own logic + } catch (error) { + console.log(error); + } +} diff --git a/types/browser-image-compression/index.d.ts b/types/browser-image-compression/index.d.ts new file mode 100644 index 0000000000..94ff80ddf7 --- /dev/null +++ b/types/browser-image-compression/index.d.ts @@ -0,0 +1,27 @@ +// Type definitions for browser-image-compression 1.0 +// Project: https://github.com/Donaldcwl/browser-image-compression +// Definitions by: Donald +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface Options { + /** @default Number.POSITIVE_INFINITY */ + maxSizeMB?: number; + /** @default undefined */ + maxWidthOrHeight?: number; + /** @default false */ + useWebWorker?: boolean; + /** @default 10 */ + maxIteration?: number; + /** Default to be the exif orientation from the image file */ + exifOrientation?: number; + /** A function takes one progress argument (progress from 0 to 100) */ + onProgress?: (progress: number) => void; + /** Default to be the original mime type from the image file */ + fileType?: string; +} + +declare function imageCompression(image: File | Blob, options: Options): Promise; + +export as namespace imageCompression; + +export = imageCompression; diff --git a/types/browser-image-compression/tsconfig.json b/types/browser-image-compression/tsconfig.json new file mode 100644 index 0000000000..0ea0eb99f6 --- /dev/null +++ b/types/browser-image-compression/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "esModuleInterop": true, + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "browser-image-compression-tests.ts" + ] +} diff --git a/types/browser-image-compression/tslint.json b/types/browser-image-compression/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/browser-image-compression/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}