@itwin/core-bentley 3.4.0-dev.50 → 3.4.0-dev.55

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 (245) hide show
  1. package/lib/cjs/AccessToken.d.ts +8 -8
  2. package/lib/cjs/AccessToken.js +9 -9
  3. package/lib/cjs/AccessToken.js.map +1 -1
  4. package/lib/cjs/Assert.d.ts +25 -25
  5. package/lib/cjs/Assert.js +45 -45
  6. package/lib/cjs/Assert.js.map +1 -1
  7. package/lib/cjs/AsyncMutex.d.ts +26 -26
  8. package/lib/cjs/AsyncMutex.js +43 -43
  9. package/lib/cjs/AsyncMutex.js.map +1 -1
  10. package/lib/cjs/BeEvent.d.ts +81 -81
  11. package/lib/cjs/BeEvent.js +156 -156
  12. package/lib/cjs/BeEvent.js.map +1 -1
  13. package/lib/cjs/BeSQLite.d.ts +170 -170
  14. package/lib/cjs/BeSQLite.js +183 -183
  15. package/lib/cjs/BeSQLite.js.map +1 -1
  16. package/lib/cjs/BentleyError.d.ts +376 -376
  17. package/lib/cjs/BentleyError.js +699 -699
  18. package/lib/cjs/BentleyError.js.map +1 -1
  19. package/lib/cjs/BentleyLoggerCategory.d.ts +11 -11
  20. package/lib/cjs/BentleyLoggerCategory.js +19 -19
  21. package/lib/cjs/BentleyLoggerCategory.js.map +1 -1
  22. package/lib/cjs/ByteStream.d.ts +92 -92
  23. package/lib/cjs/ByteStream.d.ts.map +1 -1
  24. package/lib/cjs/ByteStream.js +133 -123
  25. package/lib/cjs/ByteStream.js.map +1 -1
  26. package/lib/cjs/ClassUtils.d.ts +14 -14
  27. package/lib/cjs/ClassUtils.js +27 -27
  28. package/lib/cjs/ClassUtils.js.map +1 -1
  29. package/lib/cjs/Compare.d.ts +47 -47
  30. package/lib/cjs/Compare.d.ts.map +1 -1
  31. package/lib/cjs/Compare.js +75 -63
  32. package/lib/cjs/Compare.js.map +1 -1
  33. package/lib/cjs/CompressedId64Set.d.ts +134 -134
  34. package/lib/cjs/CompressedId64Set.js +428 -428
  35. package/lib/cjs/CompressedId64Set.js.map +1 -1
  36. package/lib/cjs/Dictionary.d.ts +125 -125
  37. package/lib/cjs/Dictionary.d.ts.map +1 -1
  38. package/lib/cjs/Dictionary.js +203 -203
  39. package/lib/cjs/Dictionary.js.map +1 -1
  40. package/lib/cjs/Disposable.d.ts +80 -80
  41. package/lib/cjs/Disposable.js +120 -120
  42. package/lib/cjs/Disposable.js.map +1 -1
  43. package/lib/cjs/Id.d.ts +277 -277
  44. package/lib/cjs/Id.d.ts.map +1 -1
  45. package/lib/cjs/Id.js +629 -619
  46. package/lib/cjs/Id.js.map +1 -1
  47. package/lib/cjs/IndexMap.d.ts +65 -65
  48. package/lib/cjs/IndexMap.js +91 -91
  49. package/lib/cjs/IndexMap.js.map +1 -1
  50. package/lib/cjs/JsonSchema.d.ts +77 -77
  51. package/lib/cjs/JsonSchema.js +9 -9
  52. package/lib/cjs/JsonSchema.js.map +1 -1
  53. package/lib/cjs/JsonUtils.d.ts +78 -78
  54. package/lib/cjs/JsonUtils.d.ts.map +1 -1
  55. package/lib/cjs/JsonUtils.js +151 -133
  56. package/lib/cjs/JsonUtils.js.map +1 -1
  57. package/lib/cjs/LRUMap.d.ts +129 -129
  58. package/lib/cjs/LRUMap.d.ts.map +1 -1
  59. package/lib/cjs/LRUMap.js +333 -333
  60. package/lib/cjs/LRUMap.js.map +1 -1
  61. package/lib/cjs/Logger.d.ts +141 -141
  62. package/lib/cjs/Logger.js +254 -254
  63. package/lib/cjs/Logger.js.map +1 -1
  64. package/lib/cjs/ObservableSet.d.ts +23 -23
  65. package/lib/cjs/ObservableSet.js +51 -51
  66. package/lib/cjs/ObservableSet.js.map +1 -1
  67. package/lib/cjs/OneAtATimeAction.d.ts +31 -31
  68. package/lib/cjs/OneAtATimeAction.d.ts.map +1 -1
  69. package/lib/cjs/OneAtATimeAction.js +94 -91
  70. package/lib/cjs/OneAtATimeAction.js.map +1 -1
  71. package/lib/cjs/OrderedId64Iterable.d.ts +74 -74
  72. package/lib/cjs/OrderedId64Iterable.js +235 -235
  73. package/lib/cjs/OrderedId64Iterable.js.map +1 -1
  74. package/lib/cjs/OrderedSet.d.ts +40 -40
  75. package/lib/cjs/OrderedSet.js +64 -64
  76. package/lib/cjs/OrderedSet.js.map +1 -1
  77. package/lib/cjs/PriorityQueue.d.ts +70 -70
  78. package/lib/cjs/PriorityQueue.js +140 -140
  79. package/lib/cjs/PriorityQueue.js.map +1 -1
  80. package/lib/cjs/ProcessDetector.d.ts +59 -59
  81. package/lib/cjs/ProcessDetector.js +71 -71
  82. package/lib/cjs/ProcessDetector.js.map +1 -1
  83. package/lib/cjs/SortedArray.d.ts +232 -232
  84. package/lib/cjs/SortedArray.d.ts.map +1 -1
  85. package/lib/cjs/SortedArray.js +303 -301
  86. package/lib/cjs/SortedArray.js.map +1 -1
  87. package/lib/cjs/StatusCategory.d.ts +30 -30
  88. package/lib/cjs/StatusCategory.js +460 -460
  89. package/lib/cjs/StatusCategory.js.map +1 -1
  90. package/lib/cjs/StringUtils.d.ts +22 -22
  91. package/lib/cjs/StringUtils.d.ts.map +1 -1
  92. package/lib/cjs/StringUtils.js +148 -146
  93. package/lib/cjs/StringUtils.js.map +1 -1
  94. package/lib/cjs/Time.d.ts +122 -122
  95. package/lib/cjs/Time.d.ts.map +1 -1
  96. package/lib/cjs/Time.js +152 -146
  97. package/lib/cjs/Time.js.map +1 -1
  98. package/lib/cjs/Tracing.d.ts +40 -40
  99. package/lib/cjs/Tracing.d.ts.map +1 -1
  100. package/lib/cjs/Tracing.js +130 -130
  101. package/lib/cjs/Tracing.js.map +1 -1
  102. package/lib/cjs/TypedArrayBuilder.d.ts +98 -0
  103. package/lib/cjs/TypedArrayBuilder.d.ts.map +1 -0
  104. package/lib/cjs/TypedArrayBuilder.js +135 -0
  105. package/lib/cjs/TypedArrayBuilder.js.map +1 -0
  106. package/lib/cjs/UnexpectedErrors.d.ts +43 -43
  107. package/lib/cjs/UnexpectedErrors.d.ts.map +1 -1
  108. package/lib/cjs/UnexpectedErrors.js +68 -65
  109. package/lib/cjs/UnexpectedErrors.js.map +1 -1
  110. package/lib/cjs/UtilityTypes.d.ts +86 -86
  111. package/lib/cjs/UtilityTypes.js +26 -26
  112. package/lib/cjs/UtilityTypes.js.map +1 -1
  113. package/lib/cjs/YieldManager.d.ts +18 -18
  114. package/lib/cjs/YieldManager.js +34 -34
  115. package/lib/cjs/YieldManager.js.map +1 -1
  116. package/lib/cjs/core-bentley.d.ts +74 -73
  117. package/lib/cjs/core-bentley.d.ts.map +1 -1
  118. package/lib/cjs/core-bentley.js +90 -89
  119. package/lib/cjs/core-bentley.js.map +1 -1
  120. package/lib/cjs/partitionArray.d.ts +21 -21
  121. package/lib/cjs/partitionArray.js +43 -43
  122. package/lib/cjs/partitionArray.js.map +1 -1
  123. package/lib/esm/AccessToken.d.ts +8 -8
  124. package/lib/esm/AccessToken.js +8 -8
  125. package/lib/esm/AccessToken.js.map +1 -1
  126. package/lib/esm/Assert.d.ts +25 -25
  127. package/lib/esm/Assert.js +41 -41
  128. package/lib/esm/Assert.js.map +1 -1
  129. package/lib/esm/AsyncMutex.d.ts +26 -26
  130. package/lib/esm/AsyncMutex.js +39 -39
  131. package/lib/esm/AsyncMutex.js.map +1 -1
  132. package/lib/esm/BeEvent.d.ts +81 -81
  133. package/lib/esm/BeEvent.js +150 -150
  134. package/lib/esm/BeEvent.js.map +1 -1
  135. package/lib/esm/BeSQLite.d.ts +170 -170
  136. package/lib/esm/BeSQLite.js +180 -180
  137. package/lib/esm/BeSQLite.js.map +1 -1
  138. package/lib/esm/BentleyError.d.ts +376 -376
  139. package/lib/esm/BentleyError.js +695 -695
  140. package/lib/esm/BentleyError.js.map +1 -1
  141. package/lib/esm/BentleyLoggerCategory.d.ts +11 -11
  142. package/lib/esm/BentleyLoggerCategory.js +16 -16
  143. package/lib/esm/BentleyLoggerCategory.js.map +1 -1
  144. package/lib/esm/ByteStream.d.ts +92 -92
  145. package/lib/esm/ByteStream.d.ts.map +1 -1
  146. package/lib/esm/ByteStream.js +129 -119
  147. package/lib/esm/ByteStream.js.map +1 -1
  148. package/lib/esm/ClassUtils.d.ts +14 -14
  149. package/lib/esm/ClassUtils.js +22 -22
  150. package/lib/esm/ClassUtils.js.map +1 -1
  151. package/lib/esm/Compare.d.ts +47 -47
  152. package/lib/esm/Compare.d.ts.map +1 -1
  153. package/lib/esm/Compare.js +63 -51
  154. package/lib/esm/Compare.js.map +1 -1
  155. package/lib/esm/CompressedId64Set.d.ts +134 -134
  156. package/lib/esm/CompressedId64Set.js +423 -423
  157. package/lib/esm/CompressedId64Set.js.map +1 -1
  158. package/lib/esm/Dictionary.d.ts +125 -125
  159. package/lib/esm/Dictionary.d.ts.map +1 -1
  160. package/lib/esm/Dictionary.js +199 -199
  161. package/lib/esm/Dictionary.js.map +1 -1
  162. package/lib/esm/Disposable.d.ts +80 -80
  163. package/lib/esm/Disposable.js +112 -112
  164. package/lib/esm/Disposable.js.map +1 -1
  165. package/lib/esm/Id.d.ts +277 -277
  166. package/lib/esm/Id.d.ts.map +1 -1
  167. package/lib/esm/Id.js +625 -615
  168. package/lib/esm/Id.js.map +1 -1
  169. package/lib/esm/IndexMap.d.ts +65 -65
  170. package/lib/esm/IndexMap.js +86 -86
  171. package/lib/esm/IndexMap.js.map +1 -1
  172. package/lib/esm/JsonSchema.d.ts +77 -77
  173. package/lib/esm/JsonSchema.js +8 -8
  174. package/lib/esm/JsonSchema.js.map +1 -1
  175. package/lib/esm/JsonUtils.d.ts +78 -78
  176. package/lib/esm/JsonUtils.d.ts.map +1 -1
  177. package/lib/esm/JsonUtils.js +148 -130
  178. package/lib/esm/JsonUtils.js.map +1 -1
  179. package/lib/esm/LRUMap.d.ts +129 -129
  180. package/lib/esm/LRUMap.d.ts.map +1 -1
  181. package/lib/esm/LRUMap.js +326 -326
  182. package/lib/esm/LRUMap.js.map +1 -1
  183. package/lib/esm/Logger.d.ts +141 -141
  184. package/lib/esm/Logger.js +249 -249
  185. package/lib/esm/Logger.js.map +1 -1
  186. package/lib/esm/ObservableSet.d.ts +23 -23
  187. package/lib/esm/ObservableSet.js +47 -47
  188. package/lib/esm/ObservableSet.js.map +1 -1
  189. package/lib/esm/OneAtATimeAction.d.ts +31 -31
  190. package/lib/esm/OneAtATimeAction.d.ts.map +1 -1
  191. package/lib/esm/OneAtATimeAction.js +89 -86
  192. package/lib/esm/OneAtATimeAction.js.map +1 -1
  193. package/lib/esm/OrderedId64Iterable.d.ts +74 -74
  194. package/lib/esm/OrderedId64Iterable.js +232 -232
  195. package/lib/esm/OrderedId64Iterable.js.map +1 -1
  196. package/lib/esm/OrderedSet.d.ts +40 -40
  197. package/lib/esm/OrderedSet.js +59 -59
  198. package/lib/esm/OrderedSet.js.map +1 -1
  199. package/lib/esm/PriorityQueue.d.ts +70 -70
  200. package/lib/esm/PriorityQueue.js +136 -136
  201. package/lib/esm/PriorityQueue.js.map +1 -1
  202. package/lib/esm/ProcessDetector.d.ts +59 -59
  203. package/lib/esm/ProcessDetector.js +67 -67
  204. package/lib/esm/ProcessDetector.js.map +1 -1
  205. package/lib/esm/SortedArray.d.ts +232 -232
  206. package/lib/esm/SortedArray.d.ts.map +1 -1
  207. package/lib/esm/SortedArray.js +296 -294
  208. package/lib/esm/SortedArray.js.map +1 -1
  209. package/lib/esm/StatusCategory.d.ts +30 -30
  210. package/lib/esm/StatusCategory.js +454 -454
  211. package/lib/esm/StatusCategory.js.map +1 -1
  212. package/lib/esm/StringUtils.d.ts +22 -22
  213. package/lib/esm/StringUtils.d.ts.map +1 -1
  214. package/lib/esm/StringUtils.js +142 -140
  215. package/lib/esm/StringUtils.js.map +1 -1
  216. package/lib/esm/Time.d.ts +122 -122
  217. package/lib/esm/Time.d.ts.map +1 -1
  218. package/lib/esm/Time.js +146 -140
  219. package/lib/esm/Time.js.map +1 -1
  220. package/lib/esm/Tracing.d.ts +40 -40
  221. package/lib/esm/Tracing.d.ts.map +1 -1
  222. package/lib/esm/Tracing.js +126 -126
  223. package/lib/esm/Tracing.js.map +1 -1
  224. package/lib/esm/TypedArrayBuilder.d.ts +98 -0
  225. package/lib/esm/TypedArrayBuilder.d.ts.map +1 -0
  226. package/lib/esm/TypedArrayBuilder.js +128 -0
  227. package/lib/esm/TypedArrayBuilder.js.map +1 -0
  228. package/lib/esm/UnexpectedErrors.d.ts +43 -43
  229. package/lib/esm/UnexpectedErrors.d.ts.map +1 -1
  230. package/lib/esm/UnexpectedErrors.js +64 -61
  231. package/lib/esm/UnexpectedErrors.js.map +1 -1
  232. package/lib/esm/UtilityTypes.d.ts +86 -86
  233. package/lib/esm/UtilityTypes.js +21 -21
  234. package/lib/esm/UtilityTypes.js.map +1 -1
  235. package/lib/esm/YieldManager.d.ts +18 -18
  236. package/lib/esm/YieldManager.js +30 -30
  237. package/lib/esm/YieldManager.js.map +1 -1
  238. package/lib/esm/core-bentley.d.ts +74 -73
  239. package/lib/esm/core-bentley.d.ts.map +1 -1
  240. package/lib/esm/core-bentley.js +78 -77
  241. package/lib/esm/core-bentley.js.map +1 -1
  242. package/lib/esm/partitionArray.d.ts +21 -21
  243. package/lib/esm/partitionArray.js +39 -39
  244. package/lib/esm/partitionArray.js.map +1 -1
  245. package/package.json +4 -4
