@use-voltra/ios-client 2.1.1 → 2.3.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 (365) hide show
  1. package/README.md +61 -8
  2. package/Voltra.podspec +1 -0
  3. package/build/commonjs/dynamic-widget/api.js +15 -0
  4. package/build/commonjs/dynamic-widget/api.js.map +1 -0
  5. package/build/commonjs/events.js +23 -0
  6. package/build/commonjs/events.js.map +1 -1
  7. package/build/commonjs/index.js +74 -7
  8. package/build/commonjs/index.js.map +1 -1
  9. package/build/commonjs/live-activity/api.js +3 -1
  10. package/build/commonjs/live-activity/api.js.map +1 -1
  11. package/build/commonjs/live-activity/dynamic-api.js +173 -0
  12. package/build/commonjs/live-activity/dynamic-api.js.map +1 -0
  13. package/build/commonjs/native/NativeVoltra.js.map +1 -1
  14. package/build/commonjs/utils/enableDynamicLiveActivityHotReload.js +47 -0
  15. package/build/commonjs/utils/enableDynamicLiveActivityHotReload.js.map +1 -0
  16. package/build/commonjs/utils/enableWidgetHotReload.js +8 -11
  17. package/build/commonjs/utils/enableWidgetHotReload.js.map +1 -1
  18. package/build/commonjs/utils/useUpdateOnHMR.js +3 -7
  19. package/build/commonjs/utils/useUpdateOnHMR.js.map +1 -1
  20. package/build/commonjs/widgets/server-credentials.js +9 -0
  21. package/build/commonjs/widgets/server-credentials.js.map +1 -1
  22. package/build/commonjs/widgets/server-update.js +78 -0
  23. package/build/commonjs/widgets/server-update.js.map +1 -0
  24. package/build/module/dynamic-widget/api.js +10 -0
  25. package/build/module/dynamic-widget/api.js.map +1 -0
  26. package/build/module/events.js +23 -0
  27. package/build/module/events.js.map +1 -1
  28. package/build/module/index.js +4 -0
  29. package/build/module/index.js.map +1 -1
  30. package/build/module/live-activity/api.js +2 -2
  31. package/build/module/live-activity/api.js.map +1 -1
  32. package/build/module/live-activity/dynamic-api.js +167 -0
  33. package/build/module/live-activity/dynamic-api.js.map +1 -0
  34. package/build/module/native/NativeVoltra.js.map +1 -1
  35. package/build/module/utils/enableDynamicLiveActivityHotReload.js +43 -0
  36. package/build/module/utils/enableDynamicLiveActivityHotReload.js.map +1 -0
  37. package/build/module/utils/enableWidgetHotReload.js +9 -11
  38. package/build/module/utils/enableWidgetHotReload.js.map +1 -1
  39. package/build/module/utils/useUpdateOnHMR.js +3 -7
  40. package/build/module/utils/useUpdateOnHMR.js.map +1 -1
  41. package/build/module/widgets/server-credentials.js +9 -0
  42. package/build/module/widgets/server-credentials.js.map +1 -1
  43. package/build/module/widgets/server-update.js +72 -0
  44. package/build/module/widgets/server-update.js.map +1 -0
  45. package/build/typescript/commonjs/dynamic-widget/api.d.ts +8 -0
  46. package/build/typescript/commonjs/dynamic-widget/api.d.ts.map +1 -0
  47. package/build/typescript/commonjs/events.d.ts +7 -0
  48. package/build/typescript/commonjs/events.d.ts.map +1 -1
  49. package/build/typescript/commonjs/index.d.ts +4 -0
  50. package/build/typescript/commonjs/index.d.ts.map +1 -1
  51. package/build/typescript/commonjs/live-activity/api.d.ts +7 -0
  52. package/build/typescript/commonjs/live-activity/api.d.ts.map +1 -1
  53. package/build/typescript/commonjs/live-activity/dynamic-api.d.ts +54 -0
  54. package/build/typescript/commonjs/live-activity/dynamic-api.d.ts.map +1 -0
  55. package/build/typescript/commonjs/native/NativeVoltra.d.ts +21 -0
  56. package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -1
  57. package/build/typescript/commonjs/types.d.ts +1 -1
  58. package/build/typescript/commonjs/types.d.ts.map +1 -1
  59. package/build/typescript/commonjs/utils/enableDynamicLiveActivityHotReload.d.ts +15 -0
  60. package/build/typescript/commonjs/utils/enableDynamicLiveActivityHotReload.d.ts.map +1 -0
  61. package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts +5 -7
  62. package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts.map +1 -1
  63. package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts +0 -3
  64. package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts.map +1 -1
  65. package/build/typescript/commonjs/widgets/server-credentials.d.ts +8 -0
  66. package/build/typescript/commonjs/widgets/server-credentials.d.ts.map +1 -1
  67. package/build/typescript/commonjs/widgets/server-update.d.ts +64 -0
  68. package/build/typescript/commonjs/widgets/server-update.d.ts.map +1 -0
  69. package/build/typescript/module/dynamic-widget/api.d.ts +8 -0
  70. package/build/typescript/module/dynamic-widget/api.d.ts.map +1 -0
  71. package/build/typescript/module/events.d.ts +7 -0
  72. package/build/typescript/module/events.d.ts.map +1 -1
  73. package/build/typescript/module/index.d.ts +4 -0
  74. package/build/typescript/module/index.d.ts.map +1 -1
  75. package/build/typescript/module/live-activity/api.d.ts +7 -0
  76. package/build/typescript/module/live-activity/api.d.ts.map +1 -1
  77. package/build/typescript/module/live-activity/dynamic-api.d.ts +54 -0
  78. package/build/typescript/module/live-activity/dynamic-api.d.ts.map +1 -0
  79. package/build/typescript/module/native/NativeVoltra.d.ts +21 -0
  80. package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -1
  81. package/build/typescript/module/types.d.ts +1 -1
  82. package/build/typescript/module/types.d.ts.map +1 -1
  83. package/build/typescript/module/utils/enableDynamicLiveActivityHotReload.d.ts +15 -0
  84. package/build/typescript/module/utils/enableDynamicLiveActivityHotReload.d.ts.map +1 -0
  85. package/build/typescript/module/utils/enableWidgetHotReload.d.ts +5 -7
  86. package/build/typescript/module/utils/enableWidgetHotReload.d.ts.map +1 -1
  87. package/build/typescript/module/utils/useUpdateOnHMR.d.ts +0 -3
  88. package/build/typescript/module/utils/useUpdateOnHMR.d.ts.map +1 -1
  89. package/build/typescript/module/widgets/server-credentials.d.ts +8 -0
  90. package/build/typescript/module/widgets/server-credentials.d.ts.map +1 -1
  91. package/build/typescript/module/widgets/server-update.d.ts +64 -0
  92. package/build/typescript/module/widgets/server-update.d.ts.map +1 -0
  93. package/expo-plugin/build/cjs/constants.js +20 -1
  94. package/expo-plugin/build/cjs/constants.js.map +1 -1
  95. package/expo-plugin/build/cjs/index.js +9 -1
  96. package/expo-plugin/build/cjs/index.js.map +1 -1
  97. package/expo-plugin/build/cjs/ios/index.js +1 -0
  98. package/expo-plugin/build/cjs/ios/index.js.map +1 -1
  99. package/expo-plugin/build/cjs/ios/infoPlist.js +28 -5
  100. package/expo-plugin/build/cjs/ios/infoPlist.js.map +1 -1
  101. package/expo-plugin/build/cjs/ios/serverUpdate.js +25 -0
  102. package/expo-plugin/build/cjs/ios/serverUpdate.js.map +1 -0
  103. package/expo-plugin/build/cjs/ios-widget/clientRendered.js +4 -4
  104. package/expo-plugin/build/cjs/ios-widget/clientRendered.js.map +1 -1
  105. package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js +5 -5
  106. package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js.map +1 -1
  107. package/expo-plugin/build/cjs/ios-widget/dynamic-live-activity/swift.js +130 -0
  108. package/expo-plugin/build/cjs/ios-widget/dynamic-live-activity/swift.js.map +1 -0
  109. package/expo-plugin/build/cjs/ios-widget/files/index.js +9 -2
  110. package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -1
  111. package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js +6 -3
  112. package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js.map +1 -1
  113. package/expo-plugin/build/cjs/ios-widget/files/manifest.js +24 -0
  114. package/expo-plugin/build/cjs/ios-widget/files/manifest.js.map +1 -1
  115. package/expo-plugin/build/cjs/ios-widget/files/swift-utils.js +7 -0
  116. package/expo-plugin/build/cjs/ios-widget/files/swift-utils.js.map +1 -0
  117. package/expo-plugin/build/cjs/ios-widget/files/swift.js +56 -26
  118. package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -1
  119. package/expo-plugin/build/cjs/ios-widget/index.js +9 -3
  120. package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -1
  121. package/expo-plugin/build/cjs/ios-widget/podfile.js +38 -12
  122. package/expo-plugin/build/cjs/ios-widget/podfile.js.map +1 -1
  123. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +34 -22
  124. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -1
  125. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +194 -118
  126. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -1
  127. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js +30 -22
  128. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js.map +1 -1
  129. package/expo-plugin/build/cjs/ios-widget/xcode/fileReferences.js +50 -0
  130. package/expo-plugin/build/cjs/ios-widget/xcode/fileReferences.js.map +1 -0
  131. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js +45 -43
  132. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js.map +1 -1
  133. package/expo-plugin/build/cjs/ios-widget/xcode/index.js +93 -91
  134. package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -1
  135. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js +41 -39
  136. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -1
  137. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js +2 -2
  138. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js.map +1 -1
  139. package/expo-plugin/build/cjs/ios-widget/xcode/target.js +29 -63
  140. package/expo-plugin/build/cjs/ios-widget/xcode/target.js.map +1 -1
  141. package/expo-plugin/build/cjs/utils/urlScheme.js +36 -14
  142. package/expo-plugin/build/cjs/utils/urlScheme.js.map +1 -1
  143. package/expo-plugin/build/cjs/validation.js +54 -0
  144. package/expo-plugin/build/cjs/validation.js.map +1 -1
  145. package/expo-plugin/build/esm/constants.js +17 -0
  146. package/expo-plugin/build/esm/constants.js.map +1 -1
  147. package/expo-plugin/build/esm/index.js +9 -1
  148. package/expo-plugin/build/esm/index.js.map +1 -1
  149. package/expo-plugin/build/esm/ios/index.js +1 -0
  150. package/expo-plugin/build/esm/ios/index.js.map +1 -1
  151. package/expo-plugin/build/esm/ios/infoPlist.js +28 -5
  152. package/expo-plugin/build/esm/ios/infoPlist.js.map +1 -1
  153. package/expo-plugin/build/esm/ios/serverUpdate.js +21 -0
  154. package/expo-plugin/build/esm/ios/serverUpdate.js.map +1 -0
  155. package/expo-plugin/build/esm/ios-widget/clientRendered.js +5 -5
  156. package/expo-plugin/build/esm/ios-widget/clientRendered.js.map +1 -1
  157. package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js +6 -6
  158. package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js.map +1 -1
  159. package/expo-plugin/build/esm/ios-widget/dynamic-live-activity/swift.js +122 -0
  160. package/expo-plugin/build/esm/ios-widget/dynamic-live-activity/swift.js.map +1 -0
  161. package/expo-plugin/build/esm/ios-widget/files/index.js +10 -3
  162. package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -1
  163. package/expo-plugin/build/esm/ios-widget/files/infoPlist.js +6 -3
  164. package/expo-plugin/build/esm/ios-widget/files/infoPlist.js.map +1 -1
  165. package/expo-plugin/build/esm/ios-widget/files/manifest.js +23 -1
  166. package/expo-plugin/build/esm/ios-widget/files/manifest.js.map +1 -1
  167. package/expo-plugin/build/esm/ios-widget/files/swift-utils.js +4 -0
  168. package/expo-plugin/build/esm/ios-widget/files/swift-utils.js.map +1 -0
  169. package/expo-plugin/build/esm/ios-widget/files/swift.js +50 -20
  170. package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -1
  171. package/expo-plugin/build/esm/ios-widget/index.js +9 -3
  172. package/expo-plugin/build/esm/ios-widget/index.js.map +1 -1
  173. package/expo-plugin/build/esm/ios-widget/podfile.js +36 -11
  174. package/expo-plugin/build/esm/ios-widget/podfile.js.map +1 -1
  175. package/expo-plugin/build/esm/ios-widget/widgetPlist.js +34 -22
  176. package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -1
  177. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +194 -117
  178. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -1
  179. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js +31 -22
  180. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js.map +1 -1
  181. package/expo-plugin/build/esm/ios-widget/xcode/fileReferences.js +45 -0
  182. package/expo-plugin/build/esm/ios-widget/xcode/fileReferences.js.map +1 -0
  183. package/expo-plugin/build/esm/ios-widget/xcode/groups.js +45 -42
  184. package/expo-plugin/build/esm/ios-widget/xcode/groups.js.map +1 -1
  185. package/expo-plugin/build/esm/ios-widget/xcode/index.js +97 -96
  186. package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -1
  187. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js +41 -39
  188. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -1
  189. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js +3 -2
  190. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js.map +1 -1
  191. package/expo-plugin/build/esm/ios-widget/xcode/target.js +28 -62
  192. package/expo-plugin/build/esm/ios-widget/xcode/target.js.map +1 -1
  193. package/expo-plugin/build/esm/utils/urlScheme.js +34 -14
  194. package/expo-plugin/build/esm/utils/urlScheme.js.map +1 -1
  195. package/expo-plugin/build/esm/validation.js +54 -1
  196. package/expo-plugin/build/esm/validation.js.map +1 -1
  197. package/expo-plugin/build/types/constants.d.ts +10 -1
  198. package/expo-plugin/build/types/constants.d.ts.map +1 -1
  199. package/expo-plugin/build/types/index.d.ts +1 -1
  200. package/expo-plugin/build/types/index.d.ts.map +1 -1
  201. package/expo-plugin/build/types/ios/index.d.ts +2 -0
  202. package/expo-plugin/build/types/ios/index.d.ts.map +1 -1
  203. package/expo-plugin/build/types/ios/infoPlist.d.ts +2 -0
  204. package/expo-plugin/build/types/ios/infoPlist.d.ts.map +1 -1
  205. package/expo-plugin/build/types/ios/serverUpdate.d.ts +11 -0
  206. package/expo-plugin/build/types/ios/serverUpdate.d.ts.map +1 -0
  207. package/expo-plugin/build/types/ios-widget/clientRendered.d.ts.map +1 -1
  208. package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts.map +1 -1
  209. package/expo-plugin/build/types/ios-widget/dynamic-live-activity/swift.d.ts +7 -0
  210. package/expo-plugin/build/types/ios-widget/dynamic-live-activity/swift.d.ts.map +1 -0
  211. package/expo-plugin/build/types/ios-widget/files/index.d.ts +3 -1
  212. package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -1
  213. package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts +2 -1
  214. package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts.map +1 -1
  215. package/expo-plugin/build/types/ios-widget/files/manifest.d.ts +9 -2
  216. package/expo-plugin/build/types/ios-widget/files/manifest.d.ts.map +1 -1
  217. package/expo-plugin/build/types/ios-widget/files/swift-utils.d.ts +2 -0
  218. package/expo-plugin/build/types/ios-widget/files/swift-utils.d.ts.map +1 -0
  219. package/expo-plugin/build/types/ios-widget/files/swift.d.ts +6 -2
  220. package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -1
  221. package/expo-plugin/build/types/ios-widget/index.d.ts +3 -1
  222. package/expo-plugin/build/types/ios-widget/index.d.ts.map +1 -1
  223. package/expo-plugin/build/types/ios-widget/podfile.d.ts +19 -1
  224. package/expo-plugin/build/types/ios-widget/podfile.d.ts.map +1 -1
  225. package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -1
  226. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +6 -8
  227. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -1
  228. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts +15 -10
  229. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -1
  230. package/expo-plugin/build/types/ios-widget/xcode/fileReferences.d.ts +16 -0
  231. package/expo-plugin/build/types/ios-widget/xcode/fileReferences.d.ts.map +1 -0
  232. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts +0 -4
  233. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts.map +1 -1
  234. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +23 -3
  235. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -1
  236. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts +16 -4
  237. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -1
  238. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts +0 -4
  239. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts.map +1 -1
  240. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts +11 -26
  241. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts.map +1 -1
  242. package/expo-plugin/build/types/types.d.ts +23 -4
  243. package/expo-plugin/build/types/types.d.ts.map +1 -1
  244. package/expo-plugin/build/types/utils/urlScheme.d.ts +16 -0
  245. package/expo-plugin/build/types/utils/urlScheme.d.ts.map +1 -1
  246. package/expo-plugin/build/types/validation.d.ts +2 -1
  247. package/expo-plugin/build/types/validation.d.ts.map +1 -1
  248. package/expo-plugin/src/constants.ts +24 -1
  249. package/expo-plugin/src/index.ts +14 -1
  250. package/expo-plugin/src/ios/index.ts +3 -0
  251. package/expo-plugin/src/ios/infoPlist.ts +33 -5
  252. package/expo-plugin/src/ios/serverUpdate.ts +29 -0
  253. package/expo-plugin/src/ios-widget/clientRendered.ts +9 -5
  254. package/expo-plugin/src/ios-widget/clientRenderedPrerender.ts +11 -6
  255. package/expo-plugin/src/ios-widget/dynamic-live-activity/swift.ts +138 -0
  256. package/expo-plugin/src/ios-widget/files/index.ts +15 -4
  257. package/expo-plugin/src/ios-widget/files/infoPlist.ts +17 -3
  258. package/expo-plugin/src/ios-widget/files/manifest.ts +42 -2
  259. package/expo-plugin/src/ios-widget/files/swift-utils.ts +3 -0
  260. package/expo-plugin/src/ios-widget/files/swift.ts +69 -22
  261. package/expo-plugin/src/ios-widget/index.ts +13 -3
  262. package/expo-plugin/src/ios-widget/podfile.ts +46 -13
  263. package/expo-plugin/src/ios-widget/widgetPlist.ts +37 -23
  264. package/expo-plugin/src/ios-widget/xcode/__fixtures__/fresh.pbxproj +197 -0
  265. package/expo-plugin/src/ios-widget/xcode/__fixtures__/with-existing-extension.pbxproj +321 -0
  266. package/expo-plugin/src/ios-widget/xcode/__fixtures__/with-per-config-signing.pbxproj +203 -0
  267. package/expo-plugin/src/ios-widget/xcode/__snapshots__/applyXcodeChanges.node.test.ts.snap +363 -0
  268. package/expo-plugin/src/ios-widget/xcode/__tests__/pbxConsistency.ts +130 -0
  269. package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +210 -164
  270. package/expo-plugin/src/ios-widget/xcode/configurationList.ts +52 -35
  271. package/expo-plugin/src/ios-widget/xcode/fileReferences.ts +51 -0
  272. package/expo-plugin/src/ios-widget/xcode/groups.ts +52 -54
  273. package/expo-plugin/src/ios-widget/xcode/index.ts +124 -119
  274. package/expo-plugin/src/ios-widget/xcode/mainAppSettings.ts +59 -54
  275. package/expo-plugin/src/ios-widget/xcode/productFile.ts +3 -2
  276. package/expo-plugin/src/ios-widget/xcode/target.ts +31 -83
  277. package/expo-plugin/src/types.ts +28 -4
  278. package/expo-plugin/src/utils/urlScheme.ts +47 -17
  279. package/expo-plugin/src/validation.ts +76 -1
  280. package/ios/Package.swift +39 -4
  281. package/ios/VoltraWidget.podspec +1 -0
  282. package/ios/app/NativeVoltra.mm +126 -7
  283. package/ios/app/VoltraLiveActivityManager.swift +30 -0
  284. package/ios/app/VoltraLiveActivityService.swift +77 -5
  285. package/ios/app/VoltraModule.swift +117 -1
  286. package/ios/app/VoltraModuleImpl.swift +116 -2
  287. package/ios/app/VoltraViewComponentView.mm +3 -3
  288. package/ios/app/VoltraWidgetService.swift +147 -12
  289. package/ios/app/dynamic-live-activity/VoltraDynamicLiveActivityService.swift +97 -0
  290. package/ios/app/dynamic-live-activity/VoltraLiveActivityChronology.swift +68 -0
  291. package/ios/shared/DynamicWidgetPropsCodec.swift +51 -0
  292. package/ios/shared/DynamicWidgetPropsStorage.swift +53 -0
  293. package/ios/shared/DynamicWidgetPropsStore.swift +117 -0
  294. package/ios/shared/DynamicWidgetRenderCoordinator.swift +31 -0
  295. package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerFetchResolver.swift +34 -0
  296. package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerProps.swift +55 -0
  297. package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerPropsStore.swift +146 -0
  298. package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerUpdateRunner.swift +193 -0
  299. package/ios/shared/DynamicWidgetUpdater.swift +30 -0
  300. package/ios/shared/ServerWidgetContentResolver.swift +60 -0
  301. package/ios/shared/ServerWidgetResponseStore.swift +25 -0
  302. package/ios/shared/ShortNames.swift +6 -0
  303. package/ios/shared/VoltraConfig.swift +41 -0
  304. package/ios/shared/VoltraConstants.swift +19 -0
  305. package/ios/shared/VoltraElement.swift +127 -43
  306. package/ios/shared/VoltraEventBus.swift +52 -7
  307. package/ios/shared/VoltraJSRenderer.swift +93 -23
  308. package/ios/shared/VoltraNode.swift +7 -111
  309. package/ios/shared/VoltraRefreshIntent.swift +1 -1
  310. package/ios/shared/VoltraWidgetDefaults.swift +9 -1
  311. package/ios/shared/VoltraWidgetKind.swift +41 -0
  312. package/ios/shared/VoltraWidgetServerFetcher.swift +52 -107
  313. package/ios/shared/WidgetServer/VoltraWidgetAppearance.swift +17 -0
  314. package/ios/shared/WidgetServer/VoltraWidgetServer.swift +138 -0
  315. package/ios/shared/WidgetServer/WidgetCanonicalConfiguration.swift +77 -0
  316. package/ios/shared/WidgetServer/WidgetScope.swift +55 -0
  317. package/ios/shared/WidgetServer/WidgetServerEtagStore.swift +55 -0
  318. package/ios/shared/WidgetServer/WidgetServerFetcher.swift +179 -0
  319. package/ios/shared/WidgetServer/WidgetServerRequestBuilder.swift +114 -0
  320. package/ios/shared/WidgetServer/WidgetServerSettingsCodec.swift +47 -0
  321. package/ios/shared/WidgetServer/WidgetServerSettingsResolver.swift +129 -0
  322. package/ios/shared/WidgetServer/WidgetServerSettingsStore.swift +170 -0
  323. package/ios/shared/WidgetServer/WidgetServerSettingsValidator.swift +73 -0
  324. package/ios/shared/WidgetServer/WidgetServerUpdateSettings.swift +123 -0
  325. package/ios/shared/WidgetServer/WidgetServerUpdateSettingsJson.swift +115 -0
  326. package/ios/shared/dynamic-live-activity/DynamicLiveActivityPropsCodec.swift +13 -0
  327. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityBundleSource.swift +156 -0
  328. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityObserver.swift +97 -0
  329. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityOperations.swift +105 -0
  330. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityPayloadValidator.swift +55 -0
  331. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRegistry.swift +143 -0
  332. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderFailureQueue.swift +158 -0
  333. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderFailureReporter.swift +120 -0
  334. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderer.swift +370 -0
  335. package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityTypes.swift +87 -0
  336. package/ios/shared/dynamic-live-activity/VoltraLiveActivityOrder.swift +19 -0
  337. package/ios/target/VoltraClientWidgetRuntime.swift +60 -10
  338. package/ios/target/VoltraDynamicWidgetServerUpdateProvider.swift +204 -0
  339. package/ios/target/VoltraHomeWidget.swift +91 -92
  340. package/ios/target/VoltraWidget.swift +3 -1
  341. package/ios/ui/Extensions/VoltraNode+View.swift +113 -0
  342. package/ios/ui/Generated/Parameters/ChartParameters.swift +3 -0
  343. package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +5 -3
  344. package/ios/ui/Helpers/VoltraProgressDriver.swift +6 -2
  345. package/ios/ui/Layout/VoltraFlexStackLayout.swift +9 -3
  346. package/ios/ui/Style/JSColorParser.swift +24 -8
  347. package/ios/ui/Style/JSGradientParser.swift +36 -12
  348. package/ios/ui/Style/JSStyleParser.swift +36 -12
  349. package/ios/ui/Style/LayoutStyle.swift +12 -4
  350. package/ios/ui/Views/VoltraChart.swift +160 -16
  351. package/ios/ui/Views/VoltraLinearGradient.swift +6 -2
  352. package/package.json +5 -5
  353. package/src/dynamic-widget/api.ts +25 -0
  354. package/src/events.ts +34 -0
  355. package/src/index.ts +23 -0
  356. package/src/live-activity/api.ts +2 -2
  357. package/src/live-activity/dynamic-api.ts +240 -0
  358. package/src/native/NativeVoltra.ts +22 -0
  359. package/src/types.ts +4 -0
  360. package/src/utils/enableDynamicLiveActivityHotReload.ts +50 -0
  361. package/src/utils/enableWidgetHotReload.ts +9 -16
  362. package/src/utils/useUpdateOnHMR.ts +3 -12
  363. package/src/widgets/server-credentials.ts +8 -0
  364. package/src/widgets/server-update.ts +84 -0
  365. /package/ios/shared/{VoltraKeychainHelper.swift → WidgetServer/VoltraKeychainHelper.swift} +0 -0
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.enableDynamicLiveActivityHotReload = enableDynamicLiveActivityHotReload;
7
+ var _ios = require("@use-voltra/ios");
8
+ var _VoltraModule = require("../VoltraModule.js");
9
+ /**
10
+ * Reload Dynamic Live Activities after a Metro Fast Refresh patch. When Metro
11
+ * re-evaluates a generated definition entry, only that definition is reloaded.
12
+ * Component-only refresh boundaries do not re-evaluate their importer, so those
13
+ * patches fall back to reloading every Dynamic Live Activity definition.
14
+ * Legacy activities and Dynamic Widgets are unaffected.
15
+ *
16
+ * Subscribes to the shared {@link getFastRefreshHub} so multiple `__accept`
17
+ * calls from one save collapse into a single native reload.
18
+ */
19
+ function enableDynamicLiveActivityHotReload() {
20
+ if (!__DEV__) return () => {};
21
+ const hub = (0, _ios.getFastRefreshHub)();
22
+ const previousDefinitionUpdated = global.__voltraDynamicLiveActivityDefinitionUpdated;
23
+ const updatedDefinitionIds = new Set();
24
+ global.__voltraDynamicLiveActivityDefinitionUpdated = definitionId => {
25
+ // A generated entry re-evaluated inside a patch: batch it so the debounced
26
+ // flush reloads each changed definition exactly once. A signal that arrives
27
+ // outside a patch (the first require of a definition) has no flush coming,
28
+ // so reload it immediately.
29
+ if (hub.isAccepting) {
30
+ updatedDefinitionIds.add(definitionId);
31
+ return;
32
+ }
33
+ void (0, _VoltraModule.getNativeVoltra)().reloadDynamicLiveActivities([definitionId]);
34
+ };
35
+ const unsubscribe = hub.onPatch(() => {
36
+ const definitionIds = Array.from(updatedDefinitionIds);
37
+ updatedDefinitionIds.clear();
38
+ // No definition re-evaluated during this patch: a component-only boundary
39
+ // changed, so fall back to reloading every definition (null).
40
+ void (0, _VoltraModule.getNativeVoltra)().reloadDynamicLiveActivities(definitionIds.length > 0 ? definitionIds : null);
41
+ });
42
+ return () => {
43
+ unsubscribe();
44
+ global.__voltraDynamicLiveActivityDefinitionUpdated = previousDefinitionUpdated;
45
+ };
46
+ }
47
+ //# sourceMappingURL=enableDynamicLiveActivityHotReload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ios","require","_VoltraModule","enableDynamicLiveActivityHotReload","__DEV__","hub","getFastRefreshHub","previousDefinitionUpdated","global","__voltraDynamicLiveActivityDefinitionUpdated","updatedDefinitionIds","Set","definitionId","isAccepting","add","getNativeVoltra","reloadDynamicLiveActivities","unsubscribe","onPatch","definitionIds","Array","from","clear","length"],"sourceRoot":"../../../src","sources":["utils/enableDynamicLiveActivityHotReload.ts"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,kCAAkCA,CAAA,EAAe;EAC/D,IAAI,CAACC,OAAO,EAAE,OAAO,MAAM,CAAC,CAAC;EAE7B,MAAMC,GAAG,GAAG,IAAAC,sBAAiB,EAAC,CAAC;EAC/B,MAAMC,yBAAyB,GAAGC,MAAM,CAACC,4CAA4C;EACrF,MAAMC,oBAAoB,GAAG,IAAIC,GAAG,CAAS,CAAC;EAE9CH,MAAM,CAACC,4CAA4C,GAAIG,YAAY,IAAK;IACtE;IACA;IACA;IACA;IACA,IAAIP,GAAG,CAACQ,WAAW,EAAE;MACnBH,oBAAoB,CAACI,GAAG,CAACF,YAAY,CAAC;MACtC;IACF;IACA,KAAK,IAAAG,6BAAe,EAAC,CAAC,CAACC,2BAA2B,CAAC,CAACJ,YAAY,CAAC,CAAC;EACpE,CAAC;EAED,MAAMK,WAAW,GAAGZ,GAAG,CAACa,OAAO,CAAC,MAAM;IACpC,MAAMC,aAAa,GAAGC,KAAK,CAACC,IAAI,CAACX,oBAAoB,CAAC;IACtDA,oBAAoB,CAACY,KAAK,CAAC,CAAC;IAC5B;IACA;IACA,KAAK,IAAAP,6BAAe,EAAC,CAAC,CAACC,2BAA2B,CAACG,aAAa,CAACI,MAAM,GAAG,CAAC,GAAGJ,aAAa,GAAG,IAAI,CAAC;EACrG,CAAC,CAAC;EAEF,OAAO,MAAM;IACXF,WAAW,CAAC,CAAC;IACbT,MAAM,CAACC,4CAA4C,GAAGF,yBAAyB;EACjF,CAAC;AACH","ignoreList":[]}
@@ -4,12 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.enableWidgetHotReload = enableWidgetHotReload;
7
+ var _ios = require("@use-voltra/ios");
7
8
  var _widgetApi = require("../widgets/widget-api.js");
