@expo/config-plugins 7.8.0 → 7.8.1

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.
Files changed (63) hide show
  1. package/build/android/BuildProperties.js.map +1 -1
  2. package/build/android/Colors.js.map +1 -1
  3. package/build/android/EasBuild.js.map +1 -1
  4. package/build/android/GoogleMapsApiKey.js.map +1 -1
  5. package/build/android/GoogleServices.js.map +1 -1
  6. package/build/android/IntentFilters.js.map +1 -1
  7. package/build/android/Manifest.js.map +1 -1
  8. package/build/android/Name.js.map +1 -1
  9. package/build/android/Orientation.js.map +1 -1
  10. package/build/android/Package.js.map +1 -1
  11. package/build/android/Paths.js.map +1 -1
  12. package/build/android/Permissions.js.map +1 -1
  13. package/build/android/PrimaryColor.js.map +1 -1
  14. package/build/android/Properties.js.map +1 -1
  15. package/build/android/Resources.js.map +1 -1
  16. package/build/android/Scheme.js.map +1 -1
  17. package/build/android/StatusBar.js.map +1 -1
  18. package/build/android/Strings.js.map +1 -1
  19. package/build/android/Updates.d.ts +1 -0
  20. package/build/android/Updates.js +4 -0
  21. package/build/android/Updates.js.map +1 -1
  22. package/build/android/Version.js.map +1 -1
  23. package/build/ios/Bitcode.js.map +1 -1
  24. package/build/ios/BuildProperties.js.map +1 -1
  25. package/build/ios/BuildScheme.js.map +1 -1
  26. package/build/ios/BundleIdentifier.js.map +1 -1
  27. package/build/ios/DeviceFamily.js.map +1 -1
  28. package/build/ios/Entitlements.js.map +1 -1
  29. package/build/ios/Google.js.map +1 -1
  30. package/build/ios/Locales.js.map +1 -1
  31. package/build/ios/Maps.js +0 -1
  32. package/build/ios/Maps.js.map +1 -1
  33. package/build/ios/Name.js.map +1 -1
  34. package/build/ios/Orientation.js.map +1 -1
  35. package/build/ios/Paths.js.map +1 -1
  36. package/build/ios/ProvisioningProfile.js.map +1 -1
  37. package/build/ios/RequiresFullScreen.js.map +1 -1
  38. package/build/ios/Scheme.js.map +1 -1
  39. package/build/ios/Swift.js.map +1 -1
  40. package/build/ios/Target.js.map +1 -1
  41. package/build/ios/Updates.js.map +1 -1
  42. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  43. package/build/ios/Version.js.map +1 -1
  44. package/build/ios/codeMod.js.map +1 -1
  45. package/build/ios/utils/Xcodeproj.js.map +1 -1
  46. package/build/plugins/createBaseMod.js.map +1 -1
  47. package/build/plugins/ios-plugins.js.map +1 -1
  48. package/build/plugins/mod-compiler.js.map +1 -1
  49. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  50. package/build/plugins/withIosBaseMods.js.map +1 -1
  51. package/build/plugins/withMod.js.map +1 -1
  52. package/build/plugins/withPlugins.js.map +1 -1
  53. package/build/plugins/withStaticPlugin.js.map +1 -1
  54. package/build/utils/Updates.js.map +1 -1
  55. package/build/utils/XML.js.map +1 -1
  56. package/build/utils/generateCode.js +2 -2
  57. package/build/utils/generateCode.js.map +1 -1
  58. package/build/utils/matchBrackets.js.map +1 -1
  59. package/build/utils/modules.js.map +1 -1
  60. package/build/utils/obj.js.map +1 -1
  61. package/build/utils/plugin-resolver.js.map +1 -1
  62. package/build/utils/sortObject.js.map +1 -1
  63. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"createBaseMod.js","names":["_debug","data","_interopRequireDefault","require","_withMod","obj","__esModule","default","debug","Debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","_props$skipEmptyMod","_props$saveToInternal","props","withBaseMod","mod","skipEmptyMod","saveToInternal","isProvider","action","modRequest","nextMod","results","filePath","modResults","assertModResults","error","message","Object","defineProperty","value","platformName","ensuredResults","mods","Error","JSON","stringify","upperFirst","name","charAt","toUpperCase","slice","createPlatformBaseMod","provider","withGeneratedBaseMods","providers","entries","reduce","baseMod"],"sources":["../../src/plugins/createBaseMod.ts"],"sourcesContent":["import Debug from 'debug';\n\nimport { BaseModOptions, withBaseMod } from './withMod';\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\n\nconst debug = Debug('expo:config-plugins:base-mods');\n\nexport type ForwardedBaseModOptions = Partial<\n Pick<BaseModOptions, 'saveToInternal' | 'skipEmptyMod'>\n>;\n\nexport type BaseModProviderMethods<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n getFilePath: (config: ExportedConfigWithProps<ModType>, props: Props) => Promise<string> | string;\n read: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<ModType> | ModType;\n write: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<void> | void;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\nexport type CreateBaseModProps<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n methodName: string;\n platform: ModPlatform;\n modName: string;\n} & BaseModProviderMethods<ModType, Props>;\n\nexport function createBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({\n methodName,\n platform,\n modName,\n getFilePath,\n read,\n write,\n isIntrospective,\n}: CreateBaseModProps<ModType, Props>): ConfigPlugin<Props | void> {\n const withUnknown: ConfigPlugin<Props | void> = (config, _props) => {\n const props = _props || ({} as Props);\n return withBaseMod<ModType>(config, {\n platform,\n mod: modName,\n skipEmptyMod: props.skipEmptyMod ?? true,\n saveToInternal: props.saveToInternal ?? false,\n isProvider: true,\n isIntrospective,\n async action({ modRequest: { nextMod, ...modRequest }, ...config }) {\n try {\n let results: ExportedConfigWithProps<ModType> = {\n ...config,\n modRequest,\n };\n\n const filePath = await getFilePath(results, props);\n debug(`mods.${platform}.${modName}: file path: ${filePath || '[skipped]'}`);\n const modResults = await read(filePath, results, props);\n\n results = await nextMod!({\n ...results,\n modResults,\n modRequest,\n });\n\n assertModResults(results, modRequest.platform, modRequest.modName);\n\n await write(filePath, results, props);\n return results;\n } catch (error: any) {\n error.message = `[${platform}.${modName}]: ${methodName}: ${error.message}`;\n throw error;\n }\n },\n });\n };\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n\nexport function assertModResults(results: any, platformName: string, modName: string) {\n // If the results came from a mod, they'd be in the form of [config, data].\n // Ensure the results are an array and omit the data since it should've been written by a data provider plugin.\n const ensuredResults = results;\n\n // Sanity check to help locate non compliant mods.\n if (!ensuredResults || typeof ensuredResults !== 'object' || !ensuredResults?.mods) {\n throw new Error(\n `Mod \\`mods.${platformName}.${modName}\\` evaluated to an object that is not a valid project config. Instead got: ${JSON.stringify(\n ensuredResults\n )}`\n );\n }\n return ensuredResults;\n}\n\nfunction upperFirst(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nexport function createPlatformBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({ modName, ...props }: Omit<CreateBaseModProps<ModType, Props>, 'methodName'>) {\n // Generate the function name to ensure it's uniform and also to improve stack traces.\n const methodName = `with${upperFirst(props.platform)}${upperFirst(modName)}BaseMod`;\n return createBaseMod<ModType, Props>({\n methodName,\n modName,\n ...props,\n });\n}\n\n/** A TS wrapper for creating provides */\nexport function provider<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>(\n props: BaseModProviderMethods<ModType, Props>\n) {\n return props;\n}\n\n/** Plugin to create and append base mods from file providers */\nexport function withGeneratedBaseMods<ModName extends string>(\n config: ExportedConfig,\n {\n platform,\n providers,\n ...props\n }: ForwardedBaseModOptions & {\n /** Officially supports `'ios' | 'android'` (`ModPlatform`). Arbitrary strings are supported for adding out-of-tree platforms. */\n platform: ModPlatform & string;\n providers: Partial<Record<ModName, BaseModProviderMethods<any, any>>>;\n }\n): ExportedConfig {\n return Object.entries(providers).reduce((config, [modName, value]) => {\n const baseMod = createPlatformBaseMod({ platform, modName, ...(value as any) });\n return baseMod(config, props);\n }, config);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"createBaseMod.js","names":["_debug","data","_interopRequireDefault","require","_withMod","obj","__esModule","default","debug","Debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","_props$skipEmptyMod","_props$saveToInternal","props","withBaseMod","mod","skipEmptyMod","saveToInternal","isProvider","action","modRequest","nextMod","results","filePath","modResults","assertModResults","error","message","Object","defineProperty","value","platformName","ensuredResults","mods","Error","JSON","stringify","upperFirst","name","charAt","toUpperCase","slice","createPlatformBaseMod","provider","withGeneratedBaseMods","providers","entries","reduce","baseMod"],"sources":["../../src/plugins/createBaseMod.ts"],"sourcesContent":["import Debug from 'debug';\n\nimport { BaseModOptions, withBaseMod } from './withMod';\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\n\nconst debug = Debug('expo:config-plugins:base-mods');\n\nexport type ForwardedBaseModOptions = Partial<\n Pick<BaseModOptions, 'saveToInternal' | 'skipEmptyMod'>\n>;\n\nexport type BaseModProviderMethods<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n getFilePath: (config: ExportedConfigWithProps<ModType>, props: Props) => Promise<string> | string;\n read: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<ModType> | ModType;\n write: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<void> | void;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\nexport type CreateBaseModProps<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n methodName: string;\n platform: ModPlatform;\n modName: string;\n} & BaseModProviderMethods<ModType, Props>;\n\nexport function createBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({\n methodName,\n platform,\n modName,\n getFilePath,\n read,\n write,\n isIntrospective,\n}: CreateBaseModProps<ModType, Props>): ConfigPlugin<Props | void> {\n const withUnknown: ConfigPlugin<Props | void> = (config, _props) => {\n const props = _props || ({} as Props);\n return withBaseMod<ModType>(config, {\n platform,\n mod: modName,\n skipEmptyMod: props.skipEmptyMod ?? true,\n saveToInternal: props.saveToInternal ?? false,\n isProvider: true,\n isIntrospective,\n async action({ modRequest: { nextMod, ...modRequest }, ...config }) {\n try {\n let results: ExportedConfigWithProps<ModType> = {\n ...config,\n modRequest,\n };\n\n const filePath = await getFilePath(results, props);\n debug(`mods.${platform}.${modName}: file path: ${filePath || '[skipped]'}`);\n const modResults = await read(filePath, results, props);\n\n results = await nextMod!({\n ...results,\n modResults,\n modRequest,\n });\n\n assertModResults(results, modRequest.platform, modRequest.modName);\n\n await write(filePath, results, props);\n return results;\n } catch (error: any) {\n error.message = `[${platform}.${modName}]: ${methodName}: ${error.message}`;\n throw error;\n }\n },\n });\n };\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n\nexport function assertModResults(results: any, platformName: string, modName: string) {\n // If the results came from a mod, they'd be in the form of [config, data].\n // Ensure the results are an array and omit the data since it should've been written by a data provider plugin.\n const ensuredResults = results;\n\n // Sanity check to help locate non compliant mods.\n if (!ensuredResults || typeof ensuredResults !== 'object' || !ensuredResults?.mods) {\n throw new Error(\n `Mod \\`mods.${platformName}.${modName}\\` evaluated to an object that is not a valid project config. Instead got: ${JSON.stringify(\n ensuredResults\n )}`\n );\n }\n return ensuredResults;\n}\n\nfunction upperFirst(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nexport function createPlatformBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({ modName, ...props }: Omit<CreateBaseModProps<ModType, Props>, 'methodName'>) {\n // Generate the function name to ensure it's uniform and also to improve stack traces.\n const methodName = `with${upperFirst(props.platform)}${upperFirst(modName)}BaseMod`;\n return createBaseMod<ModType, Props>({\n methodName,\n modName,\n ...props,\n });\n}\n\n/** A TS wrapper for creating provides */\nexport function provider<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>(\n props: BaseModProviderMethods<ModType, Props>\n) {\n return props;\n}\n\n/** Plugin to create and append base mods from file providers */\nexport function withGeneratedBaseMods<ModName extends string>(\n config: ExportedConfig,\n {\n platform,\n providers,\n ...props\n }: ForwardedBaseModOptions & {\n /** Officially supports `'ios' | 'android'` (`ModPlatform`). Arbitrary strings are supported for adding out-of-tree platforms. */\n platform: ModPlatform & string;\n providers: Partial<Record<ModName, BaseModProviderMethods<any, any>>>;\n }\n): ExportedConfig {\n return Object.entries(providers).reduce((config, [modName, value]) => {\n const baseMod = createPlatformBaseMod({ platform, modName, ...(value as any) });\n return baseMod(config, props);\n }, config);\n}\n"],"mappings":";;;;;;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,SAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwD,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAQxD,MAAMG,KAAK,GAAG,IAAAC,gBAAK,EAAC,+BAA+B,CAAC;AAuC7C,SAASC,aAAaA,CAG3B;EACAC,UAAU;EACVC,QAAQ;EACRC,OAAO;EACPC,WAAW;EACXC,IAAI;EACJC,KAAK;EACLC;AACkC,CAAC,EAA8B;EACjE,MAAMC,WAAuC,GAAGA,CAACC,MAAM,EAAEC,MAAM,KAAK;IAAA,IAAAC,mBAAA,EAAAC,qBAAA;IAClE,MAAMC,KAAK,GAAGH,MAAM,IAAK,CAAC,CAAW;IACrC,OAAO,IAAAI,sBAAW,EAAUL,MAAM,EAAE;MAClCP,QAAQ;MACRa,GAAG,EAAEZ,OAAO;MACZa,YAAY,GAAAL,mBAAA,GAAEE,KAAK,CAACG,YAAY,cAAAL,mBAAA,cAAAA,mBAAA,GAAI,IAAI;MACxCM,cAAc,GAAAL,qBAAA,GAAEC,KAAK,CAACI,cAAc,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,KAAK;MAC7CM,UAAU,EAAE,IAAI;MAChBX,eAAe;MACf,MAAMY,MAAMA,CAAC;QAAEC,UAAU,EAAE;UAAEC,OAAO;UAAE,GAAGD;QAAW,CAAC;QAAE,GAAGX;MAAO,CAAC,EAAE;QAClE,IAAI;UACF,IAAIa,OAAyC,GAAG;YAC9C,GAAGb,MAAM;YACTW;UACF,CAAC;UAED,MAAMG,QAAQ,GAAG,MAAMnB,WAAW,CAACkB,OAAO,EAAET,KAAK,CAAC;UAClDf,KAAK,CAAE,QAAOI,QAAS,IAAGC,OAAQ,gBAAeoB,QAAQ,IAAI,WAAY,EAAC,CAAC;UAC3E,MAAMC,UAAU,GAAG,MAAMnB,IAAI,CAACkB,QAAQ,EAAED,OAAO,EAAET,KAAK,CAAC;UAEvDS,OAAO,GAAG,MAAMD,OAAO,CAAE;YACvB,GAAGC,OAAO;YACVE,UAAU;YACVJ;UACF,CAAC,CAAC;UAEFK,gBAAgB,CAACH,OAAO,EAAEF,UAAU,CAAClB,QAAQ,EAAEkB,UAAU,CAACjB,OAAO,CAAC;UAElE,MAAMG,KAAK,CAACiB,QAAQ,EAAED,OAAO,EAAET,KAAK,CAAC;UACrC,OAAOS,OAAO;QAChB,CAAC,CAAC,OAAOI,KAAU,EAAE;UACnBA,KAAK,CAACC,OAAO,GAAI,IAAGzB,QAAS,IAAGC,OAAQ,MAAKF,UAAW,KAAIyB,KAAK,CAACC,OAAQ,EAAC;UAC3E,MAAMD,KAAK;QACb;MACF;IACF,CAAC,CAAC;EACJ,CAAC;EAED,IAAIzB,UAAU,EAAE;IACd2B,MAAM,CAACC,cAAc,CAACrB,WAAW,EAAE,MAAM,EAAE;MACzCsB,KAAK,EAAE7B;IACT,CAAC,CAAC;EACJ;EAEA,OAAOO,WAAW;AACpB;AAEO,SAASiB,gBAAgBA,CAACH,OAAY,EAAES,YAAoB,EAAE5B,OAAe,EAAE;EACpF;EACA;EACA,MAAM6B,cAAc,GAAGV,OAAO;;EAE9B;EACA,IAAI,CAACU,cAAc,IAAI,OAAOA,cAAc,KAAK,QAAQ,IAAI,EAACA,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEC,IAAI,GAAE;IAClF,MAAM,IAAIC,KAAK,CACZ,cAAaH,YAAa,IAAG5B,OAAQ,8EAA6EgC,IAAI,CAACC,SAAS,CAC/HJ,cACF,CAAE,EACJ,CAAC;EACH;EACA,OAAOA,cAAc;AACvB;AAEA,SAASK,UAAUA,CAACC,IAAY,EAAU;EACxC,OAAOA,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC,CAAC;AACrD;AAEO,SAASC,qBAAqBA,CAGnC;EAAEvC,OAAO;EAAE,GAAGU;AAA8D,CAAC,EAAE;EAC/E;EACA,MAAMZ,UAAU,GAAI,OAAMoC,UAAU,CAACxB,KAAK,CAACX,QAAQ,CAAE,GAAEmC,UAAU,CAAClC,OAAO,CAAE,SAAQ;EACnF,OAAOH,aAAa,CAAiB;IACnCC,UAAU;IACVE,OAAO;IACP,GAAGU;EACL,CAAC,CAAC;AACJ;;AAEA;AACO,SAAS8B,QAAQA,CACtB9B,KAA6C,EAC7C;EACA,OAAOA,KAAK;AACd;;AAEA;AACO,SAAS+B,qBAAqBA,CACnCnC,MAAsB,EACtB;EACEP,QAAQ;EACR2C,SAAS;EACT,GAAGhC;AAKL,CAAC,EACe;EAChB,OAAOe,MAAM,CAACkB,OAAO,CAACD,SAAS,CAAC,CAACE,MAAM,CAAC,CAACtC,MAAM,EAAE,CAACN,OAAO,EAAE2B,KAAK,CAAC,KAAK;IACpE,MAAMkB,OAAO,GAAGN,qBAAqB,CAAC;MAAExC,QAAQ;MAAEC,OAAO;MAAE,GAAI2B;IAAc,CAAC,CAAC;IAC/E,OAAOkB,OAAO,CAACvC,MAAM,EAAEI,KAAK,CAAC;EAC/B,CAAC,EAAEJ,MAAM,CAAC;AACZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"ios-plugins.js","names":["_withMod","data","require","_obj","_warnings","createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","_config$modRawConfig$","_config$modRawConfig$2","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","exports","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport { withMod } from './withMod';\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ios-plugins.js","names":["_withMod","data","require","_obj","_warnings","createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","_config$modRawConfig$","_config$modRawConfig$2","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","exports","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport { withMod } from './withMod';\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mod-compiler.js","names":["_debug","data","_interopRequireDefault","require","_path","_createBaseMod","_withAndroidBaseMods","_withIosBaseMods","_Xcodeproj","_errors","Warnings","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","debug","Debug","withDefaultBaseMods","config","props","withIosBaseMods","withAndroidBaseMods","withIntrospectionBaseMods","saveToInternal","skipEmptyMod","mods","platform","keys","_config$mods$platform","_config$mods$platform2","isIntrospective","_config$mods$platform3","compileModsAsync","introspect","evalModsAsync","sortMods","commands","order","allKeys","map","completeOrder","Set","sorted","length","group","shift","commandSet","find","push","getRawClone","freeze","JSON","parse","stringify","orders","ios","projectRoot","platforms","assertMissingModProviders","ignoreExistingNativeFiles","modRawConfig","platformName","entries","_config$mods","includes","_orders$platformName","name","join","platformProjectRoot","path","projectName","getHackyProjectName","undefined","modName","mod","modRequest","isProvider","errorMessage","PluginError","addWarningForPlatform","results","modResults","assertModResults"],"sources":["../../src/plugins/mod-compiler.ts"],"sourcesContent":["import Debug from 'debug';\nimport path from 'path';\n\nimport { assertModResults, ForwardedBaseModOptions } from './createBaseMod';\nimport { withAndroidBaseMods } from './withAndroidBaseMods';\nimport { withIosBaseMods } from './withIosBaseMods';\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { PluginError } from '../utils/errors';\nimport * as Warnings from '../utils/warnings';\n\nconst debug = Debug('expo:config-plugins:mod-compiler');\n\nexport function withDefaultBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, props);\n config = withAndroidBaseMods(config, props);\n return config;\n}\n\n/**\n * Get a prebuild config that safely evaluates mods without persisting any changes to the file system.\n * Currently this only supports infoPlist, entitlements, androidManifest, strings, gradleProperties, and expoPlist mods.\n * This plugin should be evaluated directly:\n */\nexport function withIntrospectionBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, {\n saveToInternal: true,\n // This writing optimization can be skipped since we never write in introspection mode.\n // Including empty mods will ensure that all mods get introspected.\n skipEmptyMod: false,\n ...props,\n });\n config = withAndroidBaseMods(config, {\n saveToInternal: true,\n skipEmptyMod: false,\n ...props,\n });\n\n if (config.mods) {\n // Remove all mods that don't have an introspection base mod, for instance `dangerous` mods.\n for (const platform of Object.keys(config.mods) as ModPlatform[]) {\n // const platformPreserve = preserve[platform];\n for (const key of Object.keys(config.mods[platform] || {})) {\n // @ts-ignore\n if (!config.mods[platform]?.[key]?.isIntrospective) {\n debug(`removing non-idempotent mod: ${platform}.${key}`);\n // @ts-ignore\n delete config.mods[platform]?.[key];\n }\n }\n }\n }\n\n return config;\n}\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: {\n projectRoot: string;\n platforms?: ModPlatform[];\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n ignoreExistingNativeFiles?: boolean;\n }\n): Promise<ExportedConfig> {\n if (props.introspect === true) {\n config = withIntrospectionBaseMods(config);\n } else {\n config = withDefaultBaseMods(config);\n }\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nfunction getRawClone({ mods, ...config }: ExportedConfig) {\n // Configs should be fully serializable, so we can clone them without worrying about\n // the mods.\n return Object.freeze(JSON.parse(JSON.stringify(config)));\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n {\n projectRoot,\n introspect,\n platforms,\n assertMissingModProviders,\n ignoreExistingNativeFiles = false,\n }: {\n projectRoot: string;\n introspect?: boolean;\n platforms?: ModPlatform[];\n /**\n * Throw errors when mods are missing providers.\n * @default true\n */\n assertMissingModProviders?: boolean;\n /** Ignore any existing native files, only use the generated prebuild results. */\n ignoreExistingNativeFiles?: boolean;\n }\n): Promise<ExportedConfig> {\n const modRawConfig = getRawClone(config);\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n debug(`skip platform: ${platformName}`);\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName] ?? ['dangerous']);\n debug(`run in order: ${entries.map(([name]) => name).join(', ')}`);\n const platformProjectRoot = path.join(projectRoot, platformName);\n const projectName =\n platformName === 'ios' ? getHackyProjectName(projectRoot, config) : undefined;\n\n for (const [modName, mod] of entries) {\n const modRequest = {\n projectRoot,\n projectName,\n platformProjectRoot,\n platform: platformName as ModPlatform,\n modName,\n introspect: !!introspect,\n ignoreExistingNativeFiles,\n };\n\n if (!(mod as Mod).isProvider) {\n // In strict mode, throw an error.\n const errorMessage = `Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods`;\n if (assertMissingModProviders !== false) {\n throw new PluginError(errorMessage, 'MISSING_PROVIDER');\n } else {\n Warnings.addWarningForPlatform(\n platformName as ModPlatform,\n `${platformName}.${modName}`,\n `Skipping: Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods. This may be due to an outdated version of Expo CLI.`\n );\n // In loose mode, just skip the mod entirely.\n continue;\n }\n }\n\n const results = await (mod as Mod)({\n ...config,\n modResults: null,\n modRequest,\n modRawConfig,\n });\n\n // Sanity check to help locate non compliant mods.\n config = assertModResults(results, platformName, modName);\n // @ts-ignore: `modResults` is added for modifications\n delete config.modResults;\n // @ts-ignore: `modRequest` is added for modifications\n delete config.modRequest;\n // @ts-ignore: `modRawConfig` is added for modifications\n delete config.modRawConfig;\n }\n }\n }\n\n return config;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mod-compiler.js","names":["_debug","data","_interopRequireDefault","require","_path","_createBaseMod","_withAndroidBaseMods","_withIosBaseMods","_Xcodeproj","_errors","Warnings","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","debug","Debug","withDefaultBaseMods","config","props","withIosBaseMods","withAndroidBaseMods","withIntrospectionBaseMods","saveToInternal","skipEmptyMod","mods","platform","keys","_config$mods$platform","_config$mods$platform2","isIntrospective","_config$mods$platform3","compileModsAsync","introspect","evalModsAsync","sortMods","commands","order","allKeys","map","completeOrder","Set","sorted","length","group","shift","commandSet","find","push","getRawClone","freeze","JSON","parse","stringify","orders","ios","projectRoot","platforms","assertMissingModProviders","ignoreExistingNativeFiles","modRawConfig","platformName","entries","_config$mods","includes","_orders$platformName","name","join","platformProjectRoot","path","projectName","getHackyProjectName","undefined","modName","mod","modRequest","isProvider","errorMessage","PluginError","addWarningForPlatform","results","modResults","assertModResults"],"sources":["../../src/plugins/mod-compiler.ts"],"sourcesContent":["import Debug from 'debug';\nimport path from 'path';\n\nimport { assertModResults, ForwardedBaseModOptions } from './createBaseMod';\nimport { withAndroidBaseMods } from './withAndroidBaseMods';\nimport { withIosBaseMods } from './withIosBaseMods';\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { PluginError } from '../utils/errors';\nimport * as Warnings from '../utils/warnings';\n\nconst debug = Debug('expo:config-plugins:mod-compiler');\n\nexport function withDefaultBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, props);\n config = withAndroidBaseMods(config, props);\n return config;\n}\n\n/**\n * Get a prebuild config that safely evaluates mods without persisting any changes to the file system.\n * Currently this only supports infoPlist, entitlements, androidManifest, strings, gradleProperties, and expoPlist mods.\n * This plugin should be evaluated directly:\n */\nexport function withIntrospectionBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, {\n saveToInternal: true,\n // This writing optimization can be skipped since we never write in introspection mode.\n // Including empty mods will ensure that all mods get introspected.\n skipEmptyMod: false,\n ...props,\n });\n config = withAndroidBaseMods(config, {\n saveToInternal: true,\n skipEmptyMod: false,\n ...props,\n });\n\n if (config.mods) {\n // Remove all mods that don't have an introspection base mod, for instance `dangerous` mods.\n for (const platform of Object.keys(config.mods) as ModPlatform[]) {\n // const platformPreserve = preserve[platform];\n for (const key of Object.keys(config.mods[platform] || {})) {\n // @ts-ignore\n if (!config.mods[platform]?.[key]?.isIntrospective) {\n debug(`removing non-idempotent mod: ${platform}.${key}`);\n // @ts-ignore\n delete config.mods[platform]?.[key];\n }\n }\n }\n }\n\n return config;\n}\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: {\n projectRoot: string;\n platforms?: ModPlatform[];\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n ignoreExistingNativeFiles?: boolean;\n }\n): Promise<ExportedConfig> {\n if (props.introspect === true) {\n config = withIntrospectionBaseMods(config);\n } else {\n config = withDefaultBaseMods(config);\n }\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nfunction getRawClone({ mods, ...config }: ExportedConfig) {\n // Configs should be fully serializable, so we can clone them without worrying about\n // the mods.\n return Object.freeze(JSON.parse(JSON.stringify(config)));\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n {\n projectRoot,\n introspect,\n platforms,\n assertMissingModProviders,\n ignoreExistingNativeFiles = false,\n }: {\n projectRoot: string;\n introspect?: boolean;\n platforms?: ModPlatform[];\n /**\n * Throw errors when mods are missing providers.\n * @default true\n */\n assertMissingModProviders?: boolean;\n /** Ignore any existing native files, only use the generated prebuild results. */\n ignoreExistingNativeFiles?: boolean;\n }\n): Promise<ExportedConfig> {\n const modRawConfig = getRawClone(config);\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n debug(`skip platform: ${platformName}`);\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName] ?? ['dangerous']);\n debug(`run in order: ${entries.map(([name]) => name).join(', ')}`);\n const platformProjectRoot = path.join(projectRoot, platformName);\n const projectName =\n platformName === 'ios' ? getHackyProjectName(projectRoot, config) : undefined;\n\n for (const [modName, mod] of entries) {\n const modRequest = {\n projectRoot,\n projectName,\n platformProjectRoot,\n platform: platformName as ModPlatform,\n modName,\n introspect: !!introspect,\n ignoreExistingNativeFiles,\n };\n\n if (!(mod as Mod).isProvider) {\n // In strict mode, throw an error.\n const errorMessage = `Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods`;\n if (assertMissingModProviders !== false) {\n throw new PluginError(errorMessage, 'MISSING_PROVIDER');\n } else {\n Warnings.addWarningForPlatform(\n platformName as ModPlatform,\n `${platformName}.${modName}`,\n `Skipping: Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods. This may be due to an outdated version of Expo CLI.`\n );\n // In loose mode, just skip the mod entirely.\n continue;\n }\n }\n\n const results = await (mod as Mod)({\n ...config,\n modResults: null,\n modRequest,\n modRawConfig,\n });\n\n // Sanity check to help locate non compliant mods.\n config = assertModResults(results, platformName, modName);\n // @ts-ignore: `modResults` is added for modifications\n delete config.modResults;\n // @ts-ignore: `modRequest` is added for modifications\n delete config.modRequest;\n // @ts-ignore: `modRawConfig` is added for modifications\n delete config.modRawConfig;\n }\n }\n }\n\n return config;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withAndroidBaseMods.js","names":["_fs","data","require","_path","_interopRequireDefault","_createBaseMod","_android","_XML","_sortObject","obj","__esModule","default","readFile","writeFile","promises","getAndroidManifestTemplate","config","_config$android$packa","_config$android","parseXMLAsync","android","package","sortAndroidManifest","manifest","sortObject","reverseSortString","Array","isArray","sort","a","b","$","application","map","sortObjWithOrder","defaultProviders","dangerous","provider","getFilePath","read","filePath","modResults","write","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","writeXMLAsync","xml","colors","Colors","getProjectColorsXMLPathAsync","colorsNight","kind","styles","Styles","getProjectStylesXMLPathAsync","_styles$resources$$","fallback","projectBuildGradle","Paths","getProjectBuildGradleFilePath","getFileInfo","contents","settingsGradle","getSettingsGradleFilePath","appBuildGradle","getAppBuildGradleFilePath","mainActivity","getProjectFilePath","mainApplication","withAndroidBaseMods","providers","props","withGeneratedBaseMods","platform","getAndroidModFileProviders"],"sources":["../../src/plugins/withAndroidBaseMods.ts"],"sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Colors, Manifest, Paths, Properties, Resources, Strings, Styles } from '../android';\nimport { AndroidManifest } from '../android/Manifest';\nimport { parseXMLAsync, writeXMLAsync } from '../utils/XML';\nimport { reverseSortString, sortObject, sortObjWithOrder } from '../utils/sortObject';\n\nconst { readFile, writeFile } = promises;\n\ntype AndroidModName = keyof Required<ModConfig>['android'];\n\nfunction getAndroidManifestTemplate(config: ExportedConfig) {\n // Keep in sync with https://github.com/expo/expo/blob/master/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n // TODO: Read from remote template when possible\n return parseXMLAsync(`\n <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"${\n config.android?.package ?? 'com.placeholder.appid'\n }\">\n\n <uses-permission android:name=\"android.permission.INTERNET\"/>\n <!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->\n <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n <!-- These require runtime permissions on M -->\n <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>\n <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>\n <!-- END OPTIONAL PERMISSIONS -->\n\n <queries>\n <!-- Support checking for http(s) links via the Linking API -->\n <intent>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n </intent>\n </queries>\n\n <application\n android:name=\".MainApplication\"\n android:label=\"@string/app_name\"\n android:icon=\"@mipmap/ic_launcher\"\n android:roundIcon=\"@mipmap/ic_launcher_round\"\n android:allowBackup=\"false\"\n android:theme=\"@style/AppTheme\"\n android:usesCleartextTraffic=\"true\"\n >\n <meta-data android:name=\"expo.modules.updates.EXPO_UPDATE_URL\" android:value=\"YOUR-APP-URL-HERE\"/>\n <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"YOUR-APP-SDK-VERSION-HERE\"/>\n <activity\n android:name=\".MainActivity\"\n android:label=\"@string/app_name\"\n android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n android:launchMode=\"singleTask\"\n android:windowSoftInputMode=\"adjustResize\"\n android:theme=\"@style/Theme.App.SplashScreen\"\n >\n <intent-filter>\n <action android:name=\"android.intent.action.MAIN\"/>\n <category android:name=\"android.intent.category.LAUNCHER\"/>\n </intent-filter>\n </activity>\n <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\"/>\n </application>\n </manifest>\n `) as Promise<AndroidManifest>;\n}\n\nexport function sortAndroidManifest(obj: AndroidManifest) {\n if (obj.manifest) {\n // Reverse sort so application is last and permissions are first\n obj.manifest = sortObject(obj.manifest, reverseSortString);\n\n if (Array.isArray(obj.manifest['uses-permission'])) {\n // Sort permissions alphabetically\n obj.manifest['uses-permission'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n\n if (Array.isArray(obj.manifest.application)) {\n // reverse sort applications so activity is towards the end and meta-data is towards the front.\n obj.manifest.application = obj.manifest.application.map((application) => {\n application = sortObjWithOrder(application, ['meta-data', 'service', 'activity']);\n\n if (Array.isArray(application['meta-data'])) {\n // Sort metadata alphabetically\n application['meta-data'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n return application;\n });\n }\n }\n return obj;\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n manifest: provider<Manifest.AndroidManifest>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'app/src/main/AndroidManifest.xml');\n },\n async read(filePath, config) {\n try {\n return await Manifest.readAndroidManifestAsync(filePath);\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return await getAndroidManifestTemplate(config);\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await Manifest.writeAndroidManifestAsync(filePath, sortAndroidManifest(modResults));\n },\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n gradleProperties: provider<Properties.PropertiesItem[]>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'gradle.properties');\n },\n async read(filePath, config) {\n try {\n return await Properties.parsePropertiesFile(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return [];\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeFile(filePath, Properties.propertiesListToString(modResults));\n },\n }),\n\n // Append a rule to supply strings.xml data to mods on `mods.android.strings`\n strings: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Strings.getProjectStringsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colors: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colorsNight: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot, { kind: 'values-night' });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n styles: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Styles.getProjectStylesXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n let styles: Resources.ResourceXML = { resources: {} };\n\n try {\n // Adds support for `tools:x`\n styles = await Resources.readResourcesXMLAsync({\n path: filePath,\n fallback: `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`,\n });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n\n // Ensure support for tools is added...\n if (!styles.resources.$) {\n styles.resources.$ = {};\n }\n if (!styles.resources.$?.['xmlns:tools']) {\n styles.resources.$['xmlns:tools'] = 'http://schemas.android.com/tools';\n }\n return styles;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n projectBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n settingsGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getSettingsGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n appBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainActivity: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainActivity');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainApplication: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainApplication');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n};\n\ntype AndroidDefaultProviders = typeof defaultProviders;\n\nexport function withAndroidBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<AndroidDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<AndroidModName>(config, {\n ...props,\n platform: 'android',\n providers: providers ?? getAndroidModFileProviders(),\n });\n}\n\nexport function getAndroidModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"withAndroidBaseMods.js","names":["_fs","data","require","_path","_interopRequireDefault","_createBaseMod","_android","_XML","_sortObject","obj","__esModule","default","readFile","writeFile","promises","getAndroidManifestTemplate","config","_config$android$packa","_config$android","parseXMLAsync","android","package","sortAndroidManifest","manifest","sortObject","reverseSortString","Array","isArray","sort","a","b","$","application","map","sortObjWithOrder","defaultProviders","dangerous","provider","getFilePath","read","filePath","modResults","write","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","writeXMLAsync","xml","colors","Colors","getProjectColorsXMLPathAsync","colorsNight","kind","styles","Styles","getProjectStylesXMLPathAsync","_styles$resources$$","fallback","projectBuildGradle","Paths","getProjectBuildGradleFilePath","getFileInfo","contents","settingsGradle","getSettingsGradleFilePath","appBuildGradle","getAppBuildGradleFilePath","mainActivity","getProjectFilePath","mainApplication","withAndroidBaseMods","providers","props","withGeneratedBaseMods","platform","getAndroidModFileProviders"],"sources":["../../src/plugins/withAndroidBaseMods.ts"],"sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Colors, Manifest, Paths, Properties, Resources, Strings, Styles } from '../android';\nimport { AndroidManifest } from '../android/Manifest';\nimport { parseXMLAsync, writeXMLAsync } from '../utils/XML';\nimport { reverseSortString, sortObject, sortObjWithOrder } from '../utils/sortObject';\n\nconst { readFile, writeFile } = promises;\n\ntype AndroidModName = keyof Required<ModConfig>['android'];\n\nfunction getAndroidManifestTemplate(config: ExportedConfig) {\n // Keep in sync with https://github.com/expo/expo/blob/master/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n // TODO: Read from remote template when possible\n return parseXMLAsync(`\n <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"${\n config.android?.package ?? 'com.placeholder.appid'\n }\">\n\n <uses-permission android:name=\"android.permission.INTERNET\"/>\n <!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->\n <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n <!-- These require runtime permissions on M -->\n <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>\n <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>\n <!-- END OPTIONAL PERMISSIONS -->\n\n <queries>\n <!-- Support checking for http(s) links via the Linking API -->\n <intent>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n </intent>\n </queries>\n\n <application\n android:name=\".MainApplication\"\n android:label=\"@string/app_name\"\n android:icon=\"@mipmap/ic_launcher\"\n android:roundIcon=\"@mipmap/ic_launcher_round\"\n android:allowBackup=\"false\"\n android:theme=\"@style/AppTheme\"\n android:usesCleartextTraffic=\"true\"\n >\n <meta-data android:name=\"expo.modules.updates.EXPO_UPDATE_URL\" android:value=\"YOUR-APP-URL-HERE\"/>\n <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"YOUR-APP-SDK-VERSION-HERE\"/>\n <activity\n android:name=\".MainActivity\"\n android:label=\"@string/app_name\"\n android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n android:launchMode=\"singleTask\"\n android:windowSoftInputMode=\"adjustResize\"\n android:theme=\"@style/Theme.App.SplashScreen\"\n >\n <intent-filter>\n <action android:name=\"android.intent.action.MAIN\"/>\n <category android:name=\"android.intent.category.LAUNCHER\"/>\n </intent-filter>\n </activity>\n <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\"/>\n </application>\n </manifest>\n `) as Promise<AndroidManifest>;\n}\n\nexport function sortAndroidManifest(obj: AndroidManifest) {\n if (obj.manifest) {\n // Reverse sort so application is last and permissions are first\n obj.manifest = sortObject(obj.manifest, reverseSortString);\n\n if (Array.isArray(obj.manifest['uses-permission'])) {\n // Sort permissions alphabetically\n obj.manifest['uses-permission'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n\n if (Array.isArray(obj.manifest.application)) {\n // reverse sort applications so activity is towards the end and meta-data is towards the front.\n obj.manifest.application = obj.manifest.application.map((application) => {\n application = sortObjWithOrder(application, ['meta-data', 'service', 'activity']);\n\n if (Array.isArray(application['meta-data'])) {\n // Sort metadata alphabetically\n application['meta-data'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n return application;\n });\n }\n }\n return obj;\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n manifest: provider<Manifest.AndroidManifest>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'app/src/main/AndroidManifest.xml');\n },\n async read(filePath, config) {\n try {\n return await Manifest.readAndroidManifestAsync(filePath);\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return await getAndroidManifestTemplate(config);\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await Manifest.writeAndroidManifestAsync(filePath, sortAndroidManifest(modResults));\n },\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n gradleProperties: provider<Properties.PropertiesItem[]>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'gradle.properties');\n },\n async read(filePath, config) {\n try {\n return await Properties.parsePropertiesFile(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return [];\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeFile(filePath, Properties.propertiesListToString(modResults));\n },\n }),\n\n // Append a rule to supply strings.xml data to mods on `mods.android.strings`\n strings: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Strings.getProjectStringsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colors: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colorsNight: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot, { kind: 'values-night' });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n styles: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Styles.getProjectStylesXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n let styles: Resources.ResourceXML = { resources: {} };\n\n try {\n // Adds support for `tools:x`\n styles = await Resources.readResourcesXMLAsync({\n path: filePath,\n fallback: `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`,\n });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n\n // Ensure support for tools is added...\n if (!styles.resources.$) {\n styles.resources.$ = {};\n }\n if (!styles.resources.$?.['xmlns:tools']) {\n styles.resources.$['xmlns:tools'] = 'http://schemas.android.com/tools';\n }\n return styles;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n projectBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n settingsGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getSettingsGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n appBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainActivity: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainActivity');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainApplication: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainApplication');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n};\n\ntype AndroidDefaultProviders = typeof defaultProviders;\n\nexport function withAndroidBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<AndroidDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<AndroidModName>(config, {\n ...props,\n platform: 'android',\n providers: providers ?? getAndroidModFileProviders(),\n });\n}\n\nexport function getAndroidModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withIosBaseMods.js","names":["_jsonFile","data","_interopRequireDefault","require","_plist","_assert","_fs","_interopRequireWildcard","_path","_xcode","_createBaseMod","_ios","_Entitlements","_Xcodeproj","_getInfoPlistPath","_modules","_sortObject","_warnings","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","CADisableMinimumFrameDurationOnPhone","defaultProviders","dangerous","provider","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","sortObject","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","getPbxproj","infoPlistBuildProperty","getInfoPlistPathFromPbxproj","infoPlistPath","fileExists","addWarningIOS","getInfoPlistPath","ios","assert","entitlements","_Entitlements$getEnti","ensureApplicationTargetEntitlementsFileConfigured","Entitlements","getEntitlementsPath","ignoreExistingNativeFiles","fs","existsSync","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","withGeneratedBaseMods","platform","getIosModFileProviders"],"sources":["../../src/plugins/withIosBaseMods.ts"],"sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n CADisableMinimumFrameDurationOnPhone: true,\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n // TODO: Get application AppDelegate file from pbxproj.\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n if (!config.modRequest.ignoreExistingNativeFiles && fs.existsSync(filePath)) {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } else {\n modResults = getEntitlementsPlistTemplate();\n }\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"withIosBaseMods.js","names":["_jsonFile","data","_interopRequireDefault","require","_plist","_assert","_fs","_interopRequireWildcard","_path","_xcode","_createBaseMod","_ios","_Entitlements","_Xcodeproj","_getInfoPlistPath","_modules","_sortObject","_warnings","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","CADisableMinimumFrameDurationOnPhone","defaultProviders","dangerous","provider","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","sortObject","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","getPbxproj","infoPlistBuildProperty","getInfoPlistPathFromPbxproj","infoPlistPath","fileExists","addWarningIOS","getInfoPlistPath","ios","assert","entitlements","_Entitlements$getEnti","ensureApplicationTargetEntitlementsFileConfigured","Entitlements","getEntitlementsPath","ignoreExistingNativeFiles","fs","existsSync","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","withGeneratedBaseMods","platform","getIosModFileProviders"],"sources":["../../src/plugins/withIosBaseMods.ts"],"sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n CADisableMinimumFrameDurationOnPhone: true,\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n // TODO: Get application AppDelegate file from pbxproj.\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n if (!config.modRequest.ignoreExistingNativeFiles && fs.existsSync(filePath)) {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } else {\n modResults = getEntitlementsPlistTemplate();\n }\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withMod.js","names":["_chalk","data","_interopRequireDefault","require","_getenv","_errors","obj","__esModule","default","EXPO_DEBUG","boolish","withBaseMod","config","platform","mod","action","skipEmptyMod","isProvider","isIntrospective","saveToInternal","_config$_internal$isD","_config$_internal","mods","interceptedMod","noopMod","debugTrace","isDebug","_internal","stack","Error","getDebugPluginStackFromStackTrace","modStack","chalk","bold","PluginError","interceptingMod","modRequest","console","log","results","nextMod","saveToInternalObject","modResults","platformName","modName","stacktrace","treeStackLines","line","split","first","second","trim","push","plugins","map","_ref","_first$match$1$trim","_first$match","_first$match$","_first$match2","_first$match2$","match","filter","Boolean","plugin","includes","commonPlugins","reverse","pluginName","index","toLowerCase","red","blue","dim","join","withMod"],"sources":["../../src/plugins/withMod.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport chalk from 'chalk';\nimport { boolish } from 'getenv';\n\nimport { ExportedConfig, ExportedConfigWithProps, Mod, ModPlatform } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\nexport type BaseModOptions = {\n /** Officially supports `'ios' | 'android'` (`ModPlatform`). Arbitrary strings are supported for adding out-of-tree platforms. */\n platform: ModPlatform & string;\n mod: string;\n isProvider?: boolean;\n skipEmptyMod?: boolean;\n saveToInternal?: boolean;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\n/**\n * Plugin to intercept execution of a given `mod` with the given `action`.\n * If an action was already set on the given `config` config for `mod`, then it\n * will be provided to the `action` as `nextMod` when it's evaluated, otherwise\n * `nextMod` will be an identity function.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to intercept\n * @param skipEmptyMod should skip running the action if there is no existing mod to intercept\n * @param saveToInternal should save the results to `_internal.modResults`, only enable this when the results are pure JSON.\n * @param isProvider should provide data up to the other mods.\n * @param action method to run on the mod when the config is compiled\n */\nexport function withBaseMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n skipEmptyMod,\n isProvider,\n isIntrospective,\n saveToInternal,\n }: BaseModOptions & { action: Mod<T> }\n): ExportedConfig {\n if (!config.mods) {\n config.mods = {};\n }\n if (!config.mods[platform]) {\n config.mods[platform] = {};\n }\n\n let interceptedMod: Mod<T> = (config.mods[platform] as Record<string, any>)[mod];\n\n // No existing mod to intercept\n if (!interceptedMod) {\n if (skipEmptyMod) {\n // Skip running the action\n return config;\n }\n // Use a noop mod and continue\n const noopMod: Mod<T> = (config) => config;\n interceptedMod = noopMod;\n }\n\n // Create a stack trace for debugging ahead of time\n let debugTrace: string = '';\n // Use the possibly user defined value. Otherwise fallback to the env variable.\n // We support the env variable because user mods won't have _internal defined in time.\n const isDebug = config._internal?.isDebug ?? EXPO_DEBUG;\n if (isDebug) {\n // Get a stack trace via the Error API\n const stack = new Error().stack;\n // Format the stack trace to create the debug log\n debugTrace = getDebugPluginStackFromStackTrace(stack);\n const modStack = chalk.bold(`${platform}.${mod}`);\n\n debugTrace = `${modStack}: ${debugTrace}`;\n }\n\n // Prevent adding multiple providers to a mod.\n // Base mods that provide files ignore any incoming modResults and therefore shouldn't have provider mods as parents.\n if (interceptedMod.isProvider) {\n if (isProvider) {\n throw new PluginError(\n `Cannot set provider mod for \"${platform}.${mod}\" because another is already being used.`,\n 'CONFLICTING_PROVIDER'\n );\n } else {\n throw new PluginError(\n `Cannot add mod to \"${platform}.${mod}\" because the provider has already been added. Provider must be the last mod added.`,\n 'INVALID_MOD_ORDER'\n );\n }\n }\n\n async function interceptingMod({ modRequest, ...config }: ExportedConfigWithProps<T>) {\n if (isDebug) {\n // In debug mod, log the plugin stack in the order which they were invoked\n console.log(debugTrace);\n }\n const results = await action({\n ...config,\n modRequest: { ...modRequest, nextMod: interceptedMod },\n });\n\n if (saveToInternal) {\n saveToInternalObject(results, platform, mod, results.modResults as unknown as JSONObject);\n }\n return results;\n }\n\n // Ensure this base mod is registered as the provider.\n interceptingMod.isProvider = isProvider;\n\n if (isIntrospective) {\n // Register the mode as idempotent so introspection doesn't remove it.\n interceptingMod.isIntrospective = isIntrospective;\n }\n\n (config.mods[platform] as any)[mod] = interceptingMod;\n\n return config;\n}\n\nfunction saveToInternalObject(\n config: Pick<ExpoConfig, '_internal'>,\n platformName: ModPlatform,\n modName: string,\n results: JSONObject\n) {\n if (!config._internal) config._internal = {};\n if (!config._internal.modResults) config._internal.modResults = {};\n if (!config._internal.modResults[platformName]) config._internal.modResults[platformName] = {};\n config._internal.modResults[platformName][modName] = results;\n}\n\nfunction getDebugPluginStackFromStackTrace(stacktrace?: string): string {\n if (!stacktrace) {\n return '';\n }\n\n const treeStackLines: string[] = [];\n for (const line of stacktrace.split('\\n')) {\n const [first, second] = line.trim().split(' ');\n if (first === 'at') {\n treeStackLines.push(second);\n }\n }\n\n const plugins = treeStackLines\n .map((first) => {\n // Match the first part of the stack trace against the plugin naming convention\n // \"with\" followed by a capital letter.\n return (\n first?.match(/^(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n first?.match(/\\.(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n null\n );\n })\n .filter(Boolean)\n .filter((plugin) => {\n // redundant as all debug logs are captured in withBaseMod\n return !['withMod', 'withBaseMod', 'withExtendedMod'].includes(plugin!);\n });\n\n const commonPlugins = ['withPlugins', 'withRunOnce', 'withStaticPlugin'];\n\n return (\n (plugins as string[])\n .reverse()\n .map((pluginName, index) => {\n // Base mods indicate a logical section.\n if (pluginName.includes('BaseMod')) {\n pluginName = chalk.bold(pluginName);\n }\n // highlight dangerous mods\n if (pluginName.toLowerCase().includes('dangerous')) {\n pluginName = chalk.red(pluginName);\n }\n\n if (index === 0) {\n return chalk.blue(pluginName);\n } else if (commonPlugins.includes(pluginName)) {\n // Common mod names often clutter up the logs, dim them out\n return chalk.dim(pluginName);\n }\n return pluginName;\n })\n // Join the results:\n // withAndroidExpoPlugins ➜ withPlugins ➜ withIcons ➜ withDangerousMod ➜ withMod\n .join(' ➜ ')\n );\n}\n\n/**\n * Plugin to extend a mod function in the plugins config.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to extend\n * @param action method to run on the mod when the config is compiled\n */\nexport function withMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n }: {\n platform: ModPlatform;\n mod: string;\n action: Mod<T>;\n }\n): ExportedConfig {\n return withBaseMod(config, {\n platform,\n mod,\n isProvider: false,\n async action({ modRequest: { nextMod, ...modRequest }, modResults, ...config }) {\n const results = await action({ modRequest, modResults: modResults as T, ...config });\n return nextMod!(results as any);\n },\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"withMod.js","names":["_chalk","data","_interopRequireDefault","require","_getenv","_errors","obj","__esModule","default","EXPO_DEBUG","boolish","withBaseMod","config","platform","mod","action","skipEmptyMod","isProvider","isIntrospective","saveToInternal","_config$_internal$isD","_config$_internal","mods","interceptedMod","noopMod","debugTrace","isDebug","_internal","stack","Error","getDebugPluginStackFromStackTrace","modStack","chalk","bold","PluginError","interceptingMod","modRequest","console","log","results","nextMod","saveToInternalObject","modResults","platformName","modName","stacktrace","treeStackLines","line","split","first","second","trim","push","plugins","map","_ref","_first$match$1$trim","_first$match","_first$match$","_first$match2","_first$match2$","match","filter","Boolean","plugin","includes","commonPlugins","reverse","pluginName","index","toLowerCase","red","blue","dim","join","withMod"],"sources":["../../src/plugins/withMod.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport chalk from 'chalk';\nimport { boolish } from 'getenv';\n\nimport { ExportedConfig, ExportedConfigWithProps, Mod, ModPlatform } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\nexport type BaseModOptions = {\n /** Officially supports `'ios' | 'android'` (`ModPlatform`). Arbitrary strings are supported for adding out-of-tree platforms. */\n platform: ModPlatform & string;\n mod: string;\n isProvider?: boolean;\n skipEmptyMod?: boolean;\n saveToInternal?: boolean;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\n/**\n * Plugin to intercept execution of a given `mod` with the given `action`.\n * If an action was already set on the given `config` config for `mod`, then it\n * will be provided to the `action` as `nextMod` when it's evaluated, otherwise\n * `nextMod` will be an identity function.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to intercept\n * @param skipEmptyMod should skip running the action if there is no existing mod to intercept\n * @param saveToInternal should save the results to `_internal.modResults`, only enable this when the results are pure JSON.\n * @param isProvider should provide data up to the other mods.\n * @param action method to run on the mod when the config is compiled\n */\nexport function withBaseMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n skipEmptyMod,\n isProvider,\n isIntrospective,\n saveToInternal,\n }: BaseModOptions & { action: Mod<T> }\n): ExportedConfig {\n if (!config.mods) {\n config.mods = {};\n }\n if (!config.mods[platform]) {\n config.mods[platform] = {};\n }\n\n let interceptedMod: Mod<T> = (config.mods[platform] as Record<string, any>)[mod];\n\n // No existing mod to intercept\n if (!interceptedMod) {\n if (skipEmptyMod) {\n // Skip running the action\n return config;\n }\n // Use a noop mod and continue\n const noopMod: Mod<T> = (config) => config;\n interceptedMod = noopMod;\n }\n\n // Create a stack trace for debugging ahead of time\n let debugTrace: string = '';\n // Use the possibly user defined value. Otherwise fallback to the env variable.\n // We support the env variable because user mods won't have _internal defined in time.\n const isDebug = config._internal?.isDebug ?? EXPO_DEBUG;\n if (isDebug) {\n // Get a stack trace via the Error API\n const stack = new Error().stack;\n // Format the stack trace to create the debug log\n debugTrace = getDebugPluginStackFromStackTrace(stack);\n const modStack = chalk.bold(`${platform}.${mod}`);\n\n debugTrace = `${modStack}: ${debugTrace}`;\n }\n\n // Prevent adding multiple providers to a mod.\n // Base mods that provide files ignore any incoming modResults and therefore shouldn't have provider mods as parents.\n if (interceptedMod.isProvider) {\n if (isProvider) {\n throw new PluginError(\n `Cannot set provider mod for \"${platform}.${mod}\" because another is already being used.`,\n 'CONFLICTING_PROVIDER'\n );\n } else {\n throw new PluginError(\n `Cannot add mod to \"${platform}.${mod}\" because the provider has already been added. Provider must be the last mod added.`,\n 'INVALID_MOD_ORDER'\n );\n }\n }\n\n async function interceptingMod({ modRequest, ...config }: ExportedConfigWithProps<T>) {\n if (isDebug) {\n // In debug mod, log the plugin stack in the order which they were invoked\n console.log(debugTrace);\n }\n const results = await action({\n ...config,\n modRequest: { ...modRequest, nextMod: interceptedMod },\n });\n\n if (saveToInternal) {\n saveToInternalObject(results, platform, mod, results.modResults as unknown as JSONObject);\n }\n return results;\n }\n\n // Ensure this base mod is registered as the provider.\n interceptingMod.isProvider = isProvider;\n\n if (isIntrospective) {\n // Register the mode as idempotent so introspection doesn't remove it.\n interceptingMod.isIntrospective = isIntrospective;\n }\n\n (config.mods[platform] as any)[mod] = interceptingMod;\n\n return config;\n}\n\nfunction saveToInternalObject(\n config: Pick<ExpoConfig, '_internal'>,\n platformName: ModPlatform,\n modName: string,\n results: JSONObject\n) {\n if (!config._internal) config._internal = {};\n if (!config._internal.modResults) config._internal.modResults = {};\n if (!config._internal.modResults[platformName]) config._internal.modResults[platformName] = {};\n config._internal.modResults[platformName][modName] = results;\n}\n\nfunction getDebugPluginStackFromStackTrace(stacktrace?: string): string {\n if (!stacktrace) {\n return '';\n }\n\n const treeStackLines: string[] = [];\n for (const line of stacktrace.split('\\n')) {\n const [first, second] = line.trim().split(' ');\n if (first === 'at') {\n treeStackLines.push(second);\n }\n }\n\n const plugins = treeStackLines\n .map((first) => {\n // Match the first part of the stack trace against the plugin naming convention\n // \"with\" followed by a capital letter.\n return (\n first?.match(/^(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n first?.match(/\\.(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n null\n );\n })\n .filter(Boolean)\n .filter((plugin) => {\n // redundant as all debug logs are captured in withBaseMod\n return !['withMod', 'withBaseMod', 'withExtendedMod'].includes(plugin!);\n });\n\n const commonPlugins = ['withPlugins', 'withRunOnce', 'withStaticPlugin'];\n\n return (\n (plugins as string[])\n .reverse()\n .map((pluginName, index) => {\n // Base mods indicate a logical section.\n if (pluginName.includes('BaseMod')) {\n pluginName = chalk.bold(pluginName);\n }\n // highlight dangerous mods\n if (pluginName.toLowerCase().includes('dangerous')) {\n pluginName = chalk.red(pluginName);\n }\n\n if (index === 0) {\n return chalk.blue(pluginName);\n } else if (commonPlugins.includes(pluginName)) {\n // Common mod names often clutter up the logs, dim them out\n return chalk.dim(pluginName);\n }\n return pluginName;\n })\n // Join the results:\n // withAndroidExpoPlugins ➜ withPlugins ➜ withIcons ➜ withDangerousMod ➜ withMod\n .join(' ➜ ')\n );\n}\n\n/**\n * Plugin to extend a mod function in the plugins config.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to extend\n * @param action method to run on the mod when the config is compiled\n */\nexport function withMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n }: {\n platform: ModPlatform;\n mod: string;\n action: Mod<T>;\n }\n): ExportedConfig {\n return withBaseMod(config, {\n platform,\n mod,\n isProvider: false,\n async action({ modRequest: { nextMod, ...modRequest }, modResults, ...config }) {\n const results = await action({ modRequest, modResults: modResults as T, ...config });\n return nextMod!(results as any);\n },\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withPlugins.js","names":["_assert","data","_interopRequireDefault","require","_withStaticPlugin","obj","__esModule","default","withPlugins","config","plugins","assert","Array","isArray","reduce","prev","plugin","withStaticPlugin","exports"],"sources":["../../src/plugins/withPlugins.ts"],"sourcesContent":["import assert from 'assert';\n\nimport { withStaticPlugin } from './withStaticPlugin';\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\n\n/**\n * Resolves a list of plugins.\n *\n * @param config exported config\n * @param plugins list of config config plugins to apply to the exported config\n */\nexport const withPlugins: ConfigPlugin<(StaticPlugin | ConfigPlugin | string)[]> = (\n config,\n plugins\n) => {\n assert(\n Array.isArray(plugins),\n 'withPlugins expected a valid array of plugins or plugin module paths'\n );\n return plugins.reduce((prev, plugin) => withStaticPlugin(prev, { plugin }), config);\n};\n"],"mappings":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,kBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,iBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,WAAmE,GAAGA,CACjFC,MAAM,EACNC,OAAO,KACJ;EACH,IAAAC,iBAAM,EACJC,KAAK,CAACC,OAAO,CAACH,OAAO,CAAC,EACtB,sEAAsE,CACvE;EACD,OAAOA,OAAO,CAACI,MAAM,CAAC,CAACC,IAAI,EAAEC,MAAM,KAAK,IAAAC,oCAAgB,EAACF,IAAI,EAAE;IAAEC;EAAO,CAAC,CAAC,EAAEP,MAAM,CAAC;AACrF,CAAC;AAACS,OAAA,CAAAV,WAAA,GAAAA,WAAA"}
1
+ {"version":3,"file":"withPlugins.js","names":["_assert","data","_interopRequireDefault","require","_withStaticPlugin","obj","__esModule","default","withPlugins","config","plugins","assert","Array","isArray","reduce","prev","plugin","withStaticPlugin","exports"],"sources":["../../src/plugins/withPlugins.ts"],"sourcesContent":["import assert from 'assert';\n\nimport { withStaticPlugin } from './withStaticPlugin';\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\n\n/**\n * Resolves a list of plugins.\n *\n * @param config exported config\n * @param plugins list of config config plugins to apply to the exported config\n */\nexport const withPlugins: ConfigPlugin<(StaticPlugin | ConfigPlugin | string)[]> = (\n config,\n plugins\n) => {\n assert(\n Array.isArray(plugins),\n 'withPlugins expected a valid array of plugins or plugin module paths'\n );\n return plugins.reduce((prev, plugin) => withStaticPlugin(prev, { plugin }), config);\n};\n"],"mappings":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,kBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,iBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,WAAmE,GAAGA,CACjFC,MAAM,EACNC,OAAO,KACJ;EACH,IAAAC,iBAAM,EACJC,KAAK,CAACC,OAAO,CAACH,OAAO,CAAC,EACtB,sEACF,CAAC;EACD,OAAOA,OAAO,CAACI,MAAM,CAAC,CAACC,IAAI,EAAEC,MAAM,KAAK,IAAAC,oCAAgB,EAACF,IAAI,EAAE;IAAEC;EAAO,CAAC,CAAC,EAAEP,MAAM,CAAC;AACrF,CAAC;AAACS,OAAA,CAAAV,WAAA,GAAAA,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"withStaticPlugin.js","names":["_assert","data","_interopRequireDefault","require","_getenv","_errors","_pluginResolver","obj","__esModule","default","EXPO_DEBUG","boolish","EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS","EXPO_USE_UNVERSIONED_PLUGINS","isModuleMissingError","name","error","includes","code","message","isUnexpectedTokenError","SyntaxError","PluginError","match","withStaticPlugin","config","props","_pluginProps","projectRoot","_config$_internal","_internal","assertInternalProjectRoot","pluginResolve","pluginProps","normalizeStaticPlugin","plugin","assert","_resolverError","withPlugin","resolveConfigPluginFunction","_isLegacyPlugin","fallback","console","log","shouldMuteWarning","exports"],"sources":["../../src/plugins/withStaticPlugin.ts"],"sourcesContent":["import assert from 'assert';\nimport { boolish } from 'getenv';\n\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\nimport {\n assertInternalProjectRoot,\n normalizeStaticPlugin,\n resolveConfigPluginFunction,\n} from '../utils/plugin-resolver';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\n// Show all error info related to plugin resolution.\nconst EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS = boolish('EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS', false);\n// Force using the fallback unversioned plugin instead of a local versioned copy,\n// this should only be used for testing the CLI.\nconst EXPO_USE_UNVERSIONED_PLUGINS = boolish('EXPO_USE_UNVERSIONED_PLUGINS', false);\n\nfunction isModuleMissingError(name: string, error: Error): boolean {\n // @ts-ignore\n if (['MODULE_NOT_FOUND', 'PLUGIN_NOT_FOUND'].includes(error.code)) {\n return true;\n }\n return error.message.includes(`Cannot find module '${name}'`);\n}\n\nfunction isUnexpectedTokenError(error: Error): boolean {\n if (\n error instanceof SyntaxError ||\n (error instanceof PluginError && error.code === 'INVALID_PLUGIN_IMPORT')\n ) {\n return (\n // These are the most common errors that'll be thrown when a package isn't transpiled correctly.\n !!error.message.match(/Unexpected token/) ||\n !!error.message.match(/Cannot use import statement/)\n );\n }\n return false;\n}\n\n/**\n * Resolves static module plugin and potentially falls back on a provided plugin if the module cannot be resolved\n *\n * @param config\n * @param fallback Plugin with `_resolverError` explaining why the module couldn't be used\n * @param projectRoot optional project root, fallback to _internal.projectRoot. Used for testing.\n * @param _isLegacyPlugin Used to suppress errors thrown by plugins that are applied automatically\n */\nexport const withStaticPlugin: ConfigPlugin<{\n plugin: StaticPlugin | ConfigPlugin | string;\n fallback?: ConfigPlugin<{ _resolverError: Error } & any>;\n projectRoot?: string;\n _isLegacyPlugin?: boolean;\n}> = (config, props) => {\n let projectRoot = props.projectRoot;\n if (!projectRoot) {\n projectRoot = config._internal?.projectRoot;\n assertInternalProjectRoot(projectRoot);\n }\n\n let [pluginResolve, pluginProps] = normalizeStaticPlugin(props.plugin);\n // Ensure no one uses this property by accident.\n assert(\n !pluginProps?._resolverError,\n `Plugin property '_resolverError' is a reserved property of \\`withStaticPlugin\\``\n );\n\n let withPlugin: ConfigPlugin<unknown>;\n\n if (\n // Function was provided, no need to resolve: [withPlugin, {}]\n typeof pluginResolve === 'function'\n ) {\n withPlugin = pluginResolve;\n } else if (typeof pluginResolve === 'string') {\n try {\n // Resolve and evaluate plugins.\n withPlugin = resolveConfigPluginFunction(projectRoot, pluginResolve);\n\n // Only force if the project has the versioned plugin, otherwise use default behavior.\n // This helps see which plugins are being skipped.\n if (\n EXPO_USE_UNVERSIONED_PLUGINS &&\n !!withPlugin &&\n !!props._isLegacyPlugin &&\n !!props.fallback\n ) {\n console.log(`Force \"${pluginResolve}\" to unversioned plugin`);\n withPlugin = props.fallback;\n }\n } catch (error: any) {\n if (EXPO_DEBUG) {\n if (EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS) {\n // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n console.log(`Error resolving plugin \"${pluginResolve}\"`);\n console.log(error);\n console.log();\n } else {\n const shouldMuteWarning =\n props._isLegacyPlugin &&\n (isModuleMissingError(pluginResolve, error) || isUnexpectedTokenError(error));\n if (!shouldMuteWarning) {\n if (isModuleMissingError(pluginResolve, error)) {\n // Prevent causing log spew for basic resolution errors.\n console.log(`Could not find plugin \"${pluginResolve}\"`);\n } else {\n // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n console.log(`Error resolving plugin \"${pluginResolve}\"`);\n console.log(error);\n console.log();\n }\n }\n }\n }\n // TODO: Maybe allow for `PluginError`s to be thrown so external plugins can assert invalid options.\n\n // If the static module failed to resolve, attempt to use a fallback.\n // This enables support for built-in plugins with versioned variations living in other packages.\n if (props.fallback) {\n if (!pluginProps) pluginProps = {};\n // Pass this to the fallback plugin for potential warnings about needing to install a versioned package.\n pluginProps._resolverError = error;\n withPlugin = props.fallback;\n } else {\n // If no fallback, throw the resolution error.\n throw error;\n }\n }\n } else {\n throw new PluginError(\n `Plugin is an unexpected type: ${typeof pluginResolve}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n\n // Execute the plugin.\n config = withPlugin(config, pluginProps);\n return config;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"withStaticPlugin.js","names":["_assert","data","_interopRequireDefault","require","_getenv","_errors","_pluginResolver","obj","__esModule","default","EXPO_DEBUG","boolish","EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS","EXPO_USE_UNVERSIONED_PLUGINS","isModuleMissingError","name","error","includes","code","message","isUnexpectedTokenError","SyntaxError","PluginError","match","withStaticPlugin","config","props","_pluginProps","projectRoot","_config$_internal","_internal","assertInternalProjectRoot","pluginResolve","pluginProps","normalizeStaticPlugin","plugin","assert","_resolverError","withPlugin","resolveConfigPluginFunction","_isLegacyPlugin","fallback","console","log","shouldMuteWarning","exports"],"sources":["../../src/plugins/withStaticPlugin.ts"],"sourcesContent":["import assert from 'assert';\nimport { boolish } from 'getenv';\n\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\nimport {\n assertInternalProjectRoot,\n normalizeStaticPlugin,\n resolveConfigPluginFunction,\n} from '../utils/plugin-resolver';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\n// Show all error info related to plugin resolution.\nconst EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS = boolish('EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS', false);\n// Force using the fallback unversioned plugin instead of a local versioned copy,\n// this should only be used for testing the CLI.\nconst EXPO_USE_UNVERSIONED_PLUGINS = boolish('EXPO_USE_UNVERSIONED_PLUGINS', false);\n\nfunction isModuleMissingError(name: string, error: Error): boolean {\n // @ts-ignore\n if (['MODULE_NOT_FOUND', 'PLUGIN_NOT_FOUND'].includes(error.code)) {\n return true;\n }\n return error.message.includes(`Cannot find module '${name}'`);\n}\n\nfunction isUnexpectedTokenError(error: Error): boolean {\n if (\n error instanceof SyntaxError ||\n (error instanceof PluginError && error.code === 'INVALID_PLUGIN_IMPORT')\n ) {\n return (\n // These are the most common errors that'll be thrown when a package isn't transpiled correctly.\n !!error.message.match(/Unexpected token/) ||\n !!error.message.match(/Cannot use import statement/)\n );\n }\n return false;\n}\n\n/**\n * Resolves static module plugin and potentially falls back on a provided plugin if the module cannot be resolved\n *\n * @param config\n * @param fallback Plugin with `_resolverError` explaining why the module couldn't be used\n * @param projectRoot optional project root, fallback to _internal.projectRoot. Used for testing.\n * @param _isLegacyPlugin Used to suppress errors thrown by plugins that are applied automatically\n */\nexport const withStaticPlugin: ConfigPlugin<{\n plugin: StaticPlugin | ConfigPlugin | string;\n fallback?: ConfigPlugin<{ _resolverError: Error } & any>;\n projectRoot?: string;\n _isLegacyPlugin?: boolean;\n}> = (config, props) => {\n let projectRoot = props.projectRoot;\n if (!projectRoot) {\n projectRoot = config._internal?.projectRoot;\n assertInternalProjectRoot(projectRoot);\n }\n\n let [pluginResolve, pluginProps] = normalizeStaticPlugin(props.plugin);\n // Ensure no one uses this property by accident.\n assert(\n !pluginProps?._resolverError,\n `Plugin property '_resolverError' is a reserved property of \\`withStaticPlugin\\``\n );\n\n let withPlugin: ConfigPlugin<unknown>;\n\n if (\n // Function was provided, no need to resolve: [withPlugin, {}]\n typeof pluginResolve === 'function'\n ) {\n withPlugin = pluginResolve;\n } else if (typeof pluginResolve === 'string') {\n try {\n // Resolve and evaluate plugins.\n withPlugin = resolveConfigPluginFunction(projectRoot, pluginResolve);\n\n // Only force if the project has the versioned plugin, otherwise use default behavior.\n // This helps see which plugins are being skipped.\n if (\n EXPO_USE_UNVERSIONED_PLUGINS &&\n !!withPlugin &&\n !!props._isLegacyPlugin &&\n !!props.fallback\n ) {\n console.log(`Force \"${pluginResolve}\" to unversioned plugin`);\n withPlugin = props.fallback;\n }\n } catch (error: any) {\n if (EXPO_DEBUG) {\n if (EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS) {\n // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n console.log(`Error resolving plugin \"${pluginResolve}\"`);\n console.log(error);\n console.log();\n } else {\n const shouldMuteWarning =\n props._isLegacyPlugin &&\n (isModuleMissingError(pluginResolve, error) || isUnexpectedTokenError(error));\n if (!shouldMuteWarning) {\n if (isModuleMissingError(pluginResolve, error)) {\n // Prevent causing log spew for basic resolution errors.\n console.log(`Could not find plugin \"${pluginResolve}\"`);\n } else {\n // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n console.log(`Error resolving plugin \"${pluginResolve}\"`);\n console.log(error);\n console.log();\n }\n }\n }\n }\n // TODO: Maybe allow for `PluginError`s to be thrown so external plugins can assert invalid options.\n\n // If the static module failed to resolve, attempt to use a fallback.\n // This enables support for built-in plugins with versioned variations living in other packages.\n if (props.fallback) {\n if (!pluginProps) pluginProps = {};\n // Pass this to the fallback plugin for potential warnings about needing to install a versioned package.\n pluginProps._resolverError = error;\n withPlugin = props.fallback;\n } else {\n // If no fallback, throw the resolution error.\n throw error;\n }\n }\n } else {\n throw new PluginError(\n `Plugin is an unexpected type: ${typeof pluginResolve}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n\n // Execute the plugin.\n config = withPlugin(config, pluginProps);\n return config;\n};\n"],"mappings":"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"}