@mentra/bluetooth-sdk 3.3.0-dev.822 → 3.3.0-dev.826
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/README.md +68 -6
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkAnalytics.kt +63 -14
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkAnalyticsTracker.kt +55 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkInstallId.kt +23 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +1 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkUpdateCheck.kt +184 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkUsageTracker.kt +388 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/GeneratedReleaseMetadata.kt +5 -5
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +223 -36
- package/android/src/test/java/com/mentra/bluetoothsdk/BluetoothSdkAnalyticsTrackerTest.kt +58 -3
- package/android/src/test/java/com/mentra/bluetoothsdk/BluetoothSdkUpdateCheckTest.kt +124 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/BluetoothSdkUsageTrackerTest.kt +263 -0
- package/build/BluetoothSdk.types.d.ts +3 -0
- package/build/BluetoothSdk.types.d.ts.map +1 -1
- package/build/BluetoothSdk.types.js.map +1 -1
- package/build/_private/BluetoothSdkModule.d.ts.map +1 -1
- package/build/_private/BluetoothSdkModule.js +2 -1
- package/build/_private/BluetoothSdkModule.js.map +1 -1
- package/build/_private/nativeLogConsole.d.ts +19 -0
- package/build/_private/nativeLogConsole.d.ts.map +1 -1
- package/build/_private/nativeLogConsole.js +12 -0
- package/build/_private/nativeLogConsole.js.map +1 -1
- package/build/generated/releaseMetadata.js +5 -5
- package/build/generated/releaseMetadata.js.map +1 -1
- package/ios/BluetoothSdkModule.swift +1 -0
- package/ios/Source/BluetoothSdkDefaults.swift +1 -1
- package/ios/Source/GeneratedReleaseMetadata.swift +5 -5
- package/ios/Source/MentraBluetoothSDK.swift +247 -48
- package/ios/Source/internal/BluetoothAvailability.swift +6 -0
- package/ios/Source/internal/BluetoothSdkAnalytics.swift +87 -13
- package/ios/Source/internal/BluetoothSdkAnalyticsTracker.swift +54 -1
- package/ios/Source/internal/BluetoothSdkInstallId.swift +21 -0
- package/ios/Source/internal/BluetoothSdkUpdateCheck.swift +223 -0
- package/ios/Source/internal/BluetoothSdkUsageTracker.swift +428 -0
- package/ios/Tests/BluetoothSdkAnalyticsTrackerTests.swift +54 -3
- package/ios/Tests/BluetoothSdkUpdateCheckTests.swift +153 -0
- package/ios/Tests/BluetoothSdkUsageTrackerTests.swift +296 -0
- package/package.json +2 -2
- package/src/BluetoothSdk.types.ts +1 -0
- package/src/_private/BluetoothSdkModule.ts +2 -1
- package/src/_private/nativeLogConsole.ts +19 -0
- package/src/generated/releaseMetadata.ts +5 -5
|
@@ -13,5 +13,24 @@ type SubscribedLogSource = LogSource & {
|
|
|
13
13
|
};
|
|
14
14
|
export declare function nativeLogMessage(message: string): string;
|
|
15
15
|
export declare function installNativeLogConsole(source: SubscribedLogSource, platform: string): void;
|
|
16
|
+
type UpdateNoticeSource = {
|
|
17
|
+
addListener(event: "sdk_update_notice", listener: (event: {
|
|
18
|
+
message: string;
|
|
19
|
+
}) => void): {
|
|
20
|
+
remove(): void;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
declare const updateNoticeKey: unique symbol;
|
|
24
|
+
type SubscribedUpdateNoticeSource = UpdateNoticeSource & {
|
|
25
|
+
[updateNoticeKey]?: {
|
|
26
|
+
remove(): void;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The native SDK checks for a newer Mentra Bluetooth SDK at startup and emits
|
|
31
|
+
* its banner when this app is behind. A console warning reaches the developer
|
|
32
|
+
* in Metro and, in debug builds, as a LogBox warning; release builds show no UI.
|
|
33
|
+
*/
|
|
34
|
+
export declare function installSdkUpdateNotice(source: SubscribedUpdateNoticeSource): void;
|
|
16
35
|
export {};
|
|
17
36
|
//# sourceMappingURL=nativeLogConsole.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeLogConsole.d.ts","sourceRoot":"","sources":["../../src/_private/nativeLogConsole.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACf,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI,GAAG;QAAC,MAAM,IAAI,IAAI,CAAA;KAAC,CAAA;CAC1F,CAAA;AAID,QAAA,MAAM,eAAe,eAAwD,CAAA;AAC7E,KAAK,mBAAmB,GAAG,SAAS,GAAG;IAAC,CAAC,eAAe,CAAC,CAAC,EAAE;QAAC,MAAM,IAAI,IAAI,CAAA;KAAC,CAAA;CAAC,CAAA;AAK7E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO3F"}
|
|
1
|
+
{"version":3,"file":"nativeLogConsole.d.ts","sourceRoot":"","sources":["../../src/_private/nativeLogConsole.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACf,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI,GAAG;QAAC,MAAM,IAAI,IAAI,CAAA;KAAC,CAAA;CAC1F,CAAA;AAID,QAAA,MAAM,eAAe,eAAwD,CAAA;AAC7E,KAAK,mBAAmB,GAAG,SAAS,GAAG;IAAC,CAAC,eAAe,CAAC,CAAC,EAAE;QAAC,MAAM,IAAI,IAAI,CAAA;KAAC,CAAA;CAAC,CAAA;AAK7E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO3F;AAED,KAAK,kBAAkB,GAAG;IACxB,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI,GAAG;QAAC,MAAM,IAAI,IAAI,CAAA;KAAC,CAAA;CACxG,CAAA;AAED,QAAA,MAAM,eAAe,eAAmD,CAAA;AACxE,KAAK,4BAA4B,GAAG,kBAAkB,GAAG;IAAC,CAAC,eAAe,CAAC,CAAC,EAAE;QAAC,MAAM,IAAI,IAAI,CAAA;KAAC,CAAA;CAAC,CAAA;AAE/F;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAKjF"}
|
|
@@ -13,4 +13,16 @@ export function installNativeLogConsole(source, platform) {
|
|
|
13
13
|
console.log(`[native:${platform}]`, nativeLogMessage(message));
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
+
const updateNoticeKey = Symbol.for("mentra.bluetooth-sdk.update-notice");
|
|
17
|
+
/**
|
|
18
|
+
* The native SDK checks for a newer Mentra Bluetooth SDK at startup and emits
|
|
19
|
+
* its banner when this app is behind. A console warning reaches the developer
|
|
20
|
+
* in Metro and, in debug builds, as a LogBox warning; release builds show no UI.
|
|
21
|
+
*/
|
|
22
|
+
export function installSdkUpdateNotice(source) {
|
|
23
|
+
source[updateNoticeKey]?.remove();
|
|
24
|
+
source[updateNoticeKey] = source.addListener("sdk_update_notice", ({ message }) => {
|
|
25
|
+
console.warn(message);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
16
28
|
//# sourceMappingURL=nativeLogConsole.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeLogConsole.js","sourceRoot":"","sources":["../../src/_private/nativeLogConsole.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,+EAA+E;AAC/E,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;AAG7E,MAAM,iBAAiB,GACrB,kSAAkS,CAAA;AAEpS,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA2B,EAAE,QAAgB;IACnF,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;QAChE,yEAAyE;QACzE,6DAA6D;QAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["type LogSource = {\n addListener(event: \"log\", listener: (event: {message: string}) => void): {remove(): void}\n}\n\n// The native module survives Fast Refresh. Replace its previous subscription\n// when JS reloads this module, rather than printing each event more than once.\nconst subscriptionKey = Symbol.for(\"mentra.bluetooth-sdk.native-log-console\")\ntype SubscribedLogSource = LogSource & {[subscriptionKey]?: {remove(): void}}\n\nconst credentialPattern =\n /(?<![A-Za-z0-9])(?:access[_-]?token|refresh[_-]?token|auth[_-]?token|id[_-]?token|client[_-]?secret|api[_-]?key)(?![A-Za-z0-9])|(?<![A-Za-z0-9])(?:token|password|secret|authorization|auth|key)(?![A-Za-z0-9])\\s*[\"']?\\s*(?:is\\s*)?[:=]\\s*[\"']?\\S+|(?<![A-Za-z0-9])bearer(?![A-Za-z0-9])\\s+\\S+/i\n\nexport function nativeLogMessage(message: string): string {\n return credentialPattern.test(message) ? \"[REDACTED]\" : message.slice(0, 16_384)\n}\n\nexport function installNativeLogConsole(source: SubscribedLogSource, platform: string): void {\n source[subscriptionKey]?.remove()\n source[subscriptionKey] = source.addListener(\"log\", ({message}) => {\n // Resolve console at delivery time so host console interception receives\n // native diagnostics in the same stream as ordinary JS logs.\n console.log(`[native:${platform}]`, nativeLogMessage(message))\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nativeLogConsole.js","sourceRoot":"","sources":["../../src/_private/nativeLogConsole.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,+EAA+E;AAC/E,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;AAG7E,MAAM,iBAAiB,GACrB,kSAAkS,CAAA;AAEpS,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA2B,EAAE,QAAgB;IACnF,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;QAChE,yEAAyE;QACzE,6DAA6D;QAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC;AAMD,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AAGxE;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAoC;IACzE,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;QAC9E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["type LogSource = {\n addListener(event: \"log\", listener: (event: {message: string}) => void): {remove(): void}\n}\n\n// The native module survives Fast Refresh. Replace its previous subscription\n// when JS reloads this module, rather than printing each event more than once.\nconst subscriptionKey = Symbol.for(\"mentra.bluetooth-sdk.native-log-console\")\ntype SubscribedLogSource = LogSource & {[subscriptionKey]?: {remove(): void}}\n\nconst credentialPattern =\n /(?<![A-Za-z0-9])(?:access[_-]?token|refresh[_-]?token|auth[_-]?token|id[_-]?token|client[_-]?secret|api[_-]?key)(?![A-Za-z0-9])|(?<![A-Za-z0-9])(?:token|password|secret|authorization|auth|key)(?![A-Za-z0-9])\\s*[\"']?\\s*(?:is\\s*)?[:=]\\s*[\"']?\\S+|(?<![A-Za-z0-9])bearer(?![A-Za-z0-9])\\s+\\S+/i\n\nexport function nativeLogMessage(message: string): string {\n return credentialPattern.test(message) ? \"[REDACTED]\" : message.slice(0, 16_384)\n}\n\nexport function installNativeLogConsole(source: SubscribedLogSource, platform: string): void {\n source[subscriptionKey]?.remove()\n source[subscriptionKey] = source.addListener(\"log\", ({message}) => {\n // Resolve console at delivery time so host console interception receives\n // native diagnostics in the same stream as ordinary JS logs.\n console.log(`[native:${platform}]`, nativeLogMessage(message))\n })\n}\n\ntype UpdateNoticeSource = {\n addListener(event: \"sdk_update_notice\", listener: (event: {message: string}) => void): {remove(): void}\n}\n\nconst updateNoticeKey = Symbol.for(\"mentra.bluetooth-sdk.update-notice\")\ntype SubscribedUpdateNoticeSource = UpdateNoticeSource & {[updateNoticeKey]?: {remove(): void}}\n\n/**\n * The native SDK checks for a newer Mentra Bluetooth SDK at startup and emits\n * its banner when this app is behind. A console warning reaches the developer\n * in Metro and, in debug builds, as a LogBox warning; release builds show no UI.\n */\nexport function installSdkUpdateNotice(source: SubscribedUpdateNoticeSource): void {\n source[updateNoticeKey]?.remove()\n source[updateNoticeKey] = source.addListener(\"sdk_update_notice\", ({message}) => {\n console.warn(message)\n })\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export const BLUETOOTH_SDK_RELEASE_METADATA = Object.freeze({
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"familyBaseVersion": "3.3.0",
|
|
4
|
-
"releaseIdentity": "3.3.0-dev.
|
|
5
|
-
"releaseSetId": "mentra-3.3.0-dev.
|
|
6
|
-
"sourceCommit": "
|
|
7
|
-
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.3.0/mentra-live-ota-3.3.0-dev.
|
|
8
|
-
"otaManifestSha256": "
|
|
4
|
+
"releaseIdentity": "3.3.0-dev.826",
|
|
5
|
+
"releaseSetId": "mentra-3.3.0-dev.826",
|
|
6
|
+
"sourceCommit": "d3dc7afa70ede09bb3cda495cf3921cf26aed5ac",
|
|
7
|
+
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.3.0/mentra-live-ota-3.3.0-dev.826.json",
|
|
8
|
+
"otaManifestSha256": "6d71c204d4413d0dcb95203cc0a1d67cee5b5d9b6f9dba615a284cabb830e791"
|
|
9
9
|
});
|
|
10
10
|
//# sourceMappingURL=releaseMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,8BAA8B,GAA0C,MAAM,CAAC,MAAM,CAAC;IACjG,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,eAAe;IAClC,cAAc,EAAE,sBAAsB;IACtC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,iIAAiI;IACnJ,mBAAmB,EAAE,kEAAkE;CACxF,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface BluetoothSdkReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const BLUETOOTH_SDK_RELEASE_METADATA: Readonly<BluetoothSdkReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"3.3.0\",\n \"releaseIdentity\": \"3.3.0-dev.
|
|
1
|
+
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,8BAA8B,GAA0C,MAAM,CAAC,MAAM,CAAC;IACjG,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,eAAe;IAClC,cAAc,EAAE,sBAAsB;IACtC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,iIAAiI;IACnJ,mBAAmB,EAAE,kEAAkE;CACxF,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface BluetoothSdkReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const BLUETOOTH_SDK_RELEASE_METADATA: Readonly<BluetoothSdkReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"3.3.0\",\n \"releaseIdentity\": \"3.3.0-dev.826\",\n \"releaseSetId\": \"mentra-3.3.0-dev.826\",\n \"sourceCommit\": \"d3dc7afa70ede09bb3cda495cf3921cf26aed5ac\",\n \"otaManifestUrl\": \"https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.3.0/mentra-live-ota-3.3.0-dev.826.json\",\n \"otaManifestSha256\": \"6d71c204d4413d0dcb95203cc0a1d67cee5b5d9b6f9dba615a284cabb830e791\"\n})\n"]}
|
|
@@ -16,7 +16,7 @@ enum BluetoothSdkDefaults {
|
|
|
16
16
|
/// silently disable it on every pair the app touches.
|
|
17
17
|
static let autoPowerOffEnabled = false
|
|
18
18
|
private static let infoSdkVersionKey = "MentraBluetoothSdkVersion"
|
|
19
|
-
private static let swiftPackageSdkVersion = "3.3.0-dev.
|
|
19
|
+
private static let swiftPackageSdkVersion = "3.3.0-dev.826"
|
|
20
20
|
private static let swiftPackageSdkVersionPlaceholder = "__MENTRA" + "_BLUETOOTH_SDK_VERSION__"
|
|
21
21
|
|
|
22
22
|
private static func normalizedSdkVersion(_ value: String?) -> String? {
|
|
@@ -3,9 +3,9 @@ import Foundation
|
|
|
3
3
|
/// Generated by release CI. Do not edit in a release checkout.
|
|
4
4
|
enum GeneratedReleaseMetadata {
|
|
5
5
|
static let familyBaseVersion = "3.3.0"
|
|
6
|
-
static let releaseIdentity = "3.3.0-dev.
|
|
7
|
-
static let releaseSetId = "mentra-3.3.0-dev.
|
|
8
|
-
static let sourceCommit = "
|
|
9
|
-
static let otaManifestUrl = "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.3.0/mentra-live-ota-3.3.0-dev.
|
|
10
|
-
static let otaManifestSha256 = "
|
|
6
|
+
static let releaseIdentity = "3.3.0-dev.826"
|
|
7
|
+
static let releaseSetId = "mentra-3.3.0-dev.826"
|
|
8
|
+
static let sourceCommit = "d3dc7afa70ede09bb3cda495cf3921cf26aed5ac"
|
|
9
|
+
static let otaManifestUrl = "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.3.0/mentra-live-ota-3.3.0-dev.826.json"
|
|
10
|
+
static let otaManifestSha256 = "6d71c204d4413d0dcb95203cc0a1d67cee5b5d9b6f9dba615a284cabb830e791"
|
|
11
11
|
}
|