@use-voltra/expo-plugin 1.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 (244) hide show
  1. package/README.md +34 -0
  2. package/build/cjs/android/files/assets.js +259 -0
  3. package/build/cjs/android/files/assets.js.map +1 -0
  4. package/build/cjs/android/files/fonts.js +69 -0
  5. package/build/cjs/android/files/fonts.js.map +1 -0
  6. package/build/cjs/android/files/index.js +81 -0
  7. package/build/cjs/android/files/index.js.map +1 -0
  8. package/build/cjs/android/files/initialStates.js +83 -0
  9. package/build/cjs/android/files/initialStates.js.map +1 -0
  10. package/build/cjs/android/files/kotlin.js +142 -0
  11. package/build/cjs/android/files/kotlin.js.map +1 -0
  12. package/build/cjs/android/files/xml.js +247 -0
  13. package/build/cjs/android/files/xml.js.map +1 -0
  14. package/build/cjs/android/index.js +33 -0
  15. package/build/cjs/android/index.js.map +1 -0
  16. package/build/cjs/android/manifest.js +63 -0
  17. package/build/cjs/android/manifest.js.map +1 -0
  18. package/build/cjs/constants.js +48 -0
  19. package/build/cjs/constants.js.map +1 -0
  20. package/build/cjs/index.js +71 -0
  21. package/build/cjs/index.js.map +1 -0
  22. package/build/cjs/ios/eas.js +28 -0
  23. package/build/cjs/ios/eas.js.map +1 -0
  24. package/build/cjs/ios/entitlements.js +46 -0
  25. package/build/cjs/ios/entitlements.js.map +1 -0
  26. package/build/cjs/ios/index.js +39 -0
  27. package/build/cjs/ios/index.js.map +1 -0
  28. package/build/cjs/ios/infoPlist.js +51 -0
  29. package/build/cjs/ios/infoPlist.js.map +1 -0
  30. package/build/cjs/ios/pushNotifications.js +22 -0
  31. package/build/cjs/ios/pushNotifications.js.map +1 -0
  32. package/build/cjs/ios-widget/eas.js +66 -0
  33. package/build/cjs/ios-widget/eas.js.map +1 -0
  34. package/build/cjs/ios-widget/files/assets.js +199 -0
  35. package/build/cjs/ios-widget/files/assets.js.map +1 -0
  36. package/build/cjs/ios-widget/files/entitlements.js +77 -0
  37. package/build/cjs/ios-widget/files/entitlements.js.map +1 -0
  38. package/build/cjs/ios-widget/files/index.js +92 -0
  39. package/build/cjs/ios-widget/files/index.js.map +1 -0
  40. package/build/cjs/ios-widget/files/infoPlist.js +91 -0
  41. package/build/cjs/ios-widget/files/infoPlist.js.map +1 -0
  42. package/build/cjs/ios-widget/files/swift.js +256 -0
  43. package/build/cjs/ios-widget/files/swift.js.map +1 -0
  44. package/build/cjs/ios-widget/fonts.js +151 -0
  45. package/build/cjs/ios-widget/fonts.js.map +1 -0
  46. package/build/cjs/ios-widget/index.js +46 -0
  47. package/build/cjs/ios-widget/index.js.map +1 -0
  48. package/build/cjs/ios-widget/podfile.js +43 -0
  49. package/build/cjs/ios-widget/podfile.js.map +1 -0
  50. package/build/cjs/ios-widget/widgetPlist.js +99 -0
  51. package/build/cjs/ios-widget/widgetPlist.js.map +1 -0
  52. package/build/cjs/ios-widget/xcode/buildPhases.js +245 -0
  53. package/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -0
  54. package/build/cjs/ios-widget/xcode/configurationList.js +91 -0
  55. package/build/cjs/ios-widget/xcode/configurationList.js.map +1 -0
  56. package/build/cjs/ios-widget/xcode/groups.js +65 -0
  57. package/build/cjs/ios-widget/xcode/groups.js.map +1 -0
  58. package/build/cjs/ios-widget/xcode/index.js +155 -0
  59. package/build/cjs/ios-widget/xcode/index.js.map +1 -0
  60. package/build/cjs/ios-widget/xcode/mainAppSettings.js +71 -0
  61. package/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -0
  62. package/build/cjs/ios-widget/xcode/productFile.js +74 -0
  63. package/build/cjs/ios-widget/xcode/productFile.js.map +1 -0
  64. package/build/cjs/ios-widget/xcode/target.js +113 -0
  65. package/build/cjs/ios-widget/xcode/target.js.map +1 -0
  66. package/build/cjs/package.json +3 -0
  67. package/build/cjs/types.js +3 -0
  68. package/build/cjs/types.js.map +1 -0
  69. package/build/cjs/utils/entitlements.js +21 -0
  70. package/build/cjs/utils/entitlements.js.map +1 -0
  71. package/build/cjs/utils/fileDiscovery.js +107 -0
  72. package/build/cjs/utils/fileDiscovery.js.map +1 -0
  73. package/build/cjs/utils/fonts.js +75 -0
  74. package/build/cjs/utils/fonts.js.map +1 -0
  75. package/build/cjs/utils/logger.js +51 -0
  76. package/build/cjs/utils/logger.js.map +1 -0
  77. package/build/cjs/utils/prerender.js +191 -0
  78. package/build/cjs/utils/prerender.js.map +1 -0
  79. package/build/cjs/utils/urlScheme.js +40 -0
  80. package/build/cjs/utils/urlScheme.js.map +1 -0
  81. package/build/cjs/validation.js +231 -0
  82. package/build/cjs/validation.js.map +1 -0
  83. package/build/esm/android/files/assets.js +223 -0
  84. package/build/esm/android/files/assets.js.map +1 -0
  85. package/build/esm/android/files/fonts.js +33 -0
  86. package/build/esm/android/files/fonts.js.map +1 -0
  87. package/build/esm/android/files/index.js +77 -0
  88. package/build/esm/android/files/index.js.map +1 -0
  89. package/build/esm/android/files/initialStates.js +44 -0
  90. package/build/esm/android/files/initialStates.js.map +1 -0
  91. package/build/esm/android/files/kotlin.js +103 -0
  92. package/build/esm/android/files/kotlin.js.map +1 -0
  93. package/build/esm/android/files/xml.js +206 -0
  94. package/build/esm/android/files/xml.js.map +1 -0
  95. package/build/esm/android/index.js +29 -0
  96. package/build/esm/android/index.js.map +1 -0
  97. package/build/esm/android/manifest.js +59 -0
  98. package/build/esm/android/manifest.js.map +1 -0
  99. package/build/esm/constants.js +45 -0
  100. package/build/esm/constants.js.map +1 -0
  101. package/build/esm/index.js +69 -0
  102. package/build/esm/index.js.map +1 -0
  103. package/build/esm/ios/eas.js +24 -0
  104. package/build/esm/ios/eas.js.map +1 -0
  105. package/build/esm/ios/entitlements.js +42 -0
  106. package/build/esm/ios/entitlements.js.map +1 -0
  107. package/build/esm/ios/index.js +34 -0
  108. package/build/esm/ios/index.js.map +1 -0
  109. package/build/esm/ios/infoPlist.js +47 -0
  110. package/build/esm/ios/infoPlist.js.map +1 -0
  111. package/build/esm/ios/pushNotifications.js +18 -0
  112. package/build/esm/ios/pushNotifications.js.map +1 -0
  113. package/build/esm/ios-widget/eas.js +62 -0
  114. package/build/esm/ios-widget/eas.js.map +1 -0
  115. package/build/esm/ios-widget/files/assets.js +163 -0
  116. package/build/esm/ios-widget/files/assets.js.map +1 -0
  117. package/build/esm/ios-widget/files/entitlements.js +37 -0
  118. package/build/esm/ios-widget/files/entitlements.js.map +1 -0
  119. package/build/esm/ios-widget/files/index.js +55 -0
  120. package/build/esm/ios-widget/files/index.js.map +1 -0
  121. package/build/esm/ios-widget/files/infoPlist.js +55 -0
  122. package/build/esm/ios-widget/files/infoPlist.js.map +1 -0
  123. package/build/esm/ios-widget/files/swift.js +217 -0
  124. package/build/esm/ios-widget/files/swift.js.map +1 -0
  125. package/build/esm/ios-widget/fonts.js +111 -0
  126. package/build/esm/ios-widget/fonts.js.map +1 -0
  127. package/build/esm/ios-widget/index.js +42 -0
  128. package/build/esm/ios-widget/index.js.map +1 -0
  129. package/build/esm/ios-widget/podfile.js +39 -0
  130. package/build/esm/ios-widget/podfile.js.map +1 -0
  131. package/build/esm/ios-widget/widgetPlist.js +92 -0
  132. package/build/esm/ios-widget/widgetPlist.js.map +1 -0
  133. package/build/esm/ios-widget/xcode/buildPhases.js +208 -0
  134. package/build/esm/ios-widget/xcode/buildPhases.js.map +1 -0
  135. package/build/esm/ios-widget/xcode/configurationList.js +87 -0
  136. package/build/esm/ios-widget/xcode/configurationList.js.map +1 -0
  137. package/build/esm/ios-widget/xcode/groups.js +61 -0
  138. package/build/esm/ios-widget/xcode/groups.js.map +1 -0
  139. package/build/esm/ios-widget/xcode/index.js +118 -0
  140. package/build/esm/ios-widget/xcode/index.js.map +1 -0
  141. package/build/esm/ios-widget/xcode/mainAppSettings.js +68 -0
  142. package/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -0
  143. package/build/esm/ios-widget/xcode/productFile.js +70 -0
  144. package/build/esm/ios-widget/xcode/productFile.js.map +1 -0
  145. package/build/esm/ios-widget/xcode/target.js +108 -0
  146. package/build/esm/ios-widget/xcode/target.js.map +1 -0
  147. package/build/esm/package.json +3 -0
  148. package/build/esm/types.js +2 -0
  149. package/build/esm/types.js.map +1 -0
  150. package/build/esm/utils/entitlements.js +18 -0
  151. package/build/esm/utils/entitlements.js.map +1 -0
  152. package/build/esm/utils/fileDiscovery.js +71 -0
  153. package/build/esm/utils/fileDiscovery.js.map +1 -0
  154. package/build/esm/utils/fonts.js +39 -0
  155. package/build/esm/utils/fonts.js.map +1 -0
  156. package/build/esm/utils/logger.js +48 -0
  157. package/build/esm/utils/logger.js.map +1 -0
  158. package/build/esm/utils/prerender.js +152 -0
  159. package/build/esm/utils/prerender.js.map +1 -0
  160. package/build/esm/utils/urlScheme.js +37 -0
  161. package/build/esm/utils/urlScheme.js.map +1 -0
  162. package/build/esm/validation.js +193 -0
  163. package/build/esm/validation.js.map +1 -0
  164. package/build/types/android/files/assets.d.ts +26 -0
  165. package/build/types/android/files/assets.d.ts.map +1 -0
  166. package/build/types/android/files/fonts.d.ts +19 -0
  167. package/build/types/android/files/fonts.d.ts.map +1 -0
  168. package/build/types/android/files/index.d.ts +21 -0
  169. package/build/types/android/files/index.d.ts.map +1 -0
  170. package/build/types/android/files/initialStates.d.ts +14 -0
  171. package/build/types/android/files/initialStates.d.ts.map +1 -0
  172. package/build/types/android/files/kotlin.d.ts +11 -0
  173. package/build/types/android/files/kotlin.d.ts.map +1 -0
  174. package/build/types/android/files/xml.d.ts +25 -0
  175. package/build/types/android/files/xml.d.ts.map +1 -0
  176. package/build/types/android/index.d.ts +12 -0
  177. package/build/types/android/index.d.ts.map +1 -0
  178. package/build/types/android/manifest.d.ts +15 -0
  179. package/build/types/android/manifest.d.ts.map +1 -0
  180. package/build/types/constants.d.ts +29 -0
  181. package/build/types/constants.d.ts.map +1 -0
  182. package/build/types/index.d.ts +13 -0
  183. package/build/types/index.d.ts.map +1 -0
  184. package/build/types/ios/eas.d.ts +12 -0
  185. package/build/types/ios/eas.d.ts.map +1 -0
  186. package/build/types/ios/entitlements.d.ts +14 -0
  187. package/build/types/ios/entitlements.d.ts.map +1 -0
  188. package/build/types/ios/index.d.ts +19 -0
  189. package/build/types/ios/index.d.ts.map +1 -0
  190. package/build/types/ios/infoPlist.d.ts +21 -0
  191. package/build/types/ios/infoPlist.d.ts.map +1 -0
  192. package/build/types/ios/pushNotifications.d.ts +10 -0
  193. package/build/types/ios/pushNotifications.d.ts.map +1 -0
  194. package/build/types/ios-widget/eas.d.ts +15 -0
  195. package/build/types/ios-widget/eas.d.ts.map +1 -0
  196. package/build/types/ios-widget/files/assets.d.ts +13 -0
  197. package/build/types/ios-widget/files/assets.d.ts.map +1 -0
  198. package/build/types/ios-widget/files/entitlements.d.ts +17 -0
  199. package/build/types/ios-widget/files/entitlements.d.ts.map +1 -0
  200. package/build/types/ios-widget/files/index.d.ts +24 -0
  201. package/build/types/ios-widget/files/index.d.ts.map +1 -0
  202. package/build/types/ios-widget/files/infoPlist.d.ts +10 -0
  203. package/build/types/ios-widget/files/infoPlist.d.ts.map +1 -0
  204. package/build/types/ios-widget/files/swift.d.ts +15 -0
  205. package/build/types/ios-widget/files/swift.d.ts.map +1 -0
  206. package/build/types/ios-widget/fonts.d.ts +22 -0
  207. package/build/types/ios-widget/fonts.d.ts.map +1 -0
  208. package/build/types/ios-widget/index.d.ts +31 -0
  209. package/build/types/ios-widget/index.d.ts.map +1 -0
  210. package/build/types/ios-widget/podfile.d.ts +9 -0
  211. package/build/types/ios-widget/podfile.d.ts.map +1 -0
  212. package/build/types/ios-widget/widgetPlist.d.ts +20 -0
  213. package/build/types/ios-widget/widgetPlist.d.ts.map +1 -0
  214. package/build/types/ios-widget/xcode/buildPhases.d.ts +25 -0
  215. package/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -0
  216. package/build/types/ios-widget/xcode/configurationList.d.ts +20 -0
  217. package/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -0
  218. package/build/types/ios-widget/xcode/groups.d.ts +15 -0
  219. package/build/types/ios-widget/xcode/groups.d.ts.map +1 -0
  220. package/build/types/ios-widget/xcode/index.d.ts +20 -0
  221. package/build/types/ios-widget/xcode/index.d.ts.map +1 -0
  222. package/build/types/ios-widget/xcode/mainAppSettings.d.ts +15 -0
  223. package/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -0
  224. package/build/types/ios-widget/xcode/productFile.d.ts +14 -0
  225. package/build/types/ios-widget/xcode/productFile.d.ts.map +1 -0
  226. package/build/types/ios-widget/xcode/target.d.ts +42 -0
  227. package/build/types/ios-widget/xcode/target.d.ts.map +1 -0
  228. package/build/types/types.d.ts +261 -0
  229. package/build/types/types.d.ts.map +1 -0
  230. package/build/types/utils/entitlements.d.ts +9 -0
  231. package/build/types/utils/entitlements.d.ts.map +1 -0
  232. package/build/types/utils/fileDiscovery.d.ts +13 -0
  233. package/build/types/utils/fileDiscovery.d.ts.map +1 -0
  234. package/build/types/utils/fonts.d.ts +2 -0
  235. package/build/types/utils/fonts.d.ts.map +1 -0
  236. package/build/types/utils/logger.d.ts +30 -0
  237. package/build/types/utils/logger.d.ts.map +1 -0
  238. package/build/types/utils/prerender.d.ts +25 -0
  239. package/build/types/utils/prerender.d.ts.map +1 -0
  240. package/build/types/utils/urlScheme.d.ts +10 -0
  241. package/build/types/utils/urlScheme.d.ts.map +1 -0
  242. package/build/types/validation.d.ts +17 -0
  243. package/build/types/validation.d.ts.map +1 -0
  244. package/package.json +58 -0
