@swiftpatch/react-native 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +430 -0
  2. package/android/build.gradle +105 -0
  3. package/android/src/main/AndroidManifest.xml +6 -0
  4. package/android/src/main/java/com/swiftpatch/BundleManager.kt +107 -0
  5. package/android/src/main/java/com/swiftpatch/CrashDetector.kt +79 -0
  6. package/android/src/main/java/com/swiftpatch/CryptoVerifier.kt +69 -0
  7. package/android/src/main/java/com/swiftpatch/DownloadManager.kt +120 -0
  8. package/android/src/main/java/com/swiftpatch/EventQueue.kt +86 -0
  9. package/android/src/main/java/com/swiftpatch/FileUtils.kt +60 -0
  10. package/android/src/main/java/com/swiftpatch/PatchApplier.kt +60 -0
  11. package/android/src/main/java/com/swiftpatch/SignalCrashHandler.kt +84 -0
  12. package/android/src/main/java/com/swiftpatch/SlotManager.kt +299 -0
  13. package/android/src/main/java/com/swiftpatch/SwiftPatchModule.kt +630 -0
  14. package/android/src/main/java/com/swiftpatch/SwiftPatchPackage.kt +21 -0
  15. package/android/src/main/jni/CMakeLists.txt +12 -0
  16. package/android/src/main/jni/bspatch.c +188 -0
  17. package/android/src/main/jni/bspatch.h +57 -0
  18. package/android/src/main/jni/bspatch_jni.c +28 -0
  19. package/ios/Libraries/bspatch/bspatch.c +188 -0
  20. package/ios/Libraries/bspatch/bspatch.h +50 -0
  21. package/ios/Libraries/bspatch/module.modulemap +4 -0
  22. package/ios/SwiftPatch/BundleManager.swift +113 -0
  23. package/ios/SwiftPatch/CrashDetector.swift +71 -0
  24. package/ios/SwiftPatch/CryptoVerifier.swift +70 -0
  25. package/ios/SwiftPatch/DownloadManager.swift +125 -0
  26. package/ios/SwiftPatch/EventQueue.swift +116 -0
  27. package/ios/SwiftPatch/FileUtils.swift +38 -0
  28. package/ios/SwiftPatch/PatchApplier.swift +41 -0
  29. package/ios/SwiftPatch/SignalCrashHandler.swift +129 -0
  30. package/ios/SwiftPatch/SlotManager.swift +360 -0
  31. package/ios/SwiftPatch/SwiftPatchModule.m +56 -0
  32. package/ios/SwiftPatch/SwiftPatchModule.swift +621 -0
  33. package/lib/commonjs/SwiftPatchCore.js +140 -0
  34. package/lib/commonjs/SwiftPatchCore.js.map +1 -0
  35. package/lib/commonjs/SwiftPatchProvider.js +617 -0
  36. package/lib/commonjs/SwiftPatchProvider.js.map +1 -0
  37. package/lib/commonjs/constants.js +50 -0
  38. package/lib/commonjs/constants.js.map +1 -0
  39. package/lib/commonjs/core/Downloader.js +63 -0
  40. package/lib/commonjs/core/Downloader.js.map +1 -0
  41. package/lib/commonjs/core/Installer.js +46 -0
  42. package/lib/commonjs/core/Installer.js.map +1 -0
  43. package/lib/commonjs/core/Rollback.js +36 -0
  44. package/lib/commonjs/core/Rollback.js.map +1 -0
  45. package/lib/commonjs/core/UpdateChecker.js +57 -0
  46. package/lib/commonjs/core/UpdateChecker.js.map +1 -0
  47. package/lib/commonjs/core/Verifier.js +82 -0
  48. package/lib/commonjs/core/Verifier.js.map +1 -0
  49. package/lib/commonjs/core/index.js +41 -0
  50. package/lib/commonjs/core/index.js.map +1 -0
  51. package/lib/commonjs/index.js +154 -0
  52. package/lib/commonjs/index.js.map +1 -0
  53. package/lib/commonjs/modal/SwiftPatchModal.js +667 -0
  54. package/lib/commonjs/modal/SwiftPatchModal.js.map +1 -0
  55. package/lib/commonjs/modal/useSwiftPatchModal.js +26 -0
  56. package/lib/commonjs/modal/useSwiftPatchModal.js.map +1 -0
  57. package/lib/commonjs/native/NativeSwiftPatch.js +85 -0
  58. package/lib/commonjs/native/NativeSwiftPatch.js.map +1 -0
  59. package/lib/commonjs/native/NativeSwiftPatchSpec.js +15 -0
  60. package/lib/commonjs/native/NativeSwiftPatchSpec.js.map +1 -0
  61. package/lib/commonjs/package.json +1 -0
  62. package/lib/commonjs/types.js +126 -0
  63. package/lib/commonjs/types.js.map +1 -0
  64. package/lib/commonjs/useSwiftPatch.js +31 -0
  65. package/lib/commonjs/useSwiftPatch.js.map +1 -0
  66. package/lib/commonjs/utils/api.js +206 -0
  67. package/lib/commonjs/utils/api.js.map +1 -0
  68. package/lib/commonjs/utils/device.js +23 -0
  69. package/lib/commonjs/utils/device.js.map +1 -0
  70. package/lib/commonjs/utils/logger.js +30 -0
  71. package/lib/commonjs/utils/logger.js.map +1 -0
  72. package/lib/commonjs/utils/storage.js +31 -0
  73. package/lib/commonjs/utils/storage.js.map +1 -0
  74. package/lib/commonjs/withSwiftPatch.js +42 -0
  75. package/lib/commonjs/withSwiftPatch.js.map +1 -0
  76. package/lib/module/SwiftPatchCore.js +135 -0
  77. package/lib/module/SwiftPatchCore.js.map +1 -0
  78. package/lib/module/SwiftPatchProvider.js +611 -0
  79. package/lib/module/SwiftPatchProvider.js.map +1 -0
  80. package/lib/module/constants.js +46 -0
  81. package/lib/module/constants.js.map +1 -0
  82. package/lib/module/core/Downloader.js +57 -0
  83. package/lib/module/core/Downloader.js.map +1 -0
  84. package/lib/module/core/Installer.js +41 -0
  85. package/lib/module/core/Installer.js.map +1 -0
  86. package/lib/module/core/Rollback.js +31 -0
  87. package/lib/module/core/Rollback.js.map +1 -0
  88. package/lib/module/core/UpdateChecker.js +51 -0
  89. package/lib/module/core/UpdateChecker.js.map +1 -0
  90. package/lib/module/core/Verifier.js +76 -0
  91. package/lib/module/core/Verifier.js.map +1 -0
  92. package/lib/module/core/index.js +8 -0
  93. package/lib/module/core/index.js.map +1 -0
  94. package/lib/module/index.js +34 -0
  95. package/lib/module/index.js.map +1 -0
  96. package/lib/module/modal/SwiftPatchModal.js +661 -0
  97. package/lib/module/modal/SwiftPatchModal.js.map +1 -0
  98. package/lib/module/modal/useSwiftPatchModal.js +22 -0
  99. package/lib/module/modal/useSwiftPatchModal.js.map +1 -0
  100. package/lib/module/native/NativeSwiftPatch.js +78 -0
  101. package/lib/module/native/NativeSwiftPatch.js.map +1 -0
  102. package/lib/module/native/NativeSwiftPatchSpec.js +12 -0
  103. package/lib/module/native/NativeSwiftPatchSpec.js.map +1 -0
  104. package/lib/module/types.js +139 -0
  105. package/lib/module/types.js.map +1 -0
  106. package/lib/module/useSwiftPatch.js +26 -0
  107. package/lib/module/useSwiftPatch.js.map +1 -0
  108. package/lib/module/utils/api.js +197 -0
  109. package/lib/module/utils/api.js.map +1 -0
  110. package/lib/module/utils/device.js +18 -0
  111. package/lib/module/utils/device.js.map +1 -0
  112. package/lib/module/utils/logger.js +26 -0
  113. package/lib/module/utils/logger.js.map +1 -0
  114. package/lib/module/utils/storage.js +24 -0
  115. package/lib/module/utils/storage.js.map +1 -0
  116. package/lib/module/withSwiftPatch.js +37 -0
  117. package/lib/module/withSwiftPatch.js.map +1 -0
  118. package/lib/typescript/SwiftPatchCore.d.ts +64 -0
  119. package/lib/typescript/SwiftPatchCore.d.ts.map +1 -0
  120. package/lib/typescript/SwiftPatchProvider.d.ts +22 -0
  121. package/lib/typescript/SwiftPatchProvider.d.ts.map +1 -0
  122. package/lib/typescript/constants.d.ts +33 -0
  123. package/lib/typescript/constants.d.ts.map +1 -0
  124. package/lib/typescript/core/Downloader.d.ts +34 -0
  125. package/lib/typescript/core/Downloader.d.ts.map +1 -0
  126. package/lib/typescript/core/Installer.d.ts +25 -0
  127. package/lib/typescript/core/Installer.d.ts.map +1 -0
  128. package/lib/typescript/core/Rollback.d.ts +18 -0
  129. package/lib/typescript/core/Rollback.d.ts.map +1 -0
  130. package/lib/typescript/core/UpdateChecker.d.ts +27 -0
  131. package/lib/typescript/core/UpdateChecker.d.ts.map +1 -0
  132. package/lib/typescript/core/Verifier.d.ts +31 -0
  133. package/lib/typescript/core/Verifier.d.ts.map +1 -0
  134. package/lib/typescript/core/index.d.ts +8 -0
  135. package/lib/typescript/core/index.d.ts.map +1 -0
  136. package/lib/typescript/index.d.ts +13 -0
  137. package/lib/typescript/index.d.ts.map +1 -0
  138. package/lib/typescript/modal/SwiftPatchModal.d.ts +11 -0
  139. package/lib/typescript/modal/SwiftPatchModal.d.ts.map +1 -0
  140. package/lib/typescript/modal/useSwiftPatchModal.d.ts +7 -0
  141. package/lib/typescript/modal/useSwiftPatchModal.d.ts.map +1 -0
  142. package/lib/typescript/native/NativeSwiftPatch.d.ts +61 -0
  143. package/lib/typescript/native/NativeSwiftPatch.d.ts.map +1 -0
  144. package/lib/typescript/native/NativeSwiftPatchSpec.d.ts +67 -0
  145. package/lib/typescript/native/NativeSwiftPatchSpec.d.ts.map +1 -0
  146. package/lib/typescript/types.d.ts +266 -0
  147. package/lib/typescript/types.d.ts.map +1 -0
  148. package/lib/typescript/useSwiftPatch.d.ts +12 -0
  149. package/lib/typescript/useSwiftPatch.d.ts.map +1 -0
  150. package/lib/typescript/utils/api.d.ts +87 -0
  151. package/lib/typescript/utils/api.d.ts.map +1 -0
  152. package/lib/typescript/utils/device.d.ts +9 -0
  153. package/lib/typescript/utils/device.d.ts.map +1 -0
  154. package/lib/typescript/utils/logger.d.ts +8 -0
  155. package/lib/typescript/utils/logger.d.ts.map +1 -0
  156. package/lib/typescript/utils/storage.d.ts +14 -0
  157. package/lib/typescript/utils/storage.d.ts.map +1 -0
  158. package/lib/typescript/withSwiftPatch.d.ts +12 -0
  159. package/lib/typescript/withSwiftPatch.d.ts.map +1 -0
  160. package/package.json +99 -0
  161. package/react-native-swiftpatch.podspec +50 -0
  162. package/src/SwiftPatchCore.ts +148 -0
  163. package/src/SwiftPatchProvider.tsx +514 -0
  164. package/src/constants.ts +49 -0
  165. package/src/core/Downloader.ts +74 -0
  166. package/src/core/Installer.ts +38 -0
  167. package/src/core/Rollback.ts +28 -0
  168. package/src/core/UpdateChecker.ts +70 -0
  169. package/src/core/Verifier.ts +92 -0
  170. package/src/core/index.ts +11 -0
  171. package/src/index.ts +64 -0
  172. package/src/modal/SwiftPatchModal.tsx +657 -0
  173. package/src/modal/useSwiftPatchModal.ts +24 -0
  174. package/src/native/NativeSwiftPatch.ts +205 -0
  175. package/src/native/NativeSwiftPatchSpec.ts +139 -0
  176. package/src/types.ts +336 -0
  177. package/src/useSwiftPatch.ts +29 -0
  178. package/src/utils/api.ts +244 -0
  179. package/src/utils/device.ts +15 -0
  180. package/src/utils/logger.ts +29 -0
  181. package/src/utils/storage.ts +23 -0
  182. package/src/withSwiftPatch.tsx +41 -0
