@hot-updater/react-native 0.36.7 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +47 -70
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/index.spec.js +115 -159
  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 -53
  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 +48 -65
  90. package/lib/module/index.js.map +1 -1
  91. package/lib/module/index.spec.js +115 -159
  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 -49
  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 +31 -40
  137. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/native.d.ts +84 -17
  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 +31 -40
  167. package/lib/typescript/module/index.d.ts.map +1 -1
  168. package/lib/typescript/module/native.d.ts +84 -17
  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 +367 -96
  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 +108 -201
  196. package/src/index.ts +68 -91
  197. package/src/iosInterop.spec.ts +30 -0
  198. package/src/native.spec.ts +226 -10
  199. package/src/native.ts +385 -81
  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
@@ -1,27 +1,24 @@
1
1
  "use strict";
2
2
 
3
- export const fetchUpdateInfo = async ({
3
+ export const fetchJSON = async ({
4
4
  url,
5
5
  requestHeaders,
6
6
  requestTimeout = 5000
7
7
  }) => {
8
8
  const controller = new AbortController();
9
- const timeoutId = setTimeout(() => {
10
- controller.abort();
11
- }, requestTimeout);
9
+ const timeoutId = setTimeout(() => controller.abort(), requestTimeout);
12
10
  try {
13
- const headers = {
14
- "Content-Type": "application/json",
15
- ...requestHeaders
16
- };
17
11
  const response = await fetch(url, {
18
- signal: controller.signal,
19
- headers
12
+ headers: {
13
+ Accept: "application/json",
14
+ ...requestHeaders
15
+ },
16
+ signal: controller.signal
20
17
  });
21
18
  if (response.status !== 200) {
22
19
  throw new Error(response.statusText);
23
20
  }
24
- return response.json();
21
+ return await response.json();
25
22
  } catch (error) {
26
23
  if (error instanceof Error && error.name === "AbortError") {
27
24
  throw new Error("Request timed out");
@@ -31,4 +28,4 @@ export const fetchUpdateInfo = async ({
31
28
  clearTimeout(timeoutId);
32
29
  }
33
30
  };
34
- //# sourceMappingURL=fetchUpdateInfo.js.map
31
+ //# sourceMappingURL=fetchJSON.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fetchJSON","url","requestHeaders","requestTimeout","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","headers","Accept","signal","status","Error","statusText","json","error","name","clearTimeout"],"sourceRoot":"../../src","sources":["fetchJSON.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG,MAAAA,CAAU;EACjCC,GAAG;EACHC,cAAc;EACdC,cAAc,GAAG;AAKnB,CAAC,KAAiB;EAChB,MAAMC,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAEL,cAAc,CAAC;EAEtE,IAAI;IACF,MAAMM,QAAQ,GAAG,MAAMC,KAAK,CAACT,GAAG,EAAE;MAChCU,OAAO,EAAE;QACPC,MAAM,EAAE,kBAAkB;QAC1B,GAAGV;MACL,CAAC;MACDW,MAAM,EAAET,UAAU,CAACS;IACrB,CAAC,CAAC;IACF,IAAIJ,QAAQ,CAACK,MAAM,KAAK,GAAG,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAACN,QAAQ,CAACO,UAAU,CAAC;IACtC;IACA,OAAQ,MAAMP,QAAQ,CAACQ,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC,OAAOC,KAAc,EAAE;IACvB,IAAIA,KAAK,YAAYH,KAAK,IAAIG,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;MACzD,MAAM,IAAIJ,KAAK,CAAC,mBAAmB,CAAC;IACtC;IACA,MAAMG,KAAK;EACb,CAAC,SAAS;IACRE,YAAY,CAACd,SAAS,CAAC;EACzB;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ import { encodeChannelKey } from "@hot-updater/core";
4
+ import { canonicalizeAppVersion } from "@hot-updater/plugin-core";
5
+ import { fetchJSON } from "./fetchJSON.js";
6
+ import { fetchReleaseCatalogWithCache } from "./releaseCatalogCache.js";
7
+ import { HOT_UPDATER_SDK_VERSION } from "./sdkVersion.js";
8
+ const resolveBaseURL = async baseURL => {
9
+ const resolvedBaseURL = typeof baseURL === "function" ? await baseURL() : baseURL;
10
+ if (!resolvedBaseURL) {
11
+ throw new Error("baseURL function must return a non-empty string");
12
+ }
13
+ return resolvedBaseURL.replace(/\/+$/, "");
14
+ };
15
+ const resolveArtifactUrl = (baseURL, value) => {
16
+ if (/^https?:\/\//i.test(value)) {
17
+ new URL(value);
18
+ return value;
19
+ }
20
+ if (!value.startsWith("/storage/")) {
21
+ throw new Error("Artifact URLs must be absolute HTTP(S) URLs or client-relative storage paths.");
22
+ }
23
+ return `${baseURL}/${value.slice(1)}`;
24
+ };
25
+ const resolveArtifactUrls = (baseURL, info) => ({
26
+ ...info,
27
+ fileUrl: info.fileUrl === null ? null : resolveArtifactUrl(baseURL, info.fileUrl),
28
+ ...(info.manifestUrl === undefined ? {} : {
29
+ manifestUrl: info.manifestUrl === null ? null : resolveArtifactUrl(baseURL, info.manifestUrl)
30
+ }),
31
+ ...(info.changedAssets === undefined ? {} : {
32
+ changedAssets: info.changedAssets === null ? null : Object.fromEntries(Object.entries(info.changedAssets).map(([path, asset]) => [path, {
33
+ ...asset,
34
+ ...(asset.file ? {
35
+ file: {
36
+ ...asset.file,
37
+ url: resolveArtifactUrl(baseURL, asset.file.url)
38
+ }
39
+ } : {}),
40
+ ...(asset.patch ? {
41
+ patch: {
42
+ ...asset.patch,
43
+ patchUrl: resolveArtifactUrl(baseURL, asset.patch.patchUrl)
44
+ }
45
+ } : {})
46
+ }]))
47
+ })
48
+ });
49
+ const sendAnalyticsEvent = async (baseURL, params) => {
50
+ const controller = new AbortController();
51
+ const timeoutId = setTimeout(() => {
52
+ controller.abort();
53
+ }, params.requestTimeout ?? 5000);
54
+ try {
55
+ const response = await fetch(`${baseURL}/events`, {
56
+ body: JSON.stringify({
57
+ appVersion: params.appVersion,
58
+ channel: params.channel,
59
+ cohort: params.cohort,
60
+ fingerprintHash: params.fingerprintHash,
61
+ fromBundleId: params.fromBundleId,
62
+ ...(params.fromReleaseId === undefined ? {} : {
63
+ fromReleaseId: params.fromReleaseId
64
+ }),
65
+ installId: params.installId,
66
+ platform: params.platform,
67
+ sdkVersion: HOT_UPDATER_SDK_VERSION,
68
+ toBundleId: params.toBundleId,
69
+ ...(params.toReleaseId === undefined ? {} : {
70
+ toReleaseId: params.toReleaseId
71
+ }),
72
+ type: params.type,
73
+ updateStrategy: params.updateStrategy,
74
+ ...(params.userId != null ? {
75
+ userId: params.userId
76
+ } : {}),
77
+ ...(params.username != null ? {
78
+ username: params.username
79
+ } : {})
80
+ }),
81
+ headers: {
82
+ "Content-Type": "application/json",
83
+ ...params.requestHeaders
84
+ },
85
+ method: "POST",
86
+ signal: controller.signal
87
+ });
88
+ if (response.status !== 204) {
89
+ throw new Error(`Expected HTTP 204 from /events, received ${response.status}`);
90
+ }
91
+ } catch (error) {
92
+ if (error instanceof Error && error.name === "AbortError") {
93
+ throw new Error("Request timed out");
94
+ }
95
+ throw error;
96
+ } finally {
97
+ clearTimeout(timeoutId);
98
+ }
99
+ };
100
+ const createSession = baseURL => ({
101
+ fetchReleaseCatalog: async params => {
102
+ const channelKey = encodeChannelKey(params.channel);
103
+ let strategyValue;
104
+ if (params.updateStrategy === "fingerprint") {
105
+ if (!params.fingerprintHash) {
106
+ throw new Error("Fingerprint hash is required");
107
+ }
108
+ strategyValue = params.fingerprintHash;
109
+ } else {
110
+ const appVersion = canonicalizeAppVersion(params.appVersion);
111
+ if (appVersion === null) throw new Error("Invalid app version");
112
+ strategyValue = appVersion;
113
+ }
114
+ const strategyPath = params.updateStrategy === "fingerprint" ? "fingerprint" : "app-version";
115
+ const url = `${baseURL}/release-catalogs/${strategyPath}/${params.platform}/${channelKey}/${encodeURIComponent(strategyValue)}`;
116
+ return fetchReleaseCatalogWithCache({
117
+ baseURL,
118
+ expectedScope: params.updateStrategy === "fingerprint" ? {
119
+ channelKey,
120
+ fingerprintHash: strategyValue,
121
+ platform: params.platform,
122
+ strategy: "FINGERPRINT"
123
+ } : {
124
+ channelKey,
125
+ platform: params.platform,
126
+ strategy: "APP_VERSION"
127
+ },
128
+ requestHeaders: params.requestHeaders,
129
+ requestTimeout: params.requestTimeout,
130
+ url
131
+ });
132
+ },
133
+ resolveArtifact: async params => {
134
+ const info = await fetchJSON({
135
+ requestHeaders: params.requestHeaders,
136
+ requestTimeout: params.requestTimeout,
137
+ url: `${baseURL}/artifacts/${encodeURIComponent(params.targetBundleId)}/from/${encodeURIComponent(params.currentBundleId)}`
138
+ });
139
+ return resolveArtifactUrls(baseURL, info);
140
+ },
141
+ sendAnalyticsEvent: params => sendAnalyticsEvent(baseURL, params)
142
+ });
143
+
144
+ /** Creates the private HTTP client used by HotUpdater.init and HotUpdater.wrap. */
145
+ export const createHttpClient = baseURL => ({
146
+ createSession: async () => createSession(await resolveBaseURL(baseURL))
147
+ });
148
+ //# sourceMappingURL=httpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["encodeChannelKey","canonicalizeAppVersion","fetchJSON","fetchReleaseCatalogWithCache","HOT_UPDATER_SDK_VERSION","resolveBaseURL","baseURL","resolvedBaseURL","Error","replace","resolveArtifactUrl","value","test","URL","startsWith","slice","resolveArtifactUrls","info","fileUrl","manifestUrl","undefined","changedAssets","Object","fromEntries","entries","map","path","asset","file","url","patch","patchUrl","sendAnalyticsEvent","params","controller","AbortController","timeoutId","setTimeout","abort","requestTimeout","response","fetch","body","JSON","stringify","appVersion","channel","cohort","fingerprintHash","fromBundleId","fromReleaseId","installId","platform","sdkVersion","toBundleId","toReleaseId","type","updateStrategy","userId","username","headers","requestHeaders","method","signal","status","error","name","clearTimeout","createSession","fetchReleaseCatalog","channelKey","strategyValue","strategyPath","encodeURIComponent","expectedScope","strategy","resolveArtifact","targetBundleId","currentBundleId","createHttpClient"],"sourceRoot":"../../src","sources":["httpClient.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ import { beforeEach, describe, expect, it, vi } from "vitest";
4
+ import { createHttpClient } from "./httpClient.js";
5
+ const mocks = vi.hoisted(() => {
6
+ Reflect.set(globalThis, "HotUpdater", {
7
+ SDK_VERSION: "test-sdk-version"
8
+ });
9
+ return {
10
+ fetchCatalog: vi.fn(),
11
+ fetchJSON: vi.fn()
12
+ };
13
+ });
14
+ vi.mock("./releaseCatalogCache", () => ({
15
+ fetchReleaseCatalogWithCache: mocks.fetchCatalog
16
+ }));
17
+ vi.mock("./fetchJSON", () => ({
18
+ fetchJSON: mocks.fetchJSON
19
+ }));
20
+ const artifact = {
21
+ fileHash: "bundle-hash",
22
+ fileUrl: "/storage/bundle.zip"
23
+ };
24
+ const catalog = {
25
+ catalogId: "server-owned-project",
26
+ catalogHash: `sha256:${"a".repeat(64)}`,
27
+ fallbackPolicy: "BUILTIN_IF_ACTIVE_INELIGIBLE",
28
+ generation: 1,
29
+ releases: [],
30
+ schemaVersion: 1,
31
+ scopeKey: "v1:app-version:server-owned-project:ios:cHJvZHVjdGlvbg"
32
+ };
33
+ describe("private HotUpdater HTTP client", () => {
34
+ beforeEach(() => {
35
+ vi.clearAllMocks();
36
+ mocks.fetchCatalog.mockResolvedValue(catalog);
37
+ mocks.fetchJSON.mockResolvedValue(artifact);
38
+ });
39
+ it("fetches a catalog without putting its internal identity in the route", async () => {
40
+ const session = await createHttpClient("https://updates.example.com/hot-updater/").createSession();
41
+ await expect(session.fetchReleaseCatalog({
42
+ appVersion: "1.2.0",
43
+ channel: "production",
44
+ fingerprintHash: null,
45
+ platform: "ios",
46
+ updateStrategy: "appVersion"
47
+ })).resolves.toBe(catalog);
48
+ expect(mocks.fetchCatalog).toHaveBeenCalledWith({
49
+ baseURL: "https://updates.example.com/hot-updater",
50
+ expectedScope: {
51
+ channelKey: "cHJvZHVjdGlvbg",
52
+ platform: "ios",
53
+ strategy: "APP_VERSION"
54
+ },
55
+ requestHeaders: undefined,
56
+ requestTimeout: undefined,
57
+ url: "https://updates.example.com/hot-updater/release-catalogs/app-version/ios/cHJvZHVjdGlvbg/1.2.0"
58
+ });
59
+ });
60
+ it("resolves a functional baseURL once per session and captures it for a deferred artifact", async () => {
61
+ const resolveBaseURL = vi.fn().mockResolvedValueOnce("https://first.example.com/hot-updater").mockResolvedValueOnce("https://second.example.com/hot-updater");
62
+ const client = createHttpClient(resolveBaseURL);
63
+ const firstSession = await client.createSession();
64
+ await firstSession.fetchReleaseCatalog({
65
+ appVersion: "1.2.0",
66
+ channel: "production",
67
+ fingerprintHash: null,
68
+ platform: "ios",
69
+ updateStrategy: "appVersion"
70
+ });
71
+ await expect(firstSession.resolveArtifact({
72
+ currentBundleId: "current",
73
+ targetBundleId: "target"
74
+ })).resolves.toEqual({
75
+ ...artifact,
76
+ fileUrl: "https://first.example.com/hot-updater/storage/bundle.zip"
77
+ });
78
+ expect(resolveBaseURL).toHaveBeenCalledOnce();
79
+ expect(mocks.fetchJSON).toHaveBeenCalledWith({
80
+ requestHeaders: undefined,
81
+ requestTimeout: undefined,
82
+ url: "https://first.example.com/hot-updater/artifacts/target/from/current"
83
+ });
84
+ await client.createSession();
85
+ expect(resolveBaseURL).toHaveBeenCalledTimes(2);
86
+ });
87
+ it("rejects non-storage relative artifact URLs", async () => {
88
+ mocks.fetchJSON.mockResolvedValue({
89
+ ...artifact,
90
+ fileUrl: "/private/bundle.zip"
91
+ });
92
+ const session = await createHttpClient("https://updates.example.com").createSession();
93
+ await expect(session.resolveArtifact({
94
+ currentBundleId: "current",
95
+ targetBundleId: "target"
96
+ })).rejects.toThrow("client-relative storage paths");
97
+ });
98
+ it("requires a functional baseURL to resolve to a non-empty string", async () => {
99
+ await expect(createHttpClient(() => "").createSession()).rejects.toThrow("baseURL function must return a non-empty string");
100
+ });
101
+ });
102
+ //# sourceMappingURL=httpClient.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["beforeEach","describe","expect","it","vi","createHttpClient","mocks","hoisted","Reflect","set","globalThis","SDK_VERSION","fetchCatalog","fn","fetchJSON","mock","fetchReleaseCatalogWithCache","artifact","fileHash","fileUrl","catalog","catalogId","catalogHash","repeat","fallbackPolicy","generation","releases","schemaVersion","scopeKey","clearAllMocks","mockResolvedValue","session","createSession","fetchReleaseCatalog","appVersion","channel","fingerprintHash","platform","updateStrategy","resolves","toBe","toHaveBeenCalledWith","baseURL","expectedScope","channelKey","strategy","requestHeaders","undefined","requestTimeout","url","resolveBaseURL","mockResolvedValueOnce","client","firstSession","resolveArtifact","currentBundleId","targetBundleId","toEqual","toHaveBeenCalledOnce","toHaveBeenCalledTimes","rejects","toThrow"],"sourceRoot":"../../src","sources":["httpClient.spec.ts"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import { checkForUpdate } from "./checkForUpdate.js";
4
- import { createDefaultResolver } from "./DefaultResolver.js";
5
- import { addListener, clearCrashHistory, getAppVersion, getBaseURL, getBundleId, getChannel, getCohort, getCrashHistory, getDefaultChannel, getFingerprintHash, getManifest, getMinBundleId, isChannelSwitched, reload, resetChannel, setCohort, setReloadBehavior, updateBundle } from "./native.js";
4
+ import { createHttpClient } from "./httpClient.js";
5
+ import { addListener, getPublicActiveUpdateState, clearCrashHistory, getAppVersion, getBaseURL, getBundleId, getChannel, getCohort, getCrashHistory, getDefaultChannel, getFingerprintHash, getInstallId, getManifest, getMinBundleId, getReleaseId, isChannelSwitched, notifyAppReady, reload, resetChannel, setCohort, setReloadBehavior, setUser, updateBundle } from "./native.js";
6
6
  import { hotUpdaterStore } from "./store.js";
7
7
  import { init, wrap } from "./wrap.js";
8
8
  export * from "./store.js";
9
- export { createDefaultResolver } from "./DefaultResolver.js";
10
9
  export { extractSignatureFailure, isSignatureVerificationError } from "./types.js";
11
10
  /**
12
11
  * Register getBaseURL to global objects for use without imports.
@@ -25,8 +24,6 @@ const registerGlobalGetBaseURL = () => {
25
24
 
26
25
  // Call registration immediately on module load
27
26
  registerGlobalGetBaseURL();
28
- const isManualWrapOptions = options => "updateMode" in options && options.updateMode === "manual";
29
-
30
27
  /**
31
28
  * Creates a HotUpdater client instance with all update management methods.
32
29
  * This function is called once on module initialization to create a singleton instance.
@@ -37,51 +34,29 @@ function createHotUpdaterClient() {
37
34
 
38
35
  // Global configuration stored from wrap
39
36
  const globalConfig = {
40
- resolver: null
37
+ client: null
41
38
  };
42
39
  const createMissingNetworkConfigError = apiName => {
43
40
  if (apiName === "init") {
44
- return new Error(`[HotUpdater] Either baseURL or resolver must be provided.\n\n` + `Configure HotUpdater before calling update APIs with the standard baseURL setup:\n\n` + ` HotUpdater.init({\n` + ` baseURL: "<your-update-server-url>",\n` + ` });\n\n` + `For manual update flows, visit: https://hot-updater.dev/docs/guides/custom-update`);
41
+ return new Error(`[HotUpdater] baseURL must be provided.\n\n` + `Configure HotUpdater before calling update APIs with the standard baseURL setup:\n\n` + ` HotUpdater.init({\n` + ` baseURL: "<your-update-server-url>",\n` + ` });\n\n` + `For manual update flows, visit: https://hot-updater.dev/docs/guides/custom-update`);
45
42
  }
46
43
  const baseURLExample = ` export default HotUpdater.wrap({\n` + ` baseURL: "<your-update-server-url>",\n` + ` updateStrategy: "appVersion"\n` + ` })(App);\n\n`;
47
- return new Error(`[HotUpdater] Either baseURL or resolver must be provided.\n\n` + `Configure HotUpdater.wrap with the standard baseURL setup:\n\n` + baseURLExample + `For manual update flows, use HotUpdater.init() and visit: ` + `https://hot-updater.dev/docs/guides/custom-update`);
44
+ return new Error(`[HotUpdater] baseURL must be provided.\n\n` + `Configure HotUpdater.wrap with the standard baseURL setup:\n\n` + baseURLExample + `For manual update flows, use HotUpdater.init() and visit: ` + `https://hot-updater.dev/docs/guides/custom-update`);
48
45
  };
49
46
  const normalizeOptions = options => {
50
- if (isManualWrapOptions(options)) {
51
- if ("baseURL" in options && options.baseURL) {
52
- const {
53
- baseURL,
54
- ...rest
55
- } = options;
56
- return {
57
- ...rest,
58
- resolver: createDefaultResolver(baseURL),
59
- updateMode: "manual"
60
- };
61
- }
62
- if ("resolver" in options && options.resolver) {
63
- return {
64
- ...options,
65
- updateMode: "manual"
66
- };
67
- }
47
+ const incoming = options;
48
+ if (incoming.updateMode === "manual") {
49
+ throw new Error('[HotUpdater] HotUpdater.wrap({ updateMode: "manual" }) was removed. ' + "Call HotUpdater.init({ ... }) instead, export your root component " + "directly, and use HotUpdater.checkForUpdate(...) for the manual " + "update flow. See https://hot-updater.dev/docs/guides/custom-update");
68
50
  }
69
- const autoOptions = options;
70
- if ("baseURL" in autoOptions && autoOptions.baseURL) {
51
+ const autoOptions = incoming;
52
+ if (autoOptions.baseURL) {
71
53
  const {
72
54
  baseURL,
73
55
  ...rest
74
56
  } = autoOptions;
75
57
  return {
76
58
  ...rest,
77
- resolver: createDefaultResolver(baseURL),
78
- updateMode: "auto"
79
- };
80
- }
81
- if ("resolver" in autoOptions && autoOptions.resolver) {
82
- return {
83
- ...autoOptions,
84
- updateMode: "auto"
59
+ client: createHttpClient(baseURL)
85
60
  };
86
61
  }
87
62
  throw createMissingNetworkConfigError("wrap");
@@ -91,23 +66,21 @@ function createHotUpdaterClient() {
91
66
  updateMode: _updateMode,
92
67
  ...rest
93
68
  } = options;
94
- if ("baseURL" in rest && rest.baseURL) {
69
+ if (rest.baseURL) {
95
70
  const {
96
71
  baseURL,
97
72
  ...baseURLRest
98
73
  } = rest;
99
74
  return {
100
75
  ...baseURLRest,
101
- resolver: createDefaultResolver(baseURL)
76
+ client: createHttpClient(baseURL)
102
77
  };
103
78
  }
104
- if ("resolver" in rest && rest.resolver) {
105
- return rest;
106
- }
107
79
  throw createMissingNetworkConfigError("init");
108
80
  };
109
81
  const configureGlobal = (normalizedOptions, options) => {
110
- globalConfig.resolver = normalizedOptions.resolver;
82
+ globalConfig.analytics = normalizedOptions.analytics;
83
+ globalConfig.client = normalizedOptions.client;
111
84
  globalConfig.requestHeaders = options.requestHeaders;
112
85
  globalConfig.requestTimeout = options.requestTimeout;
113
86
  globalConfig.onError = options.onError;
@@ -119,11 +92,11 @@ function createHotUpdaterClient() {
119
92
  }
120
93
  configurationAPI ??= nextAPI;
121
94
  };
122
- const ensureGlobalResolver = methodName => {
123
- if (!globalConfig.resolver) {
95
+ const ensureGlobalClient = methodName => {
96
+ if (!globalConfig.client) {
124
97
  throw new Error(`[HotUpdater] ${methodName} requires HotUpdater.wrap() or HotUpdater.init() to be used.\n\n` + `To fix this issue, configure HotUpdater before calling ${methodName}:\n\n` + `Option 1: With HotUpdater.wrap()\n` + ` export default HotUpdater.wrap({\n` + ` baseURL: "<your-update-server-url>",\n` + ` updateStrategy: "appVersion"\n` + ` })(App);\n\n` + `Option 2: With HotUpdater.init() for custom runtimes\n` + ` HotUpdater.init({\n` + ` baseURL: "<your-update-server-url>",\n` + ` });\n\n` + `For manual update flows, visit: https://hot-updater.dev/docs/guides/custom-update`);
125
98
  }
126
- return globalConfig.resolver;
99
+ return globalConfig.client;
127
100
  };
128
101
  return {
129
102
  /**
@@ -144,7 +117,7 @@ function createHotUpdaterClient() {
144
117
  * baseURL: "<your-update-server-url>",
145
118
  * updateStrategy: "appVersion",
146
119
  * requestHeaders: {
147
- * "Authorization": "Bearer <your-access-token>",
120
+ * "x-api-key": "<your-api-key>",
148
121
  * },
149
122
  * })(App);
150
123
  * ```
@@ -159,8 +132,7 @@ function createHotUpdaterClient() {
159
132
  * Initializes HotUpdater without wrapping a React component.
160
133
  *
161
134
  * Use this for manual update flows in runtimes where a root component HOC
162
- * is not convenient. Replace deprecated manual
163
- * `HotUpdater.wrap({ updateMode: "manual" })(App)` usage with this API.
135
+ * is not convenient. Use this instead of wrapping the root component.
164
136
  *
165
137
  * @example
166
138
  * ```tsx
@@ -214,14 +186,16 @@ function createHotUpdaterClient() {
214
186
  * Fetches the current app version.
215
187
  */
216
188
  getAppVersion,
189
+ /** Reads the active and stable Release/Bundle state. */
190
+ getActiveUpdateState: async () => getPublicActiveUpdateState(),
217
191
  /**
218
192
  * Fetches the current bundle ID of the app.
219
193
  */
220
194
  getBundleId,
221
- /**
222
- * Retrieves the initial bundle ID based on the build time of the native app.
223
- */
195
+ /** Returns the minimum bundle ID based on the native app build time. */
224
196
  getMinBundleId,
197
+ /** Returns the active Release identity, or null for BUILTIN/legacy state. */
198
+ getReleaseId,
225
199
  /**
226
200
  * Fetches the current manifest for the active bundle.
227
201
  */
@@ -290,18 +264,17 @@ function createHotUpdaterClient() {
290
264
  * Manually checks for updates.
291
265
  *
292
266
  * @param {Object} config - Update check configuration
293
- * @param {string} config.source - Update server URL
294
267
  * @param {string} [config.channel] - Optional channel override for this update check
295
268
  * @param {Record<string, string>} [config.requestHeaders] - Request headers
296
269
  *
297
- * @returns {Promise<UpdateInfo | null>} Update information or null if up to date
270
+ * @returns {Promise<CheckForUpdateResult | null>} Update information or null if up to date
298
271
  *
299
272
  * @example
300
273
  * ```ts
301
274
  * const updateInfo = await HotUpdater.checkForUpdate({
302
- * source: "<your-update-server-url>",
275
+ * updateStrategy: "appVersion",
303
276
  * requestHeaders: {
304
- * Authorization: "Bearer <your-access-token>",
277
+ * "x-api-key": "<your-api-key>",
305
278
  * },
306
279
  * });
307
280
  *
@@ -310,17 +283,18 @@ function createHotUpdaterClient() {
310
283
  * return;
311
284
  * }
312
285
  *
313
- * await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl);
286
+ * await updateInfo.updateBundle();
314
287
  * if (updateInfo.shouldForceUpdate) {
315
288
  * await HotUpdater.reload();
316
289
  * }
317
290
  * ```
318
291
  */
319
292
  checkForUpdate: config => {
320
- const resolver = ensureGlobalResolver("checkForUpdate");
293
+ const client = ensureGlobalClient("checkForUpdate");
321
294
  const mergedConfig = {
322
295
  ...config,
323
- resolver,
296
+ analytics: globalConfig.analytics,
297
+ client,
324
298
  requestHeaders: {
325
299
  ...globalConfig.requestHeaders,
326
300
  ...config.requestHeaders
@@ -342,9 +316,9 @@ function createHotUpdaterClient() {
342
316
  * @example
343
317
  * ```ts
344
318
  * const updateInfo = await HotUpdater.checkForUpdate({
345
- * source: "<your-update-server-url>",
319
+ * updateStrategy: "appVersion",
346
320
  * requestHeaders: {
347
- * Authorization: "Bearer <your-access-token>",
321
+ * "x-api-key": "<your-api-key>",
348
322
  * },
349
323
  * });
350
324
  *
@@ -354,17 +328,14 @@ function createHotUpdaterClient() {
354
328
  * };
355
329
  * }
356
330
  *
357
- * await HotUpdater.updateBundle({
358
- * bundleId: updateInfo.id,
359
- * fileUrl: updateInfo.fileUrl
360
- * });
331
+ * await updateInfo.updateBundle();
361
332
  * if (updateInfo.shouldForceUpdate) {
362
333
  * await HotUpdater.reload();
363
334
  * }
364
335
  * ```
365
336
  */
366
337
  updateBundle: params => {
367
- ensureGlobalResolver("updateBundle");
338
+ ensureGlobalClient("updateBundle");
368
339
  return updateBundle(params);
369
340
  },
370
341
  /**
@@ -398,6 +369,18 @@ function createHotUpdaterClient() {
398
369
  * ```
399
370
  */
400
371
  getFingerprintHash,
372
+ /**
373
+ * Fetches the persisted install id for this app installation.
374
+ */
375
+ getInstallId,
376
+ /**
377
+ * Persists nullable user identity fields associated with this installation.
378
+ */
379
+ setUser,
380
+ /**
381
+ * Reads the native launch report for the current process.
382
+ */
383
+ notifyAppReady,
401
384
  /**
402
385
  * Gets the list of bundle IDs that have been marked as crashed.
403
386
  * These bundles will be rejected if attempted to install again.
@@ -1 +1 @@
1
- {"version":3,"names":["checkForUpdate","createDefaultResolver","addListener","clearCrashHistory","getAppVersion","getBaseURL","getBundleId","getChannel","getCohort","getCrashHistory","getDefaultChannel","getFingerprintHash","getManifest","getMinBundleId","isChannelSwitched","reload","resetChannel","setCohort","setReloadBehavior","updateBundle","hotUpdaterStore","init","wrap","extractSignatureFailure","isSignatureVerificationError","registerGlobalGetBaseURL","fn","globalThis","HotUpdaterGetBaseURL","isManualWrapOptions","options","updateMode","createHotUpdaterClient","configurationAPI","mixedConfigurationReported","globalConfig","resolver","createMissingNetworkConfigError","apiName","Error","baseURLExample","normalizeOptions","baseURL","rest","autoOptions","normalizeInitOptions","_updateMode","baseURLRest","configureGlobal","normalizedOptions","requestHeaders","requestTimeout","onError","reportMixedConfiguration","nextAPI","console","error","ensureGlobalResolver","methodName","isUpdateDownloaded","getSnapshot","config","mergedConfig","params","ok","setState","artifactType","details","downloadedBytes","undefined","progress","totalBytes","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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AC;MAE3C,OAAOR,IAAI,CAAC2B,iBAAiB,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI5B,IAAI,EAAGS,OAA8B,IAAW;MAC9C,MAAMmB,iBAAiB,GAAGJ,oBAAoB,CAACf,OAAO,CAAC;MAEvDuB,wBAAwB,CAAC,MAAM,CAAC;MAChCL,eAAe,CAACC,iBAAiB,EAAEnB,OAAO,CAAC;MAE3CT,IAAI,CAAC4B,iBAAiB,CAAC;IACzB,CAAC;IAED;AACJ;AACA;IACIlC,MAAM;IAEN;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIG,iBAAiB;IAEjB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIyC,kBAAkB,EAAEA,CAAA,KAAMvC,eAAe,CAACwC,WAAW,CAAC,CAAC,CAACD,kBAAkB;IAE1E;AACJ;AACA;IACIvD,aAAa;IAEb;AACJ;AACA;IACIE,WAAW;IAEX;AACJ;AACA;IACIO,cAAc;IAEd;AACJ;AACA;IACID,WAAW;IAEX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIL,UAAU;IAEV;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIG,iBAAiB;IAEjB;AACJ;AACA;AACA;AACA;IACII,iBAAiB;IAEjB;AACJ;AACA;AACA;IACIG,SAAS;IAET;AACJ;AACA;IACIT,SAAS;IAET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIN,WAAW;IAEX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIF,cAAc,EAAG6D,MAA6B,IAAK;MACjD,MAAMzB,QAAQ,GAAGqB,oBAAoB,CAAC,gBAAgB,CAAC;MAEvD,MAAMK,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTzB,QAAQ;QACRc,cAAc,EAAE;UACd,GAAGf,YAAY,CAACe,cAAc;UAC9B,GAAGW,MAAM,CAACX;QACZ,CAAC;QACDC,cAAc,EAAEU,MAAM,CAACV,cAAc,IAAIhB,YAAY,CAACgB,cAAc;QACpEC,OAAO,EAAES,MAAM,CAACT,OAAO,IAAIjB,YAAY,CAACiB;MAC1C,CAAC;MAED,OAAOpD,cAAc,CAAC8D,YAAY,CAAC;IACrC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI3C,YAAY,EAAG4C,MAAoB,IAAK;MACtCN,oBAAoB,CAAC,cAAc,CAAC;MACpC,OAAOtC,YAAY,CAAC4C,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI/C,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,MAAMgD,EAAE,GAAG,MAAMhD,YAAY,CAAC,CAAC;MAC/B,IAAIgD,EAAE,EAAE;QACN5C,eAAe,CAAC6C,QAAQ,CAAC;UACvBC,YAAY,EAAE,IAAI;UAClBC,OAAO,EAAE,IAAI;UACbC,eAAe,EAAEC,SAAS;UAC1BV,kBAAkB,EAAE,KAAK;UACzBW,QAAQ,EAAE,CAAC;UACXC,UAAU,EAAEF;QACd,CAAC,CAAC;MACJ;MACA,OAAOL,EAAE;IACX,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIrD,kBAAkB;IAElB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIF,eAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIN;EACF,CAAC;AACH;AASA,OAAO,MAAMqE,UAA4B,GAAGxC,sBAAsB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["checkForUpdate","createHttpClient","addListener","getPublicActiveUpdateState","clearCrashHistory","getAppVersion","getBaseURL","getBundleId","getChannel","getCohort","getCrashHistory","getDefaultChannel","getFingerprintHash","getInstallId","getManifest","getMinBundleId","getReleaseId","isChannelSwitched","notifyAppReady","reload","resetChannel","setCohort","setReloadBehavior","setUser","updateBundle","hotUpdaterStore","init","wrap","extractSignatureFailure","isSignatureVerificationError","registerGlobalGetBaseURL","fn","globalThis","HotUpdaterGetBaseURL","createHotUpdaterClient","configurationAPI","mixedConfigurationReported","globalConfig","client","createMissingNetworkConfigError","apiName","Error","baseURLExample","normalizeOptions","options","incoming","updateMode","autoOptions","baseURL","rest","normalizeInitOptions","_updateMode","baseURLRest","configureGlobal","normalizedOptions","analytics","requestHeaders","requestTimeout","onError","reportMixedConfiguration","nextAPI","console","error","ensureGlobalClient","methodName","isUpdateDownloaded","getSnapshot","getActiveUpdateState","config","mergedConfig","params","ok","setState","artifactType","details","downloadedBytes","undefined","progress","totalBytes","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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CA;AACA;AACA;IACI2C,kBAAkB,EAAEA,CAAA,KAAMxC,eAAe,CAACyC,WAAW,CAAC,CAAC,CAACD,kBAAkB;IAE1E;AACJ;AACA;IACI5D,aAAa;IAEb;IACA8D,oBAAoB,EAAE,MAAAA,CAAA,KAAYhE,0BAA0B,CAAC,CAAC;IAE9D;AACJ;AACA;IACII,WAAW;IAEX;IACAQ,cAAc;IAEd;IACAC,YAAY;IAEZ;AACJ;AACA;IACIF,WAAW;IAEX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIN,UAAU;IAEV;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIG,iBAAiB;IAEjB;AACJ;AACA;AACA;AACA;IACIM,iBAAiB;IAEjB;AACJ;AACA;AACA;IACII,SAAS;IAET;AACJ;AACA;IACIZ,SAAS;IAET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIP,WAAW;IAEX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIF,cAAc,EAAGoE,MAA6B,IAAK;MACjD,MAAM9B,MAAM,GAAGyB,kBAAkB,CAAC,gBAAgB,CAAC;MAEnD,MAAMM,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTb,SAAS,EAAElB,YAAY,CAACkB,SAAS;QACjCjB,MAAM;QACNkB,cAAc,EAAE;UACd,GAAGnB,YAAY,CAACmB,cAAc;UAC9B,GAAGY,MAAM,CAACZ;QACZ,CAAC;QACDC,cAAc,EAAEW,MAAM,CAACX,cAAc,IAAIpB,YAAY,CAACoB,cAAc;QACpEC,OAAO,EAAEU,MAAM,CAACV,OAAO,IAAIrB,YAAY,CAACqB;MAC1C,CAAC;MAED,OAAO1D,cAAc,CAACqE,YAAY,CAAC;IACrC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI7C,YAAY,EAAG8C,MAAoB,IAAK;MACtCP,kBAAkB,CAAC,cAAc,CAAC;MAClC,OAAOvC,YAAY,CAAC8C,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIlD,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,MAAMmD,EAAE,GAAG,MAAMnD,YAAY,CAAC,CAAC;MAC/B,IAAImD,EAAE,EAAE;QACN9C,eAAe,CAAC+C,QAAQ,CAAC;UACvBC,YAAY,EAAE,IAAI;UAClBC,OAAO,EAAE,IAAI;UACbC,eAAe,EAAEC,SAAS;UAC1BX,kBAAkB,EAAE,KAAK;UACzBY,QAAQ,EAAE,CAAC;UACXC,UAAU,EAAEF;QACd,CAAC,CAAC;MACJ;MACA,OAAOL,EAAE;IACX,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI3D,kBAAkB;IAElB;AACJ;AACA;IACIC,YAAY;IAEZ;AACJ;AACA;IACIU,OAAO;IAEP;AACJ;AACA;IACIL,cAAc;IAEd;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIR,eAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIN;EACF,CAAC;AACH;AASA,OAAO,MAAM2E,UAA4B,GAAG7C,sBAAsB,CAAC,CAAC","ignoreList":[]}