@aws/lsp-codewhisperer 0.0.9 → 0.0.10

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 (263) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/node_modules/@amzn/codewhisperer-streaming/package.json +4 -4
  3. package/node_modules/@aws/lsp-fqn/out/common/commonFqnWorkerPool.js +12 -25
  4. package/node_modules/@aws/lsp-fqn/out/common/commonFqnWorkerPool.js.map +1 -1
  5. package/node_modules/@aws/lsp-fqn/out/common/fqnExtractor.js +1 -2
  6. package/node_modules/@aws/lsp-fqn/out/common/fqnExtractor.js.map +1 -1
  7. package/node_modules/@aws/lsp-fqn/package.json +1 -1
  8. package/node_modules/@aws/lsp-fqn/tsconfig.tsbuildinfo +1 -1
  9. package/out/client/streamingClient/codewhispererStreamingClient.d.ts +5 -0
  10. package/out/client/streamingClient/codewhispererStreamingClient.js +25 -0
  11. package/out/client/streamingClient/codewhispererStreamingClient.js.map +1 -0
  12. package/out/client/token/bearer-token-service.json +55 -2
  13. package/out/index.d.ts +1 -0
  14. package/out/index.js +1 -0
  15. package/out/index.js.map +1 -1
  16. package/out/language-server/chat/chatController.js +104 -108
  17. package/out/language-server/chat/chatController.js.map +1 -1
  18. package/out/language-server/chat/chatController.test.js +16 -1
  19. package/out/language-server/chat/chatController.test.js.map +1 -1
  20. package/out/language-server/chat/chatEventParser.js +28 -34
  21. package/out/language-server/chat/chatEventParser.js.map +1 -1
  22. package/out/language-server/chat/chatSessionManagementService.js +22 -36
  23. package/out/language-server/chat/chatSessionManagementService.js.map +1 -1
  24. package/out/language-server/chat/chatSessionService.js +24 -37
  25. package/out/language-server/chat/chatSessionService.js.map +1 -1
  26. package/out/language-server/chat/constants.d.ts +2 -0
  27. package/out/language-server/chat/constants.js +32 -0
  28. package/out/language-server/chat/constants.js.map +1 -0
  29. package/out/language-server/chat/contexts/documentContext.js +11 -24
  30. package/out/language-server/chat/contexts/documentContext.js.map +1 -1
  31. package/out/language-server/chat/contexts/documentFqnExtractor.js +67 -78
  32. package/out/language-server/chat/contexts/documentFqnExtractor.js.map +1 -1
  33. package/out/language-server/chat/contexts/triggerContext.js +32 -44
  34. package/out/language-server/chat/contexts/triggerContext.js.map +1 -1
  35. package/out/language-server/chat/quickActions.d.ts +0 -1
  36. package/out/language-server/chat/quickActions.js +1 -28
  37. package/out/language-server/chat/quickActions.js.map +1 -1
  38. package/out/language-server/chat/telemetry/chatTelemetryController.js +114 -126
  39. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  40. package/out/language-server/chat/utils.d.ts +6 -0
  41. package/out/language-server/chat/utils.js +60 -0
  42. package/out/language-server/chat/utils.js.map +1 -0
  43. package/out/language-server/codeWhispererService.js +13 -11
  44. package/out/language-server/codeWhispererService.js.map +1 -1
  45. package/out/language-server/constants.d.ts +3 -0
  46. package/out/language-server/constants.js +7 -0
  47. package/out/language-server/constants.js.map +1 -0
  48. package/out/language-server/dependencyGraph/csharpDependencyGraph.js +2 -2
  49. package/out/language-server/dependencyGraph/csharpDependencyGraph.js.map +1 -1
  50. package/out/language-server/dependencyGraph/dependencyGraph.js +12 -9
  51. package/out/language-server/dependencyGraph/dependencyGraph.js.map +1 -1
  52. package/out/language-server/dependencyGraph/gitIgnoreFilter.js +1 -0
  53. package/out/language-server/dependencyGraph/gitIgnoreFilter.js.map +1 -1
  54. package/out/language-server/netTransform/artifactManager.d.ts +29 -0
  55. package/out/language-server/netTransform/artifactManager.js +191 -0
  56. package/out/language-server/netTransform/artifactManager.js.map +1 -0
  57. package/out/language-server/netTransform/converter.d.ts +7 -0
  58. package/out/language-server/netTransform/converter.js +88 -0
  59. package/out/language-server/netTransform/converter.js.map +1 -0
  60. package/out/language-server/netTransform/metrics.d.ts +17 -0
  61. package/out/language-server/netTransform/metrics.js +222 -0
  62. package/out/language-server/netTransform/metrics.js.map +1 -0
  63. package/out/language-server/netTransform/models.d.ts +84 -0
  64. package/out/language-server/netTransform/models.js +12 -0
  65. package/out/language-server/netTransform/models.js.map +1 -0
  66. package/out/language-server/netTransform/resources/SupportedProjects.d.ts +2 -0
  67. package/out/language-server/netTransform/resources/SupportedProjects.js +26 -0
  68. package/out/language-server/netTransform/resources/SupportedProjects.js.map +1 -0
  69. package/out/language-server/netTransform/tests/converter.test.d.ts +1 -0
  70. package/out/language-server/netTransform/tests/converter.test.js +151 -0
  71. package/out/language-server/netTransform/tests/converter.test.js.map +1 -0
  72. package/out/language-server/netTransform/tests/mockData.d.ts +21 -0
  73. package/out/language-server/netTransform/tests/mockData.js +60 -0
  74. package/out/language-server/netTransform/tests/mockData.js.map +1 -0
  75. package/out/language-server/netTransform/tests/transformHandler.test.d.ts +1 -0
  76. package/out/language-server/netTransform/tests/transformHandler.test.js +242 -0
  77. package/out/language-server/netTransform/tests/transformHandler.test.js.map +1 -0
  78. package/out/language-server/netTransform/tests/validation.test.d.ts +1 -0
  79. package/out/language-server/netTransform/tests/validation.test.js +80 -0
  80. package/out/language-server/netTransform/tests/validation.test.js.map +1 -0
  81. package/out/language-server/netTransform/transformHandler.d.ts +27 -0
  82. package/out/language-server/netTransform/transformHandler.js +315 -0
  83. package/out/language-server/netTransform/transformHandler.js.map +1 -0
  84. package/out/language-server/netTransform/validation.d.ts +9 -0
  85. package/out/language-server/netTransform/validation.js +79 -0
  86. package/out/language-server/netTransform/validation.js.map +1 -0
  87. package/out/language-server/netTransformServer.d.ts +5 -6
  88. package/out/language-server/netTransformServer.js +149 -15
  89. package/out/language-server/netTransformServer.js.map +1 -1
  90. package/out/language-server/proxy-server.d.ts +1 -0
  91. package/out/language-server/proxy-server.js +16 -1
  92. package/out/language-server/proxy-server.js.map +1 -1
  93. package/out/language-server/securityScan/securityScanDiagnosticsProvider.js +10 -6
  94. package/out/language-server/securityScan/securityScanDiagnosticsProvider.js.map +1 -1
  95. package/out/language-server/securityScan/securityScanHandler.js +4 -0
  96. package/out/language-server/securityScan/securityScanHandler.js.map +1 -1
  97. package/out/language-server/session/sessionManager.js +35 -15
  98. package/out/language-server/session/sessionManager.js.map +1 -1
  99. package/out/language-server/telemetry/codeDiffTracker.js +69 -80
  100. package/out/language-server/telemetry/codeDiffTracker.js.map +1 -1
  101. package/out/language-server/telemetry/codePercentage.js +3 -0
  102. package/out/language-server/telemetry/codePercentage.js.map +1 -1
  103. package/out/language-server/telemetry/metric.js +8 -21
  104. package/out/language-server/telemetry/metric.js.map +1 -1
  105. package/out/language-server/telemetry/types.d.ts +38 -0
  106. package/out/language-server/telemetry/types.js.map +1 -1
  107. package/out/language-server/utils.d.ts +2 -5
  108. package/out/language-server/utils.js +25 -49
  109. package/out/language-server/utils.js.map +1 -1
  110. package/package.json +5 -2
  111. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/HISTORY.md +0 -395
  112. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/LICENSE +0 -201
  113. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/README.md +0 -530
  114. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/worker.js +0 -288
  115. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/worker.js.map +0 -1
  116. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/worker.min.js +0 -2
  117. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/worker.min.js.map +0 -1
  118. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/workerpool.js +0 -1737
  119. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/workerpool.js.map +0 -1
  120. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/workerpool.min.js +0 -3
  121. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/workerpool.min.js.LICENSE.txt +0 -24
  122. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/dist/workerpool.min.js.map +0 -1
  123. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/package.json +0 -57
  124. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/Pool.js +0 -476
  125. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/Promise.js +0 -293
  126. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/WorkerHandler.js +0 -547
  127. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/debug-port-allocator.js +0 -28
  128. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/environment.js +0 -30
  129. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/generated/embeddedWorker.js +0 -6
  130. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/header.js +0 -24
  131. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/index.js +0 -60
  132. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/requireFoolWebpack.js +0 -8
  133. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/transfer.js +0 -12
  134. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/types.js +0 -46
  135. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/validateOptions.js +0 -51
  136. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/src/worker.js +0 -256
  137. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/Pool.d.ts +0 -130
  138. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/Promise.d.ts +0 -125
  139. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/WorkerHandler.d.ts +0 -89
  140. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/debug-port-allocator.d.ts +0 -8
  141. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/environment.d.ts +0 -4
  142. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/generated/embeddedWorker.d.ts +0 -2
  143. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/index.d.ts +0 -43
  144. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/transfer.d.ts +0 -19
  145. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/types.d.ts +0 -99
  146. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/validateOptions.d.ts +0 -4
  147. package/node_modules/@aws/lsp-fqn/node_modules/workerpool/types/worker.d.ts +0 -8
  148. package/node_modules/@smithy/eventstream-serde-config-resolver/LICENSE +0 -201
  149. package/node_modules/@smithy/eventstream-serde-config-resolver/README.md +0 -10
  150. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-cjs/EventStreamSerdeConfig.js +0 -1
  151. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-cjs/index.js +0 -37
  152. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js +0 -4
  153. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/index.js +0 -1
  154. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/EventStreamSerdeConfig.d.ts +0 -24
  155. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/index.d.ts +0 -4
  156. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/EventStreamSerdeConfig.d.ts +0 -24
  157. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/index.d.ts +0 -4
  158. package/node_modules/@smithy/eventstream-serde-config-resolver/package.json +0 -61
  159. package/node_modules/bowser/CHANGELOG.md +0 -218
  160. package/node_modules/bowser/LICENSE +0 -39
  161. package/node_modules/bowser/README.md +0 -179
  162. package/node_modules/bowser/bundled.js +0 -1
  163. package/node_modules/bowser/es5.js +0 -1
  164. package/node_modules/bowser/index.d.ts +0 -250
  165. package/node_modules/bowser/package.json +0 -83
  166. package/node_modules/bowser/src/bowser.js +0 -77
  167. package/node_modules/bowser/src/constants.js +0 -116
  168. package/node_modules/bowser/src/parser-browsers.js +0 -700
  169. package/node_modules/bowser/src/parser-engines.js +0 -120
  170. package/node_modules/bowser/src/parser-os.js +0 -199
  171. package/node_modules/bowser/src/parser-platforms.js +0 -266
  172. package/node_modules/bowser/src/parser.js +0 -496
  173. package/node_modules/bowser/src/utils.js +0 -309
  174. package/node_modules/tslib/CopyrightNotice.txt +0 -15
  175. package/node_modules/tslib/LICENSE.txt +0 -12
  176. package/node_modules/tslib/README.md +0 -164
  177. package/node_modules/tslib/SECURITY.md +0 -41
  178. package/node_modules/tslib/modules/index.d.ts +0 -37
  179. package/node_modules/tslib/modules/index.js +0 -68
  180. package/node_modules/tslib/modules/package.json +0 -3
  181. package/node_modules/tslib/package.json +0 -47
  182. package/node_modules/tslib/tslib.d.ts +0 -453
  183. package/node_modules/tslib/tslib.es6.html +0 -1
  184. package/node_modules/tslib/tslib.es6.js +0 -374
  185. package/node_modules/tslib/tslib.es6.mjs +0 -373
  186. package/node_modules/tslib/tslib.html +0 -1
  187. package/node_modules/tslib/tslib.js +0 -424
  188. package/node_modules/uuid/CHANGELOG.md +0 -274
  189. package/node_modules/uuid/CONTRIBUTING.md +0 -18
  190. package/node_modules/uuid/LICENSE.md +0 -9
  191. package/node_modules/uuid/README.md +0 -466
  192. package/node_modules/uuid/dist/bin/uuid +0 -2
  193. package/node_modules/uuid/dist/commonjs-browser/index.js +0 -79
  194. package/node_modules/uuid/dist/commonjs-browser/md5.js +0 -223
  195. package/node_modules/uuid/dist/commonjs-browser/native.js +0 -11
  196. package/node_modules/uuid/dist/commonjs-browser/nil.js +0 -8
  197. package/node_modules/uuid/dist/commonjs-browser/parse.js +0 -45
  198. package/node_modules/uuid/dist/commonjs-browser/regex.js +0 -8
  199. package/node_modules/uuid/dist/commonjs-browser/rng.js +0 -25
  200. package/node_modules/uuid/dist/commonjs-browser/sha1.js +0 -104
  201. package/node_modules/uuid/dist/commonjs-browser/stringify.js +0 -44
  202. package/node_modules/uuid/dist/commonjs-browser/v1.js +0 -107
  203. package/node_modules/uuid/dist/commonjs-browser/v3.js +0 -16
  204. package/node_modules/uuid/dist/commonjs-browser/v35.js +0 -80
  205. package/node_modules/uuid/dist/commonjs-browser/v4.js +0 -43
  206. package/node_modules/uuid/dist/commonjs-browser/v5.js +0 -16
  207. package/node_modules/uuid/dist/commonjs-browser/validate.js +0 -17
  208. package/node_modules/uuid/dist/commonjs-browser/version.js +0 -21
  209. package/node_modules/uuid/dist/esm-browser/index.js +0 -9
  210. package/node_modules/uuid/dist/esm-browser/md5.js +0 -215
  211. package/node_modules/uuid/dist/esm-browser/native.js +0 -4
  212. package/node_modules/uuid/dist/esm-browser/nil.js +0 -1
  213. package/node_modules/uuid/dist/esm-browser/parse.js +0 -35
  214. package/node_modules/uuid/dist/esm-browser/regex.js +0 -1
  215. package/node_modules/uuid/dist/esm-browser/rng.js +0 -18
  216. package/node_modules/uuid/dist/esm-browser/sha1.js +0 -96
  217. package/node_modules/uuid/dist/esm-browser/stringify.js +0 -33
  218. package/node_modules/uuid/dist/esm-browser/v1.js +0 -95
  219. package/node_modules/uuid/dist/esm-browser/v3.js +0 -4
  220. package/node_modules/uuid/dist/esm-browser/v35.js +0 -66
  221. package/node_modules/uuid/dist/esm-browser/v4.js +0 -29
  222. package/node_modules/uuid/dist/esm-browser/v5.js +0 -4
  223. package/node_modules/uuid/dist/esm-browser/validate.js +0 -7
  224. package/node_modules/uuid/dist/esm-browser/version.js +0 -11
  225. package/node_modules/uuid/dist/esm-node/index.js +0 -9
  226. package/node_modules/uuid/dist/esm-node/md5.js +0 -13
  227. package/node_modules/uuid/dist/esm-node/native.js +0 -4
  228. package/node_modules/uuid/dist/esm-node/nil.js +0 -1
  229. package/node_modules/uuid/dist/esm-node/parse.js +0 -35
  230. package/node_modules/uuid/dist/esm-node/regex.js +0 -1
  231. package/node_modules/uuid/dist/esm-node/rng.js +0 -12
  232. package/node_modules/uuid/dist/esm-node/sha1.js +0 -13
  233. package/node_modules/uuid/dist/esm-node/stringify.js +0 -33
  234. package/node_modules/uuid/dist/esm-node/v1.js +0 -95
  235. package/node_modules/uuid/dist/esm-node/v3.js +0 -4
  236. package/node_modules/uuid/dist/esm-node/v35.js +0 -66
  237. package/node_modules/uuid/dist/esm-node/v4.js +0 -29
  238. package/node_modules/uuid/dist/esm-node/v5.js +0 -4
  239. package/node_modules/uuid/dist/esm-node/validate.js +0 -7
  240. package/node_modules/uuid/dist/esm-node/version.js +0 -11
  241. package/node_modules/uuid/dist/index.js +0 -79
  242. package/node_modules/uuid/dist/md5-browser.js +0 -223
  243. package/node_modules/uuid/dist/md5.js +0 -23
  244. package/node_modules/uuid/dist/native-browser.js +0 -11
  245. package/node_modules/uuid/dist/native.js +0 -15
  246. package/node_modules/uuid/dist/nil.js +0 -8
  247. package/node_modules/uuid/dist/parse.js +0 -45
  248. package/node_modules/uuid/dist/regex.js +0 -8
  249. package/node_modules/uuid/dist/rng-browser.js +0 -25
  250. package/node_modules/uuid/dist/rng.js +0 -24
  251. package/node_modules/uuid/dist/sha1-browser.js +0 -104
  252. package/node_modules/uuid/dist/sha1.js +0 -23
  253. package/node_modules/uuid/dist/stringify.js +0 -44
  254. package/node_modules/uuid/dist/uuid-bin.js +0 -85
  255. package/node_modules/uuid/dist/v1.js +0 -107
  256. package/node_modules/uuid/dist/v3.js +0 -16
  257. package/node_modules/uuid/dist/v35.js +0 -80
  258. package/node_modules/uuid/dist/v4.js +0 -43
  259. package/node_modules/uuid/dist/v5.js +0 -16
  260. package/node_modules/uuid/dist/validate.js +0 -17
  261. package/node_modules/uuid/dist/version.js +0 -21
  262. package/node_modules/uuid/package.json +0 -135
  263. package/node_modules/uuid/wrapper.mjs +0 -10
