@expo/config-plugins 7.9.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/build/android/AllowBackup.js +4 -6
  2. package/build/android/AllowBackup.js.map +1 -1
  3. package/build/android/BuildProperties.js +4 -8
  4. package/build/android/BuildProperties.js.map +1 -1
  5. package/build/android/Colors.js +3 -6
  6. package/build/android/Colors.js.map +1 -1
  7. package/build/android/EasBuild.js +2 -2
  8. package/build/android/EasBuild.js.map +1 -1
  9. package/build/android/EasBuildGradleScript.js +1 -2
  10. package/build/android/EasBuildGradleScript.js.map +1 -1
  11. package/build/android/GoogleMapsApiKey.js +2 -4
  12. package/build/android/GoogleMapsApiKey.js.map +1 -1
  13. package/build/android/GoogleServices.js +1 -2
  14. package/build/android/GoogleServices.js.map +1 -1
  15. package/build/android/IntentFilters.js +6 -12
  16. package/build/android/IntentFilters.js.map +1 -1
  17. package/build/android/Manifest.d.ts +1 -0
  18. package/build/android/Manifest.js +13 -22
  19. package/build/android/Manifest.js.map +1 -1
  20. package/build/android/Name.js +2 -4
  21. package/build/android/Name.js.map +1 -1
  22. package/build/android/Orientation.js +2 -4
  23. package/build/android/Orientation.js.map +1 -1
  24. package/build/android/Package.js +2 -4
  25. package/build/android/Package.js.map +1 -1
  26. package/build/android/Paths.js +2 -2
  27. package/build/android/Paths.js.map +1 -1
  28. package/build/android/Permissions.js +4 -8
  29. package/build/android/Permissions.js.map +1 -1
  30. package/build/android/PrimaryColor.js +1 -2
  31. package/build/android/PrimaryColor.js.map +1 -1
  32. package/build/android/Resources.js +8 -6
  33. package/build/android/Resources.js.map +1 -1
  34. package/build/android/Scheme.js +17 -40
  35. package/build/android/Scheme.js.map +1 -1
  36. package/build/android/StatusBar.js +3 -6
  37. package/build/android/StatusBar.js.map +1 -1
  38. package/build/android/Strings.js +2 -4
  39. package/build/android/Strings.js.map +1 -1
  40. package/build/android/Styles.js +3 -4
  41. package/build/android/Styles.js.map +1 -1
  42. package/build/android/Updates.d.ts +0 -8
  43. package/build/android/Updates.js +6 -91
  44. package/build/android/Updates.js.map +1 -1
  45. package/build/android/Version.js +3 -6
  46. package/build/android/Version.js.map +1 -1
  47. package/build/android/WindowSoftInputMode.js +2 -3
  48. package/build/android/WindowSoftInputMode.js.map +1 -1
  49. package/build/android/index.js +2 -2
  50. package/build/android/index.js.map +1 -1
  51. package/build/index.js +3 -4
  52. package/build/index.js.map +1 -1
  53. package/build/ios/Bitcode.js +1 -2
  54. package/build/ios/Bitcode.js.map +1 -1
  55. package/build/ios/BuildProperties.js +4 -8
  56. package/build/ios/BuildProperties.js.map +1 -1
  57. package/build/ios/BuildScheme.js +7 -12
  58. package/build/ios/BuildScheme.js.map +1 -1
  59. package/build/ios/BundleIdentifier.js +3 -5
  60. package/build/ios/BundleIdentifier.js.map +1 -1
  61. package/build/ios/DeviceFamily.js +5 -8
  62. package/build/ios/DeviceFamily.js.map +1 -1
  63. package/build/ios/Entitlements.js +3 -6
  64. package/build/ios/Entitlements.js.map +1 -1
  65. package/build/ios/Google.js +2 -4
  66. package/build/ios/Google.js.map +1 -1
  67. package/build/ios/IosConfig.types.d.ts +3 -1
  68. package/build/ios/IosConfig.types.js.map +1 -1
  69. package/build/ios/Locales.js +3 -4
  70. package/build/ios/Locales.js.map +1 -1
  71. package/build/ios/Maps.js +2 -4
  72. package/build/ios/Maps.js.map +1 -1
  73. package/build/ios/Name.js +3 -6
  74. package/build/ios/Name.js.map +1 -1
  75. package/build/ios/Orientation.js +4 -8
  76. package/build/ios/Orientation.js.map +1 -1
  77. package/build/ios/Paths.js +2 -2
  78. package/build/ios/Paths.js.map +1 -1
  79. package/build/ios/PrivacyInfo.js +7 -11
  80. package/build/ios/PrivacyInfo.js.map +1 -1
  81. package/build/ios/RequiresFullScreen.js +2 -4
  82. package/build/ios/RequiresFullScreen.js.map +1 -1
  83. package/build/ios/Scheme.js +6 -9
  84. package/build/ios/Scheme.js.map +1 -1
  85. package/build/ios/Swift.js +2 -2
  86. package/build/ios/Swift.js.map +1 -1
  87. package/build/ios/Target.js +4 -5
  88. package/build/ios/Target.js.map +1 -1
  89. package/build/ios/Updates.d.ts +0 -16
  90. package/build/ios/Updates.js +6 -95
  91. package/build/ios/Updates.js.map +1 -1
  92. package/build/ios/UsesNonExemptEncryption.js +2 -4
  93. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  94. package/build/ios/Version.js +3 -6
  95. package/build/ios/Version.js.map +1 -1
  96. package/build/ios/codeMod.js +1 -2
  97. package/build/ios/codeMod.js.map +1 -1
  98. package/build/ios/index.js +2 -2
  99. package/build/ios/index.js.map +1 -1
  100. package/build/ios/utils/Xcodeproj.js +15 -21
  101. package/build/ios/utils/Xcodeproj.js.map +1 -1
  102. package/build/ios/utils/getInfoPlistPath.js +1 -2
  103. package/build/ios/utils/getInfoPlistPath.js.map +1 -1
  104. package/build/plugins/createBaseMod.js +3 -4
  105. package/build/plugins/createBaseMod.js.map +1 -1
  106. package/build/plugins/ios-plugins.js +1 -2
  107. package/build/plugins/ios-plugins.js.map +1 -1
  108. package/build/plugins/mod-compiler.js +6 -10
  109. package/build/plugins/mod-compiler.js.map +1 -1
  110. package/build/plugins/withAndroidBaseMods.js +4 -6
  111. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  112. package/build/plugins/withIosBaseMods.js +4 -5
  113. package/build/plugins/withIosBaseMods.js.map +1 -1
  114. package/build/plugins/withMod.js +2 -4
  115. package/build/plugins/withMod.js.map +1 -1
  116. package/build/plugins/withStaticPlugin.js +2 -4
  117. package/build/plugins/withStaticPlugin.js.map +1 -1
  118. package/build/utils/Updates.d.ts +5 -0
  119. package/build/utils/Updates.js +34 -37
  120. package/build/utils/Updates.js.map +1 -1
  121. package/build/utils/XML.js +4 -8
  122. package/build/utils/XML.js.map +1 -1
  123. package/build/utils/generateCode.js +2 -2
  124. package/build/utils/generateCode.js.map +1 -1
  125. package/build/utils/history.js +1 -2
  126. package/build/utils/history.js.map +1 -1
  127. package/build/utils/modules.js +2 -4
  128. package/build/utils/modules.js.map +1 -1
  129. package/build/utils/plugin-resolver.js +5 -7
  130. package/build/utils/plugin-resolver.js.map +1 -1
  131. package/package.json +4 -6
