slnodejs 6.0.42 → 6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/lib/cli.js +1 -1
  2. package/package.json +124 -124
  3. package/tsOutputs/api.d.ts +12 -12
  4. package/tsOutputs/api.js +116 -116
  5. package/tsOutputs/build-scanner/ast-utils.js +38 -38
  6. package/tsOutputs/build-scanner/ast-utils.js.map +1 -1
  7. package/tsOutputs/build-scanner/build-diff-process.js +352 -346
  8. package/tsOutputs/build-scanner/build-diff-process.js.map +1 -1
  9. package/tsOutputs/build-scanner/cia.js +95 -95
  10. package/tsOutputs/build-scanner/complexity-metrics/complexity-metrics.js +1 -0
  11. package/tsOutputs/build-scanner/complexity-metrics/complexity-metrics.js.map +1 -0
  12. package/tsOutputs/build-scanner/configuration-loader.js +17 -17
  13. package/tsOutputs/build-scanner/current-agent-instance.js +5 -5
  14. package/tsOutputs/build-scanner/default-values-resolver.js +42 -42
  15. package/tsOutputs/build-scanner/entities-mapper.js +35 -35
  16. package/tsOutputs/build-scanner/file-and-folder-utils.js +176 -176
  17. package/tsOutputs/build-scanner/file-system/actual-file.js +66 -46
  18. package/tsOutputs/build-scanner/file-system/actual-file.js.map +1 -1
  19. package/tsOutputs/build-scanner/git-format-builder.js +68 -68
  20. package/tsOutputs/build-scanner/global-error-handler.js +20 -20
  21. package/tsOutputs/build-scanner/instrumentation/browser-instrumenter.js +299 -299
  22. package/tsOutputs/build-scanner/instrumentation/file-instrumenter.js +271 -271
  23. package/tsOutputs/build-scanner/instrumentation/file-instrumenter.js.map +1 -1
  24. package/tsOutputs/build-scanner/instrumentation/instrumentation-utils.js +58 -58
  25. package/tsOutputs/build-scanner/instrumentation/instrumented-file-size-reducer.js +159 -159
  26. package/tsOutputs/build-scanner/instrumentation/markup-file-instrumenter.js +185 -190
  27. package/tsOutputs/build-scanner/instrumentation/markup-file-instrumenter.js.map +1 -1
  28. package/tsOutputs/build-scanner/instrumentation/sync-instrumenter.js +39 -39
  29. package/tsOutputs/build-scanner/js_diff/ast-node-types.js +44 -44
  30. package/tsOutputs/build-scanner/js_diff/branch-key.js +10 -10
  31. package/tsOutputs/build-scanner/js_diff/branch-signature.js +156 -156
  32. package/tsOutputs/build-scanner/js_diff/code-metrics-spec.js +1 -0
  33. package/tsOutputs/build-scanner/js_diff/code-metrics-spec.js.map +1 -0
  34. package/tsOutputs/build-scanner/js_diff/code-metrics.js +1 -0
  35. package/tsOutputs/build-scanner/js_diff/code-metrics.js.map +1 -0
  36. package/tsOutputs/build-scanner/js_diff/create-node-key.js +7 -7
  37. package/tsOutputs/build-scanner/js_diff/dry-run-files-mapping.js +23 -23
  38. package/tsOutputs/build-scanner/js_diff/dry-run-files-mapping.js.map +1 -1
  39. package/tsOutputs/build-scanner/js_diff/file-signature.js +234 -231
  40. package/tsOutputs/build-scanner/js_diff/file-signature.js.map +1 -1
  41. package/tsOutputs/build-scanner/js_diff/files-mapping.js +460 -473
  42. package/tsOutputs/build-scanner/js_diff/files-mapping.js.map +1 -1
  43. package/tsOutputs/build-scanner/js_diff/generated-file-signature.js +143 -143
  44. package/tsOutputs/build-scanner/js_diff/generated-file-signature.js.map +1 -1
  45. package/tsOutputs/build-scanner/js_diff/globalMethodIndexer.js +26 -26
  46. package/tsOutputs/build-scanner/js_diff/guess-method-location.js +100 -97
  47. package/tsOutputs/build-scanner/js_diff/guess-method-location.js.map +1 -1
  48. package/tsOutputs/build-scanner/js_diff/guess-method-name.js +54 -54
  49. package/tsOutputs/build-scanner/js_diff/method-signature.js +142 -140
  50. package/tsOutputs/build-scanner/js_diff/method-signature.js.map +1 -1
  51. package/tsOutputs/build-scanner/js_diff/sl-mapper.js +136 -75
  52. package/tsOutputs/build-scanner/js_diff/sl-mapper.js.map +1 -1
  53. package/tsOutputs/build-scanner/js_diff/source-data-enricher.js +89 -89
  54. package/tsOutputs/build-scanner/js_diff/source-data-enricher.js.map +1 -1
  55. package/tsOutputs/build-scanner/js_diff/source-files-notifier.js +31 -31
  56. package/tsOutputs/build-scanner/js_diff/source-position-mapper.js +29 -29
  57. package/tsOutputs/build-scanner/mappings/contracts.js +3 -0
  58. package/tsOutputs/build-scanner/mappings/contracts.js.map +1 -0
  59. package/tsOutputs/build-scanner/mappings/ensure-files-handler.service.js +214 -0
  60. package/tsOutputs/build-scanner/mappings/ensure-files-handler.service.js.map +1 -0
  61. package/tsOutputs/build-scanner/mappings/file-element-utils.js +47 -0
  62. package/tsOutputs/build-scanner/mappings/file-element-utils.js.map +1 -0
  63. package/tsOutputs/build-scanner/mappings/file-enricher.js +205 -0
  64. package/tsOutputs/build-scanner/mappings/file-enricher.js.map +1 -0
  65. package/tsOutputs/build-scanner/mappings/files-data-container.js +52 -0
  66. package/tsOutputs/build-scanner/mappings/files-data-container.js.map +1 -0
  67. package/tsOutputs/build-scanner/mappings/scm-file-fixer.js +78 -0
  68. package/tsOutputs/build-scanner/mappings/scm-file-fixer.js.map +1 -0
  69. package/tsOutputs/build-scanner/markup-files-parser.js +71 -71
  70. package/tsOutputs/build-scanner/nopt-types.js +19 -19
  71. package/tsOutputs/build-scanner/nopt-usage-2.js +56 -56
  72. package/tsOutputs/build-scanner/polyfills.js +6 -6
  73. package/tsOutputs/build-scanner/scm/parse-log.js +5 -5
  74. package/tsOutputs/build-scanner/scm/scm-files-container.js +49 -49
  75. package/tsOutputs/build-scanner/sl-config-cia-cli.js +175 -175
  76. package/tsOutputs/build-scanner/utils.js +91 -91
  77. package/tsOutputs/cli-parse/agent-instance-data.d.ts +2 -2
  78. package/tsOutputs/cli-parse/agent-instance-data.js +6 -6
  79. package/tsOutputs/cli-parse/child-process-wrapper.js +82 -82
  80. package/tsOutputs/cli-parse/child-process-wrapper.js.map +1 -1
  81. package/tsOutputs/cli-parse/cli.js +509 -509
  82. package/tsOutputs/cli-parse/constants/constants.js +55 -56
  83. package/tsOutputs/cli-parse/constants/constants.js.map +1 -1
  84. package/tsOutputs/cli-parse/constants/third-parties.js +10 -10
  85. package/tsOutputs/cli-parse/contracts.js +2 -2
  86. package/tsOutputs/cli-parse/custom-commander.js +44 -44
  87. package/tsOutputs/cli-parse/executors/base-executor.js +263 -254
  88. package/tsOutputs/cli-parse/executors/base-executor.js.map +1 -1
  89. package/tsOutputs/cli-parse/executors/build-args-dto.js +55 -55
  90. package/tsOutputs/cli-parse/executors/build-end-executor.js +115 -117
  91. package/tsOutputs/cli-parse/executors/build-end-executor.js.map +1 -1
  92. package/tsOutputs/cli-parse/executors/build-executor.js +147 -149
  93. package/tsOutputs/cli-parse/executors/build-executor.js.map +1 -1
  94. package/tsOutputs/cli-parse/executors/config-executor.js +112 -114
  95. package/tsOutputs/cli-parse/executors/config-executor.js.map +1 -1
  96. package/tsOutputs/cli-parse/executors/dry-run/base-data.js +55 -55
  97. package/tsOutputs/cli-parse/executors/dry-run/base-data.js.map +1 -1
  98. package/tsOutputs/cli-parse/executors/dry-run/build-mapping-data.js +228 -230
  99. package/tsOutputs/cli-parse/executors/dry-run/build-mapping-data.js.map +1 -1
  100. package/tsOutputs/cli-parse/executors/dry-run/dry-run-executor.js +277 -277
  101. package/tsOutputs/cli-parse/executors/dry-run/dry-run-executor.js.map +1 -1
  102. package/tsOutputs/cli-parse/executors/dry-run/dry-run-validation.js +120 -122
  103. package/tsOutputs/cli-parse/executors/dry-run/dry-run-validation.js.map +1 -1
  104. package/tsOutputs/cli-parse/executors/dry-run/footprints-data.js +130 -72
  105. package/tsOutputs/cli-parse/executors/dry-run/footprints-data.js.map +1 -1
  106. package/tsOutputs/cli-parse/executors/dry-run/helper-methods.js +104 -99
  107. package/tsOutputs/cli-parse/executors/dry-run/helper-methods.js.map +1 -1
  108. package/tsOutputs/cli-parse/executors/end-execution-executor.js +88 -90
  109. package/tsOutputs/cli-parse/executors/end-execution-executor.js.map +1 -1
  110. package/tsOutputs/cli-parse/executors/integration-build-components-executor.js +132 -134
  111. package/tsOutputs/cli-parse/executors/integration-build-components-executor.js.map +1 -1
  112. package/tsOutputs/cli-parse/executors/integration-build-delete-components-executor.js +73 -75
  113. package/tsOutputs/cli-parse/executors/integration-build-delete-components-executor.js.map +1 -1
  114. package/tsOutputs/cli-parse/executors/integration-build-update-components-executor.js +71 -73
  115. package/tsOutputs/cli-parse/executors/integration-build-update-components-executor.js.map +1 -1
  116. package/tsOutputs/cli-parse/executors/mocha-executor.js +122 -124
  117. package/tsOutputs/cli-parse/executors/mocha-executor.js.map +1 -1
  118. package/tsOutputs/cli-parse/executors/nyc-report-executor.js +104 -106
  119. package/tsOutputs/cli-parse/executors/nyc-report-executor.js.map +1 -1
  120. package/tsOutputs/cli-parse/executors/pr-config-executor.js +83 -85
  121. package/tsOutputs/cli-parse/executors/pr-config-executor.js.map +1 -1
  122. package/tsOutputs/cli-parse/executors/run-executor.js +93 -95
  123. package/tsOutputs/cli-parse/executors/run-executor.js.map +1 -1
  124. package/tsOutputs/cli-parse/executors/start-execution-executor.js +91 -93
  125. package/tsOutputs/cli-parse/executors/start-execution-executor.js.map +1 -1
  126. package/tsOutputs/cli-parse/executors/test-executions-executor.js +75 -77
  127. package/tsOutputs/cli-parse/executors/test-executions-executor.js.map +1 -1
  128. package/tsOutputs/cli-parse/executors/test-listener-executor.js +149 -151
  129. package/tsOutputs/cli-parse/executors/test-listener-executor.js.map +1 -1
  130. package/tsOutputs/cli-parse/executors/test-runner-build-session-data-builder.js +75 -77
  131. package/tsOutputs/cli-parse/executors/test-runner-build-session-data-builder.js.map +1 -1
  132. package/tsOutputs/cli-parse/executors/upload-report-executor.js +116 -118
  133. package/tsOutputs/cli-parse/executors/upload-report-executor.js.map +1 -1
  134. package/tsOutputs/cli-parse/utils.js +32 -32
  135. package/tsOutputs/cli-parse/utils.js.map +1 -1
  136. package/tsOutputs/common/agent-events/agent-events-conracts.d.ts +123 -123
  137. package/tsOutputs/common/agent-events/agent-events-conracts.js +56 -56
  138. package/tsOutputs/common/agent-events/agent-events-controller.d.ts +45 -45
  139. package/tsOutputs/common/agent-events/agent-events-controller.js +301 -301
  140. package/tsOutputs/common/agent-events/agent-events-controller.js.map +1 -1
  141. package/tsOutputs/common/agent-events/agent-instance-info-builder.d.ts +22 -22
  142. package/tsOutputs/common/agent-events/agent-instance-info-builder.js +63 -63
  143. package/tsOutputs/common/agent-events/agent-instance-info-builder.js.map +1 -1
  144. package/tsOutputs/common/agent-events/agent-start-info-builder.d.ts +14 -14
  145. package/tsOutputs/common/agent-events/agent-start-info-builder.js +23 -23
  146. package/tsOutputs/common/agent-events/ci-info-builder.d.ts +7 -7
  147. package/tsOutputs/common/agent-events/ci-info-builder.js +30 -30
  148. package/tsOutputs/common/agent-events/cockpit-notifier.d.ts +26 -26
  149. package/tsOutputs/common/agent-events/cockpit-notifier.js +119 -119
  150. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.d.ts +7 -7
  151. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.js +31 -33
  152. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.js.map +1 -1
  153. package/tsOutputs/common/agent-events/machine-info-builder.d.ts +7 -7
  154. package/tsOutputs/common/agent-events/machine-info-builder.js +35 -35
  155. package/tsOutputs/common/agent-events/machine-info-builder.js.map +1 -1
  156. package/tsOutputs/common/agent-events/nodejs-env-info-builder.d.ts +8 -8
  157. package/tsOutputs/common/agent-events/nodejs-env-info-builder.js +19 -19
  158. package/tsOutputs/common/agent-events/sensitive-data-filter.d.ts +2 -2
  159. package/tsOutputs/common/agent-events/sensitive-data-filter.js +54 -54
  160. package/tsOutputs/common/agent-instance-data.d.ts +10 -10
  161. package/tsOutputs/common/agent-instance-data.js +39 -39
  162. package/tsOutputs/common/agent-instance-data.js.map +1 -1
  163. package/tsOutputs/common/config-process/config-loader.d.ts +8 -8
  164. package/tsOutputs/common/config-process/config-loader.js +86 -86
  165. package/tsOutputs/common/config-process/config-system.d.ts +88 -88
  166. package/tsOutputs/common/config-process/config-system.js +293 -293
  167. package/tsOutputs/common/config-process/config.d.ts +60 -60
  168. package/tsOutputs/common/config-process/config.js +90 -92
  169. package/tsOutputs/common/config-process/config.js.map +1 -1
  170. package/tsOutputs/common/config-process/index.d.ts +21 -21
  171. package/tsOutputs/common/config-process/index.js +125 -127
  172. package/tsOutputs/common/config-process/index.js.map +1 -1
  173. package/tsOutputs/common/constants/constants.d.ts +18 -18
  174. package/tsOutputs/common/constants/constants.js +29 -29
  175. package/tsOutputs/common/constants/sl-env-vars.d.ts +52 -52
  176. package/tsOutputs/common/constants/sl-env-vars.js +122 -122
  177. package/tsOutputs/common/contracts.d.ts +123 -123
  178. package/tsOutputs/common/contracts.js +2 -2
  179. package/tsOutputs/common/coverage-elements/contracts.d.ts +25 -25
  180. package/tsOutputs/common/coverage-elements/contracts.js +8 -8
  181. package/tsOutputs/common/coverage-elements/file-element.d.ts +35 -35
  182. package/tsOutputs/common/coverage-elements/file-element.js +158 -158
  183. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.d.ts +12 -12
  184. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.js +95 -97
  185. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.js.map +1 -1
  186. package/tsOutputs/common/coverage-elements/new-id-resolver.d.ts +3 -3
  187. package/tsOutputs/common/coverage-elements/new-id-resolver.js +45 -45
  188. package/tsOutputs/common/coverage-elements/new-id-resolver.js.map +1 -1
  189. package/tsOutputs/common/coverage-elements/original-module-loader.d.ts +41 -41
  190. package/tsOutputs/common/coverage-elements/original-module-loader.js +189 -189
  191. package/tsOutputs/common/coverage-elements/unique-id-converter.d.ts +32 -32
  192. package/tsOutputs/common/coverage-elements/unique-id-converter.js +234 -234
  193. package/tsOutputs/common/environment-data-service.d.ts +15 -15
  194. package/tsOutputs/common/environment-data-service.js +60 -60
  195. package/tsOutputs/common/events-process/events-contracts.d.ts +52 -52
  196. package/tsOutputs/common/events-process/events-contracts.js +19 -19
  197. package/tsOutputs/common/events-process/events-creator.js +42 -40
  198. package/tsOutputs/common/events-process/events-creator.js.map +1 -1
  199. package/tsOutputs/common/events-process/index.d.ts +42 -42
  200. package/tsOutputs/common/events-process/index.js +265 -266
  201. package/tsOutputs/common/events-process/index.js.map +1 -1
  202. package/tsOutputs/common/footprints-process/collection-interval.d.ts +10 -10
  203. package/tsOutputs/common/footprints-process/collection-interval.js +27 -27
  204. package/tsOutputs/common/footprints-process/collection-interval.js.map +1 -1
  205. package/tsOutputs/common/footprints-process/footprints-service-proxy.d.ts +12 -12
  206. package/tsOutputs/common/footprints-process/footprints-service-proxy.js +51 -51
  207. package/tsOutputs/common/footprints-process/index.d.ts +71 -71
  208. package/tsOutputs/common/footprints-process/index.js +264 -264
  209. package/tsOutputs/common/footprints-process/index.js.map +1 -1
  210. package/tsOutputs/common/footprints-process/istanbul-to-footprints-contract.d.ts +98 -98
  211. package/tsOutputs/common/footprints-process/istanbul-to-footprints-contract.js +9 -9
  212. package/tsOutputs/common/footprints-process/istanbul-to-footprints.d.ts +47 -47
  213. package/tsOutputs/common/footprints-process/istanbul-to-footprints.js +421 -421
  214. package/tsOutputs/common/footprints-process/istanbul-to-footprints.js.map +1 -1
  215. package/tsOutputs/common/footprints-process/production-footprints-handler.d.ts +54 -54
  216. package/tsOutputs/common/footprints-process/production-footprints-handler.js +308 -308
  217. package/tsOutputs/common/footprints-process/production-footprints-handler.js.map +1 -1
  218. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.d.ts +20 -20
  219. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.js +63 -65
  220. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.js.map +1 -1
  221. package/tsOutputs/common/footprints-process-v6/buffer-size-helper.d.ts +15 -15
  222. package/tsOutputs/common/footprints-process-v6/buffer-size-helper.js +40 -40
  223. package/tsOutputs/common/footprints-process-v6/contracts.d.ts +184 -181
  224. package/tsOutputs/common/footprints-process-v6/contracts.js +9 -9
  225. package/tsOutputs/common/footprints-process-v6/footprints-buffer.d.ts +36 -34
  226. package/tsOutputs/common/footprints-process-v6/footprints-buffer.js +147 -135
  227. package/tsOutputs/common/footprints-process-v6/footprints-buffer.js.map +1 -1
  228. package/tsOutputs/common/footprints-process-v6/hits-collector.d.ts +24 -24
  229. package/tsOutputs/common/footprints-process-v6/hits-collector.js +168 -168
  230. package/tsOutputs/common/footprints-process-v6/hits-converter.d.ts +30 -28
  231. package/tsOutputs/common/footprints-process-v6/hits-converter.js +135 -105
  232. package/tsOutputs/common/footprints-process-v6/hits-converter.js.map +1 -1
  233. package/tsOutputs/common/footprints-process-v6/index.d.ts +41 -40
  234. package/tsOutputs/common/footprints-process-v6/index.js +304 -258
  235. package/tsOutputs/common/footprints-process-v6/index.js.map +1 -1
  236. package/tsOutputs/common/footprints-process-v6/location-formatter.d.ts +6 -6
  237. package/tsOutputs/common/footprints-process-v6/location-formatter.js +25 -25
  238. package/tsOutputs/common/footprints-process-v6/relative-path-resolver.d.ts +8 -8
  239. package/tsOutputs/common/footprints-process-v6/relative-path-resolver.js +28 -28
  240. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.d.ts +9 -9
  241. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.js +38 -40
  242. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.js.map +1 -1
  243. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.d.ts +8 -8
  244. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.js +32 -34
  245. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.js.map +1 -1
  246. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.d.ts +14 -14
  247. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.js +39 -41
  248. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.js.map +1 -1
  249. package/tsOutputs/common/footprints-process-v6/source-map-data.d.ts +9 -9
  250. package/tsOutputs/common/footprints-process-v6/source-map-data.js +32 -32
  251. package/tsOutputs/common/footprints-process-v6/source-map-data.js.map +1 -1
  252. package/tsOutputs/common/http/backend-proxy-interface.d.ts +33 -33
  253. package/tsOutputs/common/http/backend-proxy-interface.js +2 -2
  254. package/tsOutputs/common/http/backend-proxy.d.ts +54 -53
  255. package/tsOutputs/common/http/backend-proxy.js +408 -398
  256. package/tsOutputs/common/http/backend-proxy.js.map +1 -1
  257. package/tsOutputs/common/http/contracts.d.ts +280 -203
  258. package/tsOutputs/common/http/contracts.js +156 -158
  259. package/tsOutputs/common/http/contracts.js.map +1 -1
  260. package/tsOutputs/common/http/dry-run-proxy.js +106 -106
  261. package/tsOutputs/common/http/entities-mapper.d.ts +4 -4
  262. package/tsOutputs/common/http/entities-mapper.js +17 -17
  263. package/tsOutputs/common/http/http-client.d.ts +21 -21
  264. package/tsOutputs/common/http/http-client.js +195 -191
  265. package/tsOutputs/common/http/http-client.js.map +1 -1
  266. package/tsOutputs/common/http/http-verb.d.ts +6 -6
  267. package/tsOutputs/common/http/http-verb.js +10 -10
  268. package/tsOutputs/common/http/sl-routes.d.ts +70 -70
  269. package/tsOutputs/common/http/sl-routes.js +218 -218
  270. package/tsOutputs/common/ignored-files-handler.js +122 -122
  271. package/tsOutputs/common/ignored-files-handler.js.map +1 -1
  272. package/tsOutputs/common/logger.d.ts +40 -40
  273. package/tsOutputs/common/logger.js +188 -190
  274. package/tsOutputs/common/logger.js.map +1 -1
  275. package/tsOutputs/common/messages-formatter.d.ts +6 -6
  276. package/tsOutputs/common/messages-formatter.js +21 -21
  277. package/tsOutputs/common/queue.d.ts +19 -19
  278. package/tsOutputs/common/queue.js +55 -57
  279. package/tsOutputs/common/queue.js.map +1 -1
  280. package/tsOutputs/common/scm/contracts.js +2 -2
  281. package/tsOutputs/common/scm/git-cloner.js +138 -0
  282. package/tsOutputs/common/scm/git-cloner.js.map +1 -0
  283. package/tsOutputs/common/scm/git-format-builder.js +72 -72
  284. package/tsOutputs/common/scm/git.js +411 -411
  285. package/tsOutputs/common/scm/git.js.map +1 -1
  286. package/tsOutputs/common/scm/none.js +115 -115
  287. package/tsOutputs/common/scm/scm-factory.js +21 -21
  288. package/tsOutputs/common/short-name-to-file-mapper.js +79 -79
  289. package/tsOutputs/common/source-map-handler.d.ts +58 -58
  290. package/tsOutputs/common/source-map-handler.js +197 -197
  291. package/tsOutputs/common/source-map-reader.js +84 -84
  292. package/tsOutputs/common/source-maps-utils.d.ts +3 -3
  293. package/tsOutputs/common/source-maps-utils.js +39 -39
  294. package/tsOutputs/common/state-tracker-fpv6.d.ts +6 -6
  295. package/tsOutputs/common/state-tracker-fpv6.js +42 -44
  296. package/tsOutputs/common/state-tracker-fpv6.js.map +1 -1
  297. package/tsOutputs/common/state-tracker.d.ts +49 -49
  298. package/tsOutputs/common/state-tracker.js +299 -304
  299. package/tsOutputs/common/state-tracker.js.map +1 -1
  300. package/tsOutputs/common/system-date.d.ts +2 -2
  301. package/tsOutputs/common/system-date.js +21 -21
  302. package/tsOutputs/common/utils/abstract-data-builder.d.ts +10 -10
  303. package/tsOutputs/common/utils/abstract-data-builder.js +24 -24
  304. package/tsOutputs/common/utils/abstract-data-builder.js.map +1 -1
  305. package/tsOutputs/common/utils/build-session-data-builder.d.ts +18 -18
  306. package/tsOutputs/common/utils/build-session-data-builder.js +135 -137
  307. package/tsOutputs/common/utils/build-session-data-builder.js.map +1 -1
  308. package/tsOutputs/common/utils/dependency-utils.js +69 -69
  309. package/tsOutputs/common/utils/files-utils.d.ts +6 -5
  310. package/tsOutputs/common/utils/files-utils.js +45 -36
  311. package/tsOutputs/common/utils/files-utils.js.map +1 -1
  312. package/tsOutputs/common/utils/parsing-utils.d.ts +4 -4
  313. package/tsOutputs/common/utils/parsing-utils.js +29 -29
  314. package/tsOutputs/common/utils/test-utils/mock-server-utils/contracts.js +10 -10
  315. package/tsOutputs/common/utils/test-utils/mock-server-utils/mock-server-proxy.js +248 -248
  316. package/tsOutputs/common/utils/timer-utils.d.ts +3 -3
  317. package/tsOutputs/common/utils/timer-utils.js +12 -12
  318. package/tsOutputs/common/utils/token-data-builder.d.ts +21 -21
  319. package/tsOutputs/common/utils/token-data-builder.js +95 -97
  320. package/tsOutputs/common/utils/token-data-builder.js.map +1 -1
  321. package/tsOutputs/common/utils/validation-utils.d.ts +3 -3
  322. package/tsOutputs/common/utils/validation-utils.js +18 -18
  323. package/tsOutputs/common/uuid.js +23 -23
  324. package/tsOutputs/common/watchdog.d.ts +96 -96
  325. package/tsOutputs/common/watchdog.js +149 -151
  326. package/tsOutputs/common/watchdog.js.map +1 -1
  327. package/tsOutputs/mocha-reporter/constants.js +27 -27
  328. package/tsOutputs/mocha-reporter/end-execution.js +22 -22
  329. package/tsOutputs/mocha-reporter/index.js +323 -323
  330. package/tsOutputs/test-listener/IConsoleLogger.js +5 -5
  331. package/tsOutputs/test-listener/SlNodeJsProxy.js +96 -96
  332. package/tsOutputs/test-listener/UserMessageHelper.js +47 -47
  333. package/tsOutputs/test-listener/agent-loader.js +58 -58
  334. package/tsOutputs/test-listener/agent.d.ts +53 -53
  335. package/tsOutputs/test-listener/agent.js +273 -273
  336. package/tsOutputs/test-listener/agent.js.map +1 -1
  337. package/tsOutputs/test-listener/api.js +157 -157
  338. package/tsOutputs/test-listener/base-proxy.d.ts +15 -15
  339. package/tsOutputs/test-listener/base-proxy.js +133 -133
  340. package/tsOutputs/test-listener/bootstrap.js +16 -16
  341. package/tsOutputs/test-listener/child-process-patcher.js +136 -136
  342. package/tsOutputs/test-listener/child-process-patcher.js.map +1 -1
  343. package/tsOutputs/test-listener/cli.js +64 -64
  344. package/tsOutputs/test-listener/coloring/http-coloring.d.ts +15 -15
  345. package/tsOutputs/test-listener/coloring/http-coloring.js +188 -188
  346. package/tsOutputs/test-listener/coloring/icoloring-provider.d.ts +10 -10
  347. package/tsOutputs/test-listener/coloring/icoloring-provider.js +2 -2
  348. package/tsOutputs/test-listener/coloring/listening-port.d.ts +20 -20
  349. package/tsOutputs/test-listener/coloring/listening-port.js +48 -48
  350. package/tsOutputs/test-listener/command-line-arg-parser.js +91 -91
  351. package/tsOutputs/test-listener/config-process/config-loader.js +104 -104
  352. package/tsOutputs/test-listener/config-process/config-system.d.ts +88 -88
  353. package/tsOutputs/test-listener/config-process/config-system.js +285 -285
  354. package/tsOutputs/test-listener/config-process/index.js +126 -128
  355. package/tsOutputs/test-listener/config-process/index.js.map +1 -1
  356. package/tsOutputs/test-listener/config.d.ts +50 -50
  357. package/tsOutputs/test-listener/config.js +80 -82
  358. package/tsOutputs/test-listener/config.js.map +1 -1
  359. package/tsOutputs/test-listener/contracts.d.ts +72 -72
  360. package/tsOutputs/test-listener/contracts.js +2 -2
  361. package/tsOutputs/test-listener/entities/BasicConfigurationData.js +72 -72
  362. package/tsOutputs/test-listener/entities/build-scanner/ConfigModeData.js +48 -50
  363. package/tsOutputs/test-listener/entities/build-scanner/ConfigModeData.js.map +1 -1
  364. package/tsOutputs/test-listener/entities/build-scanner/ScanModeData.js +51 -53
  365. package/tsOutputs/test-listener/entities/build-scanner/ScanModeData.js.map +1 -1
  366. package/tsOutputs/test-listener/environment-data-service.d.ts +11 -11
  367. package/tsOutputs/test-listener/environment-data-service.js +60 -60
  368. package/tsOutputs/test-listener/execution-process/contracts.js +5 -5
  369. package/tsOutputs/test-listener/execution-process/entities-mapper.js +49 -49
  370. package/tsOutputs/test-listener/execution-process/execution-service-proxy.js +205 -207
  371. package/tsOutputs/test-listener/execution-process/execution-service-proxy.js.map +1 -1
  372. package/tsOutputs/test-listener/execution-process/index.js +163 -163
  373. package/tsOutputs/test-listener/factory.d.ts +87 -87
  374. package/tsOutputs/test-listener/factory.js +285 -285
  375. package/tsOutputs/test-listener/footprints-process/footprints-service-proxy.js +50 -52
  376. package/tsOutputs/test-listener/footprints-process/footprints-service-proxy.js.map +1 -1
  377. package/tsOutputs/test-listener/footprints-process/index.js +230 -230
  378. package/tsOutputs/test-listener/footprints-process/index.js.map +1 -1
  379. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-base.js +130 -130
  380. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-contract.js +2 -2
  381. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-v3.js +288 -290
  382. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-v3.js.map +1 -1
  383. package/tsOutputs/test-listener/integrations/SlGulp.js +104 -104
  384. package/tsOutputs/test-listener/logs-process/index.d.ts +48 -48
  385. package/tsOutputs/test-listener/logs-process/index.js +142 -142
  386. package/tsOutputs/test-listener/logs-process/index.js.map +1 -1
  387. package/tsOutputs/test-listener/logs-process/log-service-proxy.d.ts +9 -9
  388. package/tsOutputs/test-listener/logs-process/log-service-proxy.js +29 -31
  389. package/tsOutputs/test-listener/logs-process/log-service-proxy.js.map +1 -1
  390. package/tsOutputs/test-listener/nyc-report-executor-fpv6.js +143 -136
  391. package/tsOutputs/test-listener/nyc-report-executor-fpv6.js.map +1 -1
  392. package/tsOutputs/test-listener/nyc-report-executor.js +144 -144
  393. package/tsOutputs/test-listener/nyc-report-executor.js.map +1 -1
  394. package/tsOutputs/test-listener/queue.js +55 -57
  395. package/tsOutputs/test-listener/queue.js.map +1 -1
  396. package/tsOutputs/test-listener/remote-agent.d.ts +42 -42
  397. package/tsOutputs/test-listener/remote-agent.js +200 -200
  398. package/tsOutputs/test-listener/remote-agent.js.map +1 -1
  399. package/tsOutputs/test-listener/resolvers/AppNameResolver.js +32 -34
  400. package/tsOutputs/test-listener/resolvers/AppNameResolver.js.map +1 -1
  401. package/tsOutputs/test-listener/resolvers/ArgumentResolver.js +64 -64
  402. package/tsOutputs/test-listener/resolvers/ArgumentResolver.js.map +1 -1
  403. package/tsOutputs/test-listener/resolvers/BuildResolver.js +31 -33
  404. package/tsOutputs/test-listener/resolvers/BuildResolver.js.map +1 -1
  405. package/tsOutputs/test-listener/resolvers/BuildSessionIdFileResolver.js +31 -33
  406. package/tsOutputs/test-listener/resolvers/BuildSessionIdFileResolver.js.map +1 -1
  407. package/tsOutputs/test-listener/resolvers/BuildSessionIdResolver.js +34 -36
  408. package/tsOutputs/test-listener/resolvers/BuildSessionIdResolver.js.map +1 -1
  409. package/tsOutputs/test-listener/resolvers/ProxyResolver.js +31 -33
  410. package/tsOutputs/test-listener/resolvers/ProxyResolver.js.map +1 -1
  411. package/tsOutputs/test-listener/resolvers/TokenResolver.js +31 -33
  412. package/tsOutputs/test-listener/resolvers/TokenResolver.js.map +1 -1
  413. package/tsOutputs/test-listener/state-tracker-process/index.js +160 -162
  414. package/tsOutputs/test-listener/state-tracker-process/index.js.map +1 -1
  415. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.d.ts +8 -8
  416. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.js +69 -71
  417. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.js.map +1 -1
  418. package/tsOutputs/test-listener/test-recommendation-handler.d.ts +29 -29
  419. package/tsOutputs/test-listener/test-recommendation-handler.js +161 -161
  420. package/tsOutputs/test-listener/upload-report-handler.js +96 -96
  421. package/tsOutputs/test-listener/utils.js +68 -68
  422. package/tsOutputs/test-listener/uuid.d.ts +3 -3
  423. package/tsOutputs/test-listener/uuid.js +23 -23
  424. package/tsOutputs/test-listener/wait-for-multiple-callbacks.d.ts +22 -22
  425. package/tsOutputs/test-listener/wait-for-multiple-callbacks.js +60 -60
  426. package/tsOutputs/test-listener/watchdog.d.ts +89 -89
  427. package/tsOutputs/test-listener/watchdog.js +144 -146
  428. package/tsOutputs/test-listener/watchdog.js.map +1 -1
  429. package/browser-agent/dist/browser-agent-all.js +0 -101140
  430. package/browser-agent/dist/browser-agent-all.min.js +0 -57
  431. package/browser-agent/package.json +0 -44