8
9
  /**
9
10
  * Trigger `reloadWidgets()` on every Metro Fast Refresh patch (DEV only).
10
11
  *
11
- * Hooks the global `__accept` callback Metro fires when a Fast Refresh patch
12
- * lands in the host app's JS runtime. When fired, calls
12
+ * Subscribes to the shared {@link getFastRefreshHub}, which wraps the global
13
+ * `__accept` callback Metro fires when a Fast Refresh patch lands in the host
14
+ * app's JS runtime. On each debounced patch it calls
13
15
  * `WidgetCenter.shared.reloadAllTimelines()` so WidgetKit re-invokes each widget
14
16
  * Provider, which re-fetches the freshest bundle from Metro and renders the
15
17
  * updated UI.
@@ -20,20 +22,15 @@ var _widgetApi = require("../widgets/widget-api.js");
20
22
  * workflow the dev still relies on WidgetKit's natural lifecycle refresh on
21
23
  * app foreground.
22
24
  *
23
- * Call once at app startup. Returns `dispose()` to restore the prior
24
- * `__accept` (rarely needed in practice). No-op in release builds.
25
+ * Call once at app startup. Returns `dispose()` to unsubscribe (rarely needed
26
+ * in practice). No-op in release builds.
25
27
  */
26
28
  function enableWidgetHotReload() {
27
29
  if (!__DEV__) {
28
30
  return () => {};
29
31
  }
30
- const oldAccept = global['__accept'];
31
- global['__accept'] = (...args) => {
32
+ return (0, _ios.getFastRefreshHub)().onPatch(() => {
32
33
  void (0, _widgetApi.reloadWidgets)();
33
- oldAccept?.(...args);
34
- };
35
- return () => {
36
- global['__accept'] = oldAccept;
37
- };
34
+ });
38
35
  }
