@itwin/core-mobile 5.4.0-dev.7 → 5.5.0-dev.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/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # Change Log - @itwin/core-mobile
2
2
 
3
- This log was last generated on Thu, 06 Nov 2025 20:30:21 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 20 Nov 2025 22:31:49 GMT and should not be manually modified.
4
+
5
+ ## 5.3.3
6
+ Thu, 20 Nov 2025 22:30:37 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 5.3.2
11
+ Thu, 13 Nov 2025 23:23:23 GMT
12
+
13
+ _Version update only_
4
14
 
5
15
  ## 5.3.1
6
16
  Thu, 06 Nov 2025 20:29:06 GMT
@@ -12,6 +22,16 @@ Mon, 03 Nov 2025 19:02:35 GMT
12
22
 
13
23
  _Version update only_
14
24
 
25
+ ## 5.2.6
26
+ Thu, 13 Nov 2025 21:13:51 GMT
27
+
28
+ _Version update only_
29
+
30
+ ## 5.2.5
31
+ Thu, 13 Nov 2025 07:45:14 GMT
32
+
33
+ _Version update only_
34
+
15
35
  ## 5.2.4
16
36
  Fri, 24 Oct 2025 16:20:38 GMT
17
37
 
@@ -121,6 +141,11 @@ Fri, 13 Jun 2025 20:25:38 GMT
121
141
  - Change core peer dependencies to strict version.
122
142
  - Update to target iOS 17
123
143
 
144
+ ## 4.11.7
145
+ Thu, 13 Nov 2025 20:49:33 GMT
146
+
147
+ _Version update only_
148
+
124
149
  ## 4.11.6
125
150
  Mon, 16 Jun 2025 15:00:15 GMT
126
151
 
