@hot-updater/react-native 0.36.6 → 1.0.0-rc.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 (239) hide show
  1. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +357 -6
  2. package/android/src/main/java/com/hotupdater/BundleMetadata.kt +268 -34
  3. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +75 -9
  4. package/android/src/main/java/com/hotupdater/NativeConfigUtils.kt +2 -16
  5. package/android/src/main/java/com/hotupdater/ReleaseCatalogCacheService.kt +166 -0
  6. package/android/src/main/java/com/hotupdater/SignatureVerifier.kt +1 -2
  7. package/android/src/newarch/HotUpdater.kt +1 -1
  8. package/android/src/newarch/HotUpdaterModule.kt +116 -0
  9. package/android/src/oldarch/HotUpdater.kt +1 -1
  10. package/android/src/oldarch/HotUpdaterModule.kt +128 -0
  11. package/android/src/oldarch/HotUpdaterSpec.kt +38 -0
  12. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +280 -2
  13. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +57 -2
  14. package/android/src/test/java/com/hotupdater/ReleaseCatalogCacheServiceTest.kt +118 -0
  15. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +491 -30
  16. package/ios/HotUpdater/Internal/BundleMetadata.swift +229 -6
  17. package/ios/HotUpdater/Internal/HotUpdater.mm +122 -0
  18. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +176 -7
  19. package/ios/HotUpdater/Internal/ReleaseCatalogCacheService.swift +213 -0
  20. package/lib/commonjs/catalogCacheNative.js +44 -0
  21. package/lib/commonjs/catalogCacheNative.js.map +1 -0
  22. package/lib/commonjs/catalogCacheNative.spec.js +31 -0
  23. package/lib/commonjs/catalogCacheNative.spec.js.map +1 -0
  24. package/lib/commonjs/checkForUpdate.js +231 -60
  25. package/lib/commonjs/checkForUpdate.js.map +1 -1
  26. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +604 -0
  27. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +1 -0
  28. package/lib/commonjs/error.js +8 -1
  29. package/lib/commonjs/error.js.map +1 -1
  30. package/lib/commonjs/{fetchUpdateInfo.js → fetchJSON.js} +11 -14
  31. package/lib/commonjs/fetchJSON.js.map +1 -0
  32. package/lib/commonjs/httpClient.js +153 -0
  33. package/lib/commonjs/httpClient.js.map +1 -0
  34. package/lib/commonjs/httpClient.spec.js +102 -0
  35. package/lib/commonjs/httpClient.spec.js.map +1 -0
  36. package/lib/commonjs/index.js +48 -71
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/index.spec.js +117 -161
  39. package/lib/commonjs/index.spec.js.map +1 -1
  40. package/lib/commonjs/iosInterop.spec.js +18 -0
  41. package/lib/commonjs/iosInterop.spec.js.map +1 -0
  42. package/lib/commonjs/native.js +222 -55
  43. package/lib/commonjs/native.js.map +1 -1
  44. package/lib/commonjs/native.spec.js +226 -12
  45. package/lib/commonjs/native.spec.js.map +1 -1
  46. package/lib/commonjs/notifyAppReadyAnalytics.boundary.spec.js +218 -0
  47. package/lib/commonjs/notifyAppReadyAnalytics.boundary.spec.js.map +1 -0
  48. package/lib/commonjs/notifyAppReadyAnalytics.js +133 -0
  49. package/lib/commonjs/notifyAppReadyAnalytics.js.map +1 -0
  50. package/lib/commonjs/notifyAppReadyAnalytics.spec.js +246 -0
  51. package/lib/commonjs/notifyAppReadyAnalytics.spec.js.map +1 -0
  52. package/lib/commonjs/notifyAppReadyAnalytics.test-utils.js +24 -0
  53. package/lib/commonjs/notifyAppReadyAnalytics.test-utils.js.map +1 -0
  54. package/lib/commonjs/notifyAppReadyAnalytics.transport.spec.js +117 -0
  55. package/lib/commonjs/notifyAppReadyAnalytics.transport.spec.js.map +1 -0
  56. package/lib/commonjs/releaseCatalogCache.js +179 -0
  57. package/lib/commonjs/releaseCatalogCache.js.map +1 -0
  58. package/lib/commonjs/releaseCatalogCache.spec.js +195 -0
  59. package/lib/commonjs/releaseCatalogCache.spec.js.map +1 -0
  60. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js +64 -0
  61. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js.map +1 -0
  62. package/lib/commonjs/sdkVersion.js +1 -1
  63. package/lib/commonjs/sdkVersion.js.map +1 -1
  64. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  65. package/lib/commonjs/types.js +0 -12
  66. package/lib/commonjs/types.js.map +1 -1
  67. package/lib/commonjs/wrap.js +7 -82
  68. package/lib/commonjs/wrap.js.map +1 -1
  69. package/lib/commonjs/wrap.spec.js +203 -56
  70. package/lib/commonjs/wrap.spec.js.map +1 -1
  71. package/lib/commonjs/wrap.types.js +6 -0
  72. package/lib/commonjs/wrap.types.js.map +1 -0
  73. package/lib/module/catalogCacheNative.js +36 -0
  74. package/lib/module/catalogCacheNative.js.map +1 -0
  75. package/lib/module/catalogCacheNative.spec.js +31 -0
  76. package/lib/module/catalogCacheNative.spec.js.map +1 -0
  77. package/lib/module/checkForUpdate.js +233 -62
  78. package/lib/module/checkForUpdate.js.map +1 -1
  79. package/lib/module/checkForUpdate.releaseCatalog.spec.js +603 -0
  80. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +1 -0
  81. package/lib/module/error.js +6 -0
  82. package/lib/module/error.js.map +1 -1
  83. package/lib/module/{fetchUpdateInfo.js → fetchJSON.js} +9 -12
  84. package/lib/module/fetchJSON.js.map +1 -0
  85. package/lib/module/httpClient.js +148 -0
  86. package/lib/module/httpClient.js.map +1 -0
  87. package/lib/module/httpClient.spec.js +102 -0
  88. package/lib/module/httpClient.spec.js.map +1 -0
  89. package/lib/module/index.js +49 -66
  90. package/lib/module/index.js.map +1 -1
  91. package/lib/module/index.spec.js +117 -161
  92. package/lib/module/index.spec.js.map +1 -1
  93. package/lib/module/iosInterop.spec.js +18 -0
  94. package/lib/module/iosInterop.spec.js.map +1 -0
  95. package/lib/module/native.js +206 -51
  96. package/lib/module/native.js.map +1 -1
  97. package/lib/module/native.spec.js +226 -12
  98. package/lib/module/native.spec.js.map +1 -1
  99. package/lib/module/notifyAppReadyAnalytics.boundary.spec.js +217 -0
  100. package/lib/module/notifyAppReadyAnalytics.boundary.spec.js.map +1 -0
  101. package/lib/module/notifyAppReadyAnalytics.js +128 -0
  102. package/lib/module/notifyAppReadyAnalytics.js.map +1 -0
  103. package/lib/module/notifyAppReadyAnalytics.spec.js +245 -0
  104. package/lib/module/notifyAppReadyAnalytics.spec.js.map +1 -0
  105. package/lib/module/notifyAppReadyAnalytics.test-utils.js +18 -0
  106. package/lib/module/notifyAppReadyAnalytics.test-utils.js.map +1 -0
  107. package/lib/module/notifyAppReadyAnalytics.transport.spec.js +116 -0
  108. package/lib/module/notifyAppReadyAnalytics.transport.spec.js.map +1 -0
  109. package/lib/module/releaseCatalogCache.js +171 -0
  110. package/lib/module/releaseCatalogCache.js.map +1 -0
  111. package/lib/module/releaseCatalogCache.spec.js +195 -0
  112. package/lib/module/releaseCatalogCache.spec.js.map +1 -0
  113. package/lib/module/releaseCatalogCacheNativeContract.spec.js +64 -0
  114. package/lib/module/releaseCatalogCacheNativeContract.spec.js.map +1 -0
  115. package/lib/module/sdkVersion.js +1 -1
  116. package/lib/module/sdkVersion.js.map +1 -1
  117. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  118. package/lib/module/types.js +0 -12
  119. package/lib/module/types.js.map +1 -1
  120. package/lib/module/wrap.js +6 -81
  121. package/lib/module/wrap.js.map +1 -1
  122. package/lib/module/wrap.spec.js +203 -56
  123. package/lib/module/wrap.spec.js.map +1 -1
  124. package/lib/module/wrap.types.js +4 -0
  125. package/lib/module/wrap.types.js.map +1 -0
  126. package/lib/typescript/commonjs/catalogCacheNative.d.ts +4 -0
  127. package/lib/typescript/commonjs/catalogCacheNative.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/checkForUpdate.d.ts +14 -4
  129. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/error.d.ts +3 -0
  131. package/lib/typescript/commonjs/error.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/fetchJSON.d.ts +6 -0
  133. package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/httpClient.d.ts +56 -0
  135. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/index.d.ts +32 -41
  137. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/native.d.ts +83 -18
  139. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/notifyAppReadyAnalytics.d.ts +13 -0
  141. package/lib/typescript/commonjs/notifyAppReadyAnalytics.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/notifyAppReadyAnalytics.test-utils.d.ts +8 -0
  143. package/lib/typescript/commonjs/notifyAppReadyAnalytics.test-utils.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/releaseCatalogCache.d.ts +25 -0
  145. package/lib/typescript/commonjs/releaseCatalogCache.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  147. package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +40 -5
  149. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/types.d.ts +0 -118
  151. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/wrap.d.ts +2 -191
  153. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/wrap.types.d.ts +65 -0
  155. package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -0
  156. package/lib/typescript/module/catalogCacheNative.d.ts +4 -0
  157. package/lib/typescript/module/catalogCacheNative.d.ts.map +1 -0
  158. package/lib/typescript/module/checkForUpdate.d.ts +14 -4
  159. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  160. package/lib/typescript/module/error.d.ts +3 -0
  161. package/lib/typescript/module/error.d.ts.map +1 -1
  162. package/lib/typescript/module/fetchJSON.d.ts +6 -0
  163. package/lib/typescript/module/fetchJSON.d.ts.map +1 -0
  164. package/lib/typescript/module/httpClient.d.ts +56 -0
  165. package/lib/typescript/module/httpClient.d.ts.map +1 -0
  166. package/lib/typescript/module/index.d.ts +32 -41
  167. package/lib/typescript/module/index.d.ts.map +1 -1
  168. package/lib/typescript/module/native.d.ts +83 -18
  169. package/lib/typescript/module/native.d.ts.map +1 -1
  170. package/lib/typescript/module/notifyAppReadyAnalytics.d.ts +13 -0
  171. package/lib/typescript/module/notifyAppReadyAnalytics.d.ts.map +1 -0
  172. package/lib/typescript/module/notifyAppReadyAnalytics.test-utils.d.ts +8 -0
  173. package/lib/typescript/module/notifyAppReadyAnalytics.test-utils.d.ts.map +1 -0
  174. package/lib/typescript/module/releaseCatalogCache.d.ts +25 -0
  175. package/lib/typescript/module/releaseCatalogCache.d.ts.map +1 -0
  176. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  177. package/lib/typescript/module/sdkVersion.d.ts.map +1 -1
  178. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +40 -5
  179. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  180. package/lib/typescript/module/types.d.ts +0 -118
  181. package/lib/typescript/module/types.d.ts.map +1 -1
  182. package/lib/typescript/module/wrap.d.ts +2 -191
  183. package/lib/typescript/module/wrap.d.ts.map +1 -1
  184. package/lib/typescript/module/wrap.types.d.ts +65 -0
  185. package/lib/typescript/module/wrap.types.d.ts.map +1 -0
  186. package/package.json +6 -24
  187. package/src/catalogCacheNative.spec.ts +63 -0
  188. package/src/catalogCacheNative.ts +74 -0
  189. package/src/checkForUpdate.releaseCatalog.spec.ts +596 -0
  190. package/src/checkForUpdate.ts +368 -97
  191. package/src/error.ts +7 -0
  192. package/src/{fetchUpdateInfo.ts → fetchJSON.ts} +8 -15
  193. package/src/httpClient.spec.ts +132 -0
  194. package/src/httpClient.ts +261 -0
  195. package/src/index.spec.ts +110 -203
  196. package/src/index.ts +70 -93
  197. package/src/iosInterop.spec.ts +30 -0
  198. package/src/native.spec.ts +226 -10
  199. package/src/native.ts +385 -83
  200. package/src/notifyAppReadyAnalytics.boundary.spec.ts +234 -0
  201. package/src/notifyAppReadyAnalytics.spec.ts +243 -0
  202. package/src/notifyAppReadyAnalytics.test-utils.ts +31 -0
  203. package/src/notifyAppReadyAnalytics.transport.spec.ts +130 -0
  204. package/src/notifyAppReadyAnalytics.ts +194 -0
  205. package/src/releaseCatalogCache.spec.ts +282 -0
  206. package/src/releaseCatalogCache.ts +341 -0
  207. package/src/releaseCatalogCacheNativeContract.spec.ts +80 -0
  208. package/src/sdkVersion.ts +1 -1
  209. package/src/specs/NativeHotUpdater.ts +51 -5
  210. package/src/types.ts +0 -140
  211. package/src/wrap.spec.ts +251 -56
  212. package/src/wrap.tsx +23 -318
  213. package/src/wrap.types.ts +78 -0
  214. package/android/src/main/java/com/hotupdater/StringResourceUtils.kt +0 -45
  215. package/app.plugin.js +0 -1
  216. package/ios/HotUpdater/Internal/HotUpdaterCrashHandler.h +0 -7
  217. package/ios/HotUpdater/Internal/HotUpdaterCrashHandler.mm +0 -4
  218. package/lib/commonjs/DefaultResolver.js +0 -50
  219. package/lib/commonjs/DefaultResolver.js.map +0 -1
  220. package/lib/commonjs/DefaultResolver.spec.js +0 -144
  221. package/lib/commonjs/DefaultResolver.spec.js.map +0 -1
  222. package/lib/commonjs/fetchUpdateInfo.js.map +0 -1
  223. package/lib/module/DefaultResolver.js +0 -46
  224. package/lib/module/DefaultResolver.js.map +0 -1
  225. package/lib/module/DefaultResolver.spec.js +0 -144
  226. package/lib/module/DefaultResolver.spec.js.map +0 -1
  227. package/lib/module/fetchUpdateInfo.js.map +0 -1
  228. package/lib/typescript/commonjs/DefaultResolver.d.ts +0 -11
  229. package/lib/typescript/commonjs/DefaultResolver.d.ts.map +0 -1
  230. package/lib/typescript/commonjs/fetchUpdateInfo.d.ts +0 -7
  231. package/lib/typescript/commonjs/fetchUpdateInfo.d.ts.map +0 -1
  232. package/lib/typescript/module/DefaultResolver.d.ts +0 -11
  233. package/lib/typescript/module/DefaultResolver.d.ts.map +0 -1
  234. package/lib/typescript/module/fetchUpdateInfo.d.ts +0 -7
  235. package/lib/typescript/module/fetchUpdateInfo.d.ts.map +0 -1
  236. package/plugin/build/transformers.js +0 -314
  237. package/plugin/build/withHotUpdater.js +0 -228
  238. package/src/DefaultResolver.spec.ts +0 -193
  239. package/src/DefaultResolver.ts +0 -63
