@hot-updater/react-native 0.25.14 → 0.26.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 (46) hide show
  1. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +42 -0
  2. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +25 -0
  3. package/android/src/newarch/HotUpdater.kt +4 -1
  4. package/android/src/newarch/HotUpdaterModule.kt +18 -1
  5. package/android/src/newarch/ReactIntegrationManager.kt +9 -1
  6. package/android/src/oldarch/HotUpdater.kt +4 -1
  7. package/android/src/oldarch/HotUpdaterModule.kt +19 -1
  8. package/android/src/oldarch/HotUpdaterSpec.kt +2 -0
  9. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +44 -0
  10. package/ios/HotUpdater/Internal/HotUpdater.mm +17 -0
  11. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +44 -2
  12. package/lib/commonjs/checkForUpdate.js +29 -4
  13. package/lib/commonjs/checkForUpdate.js.map +1 -1
  14. package/lib/commonjs/index.js +35 -0
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/native.js +88 -21
  17. package/lib/commonjs/native.js.map +1 -1
  18. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  19. package/lib/module/checkForUpdate.js +29 -5
  20. package/lib/module/checkForUpdate.js.map +1 -1
  21. package/lib/module/index.js +36 -1
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/native.js +81 -16
  24. package/lib/module/native.js.map +1 -1
  25. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  26. package/lib/typescript/commonjs/checkForUpdate.d.ts +5 -0
  27. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/index.d.ts +26 -0
  29. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/native.d.ts +13 -0
  31. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +8 -0
  33. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  34. package/lib/typescript/module/checkForUpdate.d.ts +5 -0
  35. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  36. package/lib/typescript/module/index.d.ts +26 -0
  37. package/lib/typescript/module/index.d.ts.map +1 -1
  38. package/lib/typescript/module/native.d.ts +13 -0
  39. package/lib/typescript/module/native.d.ts.map +1 -1
  40. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +8 -0
  41. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  42. package/package.json +6 -6
  43. package/src/checkForUpdate.ts +63 -3
  44. package/src/index.ts +41 -0
  45. package/src/native.ts +103 -16
  46. package/src/specs/NativeHotUpdater.ts +9 -0
@@ -10,14 +10,14 @@ Object.defineProperty(exports, "HotUpdaterErrorCode", {
10
10
  return _error.HotUpdaterErrorCode;
11
11
  }
12
12
  });
13
- exports.getMinBundleId = exports.getFingerprintHash = exports.getCrashHistory = exports.getChannel = exports.getBundleId = exports.getBaseURL = exports.getAppVersion = exports.clearCrashHistory = exports.addListener = void 0;
13
+ exports.isChannelSwitched = exports.getMinBundleId = exports.getFingerprintHash = exports.getDefaultChannel = exports.getCrashHistory = exports.getChannel = exports.getBundleId = exports.getBaseURL = exports.getAppVersion = exports.clearCrashHistory = exports.addListener = void 0;
14
14
  Object.defineProperty(exports, "isHotUpdaterError", {
15
15
  enumerable: true,
16
16
  get: function () {
17
17
  return _error.isHotUpdaterError;
18
18
  }
19
19
  });
20
- exports.reload = exports.notifyAppReady = void 0;
20
+ exports.resetChannel = exports.reload = exports.notifyAppReady = void 0;
21
21
  exports.updateBundle = updateBundle;
22
22
  var _reactNative = require("react-native");
23
23
  var _error = require("./error.js");
@@ -27,6 +27,48 @@ const NIL_UUID = "00000000-0000-0000-0000-000000000000";
27
27
  const HotUpdaterConstants = exports.HotUpdaterConstants = {
28
28
  HOT_UPDATER_BUNDLE_ID: __HOT_UPDATER_BUNDLE_ID || NIL_UUID
29
29
  };
30
+ class HotUpdaterSessionState {
31
+ inflightUpdates = new Map();
32
+ lastInstalledBundleId = null;
33
+ constructor() {
34
+ const constants = _NativeHotUpdater.default.getConstants();
35
+ this.defaultChannel = constants.DEFAULT_CHANNEL ?? constants.CHANNEL;
36
+ this.currentChannel = constants.CHANNEL;
37
+ }
38
+ getChannel() {
39
+ return this.currentChannel;
40
+ }
41
+ getDefaultChannel() {
42
+ return this.defaultChannel;
43
+ }
44
+ isChannelSwitched() {
45
+ return this.currentChannel !== this.defaultChannel;
46
+ }
47
+ hasInstalledBundle(bundleId) {
48
+ return this.lastInstalledBundleId === bundleId;
49
+ }
50
+ getInflightUpdate(bundleId) {
51
+ return this.inflightUpdates.get(bundleId);
52
+ }
53
+ trackInflightUpdate(bundleId, promise) {
54
+ this.inflightUpdates.set(bundleId, promise);
55
+ }
56
+ clearInflightUpdate(bundleId) {
57
+ this.inflightUpdates.delete(bundleId);
58
+ }
59
+ markBundleInstalled(bundleId, channel) {
60
+ this.lastInstalledBundleId = bundleId;
61
+ if (channel) {
62
+ this.currentChannel = channel;
63
+ }
64
+ }
65
+ resetChannelState() {
66
+ this.currentChannel = this.defaultChannel;
67
+ this.lastInstalledBundleId = null;
68
+ this.inflightUpdates.clear();
69
+ }
70
+ }
71
+ const sessionState = new HotUpdaterSessionState();
30
72
  const eventEmitter = new _reactNative.NativeEventEmitter(_NativeHotUpdater.default);