@@ -1 +1 @@
1
- {"version":3,"file":"MobileHost.d.ts","sourceRoot":"","sources":["../../../src/backend/MobileHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MobileHost.d.ts","sourceRoot":"","sources":["../../../src/backend/MobileHost.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,12 @@ class MobileDevice {
35
35
  case "authAccessTokenChanged":
36
36
  MobileHost.onAuthAccessTokenChanged.raiseEvent(args[0], args[1]);
37
37
  break;
38
+ case "online":
39
+ core_backend_1.NativeHost.overrideInternetConnectivity(core_common_1.OverriddenBy.Browser, core_common_1.InternetConnectivityStatus.Online);
40
+ break;
41
+ case "offline":
42
+ core_backend_1.NativeHost.overrideInternetConnectivity(core_common_1.OverriddenBy.Browser, core_common_1.InternetConnectivityStatus.Offline);
43
+ break;
38
44
  }
39
45
  }
40
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MobileHost.js","sourceRoot":"","sources":["../../../src/backend/MobileHost.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAA4E;AAC5E,sDAAsF;AACtF,oDAAiF;AACjF,2DAAwF;AAExF,iEAA8D;AAE9D,iEAA8D;AAC9D,6EAA0E;AAC1E,uDAAmD;AAwBnD,YAAY;AACZ,MAAsB,YAAY;IACzB,IAAI,CAAC,SAAuB,EAAE,GAAG,IAAW;QACjD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,eAAe;gBAClB,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,oBAAoB;gBACvB,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,iBAAiB;gBACpB,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,iBAAiB;gBACpB,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,eAAe;gBAClB,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,wBAAwB;gBAC3B,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM;QACV,CAAC;IACH,CAAC;CAYF;AAlCD,oCAkCC;AAED,MAAM,gBAAiB,SAAQ,yBAAU;IACvC,IAAW,WAAW,KAAK,OAAO,mCAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC/D,KAAK,CAAC,SAAS,CAAC,UAAkB;QACvC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IACM,KAAK,CAAC,cAAc;QACzB,OAAO,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;CACF;AAWD;;GAEG;AACH,MAAa,UAAU;IACb,MAAM,CAAC,OAAO,CAAgB;IAC/B,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC,OAAQ,CAAC,CAAC,CAAC;IACpD;;;;OAIG;IACI,MAAM,CAAU,eAAe,GAAG,IAAI,sBAAO,EAAE,CAAC;IACvD;;OAEG;IACI,MAAM,CAAU,oBAAoB,GAAG,IAAI,sBAAO,EAAE,CAAC;IAC5D;;OAEG;IACI,MAAM,CAAU,iBAAiB,GAAG,IAAI,sBAAO,EAAE,CAAC;IACzD;;OAEG;IACI,MAAM,CAAU,iBAAiB,GAAG,IAAI,sBAAO,EAAE,CAAC;IACzD;;;;;OAKG;IACI,MAAM,CAAU,WAAW,GAAG,IAAI,sBAAO,EAAE,CAAC;IACnD;;OAEG;IACI,MAAM,CAAU,eAAe,GAAG,IAAI,sBAAO,EAAE,CAAC;IACvD;;OAEG;IACI,MAAM,CAAU,wBAAwB,GAAG,IAAI,sBAAO,EAAiF,CAAC;IAE/I,yEAAyE;IAClE,MAAM,CAAC,oBAAoB,CAAsC,UAAa,EAAE,GAAG,IAAwC;QAChI,OAAO,sBAAO,CAAC,IAAI,CAAC,mCAAgB,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,iBAAiB;IACV,MAAM,CAAC,SAAS,CAAC,UAAkB;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,iBAAiB;IACV,MAAM,CAAC,KAAK,CAAC,kBAAkB;QACpC,OAAO,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAyB,EAAE,cAAuB,EAAE,KAAc,EAAE,EAAE;gBACpG,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;IACV,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,UAAkB,EAAE,QAA2B,EAAE,aAA6B;QAClI,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE3C,IAAI,UAA8C,CAAC;YACnD,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,8BAA8B,GAAG,IAAI,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACb,UAAU,GAAG,CAAC,aAAqB,EAAE,iBAAyB,EAAE,yBAAiC,EAAE,EAAE;oBACnG,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC/B,MAAM,kBAAkB,GAAG,WAAW,GAAG,cAAc,CAAC;oBACxD,uEAAuE;oBACvE,MAAM,SAAS,GAAG,CAAC,yBAAyB,GAAG,iBAAiB,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;oBACpF,IAAI,kBAAkB,GAAG,8BAA8B,IAAI,CAAC,SAAS;wBACnE,OAAO;oBAET,cAAc,GAAG,WAAW,CAAC;oBAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,iBAAiB,GAAG,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3F,QAAQ,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrF,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,YAAoB,EAAE,gBAAwB,EAAE,SAAkB,EAAE,GAAY,EAAE,EAAE;gBACpK,IAAI,SAAS;oBACX,MAAM,CAAC,IAAI,sCAAkB,CAAC,8BAAe,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC,CAAC;qBAC1F,IAAI,GAAG;oBACV,MAAM,CAAC,IAAI,kCAAc,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC;;oBAEnD,OAAO,EAAE,CAAC;YACd,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,OAAO,KAAK,OAAO,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAElE,yCAAyC;IAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAoB;QAC9C,MAAM,mBAAmB,GAAG,IAAI,uDAA0B,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,IAAI,IAAK,YAAoB,EAAE,CAAC;YACtE,+BAA+B;YAC/B,8DAA8D;YAC7D,MAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE;gBACpC,UAAU,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,EAAE;gBACzC,IAAI,CAAC;oBACH,UAAU,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;gBAC9D,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC,CAAC,8CAA8C;YAC5D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE;gBACpC,UAAU,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,WAA+B,EAAE,cAAkC,EAAE,EAAE;gBAChH,mBAAmB,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAChE,UAAU,CAAC,oBAAoB,CAAC,8BAA8B,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YAEH,uDAAuD;YACvD,IAAA,gCAAc,GAAE,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,iCAAmB,EAAE,CAAC;QACjE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAE3F,MAAM,UAAU,GAAG,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC;QACzC,UAAU,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QACrD,MAAM,yBAAU,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAEjD,IAAI,sBAAO,CAAC,OAAO;YACjB,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAE9B,MAAM,aAAa,GAAG,GAAG,EAAE,UAAU,EAAE,aAAa,IAAI,EAAE,CAAC;QAE3D,mCAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;;AA1IH,gCA2IC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { AccessToken, BeEvent, BriefcaseStatus } from \"@itwin/core-bentley\";\nimport { IpcHandler, IpcHost, NativeHost, NativeHostOpts } from \"@itwin/core-backend\";\nimport { IpcWebSocketBackend, RpcInterfaceDefinition } from \"@itwin/core-common\";\nimport { CancelRequest, DownloadFailed, UserCancelledError } from \"./MobileFileHandler\";\nimport { ProgressCallback } from \"./Request\";\nimport { mobileAppStrings } from \"../common/MobileAppChannel\";\nimport { BatteryState, DeviceEvents, MobileAppFunctions, MobileNotifications, Orientation } from \"../common/MobileAppProps\";\nimport { MobileRpcManager } from \"../common/MobileRpcManager\";\nimport { MobileAuthorizationBackend } from \"./MobileAuthorizationBackend\";\nimport { setupMobileRpc } from \"./MobileRpcServer\";\n\n/** @beta */\nexport type MobileCompletionCallback = (downloadUrl: string, downloadFileUrl: string, cancelled: boolean, err?: string) => void;\n/** @beta */\nexport type MobileProgressCallback = (bytesWritten: number, totalBytesWritten: number, totalBytesExpectedToWrite: number) => void;\n/** @beta */\nexport type MobileCancelCallback = () => boolean;\n\n/** @beta */\nexport interface DownloadTask {\n url: string;\n downloadPath: string;\n isDetached: boolean;\n isRunning: boolean;\n totalBytes?: number;\n doneBytes?: number;\n cancelId?: number;\n isBackground?: boolean;\n cancel?: MobileCancelCallback;\n toBackground: () => boolean;\n toForeground: () => boolean;\n}\n\n/** @beta */\nexport abstract class MobileDevice {\n public emit(eventName: DeviceEvents, ...args: any[]) {\n switch (eventName) {\n case \"memoryWarning\":\n MobileHost.onMemoryWarning.raiseEvent(...args);\n break;\n case \"orientationChanged\":\n MobileHost.onOrientationChanged.raiseEvent(...args);\n break;\n case \"enterForeground\":\n MobileHost.onEnterForeground.raiseEvent(...args);\n break;\n case \"enterBackground\":\n MobileHost.onEnterBackground.raiseEvent(...args);\n break;\n case \"willTerminate\":\n MobileHost.onWillTerminate.raiseEvent(...args);\n break;\n case \"authAccessTokenChanged\":\n MobileHost.onAuthAccessTokenChanged.raiseEvent(args[0], args[1]);\n break;\n }\n }\n\n public abstract getOrientation(): Orientation;\n public abstract getBatteryState(): BatteryState;\n public abstract getBatteryLevel(): number;\n public abstract createDownloadTask(downloadUrl: string, isBackground: boolean, downloadTo: string, completion: MobileCompletionCallback, progress?: MobileProgressCallback): number;\n public abstract cancelDownloadTask(cancelId: number): boolean;\n public abstract getDownloadTasks(): DownloadTask[];\n public abstract resumeDownloadInForeground(requestId: number): boolean;\n public abstract resumeDownloadInBackground(requestId: number): boolean;\n public abstract reconnect(connection: number): void;\n public abstract authGetAccessToken(callback: (accessToken?: string, expirationDate?: string, err?: string) => void): void;\n}\n\nclass MobileAppHandler extends IpcHandler implements MobileAppFunctions {\n public get channelName() { return mobileAppStrings.mobileAppChannel; }\n public async reconnect(connection: number) {\n MobileHost.reconnect(connection);\n }\n public async getAccessToken() {\n return MobileHost.authGetAccessToken();\n }\n}\n\n/** @beta */\nexport interface MobileHostOpts extends NativeHostOpts {\n mobileHost?: {\n device?: MobileDevice;\n /** list of RPC interface definitions to register */\n rpcInterfaces?: RpcInterfaceDefinition[];\n };\n}\n\n/**\n * @beta\n */\nexport class MobileHost {\n private static _device?: MobileDevice;\n public static get device() { return this._device!; }\n /**\n * Raised when the mobile OS informs a mobile app that it is running low on memory.\n *\n * @note iOS and iPadOS send this warning so often as to make it not very useful.\n */\n public static readonly onMemoryWarning = new BeEvent();\n /**\n * Raised when the device orientation changes on a device running a mobile app.\n */\n public static readonly onOrientationChanged = new BeEvent();\n /**\n * Raised after a mobile app returns to the foreground.\n */\n public static readonly onEnterForeground = new BeEvent();\n /**\n * Raised when a mobile app is about to enter the background.\n */\n public static readonly onEnterBackground = new BeEvent();\n /**\n * Raised after a mobile backend connects to the mobile frontend.\n *\n * @note this will be raised at startup, and it will also be raised every time the app returns\n * to the foreground from the background.\n */\n public static readonly onConnected = new BeEvent();\n /**\n * Raised when a mobile app is about to be terminated by the mobile OS.\n */\n public static readonly onWillTerminate = new BeEvent();\n /**\n * Raised when the native auth client informs the mobile host that the access token has changed.\n */\n public static readonly onAuthAccessTokenChanged = new BeEvent<(accessToken: string | undefined, expirationDate: string | undefined) => void>();\n\n /** Send a notification to the MobileApp connected to this MobileHost. */\n public static notifyMobileFrontend<T extends keyof MobileNotifications>(methodName: T, ...args: Parameters<MobileNotifications[T]>) {\n return IpcHost.send(mobileAppStrings.mobileAppNotify, methodName, ...args);\n }\n\n /** @internal */\n public static reconnect(connection: number) {\n this.device.reconnect(connection);\n }\n\n /** @internal */\n public static async authGetAccessToken() {\n return new Promise<[AccessToken, string]>((resolve, reject) => {\n this.device.authGetAccessToken((tokenString?: AccessToken, expirationDate?: string, error?: string) => {\n if (error) {\n reject(new Error(error));\n } else {\n resolve([tokenString ?? \"\", expirationDate ?? \"\"]);\n }\n });\n });\n }\n\n /** @internal */\n public static async downloadFile(downloadUrl: string, downloadTo: string, progress?: ProgressCallback, cancelRequest?: CancelRequest): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n\n let progressCb: MobileProgressCallback | undefined;\n let lastReportedOn = Date.now();\n const minTimeBeforeReportingProgress = 1000;\n if (progress) {\n progressCb = (_bytesWritten: number, totalBytesWritten: number, totalBytesExpectedToWrite: number) => {\n const currentTime = Date.now();\n const timeSinceLastEvent = currentTime - lastReportedOn;\n // report all event for last 5 Mbs so we never miss 100% progress event\n const lastEvent = (totalBytesExpectedToWrite - totalBytesWritten) < 1024 * 1024 * 5;\n if (timeSinceLastEvent < minTimeBeforeReportingProgress && !lastEvent)\n return;\n\n lastReportedOn = currentTime;\n const percent = Number((100 * (totalBytesWritten / totalBytesExpectedToWrite)).toFixed(2));\n progress({ total: totalBytesExpectedToWrite, loaded: totalBytesWritten, percent });\n };\n }\n const requestId = this.device.createDownloadTask(downloadUrl, false, downloadTo, (_downloadUrl: string, _downloadFileUrl: string, cancelled: boolean, err?: string) => {\n if (cancelled)\n reject(new UserCancelledError(BriefcaseStatus.DownloadCancelled, \"User cancelled download\"));\n else if (err)\n reject(new DownloadFailed(400, \"Download failed\"));\n else\n resolve();\n }, progressCb);\n if (cancelRequest) {\n cancelRequest.cancel = () => this.device.cancelDownloadTask(requestId);\n }\n });\n }\n\n public static get isValid() { return undefined !== this._device; }\n\n /** Start the backend of a mobile app. */\n public static async startup(opt?: MobileHostOpts): Promise<void> {\n const authorizationClient = new MobileAuthorizationBackend();\n if (!this.isValid) {\n this._device = opt?.mobileHost?.device ?? new (MobileDevice as any)();\n // set global device interface.\n // NOTE: __iTwinJsNativeBridge is used by backend native code.\n (global as any).__iTwinJsNativeBridge = this._device;\n this.onMemoryWarning.addListener(() => {\n MobileHost.notifyMobileFrontend(\"notifyMemoryWarning\");\n });\n this.onOrientationChanged.addListener(() => {\n try {\n MobileHost.notifyMobileFrontend(\"notifyOrientationChanged\");\n } catch { } // Ignore: frontend is not currently connected\n });\n this.onWillTerminate.addListener(() => {\n MobileHost.notifyMobileFrontend(\"notifyWillTerminate\");\n });\n this.onAuthAccessTokenChanged.addListener((accessToken: string | undefined, expirationDate: string | undefined) => {\n authorizationClient.setAccessToken(accessToken, expirationDate);\n MobileHost.notifyMobileFrontend(\"notifyAuthAccessTokenChanged\", accessToken, expirationDate);\n });\n\n // following will provide impl for device specific api.\n setupMobileRpc();\n }\n\n const socket = opt?.ipcHost?.socket ?? new IpcWebSocketBackend();\n opt = { ...opt, mobileHost: { ...opt?.mobileHost }, ipcHost: { ...opt?.ipcHost, socket } };\n\n const iModelHost = opt?.iModelHost ?? {};\n iModelHost.authorizationClient = authorizationClient;\n await NativeHost.startup({ ...opt, iModelHost });\n\n if (IpcHost.isValid)\n MobileAppHandler.register();\n\n const rpcInterfaces = opt?.mobileHost?.rpcInterfaces ?? [];\n\n MobileRpcManager.initializeImpl(rpcInterfaces);\n }\n}\n"]}
1
+ {"version":3,"file":"MobileHost.js","sourceRoot":"","sources":["../../../src/backend/MobileHost.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { AccessToken, BeEvent, BriefcaseStatus } from \"@itwin/core-bentley\";\nimport { IpcHandler, IpcHost, NativeHost, NativeHostOpts } from \"@itwin/core-backend\";\nimport { InternetConnectivityStatus, IpcWebSocketBackend, OverriddenBy, RpcInterfaceDefinition } from \"@itwin/core-common\";\nimport { CancelRequest, DownloadFailed, UserCancelledError } from \"./MobileFileHandler\";\nimport { ProgressCallback } from \"./Request\";\nimport { mobileAppStrings } from \"../common/MobileAppChannel\";\nimport { BatteryState, DeviceEvents, MobileAppFunctions, MobileNotifications, Orientation } from \"../common/MobileAppProps\";\nimport { MobileRpcManager } from \"../common/MobileRpcManager\";\nimport { MobileAuthorizationBackend } from \"./MobileAuthorizationBackend\";\nimport { setupMobileRpc } from \"./MobileRpcServer\";\n\n/** @beta */\nexport type MobileCompletionCallback = (downloadUrl: string, downloadFileUrl: string, cancelled: boolean, err?: string) => void;\n/** @beta */\nexport type MobileProgressCallback = (bytesWritten: number, totalBytesWritten: number, totalBytesExpectedToWrite: number) => void;\n/** @beta */\nexport type MobileCancelCallback = () => boolean;\n\n/** @beta */\nexport interface DownloadTask {\n url: string;\n downloadPath: string;\n isDetached: boolean;\n isRunning: boolean;\n totalBytes?: number;\n doneBytes?: number;\n cancelId?: number;\n isBackground?: boolean;\n cancel?: MobileCancelCallback;\n toBackground: () => boolean;\n toForeground: () => boolean;\n}\n\n/** @beta */\nexport abstract class MobileDevice {\n public emit(eventName: DeviceEvents, ...args: any[]) {\n switch (eventName) {\n case \"memoryWarning\":\n MobileHost.onMemoryWarning.raiseEvent(...args);\n break;\n case \"orientationChanged\":\n MobileHost.onOrientationChanged.raiseEvent(...args);\n break;\n case \"enterForeground\":\n MobileHost.onEnterForeground.raiseEvent(...args);\n break;\n case \"enterBackground\":\n MobileHost.onEnterBackground.raiseEvent(...args);\n break;\n case \"willTerminate\":\n MobileHost.onWillTerminate.raiseEvent(...args);\n break;\n case \"authAccessTokenChanged\":\n MobileHost.onAuthAccessTokenChanged.raiseEvent(args[0], args[1]);\n break;\n case \"online\":\n NativeHost.overrideInternetConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\n break;\n case \"offline\":\n NativeHost.overrideInternetConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\n break;\n }\n }\n\n public abstract getOrientation(): Orientation;\n public abstract getBatteryState(): BatteryState;\n public abstract getBatteryLevel(): number;\n public abstract createDownloadTask(downloadUrl: string, isBackground: boolean, downloadTo: string, completion: MobileCompletionCallback, progress?: MobileProgressCallback): number;\n public abstract cancelDownloadTask(cancelId: number): boolean;\n public abstract getDownloadTasks(): DownloadTask[];\n public abstract resumeDownloadInForeground(requestId: number): boolean;\n public abstract resumeDownloadInBackground(requestId: number): boolean;\n public abstract reconnect(connection: number): void;\n public abstract authGetAccessToken(callback: (accessToken?: string, expirationDate?: string, err?: string) => void): void;\n}\n\nclass MobileAppHandler extends IpcHandler implements MobileAppFunctions {\n public get channelName() { return mobileAppStrings.mobileAppChannel; }\n public async reconnect(connection: number) {\n MobileHost.reconnect(connection);\n }\n public async getAccessToken() {\n return MobileHost.authGetAccessToken();\n }\n}\n\n/** @beta */\nexport interface MobileHostOpts extends NativeHostOpts {\n mobileHost?: {\n device?: MobileDevice;\n /** list of RPC interface definitions to register */\n rpcInterfaces?: RpcInterfaceDefinition[];\n };\n}\n\n/**\n * @beta\n */\nexport class MobileHost {\n private static _device?: MobileDevice;\n public static get device() { return this._device!; }\n /**\n * Raised when the mobile OS informs a mobile app that it is running low on memory.\n *\n * @note iOS and iPadOS send this warning so often as to make it not very useful.\n */\n public static readonly onMemoryWarning = new BeEvent();\n /**\n * Raised when the device orientation changes on a device running a mobile app.\n */\n public static readonly onOrientationChanged = new BeEvent();\n /**\n * Raised after a mobile app returns to the foreground.\n */\n public static readonly onEnterForeground = new BeEvent();\n /**\n * Raised when a mobile app is about to enter the background.\n */\n public static readonly onEnterBackground = new BeEvent();\n /**\n * Raised after a mobile backend connects to the mobile frontend.\n *\n * @note this will be raised at startup, and it will also be raised every time the app returns\n * to the foreground from the background.\n */\n public static readonly onConnected = new BeEvent();\n /**\n * Raised when a mobile app is about to be terminated by the mobile OS.\n */\n public static readonly onWillTerminate = new BeEvent();\n /**\n * Raised when the native auth client informs the mobile host that the access token has changed.\n */\n public static readonly onAuthAccessTokenChanged = new BeEvent<(accessToken: string | undefined, expirationDate: string | undefined) => void>();\n\n /** Send a notification to the MobileApp connected to this MobileHost. */\n public static notifyMobileFrontend<T extends keyof MobileNotifications>(methodName: T, ...args: Parameters<MobileNotifications[T]>) {\n return IpcHost.send(mobileAppStrings.mobileAppNotify, methodName, ...args);\n }\n\n /** @internal */\n public static reconnect(connection: number) {\n this.device.reconnect(connection);\n }\n\n /** @internal */\n public static async authGetAccessToken() {\n return new Promise<[AccessToken, string]>((resolve, reject) => {\n this.device.authGetAccessToken((tokenString?: AccessToken, expirationDate?: string, error?: string) => {\n if (error) {\n reject(new Error(error));\n } else {\n resolve([tokenString ?? \"\", expirationDate ?? \"\"]);\n }\n });\n });\n }\n\n /** @internal */\n public static async downloadFile(downloadUrl: string, downloadTo: string, progress?: ProgressCallback, cancelRequest?: CancelRequest): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n\n let progressCb: MobileProgressCallback | undefined;\n let lastReportedOn = Date.now();\n const minTimeBeforeReportingProgress = 1000;\n if (progress) {\n progressCb = (_bytesWritten: number, totalBytesWritten: number, totalBytesExpectedToWrite: number) => {\n const currentTime = Date.now();\n const timeSinceLastEvent = currentTime - lastReportedOn;\n // report all event for last 5 Mbs so we never miss 100% progress event\n const lastEvent = (totalBytesExpectedToWrite - totalBytesWritten) < 1024 * 1024 * 5;\n if (timeSinceLastEvent < minTimeBeforeReportingProgress && !lastEvent)\n return;\n\n lastReportedOn = currentTime;\n const percent = Number((100 * (totalBytesWritten / totalBytesExpectedToWrite)).toFixed(2));\n progress({ total: totalBytesExpectedToWrite, loaded: totalBytesWritten, percent });\n };\n }\n const requestId = this.device.createDownloadTask(downloadUrl, false, downloadTo, (_downloadUrl: string, _downloadFileUrl: string, cancelled: boolean, err?: string) => {\n if (cancelled)\n reject(new UserCancelledError(BriefcaseStatus.DownloadCancelled, \"User cancelled download\"));\n else if (err)\n reject(new DownloadFailed(400, \"Download failed\"));\n else\n resolve();\n }, progressCb);\n if (cancelRequest) {\n cancelRequest.cancel = () => this.device.cancelDownloadTask(requestId);\n }\n });\n }\n\n public static get isValid() { return undefined !== this._device; }\n\n /** Start the backend of a mobile app. */\n public static async startup(opt?: MobileHostOpts): Promise<void> {\n const authorizationClient = new MobileAuthorizationBackend();\n if (!this.isValid) {\n this._device = opt?.mobileHost?.device ?? new (MobileDevice as any)();\n // set global device interface.\n // NOTE: __iTwinJsNativeBridge is used by backend native code.\n (global as any).__iTwinJsNativeBridge = this._device;\n this.onMemoryWarning.addListener(() => {\n MobileHost.notifyMobileFrontend(\"notifyMemoryWarning\");\n });\n this.onOrientationChanged.addListener(() => {\n try {\n MobileHost.notifyMobileFrontend(\"notifyOrientationChanged\");\n } catch { } // Ignore: frontend is not currently connected\n });\n this.onWillTerminate.addListener(() => {\n MobileHost.notifyMobileFrontend(\"notifyWillTerminate\");\n });\n this.onAuthAccessTokenChanged.addListener((accessToken: string | undefined, expirationDate: string | undefined) => {\n authorizationClient.setAccessToken(accessToken, expirationDate);\n MobileHost.notifyMobileFrontend(\"notifyAuthAccessTokenChanged\", accessToken, expirationDate);\n });\n\n // following will provide impl for device specific api.\n setupMobileRpc();\n }\n\n const socket = opt?.ipcHost?.socket ?? new IpcWebSocketBackend();\n opt = { ...opt, mobileHost: { ...opt?.mobileHost }, ipcHost: { ...opt?.ipcHost, socket } };\n\n const iModelHost = opt?.iModelHost ?? {};\n iModelHost.authorizationClient = authorizationClient;\n await NativeHost.startup({ ...opt, iModelHost });\n\n if (IpcHost.isValid)\n MobileAppHandler.register();\n\n const rpcInterfaces = opt?.mobileHost?.rpcInterfaces ?? [];\n\n MobileRpcManager.initializeImpl(rpcInterfaces);\n }\n}\n"]}
@@ -24,7 +24,7 @@ export interface MobileNotifications {
24
24
  notifyAuthAccessTokenChanged: (accessToken: string | undefined, expirationDate: string | undefined) => void;
25
25
  }
