@hot-updater/react-native 0.24.0 → 0.24.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/lib/commonjs/DefaultResolver.js +38 -0
  2. package/lib/commonjs/DefaultResolver.js.map +1 -0
  3. package/lib/commonjs/checkForUpdate.js +35 -50
  4. package/lib/commonjs/checkForUpdate.js.map +1 -1
  5. package/lib/commonjs/index.js +26 -14
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/types.js +12 -0
  8. package/lib/commonjs/types.js.map +1 -1
  9. package/lib/commonjs/wrap.js +44 -13
  10. package/lib/commonjs/wrap.js.map +1 -1
  11. package/lib/module/DefaultResolver.js +34 -0
  12. package/lib/module/DefaultResolver.js.map +1 -0
  13. package/lib/module/checkForUpdate.js +35 -50
  14. package/lib/module/checkForUpdate.js.map +1 -1
  15. package/lib/module/index.js +26 -14
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/types.js +12 -0
  18. package/lib/module/types.js.map +1 -1
  19. package/lib/module/wrap.js +44 -13
  20. package/lib/module/wrap.js.map +1 -1
  21. package/lib/typescript/commonjs/DefaultResolver.d.ts +10 -0
  22. package/lib/typescript/commonjs/DefaultResolver.d.ts.map +1 -0
  23. package/lib/typescript/commonjs/checkForUpdate.d.ts +2 -1
  24. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/index.d.ts +3 -3
  26. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/types.d.ts +115 -0
  28. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/wrap.d.ts +64 -10
  30. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  31. package/lib/typescript/module/DefaultResolver.d.ts +10 -0
  32. package/lib/typescript/module/DefaultResolver.d.ts.map +1 -0
  33. package/lib/typescript/module/checkForUpdate.d.ts +2 -1
  34. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  35. package/lib/typescript/module/index.d.ts +3 -3
  36. package/lib/typescript/module/index.d.ts.map +1 -1
  37. package/lib/typescript/module/types.d.ts +115 -0
  38. package/lib/typescript/module/types.d.ts.map +1 -1
  39. package/lib/typescript/module/wrap.d.ts +64 -10
  40. package/lib/typescript/module/wrap.d.ts.map +1 -1
  41. package/package.json +7 -7
  42. package/src/DefaultResolver.ts +36 -0
  43. package/src/checkForUpdate.ts +43 -59
  44. package/src/index.ts +51 -19
  45. package/src/types.ts +135 -0
  46. package/src/wrap.tsx +161 -72
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createDefaultResolver = createDefaultResolver;
7
+ var _fetchUpdateInfo = require("./fetchUpdateInfo.js");
8
+ /**
9
+ * Creates a default resolver that uses baseURL for network operations.
10
+ * This encapsulates the existing baseURL logic into a resolver.
11
+ *
12
+ * @param baseURL - The base URL for the update server
13
+ * @returns A HotUpdaterResolver that uses the baseURL
14
+ */
15
+ function createDefaultResolver(baseURL) {
16
+ return {
17
+ checkUpdate: async params => {
18
+ // Build URL based on strategy (existing buildUpdateUrl logic)
19
+ let url;
20
+ if (params.updateStrategy === "fingerprint") {
21
+ if (!params.fingerprintHash) {
22
+ throw new Error("Fingerprint hash is required");
23
+ }
24
+ url = `${baseURL}/fingerprint/${params.platform}/${params.fingerprintHash}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
25
+ } else {
26
+ url = `${baseURL}/app-version/${params.platform}/${params.appVersion}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
27
+ }
28
+
29
+ // Use existing fetchUpdateInfo
30
+ return (0, _fetchUpdateInfo.fetchUpdateInfo)({
31
+ url,
32
+ requestHeaders: params.requestHeaders,
33
+ requestTimeout: params.requestTimeout
34
+ });
35
+ }
36
+ };
37
+ }
38
+ //# sourceMappingURL=DefaultResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_fetchUpdateInfo","require","createDefaultResolver","baseURL","checkUpdate","params","url","updateStrategy","fingerprintHash","Error","platform","channel","minBundleId","bundleId","appVersion","fetchUpdateInfo","requestHeaders","requestTimeout"],"sourceRoot":"../../src","sources":["DefaultResolver.ts"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAACC,OAAe,EAAsB;EACzE,OAAO;IACLC,WAAW,EAAE,MACXC,MAAiC,IACC;MAClC;MACA,IAAIC,GAAW;MACf,IAAID,MAAM,CAACE,cAAc,KAAK,aAAa,EAAE;QAC3C,IAAI,CAACF,MAAM,CAACG,eAAe,EAAE;UAC3B,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;QACjD;QACAH,GAAG,GAAG,GAAGH,OAAO,gBAAgBE,MAAM,CAACK,QAAQ,IAAIL,MAAM,CAACG,eAAe,IAAIH,MAAM,CAACM,OAAO,IAAIN,MAAM,CAACO,WAAW,IAAIP,MAAM,CAACQ,QAAQ,EAAE;MACxI,CAAC,MAAM;QACLP,GAAG,GAAG,GAAGH,OAAO,gBAAgBE,MAAM,CAACK,QAAQ,IAAIL,MAAM,CAACS,UAAU,IAAIT,MAAM,CAACM,OAAO,IAAIN,MAAM,CAACO,WAAW,IAAIP,MAAM,CAACQ,QAAQ,EAAE;MACnI;;MAEA;MACA,OAAO,IAAAE,gCAAe,EAAC;QACrBT,GAAG;QACHU,cAAc,EAAEX,MAAM,CAACW,cAAc;QACrCC,cAAc,EAAEZ,MAAM,CAACY;MACzB,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -6,26 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.checkForUpdate = checkForUpdate;
7
7
  var _reactNative = require("react-native");
