@sigx/lynx-updates 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,235 +1,235 @@
1
- package com.sigx.updates
2
-
3
- import android.content.Context
4
- import android.os.Handler
5
- import android.os.Looper
6
- import android.util.Log
7
- import com.lynx.jsbridge.LynxMethod
8
- import com.lynx.jsbridge.LynxModule
9
- import com.lynx.react.bridge.Callback
10
- import com.lynx.react.bridge.JavaOnlyMap
11
- import com.lynx.react.bridge.ReadableMap
12
- import com.lynx.tasm.TemplateData
13
- import org.json.JSONObject
14
- import java.io.File
15
- import java.util.concurrent.Executors
16
-
17
- /**
18
- * JS bridge for OTA updates.
19
- * JS usage: NativeModules.Updates.downloadUpdate({...}, callback)
20
- *
21
- * Downloads run on a single-thread executor (single-flight is also enforced
22
- * in [UpdateDownloader]); everything else is cheap file/state work.
23
- */
24
- class UpdatesModule(context: Context) : LynxModule(context) {
25
-
26
- companion object {
27
- private const val TAG = "SigxUpdates"
28
- private val executor = Executors.newSingleThreadExecutor { r ->
29
- Thread(r, "sigx-updates").apply { isDaemon = true }
30
- }
31
- private val mainHandler = Handler(Looper.getMainLooper())
32
- }
33
-
34
- private fun error(message: String, code: String? = null): JavaOnlyMap {
35
- val map = JavaOnlyMap()
36
- map.putString("error", message)
37
- if (code != null) map.putString("code", code)
38
- return map
39
- }
40
-
41
- private fun ok(): JavaOnlyMap {
42
- val map = JavaOnlyMap()
43
- map.putBoolean("ok", true)
44
- return map
45
- }
46
-
47
- @LynxMethod
48
- fun getInstalledRuntimeVersion(): String {
49
- return UpdateStore.installedRuntimeVersion(mContext)
50
- }
51
-
52
- @LynxMethod
53
- fun getPlatform(): String = "android"
54
-
55
- @LynxMethod
56
- fun getCurrentUpdate(callback: Callback?) {
57
- try {
58
- val map = JavaOnlyMap()
59
- val updateId = UpdateStore.launchedUpdateId
60
- if (updateId != null) {
61
- map.putString("updateId", updateId)
62
- map.putBoolean("isEmbedded", false)
63
- val metaFile = UpdateStore.updateJsonFile(mContext, updateId)
64
- if (metaFile.exists()) {
65
- try {
66
- val meta = JSONObject(metaFile.readText())
67
- map.putString("version", meta.optString("version"))
68
- } catch (_: Exception) { /* metadata is best-effort */ }
69
- }
70
- } else {
71
- map.putBoolean("isEmbedded", true)
72
- }
73
- map.putString("runtimeVersion", UpdateStore.installedRuntimeVersion(mContext))
74
- // Store-shipped app version — providers receive it as
75
- // UpdateCheckContext.embeddedVersion.
76
- val versionName = runCatching {
77
- mContext.packageManager.getPackageInfo(mContext.packageName, 0).versionName
78
- }.getOrNull()
79
- map.putString("embeddedVersion", versionName ?: "")
80
- map.putBoolean("isFirstLaunchAfterUpdate", UpdateStore.isFirstLaunchAfterUpdate)
81
- map.putBoolean("didRollBack", UpdateStore.didRollBack)
82
- UpdateStore.rolledBackUpdateId?.let { map.putString("rolledBackUpdateId", it) }
83
- callback?.invoke(map)
84
- } catch (e: Exception) {
85
- callback?.invoke(error(e.message ?: "getCurrentUpdate failed"))
86
- }
87
- }
88
-
89
- @LynxMethod
90
- fun getState(callback: Callback?) {
91
- try {
92
- val state = UpdateStore.readState(mContext)
93
- val map = JavaOnlyMap()
94
- if (state != null) {
95
- map.putString("currentUpdateId", state.currentUpdateId ?: "")
96
- map.putString("previousUpdateId", state.previousUpdateId ?: "")
97
- map.putString("pendingUpdateId", state.pendingUpdateId ?: "")
98
- map.putInt("pendingLaunchAttempts", state.pendingLaunchAttempts)
99
- map.putInt("maxLaunchAttempts", state.maxLaunchAttempts)
100
- map.putString("lastRollbackUpdateId", state.lastRollbackUpdateId ?: "")
101
- map.putString("lastRollbackReason", state.lastRollbackReason ?: "")
102
- }
103
- map.putString("runningUpdateId", UpdateStore.launchedUpdateId ?: "")
104
- callback?.invoke(map)
105
- } catch (e: Exception) {
106
- callback?.invoke(error(e.message ?: "getState failed"))
107
- }
108
- }
109
-
110
- @LynxMethod
111
- fun downloadUpdate(params: ReadableMap?, callback: Callback?) {
112
- val url = params?.getString("url")
113
- val sha256 = params?.getString("sha256")
114
- val updateId = params?.getString("updateId")
115
- val runtimeVersion = params?.getString("runtimeVersion")
116
- val manifestJson = try { params?.getString("manifestJson") } catch (_: Exception) { null }
117
- if (url.isNullOrEmpty() || sha256.isNullOrEmpty() || updateId.isNullOrEmpty()) {
118
- callback?.invoke(error("url, sha256 and updateId are required"))
119
- return
120
- }
121
-
122
- // Refuse incompatible bundles at the door — defense in depth on top
123
- // of the JS-side check.
124
- val installed = UpdateStore.installedRuntimeVersion(mContext)
125
- if (!runtimeVersion.isNullOrEmpty() && runtimeVersion != installed) {
126
- callback?.invoke(error(
127
- "Update requires runtime $runtimeVersion but binary is $installed",
128
- "E_RUNTIME_MISMATCH",
129
- ))
130
- return
131
- }
132
-
133
- val headers = mutableMapOf<String, String>()
134
- try {
135
- val headerMap = params.getMap("headers")
136
- if (headerMap != null) {
137
- val it = headerMap.keySetIterator()
138
- while (it.hasNextKey()) {
139
- val key = it.nextKey()
140
- headerMap.getString(key)?.let { v -> headers[key] = v }
141
- }
142
- }
143
- } catch (_: Exception) { /* headers optional */ }
144
-
145
- executor.execute {
146
- val result = UpdateDownloader.download(
147
- mContext, url, sha256, updateId, headers, manifestJson ?: "{}")
148
- if (result == null) {
149
- callback?.invoke(ok())
150
- } else {
151
- val code = when {
152
- result.startsWith("E_DOWNLOAD_IN_PROGRESS") -> "E_DOWNLOAD_IN_PROGRESS"
153
- result.startsWith("E_HASH_MISMATCH") -> "hash-mismatch"
154
- else -> null
155
- }
156
- callback?.invoke(error(result, code))
157
- }
158
- }
159
- }
160
-
161
- @LynxMethod
162
- fun applyOnNextLaunch(updateId: String?, callback: Callback?) {
163
- if (updateId.isNullOrEmpty()) {
164
- callback?.invoke(error("updateId is required"))
165
- return
166
- }
167
- val result = UpdateStore.stagePending(mContext, updateId)
168
- callback?.invoke(if (result == null) ok() else error(result))
169
- }
170
-
171
- @LynxMethod
172
- fun applyNow(updateId: String?, callback: Callback?) {
173
- if (updateId.isNullOrEmpty()) {
174
- callback?.invoke(error("updateId is required"))
175
- return
176
- }
177
- val bundle = UpdateStore.bundleFile(mContext, updateId)
178
- if (!bundle.exists()) {
179
- callback?.invoke(error("Update $updateId is not on disk"))
180
- return
181
- }
182
- val view = UpdateStore.currentView()
183
- if (view == null) {
184
- callback?.invoke(error("No LynxView attached — cannot reload in place", "E_NO_VIEW"))
185
- return
186
- }
187
- // Stage first so a crash mid-reload still gets crash-guarded rollback
188
- // (the reload bypasses the startup resolver).
189
- UpdateStore.stagePending(mContext, updateId)
190
- UpdateStore.recordReloadAttempt(mContext, updateId)
191
- mainHandler.post {
192
- try {
193
- val bytes = File(bundle.absolutePath).readBytes()
194
- view.reloadAndInit()
195
- view.renderTemplateWithBaseUrl(bytes, TemplateData.empty(), "file://${bundle.absolutePath}")
196
- // JS context is replaced — the callback never reaches the old
197
- // context on success, which is the documented contract.
198
- } catch (e: Exception) {
199
- Log.e(TAG, "applyNow reload failed: ${e.message}")
200
- callback?.invoke(error(e.message ?: "Reload failed", "apply-failed"))
201
- }
202
- }
203
- }
204
-
205
- @LynxMethod
206
- fun markReady(callback: Callback?) {
207
- try {
208
- UpdateStore.markReady(mContext)
209
- callback?.invoke(ok())
210
- } catch (e: Exception) {
211
- callback?.invoke(error(e.message ?: "markReady failed"))
212
- }
213
- }
214
-
215
- @LynxMethod
216
- fun setRollbackOptions(params: ReadableMap?, callback: Callback?) {
217
- try {
218
- val max = params?.getInt("maxFailedLaunches") ?: 2
219
- UpdateStore.setMaxLaunchAttempts(mContext, max)
220
- callback?.invoke(ok())
221
- } catch (e: Exception) {
222
- callback?.invoke(error(e.message ?: "setRollbackOptions failed"))
223
- }
224
- }
225
-
226
- @LynxMethod
227
- fun clearUpdates(callback: Callback?) {
228
- try {
229
- UpdateStore.clearAll(mContext)
230
- callback?.invoke(ok())
231
- } catch (e: Exception) {
232
- callback?.invoke(error(e.message ?: "clearUpdates failed"))
233
- }
234
- }
235
- }
1
+ package com.sigx.updates
2
+
3
+ import android.content.Context
4
+ import android.os.Handler
5
+ import android.os.Looper
6
+ import android.util.Log
7
+ import com.lynx.jsbridge.LynxMethod
8
+ import com.lynx.jsbridge.LynxModule
9
+ import com.lynx.react.bridge.Callback
10
+ import com.lynx.react.bridge.JavaOnlyMap
11
+ import com.lynx.react.bridge.ReadableMap
12
+ import com.lynx.tasm.TemplateData
13
+ import org.json.JSONObject
14
+ import java.io.File
15
+ import java.util.concurrent.Executors
16
+
17
+ /**
18
+ * JS bridge for OTA updates.
19
+ * JS usage: NativeModules.Updates.downloadUpdate({...}, callback)
20
+ *
21
+ * Downloads run on a single-thread executor (single-flight is also enforced
22
+ * in [UpdateDownloader]); everything else is cheap file/state work.
23
+ */
24
+ class UpdatesModule(context: Context) : LynxModule(context) {
25
+
26
+ companion object {
27
+ private const val TAG = "SigxUpdates"
28
+ private val executor = Executors.newSingleThreadExecutor { r ->
29
+ Thread(r, "sigx-updates").apply { isDaemon = true }
30
+ }
31
+ private val mainHandler = Handler(Looper.getMainLooper())
32
+ }
33
+
34
+ private fun error(message: String, code: String? = null): JavaOnlyMap {
35
+ val map = JavaOnlyMap()
36
+ map.putString("error", message)
37
+ if (code != null) map.putString("code", code)
38
+ return map
39
+ }
40
+
41
+ private fun ok(): JavaOnlyMap {
42
+ val map = JavaOnlyMap()
43
+ map.putBoolean("ok", true)
44
+ return map
45
+ }
46
+
47
+ @LynxMethod
48
+ fun getInstalledRuntimeVersion(): String {
49
+ return UpdateStore.installedRuntimeVersion(mContext)
50
+ }
51
+
52
+ @LynxMethod
53
+ fun getPlatform(): String = "android"
54
+
55
+ @LynxMethod
56
+ fun getCurrentUpdate(callback: Callback?) {
57
+ try {
58
+ val map = JavaOnlyMap()
59
+ val updateId = UpdateStore.launchedUpdateId
60
+ if (updateId != null) {
61
+ map.putString("updateId", updateId)
62
+ map.putBoolean("isEmbedded", false)
63
+ val metaFile = UpdateStore.updateJsonFile(mContext, updateId)
64
+ if (metaFile.exists()) {
65
+ try {
66
+ val meta = JSONObject(metaFile.readText())
67
+ map.putString("version", meta.optString("version"))
68
+ } catch (_: Exception) { /* metadata is best-effort */ }
69
+ }
70
+ } else {
71
+ map.putBoolean("isEmbedded", true)
72
+ }
73
+ map.putString("runtimeVersion", UpdateStore.installedRuntimeVersion(mContext))
74
+ // Store-shipped app version — providers receive it as
75
+ // UpdateCheckContext.embeddedVersion.
76
+ val versionName = runCatching {
77
+ mContext.packageManager.getPackageInfo(mContext.packageName, 0).versionName
78
+ }.getOrNull()
79
+ map.putString("embeddedVersion", versionName ?: "")
80
+ map.putBoolean("isFirstLaunchAfterUpdate", UpdateStore.isFirstLaunchAfterUpdate)
81
+ map.putBoolean("didRollBack", UpdateStore.didRollBack)
82
+ UpdateStore.rolledBackUpdateId?.let { map.putString("rolledBackUpdateId", it) }
83
+ callback?.invoke(map)
84
+ } catch (e: Exception) {
85
+ callback?.invoke(error(e.message ?: "getCurrentUpdate failed"))
86
+ }
87
+ }
88
+
89
+ @LynxMethod
90
+ fun getState(callback: Callback?) {
91
+ try {
92
+ val state = UpdateStore.readState(mContext)
93
+ val map = JavaOnlyMap()
94
+ if (state != null) {
95
+ map.putString("currentUpdateId", state.currentUpdateId ?: "")
96
+ map.putString("previousUpdateId", state.previousUpdateId ?: "")
97
+ map.putString("pendingUpdateId", state.pendingUpdateId ?: "")
98
+ map.putInt("pendingLaunchAttempts", state.pendingLaunchAttempts)
99
+ map.putInt("maxLaunchAttempts", state.maxLaunchAttempts)
100
+ map.putString("lastRollbackUpdateId", state.lastRollbackUpdateId ?: "")
101
+ map.putString("lastRollbackReason", state.lastRollbackReason ?: "")
102
+ }
103
+ map.putString("runningUpdateId", UpdateStore.launchedUpdateId ?: "")
104
+ callback?.invoke(map)
105
+ } catch (e: Exception) {
106
+ callback?.invoke(error(e.message ?: "getState failed"))
107
+ }
108
+ }
109
+
110
+ @LynxMethod
111
+ fun downloadUpdate(params: ReadableMap?, callback: Callback?) {
112
+ val url = params?.getString("url")
113
+ val sha256 = params?.getString("sha256")
114
+ val updateId = params?.getString("updateId")
115
+ val runtimeVersion = params?.getString("runtimeVersion")
116
+ val manifestJson = try { params?.getString("manifestJson") } catch (_: Exception) { null }
117
+ if (url.isNullOrEmpty() || sha256.isNullOrEmpty() || updateId.isNullOrEmpty()) {
118
+ callback?.invoke(error("url, sha256 and updateId are required"))
119
+ return
120
+ }
121
+
122
+ // Refuse incompatible bundles at the door — defense in depth on top
123
+ // of the JS-side check.
124
+ val installed = UpdateStore.installedRuntimeVersion(mContext)
125
+ if (!runtimeVersion.isNullOrEmpty() && runtimeVersion != installed) {
126
+ callback?.invoke(error(
127
+ "Update requires runtime $runtimeVersion but binary is $installed",
128
+ "E_RUNTIME_MISMATCH",
129
+ ))
130
+ return
131
+ }
132
+
133
+ val headers = mutableMapOf<String, String>()
134
+ try {
135
+ val headerMap = params.getMap("headers")
136
+ if (headerMap != null) {
137
+ val it = headerMap.keySetIterator()
138
+ while (it.hasNextKey()) {
139
+ val key = it.nextKey()
140
+ headerMap.getString(key)?.let { v -> headers[key] = v }
141
+ }
142
+ }
143
+ } catch (_: Exception) { /* headers optional */ }
144
+
145
+ executor.execute {
146
+ val result = UpdateDownloader.download(
147
+ mContext, url, sha256, updateId, headers, manifestJson ?: "{}")
148
+ if (result == null) {
149
+ callback?.invoke(ok())
150
+ } else {
151
+ val code = when {
152
+ result.startsWith("E_DOWNLOAD_IN_PROGRESS") -> "E_DOWNLOAD_IN_PROGRESS"
153
+ result.startsWith("E_HASH_MISMATCH") -> "hash-mismatch"
154
+ else -> null
155
+ }
156
+ callback?.invoke(error(result, code))
157
+ }
158
+ }
159
+ }
160
+
161
+ @LynxMethod
162
+ fun applyOnNextLaunch(updateId: String?, callback: Callback?) {
163
+ if (updateId.isNullOrEmpty()) {
164
+ callback?.invoke(error("updateId is required"))
165
+ return
166
+ }
167
+ val result = UpdateStore.stagePending(mContext, updateId)
168
+ callback?.invoke(if (result == null) ok() else error(result))
169
+ }
170
+
171
+ @LynxMethod
172
+ fun applyNow(updateId: String?, callback: Callback?) {
173
+ if (updateId.isNullOrEmpty()) {
174
+ callback?.invoke(error("updateId is required"))
175
+ return
176
+ }
177
+ val bundle = UpdateStore.bundleFile(mContext, updateId)
178
+ if (!bundle.exists()) {
179
+ callback?.invoke(error("Update $updateId is not on disk"))
180
+ return
181
+ }
182
+ val view = UpdateStore.currentView()
183
+ if (view == null) {
184
+ callback?.invoke(error("No LynxView attached — cannot reload in place", "E_NO_VIEW"))
185
+ return
186
+ }
187
+ // Stage first so a crash mid-reload still gets crash-guarded rollback
188
+ // (the reload bypasses the startup resolver).
189
+ UpdateStore.stagePending(mContext, updateId)
190
+ UpdateStore.recordReloadAttempt(mContext, updateId)
191
+ mainHandler.post {
192
+ try {
193
+ val bytes = File(bundle.absolutePath).readBytes()
194
+ view.reloadAndInit()
195
+ view.renderTemplateWithBaseUrl(bytes, TemplateData.empty(), "file://${bundle.absolutePath}")
196
+ // JS context is replaced — the callback never reaches the old
197
+ // context on success, which is the documented contract.
198
+ } catch (e: Exception) {
199
+ Log.e(TAG, "applyNow reload failed: ${e.message}")
200
+ callback?.invoke(error(e.message ?: "Reload failed", "apply-failed"))
201
+ }
202
+ }
203
+ }
204
+
205
+ @LynxMethod
206
+ fun markReady(callback: Callback?) {
207
+ try {
208
+ UpdateStore.markReady(mContext)
209
+ callback?.invoke(ok())
210
+ } catch (e: Exception) {
211
+ callback?.invoke(error(e.message ?: "markReady failed"))
212
+ }
213
+ }
214
+
215
+ @LynxMethod
216
+ fun setRollbackOptions(params: ReadableMap?, callback: Callback?) {
217
+ try {
218
+ val max = params?.getInt("maxFailedLaunches") ?: 2
219
+ UpdateStore.setMaxLaunchAttempts(mContext, max)
220
+ callback?.invoke(ok())
221
+ } catch (e: Exception) {
222
+ callback?.invoke(error(e.message ?: "setRollbackOptions failed"))
223
+ }
224
+ }
225
+
226
+ @LynxMethod
227
+ fun clearUpdates(callback: Callback?) {
228
+ try {
229
+ UpdateStore.clearAll(mContext)
230
+ callback?.invoke(ok())
231
+ } catch (e: Exception) {
232
+ callback?.invoke(error(e.message ?: "clearUpdates failed"))
233
+ }
234
+ }
235
+ }
@@ -27,7 +27,7 @@ let downloadInFlightId = null;
27
27
  let bootstrapScheduled = false;