26
26
  /** @beta */
27
- export type DeviceEvents = "memoryWarning" | "orientationChanged" | "enterForeground" | "enterBackground" | "willTerminate" | "authAccessTokenChanged";
27
+ export type DeviceEvents = "memoryWarning" | "orientationChanged" | "enterForeground" | "enterBackground" | "willTerminate" | "authAccessTokenChanged" | "online" | "offline";
28
28
  /**
29
29
  * The methods that may be invoked via Ipc from the frontend of a Mobile App that are implemented on its backend.
30
30
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"MobileAppProps.d.ts","sourceRoot":"","sources":["../../../src/common/MobileAppProps.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,YAAY;AACZ,oBAAY,WAAW;IACrB,OAAO,IAAI;IACX,QAAQ,IAAM;IACd,kBAAkB,IAAM;IACxB,aAAa,IAAM;IACnB,cAAc,IAAM;IACpB,MAAM,KAAO;IACb,QAAQ,KAAO;CAChB;AAED,YAAY;AACZ,oBAAY,YAAY;IACtB,OAAO,IAAI;IACX,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,IAAI,IAAI;CACT;AAED,YAAY;AACZ,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,wBAAwB,EAAE,MAAM,IAAI,CAAC;IACrC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,4BAA4B,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7G;AAED,YAAY;AACZ,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,GAAG,wBAAwB,CAAC;AAEvJ;;;EAGE;AACF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD"}
1
+ {"version":3,"file":"MobileAppProps.d.ts","sourceRoot":"","sources":["../../../src/common/MobileAppProps.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,YAAY;AACZ,oBAAY,WAAW;IACrB,OAAO,IAAI;IACX,QAAQ,IAAM;IACd,kBAAkB,IAAM;IACxB,aAAa,IAAM;IACnB,cAAc,IAAM;IACpB,MAAM,KAAO;IACb,QAAQ,KAAO;CAChB;AAED,YAAY;AACZ,oBAAY,YAAY;IACtB,OAAO,IAAI;IACX,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,IAAI,IAAI;CACT;AAED,YAAY;AACZ,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,wBAAwB,EAAE,MAAM,IAAI,CAAC;IACrC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,4BAA4B,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7G;AAED,YAAY;AACZ,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,GAAG,wBAAwB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9K;;;EAGE;AACF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MobileAppProps.js","sourceRoot":"","sources":["../../../src/common/MobileAppProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAI/F,YAAY;AACZ,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAc,CAAA;IACd,yEAAwB,CAAA;IACxB,+DAAmB,CAAA;IACnB,iEAAoB,CAAA;IACpB,kDAAa,CAAA;IACb,sDAAe,CAAA;AACjB,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB;AAED,YAAY;AACZ,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,qDAAW,CAAA;IACX,yDAAa,CAAA;IACb,uDAAY,CAAA;IACZ,+CAAQ,CAAA;AACV,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { AccessToken } from \"@itwin/core-bentley\";\n\n/** @beta */\nexport enum Orientation {\n Unknown = 0,\n Portrait = 0x1,\n PortraitUpsideDown = 0x2,\n LandscapeLeft = 0x4,\n LandscapeRight = 0x8,\n FaceUp = 0x10,\n FaceDown = 0x20,\n}\n\n/** @beta */\nexport enum BatteryState {\n Unknown = 0,\n Unplugged = 1,\n Charging = 2,\n Full = 3,\n}\n\n/** @beta */\nexport interface MobileNotifications {\n notifyMemoryWarning: () => void;\n notifyOrientationChanged: () => void;\n notifyWillTerminate: () => void;\n notifyAuthAccessTokenChanged: (accessToken: string | undefined, expirationDate: string | undefined) => void;\n}\n\n/** @beta */\nexport type DeviceEvents = \"memoryWarning\" | \"orientationChanged\" | \"enterForeground\" | \"enterBackground\" | \"willTerminate\" | \"authAccessTokenChanged\";\n\n/**\n* The methods that may be invoked via Ipc from the frontend of a Mobile App that are implemented on its backend.\n* @beta\n*/\nexport interface MobileAppFunctions {\n reconnect: (connection: number) => Promise<void>;\n getAccessToken: () => Promise<[AccessToken, string]>;\n}\n"]}
1
+ {"version":3,"file":"MobileAppProps.js","sourceRoot":"","sources":["../../../src/common/MobileAppProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAI/F,YAAY;AACZ,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAc,CAAA;IACd,yEAAwB,CAAA;IACxB,+DAAmB,CAAA;IACnB,iEAAoB,CAAA;IACpB,kDAAa,CAAA;IACb,sDAAe,CAAA;AACjB,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB;AAED,YAAY;AACZ,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,qDAAW,CAAA;IACX,yDAAa,CAAA;IACb,uDAAY,CAAA;IACZ,+CAAQ,CAAA;AACV,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { AccessToken } from \"@itwin/core-bentley\";\n\n/** @beta */\nexport enum Orientation {\n Unknown = 0,\n Portrait = 0x1,\n PortraitUpsideDown = 0x2,\n LandscapeLeft = 0x4,\n LandscapeRight = 0x8,\n FaceUp = 0x10,\n FaceDown = 0x20,\n}\n\n/** @beta */\nexport enum BatteryState {\n Unknown = 0,\n Unplugged = 1,\n Charging = 2,\n Full = 3,\n}\n\n/** @beta */\nexport interface MobileNotifications {\n notifyMemoryWarning: () => void;\n notifyOrientationChanged: () => void;\n notifyWillTerminate: () => void;\n notifyAuthAccessTokenChanged: (accessToken: string | undefined, expirationDate: string | undefined) => void;\n}\n\n/** @beta */\nexport type DeviceEvents = \"memoryWarning\" | \"orientationChanged\" | \"enterForeground\" | \"enterBackground\" | \"willTerminate\" | \"authAccessTokenChanged\" | \"online\" | \"offline\";\n\n/**\n* The methods that may be invoked via Ipc from the frontend of a Mobile App that are implemented on its backend.\n* @beta\n*/\nexport interface MobileAppFunctions {\n reconnect: (connection: number) => Promise<void>;\n getAccessToken: () => Promise<[AccessToken, string]>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-mobile",
3
- "version": "5.4.0-dev.7",
3
+ "version": "5.5.0-dev.2",
4
4
  "description": "iTwin.js MobileHost and MobileApp",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -22,10 +22,10 @@
22
22
  "url": "http://www.bentley.com"
23
23
  },
24
24
  "peerDependencies": {
25
- "@itwin/core-backend": "5.4.0-dev.7",
26
- "@itwin/core-bentley": "5.4.0-dev.7",
27
- "@itwin/core-common": "5.4.0-dev.7",
28
- "@itwin/core-frontend": "5.4.0-dev.7"
25
+ "@itwin/core-backend": "5.5.0-dev.2",
26
+ "@itwin/core-bentley": "5.5.0-dev.2",
27
+ "@itwin/core-common": "5.5.0-dev.2",
28
+ "@itwin/core-frontend": "5.5.0-dev.2"
29
29
  },
30
30
  "dependencies": {
31
31
  "lodash": "^4.17.21",
@@ -49,11 +49,11 @@
49
49
  "mocha": "^11.1.0",
50
50
  "rimraf": "^6.0.1",
51
51
  "typescript": "~5.6.2",
52
- "@itwin/build-tools": "5.4.0-dev.7",
53
- "@itwin/core-bentley": "5.4.0-dev.7",
54
- "@itwin/core-backend": "5.4.0-dev.7",
55
- "@itwin/core-common": "5.4.0-dev.7",
56
- "@itwin/core-frontend": "5.4.0-dev.7"
52
+ "@itwin/build-tools": "5.5.0-dev.2",
53
+ "@itwin/core-backend": "5.5.0-dev.2",
54
+ "@itwin/core-common": "5.5.0-dev.2",
55
+ "@itwin/core-frontend": "5.5.0-dev.2",
56
+ "@itwin/core-bentley": "5.5.0-dev.2"
57
57
  },
58
58
  "scripts": {
59
59
  "build": "npm run -s build:cjs",