8
8
  var _error = require("./error.js");
9
- var _fetchUpdateInfo = require("./fetchUpdateInfo.js");
10
9
  var _native = require("./native.js");
11
- // Internal type that includes baseURL for use within index.ts
10
+ // Internal type that includes resolver for use within index.ts
12
11
 
13
- // Internal function to build update URL (not exported)
14
- function buildUpdateUrl(baseURL, updateStrategy, params) {
15
- switch (updateStrategy) {
16
- case "fingerprint":
17
- {
18
- if (!params.fingerprintHash) {
19
- throw new _error.HotUpdaterError("Fingerprint hash is required");
20
- }
21
- return `${baseURL}/fingerprint/${params.platform}/${params.fingerprintHash}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
22
- }
23
- case "appVersion":
24
- {
25
- return `${baseURL}/app-version/${params.platform}/${params.appVersion}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
26
- }
27
- }
28
- }
29
12
  async function checkForUpdate(options) {
30
13
  if (__DEV__) {
31
14
  return null;
@@ -34,10 +17,6 @@ async function checkForUpdate(options) {
34
17
  options.onError?.(new _error.HotUpdaterError("HotUpdater is only supported on iOS and Android"));
35
18
  return null;
36
19
  }
37
- if (!options.baseURL || !options.updateStrategy) {
38
- options.onError?.(new _error.HotUpdaterError("'baseURL' and 'updateStrategy' are required"));
39
- return null;
40
- }
41
20
  const currentAppVersion = (0, _native.getAppVersion)();
42
21
  const platform = _reactNative.Platform.OS;
43
22
  const currentBundleId = (0, _native.getBundleId)();
@@ -48,34 +27,40 @@ async function checkForUpdate(options) {
48
27
  return null;
49
28
  }
50
29
  const fingerprintHash = (0, _native.getFingerprintHash)();
51
- const url = buildUpdateUrl(options.baseURL, options.updateStrategy, {
52
- platform,
53
- appVersion: currentAppVersion,
54
- fingerprintHash: fingerprintHash ?? null,
55
- channel,
56
- minBundleId,
57
- bundleId: currentBundleId
58
- });
59
- return (0, _fetchUpdateInfo.fetchUpdateInfo)({
60
- url,
61
- requestHeaders: options.requestHeaders,
62
- onError: options.onError,
63
- requestTimeout: options.requestTimeout
64
- }).then(updateInfo => {
65
- if (!updateInfo) {
66
- return null;
30
+ if (!options.resolver?.checkUpdate) {
31
+ options.onError?.(new _error.HotUpdaterError("Resolver is required but not configured"));
32
+ return null;
33
+ }
34
+ let updateInfo = null;
35
+ try {
36
+ updateInfo = await options.resolver.checkUpdate({
37
+ platform,
38
+ appVersion: currentAppVersion,
39
+ bundleId: currentBundleId,
40
+ minBundleId,
41
+ channel,
42
+ updateStrategy: options.updateStrategy,
43
+ fingerprintHash,
44
+ requestHeaders: options.requestHeaders,
45
+ requestTimeout: options.requestTimeout
46
+ });
47
+ } catch (error) {
48
+ options.onError?.(error);
49
+ return null;
50
+ }
51
+ if (!updateInfo) {
52
+ return null;
53
+ }
54
+ return {
55
+ ...updateInfo,
56
+ updateBundle: async () => {
57
+ return (0, _native.updateBundle)({
58
+ bundleId: updateInfo.id,
59
+ fileUrl: updateInfo.fileUrl,
60
+ fileHash: updateInfo.fileHash,
61
+ status: updateInfo.status
62
+ });
67
63
  }
68
- return {
69
- ...updateInfo,
70
- updateBundle: async () => {
71
- return (0, _native.updateBundle)({
72
- bundleId: updateInfo.id,
73
- fileUrl: updateInfo.fileUrl,
74
- fileHash: updateInfo.fileHash,
75
- status: updateInfo.status
76
- });
77
- }
78
- };
79
- });
64
+ };
80
65
  }
81
66
  //# sourceMappingURL=checkForUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_error","_fetchUpdateInfo","_native","buildUpdateUrl","baseURL","updateStrategy","params","fingerprintHash","HotUpdaterError","platform","channel","minBundleId","bundleId","appVersion","checkForUpdate","options","__DEV__","includes","Platform","OS","onError","currentAppVersion","getAppVersion","currentBundleId","getBundleId","getMinBundleId","getChannel","getFingerprintHash","url","fetchUpdateInfo","requestHeaders","requestTimeout","then","updateInfo","updateBundle","id","fileUrl","fileHash","status"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_error","_native","checkForUpdate","options","__DEV__","includes","Platform","OS","onError","HotUpdaterError","currentAppVersion","getAppVersion","platform","currentBundleId","getBundleId","minBundleId","getMinBundleId","channel","getChannel","fingerprintHash","getFingerprintHash","resolver","checkUpdate","updateInfo","appVersion","bundleId","updateStrategy","requestHeaders","requestTimeout","error","updateBundle","id","fileUrl","fileHash","status"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAoCA;;AAKO,eAAeG,cAAcA,CAClCC,OAAsC,EACA;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACC,qBAAQ,CAACC,EAAE,CAAC,EAAE;IAC7CJ,OAAO,CAACK,OAAO,GACb,IAAIC,sBAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMC,iBAAiB,GAAG,IAAAC,qBAAa,EAAC,CAAC;EACzC,MAAMC,QAAQ,GAAGN,qBAAQ,CAACC,EAAuB;EACjD,MAAMM,eAAe,GAAG,IAAAC,mBAAW,EAAC,CAAC;EACrC,MAAMC,WAAW,GAAG,IAAAC,sBAAc,EAAC,CAAC;EACpC,MAAMC,OAAO,GAAG,IAAAC,kBAAU,EAAC,CAAC;EAE5B,IAAI,CAACR,iBAAiB,EAAE;IACtBP,OAAO,CAACK,OAAO,GAAG,IAAIC,sBAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMU,eAAe,GAAG,IAAAC,0BAAkB,EAAC,CAAC;EAE5C,IAAI,CAACjB,OAAO,CAACkB,QAAQ,EAAEC,WAAW,EAAE;IAClCnB,OAAO,CAACK,OAAO,GACb,IAAIC,sBAAe,CAAC,yCAAyC,CAC/D,CAAC;IACD,OAAO,IAAI;EACb;EAEA,IAAIc,UAAgC,GAAG,IAAI;EAE3C,IAAI;IACFA,UAAU,GAAG,MAAMpB,OAAO,CAACkB,QAAQ,CAACC,WAAW,CAAC;MAC9CV,QAAQ;MACRY,UAAU,EAAEd,iBAAiB;MAC7Be,QAAQ,EAAEZ,eAAe;MACzBE,WAAW;MACXE,OAAO;MACPS,cAAc,EAAEvB,OAAO,CAACuB,cAAc;MACtCP,eAAe;MACfQ,cAAc,EAAExB,OAAO,CAACwB,cAAc;MACtCC,cAAc,EAAEzB,OAAO,CAACyB;IAC1B,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;IACd1B,OAAO,CAACK,OAAO,GAAGqB,KAAc,CAAC;IACjC,OAAO,IAAI;EACb;EAEA,IAAI,CAACN,UAAU,EAAE;IACf,OAAO,IAAI;EACb;EAEA,OAAO;IACL,GAAGA,UAAU;IACbO,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,OAAO,IAAAA,oBAAY,EAAC;QAClBL,QAAQ,EAAEF,UAAU,CAACQ,EAAE;QACvBC,OAAO,EAAET,UAAU,CAACS,OAAO;QAC3BC,QAAQ,EAAEV,UAAU,CAACU,QAAQ;QAC7BC,MAAM,EAAEX,UAAU,CAACW;MACrB,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -22,6 +22,7 @@ Object.defineProperty(exports, "isSignatureVerificationError", {
22
22
  }
23
23
  });