28
28
  function requireConfig() {
29
29
  if (!config) {
30
- throw new UpdatesError('not-configured', 'Call Updates.configure() before using the Updates API');
30
+ throw new UpdatesError('not-configured', 'Call defineUpdates() before using the Updates API');
31
31
  }
32
32
  return config;
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACH,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACH,YAAY,GAOf,MAAM,YAAY,CAAC;AAEpB,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAWpC,IAAI,MAAM,GAAiC,IAAI,CAAC;AAChD,IAAI,iBAAiB,GAAwB,IAAI,CAAC;AAClD,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,IAAI,aAAa,GAAsC,IAAI,CAAC;AAC5D,IAAI,gBAAgB,GAAyB,IAAI,CAAC;AAClD,IAAI,kBAAkB,GAAkB,IAAI,CAAC;AAC7C,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,SAAS,aAAa;IAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,uDAAuD,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB;IACxB,IAAI,iBAAiB;QAAE,OAAO;IAC9B,iBAAiB,GAAG,IAAI,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;AAClG,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,SAAS,CAAC,GAAkB;IACxC,MAAM,QAAQ,GACV,gBAAgB,IAAI,GAAG,CAAC,QAAQ;QAC5B,CAAC,CAAC,GAAG,CAAC,QAAQ;QACd,CAAC,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,GAAG;QACL,QAAQ;QACR,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,YAAY,EAAE;QACtC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,QAAQ;QAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC;QAClC,cAAc,EAAE,GAAG,CAAC,cAAc,KAAK,KAAK;QAC5C,aAAa,EAAE,GAAG,CAAC,aAAa,KAAK,KAAK;KAC7C,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACrB,mBAAmB,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,kEAAkE;IAClE,iBAAiB,EAAE,EAAE,CAAC;IACtB,iBAAiB,GAAG,wBAAwB,CAAC,CAAC,KAAK,EAAE,EAAE;QACnD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5B,8DAA8D;YAC9D,kDAAkD;YAClD,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa;gBAAE,OAAO;YAC3C,MAAM,QAAQ,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YACtF,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,OAAO;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACrG,8DAA8D;YAC9D,iEAAiE;YACjE,8DAA8D;YAC9D,eAAe;YACf,IAAI,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACpF,OAAO;YACX,CAAC;YACD,KAAK,qBAAqB,EAAE,CAAC;QACjC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAChD,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACnE,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qEAAqE;IACrE,iEAAiE;IACjE,oEAAoE;IACpE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,kBAAkB,GAAG,IAAI,CAAC;QAC1B,UAAU,CAAC,GAAG,EAAE;YACZ,KAAK,SAAS,EAAE,CAAC;QACrB,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS;IACpB,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAE5B,mEAAmE;IACnE,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACzC,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACjC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,kBAAkB,IAAI,SAAS,EAAE,CAAC,CAAC;QACxF,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,qEAAqE;IACrE,kCAAkC;IAClC,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACpB,IAAI,CAAC;YACD,MAAM,eAAe,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,qBAAqB,EAAE,CAAC;IAClC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAA0B;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACvC,OAAO;QACH,QAAQ,EAAE,WAAW,EAAE;QACvB,cAAc,EAAE,0BAA0B,EAAE;QAC5C,eAAe,EAAE,OAAO,CAAC,QAAQ;QACjC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;KACvB,CAAC;AACN,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAC1B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAEpD,4DAA4D;YAC5D,iEAAiE;YACjE,gCAAgC;YAChC,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;gBAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc,EAAE,CAAC;gBACxD,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YACjE,CAAC;YAED,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,YAAY;oBACb,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;oBAC5B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACtB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,cAAc;oBACf,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;oBAC9B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACjC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAChE,MAAM;gBACV,KAAK,kBAAkB;oBACnB,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;oBAC3B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACjC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC7D,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;wBAClD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;wBACvB,qDAAqD;wBACrD,sDAAsD;wBACtD,qDAAqD;wBACrD,KAAK,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACJ,qDAAqD;wBACrD,oDAAoD;wBACpD,gDAAgD;wBAChD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC5B,CAAC;oBACD,MAAM;YACd,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,GAAG,YAAY,YAAY;gBACrC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,GAAI,GAAa,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YAC5E,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;YACvB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,aAAa,GAAG,IAAI,CAAC;QACzB,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAyB;IACpD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,qDAAqD,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACnB,qEAAqE;QACrE,gDAAgD;QAChD,IAAI,kBAAkB,KAAK,MAAM,CAAC,EAAE;YAAE,OAAO,gBAAgB,CAAC;QAC9D,MAAM,IAAI,YAAY,CAClB,sBAAsB,EACtB,sBAAsB,kBAAkB,kCAAkC,MAAM,CAAC,EAAE,EAAE,CACxF,CAAC;IACN,CAAC;IAED,qEAAqE;IACrE,kDAAkD;IAClD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,IAAI,YAAY,CAClB,kBAAkB,EAClB,UAAU,MAAM,CAAC,EAAE,qBAAqB,MAAM,CAAC,cAAc,oBAAoB,GAAG,CAAC,cAAc,8BAA8B,CACpI,CAAC;IACN,CAAC;IAED,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;QAC3B,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACxB,KAAK,CAAC,QAAQ,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACxD,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC;YACD,MAAM,IAAI,GAAiB,GAAG,CAAC,QAAQ,CAAC,eAAe;gBACnD,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC;gBACjD,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACvD,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACrF,iEAAiE;YACjE,6DAA6D;YAC7D,MAAM,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;YACvB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,GAAG,YAAY,YAAY;gBACrC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,YAAY,CAAC,iBAAiB,EAAE,GAAI,GAAa,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YAC/E,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;YACvB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,gBAAgB,GAAG,IAAI,CAAC;YACxB,kBAAkB,GAAG,IAAI,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,KAAK;IACvB,aAAa,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,gEAAgE,CAAC,CAAC;IAC7G,CAAC;IACD,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3B,IAAI,CAAC;QACD,wEAAwE;QACxE,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,GAAG,YAAY,YAAY;YACrC,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,GAAI,GAAa,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5E,oEAAoE;QACpE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QACvB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,iEAAiE;AACjE,KAAK,UAAU,oBAAoB,CAAC,MAAsB;IACtD,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,KAAK,EAAE,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACL,qDAAqD;IACzD,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACvC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,MAAyB,CAAC;IAC9B,IAAI,CAAC;QACD,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,oCAAoC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO;IAC/C,mEAAmE;IACnE,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc;QAAE,OAAO;IAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO;IAElC,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO;IACX,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,MAAM,KAAK,EAAE,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,+DAA+D;QACnE,CAAC;IACL,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,MAAM,eAAe,EAAE,CAAC;AAC5B,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,kBAAkB,EAAE,CAAC;AAC/B,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,eAAe;IAC3B,MAAM,GAAG,IAAI,CAAC;IACd,iBAAiB,EAAE,EAAE,CAAC;IACtB,iBAAiB,GAAG,IAAI,CAAC;IACzB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,aAAa,GAAG,IAAI,CAAC;IACrB,gBAAgB,GAAG,IAAI,CAAC;IACxB,kBAAkB,GAAG,IAAI,CAAC;IAC1B,kBAAkB,GAAG,KAAK,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { Updates } from './updates.js';
1
+ export { defineUpdates, Updates } from './updates.js';
2
2
  export { useUpdates } from './use-updates.js';
3
3
  export { StaticManifestProvider, validateUpdatesManifest, type StaticManifestDocument, type StaticManifestEntry, type StaticManifestProviderOptions, } from './provider/static-manifest.js';
4
4
  export { UpdatesError, type UpdatesErrorCode, type CurrentUpdateInfo, type DownloadProgress, type DownloadSpec, type UpdateCheckContext, type UpdateCheckResult, type UpdateManifest, type UpdateMode, type UpdatePlatform, type UpdateProvider, type UpdatesConfig, type UpdatesEvent, type UpdatesState, type UpdateStatus, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,GACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,GACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GACpB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Updates } from './updates.js';
1
+ export { defineUpdates, Updates } from './updates.js';
2
2
  export { useUpdates } from './use-updates.js';
3
3
  export { StaticManifestProvider, validateUpdatesManifest, } from './provider/static-manifest.js';
4
4
  export { UpdatesError, } from './types.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,uBAAuB,GAI1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,YAAY,GAef,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,uBAAuB,GAI1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,YAAY,GAef,MAAM,YAAY,CAAC"}
package/dist/types.d.ts CHANGED
@@ -179,7 +179,7 @@ export interface UpdatesConfig {
179
179
  honorMandatory?: boolean;
180
180
  /**
181
181
  * true (default): `markReady()` is called automatically shortly after
182
- * `configure()` — "JS booted" is the health bar for rollback. Set false
182
+ * `defineUpdates()` — "JS booted" is the health bar for rollback. Set false
183
183
  * to gate on your own signal (first screen rendered, critical fetch OK)
184
184
  * and call `Updates.markReady()` yourself.
185
185
  */
package/dist/updates.d.ts CHANGED
@@ -1,17 +1,26 @@
1
1
  /**
2
- * Public `Updates` API — a thin facade over the controller, the store and
3
- * the native module. See the package README for usage.
2
+ * Public API — `defineUpdates()` (the boot-time declaration, in the
3
+ * `defineApp`/`defineRoutes` family) and the `Updates` runtime object (a
4
+ * thin facade over the controller, the store and the native module, in the
5
+ * `Haptics`/`Storage` native-module family). See the package README.
4
6
  */
5
7
  import type { CurrentUpdateInfo, UpdateCheckResult, UpdateManifest, UpdatesConfig, UpdatesEvent, UpdatesState } from './types.js';
8
+ /**
9
+ * Declare the OTA update behavior for this app. Call once in `main.tsx`
10
+ * before `defineApp` — idempotent and synchronous; re-declaring updates the
11
+ * config but never re-runs the boot work (markReady / launch check).
12
+ * Kicks off the configured mode's automatic behavior on a deferred task
13
+ * (never blocks first paint). No-ops gracefully (with one warning) when the
14
+ * native module is absent (web preview, tests).
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * defineUpdates({ provider: { url: 'https://cdn.example.com/updates.json' } });
19
+ * defineApp(<App />).mount(null);
20
+ * ```
21
+ */
22
+ export declare function defineUpdates(config: UpdatesConfig): void;
6
23
  export declare const Updates: {
7
- /**
8
- * Configure the updates client. Idempotent and synchronous; must run
9
- * before any other call — typically in `main.tsx` before `defineApp`.
10
- * Kicks off the configured mode's automatic behavior on a deferred task
11
- * (never blocks first paint). No-ops gracefully (with one warning) when
12
- * the native module is absent (web preview, tests).
13
- */
14
- readonly configure: (config: UpdatesConfig) => void;
15
24
  /** Ask the provider for the best available update. Works in every mode. */
16
25
  readonly checkForUpdate: () => Promise<UpdateCheckResult>;
17
26
  /**
@@ -27,7 +36,7 @@ export declare const Updates: {
27
36
  readonly apply: () => Promise<void>;
28
37
  /**
29
38
  * Health signal: commits the pending update so native stops counting
30
- * launch attempts against it. Called automatically after configure()
39
+ * launch attempts against it. Called automatically after defineUpdates()
31
40
  * unless `autoMarkReady: false`. Safe to call repeatedly.
32
41
  */
33
42
  readonly markReady: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,OAAO;IAChB;;;;;;OAMG;aACH,SAAS,WAAS,aAAa,KAAG,IAAI;IAItC,2EAA2E;aAC3E,cAAc,QAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C;;;OAGG;aACH,QAAQ,cAAY,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;;OAIG;aACH,KAAK,QAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;aACH,SAAS,QAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,uEAAuE;aACvE,mBAAmB,QAAI,OAAO,CAAC,iBAAiB,CAAC;IAIjD,0EAA0E;aAC1E,YAAY,QAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,6EAA6E;aAC7E,QAAQ,QAAI,YAAY;IAIxB,uEAAuE;aACvE,WAAW,OAAK,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,KAAG,MAAM,IAAI;IAI1D,sEAAsE;aACtE,WAAW,QAAI,OAAO;CAGhB,CAAC"}
1
+ {"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEzD;AAED,eAAO,MAAM,OAAO;IAChB,2EAA2E;aAC3E,cAAc,QAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C;;;OAGG;aACH,QAAQ,cAAY,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;;OAIG;aACH,KAAK,QAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;aACH,SAAS,QAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,uEAAuE;aACvE,mBAAmB,QAAI,OAAO,CAAC,iBAAiB,CAAC;IAIjD,0EAA0E;aAC1E,YAAY,QAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,6EAA6E;aAC7E,QAAQ,QAAI,YAAY;IAIxB,uEAAuE;aACvE,WAAW,OAAK,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,KAAG,MAAM,IAAI;IAI1D,sEAAsE;aACtE,WAAW,QAAI,OAAO;CAGhB,CAAC"}