@@ -0,0 +1,261 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ /**
3
+ * Type definitions for the Voltra plugin
4
+ */
5
+ /**
6
+ * Supported widget size families
7
+ */
8
+ export type WidgetFamily = 'systemSmall' | 'systemMedium' | 'systemLarge' | 'systemExtraLarge' | 'accessoryCircular' | 'accessoryRectangular' | 'accessoryInline';
9
+ /**
10
+ * Configuration for a single home screen widget
11
+ */
12
+ export interface WidgetConfig {
13
+ /**
14
+ * Unique identifier for the widget (used as the widget kind and in JS API)
15
+ * Must be alphanumeric with underscores only
16
+ */
17
+ id: string;
18
+ /**
19
+ * Display name shown in the widget gallery
20
+ */
21
+ displayName: string;
22
+ /**
23
+ * Description shown in the widget gallery
24
+ */
25
+ description: string;
26
+ /**
27
+ * Supported widget sizes
28
+ * @default ['systemSmall', 'systemMedium', 'systemLarge']
29
+ */
30
+ supportedFamilies?: WidgetFamily[];
31
+ /**
32
+ * Path to a file that default exports a WidgetVariants object for initial widget state.
33
+ * This will be pre-rendered at build time and bundled into the iOS app.
34
+ */
35
+ initialStatePath?: string;
36
+ /**
37
+ * Configuration for server-driven widget updates.
38
+ * When configured, the widget will periodically fetch new content from a remote server
39
+ * running Voltra SSR, without requiring the user to open the app.
40
+ */
41
+ serverUpdate?: WidgetServerUpdateConfig;
42
+ }
43
+ /**
44
+ * Configuration for server-driven widget updates.
45
+ * Enables widgets to pull updates from a remote Voltra SSR service.
46
+ */
47
+ export interface WidgetServerUpdateConfig {
48
+ /**
49
+ * The URL of the Voltra SSR endpoint that returns widget JSON.
50
+ * The widget ID and family will be appended as query parameters.
51
+ */
52
+ url: string;
53
+ /**
54
+ * How often the widget should fetch updates, in minutes.
55
+ * iOS WidgetKit may throttle requests; minimum effective interval is ~15 minutes.
56
+ * @default 15
57
+ */
58
+ intervalMinutes?: number;
59
+ /**
60
+ * Whether to show a native refresh button in the top-right corner of the widget.
61
+ * When tapped, triggers an immediate server update.
62
+ * @default false
63
+ */
64
+ refresh?: boolean;
65
+ }
66
+ /**
67
+ * Structure describing the files in a widget extension target.
68
+ * Used for configuring Xcode build phases and groups.
69
+ */
70
+ export interface WidgetFiles {
71
+ swiftFiles: string[];
72
+ entitlementFiles: string[];
73
+ plistFiles: string[];
74
+ assetDirectories: string[];
75
+ intentFiles: string[];
76
+ }
77
+ /**
78
+ * Configuration for a single Android widget
79
+ */
80
+ export interface AndroidWidgetConfig {
81
+ /**
82
+ * Unique identifier for the widget
83
+ */
84
+ id: string;
85
+ /**
86
+ * Display name shown in the widget picker
87
+ */
88
+ displayName: string;
89
+ /**
90
+ * Description shown in the widget picker
91
+ */
92
+ description: string;
93
+ /**
94
+ * Minimum width in dp. If provided, takes precedence over minCellWidth.
95
+ */
96
+ minWidth?: number;
97
+ /**
98
+ * Minimum height in dp. If provided, takes precedence over minCellHeight.
99
+ */
100
+ minHeight?: number;
101
+ /**
102
+ * Minimum width in cells. Used to derive minWidth if not provided: (N * 70) - 30
103
+ */
104
+ minCellWidth?: number;
105
+ /**
106
+ * Minimum height in cells. Used to derive minHeight if not provided: (N * 70) - 30
107
+ */
108
+ minCellHeight?: number;
109
+ /**
110
+ * Target cell width (Android 12+, 1-5 cells)
111
+ */
112
+ targetCellWidth: number;
113
+ /**
114
+ * Target cell height (Android 12+, 1-5 cells)
115
+ */
116
+ targetCellHeight: number;
117
+ /**
118
+ * Whether the widget can be resized
119
+ * @default 'horizontal|vertical'
120
+ */
121
+ resizeMode?: 'none' | 'horizontal' | 'vertical' | 'horizontal|vertical';
122
+ /**
123
+ * Widget category
124
+ * @default 'home_screen'
125
+ */
126
+ widgetCategory?: 'home_screen' | 'keyguard' | 'home_screen|keyguard';
127
+ /**
128
+ * Path to a file that default exports a WidgetVariants object for initial widget state.
129
+ * This will be pre-rendered at build time and bundled into the app.
130
+ */
131
+ initialStatePath?: string;
132
+ /**
133
+ * Configuration for server-driven widget updates.
134
+ * When configured, the widget will periodically fetch new content from a remote server
135
+ * running Voltra SSR, without requiring the user to open the app.
136
+ */
137
+ serverUpdate?: AndroidWidgetServerUpdateConfig;
138
+ /**
139
+ * Path to preview image for widget picker (PNG/JPG/WebP).
140
+ * Sets android:previewImage attribute. Works on all Android versions.
141
+ * On Android 12+, combine with previewLayout for better results.
142
+ */
143
+ previewImage?: string;
144
+ /**
145
+ * Path to custom XML layout for RemoteViews preview (Android 12+).
146
+ * Sets android:previewLayout attribute for scalable previews.
147
+ * If not provided but previewImage is set, an auto-layout will be generated.
148
+ */
149
+ previewLayout?: string;
150
+ }
151
+ /**
152
+ * Configuration for server-driven Android widget updates.
153
+ */
154
+ export interface AndroidWidgetServerUpdateConfig {
155
+ /**
156
+ * The URL of the Voltra SSR endpoint that returns widget JSON.
157
+ * The widget ID will be appended as a query parameter.
158
+ * Example: "https://api.example.com/widgets/render"
159
+ */
160
+ url: string;
161
+ /**
162
+ * How often the widget should fetch updates, in minutes.
163
+ * Uses WorkManager PeriodicWorkRequest; minimum interval is 15 minutes.
164
+ * @default 60
165
+ */
166
+ intervalMinutes?: number;
167
+ /**
168
+ * Whether to show a native refresh button in the top-right corner of the widget.
169
+ * When tapped, triggers an immediate server update.
170
+ * @default false
171
+ */
172
+ refresh?: boolean;
173
+ }
174
+ /**
175
+ * Android-specific plugin configuration
176
+ */
177
+ export interface AndroidPluginConfig {
178
+ /**
179
+ * Android home screen widgets
180
+ * Separate from iOS widgets to allow platform-specific configurations
181
+ */
182
+ widgets?: AndroidWidgetConfig[];
183
+ }
184
+ /**
185
+ * Props for the Voltra config plugin
186
+ */
187
+ export interface ConfigPluginProps {
188
+ /**
189
+ * Enable push notification support for Live Activities
190
+ */
191
+ enablePushNotifications?: boolean;
192
+ /**
193
+ * App group identifier for sharing data between app and widget extension
194
+ */
195
+ groupIdentifier?: string;
196
+ /**
197
+ * Configuration for iOS home screen widgets (uses WidgetFamily sizing)
198
+ * Each widget will be available in the widget gallery
199
+ */
200
+ widgets?: WidgetConfig[];
201
+ /**
202
+ * iOS deployment target version for the widget extension
203
+ * If not provided, will use the main app's deployment target or fall back to the default
204
+ */
205
+ deploymentTarget?: string;
206
+ /**
207
+ * Custom target name for the widget extension
208
+ * If not provided, defaults to "{AppName}LiveActivity"
209
+ * Useful for matching existing provisioning profiles or credentials
210
+ */
211
+ targetName?: string;
212
+ /**
213
+ * Custom fonts to include in the Live Activity extension.
214
+ * Provide an array of font module specifiers, file paths, or directories containing fonts.
215
+ * Supports .ttf, .otf, .woff, and .woff2 formats.
216
+ *
217
+ * This is equivalent to expo-font but for the Live Activity extension.
218
+ * @see https://docs.expo.dev/versions/latest/sdk/font/
219
+ */
220
+ fonts?: string[];
221
+ /**
222
+ * Keychain Access Group for sharing credentials between the main app and widget extension.
223
+ * Required when using server-driven widget updates with authentication.
224
+ * This should match a Keychain Sharing capability group configured in your Apple Developer account.
225
+ * Example: "$(AppIdentifierPrefix)com.example.shared"
226
+ *
227
+ * If not provided and any widget has `serverUpdate` configured, defaults to
228
+ * `$(AppIdentifierPrefix)<bundleIdentifier>` (the app's own keychain access group).
229
+ */
230
+ keychainGroup?: string;
231
+ /**
232
+ * Android-specific configuration
233
+ */
234
+ android?: AndroidPluginConfig;
235
+ }
236
+ /**
237
+ * The main Voltra config plugin type
238
+ */
239
+ export type VoltraConfigPlugin = ConfigPlugin<ConfigPluginProps | undefined>;
240
+ /**
241
+ * Props passed to iOS-related plugins
242
+ */
243
+ export interface IOSPluginProps {
244
+ targetName: string;
245
+ bundleIdentifier: string;
246
+ deploymentTarget: string;
247
+ widgets?: WidgetConfig[];
248
+ groupIdentifier?: string;
249
+ projectRoot: string;
250
+ platformProjectRoot: string;
251
+ fonts?: string[];
252
+ }
253
+ /**
254
+ * Props passed to Android-related plugins
255
+ */
256
+ export interface AndroidPluginProps {
257
+ widgets: AndroidWidgetConfig[];
258
+ userImagesPath?: string;
259
+ fonts?: string[];
260
+ }
261
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared entitlements utilities.
3
+ */
4
+ /**
5
+ * Adds application groups entitlement to an entitlements object.
6
+ * Ensures the group list is deduped and preserves existing order.
7
+ */
8
+ export declare function addApplicationGroupsEntitlement(entitlements: Record<string, any>, groupIdentifier: string): Record<string, any>;
9
+ //# sourceMappingURL=entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../../../src/utils/entitlements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,eAAe,EAAE,MAAM,GACtB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAcrB"}
@@ -0,0 +1,13 @@
1
+ import type { WidgetFiles } from '../types';
2
+ /**
3
+ * Scans the widget extension target directory and returns categorized file lists.
4
+ *
5
+ * This function only reads the directory structure - it does NOT copy or create files.
6
+ * File generation should be done before this is called.
7
+ *
8
+ * @param targetPath - Path to the widget extension target directory
9
+ * @param targetName - Name of the target (for entitlements file)
10
+ * @returns Categorized lists of files for Xcode project configuration
11
+ */
12
+ export declare function getWidgetFiles(targetPath: string, targetName: string): WidgetFiles;
13
+ //# sourceMappingURL=fileDiscovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDiscovery.d.ts","sourceRoot":"","sources":["../../../src/utils/fileDiscovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAiElF"}
@@ -0,0 +1,2 @@
1
+ export declare function resolveFontPaths(fonts: string[], projectRoot: string): Promise<string[]>;
2
+ //# sourceMappingURL=fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../../src/utils/fonts.ts"],"names":[],"mappings":"AAyBA,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkB9F"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Structured logging utility for the Voltra plugin
3
+ */
4
+ export declare const logger: {
5
+ /**
6
+ * Log an informational message
7
+ */
8
+ info: (message: string) => void;
9
+ /**
10
+ * Log a warning message
11
+ */
12
+ warn: (message: string) => void;
13
+ /**
14
+ * Log a warning message in red (for critical warnings)
15
+ */
16
+ warnRed: (message: string) => void;
17
+ /**
18
+ * Log an error message
19
+ */
20
+ error: (message: string) => void;
21
+ /**
22
+ * Log a success message
23
+ */
24
+ success: (message: string) => void;
25
+ /**
26
+ * Log a debug message (only when VOLTRA_DEBUG env var is set)
27
+ */
28
+ debug: (message: string) => void;
29
+ };
30
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,eAAO,MAAM,MAAM;IACjB;;OAEG;oBACa,MAAM,KAAG,IAAI;IAI7B;;OAEG;oBACa,MAAM,KAAG,IAAI;IAI7B;;OAEG;uBACgB,MAAM,KAAG,IAAI;IAIhC;;OAEG;qBACc,MAAM,KAAG,IAAI;IAI9B;;OAEG;uBACgB,MAAM,KAAG,IAAI;IAIhC;;OAEG;qBACc,MAAM,KAAG,IAAI;CAK/B,CAAA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Type for the widget renderer function
3
+ */
4
+ export type WidgetRenderer = (variants: any) => string;
5
+ /**
6
+ * Minimal interface for widget configuration needed for prerendering
7
+ */
8
+ export interface PrerenderableWidget {
9
+ id: string;
10
+ initialStatePath?: string;
11
+ }
12
+ /**
13
+ * Prerender widget initial states for build-time inclusion.
14
+ *
15
+ * Widget code is transpiled with Babel and executed in a Node.js VM sandbox.
16
+ * This function loads widget files that export WidgetVariants for widgets with initialStatePath configured,
17
+ * renders them to JSON, and returns a map of prerendered states that can be bundled into the app.
18
+ *
19
+ * @param widgets - Array of widget configurations
20
+ * @param projectRoot - Root directory of the Expo project
21
+ * @param renderer - The renderer function to use (voltra/server or voltra/android/server)
22
+ * @returns Map of widgetId -> prerendered widget state as JSON string
23
+ */
24
+ export declare function prerenderWidgetState(widgets: PrerenderableWidget[], projectRoot: string, renderer: WidgetRenderer): Promise<Map<string, string>>;
25
+ //# sourceMappingURL=prerender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/utils/prerender.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA6ID;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6B9B"}
@@ -0,0 +1,10 @@
1
+ import type { ExpoConfig } from 'expo/config';
2
+ /**
3
+ * Ensures the main app has a URL scheme set so widgetURL can open it.
4
+ * This is an optional feature for deep linking from widgets.
5
+ *
6
+ * @param config - The Expo config object
7
+ * @returns The modified config with URL scheme ensured
8
+ */
9
+ export declare function ensureURLScheme(config: ExpoConfig): ExpoConfig;
10
+ //# sourceMappingURL=urlScheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlScheme.d.ts","sourceRoot":"","sources":["../../../src/utils/urlScheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAmC9D"}
@@ -0,0 +1,17 @@
1
+ import type { AndroidWidgetConfig, ConfigPluginProps, WidgetConfig } from './types';
2
+ /**
3
+ * Validates a widget configuration.
4
+ * Throws an error if validation fails.
5
+ */
6
+ export declare function validateWidgetConfig(widget: WidgetConfig): void;
7
+ /**
8
+ * Validates an Android widget configuration.
9
+ * Throws an error if validation fails.
10
+ */
11
+ export declare function validateAndroidWidgetConfig(widget: AndroidWidgetConfig, projectRoot?: string): void;
12
+ /**
13
+ * Validates the plugin props at entry point.
14
+ * Throws an error if validation fails.
15
+ */
16
+ export declare function validateProps(props: ConfigPluginProps): void;
17
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAA;AAoBjG;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAsC/D;AAMD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAiGnG;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAqD5D"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@use-voltra/expo-plugin",
3
+ "version": "1.3.0",
4
+ "description": "Expo config plugin for Voltra",
5
+ "main": "build/cjs/index.js",
6
+ "module": "build/esm/index.js",
7
+ "types": "build/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./build/types/index.d.ts",
11
+ "require": "./build/cjs/index.js",
12
+ "import": "./build/esm/index.js",
13
+ "default": "./build/esm/index.js"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
17
+ "files": [
18
+ "build",
19
+ "README.md"
20
+ ],
21
+ "scripts": {
22
+ "build": "node ../../scripts/build-package.mjs packages/expo-plugin",
23
+ "clean": "rm -rf build",
24
+ "lint": "oxlint src",
25
+ "typecheck": "tsc -p tsconfig.typecheck.json --noEmit"
26
+ },
27
+ "dependencies": {
28
+ "@babel/core": "^7.27.4",
29
+ "@expo/config-plugins": "~10.1.2",
30
+ "@expo/plist": "^0.3.5",
31
+ "dedent": "^1.7.1",
32
+ "vd-tool": "^4.0.2",
33
+ "xcode": "^3.0.1"
34
+ },
35
+ "keywords": [
36
+ "voltra",
37
+ "expo",
38
+ "plugin",
39
+ "ios",
40
+ "android"
41
+ ],
42
+ "author": "Saúl Sharma (https://x.com/saul_sharma), Szymon Chmal (https://x.com/chmalszymon)",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/callstackincubator/voltra.git",
46
+ "directory": "packages/expo-plugin"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/callstackincubator/voltra/issues"
50
+ },
51
+ "license": "MIT",
52
+ "homepage": "https://use-voltra.dev",
53
+ "peerDependencies": {
54
+ "expo": "*",
55
+ "react": "*",
56
+ "react-native": "*"
57
+ }
58
+ }