@use-voltra/ios-client 1.4.0 → 2.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/README.md +113 -0
  2. package/Voltra.podspec +28 -0
  3. package/build/commonjs/VoltraModule.js +13 -0
  4. package/build/commonjs/VoltraModule.js.map +1 -0
  5. package/build/commonjs/components/VoltraLiveActivityPreview.js +30 -0
  6. package/build/commonjs/components/VoltraLiveActivityPreview.js.map +1 -0
  7. package/build/commonjs/components/VoltraView.js +50 -0
  8. package/build/commonjs/components/VoltraView.js.map +1 -0
  9. package/build/commonjs/components/VoltraWidgetPreview.js +58 -0
  10. package/build/commonjs/components/VoltraWidgetPreview.js.map +1 -0
  11. package/build/commonjs/events.js +32 -0
  12. package/build/commonjs/events.js.map +1 -0
  13. package/build/commonjs/helpers.js +26 -0
  14. package/build/commonjs/helpers.js.map +1 -0
  15. package/build/commonjs/index.js +226 -0
  16. package/build/commonjs/index.js.map +1 -0
  17. package/build/commonjs/live-activity/api.js +168 -0
  18. package/build/commonjs/live-activity/api.js.map +1 -0
  19. package/build/commonjs/logger.js +39 -0
  20. package/build/commonjs/logger.js.map +1 -0
  21. package/build/commonjs/native/NativeVoltra.js +15 -0
  22. package/build/commonjs/native/NativeVoltra.js.map +1 -0
  23. package/build/commonjs/native/VoltraRNNativeComponent.ts +9 -0
  24. package/build/commonjs/package.json +1 -0
  25. package/build/commonjs/preload.js +54 -0
  26. package/build/commonjs/preload.js.map +1 -0
  27. package/build/commonjs/types.js +2 -0
  28. package/build/commonjs/types.js.map +1 -0
  29. package/build/commonjs/utils/assertRunningOnApple.js +16 -0
  30. package/build/commonjs/utils/assertRunningOnApple.js.map +1 -0
  31. package/build/commonjs/utils/helpers.js +19 -0
  32. package/build/commonjs/utils/helpers.js.map +1 -0
  33. package/build/commonjs/utils/index.js +28 -0
  34. package/build/commonjs/utils/index.js.map +1 -0
  35. package/build/commonjs/utils/useUpdateOnHMR.js +25 -0
  36. package/build/commonjs/utils/useUpdateOnHMR.js.map +1 -0
  37. package/build/commonjs/widgets/server-credentials.js +18 -0
  38. package/build/commonjs/widgets/server-credentials.js.map +1 -0
  39. package/build/commonjs/widgets/widget-api.js +55 -0
  40. package/build/commonjs/widgets/widget-api.js.map +1 -0
  41. package/build/module/VoltraModule.js +4 -0
  42. package/build/module/VoltraModule.js.map +1 -0
  43. package/build/module/components/VoltraLiveActivityPreview.js +25 -0
  44. package/build/module/components/VoltraLiveActivityPreview.js.map +1 -0
  45. package/build/module/components/VoltraView.js +44 -0
  46. package/build/module/components/VoltraView.js.map +1 -0
  47. package/build/module/components/VoltraWidgetPreview.js +53 -0
  48. package/build/module/components/VoltraWidgetPreview.js.map +1 -0
  49. package/build/module/events.js +28 -0
  50. package/build/module/events.js.map +1 -0
  51. package/build/module/helpers.js +21 -0
  52. package/build/module/helpers.js.map +1 -0
  53. package/build/module/index.js +17 -0
  54. package/build/module/index.js.map +1 -0
  55. package/build/module/live-activity/api.js +158 -0
  56. package/build/module/live-activity/api.js.map +1 -0
  57. package/build/module/logger.js +35 -0
  58. package/build/module/logger.js.map +1 -0
  59. package/build/module/native/NativeVoltra.js +11 -0
  60. package/build/module/native/NativeVoltra.js.map +1 -0
  61. package/build/module/native/VoltraRNNativeComponent.ts +9 -0
  62. package/build/module/package.json +1 -0
  63. package/build/module/preload.js +48 -0
  64. package/build/module/preload.js.map +1 -0
  65. package/build/module/types.js +2 -0
  66. package/build/module/types.js.map +1 -0
  67. package/build/module/utils/assertRunningOnApple.js +11 -0
  68. package/build/module/utils/assertRunningOnApple.js.map +1 -0
  69. package/build/module/utils/helpers.js +4 -0
  70. package/build/module/utils/helpers.js.map +1 -0
  71. package/build/module/utils/index.js +5 -0
  72. package/build/module/utils/index.js.map +1 -0
  73. package/build/module/utils/useUpdateOnHMR.js +20 -0
  74. package/build/module/utils/useUpdateOnHMR.js.map +1 -0
  75. package/build/module/widgets/server-credentials.js +13 -0
  76. package/build/module/widgets/server-credentials.js.map +1 -0
  77. package/build/module/widgets/widget-api.js +45 -0
  78. package/build/module/widgets/widget-api.js.map +1 -0
  79. package/build/typescript/commonjs/VoltraModule.d.ts +3 -0
  80. package/build/typescript/commonjs/VoltraModule.d.ts.map +1 -0
  81. package/build/typescript/commonjs/components/VoltraLiveActivityPreview.d.ts.map +1 -0
  82. package/build/typescript/commonjs/components/VoltraView.d.ts.map +1 -0
  83. package/build/typescript/commonjs/components/VoltraWidgetPreview.d.ts.map +1 -0
  84. package/build/typescript/commonjs/events.d.ts.map +1 -0
  85. package/build/typescript/commonjs/helpers.d.ts.map +1 -0
  86. package/build/{types → typescript/commonjs}/index.d.ts +5 -0
  87. package/build/typescript/commonjs/index.d.ts.map +1 -0
  88. package/build/typescript/commonjs/live-activity/api.d.ts.map +1 -0
  89. package/build/typescript/commonjs/logger.d.ts.map +1 -0
  90. package/build/typescript/commonjs/native/NativeVoltra.d.ts +100 -0
  91. package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -0
  92. package/build/typescript/commonjs/native/VoltraRNNativeComponent.d.ts +8 -0
  93. package/build/typescript/commonjs/native/VoltraRNNativeComponent.d.ts.map +1 -0
  94. package/build/typescript/commonjs/package.json +1 -0
  95. package/build/typescript/commonjs/preload.d.ts.map +1 -0
  96. package/build/typescript/commonjs/types.d.ts.map +1 -0
  97. package/build/typescript/commonjs/utils/assertRunningOnApple.d.ts.map +1 -0
  98. package/build/typescript/commonjs/utils/helpers.d.ts.map +1 -0
  99. package/build/typescript/commonjs/utils/index.d.ts.map +1 -0
  100. package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts.map +1 -0
  101. package/build/typescript/commonjs/widgets/server-credentials.d.ts.map +1 -0
  102. package/build/typescript/commonjs/widgets/widget-api.d.ts.map +1 -0
  103. package/build/typescript/module/VoltraModule.d.ts +3 -0
  104. package/build/typescript/module/VoltraModule.d.ts.map +1 -0
  105. package/build/typescript/module/components/VoltraLiveActivityPreview.d.ts +7 -0
  106. package/build/typescript/module/components/VoltraLiveActivityPreview.d.ts.map +1 -0
  107. package/build/typescript/module/components/VoltraView.d.ts +12 -0
  108. package/build/typescript/module/components/VoltraView.d.ts.map +1 -0
  109. package/build/typescript/module/components/VoltraWidgetPreview.d.ts +9 -0
  110. package/build/typescript/module/components/VoltraWidgetPreview.d.ts.map +1 -0
  111. package/build/typescript/module/events.d.ts +33 -0
  112. package/build/typescript/module/events.d.ts.map +1 -0
  113. package/build/typescript/module/helpers.d.ts +3 -0
  114. package/build/typescript/module/helpers.d.ts.map +1 -0
  115. package/build/typescript/module/index.d.ts +18 -0
  116. package/build/typescript/module/index.d.ts.map +1 -0
  117. package/build/typescript/module/live-activity/api.d.ts +35 -0
  118. package/build/typescript/module/live-activity/api.d.ts.map +1 -0
  119. package/build/typescript/module/logger.d.ts +16 -0
  120. package/build/typescript/module/logger.d.ts.map +1 -0
  121. package/build/typescript/module/native/NativeVoltra.d.ts +100 -0
  122. package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -0
  123. package/build/typescript/module/native/VoltraRNNativeComponent.d.ts +8 -0
  124. package/build/typescript/module/native/VoltraRNNativeComponent.d.ts.map +1 -0
  125. package/build/typescript/module/package.json +1 -0
  126. package/build/typescript/module/preload.d.ts +6 -0
  127. package/build/typescript/module/preload.d.ts.map +1 -0
  128. package/build/typescript/module/types.d.ts +2 -0
  129. package/build/typescript/module/types.d.ts.map +1 -0
  130. package/build/typescript/module/utils/assertRunningOnApple.d.ts +2 -0
  131. package/build/typescript/module/utils/assertRunningOnApple.d.ts.map +1 -0
  132. package/build/{esm/utils/helpers.js → typescript/module/utils/helpers.d.ts} +1 -1
  133. package/build/typescript/module/utils/helpers.d.ts.map +1 -0
  134. package/build/{esm/utils/index.js → typescript/module/utils/index.d.ts} +1 -1
  135. package/build/typescript/module/utils/index.d.ts.map +1 -0
  136. package/build/typescript/module/utils/useUpdateOnHMR.d.ts +5 -0
  137. package/build/typescript/module/utils/useUpdateOnHMR.d.ts.map +1 -0
  138. package/build/typescript/module/widgets/server-credentials.d.ts +5 -0
  139. package/build/typescript/module/widgets/server-credentials.d.ts.map +1 -0
  140. package/build/typescript/module/widgets/widget-api.d.ts +11 -0
  141. package/build/typescript/module/widgets/widget-api.d.ts.map +1 -0
  142. package/expo-plugin/app.plugin.js +3 -0
  143. package/expo-plugin/build/cjs/constants.js +23 -0
  144. package/expo-plugin/build/cjs/constants.js.map +1 -0
  145. package/expo-plugin/build/cjs/index.js +51 -0
  146. package/expo-plugin/build/cjs/index.js.map +1 -0
  147. package/expo-plugin/build/cjs/ios/eas.js +28 -0
  148. package/expo-plugin/build/cjs/ios/eas.js.map +1 -0
  149. package/expo-plugin/build/cjs/ios/entitlements.js +46 -0
  150. package/expo-plugin/build/cjs/ios/entitlements.js.map +1 -0
  151. package/expo-plugin/build/cjs/ios/index.js +39 -0
  152. package/expo-plugin/build/cjs/ios/index.js.map +1 -0
  153. package/expo-plugin/build/cjs/ios/infoPlist.js +51 -0
  154. package/expo-plugin/build/cjs/ios/infoPlist.js.map +1 -0
  155. package/expo-plugin/build/cjs/ios/pushNotifications.js +22 -0
  156. package/expo-plugin/build/cjs/ios/pushNotifications.js.map +1 -0
  157. package/expo-plugin/build/cjs/ios-widget/eas.js +66 -0
  158. package/expo-plugin/build/cjs/ios-widget/eas.js.map +1 -0
  159. package/expo-plugin/build/cjs/ios-widget/files/assets.js +199 -0
  160. package/expo-plugin/build/cjs/ios-widget/files/assets.js.map +1 -0
  161. package/expo-plugin/build/cjs/ios-widget/files/entitlements.js +77 -0
  162. package/expo-plugin/build/cjs/ios-widget/files/entitlements.js.map +1 -0
  163. package/expo-plugin/build/cjs/ios-widget/files/index.js +92 -0
  164. package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -0
  165. package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js +91 -0
  166. package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js.map +1 -0
  167. package/expo-plugin/build/cjs/ios-widget/files/swift.js +443 -0
  168. package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -0
  169. package/expo-plugin/build/cjs/ios-widget/fonts.js +151 -0
  170. package/expo-plugin/build/cjs/ios-widget/fonts.js.map +1 -0
  171. package/expo-plugin/build/cjs/ios-widget/index.js +46 -0
  172. package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -0
  173. package/expo-plugin/build/cjs/ios-widget/podfile.js +41 -0
  174. package/expo-plugin/build/cjs/ios-widget/podfile.js.map +1 -0
  175. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +99 -0
  176. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -0
  177. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +247 -0
  178. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -0
  179. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js +91 -0
  180. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js.map +1 -0
  181. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js +79 -0
  182. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js.map +1 -0
  183. package/expo-plugin/build/cjs/ios-widget/xcode/index.js +155 -0
  184. package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -0
  185. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js +71 -0
  186. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -0
  187. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js +74 -0
  188. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js.map +1 -0
  189. package/expo-plugin/build/cjs/ios-widget/xcode/target.js +113 -0
  190. package/expo-plugin/build/cjs/ios-widget/xcode/target.js.map +1 -0
  191. package/expo-plugin/build/cjs/utils/fileDiscovery.js +120 -0
  192. package/expo-plugin/build/cjs/utils/fileDiscovery.js.map +1 -0
  193. package/expo-plugin/build/cjs/utils/urlScheme.js +40 -0
  194. package/expo-plugin/build/cjs/utils/urlScheme.js.map +1 -0
  195. package/expo-plugin/build/cjs/validation.js +55 -0
  196. package/expo-plugin/build/cjs/validation.js.map +1 -0
  197. package/expo-plugin/build/esm/constants.js +20 -0
  198. package/expo-plugin/build/esm/constants.js.map +1 -0
  199. package/expo-plugin/build/esm/index.js +49 -0
  200. package/expo-plugin/build/esm/index.js.map +1 -0
  201. package/expo-plugin/build/esm/ios/eas.js +24 -0
  202. package/expo-plugin/build/esm/ios/eas.js.map +1 -0
  203. package/expo-plugin/build/esm/ios/entitlements.js +42 -0
  204. package/expo-plugin/build/esm/ios/entitlements.js.map +1 -0
  205. package/expo-plugin/build/esm/ios/index.js +34 -0
  206. package/expo-plugin/build/esm/ios/index.js.map +1 -0
  207. package/expo-plugin/build/esm/ios/infoPlist.js +47 -0
  208. package/expo-plugin/build/esm/ios/infoPlist.js.map +1 -0
  209. package/expo-plugin/build/esm/ios/pushNotifications.js +18 -0
  210. package/expo-plugin/build/esm/ios/pushNotifications.js.map +1 -0
  211. package/expo-plugin/build/esm/ios-widget/eas.js +62 -0
  212. package/expo-plugin/build/esm/ios-widget/eas.js.map +1 -0
  213. package/expo-plugin/build/esm/ios-widget/files/assets.js +163 -0
  214. package/expo-plugin/build/esm/ios-widget/files/assets.js.map +1 -0
  215. package/expo-plugin/build/esm/ios-widget/files/entitlements.js +37 -0
  216. package/expo-plugin/build/esm/ios-widget/files/entitlements.js.map +1 -0
  217. package/expo-plugin/build/esm/ios-widget/files/index.js +55 -0
  218. package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -0
  219. package/expo-plugin/build/esm/ios-widget/files/infoPlist.js +55 -0
  220. package/expo-plugin/build/esm/ios-widget/files/infoPlist.js.map +1 -0
  221. package/expo-plugin/build/esm/ios-widget/files/swift.js +403 -0
  222. package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -0
  223. package/expo-plugin/build/esm/ios-widget/fonts.js +111 -0
  224. package/expo-plugin/build/esm/ios-widget/fonts.js.map +1 -0
  225. package/expo-plugin/build/esm/ios-widget/index.js +42 -0
  226. package/expo-plugin/build/esm/ios-widget/index.js.map +1 -0
  227. package/expo-plugin/build/esm/ios-widget/podfile.js +37 -0
  228. package/expo-plugin/build/esm/ios-widget/podfile.js.map +1 -0
  229. package/expo-plugin/build/esm/ios-widget/widgetPlist.js +92 -0
  230. package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -0
  231. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +210 -0
  232. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -0
  233. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js +87 -0
  234. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js.map +1 -0
  235. package/expo-plugin/build/esm/ios-widget/xcode/groups.js +75 -0
  236. package/expo-plugin/build/esm/ios-widget/xcode/groups.js.map +1 -0
  237. package/expo-plugin/build/esm/ios-widget/xcode/index.js +118 -0
  238. package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -0
  239. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js +68 -0
  240. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -0
  241. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js +70 -0
  242. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js.map +1 -0
  243. package/expo-plugin/build/esm/ios-widget/xcode/target.js +108 -0
  244. package/expo-plugin/build/esm/ios-widget/xcode/target.js.map +1 -0
  245. package/expo-plugin/build/esm/utils/fileDiscovery.js +83 -0
  246. package/expo-plugin/build/esm/utils/fileDiscovery.js.map +1 -0
  247. package/expo-plugin/build/esm/utils/urlScheme.js +37 -0
  248. package/expo-plugin/build/esm/utils/urlScheme.js.map +1 -0
  249. package/expo-plugin/build/esm/validation.js +51 -0
  250. package/expo-plugin/build/esm/validation.js.map +1 -0
  251. package/expo-plugin/build/types/constants.d.ts +13 -0
  252. package/expo-plugin/build/types/constants.d.ts.map +1 -0
  253. package/expo-plugin/build/types/index.d.ts +10 -0
  254. package/expo-plugin/build/types/index.d.ts.map +1 -0
  255. package/expo-plugin/build/types/ios/eas.d.ts +12 -0
  256. package/expo-plugin/build/types/ios/eas.d.ts.map +1 -0
  257. package/expo-plugin/build/types/ios/entitlements.d.ts +14 -0
  258. package/expo-plugin/build/types/ios/entitlements.d.ts.map +1 -0
  259. package/expo-plugin/build/types/ios/index.d.ts +19 -0
  260. package/expo-plugin/build/types/ios/index.d.ts.map +1 -0
  261. package/expo-plugin/build/types/ios/infoPlist.d.ts +21 -0
  262. package/expo-plugin/build/types/ios/infoPlist.d.ts.map +1 -0
  263. package/expo-plugin/build/types/ios/pushNotifications.d.ts +10 -0
  264. package/expo-plugin/build/types/ios/pushNotifications.d.ts.map +1 -0
  265. package/expo-plugin/build/types/ios-widget/eas.d.ts +15 -0
  266. package/expo-plugin/build/types/ios-widget/eas.d.ts.map +1 -0
  267. package/expo-plugin/build/types/ios-widget/files/assets.d.ts +13 -0
  268. package/expo-plugin/build/types/ios-widget/files/assets.d.ts.map +1 -0
  269. package/expo-plugin/build/types/ios-widget/files/entitlements.d.ts +17 -0
  270. package/expo-plugin/build/types/ios-widget/files/entitlements.d.ts.map +1 -0
  271. package/expo-plugin/build/types/ios-widget/files/index.d.ts +24 -0
  272. package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -0
  273. package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts +10 -0
  274. package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts.map +1 -0
  275. package/expo-plugin/build/types/ios-widget/files/swift.d.ts +24 -0
  276. package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -0
  277. package/expo-plugin/build/types/ios-widget/fonts.d.ts +22 -0
  278. package/expo-plugin/build/types/ios-widget/fonts.d.ts.map +1 -0
  279. package/expo-plugin/build/types/ios-widget/index.d.ts +31 -0
  280. package/expo-plugin/build/types/ios-widget/index.d.ts.map +1 -0
  281. package/expo-plugin/build/types/ios-widget/podfile.d.ts +9 -0
  282. package/expo-plugin/build/types/ios-widget/podfile.d.ts.map +1 -0
  283. package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts +20 -0
  284. package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -0
  285. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +25 -0
  286. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -0
  287. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts +20 -0
  288. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -0
  289. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts +15 -0
  290. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts.map +1 -0
  291. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +20 -0
  292. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -0
  293. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts +15 -0
  294. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -0
  295. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts +14 -0
  296. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts.map +1 -0
  297. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts +42 -0
  298. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts.map +1 -0
  299. package/expo-plugin/build/types/types.d.ts +74 -0
  300. package/expo-plugin/build/types/types.d.ts.map +1 -0
  301. package/expo-plugin/build/types/utils/fileDiscovery.d.ts +15 -0
  302. package/expo-plugin/build/types/utils/fileDiscovery.d.ts.map +1 -0
  303. package/expo-plugin/build/types/utils/urlScheme.d.ts +10 -0
  304. package/expo-plugin/build/types/utils/urlScheme.d.ts.map +1 -0
  305. package/expo-plugin/build/types/validation.d.ts +4 -0
  306. package/expo-plugin/build/types/validation.d.ts.map +1 -0
  307. package/expo-plugin/jest.config.js +18 -0
  308. package/expo-plugin/src/constants.ts +25 -0
  309. package/expo-plugin/src/index.ts +72 -0
  310. package/expo-plugin/src/ios/eas.ts +33 -0
  311. package/expo-plugin/src/ios/entitlements.ts +59 -0
  312. package/expo-plugin/src/ios/index.ts +47 -0
  313. package/expo-plugin/src/ios/infoPlist.ts +63 -0
  314. package/expo-plugin/src/ios/pushNotifications.ts +22 -0
  315. package/expo-plugin/src/ios-widget/eas.ts +79 -0
  316. package/expo-plugin/src/ios-widget/files/assets.ts +201 -0
  317. package/expo-plugin/src/ios-widget/files/entitlements.ts +48 -0
  318. package/expo-plugin/src/ios-widget/files/index.ts +74 -0
  319. package/expo-plugin/src/ios-widget/files/infoPlist.ts +57 -0
  320. package/expo-plugin/src/ios-widget/files/swift.node.test.ts +22 -0
  321. package/expo-plugin/src/ios-widget/files/swift.ts +476 -0
  322. package/expo-plugin/src/ios-widget/fonts.ts +132 -0
  323. package/expo-plugin/src/ios-widget/index.ts +73 -0
  324. package/expo-plugin/src/ios-widget/podfile.ts +44 -0
  325. package/expo-plugin/src/ios-widget/widgetPlist.ts +115 -0
  326. package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +301 -0
  327. package/expo-plugin/src/ios-widget/xcode/configurationList.ts +127 -0
  328. package/expo-plugin/src/ios-widget/xcode/groups.ts +101 -0
  329. package/expo-plugin/src/ios-widget/xcode/index.ts +149 -0
  330. package/expo-plugin/src/ios-widget/xcode/mainAppSettings.ts +95 -0
  331. package/expo-plugin/src/ios-widget/xcode/productFile.ts +91 -0
  332. package/expo-plugin/src/ios-widget/xcode/target.ts +148 -0
  333. package/expo-plugin/src/types.ts +89 -0
  334. package/expo-plugin/src/utils/fileDiscovery.ts +96 -0
  335. package/expo-plugin/src/utils/urlScheme.ts +45 -0
  336. package/expo-plugin/src/validation.node.test.ts +19 -0
  337. package/expo-plugin/src/validation.ts +63 -0
  338. package/expo-plugin/tsconfig.base.json +17 -0
  339. package/expo-plugin/tsconfig.cjs.json +9 -0
  340. package/expo-plugin/tsconfig.esm.json +9 -0
  341. package/expo-plugin/tsconfig.jest.json +8 -0
  342. package/expo-plugin/tsconfig.typecheck.json +12 -0
  343. package/expo-plugin/tsconfig.types.json +10 -0
  344. package/ios/Package.swift +68 -0
  345. package/ios/Tests/JSGradientParserTests.swift +201 -0
  346. package/ios/Tests/VoltraSharedTests/SmokeTests.swift +8 -0
  347. package/ios/VoltraWidget.podspec +30 -0
  348. package/ios/app/NativeVoltra.h +5 -0
  349. package/ios/app/NativeVoltra.mm +211 -0
  350. package/ios/app/VoltraActivity.swift +5 -0
  351. package/ios/app/VoltraImagePreload.swift +154 -0
  352. package/ios/app/VoltraLiveActivityManager.swift +228 -0
  353. package/ios/app/VoltraLiveActivityService.swift +306 -0
  354. package/ios/app/VoltraModule.swift +215 -0
  355. package/ios/app/VoltraModuleImpl.swift +331 -0
  356. package/ios/app/VoltraOptions.swift +27 -0
  357. package/ios/app/VoltraViewComponentView.h +10 -0
  358. package/ios/app/VoltraViewComponentView.mm +67 -0
  359. package/ios/app/VoltraViewRoot.swift +63 -0
  360. package/ios/app/VoltraWidgetService.swift +154 -0
  361. package/ios/shared/BrotliCompression.swift +81 -0
  362. package/ios/shared/ComponentTypeID.swift +117 -0
  363. package/ios/shared/Data+hexString.swift +8 -0
  364. package/ios/shared/Date+toTimerInterval.swift +25 -0
  365. package/ios/shared/JSONValue.swift +128 -0
  366. package/ios/shared/ShortNames.swift +180 -0
  367. package/ios/shared/VoltraAttributes.swift +58 -0
  368. package/ios/shared/VoltraConfig.swift +18 -0
  369. package/ios/shared/VoltraConstants.swift +45 -0
  370. package/ios/shared/VoltraElement.swift +153 -0
  371. package/ios/shared/VoltraEvent.swift +72 -0
  372. package/ios/shared/VoltraEventBus.swift +80 -0
  373. package/ios/shared/VoltraImageStore.swift +119 -0
  374. package/ios/shared/VoltraInitialStateLocale.swift +54 -0
  375. package/ios/shared/VoltraInteractionIntent.swift +39 -0
  376. package/ios/shared/VoltraKeychainHelper.swift +178 -0
  377. package/ios/shared/VoltraLiveActivityPayload.swift +113 -0
  378. package/ios/shared/VoltraLogger.swift +30 -0
  379. package/ios/shared/VoltraNode.swift +194 -0
  380. package/ios/shared/VoltraPayloadMigrator.swift +63 -0
  381. package/ios/shared/VoltraPersistentEventQueue.swift +67 -0
  382. package/ios/shared/VoltraRefreshIntent.swift +29 -0
  383. package/ios/shared/VoltraRegion.swift +37 -0
  384. package/ios/shared/VoltraWidgetDefaults.swift +114 -0
  385. package/ios/shared/VoltraWidgetServerFetcher.swift +166 -0
  386. package/ios/target/VoltraHomeWidget.swift +508 -0
  387. package/ios/target/VoltraWidget.swift +158 -0
  388. package/ios/ui/Extensions/View.modifiers.swift +28 -0
  389. package/ios/ui/Extensions/VoltraNode+Parameters.swift +18 -0
  390. package/ios/ui/Generated/Parameters/.generated +8 -0
  391. package/ios/ui/Generated/Parameters/ButtonParameters.swift +15 -0
  392. package/ios/ui/Generated/Parameters/ChartParameters.swift +33 -0
  393. package/ios/ui/Generated/Parameters/CircularProgressViewParameters.swift +59 -0
  394. package/ios/ui/Generated/Parameters/ComponentParameters.swift +12 -0
  395. package/ios/ui/Generated/Parameters/DividerParameters.swift +12 -0
  396. package/ios/ui/Generated/Parameters/GaugeParameters.swift +54 -0
  397. package/ios/ui/Generated/Parameters/GlassContainerParameters.swift +15 -0
  398. package/ios/ui/Generated/Parameters/GroupBoxParameters.swift +12 -0
  399. package/ios/ui/Generated/Parameters/HStackParameters.swift +34 -0
  400. package/ios/ui/Generated/Parameters/ImageParameters.swift +29 -0
  401. package/ios/ui/Generated/Parameters/LabelParameters.swift +18 -0
  402. package/ios/ui/Generated/Parameters/LinearGradientParameters.swift +27 -0
  403. package/ios/ui/Generated/Parameters/LinearProgressViewParameters.swift +64 -0
  404. package/ios/ui/Generated/Parameters/LinkParameters.swift +15 -0
  405. package/ios/ui/Generated/Parameters/MaskParameters.swift +12 -0
  406. package/ios/ui/Generated/Parameters/SpacerParameters.swift +15 -0
  407. package/ios/ui/Generated/Parameters/SymbolParameters.swift +59 -0
  408. package/ios/ui/Generated/Parameters/TextParameters.swift +18 -0
  409. package/ios/ui/Generated/Parameters/TimerParameters.swift +54 -0
  410. package/ios/ui/Generated/Parameters/ToggleParameters.swift +24 -0
  411. package/ios/ui/Generated/Parameters/VStackParameters.swift +34 -0
  412. package/ios/ui/Generated/Parameters/ViewParameters.swift +12 -0
  413. package/ios/ui/Generated/Parameters/ZStackParameters.swift +15 -0
  414. package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +43 -0
  415. package/ios/ui/Helpers/VoltraProgressDriver.swift +52 -0
  416. package/ios/ui/Layout/FlexContainerHelper.swift +114 -0
  417. package/ios/ui/Layout/VoltraFlexStackLayout.swift +417 -0
  418. package/ios/ui/Protocols/VoltraView.swift +29 -0
  419. package/ios/ui/Style/BackgroundValue.swift +27 -0
  420. package/ios/ui/Style/CompositeStyle.swift +81 -0
  421. package/ios/ui/Style/DecorationStyle.swift +207 -0
  422. package/ios/ui/Style/FlexEnvironment.swift +35 -0
  423. package/ios/ui/Style/FontVariant.swift +4 -0
  424. package/ios/ui/Style/GlassEffect.swift +6 -0
  425. package/ios/ui/Style/JSColorParser.swift +517 -0
  426. package/ios/ui/Style/JSGradientParser.swift +674 -0
  427. package/ios/ui/Style/JSStyleParser.swift +223 -0
  428. package/ios/ui/Style/LayoutStyle.swift +184 -0
  429. package/ios/ui/Style/Overflow.swift +4 -0
  430. package/ios/ui/Style/RenderingStyle.swift +33 -0
  431. package/ios/ui/Style/StyleConverter.swift +202 -0
  432. package/ios/ui/Style/TextDecoration.swift +6 -0
  433. package/ios/ui/Style/TextStyle.swift +50 -0
  434. package/ios/ui/Style/View+applyStyle.swift +38 -0
  435. package/ios/ui/Views/VoltraButton.swift +57 -0
  436. package/ios/ui/Views/VoltraChart.swift +840 -0
  437. package/ios/ui/Views/VoltraCircularProgressView.swift +103 -0
  438. package/ios/ui/Views/VoltraDivider.swift +16 -0
  439. package/ios/ui/Views/VoltraFlexView.swift +33 -0
  440. package/ios/ui/Views/VoltraGauge.swift +65 -0
  441. package/ios/ui/Views/VoltraGlassContainer.swift +29 -0
  442. package/ios/ui/Views/VoltraGroupBox.swift +26 -0
  443. package/ios/ui/Views/VoltraHStack.swift +70 -0
  444. package/ios/ui/Views/VoltraImage.swift +109 -0
  445. package/ios/ui/Views/VoltraLabel.swift +24 -0
  446. package/ios/ui/Views/VoltraLinearGradient.swift +115 -0
  447. package/ios/ui/Views/VoltraLinearProgressView.swift +118 -0
  448. package/ios/ui/Views/VoltraLink.swift +25 -0
  449. package/ios/ui/Views/VoltraMask.swift +23 -0
  450. package/ios/ui/Views/VoltraSpacer.swift +16 -0
  451. package/ios/ui/Views/VoltraSymbol.swift +160 -0
  452. package/ios/ui/Views/VoltraText.swift +87 -0
  453. package/ios/ui/Views/VoltraTimer.swift +131 -0
  454. package/ios/ui/Views/VoltraToggle.swift +39 -0
  455. package/ios/ui/Views/VoltraVStack.swift +68 -0
  456. package/ios/ui/Views/VoltraZStack.swift +33 -0
  457. package/ios/ui/Voltra.swift +86 -0
  458. package/package.json +91 -18
  459. package/build/cjs/VoltraModule.js +0 -6
  460. package/build/cjs/VoltraModule.js.map +0 -1
  461. package/build/cjs/components/VoltraLiveActivityPreview.js +0 -20
  462. package/build/cjs/components/VoltraLiveActivityPreview.js.map +0 -1
  463. package/build/cjs/components/VoltraView.js +0 -37
  464. package/build/cjs/components/VoltraView.js.map +0 -1
  465. package/build/cjs/components/VoltraWidgetPreview.js +0 -26
  466. package/build/cjs/components/VoltraWidgetPreview.js.map +0 -1
  467. package/build/cjs/events.js +0 -19
  468. package/build/cjs/events.js.map +0 -1
  469. package/build/cjs/helpers.js +0 -30
  470. package/build/cjs/helpers.js.map +0 -1
  471. package/build/cjs/index.js +0 -49
  472. package/build/cjs/index.js.map +0 -1
  473. package/build/cjs/live-activity/api.js +0 -158
  474. package/build/cjs/live-activity/api.js.map +0 -1
  475. package/build/cjs/logger.js +0 -36
  476. package/build/cjs/logger.js.map +0 -1
  477. package/build/cjs/preload.js +0 -54
  478. package/build/cjs/preload.js.map +0 -1
  479. package/build/cjs/utils/assertRunningOnApple.js +0 -13
  480. package/build/cjs/utils/assertRunningOnApple.js.map +0 -1
  481. package/build/cjs/utils/helpers.js +0 -7
  482. package/build/cjs/utils/helpers.js.map +0 -1
  483. package/build/cjs/utils/index.js +0 -19
  484. package/build/cjs/utils/index.js.map +0 -1
  485. package/build/cjs/utils/useUpdateOnHMR.js +0 -22
  486. package/build/cjs/utils/useUpdateOnHMR.js.map +0 -1
  487. package/build/cjs/widgets/server-credentials.js +0 -18
  488. package/build/cjs/widgets/server-credentials.js.map +0 -1
  489. package/build/cjs/widgets/widget-api.js +0 -59
  490. package/build/cjs/widgets/widget-api.js.map +0 -1
  491. package/build/esm/VoltraModule.js +0 -4
  492. package/build/esm/VoltraModule.js.map +0 -1
  493. package/build/esm/components/VoltraLiveActivityPreview.js +0 -17
  494. package/build/esm/components/VoltraLiveActivityPreview.js.map +0 -1
  495. package/build/esm/components/VoltraView.js +0 -34
  496. package/build/esm/components/VoltraView.js.map +0 -1
  497. package/build/esm/components/VoltraWidgetPreview.js +0 -23
  498. package/build/esm/components/VoltraWidgetPreview.js.map +0 -1
  499. package/build/esm/events.js +0 -13
  500. package/build/esm/events.js.map +0 -1
  501. package/build/esm/helpers.js +0 -23
  502. package/build/esm/helpers.js.map +0 -1
  503. package/build/esm/index.js +0 -10
  504. package/build/esm/index.js.map +0 -1
  505. package/build/esm/live-activity/api.js +0 -146
  506. package/build/esm/live-activity/api.js.map +0 -1
  507. package/build/esm/logger.js +0 -33
  508. package/build/esm/logger.js.map +0 -1
  509. package/build/esm/preload.js +0 -46
  510. package/build/esm/preload.js.map +0 -1
  511. package/build/esm/utils/assertRunningOnApple.js +0 -9
  512. package/build/esm/utils/assertRunningOnApple.js.map +0 -1
  513. package/build/esm/utils/helpers.js.map +0 -1
  514. package/build/esm/utils/index.js.map +0 -1
  515. package/build/esm/utils/useUpdateOnHMR.js +0 -18
  516. package/build/esm/utils/useUpdateOnHMR.js.map +0 -1
  517. package/build/esm/widgets/server-credentials.js +0 -11
  518. package/build/esm/widgets/server-credentials.js.map +0 -1
  519. package/build/esm/widgets/widget-api.js +0 -47
  520. package/build/esm/widgets/widget-api.js.map +0 -1
  521. package/build/types/VoltraModule.d.ts +0 -44
  522. package/build/types/VoltraModule.d.ts.map +0 -1
  523. package/build/types/components/VoltraLiveActivityPreview.d.ts.map +0 -1
  524. package/build/types/components/VoltraView.d.ts.map +0 -1
  525. package/build/types/components/VoltraWidgetPreview.d.ts.map +0 -1
  526. package/build/types/events.d.ts.map +0 -1
  527. package/build/types/helpers.d.ts.map +0 -1
  528. package/build/types/index.d.ts.map +0 -1
  529. package/build/types/live-activity/api.d.ts.map +0 -1
  530. package/build/types/logger.d.ts.map +0 -1
  531. package/build/types/preload.d.ts.map +0 -1
  532. package/build/types/types.d.ts.map +0 -1
  533. package/build/types/utils/assertRunningOnApple.d.ts.map +0 -1
  534. package/build/types/utils/helpers.d.ts.map +0 -1
  535. package/build/types/utils/index.d.ts.map +0 -1
  536. package/build/types/utils/useUpdateOnHMR.d.ts.map +0 -1
  537. package/build/types/widgets/server-credentials.d.ts.map +0 -1
  538. package/build/types/widgets/widget-api.d.ts.map +0 -1
  539. /package/build/{types → typescript/commonjs}/components/VoltraLiveActivityPreview.d.ts +0 -0
  540. /package/build/{types → typescript/commonjs}/components/VoltraView.d.ts +0 -0
  541. /package/build/{types → typescript/commonjs}/components/VoltraWidgetPreview.d.ts +0 -0
  542. /package/build/{types → typescript/commonjs}/events.d.ts +0 -0
  543. /package/build/{types → typescript/commonjs}/helpers.d.ts +0 -0
  544. /package/build/{types → typescript/commonjs}/live-activity/api.d.ts +0 -0
  545. /package/build/{types → typescript/commonjs}/logger.d.ts +0 -0
  546. /package/build/{types → typescript/commonjs}/preload.d.ts +0 -0
  547. /package/build/{types → typescript/commonjs}/types.d.ts +0 -0
  548. /package/build/{types → typescript/commonjs}/utils/assertRunningOnApple.d.ts +0 -0
  549. /package/build/{types → typescript/commonjs}/utils/helpers.d.ts +0 -0
  550. /package/build/{types → typescript/commonjs}/utils/index.d.ts +0 -0
  551. /package/build/{types → typescript/commonjs}/utils/useUpdateOnHMR.d.ts +0 -0
  552. /package/build/{types → typescript/commonjs}/widgets/server-credentials.d.ts +0 -0
  553. /package/build/{types → typescript/commonjs}/widgets/widget-api.d.ts +0 -0
  554. /package/{build → expo-plugin/build}/cjs/package.json +0 -0
  555. /package/{build → expo-plugin/build}/cjs/types.js +0 -0
  556. /package/{build → expo-plugin/build}/cjs/types.js.map +0 -0
  557. /package/{build → expo-plugin/build}/esm/package.json +0 -0
  558. /package/{build → expo-plugin/build}/esm/types.js +0 -0
  559. /package/{build → expo-plugin/build}/esm/types.js.map +0 -0
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Font configuration for Live Activity extension.
4
+ *
5
+ * This code is adapted from expo-font to support custom fonts in Live Activities.
6
+ * @see https://github.com/expo/expo/tree/main/packages/expo-font/plugin
7
+ *
8
+ * I would love to reuse the existing expo-font infrastructure, but it's not that easy to do. I'll most likely revisit it later.
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ var __importDefault = (this && this.__importDefault) || function (mod) {
44
+ return (mod && mod.__esModule) ? mod : { "default": mod };
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.withFonts = void 0;
48
+ const config_plugins_1 = require("@expo/config-plugins");
49
+ const plist_1 = __importDefault(require("@expo/plist"));
50
+ const fs_1 = require("fs");
51
+ const path = __importStar(require("path"));
52
+ const expo_plugin_1 = require("@use-voltra/expo-plugin");
53
+ const expo_plugin_2 = require("@use-voltra/expo-plugin");
54
+ /**
55
+ * Plugin that adds custom fonts to the Live Activity extension.
56
+ *
57
+ * @param config - The Expo config
58
+ * @param fonts - Array of font file paths or directories
59
+ * @param targetName - Name of the Live Activity extension target
60
+ * @returns Modified config
61
+ */
62
+ const withFonts = (config, { fonts, targetName }) => {
63
+ if (!fonts || fonts.length === 0) {
64
+ return config;
65
+ }
66
+ config = addFontsToTarget(config, fonts, targetName);
67
+ config = addFontsToPlist(config, fonts, targetName);
68
+ return config;
69
+ };
70
+ exports.withFonts = withFonts;
71
+ /**
72
+ * Adds font files to the Live Activity extension target.
73
+ * This ensures fonts are bundled with the extension and accessible at runtime.
74
+ */
75
+ function addFontsToTarget(config, fonts, targetName) {
76
+ return (0, config_plugins_1.withXcodeProject)(config, async (config) => {
77
+ if (config.modRequest.introspect) {
78
+ return config;
79
+ }
80
+ const resolvedFonts = await (0, expo_plugin_2.resolveFontPaths)(fonts, config.modRequest.projectRoot);
81
+ const project = config.modResults;
82
+ const platformProjectRoot = config.modRequest.platformProjectRoot;
83
+ const targetUuid = project.findTargetKey(targetName);
84
+ if (targetUuid == null) {
85
+ throw new Error(`Target ${targetName} not found in Xcode project. Report this issue to the Voltra team.`);
86
+ }
87
+ config_plugins_1.IOSConfig.XcodeUtils.ensureGroupRecursively(project, 'VoltraResources');
88
+ for (const font of resolvedFonts) {
89
+ const fontPath = path.relative(platformProjectRoot, font);
90
+ config_plugins_1.IOSConfig.XcodeUtils.addResourceFileToGroup({
91
+ filepath: fontPath,
92
+ groupName: 'VoltraResources',
93
+ project,
94
+ isBuildFile: true,
95
+ verbose: true,
96
+ targetUuid,
97
+ });
98
+ expo_plugin_1.logger.info(`Added font file: ${path.basename(font)}`);
99
+ }
100
+ return config;
101
+ });
102
+ }
103
+ /**
104
+ * Adds font filenames to the Live Activity extension's Info.plist UIAppFonts array.
105
+ * This makes iOS aware of the custom fonts and allows them to be used in SwiftUI.
106
+ */
107
+ function addFontsToPlist(config, fonts, targetName) {
108
+ return (0, config_plugins_1.withDangerousMod)(config, [
109
+ 'ios',
110
+ async (config) => {
111
+ if (config.modRequest.introspect) {
112
+ return config;
113
+ }
114
+ const resolvedFonts = await (0, expo_plugin_2.resolveFontPaths)(fonts, config.modRequest.projectRoot);
115
+ const platformProjectRoot = config.modRequest.platformProjectRoot;
116
+ // Read the Live Activity extension's Info.plist directly
117
+ const targetPath = path.join(platformProjectRoot, targetName);
118
+ const infoPlistPath = path.join(targetPath, 'Info.plist');
119
+ try {
120
+ const plistContent = plist_1.default.parse((0, fs_1.readFileSync)(infoPlistPath, 'utf8'));
121
+ // Get existing fonts or initialize empty array
122
+ const existingFonts = getUIAppFonts(plistContent);
123
+ // Add new fonts
124
+ const fontList = resolvedFonts.map((font) => path.basename(font));
125
+ const allFonts = [...existingFonts, ...fontList];
126
+ plistContent.UIAppFonts = Array.from(new Set(allFonts));
127
+ // Write back to file
128
+ (0, fs_1.writeFileSync)(infoPlistPath, plist_1.default.build(plistContent));
129
+ expo_plugin_1.logger.info(`Added ${fontList.length} font(s) to ${targetName} Info.plist`);
130
+ }
131
+ catch (error) {
132
+ expo_plugin_1.logger.warn(`Could not update Info.plist for fonts: ${error}`);
133
+ }
134
+ return config;
135
+ },
136
+ ]);
137
+ }
138
+ /**
139
+ * Retrieves existing UIAppFonts from Info.plist.
140
+ *
141
+ * @param infoPlist - Info.plist object
142
+ * @returns Array of font filenames
143
+ */
144
+ function getUIAppFonts(infoPlist) {
145
+ const fonts = infoPlist['UIAppFonts'];
146
+ if (fonts != null && Array.isArray(fonts) && fonts.every((font) => typeof font === 'string')) {
147
+ return fonts;
148
+ }
149
+ return [];
150
+ }
151
+ //# sourceMappingURL=fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../src/ios-widget/fonts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withIOS = void 0;
4
+ const config_plugins_1 = require("@expo/config-plugins");
5
+ const eas_1 = require("./eas");
6
+ const files_1 = require("./files");
7
+ const fonts_1 = require("./fonts");
8
+ const podfile_1 = require("./podfile");
9
+ const widgetPlist_1 = require("./widgetPlist");
10
+ const xcode_1 = require("./xcode");
11
+ /**
12
+ * Main iOS configuration plugin.
13
+ *
14
+ * This orchestrates all iOS-related configuration in the correct order:
15
+ * 1. Add custom fonts (if provided)
16
+ * 2. Configure Xcode project (targets, build phases, groups)
17
+ * 3. Configure Podfile for widget extension
18
+ * 4. Configure main app Info.plist (URL schemes)
19
+ * 5. Configure EAS build settings
20
+ * 6. Generate widget extension files (Swift, assets, plist, entitlements)
21
+ *
22
+ * NOTE: Expo mods execute in REVERSE registration order. Plugins that depend
23
+ * on modifications from other plugins must be registered BEFORE their dependencies.
24
+ * For example, fonts plugin needs the target created by configureXcodeProject,
25
+ * so fonts must be registered before configureXcodeProject.
26
+ */
27
+ const withIOS = (config, props) => {
28
+ const { targetName, bundleIdentifier, deploymentTarget, widgets, groupIdentifier, keychainGroup, fonts, version, buildNumber, } = props;
29
+ const plugins = [
30
+ // 1. Add custom fonts if provided
31
+ ...(fonts && fonts.length > 0 ? [[fonts_1.withFonts, { fonts, targetName }]] : []),
32
+ // 2. Configure Xcode project (creates the target - must run before fonts mod executes)
33
+ [xcode_1.configureXcodeProject, { targetName, bundleIdentifier, deploymentTarget }],
34
+ // 3. Configure Podfile for widget extension target
35
+ [podfile_1.configurePodfile, { targetName }],
36
+ // 4. Configure main app Info.plist (URL schemes, widget extension plist)
37
+ [widgetPlist_1.configureWidgetExtensionPlist, { targetName, groupIdentifier, widgets, keychainGroup }],
38
+ // 5. Configure EAS build settings
39
+ [eas_1.configureEasBuild, { targetName, bundleIdentifier, groupIdentifier }],
40
+ // 6. Generate widget extension files (dangerous mod should run before plist patchers)
41
+ [files_1.generateWidgetExtensionFiles, { targetName, widgets, groupIdentifier, keychainGroup, version, buildNumber }],
42
+ ];
43
+ return (0, config_plugins_1.withPlugins)(config, plugins);
44
+ };
45
+ exports.withIOS = withIOS;
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ios-widget/index.ts"],"names":[],"mappings":";;;AAAA,yDAAgE;AAGhE,+BAAyC;AACzC,mCAAsD;AACtD,mCAAmC;AACnC,uCAA4C;AAC5C,+CAA6D;AAC7D,mCAA+C;AAc/C;;;;;;;;;;;;;;;GAeG;AACI,MAAM,OAAO,GAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACnE,MAAM,EACJ,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,aAAa,EACb,KAAK,EACL,OAAO,EACP,WAAW,GACZ,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAA+B;QAC1C,kCAAkC;QAClC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtG,uFAAuF;QACvF,CAAC,6BAAqB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QAE3E,mDAAmD;QACnD,CAAC,0BAAgB,EAAE,EAAE,UAAU,EAAE,CAAC;QAElC,yEAAyE;QACzE,CAAC,2CAA6B,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAExF,kCAAkC;QAClC,CAAC,uBAAiB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;QAEtE,sFAAsF;QACtF,CAAC,oCAA4B,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;KAC9G,CAAA;IAED,OAAO,IAAA,4BAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC,CAAA;AAlCY,QAAA,OAAO,WAkCnB"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configurePodfile = void 0;
4
+ const config_plugins_1 = require("@expo/config-plugins");
5
+ /**
6
+ * Generates the Podfile target content for the widget extension.
7
+ */
8
+ function getTargetContent(targetName) {
9
+ return `
10
+ # Voltra Widget Extension Target
11
+ # DO NOT MODIFY THIS FILE - IT IS AUTO-GENERATED BY THE VOLTRA PLUGIN
12
+ target '${targetName}' do
13
+ use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
14
+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']
15
+
16
+ require 'pathname'
17
+ project_root = "#{Pod::Config.instance.installation_root}/.."
18
+ voltra_client_root = \`node --print "require.resolve('@use-voltra/ios-client/package.json', {paths: ['#{project_root}']})" 2>/dev/null\`.strip.gsub('/package.json', '')
19
+ voltra_widget_podspec_root = File.join(voltra_client_root, 'ios')
20
+ podspec_dir_path = Pathname.new(voltra_widget_podspec_root).relative_path_from(Pathname.new(__dir__)).to_path
21
+
22
+ pod 'VoltraWidget', :path => podspec_dir_path
23
+ end`;
24
+ }
25
+ /**
26
+ * Plugin step that adds the Podfile target for the widget extension.
27
+ */
28
+ const configurePodfile = (config, { targetName }) => {
29
+ return (0, config_plugins_1.withPodfile)(config, (podfile) => {
30
+ const targetContent = getTargetContent(targetName);
31
+ // Check if target already exists (avoid duplicates)
32
+ const targetMarker = "target '" + targetName + "'";
33
+ if (podfile.modResults.contents.includes(targetMarker)) {
34
+ return podfile;
35
+ }
36
+ podfile.modResults.contents = podfile.modResults.contents + '\n' + targetContent;
37
+ return podfile;
38
+ });
39
+ };
40
+ exports.configurePodfile = configurePodfile;
41
+ //# sourceMappingURL=podfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podfile.js","sourceRoot":"","sources":["../../../src/ios-widget/podfile.ts"],"names":[],"mappings":";;;AAAA,yDAAmF;AAEnF;;GAEG;AACH,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,OAAO;;;UAGC,UAAU;;;;;;;;;;;IAWhB,CAAA;AACJ,CAAC;AAMD;;GAEG;AACI,MAAM,gBAAgB,GAAwC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;IAC9F,OAAO,IAAA,4BAAe,EAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QACzC,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAElD,oDAAoD;QACpD,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,GAAG,CAAA;QAClD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,GAAG,aAAa,CAAA;QAChF,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAbY,QAAA,gBAAgB,oBAa5B"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.configureWidgetExtensionPlist = void 0;
7
+ const config_plugins_1 = require("@expo/config-plugins");
8
+ const plist_1 = __importDefault(require("@expo/plist"));
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const expo_plugin_1 = require("@use-voltra/expo-plugin");
12
+ /**
13
+ * Plugin step that configures the Info.plist files.
14
+ *
15
+ * This:
16
+ * - Updates the widget extension's Info.plist with URL schemes
17
+ * - Removes incompatible NSExtension keys for WidgetKit
18
+ * - Adds group identifier if configured
19
+ * - Adds server update URLs and intervals for server-driven widgets
20
+ * - Adds Keychain group for shared credential access
21
+ */
22
+ const configureWidgetExtensionPlist = (expoConfig, { targetName, groupIdentifier, widgets, keychainGroup }) => (0, config_plugins_1.withDangerousMod)(expoConfig, [
23
+ 'ios',
24
+ async (config) => {
25
+ if (config.modRequest.introspect) {
26
+ return config;
27
+ }
28
+ const scheme = typeof expoConfig.scheme === 'string' ? expoConfig.scheme : expoConfig.ios?.bundleIdentifier;
29
+ if (scheme) {
30
+ const targetPath = (0, path_1.join)(config.modRequest.platformProjectRoot, targetName);
31
+ const filePath = (0, path_1.join)(targetPath, 'Info.plist');
32
+ if (!(0, fs_1.existsSync)(filePath)) {
33
+ expo_plugin_1.logger.warn(`Widget Info.plist not found at ${filePath}, skipping widget plist updates`);
34
+ return config;
35
+ }
36
+ const content = plist_1.default.parse((0, fs_1.readFileSync)(filePath, 'utf8'));
37
+ // WidgetKit extensions must NOT declare NSExtensionPrincipalClass/MainStoryboard.
38
+ // The @main WidgetBundle in Swift is the entry point.
39
+ const ext = content.NSExtension;
40
+ if (ext) {
41
+ delete ext.NSExtensionPrincipalClass;
42
+ delete ext.NSExtensionMainStoryboard;
43
+ }
44
+ // Keep URL schemes in the widget extension so Live Activity links can be resolved
45
+ // from relative to absolute URLs (see VoltraDeepLinkResolver.swift).
46
+ const existingTypes = content.CFBundleURLTypes || [];
47
+ const hasScheme = existingTypes.some((t) => Array.isArray(t?.CFBundleURLSchemes) && t.CFBundleURLSchemes.includes(scheme));
48
+ if (!hasScheme) {
49
+ content.CFBundleURLTypes = [
50
+ ...existingTypes,
51
+ {
52
+ CFBundleURLSchemes: [scheme],
53
+ },
54
+ ];
55
+ }
56
+ else {
57
+ content.CFBundleURLTypes = existingTypes;
58
+ }
59
+ // Only set group identifier if provided
60
+ if (groupIdentifier) {
61
+ ;
62
+ content['Voltra_AppGroupIdentifier'] = groupIdentifier;
63
+ }
64
+ // Configure server update URLs and intervals for widgets with serverUpdate
65
+ if (widgets && widgets.length > 0) {
66
+ const serverUrls = {};
67
+ const serverIntervals = {};
68
+ const serverRefresh = {};
69
+ for (const widget of widgets) {
70
+ if (widget.serverUpdate) {
71
+ serverUrls[widget.id] = widget.serverUpdate.url;
72
+ serverIntervals[widget.id] = widget.serverUpdate.intervalMinutes ?? 15;
73
+ if (widget.serverUpdate.refresh) {
74
+ serverRefresh[widget.id] = true;
75
+ }
76
+ }
77
+ }
78
+ if (Object.keys(serverUrls).length > 0) {
79
+ ;
80
+ content['Voltra_WidgetServerUrls'] = serverUrls;
81
+ content['Voltra_WidgetServerIntervals'] = serverIntervals;
82
+ }
83
+ if (Object.keys(serverRefresh).length > 0) {
84
+ ;
85
+ content['Voltra_WidgetServerRefresh'] = serverRefresh;
86
+ }
87
+ }
88
+ // Add Keychain group for shared credential access
89
+ if (keychainGroup) {
90
+ ;
91
+ content['Voltra_KeychainGroup'] = keychainGroup;
92
+ }
93
+ (0, fs_1.writeFileSync)(filePath, plist_1.default.build(content));
94
+ }
95
+ return config;
96
+ },
97
+ ]);
98
+ exports.configureWidgetExtensionPlist = configureWidgetExtensionPlist;
99
+ //# sourceMappingURL=widgetPlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgetPlist.js","sourceRoot":"","sources":["../../../src/ios-widget/widgetPlist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.addBuildPhases = addBuildPhases;
37
+ exports.ensureBuildPhases = ensureBuildPhases;
38
+ const util = __importStar(require("util"));
39
+ const pbxFile = require('xcode/lib/pbxFile');
40
+ /**
41
+ * Adds all required build phases for the widget extension target.
42
+ */
43
+ function addBuildPhases(xcodeProject, options) {
44
+ const { targetUuid, groupName, productFile, widgetFiles } = options;
45
+ const buildPath = `""`;
46
+ const folderType = 'app_extension';
47
+ const { swiftFiles, intentFiles, assetDirectories, localizedStringResources } = widgetFiles;
48
+ const resourcePaths = [...assetDirectories, ...localizedStringResources];
49
+ // Sources build phase
50
+ xcodeProject.addBuildPhase([...swiftFiles, ...intentFiles], 'PBXSourcesBuildPhase', 'Sources', targetUuid, folderType, buildPath);
51
+ // Copy files build phase
52
+ xcodeProject.addBuildPhase([], 'PBXCopyFilesBuildPhase', groupName, xcodeProject.getFirstTarget().uuid, folderType, buildPath);
53
+ xcodeProject.buildPhaseObject('PBXCopyFilesBuildPhase', groupName, productFile.target).files.push({
54
+ value: productFile.uuid,
55
+ comment: util.format('%s in %s', productFile.basename, productFile.group),
56
+ });
57
+ xcodeProject.addToPbxBuildFileSection(productFile);
58
+ // Frameworks build phase
59
+ xcodeProject.addBuildPhase([], 'PBXFrameworksBuildPhase', 'Frameworks', targetUuid, folderType, buildPath);
60
+ // Resources build phase
61
+ xcodeProject.addBuildPhase([...resourcePaths], 'PBXResourcesBuildPhase', 'Resources', targetUuid);
62
+ }
63
+ /**
64
+ * Ensures all required build phases and files exist for the widget extension target.
65
+ */
66
+ function ensureBuildPhases(xcodeProject, options) {
67
+ const { targetUuid, groupName, productFile, widgetFiles } = options;
68
+ const buildPath = `""`;
69
+ const folderType = 'app_extension';
70
+ const mainTargetUuid = options.mainTargetUuid ?? xcodeProject.getFirstTarget().uuid;
71
+ const { swiftFiles, intentFiles, assetDirectories, localizedStringResources } = widgetFiles;
72
+ const resourcePaths = [...assetDirectories, ...localizedStringResources];
73
+ dedupeBuildPhasesForTarget(xcodeProject, targetUuid, 'PBXSourcesBuildPhase', 'Sources');
74
+ dedupeBuildPhasesForTarget(xcodeProject, targetUuid, 'PBXFrameworksBuildPhase', 'Frameworks');
75
+ dedupeBuildPhasesByComment(xcodeProject, mainTargetUuid, 'PBXCopyFilesBuildPhase', groupName);
76
+ // Sources build phase
77
+ let sourcesPhase = xcodeProject.buildPhaseObject('PBXSourcesBuildPhase', 'Sources', targetUuid);
78
+ if (!sourcesPhase) {
79
+ xcodeProject.addBuildPhase([...swiftFiles, ...intentFiles], 'PBXSourcesBuildPhase', 'Sources', targetUuid, folderType, buildPath);
80
+ sourcesPhase = xcodeProject.buildPhaseObject('PBXSourcesBuildPhase', 'Sources', targetUuid);
81
+ }
82
+ if (sourcesPhase) {
83
+ ensureBuildPhaseFiles(xcodeProject, sourcesPhase, [...swiftFiles, ...intentFiles]);
84
+ }
85
+ // Copy files build phase (embed extension into main app)
86
+ let copyFilesPhase = xcodeProject.buildPhaseObject('PBXCopyFilesBuildPhase', groupName, mainTargetUuid);
87
+ if (!copyFilesPhase) {
88
+ xcodeProject.addBuildPhase([], 'PBXCopyFilesBuildPhase', groupName, mainTargetUuid, folderType, buildPath);
89
+ copyFilesPhase = xcodeProject.buildPhaseObject('PBXCopyFilesBuildPhase', groupName, mainTargetUuid);
90
+ }
91
+ if (copyFilesPhase) {
92
+ ensureCopyFilesPhaseProduct(xcodeProject, copyFilesPhase, productFile);
93
+ }
94
+ // Frameworks build phase
95
+ const frameworksPhase = xcodeProject.buildPhaseObject('PBXFrameworksBuildPhase', 'Frameworks', targetUuid);
96
+ if (!frameworksPhase) {
97
+ xcodeProject.addBuildPhase([], 'PBXFrameworksBuildPhase', 'Frameworks', targetUuid, folderType, buildPath);
98
+ }
99
+ // Resources build phase
100
+ let resourcesPhase = xcodeProject.buildPhaseObject('PBXResourcesBuildPhase', 'Resources', targetUuid);
101
+ if (!resourcesPhase) {
102
+ xcodeProject.addBuildPhase([...resourcePaths], 'PBXResourcesBuildPhase', 'Resources', targetUuid);
103
+ resourcesPhase = xcodeProject.buildPhaseObject('PBXResourcesBuildPhase', 'Resources', targetUuid);
104
+ }
105
+ if (resourcesPhase) {
106
+ ensureBuildPhaseFiles(xcodeProject, resourcesPhase, [...resourcePaths]);
107
+ }
108
+ }
109
+ function dedupeBuildPhasesForTarget(xcodeProject, targetUuid, phaseType, preferredComment) {
110
+ const nativeTargets = xcodeProject.pbxNativeTargetSection();
111
+ const target = nativeTargets[targetUuid];
112
+ if (!target?.buildPhases) {
113
+ return;
114
+ }
115
+ const phaseSection = xcodeProject.hash.project.objects[phaseType] || {};
116
+ const matching = target.buildPhases.filter((entry) => phaseSection[entry.value]);
117
+ if (matching.length <= 1) {
118
+ return;
119
+ }
120
+ const keep = matching.find((entry) => entry.comment === preferredComment) ?? matching[0];
121
+ keep.comment = preferredComment;
122
+ target.buildPhases = target.buildPhases.filter((entry) => {
123
+ if (!phaseSection[entry.value]) {
124
+ return true;
125
+ }
126
+ return entry.value === keep.value;
127
+ });
128
+ }
129
+ function dedupeBuildPhasesByComment(xcodeProject, targetUuid, phaseType, comment) {
130
+ const nativeTargets = xcodeProject.pbxNativeTargetSection();
131
+ const target = nativeTargets[targetUuid];
132
+ if (!target?.buildPhases) {
133
+ return;
134
+ }
135
+ const phaseSection = xcodeProject.hash.project.objects[phaseType] || {};
136
+ const matching = target.buildPhases.filter((entry) => phaseSection[entry.value] && entry.comment === comment);
137
+ if (matching.length <= 1) {
138
+ return;
139
+ }
140
+ const keep = matching[0];
141
+ target.buildPhases = target.buildPhases.filter((entry) => {
142
+ if (!phaseSection[entry.value] || entry.comment !== comment) {
143
+ return true;
144
+ }
145
+ return entry.value === keep.value;
146
+ });
147
+ }
148
+ function normalizePath(value) {
149
+ if (!value) {
150
+ return '';
151
+ }
152
+ return value.replace(/^"|"$/g, '');
153
+ }
154
+ function findFileReferenceKey(xcodeProject, filePath) {
155
+ const fileReferenceSection = xcodeProject.pbxFileReferenceSection();
156
+ const normalizedPath = normalizePath(filePath);
157
+ for (const key of Object.keys(fileReferenceSection)) {
158
+ if (/_comment$/.test(key)) {
159
+ continue;
160
+ }
161
+ const entry = fileReferenceSection[key];
162
+ const entryPath = normalizePath(entry?.path);
163
+ if (entryPath === normalizedPath) {
164
+ return key;
165
+ }
166
+ }
167
+ return null;
168
+ }
169
+ function findBuildFileKeyByFileRef(xcodeProject, fileRef) {
170
+ const buildFileSection = xcodeProject.pbxBuildFileSection();
171
+ for (const key of Object.keys(buildFileSection)) {
172
+ if (/_comment$/.test(key)) {
173
+ continue;
174
+ }
175
+ const entry = buildFileSection[key];
176
+ if (entry?.fileRef === fileRef) {
177
+ return key;
178
+ }
179
+ }
180
+ return null;
181
+ }
182
+ function ensureFileReference(xcodeProject, filePath) {
183
+ const existingFileRef = findFileReferenceKey(xcodeProject, filePath);
184
+ const file = new pbxFile(filePath);
185
+ if (existingFileRef) {
186
+ return { fileRef: existingFileRef, basename: file.basename, group: file.group };
187
+ }
188
+ file.fileRef = xcodeProject.generateUuid();
189
+ xcodeProject.addToPbxFileReferenceSection(file);
190
+ return { fileRef: file.fileRef, basename: file.basename, group: file.group };
191
+ }
192
+ function ensureBuildFile(xcodeProject, filePath) {
193
+ const fileReference = ensureFileReference(xcodeProject, filePath);
194
+ const existingBuildFile = findBuildFileKeyByFileRef(xcodeProject, fileReference.fileRef);
195
+ if (existingBuildFile) {
196
+ return { uuid: existingBuildFile, ...fileReference };
197
+ }
198
+ const file = new pbxFile(filePath);
199
+ file.uuid = xcodeProject.generateUuid();
200
+ file.fileRef = fileReference.fileRef;
201
+ xcodeProject.addToPbxBuildFileSection(file);
202
+ return { uuid: file.uuid, ...fileReference, group: file.group };
203
+ }
204
+ function buildPhaseHasFile(xcodeProject, buildPhase, fileRef) {
205
+ if (!buildPhase?.files) {
206
+ return false;
207
+ }
208
+ const buildFileSection = xcodeProject.pbxBuildFileSection();
209
+ return buildPhase.files.some((entry) => {
210
+ const buildFile = buildFileSection[entry.value];
211
+ return buildFile?.fileRef === fileRef;
212
+ });
213
+ }
214
+ function ensureBuildPhaseFiles(xcodeProject, buildPhase, filePaths) {
215
+ if (!buildPhase.files) {
216
+ buildPhase.files = [];
217
+ }
218
+ for (const filePath of filePaths) {
219
+ const fileReference = ensureFileReference(xcodeProject, filePath);
220
+ if (buildPhaseHasFile(xcodeProject, buildPhase, fileReference.fileRef)) {
221
+ continue;
222
+ }
223
+ const buildFile = ensureBuildFile(xcodeProject, filePath);
224
+ buildPhase.files.push({
225
+ value: buildFile.uuid,
226
+ comment: util.format('%s in %s', buildFile.basename, buildFile.group),
227
+ });
228
+ }
229
+ }
230
+ function ensureCopyFilesPhaseProduct(xcodeProject, buildPhase, productFile) {
231
+ if (!buildPhase.files) {
232
+ buildPhase.files = [];
233
+ }
234
+ const alreadyExists = buildPhase.files.some((entry) => entry.value === productFile.uuid);
235
+ if (alreadyExists) {
236
+ return;
237
+ }
238
+ const buildFileSection = xcodeProject.pbxBuildFileSection();
239
+ if (!buildFileSection[productFile.uuid]) {
240
+ xcodeProject.addToPbxBuildFileSection(productFile);
241
+ }
242
+ buildPhase.files.push({
243
+ value: productFile.uuid,
244
+ comment: util.format('%s in %s', productFile.basename, productFile.group),
245
+ });
246
+ }
247
+ //# sourceMappingURL=buildPhases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildPhases.js","sourceRoot":"","sources":["../../../../src/ios-widget/xcode/buildPhases.ts"],"names":[],"mappings":"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"}