39
36
  //# sourceMappingURL=enableWidgetHotReload.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_widgetApi","require","enableWidgetHotReload","__DEV__","oldAccept","global","args","reloadWidgets"],"sourceRoot":"../../../src","sources":["utils/enableWidgetHotReload.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAA,EAAe;EAClD,IAAI,CAACC,OAAO,EAAE;IACZ,OAAO,MAAM,CAAC,CAAC;EACjB;EAEA,MAAMC,SAAS,GAAGC,MAAM,CAAC,UAAU,CAAC;EACpCA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAGC,IAAI,KAAK;IAChC,KAAK,IAAAC,wBAAa,EAAC,CAAC;IACpBH,SAAS,GAAG,GAAGE,IAAI,CAAC;EACtB,CAAC;EAED,OAAO,MAAM;IACXD,MAAM,CAAC,UAAU,CAAC,GAAGD,SAAS;EAChC,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_ios","require","_widgetApi","enableWidgetHotReload","__DEV__","getFastRefreshHub","onPatch","reloadWidgets"],"sourceRoot":"../../../src","sources":["utils/enableWidgetHotReload.ts"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,qBAAqBA,CAAA,EAAe;EAClD,IAAI,CAACC,OAAO,EAAE;IACZ,OAAO,MAAM,CAAC,CAAC;EACjB;EAEA,OAAO,IAAAC,sBAAiB,EAAC,CAAC,CAACC,OAAO,CAAC,MAAM;IACvC,KAAK,IAAAC,wBAAa,EAAC,CAAC;EACtB,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useUpdateOnHMR = void 0;