@@ -4,17 +4,230 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.checkForUpdate = checkForUpdate;
7
+ var _core = require("@hot-updater/core");
8
+ var _pluginCore = require("@hot-updater/plugin-core");
7
9
  var _reactNative = require("react-native");
8
10
  var _error = require("./error.js");
9
11
  var _native = require("./native.js");
12
+ var _releaseCatalogCache = require("./releaseCatalogCache.js");
10
13
  var _store = require("./store.js");
11
- const NIL_UUID = "00000000-0000-0000-0000-000000000000";
12
-
13
- // Internal type that includes resolver for use within index.ts
14
-
15
- const isResetToBuiltInResponse = updateInfo => {
16
- return updateInfo.status === "ROLLBACK" && updateInfo.id === NIL_UUID && updateInfo.fileUrl === null;
14
+ const sameReceipt = (first, second) => first !== null && first.kind === second.kind && first.releaseId === second.releaseId && first.bundleId === second.bundleId && first.catalogId === second.catalogId && first.scopeKey === second.scopeKey && first.generation === second.generation && first.catalogHash === second.catalogHash && first.channel === second.channel && first.selectionContextHash === second.selectionContextHash;
15
+ const validateCatalog = (catalog, expectedScope) => {
16
+ if (catalog.schemaVersion !== 1 || !Number.isSafeInteger(catalog.generation) || catalog.generation < 1 || !/^sha256:[0-9a-f]{64}$/.test(catalog.catalogHash) || !(0, _releaseCatalogCache.hasExpectedReleaseCatalogScope)(catalog, expectedScope)) {
17
+ throw new _error.HotUpdaterError("Received an invalid Release catalog");
18
+ }
19
+ };
20
+ const resetProgress = () => {
21
+ _store.hotUpdaterStore.setState({
22
+ artifactType: null,
23
+ details: null,
24
+ downloadedBytes: undefined,
25
+ isUpdateDownloaded: false,
26
+ progress: 0,
27
+ totalBytes: undefined
28
+ });
29
+ };
30
+ const notifyReleaseAdoption = async input => {
31
+ const {
32
+ userId,
33
+ username
34
+ } = (0, _native.getPersistedUserIdentity)();
35
+ try {
36
+ await input.session.sendAnalyticsEvent({
37
+ appVersion: input.appVersion,
38
+ channel: input.desired.channel,
39
+ cohort: input.cohort,
40
+ fingerprintHash: input.fingerprintHash,
41
+ fromBundleId: input.desired.bundleId,
42
+ fromReleaseId: input.active?.releaseId ?? null,
43
+ installId: (0, _native.getInstallId)(),
44
+ platform: input.platform,
45
+ requestHeaders: input.requestHeaders,
46
+ requestTimeout: input.requestTimeout,
47
+ toBundleId: input.desired.bundleId,
48
+ toReleaseId: input.desired.releaseId,
49
+ type: "RELEASE_ADOPTED",
50
+ updateStrategy: input.updateStrategy,
51
+ ...(userId === undefined ? {} : {
52
+ userId
53
+ }),
54
+ ...(username === undefined ? {} : {
55
+ username
56
+ })
57
+ });
58
+ } catch (error) {
59
+ console.warn("[HotUpdater] Release adoption analytics failed:", error);
60
+ }
17
61
  };
62
+ async function checkForReleaseCatalogUpdate(input) {
63
+ const {
64
+ options
65
+ } = input;
66
+ const session = await options.client.createSession();
67
+ const channelKey = (0, _core.encodeChannelKey)(input.targetChannel);
68
+ const strategy = options.updateStrategy === "appVersion" ? "APP_VERSION" : "FINGERPRINT";
69
+ const canonicalAppVersion = (0, _pluginCore.canonicalizeAppVersion)(input.currentAppVersion);
70
+ if (strategy === "APP_VERSION" && canonicalAppVersion === null) {
71
+ throw new _error.HotUpdaterError("Failed to canonicalize app version");
72
+ }
73
+ if (strategy === "FINGERPRINT" && !input.fingerprintHash) {
74
+ throw new _error.HotUpdaterError("Fingerprint hash is required");
75
+ }
76
+ const expectedScope = strategy === "APP_VERSION" ? {
77
+ channelKey,
78
+ platform: input.platform,
79
+ strategy
80
+ } : {
81
+ channelKey,
82
+ fingerprintHash: input.fingerprintHash,
83
+ platform: input.platform,
84
+ strategy
85
+ };
86
+ const catalog = await session.fetchReleaseCatalog({
87
+ appVersion: canonicalAppVersion ?? input.currentAppVersion,
88
+ channel: input.targetChannel,
89
+ fingerprintHash: input.fingerprintHash,
90
+ platform: input.platform,
91
+ requestHeaders: options.requestHeaders,
92
+ requestTimeout: options.requestTimeout,
93
+ updateStrategy: options.updateStrategy
94
+ });
95
+ validateCatalog(catalog, expectedScope);
96
+ const catalogId = catalog.catalogId;
97
+ const scopeKey = catalog.scopeKey;
98
+ const crashedBundleIds = (0, _native.getCrashHistory)();
99
+ const active = (0, _native.getActiveUpdateState)().activeSelection;
100
+ const explicitScopeSwitch = input.explicitChannel !== undefined && input.explicitChannel !== input.currentChannel;
101
+ const activeInTargetScope = active?.catalogId === catalogId && active.scopeKey === scopeKey ? active : null;
102
+ const hasAuthenticatedActive = active !== null && active.catalogId !== null && active.scopeKey !== null && active.generation !== null;
103
+ if (hasAuthenticatedActive && activeInTargetScope === null && !explicitScopeSwitch) {
104
+ throw new _error.HotUpdaterError("Release transition rejected: UNSOLICITED_SCOPE");
105
+ }
106
+ const selectorCurrentBundleId = activeInTargetScope !== null || !hasAuthenticatedActive && !explicitScopeSwitch ? input.currentBundleId : input.minimumReleaseId;
107
+ const selectionContextHash = (0, _core.createReleaseSelectionContextHash)({
108
+ activeBundleId: selectorCurrentBundleId,
109
+ activeReleaseId: activeInTargetScope?.releaseId ?? null,
110
+ cohort: input.cohort,
111
+ crashedBundleIds,
112
+ minimumReleaseId: input.minimumReleaseId,
113
+ strategy,
114
+ strategyValue: strategy === "APP_VERSION" ? canonicalAppVersion : input.fingerprintHash
115
+ });
116
+ if (!(0, _native.acceptReleaseCatalog)({
117
+ catalogId,
118
+ catalogHash: catalog.catalogHash,
119
+ channel: input.targetChannel,
120
+ generation: catalog.generation,
121
+ selectionContextHash,
122
+ scopeKey
123
+ })) {
124
+ throw new _error.HotUpdaterError("Rejected a stale or inconsistent Release catalog");
125
+ }
126
+ const desired = (0, _core.selectDesiredRelease)(catalog, {
127
+ activeReleaseId: activeInTargetScope?.releaseId ?? null,
128
+ builtInBundleId: input.minimumReleaseId,
129
+ cohort: input.cohort,
130
+ crashedBundleIds,
131
+ currentBundleId: selectorCurrentBundleId,
132
+ minimumReleaseId: input.minimumReleaseId
133
+ });
134
+ if (desired === null) return null;
135
+ if (desired.kind === "BUILTIN" && input.currentBundleId === input.minimumReleaseId && (active === null || active.kind === "BUILTIN")) {
136
+ return null;
137
+ }
138
+ const receipt = {
139
+ catalogId,
140
+ bundleId: desired.bundleId,
141
+ catalogHash: catalog.catalogHash,
142
+ channel: input.targetChannel,
143
+ generation: catalog.generation,
144
+ kind: desired.kind,
145
+ releaseId: desired.releaseId,
146
+ scopeKey,
147
+ selectionContextHash
148
+ };
149
+ if (sameReceipt(active, receipt)) return null;
150
+ const authorization = (0, _core.authorizeReleaseTransition)({
151
+ active,
152
+ desired: receipt,
153
+ explicitScopeSwitch
154
+ });
155
+ if (!authorization.authorized) {
156
+ if (authorization.reason === "EMPTY_TARGET_SCOPE") return null;
157
+ throw new _error.HotUpdaterError(`Release transition rejected: ${authorization.reason}`);
158
+ }
159
+ const release = desired.release;
160
+ const transitionKind = desired.kind === "BUILTIN" ? "USE_BUILTIN" : desired.kind === "EMBEDDED" ? "USE_EMBEDDED" : active?.bundleId === desired.bundleId ? "ADOPT_RELEASE" : "INSTALL";
161
+ const guard = {
162
+ catalogId,
163
+ catalogHash: catalog.catalogHash,
164
+ channel: input.targetChannel,
165
+ generation: catalog.generation,
166
+ scopeKey,
167
+ selectionContextHash
168
+ };
169
+ const updateBundleForSelection = async () => {
170
+ resetProgress();
171
+ if (!(0, _native.isReleaseSelectionCurrent)(guard)) {
172
+ throw new _error.StaleReleaseCatalogError();
173
+ }
174
+ if (transitionKind !== "INSTALL") {
175
+ const committed = await (0, _native.commitReleaseSelection)({
176
+ guard,
177
+ selection: receipt
178
+ });
179
+ if (committed && transitionKind === "ADOPT_RELEASE" && options.analytics) {
180
+ await notifyReleaseAdoption({
181
+ active,
182
+ appVersion: input.currentAppVersion,
183
+ cohort: input.cohort,
184
+ desired: receipt,
185
+ fingerprintHash: input.fingerprintHash,
186
+ platform: input.platform,
187
+ requestHeaders: options.requestHeaders,
188
+ requestTimeout: options.requestTimeout,
189
+ session,
190
+ updateStrategy: options.updateStrategy
191
+ });
192
+ }
193
+ return committed;
194
+ }
195
+ const artifact = await session.resolveArtifact({
196
+ currentBundleId: input.currentBundleId,
197
+ requestHeaders: options.requestHeaders,
198
+ requestTimeout: options.requestTimeout,
199
+ targetBundleId: desired.bundleId
200
+ });
201
+ if (!(0, _native.isReleaseSelectionCurrent)(guard)) {
202
+ throw new _error.StaleReleaseCatalogError();
203
+ }
204
+ return (0, _native.updateBundle)({
205
+ bundleId: desired.bundleId,
206
+ changedAssets: artifact.changedAssets ?? null,
207
+ channel: input.targetChannel,
208
+ fileHash: artifact.fileHash,
209
+ fileUrl: artifact.fileUrl,
210
+ manifestFileHash: artifact.manifestFileHash ?? null,
211
+ manifestUrl: artifact.manifestUrl ?? null,
212
+ selection: receipt,
213
+ shouldSkipCurrentBundleIdCheck: true,
214
+ status: desired.status
215
+ });
216
+ };
217
+ return {
218
+ fileHash: null,
219
+ fileUrl: null,
220
+ id: desired.bundleId,
221
+ message: release?.message ?? null,
222
+ releaseId: desired.releaseId,
223
+ rolloutCohortCount: release?.rolloutCohortCount ?? 1000,
224
+ shouldForceUpdate: transitionKind === "ADOPT_RELEASE" ? false : desired.status === "ROLLBACK" ? true : release?.shouldForceUpdate ?? false,
225
+ status: desired.status,
226
+ targetCohorts: release?.targetCohorts ? [...release.targetCohorts] : [],
227
+ transitionKind,
228
+ updateBundle: updateBundleForSelection
229
+ };
230
+ }
18
231
  async function checkForUpdate(options) {
19
232
  if (__DEV__) {
20
233
  return null;
@@ -26,14 +239,12 @@ async function checkForUpdate(options) {
26
239
  const currentAppVersion = (0, _native.getAppVersion)();
27
240
  const platform = _reactNative.Platform.OS;
28
241
  const currentBundleId = (0, _native.getBundleId)();
29
- const minBundleId = (0, _native.getMinBundleId)();
242
+ const minimumReleaseId = (0, _native.getMinimumReleaseId)();
30
243
  const defaultChannel = (0, _native.getDefaultChannel)();
31
244
  const isSwitched = (0, _native.isChannelSwitched)();
32
245
  const currentChannel = isSwitched ? (0, _native.getChannel)() : defaultChannel;
33
246
  const explicitChannel = options.channel || undefined;
34
247
  const targetChannel = explicitChannel || currentChannel;
35
- const isFirstRuntimeChannelSwitchAttempt = !isSwitched && explicitChannel !== undefined && explicitChannel !== defaultChannel;
36
- const requestBundleId = isFirstRuntimeChannelSwitchAttempt ? minBundleId : currentBundleId;
37
248
  const cohort = (0, _native.getCohort)();
38
249
  if (!currentAppVersion) {
39
250
  options.onError?.(new _error.HotUpdaterError("Failed to get app version"));
@@ -45,64 +256,24 @@ async function checkForUpdate(options) {
45
256
  throw error;
46
257
  }
47
258
  const fingerprintHash = (0, _native.getFingerprintHash)();
48
- if (!options.resolver?.checkUpdate) {
49
- options.onError?.(new _error.HotUpdaterError("Resolver is required but not configured"));
50
- return null;
51
- }
52
- let updateInfo = null;
53
259
  try {
54
- updateInfo = await options.resolver.checkUpdate({
55
- platform,
56
- appVersion: currentAppVersion,
57
- bundleId: requestBundleId,
58
- minBundleId,
260
+ return await checkForReleaseCatalogUpdate({
59
261
  cohort,
60
- channel: targetChannel,
61
- updateStrategy: options.updateStrategy,
262
+ currentAppVersion,
263
+ currentBundleId,
264
+ currentChannel,
265
+ defaultChannel,
266
+ explicitChannel,
62
267
  fingerprintHash,
63
- requestHeaders: options.requestHeaders,
64
- requestTimeout: options.requestTimeout
268
+ isSwitched,
269
+ minimumReleaseId,
270
+ options,
271
+ platform,
272
+ targetChannel
65
273
  });
66
274
  } catch (error) {
67
275
  options.onError?.(error);
68
276
  return null;
69
277
  }
70
- if (!updateInfo) {
71
- return null;
72
- }
73
- if (updateInfo.status === "UP_TO_DATE") {
74
- return null;
75
- }
76
- if (explicitChannel && explicitChannel !== defaultChannel && !isSwitched && updateInfo.status === "ROLLBACK") {
77
- return null;
78
- }
79
- return {
80
- ...updateInfo,
81
- updateBundle: async () => {
82
- if (explicitChannel && isSwitched && isResetToBuiltInResponse(updateInfo)) {
83
- return (0, _native.resetChannel)();
84
- }
85
- const runtimeChannel = updateInfo.fileUrl !== null ? targetChannel : undefined;
86
- _store.hotUpdaterStore.setState({
87
- artifactType: null,
88
- details: null,
89
- downloadedBytes: undefined,
90
- isUpdateDownloaded: false,
91
- progress: 0,
92
- totalBytes: undefined
93
- });
94
- return (0, _native.updateBundle)({
95
- bundleId: updateInfo.id,
96
- channel: runtimeChannel,
97
- changedAssets: updateInfo.changedAssets ?? null,
98
- fileUrl: updateInfo.fileUrl,
99
- fileHash: updateInfo.fileHash,
100
- manifestFileHash: updateInfo.manifestFileHash ?? null,
101
- manifestUrl: updateInfo.manifestUrl ?? null,
102
- status: updateInfo.status,
103
- shouldSkipCurrentBundleIdCheck: isFirstRuntimeChannelSwitchAttempt
104
- });
105
- }
106
- };
107
278
  }
108
279
  //# sourceMappingURL=checkForUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_error","_native","_store","NIL_UUID","isResetToBuiltInResponse","updateInfo","status","id","fileUrl","checkForUpdate","options","__DEV__","includes","Platform","OS","onError","HotUpdaterError","currentAppVersion","getAppVersion","platform","currentBundleId","getBundleId","minBundleId","getMinBundleId","defaultChannel","getDefaultChannel","isSwitched","isChannelSwitched","currentChannel","getChannel","explicitChannel","channel","undefined","targetChannel","isFirstRuntimeChannelSwitchAttempt","requestBundleId","cohort","getCohort","error","fingerprintHash","getFingerprintHash","resolver","checkUpdate","appVersion","bundleId","updateStrategy","requestHeaders","requestTimeout","updateBundle","resetChannel","runtimeChannel","hotUpdaterStore","setState","artifactType","details","downloadedBytes","isUpdateDownloaded","progress","totalBytes","changedAssets","fileHash","manifestFileHash","manifestUrl","shouldSkipCurrentBundleIdCheck"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_pluginCore","_reactNative","_error","_native","_releaseCatalogCache","_store","sameReceipt","first","second","kind","releaseId","bundleId","catalogId","scopeKey","generation","catalogHash","channel","selectionContextHash","validateCatalog","catalog","expectedScope","schemaVersion","Number","isSafeInteger","test","hasExpectedReleaseCatalogScope","HotUpdaterError","resetProgress","hotUpdaterStore","setState","artifactType","details","downloadedBytes","undefined","isUpdateDownloaded","progress","totalBytes","notifyReleaseAdoption","input","userId","username","getPersistedUserIdentity","session","sendAnalyticsEvent","appVersion","desired","cohort","fingerprintHash","fromBundleId","fromReleaseId","active","installId","getInstallId","platform","requestHeaders","requestTimeout","toBundleId","toReleaseId","type","updateStrategy","error","console","warn","checkForReleaseCatalogUpdate","options","client","createSession","channelKey","encodeChannelKey","targetChannel","strategy","canonicalAppVersion","canonicalizeAppVersion","currentAppVersion","fetchReleaseCatalog","crashedBundleIds","getCrashHistory","getActiveUpdateState","activeSelection","explicitScopeSwitch","explicitChannel","currentChannel","activeInTargetScope","hasAuthenticatedActive","selectorCurrentBundleId","currentBundleId","minimumReleaseId","createReleaseSelectionContextHash","activeBundleId","activeReleaseId","strategyValue","acceptReleaseCatalog","selectDesiredRelease","builtInBundleId","receipt","authorization","authorizeReleaseTransition","authorized","reason","release","transitionKind","guard","updateBundleForSelection","isReleaseSelectionCurrent","StaleReleaseCatalogError","committed","commitReleaseSelection","selection","analytics","artifact","resolveArtifact","targetBundleId","updateBundle","changedAssets","fileHash","fileUrl","manifestFileHash","manifestUrl","shouldSkipCurrentBundleIdCheck","status","id","message","rolloutCohortCount","shouldForceUpdate","targetCohorts","checkForUpdate","__DEV__","includes","Platform","OS","onError","getAppVersion","getBundleId","getMinimumReleaseId","defaultChannel","getDefaultChannel","isSwitched","isChannelSwitched","getChannel","getCohort","getFingerprintHash"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}