xdl
Version:
The Expo Development Library
1 lines • 5.52 kB
Source Map (JSON)
{"version":3,"file":"ImageUtils.js","names":["_fs","data","_interopRequireDefault","require","_path","_probeImageSize","_internal","obj","__esModule","default","getImageDimensionsAsync","projectDirname","basename","_getImageDimensionsAsync","_getImageDimensionsWithImageProbeAsync","imagePath","path","resolve","readStream","fs","createReadStream","width","height","probeImageSize","destroy","_hasWarned","resizeImageAsync","iconSizePx","iconFilename","destinationIconPath","process","platform","_resizeImageAsync","_resizeImageWithSipsAsync","LoggerDetach","warn","ExponentTools","spawnAsyncThrowError","toFixed","stdio","cwd","setResizeImageFunction","fn","setGetImageDimensionsFunction"],"sources":["../../src/tools/ImageUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport probeImageSize from 'probe-image-size';\n\nimport { ExponentTools, LoggerDetach } from '../internal';\n\n/**\n * @param {string} projectDirname\n * @param {string} basename\n * @returns {} { width: number, height: number } image dimensions or null\n */\nasync function getImageDimensionsAsync(\n projectDirname: string,\n basename: string\n): Promise<{ width: number; height: number } | null> {\n try {\n return await _getImageDimensionsAsync(projectDirname, basename);\n } catch {}\n return null;\n}\n\nasync function _getImageDimensionsWithImageProbeAsync(\n projectDirname: string,\n basename: string\n): Promise<{ width: number; height: number }> {\n const imagePath = path.resolve(projectDirname, basename);\n const readStream = fs.createReadStream(imagePath);\n const { width, height } = await probeImageSize(readStream);\n readStream.destroy();\n return { width, height };\n}\n\nlet _hasWarned = false;\nasync function resizeImageAsync(\n iconSizePx: number,\n iconFilename: string,\n destinationIconPath: string\n) {\n if (\n process.platform !== 'darwin' &&\n _resizeImageAsync === _resizeImageWithSipsAsync &&\n !_hasWarned\n ) {\n LoggerDetach.warn('`sips` utility may or may not work outside of macOS');\n _hasWarned = true;\n }\n return _resizeImageAsync(iconSizePx, iconFilename, destinationIconPath);\n}\n\nasync function _resizeImageWithSipsAsync(\n iconSizePx: number,\n iconFilename: string,\n destinationIconPath: string\n) {\n return ExponentTools.spawnAsyncThrowError('sips', ['-Z', iconSizePx.toFixed(), iconFilename], {\n stdio: ['ignore', 'ignore', 'inherit'], // only stderr\n cwd: destinationIconPath,\n });\n}\n\n// Allow us to swap out the default implementations of image functions\nlet _resizeImageAsync = _resizeImageWithSipsAsync;\nlet _getImageDimensionsAsync: (\n dirname: string,\n filename: string\n) => Promise<{ width: number; height: number } | null> = _getImageDimensionsWithImageProbeAsync;\n\n// Allow users to provide an alternate implementation for our image resize function.\n// This is used internally in order to use sharp instead of sips in standalone builder.\nfunction setResizeImageFunction(\n fn: (iconSizePx: number, iconFilename: string, destinationIconPath: string) => Promise<any>\n) {\n _resizeImageAsync = fn;\n}\n\n// Allow users to provide an alternate implementation for our image dimensions function.\n// This is used internally in order to use sharp instead of sips in standalone builder.\nfunction setGetImageDimensionsFunction(\n fn: (dirname: string, filename: string) => Promise<{ width: number; height: number } | null>\n) {\n _getImageDimensionsAsync = fn;\n}\n\nexport {\n resizeImageAsync,\n setResizeImageFunction,\n setGetImageDimensionsFunction,\n getImageDimensionsAsync,\n};\n"],"mappings":";;;;;;;;;AAAA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,MAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,gBAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,eAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,UAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,SAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0D,SAAAC,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1D;AACA;AACA;AACA;AACA;AACA,eAAeG,uBAAuBA,CACpCC,cAAsB,EACtBC,QAAgB,EACmC;EACnD,IAAI;IACF,OAAO,MAAMC,wBAAwB,CAACF,cAAc,EAAEC,QAAQ,CAAC;EACjE,CAAC,CAAC,MAAM,CAAC;EACT,OAAO,IAAI;AACb;AAEA,eAAeE,sCAAsCA,CACnDH,cAAsB,EACtBC,QAAgB,EAC4B;EAC5C,MAAMG,SAAS,GAAGC,eAAI,CAACC,OAAO,CAACN,cAAc,EAAEC,QAAQ,CAAC;EACxD,MAAMM,UAAU,GAAGC,aAAE,CAACC,gBAAgB,CAACL,SAAS,CAAC;EACjD,MAAM;IAAEM,KAAK;IAAEC;EAAO,CAAC,GAAG,MAAM,IAAAC,yBAAc,EAACL,UAAU,CAAC;EAC1DA,UAAU,CAACM,OAAO,CAAC,CAAC;EACpB,OAAO;IAAEH,KAAK;IAAEC;EAAO,CAAC;AAC1B;AAEA,IAAIG,UAAU,GAAG,KAAK;AACtB,eAAeC,gBAAgBA,CAC7BC,UAAkB,EAClBC,YAAoB,EACpBC,mBAA2B,EAC3B;EACA,IACEC,OAAO,CAACC,QAAQ,KAAK,QAAQ,IAC7BC,iBAAiB,KAAKC,yBAAyB,IAC/C,CAACR,UAAU,EACX;IACAS,wBAAY,CAACC,IAAI,CAAC,qDAAqD,CAAC;IACxEV,UAAU,GAAG,IAAI;EACnB;EACA,OAAOO,iBAAiB,CAACL,UAAU,EAAEC,YAAY,EAAEC,mBAAmB,CAAC;AACzE;AAEA,eAAeI,yBAAyBA,CACtCN,UAAkB,EAClBC,YAAoB,EACpBC,mBAA2B,EAC3B;EACA,OAAOO,yBAAa,CAACC,oBAAoB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAEV,UAAU,CAACW,OAAO,CAAC,CAAC,EAAEV,YAAY,CAAC,EAAE;IAC5FW,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IAAE;IACxCC,GAAG,EAAEX;EACP,CAAC,CAAC;AACJ;;AAEA;AACA,IAAIG,iBAAiB,GAAGC,yBAAyB;AACjD,IAAIpB,wBAGkD,GAAGC,sCAAsC;;AAE/F;AACA;AACA,SAAS2B,sBAAsBA,CAC7BC,EAA2F,EAC3F;EACAV,iBAAiB,GAAGU,EAAE;AACxB;;AAEA;AACA;AACA,SAASC,6BAA6BA,CACpCD,EAA4F,EAC5F;EACA7B,wBAAwB,GAAG6B,EAAE;AAC/B"}