7
+ var _ios = require("@use-voltra/ios");
7
8
  var _react = require("react");
8
9
  const useUpdateOnHMR = () => {
9
10
  const [, forceUpdate] = (0, _react.useState)(0);
@@ -11,14 +12,9 @@ const useUpdateOnHMR = () => {
11
12
  if (!__DEV__) {
12
13
  return;
13
14
  }
14
- const oldAccept = global['__accept'];
15
- global['__accept'] = (...args) => {
15
+ return (0, _ios.getFastRefreshHub)().onPatch(() => {
16
16
  forceUpdate(prev => prev + 1);
17
- oldAccept?.(...args);
18
- };
19
- return () => {
20
- global['__accept'] = oldAccept;
21
- };
17
+ });
22
18
  }, []);
23
19
  };
24
20
  exports.useUpdateOnHMR = useUpdateOnHMR;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","useUpdateOnHMR","forceUpdate","useState","useEffect","__DEV__","oldAccept","global","args","prev","exports"],"sourceRoot":"../../../src","sources":["utils/useUpdateOnHMR.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM,GAAGC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EAEnC,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACC,OAAO,EAAE;MACZ;IACF;IAEA,MAAMC,SAAS,GAAGC,MAAM,CAAC,UAAU,CAAC;IACpCA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAGC,IAAI,KAAK;MAChCN,WAAW,CAAEO,IAAI,IAAKA,IAAI,GAAG,CAAC,CAAC;MAC/BH,SAAS,GAAG,GAAGE,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,MAAM;MACXD,MAAM,CAAC,UAAU,CAAC,GAAGD,SAAS;IAChC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAAI,OAAA,CAAAT,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ios","require","_react","useUpdateOnHMR","forceUpdate","useState","useEffect","__DEV__","getFastRefreshHub","onPatch","prev","exports"],"sourceRoot":"../../../src","sources":["utils/useUpdateOnHMR.ts"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM,GAAGC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EAEnC,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACC,OAAO,EAAE;MACZ;IACF;IAEA,OAAO,IAAAC,sBAAiB,EAAC,CAAC,CAACC,OAAO,CAAC,MAAM;MACvCL,WAAW,CAAEM,IAAI,IAAKA,IAAI,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAAC,OAAA,CAAAR,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -6,12 +6,21 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.clearWidgetServerCredentials = clearWidgetServerCredentials;
7
7
  exports.setWidgetServerCredentials = setWidgetServerCredentials;
8
8
  var _VoltraModule = require("../VoltraModule.js");
