@hot-updater/react-native 1.0.5 → 1.0.7
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/HotUpdater.podspec +24 -3
- package/Package.swift +100 -0
- package/android/build.gradle +3 -4
- package/android/hot-updater-builtin-assets.gradle +67 -0
- package/android/hot-updater-min-bundle-id.gradle +69 -0
- package/android/src/main/java/com/hotupdater/ArtifactFileResolver.kt +85 -0
- package/android/src/main/java/com/hotupdater/BuiltInAssetResolver.kt +116 -11
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +117 -12
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +5 -52
- package/android/src/newarch/HotUpdaterModule.kt +129 -34
- package/android/src/oldarch/HotUpdaterModule.kt +130 -34
- package/android/src/oldarch/HotUpdaterSpec.kt +5 -0
- package/ios/HotUpdater/Interface/HotUpdaterInterface.h +69 -0
- package/ios/HotUpdater/Interface/HotUpdaterInterface.m +3 -0
- package/ios/HotUpdater/Internal/ArtifactFileResolver.swift +87 -0
- package/ios/HotUpdater/Internal/BundleFileStorageService.swift +88 -13
- package/ios/HotUpdater/Internal/HotUpdater.mm +90 -90
- package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +154 -52
- package/ios/HotUpdater/Internal/HotUpdaterInterface.swift +26 -0
- package/ios/HotUpdater/Internal/HotUpdaterMinBundleId.m +10 -0
- package/ios/HotUpdater/Package.swift +88 -0
- package/ios/Plugins/HotUpdaterMinBundleIdPlugin/HotUpdaterMinBundleIdPlugin.swift +28 -0
- package/ios/scripts/generate-min-bundle-id.zsh +49 -0
- package/lib/commonjs/checkForUpdate.js +17 -2
- package/lib/commonjs/checkForUpdate.js.map +1 -1
- package/lib/commonjs/fetchUpdateResponse.js +5 -2
- package/lib/commonjs/fetchUpdateResponse.js.map +1 -1
- package/lib/commonjs/httpClient.js +58 -5
- package/lib/commonjs/httpClient.js.map +1 -1
- package/lib/commonjs/native.js +42 -7
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/sdkVersion.js +1 -1
- package/lib/commonjs/specs/NativeHotUpdater.js +5 -0
- package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
- package/lib/module/checkForUpdate.js +18 -3
- package/lib/module/checkForUpdate.js.map +1 -1
- package/lib/module/fetchUpdateResponse.js +4 -1
- package/lib/module/fetchUpdateResponse.js.map +1 -1
- package/lib/module/httpClient.js +61 -7
- package/lib/module/httpClient.js.map +1 -1
- package/lib/module/native.js +41 -7
- package/lib/module/native.js.map +1 -1
- package/lib/module/sdkVersion.js +1 -1
- package/lib/module/specs/NativeHotUpdater.js +7 -0
- package/lib/module/specs/NativeHotUpdater.js.map +1 -1
- package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/commonjs/fetchUpdateResponse.d.ts +2 -0
- package/lib/typescript/commonjs/fetchUpdateResponse.d.ts.map +1 -1
- package/lib/typescript/commonjs/httpClient.d.ts +26 -2
- package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.d.ts +17 -3
- package/lib/typescript/commonjs/native.d.ts.map +1 -1
- package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +37 -1
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/module/fetchUpdateResponse.d.ts +2 -0
- package/lib/typescript/module/fetchUpdateResponse.d.ts.map +1 -1
- package/lib/typescript/module/httpClient.d.ts +26 -2
- package/lib/typescript/module/httpClient.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts +17 -3
- package/lib/typescript/module/native.d.ts.map +1 -1
- package/lib/typescript/module/sdkVersion.d.ts +1 -1
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts +37 -1
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
- package/package.json +5 -4
- package/react-native.config.js +7 -0
- package/src/checkForUpdate.ts +19 -3
- package/src/fetchUpdateResponse.ts +4 -1
- package/src/httpClient.ts +88 -9
- package/src/native.ts +53 -9
- package/src/sdkVersion.ts +1 -1
- package/src/specs/NativeHotUpdater.ts +39 -1
|
@@ -13,11 +13,41 @@ export interface UpdateBundleParams {
|
|
|
13
13
|
manifestFileHash: string;
|
|
14
14
|
/** Optional tar.br URL; integrity and sizes come from the verified manifest. */
|
|
15
15
|
archiveUrl?: string | null;
|
|
16
|
-
/**
|
|
16
|
+
/** Every target file with its download URL and optional Hermes patch. */
|
|
17
17
|
assets: UnsafeObject;
|
|
18
|
+
/**
|
|
19
|
+
* Legacy: JavaScript from the first artifact protocol v2 SDK sends these
|
|
20
|
+
* here, with only the Hermes patch in `assets`, and apps may pass them to
|
|
21
|
+
* `updateBundle` as that release documented. Native keeps accepting them so
|
|
22
|
+
* such OTA Bundles still install. The update check sends them to
|
|
23
|
+
* `installArtifact`.
|
|
24
|
+
*/
|
|
25
|
+
filesUrl?: string | null;
|
|
26
|
+
requestHeaders?: UnsafeObject | null;
|
|
27
|
+
requestTimeout?: number | null;
|
|
18
28
|
/** Full Release Catalog selection receipt committed with the staged Bundle. */
|
|
19
29
|
selection?: UnsafeObject | null;
|
|
20
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Artifact protocol v2: no URL per file. Native reuses local files, chooses
|
|
33
|
+
* the archive or files, and POSTs the paths it downloads one by one to
|
|
34
|
+
* `filesUrl` for their URLs.
|
|
35
|
+
*/
|
|
36
|
+
export interface InstallArtifactParams {
|
|
37
|
+
bundleId: string;
|
|
38
|
+
channel?: string;
|
|
39
|
+
manifestUrl: string;
|
|
40
|
+
manifestFileHash: string;
|
|
41
|
+
archiveUrl?: string | null;
|
|
42
|
+
/** The Hermes bytecode patch from the running Bundle, with its `assetPath`. */
|
|
43
|
+
patch?: UnsafeObject | null;
|
|
44
|
+
filesUrl: string;
|
|
45
|
+
/** Headers for the `filesUrl` request, as the update check sent them. */
|
|
46
|
+
requestHeaders?: UnsafeObject | null;
|
|
47
|
+
/** Milliseconds the `filesUrl` request may take, as the update check's. */
|
|
48
|
+
requestTimeout?: number | null;
|
|
49
|
+
selection?: UnsafeObject | null;
|
|
50
|
+
}
|
|
21
51
|
export interface Spec extends TurboModule {
|
|
22
52
|
reload(): Promise<void>;
|
|
23
53
|
/**
|
|
@@ -73,6 +103,12 @@ export interface Spec extends TurboModule {
|
|
|
73
103
|
* "connection", "offline", or "cancelled".
|
|
74
104
|
*/
|
|
75
105
|
updateBundle(params: UpdateBundleParams): Promise<UnsafeObject>;
|
|
106
|
+
/**
|
|
107
|
+
* Stages a Bundle over artifact protocol v2 and resolves like
|
|
108
|
+
* `updateBundle`. Native built from an SDK older than protocol v2 lacks
|
|
109
|
+
* it, so JS checks for it before asking the server for v2.
|
|
110
|
+
*/
|
|
111
|
+
installArtifact(params: InstallArtifactParams): Promise<UnsafeObject>;
|
|
76
112
|
/** Accepts and durably advances the catalog high-water for a scope. */
|
|
77
113
|
acceptReleaseCatalog(params: UnsafeObject): boolean;
|
|
78
114
|
/** Reads active/stable selection receipts and catalog high-water state. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAaA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAaA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAqBzD,YAAY,EAAE,qBAAqB,EAAE,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;IAE7C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAChD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,MAAM,EAAE,oBAAoB,CAAC;IAC7B,kDAAkD;IAClD,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAC9B;AAyCD,wEAAwE;AACxE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,aAAa,GAAG,YAAY,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SACtB,cAAc,CAAC,MAAM,CAAC,SACrB,OAAO,SACP,gBAAgB,YACb,mBAAmB,GAAG,SAAS,SAClC,gBAAgB,KACtB,IAmBF,CAAC;AAoTF,wBAAsB,cAAc,CAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA2EtC"}
|
|
@@ -6,6 +6,8 @@ export interface UpdateRequest {
|
|
|
6
6
|
readonly requestTimeout?: number;
|
|
7
7
|
readonly onResponse?: (response: UpdateHttpResponse) => void;
|
|
8
8
|
}
|
|
9
|
+
/** How long an update request may take when the app sets no `requestTimeout`. */
|
|
10
|
+
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 5000;
|
|
9
11
|
/** Read once for parsing and diagnostics, under the same request timeout. */
|
|
10
12
|
export declare const fetchUpdateResponse: ({ url, resource, requestHeaders, requestTimeout, onResponse, }: UpdateRequest) => Promise<{
|
|
11
13
|
response: Response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUpdateResponse.d.ts","sourceRoot":"","sources":["../../../src/fetchUpdateResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9D;AAED,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,mEAM7B,aAAa,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA0CrE,CAAC"}
|
|
1
|
+
{"version":3,"file":"fetchUpdateResponse.d.ts","sourceRoot":"","sources":["../../../src/fetchUpdateResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9D;AAED,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,mEAM7B,aAAa,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA0CrE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ArtifactInfo, type HotUpdaterBaseURL, type ReleaseCatalog, type UpdateHttpResponse } from "@hot-updater/protocol";
|
|
1
|
+
import { type ArtifactInfo, type ChangedAssetPatch, type HotUpdaterBaseURL, type ReleaseCatalog, type UpdateHttpResponse } from "@hot-updater/protocol";
|
|
2
2
|
export interface ReleaseCatalogRequest {
|
|
3
3
|
readonly platform: "ios" | "android";
|
|
4
4
|
readonly channel: string;
|
|
@@ -9,15 +9,39 @@ export interface ReleaseCatalogRequest {
|
|
|
9
9
|
readonly requestTimeout?: number;
|
|
10
10
|
}
|
|
11
11
|
export interface ArtifactRequest {
|
|
12
|
+
/**
|
|
13
|
+
* The newest artifact protocol native installs: 1 for native built from an
|
|
14
|
+
* SDK older than protocol v2. 2 by default.
|
|
15
|
+
*/
|
|
16
|
+
readonly artifactProtocol?: 1 | 2;
|
|
12
17
|
readonly targetBundleId: string;
|
|
13
18
|
readonly currentBundleId: string;
|
|
14
19
|
readonly requestHeaders?: Record<string, string>;
|
|
15
20
|
readonly requestTimeout?: number;
|
|
16
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* How native downloads a Bundle: with a URL for every file in artifact
|
|
24
|
+
* protocol v1, or in v2 with only the Hermes patch, asking `filesUrl` for the
|
|
25
|
+
* files it downloads one by one.
|
|
26
|
+
*/
|
|
27
|
+
export type ResolvedArtifact = {
|
|
28
|
+
readonly manifestUrl: string;
|
|
29
|
+
readonly manifestFileHash: string;
|
|
30
|
+
readonly archiveUrl?: string;
|
|
31
|
+
readonly assets: ArtifactInfo["assets"];
|
|
32
|
+
} | {
|
|
33
|
+
readonly manifestUrl: string;
|
|
34
|
+
readonly manifestFileHash: string;
|
|
35
|
+
readonly archiveUrl?: string;
|
|
36
|
+
readonly patch?: ChangedAssetPatch & {
|
|
37
|
+
assetPath: string;
|
|
38
|
+
};
|
|
39
|
+
readonly filesUrl: string;
|
|
40
|
+
};
|
|
17
41
|
export interface HotUpdaterHttpSession {
|
|
18
42
|
/** Resolves to null when the server says the scope has no catalog, so no update. */
|
|
19
43
|
fetchReleaseCatalog: (params: ReleaseCatalogRequest) => Promise<ReleaseCatalog | null>;
|
|
20
|
-
resolveArtifact: (params: ArtifactRequest) => Promise<
|
|
44
|
+
resolveArtifact: (params: ArtifactRequest) => Promise<ResolvedArtifact>;
|
|
21
45
|
}
|
|
22
46
|
export interface HotUpdaterHttpClient {
|
|
23
47
|
createSession: () => Promise<HotUpdaterHttpSession>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,aAAa,GAAG,YAAY,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACzC,GACD;IACE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEN,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,mBAAmB,EAAE,CACnB,MAAM,EAAE,qBAAqB,KAC1B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpC,eAAe,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrD;AA6JD,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,YAClB,iBAAiB,eACb,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,KAClD,oBAGD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type CatalogHighWater, type UpdateStatus, type PersistedSelectionReceipt } from "@hot-updater/protocol";
|
|
1
|
+
import { type CatalogHighWater, type ChangedAssetPatch, type UpdateStatus, type PersistedSelectionReceipt } from "@hot-updater/protocol";
|
|
2
2
|
import { HotUpdaterErrorCode, isHotUpdaterError } from "./error";
|
|
3
|
-
import { type UpdateBundleParams } from "./specs/NativeHotUpdater";
|
|
3
|
+
import { type InstallArtifactParams, type UpdateBundleParams } from "./specs/NativeHotUpdater";
|
|
4
4
|
export { HotUpdaterErrorCode, isHotUpdaterError };
|
|
5
5
|
type PersistedUpdateStrategy = "fingerprint" | "appVersion";
|
|
6
6
|
export interface ManifestAsset {
|
|
@@ -90,6 +90,20 @@ export type UpdateParams = UpdateBundleParams & {
|
|
|
90
90
|
status: UpdateStatus;
|
|
91
91
|
shouldSkipCurrentBundleIdCheck?: boolean;
|
|
92
92
|
};
|
|
93
|
+
/** How the update check stages a Bundle over artifact protocol v2. */
|
|
94
|
+
export type InstallArtifactUpdateParams = Omit<InstallArtifactParams, "patch"> & {
|
|
95
|
+
patch?: (ChangedAssetPatch & {
|
|
96
|
+
assetPath: string;
|
|
97
|
+
}) | null;
|
|
98
|
+
status: UpdateStatus;
|
|
99
|
+
shouldSkipCurrentBundleIdCheck?: boolean;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Whether native installs artifact protocol v2. Native built from an SDK
|
|
103
|
+
* older than protocol v2 has no `installArtifact`, and an OTA can bring this
|
|
104
|
+
* JavaScript to such native code, so the update check then asks for v1.
|
|
105
|
+
*/
|
|
106
|
+
export declare const supportsArtifactFiles: () => boolean;
|
|
93
107
|
export interface ActiveUpdateState {
|
|
94
108
|
readonly activeSelection: ActiveUpdateSelection | null;
|
|
95
109
|
readonly stableSelection: ActiveUpdateSelection | null;
|
|
@@ -142,7 +156,7 @@ export type BundleDelivery = {
|
|
|
142
156
|
*
|
|
143
157
|
* @throws {Error} Rejects with error.code from HotUpdaterErrorCode enum and error.message
|
|
144
158
|
*/
|
|
145
|
-
export declare function stageBundle(params: UpdateParams): Promise<BundleDelivery | null>;
|
|
159
|
+
export declare function stageBundle(params: UpdateParams | InstallArtifactUpdateParams): Promise<BundleDelivery | null>;
|
|
146
160
|
/**
|
|
147
161
|
* Downloads files and applies them to the app.
|
|
148
162
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const HOT_UPDATER_SDK_VERSION = "1.0.
|
|
1
|
+
export declare const HOT_UPDATER_SDK_VERSION = "1.0.7";
|
|
2
2
|
//# sourceMappingURL=sdkVersion.d.ts.map
|
|
@@ -13,11 +13,41 @@ export interface UpdateBundleParams {
|
|
|
13
13
|
manifestFileHash: string;
|
|
14
14
|
/** Optional tar.br URL; integrity and sizes come from the verified manifest. */
|
|
15
15
|
archiveUrl?: string | null;
|
|
16
|
-
/**
|
|
16
|
+
/** Every target file with its download URL and optional Hermes patch. */
|
|
17
17
|
assets: UnsafeObject;
|
|
18
|
+
/**
|
|
19
|
+
* Legacy: JavaScript from the first artifact protocol v2 SDK sends these
|
|
20
|
+
* here, with only the Hermes patch in `assets`, and apps may pass them to
|
|
21
|
+
* `updateBundle` as that release documented. Native keeps accepting them so
|
|
22
|
+
* such OTA Bundles still install. The update check sends them to
|
|
23
|
+
* `installArtifact`.
|
|
24
|
+
*/
|
|
25
|
+
filesUrl?: string | null;
|
|
26
|
+
requestHeaders?: UnsafeObject | null;
|
|
27
|
+
requestTimeout?: number | null;
|
|
18
28
|
/** Full Release Catalog selection receipt committed with the staged Bundle. */
|
|
19
29
|
selection?: UnsafeObject | null;
|
|
20
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Artifact protocol v2: no URL per file. Native reuses local files, chooses
|
|
33
|
+
* the archive or files, and POSTs the paths it downloads one by one to
|
|
34
|
+
* `filesUrl` for their URLs.
|
|
35
|
+
*/
|
|
36
|
+
export interface InstallArtifactParams {
|
|
37
|
+
bundleId: string;
|
|
38
|
+
channel?: string;
|
|
39
|
+
manifestUrl: string;
|
|
40
|
+
manifestFileHash: string;
|
|
41
|
+
archiveUrl?: string | null;
|
|
42
|
+
/** The Hermes bytecode patch from the running Bundle, with its `assetPath`. */
|
|
43
|
+
patch?: UnsafeObject | null;
|
|
44
|
+
filesUrl: string;
|
|
45
|
+
/** Headers for the `filesUrl` request, as the update check sent them. */
|
|
46
|
+
requestHeaders?: UnsafeObject | null;
|
|
47
|
+
/** Milliseconds the `filesUrl` request may take, as the update check's. */
|
|
48
|
+
requestTimeout?: number | null;
|
|
49
|
+
selection?: UnsafeObject | null;
|
|
50
|
+
}
|
|
21
51
|
export interface Spec extends TurboModule {
|
|
22
52
|
reload(): Promise<void>;
|
|
23
53
|
/**
|
|
@@ -73,6 +103,12 @@ export interface Spec extends TurboModule {
|
|
|
73
103
|
* "connection", "offline", or "cancelled".
|
|
74
104
|
*/
|
|
75
105
|
updateBundle(params: UpdateBundleParams): Promise<UnsafeObject>;
|
|
106
|
+
/**
|
|
107
|
+
* Stages a Bundle over artifact protocol v2 and resolves like
|
|
108
|
+
* `updateBundle`. Native built from an SDK older than protocol v2 lacks
|
|
109
|
+
* it, so JS checks for it before asking the server for v2.
|
|
110
|
+
*/
|
|
111
|
+
installArtifact(params: InstallArtifactParams): Promise<UnsafeObject>;
|
|
76
112
|
/** Accepts and durably advances the catalog high-water for a scope. */
|
|
77
113
|
acceptReleaseCatalog(params: UnsafeObject): boolean;
|
|
78
114
|
/** Reads active/stable selection receipts and catalog high-water state. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hot-updater/react-native",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "React Native OTA solution for self-hosted",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/commonjs/index.js",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"ios",
|
|
28
28
|
"cpp",
|
|
29
29
|
"*.podspec",
|
|
30
|
+
"Package.swift",
|
|
30
31
|
"react-native.config.js",
|
|
31
32
|
"!ios/build",
|
|
32
33
|
"!ios/HotUpdater/Test",
|
|
@@ -123,9 +124,9 @@
|
|
|
123
124
|
},
|
|
124
125
|
"dependencies": {
|
|
125
126
|
"use-sync-external-store": "1.5.0",
|
|
126
|
-
"@hot-updater/protocol": "1.0.
|
|
127
|
-
"@hot-updater/plugin-remote-config": "1.0.
|
|
128
|
-
"@hot-updater/plugin-insights": "1.0.
|
|
127
|
+
"@hot-updater/protocol": "1.0.7",
|
|
128
|
+
"@hot-updater/plugin-remote-config": "1.0.7",
|
|
129
|
+
"@hot-updater/plugin-insights": "1.0.7"
|
|
129
130
|
},
|
|
130
131
|
"scripts": {
|
|
131
132
|
"build": "node ./scripts/sync-sdk-version.mjs run -- bob build",
|
package/src/checkForUpdate.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type {
|
|
|
18
18
|
UpdateErrorStage,
|
|
19
19
|
} from "./clientPlugin";
|
|
20
20
|
import { HotUpdaterError, StaleReleaseCatalogError } from "./error";
|
|
21
|
+
import { DEFAULT_REQUEST_TIMEOUT_MS } from "./fetchUpdateResponse";
|
|
21
22
|
import type { HotUpdaterHttpClient } from "./httpClient";
|
|
22
23
|
import {
|
|
23
24
|
acceptReleaseCatalog,
|
|
@@ -34,6 +35,7 @@ import {
|
|
|
34
35
|
isReleaseSelectionCurrent,
|
|
35
36
|
isChannelSwitched,
|
|
36
37
|
stageBundle,
|
|
38
|
+
supportsArtifactFiles,
|
|
37
39
|
} from "./native";
|
|
38
40
|
import { hotUpdaterStore } from "./store";
|
|
39
41
|
import { classifyUpdateError, InvalidUpdateResponseError } from "./updateError";
|
|
@@ -377,6 +379,7 @@ async function checkForReleaseCatalogUpdate(input: {
|
|
|
377
379
|
}
|
|
378
380
|
|
|
379
381
|
const artifact = await session.resolveArtifact({
|
|
382
|
+
artifactProtocol: supportsArtifactFiles() ? 2 : 1,
|
|
380
383
|
currentBundleId: input.currentBundleId,
|
|
381
384
|
requestHeaders: options.requestHeaders,
|
|
382
385
|
requestTimeout: options.requestTimeout,
|
|
@@ -385,8 +388,7 @@ async function checkForReleaseCatalogUpdate(input: {
|
|
|
385
388
|
if (!isReleaseSelectionCurrent(guard)) {
|
|
386
389
|
throw new StaleReleaseCatalogError();
|
|
387
390
|
}
|
|
388
|
-
const
|
|
389
|
-
assets: artifact.assets,
|
|
391
|
+
const staging = {
|
|
390
392
|
bundleId: desired.bundleId,
|
|
391
393
|
channel: input.targetChannel,
|
|
392
394
|
manifestFileHash: artifact.manifestFileHash,
|
|
@@ -395,7 +397,21 @@ async function checkForReleaseCatalogUpdate(input: {
|
|
|
395
397
|
selection: receipt,
|
|
396
398
|
shouldSkipCurrentBundleIdCheck: true,
|
|
397
399
|
status: desired.status,
|
|
398
|
-
}
|
|
400
|
+
};
|
|
401
|
+
const delivery = await stageBundle(
|
|
402
|
+
"filesUrl" in artifact
|
|
403
|
+
? {
|
|
404
|
+
...staging,
|
|
405
|
+
filesUrl: artifact.filesUrl,
|
|
406
|
+
...(artifact.patch ? { patch: artifact.patch } : {}),
|
|
407
|
+
...(options.requestHeaders
|
|
408
|
+
? { requestHeaders: options.requestHeaders }
|
|
409
|
+
: {}),
|
|
410
|
+
requestTimeout:
|
|
411
|
+
options.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
412
|
+
}
|
|
413
|
+
: { ...staging, assets: artifact.assets },
|
|
414
|
+
);
|
|
399
415
|
if (delivery !== null && desired.bundleId !== input.currentBundleId) {
|
|
400
416
|
options.emit("onBundleDownloaded", () => ({
|
|
401
417
|
channel: input.targetChannel,
|
|
@@ -8,12 +8,15 @@ export interface UpdateRequest {
|
|
|
8
8
|
readonly onResponse?: (response: UpdateHttpResponse) => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
/** How long an update request may take when the app sets no `requestTimeout`. */
|
|
12
|
+
export const DEFAULT_REQUEST_TIMEOUT_MS = 5000;
|
|
13
|
+
|
|
11
14
|
/** Read once for parsing and diagnostics, under the same request timeout. */
|
|
12
15
|
export const fetchUpdateResponse = async ({
|
|
13
16
|
url,
|
|
14
17
|
resource,
|
|
15
18
|
requestHeaders,
|
|
16
|
-
requestTimeout =
|
|
19
|
+
requestTimeout = DEFAULT_REQUEST_TIMEOUT_MS,
|
|
17
20
|
onResponse,
|
|
18
21
|
}: UpdateRequest): Promise<{ response: Response; body: string | null }> => {
|
|
19
22
|
const controller = new AbortController();
|
package/src/httpClient.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ARTIFACT_FILES_PROTOCOL_VERSION,
|
|
2
3
|
ARTIFACT_PROTOCOL_VERSION,
|
|
3
4
|
canonicalizeAppVersion,
|
|
4
5
|
encodeChannelKey,
|
|
5
6
|
resolveBaseURL,
|
|
6
7
|
type ArtifactInfo,
|
|
8
|
+
type ArtifactInfoV2,
|
|
9
|
+
type ChangedAssetPatch,
|
|
7
10
|
type HotUpdaterBaseURL,
|
|
8
11
|
type ReleaseCatalog,
|
|
9
12
|
type UpdateHttpResponse,
|
|
10
13
|
} from "@hot-updater/protocol";
|
|
11
14
|
|
|
12
|
-
import { fetchJSON } from "./fetchJSON";
|
|
15
|
+
import { fetchJSON, FetchJSONResponseError } from "./fetchJSON";
|
|
13
16
|
import { fetchReleaseCatalogWithCache } from "./releaseCatalogCache";
|
|
14
17
|
import { InvalidUpdateResponseError } from "./updateError";
|
|
15
18
|
|
|
@@ -24,18 +27,43 @@ export interface ReleaseCatalogRequest {
|
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
export interface ArtifactRequest {
|
|
30
|
+
/**
|
|
31
|
+
* The newest artifact protocol native installs: 1 for native built from an
|
|
32
|
+
* SDK older than protocol v2. 2 by default.
|
|
33
|
+
*/
|
|
34
|
+
readonly artifactProtocol?: 1 | 2;
|
|
27
35
|
readonly targetBundleId: string;
|
|
28
36
|
readonly currentBundleId: string;
|
|
29
37
|
readonly requestHeaders?: Record<string, string>;
|
|
30
38
|
readonly requestTimeout?: number;
|
|
31
39
|
}
|
|
32
40
|
|
|
41
|
+
/**
|
|
42
|
+
* How native downloads a Bundle: with a URL for every file in artifact
|
|
43
|
+
* protocol v1, or in v2 with only the Hermes patch, asking `filesUrl` for the
|
|
44
|
+
* files it downloads one by one.
|
|
45
|
+
*/
|
|
46
|
+
export type ResolvedArtifact =
|
|
47
|
+
| {
|
|
48
|
+
readonly manifestUrl: string;
|
|
49
|
+
readonly manifestFileHash: string;
|
|
50
|
+
readonly archiveUrl?: string;
|
|
51
|
+
readonly assets: ArtifactInfo["assets"];
|
|
52
|
+
}
|
|
53
|
+
| {
|
|
54
|
+
readonly manifestUrl: string;
|
|
55
|
+
readonly manifestFileHash: string;
|
|
56
|
+
readonly archiveUrl?: string;
|
|
57
|
+
readonly patch?: ChangedAssetPatch & { assetPath: string };
|
|
58
|
+
readonly filesUrl: string;
|
|
59
|
+
};
|
|
60
|
+
|
|
33
61
|
export interface HotUpdaterHttpSession {
|
|
34
62
|
/** Resolves to null when the server says the scope has no catalog, so no update. */
|
|
35
63
|
fetchReleaseCatalog: (
|
|
36
64
|
params: ReleaseCatalogRequest,
|
|
37
65
|
) => Promise<ReleaseCatalog | null>;
|
|
38
|
-
resolveArtifact: (params: ArtifactRequest) => Promise<
|
|
66
|
+
resolveArtifact: (params: ArtifactRequest) => Promise<ResolvedArtifact>;
|
|
39
67
|
}
|
|
40
68
|
|
|
41
69
|
export interface HotUpdaterHttpClient {
|
|
@@ -59,6 +87,7 @@ const requireArtifactUrl = (value: string): string => {
|
|
|
59
87
|
return value;
|
|
60
88
|
};
|
|
61
89
|
|
|
90
|
+
// Legacy: artifact protocol v1: validates a server that predates v2; remove with the fallback.
|
|
62
91
|
const requireArtifactUrls = (info: ArtifactInfo): ArtifactInfo => {
|
|
63
92
|
requireArtifactUrl(info.manifestUrl);
|
|
64
93
|
if (info.archiveUrl) requireArtifactUrl(info.archiveUrl);
|
|
@@ -91,6 +120,25 @@ const requireArtifactProtocolV1 = (info: ArtifactInfo): ArtifactInfo => {
|
|
|
91
120
|
return info;
|
|
92
121
|
};
|
|
93
122
|
|
|
123
|
+
const requireArtifactProtocolV2 = (info: ArtifactInfoV2): ArtifactInfoV2 => {
|
|
124
|
+
if (
|
|
125
|
+
info?.artifactProtocolVersion !== ARTIFACT_FILES_PROTOCOL_VERSION ||
|
|
126
|
+
!info.manifestUrl ||
|
|
127
|
+
!info.manifestFileHash ||
|
|
128
|
+
(info.archiveUrl !== undefined && typeof info.archiveUrl !== "string") ||
|
|
129
|
+
(info.patch !== undefined &&
|
|
130
|
+
(!info.patch?.assetPath || !info.patch.patchUrl))
|
|
131
|
+
) {
|
|
132
|
+
throw new InvalidUpdateResponseError(
|
|
133
|
+
`Server does not support artifact protocol ${ARTIFACT_FILES_PROTOCOL_VERSION}.`,
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
requireArtifactUrl(info.manifestUrl);
|
|
137
|
+
if (info.archiveUrl) requireArtifactUrl(info.archiveUrl);
|
|
138
|
+
if (info.patch) requireArtifactUrl(info.patch.patchUrl);
|
|
139
|
+
return info;
|
|
140
|
+
};
|
|
141
|
+
|
|
94
142
|
const createSession = (
|
|
95
143
|
baseURL: string,
|
|
96
144
|
onResponse?: (response: UpdateHttpResponse) => void,
|
|
@@ -133,16 +181,47 @@ const createSession = (
|
|
|
133
181
|
url,
|
|
134
182
|
});
|
|
135
183
|
},
|
|
136
|
-
resolveArtifact: async (params): Promise<
|
|
137
|
-
const
|
|
184
|
+
resolveArtifact: async (params): Promise<ResolvedArtifact> => {
|
|
185
|
+
const target = encodeURIComponent(params.targetBundleId);
|
|
186
|
+
const route = `${target}/from/${encodeURIComponent(params.currentBundleId)}`;
|
|
187
|
+
const request = {
|
|
138
188
|
...(onResponse ? { onResponse } : {}),
|
|
139
189
|
requestHeaders: params.requestHeaders,
|
|
140
190
|
requestTimeout: params.requestTimeout,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
191
|
+
};
|
|
192
|
+
// Legacy: artifact protocol v1, for native that predates v2 and for a
|
|
193
|
+
// server that predates it (404). Remove once neither is supported.
|
|
194
|
+
const resolveV1 = async (): Promise<ResolvedArtifact> =>
|
|
195
|
+
requireArtifactUrls(
|
|
196
|
+
requireArtifactProtocolV1(
|
|
197
|
+
await fetchJSON<ArtifactInfo>({
|
|
198
|
+
...request,
|
|
199
|
+
url: `${baseURL}/artifacts/v1/${route}`,
|
|
200
|
+
}),
|
|
201
|
+
),
|
|
202
|
+
);
|
|
203
|
+
if (params.artifactProtocol === 1) return resolveV1();
|
|
204
|
+
let info: ArtifactInfoV2;
|
|
205
|
+
try {
|
|
206
|
+
info = await fetchJSON<ArtifactInfoV2>({
|
|
207
|
+
...request,
|
|
208
|
+
url: `${baseURL}/artifacts/v2/${route}`,
|
|
209
|
+
});
|
|
210
|
+
} catch (error) {
|
|
211
|
+
if (!(error instanceof FetchJSONResponseError) || error.status !== 404) {
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
return resolveV1();
|
|
215
|
+
}
|
|
216
|
+
const { archiveUrl, manifestFileHash, manifestUrl, patch } =
|
|
217
|
+
requireArtifactProtocolV2(info);
|
|
218
|
+
return {
|
|
219
|
+
...(archiveUrl ? { archiveUrl } : {}),
|
|
220
|
+
...(patch ? { patch } : {}),
|
|
221
|
+
filesUrl: `${baseURL}/artifacts/v2/${target}/files`,
|
|
222
|
+
manifestFileHash,
|
|
223
|
+
manifestUrl,
|
|
224
|
+
};
|
|
146
225
|
},
|
|
147
226
|
});
|
|
148
227
|
|