@hot-updater/react-native 0.20.12 → 0.20.14
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.
- package/lib/commonjs/index.js +18 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/store.js +13 -2
- package/lib/commonjs/store.js.map +1 -1
- package/lib/module/index.js +18 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/store.js +13 -2
- package/lib/module/store.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +18 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/store.d.ts +1 -1
- package/lib/typescript/commonjs/store.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +18 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/store.d.ts +1 -1
- package/lib/typescript/module/store.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +18 -0
- package/src/store.ts +18 -3
package/lib/commonjs/index.js
CHANGED
|
@@ -65,6 +65,24 @@ const HotUpdater = exports.HotUpdater = {
|
|
|
65
65
|
* Reloads the app.
|
|
66
66
|
*/
|
|
67
67
|
reload: _native.reload,
|
|
68
|
+
/**
|
|
69
|
+
* Returns whether an update has finished downloading in this app session.
|
|
70
|
+
*
|
|
71
|
+
* When it returns true, calling `HotUpdater.reload()` (or restarting the app)
|
|
72
|
+
* will apply the downloaded update bundle.
|
|
73
|
+
*
|
|
74
|
+
* - Derived from `progress` reaching 1.0
|
|
75
|
+
* - Resets to false when a new download starts (progress < 1)
|
|
76
|
+
*
|
|
77
|
+
* @returns {boolean} True if a downloaded update is ready to apply
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* if (HotUpdater.isUpdateDownloaded()) {
|
|
81
|
+
* await HotUpdater.reload();
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
isUpdateDownloaded: () => _store.hotUpdaterStore.getSnapshot().isUpdateDownloaded,
|
|
68
86
|
/**
|
|
69
87
|
* Fetches the current app version.
|
|
70
88
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_checkForUpdate","require","_native","_runUpdateProcess","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","addListener","progress","hotUpdaterStore","setState","HotUpdater","wrap","reload","getAppVersion","getBundleId","getMinBundleId","getChannel","checkForUpdate","runUpdateProcess","updateBundle","getFingerprintHash"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAUA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAIAI,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,GAAAhB,OAAA;AAMA,IAAAiB,mBAAW,EAAC,YAAY,EAAE,CAAC;EAAEC;AAAS,CAAC,KAAK;EAC1CC,sBAAe,CAACC,QAAQ,CAAC;IACvBF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAMG,UAAU,GAAAT,OAAA,CAAAS,UAAA,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,IAAI,EAAJA,UAAI;EACJ;AACF;AACA;EACEC,MAAM,EAANA,cAAM;EACN;AACF;AACA;EACEC,aAAa,EAAbA,qBAAa;EACb;AACF;AACA;EACEC,WAAW,EAAXA,mBAAW;EACX;AACF;AACA;EACEC,cAAc,EAAdA,sBAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAVA,kBAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"names":["_checkForUpdate","require","_native","_runUpdateProcess","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","addListener","progress","hotUpdaterStore","setState","HotUpdater","wrap","reload","isUpdateDownloaded","getSnapshot","getAppVersion","getBundleId","getMinBundleId","getChannel","checkForUpdate","runUpdateProcess","updateBundle","getFingerprintHash"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAUA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAIAI,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,GAAAhB,OAAA;AAMA,IAAAiB,mBAAW,EAAC,YAAY,EAAE,CAAC;EAAEC;AAAS,CAAC,KAAK;EAC1CC,sBAAe,CAACC,QAAQ,CAAC;IACvBF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAMG,UAAU,GAAAT,OAAA,CAAAS,UAAA,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,IAAI,EAAJA,UAAI;EACJ;AACF;AACA;EACEC,MAAM,EAANA,cAAM;EACN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,kBAAkB,EAAEA,CAAA,KAAML,sBAAe,CAACM,WAAW,CAAC,CAAC,CAACD,kBAAkB;EAC1E;AACF;AACA;EACEE,aAAa,EAAbA,qBAAa;EACb;AACF;AACA;EACEC,WAAW,EAAXA,mBAAW;EACX;AACF;AACA;EACEC,cAAc,EAAdA,sBAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAVA,kBAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEZ,WAAW,EAAXA,mBAAW;EACX;AACF;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;EACEa,cAAc,EAAdA,8BAAc;EACd;AACF;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;EACEC,gBAAgB,EAAhBA,kCAAgB;EAChB;AACF;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;EACEC,YAAY,EAAZA,oBAAY;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,kBAAkB,EAAlBA;AACF,CAAC","ignoreList":[]}
|
package/lib/commonjs/store.js
CHANGED
|
@@ -12,7 +12,7 @@ const {
|
|
|
12
12
|
const createHotUpdaterStore = () => {
|
|
13
13
|
let state = {
|
|
14
14
|
progress: 0,
|
|
15
|
-
|
|
15
|
+
isUpdateDownloaded: false
|
|
16
16
|
};
|
|
17
17
|
const getSnapshot = () => {
|
|
18
18
|
return state;
|
|
@@ -24,10 +24,21 @@ const createHotUpdaterStore = () => {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
const setState = newState => {
|
|
27
|
-
|
|
27
|
+
// Merge first, then normalize derived fields
|
|
28
|
+
const nextState = {
|
|
28
29
|
...state,
|
|
29
30
|
...newState
|
|
30
31
|
};
|
|
32
|
+
|
|
33
|
+
// Derive `isUpdateDownloaded` from `progress` if provided.
|
|
34
|
+
// If `progress` is not provided but `isUpdateDownloaded` is,
|
|
35
|
+
// honor the explicit value.
|
|
36
|
+
if ("progress" in newState && typeof newState.progress === "number") {
|
|
37
|
+
nextState.isUpdateDownloaded = newState.progress >= 1;
|
|
38
|
+
} else if ("isUpdateDownloaded" in newState && typeof newState.isUpdateDownloaded === "boolean") {
|
|
39
|
+
nextState.isUpdateDownloaded = newState.isUpdateDownloaded;
|
|
40
|
+
}
|
|
41
|
+
state = nextState;
|
|
31
42
|
emitChange();
|
|
32
43
|
};
|
|
33
44
|
const subscribe = listener => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_withSelector","_interopRequireDefault","require","e","__esModule","default","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","createHotUpdaterStore","state","progress","
|
|
1
|
+
{"version":3,"names":["_withSelector","_interopRequireDefault","require","e","__esModule","default","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","createHotUpdaterStore","state","progress","isUpdateDownloaded","getSnapshot","listeners","Set","emitChange","listener","setState","newState","nextState","subscribe","add","delete","hotUpdaterStore","exports","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqF,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMrF,MAAM;EAAEG;AAAiC,CAAC,GAAGC,qBAA2B;AAExE,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EAClC,IAAIC,KAAsB,GAAG;IAC3BC,QAAQ,EAAE,CAAC;IACXC,kBAAkB,EAAE;EACtB,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,OAAOH,KAAK;EACd,CAAC;EAED,MAAMI,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EAEvC,MAAMC,UAAU,GAAGA,CAAA,KAAM;IACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;MAChCG,QAAQ,CAAC,CAAC;IACZ;EACF,CAAC;EAED,MAAMC,QAAQ,GAAIC,QAAkC,IAAK;IACvD;IACA,MAAMC,SAA0B,GAAG;MACjC,GAAGV,KAAK;MACR,GAAGS;IACL,CAAC;;IAED;IACA;IACA;IACA,IAAI,UAAU,IAAIA,QAAQ,IAAI,OAAOA,QAAQ,CAACR,QAAQ,KAAK,QAAQ,EAAE;MACnES,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACR,QAAQ,IAAI,CAAC;IACvD,CAAC,MAAM,IACL,oBAAoB,IAAIQ,QAAQ,IAChC,OAAOA,QAAQ,CAACP,kBAAkB,KAAK,SAAS,EAChD;MACAQ,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACP,kBAAkB;IAC5D;IAEAF,KAAK,GAAGU,SAAS;IACjBJ,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMK,SAAS,GAAIJ,QAAoB,IAAK;IAC1CH,SAAS,CAACQ,GAAG,CAACL,QAAQ,CAAC;IACvB,OAAO,MAAMH,SAAS,CAACS,MAAM,CAACN,QAAQ,CAAC;EACzC,CAAC;EAED,OAAO;IAAEJ,WAAW;IAAEK,QAAQ;IAAEG;EAAU,CAAC;AAC7C,CAAC;AAEM,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAGf,qBAAqB,CAAC,CAAC;AAE/C,MAAMiB,kBAAkB,GAAGA,CAChCC,QAA0C,GAAIC,QAAQ,IAAKA,QAAa,KACrE;EACH,OAAOrB,gCAAgC,CACrCiB,eAAe,CAACH,SAAS,EACzBG,eAAe,CAACX,WAAW,EAC3BW,eAAe,CAACX,WAAW,EAC3Bc,QACF,CAAC;AACH,CAAC;AAACF,OAAA,CAAAC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -41,6 +41,24 @@ export const HotUpdater = {
|
|
|
41
41
|
* Reloads the app.
|
|
42
42
|
*/
|
|
43
43
|
reload,
|
|
44
|
+
/**
|
|
45
|
+
* Returns whether an update has finished downloading in this app session.
|
|
46
|
+
*
|
|
47
|
+
* When it returns true, calling `HotUpdater.reload()` (or restarting the app)
|
|
48
|
+
* will apply the downloaded update bundle.
|
|
49
|
+
*
|
|
50
|
+
* - Derived from `progress` reaching 1.0
|
|
51
|
+
* - Resets to false when a new download starts (progress < 1)
|
|
52
|
+
*
|
|
53
|
+
* @returns {boolean} True if a downloaded update is ready to apply
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* if (HotUpdater.isUpdateDownloaded()) {
|
|
57
|
+
* await HotUpdater.reload();
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
isUpdateDownloaded: () => hotUpdaterStore.getSnapshot().isUpdateDownloaded,
|
|
44
62
|
/**
|
|
45
63
|
* Fetches the current app version.
|
|
46
64
|
*/
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["checkForUpdate","addListener","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","reload","updateBundle","runUpdateProcess","hotUpdaterStore","wrap","progress","setState","HotUpdater","getUpdateSource"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SACEC,WAAW,EACXC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,MAAM,EACNC,YAAY,QACP,aAAU;AACjB,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,IAAI,QAAQ,WAAQ;AAG7B,cAAc,YAAS;AAGvBV,WAAW,CAAC,YAAY,EAAE,CAAC;EAAEW;AAAS,CAAC,KAAK;EAC1CF,eAAe,CAACG,QAAQ,CAAC;IACvBD;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,MAAME,UAAU,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,IAAI;EACJ;AACF;AACA;EACEJ,MAAM;EACN;AACF;AACA;
|
|
1
|
+
{"version":3,"names":["checkForUpdate","addListener","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","reload","updateBundle","runUpdateProcess","hotUpdaterStore","wrap","progress","setState","HotUpdater","isUpdateDownloaded","getSnapshot","getUpdateSource"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SACEC,WAAW,EACXC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,MAAM,EACNC,YAAY,QACP,aAAU;AACjB,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,IAAI,QAAQ,WAAQ;AAG7B,cAAc,YAAS;AAGvBV,WAAW,CAAC,YAAY,EAAE,CAAC;EAAEW;AAAS,CAAC,KAAK;EAC1CF,eAAe,CAACG,QAAQ,CAAC;IACvBD;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,MAAME,UAAU,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,IAAI;EACJ;AACF;AACA;EACEJ,MAAM;EACN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEQ,kBAAkB,EAAEA,CAAA,KAAML,eAAe,CAACM,WAAW,CAAC,CAAC,CAACD,kBAAkB;EAC1E;AACF;AACA;EACEb,aAAa;EACb;AACF;AACA;EACEC,WAAW;EACX;AACF;AACA;EACEG,cAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEF,UAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,WAAW;EACX;AACF;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;EACED,cAAc;EACd;AACF;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;EACES,gBAAgB;EAChB;AACF;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;EACED,YAAY;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH;AACF,CAAC;AAED,SAASY,eAAe,QAAQ,qBAAkB","ignoreList":[]}
|
package/lib/module/store.js
CHANGED
|
@@ -7,7 +7,7 @@ const {
|
|
|
7
7
|
const createHotUpdaterStore = () => {
|
|
8
8
|
let state = {
|
|
9
9
|
progress: 0,
|
|
10
|
-
|
|
10
|
+
isUpdateDownloaded: false
|
|
11
11
|
};
|
|
12
12
|
const getSnapshot = () => {
|
|
13
13
|
return state;
|
|
@@ -19,10 +19,21 @@ const createHotUpdaterStore = () => {
|
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
const setState = newState => {
|
|
22
|
-
|
|
22
|
+
// Merge first, then normalize derived fields
|
|
23
|
+
const nextState = {
|
|
23
24
|
...state,
|
|
24
25
|
...newState
|
|
25
26
|
};
|
|
27
|
+
|
|
28
|
+
// Derive `isUpdateDownloaded` from `progress` if provided.
|
|
29
|
+
// If `progress` is not provided but `isUpdateDownloaded` is,
|
|
30
|
+
// honor the explicit value.
|
|
31
|
+
if ("progress" in newState && typeof newState.progress === "number") {
|
|
32
|
+
nextState.isUpdateDownloaded = newState.progress >= 1;
|
|
33
|
+
} else if ("isUpdateDownloaded" in newState && typeof newState.isUpdateDownloaded === "boolean") {
|
|
34
|
+
nextState.isUpdateDownloaded = newState.isUpdateDownloaded;
|
|
35
|
+
}
|
|
36
|
+
state = nextState;
|
|
26
37
|
emitChange();
|
|
27
38
|
};
|
|
28
39
|
const subscribe = listener => {
|
package/lib/module/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSyncExternalStoreExports","useSyncExternalStoreWithSelector","createHotUpdaterStore","state","progress","
|
|
1
|
+
{"version":3,"names":["useSyncExternalStoreExports","useSyncExternalStoreWithSelector","createHotUpdaterStore","state","progress","isUpdateDownloaded","getSnapshot","listeners","Set","emitChange","listener","setState","newState","nextState","subscribe","add","delete","hotUpdaterStore","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;AAAA,OAAOA,2BAA2B,MAAM,4CAA4C;AAMpF,MAAM;EAAEC;AAAiC,CAAC,GAAGD,2BAA2B;AAExE,MAAME,qBAAqB,GAAGA,CAAA,KAAM;EAClC,IAAIC,KAAsB,GAAG;IAC3BC,QAAQ,EAAE,CAAC;IACXC,kBAAkB,EAAE;EACtB,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,OAAOH,KAAK;EACd,CAAC;EAED,MAAMI,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EAEvC,MAAMC,UAAU,GAAGA,CAAA,KAAM;IACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;MAChCG,QAAQ,CAAC,CAAC;IACZ;EACF,CAAC;EAED,MAAMC,QAAQ,GAAIC,QAAkC,IAAK;IACvD;IACA,MAAMC,SAA0B,GAAG;MACjC,GAAGV,KAAK;MACR,GAAGS;IACL,CAAC;;IAED;IACA;IACA;IACA,IAAI,UAAU,IAAIA,QAAQ,IAAI,OAAOA,QAAQ,CAACR,QAAQ,KAAK,QAAQ,EAAE;MACnES,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACR,QAAQ,IAAI,CAAC;IACvD,CAAC,MAAM,IACL,oBAAoB,IAAIQ,QAAQ,IAChC,OAAOA,QAAQ,CAACP,kBAAkB,KAAK,SAAS,EAChD;MACAQ,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACP,kBAAkB;IAC5D;IAEAF,KAAK,GAAGU,SAAS;IACjBJ,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMK,SAAS,GAAIJ,QAAoB,IAAK;IAC1CH,SAAS,CAACQ,GAAG,CAACL,QAAQ,CAAC;IACvB,OAAO,MAAMH,SAAS,CAACS,MAAM,CAACN,QAAQ,CAAC;EACzC,CAAC;EAED,OAAO;IAAEJ,WAAW;IAAEK,QAAQ;IAAEG;EAAU,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMG,eAAe,GAAGf,qBAAqB,CAAC,CAAC;AAEtD,OAAO,MAAMgB,kBAAkB,GAAGA,CAChCC,QAA0C,GAAIC,QAAQ,IAAKA,QAAa,KACrE;EACH,OAAOnB,gCAAgC,CACrCgB,eAAe,CAACH,SAAS,EACzBG,eAAe,CAACX,WAAW,EAC3BW,eAAe,CAACX,WAAW,EAC3Ba,QACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -32,6 +32,24 @@ export declare const HotUpdater: {
|
|
|
32
32
|
* Reloads the app.
|
|
33
33
|
*/
|
|
34
34
|
reload: () => Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Returns whether an update has finished downloading in this app session.
|
|
37
|
+
*
|
|
38
|
+
* When it returns true, calling `HotUpdater.reload()` (or restarting the app)
|
|
39
|
+
* will apply the downloaded update bundle.
|
|
40
|
+
*
|
|
41
|
+
* - Derived from `progress` reaching 1.0
|
|
42
|
+
* - Resets to false when a new download starts (progress < 1)
|
|
43
|
+
*
|
|
44
|
+
* @returns {boolean} True if a downloaded update is ready to apply
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* if (HotUpdater.isUpdateDownloaded()) {
|
|
48
|
+
* await HotUpdater.reload();
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
isUpdateDownloaded: () => boolean;
|
|
35
53
|
/**
|
|
36
54
|
* Fetches the current app version.
|
|
37
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAqDF,eAAO,MAAM,eAAe;;yBA/BE,OAAO,CAAC,eAAe,CAAC;0BAuBvB,MAAM,IAAI;CAQa,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,GAAG,eAAe,EACpD,WAAU,CAAC,QAAQ,EAAE,eAAe,KAAK,CAA+B,MAQzE,CAAC"}
|
|
@@ -32,6 +32,24 @@ export declare const HotUpdater: {
|
|
|
32
32
|
* Reloads the app.
|
|
33
33
|
*/
|
|
34
34
|
reload: () => Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Returns whether an update has finished downloading in this app session.
|
|
37
|
+
*
|
|
38
|
+
* When it returns true, calling `HotUpdater.reload()` (or restarting the app)
|
|
39
|
+
* will apply the downloaded update bundle.
|
|
40
|
+
*
|
|
41
|
+
* - Derived from `progress` reaching 1.0
|
|
42
|
+
* - Resets to false when a new download starts (progress < 1)
|
|
43
|
+
*
|
|
44
|
+
* @returns {boolean} True if a downloaded update is ready to apply
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* if (HotUpdater.isUpdateDownloaded()) {
|
|
48
|
+
* await HotUpdater.reload();
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
isUpdateDownloaded: () => boolean;
|
|
35
53
|
/**
|
|
36
54
|
* Fetches the current app version.
|
|
37
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAqDF,eAAO,MAAM,eAAe;;yBA/BE,OAAO,CAAC,eAAe,CAAC;0BAuBvB,MAAM,IAAI;CAQa,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,GAAG,eAAe,EACpD,WAAU,CAAC,QAAQ,EAAE,eAAe,KAAK,CAA+B,MAQzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hot-updater/react-native",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.14",
|
|
4
4
|
"description": "React Native OTA solution for self-hosted",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -119,13 +119,13 @@
|
|
|
119
119
|
"react-native": "0.79.1",
|
|
120
120
|
"react-native-builder-bob": "^0.40.10",
|
|
121
121
|
"typescript": "^5.8.3",
|
|
122
|
-
"hot-updater": "0.20.
|
|
122
|
+
"hot-updater": "0.20.14"
|
|
123
123
|
},
|
|
124
124
|
"dependencies": {
|
|
125
125
|
"use-sync-external-store": "1.5.0",
|
|
126
|
-
"@hot-updater/core": "0.20.
|
|
127
|
-
"@hot-updater/js": "0.20.
|
|
128
|
-
"@hot-updater/plugin-core": "0.20.
|
|
126
|
+
"@hot-updater/core": "0.20.14",
|
|
127
|
+
"@hot-updater/js": "0.20.14",
|
|
128
|
+
"@hot-updater/plugin-core": "0.20.14"
|
|
129
129
|
},
|
|
130
130
|
"scripts": {
|
|
131
131
|
"build": "bob build && tsc -p plugin/tsconfig.json",
|
package/src/index.ts
CHANGED
|
@@ -51,6 +51,24 @@ export const HotUpdater = {
|
|
|
51
51
|
* Reloads the app.
|
|
52
52
|
*/
|
|
53
53
|
reload,
|
|
54
|
+
/**
|
|
55
|
+
* Returns whether an update has finished downloading in this app session.
|
|
56
|
+
*
|
|
57
|
+
* When it returns true, calling `HotUpdater.reload()` (or restarting the app)
|
|
58
|
+
* will apply the downloaded update bundle.
|
|
59
|
+
*
|
|
60
|
+
* - Derived from `progress` reaching 1.0
|
|
61
|
+
* - Resets to false when a new download starts (progress < 1)
|
|
62
|
+
*
|
|
63
|
+
* @returns {boolean} True if a downloaded update is ready to apply
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* if (HotUpdater.isUpdateDownloaded()) {
|
|
67
|
+
* await HotUpdater.reload();
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
isUpdateDownloaded: () => hotUpdaterStore.getSnapshot().isUpdateDownloaded,
|
|
54
72
|
/**
|
|
55
73
|
* Fetches the current app version.
|
|
56
74
|
*/
|
package/src/store.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import useSyncExternalStoreExports from "use-sync-external-store/shim/with-selector";
|
|
2
2
|
export type HotUpdaterState = {
|
|
3
3
|
progress: number;
|
|
4
|
-
|
|
4
|
+
isUpdateDownloaded: boolean;
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
const { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;
|
|
@@ -9,7 +9,7 @@ const { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;
|
|
|
9
9
|
const createHotUpdaterStore = () => {
|
|
10
10
|
let state: HotUpdaterState = {
|
|
11
11
|
progress: 0,
|
|
12
|
-
|
|
12
|
+
isUpdateDownloaded: false,
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
const getSnapshot = () => {
|
|
@@ -25,10 +25,25 @@ const createHotUpdaterStore = () => {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
const setState = (newState: Partial<HotUpdaterState>) => {
|
|
28
|
-
|
|
28
|
+
// Merge first, then normalize derived fields
|
|
29
|
+
const nextState: HotUpdaterState = {
|
|
29
30
|
...state,
|
|
30
31
|
...newState,
|
|
31
32
|
};
|
|
33
|
+
|
|
34
|
+
// Derive `isUpdateDownloaded` from `progress` if provided.
|
|
35
|
+
// If `progress` is not provided but `isUpdateDownloaded` is,
|
|
36
|
+
// honor the explicit value.
|
|
37
|
+
if ("progress" in newState && typeof newState.progress === "number") {
|
|
38
|
+
nextState.isUpdateDownloaded = newState.progress >= 1;
|
|
39
|
+
} else if (
|
|
40
|
+
"isUpdateDownloaded" in newState &&
|
|
41
|
+
typeof newState.isUpdateDownloaded === "boolean"
|
|
42
|
+
) {
|
|
43
|
+
nextState.isUpdateDownloaded = newState.isUpdateDownloaded;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
state = nextState;
|
|
32
47
|
emitChange();
|
|
33
48
|
};
|
|
34
49
|
|