@itwin/core-backend 4.0.0-dev.44 → 4.0.0-dev.48

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.
Files changed (253) hide show
  1. package/lib/cjs/AliCloudStorageService.d.ts +23 -23
  2. package/lib/cjs/AliCloudStorageService.js +71 -71
  3. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  4. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  5. package/lib/cjs/BackendHubAccess.js +41 -41
  6. package/lib/cjs/BackendHubAccess.js.map +1 -1
  7. package/lib/cjs/BackendLoggerCategory.d.ts +91 -91
  8. package/lib/cjs/BackendLoggerCategory.js +99 -99
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  11. package/lib/cjs/BisCoreSchema.js +60 -60
  12. package/lib/cjs/BisCoreSchema.js.map +1 -1
  13. package/lib/cjs/BriefcaseManager.d.ts +170 -170
  14. package/lib/cjs/BriefcaseManager.js +408 -408
  15. package/lib/cjs/BriefcaseManager.js.map +1 -1
  16. package/lib/cjs/Category.d.ts +153 -153
  17. package/lib/cjs/Category.js +243 -243
  18. package/lib/cjs/Category.js.map +1 -1
  19. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  20. package/lib/cjs/ChangeSummaryManager.js +446 -446
  21. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  22. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  23. package/lib/cjs/ChangedElementsDb.js +165 -165
  24. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  25. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  26. package/lib/cjs/ChangedElementsManager.js +88 -88
  27. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  28. package/lib/cjs/ChannelControl.d.ts +70 -0
  29. package/lib/cjs/ChannelControl.d.ts.map +1 -0
  30. package/lib/cjs/ChannelControl.js +89 -0
  31. package/lib/cjs/ChannelControl.js.map +1 -0
  32. package/lib/cjs/CheckpointManager.d.ts +121 -121
  33. package/lib/cjs/CheckpointManager.js +351 -351
  34. package/lib/cjs/CheckpointManager.js.map +1 -1
  35. package/lib/cjs/ClassRegistry.d.ts +79 -79
  36. package/lib/cjs/ClassRegistry.js +249 -249
  37. package/lib/cjs/ClassRegistry.js.map +1 -1
  38. package/lib/cjs/CloudSqlite.d.ts +355 -355
  39. package/lib/cjs/CloudSqlite.js +154 -154
  40. package/lib/cjs/CloudSqlite.js.map +1 -1
  41. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  42. package/lib/cjs/CloudStorageBackend.js +170 -170
  43. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  44. package/lib/cjs/CodeService.d.ts +396 -396
  45. package/lib/cjs/CodeService.js +63 -63
  46. package/lib/cjs/CodeService.js.map +1 -1
  47. package/lib/cjs/CodeSpecs.d.ts +55 -55
  48. package/lib/cjs/CodeSpecs.js +124 -124
  49. package/lib/cjs/CodeSpecs.js.map +1 -1
  50. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  51. package/lib/cjs/ConcurrentQuery.js +36 -36
  52. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  53. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  54. package/lib/cjs/CustomViewState3dCreator.js +81 -81
  55. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  56. package/lib/cjs/DevTools.d.ts +73 -73
  57. package/lib/cjs/DevTools.js +156 -156
  58. package/lib/cjs/DevTools.js.map +1 -1
  59. package/lib/cjs/DisplayStyle.d.ts +106 -106
  60. package/lib/cjs/DisplayStyle.js +253 -253
  61. package/lib/cjs/DisplayStyle.js.map +1 -1
  62. package/lib/cjs/ECDb.d.ts +191 -191
  63. package/lib/cjs/ECDb.js +348 -348
  64. package/lib/cjs/ECDb.js.map +1 -1
  65. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  66. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  67. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  68. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  69. package/lib/cjs/ECSqlStatement.js +791 -791
  70. package/lib/cjs/ECSqlStatement.js.map +1 -1
  71. package/lib/cjs/Element.d.ts +1113 -1109
  72. package/lib/cjs/Element.d.ts.map +1 -1
  73. package/lib/cjs/Element.js +1424 -1419
  74. package/lib/cjs/Element.js.map +1 -1
  75. package/lib/cjs/ElementAspect.d.ts +176 -179
  76. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  77. package/lib/cjs/ElementAspect.js +203 -211
  78. package/lib/cjs/ElementAspect.js.map +1 -1
  79. package/lib/cjs/ElementGraphics.d.ts +9 -9
  80. package/lib/cjs/ElementGraphics.js +41 -41
  81. package/lib/cjs/ElementGraphics.js.map +1 -1
  82. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  83. package/lib/cjs/ElementTreeWalker.js +409 -409
  84. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  85. package/lib/cjs/Entity.d.ts +106 -106
  86. package/lib/cjs/Entity.js +134 -134
  87. package/lib/cjs/Entity.js.map +1 -1
  88. package/lib/cjs/EntityReferences.d.ts +49 -49
  89. package/lib/cjs/EntityReferences.js +95 -95
  90. package/lib/cjs/EntityReferences.js.map +1 -1
  91. package/lib/cjs/ExportGraphics.d.ts +317 -317
  92. package/lib/cjs/ExportGraphics.js +208 -208
  93. package/lib/cjs/ExportGraphics.js.map +1 -1
  94. package/lib/cjs/ExternalSource.d.ts +96 -96
  95. package/lib/cjs/ExternalSource.js +131 -131
  96. package/lib/cjs/ExternalSource.js.map +1 -1
  97. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  98. package/lib/cjs/GeoCoordConfig.js +85 -85
  99. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  100. package/lib/cjs/GeometrySummary.d.ts +4 -4
  101. package/lib/cjs/GeometrySummary.js +380 -380
  102. package/lib/cjs/GeometrySummary.js.map +1 -1
  103. package/lib/cjs/HubMock.d.ts +94 -94
  104. package/lib/cjs/HubMock.js +220 -220
  105. package/lib/cjs/HubMock.js.map +1 -1
  106. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  107. package/lib/cjs/IModelCloneContext.js +15 -15
  108. package/lib/cjs/IModelCloneContext.js.map +1 -1
  109. package/lib/cjs/IModelDb.d.ts +1213 -1210
  110. package/lib/cjs/IModelDb.d.ts.map +1 -1
  111. package/lib/cjs/IModelDb.js +2380 -2377
  112. package/lib/cjs/IModelDb.js.map +1 -1
  113. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  114. package/lib/cjs/IModelElementCloneContext.js +159 -159
  115. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  116. package/lib/cjs/IModelHost.d.ts +369 -369
  117. package/lib/cjs/IModelHost.js +488 -488
  118. package/lib/cjs/IModelHost.js.map +1 -1
  119. package/lib/cjs/IModelJsFs.d.ts +62 -62
  120. package/lib/cjs/IModelJsFs.js +139 -139
  121. package/lib/cjs/IModelJsFs.js.map +1 -1
  122. package/lib/cjs/IpcHost.d.ts +104 -104
  123. package/lib/cjs/IpcHost.js +276 -276
  124. package/lib/cjs/IpcHost.js.map +1 -1
  125. package/lib/cjs/LineStyle.d.ts +311 -311
  126. package/lib/cjs/LineStyle.js +295 -295
  127. package/lib/cjs/LineStyle.js.map +1 -1
  128. package/lib/cjs/LocalHub.d.ts +162 -162
  129. package/lib/cjs/LocalHub.js +580 -580
  130. package/lib/cjs/LocalHub.js.map +1 -1
  131. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  132. package/lib/cjs/LocalhostIpcHost.js +79 -79
  133. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  134. package/lib/cjs/Material.d.ts +131 -131
  135. package/lib/cjs/Material.js +180 -180
  136. package/lib/cjs/Material.js.map +1 -1
  137. package/lib/cjs/Model.d.ts +392 -392
  138. package/lib/cjs/Model.d.ts.map +1 -1
  139. package/lib/cjs/Model.js +489 -485
  140. package/lib/cjs/Model.js.map +1 -1
  141. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  142. package/lib/cjs/NativeAppStorage.js +202 -202
  143. package/lib/cjs/NativeAppStorage.js.map +1 -1
  144. package/lib/cjs/NativeHost.d.ts +52 -52
  145. package/lib/cjs/NativeHost.js +160 -160
  146. package/lib/cjs/NativeHost.js.map +1 -1
  147. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  148. package/lib/cjs/NavigationRelationship.js +225 -225
  149. package/lib/cjs/NavigationRelationship.js.map +1 -1
  150. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  151. package/lib/cjs/PromiseMemoizer.js +101 -101
  152. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  153. package/lib/cjs/PropertyStore.d.ts +132 -132
  154. package/lib/cjs/PropertyStore.js +11 -11
  155. package/lib/cjs/PropertyStore.js.map +1 -1
  156. package/lib/cjs/Relationship.d.ts +416 -416
  157. package/lib/cjs/Relationship.js +494 -494
  158. package/lib/cjs/Relationship.js.map +1 -1
  159. package/lib/cjs/RpcBackend.d.ts +5 -5
  160. package/lib/cjs/RpcBackend.js +32 -32
  161. package/lib/cjs/RpcBackend.js.map +1 -1
  162. package/lib/cjs/SQLiteDb.d.ts +219 -219
  163. package/lib/cjs/SQLiteDb.js +212 -212
  164. package/lib/cjs/SQLiteDb.js.map +1 -1
  165. package/lib/cjs/Schema.d.ts +55 -55
  166. package/lib/cjs/Schema.js +83 -83
  167. package/lib/cjs/Schema.js.map +1 -1
  168. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  169. package/lib/cjs/ServerBasedLocks.js +168 -168
  170. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  171. package/lib/cjs/SqliteStatement.d.ts +360 -360
  172. package/lib/cjs/SqliteStatement.js +586 -586
  173. package/lib/cjs/SqliteStatement.js.map +1 -1
  174. package/lib/cjs/Texture.d.ts +58 -58
  175. package/lib/cjs/Texture.js +82 -82
  176. package/lib/cjs/Texture.js.map +1 -1
  177. package/lib/cjs/TileStorage.d.ts +18 -18
  178. package/lib/cjs/TileStorage.js +87 -87
  179. package/lib/cjs/TileStorage.js.map +1 -1
  180. package/lib/cjs/TxnManager.d.ts +202 -202
  181. package/lib/cjs/TxnManager.js +356 -356
  182. package/lib/cjs/TxnManager.js.map +1 -1
  183. package/lib/cjs/ViewDefinition.d.ts +435 -435
  184. package/lib/cjs/ViewDefinition.js +646 -646
  185. package/lib/cjs/ViewDefinition.js.map +1 -1
  186. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  187. package/lib/cjs/ViewStateHydrator.js +103 -103
  188. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  189. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  190. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  191. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  192. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  193. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  194. package/lib/cjs/core-backend.d.ts +185 -184
  195. package/lib/cjs/core-backend.d.ts.map +1 -1
  196. package/lib/cjs/core-backend.js +205 -204
  197. package/lib/cjs/core-backend.js.map +1 -1
  198. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  199. package/lib/cjs/domains/FunctionalElements.js +145 -145
  200. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  201. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  202. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  203. package/lib/cjs/domains/FunctionalSchema.js +39 -40
  204. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  205. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  206. package/lib/cjs/domains/GenericElements.js +263 -263
  207. package/lib/cjs/domains/GenericElements.js.map +1 -1
  208. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  209. package/lib/cjs/domains/GenericSchema.js +28 -28
  210. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  211. package/lib/cjs/rpc/multipart.d.ts +11 -11
  212. package/lib/cjs/rpc/multipart.js +71 -71
  213. package/lib/cjs/rpc/multipart.js.map +1 -1
  214. package/lib/cjs/rpc/tracing.d.ts +28 -28
  215. package/lib/cjs/rpc/tracing.js +73 -73
  216. package/lib/cjs/rpc/tracing.js.map +1 -1
  217. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  218. package/lib/cjs/rpc/web/logging.js +43 -43
  219. package/lib/cjs/rpc/web/logging.js.map +1 -1
  220. package/lib/cjs/rpc/web/request.d.ts +6 -6
  221. package/lib/cjs/rpc/web/request.js +73 -73
  222. package/lib/cjs/rpc/web/request.js.map +1 -1
  223. package/lib/cjs/rpc/web/response.d.ts +6 -6
  224. package/lib/cjs/rpc/web/response.js +105 -105
  225. package/lib/cjs/rpc/web/response.js.map +1 -1
  226. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  227. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  228. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  229. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  230. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -293
  231. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  232. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  233. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
  234. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  235. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  236. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -166
  237. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  238. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  239. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -42
  240. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  241. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  242. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  243. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  244. package/lib/cjs/workspace/Settings.d.ts +186 -186
  245. package/lib/cjs/workspace/Settings.js +154 -154
  246. package/lib/cjs/workspace/Settings.js.map +1 -1
  247. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  248. package/lib/cjs/workspace/SettingsSchemas.js +190 -190
  249. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  250. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  251. package/lib/cjs/workspace/Workspace.js +537 -537
  252. package/lib/cjs/workspace/Workspace.js.map +1 -1
  253. package/package.json +13 -13