@@ -1,60 +1,60 @@
1
- /** @packageDocumentation
2
- * @module ProcessDetector
3
- */
4
- /** Functions to determine the type of JavaScript process currently executing.
5
- * @public
6
- */
7
- export declare class ProcessDetector {
8
- /** Is this a browser process?
9
- * @note this method will also return `true` for the frontend of Electron or Mobile apps. They *are* browser processes.
10
- */
11
- static get isBrowserProcess(): boolean;
12
- /** Is this a Node process?
13
- * @note this means "is this a backend process"? It will return `true` for all backend process, including Electron and mobile apps.
14
- */
15
- static get isNodeProcess(): boolean;
16
- /** Is this process the frontend of an Electron app? */
17
- static get isElectronAppFrontend(): boolean;
18
- /** Is this process the backend of an Electron app? */
19
- static get isElectronAppBackend(): boolean;
20
- /** Is this process running in a browser on an iPad?
21
- * @note This method will return `true` for any frontend running on an iPad, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
22
- */
23
- static get isIPadBrowser(): boolean;
24
- /** Is this process running in a browser on an iPhone?
25
- * @note This method will return `true` for any frontend running on an iPhone, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
26
- */
27
- static get isIPhoneBrowser(): boolean;
28
- /** Is this process running in a browser on an iOS device?
29
- * @note This method will return `true` for any frontend running on an iOS device, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
30
- */
31
- static get isIOSBrowser(): boolean;
32
- /** Is this process running in a browser on an Android device?
33
- * @note This method will return `true` for any frontend running on an Android device, whether it is a user-launched web browser (e.g. Chrome) or the frontend of a mobile app.
34
- */
35
- static get isAndroidBrowser(): boolean;
36
- /** Is this process running in a browser on a mobile device?
37
- * @note This method will return `true` for any frontend running on a mobile device, whether it is a user-launched web browser or the frontend of a mobile app.
38
- */
39
- static get isMobileBrowser(): boolean;
40
- /** Is this process running in a Chromium based browser (Chrome / new Edge / Electron front end)? */
41
- static get isChromium(): boolean;
42
- /** Is this process the frontend of an iTwin mobile application?
43
- * @note this indicates that this is a browser process started by an iTwin mobile application.
44
- * It will return `false` when running user-launched web browsers on a mobile device.
45
- */
46
- static get isMobileAppFrontend(): boolean;
47
- /** Is this process the frontend of an iOS mobile application? */
48
- static get isIOSAppFrontend(): boolean;
49
- /** Is this process the frontend of an Android mobile application? */
50
- static get isAndroidAppFrontend(): boolean;
51
- /** Is this process the backend of an iOS mobile application? */
52
- static get isIOSAppBackend(): boolean;
53
- /** Is this process the backend of an Android mobile application? */
54
- static get isAndroidAppBackend(): boolean;
55
- /** Is this process a mobile app backend? */
56
- static get isMobileAppBackend(): boolean;
57
- /** Is this process the frontend of a native (Electron or Mobile) app? */
58
- static get isNativeAppFrontend(): boolean;
59
- }
1
+ /** @packageDocumentation
2
+ * @module ProcessDetector
3
+ */
4
+ /** Functions to determine the type of JavaScript process currently executing.
5
+ * @public
6
+ */
7
+ export declare class ProcessDetector {
8
+ /** Is this a browser process?
9
+ * @note this method will also return `true` for the frontend of Electron or Mobile apps. They *are* browser processes.
10
+ */
11
+ static get isBrowserProcess(): boolean;
12
+ /** Is this a Node process?
13
+ * @note this means "is this a backend process"? It will return `true` for all backend process, including Electron and mobile apps.
14
+ */
15
+ static get isNodeProcess(): boolean;
16
+ /** Is this process the frontend of an Electron app? */
17
+ static get isElectronAppFrontend(): boolean;
18
+ /** Is this process the backend of an Electron app? */
19
+ static get isElectronAppBackend(): boolean;
20
+ /** Is this process running in a browser on an iPad?
21
+ * @note This method will return `true` for any frontend running on an iPad, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
22
+ */
23
+ static get isIPadBrowser(): boolean;
24
+ /** Is this process running in a browser on an iPhone?
25
+ * @note This method will return `true` for any frontend running on an iPhone, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
26
+ */
27
+ static get isIPhoneBrowser(): boolean;
28
+ /** Is this process running in a browser on an iOS device?
29
+ * @note This method will return `true` for any frontend running on an iOS device, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
30
+ */
31
+ static get isIOSBrowser(): boolean;
32
+ /** Is this process running in a browser on an Android device?
33
+ * @note This method will return `true` for any frontend running on an Android device, whether it is a user-launched web browser (e.g. Chrome) or the frontend of a mobile app.
34
+ */
35
+ static get isAndroidBrowser(): boolean;
36
+ /** Is this process running in a browser on a mobile device?
37
+ * @note This method will return `true` for any frontend running on a mobile device, whether it is a user-launched web browser or the frontend of a mobile app.
38
+ */
39
+ static get isMobileBrowser(): boolean;
40
+ /** Is this process running in a Chromium based browser (Chrome / new Edge / Electron front end)? */
41
+ static get isChromium(): boolean;
42
+ /** Is this process the frontend of an iTwin mobile application?
43
+ * @note this indicates that this is a browser process started by an iTwin mobile application.
44
+ * It will return `false` when running user-launched web browsers on a mobile device.
45
+ */
46
+ static get isMobileAppFrontend(): boolean;
47
+ /** Is this process the frontend of an iOS mobile application? */
48
+ static get isIOSAppFrontend(): boolean;
49
+ /** Is this process the frontend of an Android mobile application? */
50
+ static get isAndroidAppFrontend(): boolean;
51
+ /** Is this process the backend of an iOS mobile application? */
52
+ static get isIOSAppBackend(): boolean;
53
+ /** Is this process the backend of an Android mobile application? */
54
+ static get isAndroidAppBackend(): boolean;
55
+ /** Is this process a mobile app backend? */
56
+ static get isMobileAppBackend(): boolean;
57
+ /** Is this process the frontend of a native (Electron or Mobile) app? */
58
+ static get isNativeAppFrontend(): boolean;
59
+ }
60
60
  //# sourceMappingURL=ProcessDetector.d.ts.map