@@ -1 +1 @@
1
- {"version":3,"file":"Swift.js","names":["_fs","data","_interopRequireDefault","require","_path","_Paths","_XcodeProjectFile","_Xcodeproj","_iosPlugins","obj","__esModule","default","templateBridgingHeader","withSwiftBridgingHeader","config","withXcodeProject","modResults","ensureSwiftBridgingHeaderSetup","project","projectRoot","modRequest","exports","shouldCreateSwiftBridgingHeader","projectName","getProjectName","bridgingHeader","createBridgingHeaderFileName","createBridgingHeaderFile","linkBridgingHeaderFile","path","join","isObjc","getAppDelegate","language","getDesignatedSwiftBridgingHeaderFileReference","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","SWIFT_OBJC_BRIDGING_HEADER","bridgingHeaderProjectPath","getSourceRoot","fs","existsSync","writeFileSync","filePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose","withNoopSwiftFile","withBuildSourceFile","contents"],"sources":["../../src/ios/Swift.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { getAppDelegate, getSourceRoot } from './Paths';\nimport { withBuildSourceFile } from './XcodeProjectFile';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ConfigPlugin, XcodeProject } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\n\nconst templateBridgingHeader = `//\n// Use this file to import your target's public headers that you would like to expose to Swift.\n//\n`;\n\n/**\n * Ensure a Swift bridging header is created for the project.\n * This helps fix problems related to using modules that are written in Swift (lottie, FBSDK).\n *\n * 1. Ensures the file exists given the project path.\n * 2. Writes the file and links to Xcode as a resource file.\n * 3. Sets the build configuration `SWIFT_OBJC_BRIDGING_HEADER = [PROJECT_NAME]-Bridging-Header.h`\n */\nexport const withSwiftBridgingHeader: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = ensureSwiftBridgingHeaderSetup({\n project: config.modResults,\n projectRoot: config.modRequest.projectRoot,\n });\n return config;\n });\n};\n\nexport function ensureSwiftBridgingHeaderSetup({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}) {\n // Only create a bridging header if using objective-c\n if (shouldCreateSwiftBridgingHeader({ projectRoot, project })) {\n const projectName = getProjectName(projectRoot);\n const bridgingHeader = createBridgingHeaderFileName(projectName);\n // Ensure a bridging header is created in the Xcode project.\n project = createBridgingHeaderFile({\n project,\n projectName,\n projectRoot,\n bridgingHeader,\n });\n // Designate the newly created file as the Swift bridging header in the Xcode project.\n project = linkBridgingHeaderFile({\n project,\n bridgingHeader: path.join(projectName, bridgingHeader),\n });\n }\n return project;\n}\n\nfunction shouldCreateSwiftBridgingHeader({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}): boolean {\n // Only create a bridging header if the project is using in Objective C (AppDelegate is written in Objc).\n const isObjc = getAppDelegate(projectRoot).language !== 'swift';\n return isObjc && !getDesignatedSwiftBridgingHeaderFileReference({ project });\n}\n\n/**\n * @returns String matching the default name used when Xcode automatically creates a bridging header file.\n */\nfunction createBridgingHeaderFileName(projectName: string): string {\n return `${projectName}-Bridging-Header.h`;\n}\n\nexport function getDesignatedSwiftBridgingHeaderFileReference({\n project,\n}: {\n project: XcodeProject;\n}): string | null {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n if (\n typeof buildSettings.SWIFT_OBJC_BRIDGING_HEADER === 'string' &&\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER\n ) {\n return buildSettings.SWIFT_OBJC_BRIDGING_HEADER;\n }\n }\n }\n return null;\n}\n\n/**\n *\n * @param bridgingHeader The bridging header filename ex: `ExpoAPIs-Bridging-Header.h`\n * @returns\n */\nexport function linkBridgingHeaderFile({\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n bridgingHeader: string;\n}): XcodeProject {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER = bridgingHeader;\n }\n }\n\n return project;\n}\n\nexport function createBridgingHeaderFile({\n projectRoot,\n projectName,\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n projectName: string;\n projectRoot: string;\n bridgingHeader: string;\n}): XcodeProject {\n const bridgingHeaderProjectPath = path.join(getSourceRoot(projectRoot), bridgingHeader);\n if (!fs.existsSync(bridgingHeaderProjectPath)) {\n // Create the file\n fs.writeFileSync(bridgingHeaderProjectPath, templateBridgingHeader, 'utf8');\n }\n\n // This is non-standard, Xcode generates the bridging header in `/ios` which is kinda annoying.\n // Instead, this'll generate the default header in the application code folder `/ios/myproject/`.\n const filePath = `${projectName}/${bridgingHeader}`;\n // Ensure the file is linked with Xcode resource files\n if (!project.hasFile(filePath)) {\n project = addResourceFileToGroup({\n filepath: filePath,\n groupName: projectName,\n project,\n // Not sure why, but this is how Xcode generates it.\n isBuildFile: false,\n verbose: false,\n });\n }\n return project;\n}\n\nexport const withNoopSwiftFile: ConfigPlugin = (config) => {\n return withBuildSourceFile(config, {\n filePath: 'noop-file.swift',\n contents: [\n '//',\n '// @generated',\n '// A blank Swift file must be created for native modules with Swift files to work correctly.',\n '//',\n '',\n ].join('\\n'),\n });\n};\n"],"mappings":";;;;;;;;;;AAAA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,MAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,OAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,MAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,kBAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,iBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,WAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,UAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,YAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0D,SAAAC,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1D,MAAMG,sBAAsB,GAAI;AAChC;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,uBAAqC,GAAIC,MAAM,IAAK;EAC/D,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAGA,MAAM,IAAK;IAC1CA,MAAM,CAACE,UAAU,GAAGC,8BAA8B,CAAC;MACjDC,OAAO,EAAEJ,MAAM,CAACE,UAAU;MAC1BG,WAAW,EAAEL,MAAM,CAACM,UAAU,CAACD;IACjC,CAAC,CAAC;IACF,OAAOL,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACO,OAAA,CAAAR,uBAAA,GAAAA,uBAAA;AAEK,SAASI,8BAA8BA,CAAC;EAC7CE,WAAW;EACXD;AAIF,CAAC,EAAE;EACD;EACA,IAAII,+BAA+B,CAAC;IAAEH,WAAW;IAAED;EAAQ,CAAC,CAAC,EAAE;IAC7D,MAAMK,WAAW,GAAG,IAAAC,2BAAc,EAACL,WAAW,CAAC;IAC/C,MAAMM,cAAc,GAAGC,4BAA4B,CAACH,WAAW,CAAC;IAChE;IACAL,OAAO,GAAGS,wBAAwB,CAAC;MACjCT,OAAO;MACPK,WAAW;MACXJ,WAAW;MACXM;IACF,CAAC,CAAC;IACF;IACAP,OAAO,GAAGU,sBAAsB,CAAC;MAC/BV,OAAO;MACPO,cAAc,EAAEI,eAAI,CAACC,IAAI,CAACP,WAAW,EAAEE,cAAc;IACvD,CAAC,CAAC;EACJ;EACA,OAAOP,OAAO;AAChB;AAEA,SAASI,+BAA+BA,CAAC;EACvCH,WAAW;EACXD;AAIF,CAAC,EAAW;EACV;EACA,MAAMa,MAAM,GAAG,IAAAC,uBAAc,EAACb,WAAW,CAAC,CAACc,QAAQ,KAAK,OAAO;EAC/D,OAAOF,MAAM,IAAI,CAACG,6CAA6C,CAAC;IAAEhB;EAAQ,CAAC,CAAC;AAC9E;;AAEA;AACA;AACA;AACA,SAASQ,4BAA4BA,CAACH,WAAmB,EAAU;EACjE,OAAQ,GAAEA,WAAY,oBAAmB;AAC3C;AAEO,SAASW,6CAA6CA,CAAC;EAC5DhB;AAGF,CAAC,EAAiB;EAChB,MAAMiB,cAAc,GAAGjB,OAAO,CAACkB,8BAA8B,CAAC,CAAC;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtD,IACE,OAAOH,aAAa,CAACI,0BAA0B,KAAK,QAAQ,IAC5DJ,aAAa,CAACI,0BAA0B,EACxC;QACA,OAAOJ,aAAa,CAACI,0BAA0B;MACjD;IACF;EACF;EACA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASb,sBAAsBA,CAAC;EACrCV,OAAO;EACPO;AAIF,CAAC,EAAgB;EACf,MAAMU,cAAc,GAAGjB,OAAO,CAACkB,8BAA8B,CAAC,CAAC;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtDH,aAAa,CAACI,0BAA0B,GAAGhB,cAAc;IAC3D;EACF;EAEA,OAAOP,OAAO;AAChB;AAEO,SAASS,wBAAwBA,CAAC;EACvCR,WAAW;EACXI,WAAW;EACXL,OAAO;EACPO;AAMF,CAAC,EAAgB;EACf,MAAMiB,yBAAyB,GAAGb,eAAI,CAACC,IAAI,CAAC,IAAAa,sBAAa,EAACxB,WAAW,CAAC,EAAEM,cAAc,CAAC;EACvF,IAAI,CAACmB,aAAE,CAACC,UAAU,CAACH,yBAAyB,CAAC,EAAE;IAC7C;IACAE,aAAE,CAACE,aAAa,CAACJ,yBAAyB,EAAE9B,sBAAsB,EAAE,MAAM,CAAC;EAC7E;;EAEA;EACA;EACA,MAAMmC,QAAQ,GAAI,GAAExB,WAAY,IAAGE,cAAe,EAAC;EACnD;EACA,IAAI,CAACP,OAAO,CAAC8B,OAAO,CAACD,QAAQ,CAAC,EAAE;IAC9B7B,OAAO,GAAG,IAAA+B,mCAAsB,EAAC;MAC/BC,QAAQ,EAAEH,QAAQ;MAClBI,SAAS,EAAE5B,WAAW;MACtBL,OAAO;MACP;MACAkC,WAAW,EAAE,KAAK;MAClBC,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EACA,OAAOnC,OAAO;AAChB;AAEO,MAAMoC,iBAA+B,GAAIxC,MAAM,IAAK;EACzD,OAAO,IAAAyC,uCAAmB,EAACzC,MAAM,EAAE;IACjCiC,QAAQ,EAAE,iBAAiB;IAC3BS,QAAQ,EAAE,CACR,IAAI,EACJ,eAAe,EACf,8FAA8F,EAC9F,IAAI,EACJ,EAAE,CACH,CAAC1B,IAAI,CAAC,IAAI;EACb,CAAC,CAAC;AACJ,CAAC;AAACT,OAAA,CAAAiC,iBAAA,GAAAA,iBAAA"}
1
+ {"version":3,"file":"Swift.js","names":["_fs","data","_interopRequireDefault","require","_path","_Paths","_XcodeProjectFile","_Xcodeproj","_iosPlugins","obj","__esModule","default","templateBridgingHeader","withSwiftBridgingHeader","config","withXcodeProject","modResults","ensureSwiftBridgingHeaderSetup","project","projectRoot","modRequest","exports","shouldCreateSwiftBridgingHeader","projectName","getProjectName","bridgingHeader","createBridgingHeaderFileName","createBridgingHeaderFile","linkBridgingHeaderFile","path","join","isObjc","getAppDelegate","language","getDesignatedSwiftBridgingHeaderFileReference","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","SWIFT_OBJC_BRIDGING_HEADER","bridgingHeaderProjectPath","getSourceRoot","fs","existsSync","writeFileSync","filePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose","withNoopSwiftFile","withBuildSourceFile","contents"],"sources":["../../src/ios/Swift.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { getAppDelegate, getSourceRoot } from './Paths';\nimport { withBuildSourceFile } from './XcodeProjectFile';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ConfigPlugin, XcodeProject } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\n\nconst templateBridgingHeader = `//\n// Use this file to import your target's public headers that you would like to expose to Swift.\n//\n`;\n\n/**\n * Ensure a Swift bridging header is created for the project.\n * This helps fix problems related to using modules that are written in Swift (lottie, FBSDK).\n *\n * 1. Ensures the file exists given the project path.\n * 2. Writes the file and links to Xcode as a resource file.\n * 3. Sets the build configuration `SWIFT_OBJC_BRIDGING_HEADER = [PROJECT_NAME]-Bridging-Header.h`\n */\nexport const withSwiftBridgingHeader: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = ensureSwiftBridgingHeaderSetup({\n project: config.modResults,\n projectRoot: config.modRequest.projectRoot,\n });\n return config;\n });\n};\n\nexport function ensureSwiftBridgingHeaderSetup({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}) {\n // Only create a bridging header if using objective-c\n if (shouldCreateSwiftBridgingHeader({ projectRoot, project })) {\n const projectName = getProjectName(projectRoot);\n const bridgingHeader = createBridgingHeaderFileName(projectName);\n // Ensure a bridging header is created in the Xcode project.\n project = createBridgingHeaderFile({\n project,\n projectName,\n projectRoot,\n bridgingHeader,\n });\n // Designate the newly created file as the Swift bridging header in the Xcode project.\n project = linkBridgingHeaderFile({\n project,\n bridgingHeader: path.join(projectName, bridgingHeader),\n });\n }\n return project;\n}\n\nfunction shouldCreateSwiftBridgingHeader({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}): boolean {\n // Only create a bridging header if the project is using in Objective C (AppDelegate is written in Objc).\n const isObjc = getAppDelegate(projectRoot).language !== 'swift';\n return isObjc && !getDesignatedSwiftBridgingHeaderFileReference({ project });\n}\n\n/**\n * @returns String matching the default name used when Xcode automatically creates a bridging header file.\n */\nfunction createBridgingHeaderFileName(projectName: string): string {\n return `${projectName}-Bridging-Header.h`;\n}\n\nexport function getDesignatedSwiftBridgingHeaderFileReference({\n project,\n}: {\n project: XcodeProject;\n}): string | null {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n if (\n typeof buildSettings.SWIFT_OBJC_BRIDGING_HEADER === 'string' &&\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER\n ) {\n return buildSettings.SWIFT_OBJC_BRIDGING_HEADER;\n }\n }\n }\n return null;\n}\n\n/**\n *\n * @param bridgingHeader The bridging header filename ex: `ExpoAPIs-Bridging-Header.h`\n * @returns\n */\nexport function linkBridgingHeaderFile({\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n bridgingHeader: string;\n}): XcodeProject {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER = bridgingHeader;\n }\n }\n\n return project;\n}\n\nexport function createBridgingHeaderFile({\n projectRoot,\n projectName,\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n projectName: string;\n projectRoot: string;\n bridgingHeader: string;\n}): XcodeProject {\n const bridgingHeaderProjectPath = path.join(getSourceRoot(projectRoot), bridgingHeader);\n if (!fs.existsSync(bridgingHeaderProjectPath)) {\n // Create the file\n fs.writeFileSync(bridgingHeaderProjectPath, templateBridgingHeader, 'utf8');\n }\n\n // This is non-standard, Xcode generates the bridging header in `/ios` which is kinda annoying.\n // Instead, this'll generate the default header in the application code folder `/ios/myproject/`.\n const filePath = `${projectName}/${bridgingHeader}`;\n // Ensure the file is linked with Xcode resource files\n if (!project.hasFile(filePath)) {\n project = addResourceFileToGroup({\n filepath: filePath,\n groupName: projectName,\n project,\n // Not sure why, but this is how Xcode generates it.\n isBuildFile: false,\n verbose: false,\n });\n }\n return project;\n}\n\nexport const withNoopSwiftFile: ConfigPlugin = (config) => {\n return withBuildSourceFile(config, {\n filePath: 'noop-file.swift',\n contents: [\n '//',\n '// @generated',\n '// A blank Swift file must be created for native modules with Swift files to work correctly.',\n '//',\n '',\n ].join('\\n'),\n });\n};\n"],"mappings":"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"}
@@ -32,9 +32,7 @@ function _string() {
32
32
  };
