@expo/image-utils 0.3.22 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,14 +5,6 @@
5
5
 
6
6
  <p align="center">A library for image processing functionality in Expo CLI.</p>
7
7
 
8
- <p align="center">
9
- <img src="https://flat.badgen.net/packagephobia/install/@expo/image-utils">
10
-
11
- <a href="https://www.npmjs.com/package/@expo/image-utils">
12
- <img src="https://flat.badgen.net/npm/dw/@expo/image-utils" target="_blank" />
13
- </a>
14
- </p>
15
-
16
8
  <!-- Body -->
17
9
 
18
10
  It uses `sharp` for image processing if it's available through a global `sharp-cli` installation. Otherwise it uses `jimp`, a Node library with no native dependencies, and warns the user that they may want to install `sharp-cli` for faster image processing.
package/build/Cache.js CHANGED
@@ -47,8 +47,8 @@ async function cacheImageAsync(fileName, buffer, cacheKey) {
47
47
  try {
48
48
  await (0, fs_extra_1.writeFile)((0, path_1.resolve)(cacheKeys[cacheKey], fileName), buffer);
49
49
  }
50
- catch ({ message }) {
51
- console.warn(`Error caching image: "${fileName}". ${message}`);
50
+ catch (error) {
51
+ console.warn(`Error caching image: "${fileName}". ${error.message}`);
52
52
  }
53
53
  }
54
54
  exports.cacheImageAsync = cacheImageAsync;
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto';\nimport { ensureDir, readdirSync, readFile, readFileSync, remove, writeFile } from 'fs-extra';\nimport { join, resolve } from 'path';\n\nimport { ImageOptions } from './Image.types';\n\nconst CACHE_LOCATION = '.expo/web/cache/production/images';\n\nconst cacheKeys: { [key: string]: string } = {};\n\n// Calculate SHA256 Checksum value of a file based on its contents\nfunction calculateHash(filePath: string): string {\n const contents = filePath.startsWith('http') ? filePath : readFileSync(filePath);\n return crypto.createHash('sha256').update(contents).digest('hex');\n}\n\n// Create a hash key for caching the images between builds\nexport function createCacheKey(fileSource: string, properties: string[]): string {\n const hash = calculateHash(fileSource);\n return [hash].concat(properties).filter(Boolean).join('-');\n}\n\nexport async function createCacheKeyWithDirectoryAsync(\n projectRoot: string,\n type: string,\n icon: ImageOptions\n): Promise<string> {\n const cacheKey = `${type}-${createCacheKey(icon.src, [icon.resizeMode, icon.backgroundColor])}`;\n if (!(cacheKey in cacheKeys)) {\n cacheKeys[cacheKey] = await ensureCacheDirectory(projectRoot, type, cacheKey);\n }\n\n return cacheKey;\n}\n\nexport async function ensureCacheDirectory(\n projectRoot: string,\n type: string,\n cacheKey: string\n): Promise<string> {\n const cacheFolder = join(projectRoot, CACHE_LOCATION, type, cacheKey);\n await ensureDir(cacheFolder);\n return cacheFolder;\n}\n\nexport async function getImageFromCacheAsync(\n fileName: string,\n cacheKey: string\n): Promise<null | Buffer> {\n try {\n return await readFile(resolve(cacheKeys[cacheKey], fileName));\n } catch {\n return null;\n }\n}\n\nexport async function cacheImageAsync(\n fileName: string,\n buffer: Buffer,\n cacheKey: string\n): Promise<void> {\n try {\n await writeFile(resolve(cacheKeys[cacheKey], fileName), buffer);\n } catch ({ message }) {\n console.warn(`Error caching image: \"${fileName}\". ${message}`);\n }\n}\n\nexport async function clearUnusedCachesAsync(projectRoot: string, type: string): Promise<void> {\n // Clean up any old caches\n const cacheFolder = join(projectRoot, CACHE_LOCATION, type);\n await ensureDir(cacheFolder);\n const currentCaches = readdirSync(cacheFolder);\n\n if (!Array.isArray(currentCaches)) {\n console.warn('Failed to read the icon cache');\n return;\n }\n const deleteCachePromises: Promise<void>[] = [];\n for (const cache of currentCaches) {\n // skip hidden folders\n if (cache.startsWith('.')) {\n continue;\n }\n\n // delete\n if (!(cache in cacheKeys)) {\n deleteCachePromises.push(remove(join(cacheFolder, cache)));\n }\n }\n\n await Promise.all(deleteCachePromises);\n}\n"]}
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Download.js","sourceRoot":"","sources":["../src/Download.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,aAAa;AACb,gEAAgC;AAChC,4DAA+B;AAC/B,gDAAwB;AACxB,oDAA4B;AAC5B,kDAA8B;AAC9B,gDAAwB;AAExB,sCAAsC;AACtC,MAAM,mBAAmB,GAA2B,EAAE,CAAC;AAEvD,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACxD,IAAI,GAAG,IAAI,mBAAmB,EAAE;QAC9B,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;KACjC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC1B,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;KACrD;SAAM;QACL,mBAAmB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChC;IACD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAVD,4DAUC;AAEM,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,eAAS,CAAC,SAAS,EAAE,CAAC;IAEzC,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,GAAG,CAAC,CAAC;KACxE;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,cAAI,CAAC,SAAS,CAAC,gBAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAErE,4EAA4E;IAC5E,MAAM,GAAG,GAAG,MAAM,sBAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,kBAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAvBD,sCAuBC","sourcesContent":["import fs from 'fs-extra';\n// @ts-ignore\nimport Jimp from 'jimp-compact';\nimport fetch from 'node-fetch';\nimport path from 'path';\nimport stream from 'stream';\nimport temporary from 'tempy';\nimport util from 'util';\n\n// cache downloaded images into memory\nconst cacheDownloadedKeys: Record<string, string> = {};\n\nfunction stripQueryParams(url: string): string {\n return url.split('?')[0].split('#')[0];\n}\n\nexport async function downloadOrUseCachedImage(url: string): Promise<string> {\n if (url in cacheDownloadedKeys) {\n return cacheDownloadedKeys[url];\n }\n if (url.startsWith('http')) {\n cacheDownloadedKeys[url] = await downloadImage(url);\n } else {\n cacheDownloadedKeys[url] = url;\n }\n return cacheDownloadedKeys[url];\n}\n\nexport async function downloadImage(url: string): Promise<string> {\n const outputPath = temporary.directory();\n\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`It was not possible to download image from '${url}'`);\n }\n\n // Download to local file\n const streamPipeline = util.promisify(stream.pipeline);\n const localPath = path.join(outputPath, path.basename(stripQueryParams(url)));\n await streamPipeline(response.body, fs.createWriteStream(localPath));\n\n // If an image URL doesn't have a name, get the mime type and move the file.\n const img = await Jimp.read(localPath);\n const mime = img.getMIME().split('/').pop()!;\n if (!localPath.endsWith(mime)) {\n const newPath = path.join(outputPath, `image.${mime}`);\n await fs.move(localPath, newPath);\n return newPath;\n }\n\n return localPath;\n}\n"]}
1
+ {"version":3,"file":"Download.js","sourceRoot":"","sources":["../src/Download.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,aAAa;AACb,gEAAgC;AAChC,4DAA+B;AAC/B,gDAAwB;AACxB,oDAA4B;AAC5B,kDAA8B;AAC9B,gDAAwB;AAExB,sCAAsC;AACtC,MAAM,mBAAmB,GAA2B,EAAE,CAAC;AAEvD,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACxD,IAAI,GAAG,IAAI,mBAAmB,EAAE;QAC9B,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;KACjC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC1B,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;KACrD;SAAM;QACL,mBAAmB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChC;IACD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAVD,4DAUC;AAEM,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,eAAS,CAAC,SAAS,EAAE,CAAC;IAEzC,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,GAAG,CAAC,CAAC;KACxE;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,cAAI,CAAC,SAAS,CAAC,gBAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAErE,4EAA4E;IAC5E,MAAM,GAAG,GAAG,MAAM,sBAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,kBAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAvBD,sCAuBC"}
package/build/Ico.js CHANGED
@@ -91,7 +91,7 @@ function generateFromPNGs(pngs) {
91
91
  return Buffer.concat(arr, len);
92
92
  }
93
93
  async function generateAsync(buffers) {
94
- const pngs = await Promise.all(buffers.map(x => (0, parse_png_1.default)(x)));
94
+ const pngs = await Promise.all(buffers.map((x) => (0, parse_png_1.default)(x)));
95
95
  return generateFromPNGs(pngs);
96
96
  }
97
97
  exports.generateAsync = generateAsync;
package/build/Ico.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Ico.js","sourceRoot":"","sources":["../src/Ico.ts"],"names":[],"mappings":"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","sourcesContent":["// Inspired by https://github.com/kevva/to-ico but reuses existing packages to keep bundle size small.\nimport parsePng from 'parse-png';\n\ntype PNG = {\n data: Buffer;\n width: number;\n height: number;\n bpp: number;\n};\n\nconst constants = {\n directorySize: 16,\n bitmapSize: 40,\n headerSize: 6,\n colorMode: 0,\n};\n\nfunction createHeader(header: number): Buffer {\n const buffer = Buffer.alloc(constants.headerSize);\n\n buffer.writeUInt16LE(0, 0);\n buffer.writeUInt16LE(1, 2);\n buffer.writeUInt16LE(header, 4);\n\n return buffer;\n}\n\nfunction createDirectory(data: PNG, offset: number): Buffer {\n const buffer = Buffer.alloc(constants.directorySize);\n const size = data.data.length + constants.bitmapSize;\n const width = data.width === 256 ? 0 : data.width;\n const height = data.height === 256 ? 0 : data.height;\n const bpp = data.bpp * 8;\n\n buffer.writeUInt8(width, 0);\n buffer.writeUInt8(height, 1);\n buffer.writeUInt8(0, 2);\n buffer.writeUInt8(0, 3);\n buffer.writeUInt16LE(1, 4);\n buffer.writeUInt16LE(bpp, 6);\n buffer.writeUInt32LE(size, 8);\n buffer.writeUInt32LE(offset, 12);\n\n return buffer;\n}\n\nfunction createBitmap(data: PNG, compression: number): Buffer {\n const buffer = Buffer.alloc(constants.bitmapSize);\n\n buffer.writeUInt32LE(constants.bitmapSize, 0);\n buffer.writeInt32LE(data.width, 4);\n buffer.writeInt32LE(data.height * 2, 8);\n buffer.writeUInt16LE(1, 12);\n buffer.writeUInt16LE(data.bpp * 8, 14);\n buffer.writeUInt32LE(compression, 16);\n buffer.writeUInt32LE(data.data.length, 20);\n buffer.writeInt32LE(0, 24);\n buffer.writeInt32LE(0, 28);\n buffer.writeUInt32LE(0, 32);\n buffer.writeUInt32LE(0, 36);\n\n return buffer;\n}\n\nfunction createDIB(data: Buffer, width: number, height: number, bpp: number): Buffer {\n const cols = width * bpp;\n const rows = height * cols;\n const end = rows - cols;\n const buffer = Buffer.alloc(data.length);\n\n for (let row = 0; row < rows; row += cols) {\n for (let col = 0; col < cols; col += bpp) {\n let pos = row + col;\n\n const r = data.readUInt8(pos);\n const g = data.readUInt8(pos + 1);\n const b = data.readUInt8(pos + 2);\n const a = data.readUInt8(pos + 3);\n\n pos = end - row + col;\n\n buffer.writeUInt8(b, pos);\n buffer.writeUInt8(g, pos + 1);\n buffer.writeUInt8(r, pos + 2);\n buffer.writeUInt8(a, pos + 3);\n }\n }\n\n return buffer;\n}\n\nfunction generateFromPNGs(pngs: PNG[]): Buffer {\n const header = createHeader(pngs.length);\n const arr = [header];\n\n let len = header.length;\n let offset = constants.headerSize + constants.directorySize * pngs.length;\n\n for (const png of pngs) {\n const dir = createDirectory(png, offset);\n arr.push(dir);\n len += dir.length;\n offset += png.data.length + constants.bitmapSize;\n }\n\n for (const png of pngs) {\n const header = createBitmap(png, constants.colorMode);\n const dib = createDIB(png.data, png.width, png.height, png.bpp);\n arr.push(header, dib);\n len += header.length + dib.length;\n }\n\n return Buffer.concat(arr, len);\n}\n\nexport async function generateAsync(buffers: Buffer[]): Promise<Buffer> {\n const pngs: PNG[] = await Promise.all(buffers.map(x => parsePng(x)));\n return generateFromPNGs(pngs);\n}\n"]}
1
+ {"version":3,"file":"Ico.js","sourceRoot":"","sources":["../src/Ico.ts"],"names":[],"mappings":"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"}
package/build/Image.d.ts CHANGED
@@ -22,3 +22,11 @@ export declare function compositeImagesAsync({ foreground, background, x, y, }:
22
22
  x?: number;
23
23
  y?: number;
24
24
  }): Promise<Buffer>;
25
+ type PNGInfo = {
26
+ data: Buffer;
27
+ width: number;
28
+ height: number;
29
+ bpp: number;
30
+ };
31
+ export declare function getPngInfo(src: string): Promise<PNGInfo>;
32
+ export {};
package/build/Image.js CHANGED
@@ -26,12 +26,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.compositeImagesAsync = exports.generateFaviconAsync = exports.generateImageAsync = void 0;
29
+ exports.getPngInfo = exports.compositeImagesAsync = exports.generateFaviconAsync = exports.generateImageAsync = void 0;
30
30
  const chalk_1 = __importDefault(require("chalk"));
31
+ const fs_1 = __importDefault(require("fs"));
31
32
  const mime_1 = __importDefault(require("mime"));
33
+ const parse_png_1 = __importDefault(require("parse-png"));
32
34
  const Cache = __importStar(require("./Cache"));
33
35
  const Download = __importStar(require("./Download"));
34
36
  const Ico = __importStar(require("./Ico"));
37
+ const env_1 = require("./env");
35
38
  const Jimp = __importStar(require("./jimp"));
36
39
  const Sharp = __importStar(require("./sharp"));
37
40
  const supportedMimeTypes = ['image/png', 'image/jpeg', 'image/webp', 'image/gif'];
@@ -61,8 +64,8 @@ async function resizeAsync(imageOptions) {
61
64
  // TODO: support setting border radius with Jimp. Currently only support making the image a circle
62
65
  await Jimp.circleAsync(jimp);
63
66
  }
64
- const imgBuffer = await jimp.getBufferAsync(jimp.getMIME());
65
- return imgBuffer;
67
+ // Convert to png buffer
68
+ return jimp.getBufferAsync('image/png');
66
69
  }