@@ -1,68 +1,68 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module ProcessDetector
7
- */
8
- /** Functions to determine the type of JavaScript process currently executing.
9
- * @public
10
- */
11
- export class ProcessDetector {
12
- /** Is this a browser process?
13
- * @note this method will also return `true` for the frontend of Electron or Mobile apps. They *are* browser processes.
14
- */
15
- static get isBrowserProcess() { return typeof window === "object" && typeof window.navigator === "object"; }
16
- /** Is this a Node process?
17
- * @note this means "is this a backend process"? It will return `true` for all backend process, including Electron and mobile apps.
18
- */
19
- static get isNodeProcess() { return typeof process === "object" && undefined !== process.platform; }
20
- /** Is this process the frontend of an Electron app? */
21
- static get isElectronAppFrontend() { return typeof navigator === "object" && navigator.userAgent.toLowerCase().indexOf("electron") >= 0; }
22
- /** Is this process the backend of an Electron app? */
23
- static get isElectronAppBackend() { return typeof process === "object" && process.versions.hasOwnProperty("electron"); }
24
- /** Is this process running in a browser on an iPad?
25
- * @note This method will return `true` for any frontend running on an iPad, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
26
- */
27
- static get isIPadBrowser() {
28
- return this.isBrowserProcess && window.navigator.platform === "iPad" || (window.navigator.platform === "MacIntel" && window.navigator.maxTouchPoints > 0 && !("MSStream" in window)); /* eslint-disable-line deprecation/deprecation */
29
- }
30
- /** Is this process running in a browser on an iPhone?
31
- * @note This method will return `true` for any frontend running on an iPhone, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
32
- */
33
- static get isIPhoneBrowser() { return this.isBrowserProcess && (/(iphone|ipod)/i.test(window.navigator.userAgent)); }
34
- /** Is this process running in a browser on an iOS device?
35
- * @note This method will return `true` for any frontend running on an iOS device, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
36
- */
37
- static get isIOSBrowser() { return this.isIPadBrowser || this.isIPhoneBrowser; }
38
- /** Is this process running in a browser on an Android device?
39
- * @note This method will return `true` for any frontend running on an Android device, whether it is a user-launched web browser (e.g. Chrome) or the frontend of a mobile app.
40
- */
41
- static get isAndroidBrowser() { return this.isBrowserProcess && /android/i.test(window.navigator.userAgent); }
42
- /** Is this process running in a browser on a mobile device?
43
- * @note This method will return `true` for any frontend running on a mobile device, whether it is a user-launched web browser or the frontend of a mobile app.
44
- */
45
- static get isMobileBrowser() { return this.isIOSBrowser || this.isAndroidBrowser; }
46
- /** Is this process running in a Chromium based browser (Chrome / new Edge / Electron front end)? */
47
- static get isChromium() {
48
- return (this.isBrowserProcess && window.navigator.userAgent.indexOf("Chrome") > -1 && window.navigator.userAgent.indexOf("OP") === -1) || this.isElectronAppFrontend;
49
- }
50
- /** Is this process the frontend of an iTwin mobile application?
51
- * @note this indicates that this is a browser process started by an iTwin mobile application.
52
- * It will return `false` when running user-launched web browsers on a mobile device.
53
- */
54
- static get isMobileAppFrontend() { return this.isAndroidAppFrontend || this.isIOSAppFrontend; }
55
- /** Is this process the frontend of an iOS mobile application? */
56
- static get isIOSAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf("platform=ios") !== -1; }
57
- /** Is this process the frontend of an Android mobile application? */
58
- static get isAndroidAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf("platform=android") !== -1; }
59
- /** Is this process the backend of an iOS mobile application? */
60
- static get isIOSAppBackend() { return this.isNodeProcess && process.platform === "ios"; }
61
- /** Is this process the backend of an Android mobile application? */
62
- static get isAndroidAppBackend() { return this.isNodeProcess && process.platform === "android"; }
63
- /** Is this process a mobile app backend? */
64
- static get isMobileAppBackend() { return this.isIOSAppBackend || this.isAndroidAppBackend; }
65
- /** Is this process the frontend of a native (Electron or Mobile) app? */
66
- static get isNativeAppFrontend() { return this.isElectronAppFrontend || this.isMobileAppFrontend; }
67
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module ProcessDetector
7
+ */
8
+ /** Functions to determine the type of JavaScript process currently executing.
9
+ * @public
10
+ */
11
+ export class ProcessDetector {
12
+ /** Is this a browser process?
13
+ * @note this method will also return `true` for the frontend of Electron or Mobile apps. They *are* browser processes.
14
+ */
15
+ static get isBrowserProcess() { return typeof window === "object" && typeof window.navigator === "object"; }
16
+ /** Is this a Node process?
17
+ * @note this means "is this a backend process"? It will return `true` for all backend process, including Electron and mobile apps.
18
+ */
19
+ static get isNodeProcess() { return typeof process === "object" && undefined !== process.platform; }
20
+ /** Is this process the frontend of an Electron app? */
21
+ static get isElectronAppFrontend() { return typeof navigator === "object" && navigator.userAgent.toLowerCase().indexOf("electron") >= 0; }
22
+ /** Is this process the backend of an Electron app? */
23
+ static get isElectronAppBackend() { return typeof process === "object" && process.versions.hasOwnProperty("electron"); }
24
+ /** Is this process running in a browser on an iPad?
25
+ * @note This method will return `true` for any frontend running on an iPad, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
26
+ */
27
+ static get isIPadBrowser() {
28
+ return this.isBrowserProcess && window.navigator.platform === "iPad" || (window.navigator.platform === "MacIntel" && window.navigator.maxTouchPoints > 0 && !("MSStream" in window)); /* eslint-disable-line deprecation/deprecation */
29
+ }
30
+ /** Is this process running in a browser on an iPhone?
31
+ * @note This method will return `true` for any frontend running on an iPhone, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
32
+ */
33
+ static get isIPhoneBrowser() { return this.isBrowserProcess && (/(iphone|ipod)/i.test(window.navigator.userAgent)); }
34
+ /** Is this process running in a browser on an iOS device?
35
+ * @note This method will return `true` for any frontend running on an iOS device, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.
36
+ */
37
+ static get isIOSBrowser() { return this.isIPadBrowser || this.isIPhoneBrowser; }
38
+ /** Is this process running in a browser on an Android device?
39
+ * @note This method will return `true` for any frontend running on an Android device, whether it is a user-launched web browser (e.g. Chrome) or the frontend of a mobile app.
40
+ */
41
+ static get isAndroidBrowser() { return this.isBrowserProcess && /android/i.test(window.navigator.userAgent); }
42
+ /** Is this process running in a browser on a mobile device?
43
+ * @note This method will return `true` for any frontend running on a mobile device, whether it is a user-launched web browser or the frontend of a mobile app.
44
+ */
45
+ static get isMobileBrowser() { return this.isIOSBrowser || this.isAndroidBrowser; }
46
+ /** Is this process running in a Chromium based browser (Chrome / new Edge / Electron front end)? */
47
+ static get isChromium() {
48
+ return (this.isBrowserProcess && window.navigator.userAgent.indexOf("Chrome") > -1 && window.navigator.userAgent.indexOf("OP") === -1) || this.isElectronAppFrontend;
49
+ }
50
+ /** Is this process the frontend of an iTwin mobile application?
51
+ * @note this indicates that this is a browser process started by an iTwin mobile application.
52
+ * It will return `false` when running user-launched web browsers on a mobile device.
53
+ */
54
+ static get isMobileAppFrontend() { return this.isAndroidAppFrontend || this.isIOSAppFrontend; }
55
+ /** Is this process the frontend of an iOS mobile application? */
56
+ static get isIOSAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf("platform=ios") !== -1; }
57
+ /** Is this process the frontend of an Android mobile application? */
58
+ static get isAndroidAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf("platform=android") !== -1; }
59
+ /** Is this process the backend of an iOS mobile application? */
60
+ static get isIOSAppBackend() { return this.isNodeProcess && process.platform === "ios"; }
61
+ /** Is this process the backend of an Android mobile application? */
62
+ static get isAndroidAppBackend() { return this.isNodeProcess && process.platform === "android"; }
63
+ /** Is this process a mobile app backend? */
64
+ static get isMobileAppBackend() { return this.isIOSAppBackend || this.isAndroidAppBackend; }
65
+ /** Is this process the frontend of a native (Electron or Mobile) app? */
66
+ static get isNativeAppFrontend() { return this.isElectronAppFrontend || this.isMobileAppFrontend; }
67
+ }
68
68
  //# sourceMappingURL=ProcessDetector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../src/ProcessDetector.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 ProcessDetector\r\n */\r\n\r\n/** Functions to determine the type of JavaScript process currently executing.\r\n * @public\r\n */\r\nexport class ProcessDetector {\r\n\r\n /** Is this a browser process?\r\n * @note this method will also return `true` for the frontend of Electron or Mobile apps. They *are* browser processes.\r\n */\r\n public static get isBrowserProcess() { return typeof window === \"object\" && typeof window.navigator === \"object\"; }\r\n\r\n /** Is this a Node process?\r\n * @note this means \"is this a backend process\"? It will return `true` for all backend process, including Electron and mobile apps.\r\n */\r\n public static get isNodeProcess() { return typeof process === \"object\" && undefined !== process.platform; }\r\n\r\n /** Is this process the frontend of an Electron app? */\r\n public static get isElectronAppFrontend() { return typeof navigator === \"object\" && navigator.userAgent.toLowerCase().indexOf(\"electron\") >= 0; }\r\n\r\n /** Is this process the backend of an Electron app? */\r\n public static get isElectronAppBackend() { return typeof process === \"object\" && process.versions.hasOwnProperty(\"electron\"); }\r\n\r\n /** Is this process running in a browser on an iPad?\r\n * @note This method will return `true` for any frontend running on an iPad, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.\r\n */\r\n public static get isIPadBrowser() {\r\n return this.isBrowserProcess && window.navigator.platform === \"iPad\" || (window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 0 && !(\"MSStream\" in window)); /* eslint-disable-line deprecation/deprecation */\r\n }\r\n\r\n /** Is this process running in a browser on an iPhone?\r\n * @note This method will return `true` for any frontend running on an iPhone, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.\r\n */\r\n public static get isIPhoneBrowser() { return this.isBrowserProcess && (/(iphone|ipod)/i.test(window.navigator.userAgent)); }\r\n\r\n /** Is this process running in a browser on an iOS device?\r\n * @note This method will return `true` for any frontend running on an iOS device, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.\r\n */\r\n public static get isIOSBrowser() { return this.isIPadBrowser || this.isIPhoneBrowser; }\r\n\r\n /** Is this process running in a browser on an Android device?\r\n * @note This method will return `true` for any frontend running on an Android device, whether it is a user-launched web browser (e.g. Chrome) or the frontend of a mobile app.\r\n */\r\n public static get isAndroidBrowser() { return this.isBrowserProcess && /android/i.test(window.navigator.userAgent); }\r\n\r\n /** Is this process running in a browser on a mobile device?\r\n * @note This method will return `true` for any frontend running on a mobile device, whether it is a user-launched web browser or the frontend of a mobile app.\r\n */\r\n public static get isMobileBrowser() { return this.isIOSBrowser || this.isAndroidBrowser; }\r\n\r\n /** Is this process running in a Chromium based browser (Chrome / new Edge / Electron front end)? */\r\n public static get isChromium() {\r\n return (this.isBrowserProcess && window.navigator.userAgent.indexOf(\"Chrome\") > -1 && window.navigator.userAgent.indexOf(\"OP\") === -1) || this.isElectronAppFrontend;\r\n }\r\n\r\n /** Is this process the frontend of an iTwin mobile application?\r\n * @note this indicates that this is a browser process started by an iTwin mobile application.\r\n * It will return `false` when running user-launched web browsers on a mobile device.\r\n */\r\n public static get isMobileAppFrontend() { return this.isAndroidAppFrontend || this.isIOSAppFrontend; }\r\n\r\n /** Is this process the frontend of an iOS mobile application? */\r\n public static get isIOSAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf(\"platform=ios\") !== -1; }\r\n\r\n /** Is this process the frontend of an Android mobile application? */\r\n public static get isAndroidAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf(\"platform=android\") !== -1; }\r\n\r\n /** Is this process the backend of an iOS mobile application? */\r\n public static get isIOSAppBackend() { return this.isNodeProcess && (process.platform as any) === \"ios\"; }\r\n\r\n /** Is this process the backend of an Android mobile application? */\r\n public static get isAndroidAppBackend() { return this.isNodeProcess && (process.platform as any) === \"android\"; }\r\n\r\n /** Is this process a mobile app backend? */\r\n public static get isMobileAppBackend() { return this.isIOSAppBackend || this.isAndroidAppBackend; }\r\n\r\n /** Is this process the frontend of a native (Electron or Mobile) app? */\r\n public static get isNativeAppFrontend() { return this.isElectronAppFrontend || this.isMobileAppFrontend; }\r\n}\r\n"]}
