@sigx/lynx-updates 0.7.0 → 0.8.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.
- package/LICENSE +21 -21
- package/README.md +199 -162
- package/android/com/sigx/updates/UpdateDownloader.kt +154 -154
- package/android/com/sigx/updates/UpdateStore.kt +367 -367
- package/android/com/sigx/updates/UpdatesActivityHook.kt +25 -25
- package/android/com/sigx/updates/UpdatesBundleResolver.kt +18 -18
- package/android/com/sigx/updates/UpdatesEventBus.kt +54 -54
- package/android/com/sigx/updates/UpdatesLifecyclePublisher.kt +42 -42
- package/android/com/sigx/updates/UpdatesModule.kt +235 -235
- package/dist/controller.js +1 -1
- package/dist/controller.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +4 -2
- package/dist/native.js.map +1 -1
- package/dist/provider/static-manifest.d.ts +41 -10
- package/dist/provider/static-manifest.d.ts.map +1 -1
- package/dist/provider/static-manifest.js +39 -5
- package/dist/provider/static-manifest.js.map +1 -1
- package/dist/types.d.ts +6 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/updates.d.ts +11 -20
- package/dist/updates.d.ts.map +1 -1
- package/dist/updates.js +13 -22
- package/dist/updates.js.map +1 -1
- package/ios/UpdateDownloader.swift +152 -152
- package/ios/UpdateStore.swift +286 -286
- package/ios/UpdatesBundleResolver.swift +15 -15
- package/ios/UpdatesEventBus.swift +59 -59
- package/ios/UpdatesLifecyclePublisher.swift +48 -48
- package/ios/UpdatesModule.swift +178 -178
- package/package.json +3 -3
- package/signalx-module.json +35 -35
|
@@ -25,8 +25,21 @@
|
|
|
25
25
|
* `sigx updates:publish` emits this document; relative `bundleUrl`s resolve
|
|
26
26
|
* against the manifest URL so the output directory can be dropped onto any
|
|
27
27
|
* static host unchanged.
|
|
28
|
+
*
|
|
29
|
+
* Self-hosted / authenticated backends are supported without writing a custom
|
|
30
|
+
* provider: `url` may be an async resolver (compute the endpoint from runtime
|
|
31
|
+
* context discovered after launch — sign-in, environment selection), and
|
|
32
|
+
* `onBeforeCheck` / `onBeforeDownload` inject fresh per-request headers (a
|
|
33
|
+
* short-lived bearer token refreshed each call) on top of the static `headers`.
|
|
28
34
|
*/
|
|
29
|
-
import { type UpdateCheckContext, type UpdateCheckResult, type UpdateManifest, type UpdateProvider } from '../types.js';
|
|
35
|
+
import { type DownloadSpec, type UpdateCheckContext, type UpdateCheckResult, type UpdateManifest, type UpdateProvider } from '../types.js';
|
|
36
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
37
|
+
type HeadersMap = Record<string, string>;
|
|
38
|
+
/** A resolved manifest endpoint: the URL, optionally with endpoint-specific headers. */
|
|
39
|
+
export interface ManifestEndpoint {
|
|
40
|
+
url: string;
|
|
41
|
+
headers?: HeadersMap;
|
|
42
|
+
}
|
|
30
43
|
export interface StaticManifestEntry extends Omit<UpdateManifest, 'id' | 'mandatory'> {
|
|
31
44
|
id?: string;
|
|
32
45
|
mandatory?: boolean;
|
|
@@ -40,10 +53,29 @@ export interface StaticManifestDocument {
|
|
|
40
53
|
updates: StaticManifestEntry[];
|
|
41
54
|
}
|
|
42
55
|
export interface StaticManifestProviderOptions {
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Manifest JSON location. Either:
|
|
58
|
+
* - a static absolute URL, or
|
|
59
|
+
* - an async resolver invoked before every check — return the URL (or
|
|
60
|
+
* `{ url, headers }`) computed from `ctx`. Use this when the backend host
|
|
61
|
+
* isn't known until after launch (sign-in, environment selection,
|
|
62
|
+
* per-deployment configuration). Relative `bundleUrl`s in the manifest
|
|
63
|
+
* resolve against whichever URL the resolver returned for that check.
|
|
64
|
+
*/
|
|
65
|
+
url: string | ((ctx: UpdateCheckContext) => MaybePromise<string | ManifestEndpoint>);
|
|
66
|
+
/** Static headers, merged into every manifest request AND bundle download. */
|
|
67
|
+
headers?: HeadersMap;
|
|
68
|
+
/**
|
|
69
|
+
* Per-check auth hook. Returned headers are merged over `headers` (and over
|
|
70
|
+
* any headers from the `url` resolver) for the manifest request — inject a
|
|
71
|
+
* fresh short-lived token here and refresh it inside the hook on expiry.
|
|
72
|
+
*/
|
|
73
|
+
onBeforeCheck?: (ctx: UpdateCheckContext) => MaybePromise<HeadersMap>;
|
|
74
|
+
/**
|
|
75
|
+
* Per-download auth hook. Returned headers are merged over `headers` for the
|
|
76
|
+
* bundle download (a separate, often longer-lived request than the check).
|
|
77
|
+
*/
|
|
78
|
+
onBeforeDownload?: (manifest: UpdateManifest, ctx: UpdateCheckContext) => MaybePromise<HeadersMap>;
|
|
47
79
|
/** Injectable fetch for tests. Defaults to `globalThis.fetch`. */
|
|
48
80
|
fetchImpl?: typeof globalThis.fetch;
|
|
49
81
|
}
|
|
@@ -56,11 +88,10 @@ export declare class StaticManifestProvider implements UpdateProvider {
|
|
|
56
88
|
private readonly options;
|
|
57
89
|
readonly name = "static-manifest";
|
|
58
90
|
constructor(options: StaticManifestProviderOptions);
|
|
91
|
+
/** Resolve the manifest URL (+ optional endpoint headers) for this check. */
|
|
92
|
+
private resolveEndpoint;
|
|
59
93
|
checkForUpdate(ctx: UpdateCheckContext): Promise<UpdateCheckResult>;
|
|
60
|
-
resolveDownload(manifest: UpdateManifest): Promise<
|
|
61
|
-
url: string;
|
|
62
|
-
sha256: string;
|
|
63
|
-
headers: Record<string, string> | undefined;
|
|
64
|
-
}>;
|
|
94
|
+
resolveDownload(manifest: UpdateManifest, ctx: UpdateCheckContext): Promise<DownloadSpec>;
|
|
65
95
|
}
|
|
96
|
+
export {};
|
|
66
97
|
//# sourceMappingURL=static-manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-manifest.d.ts","sourceRoot":"","sources":["../../src/provider/static-manifest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"static-manifest.d.ts","sourceRoot":"","sources":["../../src/provider/static-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAEH,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,cAAc,EACtB,MAAM,aAAa,CAAC;AAErB,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,CAAC;IACjF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC1C;;;;;;;;OAQG;IACH,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,kBAAkB,KAAK,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IACrF,8EAA8E;IAC9E,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;IACtE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,kBAAkB,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;IACnG,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAwC9D;AAmDD,qBAAa,sBAAuB,YAAW,cAAc;IAG7C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,qBAAqB;IAElC,YAA6B,OAAO,EAAE,6BAA6B,EAAI;IAEvE,6EAA6E;YAC/D,eAAe;IAYvB,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwDxE;IAEK,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAM9F;CACJ"}
|
|
@@ -25,6 +25,12 @@
|
|
|
25
25
|
* `sigx updates:publish` emits this document; relative `bundleUrl`s resolve
|
|
26
26
|
* against the manifest URL so the output directory can be dropped onto any
|
|
27
27
|
* static host unchanged.
|
|
28
|
+
*
|
|
29
|
+
* Self-hosted / authenticated backends are supported without writing a custom
|
|
30
|
+
* provider: `url` may be an async resolver (compute the endpoint from runtime
|
|
31
|
+
* context discovered after launch — sign-in, environment selection), and
|
|
32
|
+
* `onBeforeCheck` / `onBeforeDownload` inject fresh per-request headers (a
|
|
33
|
+
* short-lived bearer token refreshed each call) on top of the static `headers`.
|
|
28
34
|
*/
|
|
29
35
|
import { UpdatesError, } from '../types.js';
|
|
30
36
|
/**
|
|
@@ -98,6 +104,15 @@ function toManifest(entry, manifestUrl) {
|
|
|
98
104
|
metadata: entry.metadata,
|
|
99
105
|
};
|
|
100
106
|
}
|
|
107
|
+
/** Merge header maps left-to-right (later wins); undefined when the result is empty. */
|
|
108
|
+
function mergeHeaders(...parts) {
|
|
109
|
+
const out = {};
|
|
110
|
+
for (const part of parts) {
|
|
111
|
+
if (part)
|
|
112
|
+
Object.assign(out, part);
|
|
113
|
+
}
|
|
114
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
115
|
+
}
|
|
101
116
|
/** Newest entry wins: by createdAt when present, else last in array order. */
|
|
102
117
|
function newest(entries) {
|
|
103
118
|
if (entries.length === 0)
|
|
@@ -120,14 +135,33 @@ export class StaticManifestProvider {
|
|
|
120
135
|
this.options = options;
|
|
121
136
|
this.name = 'static-manifest';
|
|
122
137
|
}
|
|
138
|
+
/** Resolve the manifest URL (+ optional endpoint headers) for this check. */
|
|
139
|
+
async resolveEndpoint(ctx) {
|
|
140
|
+
const { url } = this.options;
|
|
141
|
+
const resolved = typeof url === 'function' ? await url(ctx) : url;
|
|
142
|
+
if (typeof resolved === 'string')
|
|
143
|
+
return { url: resolved };
|
|
144
|
+
if (resolved && typeof resolved === 'object' && typeof resolved.url === 'string') {
|
|
145
|
+
return resolved;
|
|
146
|
+
}
|
|
147
|
+
// A misbehaving resolver would otherwise throw an opaque TypeError —
|
|
148
|
+
// surface a clear, actionable error instead.
|
|
149
|
+
throw new UpdatesError('check-failed', 'Manifest `url` resolver must return a string or { url: string }');
|
|
150
|
+
}
|
|
123
151
|
async checkForUpdate(ctx) {
|
|
124
152
|
const fetchImpl = this.options.fetchImpl ?? globalThis.fetch;
|
|
125
153
|
if (typeof fetchImpl !== 'function') {
|
|
126
154
|
throw new UpdatesError('check-failed', 'No fetch implementation available — import @sigx/lynx (or @sigx/lynx-http) before checking for updates');
|
|
127
155
|
}
|
|
128
156
|
let doc;
|
|
157
|
+
// Assigned inside the try before any throw the catch re-raises, so it is
|
|
158
|
+
// always set by the time selection runs below.
|
|
159
|
+
let manifestUrl;
|
|
129
160
|
try {
|
|
130
|
-
const
|
|
161
|
+
const endpoint = await this.resolveEndpoint(ctx);
|
|
162
|
+
manifestUrl = endpoint.url;
|
|
163
|
+
const headers = mergeHeaders(this.options.headers, endpoint.headers, await this.options.onBeforeCheck?.(ctx));
|
|
164
|
+
const res = await fetchImpl(endpoint.url, { headers });
|
|
131
165
|
if (!res.ok) {
|
|
132
166
|
throw new UpdatesError('check-failed', `Manifest request failed: HTTP ${res.status}`);
|
|
133
167
|
}
|
|
@@ -148,7 +182,7 @@ export class StaticManifestProvider {
|
|
|
148
182
|
const compatible = candidates.filter((e) => e.runtimeVersion === ctx.runtimeVersion);
|
|
149
183
|
const best = newest(compatible);
|
|
150
184
|
if (best) {
|
|
151
|
-
const manifest = toManifest(best,
|
|
185
|
+
const manifest = toManifest(best, manifestUrl);
|
|
152
186
|
return manifest.id === ctx.currentUpdateId
|
|
153
187
|
? { type: 'up-to-date' }
|
|
154
188
|
: { type: 'update-available', manifest };
|
|
@@ -158,15 +192,15 @@ export class StaticManifestProvider {
|
|
|
158
192
|
// exists but needs a store update".
|
|
159
193
|
const incompatible = newest(candidates);
|
|
160
194
|
if (incompatible) {
|
|
161
|
-
return { type: 'incompatible', manifest: toManifest(incompatible,
|
|
195
|
+
return { type: 'incompatible', manifest: toManifest(incompatible, manifestUrl) };
|
|
162
196
|
}
|
|
163
197
|
return { type: 'up-to-date' };
|
|
164
198
|
}
|
|
165
|
-
async resolveDownload(manifest) {
|
|
199
|
+
async resolveDownload(manifest, ctx) {
|
|
166
200
|
return {
|
|
167
201
|
url: manifest.bundleUrl,
|
|
168
202
|
sha256: manifest.sha256,
|
|
169
|
-
headers: this.options.headers,
|
|
203
|
+
headers: mergeHeaders(this.options.headers, await this.options.onBeforeDownload?.(manifest, ctx)),
|
|
170
204
|
};
|
|
171
205
|
}
|
|
172
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-manifest.js","sourceRoot":"","sources":["../../src/provider/static-manifest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"static-manifest.js","sourceRoot":"","sources":["../../src/provider/static-manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Public types for `@sigx/lynx-updates` — the manifest shape, the pluggable
|
|
3
3
|
* `UpdateProvider` backend contract, and the reactive state machine.
|
|
4
4
|
*/
|
|
5
|
+
import type { StaticManifestProviderOptions } from './provider/static-manifest.js';
|
|
5
6
|
export type UpdatePlatform = 'android' | 'ios';
|
|
6
7
|
/** A single published update, as resolved by a provider. */
|
|
7
8
|
export interface UpdateManifest {
|
|
@@ -159,12 +160,11 @@ export type UpdateMode = 'silent' | 'immediate' | 'manual';
|
|
|
159
160
|
export interface UpdatesConfig {
|
|
160
161
|
/**
|
|
161
162
|
* Provider instance, or shorthand for the built-in static-manifest
|
|
162
|
-
* provider (`{ url }` → fetch that JSON manifest
|
|
163
|
+
* provider (`{ url }` → fetch that JSON manifest; the shorthand also
|
|
164
|
+
* accepts the async `url` resolver and `onBeforeCheck`/`onBeforeDownload`
|
|
165
|
+
* auth hooks — see {@link StaticManifestProviderOptions}).
|
|
163
166
|
*/
|
|
164
|
-
provider: UpdateProvider |
|
|
165
|
-
url: string;
|
|
166
|
-
headers?: Record<string, string>;
|
|
167
|
-
};
|
|
167
|
+
provider: UpdateProvider | StaticManifestProviderOptions;
|
|
168
168
|
/** Release channel. Default: the baked `__SIGX_UPDATES_CHANNEL__` define (usually 'production'). */
|
|
169
169
|
channel?: string;
|
|
170
170
|
/** Update mode. Default `'silent'`. */
|
|
@@ -179,7 +179,7 @@ export interface UpdatesConfig {
|
|
|
179
179
|
honorMandatory?: boolean;
|
|
180
180
|
/**
|
|
181
181
|
* true (default): `markReady()` is called automatically shortly after
|
|
182
|
-
* `
|
|
182
|
+
* `Updates.configure()` — "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/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoNH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnC,YACoB,IAAsB,EACtC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;oBAHC,IAAI;QAIpB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC/B,CAAC;CACJ"}
|
package/dist/updates.d.ts
CHANGED
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Public API —
|
|
3
|
-
*
|
|
4
|
-
* thin facade over the controller, the store and the native module, in the
|
|
5
|
-
* `Haptics`/`Storage` native-module family). See the package README.
|
|
2
|
+
* Public `Updates` API — a thin facade over the controller, the store and
|
|
3
|
+
* the native module. See the package README for usage.
|
|
6
4
|
*/
|
|
7
5
|
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;
|
|
23
6
|
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;
|
|
24
15
|
/** Ask the provider for the best available update. Works in every mode. */
|
|
25
16
|
readonly checkForUpdate: () => Promise<UpdateCheckResult>;
|
|
26
17
|
/**
|
|
@@ -36,7 +27,7 @@ export declare const Updates: {
|
|
|
36
27
|
readonly apply: () => Promise<void>;
|
|
37
28
|
/**
|
|
38
29
|
* Health signal: commits the pending update so native stops counting
|
|
39
|
-
* launch attempts against it. Called automatically after
|
|
30
|
+
* launch attempts against it. Called automatically after configure()
|
|
40
31
|
* unless `autoMarkReady: false`. Safe to call repeatedly.
|
|
41
32
|
*/
|
|
42
33
|
readonly markReady: () => Promise<void>;
|
package/dist/updates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/updates.js
CHANGED
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Public API —
|
|
3
|
-
*
|
|
4
|
-
* thin facade over the controller, the store and the native module, in the
|
|
5
|
-
* `Haptics`/`Storage` native-module family). See the package README.
|
|
2
|
+
* Public `Updates` API — a thin facade over the controller, the store and
|
|
3
|
+
* the native module. See the package README for usage.
|
|
6
4
|
*/
|
|
7
5
|
import * as controller from './controller.js';
|
|
8
6
|
import { getCurrentUpdate, nativeAvailable } from './native.js';
|
|
9
7
|
import { addListener, getStateSnapshot } from './state.js';
|
|
10
|
-
/**
|
|
11
|
-
* Declare the OTA update behavior for this app. Call once in `main.tsx`
|
|
12
|
-
* before `defineApp` — idempotent and synchronous; re-declaring updates the
|
|
13
|
-
* config but never re-runs the boot work (markReady / launch check).
|
|
14
|
-
* Kicks off the configured mode's automatic behavior on a deferred task
|
|
15
|
-
* (never blocks first paint). No-ops gracefully (with one warning) when the
|
|
16
|
-
* native module is absent (web preview, tests).
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```tsx
|
|
20
|
-
* defineUpdates({ provider: { url: 'https://cdn.example.com/updates.json' } });
|
|
21
|
-
* defineApp(<App />).mount(null);
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export function defineUpdates(config) {
|
|
25
|
-
controller.configure(config);
|
|
26
|
-
}
|
|
27
8
|
export const Updates = {
|
|
9
|
+
/**
|
|
10
|
+
* Configure the updates client. Idempotent and synchronous; must run
|
|
11
|
+
* before any other call — typically in `main.tsx` before `defineApp`.
|
|
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
|
|
14
|
+
* the native module is absent (web preview, tests).
|
|
15
|
+
*/
|
|
16
|
+
configure(config) {
|
|
17
|
+
controller.configure(config);
|
|
18
|
+
},
|
|
28
19
|
/** Ask the provider for the best available update. Works in every mode. */
|
|
29
20
|
checkForUpdate() {
|
|
30
21
|
return controller.checkForUpdate();
|
|
@@ -46,7 +37,7 @@ export const Updates = {
|
|
|
46
37
|
},
|
|
47
38
|
/**
|
|
48
39
|
* Health signal: commits the pending update so native stops counting
|
|
49
|
-
* launch attempts against it. Called automatically after
|
|
40
|
+
* launch attempts against it. Called automatically after configure()
|
|
50
41
|
* unless `autoMarkReady: false`. Safe to call repeatedly.
|
|
51
42
|
*/
|
|
52
43
|
markReady() {
|
package/dist/updates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAU3D,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB;;;;;;OAMG;IACH,SAAS,CAAC,MAAqB;QAC3B,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,cAAc;QACV,OAAO,UAAU,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,QAAyB;QAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK;QACD,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,SAAS;QACL,OAAO,UAAU,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,uEAAuE;IACvE,mBAAmB;QACf,OAAO,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IAED,0EAA0E;IAC1E,YAAY;QACR,OAAO,UAAU,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,6EAA6E;IAC7E,QAAQ;QACJ,OAAO,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IAED,uEAAuE;IACvE,WAAW,CAAC,EAAiC;QACzC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,sEAAsE;IACtE,WAAW;QACP,OAAO,eAAe,EAAE,CAAC;IAC7B,CAAC;CACK,CAAC"}
|