67
70
  try {
68
71
  let sharpBuffer = sharp(imageOptions.src)
@@ -92,15 +95,15 @@ async function resizeAsync(imageOptions) {
92
95
  sharpBuffer.flatten();
93
96
  }
94
97
  if (imageOptions.borderRadius) {
95
- const mask = Buffer.from(`<svg><rect x="0" y="0" width="${width}" height="${height}"
96
- rx="${imageOptions.borderRadius}" ry="${imageOptions.borderRadius}"
98
+ const mask = Buffer.from(`<svg><rect x="0" y="0" width="${width}" height="${height}"
99
+ rx="${imageOptions.borderRadius}" ry="${imageOptions.borderRadius}"
97
100
  fill="${backgroundColor && backgroundColor !== 'transparent' ? backgroundColor : 'none'}" /></svg>`);
98
101
  sharpBuffer.composite([{ input: mask, blend: 'dest-in' }]);
99
102
  }
100
103
  return await sharpBuffer.png().toBuffer();
101
104
  }
102
- catch ({ message }) {
103
- throw new Error(`It was not possible to generate splash screen '${imageOptions.src}'. ${message}`);
105
+ catch (error) {
106
+ throw new Error(`It was not possible to generate splash screen '${imageOptions.src}'. ${error.message}`);
104
107
  }
105
108
  }
106
109
  async function getSharpAsync() {
@@ -116,7 +119,7 @@ function getDimensionsId(imageOptions) {
116
119
  }
117
120
  async function maybeWarnAboutInstallingSharpAsync() {
118
121
  // Putting the warning here will prevent the warning from showing if all images were reused from the cache
119
- if (!hasWarned && !(await Sharp.isAvailableAsync())) {
122
+ if (env_1.env.EXPO_IMAGE_UTILS_DEBUG && !hasWarned && !(await Sharp.isAvailableAsync())) {
120
123
  hasWarned = true;
121
124
  console.warn(chalk_1.default.yellow(`Using node to generate images. This is much slower than using native packages.\n\u203A Optionally you can stop the process and try again after successfully running \`npm install -g sharp-cli\`.\n`));
122
125
  }