9
+ /**
10
+ * @deprecated Use {@link setWidgetServerUpdate} with an `Authorization` header. This writes the
11
+ * same stored credentials and keeps the same replace-everything semantics, so migrating is a
12
+ * one-line change; it will be removed in a future major.
13
+ */
9
14
  async function setWidgetServerCredentials(credentials) {
10
15
  if (!credentials.token) {
11
16
  throw new Error('[Voltra][iOS] setWidgetServerCredentials: token is required');
12
17
  }
13
18
  return (0, _VoltraModule.getNativeVoltra)().setWidgetServerCredentials(credentials);
14
19
  }
20
+
21
+ /**
22
+ * @deprecated Use {@link clearWidgetServerUpdate} instead.
23
+ */
15
24
  async function clearWidgetServerCredentials() {
16
25
  return (0, _VoltraModule.getNativeVoltra)().clearWidgetServerCredentials();
17
26
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_VoltraModule","require","setWidgetServerCredentials","credentials","token","Error","getNativeVoltra","clearWidgetServerCredentials"],"sourceRoot":"../../../src","sources":["widgets/server-credentials.ts"],"mappings":";;;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AAIO,eAAeC,0BAA0BA,CAACC,WAAoC,EAAiB;EACpG,IAAI,CAACA,WAAW,CAACC,KAAK,EAAE;IACtB,MAAM,IAAIC,KAAK,CAAC,6DAA6D,CAAC;EAChF;EAEA,OAAO,IAAAC,6BAAe,EAAC,CAAC,CAACJ,0BAA0B,CAACC,WAAW,CAAC;AAClE;AAEO,eAAeI,4BAA4BA,CAAA,EAAkB;EAClE,OAAO,IAAAD,6BAAe,EAAC,CAAC,CAACC,4BAA4B,CAAC,CAAC;AACzD","ignoreList":[]}
1
+ {"version":3,"names":["_VoltraModule","require","setWidgetServerCredentials","credentials","token","Error","getNativeVoltra","clearWidgetServerCredentials"],"sourceRoot":"../../../src","sources":["widgets/server-credentials.ts"],"mappings":";;;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACO,eAAeC,0BAA0BA,CAACC,WAAoC,EAAiB;EACpG,IAAI,CAACA,WAAW,CAACC,KAAK,EAAE;IACtB,MAAM,IAAIC,KAAK,CAAC,6DAA6D,CAAC;EAChF;EAEA,OAAO,IAAAC,6BAAe,EAAC,CAAC,CAACJ,0BAA0B,CAACC,WAAW,CAAC;AAClE;;AAEA;AACA;AACA;AACO,eAAeI,4BAA4BA,CAAA,EAAkB;EAClE,OAAO,IAAAD,6BAAe,EAAC,CAAC,CAACC,4BAA4B,CAAC,CAAC;AACzD","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.clearWidgetServerUpdate = clearWidgetServerUpdate;
7
+ exports.getWidgetServerUpdate = getWidgetServerUpdate;
8
+ exports.setWidgetServerUpdate = setWidgetServerUpdate;
9
+ var _VoltraModule = require("../VoltraModule.js");
10
+ /**
11
+ * Overrides a server-driven widget's `serverUpdate` settings at runtime.
12
+ *
13
+ * The `serverUpdate` entry in app.json supplies the defaults; this replaces any of them for one
14
+ * widget, or for every server-driven widget when no `widgetId` is given. A widget-scoped call wins
15
+ * over a global one, and `headers` and `query` merge per key across the two.
16
+ *
17
+ * Each call replaces the whole layer it writes, so pass every field you want to keep. Setting
18
+ * anything reschedules the widgets it affects and fetches once immediately.
19
+ *
20
+ * @example Point a widget at the tenant's own backend once the user has logged in.
21
+ * ```ts
22
+ * await setWidgetServerUpdate(
23
+ * { url: `https://${tenant}.example.com/widgets/portfolio`, headers: { Authorization: `Bearer ${token}` } },
24
+ * { widgetId: 'portfolio' }
25
+ * )
26
+ * ```
27
+ *
28
+ * @example Take a widget over and drive it from the app until you hand it back.
29
+ * ```ts
30
+ * await setWidgetServerUpdate({ enabled: false }, { widgetId: 'portfolio' })
31
+ * await updateDynamicWidget('portfolio', localProps)
32
+ * ```
33
+ *
34
+ * @throws if the widget has no `serverUpdate` in app.json, if the URL is not https (plain http is
35
+ * allowed only in a debug build, and only for a local dev host), or if `query` names one of the
36
+ * parameters Voltra already sends.
37
+ */
38
+ async function setWidgetServerUpdate(settings, options) {
39
+ return (0, _VoltraModule.getNativeVoltra)().setWidgetServerUpdate(JSON.stringify(settings ?? {}), options?.widgetId ?? null);
40
+ }
41
+
42
+ /**
43
+ * Drops the runtime settings for one widget, or the global ones when no `widgetId` is given, so
44
+ * the widget falls back to what app.json configured.
45
+ *
46
+ * Clearing the global settings is the logout gesture: along with the settings it drops what the
47
+ * server last sent for every server-driven widget, so a Dynamic Widget goes back to `{}` with
48
+ * `env.serverUpdate.status` of `never` rather than showing the previous account's data. Credentials
49
+ * set with the deprecated `setWidgetServerCredentials` are stored separately — clear those with
50
+ * `clearWidgetServerCredentials`.
51
+ */
52
+ async function clearWidgetServerUpdate(options) {
53
+ return (0, _VoltraModule.getNativeVoltra)().clearWidgetServerUpdate(options?.widgetId ?? null);
54
+ }
55
+
56
+ /**
57
+ * Reads a widget's `serverUpdate` settings back, without reasoning about what was set where.
58
+ *
59
+ * With a `widgetId`, this is the fully resolved settings that widget would fetch with right now:
60
+ * every layer flattened and app.json's defaults applied — `null` if the widget is not
61
+ * server-driven. Without one, this is the raw contents of the global layer only — what the last
62
+ * `setWidgetServerUpdate(settings)` call (with no `widgetId`) wrote, with no defaults applied and
63
+ * every field optional — `null` if nothing has been set globally.
64
+ *
65
+ * @example Check what a widget is about to fetch from.
66
+ * ```ts
67
+ * const snapshot = await getWidgetServerUpdate({ widgetId: 'portfolio' })
68
+ * if (snapshot?.enabled) {
69
+ * console.log(`portfolio fetches ${snapshot.url} every ${snapshot.intervalMinutes}m`)
70
+ * }
71
+ * ```
72
+ */
73
+
74
+ async function getWidgetServerUpdate(options) {
75
+ const json = await (0, _VoltraModule.getNativeVoltra)().getWidgetServerUpdate(options?.widgetId ?? null);
76
+ return json == null ? null : JSON.parse(json);
77
+ }
78
+ //# sourceMappingURL=server-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_VoltraModule","require","setWidgetServerUpdate","settings","options","getNativeVoltra","JSON","stringify","widgetId","clearWidgetServerUpdate","getWidgetServerUpdate","json","parse"],"sourceRoot":"../../../src","sources":["widgets/server-update.ts"],"mappings":";;;;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,qBAAqBA,CACzCC,QAAoC,EACpCC,OAAmC,EACpB;EACf,OAAO,IAAAC,6BAAe,EAAC,CAAC,CAACH,qBAAqB,CAACI,IAAI,CAACC,SAAS,CAACJ,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAEC,OAAO,EAAEI,QAAQ,IAAI,IAAI,CAAC;AAC3G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,uBAAuBA,CAACL,OAAmC,EAAiB;EAChG,OAAO,IAAAC,6BAAe,EAAC,CAAC,CAACI,uBAAuB,CAACL,OAAO,EAAEI,QAAQ,IAAI,IAAI,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,eAAeE,qBAAqBA,CACzCN,OAAmC,EACsC;EACzE,MAAMO,IAAI,GAAG,MAAM,IAAAN,6BAAe,EAAC,CAAC,CAACK,qBAAqB,CAACN,OAAO,EAAEI,QAAQ,IAAI,IAAI,CAAC;EACrF,OAAOG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAGL,IAAI,CAACM,KAAK,CAACD,IAAI,CAAC;AAC/C","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { getNativeVoltra } from '../native/NativeVoltra.js';
4
+ import { assertRunningOnApple } from '../utils/assertRunningOnApple.js';
5
+ export const updateDynamicWidget = async (dynamicWidgetId, dynamicWidgetProps) => {
6
+ if (!assertRunningOnApple()) return Promise.resolve();
7
+ const dynamicWidgetPropsJson = JSON.stringify(dynamicWidgetProps);
8
+ return getNativeVoltra().updateDynamicWidget(dynamicWidgetId, dynamicWidgetPropsJson);
9
+ };
10
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getNativeVoltra","assertRunningOnApple","updateDynamicWidget","dynamicWidgetId","dynamicWidgetProps","Promise","resolve","dynamicWidgetPropsJson","JSON","stringify"],"sourceRoot":"../../../src","sources":["dynamic-widget/api.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,2BAA2B;AAC3D,SAASC,oBAAoB,QAAQ,kCAAkC;AAcvE,OAAO,MAAMC,mBAAmB,GAAG,MAAAA,CACjCC,eAAuB,EACvBC,kBAAsC,KACpB;EAClB,IAAI,CAACH,oBAAoB,CAAC,CAAC,EAAE,OAAOI,OAAO,CAACC,OAAO,CAAC,CAAC;EAErD,MAAMC,sBAAsB,GAAGC,IAAI,CAACC,SAAS,CAACL,kBAAkB,CAAC;EAEjE,OAAOJ,eAAe,CAAC,CAAC,CAACE,mBAAmB,CAACC,eAAe,EAAEI,sBAAsB,CAAC;AACvF,CAAC","ignoreList":[]}
@@ -5,6 +5,11 @@ import { getNativeVoltra } from './VoltraModule.js';
5
5
  const noopSubscription = {
6
6
  remove: () => {}
7
7
  };
8
+
9
+ // Codegen EventEmitter subscriptions do not tell native code when their last
10
+ // JavaScript listener goes away. Keep this count at the public API boundary so
11
+ // the App Group queue is drained only while it can actually be delivered.
12
+ let dynamicRenderFailureListenerCount = 0;
8
13
  export function addVoltraListener(event, listener) {
9
14
  if (Platform.OS !== 'ios') {
10
15
  console.warn(`[Voltra] Event '${event}' is only supported on iOS. Returning no-op subscription.`);
@@ -20,6 +25,24 @@ export function addVoltraListener(event, listener) {
20
25
  return voltraModule.onStateChanged(listener);
21
26
  case 'interaction':
22
27
  return voltraModule.onInteraction(listener);
28
+ case 'dynamicLiveActivityRenderFailed':
29
+ const subscription = voltraModule.onDynamicLiveActivityRenderFailed(listener);
30
+ dynamicRenderFailureListenerCount += 1;
31
+ if (dynamicRenderFailureListenerCount === 1) {
32
+ voltraModule.setDynamicLiveActivityRenderFailureListenerActive(true);
33
+ }
34
+ let removed = false;
35
+ return {
36
+ remove: () => {
37
+ if (removed) return;
38
+ removed = true;
39
+ subscription.remove();
40
+ dynamicRenderFailureListenerCount -= 1;
41
+ if (dynamicRenderFailureListenerCount === 0) {
42
+ voltraModule.setDynamicLiveActivityRenderFailureListenerActive(false);
43
+ }
44
+ }
45
+ };
23
46
  default:
24
47
  console.warn(`[Voltra] Event '${event}' is not supported. Returning no-op subscription.`);
25
48
  return noopSubscription;
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","getNativeVoltra","noopSubscription","remove","addVoltraListener","event","listener","OS","console","warn","voltraModule","onActivityTokenReceived","onActivityPushToStartTokenReceived","onStateChanged","onInteraction"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAGvC,SAASC,eAAe,QAAQ,mBAAmB;AA6BnD,MAAMC,gBAAmC,GAAG;EAC1CC,MAAM,EAAEA,CAAA,KAAM,CAAC;AACjB,CAAC;AASD,OAAO,SAASC,iBAAiBA,CAC/BC,KAAQ,EACRC,QAA4C,EACzB;EACnB,IAAIN,QAAQ,CAACO,EAAE,KAAK,KAAK,EAAE;IACzBC,OAAO,CAACC,IAAI,CAAC,mBAAmBJ,KAAK,2DAA2D,CAAC;IACjG,OAAOH,gBAAgB;EACzB;EAEA,MAAMQ,YAAY,GAAGT,eAAe,CAAC,CAAC;EAEtC,QAAQI,KAAK;IACX,KAAK,uBAAuB;MAC1B,OAAOK,YAAY,CAACC,uBAAuB,CAACL,QAA2D,CAAC;IAC1G,KAAK,kCAAkC;MACrC,OAAOI,YAAY,CAACE,kCAAkC,CACpDN,QACF,CAAC;IACH,KAAK,aAAa;MAChB,OAAOI,YAAY,CAACG,cAAc,CAACP,QAAoD,CAAC;IAC1F,KAAK,aAAa;MAChB,OAAOI,YAAY,CAACI,aAAa,CAACR,QAAiD,CAAC;IACtF;MACEE,OAAO,CAACC,IAAI,CAAC,mBAAmBJ,KAAK,mDAAmD,CAAC;MACzF,OAAOH,gBAAgB;EAC3B;AACF","ignoreList":[]}
1
+ {"version":3,"names":["Platform","getNativeVoltra","noopSubscription","remove","dynamicRenderFailureListenerCount","addVoltraListener","event","listener","OS","console","warn","voltraModule","onActivityTokenReceived","onActivityPushToStartTokenReceived","onStateChanged","onInteraction","subscription","onDynamicLiveActivityRenderFailed","setDynamicLiveActivityRenderFailureListenerActive","removed"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAGvC,SAASC,eAAe,QAAQ,mBAAmB;AAoCnD,MAAMC,gBAAmC,GAAG;EAC1CC,MAAM,EAAEA,CAAA,KAAM,CAAC;AACjB,CAAC;;AAED;AACA;AACA;AACA,IAAIC,iCAAiC,GAAG,CAAC;AAUzC,OAAO,SAASC,iBAAiBA,CAC/BC,KAAQ,EACRC,QAA4C,EACzB;EACnB,IAAIP,QAAQ,CAACQ,EAAE,KAAK,KAAK,EAAE;IACzBC,OAAO,CAACC,IAAI,CAAC,mBAAmBJ,KAAK,2DAA2D,CAAC;IACjG,OAAOJ,gBAAgB;EACzB;EAEA,MAAMS,YAAY,GAAGV,eAAe,CAAC,CAAC;EAEtC,QAAQK,KAAK;IACX,KAAK,uBAAuB;MAC1B,OAAOK,YAAY,CAACC,uBAAuB,CAACL,QAA2D,CAAC;IAC1G,KAAK,kCAAkC;MACrC,OAAOI,YAAY,CAACE,kCAAkC,CACpDN,QACF,CAAC;IACH,KAAK,aAAa;MAChB,OAAOI,YAAY,CAACG,cAAc,CAACP,QAAoD,CAAC;IAC1F,KAAK,aAAa;MAChB,OAAOI,YAAY,CAACI,aAAa,CAACR,QAAiD,CAAC;IACtF,KAAK,iCAAiC;MACpC,MAAMS,YAAY,GAAGL,YAAY,CAACM,iCAAiC,CACjEV,QACF,CAAC;MACDH,iCAAiC,IAAI,CAAC;MACtC,IAAIA,iCAAiC,KAAK,CAAC,EAAE;QAC3CO,YAAY,CAACO,iDAAiD,CAAC,IAAI,CAAC;MACtE;MAEA,IAAIC,OAAO,GAAG,KAAK;MACnB,OAAO;QACLhB,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAIgB,OAAO,EAAE;UACbA,OAAO,GAAG,IAAI;UACdH,YAAY,CAACb,MAAM,CAAC,CAAC;UACrBC,iCAAiC,IAAI,CAAC;UACtC,IAAIA,iCAAiC,KAAK,CAAC,EAAE;YAC3CO,YAAY,CAACO,iDAAiD,CAAC,KAAK,CAAC;UACvE;QACF;MACF,CAAC;IACH;MACET,OAAO,CAACC,IAAI,CAAC,mBAAmBJ,KAAK,mDAAmD,CAAC;MACzF,OAAOJ,gBAAgB;EAC3B;AACF","ignoreList":[]}
@@ -4,15 +4,19 @@ export { Voltra } from '@use-voltra/ios';
4
4
  export { VoltraLiveActivityPreview } from './components/VoltraLiveActivityPreview.js';
5
5
  export { VoltraView } from './components/VoltraView.js';
6
6
  export { VoltraWidgetPreview } from './components/VoltraWidgetPreview.js';
7
+ export { updateDynamicWidget } from './dynamic-widget/api.js';
7
8
  export * from './events.js';
8
9
  export { isGlassSupported, isHeadless, useIsHeadless } from './helpers.js';
9
10
  export { logger } from './logger.js';
10
11
  export { endAllLiveActivities, isLiveActivityActive, startLiveActivity, stopLiveActivity, updateLiveActivity, useLiveActivity } from './live-activity/api.js';
12
+ export { getDynamicLiveActivityDefinitionIds, startDynamicLiveActivity, updateDynamicLiveActivity, useDynamicLiveActivity } from './live-activity/dynamic-api.js';
11
13
  export { clearPreloadedImages, preloadImages, reloadLiveActivities } from './preload.js';
12
14
  export { assertRunningOnApple } from './utils/assertRunningOnApple.js';
13
15
  export { enableWidgetHotReload } from './utils/enableWidgetHotReload.js';
16
+ export { enableDynamicLiveActivityHotReload } from './utils/enableDynamicLiveActivityHotReload.js';
14
17
  export { useUpdateOnHMR } from './utils/useUpdateOnHMR.js';
15
18
  export * from './utils/helpers.js';
19
+ export { clearWidgetServerUpdate, getWidgetServerUpdate, setWidgetServerUpdate } from './widgets/server-update.js';
16
20
  export { clearWidgetServerCredentials, setWidgetServerCredentials } from './widgets/server-credentials.js';
17
21
  export { clearAllWidgets, clearWidget, getActiveWidgets, reloadWidgets, scheduleWidget, updateWidget } from './widgets/widget-api.js';
18
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Voltra","VoltraLiveActivityPreview","VoltraView","VoltraWidgetPreview","isGlassSupported","isHeadless","useIsHeadless","logger","endAllLiveActivities","isLiveActivityActive","startLiveActivity","stopLiveActivity","updateLiveActivity","useLiveActivity","clearPreloadedImages","preloadImages","reloadLiveActivities","assertRunningOnApple","enableWidgetHotReload","useUpdateOnHMR","clearWidgetServerCredentials","setWidgetServerCredentials","clearAllWidgets","clearWidget","getActiveWidgets","reloadWidgets","scheduleWidget","updateWidget"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,iBAAiB;AACxC,SACEC,yBAAyB,QAEpB,2CAA2C;AAClD,SAASC,UAAU,QAA8B,4BAA4B;AAC7E,SAASC,mBAAmB,QAAuC,qCAAqC;AACxG,cAAc,aAAa;AAC3B,SAASC,gBAAgB,EAAEC,UAAU,EAAEC,aAAa,QAAQ,cAAc;AAC1E,SAASC,MAAM,QAA6B,aAAa;AACzD,SACEC,oBAAoB,EAEpBC,oBAAoB,EAEpBC,iBAAiB,EAEjBC,gBAAgB,EAChBC,kBAAkB,EAElBC,eAAe,QAGV,wBAAwB;AAE/B,SACEC,oBAAoB,EAEpBC,aAAa,EAEbC,oBAAoB,QACf,cAAc;AACrB,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,cAAc,oBAAoB;AAElC,SACEC,4BAA4B,EAC5BC,0BAA0B,QAErB,iCAAiC;AAExC,SACEC,eAAe,EACfC,WAAW,EACXC,gBAAgB,EAChBC,aAAa,EAEbC,cAAc,EACdC,YAAY,QAEP,yBAAyB","ignoreList":[]}
1
+ {"version":3,"names":["Voltra","VoltraLiveActivityPreview","VoltraView","VoltraWidgetPreview","updateDynamicWidget","isGlassSupported","isHeadless","useIsHeadless","logger","endAllLiveActivities","isLiveActivityActive","startLiveActivity","stopLiveActivity","updateLiveActivity","useLiveActivity","getDynamicLiveActivityDefinitionIds","startDynamicLiveActivity","updateDynamicLiveActivity","useDynamicLiveActivity","clearPreloadedImages","preloadImages","reloadLiveActivities","assertRunningOnApple","enableWidgetHotReload","enableDynamicLiveActivityHotReload","useUpdateOnHMR","clearWidgetServerUpdate","getWidgetServerUpdate","setWidgetServerUpdate","clearWidgetServerCredentials","setWidgetServerCredentials","clearAllWidgets","clearWidget","getActiveWidgets","reloadWidgets","scheduleWidget","updateWidget"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,iBAAiB;AACxC,SACEC,yBAAyB,QAEpB,2CAA2C;AAClD,SAASC,UAAU,QAA8B,4BAA4B;AAC7E,SAASC,mBAAmB,QAAuC,qCAAqC;AACxG,SAAgEC,mBAAmB,QAAQ,yBAAyB;AACpH,cAAc,aAAa;AAC3B,SAASC,gBAAgB,EAAEC,UAAU,EAAEC,aAAa,QAAQ,cAAc;AAC1E,SAASC,MAAM,QAA6B,aAAa;AACzD,SACEC,oBAAoB,EAEpBC,oBAAoB,EAEpBC,iBAAiB,EAEjBC,gBAAgB,EAChBC,kBAAkB,EAElBC,eAAe,QAGV,wBAAwB;AAC/B,SACEC,mCAAmC,EACnCC,wBAAwB,EAExBC,yBAAyB,EAEzBC,sBAAsB,QAKjB,gCAAgC;AAEvC,SACEC,oBAAoB,EAEpBC,aAAa,EAEbC,oBAAoB,QACf,cAAc;AACrB,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,kCAAkC,QAAQ,+CAA+C;AAClG,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,cAAc,oBAAoB;AAElC,SACEC,uBAAuB,EACvBC,qBAAqB,EACrBC,qBAAqB,QAKhB,4BAA4B;AACnC,SACEC,4BAA4B,EAC5BC,0BAA0B,QAErB,iCAAiC;AAExC,SACEC,eAAe,EACfC,WAAW,EACXC,gBAAgB,EAChBC,aAAa,EAEbC,cAAc,EACdC,YAAY,QAEP,yBAAyB","ignoreList":[]}
@@ -6,7 +6,7 @@ import { addVoltraListener } from '../events.js';
6
6
  import { logger } from '../logger.js';
7
7
  import { assertRunningOnApple, useUpdateOnHMR } from '../utils/index.js';
8
8
  import { getNativeVoltra } from '../VoltraModule.js';
9
- const normalizeSharedLiveActivityOptions = options => {
9
+ export const normalizeSharedLiveActivityOptions = options => {
10
10
  if (!options) return undefined;
11
11
  const normalizedOptions = {};
12
12
  if (options.staleDate !== undefined) {
@@ -25,7 +25,7 @@ const normalizeSharedLiveActivityOptions = options => {
25
25
  }
26
26
  return Object.keys(normalizedOptions).length > 0 ? normalizedOptions : undefined;
27
27
  };
28
- const normalizeEndLiveActivityOptions = options => {
28
+ export const normalizeEndLiveActivityOptions = options => {
29
29
  if (!options?.dismissalPolicy) return undefined;
30
30
  if (typeof options.dismissalPolicy === 'string') {
31
31
  if (options.dismissalPolicy === 'immediate') {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useState","renderLiveActivityToString","addVoltraListener","logger","assertRunningOnApple","useUpdateOnHMR","getNativeVoltra","normalizeSharedLiveActivityOptions","options","undefined","normalizedOptions","staleDate","Date","now","warn","relevanceScore","Object","keys","length","normalizeEndLiveActivityOptions","dismissalPolicy","type","date","after","useLiveActivity","variants","targetId","setTargetId","activityName","isLiveActivityActive","isActive","optionsRef","variantsRef","lastUpdateOptionsRef","current","start","id","startLiveActivity","update","updateOptions","updateLiveActivity","end","stopLiveActivity","autoStart","autoUpdate","subscription","event","activityState","remove","Promise","resolve","payload","normalizedSharedOptions","target","deepLinkUrl","channelId","endLiveActivity","endAllLiveActivities"],"sourceRoot":"../../../src","sources":["live-activity/api.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","renderLiveActivityToString","addVoltraListener","logger","assertRunningOnApple","useUpdateOnHMR","getNativeVoltra","normalizeSharedLiveActivityOptions","options","undefined","normalizedOptions","staleDate","Date","now","warn","relevanceScore","Object","keys","length","normalizeEndLiveActivityOptions","dismissalPolicy","type","date","after","useLiveActivity","variants","targetId","setTargetId","activityName","isLiveActivityActive","isActive","optionsRef","variantsRef","lastUpdateOptionsRef","current","start","id","startLiveActivity","update","updateOptions","updateLiveActivity","end","stopLiveActivity","autoStart","autoUpdate","subscription","event","activityState","remove","Promise","resolve","payload","normalizedSharedOptions","target","deepLinkUrl","channelId","endLiveActivity","endAllLiveActivities"],"sourceRoot":"../../../src","sources":["live-activity/api.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from 'react';
4
+ import { addVoltraListener } from '../events.js';
5
+ import { assertRunningOnApple, useUpdateOnHMR } from '../utils/index.js';
6
+ import { getNativeVoltra } from '../VoltraModule.js';
7
+ import { isLiveActivityActive, normalizeSharedLiveActivityOptions, stopLiveActivity } from './api.js';
8
+
9
+ /** @experimental A JSON-compatible value accepted as Dynamic Live Activity props. */
10
+
11
+ /** @experimental A complete JSON-compatible props record for a Dynamic Live Activity update. */
12
+
13
+ /** @experimental Options used to start a Dynamic Live Activity. */
14
+
15
+ /** @experimental Options used to update a Dynamic Live Activity. */
16
+
17
+ /** @experimental Options for `useDynamicLiveActivity`. */
18
+
19
+ /** @experimental Lifecycle controls returned by `useDynamicLiveActivity`. */
20
+
21
+ function serializeDynamicLiveActivityProps(props) {
22
+ const ancestors = new Set();
23
+ const validate = (value, path) => {
24
+ if (value === null || typeof value === 'string' || typeof value === 'boolean') return;
25
+ if (typeof value === 'number') {
26
+ if (!Number.isFinite(value)) {
27
+ throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} is not a finite number.`);
28
+ }
29
+ return;
30
+ }
31
+ if (Array.isArray(value)) {
32
+ if (ancestors.has(value)) {
33
+ throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} contains a circular reference.`);
34
+ }
35
+ ancestors.add(value);
36
+ value.forEach((item, index) => validate(item, `${path}[${index}]`));
37
+ ancestors.delete(value);
38
+ return;
39
+ }
40
+ if (typeof value === 'object') {
41
+ const prototype = Object.getPrototypeOf(value);
42
+ if (prototype !== Object.prototype && prototype !== null) {
43
+ throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} must be a plain object.`);
44
+ }
45
+ if (ancestors.has(value)) {
46
+ throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} contains a circular reference.`);
47
+ }
48
+ ancestors.add(value);
49
+ for (const [key, item] of Object.entries(value)) {
50
+ validate(item, `${path}.${key}`);
51
+ }
52
+ ancestors.delete(value);
53
+ return;
54
+ }
55
+ throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} has unsupported type ${typeof value}.`);
56
+ };
57
+ if (props === null || Array.isArray(props) || typeof props !== 'object') {
58
+ throw new TypeError('Dynamic Live Activity props must be a JSON-compatible record.');
59
+ }
60
+ validate(props, 'props');
61
+ return JSON.stringify(props);
62
+ }
63
+
64
+ /**
65
+ * Starts a bundled Dynamic Live Activity with a complete opaque props record.
66
+ * @experimental
67
+ */
68
+ export async function startDynamicLiveActivity(definitionId, props, options) {
69
+ if (!assertRunningOnApple()) return '';
70
+ const propsJson = serializeDynamicLiveActivityProps(props);
71
+ const normalizedSharedOptions = normalizeSharedLiveActivityOptions(options);
72
+ return getNativeVoltra().startDynamicLiveActivity(definitionId, propsJson, {
73
+ target: 'liveActivity',
74
+ deepLinkUrl: options?.deepLinkUrl,
75
+ activityName: options?.activityName,
76
+ channelId: options?.channelId,
77
+ ...normalizedSharedOptions
78
+ });
79
+ }
80
+
81
+ /**
82
+ * Replaces a Dynamic Live Activity's complete opaque props record.
83
+ * @experimental
84
+ */
85
+ export async function updateDynamicLiveActivity(activityName, props, options) {
86
+ if (!assertRunningOnApple()) return;
87
+ const propsJson = serializeDynamicLiveActivityProps(props);
88
+ return getNativeVoltra().updateDynamicLiveActivity(activityName, propsJson, normalizeSharedLiveActivityOptions(options) ?? {});
89
+ }
90
+
91
+ /**
92
+ * Returns the Dynamic Live Activity definition IDs bundled in the installed app.
93
+ * @experimental
94
+ */
95
+ export async function getDynamicLiveActivityDefinitionIds() {
96
+ if (!assertRunningOnApple()) return [];
97
+ return getNativeVoltra().getDynamicLiveActivityDefinitionIds();
98
+ }
99
+
100
+ /**
101
+ * Manages the lifecycle of one Dynamic Live Activity definition.
102
+ *
103
+ * Complete props are sent on every update. In development, call
104
+ * `enableDynamicLiveActivityHotReload()` once in the app host to reload only
105
+ * the definition changed by Fast Refresh.
106
+ * @experimental
107
+ */
108
+ export function useDynamicLiveActivity(definitionId, props, options) {
109
+ const [activityName, setActivityName] = useState(() => {
110
+ if (options?.activityName) {
111
+ return isLiveActivityActive(options.activityName) ? options.activityName : null;
112
+ }
113
+ return null;
114
+ });
115
+ const propsRef = useRef(props);
116
+ const optionsRef = useRef(options);
117
+ const lastUpdateOptionsRef = useRef(undefined);
118
+ useEffect(() => {
119
+ propsRef.current = props;
120
+ }, [props]);
121
+ useEffect(() => {
122
+ optionsRef.current = options;
123
+ }, [options]);
124
+ useUpdateOnHMR();
125
+ const start = useCallback(async startOptions => {
126
+ const id = await startDynamicLiveActivity(definitionId, propsRef.current, {
127
+ ...optionsRef.current,
128
+ ...startOptions
129
+ });
130
+ setActivityName(id);
131
+ }, [definitionId]);
132
+ const update = useCallback(async updateOptions => {
133
+ if (!activityName) return;
134
+ const mergedOptions = {
135
+ ...optionsRef.current,
136
+ ...updateOptions
137
+ };
138
+ lastUpdateOptionsRef.current = mergedOptions;
139
+ await updateDynamicLiveActivity(activityName, propsRef.current, mergedOptions);
140
+ }, [activityName]);
141
+ const end = useCallback(async endOptions => {
142
+ if (!activityName) return;
143
+ await stopLiveActivity(activityName, endOptions);
144
+ setActivityName(null);
145
+ }, [activityName]);
146
+ useEffect(() => {
147
+ if (options?.autoStart) void start();
148
+ }, [options?.autoStart, start]);
149
+ useEffect(() => {
150
+ if (options?.autoUpdate) void update(lastUpdateOptionsRef.current);
151
+ }, [options?.autoUpdate, props, update]);
152
+ useEffect(() => {
153
+ if (!activityName) return;
154
+ const subscription = addVoltraListener('stateChange', event => {
155
+ if (event.activityName !== activityName) return;
156
+ if (event.activityState === 'dismissed' || event.activityState === 'ended') setActivityName(null);
157
+ });
158
+ return () => subscription.remove();
159
+ }, [activityName]);
160
+ return {
161
+ start,
162
+ update,
163
+ end,
164
+ isActive: activityName !== null
165
+ };
166
+ }
167
+ //# sourceMappingURL=dynamic-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","addVoltraListener","assertRunningOnApple","useUpdateOnHMR","getNativeVoltra","isLiveActivityActive","normalizeSharedLiveActivityOptions","stopLiveActivity","serializeDynamicLiveActivityProps","props","ancestors","Set","validate","value","path","Number","isFinite","TypeError","Array","isArray","has","add","forEach","item","index","delete","prototype","Object","getPrototypeOf","key","entries","JSON","stringify","startDynamicLiveActivity","definitionId","options","propsJson","normalizedSharedOptions","target","deepLinkUrl","activityName","channelId","updateDynamicLiveActivity","getDynamicLiveActivityDefinitionIds","useDynamicLiveActivity","setActivityName","propsRef","optionsRef","lastUpdateOptionsRef","undefined","current","start","startOptions","id","update","updateOptions","mergedOptions","end","endOptions","autoStart","autoUpdate","subscription","event","activityState","remove","isActive"],"sourceRoot":"../../../src","sources":["live-activity/dynamic-api.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getNativeVoltra","voltraModule","get","Error"],"sourceRoot":"../../../src","sources":["native/NativeVoltra.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+GlD,OAAO,SAASC,eAAeA,CAAA,EAAS;EACtC,MAAMC,YAAY,GAAGF,mBAAmB,CAACG,GAAG,CAAO,cAAc,CAAC;EAElE,IAAID,YAAY,IAAI,IAAI,EAAE;IACxB,MAAM,IAAIE,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,OAAOF,YAAY;AACrB","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getNativeVoltra","voltraModule","get","Error"],"sourceRoot":"../../../src","sources":["native/NativeVoltra.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAqIlD,OAAO,SAASC,eAAeA,CAAA,EAAS;EACtC,MAAMC,YAAY,GAAGF,mBAAmB,CAACG,GAAG,CAAO,cAAc,CAAC;EAElE,IAAID,YAAY,IAAI,IAAI,EAAE;IACxB,MAAM,IAAIE,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,OAAOF,YAAY;AACrB","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ import { getFastRefreshHub } from '@use-voltra/ios';
4
+ import { getNativeVoltra } from '../VoltraModule.js';
5
+ /**
6
+ * Reload Dynamic Live Activities after a Metro Fast Refresh patch. When Metro
7
+ * re-evaluates a generated definition entry, only that definition is reloaded.
8
+ * Component-only refresh boundaries do not re-evaluate their importer, so those
9
+ * patches fall back to reloading every Dynamic Live Activity definition.
10
+ * Legacy activities and Dynamic Widgets are unaffected.
11
+ *
12
+ * Subscribes to the shared {@link getFastRefreshHub} so multiple `__accept`
13
+ * calls from one save collapse into a single native reload.
14
+ */
15
+ export function enableDynamicLiveActivityHotReload() {
16
+ if (!__DEV__) return () => {};
17
+ const hub = getFastRefreshHub();
18
+ const previousDefinitionUpdated = global.__voltraDynamicLiveActivityDefinitionUpdated;
19
+ const updatedDefinitionIds = new Set();
20
+ global.__voltraDynamicLiveActivityDefinitionUpdated = definitionId => {
21
+ // A generated entry re-evaluated inside a patch: batch it so the debounced
22
+ // flush reloads each changed definition exactly once. A signal that arrives
23
+ // outside a patch (the first require of a definition) has no flush coming,
24
+ // so reload it immediately.
25
+ if (hub.isAccepting) {
26
+ updatedDefinitionIds.add(definitionId);
27
+ return;
28
+ }
29
+ void getNativeVoltra().reloadDynamicLiveActivities([definitionId]);
30
+ };
31
+ const unsubscribe = hub.onPatch(() => {
32
+ const definitionIds = Array.from(updatedDefinitionIds);
33
+ updatedDefinitionIds.clear();
34
+ // No definition re-evaluated during this patch: a component-only boundary
35
+ // changed, so fall back to reloading every definition (null).
36
+ void getNativeVoltra().reloadDynamicLiveActivities(definitionIds.length > 0 ? definitionIds : null);
37
+ });
38
+ return () => {
39
+ unsubscribe();
40
+ global.__voltraDynamicLiveActivityDefinitionUpdated = previousDefinitionUpdated;
41
+ };
42
+ }
43
+ //# sourceMappingURL=enableDynamicLiveActivityHotReload.js.map