33
33
  return data;
34
34
  }
35
- let TargetType;
36
- exports.TargetType = TargetType;
37
- (function (TargetType) {
35
+ let TargetType = exports.TargetType = /*#__PURE__*/function (TargetType) {
38
36
  TargetType["APPLICATION"] = "com.apple.product-type.application";
39
37
  TargetType["EXTENSION"] = "com.apple.product-type.app-extension";
40
38
  TargetType["WATCH"] = "com.apple.product-type.application.watchapp";
@@ -42,7 +40,8 @@ exports.TargetType = TargetType;
42
40
  TargetType["STICKER_PACK_EXTENSION"] = "com.apple.product-type.app-extension.messages-sticker-pack";
43
41
  TargetType["FRAMEWORK"] = "com.apple.product-type.framework";
44
42
  TargetType["OTHER"] = "other";
45
- })(TargetType || (exports.TargetType = TargetType = {}));
43
+ return TargetType;
44
+ }({});
46
45
  function getXCBuildConfigurationFromPbxproj(project, {
47
46
  targetName,
48
47
  buildConfiguration = 'Release'
@@ -52,7 +51,7 @@ function getXCBuildConfigurationFromPbxproj(project, {
52
51
  configurationListId: nativeTarget.buildConfigurationList,
53
52
  buildConfiguration
54
53
  });
55
- return xcBuildConfiguration !== null && xcBuildConfiguration !== void 0 ? xcBuildConfiguration : null;
54
+ return xcBuildConfiguration ?? null;
56
55
  }
57
56
  async function findApplicationTargetWithDependenciesAsync(projectRoot, scheme) {
58
57
  const applicationTargetName = await (0, _BuildScheme().getApplicationTargetNameForSchemeAsync)(projectRoot, scheme);
@@ -1 +1 @@
1
- {"version":3,"file":"Target.js","names":["_BuildScheme","data","require","_Xcodeproj","_string","TargetType","exports","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","getBuildConfigurationForListIdAndName","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","getApplicationTargetNameForSchemeAsync","getPbxproj","applicationTarget","dependencies","getTargetDependencies","name","trimQuotes","type","APPLICATION","signable","parentTarget","length","undefined","nonSignableTargetTypes","FRAMEWORK","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","some","signableTargetType","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","signableTargetTypes","APP_CLIP","WATCH","STICKER_PACK_EXTENSION","applicationTargets","Error","nativeTargets","nativeTargetEntry","find","i","key"],"sources":["../../src/ios/Target.ts"],"sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n APP_CLIP = 'com.apple.product-type.application.on-demand-install-capable',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n FRAMEWORK = 'com.apple.product-type.framework',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n signable: boolean;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n const dependencies = getTargetDependencies(project, applicationTarget);\n return {\n name: trimQuotes(applicationTarget.name),\n type: TargetType.APPLICATION,\n signable: true,\n dependencies,\n };\n}\n\nfunction getTargetDependencies(\n project: XcodeProject,\n parentTarget: PBXNativeTarget\n): Target[] | undefined {\n if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {\n return undefined;\n }\n\n const nonSignableTargetTypes: TargetType[] = [TargetType.FRAMEWORK];\n\n return parentTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: trimQuotes(target.name),\n type,\n signable: !nonSignableTargetTypes.some((signableTargetType) =>\n isTargetOfType(target, signableTargetType)\n ),\n dependencies: getTargetDependencies(project, target),\n };\n });\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return trimQuotes(target.productType) === targetType;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n\n const signableTargetTypes: TargetType[] = [\n TargetType.APPLICATION,\n TargetType.APP_CLIP,\n TargetType.EXTENSION,\n TargetType.WATCH,\n TargetType.STICKER_PACK_EXTENSION,\n ];\n\n const applicationTargets = targets.filter(([, target]) => {\n for (const targetType of signableTargetTypes) {\n if (isTargetOfType(target, targetType)) {\n return true;\n }\n }\n return false;\n });\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([, i]) => trimQuotes(i.name) === targetName);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"mappings":";;;;;;;;;;;;;AAEA,SAAAA,aAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,YAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,WAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4C,IAEhCI,UAAU;AAAAC,OAAA,CAAAD,UAAA,GAAAA,UAAA;AAAA,WAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;AAAA,GAAVA,UAAU,KAAAC,OAAA,CAAAD,UAAA,GAAVA,UAAU;AAiBf,SAASE,kCAAkCA,CAChDC,OAAqB,EACrB;EACEC,UAAU;EACVC,kBAAkB,GAAG;AAC+B,CAAC,GAAG,CAAC,CAAC,EAC/B;EAC7B,MAAM,GAAGC,YAAY,CAAC,GAAGF,UAAU,GAC/BG,sBAAsB,CAACJ,OAAO,EAAEC,UAAU,CAAC,GAC3CI,qBAAqB,CAACL,OAAO,CAAC;EAClC,MAAM,GAAGM,oBAAoB,CAAC,GAAG,IAAAC,kDAAqC,EAACP,OAAO,EAAE;IAC9EQ,mBAAmB,EAAEL,YAAY,CAACM,sBAAsB;IACxDP;EACF,CAAC,CAAC;EACF,OAAOI,oBAAoB,aAApBA,oBAAoB,cAApBA,oBAAoB,GAAI,IAAI;AACrC;AAEO,eAAeI,0CAA0CA,CAC9DC,WAAmB,EACnBC,MAAc,EACG;EACjB,MAAMC,qBAAqB,GAAG,MAAM,IAAAC,qDAAsC,EAACH,WAAW,EAAEC,MAAM,CAAC;EAC/F,MAAMZ,OAAO,GAAG,IAAAe,uBAAU,EAACJ,WAAW,CAAC;EACvC,MAAM,GAAGK,iBAAiB,CAAC,GAAGZ,sBAAsB,CAACJ,OAAO,EAAEa,qBAAqB,CAAC;EACpF,MAAMI,YAAY,GAAGC,qBAAqB,CAAClB,OAAO,EAAEgB,iBAAiB,CAAC;EACtE,OAAO;IACLG,IAAI,EAAE,IAAAC,oBAAU,EAACJ,iBAAiB,CAACG,IAAI,CAAC;IACxCE,IAAI,EAAExB,UAAU,CAACyB,WAAW;IAC5BC,QAAQ,EAAE,IAAI;IACdN;EACF,CAAC;AACH;AAEA,SAASC,qBAAqBA,CAC5BlB,OAAqB,EACrBwB,YAA6B,EACP;EACtB,IAAI,CAACA,YAAY,CAACP,YAAY,IAAIO,YAAY,CAACP,YAAY,CAACQ,MAAM,KAAK,CAAC,EAAE;IACxE,OAAOC,SAAS;EAClB;EAEA,MAAMC,sBAAoC,GAAG,CAAC9B,UAAU,CAAC+B,SAAS,CAAC;EAEnE,OAAOJ,YAAY,CAACP,YAAY,CAACY,GAAG,CAAC,CAAC;IAAEC;EAAM,CAAC,KAAK;IAClD,MAAM;MAAEC,MAAM,EAAEC;IAAS,CAAC,GAAGhC,OAAO,CAACiC,uBAAuB,CAC1DH,KAAK,EACL,qBACF,CAAwB;IAExB,MAAM,GAAGC,MAAM,CAAC,GAAGG,oBAAoB,CAAClC,OAAO,EAAEgC,QAAQ,CAAC;IAE1D,MAAMX,IAAI,GAAGc,cAAc,CAACJ,MAAM,EAAElC,UAAU,CAACuC,SAAS,CAAC,GACrDvC,UAAU,CAACuC,SAAS,GACpBvC,UAAU,CAACwC,KAAK;IACpB,OAAO;MACLlB,IAAI,EAAE,IAAAC,oBAAU,EAACW,MAAM,CAACZ,IAAI,CAAC;MAC7BE,IAAI;MACJE,QAAQ,EAAE,CAACI,sBAAsB,CAACW,IAAI,CAAEC,kBAAkB,IACxDJ,cAAc,CAACJ,MAAM,EAAEQ,kBAAkB,CAC3C,CAAC;MACDtB,YAAY,EAAEC,qBAAqB,CAAClB,OAAO,EAAE+B,MAAM;IACrD,CAAC;EACH,CAAC,CAAC;AACJ;AAEO,SAASI,cAAcA,CAACJ,MAAuB,EAAES,UAAsB,EAAW;EACvF,OAAO,IAAApB,oBAAU,EAACW,MAAM,CAACU,WAAW,CAAC,KAAKD,UAAU;AACtD;AAEO,SAASE,gBAAgBA,CAAC1C,OAAqB,EAA8B;EAClF,MAAM2C,OAAO,GAAG3C,OAAO,CAAC4C,sBAAsB,CAAC,CAAC;EAChD,OAAOC,MAAM,CAACC,OAAO,CAACH,OAAO,CAAC,CAACI,MAAM,CAACC,yBAAY,CAAC;AACrD;AAEO,SAASC,mBAAmBA,CAACjD,OAAqB,EAA8B;EACrF,MAAMkD,OAAO,GAAGR,gBAAgB,CAAC1C,OAAO,CAAC;EAEzC,MAAMmD,mBAAiC,GAAG,CACxCtD,UAAU,CAACyB,WAAW,EACtBzB,UAAU,CAACuD,QAAQ,EACnBvD,UAAU,CAACuC,SAAS,EACpBvC,UAAU,CAACwD,KAAK,EAChBxD,UAAU,CAACyD,sBAAsB,CAClC;EAED,MAAMC,kBAAkB,GAAGL,OAAO,CAACH,MAAM,CAAC,CAAC,GAAGhB,MAAM,CAAC,KAAK;IACxD,KAAK,MAAMS,UAAU,IAAIW,mBAAmB,EAAE;MAC5C,IAAIhB,cAAc,CAACJ,MAAM,EAAES,UAAU,CAAC,EAAE;QACtC,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EACF,IAAIe,kBAAkB,CAAC9B,MAAM,KAAK,CAAC,EAAE;IACnC,MAAM,IAAI+B,KAAK,CAAE,wDAAuD,CAAC;EAC3E;EACA,OAAOD,kBAAkB;AAC3B;AAEO,SAASlD,qBAAqBA,CAACL,OAAqB,EAA4B;EACrF,MAAMkD,OAAO,GAAGR,gBAAgB,CAAC1C,OAAO,CAAC;EACzC,MAAMuD,kBAAkB,GAAGL,OAAO,CAACH,MAAM,CAAC,CAAC,GAAGhB,MAAM,CAAC,KACnDI,cAAc,CAACJ,MAAM,EAAElC,UAAU,CAACyB,WAAW,CAC/C,CAAC;EACD,IAAIiC,kBAAkB,CAAC9B,MAAM,KAAK,CAAC,EAAE;IACnC,MAAM,IAAI+B,KAAK,CAAE,0DAAyD,CAAC;EAC7E;EACA,OAAOD,kBAAkB,CAAC,CAAC,CAAC;AAC9B;AAEO,SAASnD,sBAAsBA,CACpCJ,OAAqB,EACrBC,UAAkB,EACQ;EAC1B,MAAMwD,aAAa,GAAGf,gBAAgB,CAAC1C,OAAO,CAAC;EAC/C,MAAM0D,iBAAiB,GAAGD,aAAa,CAACE,IAAI,CAAC,CAAC,GAAGC,CAAC,CAAC,KAAK,IAAAxC,oBAAU,EAACwC,CAAC,CAACzC,IAAI,CAAC,KAAKlB,UAAU,CAAC;EAC1F,IAAI,CAACyD,iBAAiB,EAAE;IACtB,MAAM,IAAIF,KAAK,CAAE,0BAAyBvD,UAAW,sBAAqB,CAAC;EAC7E;EACA,OAAOyD,iBAAiB;AAC1B;AAEA,SAASxB,oBAAoBA,CAAClC,OAAqB,EAAEgC,QAAgB,EAA4B;EAC/F,MAAMyB,aAAa,GAAGf,gBAAgB,CAAC1C,OAAO,CAAC;EAC/C,MAAM0D,iBAAiB,GAAGD,aAAa,CAACE,IAAI,CAAC,CAAC,CAACE,GAAG,CAAC,KAAKA,GAAG,KAAK7B,QAAQ,CAAC;EACzE,IAAI,CAAC0B,iBAAiB,EAAE;IACtB,MAAM,IAAIF,KAAK,CAAE,kCAAiCxB,QAAS,sBAAqB,CAAC;EACnF;EACA,OAAO0B,iBAAiB;AAC1B"}
1
+ {"version":3,"file":"Target.js","names":["_BuildScheme","data","require","_Xcodeproj","_string","TargetType","exports","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","getBuildConfigurationForListIdAndName","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","getApplicationTargetNameForSchemeAsync","getPbxproj","applicationTarget","dependencies","getTargetDependencies","name","trimQuotes","type","APPLICATION","signable","parentTarget","length","undefined","nonSignableTargetTypes","FRAMEWORK","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","some","signableTargetType","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","signableTargetTypes","APP_CLIP","WATCH","STICKER_PACK_EXTENSION","applicationTargets","Error","nativeTargets","nativeTargetEntry","find","i","key"],"sources":["../../src/ios/Target.ts"],"sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n APP_CLIP = 'com.apple.product-type.application.on-demand-install-capable',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n FRAMEWORK = 'com.apple.product-type.framework',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n signable: boolean;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n const dependencies = getTargetDependencies(project, applicationTarget);\n return {\n name: trimQuotes(applicationTarget.name),\n type: TargetType.APPLICATION,\n signable: true,\n dependencies,\n };\n}\n\nfunction getTargetDependencies(\n project: XcodeProject,\n parentTarget: PBXNativeTarget\n): Target[] | undefined {\n if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {\n return undefined;\n }\n\n const nonSignableTargetTypes: TargetType[] = [TargetType.FRAMEWORK];\n\n return parentTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: trimQuotes(target.name),\n type,\n signable: !nonSignableTargetTypes.some((signableTargetType) =>\n isTargetOfType(target, signableTargetType)\n ),\n dependencies: getTargetDependencies(project, target),\n };\n });\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return trimQuotes(target.productType) === targetType;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n\n const signableTargetTypes: TargetType[] = [\n TargetType.APPLICATION,\n TargetType.APP_CLIP,\n TargetType.EXTENSION,\n TargetType.WATCH,\n TargetType.STICKER_PACK_EXTENSION,\n ];\n\n const applicationTargets = targets.filter(([, target]) => {\n for (const targetType of signableTargetTypes) {\n if (isTargetOfType(target, targetType)) {\n return true;\n }\n }\n return false;\n });\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([, i]) => trimQuotes(i.name) === targetName);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import xcode from 'xcode';
2
1
  import { ExpoPlist } from './IosConfig.types';
3
2
  import { ConfigPlugin } from '../Plugin.types';
4
3
  import { ExpoConfigUpdates } from '../utils/Updates';
@@ -7,9 +6,7 @@ export declare enum Config {
7
6
  CHECK_ON_LAUNCH = "EXUpdatesCheckOnLaunch",
8
7
  LAUNCH_WAIT_MS = "EXUpdatesLaunchWaitMs",
9
8
  RUNTIME_VERSION = "EXUpdatesRuntimeVersion",
10
- SDK_VERSION = "EXUpdatesSDKVersion",
11
9
  UPDATE_URL = "EXUpdatesURL",
12
- RELEASE_CHANNEL = "EXUpdatesReleaseChannel",
13
10
  UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = "EXUpdatesRequestHeaders",
14
11
  CODE_SIGNING_CERTIFICATE = "EXUpdatesCodeSigningCertificate",
15
12
  CODE_SIGNING_METADATA = "EXUpdatesCodeSigningMetadata"
@@ -17,16 +14,3 @@ export declare enum Config {
17
14
  export declare const withUpdates: ConfigPlugin;
18
15
  export declare function setUpdatesConfigAsync(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist, expoUpdatesPackageVersion?: string | null): Promise<ExpoPlist>;
19
16
  export declare function setVersionsConfigAsync(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist): Promise<ExpoPlist>;
20
- interface ShellScriptBuildPhase {
21
- isa: 'PBXShellScriptBuildPhase';
22
- name: string;
23
- shellScript: string;
24
- [key: string]: any;
25
- }
26
- export declare function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase;
27
- export declare function ensureBundleReactNativePhaseContainsConfigurationScript(projectRoot: string, project: xcode.XcodeProject): xcode.XcodeProject;
28
- export declare function isShellScriptBuildPhaseConfigured(projectRoot: string, project: xcode.XcodeProject): boolean;
29
- export declare function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean;
30
- export declare function isPlistConfigurationSyncedAsync(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist): Promise<boolean>;
31
- export declare function isPlistVersionConfigurationSyncedAsync(projectRoot: string, config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, expoPlist: ExpoPlist): Promise<boolean>;
32
- export {};
@@ -4,29 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Config = void 0;
7
- exports.ensureBundleReactNativePhaseContainsConfigurationScript = ensureBundleReactNativePhaseContainsConfigurationScript;
8
- exports.getBundleReactNativePhase = getBundleReactNativePhase;
9
- exports.isPlistConfigurationSet = isPlistConfigurationSet;
10
- exports.isPlistConfigurationSyncedAsync = isPlistConfigurationSyncedAsync;
11
- exports.isPlistVersionConfigurationSyncedAsync = isPlistVersionConfigurationSyncedAsync;
12
- exports.isShellScriptBuildPhaseConfigured = isShellScriptBuildPhaseConfigured;
13
7
  exports.setUpdatesConfigAsync = setUpdatesConfigAsync;
14
8
  exports.setVersionsConfigAsync = setVersionsConfigAsync;
15
9
  exports.withUpdates = void 0;
16
- function path() {
17
- const data = _interopRequireWildcard(require("path"));
18
- path = function () {
19
- return data;
20
- };
21
- return data;
22
- }
23
- function _resolveFrom() {
24
- const data = _interopRequireDefault(require("resolve-from"));
25
- _resolveFrom = function () {
26
- return data;
27
- };
28
- return data;
29
- }
30
10
  function _iosPlugins() {
31
11
  const data = require("../plugins/ios-plugins");
32
12
  _iosPlugins = function () {
@@ -41,25 +21,18 @@ function _Updates() {
41
21
  };
42
22
  return data;
43
23
  }
44
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
46
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
47
- const CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';
48
- let Config; // when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools
49
- // Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/
50
- exports.Config = Config;
51
- (function (Config) {
24
+ let Config = exports.Config = /*#__PURE__*/function (Config) {
52
25
  Config["ENABLED"] = "EXUpdatesEnabled";
53
26
  Config["CHECK_ON_LAUNCH"] = "EXUpdatesCheckOnLaunch";
54
27
  Config["LAUNCH_WAIT_MS"] = "EXUpdatesLaunchWaitMs";
55
28
  Config["RUNTIME_VERSION"] = "EXUpdatesRuntimeVersion";
56
- Config["SDK_VERSION"] = "EXUpdatesSDKVersion";
57
29
  Config["UPDATE_URL"] = "EXUpdatesURL";
58
- Config["RELEASE_CHANNEL"] = "EXUpdatesReleaseChannel";
59
30
  Config["UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY"] = "EXUpdatesRequestHeaders";
60
31
  Config["CODE_SIGNING_CERTIFICATE"] = "EXUpdatesCodeSigningCertificate";
61
32
  Config["CODE_SIGNING_METADATA"] = "EXUpdatesCodeSigningMetadata";
62
- })(Config || (exports.Config = Config = {}));
33
+ return Config;
34
+ }({}); // when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools
35
+ // Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/
63
36
  const withUpdates = config => {
64
37
  return (0, _iosPlugins().withExpoPlist)(config, async config => {
65
38
  const projectRoot = config.modRequest.projectRoot;
@@ -110,75 +83,13 @@ async function setVersionsConfigAsync(projectRoot, config, expoPlist) {
110
83
  if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {
111
84
  throw new Error('A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.');
112
85
  }
113
- const sdkVersion = (0, _Updates().getSDKVersion)(config);
114
86
  if (runtimeVersion) {
115
- delete newExpoPlist[Config.SDK_VERSION];
87
+ delete newExpoPlist['EXUpdatesSDKVersion'];
116
88
  newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;
117
- } else if (sdkVersion) {
118
- /**
119
- * runtime version maybe null in projects using classic updates. In that
120
- * case we use SDK version
121
- */
122
- delete newExpoPlist[Config.RUNTIME_VERSION];
123
- newExpoPlist[Config.SDK_VERSION] = sdkVersion;
124
89
  } else {
125
- delete newExpoPlist[Config.SDK_VERSION];
90
+ delete newExpoPlist['EXUpdatesSDKVersion'];
126
91
  delete newExpoPlist[Config.RUNTIME_VERSION];
127
92
  }
128
93
  return newExpoPlist;
129
94
  }
130
- function formatConfigurationScriptPath(projectRoot) {
131
- const buildScriptPath = _resolveFrom().default.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);
132
- if (!buildScriptPath) {
133
- throw new Error("Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.");
134
- }
135
- const relativePath = path().relative(path().join(projectRoot, 'ios'), buildScriptPath);
136
- return process.platform === 'win32' ? relativePath.replace(/\\/g, '/') : relativePath;
137
- }
138
- function getBundleReactNativePhase(project) {
139
- const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase;
140
- const bundleReactNative = Object.values(shellScriptBuildPhase).find(buildPhase => buildPhase.name === '"Bundle React Native code and images"');
141
- if (!bundleReactNative) {
142
- throw new Error(`Couldn't find a build phase "Bundle React Native code and images"`);
143
- }
144
- return bundleReactNative;
145
- }
146
- function ensureBundleReactNativePhaseContainsConfigurationScript(projectRoot, project) {
147
- const bundleReactNative = getBundleReactNativePhase(project);
148
- const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);
149
- if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {
150
- // check if there's already another path to create-manifest-ios.sh
151
- // this might be the case for monorepos
152
- if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {
153
- bundleReactNative.shellScript = bundleReactNative.shellScript.replace(new RegExp(`(\\\\n)(\\.\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`), '');
154
- }
155
- bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(/"$/, '')}${buildPhaseShellScriptPath}\\n"`;
156
- }
157
- return project;
158
- }
159
- function isShellScriptBuildPhaseConfigured(projectRoot, project) {
160
- const bundleReactNative = getBundleReactNativePhase(project);
161
- const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);
162
- return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);
163
- }
164
- function isPlistConfigurationSet(expoPlist) {
165
- return Boolean(expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion));
166
- }
167
- async function isPlistConfigurationSyncedAsync(projectRoot, config, expoPlist) {
168
- return (0, _Updates().getUpdateUrl)(config) === expoPlist.EXUpdatesURL && (0, _Updates().getUpdatesEnabled)(config) === expoPlist.EXUpdatesEnabled && (0, _Updates().getUpdatesTimeout)(config) === expoPlist.EXUpdatesLaunchWaitMs && (0, _Updates().getUpdatesCheckOnLaunch)(config) === expoPlist.EXUpdatesCheckOnLaunch && (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config) === expoPlist.EXUpdatesCodeSigningCertificate && (0, _Updates().getUpdatesCodeSigningMetadata)(config) === expoPlist.EXUpdatesCodeSigningMetadata && (await isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist));
169
- }
170
- async function isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist) {
171
- var _expoPlist$EXUpdatesR, _expoPlist$EXUpdatesS;
172
- const expectedRuntimeVersion = await (0, _Updates().getRuntimeVersionNullableAsync)(projectRoot, config, 'ios');
173
- const expectedSdkVersion = (0, _Updates().getSDKVersion)(config);
174
- const currentRuntimeVersion = (_expoPlist$EXUpdatesR = expoPlist.EXUpdatesRuntimeVersion) !== null && _expoPlist$EXUpdatesR !== void 0 ? _expoPlist$EXUpdatesR : null;
175
- const currentSdkVersion = (_expoPlist$EXUpdatesS = expoPlist.EXUpdatesSDKVersion) !== null && _expoPlist$EXUpdatesS !== void 0 ? _expoPlist$EXUpdatesS : null;
176
- if (expectedRuntimeVersion !== null) {
177
- return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;
178
- } else if (expectedSdkVersion !== null) {
179
- return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;
180
- } else {
181
- return true;
182
- }
183
- }
184
95
  //# sourceMappingURL=Updates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Updates.js","names":["path","data","_interopRequireWildcard","require","_resolveFrom","_interopRequireDefault","_iosPlugins","_Updates","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CREATE_MANIFEST_IOS_PATH","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfigAsync","expoPlist","newExpoPlist","ENABLED","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadata","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeaders","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfigAsync","runtimeVersion","getRuntimeVersionNullableAsync","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSyncedAsync","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","EXUpdatesCodeSigningCertificate","EXUpdatesCodeSigningMetadata","isPlistVersionConfigurationSyncedAsync","_expoPlist$EXUpdatesR","_expoPlist$EXUpdatesS","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/ios/Updates.ts"],"sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ExpoPlist } from './IosConfig.types';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullableAsync,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadata,\n getUpdatesRequestHeaders,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n CODE_SIGNING_CERTIFICATE = 'EXUpdatesCodeSigningCertificate',\n CODE_SIGNING_METADATA = 'EXUpdatesCodeSigningMetadata',\n}\n\n// when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools\n// Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/\n\nexport const withUpdates: ConfigPlugin = (config) => {\n return withExpoPlist(config, async (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = await setUpdatesConfigAsync(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport async function setUpdatesConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n expoUpdatesPackageVersion?: string | null\n): Promise<ExpoPlist> {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n const requestHeaders = getUpdatesRequestHeaders(config);\n if (requestHeaders) {\n newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = requestHeaders;\n } else {\n delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];\n }\n\n return await setVersionsConfigAsync(projectRoot, config, newExpoPlist);\n}\n\nexport async function setVersionsConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<ExpoPlist> {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n (buildPhase) => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport async function isPlistConfigurationSyncedAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n return (\n getUpdateUrl(config) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n expoPlist.EXUpdatesCodeSigningCertificate &&\n getUpdatesCodeSigningMetadata(config) === expoPlist.EXUpdatesCodeSigningMetadata &&\n (await isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist))\n );\n}\n\nexport async function isPlistVersionConfigurationSyncedAsync(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n const expectedRuntimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Updates.js","names":["_iosPlugins","data","require","_Updates","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfigAsync","expoPlist","newExpoPlist","ENABLED","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadata","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeaders","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfigAsync","runtimeVersion","getRuntimeVersionNullableAsync","RUNTIME_VERSION","Error"],"sources":["../../src/ios/Updates.ts"],"sourcesContent":["import { ExpoPlist } from './IosConfig.types';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullableAsync,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadata,\n getUpdatesRequestHeaders,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n UPDATE_URL = 'EXUpdatesURL',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n CODE_SIGNING_CERTIFICATE = 'EXUpdatesCodeSigningCertificate',\n CODE_SIGNING_METADATA = 'EXUpdatesCodeSigningMetadata',\n}\n\n// when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools\n// Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/\n\nexport const withUpdates: ConfigPlugin = (config) => {\n return withExpoPlist(config, async (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = await setUpdatesConfigAsync(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport async function setUpdatesConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n expoUpdatesPackageVersion?: string | null\n): Promise<ExpoPlist> {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n const requestHeaders = getUpdatesRequestHeaders(config);\n if (requestHeaders) {\n newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = requestHeaders;\n } else {\n delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];\n }\n\n return await setVersionsConfigAsync(projectRoot, config, newExpoPlist);\n}\n\nexport async function setVersionsConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<ExpoPlist> {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n\n if (runtimeVersion) {\n delete newExpoPlist['EXUpdatesSDKVersion'];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else {\n delete newExpoPlist['EXUpdatesSDKVersion'];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n"],"mappings":"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"}
@@ -13,14 +13,12 @@ function _iosPlugins() {
13
13
  };
14
14
  return data;
15
15
  }
16
- const withUsesNonExemptEncryption = (0, _iosPlugins().createInfoPlistPluginWithPropertyGuard)(setUsesNonExemptEncryption, {
16
+ const withUsesNonExemptEncryption = exports.withUsesNonExemptEncryption = (0, _iosPlugins().createInfoPlistPluginWithPropertyGuard)(setUsesNonExemptEncryption, {
17
17
  infoPlistProperty: 'ITSAppUsesNonExemptEncryption',
18
18
  expoConfigProperty: 'ios.config.usesNonExemptEncryption'
19
19
  }, 'withUsesNonExemptEncryption');
20
- exports.withUsesNonExemptEncryption = withUsesNonExemptEncryption;
21
20
  function getUsesNonExemptEncryption(config) {
22
- var _config$ios$config$us, _config$ios, _config$ios$config;
23
- return (_config$ios$config$us = config === null || config === void 0 ? void 0 : (_config$ios = config.ios) === null || _config$ios === void 0 ? void 0 : (_config$ios$config = _config$ios.config) === null || _config$ios$config === void 0 ? void 0 : _config$ios$config.usesNonExemptEncryption) !== null && _config$ios$config$us !== void 0 ? _config$ios$config$us : null;
21
+ return config?.ios?.config?.usesNonExemptEncryption ?? null;
24
22
  }
25
23
  function setUsesNonExemptEncryption(config, {
26
24
  ITSAppUsesNonExemptEncryption,
@@ -1 +1 @@
1
- {"version":3,"file":"UsesNonExemptEncryption.js","names":["_iosPlugins","data","require","withUsesNonExemptEncryption","createInfoPlistPluginWithPropertyGuard","setUsesNonExemptEncryption","infoPlistProperty","expoConfigProperty","exports","getUsesNonExemptEncryption","config","_config$ios$config$us","_config$ios","_config$ios$config","ios","usesNonExemptEncryption","ITSAppUsesNonExemptEncryption","infoPlist"],"sources":["../../src/ios/UsesNonExemptEncryption.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withUsesNonExemptEncryption = createInfoPlistPluginWithPropertyGuard(\n setUsesNonExemptEncryption,\n {\n infoPlistProperty: 'ITSAppUsesNonExemptEncryption',\n expoConfigProperty: 'ios.config.usesNonExemptEncryption',\n },\n 'withUsesNonExemptEncryption'\n);\n\nexport function getUsesNonExemptEncryption(config: Pick<ExpoConfig, 'ios'>) {\n return config?.ios?.config?.usesNonExemptEncryption ?? null;\n}\n\nexport function setUsesNonExemptEncryption(\n config: Pick<ExpoConfig, 'ios'>,\n { ITSAppUsesNonExemptEncryption, ...infoPlist }: InfoPlist\n): InfoPlist {\n const usesNonExemptEncryption = getUsesNonExemptEncryption(config);\n\n // Make no changes if the key is left blank\n if (usesNonExemptEncryption === null) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n ITSAppUsesNonExemptEncryption: usesNonExemptEncryption,\n };\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,2BAA2B,GAAG,IAAAC,oDAAsC,EAC/EC,0BAA0B,EAC1B;EACEC,iBAAiB,EAAE,+BAA+B;EAClDC,kBAAkB,EAAE;AACtB,CAAC,EACD,6BACF,CAAC;AAACC,OAAA,CAAAL,2BAAA,GAAAA,2BAAA;AAEK,SAASM,0BAA0BA,CAACC,MAA+B,EAAE;EAAA,IAAAC,qBAAA,EAAAC,WAAA,EAAAC,kBAAA;EAC1E,QAAAF,qBAAA,GAAOD,MAAM,aAANA,MAAM,wBAAAE,WAAA,GAANF,MAAM,CAAEI,GAAG,cAAAF,WAAA,wBAAAC,kBAAA,GAAXD,WAAA,CAAaF,MAAM,cAAAG,kBAAA,uBAAnBA,kBAAA,CAAqBE,uBAAuB,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,IAAI;AAC7D;AAEO,SAASN,0BAA0BA,CACxCK,MAA+B,EAC/B;EAAEM,6BAA6B;EAAE,GAAGC;AAAqB,CAAC,EAC/C;EACX,MAAMF,uBAAuB,GAAGN,0BAA0B,CAACC,MAAM,CAAC;;EAElE;EACA,IAAIK,uBAAuB,KAAK,IAAI,EAAE;IACpC,OAAOE,SAAS;EAClB;EAEA,OAAO;IACL,GAAGA,SAAS;IACZD,6BAA6B,EAAED;EACjC,CAAC;AACH"}
1
+ {"version":3,"file":"UsesNonExemptEncryption.js","names":["_iosPlugins","data","require","withUsesNonExemptEncryption","exports","createInfoPlistPluginWithPropertyGuard","setUsesNonExemptEncryption","infoPlistProperty","expoConfigProperty","getUsesNonExemptEncryption","config","ios","usesNonExemptEncryption","ITSAppUsesNonExemptEncryption","infoPlist"],"sources":["../../src/ios/UsesNonExemptEncryption.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withUsesNonExemptEncryption = createInfoPlistPluginWithPropertyGuard(\n setUsesNonExemptEncryption,\n {\n infoPlistProperty: 'ITSAppUsesNonExemptEncryption',\n expoConfigProperty: 'ios.config.usesNonExemptEncryption',\n },\n 'withUsesNonExemptEncryption'\n);\n\nexport function getUsesNonExemptEncryption(config: Pick<ExpoConfig, 'ios'>) {\n return config?.ios?.config?.usesNonExemptEncryption ?? null;\n}\n\nexport function setUsesNonExemptEncryption(\n config: Pick<ExpoConfig, 'ios'>,\n { ITSAppUsesNonExemptEncryption, ...infoPlist }: InfoPlist\n): InfoPlist {\n const usesNonExemptEncryption = getUsesNonExemptEncryption(config);\n\n // Make no changes if the key is left blank\n if (usesNonExemptEncryption === null) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n ITSAppUsesNonExemptEncryption: usesNonExemptEncryption,\n };\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,IAAAE,oDAAsC,EAC/EC,0BAA0B,EAC1B;EACEC,iBAAiB,EAAE,+BAA+B;EAClDC,kBAAkB,EAAE;AACtB,CAAC,EACD,6BACF,CAAC;AAEM,SAASC,0BAA0BA,CAACC,MAA+B,EAAE;EAC1E,OAAOA,MAAM,EAAEC,GAAG,EAAED,MAAM,EAAEE,uBAAuB,IAAI,IAAI;AAC7D;AAEO,SAASN,0BAA0BA,CACxCI,MAA+B,EAC/B;EAAEG,6BAA6B;EAAE,GAAGC;AAAqB,CAAC,EAC/C;EACX,MAAMF,uBAAuB,GAAGH,0BAA0B,CAACC,MAAM,CAAC;;EAElE;EACA,IAAIE,uBAAuB,KAAK,IAAI,EAAE;IACpC,OAAOE,SAAS;EAClB;EAEA,OAAO;IACL,GAAGA,SAAS;IACZD,6BAA6B,EAAED;EACjC,CAAC;AACH"}
@@ -15,16 +15,14 @@ function _iosPlugins() {
15
15
  };
16
16
  return data;
17
17
  }
18
- const withVersion = (0, _iosPlugins().createInfoPlistPluginWithPropertyGuard)(setVersion, {
18
+ const withVersion = exports.withVersion = (0, _iosPlugins().createInfoPlistPluginWithPropertyGuard)(setVersion, {
19
19
  infoPlistProperty: 'CFBundleShortVersionString',
20
20
  expoConfigProperty: 'version'
21
21
  }, 'withVersion');
22
- exports.withVersion = withVersion;
23
- const withBuildNumber = (0, _iosPlugins().createInfoPlistPluginWithPropertyGuard)(setBuildNumber, {
22
+ const withBuildNumber = exports.withBuildNumber = (0, _iosPlugins().createInfoPlistPluginWithPropertyGuard)(setBuildNumber, {
24
23
  infoPlistProperty: 'CFBundleVersion',
25
24
  expoConfigProperty: 'ios.buildNumber'
26
25
  }, 'withBuildNumber');
27
- exports.withBuildNumber = withBuildNumber;
28
26
  function getVersion(config) {
29
27
  return config.version || '1.0.0';
30
28
  }
@@ -35,8 +33,7 @@ function setVersion(config, infoPlist) {
35
33
  };
36
34
  }
37
35
  function getBuildNumber(config) {
38
- var _config$ios;
39
- return (_config$ios = config.ios) !== null && _config$ios !== void 0 && _config$ios.buildNumber ? config.ios.buildNumber : '1';
36
+ return config.ios?.buildNumber ? config.ios.buildNumber : '1';
40
37
  }
41
38
  function setBuildNumber(config, infoPlist) {
42
39
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"Version.js","names":["_iosPlugins","data","require","withVersion","createInfoPlistPluginWithPropertyGuard","setVersion","infoPlistProperty","expoConfigProperty","exports","withBuildNumber","setBuildNumber","getVersion","config","version","infoPlist","CFBundleShortVersionString","getBuildNumber","_config$ios","ios","buildNumber","CFBundleVersion"],"sources":["../../src/ios/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withVersion = createInfoPlistPluginWithPropertyGuard(\n setVersion,\n {\n infoPlistProperty: 'CFBundleShortVersionString',\n expoConfigProperty: 'version',\n },\n 'withVersion'\n);\n\nexport const withBuildNumber = createInfoPlistPluginWithPropertyGuard(\n setBuildNumber,\n {\n infoPlistProperty: 'CFBundleVersion',\n expoConfigProperty: 'ios.buildNumber',\n },\n 'withBuildNumber'\n);\n\nexport function getVersion(config: Pick<ExpoConfig, 'version'>) {\n return config.version || '1.0.0';\n}\n\nexport function setVersion(config: Pick<ExpoConfig, 'version'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleShortVersionString: getVersion(config),\n };\n}\n\nexport function getBuildNumber(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.buildNumber ? config.ios.buildNumber : '1';\n}\n\nexport function setBuildNumber(config: Pick<ExpoConfig, 'ios'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleVersion: getBuildNumber(config),\n };\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,WAAW,GAAG,IAAAC,oDAAsC,EAC/DC,UAAU,EACV;EACEC,iBAAiB,EAAE,4BAA4B;EAC/CC,kBAAkB,EAAE;AACtB,CAAC,EACD,aACF,CAAC;AAACC,OAAA,CAAAL,WAAA,GAAAA,WAAA;AAEK,MAAMM,eAAe,GAAG,IAAAL,oDAAsC,EACnEM,cAAc,EACd;EACEJ,iBAAiB,EAAE,iBAAiB;EACpCC,kBAAkB,EAAE;AACtB,CAAC,EACD,iBACF,CAAC;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,SAASE,UAAUA,CAACC,MAAmC,EAAE;EAC9D,OAAOA,MAAM,CAACC,OAAO,IAAI,OAAO;AAClC;AAEO,SAASR,UAAUA,CAACO,MAAmC,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZC,0BAA0B,EAAEJ,UAAU,CAACC,MAAM;EAC/C,CAAC;AACH;AAEO,SAASI,cAAcA,CAACJ,MAA+B,EAAE;EAAA,IAAAK,WAAA;EAC9D,OAAO,CAAAA,WAAA,GAAAL,MAAM,CAACM,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,WAAW,GAAGP,MAAM,CAACM,GAAG,CAACC,WAAW,GAAG,GAAG;AAC/D;AAEO,SAAST,cAAcA,CAACE,MAA+B,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZM,eAAe,EAAEJ,cAAc,CAACJ,MAAM;EACxC,CAAC;AACH"}
1
+ {"version":3,"file":"Version.js","names":["_iosPlugins","data","require","withVersion","exports","createInfoPlistPluginWithPropertyGuard","setVersion","infoPlistProperty","expoConfigProperty","withBuildNumber","setBuildNumber","getVersion","config","version","infoPlist","CFBundleShortVersionString","getBuildNumber","ios","buildNumber","CFBundleVersion"],"sources":["../../src/ios/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withVersion = createInfoPlistPluginWithPropertyGuard(\n setVersion,\n {\n infoPlistProperty: 'CFBundleShortVersionString',\n expoConfigProperty: 'version',\n },\n 'withVersion'\n);\n\nexport const withBuildNumber = createInfoPlistPluginWithPropertyGuard(\n setBuildNumber,\n {\n infoPlistProperty: 'CFBundleVersion',\n expoConfigProperty: 'ios.buildNumber',\n },\n 'withBuildNumber'\n);\n\nexport function getVersion(config: Pick<ExpoConfig, 'version'>) {\n return config.version || '1.0.0';\n}\n\nexport function setVersion(config: Pick<ExpoConfig, 'version'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleShortVersionString: getVersion(config),\n };\n}\n\nexport function getBuildNumber(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.buildNumber ? config.ios.buildNumber : '1';\n}\n\nexport function setBuildNumber(config: Pick<ExpoConfig, 'ios'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleVersion: getBuildNumber(config),\n };\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,oDAAsC,EAC/DC,UAAU,EACV;EACEC,iBAAiB,EAAE,4BAA4B;EAC/CC,kBAAkB,EAAE;AACtB,CAAC,EACD,aACF,CAAC;AAEM,MAAMC,eAAe,GAAAL,OAAA,CAAAK,eAAA,GAAG,IAAAJ,oDAAsC,EACnEK,cAAc,EACd;EACEH,iBAAiB,EAAE,iBAAiB;EACpCC,kBAAkB,EAAE;AACtB,CAAC,EACD,iBACF,CAAC;AAEM,SAASG,UAAUA,CAACC,MAAmC,EAAE;EAC9D,OAAOA,MAAM,CAACC,OAAO,IAAI,OAAO;AAClC;AAEO,SAASP,UAAUA,CAACM,MAAmC,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZC,0BAA0B,EAAEJ,UAAU,CAACC,MAAM;EAC/C,CAAC;AACH;AAEO,SAASI,cAAcA,CAACJ,MAA+B,EAAE;EAC9D,OAAOA,MAAM,CAACK,GAAG,EAAEC,WAAW,GAAGN,MAAM,CAACK,GAAG,CAACC,WAAW,GAAG,GAAG;AAC/D;AAEO,SAASR,cAAcA,CAACE,MAA+B,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZK,eAAe,EAAEH,cAAc,CAACJ,MAAM;EACxC,CAAC;AACH"}
@@ -239,7 +239,6 @@ function insertContentsInsideSwiftFunctionBlock(srcContents, selector, insertion
239
239
  return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'swift');
240
240
  }
241
241
  function insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, language) {
242
- var _options$indent;
243
242
  const codeBlock = language === 'objc' ? findObjcFunctionCodeBlock(srcContents, selector) : findSwiftFunctionCodeBlock(srcContents, selector);
244
243
  if (!codeBlock) {
245
244
  return srcContents;
@@ -247,7 +246,7 @@ function insertContentsInsideFunctionBlock(srcContents, selector, insertion, opt
247
246
  const {
248
247
  position
249
248
  } = options;
250
- const indent = ' '.repeat((_options$indent = options.indent) !== null && _options$indent !== void 0 ? _options$indent : 2);
249
+ const indent = ' '.repeat(options.indent ?? 2);
251
250
  if (position === 'head') {
252
251
  srcContents = (0, _commonCodeMod().insertContentsAtOffset)(srcContents, `\n${indent}${insertion}`, codeBlock.start + 1);
253
252
  } else if (position === 'tail') {
@@ -1 +1 @@
1
- {"version":3,"file":"codeMod.js","names":["_commonCodeMod","data","require","_matchBrackets","addObjcImports","source","imports","lines","split","lineIndexWithFirstImport","findIndex","line","match","importElement","includes","importStatement","splice","join","findObjcInterfaceCodeBlock","contents","declaration","start","search","RegExp","end","indexOf","code","substring","findObjcFunctionCodeBlock","selector","symbols","argsCount","length","pattern","i","argSymbol","findMatchingBracketPosition","insertContentsInsideObjcFunctionBlock","srcContents","insertion","options","insertContentsInsideFunctionBlock","insertContentsInsideObjcInterfaceBlock","codeBlock","position","firstNewLineIndex","insertContentsAtOffset","endLen","findSwiftFunctionCodeBlock","parenthesesIndex","funcName","argLabels","searchOffset","funcCandidateRegExp","funcCandidateOffset","searchFromOffset","paramsStartOffset","paramsEndOffset","paramsString","params","map","parseSwiftFunctionParam","argumentLabel","codeBlockStart","codeBlockEnd","paramTuple","semiIndex","parameterName","typeString","trim","insertContentsInsideSwiftClassBlock","Error","firstBracketIndex","endBracketIndex","insertContentsInsideSwiftFunctionBlock","language","_options$indent","indent","repeat","lastReturnIndex","lastIndexOf"],"sources":["../../src/ios/codeMod.ts"],"sourcesContent":["import { CodeBlock, insertContentsAtOffset, searchFromOffset } from '../utils/commonCodeMod';\nimport { findMatchingBracketPosition } from '../utils/matchBrackets';\n\ninterface SwiftFunctionParam {\n argumentLabel: string;\n parameterName: string;\n typeString: string;\n}\n\ninterface InsertContentFunctionOptions {\n position: 'head' | 'tail' | 'tailBeforeLastReturn';\n indent?: number;\n}\n\n/**\n * Add Objective-C import\n * @param source source contents\n * @param imports array of imports, e.g. ['<Foundation/Foundation.h>']\n * @returns updated contents\n */\nexport function addObjcImports(source: string, imports: string[]): string {\n const lines = source.split('\\n');\n // Try to insert statements after first #import where would probably not in #if block\n const lineIndexWithFirstImport = lines.findIndex((line) => line.match(/^#import .*$/));\n for (const importElement of imports) {\n if (!source.includes(importElement)) {\n const importStatement = `#import ${importElement}`;\n lines.splice(lineIndexWithFirstImport + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n\n/**\n * Find code block of Objective-C interface or implementation\n *\n * @param contents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @returns found CodeBlock, or null if not found\n */\nexport function findObjcInterfaceCodeBlock(\n contents: string,\n declaration: string\n): CodeBlock | null {\n const start = contents.search(new RegExp(`^${declaration}\\\\W`, 'm'));\n if (start < 0) {\n return null;\n }\n\n let end = contents.indexOf('\\n@end', start);\n end += 5; // '\\n@end'.length === 5\n\n return {\n start,\n end,\n code: contents.substring(start, end),\n };\n}\n\n/**\n * Find code block of Objective-C function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findObjcFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const symbols = selector.split(':');\n const argsCount = symbols.length - 1;\n let pattern = '^[\\\\-+]\\\\s*\\\\(.+?\\\\)';\n if (argsCount === 0) {\n pattern += `${symbols[0]}\\\\s+`;\n } else {\n for (let i = 0; i < argsCount; ++i) {\n const argSymbol = `${symbols[i]}:\\\\(.+\\\\)\\\\w+`;\n pattern += `${argSymbol}\\\\s+`;\n }\n }\n pattern += '{';\n let start = contents.search(new RegExp(pattern, 'm'));\n if (start < 0) {\n return null;\n }\n start = contents.indexOf('{', start);\n\n const end = findMatchingBracketPosition(contents, '{', start);\n return {\n start,\n end,\n code: contents.substring(start, end + 1),\n };\n}\n\n/**\n * Insert contents to the Objective-C function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'objc');\n}\n\n/**\n * Insert contents to the Objective-C interface/implementation block\n *\n * @param srcContents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcInterfaceBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const codeBlock = findObjcInterfaceCodeBlock(srcContents, declaration);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstNewLineIndex = srcContents.indexOf('\\n', codeBlock.start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstNewLineIndex);\n } else if (position === 'tail') {\n const endLen = '@end'.length;\n srcContents = insertContentsAtOffset(srcContents, insertion, codeBlock.end - endLen);\n }\n return srcContents;\n}\n\n/**\n * Find code block of Swift function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething(_:withSomeValue:)'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findSwiftFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const parenthesesIndex = selector.indexOf('(');\n // `functName` === 'doSomething' of 'doSomething(_:withSomeValue:)'\n const funcName = selector.substring(0, parenthesesIndex);\n // `argLabels` === ['_', 'withSomeValue'] 'doSomething(_:withSomeValue:)'\n const argLabels = selector.substring(parenthesesIndex + 1, selector.length - 2).split(':');\n\n let searchOffset = 0;\n const funcCandidateRegExp = new RegExp(`\\\\sfunc\\\\s+${funcName}\\\\(`, 'm');\n let funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n while (funcCandidateOffset >= 0) {\n // Parse function parameters\n const paramsStartOffset = contents.indexOf('(', funcCandidateOffset);\n const paramsEndOffset = findMatchingBracketPosition(contents, '(', paramsStartOffset);\n const paramsString = contents.substring(paramsStartOffset + 1, paramsEndOffset);\n const params = paramsString.split(',').map(parseSwiftFunctionParam);\n\n // Prepare offset for next round\n searchOffset = paramsEndOffset + 1;\n funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n\n // Try to match function parameters\n if (argLabels.length !== params.length) {\n continue;\n }\n for (let i = 0; i < argLabels.length; ++i) {\n if (argLabels[i] !== params[i].argumentLabel) {\n continue;\n }\n }\n\n // This function is matched one, get the code block.\n const codeBlockStart = contents.indexOf('{', paramsEndOffset);\n const codeBlockEnd = findMatchingBracketPosition(contents, '{', paramsEndOffset);\n const codeBlock = contents.substring(codeBlockStart, codeBlockEnd + 1);\n return {\n start: codeBlockStart,\n end: codeBlockEnd,\n code: codeBlock,\n };\n }\n\n return null;\n}\n\nfunction parseSwiftFunctionParam(paramTuple: string): SwiftFunctionParam {\n const semiIndex = paramTuple.indexOf(':');\n const [argumentLabel, parameterName] = paramTuple.substring(0, semiIndex).split(/\\s+/);\n const typeString = paramTuple.substring(semiIndex + 1).trim();\n return {\n argumentLabel,\n parameterName,\n typeString,\n };\n}\n\n/**\n * Insert contents to the swift class block\n *\n * @param srcContents source contents\n * @param declaration class/extension declaration, e.g. 'class AppDelegate'\n * @param insertion code to append\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftClassBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const start = srcContents.search(new RegExp(`\\\\s*${declaration}.*?[\\\\(\\\\{]`));\n if (start < 0) {\n throw new Error(`Unable to find class code block - declaration[${declaration}]`);\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstBracketIndex = srcContents.indexOf('{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstBracketIndex + 1);\n } else if (position === 'tail') {\n const endBracketIndex = findMatchingBracketPosition(srcContents, '{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, endBracketIndex);\n }\n return srcContents;\n}\n\n/**\n * Insert contents to the Swift function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'swift');\n}\n\nfunction insertContentsInsideFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions,\n language: 'objc' | 'swift'\n): string {\n const codeBlock =\n language === 'objc'\n ? findObjcFunctionCodeBlock(srcContents, selector)\n : findSwiftFunctionCodeBlock(srcContents, selector);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n const indent = ' '.repeat(options.indent ?? 2);\n\n if (position === 'head') {\n srcContents = insertContentsAtOffset(\n srcContents,\n `\\n${indent}${insertion}`,\n codeBlock.start + 1\n );\n } else if (position === 'tail') {\n srcContents = insertContentsAtOffset(srcContents, `\\n${indent}${insertion}`, codeBlock.end - 1);\n } else if (position === 'tailBeforeLastReturn') {\n let lastReturnIndex = srcContents.lastIndexOf(' return ', codeBlock.end);\n if (lastReturnIndex < 0) {\n throw new Error(`Cannot find last return statement:\\n${srcContents}`);\n }\n lastReturnIndex += 1; // +1 for the prefix space\n srcContents = insertContentsAtOffset(srcContents, `${insertion}\\n${indent}`, lastReturnIndex);\n }\n\n return srcContents;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"codeMod.js","names":["_commonCodeMod","data","require","_matchBrackets","addObjcImports","source","imports","lines","split","lineIndexWithFirstImport","findIndex","line","match","importElement","includes","importStatement","splice","join","findObjcInterfaceCodeBlock","contents","declaration","start","search","RegExp","end","indexOf","code","substring","findObjcFunctionCodeBlock","selector","symbols","argsCount","length","pattern","i","argSymbol","findMatchingBracketPosition","insertContentsInsideObjcFunctionBlock","srcContents","insertion","options","insertContentsInsideFunctionBlock","insertContentsInsideObjcInterfaceBlock","codeBlock","position","firstNewLineIndex","insertContentsAtOffset","endLen","findSwiftFunctionCodeBlock","parenthesesIndex","funcName","argLabels","searchOffset","funcCandidateRegExp","funcCandidateOffset","searchFromOffset","paramsStartOffset","paramsEndOffset","paramsString","params","map","parseSwiftFunctionParam","argumentLabel","codeBlockStart","codeBlockEnd","paramTuple","semiIndex","parameterName","typeString","trim","insertContentsInsideSwiftClassBlock","Error","firstBracketIndex","endBracketIndex","insertContentsInsideSwiftFunctionBlock","language","indent","repeat","lastReturnIndex","lastIndexOf"],"sources":["../../src/ios/codeMod.ts"],"sourcesContent":["import { CodeBlock, insertContentsAtOffset, searchFromOffset } from '../utils/commonCodeMod';\nimport { findMatchingBracketPosition } from '../utils/matchBrackets';\n\ninterface SwiftFunctionParam {\n argumentLabel: string;\n parameterName: string;\n typeString: string;\n}\n\ninterface InsertContentFunctionOptions {\n position: 'head' | 'tail' | 'tailBeforeLastReturn';\n indent?: number;\n}\n\n/**\n * Add Objective-C import\n * @param source source contents\n * @param imports array of imports, e.g. ['<Foundation/Foundation.h>']\n * @returns updated contents\n */\nexport function addObjcImports(source: string, imports: string[]): string {\n const lines = source.split('\\n');\n // Try to insert statements after first #import where would probably not in #if block\n const lineIndexWithFirstImport = lines.findIndex((line) => line.match(/^#import .*$/));\n for (const importElement of imports) {\n if (!source.includes(importElement)) {\n const importStatement = `#import ${importElement}`;\n lines.splice(lineIndexWithFirstImport + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n\n/**\n * Find code block of Objective-C interface or implementation\n *\n * @param contents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @returns found CodeBlock, or null if not found\n */\nexport function findObjcInterfaceCodeBlock(\n contents: string,\n declaration: string\n): CodeBlock | null {\n const start = contents.search(new RegExp(`^${declaration}\\\\W`, 'm'));\n if (start < 0) {\n return null;\n }\n\n let end = contents.indexOf('\\n@end', start);\n end += 5; // '\\n@end'.length === 5\n\n return {\n start,\n end,\n code: contents.substring(start, end),\n };\n}\n\n/**\n * Find code block of Objective-C function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findObjcFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const symbols = selector.split(':');\n const argsCount = symbols.length - 1;\n let pattern = '^[\\\\-+]\\\\s*\\\\(.+?\\\\)';\n if (argsCount === 0) {\n pattern += `${symbols[0]}\\\\s+`;\n } else {\n for (let i = 0; i < argsCount; ++i) {\n const argSymbol = `${symbols[i]}:\\\\(.+\\\\)\\\\w+`;\n pattern += `${argSymbol}\\\\s+`;\n }\n }\n pattern += '{';\n let start = contents.search(new RegExp(pattern, 'm'));\n if (start < 0) {\n return null;\n }\n start = contents.indexOf('{', start);\n\n const end = findMatchingBracketPosition(contents, '{', start);\n return {\n start,\n end,\n code: contents.substring(start, end + 1),\n };\n}\n\n/**\n * Insert contents to the Objective-C function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'objc');\n}\n\n/**\n * Insert contents to the Objective-C interface/implementation block\n *\n * @param srcContents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcInterfaceBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const codeBlock = findObjcInterfaceCodeBlock(srcContents, declaration);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstNewLineIndex = srcContents.indexOf('\\n', codeBlock.start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstNewLineIndex);\n } else if (position === 'tail') {\n const endLen = '@end'.length;\n srcContents = insertContentsAtOffset(srcContents, insertion, codeBlock.end - endLen);\n }\n return srcContents;\n}\n\n/**\n * Find code block of Swift function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething(_:withSomeValue:)'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findSwiftFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const parenthesesIndex = selector.indexOf('(');\n // `functName` === 'doSomething' of 'doSomething(_:withSomeValue:)'\n const funcName = selector.substring(0, parenthesesIndex);\n // `argLabels` === ['_', 'withSomeValue'] 'doSomething(_:withSomeValue:)'\n const argLabels = selector.substring(parenthesesIndex + 1, selector.length - 2).split(':');\n\n let searchOffset = 0;\n const funcCandidateRegExp = new RegExp(`\\\\sfunc\\\\s+${funcName}\\\\(`, 'm');\n let funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n while (funcCandidateOffset >= 0) {\n // Parse function parameters\n const paramsStartOffset = contents.indexOf('(', funcCandidateOffset);\n const paramsEndOffset = findMatchingBracketPosition(contents, '(', paramsStartOffset);\n const paramsString = contents.substring(paramsStartOffset + 1, paramsEndOffset);\n const params = paramsString.split(',').map(parseSwiftFunctionParam);\n\n // Prepare offset for next round\n searchOffset = paramsEndOffset + 1;\n funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n\n // Try to match function parameters\n if (argLabels.length !== params.length) {\n continue;\n }\n for (let i = 0; i < argLabels.length; ++i) {\n if (argLabels[i] !== params[i].argumentLabel) {\n continue;\n }\n }\n\n // This function is matched one, get the code block.\n const codeBlockStart = contents.indexOf('{', paramsEndOffset);\n const codeBlockEnd = findMatchingBracketPosition(contents, '{', paramsEndOffset);\n const codeBlock = contents.substring(codeBlockStart, codeBlockEnd + 1);\n return {\n start: codeBlockStart,\n end: codeBlockEnd,\n code: codeBlock,\n };\n }\n\n return null;\n}\n\nfunction parseSwiftFunctionParam(paramTuple: string): SwiftFunctionParam {\n const semiIndex = paramTuple.indexOf(':');\n const [argumentLabel, parameterName] = paramTuple.substring(0, semiIndex).split(/\\s+/);\n const typeString = paramTuple.substring(semiIndex + 1).trim();\n return {\n argumentLabel,\n parameterName,\n typeString,\n };\n}\n\n/**\n * Insert contents to the swift class block\n *\n * @param srcContents source contents\n * @param declaration class/extension declaration, e.g. 'class AppDelegate'\n * @param insertion code to append\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftClassBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const start = srcContents.search(new RegExp(`\\\\s*${declaration}.*?[\\\\(\\\\{]`));\n if (start < 0) {\n throw new Error(`Unable to find class code block - declaration[${declaration}]`);\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstBracketIndex = srcContents.indexOf('{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstBracketIndex + 1);\n } else if (position === 'tail') {\n const endBracketIndex = findMatchingBracketPosition(srcContents, '{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, endBracketIndex);\n }\n return srcContents;\n}\n\n/**\n * Insert contents to the Swift function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'swift');\n}\n\nfunction insertContentsInsideFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions,\n language: 'objc' | 'swift'\n): string {\n const codeBlock =\n language === 'objc'\n ? findObjcFunctionCodeBlock(srcContents, selector)\n : findSwiftFunctionCodeBlock(srcContents, selector);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n const indent = ' '.repeat(options.indent ?? 2);\n\n if (position === 'head') {\n srcContents = insertContentsAtOffset(\n srcContents,\n `\\n${indent}${insertion}`,\n codeBlock.start + 1\n );\n } else if (position === 'tail') {\n srcContents = insertContentsAtOffset(srcContents, `\\n${indent}${insertion}`, codeBlock.end - 1);\n } else if (position === 'tailBeforeLastReturn') {\n let lastReturnIndex = srcContents.lastIndexOf(' return ', codeBlock.end);\n if (lastReturnIndex < 0) {\n throw new Error(`Cannot find last return statement:\\n${srcContents}`);\n }\n lastReturnIndex += 1; // +1 for the prefix space\n srcContents = insertContentsAtOffset(srcContents, `${insertion}\\n${indent}`, lastReturnIndex);\n }\n\n return srcContents;\n}\n"],"mappings":"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"}
@@ -337,6 +337,6 @@ Object.defineProperty(exports, "XcodeUtils", {
337
337
  return XcodeUtils();
338
338
  }
339
339
  });
340
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
341
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
340
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
341
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
342
342
  //# sourceMappingURL=index.js.map