react-native-bspatch 1.1.1 → 1.1.2
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/ota/storage/GitHubRawStorage.js +9 -2
- package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +1 -1
- package/lib/module/ota/storage/GitHubRawStorage.js +9 -2
- package/lib/module/ota/storage/GitHubRawStorage.js.map +1 -1
- package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ota/storage/GitHubRawStorage.ts +10 -4
|
@@ -28,6 +28,12 @@ const NO_CACHE_HEADERS = {
|
|
|
28
28
|
|
|
29
29
|
/** Append a timestamp query param to defeat CDN caches on mutable URLs */
|
|
30
30
|
const bustCache = url => `${url}?cb=${Date.now()}`;
|
|
31
|
+
const normalizeChannel = channel => {
|
|
32
|
+
const lower = channel.toLowerCase();
|
|
33
|
+
if (lower === 'dev') return 'development';
|
|
34
|
+
if (lower === 'prod') return 'production';
|
|
35
|
+
return lower;
|
|
36
|
+
};
|
|
31
37
|
class GitHubRawStorageProvider {
|
|
32
38
|
async fetchManifest(config) {
|
|
33
39
|
if (!config.customServer) return config.bundledPatches || [];
|
|
@@ -36,6 +42,7 @@ class GitHubRawStorageProvider {
|
|
|
36
42
|
channel,
|
|
37
43
|
baseFolder = 'ota'
|
|
38
44
|
} = config.customServer;
|
|
45
|
+
const channelName = normalizeChannel(channel);
|
|
39
46
|
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
40
47
|
// Cache-bust: registry is mutable; must always fetch the latest version
|
|
41
48
|
const registryUrl = bustCache(`${normalizedBaseUrl}/${baseFolder}/ota_registry.json`);
|
|
@@ -46,7 +53,7 @@ class GitHubRawStorageProvider {
|
|
|
46
53
|
}
|
|
47
54
|
const registry = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
|
|
48
55
|
const appGroup = registry?.apps?.[config.appVersion];
|
|
49
|
-
const flavorGroup = appGroup?.flavors?.[
|
|
56
|
+
const flavorGroup = appGroup?.flavors?.[channelName];
|
|
50
57
|
if (!flavorGroup?.patches?.length) {
|
|
51
58
|
return config.bundledPatches || [];
|
|
52
59
|
}
|
|
@@ -66,7 +73,7 @@ class GitHubRawStorageProvider {
|
|
|
66
73
|
channel
|
|
67
74
|
} = config.customServer;
|
|
68
75
|
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
69
|
-
const channelName = channel
|
|
76
|
+
const channelName = normalizeChannel(channel);
|
|
70
77
|
|
|
71
78
|
// Cache-bust: patch files are versioned by name but GitHub CDN may
|
|
72
79
|
// serve a stale 404 response for newly uploaded files within 5 min.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","e","__esModule","default","NO_CACHE_HEADERS","bustCache","url","Date","now","GitHubRawStorageProvider","fetchManifest","config","customServer","bundledPatches","baseUrl","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","e","__esModule","default","NO_CACHE_HEADERS","bustCache","url","Date","now","normalizeChannel","channel","lower","toLowerCase","GitHubRawStorageProvider","fetchManifest","config","customServer","bundledPatches","baseUrl","baseFolder","channelName","normalizedBaseUrl","endsWith","slice","registryUrl","res","ReactNativeBlobUtil","fetch","respInfo","status","Error","registry","data","JSON","parse","appGroup","apps","appVersion","flavorGroup","flavors","patches","length","filter","p","platform","Platform","OS","error","console","warn","message","getUpdateFileUrl","filename","getAssetUrl","hash","ext","exports"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubRawStorage.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -23,6 +23,12 @@ const NO_CACHE_HEADERS = {
|
|
|
23
23
|
|
|
24
24
|
/** Append a timestamp query param to defeat CDN caches on mutable URLs */
|
|
25
25
|
const bustCache = url => `${url}?cb=${Date.now()}`;
|
|
26
|
+
const normalizeChannel = channel => {
|
|
27
|
+
const lower = channel.toLowerCase();
|
|
28
|
+
if (lower === 'dev') return 'development';
|
|
29
|
+
if (lower === 'prod') return 'production';
|
|
30
|
+
return lower;
|
|
31
|
+
};
|
|
26
32
|
export class GitHubRawStorageProvider {
|
|
27
33
|
async fetchManifest(config) {
|
|
28
34
|
if (!config.customServer) return config.bundledPatches || [];
|
|
@@ -31,6 +37,7 @@ export class GitHubRawStorageProvider {
|
|
|
31
37
|
channel,
|
|
32
38
|
baseFolder = 'ota'
|
|
33
39
|
} = config.customServer;
|
|
40
|
+
const channelName = normalizeChannel(channel);
|
|
34
41
|
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
35
42
|
// Cache-bust: registry is mutable; must always fetch the latest version
|
|
36
43
|
const registryUrl = bustCache(`${normalizedBaseUrl}/${baseFolder}/ota_registry.json`);
|
|
@@ -41,7 +48,7 @@ export class GitHubRawStorageProvider {
|
|
|
41
48
|
}
|
|
42
49
|
const registry = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
|
|
43
50
|
const appGroup = registry?.apps?.[config.appVersion];
|
|
44
|
-
const flavorGroup = appGroup?.flavors?.[
|
|
51
|
+
const flavorGroup = appGroup?.flavors?.[channelName];
|
|
45
52
|
if (!flavorGroup?.patches?.length) {
|
|
46
53
|
return config.bundledPatches || [];
|
|
47
54
|
}
|
|
@@ -61,7 +68,7 @@ export class GitHubRawStorageProvider {
|
|
|
61
68
|
channel
|
|
62
69
|
} = config.customServer;
|
|
63
70
|
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
64
|
-
const channelName = channel
|
|
71
|
+
const channelName = normalizeChannel(channel);
|
|
65
72
|
|
|
66
73
|
// Cache-bust: patch files are versioned by name but GitHub CDN may
|
|
67
74
|
// serve a stale 404 response for newly uploaded files within 5 min.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","ReactNativeBlobUtil","NO_CACHE_HEADERS","bustCache","url","Date","now","GitHubRawStorageProvider","fetchManifest","config","customServer","bundledPatches","baseUrl","
|
|
1
|
+
{"version":3,"names":["Platform","ReactNativeBlobUtil","NO_CACHE_HEADERS","bustCache","url","Date","now","normalizeChannel","channel","lower","toLowerCase","GitHubRawStorageProvider","fetchManifest","config","customServer","bundledPatches","baseUrl","baseFolder","channelName","normalizedBaseUrl","endsWith","slice","registryUrl","res","fetch","respInfo","status","Error","registry","data","JSON","parse","appGroup","apps","appVersion","flavorGroup","flavors","patches","length","filter","p","platform","OS","error","console","warn","message","getUpdateFileUrl","filename","getAssetUrl","hash","ext"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubRawStorage.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubRawStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/GitHubRawStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"GitHubRawStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/GitHubRawStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AA8BxE,qBAAa,wBAAyB,YAAW,kBAAkB;IACzD,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmDrD,gBAAgB,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC;IAkBZ,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC;CAWrB"}
|
package/package.json
CHANGED
|
@@ -23,11 +23,19 @@ const NO_CACHE_HEADERS = { 'Cache-Control': 'no-cache' };
|
|
|
23
23
|
const bustCache = (url: string): string =>
|
|
24
24
|
`${url}?cb=${Date.now()}`;
|
|
25
25
|
|
|
26
|
+
const normalizeChannel = (channel: string): string => {
|
|
27
|
+
const lower = channel.toLowerCase();
|
|
28
|
+
if (lower === 'dev') return 'development';
|
|
29
|
+
if (lower === 'prod') return 'production';
|
|
30
|
+
return lower;
|
|
31
|
+
};
|
|
32
|
+
|
|
26
33
|
export class GitHubRawStorageProvider implements OtaStorageProvider {
|
|
27
34
|
async fetchManifest(config: OtaConfig): Promise<OtaPatch[]> {
|
|
28
35
|
if (!config.customServer) return config.bundledPatches || [];
|
|
29
36
|
|
|
30
37
|
const { baseUrl, channel, baseFolder = 'ota' } = config.customServer;
|
|
38
|
+
const channelName = normalizeChannel(channel);
|
|
31
39
|
const normalizedBaseUrl = baseUrl.endsWith('/')
|
|
32
40
|
? baseUrl.slice(0, -1)
|
|
33
41
|
: baseUrl;
|
|
@@ -54,9 +62,7 @@ export class GitHubRawStorageProvider implements OtaStorageProvider {
|
|
|
54
62
|
: res.data;
|
|
55
63
|
|
|
56
64
|
const appGroup = registry?.apps?.[config.appVersion];
|
|
57
|
-
const flavorGroup =
|
|
58
|
-
appGroup?.flavors?.[channel.toLowerCase()] ||
|
|
59
|
-
appGroup?.flavors?.development;
|
|
65
|
+
const flavorGroup = appGroup?.flavors?.[channelName];
|
|
60
66
|
|
|
61
67
|
if (!flavorGroup?.patches?.length) {
|
|
62
68
|
return config.bundledPatches || [];
|
|
@@ -88,7 +94,7 @@ export class GitHubRawStorageProvider implements OtaStorageProvider {
|
|
|
88
94
|
const normalizedBaseUrl = baseUrl.endsWith('/')
|
|
89
95
|
? baseUrl.slice(0, -1)
|
|
90
96
|
: baseUrl;
|
|
91
|
-
const channelName = channel
|
|
97
|
+
const channelName = normalizeChannel(channel);
|
|
92
98
|
|
|
93
99
|
// Cache-bust: patch files are versioned by name but GitHub CDN may
|
|
94
100
|
// serve a stale 404 response for newly uploaded files within 5 min.
|