31
73
  const addListener = (eventName, listener) => {
32
74
  const subscription = eventEmitter.addListener(eventName, listener);
@@ -34,11 +76,6 @@ const addListener = (eventName, listener) => {
34
76
  subscription.remove();
35
77
  };
36
78
  };
37
- exports.addListener = addListener;
38
- // In-flight update deduplication by bundleId (session-scoped).
39
- const inflightUpdates = new Map();
40
- // Tracks the last successfully installed bundleId for this session.
41
- let lastInstalledBundleId = null;
42
79
 
43
80
  /**
44
81
  * Downloads files and applies them to the app.
@@ -51,43 +88,43 @@ let lastInstalledBundleId = null;
51
88
  /**
52
89
  * @deprecated Use updateBundle(params: UpdateBundleParamsWithStatus) instead
53
90
  */
54
-
91
+ exports.addListener = addListener;
55
92
  async function updateBundle(paramsOrBundleId, fileUrl) {
56
93
  const updateBundleId = typeof paramsOrBundleId === "string" ? paramsOrBundleId : paramsOrBundleId.bundleId;
57
94
  const status = typeof paramsOrBundleId === "string" ? "UPDATE" : paramsOrBundleId.status;
58
95
 
59
96
  // If we have already installed this bundle in this session, skip re-download.
60
- if (status === "UPDATE" && lastInstalledBundleId === updateBundleId) {
97
+ if (status === "UPDATE" && sessionState.hasInstalledBundle(updateBundleId)) {
61
98
  return true;
62
99
  }
63
- const currentBundleId = getBundleId();
64
-
65
- // updateBundleId <= currentBundleId
66
- if (status === "UPDATE" && updateBundleId.localeCompare(currentBundleId) <= 0) {
67
- throw new Error("Update bundle id is the same as the current bundle id. Preventing infinite update loop.");
100
+ const shouldSkipCurrentBundleIdCheck = typeof paramsOrBundleId === "string" ? false : paramsOrBundleId.shouldSkipCurrentBundleIdCheck === true;
101
+ if (!shouldSkipCurrentBundleIdCheck && status === "UPDATE" && updateBundleId.localeCompare(getBundleId()) <= 0) {
102
+ throw new Error("Update bundle id is not newer than the current bundle id. Preventing infinite update loop.");
68
103
  }
69
104
 
70
105
  // In-flight guard: return the same promise if the same bundle is already updating.
71
- const existing = inflightUpdates.get(updateBundleId);
106
+ const existing = sessionState.getInflightUpdate(updateBundleId);
72
107
  if (existing) return existing;
73
108
  const targetFileUrl = typeof paramsOrBundleId === "string" ? fileUrl ?? null : paramsOrBundleId.fileUrl;
74
109
  const targetFileHash = typeof paramsOrBundleId === "string" ? undefined : paramsOrBundleId.fileHash;
110
+ const targetChannel = typeof paramsOrBundleId === "string" ? undefined : paramsOrBundleId.channel;
75
111
  const promise = (async () => {
76
112
  try {
77
113
  const ok = await _NativeHotUpdater.default.updateBundle({
78
114
  bundleId: updateBundleId,
115
+ channel: targetChannel,
79
116
  fileUrl: targetFileUrl,
80
117
  fileHash: targetFileHash ?? null
81
118
  });
82
119
  if (ok) {
83
- lastInstalledBundleId = updateBundleId;
120
+ sessionState.markBundleInstalled(updateBundleId, targetChannel);
84
121
  }
85
122
  return ok;
86
123
  } finally {
87
- inflightUpdates.delete(updateBundleId);
124
+ sessionState.clearInflightUpdate(updateBundleId);
88
125
  }
89
126
  })();
90
- inflightUpdates.set(updateBundleId, promise);
127
+ sessionState.trackInflightUpdate(updateBundleId, promise);
91
128
  return promise;
92
129
  }
93
130
 
@@ -137,8 +174,23 @@ const getBundleId = () => {
137
174
  */
138
175
  exports.getBundleId = getBundleId;
139
176
  const getChannel = () => {
140
- const constants = _NativeHotUpdater.default.getConstants();
141
- return constants.CHANNEL;
177
+ return sessionState.getChannel();
178
+ };
179
+
180
+ /**
181
+ * Fetches the build-time default channel for the app.
182
+ */
183
+ exports.getChannel = getChannel;
184
+ const getDefaultChannel = () => {
185
+ return sessionState.getDefaultChannel();
186
+ };
187
+
188
+ /**
189
+ * Returns whether the app is currently using a runtime channel override.
190
+ */
191
+ exports.getDefaultChannel = getDefaultChannel;
192
+ const isChannelSwitched = () => {
193
+ return sessionState.isChannelSwitched();
142
194
  };
143
195
 
144
196
  /**
@@ -146,7 +198,7 @@ const getChannel = () => {
146
198
  *
147
199
  * @returns {string | null} Resolves with the fingerprint hash
148
200
  */
149
- exports.getChannel = getChannel;
201
+ exports.isChannelSwitched = isChannelSwitched;
150
202
  const getFingerprintHash = () => {
151
203
  const constants = _NativeHotUpdater.default.getConstants();
152
204
  return constants.FINGERPRINT_HASH;
@@ -251,5 +303,20 @@ const getBaseURL = () => {
251
303
  }
252
304
  return null;
253
305
  };
306
+
307
+ /**
308
+ * Clears the runtime channel override and restores the original bundle.
309
+ */
254
310
  exports.getBaseURL = getBaseURL;
311
+ const resetChannel = async () => {
312
+ if (!sessionState.isChannelSwitched()) {
313
+ return true;
314
+ }
315
+ const ok = await _NativeHotUpdater.default.resetChannel();
316
+ if (ok) {
317
+ sessionState.resetChannelState();
318
+ }
319
+ return ok;
320
+ };
321
+ exports.resetChannel = resetChannel;
255
322
  //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_error","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","eventEmitter","NativeEventEmitter","HotUpdaterNative","addListener","eventName","listener","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","targetFileHash","undefined","fileHash","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_error","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","HotUpdaterSessionState","inflightUpdates","Map","lastInstalledBundleId","constructor","constants","HotUpdaterNative","getConstants","defaultChannel","DEFAULT_CHANNEL","CHANNEL","currentChannel","getChannel","getDefaultChannel","isChannelSwitched","hasInstalledBundle","bundleId","getInflightUpdate","get","trackInflightUpdate","promise","set","clearInflightUpdate","delete","markBundleInstalled","channel","resetChannelState","clear","sessionState","eventEmitter","NativeEventEmitter","addListener","eventName","listener","subscription","remove","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","status","shouldSkipCurrentBundleIdCheck","localeCompare","getBundleId","Error","existing","targetFileUrl","targetFileHash","undefined","fileHash","targetChannel","ok","getAppVersion","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL","resetChannel"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAyGpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAkHpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
@@ -2,10 +2,14 @@
2
2
 
3
3
  import { Platform } from "react-native";
4
4
  import { HotUpdaterError } from "./error.js";
5
- import { getAppVersion, getBundleId, getChannel, getFingerprintHash, getMinBundleId, updateBundle } from "./native.js";
5
+ import { getAppVersion, getBundleId, getChannel, getDefaultChannel, getFingerprintHash, getMinBundleId, isChannelSwitched, resetChannel, updateBundle } from "./native.js";
6
+ const NIL_UUID = "00000000-0000-0000-0000-000000000000";
6
7
 
7
8
  // Internal type that includes resolver for use within index.ts
8
9
 
10
+ const isResetToBuiltInResponse = updateInfo => {
11
+ return updateInfo.status === "ROLLBACK" && updateInfo.id === NIL_UUID && updateInfo.fileUrl === null;
12
+ };
9
13
  export async function checkForUpdate(options) {
10
14
  if (__DEV__) {
11
15
  return null;
@@ -18,11 +22,22 @@ export async function checkForUpdate(options) {
18
22
  const platform = Platform.OS;
19
23
  const currentBundleId = getBundleId();
20
24
  const minBundleId = getMinBundleId();
21
- const channel = getChannel();
25
+ const defaultChannel = getDefaultChannel();
26
+ const isSwitched = isChannelSwitched();
27
+ const currentChannel = isSwitched ? getChannel() : defaultChannel;
28
+ const explicitChannel = options.channel || undefined;
29
+ const targetChannel = explicitChannel || currentChannel;
30
+ const isFirstRuntimeChannelSwitchAttempt = !isSwitched && explicitChannel !== undefined && explicitChannel !== defaultChannel;
31
+ const requestBundleId = isFirstRuntimeChannelSwitchAttempt ? minBundleId : currentBundleId;
22
32
  if (!currentAppVersion) {
23
33
  options.onError?.(new HotUpdaterError("Failed to get app version"));
24
34
  return null;
25
35
  }
36
+ if (isSwitched && explicitChannel && explicitChannel !== currentChannel) {
37
+ const error = new HotUpdaterError(`Runtime channel is already switched to "${currentChannel}". Call HotUpdater.resetChannel() before checking "${explicitChannel}".`);
38
+ options.onError?.(error);
39
+ throw error;
40
+ }
26
41
  const fingerprintHash = getFingerprintHash();
27
42
  if (!options.resolver?.checkUpdate) {
28
43
  options.onError?.(new HotUpdaterError("Resolver is required but not configured"));
@@ -33,9 +48,9 @@ export async function checkForUpdate(options) {
33
48
  updateInfo = await options.resolver.checkUpdate({
34
49
  platform,
35
50
  appVersion: currentAppVersion,
36
- bundleId: currentBundleId,
51
+ bundleId: requestBundleId,
37
52
  minBundleId,
38
- channel,
53
+ channel: targetChannel,
39
54
  updateStrategy: options.updateStrategy,
40
55
  fingerprintHash,
41
56
  requestHeaders: options.requestHeaders,
@@ -48,14 +63,23 @@ export async function checkForUpdate(options) {
48
63
  if (!updateInfo) {
49
64
  return null;
50
65
  }
66
+ if (explicitChannel && explicitChannel !== defaultChannel && !isSwitched && updateInfo.status === "ROLLBACK") {
67
+ return null;
68
+ }
51
69
  return {
52
70
  ...updateInfo,
53
71
  updateBundle: async () => {
72
+ if (explicitChannel && isSwitched && isResetToBuiltInResponse(updateInfo)) {
73
+ return resetChannel();
74
+ }
75
+ const runtimeChannel = updateInfo.fileUrl !== null ? targetChannel : undefined;
54
76
  return updateBundle({
55
77
  bundleId: updateInfo.id,
78
+ channel: runtimeChannel,
56
79
  fileUrl: updateInfo.fileUrl,
57
80
  fileHash: updateInfo.fileHash,
58
- status: updateInfo.status
81
+ status: updateInfo.status,
82
+ shouldSkipCurrentBundleIdCheck: isFirstRuntimeChannelSwitchAttempt
59
83
  });
60
84
  }
61
85
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","HotUpdaterError","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","updateBundle","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","platform","currentBundleId","minBundleId","channel","fingerprintHash","resolver","checkUpdate","updateInfo","appVersion","bundleId","updateStrategy","requestHeaders","requestTimeout","error","id","fileUrl","fileHash","status"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAAQ,YAAS;AACzC,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,YAAY,QACP,aAAU;;AA6BjB;;AAKA,OAAO,eAAeC,cAAcA,CAClCC,OAAsC,EACA;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACX,QAAQ,CAACY,EAAE,CAAC,EAAE;IAC7CH,OAAO,CAACI,OAAO,GACb,IAAIZ,eAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMa,iBAAiB,GAAGZ,aAAa,CAAC,CAAC;EACzC,MAAMa,QAAQ,GAAGf,QAAQ,CAACY,EAAuB;EACjD,MAAMI,eAAe,GAAGb,WAAW,CAAC,CAAC;EACrC,MAAMc,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,OAAO,GAAGd,UAAU,CAAC,CAAC;EAE5B,IAAI,CAACU,iBAAiB,EAAE;IACtBL,OAAO,CAACI,OAAO,GAAG,IAAIZ,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMkB,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAE5C,IAAI,CAACI,OAAO,CAACW,QAAQ,EAAEC,WAAW,EAAE;IAClCZ,OAAO,CAACI,OAAO,GACb,IAAIZ,eAAe,CAAC,yCAAyC,CAC/D,CAAC;IACD,OAAO,IAAI;EACb;EAEA,IAAIqB,UAAgC,GAAG,IAAI;EAE3C,IAAI;IACFA,UAAU,GAAG,MAAMb,OAAO,CAACW,QAAQ,CAACC,WAAW,CAAC;MAC9CN,QAAQ;MACRQ,UAAU,EAAET,iBAAiB;MAC7BU,QAAQ,EAAER,eAAe;MACzBC,WAAW;MACXC,OAAO;MACPO,cAAc,EAAEhB,OAAO,CAACgB,cAAc;MACtCN,eAAe;MACfO,cAAc,EAAEjB,OAAO,CAACiB,cAAc;MACtCC,cAAc,EAAElB,OAAO,CAACkB;IAC1B,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdnB,OAAO,CAACI,OAAO,GAAGe,KAAc,CAAC;IACjC,OAAO,IAAI;EACb;EAEA,IAAI,CAACN,UAAU,EAAE;IACf,OAAO,IAAI;EACb;EAEA,OAAO;IACL,GAAGA,UAAU;IACbf,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,OAAOA,YAAY,CAAC;QAClBiB,QAAQ,EAAEF,UAAU,CAACO,EAAE;QACvBC,OAAO,EAAER,UAAU,CAACQ,OAAO;QAC3BC,QAAQ,EAAET,UAAU,CAACS,QAAQ;QAC7BC,MAAM,EAAEV,UAAU,CAACU;MACrB,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["Platform","HotUpdaterError","getAppVersion","getBundleId","getChannel","getDefaultChannel","getFingerprintHash","getMinBundleId","isChannelSwitched","resetChannel","updateBundle","NIL_UUID","isResetToBuiltInResponse","updateInfo","status","id","fileUrl","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","platform","currentBundleId","minBundleId","defaultChannel","isSwitched","currentChannel","explicitChannel","channel","undefined","targetChannel","isFirstRuntimeChannelSwitchAttempt","requestBundleId","error","fingerprintHash","resolver","checkUpdate","appVersion","bundleId","updateStrategy","requestHeaders","requestTimeout","runtimeChannel","fileHash","shouldSkipCurrentBundleIdCheck"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAAQ,YAAS;AACzC,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,iBAAiB,EACjBC,kBAAkB,EAClBC,cAAc,EACdC,iBAAiB,EACjBC,YAAY,EACZC,YAAY,QACP,aAAU;AAGjB,MAAMC,QAAQ,GAAG,sCAAsC;;AAkCvD;;AAKA,MAAMC,wBAAwB,GAAIC,UAAyB,IAAc;EACvE,OACEA,UAAU,CAACC,MAAM,KAAK,UAAU,IAChCD,UAAU,CAACE,EAAE,KAAKJ,QAAQ,IAC1BE,UAAU,CAACG,OAAO,KAAK,IAAI;AAE/B,CAAC;AAED,OAAO,eAAeC,cAAcA,CAClCC,OAAsC,EACA;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACpB,QAAQ,CAACqB,EAAE,CAAC,EAAE;IAC7CH,OAAO,CAACI,OAAO,GACb,IAAIrB,eAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMsB,iBAAiB,GAAGrB,aAAa,CAAC,CAAC;EACzC,MAAMsB,QAAQ,GAAGxB,QAAQ,CAACqB,EAAuB;EACjD,MAAMI,eAAe,GAAGtB,WAAW,CAAC,CAAC;EACrC,MAAMuB,WAAW,GAAGnB,cAAc,CAAC,CAAC;EACpC,MAAMoB,cAAc,GAAGtB,iBAAiB,CAAC,CAAC;EAC1C,MAAMuB,UAAU,GAAGpB,iBAAiB,CAAC,CAAC;EACtC,MAAMqB,cAAc,GAAGD,UAAU,GAAGxB,UAAU,CAAC,CAAC,GAAGuB,cAAc;EACjE,MAAMG,eAAe,GAAGZ,OAAO,CAACa,OAAO,IAAIC,SAAS;EACpD,MAAMC,aAAa,GAAGH,eAAe,IAAID,cAAc;EACvD,MAAMK,kCAAkC,GACtC,CAACN,UAAU,IACXE,eAAe,KAAKE,SAAS,IAC7BF,eAAe,KAAKH,cAAc;EACpC,MAAMQ,eAAe,GAAGD,kCAAkC,GACtDR,WAAW,GACXD,eAAe;EAEnB,IAAI,CAACF,iBAAiB,EAAE;IACtBL,OAAO,CAACI,OAAO,GAAG,IAAIrB,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,IAAI2B,UAAU,IAAIE,eAAe,IAAIA,eAAe,KAAKD,cAAc,EAAE;IACvE,MAAMO,KAAK,GAAG,IAAInC,eAAe,CAC/B,2CAA2C4B,cAAc,sDAAsDC,eAAe,IAChI,CAAC;IACDZ,OAAO,CAACI,OAAO,GAAGc,KAAK,CAAC;IACxB,MAAMA,KAAK;EACb;EAEA,MAAMC,eAAe,GAAG/B,kBAAkB,CAAC,CAAC;EAE5C,IAAI,CAACY,OAAO,CAACoB,QAAQ,EAAEC,WAAW,EAAE;IAClCrB,OAAO,CAACI,OAAO,GACb,IAAIrB,eAAe,CAAC,yCAAyC,CAC/D,CAAC;IACD,OAAO,IAAI;EACb;EAEA,IAAIY,UAAgC,GAAG,IAAI;EAE3C,IAAI;IACFA,UAAU,GAAG,MAAMK,OAAO,CAACoB,QAAQ,CAACC,WAAW,CAAC;MAC9Cf,QAAQ;MACRgB,UAAU,EAAEjB,iBAAiB;MAC7BkB,QAAQ,EAAEN,eAAe;MACzBT,WAAW;MACXK,OAAO,EAAEE,aAAa;MACtBS,cAAc,EAAExB,OAAO,CAACwB,cAAc;MACtCL,eAAe;MACfM,cAAc,EAAEzB,OAAO,CAACyB,cAAc;MACtCC,cAAc,EAAE1B,OAAO,CAAC0B;IAC1B,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOR,KAAK,EAAE;IACdlB,OAAO,CAACI,OAAO,GAAGc,KAAc,CAAC;IACjC,OAAO,IAAI;EACb;EAEA,IAAI,CAACvB,UAAU,EAAE;IACf,OAAO,IAAI;EACb;EAEA,IACEiB,eAAe,IACfA,eAAe,KAAKH,cAAc,IAClC,CAACC,UAAU,IACXf,UAAU,CAACC,MAAM,KAAK,UAAU,EAChC;IACA,OAAO,IAAI;EACb;EAEA,OAAO;IACL,GAAGD,UAAU;IACbH,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,IACEoB,eAAe,IACfF,UAAU,IACVhB,wBAAwB,CAACC,UAAU,CAAC,EACpC;QACA,OAAOJ,YAAY,CAAC,CAAC;MACvB;MAEA,MAAMoC,cAAc,GAClBhC,UAAU,CAACG,OAAO,KAAK,IAAI,GAAGiB,aAAa,GAAGD,SAAS;MAEzD,OAAOtB,YAAY,CAAC;QAClB+B,QAAQ,EAAE5B,UAAU,CAACE,EAAE;QACvBgB,OAAO,EAAEc,cAAc;QACvB7B,OAAO,EAAEH,UAAU,CAACG,OAAO;QAC3B8B,QAAQ,EAAEjC,UAAU,CAACiC,QAAQ;QAC7BhC,MAAM,EAAED,UAAU,CAACC,MAAM;QACzBiC,8BAA8B,EAAEb;MAClC,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { checkForUpdate } from "./checkForUpdate.js";
4
4
  import { createDefaultResolver } from "./DefaultResolver.js";
5
- import { addListener, clearCrashHistory, getAppVersion, getBaseURL, getBundleId, getChannel, getCrashHistory, getFingerprintHash, getMinBundleId, reload, updateBundle } from "./native.js";
5
+ import { addListener, clearCrashHistory, getAppVersion, getBaseURL, getBundleId, getChannel, getCrashHistory, getDefaultChannel, getFingerprintHash, getMinBundleId, isChannelSwitched, reload, resetChannel, updateBundle } from "./native.js";
6
6
  import { hotUpdaterStore } from "./store.js";
7
7
  import { wrap } from "./wrap.js";
8
8
  export * from "./store.js";
@@ -141,6 +141,25 @@ function createHotUpdaterClient() {
141
141
  * ```
142
142
  */
143
143
  getChannel,
144
+ /**
145
+ * Fetches the build-time default channel of the app.
146
+ *
147
+ * This value does not change when a runtime channel override is active.
148
+ *
149
+ * @returns {string} The default release channel embedded in the app
150
+ * @example
151
+ * ```ts
152
+ * const defaultChannel = HotUpdater.getDefaultChannel();
153
+ * console.log(`Default channel: ${defaultChannel}`);
154
+ * ```
155
+ */
156
+ getDefaultChannel,
157
+ /**
158
+ * Returns whether the app is currently using a runtime channel override.
159
+ *
160
+ * @returns {boolean} true when a non-default channel has been applied
161
+ */
162
+ isChannelSwitched,
144
163
  /**
145
164
  * Adds a listener to HotUpdater events.
146
165
  *
@@ -164,6 +183,7 @@ function createHotUpdaterClient() {
164
183
  *
165
184
  * @param {Object} config - Update check configuration
166
185
  * @param {string} config.source - Update server URL
186
+ * @param {string} [config.channel] - Optional channel override for this update check
167
187
  * @param {Record<string, string>} [config.requestHeaders] - Request headers
168
188
  *
169
189
  * @returns {Promise<UpdateInfo | null>} Update information or null if up to date
@@ -238,6 +258,21 @@ function createHotUpdaterClient() {
238
258
  ensureGlobalResolver("updateBundle");
239
259
  return updateBundle(params);
240
260
  },
261
+ /**
262
+ * Clears the runtime channel override and restores the original bundle.
263
+ *
264
+ * @returns {Promise<boolean>} Resolves with true if reset was successful
265
+ */
266
+ resetChannel: async () => {
267
+ const ok = await resetChannel();
268
+ if (ok) {
269
+ hotUpdaterStore.setState({
270
+ isUpdateDownloaded: false,
271
+ progress: 0
272
+ });
273
+ }
274
+ return ok;
275
+ },
241
276
  /**
242
277
  * Fetches the fingerprint of the app.
243
278
  *
@@ -1 +1 @@
1
- {"version":3,"names":["checkForUpdate","createDefaultResolver","addListener","clearCrashHistory","getAppVersion","getBaseURL","getBundleId","getChannel","getCrashHistory","getFingerprintHash","getMinBundleId","reload","updateBundle","hotUpdaterStore","wrap","extractSignatureFailure","isSignatureVerificationError","registerGlobalGetBaseURL","fn","globalThis","HotUpdaterGetBaseURL","global","createHotUpdaterClient","globalConfig","resolver","ensureGlobalResolver","methodName","Error","options","normalizedOptions","baseURL","rest","requestHeaders","requestTimeout","isUpdateDownloaded","getSnapshot","config","mergedConfig","params","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIL,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,EAAGoC,MAA6B,IAAK;MACjD,MAAMZ,QAAQ,GAAGC,oBAAoB,CAAC,gBAAgB,CAAC;MAEvD,MAAMY,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTZ,QAAQ;QACRQ,cAAc,EAAE;UACd,GAAGT,YAAY,CAACS,cAAc;UAC9B,GAAGI,MAAM,CAACJ;QACZ,CAAC;QACDC,cAAc,EAAEG,MAAM,CAACH,cAAc,IAAIV,YAAY,CAACU;MACxD,CAAC;MAED,OAAOjC,cAAc,CAACqC,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;IACIzB,YAAY,EAAG0B,MAAoB,IAAK;MACtCb,oBAAoB,CAAC,cAAc,CAAC;MACpC,OAAOb,YAAY,CAAC0B,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI7B,kBAAkB;IAElB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACID,eAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIL;EACF,CAAC;AACH;AAEA,OAAO,MAAMoC,UAAU,GAAGjB,sBAAsB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["checkForUpdate","createDefaultResolver","addListener","clearCrashHistory","getAppVersion","getBaseURL","getBundleId","getChannel","getCrashHistory","getDefaultChannel","getFingerprintHash","getMinBundleId","isChannelSwitched","reload","resetChannel","updateBundle","hotUpdaterStore","wrap","extractSignatureFailure","isSignatureVerificationError","registerGlobalGetBaseURL","fn","globalThis","HotUpdaterGetBaseURL","global","createHotUpdaterClient","globalConfig","resolver","ensureGlobalResolver","methodName","Error","options","normalizedOptions","baseURL","rest","requestHeaders","requestTimeout","isUpdateDownloaded","getSnapshot","config","mergedConfig","params","ok","setState","progress","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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IACIJ,UAAU;IAEV;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIE,iBAAiB;IAEjB;AACJ;AACA;AACA;AACA;IACIG,iBAAiB;IAEjB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIV,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,EAAGuC,MAA6B,IAAK;MACjD,MAAMZ,QAAQ,GAAGC,oBAAoB,CAAC,gBAAgB,CAAC;MAEvD,MAAMY,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTZ,QAAQ;QACRQ,cAAc,EAAE;UACd,GAAGT,YAAY,CAACS,cAAc;UAC9B,GAAGI,MAAM,CAACJ;QACZ,CAAC;QACDC,cAAc,EAAEG,MAAM,CAACH,cAAc,IAAIV,YAAY,CAACU;MACxD,CAAC;MAED,OAAOpC,cAAc,CAACwC,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;IACIzB,YAAY,EAAG0B,MAAoB,IAAK;MACtCb,oBAAoB,CAAC,cAAc,CAAC;MACpC,OAAOb,YAAY,CAAC0B,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI3B,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,MAAM4B,EAAE,GAAG,MAAM5B,YAAY,CAAC,CAAC;MAC/B,IAAI4B,EAAE,EAAE;QACN1B,eAAe,CAAC2B,QAAQ,CAAC;UACvBN,kBAAkB,EAAE,KAAK;UACzBO,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MACA,OAAOF,EAAE;IACX,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIhC,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;IACIL;EACF,CAAC;AACH;AAEA,OAAO,MAAM0C,UAAU,GAAGpB,sBAAsB,CAAC,CAAC","ignoreList":[]}
@@ -8,6 +8,48 @@ const NIL_UUID = "00000000-0000-0000-0000-000000000000";
8
8
  export const HotUpdaterConstants = {
9
9
  HOT_UPDATER_BUNDLE_ID: __HOT_UPDATER_BUNDLE_ID || NIL_UUID
10
10
  };
11
+ class HotUpdaterSessionState {
12
+ inflightUpdates = new Map();
13
+ lastInstalledBundleId = null;
14
+ constructor() {
15
+ const constants = HotUpdaterNative.getConstants();
16
+ this.defaultChannel = constants.DEFAULT_CHANNEL ?? constants.CHANNEL;
17
+ this.currentChannel = constants.CHANNEL;
18
+ }
19
+ getChannel() {
20
+ return this.currentChannel;
21
+ }
22
+ getDefaultChannel() {
23
+ return this.defaultChannel;
24
+ }
25
+ isChannelSwitched() {
26
+ return this.currentChannel !== this.defaultChannel;
27
+ }
28
+ hasInstalledBundle(bundleId) {
29
+ return this.lastInstalledBundleId === bundleId;
30
+ }
31
+ getInflightUpdate(bundleId) {
32
+ return this.inflightUpdates.get(bundleId);
33
+ }
34
+ trackInflightUpdate(bundleId, promise) {
35
+ this.inflightUpdates.set(bundleId, promise);
36
+ }
37
+ clearInflightUpdate(bundleId) {
38
+ this.inflightUpdates.delete(bundleId);
39
+ }
40
+ markBundleInstalled(bundleId, channel) {
41
+ this.lastInstalledBundleId = bundleId;
42
+ if (channel) {
43
+ this.currentChannel = channel;
44
+ }
45
+ }
46
+ resetChannelState() {
47
+ this.currentChannel = this.defaultChannel;
48
+ this.lastInstalledBundleId = null;
49
+ this.inflightUpdates.clear();
50
+ }
51
+ }
52
+ const sessionState = new HotUpdaterSessionState();
11
53
  const eventEmitter = new NativeEventEmitter(HotUpdaterNative);
12
54
  export const addListener = (eventName, listener) => {
13
55
  const subscription = eventEmitter.addListener(eventName, listener);
@@ -15,10 +57,6 @@ export const addListener = (eventName, listener) => {
15
57
  subscription.remove();
16
58
  };
17
59
  };
18
- // In-flight update deduplication by bundleId (session-scoped).
19
- const inflightUpdates = new Map();
20
- // Tracks the last successfully installed bundleId for this session.
21
- let lastInstalledBundleId = null;
22
60
 
23
61
  /**
24
62
  * Downloads files and applies them to the app.
@@ -37,37 +75,37 @@ export async function updateBundle(paramsOrBundleId, fileUrl) {
37
75
  const status = typeof paramsOrBundleId === "string" ? "UPDATE" : paramsOrBundleId.status;
38
76
 
39
77
  // If we have already installed this bundle in this session, skip re-download.
40
- if (status === "UPDATE" && lastInstalledBundleId === updateBundleId) {
78
+ if (status === "UPDATE" && sessionState.hasInstalledBundle(updateBundleId)) {
41
79
  return true;
42
80
  }
43
- const currentBundleId = getBundleId();
44
-
45
- // updateBundleId <= currentBundleId
46
- if (status === "UPDATE" && updateBundleId.localeCompare(currentBundleId) <= 0) {
47
- throw new Error("Update bundle id is the same as the current bundle id. Preventing infinite update loop.");
81
+ const shouldSkipCurrentBundleIdCheck = typeof paramsOrBundleId === "string" ? false : paramsOrBundleId.shouldSkipCurrentBundleIdCheck === true;
82
+ if (!shouldSkipCurrentBundleIdCheck && status === "UPDATE" && updateBundleId.localeCompare(getBundleId()) <= 0) {
83
+ throw new Error("Update bundle id is not newer than the current bundle id. Preventing infinite update loop.");
48
84
  }
49
85
 
50
86
  // In-flight guard: return the same promise if the same bundle is already updating.
51
- const existing = inflightUpdates.get(updateBundleId);
87
+ const existing = sessionState.getInflightUpdate(updateBundleId);
52
88
  if (existing) return existing;
53
89
  const targetFileUrl = typeof paramsOrBundleId === "string" ? fileUrl ?? null : paramsOrBundleId.fileUrl;
54
90
  const targetFileHash = typeof paramsOrBundleId === "string" ? undefined : paramsOrBundleId.fileHash;
91
+ const targetChannel = typeof paramsOrBundleId === "string" ? undefined : paramsOrBundleId.channel;
55
92
  const promise = (async () => {
56
93
  try {
57
94
  const ok = await HotUpdaterNative.updateBundle({
58
95
  bundleId: updateBundleId,
96
+ channel: targetChannel,
59
97
  fileUrl: targetFileUrl,
60
98
  fileHash: targetFileHash ?? null
61
99
  });
62
100
  if (ok) {
63
- lastInstalledBundleId = updateBundleId;
101
+ sessionState.markBundleInstalled(updateBundleId, targetChannel);
64
102
  }
65
103
  return ok;
66
104
  } finally {
67
- inflightUpdates.delete(updateBundleId);
105
+ sessionState.clearInflightUpdate(updateBundleId);
68
106
  }
69
107
  })();
70
- inflightUpdates.set(updateBundleId, promise);
108
+ sessionState.trackInflightUpdate(updateBundleId, promise);
71
109
  return promise;
72
110
  }
73
111
 
@@ -113,8 +151,21 @@ export const getBundleId = () => {
113
151
  * @returns {string} Resolves with the channel or null if not available.
114
152
  */
115
153
  export const getChannel = () => {
116
- const constants = HotUpdaterNative.getConstants();
117
- return constants.CHANNEL;
154
+ return sessionState.getChannel();
155
+ };
156
+
157
+ /**
158
+ * Fetches the build-time default channel for the app.
159
+ */
160
+ export const getDefaultChannel = () => {
161
+ return sessionState.getDefaultChannel();
162
+ };
163
+
164
+ /**
165
+ * Returns whether the app is currently using a runtime channel override.
166
+ */
167
+ export const isChannelSwitched = () => {
168
+ return sessionState.isChannelSwitched();
118
169
  };
119
170
 
120
171
  /**
@@ -223,4 +274,18 @@ export const getBaseURL = () => {
223
274
  }
224
275
  return null;
225
276
  };
277
+
278
+ /**
279
+ * Clears the runtime channel override and restores the original bundle.
280
+ */
281
+ export const resetChannel = async () => {
282
+ if (!sessionState.isChannelSwitched()) {
283
+ return true;
284
+ }
285
+ const ok = await HotUpdaterNative.resetChannel();
286
+ if (ok) {
287
+ sessionState.resetChannelState();
288
+ }
289
+ return ok;
290
+ };
226
291
  //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","HotUpdaterErrorCode","isHotUpdaterError","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","eventEmitter","addListener","eventName","listener","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","targetFileHash","undefined","fileHash","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","HotUpdaterErrorCode","isHotUpdaterError","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","HotUpdaterSessionState","inflightUpdates","Map","lastInstalledBundleId","constructor","constants","getConstants","defaultChannel","DEFAULT_CHANNEL","CHANNEL","currentChannel","getChannel","getDefaultChannel","isChannelSwitched","hasInstalledBundle","bundleId","getInflightUpdate","get","trackInflightUpdate","promise","set","clearInflightUpdate","delete","markBundleInstalled","channel","resetChannelState","clear","sessionState","eventEmitter","addListener","eventName","listener","subscription","remove","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","status","shouldSkipCurrentBundleIdCheck","localeCompare","getBundleId","Error","existing","targetFileUrl","targetFileHash","undefined","fileHash","targetChannel","ok","getAppVersion","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL","resetChannel"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAyGlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAkHlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
@@ -8,6 +8,11 @@ export interface CheckForUpdateOptions {
8
8
  * - Can override the strategy set in HotUpdater.wrap()
9
9
  */
10
10
  updateStrategy: "appVersion" | "fingerprint";
11
+ /**
12
+ * Override the current channel when checking for updates.
13
+ * The channel switch is only persisted after the returned update is applied.
14
+ */
15
+ channel?: string;
11
16
  requestHeaders?: Record<string, string>;
12
17
  onError?: (error: Error) => void;
13
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAWvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;IAE7C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAGF,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAkEtC"}
1
+ {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAcvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;IAE7C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAGF,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAUD,wBAAsB,cAAc,CAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA2GtC"}