@@ -1,161 +1,161 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module NativeApp
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.NativeHost = void 0;
11
- const path_1 = require("path");
12
- const core_bentley_1 = require("@itwin/core-bentley");
13
- const core_common_1 = require("@itwin/core-common");
14
- const BriefcaseManager_1 = require("./BriefcaseManager");
15
- const CheckpointManager_1 = require("./CheckpointManager");
16
- const IModelHost_1 = require("./IModelHost");
17
- const IpcHost_1 = require("./IpcHost");
18
- const NativeAppStorage_1 = require("./NativeAppStorage");
19
- /**
20
- * Implementation of NativeAppFunctions
21
- */
22
- class NativeAppHandler extends IpcHost_1.IpcHandler {
23
- get channelName() { return core_common_1.nativeAppChannel; }
24
- async getAccessToken() {
25
- return IModelHost_1.IModelHost.authorizationClient?.getAccessToken();
26
- }
27
- async checkInternetConnectivity() {
28
- return NativeHost.checkInternetConnectivity();
29
- }
30
- async overrideInternetConnectivity(by, status) {
31
- NativeHost.overrideInternetConnectivity(by, status);
32
- }
33
- async acquireNewBriefcaseId(iModelId) {
34
- return BriefcaseManager_1.BriefcaseManager.acquireNewBriefcaseId({ iModelId });
35
- }
36
- async getBriefcaseFileName(props) {
37
- return BriefcaseManager_1.BriefcaseManager.getFileName(props);
38
- }
39
- async downloadBriefcase(request, reportProgress, progressInterval) {
40
- const args = {
41
- ...request,
42
- accessToken: await this.getAccessToken(),
43
- onProgress: (_a, _b) => checkAbort(),
44
- };
45
- const checkAbort = () => {
46
- (0, core_bentley_1.assert)(undefined !== args.fileName);
47
- const job = CheckpointManager_1.Downloads.isInProgress(args.fileName);
48
- return (job && job.request.abort === 1) ? CheckpointManager_1.ProgressStatus.Abort : CheckpointManager_1.ProgressStatus.Continue;
49
- };
50
- if (reportProgress) {
51
- const progressCallback = (loaded, total) => {
52
- IpcHost_1.IpcHost.send(`nativeApp.progress-${request.iModelId}`, { loaded, total });
53
- return checkAbort();
54
- };
55
- args.onProgress = (0, IpcHost_1.throttleProgressCallback)(progressCallback, checkAbort, progressInterval);
56
- }
57
- return BriefcaseManager_1.BriefcaseManager.downloadBriefcase(args);
58
- }
59
- async requestCancelDownloadBriefcase(fileName) {
60
- const job = CheckpointManager_1.Downloads.isInProgress(fileName);
61
- if (job)
62
- job.request.abort = 1;
63
- return job !== undefined;
64
- }
65
- async deleteBriefcaseFiles(fileName) {
66
- await BriefcaseManager_1.BriefcaseManager.deleteBriefcaseFiles(fileName, await IModelHost_1.IModelHost.getAccessToken());
67
- }
68
- async getCachedBriefcases(iModelId) {
69
- return BriefcaseManager_1.BriefcaseManager.getCachedBriefcases(iModelId);
70
- }
71
- async storageMgrOpen(storageId) {
72
- return NativeAppStorage_1.NativeAppStorage.open(storageId).id;
73
- }
74
- async storageMgrClose(storageId, deleteIt) {
75
- NativeAppStorage_1.NativeAppStorage.find(storageId).close(deleteIt);
76
- }
77
- async storageMgrNames() {
78
- return NativeAppStorage_1.NativeAppStorage.getStorageNames();
79
- }
80
- async storageGetValueType(storageId, key) {
81
- return NativeAppStorage_1.NativeAppStorage.find(storageId).getValueType(key);
82
- }
83
- async storageGet(storageId, key) {
84
- return NativeAppStorage_1.NativeAppStorage.find(storageId).getData(key);
85
- }
86
- async storageSet(storageId, key, value) {
87
- NativeAppStorage_1.NativeAppStorage.find(storageId).setData(key, value);
88
- }
89
- async storageRemove(storageId, key) {
90
- NativeAppStorage_1.NativeAppStorage.find(storageId).removeData(key);
91
- }
92
- async storageKeys(storageId) {
93
- return NativeAppStorage_1.NativeAppStorage.find(storageId).getKeys();
94
- }
95
- async storageRemoveAll(storageId) {
96
- NativeAppStorage_1.NativeAppStorage.find(storageId).removeAll();
97
- }
98
- }
99
- /**
100
- * Backend for desktop/mobile native applications
101
- * @public
102
- */
103
- class NativeHost {
104
- constructor() { } // no instances - static methods only
105
- /** Get the local cache folder for application settings */
106
- static get appSettingsCacheDir() {
107
- if (this._appSettingsCacheDir === undefined)
108
- this._appSettingsCacheDir = (0, path_1.join)(IModelHost_1.IModelHost.cacheDir, "appSettings");
109
- return this._appSettingsCacheDir;
110
- }
111
- /** Send a notification to the NativeApp connected to this NativeHost. */
112
- static notifyNativeFrontend(methodName, ...args) {
113
- return IpcHost_1.IpcHost.send(core_common_1.nativeAppNotify, methodName, ...args);
114
- }
115
- static get isValid() { return this._isValid; }
116
- static get applicationName() { return this._applicationName; }
117
- /** Get the settings store for this NativeHost. */
118
- static get settingsStore() {
119
- return NativeAppStorage_1.NativeAppStorage.open(this.applicationName);
120
- }
121
- /**
122
- * Start the backend of a native app.
123
- * @note this method calls [[IpcHost.startup]] internally.
124
- */
125
- static async startup(opt) {
126
- if (!this.isValid) {
127
- this._isValid = true;
128
- this.onInternetConnectivityChanged.addListener((status) => NativeHost.notifyNativeFrontend("notifyInternetConnectivityChanged", status));
129
- this._applicationName = opt?.nativeHost?.applicationName ?? "iTwinApp";
130
- }
131
- await IpcHost_1.IpcHost.startup(opt);
132
- if (IpcHost_1.IpcHost.isValid) // for tests, we use NativeHost but don't have a frontend
133
- NativeAppHandler.register();
134
- }
135
- /** Shutdown native app backend. Also calls [[IpcHost.shutdown]] */
136
- static async shutdown() {
137
- this._isValid = false;
138
- this.onInternetConnectivityChanged.clear();
139
- await IpcHost_1.IpcHost.shutdown();
140
- }
141
- /** get current value of internet connectivity */
142
- static checkInternetConnectivity() {
143
- return this._reachability ?? core_common_1.InternetConnectivityStatus.Online;
144
- }
145
- /**
146
- * Override internet connectivity state
147
- * @param _overridenBy who overrode the value.
148
- * @internal
149
- */
150
- static overrideInternetConnectivity(_overridenBy, status) {
151
- if (this._reachability !== status) {
152
- this._reachability = status;
153
- this.onInternetConnectivityChanged.raiseEvent(status);
154
- }
155
- }
156
- }
157
- exports.NativeHost = NativeHost;
158
- /** Event called when the internet connectivity changes, if known. */
159
- NativeHost.onInternetConnectivityChanged = new core_bentley_1.BeEvent();
160
- NativeHost._isValid = false;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module NativeApp
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.NativeHost = void 0;
11
+ const path_1 = require("path");
12
+ const core_bentley_1 = require("@itwin/core-bentley");
13
+ const core_common_1 = require("@itwin/core-common");
14
+ const BriefcaseManager_1 = require("./BriefcaseManager");
15
+ const CheckpointManager_1 = require("./CheckpointManager");
16
+ const IModelHost_1 = require("./IModelHost");
17
+ const IpcHost_1 = require("./IpcHost");
18
+ const NativeAppStorage_1 = require("./NativeAppStorage");
19
+ /**
20
+ * Implementation of NativeAppFunctions
21
+ */
22
+ class NativeAppHandler extends IpcHost_1.IpcHandler {
23
+ get channelName() { return core_common_1.nativeAppChannel; }
24
+ async getAccessToken() {
25
+ return IModelHost_1.IModelHost.authorizationClient?.getAccessToken();
26
+ }
27
+ async checkInternetConnectivity() {
28
+ return NativeHost.checkInternetConnectivity();
29
+ }
30
+ async overrideInternetConnectivity(by, status) {
31
+ NativeHost.overrideInternetConnectivity(by, status);
32
+ }
33
+ async acquireNewBriefcaseId(iModelId) {
34
+ return BriefcaseManager_1.BriefcaseManager.acquireNewBriefcaseId({ iModelId });
35
+ }
36
+ async getBriefcaseFileName(props) {
37
+ return BriefcaseManager_1.BriefcaseManager.getFileName(props);
38
+ }
39
+ async downloadBriefcase(request, reportProgress, progressInterval) {
40
+ const args = {
41
+ ...request,
42
+ accessToken: await this.getAccessToken(),
43
+ onProgress: (_a, _b) => checkAbort(),
44
+ };
45
+ const checkAbort = () => {
46
+ (0, core_bentley_1.assert)(undefined !== args.fileName);
47
+ const job = CheckpointManager_1.Downloads.isInProgress(args.fileName);
48
+ return (job && job.request.abort === 1) ? CheckpointManager_1.ProgressStatus.Abort : CheckpointManager_1.ProgressStatus.Continue;
49
+ };
50
+ if (reportProgress) {
51
+ const progressCallback = (loaded, total) => {
52
+ IpcHost_1.IpcHost.send(`nativeApp.progress-${request.iModelId}`, { loaded, total });
53
+ return checkAbort();
54
+ };
55
+ args.onProgress = (0, IpcHost_1.throttleProgressCallback)(progressCallback, checkAbort, progressInterval);
56
+ }
57
+ return BriefcaseManager_1.BriefcaseManager.downloadBriefcase(args);
58
+ }
59
+ async requestCancelDownloadBriefcase(fileName) {
60
+ const job = CheckpointManager_1.Downloads.isInProgress(fileName);
61
+ if (job)
62
+ job.request.abort = 1;
63
+ return job !== undefined;
64
+ }
65
+ async deleteBriefcaseFiles(fileName) {
66
+ await BriefcaseManager_1.BriefcaseManager.deleteBriefcaseFiles(fileName, await IModelHost_1.IModelHost.getAccessToken());
67
+ }
68
+ async getCachedBriefcases(iModelId) {
69
+ return BriefcaseManager_1.BriefcaseManager.getCachedBriefcases(iModelId);
70
+ }
71
+ async storageMgrOpen(storageId) {
72
+ return NativeAppStorage_1.NativeAppStorage.open(storageId).id;
73
+ }
74
+ async storageMgrClose(storageId, deleteIt) {
75
+ NativeAppStorage_1.NativeAppStorage.find(storageId).close(deleteIt);
76
+ }
77
+ async storageMgrNames() {
78
+ return NativeAppStorage_1.NativeAppStorage.getStorageNames();
79
+ }
80
+ async storageGetValueType(storageId, key) {
81
+ return NativeAppStorage_1.NativeAppStorage.find(storageId).getValueType(key);
82
+ }
83
+ async storageGet(storageId, key) {
84
+ return NativeAppStorage_1.NativeAppStorage.find(storageId).getData(key);
85
+ }
86
+ async storageSet(storageId, key, value) {
87
+ NativeAppStorage_1.NativeAppStorage.find(storageId).setData(key, value);
88
+ }
89
+ async storageRemove(storageId, key) {
90
+ NativeAppStorage_1.NativeAppStorage.find(storageId).removeData(key);
91
+ }
92
+ async storageKeys(storageId) {
93
+ return NativeAppStorage_1.NativeAppStorage.find(storageId).getKeys();
94
+ }
95
+ async storageRemoveAll(storageId) {
96
+ NativeAppStorage_1.NativeAppStorage.find(storageId).removeAll();
97
+ }
98
+ }
99
+ /**
100
+ * Backend for desktop/mobile native applications
101
+ * @public
102
+ */
103
+ class NativeHost {
104
+ constructor() { } // no instances - static methods only
105
+ /** Get the local cache folder for application settings */
106
+ static get appSettingsCacheDir() {
107
+ if (this._appSettingsCacheDir === undefined)
108
+ this._appSettingsCacheDir = (0, path_1.join)(IModelHost_1.IModelHost.cacheDir, "appSettings");
109
+ return this._appSettingsCacheDir;
110
+ }
111
+ /** Send a notification to the NativeApp connected to this NativeHost. */
112
+ static notifyNativeFrontend(methodName, ...args) {
113
+ return IpcHost_1.IpcHost.send(core_common_1.nativeAppNotify, methodName, ...args);
114
+ }
115
+ static get isValid() { return this._isValid; }
116
+ static get applicationName() { return this._applicationName; }
117
+ /** Get the settings store for this NativeHost. */
118
+ static get settingsStore() {
119
+ return NativeAppStorage_1.NativeAppStorage.open(this.applicationName);
120
+ }
121
+ /**
122
+ * Start the backend of a native app.
123
+ * @note this method calls [[IpcHost.startup]] internally.
124
+ */
125
+ static async startup(opt) {
126
+ if (!this.isValid) {
127
+ this._isValid = true;
128
+ this.onInternetConnectivityChanged.addListener((status) => NativeHost.notifyNativeFrontend("notifyInternetConnectivityChanged", status));
129
+ this._applicationName = opt?.nativeHost?.applicationName ?? "iTwinApp";
130
+ }
131
+ await IpcHost_1.IpcHost.startup(opt);
132
+ if (IpcHost_1.IpcHost.isValid) // for tests, we use NativeHost but don't have a frontend
133
+ NativeAppHandler.register();
134
+ }
135
+ /** Shutdown native app backend. Also calls [[IpcHost.shutdown]] */
136
+ static async shutdown() {
137
+ this._isValid = false;
138
+ this.onInternetConnectivityChanged.clear();
139
+ await IpcHost_1.IpcHost.shutdown();
140
+ }
141
+ /** get current value of internet connectivity */
142
+ static checkInternetConnectivity() {
143
+ return this._reachability ?? core_common_1.InternetConnectivityStatus.Online;
144
+ }
145
+ /**
146
+ * Override internet connectivity state
147
+ * @param _overridenBy who overrode the value.
148
+ * @internal
149
+ */
150
+ static overrideInternetConnectivity(_overridenBy, status) {
151
+ if (this._reachability !== status) {
152
+ this._reachability = status;
153
+ this.onInternetConnectivityChanged.raiseEvent(status);
154
+ }
155
+ }
156
+ }
157
+ exports.NativeHost = NativeHost;
158
+ /** Event called when the internet connectivity changes, if known. */
159
+ NativeHost.onInternetConnectivityChanged = new core_bentley_1.BeEvent();
160
+ NativeHost._isValid = false;
161
161
  //# sourceMappingURL=NativeHost.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHost.js","sourceRoot":"","sources":["../../src/NativeHost.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module NativeApp\r\n */\r\n\r\nimport { join } from \"path\";\r\nimport { AccessToken, assert, BeEvent, GuidString } from \"@itwin/core-bentley\";\r\nimport {\r\n BriefcaseProps, InternetConnectivityStatus, LocalBriefcaseProps, nativeAppChannel, NativeAppFunctions, NativeAppNotifications, nativeAppNotify,\r\n OverriddenBy, RequestNewBriefcaseProps, StorageValue,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseManager, RequestNewBriefcaseArg } from \"./BriefcaseManager\";\r\nimport { Downloads, ProgressFunction, ProgressStatus } from \"./CheckpointManager\";\r\nimport { IModelHost } from \"./IModelHost\";\r\nimport { IpcHandler, IpcHost, IpcHostOpts, throttleProgressCallback } from \"./IpcHost\";\r\nimport { NativeAppStorage } from \"./NativeAppStorage\";\r\n\r\n/**\r\n * Implementation of NativeAppFunctions\r\n */\r\nclass NativeAppHandler extends IpcHandler implements NativeAppFunctions {\r\n public get channelName() { return nativeAppChannel; }\r\n\r\n public async getAccessToken(): Promise<AccessToken | undefined> {\r\n return IModelHost.authorizationClient?.getAccessToken();\r\n }\r\n\r\n public async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\r\n return NativeHost.checkInternetConnectivity();\r\n }\r\n public async overrideInternetConnectivity(by: OverriddenBy, status: InternetConnectivityStatus): Promise<void> {\r\n NativeHost.overrideInternetConnectivity(by, status);\r\n }\r\n public async acquireNewBriefcaseId(iModelId: GuidString): Promise<number> {\r\n return BriefcaseManager.acquireNewBriefcaseId({ iModelId });\r\n }\r\n public async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\r\n return BriefcaseManager.getFileName(props);\r\n }\r\n public async downloadBriefcase(request: RequestNewBriefcaseProps, reportProgress: boolean, progressInterval?: number): Promise<LocalBriefcaseProps> {\r\n const args: RequestNewBriefcaseArg = {\r\n ...request,\r\n accessToken: await this.getAccessToken(),\r\n onProgress: (_a: number, _b: number) => checkAbort(),\r\n };\r\n\r\n const checkAbort = () => {\r\n assert(undefined !== args.fileName);\r\n const job = Downloads.isInProgress(args.fileName);\r\n return (job && (job.request as any).abort === 1) ? ProgressStatus.Abort : ProgressStatus.Continue;\r\n };\r\n\r\n if (reportProgress) {\r\n const progressCallback: ProgressFunction = (loaded, total) => {\r\n IpcHost.send(`nativeApp.progress-${request.iModelId}`, { loaded, total });\r\n return checkAbort();\r\n };\r\n args.onProgress = throttleProgressCallback(progressCallback, checkAbort, progressInterval);\r\n }\r\n\r\n return BriefcaseManager.downloadBriefcase(args);\r\n }\r\n\r\n public async requestCancelDownloadBriefcase(fileName: string): Promise<boolean> {\r\n const job = Downloads.isInProgress(fileName);\r\n if (job)\r\n (job.request as any).abort = 1;\r\n return job !== undefined;\r\n }\r\n\r\n public async deleteBriefcaseFiles(fileName: string): Promise<void> {\r\n await BriefcaseManager.deleteBriefcaseFiles(fileName, await IModelHost.getAccessToken());\r\n }\r\n\r\n public async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\r\n return BriefcaseManager.getCachedBriefcases(iModelId);\r\n }\r\n\r\n public async storageMgrOpen(storageId: string): Promise<string> {\r\n return NativeAppStorage.open(storageId).id;\r\n }\r\n\r\n public async storageMgrClose(storageId: string, deleteIt: boolean): Promise<void> {\r\n NativeAppStorage.find(storageId).close(deleteIt);\r\n }\r\n\r\n public async storageMgrNames(): Promise<string[]> {\r\n return NativeAppStorage.getStorageNames();\r\n }\r\n\r\n public async storageGetValueType(storageId: string, key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\r\n return NativeAppStorage.find(storageId).getValueType(key);\r\n }\r\n\r\n public async storageGet(storageId: string, key: string): Promise<StorageValue | undefined> {\r\n return NativeAppStorage.find(storageId).getData(key);\r\n }\r\n\r\n public async storageSet(storageId: string, key: string, value: StorageValue): Promise<void> {\r\n NativeAppStorage.find(storageId).setData(key, value);\r\n }\r\n\r\n public async storageRemove(storageId: string, key: string): Promise<void> {\r\n NativeAppStorage.find(storageId).removeData(key);\r\n }\r\n\r\n public async storageKeys(storageId: string): Promise<string[]> {\r\n return NativeAppStorage.find(storageId).getKeys();\r\n }\r\n\r\n public async storageRemoveAll(storageId: string): Promise<void> {\r\n NativeAppStorage.find(storageId).removeAll();\r\n }\r\n}\r\n\r\n/** Options for [[NativeHost.startup]]\r\n * @public\r\n */\r\nexport interface NativeHostOpts extends IpcHostOpts {\r\n nativeHost?: {\r\n /** Application name. Used, for example, to name the settings file. If not supplied, defaults to \"iTwinApp\". */\r\n applicationName?: string;\r\n };\r\n}\r\n\r\n/**\r\n * Backend for desktop/mobile native applications\r\n * @public\r\n */\r\nexport class NativeHost {\r\n private static _reachability?: InternetConnectivityStatus;\r\n private static _applicationName: string;\r\n private constructor() { } // no instances - static methods only\r\n\r\n /** Event called when the internet connectivity changes, if known. */\r\n public static readonly onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\r\n\r\n private static _appSettingsCacheDir?: string;\r\n\r\n /** Get the local cache folder for application settings */\r\n public static get appSettingsCacheDir(): string {\r\n if (this._appSettingsCacheDir === undefined)\r\n this._appSettingsCacheDir = join(IModelHost.cacheDir, \"appSettings\");\r\n return this._appSettingsCacheDir;\r\n }\r\n\r\n /** Send a notification to the NativeApp connected to this NativeHost. */\r\n public static notifyNativeFrontend<T extends keyof NativeAppNotifications>(methodName: T, ...args: Parameters<NativeAppNotifications[T]>) {\r\n return IpcHost.send(nativeAppNotify, methodName, ...args);\r\n }\r\n\r\n private static _isValid = false;\r\n public static get isValid(): boolean { return this._isValid; }\r\n public static get applicationName() { return this._applicationName; }\r\n /** Get the settings store for this NativeHost. */\r\n public static get settingsStore() {\r\n return NativeAppStorage.open(this.applicationName);\r\n }\r\n\r\n /**\r\n * Start the backend of a native app.\r\n * @note this method calls [[IpcHost.startup]] internally.\r\n */\r\n public static async startup(opt?: NativeHostOpts): Promise<void> {\r\n if (!this.isValid) {\r\n this._isValid = true;\r\n this.onInternetConnectivityChanged.addListener((status: InternetConnectivityStatus) =>\r\n NativeHost.notifyNativeFrontend(\"notifyInternetConnectivityChanged\", status));\r\n this._applicationName = opt?.nativeHost?.applicationName ?? \"iTwinApp\";\r\n }\r\n\r\n await IpcHost.startup(opt);\r\n if (IpcHost.isValid) // for tests, we use NativeHost but don't have a frontend\r\n NativeAppHandler.register();\r\n }\r\n\r\n /** Shutdown native app backend. Also calls [[IpcHost.shutdown]] */\r\n public static async shutdown(): Promise<void> {\r\n this._isValid = false;\r\n this.onInternetConnectivityChanged.clear();\r\n await IpcHost.shutdown();\r\n }\r\n\r\n /** get current value of internet connectivity */\r\n public static checkInternetConnectivity(): InternetConnectivityStatus {\r\n return this._reachability ?? InternetConnectivityStatus.Online;\r\n }\r\n\r\n /**\r\n * Override internet connectivity state\r\n * @param _overridenBy who overrode the value.\r\n * @internal\r\n */\r\n public static overrideInternetConnectivity(_overridenBy: OverriddenBy, status: InternetConnectivityStatus): void {\r\n if (this._reachability !== status) {\r\n this._reachability = status;\r\n this.onInternetConnectivityChanged.raiseEvent(status);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"NativeHost.js","sourceRoot":"","sources":["../../src/NativeHost.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/** @packageDocumentation\n * @module NativeApp\n */\n\nimport { join } from \"path\";\nimport { AccessToken, assert, BeEvent, GuidString } from \"@itwin/core-bentley\";\nimport {\n BriefcaseProps, InternetConnectivityStatus, LocalBriefcaseProps, nativeAppChannel, NativeAppFunctions, NativeAppNotifications, nativeAppNotify,\n OverriddenBy, RequestNewBriefcaseProps, StorageValue,\n} from \"@itwin/core-common\";\nimport { BriefcaseManager, RequestNewBriefcaseArg } from \"./BriefcaseManager\";\nimport { Downloads, ProgressFunction, ProgressStatus } from \"./CheckpointManager\";\nimport { IModelHost } from \"./IModelHost\";\nimport { IpcHandler, IpcHost, IpcHostOpts, throttleProgressCallback } from \"./IpcHost\";\nimport { NativeAppStorage } from \"./NativeAppStorage\";\n\n/**\n * Implementation of NativeAppFunctions\n */\nclass NativeAppHandler extends IpcHandler implements NativeAppFunctions {\n public get channelName() { return nativeAppChannel; }\n\n public async getAccessToken(): Promise<AccessToken | undefined> {\n return IModelHost.authorizationClient?.getAccessToken();\n }\n\n public async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\n return NativeHost.checkInternetConnectivity();\n }\n public async overrideInternetConnectivity(by: OverriddenBy, status: InternetConnectivityStatus): Promise<void> {\n NativeHost.overrideInternetConnectivity(by, status);\n }\n public async acquireNewBriefcaseId(iModelId: GuidString): Promise<number> {\n return BriefcaseManager.acquireNewBriefcaseId({ iModelId });\n }\n public async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\n return BriefcaseManager.getFileName(props);\n }\n public async downloadBriefcase(request: RequestNewBriefcaseProps, reportProgress: boolean, progressInterval?: number): Promise<LocalBriefcaseProps> {\n const args: RequestNewBriefcaseArg = {\n ...request,\n accessToken: await this.getAccessToken(),\n onProgress: (_a: number, _b: number) => checkAbort(),\n };\n\n const checkAbort = () => {\n assert(undefined !== args.fileName);\n const job = Downloads.isInProgress(args.fileName);\n return (job && (job.request as any).abort === 1) ? ProgressStatus.Abort : ProgressStatus.Continue;\n };\n\n if (reportProgress) {\n const progressCallback: ProgressFunction = (loaded, total) => {\n IpcHost.send(`nativeApp.progress-${request.iModelId}`, { loaded, total });\n return checkAbort();\n };\n args.onProgress = throttleProgressCallback(progressCallback, checkAbort, progressInterval);\n }\n\n return BriefcaseManager.downloadBriefcase(args);\n }\n\n public async requestCancelDownloadBriefcase(fileName: string): Promise<boolean> {\n const job = Downloads.isInProgress(fileName);\n if (job)\n (job.request as any).abort = 1;\n return job !== undefined;\n }\n\n public async deleteBriefcaseFiles(fileName: string): Promise<void> {\n await BriefcaseManager.deleteBriefcaseFiles(fileName, await IModelHost.getAccessToken());\n }\n\n public async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\n return BriefcaseManager.getCachedBriefcases(iModelId);\n }\n\n public async storageMgrOpen(storageId: string): Promise<string> {\n return NativeAppStorage.open(storageId).id;\n }\n\n public async storageMgrClose(storageId: string, deleteIt: boolean): Promise<void> {\n NativeAppStorage.find(storageId).close(deleteIt);\n }\n\n public async storageMgrNames(): Promise<string[]> {\n return NativeAppStorage.getStorageNames();\n }\n\n public async storageGetValueType(storageId: string, key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\n return NativeAppStorage.find(storageId).getValueType(key);\n }\n\n public async storageGet(storageId: string, key: string): Promise<StorageValue | undefined> {\n return NativeAppStorage.find(storageId).getData(key);\n }\n\n public async storageSet(storageId: string, key: string, value: StorageValue): Promise<void> {\n NativeAppStorage.find(storageId).setData(key, value);\n }\n\n public async storageRemove(storageId: string, key: string): Promise<void> {\n NativeAppStorage.find(storageId).removeData(key);\n }\n\n public async storageKeys(storageId: string): Promise<string[]> {\n return NativeAppStorage.find(storageId).getKeys();\n }\n\n public async storageRemoveAll(storageId: string): Promise<void> {\n NativeAppStorage.find(storageId).removeAll();\n }\n}\n\n/** Options for [[NativeHost.startup]]\n * @public\n */\nexport interface NativeHostOpts extends IpcHostOpts {\n nativeHost?: {\n /** Application name. Used, for example, to name the settings file. If not supplied, defaults to \"iTwinApp\". */\n applicationName?: string;\n };\n}\n\n/**\n * Backend for desktop/mobile native applications\n * @public\n */\nexport class NativeHost {\n private static _reachability?: InternetConnectivityStatus;\n private static _applicationName: string;\n private constructor() { } // no instances - static methods only\n\n /** Event called when the internet connectivity changes, if known. */\n public static readonly onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\n\n private static _appSettingsCacheDir?: string;\n\n /** Get the local cache folder for application settings */\n public static get appSettingsCacheDir(): string {\n if (this._appSettingsCacheDir === undefined)\n this._appSettingsCacheDir = join(IModelHost.cacheDir, \"appSettings\");\n return this._appSettingsCacheDir;\n }\n\n /** Send a notification to the NativeApp connected to this NativeHost. */\n public static notifyNativeFrontend<T extends keyof NativeAppNotifications>(methodName: T, ...args: Parameters<NativeAppNotifications[T]>) {\n return IpcHost.send(nativeAppNotify, methodName, ...args);\n }\n\n private static _isValid = false;\n public static get isValid(): boolean { return this._isValid; }\n public static get applicationName() { return this._applicationName; }\n /** Get the settings store for this NativeHost. */\n public static get settingsStore() {\n return NativeAppStorage.open(this.applicationName);\n }\n\n /**\n * Start the backend of a native app.\n * @note this method calls [[IpcHost.startup]] internally.\n */\n public static async startup(opt?: NativeHostOpts): Promise<void> {\n if (!this.isValid) {\n this._isValid = true;\n this.onInternetConnectivityChanged.addListener((status: InternetConnectivityStatus) =>\n NativeHost.notifyNativeFrontend(\"notifyInternetConnectivityChanged\", status));\n this._applicationName = opt?.nativeHost?.applicationName ?? \"iTwinApp\";\n }\n\n await IpcHost.startup(opt);\n if (IpcHost.isValid) // for tests, we use NativeHost but don't have a frontend\n NativeAppHandler.register();\n }\n\n /** Shutdown native app backend. Also calls [[IpcHost.shutdown]] */\n public static async shutdown(): Promise<void> {\n this._isValid = false;\n this.onInternetConnectivityChanged.clear();\n await IpcHost.shutdown();\n }\n\n /** get current value of internet connectivity */\n public static checkInternetConnectivity(): InternetConnectivityStatus {\n return this._reachability ?? InternetConnectivityStatus.Online;\n }\n\n /**\n * Override internet connectivity state\n * @param _overridenBy who overrode the value.\n * @internal\n */\n public static overrideInternetConnectivity(_overridenBy: OverriddenBy, status: InternetConnectivityStatus): void {\n if (this._reachability !== status) {\n this._reachability = status;\n this.onInternetConnectivityChanged.raiseEvent(status);\n }\n }\n}\n"]}