@expo/prebuild-config 8.0.8 → 8.0.9

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.
@@ -65,7 +65,7 @@ function getIcons(config) {
65
65
  }
66
66
 
67
67
  // in iOS 18 introduced the ability to specify dark and tinted icons, which users can specify as an object
68
- if (!iosSpecificIcons.any && !iosSpecificIcons.dark && !iosSpecificIcons.tinted) {
68
+ if (!iosSpecificIcons.light && !iosSpecificIcons.dark && !iosSpecificIcons.tinted) {
69
69
  return config.icon || null;
70
70
  }
71
71
  return iosSpecificIcons;
@@ -77,7 +77,7 @@ function getIcons(config) {
77
77
  }
78
78
  async function setIconsAsync(config, projectRoot) {
79
79
  const icon = getIcons(config);
80
- if (!icon || typeof icon === 'string' && !icon || typeof icon === 'object' && !icon?.any && !icon?.dark && !icon?.tinted) {
80
+ if (!icon || typeof icon === 'string' && !icon || typeof icon === 'object' && !icon?.light && !icon?.dark && !icon?.tinted) {
81
81
  _configPlugins().WarningAggregator.addWarningIOS('icon', 'No icon is defined in the Expo config.');
82
82
  }
83
83
 
@@ -87,7 +87,7 @@ async function setIconsAsync(config, projectRoot) {
87
87
  // Ensure the Images.xcassets/AppIcon.appiconset path exists
88
88
  await fs().ensureDir((0, _path().join)(iosNamedProjectRoot, IMAGESET_PATH));
89
89
  const imagesJson = [];
90
- const baseIconPath = typeof icon === 'object' ? icon?.any || icon?.dark || icon?.tinted : icon;
90
+ const baseIconPath = typeof icon === 'object' ? icon?.light || icon?.dark || icon?.tinted : icon;
91
91
 
92
92
  // Store the image JSON data for assigning via the Contents.json
93
93
  const baseIcon = await generateUniversalIconAsync(projectRoot, {
@@ -164,7 +164,7 @@ async function generateUniversalIconAsync(projectRoot, {
164
164
  name: filename,
165
165
  width: size,
166
166
  height: size,
167
- // Transparency needs to be preserved in dark variant, but can safely be removed in "any" and "tinted" variants.
167
+ // Transparency needs to be preserved in dark variant, but can safely be removed in "light" and "tinted" variants.
168
168
  removeTransparency: appearance !== 'dark',
169
169
  // The icon should be square, but if it's not then it will be cropped.
170
170
  resizeMode: 'cover',
@@ -1 +1 @@
1
- {"version":3,"file":"withIosIcons.js","names":["_configPlugins","data","require","_imageUtils","fs","_interopRequireWildcard","_path","_AssetContents","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getProjectName","IOSConfig","XcodeUtils","IMAGE_CACHE_NAME","IMAGESET_PATH","withIosIcons","config","withDangerousMod","setIconsAsync","modRequest","projectRoot","exports","getIcons","iosSpecificIcons","ios","icon","any","dark","tinted","WarningAggregator","addWarningIOS","iosNamedProjectRoot","getIosNamedProjectPath","ensureDir","join","imagesJson","baseIconPath","baseIcon","generateUniversalIconAsync","cacheKey","platform","push","darkIcon","appearance","tintedIcon","writeContentsJsonAsync","images","projectName","getAppleIconName","size","scale","name","filename","source","generateImageAsync","cacheType","src","width","height","removeTransparency","resizeMode","backgroundColor","undefined","createSquareAsync","assetPath","writeFile","idiom","appearances","value"],"sources":["../../../src/plugins/icons/withIosIcons.ts"],"sourcesContent":["import { ConfigPlugin, IOSConfig, WarningAggregator, withDangerousMod } from '@expo/config-plugins';\nimport { ExpoConfig, IOSIcons } from '@expo/config-types';\nimport { createSquareAsync, generateImageAsync } from '@expo/image-utils';\nimport * as fs from 'fs-extra';\nimport { join } from 'path';\n\nimport { ContentsJson, ContentsJsonImage, writeContentsJsonAsync } from './AssetContents';\n\nconst { getProjectName } = IOSConfig.XcodeUtils;\n\nconst IMAGE_CACHE_NAME = 'icons';\nconst IMAGESET_PATH = 'Images.xcassets/AppIcon.appiconset';\n\nexport const withIosIcons: ConfigPlugin = (config) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n await setIconsAsync(config, config.modRequest.projectRoot);\n return config;\n },\n ]);\n};\n\nexport function getIcons(config: Pick<ExpoConfig, 'icon' | 'ios'>): IOSIcons | string | null {\n const iosSpecificIcons = config.ios?.icon;\n\n if (iosSpecificIcons) {\n // For backwards compatibility, the icon can be a string\n if (typeof iosSpecificIcons === 'string') {\n return iosSpecificIcons || config.icon || null;\n }\n\n // in iOS 18 introduced the ability to specify dark and tinted icons, which users can specify as an object\n if (!iosSpecificIcons.any && !iosSpecificIcons.dark && !iosSpecificIcons.tinted) {\n return config.icon || null;\n }\n\n return iosSpecificIcons;\n }\n\n if (config.icon) {\n return config.icon;\n }\n\n return null;\n}\n\nexport async function setIconsAsync(config: ExpoConfig, projectRoot: string) {\n const icon = getIcons(config);\n\n if (\n !icon ||\n (typeof icon === 'string' && !icon) ||\n (typeof icon === 'object' && !icon?.any && !icon?.dark && !icon?.tinted)\n ) {\n WarningAggregator.addWarningIOS('icon', 'No icon is defined in the Expo config.');\n }\n\n // Something like projectRoot/ios/MyApp/\n const iosNamedProjectRoot = getIosNamedProjectPath(projectRoot);\n\n // Ensure the Images.xcassets/AppIcon.appiconset path exists\n await fs.ensureDir(join(iosNamedProjectRoot, IMAGESET_PATH));\n\n const imagesJson: ContentsJson['images'] = [];\n\n const baseIconPath = typeof icon === 'object' ? icon?.any || icon?.dark || icon?.tinted : icon;\n\n // Store the image JSON data for assigning via the Contents.json\n const baseIcon = await generateUniversalIconAsync(projectRoot, {\n icon: baseIconPath,\n cacheKey: 'universal-icon',\n iosNamedProjectRoot,\n platform: 'ios',\n });\n\n imagesJson.push(baseIcon);\n\n if (typeof icon === 'object') {\n if (icon?.dark) {\n const darkIcon = await generateUniversalIconAsync(projectRoot, {\n icon: icon.dark,\n cacheKey: 'universal-icon-dark',\n iosNamedProjectRoot,\n platform: 'ios',\n appearance: 'dark',\n });\n\n imagesJson.push(darkIcon);\n }\n\n if (icon?.tinted) {\n const tintedIcon = await generateUniversalIconAsync(projectRoot, {\n icon: icon.tinted,\n cacheKey: 'universal-icon-tinted',\n iosNamedProjectRoot,\n platform: 'ios',\n appearance: 'tinted',\n });\n\n imagesJson.push(tintedIcon);\n }\n }\n\n // Finally, write the Contents.json\n await writeContentsJsonAsync(join(iosNamedProjectRoot, IMAGESET_PATH), { images: imagesJson });\n}\n\n/**\n * Return the project's named iOS path: ios/MyProject/\n *\n * @param projectRoot Expo project root path.\n */\nfunction getIosNamedProjectPath(projectRoot: string): string {\n const projectName = getProjectName(projectRoot);\n return join(projectRoot, 'ios', projectName);\n}\n\nfunction getAppleIconName(size: number, scale: number, appearance?: 'dark' | 'tinted'): string {\n let name = 'App-Icon';\n\n if (appearance) {\n name = `${name}-${appearance}`;\n }\n\n name = `${name}-${size}x${size}@${scale}x.png`;\n\n return name;\n}\n\nexport async function generateUniversalIconAsync(\n projectRoot: string,\n {\n icon,\n cacheKey,\n iosNamedProjectRoot,\n platform,\n appearance,\n }: {\n platform: 'watchos' | 'ios';\n icon?: string | null;\n appearance?: 'dark' | 'tinted';\n iosNamedProjectRoot: string;\n cacheKey: string;\n }\n): Promise<ContentsJsonImage> {\n const size = 1024;\n const filename = getAppleIconName(size, 1, appearance);\n\n let source: Buffer;\n\n if (icon) {\n // Using this method will cache the images in `.expo` based on the properties used to generate them.\n // this method also supports remote URLs and using the global sharp instance.\n source = (\n await generateImageAsync(\n { projectRoot, cacheType: IMAGE_CACHE_NAME + cacheKey },\n {\n src: icon,\n name: filename,\n width: size,\n height: size,\n // Transparency needs to be preserved in dark variant, but can safely be removed in \"any\" and \"tinted\" variants.\n removeTransparency: appearance !== 'dark',\n // The icon should be square, but if it's not then it will be cropped.\n resizeMode: 'cover',\n // Force the background color to solid white to prevent any transparency. (for \"any\" and \"tinted\" variants)\n // TODO: Maybe use a more adaptive option based on the icon color?\n backgroundColor: appearance !== 'dark' ? '#ffffff' : undefined,\n }\n )\n ).source;\n } else {\n // Create a white square image if no icon exists to mitigate the chance of a submission failure to the app store.\n source = await createSquareAsync({ size });\n }\n // Write image buffer to the file system.\n const assetPath = join(iosNamedProjectRoot, IMAGESET_PATH, filename);\n await fs.writeFile(assetPath, source);\n\n return {\n filename,\n idiom: 'universal',\n platform,\n size: `${size}x${size}`,\n ...(appearance ? { appearances: [{ appearance: 'luminosity', value: appearance }] } : {}),\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withIosIcons.js","names":["_configPlugins","data","require","_imageUtils","fs","_interopRequireWildcard","_path","_AssetContents","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getProjectName","IOSConfig","XcodeUtils","IMAGE_CACHE_NAME","IMAGESET_PATH","withIosIcons","config","withDangerousMod","setIconsAsync","modRequest","projectRoot","exports","getIcons","iosSpecificIcons","ios","icon","light","dark","tinted","WarningAggregator","addWarningIOS","iosNamedProjectRoot","getIosNamedProjectPath","ensureDir","join","imagesJson","baseIconPath","baseIcon","generateUniversalIconAsync","cacheKey","platform","push","darkIcon","appearance","tintedIcon","writeContentsJsonAsync","images","projectName","getAppleIconName","size","scale","name","filename","source","generateImageAsync","cacheType","src","width","height","removeTransparency","resizeMode","backgroundColor","undefined","createSquareAsync","assetPath","writeFile","idiom","appearances","value"],"sources":["../../../src/plugins/icons/withIosIcons.ts"],"sourcesContent":["import { ConfigPlugin, IOSConfig, WarningAggregator, withDangerousMod } from '@expo/config-plugins';\nimport { ExpoConfig, IOSIcons } from '@expo/config-types';\nimport { createSquareAsync, generateImageAsync } from '@expo/image-utils';\nimport * as fs from 'fs-extra';\nimport { join } from 'path';\n\nimport { ContentsJson, ContentsJsonImage, writeContentsJsonAsync } from './AssetContents';\n\nconst { getProjectName } = IOSConfig.XcodeUtils;\n\nconst IMAGE_CACHE_NAME = 'icons';\nconst IMAGESET_PATH = 'Images.xcassets/AppIcon.appiconset';\n\nexport const withIosIcons: ConfigPlugin = (config) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n await setIconsAsync(config, config.modRequest.projectRoot);\n return config;\n },\n ]);\n};\n\nexport function getIcons(config: Pick<ExpoConfig, 'icon' | 'ios'>): IOSIcons | string | null {\n const iosSpecificIcons = config.ios?.icon;\n\n if (iosSpecificIcons) {\n // For backwards compatibility, the icon can be a string\n if (typeof iosSpecificIcons === 'string') {\n return iosSpecificIcons || config.icon || null;\n }\n\n // in iOS 18 introduced the ability to specify dark and tinted icons, which users can specify as an object\n if (!iosSpecificIcons.light && !iosSpecificIcons.dark && !iosSpecificIcons.tinted) {\n return config.icon || null;\n }\n\n return iosSpecificIcons;\n }\n\n if (config.icon) {\n return config.icon;\n }\n\n return null;\n}\n\nexport async function setIconsAsync(config: ExpoConfig, projectRoot: string) {\n const icon = getIcons(config);\n\n if (\n !icon ||\n (typeof icon === 'string' && !icon) ||\n (typeof icon === 'object' && !icon?.light && !icon?.dark && !icon?.tinted)\n ) {\n WarningAggregator.addWarningIOS('icon', 'No icon is defined in the Expo config.');\n }\n\n // Something like projectRoot/ios/MyApp/\n const iosNamedProjectRoot = getIosNamedProjectPath(projectRoot);\n\n // Ensure the Images.xcassets/AppIcon.appiconset path exists\n await fs.ensureDir(join(iosNamedProjectRoot, IMAGESET_PATH));\n\n const imagesJson: ContentsJson['images'] = [];\n\n const baseIconPath = typeof icon === 'object' ? icon?.light || icon?.dark || icon?.tinted : icon;\n\n // Store the image JSON data for assigning via the Contents.json\n const baseIcon = await generateUniversalIconAsync(projectRoot, {\n icon: baseIconPath,\n cacheKey: 'universal-icon',\n iosNamedProjectRoot,\n platform: 'ios',\n });\n\n imagesJson.push(baseIcon);\n\n if (typeof icon === 'object') {\n if (icon?.dark) {\n const darkIcon = await generateUniversalIconAsync(projectRoot, {\n icon: icon.dark,\n cacheKey: 'universal-icon-dark',\n iosNamedProjectRoot,\n platform: 'ios',\n appearance: 'dark',\n });\n\n imagesJson.push(darkIcon);\n }\n\n if (icon?.tinted) {\n const tintedIcon = await generateUniversalIconAsync(projectRoot, {\n icon: icon.tinted,\n cacheKey: 'universal-icon-tinted',\n iosNamedProjectRoot,\n platform: 'ios',\n appearance: 'tinted',\n });\n\n imagesJson.push(tintedIcon);\n }\n }\n\n // Finally, write the Contents.json\n await writeContentsJsonAsync(join(iosNamedProjectRoot, IMAGESET_PATH), { images: imagesJson });\n}\n\n/**\n * Return the project's named iOS path: ios/MyProject/\n *\n * @param projectRoot Expo project root path.\n */\nfunction getIosNamedProjectPath(projectRoot: string): string {\n const projectName = getProjectName(projectRoot);\n return join(projectRoot, 'ios', projectName);\n}\n\nfunction getAppleIconName(size: number, scale: number, appearance?: 'dark' | 'tinted'): string {\n let name = 'App-Icon';\n\n if (appearance) {\n name = `${name}-${appearance}`;\n }\n\n name = `${name}-${size}x${size}@${scale}x.png`;\n\n return name;\n}\n\nexport async function generateUniversalIconAsync(\n projectRoot: string,\n {\n icon,\n cacheKey,\n iosNamedProjectRoot,\n platform,\n appearance,\n }: {\n platform: 'watchos' | 'ios';\n icon?: string | null;\n appearance?: 'dark' | 'tinted';\n iosNamedProjectRoot: string;\n cacheKey: string;\n }\n): Promise<ContentsJsonImage> {\n const size = 1024;\n const filename = getAppleIconName(size, 1, appearance);\n\n let source: Buffer;\n\n if (icon) {\n // Using this method will cache the images in `.expo` based on the properties used to generate them.\n // this method also supports remote URLs and using the global sharp instance.\n source = (\n await generateImageAsync(\n { projectRoot, cacheType: IMAGE_CACHE_NAME + cacheKey },\n {\n src: icon,\n name: filename,\n width: size,\n height: size,\n // Transparency needs to be preserved in dark variant, but can safely be removed in \"light\" and \"tinted\" variants.\n removeTransparency: appearance !== 'dark',\n // The icon should be square, but if it's not then it will be cropped.\n resizeMode: 'cover',\n // Force the background color to solid white to prevent any transparency. (for \"any\" and \"tinted\" variants)\n // TODO: Maybe use a more adaptive option based on the icon color?\n backgroundColor: appearance !== 'dark' ? '#ffffff' : undefined,\n }\n )\n ).source;\n } else {\n // Create a white square image if no icon exists to mitigate the chance of a submission failure to the app store.\n source = await createSquareAsync({ size });\n }\n // Write image buffer to the file system.\n const assetPath = join(iosNamedProjectRoot, IMAGESET_PATH, filename);\n await fs.writeFile(assetPath, source);\n\n return {\n filename,\n idiom: 'universal',\n platform,\n size: `${size}x${size}`,\n ...(appearance ? { appearances: [{ appearance: 'luminosity', value: appearance }] } : {}),\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/prebuild-config",
3
- "version": "8.0.8",
3
+ "version": "8.0.9",
4
4
  "description": "Get the prebuild config",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -55,5 +55,5 @@
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  },
58
- "gitHead": "a64603dce90981bf7688657f87dfa4be3e24f58b"
58
+ "gitHead": "f63a767fe408dec95f810b576d2a8f555716d242"
59
59
  }