@@ -1,422 +1,422 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IstanbulToFootprints = void 0;
4
- var messages_formatter_1 = require("../messages-formatter");
5
- var original_module_loader_1 = require("../coverage-elements/original-module-loader");
6
- var source_maps_utils_1 = require("../source-maps-utils");
7
- var sl_env_vars_1 = require("../constants/sl-env-vars");
8
- var source_map_handler_1 = require("../source-map-handler");
9
- var new_id_resolver_1 = require("../coverage-elements/new-id-resolver");
10
- var GLOBAL_ISTANBUL_CONTAINER_NAMES = ['__coverage__'];
11
- var IstanbulToFootprints = /** @class */ (function () {
12
- function IstanbulToFootprints(cfg, logger) {
13
- this.cfg = cfg;
14
- this.totalTests = 0;
15
- this.previousIstanbulCounters = {};
16
- this.relativeModulePaths = {};
17
- if (!logger)
18
- throw new Error('logger is required');
19
- if (!cfg)
20
- throw new Error('cfg is required');
21
- this.logger = logger;
22
- }
23
- IstanbulToFootprints.prototype.resetState = function () {
24
- this.totalTests = 0;
25
- //Holds the a mapping between a uniqueId for an element in a test, to an index in this elements 'hits' array.
26
- this.eidToHitsIndex = {};
27
- this.uniqueIdToElement = {};
28
- this.testNameToTestData = {};
29
- this.fileNameToAppFile = {};
30
- this.fileToSourceMapConsumer = {};
31
- };
32
- IstanbulToFootprints.prototype.createFootprintsPackageFromQueue = function (queuedFootprints, extraData) {
33
- var _this = this;
34
- this.resetState();
35
- var result = this.createFootprintsAppData(extraData);
36
- var istanbulMaps = this.getIstanbulCounters();
37
- if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
38
- this.loadOriginalModules();
39
- }
40
- queuedFootprints.forEach(function (fp) {
41
- _this.convertIstanbulDataToFootprints(fp, result, istanbulMaps);
42
- });
43
- return result;
44
- };
45
- IstanbulToFootprints.prototype.createFootprintsPackageFromRawData = function (rawData, extraData) {
46
- this.resetState();
47
- this.nycFinalReportData = rawData.footprints;
48
- var result = this.createFootprintsAppData(extraData);
49
- if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
50
- this.loadOriginalModules();
51
- }
52
- this.convertIstanbulDataToFootprints(rawData, result);
53
- return result;
54
- };
55
- IstanbulToFootprints.prototype.convertIstanbulDataToFootprints = function (footprintsElement, result, istanbulMaps) {
56
- var test = this.getOrCreateTestData(footprintsElement, result);
57
- var app = result.apps[0]; // We assume single App for now.
58
- var fullIstanbulData = istanbulMaps || footprintsElement.footprints;
59
- for (var moduleName in footprintsElement.footprints) {
60
- var istanbulModule = footprintsElement.footprints[moduleName];
61
- var moduleWithMaps = fullIstanbulData[moduleName];
62
- if (!istanbulModule.f && istanbulModule.data) {
63
- istanbulModule = istanbulModule.data;
64
- moduleWithMaps = moduleWithMaps.data;
65
- }
66
- this.logger.debug('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
67
- this.logger.debug('moduleName: %s', moduleName);
68
- if (!moduleWithMaps) {
69
- this.logger.info('Cannot find full istanbul data for %s', moduleName);
70
- continue;
71
- }
72
- var relativePath = this.getRelativeModulePath(moduleWithMaps);
73
- var sourceMap = this.getSourceMapForModule(moduleName);
74
- var file = this.getOrCreateFootprintsAppFile(relativePath, app);
75
- if (istanbulModule.f) {
76
- this.handleFunctionsData(istanbulModule, moduleWithMaps, sourceMap, relativePath, moduleWithMaps.path, file, test);
77
- }
78
- if (istanbulModule.b) {
79
- this.handleBranchesData(istanbulModule, moduleWithMaps, sourceMap, relativePath, moduleWithMaps.path, file, test);
80
- }
81
- }
82
- };
83
- IstanbulToFootprints.prototype.handleBranchesData = function (istanbulModule, moduleWithMaps, sourceMap, relPath, fullPath, file, test) {
84
- for (var branchId in istanbulModule.b) {
85
- var ifElseAndSwitchCasesArr = istanbulModule.b[branchId];
86
- var expressionInfo = moduleWithMaps.branchMap[branchId];
87
- for (var idx = 0; idx < ifElseAndSwitchCasesArr.length; idx++) {
88
- var branchInfo = expressionInfo.locations[idx];
89
- var hits = ifElseAndSwitchCasesArr[idx];
90
- if (hits > 0) {
91
- var start = branchInfo.start;
92
- var sourceMapData = this.readSourceMapData(sourceMap, start, relPath, fullPath);
93
- var filePath = relPath;
94
- var fullFilePath = fullPath;
95
- if (sourceMapData) {
96
- filePath = sourceMapData.relativePath;
97
- start = sourceMapData.originalStart;
98
- fullFilePath = sourceMapData.absolutePath;
99
- }
100
- var uniqueId = filePath + '|' + this.formatLoc(start) + '|' + idx;
101
- if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
102
- var uniqueIdKey = filePath + '|' + this.formatLoc(start) + '|' + idx;
103
- uniqueId = (0, new_id_resolver_1.resolveNewId)(uniqueIdKey, fullFilePath, filePath, this.getCoverageObject(), this.logger);
104
- }
105
- if (!uniqueId) {
106
- continue;
107
- }
108
- var branchElement = this.getOrCreateBranchElement(uniqueId, file);
109
- if (this.cfg.extendedFootprints.value) {
110
- branchElement.branchInfo = JSON.stringify(branchInfo);
111
- branchElement.sourceMapData = JSON.stringify(sourceMapData);
112
- }
113
- this.addOrUpdateElementHits(test, uniqueId, branchElement, hits);
114
- }
115
- }
116
- }
117
- };
118
- IstanbulToFootprints.prototype.handleFunctionsData = function (istanbulModule, moduleWithMaps, sourceMap, relativePath, fullPath, file, test) {
119
- for (var funcId in istanbulModule.f) {
120
- var hits = istanbulModule.f[funcId];
121
- if (hits > 0) {
122
- var funcInfo = moduleWithMaps.fnMap[funcId];
123
- var start = funcInfo.loc.start;
124
- var sourceMapData = this.readSourceMapData(sourceMap, start, relativePath, fullPath);
125
- var filePath = relativePath;
126
- var fullFilePath = fullPath;
127
- if (sourceMapData) {
128
- filePath = sourceMapData.relativePath;
129
- start = sourceMapData.originalStart;
130
- fullFilePath = sourceMapData.absolutePath;
131
- }
132
- var uniqueId = filePath + '@' + this.formatLoc(start);
133
- if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
134
- var uniqueIdKey = filePath + '@' + this.formatLoc(start);
135
- uniqueId = (0, new_id_resolver_1.resolveNewId)(uniqueIdKey, fullFilePath, filePath, this.getCoverageObject(), this.logger);
136
- }
137
- if (!uniqueId) {
138
- continue;
139
- }
140
- var methodElement = this.getOrCreateMethodElement(uniqueId, file);
141
- if (this.cfg.extendedFootprints.value) {
142
- methodElement.funcInfo = JSON.stringify(funcInfo);
143
- methodElement.sourceMapData = JSON.stringify(sourceMapData);
144
- }
145
- this.addOrUpdateElementHits(test, uniqueId, methodElement, hits);
146
- if (funcInfo.decl) {
147
- this.addDeclarationFootprints(funcInfo, sourceMap, relativePath, file, fullPath, test, hits);
148
- }
149
- }
150
- }
151
- };
152
- IstanbulToFootprints.prototype.addDeclarationFootprints = function (funcInfo, sourceMap, relativePath, file, fullpath, test, hits) {
153
- var declStart = funcInfo.decl.start; //For NYC
154
- var sourceMapData = this.readSourceMapData(sourceMap, declStart, relativePath, fullpath);
155
- if (sourceMapData) {
156
- relativePath = sourceMapData.relativePath;
157
- declStart = sourceMapData.originalStart;
158
- }
159
- var declUniqueId = relativePath + '@' + this.formatLoc(declStart);
160
- /*
161
- There is some edge case where 'loc' object of one method is same as 'decl' object of another method, and
162
- this can lead to missing coverage for first method when using new uniqueIds. because declaration key of
163
- second method already points to the first method so we add declaration footprints also.
164
- The cost effect is that hit of every method will doubled. (one for 'loc' and one for 'decl').
165
- */
166
- if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
167
- var uniqueIdKey = relativePath + '@' + this.formatLoc(declStart);
168
- declUniqueId = (0, new_id_resolver_1.resolveNewId)(uniqueIdKey, fullpath, relativePath, this.getCoverageObject(), this.logger);
169
- }
170
- if (!declUniqueId) {
171
- return;
172
- }
173
- var declMethodElement = this.getOrCreateMethodElement(declUniqueId, file);
174
- this.addOrUpdateElementHits(test, declUniqueId, declMethodElement, hits);
175
- };
176
- IstanbulToFootprints.prototype.getSourceMapForModule = function (relPath) {
177
- if (!this.fileToSourceMapConsumer[relPath]) {
178
- this.fileToSourceMapConsumer[relPath] = source_maps_utils_1.SourceMapsUtils.readSourceMaps(relPath);
179
- this.logger.debug('Read source maps for file\':' + relPath + '\'');
180
- }
181
- var sourceMap = this.fileToSourceMapConsumer[relPath];
182
- return sourceMap;
183
- };
184
- IstanbulToFootprints.prototype.addOrUpdateElementHits = function (testData, elementUniqueId, element, hits) {
185
- var HITS_INDEX = 1;
186
- var eid = elementUniqueId + '|' + testData.index;
187
- var index = this.eidToHitsIndex[eid];
188
- if (index != null) {
189
- var testIndexAndHits = element.hits[index];
190
- var elementHits = testIndexAndHits[HITS_INDEX];
191
- elementHits = elementHits + hits;
192
- testIndexAndHits[HITS_INDEX] = elementHits;
193
- }
194
- else {
195
- var testIndexAndHits = new Array();
196
- testIndexAndHits.push(testData.index);
197
- testIndexAndHits.push(hits);
198
- var length_1 = element.hits.push(testIndexAndHits);
199
- this.eidToHitsIndex[eid] = length_1 - 1;
200
- }
201
- };
202
- IstanbulToFootprints.prototype.getOrCreateTestData = function (footprintsElement, result) {
203
- if (!this.testNameToTestData[footprintsElement.testName]) {
204
- var test_1 = {
205
- executionId: footprintsElement.executionId,
206
- localTime: footprintsElement.localTime,
207
- testName: footprintsElement.testName,
208
- collectionInterval: footprintsElement.collectionInterval
209
- };
210
- result.tests.push(test_1);
211
- this.testNameToTestData[footprintsElement.testName] = {
212
- index: this.totalTests++,
213
- test: test_1
214
- };
215
- }
216
- return this.testNameToTestData[footprintsElement.testName];
217
- };
218
- IstanbulToFootprints.prototype.getOrCreateMethodElement = function (uniqueId, file) {
219
- if (!this.uniqueIdToElement[uniqueId]) {
220
- var x = {
221
- hits: new Array(),
222
- uniqueId: uniqueId
223
- };
224
- this.uniqueIdToElement[uniqueId] = x;
225
- file.methods.push(x);
226
- }
227
- return this.uniqueIdToElement[uniqueId];
228
- };
229
- IstanbulToFootprints.prototype.getOrCreateBranchElement = function (uniqueId, file) {
230
- if (!this.uniqueIdToElement[uniqueId]) {
231
- var x = {
232
- hits: new Array(),
233
- uniqueId: uniqueId
234
- };
235
- this.uniqueIdToElement[uniqueId] = x;
236
- file.branches.push(x);
237
- }
238
- return this.uniqueIdToElement[uniqueId];
239
- };
240
- IstanbulToFootprints.prototype.getOrCreateFootprintsAppFile = function (fileName, app) {
241
- if (this.fileNameToAppFile[fileName]) {
242
- return this.fileNameToAppFile[fileName];
243
- }
244
- //File doesn't exist in request.
245
- var file = {
246
- methods: new Array(),
247
- branches: new Array(),
248
- lines: new Array(),
249
- path: fileName
250
- };
251
- app.files.push(file);
252
- this.fileNameToAppFile[fileName] = file;
253
- return file;
254
- };
255
- IstanbulToFootprints.prototype.createFootprintsAppData = function (extraData) {
256
- //Supporting only one app right now
257
- var app = {
258
- appName: this.cfg.appName.value,
259
- branchName: this.cfg.branch.value,
260
- buildName: this.cfg.build.value,
261
- buildSessionId: this.cfg.buildSessionId.value,
262
- moduleName: null,
263
- files: new Array()
264
- };
265
- extraData.apps.push(app);
266
- return extraData;
267
- };
268
- IstanbulToFootprints.prototype.readSourceMapData = function (sourceMaps, start, coveragePath, fullPath) {
269
- if (sourceMaps) {
270
- var startPositionArr = [start.line, start.column];
271
- var handler = new source_map_handler_1.SourceMapHandler(sourceMaps, fullPath, startPositionArr, [], this.cfg.projectRoot.value, this.logger);
272
- handler.resolvePaths();
273
- if (!handler.shouldSkipped) {
274
- var result = {
275
- relativePath: handler.relativePath,
276
- originalStart: handler.start,
277
- absolutePath: handler.absolutePath
278
- };
279
- return result;
280
- }
281
- }
282
- return null;
283
- };
284
- IstanbulToFootprints.prototype.adjustPathSlashes = function (filePath) {
285
- filePath = (filePath || '').replace(/\\/g, '/');
286
- return filePath;
287
- };
288
- IstanbulToFootprints.prototype.getIstanbulCounters = function () {
289
- if (this.globalCoverageContainer)
290
- return this.globalCoverageContainer;
291
- var re = /^\$\$cov_[0-9]+\$\$$/;
292
- var keys = Object.keys(global);
293
- for (var i = 0; i < keys.length; i++) {
294
- var k = keys[i];
295
- if ((re.exec(k)) !== null || GLOBAL_ISTANBUL_CONTAINER_NAMES.indexOf(k) >= 0) {
296
- this.globalCoverageContainer = global[k];
297
- return this.globalCoverageContainer;
298
- }
299
- }
300
- return null;
301
- };
302
- IstanbulToFootprints.prototype.getCoverageObject = function () {
303
- return this.nycFinalReportData || this.getIstanbulCounters();
304
- };
305
- IstanbulToFootprints.prototype.getRelativeModulePath = function (module) {
306
- // Sometimes istanbul holds the 'path' under 'data' object. see coverage final attached in 'https://sealights.atlassian.net/browse/SLDEV-4421'
307
- if (typeof (module.path) !== 'string' && module.data.path && typeof (module.data.path) === 'string') {
308
- this.logger.debug("Not extracting relative path for '" + module.data.path + "'. Using the same path as is.");
309
- return module.data.path;
310
- }
311
- if (!this.relativeModulePaths[module.path]) {
312
- var absolutePath = this.adjustPathSlashes(module.path);
313
- var relativePath = absolutePath.replace(this.resolveProjectRoot(), '');
314
- if (relativePath.indexOf('/') === 0) {
315
- relativePath = relativePath.substring(1);
316
- }
317
- this.relativeModulePaths[module.path] = relativePath;
318
- }
319
- return this.relativeModulePaths[module.path];
320
- };
321
- IstanbulToFootprints.prototype.formatLoc = function (loc) {
322
- return loc.line + ',' + loc.column;
323
- };
324
- IstanbulToFootprints.prototype.getCurrentFootprints = function () {
325
- var diff = this.getIstanbulCountersDiff(this.getIstanbulCounters());
326
- return diff;
327
- };
328
- IstanbulToFootprints.prototype.getIstanbulCountersDiff = function (currentCounters) {
329
- if (!currentCounters) {
330
- this.logger.error('Couldn\'t get istanbul counters, return empty diff.');
331
- return {};
332
- }
333
- var diff = {};
334
- var diffModule = null;
335
- function createModuleForDiff(istanbulModule) {
336
- diffModule = diff[istanbulModule] = { b: {}, f: {}, s: {} };
337
- return diffModule;
338
- }
339
- var prevCounters = this.previousIstanbulCounters;
340
- for (var istanbulModule in currentCounters) {
341
- diffModule = null;
342
- if (!prevCounters[istanbulModule]) {
343
- prevCounters[istanbulModule] = { b: {}, f: {}, s: {} };
344
- }
345
- var prevModule = prevCounters[istanbulModule];
346
- for (var funcId in currentCounters[istanbulModule].f) {
347
- if (prevModule.f[funcId] === undefined) {
348
- prevModule.f[funcId] = 0;
349
- }
350
- var currentFunctionHits = currentCounters[istanbulModule].f[funcId];
351
- var prevFunctionHits = prevModule.f[funcId] || 0;
352
- if (currentFunctionHits > prevFunctionHits) {
353
- //this is a diff
354
- diffModule = diffModule || createModuleForDiff(istanbulModule);
355
- diffModule.f[funcId] = (currentFunctionHits - prevFunctionHits);
356
- prevModule.f[funcId] = currentFunctionHits;
357
- }
358
- }
359
- for (var branchId in currentCounters[istanbulModule].b) {
360
- var currentBranchesHits = currentCounters[istanbulModule].b[branchId];
361
- var prevBranchHits = prevModule.b[branchId];
362
- if (prevBranchHits) {
363
- for (var i = 0, j = currentBranchesHits.length; i < j; i++) {
364
- var currentHits = currentBranchesHits[i], previousHits = prevBranchHits[i] || 0;
365
- if (currentHits > previousHits) {
366
- //this is a diff
367
- diffModule = diffModule || createModuleForDiff(istanbulModule);
368
- diffModule.b[branchId] = diffModule.b[branchId] || this.newNumberArray(currentBranchesHits.length);
369
- diffModule.b[branchId][i] = currentHits - previousHits;
370
- prevBranchHits[i] = currentHits;
371
- }
372
- }
373
- }
374
- else {
375
- prevModule.b[branchId] = currentBranchesHits.slice();
376
- var branchSetHasHits = false;
377
- for (var i = 0, j = currentBranchesHits.length; i < j && !branchSetHasHits; i++) {
378
- if (currentBranchesHits[i])
379
- branchSetHasHits = true;
380
- }
381
- if (branchSetHasHits) {
382
- diffModule = diffModule || createModuleForDiff(istanbulModule);
383
- diffModule.b[branchId] = currentBranchesHits.slice();
384
- }
385
- }
386
- }
387
- }
388
- this.logDiff(diff);
389
- return diff;
390
- };
391
- IstanbulToFootprints.prototype.logDiff = function (diff) {
392
- if (!this.logger.isDebugEnabled()) {
393
- return;
394
- }
395
- var modules = Object.keys(diff);
396
- var formatter = new messages_formatter_1.MessagesFormatter();
397
- modules.forEach(function (module) {
398
- var methods = diff[module].f || {};
399
- var branches = diff[module].b || {};
400
- var methodsSize = Object.keys(methods).length;
401
- var branchesSize = Object.keys(branches).length;
402
- formatter.addContent(module + ": " + methodsSize + " methods and " + branchesSize + " branches");
403
- });
404
- this.logger.debug('Found coverage data for %s files:\n %s', modules.length, formatter.content);
405
- };
406
- IstanbulToFootprints.prototype.newNumberArray = function (length) {
407
- var arr = [];
408
- for (var i = 0; i < length; i++)
409
- arr.push(0);
410
- return arr;
411
- };
412
- IstanbulToFootprints.prototype.loadOriginalModules = function () {
413
- var loader = new original_module_loader_1.OriginalModuleLoader(this.getCoverageObject(), this.logger);
414
- loader.load();
415
- };
416
- IstanbulToFootprints.prototype.resolveProjectRoot = function () {
417
- return (this.cfg.projectRoot.value || process.cwd()).replace(/\\/g, '/');
418
- };
419
- return IstanbulToFootprints;
420
- }());
421
- exports.IstanbulToFootprints = IstanbulToFootprints;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IstanbulToFootprints = void 0;
4
+ var messages_formatter_1 = require("../messages-formatter");
5
+ var original_module_loader_1 = require("../coverage-elements/original-module-loader");
6
+ var source_maps_utils_1 = require("../source-maps-utils");
7
+ var sl_env_vars_1 = require("../constants/sl-env-vars");
8
+ var source_map_handler_1 = require("../source-map-handler");
9
+ var new_id_resolver_1 = require("../coverage-elements/new-id-resolver");
10
+ var GLOBAL_ISTANBUL_CONTAINER_NAMES = ['__coverage__'];
11
+ var IstanbulToFootprints = /** @class */ (function () {
12
+ function IstanbulToFootprints(cfg, logger) {
13
+ this.cfg = cfg;
14
+ this.totalTests = 0;
15
+ this.previousIstanbulCounters = {};
16
+ this.relativeModulePaths = {};
17
+ if (!logger)
18
+ throw new Error('logger is required');
19
+ if (!cfg)
20
+ throw new Error('cfg is required');
21
+ this.logger = logger;
22
+ }
23
+ IstanbulToFootprints.prototype.resetState = function () {
24
+ this.totalTests = 0;
25
+ //Holds the a mapping between a uniqueId for an element in a test, to an index in this elements 'hits' array.
26
+ this.eidToHitsIndex = {};
27
+ this.uniqueIdToElement = {};
28
+ this.testNameToTestData = {};
29
+ this.fileNameToAppFile = {};
30
+ this.fileToSourceMapConsumer = {};
31
+ };
32
+ IstanbulToFootprints.prototype.createFootprintsPackageFromQueue = function (queuedFootprints, extraData) {
33
+ var _this = this;
34
+ this.resetState();
35
+ var result = this.createFootprintsAppData(extraData);
36
+ var istanbulMaps = this.getIstanbulCounters();
37
+ if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
38
+ this.loadOriginalModules();
39
+ }
40
+ queuedFootprints.forEach(function (fp) {
41
+ _this.convertIstanbulDataToFootprints(fp, result, istanbulMaps);
42
+ });
43
+ return result;
44
+ };
45
+ IstanbulToFootprints.prototype.createFootprintsPackageFromRawData = function (rawData, extraData) {
46
+ this.resetState();
47
+ this.nycFinalReportData = rawData.footprints;
48
+ var result = this.createFootprintsAppData(extraData);
49
+ if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
50
+ this.loadOriginalModules();
51
+ }
52
+ this.convertIstanbulDataToFootprints(rawData, result);
53
+ return result;
54
+ };
55
+ IstanbulToFootprints.prototype.convertIstanbulDataToFootprints = function (footprintsElement, result, istanbulMaps) {
56
+ var test = this.getOrCreateTestData(footprintsElement, result);
57
+ var app = result.apps[0]; // We assume single App for now.
58
+ var fullIstanbulData = istanbulMaps || footprintsElement.footprints;
59
+ for (var moduleName in footprintsElement.footprints) {
60
+ var istanbulModule = footprintsElement.footprints[moduleName];
61
+ var moduleWithMaps = fullIstanbulData[moduleName];
62
+ if (!istanbulModule.f && istanbulModule.data) {
63
+ istanbulModule = istanbulModule.data;
64
+ moduleWithMaps = moduleWithMaps.data;
65
+ }
66
+ this.logger.debug('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
67
+ this.logger.debug('moduleName: %s', moduleName);
68
+ if (!moduleWithMaps) {
69
+ this.logger.info('Cannot find full istanbul data for %s', moduleName);
70
+ continue;
71
+ }
72
+ var relativePath = this.getRelativeModulePath(moduleWithMaps);
73
+ var sourceMap = this.getSourceMapForModule(moduleName);
74
+ var file = this.getOrCreateFootprintsAppFile(relativePath, app);
75
+ if (istanbulModule.f) {
76
+ this.handleFunctionsData(istanbulModule, moduleWithMaps, sourceMap, relativePath, moduleWithMaps.path, file, test);
77
+ }
78
+ if (istanbulModule.b) {
79
+ this.handleBranchesData(istanbulModule, moduleWithMaps, sourceMap, relativePath, moduleWithMaps.path, file, test);
80
+ }
81
+ }
82
+ };
83
+ IstanbulToFootprints.prototype.handleBranchesData = function (istanbulModule, moduleWithMaps, sourceMap, relPath, fullPath, file, test) {
84
+ for (var branchId in istanbulModule.b) {
85
+ var ifElseAndSwitchCasesArr = istanbulModule.b[branchId];
86
+ var expressionInfo = moduleWithMaps.branchMap[branchId];
87
+ for (var idx = 0; idx < ifElseAndSwitchCasesArr.length; idx++) {
88
+ var branchInfo = expressionInfo.locations[idx];
89
+ var hits = ifElseAndSwitchCasesArr[idx];
90
+ if (hits > 0) {
91
+ var start = branchInfo.start;
92
+ var sourceMapData = this.readSourceMapData(sourceMap, start, relPath, fullPath);
93
+ var filePath = relPath;
94
+ var fullFilePath = fullPath;
95
+ if (sourceMapData) {
96
+ filePath = sourceMapData.relativePath;
97
+ start = sourceMapData.originalStart;
98
+ fullFilePath = sourceMapData.absolutePath;
99
+ }
100
+ var uniqueId = filePath + '|' + this.formatLoc(start) + '|' + idx;
101
+ if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
102
+ var uniqueIdKey = filePath + '|' + this.formatLoc(start) + '|' + idx;
103
+ uniqueId = new_id_resolver_1.resolveNewId(uniqueIdKey, fullFilePath, filePath, this.getCoverageObject(), this.logger);
104
+ }
105
+ if (!uniqueId) {
106
+ continue;
107
+ }
108
+ var branchElement = this.getOrCreateBranchElement(uniqueId, file);
109
+ if (this.cfg.extendedFootprints.value) {
110
+ branchElement.branchInfo = JSON.stringify(branchInfo);
111
+ branchElement.sourceMapData = JSON.stringify(sourceMapData);
112
+ }
113
+ this.addOrUpdateElementHits(test, uniqueId, branchElement, hits);
114
+ }
115
+ }
116
+ }
117
+ };
118
+ IstanbulToFootprints.prototype.handleFunctionsData = function (istanbulModule, moduleWithMaps, sourceMap, relativePath, fullPath, file, test) {
119
+ for (var funcId in istanbulModule.f) {
120
+ var hits = istanbulModule.f[funcId];
121
+ if (hits > 0) {
122
+ var funcInfo = moduleWithMaps.fnMap[funcId];
123
+ var start = funcInfo.loc.start;
124
+ var sourceMapData = this.readSourceMapData(sourceMap, start, relativePath, fullPath);
125
+ var filePath = relativePath;
126
+ var fullFilePath = fullPath;
127
+ if (sourceMapData) {
128
+ filePath = sourceMapData.relativePath;
129
+ start = sourceMapData.originalStart;
130
+ fullFilePath = sourceMapData.absolutePath;
131
+ }
132
+ var uniqueId = filePath + '@' + this.formatLoc(start);
133
+ if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
134
+ var uniqueIdKey = filePath + '@' + this.formatLoc(start);
135
+ uniqueId = new_id_resolver_1.resolveNewId(uniqueIdKey, fullFilePath, filePath, this.getCoverageObject(), this.logger);
136
+ }
137
+ if (!uniqueId) {
138
+ continue;
139
+ }
140
+ var methodElement = this.getOrCreateMethodElement(uniqueId, file);
141
+ if (this.cfg.extendedFootprints.value) {
142
+ methodElement.funcInfo = JSON.stringify(funcInfo);
143
+ methodElement.sourceMapData = JSON.stringify(sourceMapData);
144
+ }
145
+ this.addOrUpdateElementHits(test, uniqueId, methodElement, hits);
146
+ if (funcInfo.decl) {
147
+ this.addDeclarationFootprints(funcInfo, sourceMap, relativePath, file, fullPath, test, hits);
148
+ }
149
+ }
150
+ }
151
+ };
152
+ IstanbulToFootprints.prototype.addDeclarationFootprints = function (funcInfo, sourceMap, relativePath, file, fullpath, test, hits) {
153
+ var declStart = funcInfo.decl.start; //For NYC
154
+ var sourceMapData = this.readSourceMapData(sourceMap, declStart, relativePath, fullpath);
155
+ if (sourceMapData) {
156
+ relativePath = sourceMapData.relativePath;
157
+ declStart = sourceMapData.originalStart;
158
+ }
159
+ var declUniqueId = relativePath + '@' + this.formatLoc(declStart);
160
+ /*
161
+ There is some edge case where 'loc' object of one method is same as 'decl' object of another method, and
162
+ this can lead to missing coverage for first method when using new uniqueIds. because declaration key of
163
+ second method already points to the first method so we add declaration footprints also.
164
+ The cost effect is that hit of every method will doubled. (one for 'loc' and one for 'decl').
165
+ */
166
+ if (sl_env_vars_1.SlEnvVars.isUseNewUniqueId()) {
167
+ var uniqueIdKey = relativePath + '@' + this.formatLoc(declStart);
168
+ declUniqueId = new_id_resolver_1.resolveNewId(uniqueIdKey, fullpath, relativePath, this.getCoverageObject(), this.logger);
169
+ }
170
+ if (!declUniqueId) {
171
+ return;
172
+ }
173
+ var declMethodElement = this.getOrCreateMethodElement(declUniqueId, file);
174
+ this.addOrUpdateElementHits(test, declUniqueId, declMethodElement, hits);
175
+ };
176
+ IstanbulToFootprints.prototype.getSourceMapForModule = function (relPath) {
177
+ if (!this.fileToSourceMapConsumer[relPath]) {
178
+ this.fileToSourceMapConsumer[relPath] = source_maps_utils_1.SourceMapsUtils.readSourceMaps(relPath);
179
+ this.logger.debug('Read source maps for file\':' + relPath + '\'');
180
+ }
181
+ var sourceMap = this.fileToSourceMapConsumer[relPath];
182
+ return sourceMap;
183
+ };
184
+ IstanbulToFootprints.prototype.addOrUpdateElementHits = function (testData, elementUniqueId, element, hits) {
185
+ var HITS_INDEX = 1;
186
+ var eid = elementUniqueId + '|' + testData.index;
187
+ var index = this.eidToHitsIndex[eid];
188
+ if (index != null) {
189
+ var testIndexAndHits = element.hits[index];
190
+ var elementHits = testIndexAndHits[HITS_INDEX];
191
+ elementHits = elementHits + hits;
192
+ testIndexAndHits[HITS_INDEX] = elementHits;
193
+ }
194
+ else {
195
+ var testIndexAndHits = new Array();
196
+ testIndexAndHits.push(testData.index);
197
+ testIndexAndHits.push(hits);
198
+ var length_1 = element.hits.push(testIndexAndHits);
199
+ this.eidToHitsIndex[eid] = length_1 - 1;
200
+ }
201
+ };
202
+ IstanbulToFootprints.prototype.getOrCreateTestData = function (footprintsElement, result) {
203
+ if (!this.testNameToTestData[footprintsElement.testName]) {
204
+ var test_1 = {
205
+ executionId: footprintsElement.executionId,
206
+ localTime: footprintsElement.localTime,
207
+ testName: footprintsElement.testName,
208
+ collectionInterval: footprintsElement.collectionInterval
209
+ };
210
+ result.tests.push(test_1);
211
+ this.testNameToTestData[footprintsElement.testName] = {
212
+ index: this.totalTests++,
213
+ test: test_1
214
+ };
215
+ }
216
+ return this.testNameToTestData[footprintsElement.testName];
217
+ };
218
+ IstanbulToFootprints.prototype.getOrCreateMethodElement = function (uniqueId, file) {
219
+ if (!this.uniqueIdToElement[uniqueId]) {
220
+ var x = {
221
+ hits: new Array(),
222
+ uniqueId: uniqueId
223
+ };
224
+ this.uniqueIdToElement[uniqueId] = x;
225
+ file.methods.push(x);
226
+ }
227
+ return this.uniqueIdToElement[uniqueId];
228
+ };
229
+ IstanbulToFootprints.prototype.getOrCreateBranchElement = function (uniqueId, file) {
230
+ if (!this.uniqueIdToElement[uniqueId]) {
231
+ var x = {
232
+ hits: new Array(),
233
+ uniqueId: uniqueId
234
+ };
235
+ this.uniqueIdToElement[uniqueId] = x;
236
+ file.branches.push(x);
237
+ }
238
+ return this.uniqueIdToElement[uniqueId];
239
+ };
240
+ IstanbulToFootprints.prototype.getOrCreateFootprintsAppFile = function (fileName, app) {
241
+ if (this.fileNameToAppFile[fileName]) {
242
+ return this.fileNameToAppFile[fileName];
243
+ }
244
+ //File doesn't exist in request.
245
+ var file = {
246
+ methods: new Array(),
247
+ branches: new Array(),
248
+ lines: new Array(),
249
+ path: fileName
250
+ };
251
+ app.files.push(file);
252
+ this.fileNameToAppFile[fileName] = file;
253
+ return file;
254
+ };
255
+ IstanbulToFootprints.prototype.createFootprintsAppData = function (extraData) {
256
+ //Supporting only one app right now
257
+ var app = {
258
+ appName: this.cfg.appName.value,
259
+ branchName: this.cfg.branch.value,
260
+ buildName: this.cfg.build.value,
261
+ buildSessionId: this.cfg.buildSessionId.value,
262
+ moduleName: null,
263
+ files: new Array()
264
+ };
265
+ extraData.apps.push(app);
266
+ return extraData;
267
+ };
268
+ IstanbulToFootprints.prototype.readSourceMapData = function (sourceMaps, start, coveragePath, fullPath) {
269
+ if (sourceMaps) {
270
+ var startPositionArr = [start.line, start.column];
271
+ var handler = new source_map_handler_1.SourceMapHandler(sourceMaps, fullPath, startPositionArr, [], this.cfg.projectRoot.value, this.logger);
272
+ handler.resolvePaths();
273
+ if (!handler.shouldSkipped) {
274
+ var result = {
275
+ relativePath: handler.relativePath,
276
+ originalStart: handler.start,
277
+ absolutePath: handler.absolutePath
278
+ };
279
+ return result;
280
+ }
281
+ }
282
+ return null;
283
+ };
284
+ IstanbulToFootprints.prototype.adjustPathSlashes = function (filePath) {
285
+ filePath = (filePath || '').replace(/\\/g, '/');
286
+ return filePath;
287
+ };
288
+ IstanbulToFootprints.prototype.getIstanbulCounters = function () {
289
+ if (this.globalCoverageContainer)
290
+ return this.globalCoverageContainer;
291
+ var re = /^\$\$cov_[0-9]+\$\$$/;
292
+ var keys = Object.keys(global);
293
+ for (var i = 0; i < keys.length; i++) {
294
+ var k = keys[i];
295
+ if ((re.exec(k)) !== null || GLOBAL_ISTANBUL_CONTAINER_NAMES.indexOf(k) >= 0) {
296
+ this.globalCoverageContainer = global[k];
297
+ return this.globalCoverageContainer;
298
+ }
299
+ }
300
+ return null;
301
+ };
302
+ IstanbulToFootprints.prototype.getCoverageObject = function () {
303
+ return this.nycFinalReportData || this.getIstanbulCounters();
304
+ };
305
+ IstanbulToFootprints.prototype.getRelativeModulePath = function (module) {
306
+ // Sometimes istanbul holds the 'path' under 'data' object. see coverage final attached in 'https://sealights.atlassian.net/browse/SLDEV-4421'
307
+ if (typeof (module.path) !== 'string' && module.data.path && typeof (module.data.path) === 'string') {
308
+ this.logger.debug("Not extracting relative path for '" + module.data.path + "'. Using the same path as is.");
309
+ return module.data.path;
310
+ }
311
+ if (!this.relativeModulePaths[module.path]) {
312
+ var absolutePath = this.adjustPathSlashes(module.path);
313
+ var relativePath = absolutePath.replace(this.resolveProjectRoot(), '');
314
+ if (relativePath.indexOf('/') === 0) {
315
+ relativePath = relativePath.substring(1);
316
+ }
317
+ this.relativeModulePaths[module.path] = relativePath;
318
+ }
319
+ return this.relativeModulePaths[module.path];
320
+ };
321
+ IstanbulToFootprints.prototype.formatLoc = function (loc) {
322
+ return loc.line + ',' + loc.column;
323
+ };
324
+ IstanbulToFootprints.prototype.getCurrentFootprints = function () {
325
+ var diff = this.getIstanbulCountersDiff(this.getIstanbulCounters());
326
+ return diff;
327
+ };
328
+ IstanbulToFootprints.prototype.getIstanbulCountersDiff = function (currentCounters) {
329
+ if (!currentCounters) {
330
+ this.logger.error('Couldn\'t get istanbul counters, return empty diff.');
331
+ return {};
332
+ }
333
+ var diff = {};
334
+ var diffModule = null;
335
+ function createModuleForDiff(istanbulModule) {
336
+ diffModule = diff[istanbulModule] = { b: {}, f: {}, s: {} };
337
+ return diffModule;
338
+ }
339
+ var prevCounters = this.previousIstanbulCounters;
340
+ for (var istanbulModule in currentCounters) {
341
+ diffModule = null;
342
+ if (!prevCounters[istanbulModule]) {
343
+ prevCounters[istanbulModule] = { b: {}, f: {}, s: {} };
344
+ }
345
+ var prevModule = prevCounters[istanbulModule];
346
+ for (var funcId in currentCounters[istanbulModule].f) {
347
+ if (prevModule.f[funcId] === undefined) {
348
+ prevModule.f[funcId] = 0;
349
+ }
350
+ var currentFunctionHits = currentCounters[istanbulModule].f[funcId];
351
+ var prevFunctionHits = prevModule.f[funcId] || 0;
352
+ if (currentFunctionHits > prevFunctionHits) {
353
+ //this is a diff
354
+ diffModule = diffModule || createModuleForDiff(istanbulModule);
355
+ diffModule.f[funcId] = (currentFunctionHits - prevFunctionHits);
356
+ prevModule.f[funcId] = currentFunctionHits;
357
+ }
358
+ }
359
+ for (var branchId in currentCounters[istanbulModule].b) {
360
+ var currentBranchesHits = currentCounters[istanbulModule].b[branchId];
361
+ var prevBranchHits = prevModule.b[branchId];
362
+ if (prevBranchHits) {
363
+ for (var i = 0, j = currentBranchesHits.length; i < j; i++) {
364
+ var currentHits = currentBranchesHits[i], previousHits = prevBranchHits[i] || 0;
365
+ if (currentHits > previousHits) {
366
+ //this is a diff
367
+ diffModule = diffModule || createModuleForDiff(istanbulModule);
368
+ diffModule.b[branchId] = diffModule.b[branchId] || this.newNumberArray(currentBranchesHits.length);
369
+ diffModule.b[branchId][i] = currentHits - previousHits;
370
+ prevBranchHits[i] = currentHits;
371
+ }
372
+ }
373
+ }
374
+ else {
375
+ prevModule.b[branchId] = currentBranchesHits.slice();
376
+ var branchSetHasHits = false;
377
+ for (var i = 0, j = currentBranchesHits.length; i < j && !branchSetHasHits; i++) {
378
+ if (currentBranchesHits[i])
379
+ branchSetHasHits = true;
380
+ }
381
+ if (branchSetHasHits) {
382
+ diffModule = diffModule || createModuleForDiff(istanbulModule);
383
+ diffModule.b[branchId] = currentBranchesHits.slice();
384
+ }
385
+ }
386
+ }
387
+ }
388
+ this.logDiff(diff);
389
+ return diff;
390
+ };
391
+ IstanbulToFootprints.prototype.logDiff = function (diff) {
392
+ if (!this.logger.isDebugEnabled()) {
393
+ return;
394
+ }
395
+ var modules = Object.keys(diff);
396
+ var formatter = new messages_formatter_1.MessagesFormatter();
397
+ modules.forEach(function (module) {
398
+ var methods = diff[module].f || {};
399
+ var branches = diff[module].b || {};
400
+ var methodsSize = Object.keys(methods).length;
401
+ var branchesSize = Object.keys(branches).length;
402
+ formatter.addContent(module + ": " + methodsSize + " methods and " + branchesSize + " branches");
403
+ });
404
+ this.logger.debug('Found coverage data for %s files:\n %s', modules.length, formatter.content);
405
+ };
406
+ IstanbulToFootprints.prototype.newNumberArray = function (length) {
407
+ var arr = [];
408
+ for (var i = 0; i < length; i++)
409
+ arr.push(0);
410
+ return arr;
411
+ };
412
+ IstanbulToFootprints.prototype.loadOriginalModules = function () {
413
+ var loader = new original_module_loader_1.OriginalModuleLoader(this.getCoverageObject(), this.logger);
414
+ loader.load();
415
+ };
416
+ IstanbulToFootprints.prototype.resolveProjectRoot = function () {
417
+ return (this.cfg.projectRoot.value || process.cwd()).replace(/\\/g, '/');
418
+ };
419
+ return IstanbulToFootprints;
420
+ }());
421
+ exports.IstanbulToFootprints = IstanbulToFootprints;
422
422
  //# sourceMappingURL=istanbul-to-footprints.js.map