@@ -183,4 +186,8 @@ async function compositeImagesAsync({ foreground, background, x = 0, y = 0, }) {
183
186
  .toBuffer();
184
187
  }
185
188
  exports.compositeImagesAsync = compositeImagesAsync;
189
+ async function getPngInfo(src) {
190
+ return await (0, parse_png_1.default)(fs_1.default.readFileSync(src));
191
+ }
192
+ exports.getPngInfo = getPngInfo;
186
193
  //# sourceMappingURL=Image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","sourceRoot":"","sources":["../src/Image.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport mime from 'mime';\n\nimport * as Cache from './Cache';\nimport * as Download from './Download';\nimport * as Ico from './Ico';\nimport { ImageOptions } from './Image.types';\nimport * as Jimp from './jimp';\nimport * as Sharp from './sharp';\n\nconst supportedMimeTypes = ['image/png', 'image/jpeg', 'image/webp', 'image/gif'];\n\nlet hasWarned: boolean = false;\n\nasync function resizeImagesAsync(buffer: Buffer, sizes: number[]): Promise<Buffer[]> {\n const sharp = await getSharpAsync();\n if (!sharp) {\n return Jimp.resizeBufferAsync(buffer, sizes);\n }\n return Sharp.resizeBufferAsync(buffer, sizes);\n}\n\nasync function resizeAsync(imageOptions: ImageOptions): Promise<Buffer> {\n const sharp: any = await getSharpAsync();\n const { width, height, backgroundColor, resizeMode } = imageOptions;\n if (!sharp) {\n const inputOptions: any = { input: imageOptions.src, quality: 100 };\n const jimp = await Jimp.resize(inputOptions, {\n width,\n height,\n fit: resizeMode,\n background: backgroundColor,\n });\n\n if (imageOptions.removeTransparency) {\n jimp.colorType(2);\n }\n if (imageOptions.borderRadius) {\n // TODO: support setting border radius with Jimp. Currently only support making the image a circle\n await Jimp.circleAsync(jimp);\n }\n\n const imgBuffer = await jimp.getBufferAsync(jimp.getMIME());\n return imgBuffer;\n }\n try {\n let sharpBuffer = sharp(imageOptions.src)\n .ensureAlpha()\n .resize(width, height, { fit: resizeMode, background: 'transparent' });\n\n // Skip an extra step if the background is explicitly transparent.\n if (backgroundColor && backgroundColor !== 'transparent') {\n // Add the background color to the image\n sharpBuffer = sharpBuffer.composite([\n {\n // create a background color\n input: {\n create: {\n width,\n height,\n // allow alpha colors\n channels: imageOptions.removeTransparency ? 3 : 4,\n background: backgroundColor,\n },\n },\n // dest-over makes the first image (input) appear on top of the created image (background color)\n blend: 'dest-over',\n },\n ]);\n } else if (imageOptions.removeTransparency) {\n sharpBuffer.flatten();\n }\n\n if (imageOptions.borderRadius) {\n const mask = Buffer.from(\n `<svg><rect x=\"0\" y=\"0\" width=\"${width}\" height=\"${height}\" \n rx=\"${imageOptions.borderRadius}\" ry=\"${imageOptions.borderRadius}\" \n fill=\"${\n backgroundColor && backgroundColor !== 'transparent' ? backgroundColor : 'none'\n }\" /></svg>`\n );\n\n sharpBuffer.composite([{ input: mask, blend: 'dest-in' }]);\n }\n\n return await sharpBuffer.png().toBuffer();\n } catch ({ message }) {\n throw new Error(\n `It was not possible to generate splash screen '${imageOptions.src}'. ${message}`\n );\n }\n}\n\nasync function getSharpAsync(): Promise<any> {\n let sharp: any;\n if (await Sharp.isAvailableAsync()) sharp = await Sharp.findSharpInstanceAsync();\n return sharp;\n}\n\nfunction getDimensionsId(imageOptions: Pick<ImageOptions, 'width' | 'height'>): string {\n return imageOptions.width === imageOptions.height\n ? `${imageOptions.width}`\n : `${imageOptions.width}x${imageOptions.height}`;\n}\n\nasync function maybeWarnAboutInstallingSharpAsync() {\n // Putting the warning here will prevent the warning from showing if all images were reused from the cache\n if (!hasWarned && !(await Sharp.isAvailableAsync())) {\n hasWarned = true;\n console.warn(\n chalk.yellow(\n `Using node to generate images. This is much slower than using native packages.\\n\\u203A Optionally you can stop the process and try again after successfully running \\`npm install -g sharp-cli\\`.\\n`\n )\n );\n }\n}\n\nasync function ensureImageOptionsAsync(imageOptions: ImageOptions): Promise<ImageOptions> {\n const icon = {\n ...imageOptions,\n src: await Download.downloadOrUseCachedImage(imageOptions.src),\n };\n\n // Default to contain\n if (!icon.resizeMode) {\n icon.resizeMode = 'contain';\n }\n\n const mimeType = mime.getType(icon.src);\n\n if (!mimeType) {\n throw new Error(`Invalid mimeType for image with source: ${icon.src}`);\n }\n if (!supportedMimeTypes.includes(mimeType)) {\n throw new Error(`Supplied image is not a supported image type: ${imageOptions.src}`);\n }\n\n if (!icon.name) {\n icon.name = `icon_${getDimensionsId(imageOptions)}.${mime.getExtension(mimeType)}`;\n }\n\n return icon;\n}\n\nexport async function generateImageAsync(\n options: { projectRoot: string; cacheType?: string },\n imageOptions: ImageOptions\n): Promise<{ source: Buffer; name: string }> {\n const icon = await ensureImageOptionsAsync(imageOptions);\n\n if (!options.cacheType) {\n await maybeWarnAboutInstallingSharpAsync();\n return { name: icon.name!, source: await resizeAsync(icon) };\n }\n\n const cacheKey = await Cache.createCacheKeyWithDirectoryAsync(\n options.projectRoot,\n options.cacheType,\n icon\n );\n\n const name = icon.name!;\n let source: Buffer | null = await Cache.getImageFromCacheAsync(name, cacheKey);\n\n if (!source) {\n await maybeWarnAboutInstallingSharpAsync();\n source = await resizeAsync(icon);\n await Cache.cacheImageAsync(name, source, cacheKey);\n }\n\n return { name, source };\n}\n\nexport async function generateFaviconAsync(\n pngImageBuffer: Buffer,\n sizes: number[] = [16, 32, 48]\n): Promise<Buffer> {\n const buffers = await resizeImagesAsync(pngImageBuffer, sizes);\n return await Ico.generateAsync(buffers);\n}\n\n/**\n * Layers the provided foreground image over the provided background image.\n *\n * @param foregroundImageBuffer\n * @param foregroundImageBuffer\n * @param x pixel offset from the left edge, defaults to 0.\n * @param y pixel offset from the top edge, defaults to 0.\n */\nexport async function compositeImagesAsync({\n foreground,\n background,\n x = 0,\n y = 0,\n}: {\n foreground: Buffer;\n background: Buffer;\n x?: number;\n y?: number;\n}): Promise<Buffer> {\n const sharp: any = await getSharpAsync();\n if (!sharp) {\n const image = (await Jimp.getJimpImageAsync(background)).composite(\n await Jimp.getJimpImageAsync(foreground),\n x,\n y\n );\n return await image.getBufferAsync(image.getMIME());\n }\n return await sharp(background)\n .composite([{ input: foreground, left: x, top: y }])\n .toBuffer();\n}\n"]}