@@ -0,0 +1,617 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SwiftPatchProvider = SwiftPatchProvider;
7
+ exports.useSwiftPatchContext = useSwiftPatchContext;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactNative = require("react-native");
10
+ var _types = require("./types");
11
+ var _constants = require("./constants");
12
+ var _NativeSwiftPatch = _interopRequireWildcard(require("./native/NativeSwiftPatch"));
13
+ var _api = require("./utils/api");
14
+ var _logger = require("./utils/logger");
15
+ var _UpdateChecker = require("./core/UpdateChecker");
16
+ var _Downloader = require("./core/Downloader");
17
+ var _Installer = require("./core/Installer");
18
+ var _Rollback = require("./core/Rollback");
19
+ var _jsxRuntime = require("react/jsx-runtime");
20
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
21
+ // Context
22
+
23
+ const SwiftPatchContext = /*#__PURE__*/(0, _react.createContext)(null);
24
+
25
+ // State reducer
26
+
27
+ function reducer(state, action) {
28
+ switch (action.type) {
29
+ case 'SET_STATUS':
30
+ return {
31
+ ...state,
32
+ status: action.payload
33
+ };
34
+ case 'SET_DOWNLOAD_PROGRESS':
35
+ return {
36
+ ...state,
37
+ downloadProgress: action.payload
38
+ };
39
+ case 'SET_AVAILABLE_UPDATE':
40
+ return {
41
+ ...state,
42
+ availableUpdate: action.payload
43
+ };
44
+ case 'SET_ERROR':
45
+ return {
46
+ ...state,
47
+ error: action.payload,
48
+ status: action.payload ? _types.UpdateStatus.ERROR : state.status
49
+ };
50
+ case 'SET_RESTART_REQUIRED':
51
+ return {
52
+ ...state,
53
+ isRestartRequired: action.payload
54
+ };
55
+ case 'SET_LAST_CHECKED':
56
+ return {
57
+ ...state,
58
+ lastCheckedAt: action.payload
59
+ };
60
+ case 'SET_CURRENT_BUNDLE':
61
+ return {
62
+ ...state,
63
+ currentBundle: action.payload
64
+ };
65
+ case 'SET_SLOT_METADATA':
66
+ return {
67
+ ...state,
68
+ slotMetadata: action.payload
69
+ };
70
+ case 'SET_ENVIRONMENT':
71
+ return {
72
+ ...state,
73
+ environment: action.payload
74
+ };
75
+ default:
76
+ return state;
77
+ }
78
+ }
79
+ const initialState = {
80
+ status: _types.UpdateStatus.UP_TO_DATE,
81
+ downloadProgress: null,
82
+ currentBundle: null,
83
+ availableUpdate: null,
84
+ isRestartRequired: false,
85
+ error: null,
86
+ lastCheckedAt: null,
87
+ slotMetadata: null,
88
+ environment: _types.EnvironmentMode.PRODUCTION
89
+ };
90
+
91
+ // Provider Props
92
+
93
+ /**
94
+ * SwiftPatch Provider Component
95
+ *
96
+ * Wrap your app with this provider to enable OTA updates
97
+ * with dual-slot architecture, crash detection, and event analytics.
98
+ */
99
+ function SwiftPatchProvider({
100
+ config,
101
+ children
102
+ }) {
103
+ const mergedConfig = {
104
+ ..._constants.DEFAULT_CONFIG,
105
+ ...config
106
+ };
107
+ const [state, dispatch] = (0, _react.useReducer)(reducer, initialState);
108
+ const lastCheckRef = (0, _react.useRef)(0);
109
+ const isCheckingRef = (0, _react.useRef)(false);
110
+ const configRef = (0, _react.useRef)(mergedConfig);
111
+ configRef.current = mergedConfig;
112
+
113
+ // Core modules refs
114
+ const updateCheckerRef = (0, _react.useRef)(null);
115
+ const downloaderRef = (0, _react.useRef)(null);
116
+ const installerRef = (0, _react.useRef)(null);
117
+ const rollbackModuleRef = (0, _react.useRef)(null);
118
+ const eventPollIntervalRef = (0, _react.useRef)(null);
119
+
120
+ // Initialize native module and core modules
121
+ (0, _react.useEffect)(() => {
122
+ const init = async () => {
123
+ try {
124
+ await _NativeSwiftPatch.default.initialize({
125
+ deploymentKey: mergedConfig.deploymentKey,
126
+ serverUrl: mergedConfig.serverUrl,
127
+ publicKey: mergedConfig.publicKey || null
128
+ });
129
+ _NativeSwiftPatch.default.setDebugMode(mergedConfig.debug || false);
130
+ _logger.logger.setDebug(mergedConfig.debug || false);
131
+
132
+ // Mark app as mounted (for signal crash detection)
133
+ await _NativeSwiftPatch.default.markMounted();
134
+
135
+ // Initialize core modules
136
+ updateCheckerRef.current = new _UpdateChecker.UpdateChecker({
137
+ serverUrl: mergedConfig.serverUrl,
138
+ deploymentKey: mergedConfig.deploymentKey,
139
+ customHeaders: mergedConfig.customHeaders
140
+ });
141
+ downloaderRef.current = new _Downloader.Downloader();
142
+ installerRef.current = new _Installer.Installer();
143
+ rollbackModuleRef.current = new _Rollback.Rollback();
144
+
145
+ // Get current bundle info
146
+ const currentBundle = await _NativeSwiftPatch.default.getCurrentBundle();
147
+ if (currentBundle) {
148
+ dispatch({
149
+ type: 'SET_CURRENT_BUNDLE',
150
+ payload: currentBundle
151
+ });
152
+ dispatch({
153
+ type: 'SET_STATUS',
154
+ payload: _types.UpdateStatus.UP_TO_DATE
155
+ });
156
+ }
157
+
158
+ // Get slot metadata
159
+ const metadata = await _NativeSwiftPatch.default.getSlotMetadata();
160
+ dispatch({
161
+ type: 'SET_SLOT_METADATA',
162
+ payload: metadata
163
+ });
164
+ dispatch({
165
+ type: 'SET_ENVIRONMENT',
166
+ payload: metadata.environment
167
+ });
168
+
169
+ // Check for pending install (temp hash set)
170
+ const hasPending = await _NativeSwiftPatch.default.hasPendingInstall();
171
+ if (hasPending) {
172
+ dispatch({
173
+ type: 'SET_RESTART_REQUIRED',
174
+ payload: true
175
+ });
176
+ dispatch({
177
+ type: 'SET_STATUS',
178
+ payload: _types.UpdateStatus.RESTART_REQUIRED
179
+ });
180
+ }
181
+
182
+ // Record successful launch & auto-stabilize
183
+ if (currentBundle && !currentBundle.isOriginal) {
184
+ const launchCount = await _NativeSwiftPatch.default.recordSuccessfulLaunch(currentBundle.hash);
185
+ const autoStabilizeThreshold = mergedConfig.autoStabilizeAfterLaunches || 0;
186
+ if (autoStabilizeThreshold > 0 && launchCount >= autoStabilizeThreshold) {
187
+ if (metadata.prod.currentSlot === 'NEW_SLOT') {
188
+ try {
189
+ await _NativeSwiftPatch.default.stabilize();
190
+ const updatedMeta = await _NativeSwiftPatch.default.getSlotMetadata();
191
+ dispatch({
192
+ type: 'SET_SLOT_METADATA',
193
+ payload: updatedMeta
194
+ });
195
+ _logger.logger.info('Auto-stabilized after', launchCount, 'successful launches');
196
+ } catch (_e) {
197
+ _logger.logger.warn('Auto-stabilization failed');
198
+ }
199
+ }
200
+ }
201
+ }
202
+ _logger.logger.info('SwiftPatch initialized (v2.0.0 with dual-slot architecture)');
203
+ } catch (error) {
204
+ const message = error instanceof Error ? error.message : 'Unknown initialization error';
205
+ _logger.logger.error('Failed to initialize SwiftPatch', error);
206
+ dispatch({
207
+ type: 'SET_ERROR',
208
+ payload: {
209
+ code: _types.SwiftPatchErrorCode.CONFIG_ERROR,
210
+ message
211
+ }
212
+ });
213
+ }
214
+ };
215
+ init();
216
+
217
+ // Cleanup mount state on unmount
218
+ return () => {
219
+ _NativeSwiftPatch.default.markUnmounted().catch(() => {});
220
+ };
221
+ }, [mergedConfig.deploymentKey, mergedConfig.serverUrl, mergedConfig.publicKey, mergedConfig.debug, mergedConfig.autoStabilizeAfterLaunches]);
222
+
223
+ // Event queue polling
224
+ (0, _react.useEffect)(() => {
225
+ const pollEvents = async () => {
226
+ try {
227
+ const events = await _NativeSwiftPatch.default.popEvents();
228
+ if (events && events.length > 0) {
229
+ const deviceId = await _NativeSwiftPatch.default.getDeviceId();
230
+ const cfg = configRef.current;
231
+ const result = await (0, _api.logBulkEvents)({
232
+ serverUrl: cfg.serverUrl,
233
+ deploymentKey: cfg.deploymentKey,
234
+ deviceId,
235
+ events: events,
236
+ customHeaders: cfg.customHeaders
237
+ });
238
+ if (result.acknowledged.length > 0) {
239
+ await _NativeSwiftPatch.default.acknowledgeEvents(JSON.stringify(result.acknowledged));
240
+ }
241
+ }
242
+ } catch (_e) {
243
+ // Silent - event polling is non-critical
244
+ }
245
+ };
246
+ eventPollIntervalRef.current = setInterval(pollEvents, _constants.EVENT_POLL_INTERVAL_MS);
247
+ return () => {
248
+ if (eventPollIntervalRef.current) {
249
+ clearInterval(eventPollIntervalRef.current);
250
+ }
251
+ };
252
+ }, []);
253
+
254
+ // Subscribe to download progress
255
+ (0, _react.useEffect)(() => {
256
+ const unsubscribe = (0, _NativeSwiftPatch.onDownloadProgress)(progress => {
257
+ dispatch({
258
+ type: 'SET_DOWNLOAD_PROGRESS',
259
+ payload: progress
260
+ });
261
+ });
262
+ return unsubscribe;
263
+ }, []);
264
+
265
+ // Subscribe to rollback events
266
+ (0, _react.useEffect)(() => {
267
+ const unsubscribe = (0, _NativeSwiftPatch.onRollback)(reason => {
268
+ _logger.logger.warn('Rollback occurred:', reason);
269
+ dispatch({
270
+ type: 'SET_STATUS',
271
+ payload: _types.UpdateStatus.UP_TO_DATE
272
+ });
273
+ dispatch({
274
+ type: 'SET_AVAILABLE_UPDATE',
275
+ payload: null
276
+ });
277
+ dispatch({
278
+ type: 'SET_RESTART_REQUIRED',
279
+ payload: false
280
+ });
281
+ // Refresh metadata
282
+ _NativeSwiftPatch.default.getSlotMetadata().then(meta => {
283
+ dispatch({
284
+ type: 'SET_SLOT_METADATA',
285
+ payload: meta
286
+ });
287
+ }).catch(() => {});
288
+ });
289
+ return unsubscribe;
290
+ }, []);
291
+
292
+ // Subscribe to version change events
293
+ (0, _react.useEffect)(() => {
294
+ const unsubscribe = (0, _NativeSwiftPatch.onVersionChanged)(reason => {
295
+ _logger.logger.info('Version changed:', reason);
296
+ dispatch({
297
+ type: 'SET_STATUS',
298
+ payload: _types.UpdateStatus.UP_TO_DATE
299
+ });
300
+ dispatch({
301
+ type: 'SET_AVAILABLE_UPDATE',
302
+ payload: null
303
+ });
304
+ dispatch({
305
+ type: 'SET_RESTART_REQUIRED',
306
+ payload: false
307
+ });
308
+ _NativeSwiftPatch.default.getSlotMetadata().then(meta => {
309
+ dispatch({
310
+ type: 'SET_SLOT_METADATA',
311
+ payload: meta
312
+ });
313
+ }).catch(() => {});
314
+ });
315
+ return unsubscribe;
316
+ }, []);
317
+
318
+ // Check for update
319
+ const checkForUpdate = (0, _react.useCallback)(async () => {
320
+ if (isCheckingRef.current) return null;
321
+ if (!updateCheckerRef.current) return null;
322
+ isCheckingRef.current = true;
323
+ dispatch({
324
+ type: 'SET_STATUS',
325
+ payload: _types.UpdateStatus.CHECKING
326
+ });
327
+ dispatch({
328
+ type: 'SET_ERROR',
329
+ payload: null
330
+ });
331
+ try {
332
+ const result = await updateCheckerRef.current.check();
333
+ lastCheckRef.current = Date.now();
334
+ dispatch({
335
+ type: 'SET_LAST_CHECKED',
336
+ payload: new Date()
337
+ });
338
+ if (result.updateAvailable && result.release) {
339
+ dispatch({
340
+ type: 'SET_AVAILABLE_UPDATE',
341
+ payload: result.release
342
+ });
343
+ dispatch({
344
+ type: 'SET_STATUS',
345
+ payload: _types.UpdateStatus.UPDATE_AVAILABLE
346
+ });
347
+ return result.release;
348
+ } else {
349
+ dispatch({
350
+ type: 'SET_STATUS',
351
+ payload: _types.UpdateStatus.UP_TO_DATE
352
+ });
353
+ return null;
354
+ }
355
+ } catch (error) {
356
+ const message = error instanceof Error ? error.message : 'Failed to check for update';
357
+ dispatch({
358
+ type: 'SET_ERROR',
359
+ payload: {
360
+ code: _types.SwiftPatchErrorCode.NETWORK_ERROR,
361
+ message
362
+ }
363
+ });
364
+ return null;
365
+ } finally {
366
+ isCheckingRef.current = false;
367
+ }
368
+ }, []);
369
+
370
+ // Check on resume
371
+ (0, _react.useEffect)(() => {
372
+ if (!mergedConfig.checkOnResume) return;
373
+ const handleAppStateChange = nextState => {
374
+ if (nextState === 'active') {
375
+ const now = Date.now();
376
+ if (now - lastCheckRef.current >= (mergedConfig.checkInterval ?? 60_000)) {
377
+ checkForUpdate();
378
+ }
379
+ }
380
+ };
381
+ const subscription = _reactNative.AppState.addEventListener('change', handleAppStateChange);
382
+ return () => subscription.remove();
383
+ }, [mergedConfig.checkOnResume, mergedConfig.checkInterval, checkForUpdate]);
384
+
385
+ // Restart
386
+ const restart = (0, _react.useCallback)(() => {
387
+ _NativeSwiftPatch.default.restart();
388
+ }, []);
389
+
390
+ // Install update
391
+ const installUpdate = (0, _react.useCallback)(async () => {
392
+ const update = state.availableUpdate;
393
+ if (!update) throw new Error('No update available to install');
394
+ dispatch({
395
+ type: 'SET_STATUS',
396
+ payload: _types.UpdateStatus.INSTALLING
397
+ });
398
+ try {
399
+ await _NativeSwiftPatch.default.installUpdate(update.bundleHash);
400
+ dispatch({
401
+ type: 'SET_STATUS',
402
+ payload: _types.UpdateStatus.RESTART_REQUIRED
403
+ });
404
+ dispatch({
405
+ type: 'SET_RESTART_REQUIRED',
406
+ payload: true
407
+ });
408
+ const cfg = configRef.current;
409
+ await (0, _api.reportInstallStatus)({
410
+ serverUrl: cfg.serverUrl,
411
+ releaseId: update.id,
412
+ status: 'installed',
413
+ deploymentKey: cfg.deploymentKey
414
+ });
415
+
416
+ // Auto-restart for immediate install mode
417
+ if (update.isMandatory && cfg.mandatoryInstallMode === _types.InstallMode.IMMEDIATE || !update.isMandatory && cfg.installMode === _types.InstallMode.IMMEDIATE) {
418
+ restart();
419
+ }
420
+ } catch (error) {
421
+ const message = error instanceof Error ? error.message : 'Failed to install update';
422
+ dispatch({
423
+ type: 'SET_ERROR',
424
+ payload: {
425
+ code: _types.SwiftPatchErrorCode.INSTALL_ERROR,
426
+ message
427
+ }
428
+ });
429
+ }
430
+ }, [state.availableUpdate, restart]);
431
+
432
+ // Download update
433
+ const downloadUpdate = (0, _react.useCallback)(async () => {
434
+ const update = state.availableUpdate;
435
+ if (!update) throw new Error('No update available to download');
436
+ if (!downloaderRef.current) throw new Error('Downloader not initialized');
437
+ dispatch({
438
+ type: 'SET_STATUS',
439
+ payload: _types.UpdateStatus.DOWNLOADING
440
+ });
441
+ dispatch({
442
+ type: 'SET_DOWNLOAD_PROGRESS',
443
+ payload: {
444
+ downloadedBytes: 0,
445
+ totalBytes: update.downloadSize,
446
+ percentage: 0
447
+ }
448
+ });
449
+ try {
450
+ await downloaderRef.current.downloadRelease(update);
451
+ dispatch({
452
+ type: 'SET_STATUS',
453
+ payload: _types.UpdateStatus.READY_TO_INSTALL
454
+ });
455
+ dispatch({
456
+ type: 'SET_DOWNLOAD_PROGRESS',
457
+ payload: null
458
+ });
459
+ const cfg = configRef.current;
460
+ await (0, _api.reportInstallStatus)({
461
+ serverUrl: cfg.serverUrl,
462
+ releaseId: update.id,
463
+ status: 'downloaded',
464
+ deploymentKey: cfg.deploymentKey
465
+ });
466
+
467
+ // Auto-install for mandatory updates
468
+ if (update.isMandatory && cfg.mandatoryInstallMode === _types.InstallMode.IMMEDIATE) {
469
+ await installUpdate();
470
+ }
471
+ } catch (error) {
472
+ const message = error instanceof Error ? error.message : 'Failed to download update';
473
+ dispatch({
474
+ type: 'SET_ERROR',
475
+ payload: {
476
+ code: _types.SwiftPatchErrorCode.DOWNLOAD_ERROR,
477
+ message
478
+ }
479
+ });
480
+ dispatch({
481
+ type: 'SET_DOWNLOAD_PROGRESS',
482
+ payload: null
483
+ });
484
+ }
485
+ }, [state.availableUpdate, installUpdate]);
486
+
487
+ // Rollback
488
+ const rollback = (0, _react.useCallback)(async () => {
489
+ await _NativeSwiftPatch.default.rollback();
490
+ dispatch({
491
+ type: 'SET_STATUS',
492
+ payload: _types.UpdateStatus.UP_TO_DATE
493
+ });
494
+ dispatch({
495
+ type: 'SET_AVAILABLE_UPDATE',
496
+ payload: null
497
+ });
498
+ dispatch({
499
+ type: 'SET_RESTART_REQUIRED',
500
+ payload: false
501
+ });
502
+ const meta = await _NativeSwiftPatch.default.getSlotMetadata();
503
+ dispatch({
504
+ type: 'SET_SLOT_METADATA',
505
+ payload: meta
506
+ });
507
+ }, []);
508
+
509
+ // Clear pending
510
+ const clearPendingUpdate = (0, _react.useCallback)(async () => {
511
+ await _NativeSwiftPatch.default.clearPendingUpdate();
512
+ dispatch({
513
+ type: 'SET_STATUS',
514
+ payload: _types.UpdateStatus.UP_TO_DATE
515
+ });
516
+ dispatch({
517
+ type: 'SET_AVAILABLE_UPDATE',
518
+ payload: null
519
+ });
520
+ dispatch({
521
+ type: 'SET_RESTART_REQUIRED',
522
+ payload: false
523
+ });
524
+ }, []);
525
+
526
+ // Get current bundle
527
+ const getCurrentBundle = (0, _react.useCallback)(async () => {
528
+ return _NativeSwiftPatch.default.getCurrentBundle();
529
+ }, []);
530
+
531
+ // Stabilize (promote NEW → STABLE)
532
+ const stabilize = (0, _react.useCallback)(async () => {
533
+ const meta = await _NativeSwiftPatch.default.stabilize();
534
+ dispatch({
535
+ type: 'SET_SLOT_METADATA',
536
+ payload: meta
537
+ });
538
+ return meta;
539
+ }, []);
540
+
541
+ // Switch environment
542
+ const switchEnvironment = (0, _react.useCallback)(async env => {
543
+ const meta = await _NativeSwiftPatch.default.switchEnvironment(env);
544
+ dispatch({
545
+ type: 'SET_ENVIRONMENT',
546
+ payload: env
547
+ });
548
+ dispatch({
549
+ type: 'SET_SLOT_METADATA',
550
+ payload: meta
551
+ });
552
+ // Refresh current bundle info for the new environment
553
+ const bundle = await _NativeSwiftPatch.default.getCurrentBundle();
554
+ dispatch({
555
+ type: 'SET_CURRENT_BUNDLE',
556
+ payload: bundle
557
+ });
558
+ return meta;
559
+ }, []);
560
+
561
+ // Get slot metadata
562
+ const getSlotMetadata = (0, _react.useCallback)(async () => {
563
+ const meta = await _NativeSwiftPatch.default.getSlotMetadata();
564
+ dispatch({
565
+ type: 'SET_SLOT_METADATA',
566
+ payload: meta
567
+ });
568
+ return meta;
569
+ }, []);
570
+
571
+ // Mark mounted
572
+ const markMounted = (0, _react.useCallback)(() => {
573
+ _NativeSwiftPatch.default.markMounted().catch(() => {});
574
+ }, []);
575
+
576
+ // Download stage bundle
577
+ const downloadStageBundle = (0, _react.useCallback)(async (url, hash) => {
578
+ await _NativeSwiftPatch.default.downloadStageBundle(url, hash);
579
+ const meta = await _NativeSwiftPatch.default.getSlotMetadata();
580
+ dispatch({
581
+ type: 'SET_SLOT_METADATA',
582
+ payload: meta
583
+ });
584
+ }, []);
585
+ const contextValue = {
586
+ ...state,
587
+ checkForUpdate,
588
+ downloadUpdate,
589
+ installUpdate,
590
+ restart,
591
+ rollback,
592
+ clearPendingUpdate,
593
+ getCurrentBundle,
594
+ stabilize,
595
+ switchEnvironment,
596
+ getSlotMetadata,
597
+ markMounted,
598
+ downloadStageBundle
599
+ };
600
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(SwiftPatchContext.Provider, {
601
+ value: contextValue,
602
+ children: children
603
+ });
604
+ }
605
+
606
+ /**
607
+ * Hook to access SwiftPatch context.
608
+ * Must be used within SwiftPatchProvider.
609
+ */
610
+ function useSwiftPatchContext() {
611
+ const context = (0, _react.useContext)(SwiftPatchContext);
612
+ if (!context) {
613
+ throw new Error('useSwiftPatch must be used within a SwiftPatchProvider');
614
+ }
615
+ return context;
616
+ }
617
+ //# sourceMappingURL=SwiftPatchProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_types","_constants","_NativeSwiftPatch","_api","_logger","_UpdateChecker","_Downloader","_Installer","_Rollback","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SwiftPatchContext","createContext","reducer","state","action","type","status","payload","downloadProgress","availableUpdate","error","Status","ERROR","isRestartRequired","lastCheckedAt","currentBundle","slotMetadata","environment","initialState","UP_TO_DATE","EnvironmentMode","PRODUCTION","SwiftPatchProvider","config","children","mergedConfig","DEFAULT_CONFIG","dispatch","useReducer","lastCheckRef","useRef","isCheckingRef","configRef","current","updateCheckerRef","downloaderRef","installerRef","rollbackModuleRef","eventPollIntervalRef","useEffect","init","NativeSwiftPatch","initialize","deploymentKey","serverUrl","publicKey","setDebugMode","debug","logger","setDebug","markMounted","UpdateChecker","customHeaders","Downloader","Installer","RollbackModule","getCurrentBundle","metadata","getSlotMetadata","hasPending","hasPendingInstall","RESTART_REQUIRED","isOriginal","launchCount","recordSuccessfulLaunch","hash","autoStabilizeThreshold","autoStabilizeAfterLaunches","prod","currentSlot","stabilize","updatedMeta","info","_e","warn","message","Error","code","SwiftPatchErrorCode","CONFIG_ERROR","markUnmounted","catch","pollEvents","events","popEvents","length","deviceId","getDeviceId","cfg","result","logBulkEvents","acknowledged","acknowledgeEvents","JSON","stringify","setInterval","EVENT_POLL_INTERVAL_MS","clearInterval","unsubscribe","onDownloadProgress","progress","onRollback","reason","then","meta","onVersionChanged","checkForUpdate","useCallback","CHECKING","check","Date","now","updateAvailable","release","UPDATE_AVAILABLE","NETWORK_ERROR","checkOnResume","handleAppStateChange","nextState","checkInterval","subscription","AppState","addEventListener","remove","restart","installUpdate","update","INSTALLING","bundleHash","reportInstallStatus","releaseId","id","isMandatory","mandatoryInstallMode","InstallMode","IMMEDIATE","installMode","INSTALL_ERROR","downloadUpdate","DOWNLOADING","downloadedBytes","totalBytes","downloadSize","percentage","downloadRelease","READY_TO_INSTALL","DOWNLOAD_ERROR","rollback","clearPendingUpdate","switchEnvironment","env","bundle","downloadStageBundle","url","contextValue","jsx","Provider","value","useSwiftPatchContext","context","useContext"],"sourceRoot":"../../src","sources":["SwiftPatchProvider.tsx"],"mappings":"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","ignoreList":[]}