@hot-updater/react-native 1.0.0-rc.35 → 1.0.0-rc.37

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.
@@ -213,31 +213,28 @@ extern "C" NSString *HotUpdaterGetMinBundleId(void)
213
213
  #if DEBUG
214
214
  uuid = @"00000000-0000-0000-0000-000000000000";
215
215
  #else
216
- // Step 1: Try to read HOT_UPDATER_BUILD_TIMESTAMP from Info.plist
217
- NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
218
- NSString *customValue = infoDictionary[@"HOT_UPDATER_BUILD_TIMESTAMP"];
219
-
220
- // Step 2: If custom value exists and is not empty
221
- if (customValue && customValue.length > 0 && ![customValue isEqualToString:@"$(HOT_UPDATER_BUILD_TIMESTAMP)"]) {
222
- // Check if it's a timestamp (pure digits) or UUID
223
- NSCharacterSet *nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
224
- BOOL isTimestamp = ([customValue rangeOfCharacterFromSet:nonDigits].location == NSNotFound);
225
-
226
- if (isTimestamp) {
227
- // Convert timestamp (milliseconds) to UUID v7
228
- uint64_t timestampMs = [customValue longLongValue];
229
- uuid = [HotUpdater generateUUIDv7FromTimestamp:timestampMs];
230
- RCTLogInfo(@"[HotUpdater.mm] Using timestamp %@ as MIN_BUNDLE_ID: %@", customValue, uuid);
231
- } else {
232
- // Use as UUID directly
233
- uuid = customValue;
234
- RCTLogInfo(@"[HotUpdater.mm] Using custom MIN_BUNDLE_ID from Info.plist: %@", uuid);
216
+ // Step 1: Use the HOT_UPDATER_MIN_BUNDLE_ID build setting, which the
217
+ // hot-updater CLI passes to xcodebuild and the Info.plist slot it adds
218
+ // (`$(HOT_UPDATER_MIN_BUNDLE_ID)`) carries into the app, as Android
219
+ // takes -PMIN_BUNDLE_ID.
220
+ NSString *customValue = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"HOT_UPDATER_MIN_BUNDLE_ID"];
221
+ if ([customValue isKindOfClass:[NSString class]]) {
222
+ NSString *trimmed = [customValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
223
+ // An unset build setting leaves the slot empty or unexpanded; anything
224
+ // but a UUID falls back to the compile time below.
225
+ NSUUID *parsed = trimmed.length > 0 ? [[NSUUID alloc] initWithUUIDString:trimmed] : nil;
226
+ if (parsed) {
227
+ uuid = parsed.UUIDString.lowercaseString;
228
+ RCTLogInfo(@"[HotUpdater.mm] Using MIN_BUNDLE_ID from the HOT_UPDATER_MIN_BUNDLE_ID build setting: %@", uuid);
229
+ return;
230
+ }
231
+ if (trimmed.length > 0 && ![trimmed isEqualToString:@"$(HOT_UPDATER_MIN_BUNDLE_ID)"]) {
232
+ RCTLogWarn(@"[HotUpdater.mm] Ignoring HOT_UPDATER_MIN_BUNDLE_ID %@: not a UUID", trimmed);
235
233
  }
236
- return;
237
234
  }
238
235
 
239
- // Step 3: Fallback to default logic (26-hour subtraction)
240
- RCTLogInfo(@"[HotUpdater.mm] No custom MIN_BUNDLE_ID found, using default calculation");
236
+ // Step 2: Fall back to the compile time (26-hour subtraction)
237
+ RCTLogInfo(@"[HotUpdater.mm] No HOT_UPDATER_MIN_BUNDLE_ID build setting, using the compile time");
241
238
 
242
239
  NSString *compileDateStr = [NSString stringWithFormat:@"%s %s", __DATE__, __TIME__];
243
240
  NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
@@ -28,6 +28,7 @@ const {
28
28
  },
29
29
  getInstallId: () => (0, _native.getInstallId)(),
30
30
  getAppVersion: () => (0, _native.getAppVersion)(),
31
+ getMinBundleId: () => (0, _native.getMinBundleId)(),
31
32
  getBundleId: () => (0, _native.getBundleId)(),
32
33
  getChannel: () => (0, _native.getChannel)(),
33
34
  getCohort: () => (0, _native.getCohort)(),
@@ -1 +1 @@
1
- {"version":3,"names":["_protocol","require","_reactNative","_native","_sdkVersion","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","createPluginHost","fetch","url","init","platform","Platform","OS","isDebugBuild","__DEV__","sdkVersion","HOT_UPDATER_SDK_VERSION","getInstallId","getAppVersion","getBundleId","getChannel","getCohort","getFingerprintHash","getStorageItem","key","setStorageItem","value","now","Date","exports"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAUA,IAAAG,WAAA,GAAAH,OAAA;AAIA;AACO,MAAM;EACXI,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,GAAG,IAAAC,0BAAgB,EAAC;EACnBC,KAAK,EAAEA,CAACC,GAAG,EAAEC,IAAI,KAAKF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC;EACtC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAOC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACtD,CAAC;EACD,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;EAClD,CAAC;EACD,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOC,mCAAuB;EAChC,CAAC;EACDC,YAAY,EAAEA,CAAA,KAAM,IAAAA,oBAAY,EAAC,CAAC;EAClCC,aAAa,EAAEA,CAAA,KAAM,IAAAA,qBAAa,EAAC,CAAC;EACpCC,WAAW,EAAEA,CAAA,KAAM,IAAAA,mBAAW,EAAC,CAAC;EAChCC,UAAU,EAAEA,CAAA,KAAM,IAAAA,kBAAU,EAAC,CAAC;EAC9BC,SAAS,EAAEA,CAAA,KAAM,IAAAA,iBAAS,EAAC,CAAC;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAAA,0BAAkB,EAAC,CAAC;EAC9CC,cAAc,EAAGC,GAAG,IAAK,IAAAD,sBAAc,EAACC,GAAG,CAAC;EAC5CC,cAAc,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAK,IAAAD,sBAAc,EAACD,GAAG,EAAEE,KAAK,CAAC;EAC1DC,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACD,GAAG,CAAC;AACtB,CAAC,CAAC;AAACE,OAAA,CAAAxB,cAAA,GAAAA,cAAA;AAAAwB,OAAA,CAAAzB,kBAAA,GAAAA,kBAAA;AAAAyB,OAAA,CAAA1B,gBAAA,GAAAA,gBAAA;AAAA0B,OAAA,CAAA3B,aAAA,GAAAA,aAAA;AAAA2B,OAAA,CAAA5B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_protocol","require","_reactNative","_native","_sdkVersion","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","createPluginHost","fetch","url","init","platform","Platform","OS","isDebugBuild","__DEV__","sdkVersion","HOT_UPDATER_SDK_VERSION","getInstallId","getAppVersion","getMinBundleId","getBundleId","getChannel","getCohort","getFingerprintHash","getStorageItem","key","setStorageItem","value","now","Date","exports"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAWA,IAAAG,WAAA,GAAAH,OAAA;AAIA;AACO,MAAM;EACXI,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,GAAG,IAAAC,0BAAgB,EAAC;EACnBC,KAAK,EAAEA,CAACC,GAAG,EAAEC,IAAI,KAAKF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC;EACtC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAOC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACtD,CAAC;EACD,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;EAClD,CAAC;EACD,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOC,mCAAuB;EAChC,CAAC;EACDC,YAAY,EAAEA,CAAA,KAAM,IAAAA,oBAAY,EAAC,CAAC;EAClCC,aAAa,EAAEA,CAAA,KAAM,IAAAA,qBAAa,EAAC,CAAC;EACpCC,cAAc,EAAEA,CAAA,KAAM,IAAAA,sBAAc,EAAC,CAAC;EACtCC,WAAW,EAAEA,CAAA,KAAM,IAAAA,mBAAW,EAAC,CAAC;EAChCC,UAAU,EAAEA,CAAA,KAAM,IAAAA,kBAAU,EAAC,CAAC;EAC9BC,SAAS,EAAEA,CAAA,KAAM,IAAAA,iBAAS,EAAC,CAAC;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAAA,0BAAkB,EAAC,CAAC;EAC9CC,cAAc,EAAGC,GAAG,IAAK,IAAAD,sBAAc,EAACC,GAAG,CAAC;EAC5CC,cAAc,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAK,IAAAD,sBAAc,EAACD,GAAG,EAAEE,KAAK,CAAC;EAC1DC,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACD,GAAG,CAAC;AACtB,CAAC,CAAC;AAACE,OAAA,CAAAzB,cAAA,GAAAA,cAAA;AAAAyB,OAAA,CAAA1B,kBAAA,GAAAA,kBAAA;AAAA0B,OAAA,CAAA3B,gBAAA,GAAAA,gBAAA;AAAA2B,OAAA,CAAA5B,aAAA,GAAAA,aAAA;AAAA4B,OAAA,CAAA7B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.HOT_UPDATER_SDK_VERSION = void 0;
7
- const HOT_UPDATER_SDK_VERSION = exports.HOT_UPDATER_SDK_VERSION = "1.0.0-rc.35";
7
+ const HOT_UPDATER_SDK_VERSION = exports.HOT_UPDATER_SDK_VERSION = "1.0.0-rc.37";
8
8
  //# sourceMappingURL=sdkVersion.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { createPluginHost } from "@hot-updater/protocol";
4
4
  import { Platform } from "react-native";
5
- import { getAppVersion, getBundleId, getChannel, getCohort, getFingerprintHash, getInstallId, getStorageItem, setStorageItem } from "./native.js";
5
+ import { getAppVersion, getBundleId, getChannel, getCohort, getFingerprintHash, getInstallId, getMinBundleId, getStorageItem, setStorageItem } from "./native.js";
6
6
  import { HOT_UPDATER_SDK_VERSION } from "./sdkVersion.js";
7
7
  /** The app's plugin host: plugins read the native module and fetch the configured server. */
8
8
  export const {
@@ -24,6 +24,7 @@ export const {
24
24
  },
25
25
  getInstallId: () => getInstallId(),
26
26
  getAppVersion: () => getAppVersion(),
27
+ getMinBundleId: () => getMinBundleId(),
27
28
  getBundleId: () => getBundleId(),
28
29
  getChannel: () => getChannel(),
29
30
  getCohort: () => getCohort(),
@@ -1 +1 @@
1
- {"version":3,"names":["createPluginHost","Platform","getAppVersion","getBundleId","getChannel","getCohort","getFingerprintHash","getInstallId","getStorageItem","setStorageItem","HOT_UPDATER_SDK_VERSION","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","fetch","url","init","platform","OS","isDebugBuild","__DEV__","sdkVersion","key","value","now","Date"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,kBAAkB,EAClBC,YAAY,EACZC,cAAc,EACdC,cAAc,QACT,aAAU;AACjB,SAASC,uBAAuB,QAAQ,iBAAc;AAItD;AACA,OAAO,MAAM;EACXC,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,GAAGf,gBAAgB,CAAC;EACnBgB,KAAK,EAAEA,CAACC,GAAG,EAAEC,IAAI,KAAKF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC;EACtC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAOlB,QAAQ,CAACmB,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACtD,CAAC;EACD,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;EAClD,CAAC;EACD,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOb,uBAAuB;EAChC,CAAC;EACDH,YAAY,EAAEA,CAAA,KAAMA,YAAY,CAAC,CAAC;EAClCL,aAAa,EAAEA,CAAA,KAAMA,aAAa,CAAC,CAAC;EACpCC,WAAW,EAAEA,CAAA,KAAMA,WAAW,CAAC,CAAC;EAChCC,UAAU,EAAEA,CAAA,KAAMA,UAAU,CAAC,CAAC;EAC9BC,SAAS,EAAEA,CAAA,KAAMA,SAAS,CAAC,CAAC;EAC5BC,kBAAkB,EAAEA,CAAA,KAAMA,kBAAkB,CAAC,CAAC;EAC9CE,cAAc,EAAGgB,GAAG,IAAKhB,cAAc,CAACgB,GAAG,CAAC;EAC5Cf,cAAc,EAAEA,CAACe,GAAG,EAAEC,KAAK,KAAKhB,cAAc,CAACe,GAAG,EAAEC,KAAK,CAAC;EAC1DC,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACD,GAAG,CAAC;AACtB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createPluginHost","Platform","getAppVersion","getBundleId","getChannel","getCohort","getFingerprintHash","getInstallId","getMinBundleId","getStorageItem","setStorageItem","HOT_UPDATER_SDK_VERSION","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","fetch","url","init","platform","OS","isDebugBuild","__DEV__","sdkVersion","key","value","now","Date"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,kBAAkB,EAClBC,YAAY,EACZC,cAAc,EACdC,cAAc,EACdC,cAAc,QACT,aAAU;AACjB,SAASC,uBAAuB,QAAQ,iBAAc;AAItD;AACA,OAAO,MAAM;EACXC,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,GAAGhB,gBAAgB,CAAC;EACnBiB,KAAK,EAAEA,CAACC,GAAG,EAAEC,IAAI,KAAKF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC;EACtC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAOnB,QAAQ,CAACoB,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACtD,CAAC;EACD,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;EAClD,CAAC;EACD,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOb,uBAAuB;EAChC,CAAC;EACDJ,YAAY,EAAEA,CAAA,KAAMA,YAAY,CAAC,CAAC;EAClCL,aAAa,EAAEA,CAAA,KAAMA,aAAa,CAAC,CAAC;EACpCM,cAAc,EAAEA,CAAA,KAAMA,cAAc,CAAC,CAAC;EACtCL,WAAW,EAAEA,CAAA,KAAMA,WAAW,CAAC,CAAC;EAChCC,UAAU,EAAEA,CAAA,KAAMA,UAAU,CAAC,CAAC;EAC9BC,SAAS,EAAEA,CAAA,KAAMA,SAAS,CAAC,CAAC;EAC5BC,kBAAkB,EAAEA,CAAA,KAAMA,kBAAkB,CAAC,CAAC;EAC9CG,cAAc,EAAGgB,GAAG,IAAKhB,cAAc,CAACgB,GAAG,CAAC;EAC5Cf,cAAc,EAAEA,CAACe,GAAG,EAAEC,KAAK,KAAKhB,cAAc,CAACe,GAAG,EAAEC,KAAK,CAAC;EAC1DC,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACD,GAAG,CAAC;AACtB,CAAC,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
 
3
- export const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.35";
3
+ export const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.37";
4
4
  //# sourceMappingURL=sdkVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"AAeA,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MACL,gBAAgB,8JAChB,aAAa,qEACb,gBAAgB,wNAChB,kBAAkB,kKAClB,cAAc,+JAqBd,CAAC"}
1
+ {"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MACL,gBAAgB,8JAChB,aAAa,qEACb,gBAAgB,wNAChB,kBAAkB,kKAClB,cAAc,+JAsBd,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.35";
1
+ export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.37";
2
2
  //# sourceMappingURL=sdkVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"AAeA,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MACL,gBAAgB,8JAChB,aAAa,qEACb,gBAAgB,wNAChB,kBAAkB,kKAClB,cAAc,+JAqBd,CAAC"}
1
+ {"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MACL,gBAAgB,8JAChB,aAAa,qEACb,gBAAgB,wNAChB,kBAAkB,kKAClB,cAAc,+JAsBd,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.35";
1
+ export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.37";
2
2
  //# sourceMappingURL=sdkVersion.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hot-updater/react-native",
3
- "version": "1.0.0-rc.35",
3
+ "version": "1.0.0-rc.37",
4
4
  "description": "React Native OTA solution for self-hosted",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/commonjs/index.js",
@@ -123,8 +123,8 @@
123
123
  },
124
124
  "dependencies": {
125
125
  "use-sync-external-store": "1.5.0",
126
- "@hot-updater/protocol": "1.0.0-rc.35",
127
- "@hot-updater/plugin-insights": "1.0.0-rc.35"
126
+ "@hot-updater/protocol": "1.0.0-rc.37",
127
+ "@hot-updater/plugin-insights": "1.0.0-rc.37"
128
128
  },
129
129
  "scripts": {
130
130
  "build": "node ./scripts/sync-sdk-version.mjs run -- bob build",
package/src/pluginHost.ts CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  getCohort,
9
9
  getFingerprintHash,
10
10
  getInstallId,
11
+ getMinBundleId,
11
12
  getStorageItem,
12
13
  setStorageItem,
13
14
  } from "./native";
@@ -35,6 +36,7 @@ export const {
35
36
  },
36
37
  getInstallId: () => getInstallId(),
37
38
  getAppVersion: () => getAppVersion(),
39
+ getMinBundleId: () => getMinBundleId(),
38
40
  getBundleId: () => getBundleId(),
39
41
  getChannel: () => getChannel(),
40
42
  getCohort: () => getCohort(),
package/src/sdkVersion.ts CHANGED
@@ -1 +1 @@
1
- export const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.35";
1
+ export const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.37";