@@ -1,496 +0,0 @@
1
- import browserParsersList from './parser-browsers.js';
2
- import osParsersList from './parser-os.js';
3
- import platformParsersList from './parser-platforms.js';
4
- import enginesParsersList from './parser-engines.js';
5
- import Utils from './utils.js';
6
-
7
- /**
8
- * The main class that arranges the whole parsing process.
9
- */
10
- class Parser {
11
- /**
12
- * Create instance of Parser
13
- *
14
- * @param {String} UA User-Agent string
15
- * @param {Boolean} [skipParsing=false] parser can skip parsing in purpose of performance
16
- * improvements if you need to make a more particular parsing
17
- * like {@link Parser#parseBrowser} or {@link Parser#parsePlatform}
18
- *
19
- * @throw {Error} in case of empty UA String
20
- *
21
- * @constructor
22
- */
23
- constructor(UA, skipParsing = false) {
24
- if (UA === void (0) || UA === null || UA === '') {
25
- throw new Error("UserAgent parameter can't be empty");
26
- }
27
-
28
- this._ua = UA;
29
-
30
- /**
31
- * @typedef ParsedResult
32
- * @property {Object} browser
33
- * @property {String|undefined} [browser.name]
34
- * Browser name, like `"Chrome"` or `"Internet Explorer"`
35
- * @property {String|undefined} [browser.version] Browser version as a String `"12.01.45334.10"`
36
- * @property {Object} os
37
- * @property {String|undefined} [os.name] OS name, like `"Windows"` or `"macOS"`
38
- * @property {String|undefined} [os.version] OS version, like `"NT 5.1"` or `"10.11.1"`
39
- * @property {String|undefined} [os.versionName] OS name, like `"XP"` or `"High Sierra"`
40
- * @property {Object} platform
41
- * @property {String|undefined} [platform.type]
42
- * platform type, can be either `"desktop"`, `"tablet"` or `"mobile"`
43
- * @property {String|undefined} [platform.vendor] Vendor of the device,
44
- * like `"Apple"` or `"Samsung"`
45
- * @property {String|undefined} [platform.model] Device model,
46
- * like `"iPhone"` or `"Kindle Fire HD 7"`
47
- * @property {Object} engine
48
- * @property {String|undefined} [engine.name]
49
- * Can be any of this: `WebKit`, `Blink`, `Gecko`, `Trident`, `Presto`, `EdgeHTML`
50
- * @property {String|undefined} [engine.version] String version of the engine
51
- */
52
- this.parsedResult = {};
53
-
54
- if (skipParsing !== true) {
55
- this.parse();
56
- }
57
- }
58
-
59
- /**
60
- * Get UserAgent string of current Parser instance
61
- * @return {String} User-Agent String of the current <Parser> object
62
- *
63
- * @public
64
- */
65
- getUA() {
66
- return this._ua;
67
- }
68
-
69
- /**
70
- * Test a UA string for a regexp
71
- * @param {RegExp} regex
72
- * @return {Boolean}
73
- */
74
- test(regex) {
75
- return regex.test(this._ua);
76
- }
77
-
78
- /**
79
- * Get parsed browser object
80
- * @return {Object}
81
- */
82
- parseBrowser() {
83
- this.parsedResult.browser = {};
84
-
85
- const browserDescriptor = Utils.find(browserParsersList, (_browser) => {
86
- if (typeof _browser.test === 'function') {
87
- return _browser.test(this);
88
- }
89
-
90
- if (_browser.test instanceof Array) {
91
- return _browser.test.some(condition => this.test(condition));
92
- }
93
-
94
- throw new Error("Browser's test function is not valid");
95
- });
96
-
97
- if (browserDescriptor) {
98
- this.parsedResult.browser = browserDescriptor.describe(this.getUA());
99
- }
100
-
101
- return this.parsedResult.browser;
102
- }
103
-
104
- /**
105
- * Get parsed browser object
106
- * @return {Object}
107
- *
108
- * @public
109
- */
110
- getBrowser() {
111
- if (this.parsedResult.browser) {
112
- return this.parsedResult.browser;
113
- }
114
-
115
- return this.parseBrowser();
116
- }
117
-
118
- /**
119
- * Get browser's name
120
- * @return {String} Browser's name or an empty string
121
- *
122
- * @public
123
- */
124
- getBrowserName(toLowerCase) {
125
- if (toLowerCase) {
126
- return String(this.getBrowser().name).toLowerCase() || '';
127
- }
128
- return this.getBrowser().name || '';
129
- }
130
-
131
-
132
- /**
133
- * Get browser's version
134
- * @return {String} version of browser
135
- *
136
- * @public
137
- */
138
- getBrowserVersion() {
139
- return this.getBrowser().version;
140
- }
141
-
142
- /**
143
- * Get OS
144
- * @return {Object}
145
- *
146
- * @example
147
- * this.getOS();
148
- * {
149
- * name: 'macOS',
150
- * version: '10.11.12'
151
- * }
152
- */
153
- getOS() {
154
- if (this.parsedResult.os) {
155
- return this.parsedResult.os;
156
- }
157
-
158
- return this.parseOS();
159
- }
160
-
161
- /**
162
- * Parse OS and save it to this.parsedResult.os
163
- * @return {*|{}}
164
- */
165
- parseOS() {
166
- this.parsedResult.os = {};
167
-
168
- const os = Utils.find(osParsersList, (_os) => {
169
- if (typeof _os.test === 'function') {
170
- return _os.test(this);
171
- }
172
-
173
- if (_os.test instanceof Array) {
174
- return _os.test.some(condition => this.test(condition));
175
- }
176
-
177
- throw new Error("Browser's test function is not valid");
178
- });
179
-
180
- if (os) {
181
- this.parsedResult.os = os.describe(this.getUA());
182
- }
183
-
184
- return this.parsedResult.os;
185
- }
186
-
187
- /**
188
- * Get OS name
189
- * @param {Boolean} [toLowerCase] return lower-cased value
190
- * @return {String} name of the OS — macOS, Windows, Linux, etc.
191
- */
192
- getOSName(toLowerCase) {
193
- const { name } = this.getOS();
194
-
195
- if (toLowerCase) {
196
- return String(name).toLowerCase() || '';
197
- }
198
-
199
- return name || '';
200
- }
201
-
202
- /**
203
- * Get OS version
204
- * @return {String} full version with dots ('10.11.12', '5.6', etc)
205
- */
206
- getOSVersion() {
207
- return this.getOS().version;
208
- }
209
-
210
- /**
211
- * Get parsed platform
212
- * @return {{}}
213
- */
214
- getPlatform() {
215
- if (this.parsedResult.platform) {
216
- return this.parsedResult.platform;
217
- }
218
-
219
- return this.parsePlatform();
220
- }
221
-
222
- /**
223
- * Get platform name
224
- * @param {Boolean} [toLowerCase=false]
225
- * @return {*}
226
- */
227
- getPlatformType(toLowerCase = false) {
228
- const { type } = this.getPlatform();
229
-
230
- if (toLowerCase) {
231
- return String(type).toLowerCase() || '';
232
- }
233
-
234
- return type || '';
235
- }
236
-
237
- /**
238
- * Get parsed platform
239
- * @return {{}}
240
- */
241
- parsePlatform() {
242
- this.parsedResult.platform = {};
243
-
244
- const platform = Utils.find(platformParsersList, (_platform) => {
245
- if (typeof _platform.test === 'function') {
246
- return _platform.test(this);
247
- }
248
-
249
- if (_platform.test instanceof Array) {
250
- return _platform.test.some(condition => this.test(condition));
251
- }
252
-
253
- throw new Error("Browser's test function is not valid");
254
- });
255
-
256
- if (platform) {
257
- this.parsedResult.platform = platform.describe(this.getUA());
258
- }
259
-
260
- return this.parsedResult.platform;
261
- }
262
-
263
- /**
264
- * Get parsed engine
265
- * @return {{}}
266
- */
267
- getEngine() {
268
- if (this.parsedResult.engine) {
269
- return this.parsedResult.engine;
270
- }
271
-
272
- return this.parseEngine();
273
- }
274
-
275
- /**
276
- * Get engines's name
277
- * @return {String} Engines's name or an empty string
278
- *
279
- * @public
280
- */
281
- getEngineName(toLowerCase) {
282
- if (toLowerCase) {
283
- return String(this.getEngine().name).toLowerCase() || '';
284
- }
285
- return this.getEngine().name || '';
286
- }
287
-
288
- /**
289
- * Get parsed platform
290
- * @return {{}}
291
- */
292
- parseEngine() {
293
- this.parsedResult.engine = {};
294
-
295
- const engine = Utils.find(enginesParsersList, (_engine) => {
296
- if (typeof _engine.test === 'function') {
297
- return _engine.test(this);
298
- }
299
-
300
- if (_engine.test instanceof Array) {
301
- return _engine.test.some(condition => this.test(condition));
302
- }
303
-
304
- throw new Error("Browser's test function is not valid");
305
- });
306
-
307
- if (engine) {
308
- this.parsedResult.engine = engine.describe(this.getUA());
309
- }
310
-
311
- return this.parsedResult.engine;
312
- }
313
-
314
- /**
315
- * Parse full information about the browser
316
- * @returns {Parser}
317
- */
318
- parse() {
319
- this.parseBrowser();
320
- this.parseOS();
321
- this.parsePlatform();
322
- this.parseEngine();
323
-
324
- return this;
325
- }
326
-
327
- /**
328
- * Get parsed result
329
- * @return {ParsedResult}
330
- */
331
- getResult() {
332
- return Utils.assign({}, this.parsedResult);
333
- }
334
-
335
- /**
336
- * Check if parsed browser matches certain conditions
337
- *
338
- * @param {Object} checkTree It's one or two layered object,
339
- * which can include a platform or an OS on the first layer
340
- * and should have browsers specs on the bottom-laying layer
341
- *
342
- * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.
343
- * Returns `undefined` when the browser is no described in the checkTree object.
344
- *
345
- * @example
346
- * const browser = Bowser.getParser(window.navigator.userAgent);
347
- * if (browser.satisfies({chrome: '>118.01.1322' }))
348
- * // or with os
349
- * if (browser.satisfies({windows: { chrome: '>118.01.1322' } }))
350
- * // or with platforms
351
- * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } }))
352
- */
353
- satisfies(checkTree) {
354
- const platformsAndOSes = {};
355
- let platformsAndOSCounter = 0;
356
- const browsers = {};
357
- let browsersCounter = 0;
358
-
359
- const allDefinitions = Object.keys(checkTree);
360
-
361
- allDefinitions.forEach((key) => {
362
- const currentDefinition = checkTree[key];
363
- if (typeof currentDefinition === 'string') {
364
- browsers[key] = currentDefinition;
365
- browsersCounter += 1;
366
- } else if (typeof currentDefinition === 'object') {
367
- platformsAndOSes[key] = currentDefinition;
368
- platformsAndOSCounter += 1;
369
- }
370
- });
371
-
372
- if (platformsAndOSCounter > 0) {
373
- const platformsAndOSNames = Object.keys(platformsAndOSes);
374
- const OSMatchingDefinition = Utils.find(platformsAndOSNames, name => (this.isOS(name)));
375
-
376
- if (OSMatchingDefinition) {
377
- const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]);
378
-
379
- if (osResult !== void 0) {
380
- return osResult;
381
- }
382
- }
383
-
384
- const platformMatchingDefinition = Utils.find(
385
- platformsAndOSNames,
386
- name => (this.isPlatform(name)),
387
- );
388
- if (platformMatchingDefinition) {
389
- const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]);
390
-
391
- if (platformResult !== void 0) {
392
- return platformResult;
393
- }
394
- }
395
- }
396
-
397
- if (browsersCounter > 0) {
398
- const browserNames = Object.keys(browsers);
399
- const matchingDefinition = Utils.find(browserNames, name => (this.isBrowser(name, true)));
400
-
401
- if (matchingDefinition !== void 0) {
402
- return this.compareVersion(browsers[matchingDefinition]);
403
- }
404
- }
405
-
406
- return undefined;
407
- }
408
-
409
- /**
410
- * Check if the browser name equals the passed string
411
- * @param browserName The string to compare with the browser name
412
- * @param [includingAlias=false] The flag showing whether alias will be included into comparison
413
- * @returns {boolean}
414
- */
415
- isBrowser(browserName, includingAlias = false) {
416
- const defaultBrowserName = this.getBrowserName().toLowerCase();
417
- let browserNameLower = browserName.toLowerCase();
418
- const alias = Utils.getBrowserTypeByAlias(browserNameLower);
419
-
420
- if (includingAlias && alias) {
421
- browserNameLower = alias.toLowerCase();
422
- }
423
- return browserNameLower === defaultBrowserName;
424
- }
425
-
426
- compareVersion(version) {
427
- let expectedResults = [0];
428
- let comparableVersion = version;
429
- let isLoose = false;
430
-
431
- const currentBrowserVersion = this.getBrowserVersion();
432
-
433
- if (typeof currentBrowserVersion !== 'string') {
434
- return void 0;
435
- }
436
-
437
- if (version[0] === '>' || version[0] === '<') {
438
- comparableVersion = version.substr(1);
439
- if (version[1] === '=') {
440
- isLoose = true;
441
- comparableVersion = version.substr(2);
442
- } else {
443
- expectedResults = [];
444
- }
445
- if (version[0] === '>') {
446
- expectedResults.push(1);
447
- } else {
448
- expectedResults.push(-1);
449
- }
450
- } else if (version[0] === '=') {
451
- comparableVersion = version.substr(1);
452
- } else if (version[0] === '~') {
453
- isLoose = true;
454
- comparableVersion = version.substr(1);
455
- }
456
-
457
- return expectedResults.indexOf(
458
- Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose),
459
- ) > -1;
460
- }
461
-
462
- isOS(osName) {
463
- return this.getOSName(true) === String(osName).toLowerCase();
464
- }
465
-
466
- isPlatform(platformType) {
467
- return this.getPlatformType(true) === String(platformType).toLowerCase();
468
- }
469
-
470
- isEngine(engineName) {
471
- return this.getEngineName(true) === String(engineName).toLowerCase();
472
- }
473
-
474
- /**
475
- * Is anything? Check if the browser is called "anything",
476
- * the OS called "anything" or the platform called "anything"
477
- * @param {String} anything
478
- * @param [includingAlias=false] The flag showing whether alias will be included into comparison
479
- * @returns {Boolean}
480
- */
481
- is(anything, includingAlias = false) {
482
- return this.isBrowser(anything, includingAlias) || this.isOS(anything)
483
- || this.isPlatform(anything);
484
- }
485
-
486
- /**
487
- * Check if any of the given values satisfies this.is(anything)
488
- * @param {String[]} anythings
489
- * @returns {Boolean}
490
- */
491
- some(anythings = []) {
492
- return anythings.some(anything => this.is(anything));
493
- }
494
- }
495
-
496
- export default Parser;