1
+ {"version":3,"file":"Image.js","sourceRoot":"","sources":["../src/Image.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export declare type ResizeMode = 'contain' | 'cover' | 'fill' | 'inside' | 'outside';
2
- export declare type ImageFormat = 'input' | 'jpeg' | 'jpg' | 'png' | 'raw' | 'tiff' | 'webp';
3
- export declare type ImageOptions = {
1
+ export type ResizeMode = 'contain' | 'cover' | 'fill' | 'inside' | 'outside';
2
+ export type ImageFormat = 'input' | 'jpeg' | 'jpg' | 'png' | 'raw' | 'tiff' | 'webp';
3
+ export type ImageOptions = {
4
4
  src: string;
5
5
  name?: string;
6
6
  resizeMode: ResizeMode;
@@ -1 +1 @@
1
- {"version":3,"file":"Image.types.js","sourceRoot":"","sources":["../src/Image.types.ts"],"names":[],"mappings":"","sourcesContent":["export type ResizeMode = 'contain' | 'cover' | 'fill' | 'inside' | 'outside';\n\nexport type ImageFormat = 'input' | 'jpeg' | 'jpg' | 'png' | 'raw' | 'tiff' | 'webp';\n\nexport type ImageOptions = {\n src: string;\n name?: string;\n resizeMode: ResizeMode;\n backgroundColor: string;\n removeTransparency?: boolean;\n width: number;\n height: number;\n padding?: number;\n borderRadius?: number;\n};\n"]}
1
+ {"version":3,"file":"Image.types.js","sourceRoot":"","sources":["../src/Image.types.ts"],"names":[],"mappings":""}
package/build/env.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ declare class Env {
2
+ /** Enable image utils related debugging messages */
3
+ get EXPO_IMAGE_UTILS_DEBUG(): boolean;
4
+ /** Disable all Sharp related functionality. */
5
+ get EXPO_IMAGE_UTILS_NO_SHARP(): boolean;
6
+ }
7
+ export declare const env: Env;
8
+ export {};
package/build/env.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.env = void 0;
4
+ const getenv_1 = require("getenv");
5
+ class Env {
6
+ /** Enable image utils related debugging messages */
7
+ get EXPO_IMAGE_UTILS_DEBUG() {
8
+ return (0, getenv_1.boolish)('EXPO_IMAGE_UTILS_DEBUG', false);
9
+ }
10
+ /** Disable all Sharp related functionality. */
11
+ get EXPO_IMAGE_UTILS_NO_SHARP() {
12
+ return (0, getenv_1.boolish)('EXPO_IMAGE_UTILS_NO_SHARP', false);
13
+ }
14
+ }
15
+ exports.env = new Env();
16
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAEjC,MAAM,GAAG;IACP,oDAAoD;IACpD,IAAI,sBAAsB;QACxB,OAAO,IAAA,gBAAO,EAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,+CAA+C;IAC/C,IAAI,yBAAyB;QAC3B,OAAO,IAAA,gBAAO,EAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;CACF;AAEY,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC"}
package/build/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" />
2
2
  import * as Cache from './Cache';
3
- import { compositeImagesAsync, generateFaviconAsync, generateImageAsync } from './Image';
3
+ import { compositeImagesAsync, generateFaviconAsync, generateImageAsync, getPngInfo } from './Image';
4
4
  import { ImageFormat, ImageOptions, ResizeMode } from './Image.types';
5
5
  import { jimpAsync } from './jimp';
6
6
  import { findSharpInstanceAsync, isAvailableAsync, sharpAsync } from './sharp';
7
7
  import { SharpCommandOptions, SharpGlobalOptions } from './sharp.types';
8
8
  export declare function imageAsync(options: SharpGlobalOptions, commands?: SharpCommandOptions[]): Promise<Buffer | string[]>;
9
- export { jimpAsync, findSharpInstanceAsync, isAvailableAsync, sharpAsync, generateImageAsync, generateFaviconAsync, Cache, compositeImagesAsync, };
9
+ export { jimpAsync, findSharpInstanceAsync, isAvailableAsync, sharpAsync, generateImageAsync, generateFaviconAsync, Cache, compositeImagesAsync, getPngInfo, };
10
10
  export { SharpGlobalOptions, SharpCommandOptions, ResizeMode, ImageFormat, ImageOptions };
package/build/index.js CHANGED
@@ -23,13 +23,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.compositeImagesAsync = exports.Cache = exports.generateFaviconAsync = exports.generateImageAsync = exports.sharpAsync = exports.isAvailableAsync = exports.findSharpInstanceAsync = exports.jimpAsync = exports.imageAsync = void 0;
26
+ exports.getPngInfo = exports.compositeImagesAsync = exports.Cache = exports.generateFaviconAsync = exports.generateImageAsync = exports.sharpAsync = exports.isAvailableAsync = exports.findSharpInstanceAsync = exports.jimpAsync = exports.imageAsync = void 0;
27
27
  const Cache = __importStar(require("./Cache"));
28
28
  exports.Cache = Cache;
29
29
  const Image_1 = require("./Image");
30
30
  Object.defineProperty(exports, "compositeImagesAsync", { enumerable: true, get: function () { return Image_1.compositeImagesAsync; } });
31
31
  Object.defineProperty(exports, "generateFaviconAsync", { enumerable: true, get: function () { return Image_1.generateFaviconAsync; } });
32
32
  Object.defineProperty(exports, "generateImageAsync", { enumerable: true, get: function () { return Image_1.generateImageAsync; } });
33
+ Object.defineProperty(exports, "getPngInfo", { enumerable: true, get: function () { return Image_1.getPngInfo; } });
33
34
  const jimp_1 = require("./jimp");
34
35
  Object.defineProperty(exports, "jimpAsync", { enumerable: true, get: function () { return jimp_1.jimpAsync; } });
35
36
  const sharp_1 = require("./sharp");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AA2B/B,sBAAK;AA1BP,mCAAyF;AA2BvF,qGA3BO,4BAAoB,OA2BP;AAFpB,qGAzB6B,4BAAoB,OAyB7B;AADpB,mGAxBmD,0BAAkB,OAwBnD;AAtBpB,iCAAkD;AAkBhD,0FAlBsB,gBAAS,OAkBtB;AAjBX,mCAA+E;AAkB7E,uGAlBO,8BAAsB,OAkBP;AACtB,iGAnB+B,wBAAgB,OAmB/B;AAChB,2FApBiD,kBAAU,OAoBjD;AAjBL,KAAK,UAAU,UAAU,CAC9B,OAA2B,EAC3B,WAAkC,EAAE;IAEpC,IAAI,MAAM,IAAA,wBAAgB,GAAE,EAAE;QAC5B,OAAO,IAAA,kBAAU,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACtC;IACD,OAAO,IAAA,gBAAS,EACd,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAA,oBAAa,EAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,EACnF,QAAQ,CACT,CAAC;AACJ,CAAC;AAXD,gCAWC","sourcesContent":["import * as Cache from './Cache';\nimport { compositeImagesAsync, generateFaviconAsync, generateImageAsync } from './Image';\nimport { ImageFormat, ImageOptions, ResizeMode } from './Image.types';\nimport { convertFormat, jimpAsync } from './jimp';\nimport { findSharpInstanceAsync, isAvailableAsync, sharpAsync } from './sharp';\nimport { SharpCommandOptions, SharpGlobalOptions } from './sharp.types';\n\nexport async function imageAsync(\n options: SharpGlobalOptions,\n commands: SharpCommandOptions[] = []\n) {\n if (await isAvailableAsync()) {\n return sharpAsync(options, commands);\n }\n return jimpAsync(\n { ...options, format: convertFormat(options.format), originalInput: options.input },\n commands\n );\n}\n\nexport {\n jimpAsync,\n findSharpInstanceAsync,\n isAvailableAsync,\n sharpAsync,\n generateImageAsync,\n generateFaviconAsync,\n Cache,\n compositeImagesAsync,\n};\n\nexport { SharpGlobalOptions, SharpCommandOptions, ResizeMode, ImageFormat, ImageOptions };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAgC/B,sBAAK;AA/BP,mCAKiB;AA2Bf,qGA/BA,4BAAoB,OA+BA;AAFpB,qGA5BA,4BAAoB,OA4BA;AADpB,mGA1BA,0BAAkB,OA0BA;AAIlB,2FA7BA,kBAAU,OA6BA;AA1BZ,iCAAkD;AAkBhD,0FAlBsB,gBAAS,OAkBtB;AAjBX,mCAA+E;AAkB7E,uGAlBO,8BAAsB,OAkBP;AACtB,iGAnB+B,wBAAgB,OAmB/B;AAChB,2FApBiD,kBAAU,OAoBjD;AAjBL,KAAK,UAAU,UAAU,CAC9B,OAA2B,EAC3B,WAAkC,EAAE;IAEpC,IAAI,MAAM,IAAA,wBAAgB,GAAE,EAAE;QAC5B,OAAO,IAAA,kBAAU,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACtC;IACD,OAAO,IAAA,gBAAS,EACd,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAA,oBAAa,EAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,EACnF,QAAQ,CACT,CAAC;AACJ,CAAC;AAXD,gCAWC"}
package/build/jimp.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import Jimp from 'jimp-compact';
3
3
  import { ResizeOptions, SharpCommandOptions, SharpGlobalOptions } from './sharp.types';
4
- declare type JimpGlobalOptions = Omit<SharpGlobalOptions, 'input'> & {
4
+ type JimpGlobalOptions = Omit<SharpGlobalOptions, 'input'> & {
5
5
  input: string | Buffer | Jimp;
6
6
  originalInput: string;
7
7
  };
package/build/jimp.js CHANGED
@@ -44,7 +44,7 @@ exports.resizeBufferAsync = resizeBufferAsync;
44
44
  function convertFormat(format) {
45
45
  if (typeof format === 'undefined')
46
46
  return format;
47
- const input = format === null || format === void 0 ? void 0 : format.toLowerCase();
47
+ const input = format?.toLowerCase();
48
48
  switch (input) {
49
49
  case 'png':
50
50
  case 'webp':
@@ -103,7 +103,7 @@ function circleAsync(jimp) {
103
103
  x: jimp.bitmap.width / 2,
104
104
  y: jimp.bitmap.height / 2,
105
105
  };
106
- return new Promise(resolve => {
106
+ return new Promise((resolve) => {
107
107
  jimp.scanQuiet(0, 0, jimp.bitmap.width, jimp.bitmap.height, (x, y, idx) => {
108
108
  const curR = Math.sqrt(Math.pow(x - center.x, 2) + Math.pow(y - center.y, 2));
109
109
  if (radius - curR <= 0.0) {
package/build/jimp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jimp.js","sourceRoot":"","sources":["../src/jimp.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\n// @ts-ignore\nimport Jimp from 'jimp-compact';\nimport * as path from 'path';\n\nimport {\n FlattenOptions,\n Position,\n ResizeOptions,\n SharpCommandOptions,\n SharpGlobalOptions,\n} from './sharp.types';\n\ntype JimpGlobalOptions = Omit<SharpGlobalOptions, 'input'> & {\n input: string | Buffer | Jimp;\n originalInput: string;\n};\n\nexport async function resizeBufferAsync(buffer: Buffer, sizes: number[]): Promise<Buffer[]> {\n return Promise.all(\n sizes.map(async size => {\n // Parse the buffer each time to prevent mutable copies.\n // Parse the buffer each time to prevent mutable copies.\n const jimpImage = await Jimp.read(buffer);\n const mime = jimpImage.getMIME();\n\n return jimpImage.resize(size, size).getBufferAsync(mime);\n })\n );\n}\n\nexport function convertFormat(format?: string): string | undefined {\n if (typeof format === 'undefined') return format;\n\n const input = format?.toLowerCase();\n switch (input) {\n case 'png':\n case 'webp':\n case 'jpeg':\n return `image/${input}`;\n case 'jpg':\n return `image/jpeg`;\n }\n return undefined;\n}\n\nexport async function jimpAsync(\n options: JimpGlobalOptions,\n commands: SharpCommandOptions[] = []\n): Promise<Buffer> {\n if (commands.length) {\n const command = commands.shift();\n if (command) {\n let input: Jimp;\n if (command.operation === 'resize') {\n input = await resize(options, command);\n } else if (command.operation === 'flatten') {\n input = await flatten(options, command);\n } else {\n throw new Error(`The operation: '${command.operation}' is not supported with Jimp`);\n }\n // @ts-ignore\n return jimpAsync({ ...options, input }, commands);\n }\n }\n\n const image = await getJimpImageAsync(options.input);\n const mime = typeof options.format === 'string' ? options.format : image.getMIME();\n const imgBuffer = await image.getBufferAsync(mime);\n\n if (typeof options.output === 'string') {\n if (await isFolderAsync(options.output)) {\n await fs.writeFile(\n path.join(options.output, path.basename(options.originalInput)),\n imgBuffer\n );\n } else {\n await fs.writeFile(options.output, imgBuffer);\n }\n }\n return imgBuffer;\n}\n\nexport async function isFolderAsync(path: string): Promise<boolean> {\n try {\n return (await fs.stat(path)).isDirectory();\n } catch {\n return false;\n }\n}\n\nexport function circleAsync(jimp: Jimp): Promise<Jimp> {\n const radius = Math.min(jimp.bitmap.width, jimp.bitmap.height) / 2;\n\n const center = {\n x: jimp.bitmap.width / 2,\n y: jimp.bitmap.height / 2,\n };\n\n return new Promise(resolve => {\n jimp.scanQuiet(\n 0,\n 0,\n jimp.bitmap.width,\n jimp.bitmap.height,\n (x: number, y: number, idx: number) => {\n const curR = Math.sqrt(Math.pow(x - center.x, 2) + Math.pow(y - center.y, 2));\n\n if (radius - curR <= 0.0) {\n jimp.bitmap.data[idx + 3] = 0;\n } else if (radius - curR < 1.0) {\n jimp.bitmap.data[idx + 3] = 255 * (radius - curR);\n }\n resolve(jimp);\n }\n );\n });\n}\n\nexport async function getJimpImageAsync(input: string | Buffer | Jimp): Promise<Jimp> {\n // @ts-ignore: Jimp types are broken\n if (typeof input === 'string' || input instanceof Buffer) return await Jimp.read(input);\n\n return input;\n}\n\nexport async function resize(\n { input, quality = 100 }: JimpGlobalOptions,\n { background, position, fit, width, height }: Omit<ResizeOptions, 'operation'>\n): Promise<Jimp> {\n let initialImage = await getJimpImageAsync(input);\n\n if (width && !height) {\n height = Jimp.AUTO;\n } else if (!width && height) {\n width = Jimp.AUTO;\n } else if (!width && !height) {\n width = initialImage.bitmap.width;\n height = initialImage.bitmap.height;\n }\n\n const jimpPosition = convertPosition(position);\n const jimpQuality = typeof quality !== 'number' ? 100 : quality;\n if (fit === 'cover') {\n initialImage = initialImage.cover(width, height, jimpPosition);\n } else if (fit === 'contain') {\n initialImage = initialImage.contain(width, height, jimpPosition);\n } else {\n throw new Error(\n `Unsupported fit: ${fit}. Please choose either 'cover', or 'contain' when using Jimp`\n );\n }\n if (background) {\n initialImage = initialImage.composite(new Jimp(width, height, background), 0, 0, {\n mode: Jimp.BLEND_DESTINATION_OVER,\n opacitySource: 1,\n opacityDest: 1,\n });\n }\n\n return await initialImage.quality(jimpQuality);\n}\n\nasync function flatten(\n { input, quality = 100 }: JimpGlobalOptions,\n { background }: Omit<FlattenOptions, 'operation'>\n): Promise<Jimp> {\n const initialImage = await getJimpImageAsync(input);\n const jimpQuality = typeof quality !== 'number' ? 100 : quality;\n return initialImage.quality(jimpQuality).background(Jimp.cssColorToHex(background));\n}\n\n/**\n * Convert sharp position to Jimp position.\n *\n * @param position\n */\nfunction convertPosition(position?: Position): number {\n if (!position) return convertPosition('center');\n\n switch (position) {\n case 'center':\n case 'centre':\n return Jimp.VERTICAL_ALIGN_MIDDLE | Jimp.HORIZONTAL_ALIGN_CENTER;\n case 'north':\n case 'top':\n return Jimp.VERTICAL_ALIGN_TOP | Jimp.HORIZONTAL_ALIGN_CENTER;\n case 'east':\n case 'right':\n return Jimp.VERTICAL_ALIGN_MIDDLE | Jimp.HORIZONTAL_ALIGN_RIGHT;\n case 'south':\n case 'bottom':\n return Jimp.VERTICAL_ALIGN_BOTTOM | Jimp.HORIZONTAL_ALIGN_CENTER;\n case 'west':\n case 'left':\n return Jimp.VERTICAL_ALIGN_MIDDLE | Jimp.HORIZONTAL_ALIGN_LEFT;\n case 'northeast':\n case 'right top':\n return Jimp.VERTICAL_ALIGN_TOP | Jimp.HORIZONTAL_ALIGN_RIGHT;\n case 'southeast':\n case 'right bottom':\n return Jimp.VERTICAL_ALIGN_BOTTOM | Jimp.HORIZONTAL_ALIGN_RIGHT;\n case 'southwest':\n case 'left bottom':\n return Jimp.VERTICAL_ALIGN_BOTTOM | Jimp.HORIZONTAL_ALIGN_LEFT;\n case 'northwest':\n case 'left top':\n return Jimp.VERTICAL_ALIGN_TOP | Jimp.HORIZONTAL_ALIGN_LEFT;\n case 'entropy':\n case 'attention':\n throw new Error(`Position: '${position}' is not supported`);\n default:\n throw new Error(`Unknown position: '${position}'`);\n }\n}\n"]}
1
+ {"version":3,"file":"jimp.js","sourceRoot":"","sources":["../src/jimp.ts"],"names":[],"mappings":"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"}
package/build/sharp.js CHANGED
@@ -5,17 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.findSharpInstanceAsync = exports.sharpAsync = exports.isAvailableAsync = exports.resizeBufferAsync = void 0;
7
7
  const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
8
- const getenv_1 = require("getenv");
9
8
  const path_1 = __importDefault(require("path"));
10
9
  const resolve_from_1 = __importDefault(require("resolve-from"));
11
10
  const semver_1 = __importDefault(require("semver"));
11
+ const env_1 = require("./env");
12
12
  const SHARP_HELP_PATTERN = /\n\nSpecify --help for available options/g;
13
13
  const SHARP_REQUIRED_VERSION = '^2.1.0';
14
14
  async function resizeBufferAsync(buffer, sizes) {
15
15
  const sharp = await findSharpInstanceAsync();
16
16
  const metadata = await sharp(buffer).metadata();
17
17
  // Create buffer for each size
18
- const resizedBuffers = await Promise.all(sizes.map(dimension => {
18
+ const resizedBuffers = await Promise.all(sizes.map((dimension) => {
19
19
  const density = (dimension / Math.max(metadata.width, metadata.height)) * metadata.density;
20
20
  return sharp(buffer, {
21
21
  density: isNaN(density) ? undefined : Math.ceil(density),
@@ -26,13 +26,12 @@ async function resizeBufferAsync(buffer, sizes) {
26
26
  return resizedBuffers;
27
27
  }
28
28
  exports.resizeBufferAsync = resizeBufferAsync;
29
- const isSharpDisabled = (0, getenv_1.boolish)('EXPO_IMAGE_UTILS_NO_SHARP', false);
30
29
  /**
31
30
  * Returns `true` if a global sharp instance can be found.
32
31
  * This functionality can be overridden with `process.env.EXPO_IMAGE_UTILS_NO_SHARP=1`.
33
32
  */
34
33
  async function isAvailableAsync() {
35
- if (isSharpDisabled) {
34
+ if (env_1.env.EXPO_IMAGE_UTILS_NO_SHARP) {
36
35
  return false;
37
36
  }
38
37
  try {
@@ -136,7 +135,7 @@ async function findSharpBinAsync() {
136
135
  * This method will throw errors if the `sharp` instance cannot be found, these errors can be circumvented by ensuring `isAvailableAsync()` resolves to `true`.
137
136
  */
138
137
  async function findSharpInstanceAsync() {
139
- if (isSharpDisabled) {
138
+ if (env_1.env.EXPO_IMAGE_UTILS_NO_SHARP) {
140
139
  throw new Error('Global instance of sharp-cli cannot be retrieved because sharp-cli has been disabled with the environment variable `EXPO_IMAGE_UTILS_NO_SHARP`');
141
140
  }
142
141
  if (_sharpInstance) {
@@ -1 +1 @@
1
- {"version":3,"file":"sharp.js","sourceRoot":"","sources":["../src/sharp.ts"],"names":[],"mappings":"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","sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport { boolish } from 'getenv';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { Options, SharpCommandOptions, SharpGlobalOptions } from './sharp.types';\n\nconst SHARP_HELP_PATTERN = /\\n\\nSpecify --help for available options/g;\nconst SHARP_REQUIRED_VERSION = '^2.1.0';\n\nexport async function resizeBufferAsync(buffer: Buffer, sizes: number[]): Promise<Buffer[]> {\n const sharp = await findSharpInstanceAsync();\n\n const metadata = await sharp(buffer).metadata();\n // Create buffer for each size\n const resizedBuffers = await Promise.all(\n sizes.map(dimension => {\n const density = (dimension / Math.max(metadata.width, metadata.height)) * metadata.density;\n return sharp(buffer, {\n density: isNaN(density) ? undefined : Math.ceil(density),\n })\n .resize(dimension, dimension, { fit: 'contain', background: 'transparent' })\n .toBuffer();\n })\n );\n\n return resizedBuffers;\n}\n\nconst isSharpDisabled = boolish('EXPO_IMAGE_UTILS_NO_SHARP', false);\n\n/**\n * Returns `true` if a global sharp instance can be found.\n * This functionality can be overridden with `process.env.EXPO_IMAGE_UTILS_NO_SHARP=1`.\n */\nexport async function isAvailableAsync(): Promise<boolean> {\n if (isSharpDisabled) {\n return false;\n }\n try {\n return !!(await findSharpBinAsync());\n } catch {\n return false;\n }\n}\n\nexport async function sharpAsync(\n options: SharpGlobalOptions,\n commands: SharpCommandOptions[] = []\n): Promise<string[]> {\n const bin = await findSharpBinAsync();\n try {\n const { stdout } = await spawnAsync(bin, [\n ...getOptions(options),\n ...getCommandOptions(commands),\n ]);\n const outputFilePaths = stdout.trim().split('\\n');\n return outputFilePaths;\n } catch (error: any) {\n if (error.stderr) {\n throw new Error(\n '\\nProcessing images using sharp-cli failed: ' +\n error.message +\n '\\nOutput: ' +\n error.stderr.replace(SHARP_HELP_PATTERN, '')\n );\n } else {\n throw error;\n }\n }\n}\n\nfunction getOptions(options: Options): string[] {\n const args = [];\n for (const [key, value] of Object.entries(options)) {\n if (value != null && value !== false) {\n if (typeof value === 'boolean') {\n args.push(`--${key}`);\n } else if (typeof value === 'number') {\n args.push(`--${key}`, value.toFixed());\n } else {\n args.push(`--${key}`, value);\n }\n }\n }\n return args;\n}\n\nfunction getCommandOptions(commands: SharpCommandOptions[]): string[] {\n const args: string[] = [];\n for (const command of commands) {\n if (command.operation === 'resize') {\n const { operation, width, ...namedOptions } = command;\n args.push(operation, width.toFixed(), ...getOptions(namedOptions));\n } else {\n const { operation, ...namedOptions } = command;\n args.push(operation, ...getOptions(namedOptions));\n }\n args.push('--');\n }\n return args;\n}\n\nlet _sharpBin: string | null = null;\nlet _sharpInstance: any | null = null;\n\nasync function findSharpBinAsync(): Promise<string> {\n if (_sharpBin) {\n return _sharpBin;\n }\n try {\n const sharpCliPackage = require('sharp-cli/package.json');\n const libVipsVersion = require('sharp').versions.vips;\n if (\n sharpCliPackage &&\n semver.satisfies(sharpCliPackage.version, SHARP_REQUIRED_VERSION) &&\n typeof sharpCliPackage.bin.sharp === 'string' &&\n typeof libVipsVersion === 'string'\n ) {\n _sharpBin = require.resolve(`sharp-cli/${sharpCliPackage.bin.sharp}`);\n return _sharpBin;\n }\n } catch {\n // fall back to global sharp-cli\n }\n\n let installedCliVersion;\n try {\n installedCliVersion = (await spawnAsync('sharp', ['--version'])).stdout.toString().trim();\n } catch {\n throw notFoundError(SHARP_REQUIRED_VERSION);\n }\n\n if (!semver.satisfies(installedCliVersion, SHARP_REQUIRED_VERSION)) {\n showVersionMismatchWarning(SHARP_REQUIRED_VERSION, installedCliVersion);\n }\n _sharpBin = 'sharp';\n return _sharpBin;\n}\n\n/**\n * Returns the instance of `sharp` installed by the global `sharp-cli` package.\n * This method will throw errors if the `sharp` instance cannot be found, these errors can be circumvented by ensuring `isAvailableAsync()` resolves to `true`.\n */\nexport async function findSharpInstanceAsync(): Promise<any | null> {\n if (isSharpDisabled) {\n throw new Error(\n 'Global instance of sharp-cli cannot be retrieved because sharp-cli has been disabled with the environment variable `EXPO_IMAGE_UTILS_NO_SHARP`'\n );\n }\n if (_sharpInstance) {\n return _sharpInstance;\n }\n // Ensure sharp-cli version is correct\n await findSharpBinAsync();\n\n // Attempt to use local sharp package\n try {\n const sharp = require('sharp');\n _sharpInstance = sharp;\n return sharp;\n } catch {}\n\n // Attempt to resolve the sharp instance used by the global CLI\n let sharpCliPath;\n if (process.platform !== 'win32') {\n try {\n sharpCliPath = (await spawnAsync('which', ['sharp'])).stdout.toString().trim();\n } catch {}\n } else {\n // On Windows systems, nested dependencies aren't linked to the paths within `require.resolve.paths`.\n // Yarn installs these modules in a different folder, let's add yarn to the other attempts.\n // See: https://github.com/expo/expo-cli/issues/2708\n let yarnGlobalPath = '';\n try {\n yarnGlobalPath = path.join(\n (await spawnAsync('yarn', ['global', 'dir'])).stdout.toString().trim(),\n 'node_modules'\n );\n } catch {}\n try {\n sharpCliPath = require.resolve('sharp-cli/package.json', {\n paths: (require.resolve.paths('sharp-cli') || []).concat(yarnGlobalPath),\n });\n } catch {}\n }\n\n // resolve sharp from the sharp-cli package\n const sharpPath = resolveFrom.silent(sharpCliPath || '', 'sharp');\n\n if (sharpPath) {\n try {\n // attempt to require the global sharp package\n _sharpInstance = require(sharpPath);\n } catch {}\n }\n\n if (!_sharpInstance) {\n throw new Error(`Failed to find the instance of sharp used by the global sharp-cli package.`);\n }\n\n return _sharpInstance;\n}\n\nfunction notFoundError(requiredCliVersion: string): Error {\n return new Error(\n `This command requires version ${requiredCliVersion} of \\`sharp-cli\\`. \\n` +\n `You can install it using \\`npm install -g sharp-cli@${requiredCliVersion}\\`. \\n` +\n '\\n' +\n 'For prerequisites, see: https://sharp.dimens.io/en/stable/install/#prerequisites'\n );\n}\n\nlet versionMismatchWarningShown = false;\n\nfunction showVersionMismatchWarning(requiredCliVersion: string, installedCliVersion: string) {\n if (versionMismatchWarningShown) {\n return;\n }\n console.warn(\n `Warning: This command requires version ${requiredCliVersion} of \\`sharp-cli\\`. \\n` +\n `Currently installed version: \"${installedCliVersion}\" \\n` +\n `Required version: \"${requiredCliVersion}\" \\n` +\n `You can install it using \\`npm install -g sharp-cli@${requiredCliVersion}\\`. \\n` +\n '\\n' +\n 'For prerequisites, see: https://sharp.dimens.io/en/stable/install/#prerequisites'\n );\n versionMismatchWarningShown = true;\n}\n"]}
1
+ {"version":3,"file":"sharp.js","sourceRoot":"","sources":["../src/sharp.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ImageFormat, ResizeMode } from './Image.types';
2
- export declare type SharpGlobalOptions = {
2
+ export type SharpGlobalOptions = {
3
3
  compressionLevel?: '';
4
4
  format?: ImageFormat;
5
5
  input: string;
@@ -10,16 +10,16 @@ export declare type SharpGlobalOptions = {
10
10
  withMetadata?: boolean;
11
11
  [key: string]: string | number | boolean | undefined | null;
12
12
  };
13
- export declare type SharpCommandOptions = RemoveAlphaOptions | ResizeOptions | FlattenOptions;
14
- export declare type FlattenOptions = {
13
+ export type SharpCommandOptions = RemoveAlphaOptions | ResizeOptions | FlattenOptions;
14
+ export type FlattenOptions = {
15
15
  operation: 'flatten';
16
16
  background: string;
17
17
  };
18
- export declare type RemoveAlphaOptions = {
18
+ export type RemoveAlphaOptions = {
19
19
  operation: 'removeAlpha';
20
20
  };
21
- export declare type Position = 'center' | 'centre' | 'north' | 'east' | 'south' | 'west' | 'northeast' | 'southeast' | 'southwest' | 'northwest' | 'top' | 'right' | 'bottom' | 'left' | 'right top' | 'right bottom' | 'left bottom' | 'left top' | 'entropy' | 'attention';
22
- export declare type ResizeOptions = {
21
+ export type Position = 'center' | 'centre' | 'north' | 'east' | 'south' | 'west' | 'northeast' | 'southeast' | 'southwest' | 'northwest' | 'top' | 'right' | 'bottom' | 'left' | 'right top' | 'right bottom' | 'left bottom' | 'left top' | 'entropy' | 'attention';
22
+ export type ResizeOptions = {
23
23
  operation: 'resize';
24
24
  background?: string;
25
25
  fastShrinkOnLoad?: boolean;
@@ -30,6 +30,6 @@ export declare type ResizeOptions = {
30
30
  width: number;
31
31
  withoutEnlargement?: boolean;
32
32
  };
33
- export declare type Options = object | {
33
+ export type Options = object | {
34
34
  [key: string]: boolean | number | string | undefined;
35
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sharp.types.js","sourceRoot":"","sources":["../src/sharp.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ImageFormat, ResizeMode } from './Image.types';\n\nexport type SharpGlobalOptions = {\n compressionLevel?: '';\n format?: ImageFormat;\n input: string;\n limitInputPixels?: number;\n output: string;\n progressive?: boolean;\n quality?: number;\n withMetadata?: boolean;\n [key: string]: string | number | boolean | undefined | null;\n};\n\nexport type SharpCommandOptions = RemoveAlphaOptions | ResizeOptions | FlattenOptions;\n\nexport type FlattenOptions = {\n operation: 'flatten';\n background: string;\n};\n\nexport type RemoveAlphaOptions = {\n operation: 'removeAlpha';\n};\n\nexport type Position =\n | 'center'\n | 'centre'\n | 'north'\n | 'east'\n | 'south'\n | 'west'\n | 'northeast'\n | 'southeast'\n | 'southwest'\n | 'northwest'\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'right top'\n | 'right bottom'\n | 'left bottom'\n | 'left top'\n | 'entropy'\n | 'attention';\n\nexport type ResizeOptions = {\n operation: 'resize';\n background?: string;\n fastShrinkOnLoad?: boolean;\n fit?: ResizeMode;\n height?: number;\n kernel?: 'nearest' | 'cubic' | 'mitchell' | 'lanczos2' | 'lanczos3';\n position?: Position;\n width: number;\n withoutEnlargement?: boolean;\n};\n\nexport type Options =\n | object\n | {\n [key: string]: boolean | number | string | undefined;\n };\n"]}
1
+ {"version":3,"file":"sharp.types.js","sourceRoot":"","sources":["../src/sharp.types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,28 +1,32 @@
1
1
  {
2
2
  "name": "@expo/image-utils",
3
- "version": "0.3.22",
3
+ "version": "0.4.0",
4
4
  "description": "A package used by Expo CLI for processing images",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
7
- "watch": "tsc --watch --preserveWatchOutput",
8
- "build": "tsc",
9
- "test": "jest",
10
- "prepare": "yarn run clean && yarn build",
11
- "clean": "rimraf build ./tsconfig.tsbuildinfo"
7
+ "build": "expo-module tsc",
8
+ "clean": "expo-module clean",
9
+ "lint": "expo-module lint",
10
+ "prepare": "expo-module clean && yarn run build",
11
+ "prepublishOnly": "expo-module prepublishOnly",
12
+ "test": "expo-module test",
13
+ "test:e2e": "yarn run prepare && expo-module test --config e2e/jest.config.js",
14
+ "typecheck": "expo-module typecheck",
15
+ "watch": "expo-module tsc --watch --preserveWatchOutput"
12
16
  },
13
17
  "repository": {
14
18
  "type": "git",
15
- "url": "https://github.com/expo/expo-cli.git",
16
- "directory": "packages/image-utils"
19
+ "url": "https://github.com/expo/expo.git",
20
+ "directory": "packages/@expo/image-utils"
17
21
  },
18
22
  "keywords": [
19
23
  "json"
20
24
  ],
21
25
  "license": "MIT",
22
26
  "bugs": {
23
- "url": "https://github.com/expo/expo-cli/issues"
27
+ "url": "https://github.com/expo/expo/issues"
24
28
  },
25
- "homepage": "https://github.com/expo/expo-cli/tree/main/packages/image-utils#readme",
29
+ "homepage": "https://github.com/expo/expo/tree/main/packages/%40expo/image-utils#readme",
26
30
  "files": [
27
31
  "build"
28
32
  ],
@@ -42,9 +46,13 @@
42
46
  "devDependencies": {
43
47
  "@types/fs-extra": "^9.0.1",
44
48
  "@types/getenv": "^0.7.0",
45
- "@types/semver": "^6.0.0"
49
+ "@types/mime": "^2.0.3",
50
+ "@types/node-fetch": "^2.6.5",
51
+ "@types/semver": "^6.0.0",
52
+ "expo-module-scripts": "^3.3.0"
46
53
  },
47
54
  "publishConfig": {
48
55
  "access": "public"
49
- }
56
+ },
57
+ "gitHead": "2763e9cc6f2317b40da73382fe2595f8deebff46"
50
58
  }