24
24
  var _checkForUpdate = require("./checkForUpdate.js");
25
+ var _DefaultResolver = require("./DefaultResolver.js");
25
26
  var _native = require("./native.js");
26
27
  var _store = require("./store.js");
27
28
  Object.keys(_store).forEach(function (key) {
@@ -52,14 +53,14 @@ var _types = require("./types.js");
52
53
  function createHotUpdaterClient() {
53
54
  // Global configuration stored from wrap
54
55
  const globalConfig = {
55
- baseURL: null
56
+ resolver: null
56
57
  };
57
- function ensureGlobalBaseURL(methodName) {
58
- if (globalConfig.baseURL === null) {
58
+ const ensureGlobalResolver = methodName => {
59
+ if (!globalConfig.resolver) {
59
60
  throw new Error(`[HotUpdater] ${methodName} requires HotUpdater.wrap() to be used.\n\n` + `To fix this issue, wrap your root component with HotUpdater.wrap():\n\n` + `Option 1: With automatic updates\n` + ` export default HotUpdater.wrap({\n` + ` baseURL: "<your-update-server-url>",\n` + ` updateStrategy: "appVersion",\n` + ` updateMode: "auto"\n` + ` })(App);\n\n` + `Option 2: Manual updates only (custom flow)\n` + ` export default HotUpdater.wrap({\n` + ` baseURL: "<your-update-server-url>",\n` + ` updateMode: "manual"\n` + ` })(App);\n\n` + `For more information, visit: https://hot-updater.dev/docs/react-native-api/wrap`);
60
61
  }
61
- return globalConfig.baseURL;
62
- }
62
+ return globalConfig.resolver;
63
+ };
63
64
  return {
64
65
  /**
65
66
  * `HotUpdater.wrap` checks for updates at the entry point, and if there is a bundle to update, it downloads the bundle and applies the update strategy.
@@ -86,10 +87,25 @@ function createHotUpdaterClient() {
86
87
  * ```
87
88
  */
88
89
  wrap: options => {
89
- globalConfig.baseURL = options.baseURL;
90
+ let normalizedOptions;
91
+ if ("baseURL" in options && options.baseURL) {
92
+ const {
93
+ baseURL,
94
+ ...rest
95
+ } = options;
96
+ normalizedOptions = {
97
+ ...rest,
98
+ resolver: (0, _DefaultResolver.createDefaultResolver)(baseURL)
99
+ };
100
+ } else if ("resolver" in options && options.resolver) {
101
+ normalizedOptions = options;
102
+ } else {
103
+ throw new Error(`[HotUpdater] Either baseURL or resolver must be provided.\n\n` + `Option 1: Using baseURL (recommended for most cases)\n` + ` export default HotUpdater.wrap({\n` + ` baseURL: "<your-update-server-url>",\n` + ` updateStrategy: "appVersion",\n` + ` updateMode: "auto"\n` + ` })(App);\n\n` + `Option 2: Using custom resolver (advanced)\n` + ` export default HotUpdater.wrap({\n` + ` resolver: {\n` + ` checkUpdate: async (params) => { /* custom logic */ },\n` + ` notifyAppReady: async (params) => { /* custom logic */ }\n` + ` },\n` + ` updateMode: "manual"\n` + ` })(App);\n\n` + `For more information, visit: https://hot-updater.dev/docs/react-native-api/wrap`);
104
+ }
105
+ globalConfig.resolver = normalizedOptions.resolver;
90
106
  globalConfig.requestHeaders = options.requestHeaders;
91
107
  globalConfig.requestTimeout = options.requestTimeout;
92
- return (0, _wrap.wrap)(options);
108
+ return (0, _wrap.wrap)(normalizedOptions);
93
109
  },
94
110
  /**
95
111
  * Reloads the app.
@@ -187,14 +203,10 @@ function createHotUpdaterClient() {
187
203
  * ```
188
204
  */
189
205
  checkForUpdate: config => {
190
- const baseURL = ensureGlobalBaseURL("checkForUpdate");
191
-
192
- // Merge globalConfig with provided config
193
- // baseURL is always from wrap (globalConfig)
194
- // requestHeaders/requestTimeout from wrap are used as defaults, but can be overridden
206
+ const resolver = ensureGlobalResolver("checkForUpdate");
195
207
  const mergedConfig = {
196
208
  ...config,
197
- baseURL,
209
+ resolver,
198
210
  requestHeaders: {
199
211
  ...globalConfig.requestHeaders,
200
212
  ...config.requestHeaders
@@ -237,7 +249,7 @@ function createHotUpdaterClient() {
237
249
  * ```
238
250
  */
239
251
  updateBundle: params => {
240
- ensureGlobalBaseURL("updateBundle");
252
+ ensureGlobalResolver("updateBundle");
241
253
  return (0, _native.updateBundle)(params);
242
254
  },
243
255
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_checkForUpdate","require","_native","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","_types","addListener","progress","hotUpdaterStore","setState","createHotUpdaterClient","globalConfig","baseURL","ensureGlobalBaseURL","methodName","Error","wrap","options","requestHeaders","requestTimeout","reload","isUpdateDownloaded","getSnapshot","getAppVersion","getBundleId","getMinBundleId","getChannel","checkForUpdate","config","mergedConfig","updateBundle","params","getFingerprintHash","getCrashHistory","clearCrashHistory","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAKA,IAAAC,OAAA,GAAAD,OAAA;AAaA,IAAAE,MAAA,GAAAF,OAAA;AAIAG,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAHA,IAAAS,KAAA,GAAAf,OAAA;AAIA,IAAAgB,MAAA,GAAAhB,OAAA;AAOA,IAAAiB,mBAAW,EAAC,YAAY,EAAE,CAAC;EAAEC;AAAS,CAAC,KAAK;EAC1CC,sBAAe,CAACC,QAAQ,CAAC;IACvBF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,SAASG,sBAAsBA,CAAA,EAAG;EAChC;EACA,MAAMC,YAIL,GAAG;IACFC,OAAO,EAAE;EACX,CAAC;EAED,SAASC,mBAAmBA,CAACC,UAAkB,EAAE;IAC/C,IAAIH,YAAY,CAACC,OAAO,KAAK,IAAI,EAAE;MACjC,MAAM,IAAIG,KAAK,CACb,gBAAgBD,UAAU,6CAA6C,GACrE,yEAAyE,GACzE,oCAAoC,GACpC,sCAAsC,GACtC,4CAA4C,GAC5C,qCAAqC,GACrC,0BAA0B,GAC1B,gBAAgB,GAChB,+CAA+C,GAC/C,sCAAsC,GACtC,4CAA4C,GAC5C,4BAA4B,GAC5B,gBAAgB,GAChB,iFACJ,CAAC;IACH;IAEA,OAAOH,YAAY,CAACC,OAAO;EAC7B;EAEA,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACII,IAAI,EAAIC,OAA0B,IAAK;MACrCN,YAAY,CAACC,OAAO,GAAGK,OAAO,CAACL,OAAO;MACtCD,YAAY,CAACO,cAAc,GAAGD,OAAO,CAACC,cAAc;MACpDP,YAAY,CAACQ,cAAc,GAAGF,OAAO,CAACE,cAAc;MACpD,OAAO,IAAAH,UAAI,EAACC,OAAO,CAAC;IACtB,CAAiB;IAEjB;AACJ;AACA;IACIG,MAAM,EAANA,cAAM;IAEN;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,kBAAkB,EAAEA,CAAA,KAAMb,sBAAe,CAACc,WAAW,CAAC,CAAC,CAACD,kBAAkB;IAE1E;AACJ;AACA;IACIE,aAAa,EAAbA,qBAAa;IAEb;AACJ;AACA;IACIC,WAAW,EAAXA,mBAAW;IAEX;AACJ;AACA;IACIC,cAAc,EAAdA,sBAAc;IAEd;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,UAAU,EAAVA,kBAAU;IAEV;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIpB,WAAW,EAAXA,mBAAW;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;IACIqB,cAAc,EAAGC,MAA6B,IAAK;MACjD,MAAMhB,OAAO,GAAGC,mBAAmB,CAAC,gBAAgB,CAAC;;MAErD;MACA;MACA;MACA,MAAMgB,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACThB,OAAO;QACPM,cAAc,EAAE;UACd,GAAGP,YAAY,CAACO,cAAc;UAC9B,GAAGU,MAAM,CAACV;QACZ,CAAC;QACDC,cAAc,EAAES,MAAM,CAACT,cAAc,IAAIR,YAAY,CAACQ;MACxD,CAAC;MAED,OAAO,IAAAQ,8BAAc,EAACE,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;IACIC,YAAY,EAAGC,MAAoB,IAAK;MACtClB,mBAAmB,CAAC,cAAc,CAAC;MAEnC,OAAO,IAAAiB,oBAAY,EAACC,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,kBAAkB,EAAlBA,0BAAkB;IAElB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,eAAe,EAAfA,uBAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,iBAAiB,EAAjBA;EACF,CAAC;AACH;AAEO,MAAMC,UAAU,GAAAnC,OAAA,CAAAmC,UAAA,GAAGzB,sBAAsB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_checkForUpdate","require","_DefaultResolver","_native","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","_types","addListener","progress","hotUpdaterStore","setState","createHotUpdaterClient","globalConfig","resolver","ensureGlobalResolver","methodName","Error","wrap","options","normalizedOptions","baseURL","rest","createDefaultResolver","requestHeaders","requestTimeout","reload","isUpdateDownloaded","getSnapshot","getAppVersion","getBundleId","getMinBundleId","getChannel","checkForUpdate","config","mergedConfig","updateBundle","params","getFingerprintHash","getCrashHistory","clearCrashHistory","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIxB,WAAW,EAAXA,mBAAW;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;IACIyB,cAAc,EAAGC,MAA6B,IAAK;MACjD,MAAMpB,QAAQ,GAAGC,oBAAoB,CAAC,gBAAgB,CAAC;MAEvD,MAAMoB,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTpB,QAAQ;QACRU,cAAc,EAAE;UACd,GAAGX,YAAY,CAACW,cAAc;UAC9B,GAAGU,MAAM,CAACV;QACZ,CAAC;QACDC,cAAc,EAAES,MAAM,CAACT,cAAc,IAAIZ,YAAY,CAACY;MACxD,CAAC;MAED,OAAO,IAAAQ,8BAAc,EAACE,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;IACIC,YAAY,EAAGC,MAAoB,IAAK;MACtCtB,oBAAoB,CAAC,cAAc,CAAC;MACpC,OAAO,IAAAqB,oBAAY,EAACC,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,kBAAkB,EAAlBA,0BAAkB;IAElB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,eAAe,EAAfA,uBAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,iBAAiB,EAAjBA;EACF,CAAC;AACH;AAEO,MAAMC,UAAU,GAAAvC,OAAA,CAAAuC,UAAA,GAAG7B,sBAAsB,CAAC,CAAC","ignoreList":[]}
@@ -5,6 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.extractSignatureFailure = extractSignatureFailure;
7
7
  exports.isSignatureVerificationError = isSignatureVerificationError;
8
+ /**
9
+ * Parameters passed to resolver.checkUpdate method
10
+ */
11
+
12
+ /**
13
+ * Parameters passed to resolver.notifyAppReady method
14
+ */
15
+
16
+ /**
17
+ * Resolver interface for custom network operations
18
+ */
19
+
8
20
  /**
9
21
  * Information about a signature verification failure.
10
22
  * This is a security-critical event that indicates the bundle
@@ -1 +1 @@
1
- {"version":3,"names":["isSignatureVerificationError","error","Error","message","toLowerCase","includes","extractSignatureFailure","bundleId","normalizedError","String"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,4BAA4BA,CAACC,KAAc,EAAW;EACpE,IAAI,EAAEA,KAAK,YAAYC,KAAK,CAAC,EAAE;IAC7B,OAAO,KAAK;EACd;EAEA,MAAMC,OAAO,GAAGF,KAAK,CAACE,OAAO,CAACC,WAAW,CAAC,CAAC;;EAE3C;EACA;EACA,OACED,OAAO,CAACE,QAAQ,CAAC,wBAAwB,CAAC,IAC1CF,OAAO,CAACE,QAAQ,CAAC,2BAA2B,CAAC,IAC7CF,OAAO,CAACE,QAAQ,CAAC,8BAA8B,CAAC,IAChDF,OAAO,CAACE,QAAQ,CAAC,6BAA6B,CAAC,IAC/CF,OAAO,CAACE,QAAQ,CAAC,qCAAqC,CAAC;AAE3D;;AAEA;AACA;AACA;AACO,SAASC,uBAAuBA,CACrCL,KAAc,EACdM,QAAgB,EACc;EAC9B,MAAMC,eAAe,GACnBP,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACO,MAAM,CAACR,KAAK,CAAC,CAAC;EAE3D,OAAO;IACLM,QAAQ;IACRJ,OAAO,EAAEK,eAAe,CAACL,OAAO;IAChCF,KAAK,EAAEO;EACT,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["isSignatureVerificationError","error","Error","message","toLowerCase","includes","extractSignatureFailure","bundleId","normalizedError","String"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;;AAGA;AACA;AACA;;AAgDA;AACA;AACA;;AA0BA;AACA;AACA;;AAoDA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,4BAA4BA,CAACC,KAAc,EAAW;EACpE,IAAI,EAAEA,KAAK,YAAYC,KAAK,CAAC,EAAE;IAC7B,OAAO,KAAK;EACd;EAEA,MAAMC,OAAO,GAAGF,KAAK,CAACE,OAAO,CAACC,WAAW,CAAC,CAAC;;EAE3C;EACA;EACA,OACED,OAAO,CAACE,QAAQ,CAAC,wBAAwB,CAAC,IAC1CF,OAAO,CAACE,QAAQ,CAAC,2BAA2B,CAAC,IAC7CF,OAAO,CAACE,QAAQ,CAAC,8BAA8B,CAAC,IAChDF,OAAO,CAACE,QAAQ,CAAC,6BAA6B,CAAC,IAC/CF,OAAO,CAACE,QAAQ,CAAC,qCAAqC,CAAC;AAE3D;;AAEA;AACA;AACA;AACO,SAASC,uBAAuBA,CACrCL,KAAc,EACdM,QAAgB,EACc;EAC9B,MAAMC,eAAe,GACnBP,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACO,MAAM,CAACR,KAAK,CAAC,CAAC;EAE3D,OAAO;IACLM,QAAQ;IACRJ,OAAO,EAAEK,eAAe,CAACL,OAAO;IAChCF,KAAK,EAAEO;EACT,CAAC;AACH","ignoreList":[]}
@@ -16,17 +16,53 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
16
16
  * Common options shared between auto and manual update modes
17
17
  */
18
18
 
19
+ /**
20
+ * Configuration with baseURL for standard server-based updates
21
+ */
22
+
23
+ /**
24
+ * Configuration with resolver for custom network operations
25
+ */
26
+
27
+ /**
28
+ * Union type ensuring baseURL and resolver are mutually exclusive
29
+ */
30
+
31
+ /**
32
+ * Internal options after normalization in index.ts
33
+ * Always has resolver (never baseURL)
34
+ */
35
+
36
+ /**
37
+ * Helper function to handle notifyAppReady flow
38
+ */
39
+ const handleNotifyAppReady = async options => {
40
+ try {
41
+ // Always call native notifyAppReady for bundle promotion
42
+ const nativeResult = (0, _native.notifyAppReady)();
43
+
44
+ // If resolver.notifyAppReady exists, call it with simplified params
45
+ if (options.resolver?.notifyAppReady) {
46
+ await options.resolver.notifyAppReady({
47
+ status: nativeResult.status,
48
+ crashedBundleId: nativeResult.crashedBundleId,
49
+ requestHeaders: options.requestHeaders,
50
+ requestTimeout: options.requestTimeout
51
+ }).catch(e => {
52
+ console.warn("[HotUpdater] Resolver notifyAppReady failed:", e);
53
+ });
54
+ }
55
+ options.onNotifyAppReady?.(nativeResult);
56
+ } catch (e) {
57
+ console.warn("[HotUpdater] Failed to notify app ready:", e);
58
+ }
59
+ };
19
60
  function wrap(options) {
20
61
  if (options.updateMode === "manual") {
21
62
  return WrappedComponent => {
22
63
  const ManualHOC = props => {
23
64
  (0, _react.useLayoutEffect)(() => {
24
- try {
25
- const result = (0, _native.notifyAppReady)();
26
- options.onNotifyAppReady?.(result);
27
- } catch (e) {
28
- console.warn("[HotUpdater] Failed to notify app ready:", e);
29
- }
65
+ void handleNotifyAppReady(options);
30
66
  }, []);
31
67
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(WrappedComponent, {
32
68
  ...props
@@ -50,7 +86,7 @@ function wrap(options) {
50
86
  try {
51
87
  setUpdateStatus("CHECK_FOR_UPDATE");
52
88
  const updateInfo = await (0, _checkForUpdate.checkForUpdate)({
53
- baseURL: restOptions.baseURL,
89
+ resolver: restOptions.resolver,
54
90
  updateStrategy: restOptions.updateStrategy,
55
91
  requestHeaders: restOptions.requestHeaders,
56
92
  requestTimeout: restOptions.requestTimeout,
@@ -107,12 +143,7 @@ function wrap(options) {
107
143
 
108
144
  // Notify native side that app is ready (JS bundle fully loaded)
109
145
  (0, _react.useLayoutEffect)(() => {
110
- try {
111
- const result = (0, _native.notifyAppReady)();
112
- restOptions.onNotifyAppReady?.(result);
113
- } catch (e) {
114
- console.warn("[HotUpdater] Failed to notify app ready:", e);
115
- }
146
+ void handleNotifyAppReady(restOptions);
116
147
  }, []);
117
148
 
118
149
  // Start update check
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_checkForUpdate","_useEventCallback","_native","_store","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","wrap","options","updateMode","WrappedComponent","ManualHOC","props","useLayoutEffect","result","nativeNotifyAppReady","onNotifyAppReady","console","warn","jsx","reloadOnForceUpdate","restOptions","HotUpdaterHOC","progress","useHotUpdaterStore","state","message","setMessage","useState","updateStatus","setUpdateStatus","initHotUpdater","useEventCallback","updateInfo","checkForUpdate","baseURL","updateStrategy","requestHeaders","requestTimeout","onError","onUpdateProcessCompleted","status","shouldForceUpdate","id","getBundleId","updateBundle","catch","error","isSuccess","Error","reload","useEffect","onProgress","fallbackComponent","Fallback"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_checkForUpdate","_useEventCallback","_native","_store","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","handleNotifyAppReady","options","nativeResult","nativeNotifyAppReady","resolver","notifyAppReady","status","crashedBundleId","requestHeaders","requestTimeout","catch","console","warn","onNotifyAppReady","wrap","updateMode","WrappedComponent","ManualHOC","props","useLayoutEffect","jsx","reloadOnForceUpdate","restOptions","HotUpdaterHOC","progress","useHotUpdaterStore","state","message","setMessage","useState","updateStatus","setUpdateStatus","initHotUpdater","useEventCallback","updateInfo","checkForUpdate","updateStrategy","onError","onUpdateProcessCompleted","shouldForceUpdate","id","getBundleId","updateBundle","error","isSuccess","Error","reload","useEffect","onProgress","fallbackComponent","Fallback"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import { fetchUpdateInfo } from "./fetchUpdateInfo.js";
4
+ /**
5
+ * Creates a default resolver that uses baseURL for network operations.
6
+ * This encapsulates the existing baseURL logic into a resolver.
7
+ *
8
+ * @param baseURL - The base URL for the update server
9
+ * @returns A HotUpdaterResolver that uses the baseURL
10
+ */
11
+ export function createDefaultResolver(baseURL) {
12
+ return {
13
+ checkUpdate: async params => {
14
+ // Build URL based on strategy (existing buildUpdateUrl logic)
15
+ let url;
16
+ if (params.updateStrategy === "fingerprint") {
17
+ if (!params.fingerprintHash) {
18
+ throw new Error("Fingerprint hash is required");
19
+ }
20
+ url = `${baseURL}/fingerprint/${params.platform}/${params.fingerprintHash}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
21
+ } else {
22
+ url = `${baseURL}/app-version/${params.platform}/${params.appVersion}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
23
+ }
24
+
25
+ // Use existing fetchUpdateInfo
26
+ return fetchUpdateInfo({
27
+ url,
28
+ requestHeaders: params.requestHeaders,
29
+ requestTimeout: params.requestTimeout
30
+ });
31
+ }
32
+ };
33
+ }
34
+ //# sourceMappingURL=DefaultResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fetchUpdateInfo","createDefaultResolver","baseURL","checkUpdate","params","url","updateStrategy","fingerprintHash","Error","platform","channel","minBundleId","bundleId","appVersion","requestHeaders","requestTimeout"],"sourceRoot":"../../src","sources":["DefaultResolver.ts"],"mappings":";;AACA,SAASA,eAAe,QAAQ,sBAAmB;AAGnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAACC,OAAe,EAAsB;EACzE,OAAO;IACLC,WAAW,EAAE,MACXC,MAAiC,IACC;MAClC;MACA,IAAIC,GAAW;MACf,IAAID,MAAM,CAACE,cAAc,KAAK,aAAa,EAAE;QAC3C,IAAI,CAACF,MAAM,CAACG,eAAe,EAAE;UAC3B,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;QACjD;QACAH,GAAG,GAAG,GAAGH,OAAO,gBAAgBE,MAAM,CAACK,QAAQ,IAAIL,MAAM,CAACG,eAAe,IAAIH,MAAM,CAACM,OAAO,IAAIN,MAAM,CAACO,WAAW,IAAIP,MAAM,CAACQ,QAAQ,EAAE;MACxI,CAAC,MAAM;QACLP,GAAG,GAAG,GAAGH,OAAO,gBAAgBE,MAAM,CAACK,QAAQ,IAAIL,MAAM,CAACS,UAAU,IAAIT,MAAM,CAACM,OAAO,IAAIN,MAAM,CAACO,WAAW,IAAIP,MAAM,CAACQ,QAAQ,EAAE;MACnI;;MAEA;MACA,OAAOZ,eAAe,CAAC;QACrBK,GAAG;QACHS,cAAc,EAAEV,MAAM,CAACU,cAAc;QACrCC,cAAc,EAAEX,MAAM,CAACW;MACzB,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -2,27 +2,10 @@
2
2
 
3
3
  import { Platform } from "react-native";
4
4
  import { HotUpdaterError } from "./error.js";
5
- import { fetchUpdateInfo } from "./fetchUpdateInfo.js";
6
5
  import { getAppVersion, getBundleId, getChannel, getFingerprintHash, getMinBundleId, updateBundle } from "./native.js";
7
6
 
8
- // Internal type that includes baseURL for use within index.ts
7
+ // Internal type that includes resolver for use within index.ts
9
8
 
10
- // Internal function to build update URL (not exported)
11
- function buildUpdateUrl(baseURL, updateStrategy, params) {
12
- switch (updateStrategy) {
13
- case "fingerprint":
14
- {
15
- if (!params.fingerprintHash) {
16
- throw new HotUpdaterError("Fingerprint hash is required");
17
- }
18
- return `${baseURL}/fingerprint/${params.platform}/${params.fingerprintHash}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
19
- }
20
- case "appVersion":
21
- {
22
- return `${baseURL}/app-version/${params.platform}/${params.appVersion}/${params.channel}/${params.minBundleId}/${params.bundleId}`;
23
- }
24
- }
25
- }
26
9
  export async function checkForUpdate(options) {
27
10
  if (__DEV__) {
28
11
  return null;
@@ -31,10 +14,6 @@ export async function checkForUpdate(options) {
31
14
  options.onError?.(new HotUpdaterError("HotUpdater is only supported on iOS and Android"));
32
15
  return null;
33
16
  }
34
- if (!options.baseURL || !options.updateStrategy) {
35
- options.onError?.(new HotUpdaterError("'baseURL' and 'updateStrategy' are required"));
36
- return null;
37
- }
38
17
  const currentAppVersion = getAppVersion();
39
18
  const platform = Platform.OS;
40
19
  const currentBundleId = getBundleId();
@@ -45,34 +24,40 @@ export async function checkForUpdate(options) {
45
24
  return null;
46
25
  }
47
26
  const fingerprintHash = getFingerprintHash();
48
- const url = buildUpdateUrl(options.baseURL, options.updateStrategy, {
49
- platform,
50
- appVersion: currentAppVersion,
51
- fingerprintHash: fingerprintHash ?? null,
52
- channel,
53
- minBundleId,
54
- bundleId: currentBundleId
55
- });
56
- return fetchUpdateInfo({
57
- url,
58
- requestHeaders: options.requestHeaders,
59
- onError: options.onError,
60
- requestTimeout: options.requestTimeout
61
- }).then(updateInfo => {
62
- if (!updateInfo) {
63
- return null;
27
+ if (!options.resolver?.checkUpdate) {
28
+ options.onError?.(new HotUpdaterError("Resolver is required but not configured"));
29
+ return null;
30
+ }
31
+ let updateInfo = null;
32
+ try {
33
+ updateInfo = await options.resolver.checkUpdate({
34
+ platform,
35
+ appVersion: currentAppVersion,
36
+ bundleId: currentBundleId,
37
+ minBundleId,
38
+ channel,
39
+ updateStrategy: options.updateStrategy,
40
+ fingerprintHash,
41
+ requestHeaders: options.requestHeaders,
42
+ requestTimeout: options.requestTimeout
43
+ });
44
+ } catch (error) {
45
+ options.onError?.(error);
46
+ return null;
47
+ }
48
+ if (!updateInfo) {
49
+ return null;
50
+ }
51
+ return {
52
+ ...updateInfo,
53
+ updateBundle: async () => {
54
+ return updateBundle({
55
+ bundleId: updateInfo.id,
56
+ fileUrl: updateInfo.fileUrl,
57
+ fileHash: updateInfo.fileHash,
58
+ status: updateInfo.status
59
+ });
64
60
  }
65
- return {
66
- ...updateInfo,
67
- updateBundle: async () => {
68
- return updateBundle({
69
- bundleId: updateInfo.id,
70
- fileUrl: updateInfo.fileUrl,
71
- fileHash: updateInfo.fileHash,
72
- status: updateInfo.status
73
- });
74
- }
75
- };
76
- });
61
+ };
77
62
  }
78
63
  //# sourceMappingURL=checkForUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","HotUpdaterError","fetchUpdateInfo","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","updateBundle","buildUpdateUrl","baseURL","updateStrategy","params","fingerprintHash","platform","channel","minBundleId","bundleId","appVersion","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","currentBundleId","url","requestHeaders","requestTimeout","then","updateInfo","id","fileUrl","fileHash","status"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}
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":[]}