1
+ {"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../src/ProcessDetector.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 ProcessDetector\n */\n\n/** Functions to determine the type of JavaScript process currently executing.\n * @public\n */\nexport class ProcessDetector {\n\n /** Is this a browser process?\n * @note this method will also return `true` for the frontend of Electron or Mobile apps. They *are* browser processes.\n */\n public static get isBrowserProcess() { return typeof window === \"object\" && typeof window.navigator === \"object\"; }\n\n /** Is this a Node process?\n * @note this means \"is this a backend process\"? It will return `true` for all backend process, including Electron and mobile apps.\n */\n public static get isNodeProcess() { return typeof process === \"object\" && undefined !== process.platform; }\n\n /** Is this process the frontend of an Electron app? */\n public static get isElectronAppFrontend() { return typeof navigator === \"object\" && navigator.userAgent.toLowerCase().indexOf(\"electron\") >= 0; }\n\n /** Is this process the backend of an Electron app? */\n public static get isElectronAppBackend() { return typeof process === \"object\" && process.versions.hasOwnProperty(\"electron\"); }\n\n /** Is this process running in a browser on an iPad?\n * @note This method will return `true` for any frontend running on an iPad, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.\n */\n public static get isIPadBrowser() {\n return this.isBrowserProcess && window.navigator.platform === \"iPad\" || (window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 0 && !(\"MSStream\" in window)); /* eslint-disable-line deprecation/deprecation */\n }\n\n /** Is this process running in a browser on an iPhone?\n * @note This method will return `true` for any frontend running on an iPhone, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.\n */\n public static get isIPhoneBrowser() { return this.isBrowserProcess && (/(iphone|ipod)/i.test(window.navigator.userAgent)); }\n\n /** Is this process running in a browser on an iOS device?\n * @note This method will return `true` for any frontend running on an iOS device, whether it is a user-launched web browser (e.g. Safari) or the frontend of a mobile app.\n */\n public static get isIOSBrowser() { return this.isIPadBrowser || this.isIPhoneBrowser; }\n\n /** Is this process running in a browser on an Android device?\n * @note This method will return `true` for any frontend running on an Android device, whether it is a user-launched web browser (e.g. Chrome) or the frontend of a mobile app.\n */\n public static get isAndroidBrowser() { return this.isBrowserProcess && /android/i.test(window.navigator.userAgent); }\n\n /** Is this process running in a browser on a mobile device?\n * @note This method will return `true` for any frontend running on a mobile device, whether it is a user-launched web browser or the frontend of a mobile app.\n */\n public static get isMobileBrowser() { return this.isIOSBrowser || this.isAndroidBrowser; }\n\n /** Is this process running in a Chromium based browser (Chrome / new Edge / Electron front end)? */\n public static get isChromium() {\n return (this.isBrowserProcess && window.navigator.userAgent.indexOf(\"Chrome\") > -1 && window.navigator.userAgent.indexOf(\"OP\") === -1) || this.isElectronAppFrontend;\n }\n\n /** Is this process the frontend of an iTwin mobile application?\n * @note this indicates that this is a browser process started by an iTwin mobile application.\n * It will return `false` when running user-launched web browsers on a mobile device.\n */\n public static get isMobileAppFrontend() { return this.isAndroidAppFrontend || this.isIOSAppFrontend; }\n\n /** Is this process the frontend of an iOS mobile application? */\n public static get isIOSAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf(\"platform=ios\") !== -1; }\n\n /** Is this process the frontend of an Android mobile application? */\n public static get isAndroidAppFrontend() { return this.isBrowserProcess && window.location.hash.indexOf(\"platform=android\") !== -1; }\n\n /** Is this process the backend of an iOS mobile application? */\n public static get isIOSAppBackend() { return this.isNodeProcess && (process.platform as any) === \"ios\"; }\n\n /** Is this process the backend of an Android mobile application? */\n public static get isAndroidAppBackend() { return this.isNodeProcess && (process.platform as any) === \"android\"; }\n\n /** Is this process a mobile app backend? */\n public static get isMobileAppBackend() { return this.isIOSAppBackend || this.isAndroidAppBackend; }\n\n /** Is this process the frontend of a native (Electron or Mobile) app? */\n public static get isNativeAppFrontend() { return this.isElectronAppFrontend || this.isMobileAppFrontend; }\n}\n"]}