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,474 +1,461 @@
1
- var fileAndFolderUtils = require('../file-and-folder-utils');
2
- var IgnoredFilesHandler = require("../../common/ignored-files-handler").IgnoredFilesHandler;
3
- var ShortNameToFileMapper = require("../../common/short-name-to-file-mapper").ShortNameToFileMapper;
4
- var UniqueIdConverter = require("../../common/coverage-elements/unique-id-converter").UniqueIdConverter;
5
- var CockpitNotifier = require("../../common/agent-events/cockpit-notifier").CockpitNotifier;
6
- var SlEnvVars = require("../../common/constants/sl-env-vars").SlEnvVars;
7
- var glob = require("glob");
8
- var path = require('path');
9
- var fs = require('fs');
10
- var ActualFile = require('../file-system/actual-file');
11
- var utils = require('../utils');
12
- var FileSignature = require('./file-signature.js');
13
- var GeneratedFileSignature = require('./generated-file-signature');
14
- var micromatch = require('micromatch');
15
- var MarkupFilesParser = require('../markup-files-parser');
16
- var DefaultValuesResolver = require('../default-values-resolver');
17
- var EntitiesMapper = require("../entities-mapper");
18
- var SourceDataEnricher = require("./source-data-enricher");
19
- var globalErrorHandler = require('../global-error-handler');
20
- var globalMethodIndexer = require("./globalMethodIndexer");
21
- var SourceFilesNotifier = require("./source-files-notifier");
22
- var BRANCHES_KEY = "branches";
23
- var BRANCH_ELEMENT_TYPE = "branch";
24
- var METHODS_KEY = "methods";
25
- var METHOD_ELEMENT_TYPE = "method";
26
- var METHOD_INDEX_FOR_GLOBAL_BRANCHES = -1;
27
- // TODO: refactor this class and difine the exec responsibility.
28
- function FilesMapping(handlerParams, slMapper, logger) {
29
- this.handlerParams = handlerParams || {};
30
- this.options = this.handlerParams.buildArguments;
31
- this.finalOutput = this.handlerParams.finalOutput;
32
- this.matchedFiles = [];
33
- this.fileDataByFileName = {};
34
- this.fileSignatures = [];
35
- this.handlerParams.processedFiles = [];
36
- this.erroredFiles = []; //Relative names
37
- this.finalFilesData = [];
38
- this.logger = logger;
39
- this.log = this._createLogger(logger, "FilesMapping");
40
- this.slIgnoreScan = this._createSlIgnore(IgnoredFilesHandler.SCAN_IGNORE_FILE_NAME);
41
- this.slIgnoreGenerated = this._createSlIgnore(IgnoredFilesHandler.GENERATED_IGNORE_FILE_NAME);
42
- this.projectRoot = this._resolveProjectRoot();
43
- this.shortNameToFileMapper = null;
44
- this.slMapper = slMapper;
45
- this.signaturesParsingErrors = [];
46
- this.sourceFilesNotifier = new SourceFilesNotifier(logger);
47
- this.counters = {
48
- methods: 0,
49
- branches: 0
50
- };
51
- }
52
- FilesMapping.prototype.process = function () {
53
- var context = this;
54
- var promise = new Promise(function (resolve) {
55
- context.log.info("Starting to scan the workspace.");
56
- context._scanWorkspaceForIncludedFilesAndPopulateFilesArray();
57
- context.matchedFiles.forEach(function (matchedFile, fileIdx) {
58
- var isLastFile = (fileIdx == context.matchedFiles.length - 1);
59
- context._fillFilesData(matchedFile, fileIdx, isLastFile);
60
- });
61
- context.fileDataByFileName = {};
62
- context.enrichBuildData();
63
- context.fileSignatures.forEach(function (fileSignature) {
64
- context._mapToServerEntities(fileSignature.createDTO());
65
- });
66
- if (context.fileSignatures.length > 0) {
67
- context.log.info("Processed the following files:");
68
- context.fileSignatures.forEach(function (file, idx) {
69
- context.log.info("\t[" + idx + "] Filename: '" + file.relativePath + "'");
70
- });
71
- }
72
- var isSuccess = true;
73
- if (context.erroredFiles.length) {
74
- var message = context._getErroredFilesMessage();
75
- context.log.warn(message);
76
- isSuccess = false;
77
- }
78
- if (SlEnvVars.isUseNewUniqueId()) {
79
- context._convertUniqueIds();
80
- }
81
- context._mapElementsForSlMapping();
82
- context.finalOutput.files = context.finalFilesData;
83
- context.finalOutput.counters = context.counters;
84
- CockpitNotifier.sendErrorsBatch(context.signaturesParsingErrors);
85
- return resolve(isSuccess);
86
- });
87
- return promise;
88
- };
89
- FilesMapping.prototype._mapToServerEntities = function (fileSignature) {
90
- var context = this;
91
- fileSignature.methods.forEach(function (m) {
92
- var methodFile = context._getCreateFileData(m.srcData.relativeFilename, m.srcData.absoluteFilename);
93
- var serverMethod = EntitiesMapper.toServerMethod(m);
94
- serverMethod.uniqueIdKey = m.uniqueIdKey;
95
- methodFile.methods.push(serverMethod);
96
- context.counters.methods++;
97
- });
98
- fileSignature.branches.forEach(function (b) {
99
- // If containing method is ignored (auto generated code) set it to global branch.
100
- if (globalMethodIndexer.isMethodIgnored(b.enclosingMethodIdx)) {
101
- b.enclosingMethodIdx = METHOD_INDEX_FOR_GLOBAL_BRANCHES;
102
- }
103
- var branchesFile = context._getCreateFileData(b.srcData.relativeFilename, b.srcData.absoluteFilename);
104
- var serverBranch = EntitiesMapper.toServerBranch(b);
105
- serverBranch.uniqueIdKey = b.uniqueIdKey;
106
- branchesFile.branches.push(serverBranch);
107
- context.counters.branches++;
108
- });
109
- };
110
- /* TODO: Split this method into two. For more info: "https://github.com/Sealights/SL.OnPremise.CIA/pull/169" */
111
- FilesMapping.prototype._scanWorkspaceForIncludedFilesAndPopulateFilesArray = function () {
112
- var context = this;
113
- context.options.includedFiles.forEach(function (inclusionPattern) {
114
- var matchedFiles = glob.sync(inclusionPattern, {
115
- cwd: context.options.workspacepath,
116
- ignore: context.options.excludedFiles
117
- });
118
- matchedFiles.forEach(function (matchedFile) {
119
- if (!context.fileDataByFileName[matchedFile]) {
120
- context.fileDataByFileName[matchedFile] = true;
121
- context.matchedFiles.push(matchedFile);
122
- }
123
- });
124
- });
125
- };
126
- FilesMapping.prototype._fillFilesData = function (matchedFile, fileIdx, isLastFile) {
127
- var absolutePath = path.resolve(this.options.workspacepath, matchedFile);
128
- absolutePath = utils.adjustPathSlashes(absolutePath);
129
- var shouldSkipCurrFile = this._shouldSkipFile(absolutePath, matchedFile, fileIdx);
130
- if (shouldSkipCurrFile)
131
- return;
132
- this.handlerParams.processedFiles.push(matchedFile);
133
- this.log.info('Processing [' + (fileIdx + 1) + '/' + this.matchedFiles.length + '] ' + absolutePath);
134
- var fileSig = this._generateFileSignature(absolutePath);
135
- if (!fileSig.hasError) {
136
- fileSig.methods = this._getIncludedMethods(fileSig);
137
- fileSig.branches = this._getIncludedBranches(fileSig);
138
- this.fileSignatures.push(fileSig);
139
- }
140
- else {
141
- this.erroredFiles.push(matchedFile);
142
- }
143
- };
144
- FilesMapping.prototype._shouldSkipFile = function (fullFilename, relativeFileName, fileIdx) {
145
- var filePath = fs.statSync(fullFilename);
146
- if (!filePath.isFile()) {
147
- this.log.info(relativeFileName + " is not a file.");
148
- return true;
149
- }
150
- // If the file is filtered by the .slignore file:
151
- if (this.slIgnoreScan.denies(relativeFileName)) {
152
- this.log.info('Excluded [' + (fileIdx + 1) + '/' + this.matchedFiles.length + '] ' + fullFilename);
153
- // Ignored by .slignore, skip it.
154
- return true;
155
- }
156
- return false;
157
- };
158
- FilesMapping.prototype.createFileSignature = function (absolutePath, relativePath, fileContent, sourceMaps, opts, scmFilesContainer) {
159
- if (sourceMaps) {
160
- var generatedFileSignature = GeneratedFileSignature.create(absolutePath, relativePath, fileContent, sourceMaps, opts, scmFilesContainer, this.logger);
161
- this.sourceFilesNotifier.notifySources(sourceMaps.sources, absolutePath, generatedFileSignature.hasColumnInfo);
162
- return generatedFileSignature;
163
- }
164
- else {
165
- return FileSignature.create(absolutePath, relativePath, fileContent, sourceMaps, opts, scmFilesContainer, this.logger);
166
- }
167
- };
168
- FilesMapping.prototype._generateFileSignature = function (absolutePath) {
169
- var relativePath = absolutePath.replace(this.projectRoot, "");
170
- if (relativePath.indexOf("/") === 0) {
171
- relativePath = relativePath.substring(1);
172
- }
173
- var isBranchCoverage = this.handlerParams.cfg.useBranchCoverage || this.options.usebranchcoverage;
174
- var fileObject = this._createActualFile(relativePath, absolutePath);
175
- var fileContent = fileObject.getContent();
176
- var sourceMaps = fileObject.readSourceMaps(this.logger);
177
- if (this._isMarkupFile(relativePath)) {
178
- fileContent = this._getJavaScriptFromMarkupFile(absolutePath, fileContent);
179
- }
180
- var opts = {
181
- es6Modules: true,
182
- babylonPlugins: ["classProperties"].concat(this.options.babylonPlugins),
183
- projectRoot: this.options.projectRoot,
184
- scmRootDir: this.handlerParams.scmRootDir,
185
- isBranchCoverage: this.handlerParams.cfg.useBranchCoverage || this.options.usebranchcoverage
186
- };
187
- var extension = path.extname(absolutePath);
188
- if (extension === ".ts" || extension === ".tsx") {
189
- opts.babylonPlugins.push("typescript");
190
- }
191
- try {
192
- var fileSignature = this.createFileSignature(absolutePath, relativePath, fileContent, sourceMaps, opts, this.handlerParams.scmFilesContainer);
193
- return fileSignature;
194
- }
195
- catch (e) {
196
- var message = "Failed to create signature for '" + absolutePath + "'. Error '" + e.message + "'";
197
- this.logger.error(message);
198
- this.signaturesParsingErrors.push(message);
199
- this.logger.debug(e.stack);
200
- return {
201
- hasError: true
202
- };
203
- }
204
- };
205
- FilesMapping.prototype._createLogger = function (logger, className) {
206
- return logger.child({
207
- className: className
208
- });
209
- };
210
- FilesMapping.prototype._getIncludedMethods = function (fileSig) {
211
- if (!fileSig.methods)
212
- return [];
213
- return this._getIncludeElements(fileSig, METHODS_KEY, METHOD_ELEMENT_TYPE);
214
- ;
215
- };
216
- FilesMapping.prototype._getIncludedBranches = function (fileSig) {
217
- if (!fileSig.branches)
218
- return [];
219
- return this._getIncludeElements(fileSig, BRANCHES_KEY, BRANCH_ELEMENT_TYPE);
220
- };
221
- FilesMapping.prototype._getIncludeElements = function (fileSig, key, elementType) {
222
- var includedElements = [];
223
- var context = this;
224
- fileSig[key].forEach(function (element) {
225
- if (fileSig.hasSourceMaps) {
226
- context._handleGeneratedElement(element, includedElements, elementType);
227
- }
228
- else {
229
- includedElements.push(element);
230
- }
231
- });
232
- return includedElements;
233
- };
234
- FilesMapping.prototype._handleGeneratedElement = function (element, elementsArr, elementType) {
235
- if (this.slIgnoreGenerated.accepts(element.srcData.relativeFilename)) {
236
- elementsArr.push(element);
237
- }
238
- else {
239
- if (elementType === METHOD_ELEMENT_TYPE) {
240
- globalMethodIndexer.setIgnoredMethod(element.idxInMapping);
241
- }
242
- this.log.info('Rejecting ' + elementType + ' from file: ' + element.srcData.relativeFilename);
243
- }
244
- };
245
- FilesMapping.prototype._getErroredFilesMessage = function () {
246
- return "The following files failed to be parsed and will not be sent to the server:\n" +
247
- this.erroredFiles.join('\n') +
248
- "\n\t(Hint: if the file use the es6 module syntax, pass the \"--es6Modules\" switch)";
249
- };
250
- FilesMapping.prototype._getCreateFileData = function (filename, absoluteFileName) {
251
- if (!this.fileDataByFileName[filename]) {
252
- var fileData = this._createNewFileData(filename, absoluteFileName);
253
- this.fileDataByFileName[filename] = fileData;
254
- this.finalFilesData.push(fileData);
255
- }
256
- return this.fileDataByFileName[filename];
257
- };
258
- FilesMapping.prototype._createNewFileData = function (filename, absoluteFileName) {
259
- var gitPath = this._resolvePhysicalPath(absoluteFileName) || filename;
260
- var newFile = {
261
- logicalPath: filename,
262
- physicalPath: gitPath,
263
- methods: [],
264
- lines: [],
265
- branches: []
266
- };
267
- if (this._shouldAddCommitsArray()) {
268
- newFile.commitIndexes = this.handlerParams.fileToCommitsMap[gitPath] || [];
269
- }
270
- else {
271
- this._logCommitsArrayNotFound();
272
- }
273
- return newFile;
274
- };
275
- FilesMapping.prototype._resolvePhysicalPath = function (absoluteFileName) {
276
- if (!this.handlerParams.scmRootDir) {
277
- this.logger.debug("scmRootDir not found");
278
- return;
279
- }
280
- absoluteFileName = utils.adjustPathSlashes(absoluteFileName);
281
- var scmRootDir = utils.adjustPathSlashes(this.handlerParams.scmRootDir);
282
- var physicalPath = absoluteFileName.replace(scmRootDir, "");
283
- if (physicalPath.indexOf("/") === 0) {
284
- physicalPath = physicalPath.substring(1);
285
- }
286
- return physicalPath;
287
- };
288
- FilesMapping.prototype._shouldAddCommitsArray = function () {
289
- return this.options && this.options.sendContributors && this.handlerParams.fileToCommitsMap;
290
- };
291
- FilesMapping.prototype._logCommitsArrayNotFound = function () {
292
- var fieldsMap = {
293
- opts: !this.options,
294
- sendContributors: this.options && !this.options.sendContributors,
295
- fileToCommitsMap: !this.handlerParams.fileToCommitsMap
296
- };
297
- var missing = utils.getMissingProperties(fieldsMap);
298
- this.log.error("Cannot add commits indexes, missing fields: " + missing);
299
- };
300
- FilesMapping.prototype._extractBranches = function (branch, method, file) {
301
- if (!branch) {
302
- return;
303
- }
304
- //TODO: Hack! Currently the branches which we collect are inside method.
305
- //When we'll support global branches, we should get the "original file name"
306
- //in the same time we create the branch data object.
307
- branch.originalFilename = method.originalFilename;
308
- file.branches.push(branch);
309
- };
310
- FilesMapping.prototype._createSlIgnore = function (filename) {
311
- var workspacePath = this.options.workspacepath;
312
- var lookInParentFolders = !!this.options.instrumentForBrowsers;
313
- var slIgnoreScanFilePath = fileAndFolderUtils.findFileRecursively(filename, workspacePath, lookInParentFolders, this.logger);
314
- var slIgnoreScan = new IgnoredFilesHandler(slIgnoreScanFilePath, this.options.outputpath, filename, this.log);
315
- this.submitIgnorePatternToCockpit(slIgnoreScan, filename);
316
- return slIgnoreScan;
317
- };
318
- FilesMapping.prototype._mapShortNamesToFiles = function () {
319
- this.shortNameToFileMapper = new ShortNameToFileMapper(this.logger);
320
- var context = this;
321
- this.finalFilesData.forEach(function (file) {
322
- context.shortNameToFileMapper.addFile(file.physicalPath);
323
- });
324
- };
325
- FilesMapping.prototype._convertUniqueIds = function () {
326
- var context = this;
327
- this.finalFilesData.forEach(function (file) {
328
- var converter = new UniqueIdConverter(file.logicalPath, context.logger);
329
- converter.setAndInitFile(file);
330
- converter.process();
331
- var map = converter.uniqueIdsMap;
332
- if (Array.isArray(file.methods)) {
333
- file.methods = context._updateUniqueIds(file.methods, map);
334
- }
335
- if (Array.isArray(file.branches)) {
336
- file.branches = context._updateUniqueIds(file.branches, map);
337
- }
338
- });
339
- };
340
- FilesMapping.prototype._mapElementsForSlMapping = function () {
341
- var context = this;
342
- this.finalFilesData.forEach(function (file) {
343
- file.methods.concat(file.branches).forEach(function (element) {
344
- if (context.slMapper) {
345
- context.slMapper.addUniqueId(element.uniqueIdKey, element.uniqueId);
346
- }
347
- delete element.uniqueIdKey;
348
- });
349
- });
350
- };
351
- FilesMapping.prototype._updateUniqueIds = function (arr, uniqueIdMap) {
352
- var newArr = [];
353
- for (var i = 0; i < arr.length; i++) {
354
- var current = arr[i];
355
- var oldUniqueId = current.uniqueId;
356
- if (uniqueIdMap[oldUniqueId]) {
357
- current.uniqueId = uniqueIdMap[oldUniqueId];
358
- newArr.push(current);
359
- }
360
- }
361
- return newArr;
362
- };
363
- FilesMapping.prototype._getJavaScriptFromMarkupFile = function (fullname, fileContent) {
364
- var handler = new MarkupFilesParser(fileContent, fullname, this.logger);
365
- handler.extractScriptTags();
366
- var scriptTags = handler.scriptTags;
367
- if (!scriptTags || scriptTags.length === 0) {
368
- this.logger.info("No script tags found in '%s'", fullname);
369
- return { hasError: true };
370
- }
371
- var jsCodeInFile = handler.getAllJsInFile();
372
- return jsCodeInFile;
373
- };
374
- FilesMapping.prototype._isMarkupFile = function (filename) {
375
- var dvr = new DefaultValuesResolver();
376
- var fileExtensions = dvr.getFileExtensions();
377
- var extension = path.extname(filename);
378
- var result = (utils.isArrayContainsMarkupFile(fileExtensions) && utils.isMarkupFile(extension));
379
- return result;
380
- };
381
- FilesMapping.prototype._resolveProjectRoot = function () {
382
- var projectRoot;
383
- if (this.options.projectRoot) {
384
- projectRoot = this.options.projectRoot;
385
- this.logger.info("Project root set to '%s' from 'sourceRoot'", projectRoot);
386
- }
387
- else if (this.handlerParams.scmRootDir) {
388
- projectRoot = this.handlerParams.scmRootDir;
389
- this.logger.info("Project root set to '%s' same as git root", projectRoot);
390
- }
391
- else {
392
- projectRoot = process.cwd();
393
- this.logger.info("Project root set to '%s' same as CWD", projectRoot);
394
- }
395
- return utils.adjustPathSlashes(projectRoot);
396
- };
397
- //This method was added for testing.
398
- FilesMapping.prototype._createActualFile = function (filename, fullFilename) {
399
- return new ActualFile(filename, fullFilename, this.logger);
400
- };
401
- FilesMapping.prototype.enrichBuildData = function () {
402
- var context = this;
403
- var fileToSignatureMap = this.createSourcePathToSignatureMap();
404
- this.fileSignatures.forEach(function (signature) {
405
- if (signature instanceof GeneratedFileSignature) {
406
- var relevantSourceSignatures = context.extractSourceSignatures(fileToSignatureMap, signature);
407
- context.enrichSingleFile(signature, relevantSourceSignatures);
408
- }
409
- });
410
- };
411
- FilesMapping.prototype.enrichSingleFile = function (generatedSignature, sourceSignaturesArr) {
412
- try {
413
- var sourceDataEnricher = new SourceDataEnricher(generatedSignature, sourceSignaturesArr, this.logger);
414
- sourceDataEnricher.enrichData();
415
- }
416
- catch (e) {
417
- this.logger.info("Error while enriching build data for '%s'. Error: '%s'", generatedSignature.absoluteFilename, e);
418
- globalErrorHandler.setLastError(e);
419
- }
420
- };
421
- FilesMapping.prototype.createSourcePathToSignatureMap = function () {
422
- var context = this;
423
- var pathToSignatureMap = {};
424
- var sourceFilesPath = [];
425
- this.fileSignatures.forEach(function (sig) {
426
- if (sig instanceof GeneratedFileSignature) {
427
- sourceFilesPath = sourceFilesPath.concat(sig.getSourceFilesPath());
428
- }
429
- });
430
- sourceFilesPath = sourceFilesPath.filter(utils.distinctArray);
431
- sourceFilesPath = sourceFilesPath.filter(fs.existsSync);
432
- sourceFilesPath.forEach(function (filePath) {
433
- if (context.shouldParse(filePath)) {
434
- var sourceSig = context._generateFileSignature(filePath);
435
- if (!sourceSig.hasError) {
436
- pathToSignatureMap[filePath] = sourceSig;
437
- }
438
- }
439
- else {
440
- //TODO: Report do OBD
441
- }
442
- });
443
- return pathToSignatureMap;
444
- };
445
- FilesMapping.prototype.extractSourceSignatures = function (sourceSignatures, generatedSignature) {
446
- var context = this;
447
- var sourcesPath = generatedSignature.getSourceFilesPath();
448
- var relevantSignatures = [];
449
- sourcesPath.forEach(function (sourcePath) {
450
- if (sourceSignatures[sourcePath]) {
451
- relevantSignatures.push(sourceSignatures[sourcePath]);
452
- }
453
- else {
454
- context.logger.info("Could not find source signature for '%s'", sourcePath);
455
- }
456
- });
457
- return relevantSignatures;
458
- };
459
- FilesMapping.prototype.shouldParse = function (absolutePath) {
460
- var tsFilesPattern = "**/*.ts";
461
- var includedPatterns = this.options.includedFiles.concat([tsFilesPattern]);
462
- return micromatch.isMatch(absolutePath, includedPatterns);
463
- };
464
- FilesMapping.prototype.submitIgnorePatternToCockpit = function (ignoredFilesHandler, filename) {
465
- var formattedPattern = ignoredFilesHandler.getFormattedPattern();
466
- if (!formattedPattern) {
467
- return;
468
- }
469
- var ignoreFile = ignoredFilesHandler.isUsingNycConfig ? "NYC configuration" : filename;
470
- var message = "Using the following ignore pattern from " + ignoreFile + ": " + ignoredFilesHandler.getFormattedPattern();
471
- CockpitNotifier.sendGenericMessage(message);
472
- };
473
- module.exports = FilesMapping;
1
+ var fileAndFolderUtils = require('../file-and-folder-utils');
2
+ var IgnoredFilesHandler = require("../../common/ignored-files-handler").IgnoredFilesHandler;
3
+ var ShortNameToFileMapper = require("../../common/short-name-to-file-mapper").ShortNameToFileMapper;
4
+ var UniqueIdConverter = require("../../common/coverage-elements/unique-id-converter").UniqueIdConverter;
5
+ var CockpitNotifier = require("../../common/agent-events/cockpit-notifier").CockpitNotifier;
6
+ var SlEnvVars = require("../../common/constants/sl-env-vars").SlEnvVars;
7
+ var glob = require("glob");
8
+ var path = require('path');
9
+ var fs = require('fs');
10
+ var ActualFile = require('../file-system/actual-file');
11
+ var utils = require('../utils');
12
+ var FileSignature = require('./file-signature.js');
13
+ var GeneratedFileSignature = require('./generated-file-signature');
14
+ var micromatch = require('micromatch');
15
+ var MarkupFilesParser = require('../markup-files-parser');
16
+ var DefaultValuesResolver = require('../default-values-resolver');
17
+ var EntitiesMapper = require("../entities-mapper");
18
+ var SourceDataEnricher = require("./source-data-enricher");
19
+ var globalErrorHandler = require('../global-error-handler');
20
+ var globalMethodIndexer = require("./globalMethodIndexer");
21
+ var SourceFilesNotifier = require("./source-files-notifier");
22
+ var BRANCHES_KEY = "branches";
23
+ var BRANCH_ELEMENT_TYPE = "branch";
24
+ var METHODS_KEY = "methods";
25
+ var METHOD_ELEMENT_TYPE = "method";
26
+ var METHOD_INDEX_FOR_GLOBAL_BRANCHES = -1;
27
+ // TODO: refactor this class and difine the exec responsibility.
28
+ function FilesMapping(handlerParams, logger) {
29
+ this.handlerParams = handlerParams || {};
30
+ this.options = this.handlerParams.buildArguments;
31
+ this.finalOutput = this.handlerParams.finalOutput;
32
+ this.matchedFiles = [];
33
+ this.fileDataByFileName = {};
34
+ this.fileSignatures = [];
35
+ this.handlerParams.processedFiles = [];
36
+ this.erroredFiles = []; //Relative names
37
+ this.finalFilesData = [];
38
+ this.logger = logger;
39
+ this.log = this._createLogger(logger, "FilesMapping");
40
+ this.slIgnoreScan = this._createSlIgnore(IgnoredFilesHandler.SCAN_IGNORE_FILE_NAME);
41
+ this.slIgnoreGenerated = this._createSlIgnore(IgnoredFilesHandler.GENERATED_IGNORE_FILE_NAME);
42
+ this.projectRoot = this._resolveProjectRoot();
43
+ this.shortNameToFileMapper = null;
44
+ this.signaturesParsingErrors = [];
45
+ this.sourceFilesNotifier = new SourceFilesNotifier(logger);
46
+ this.counters = {
47
+ methods: 0,
48
+ branches: 0
49
+ };
50
+ }
51
+ FilesMapping.prototype.process = function () {
52
+ var context = this;
53
+ var promise = new Promise(function (resolve) {
54
+ context.log.info("Starting to scan the workspace.");
55
+ context._scanWorkspaceForIncludedFilesAndPopulateFilesArray();
56
+ context.matchedFiles.forEach(function (matchedFile, fileIdx) {
57
+ var isLastFile = (fileIdx == context.matchedFiles.length - 1);
58
+ context._fillFilesData(matchedFile, fileIdx, isLastFile);
59
+ });
60
+ context.fileDataByFileName = {};
61
+ context.enrichBuildData();
62
+ context.fileSignatures.forEach(function (fileSignature) {
63
+ context._mapToServerEntities(fileSignature.createDTO());
64
+ });
65
+ if (context.fileSignatures.length > 0) {
66
+ context.log.info("Processed the following files:");
67
+ context.fileSignatures.forEach(function (file, idx) {
68
+ context.log.info("\t[" + idx + "] Filename: '" + file.relativePath + "'");
69
+ });
70
+ }
71
+ var isSuccess = true;
72
+ if (context.erroredFiles.length) {
73
+ var message = context._getErroredFilesMessage();
74
+ context.log.warn(message);
75
+ isSuccess = false;
76
+ }
77
+ if (SlEnvVars.isUseNewUniqueId()) {
78
+ context._convertUniqueIds();
79
+ }
80
+ context.finalOutput.files = context.finalFilesData;
81
+ context.finalOutput.counters = context.counters;
82
+ CockpitNotifier.sendErrorsBatch(context.signaturesParsingErrors);
83
+ return resolve(isSuccess);
84
+ });
85
+ return promise;
86
+ };
87
+ FilesMapping.prototype._mapToServerEntities = function (fileSignature) {
88
+ var context = this;
89
+ fileSignature.methods.forEach(function (m) {
90
+ var methodFile = context._getCreateFileData(m.srcData.relativeFilename, m.srcData.absoluteFilename);
91
+ var serverMethod = EntitiesMapper.toServerMethod(m);
92
+ serverMethod.uniqueIdKey = m.uniqueIdKey;
93
+ methodFile.methods.push(serverMethod);
94
+ context.counters.methods++;
95
+ });
96
+ fileSignature.branches.forEach(function (b) {
97
+ // If containing method is ignored (auto generated code) set it to global branch.
98
+ if (globalMethodIndexer.isMethodIgnored(b.enclosingMethodIdx)) {
99
+ b.enclosingMethodIdx = METHOD_INDEX_FOR_GLOBAL_BRANCHES;
100
+ }
101
+ var branchesFile = context._getCreateFileData(b.srcData.relativeFilename, b.srcData.absoluteFilename);
102
+ var serverBranch = EntitiesMapper.toServerBranch(b);
103
+ serverBranch.uniqueIdKey = b.uniqueIdKey;
104
+ branchesFile.branches.push(serverBranch);
105
+ context.counters.branches++;
106
+ });
107
+ };
108
+ /* TODO: Split this method into two. For more info: "https://github.com/Sealights/SL.OnPremise.CIA/pull/169" */
109
+ FilesMapping.prototype._scanWorkspaceForIncludedFilesAndPopulateFilesArray = function () {
110
+ var context = this;
111
+ context.options.includedFiles.forEach(function (inclusionPattern) {
112
+ var matchedFiles = glob.sync(inclusionPattern, {
113
+ cwd: context.options.workspacepath,
114
+ ignore: context.options.excludedFiles
115
+ });
116
+ matchedFiles.forEach(function (matchedFile) {
117
+ if (!context.fileDataByFileName[matchedFile]) {
118
+ context.fileDataByFileName[matchedFile] = true;
119
+ context.matchedFiles.push(matchedFile);
120
+ }
121
+ });
122
+ });
123
+ };
124
+ FilesMapping.prototype._fillFilesData = function (matchedFile, fileIdx, isLastFile) {
125
+ var absolutePath = path.resolve(this.options.workspacepath, matchedFile);
126
+ absolutePath = utils.adjustPathSlashes(absolutePath);
127
+ var shouldSkipCurrFile = this._shouldSkipFile(absolutePath, matchedFile, fileIdx);
128
+ if (shouldSkipCurrFile)
129
+ return;
130
+ this.handlerParams.processedFiles.push(matchedFile);
131
+ this.log.info('Processing [' + (fileIdx + 1) + '/' + this.matchedFiles.length + '] ' + absolutePath);
132
+ var fileSig = this._generateFileSignature(absolutePath);
133
+ if (!fileSig.hasError) {
134
+ fileSig.methods = this._getIncludedMethods(fileSig);
135
+ fileSig.branches = this._getIncludedBranches(fileSig);
136
+ fileSig.absolutePath = absolutePath;
137
+ this.fileSignatures.push(fileSig);
138
+ }
139
+ else {
140
+ this.erroredFiles.push(matchedFile);
141
+ }
142
+ };
143
+ FilesMapping.prototype._shouldSkipFile = function (fullFilename, relativeFileName, fileIdx) {
144
+ var filePath = fs.statSync(fullFilename);
145
+ if (!filePath.isFile()) {
146
+ this.log.info(relativeFileName + " is not a file.");
147
+ return true;
148
+ }
149
+ // If the file is filtered by the .slignore file:
150
+ if (this.slIgnoreScan.denies(relativeFileName)) {
151
+ this.log.info('Excluded [' + (fileIdx + 1) + '/' + this.matchedFiles.length + '] ' + fullFilename);
152
+ // Ignored by .slignore, skip it.
153
+ return true;
154
+ }
155
+ return false;
156
+ };
157
+ FilesMapping.prototype.createFileSignature = function (absolutePath, relativePath, fileContent, sourceMaps, opts, scmFilesContainer) {
158
+ var result = FileSignature.create(absolutePath, relativePath, fileContent, sourceMaps, opts, scmFilesContainer, this.logger);
159
+ return result;
160
+ };
161
+ FilesMapping.prototype._generateFileSignature = function (absolutePath) {
162
+ var relativePath = absolutePath.replace(this.projectRoot, "");
163
+ if (relativePath.indexOf("/") === 0) {
164
+ relativePath = relativePath.substring(1);
165
+ }
166
+ var isBranchCoverage = this.handlerParams.cfg.useBranchCoverage || this.options.usebranchcoverage;
167
+ var fileObject = this._createActualFile(relativePath, absolutePath);
168
+ var fileContent = fileObject.getContent();
169
+ var sourceMaps = fileObject.readSourceMaps(this.logger);
170
+ if (this._isMarkupFile(relativePath)) {
171
+ fileContent = this._getJavaScriptFromMarkupFile(absolutePath, fileContent);
172
+ }
173
+ var babylonPlugins = ["classProperties"];
174
+ if (this.options.babylonPlugins) {
175
+ babylonPlugins = babylonPlugins.concat(this.options.babylonPlugins);
176
+ }
177
+ var opts = {
178
+ es6Modules: true,
179
+ babylonPlugins: babylonPlugins,
180
+ projectRoot: this.options.projectRoot,
181
+ scmRootDir: this.handlerParams.scmRootDir,
182
+ isBranchCoverage: this.handlerParams.cfg.useBranchCoverage || this.options.usebranchcoverage
183
+ };
184
+ var extension = path.extname(absolutePath);
185
+ if (extension === ".ts" || extension === ".tsx") {
186
+ opts.babylonPlugins.push("typescript");
187
+ }
188
+ try {
189
+ var fileSignature = this.createFileSignature(absolutePath, relativePath, fileContent, sourceMaps, opts, this.handlerParams.scmFilesContainer);
190
+ return fileSignature;
191
+ }
192
+ catch (e) {
193
+ var message = "Failed to create signature for '" + absolutePath + "'. Error '" + e.message + "'";
194
+ this.logger.error(message);
195
+ this.signaturesParsingErrors.push(message);
196
+ this.logger.debug(e.stack);
197
+ return {
198
+ hasError: true
199
+ };
200
+ }
201
+ };
202
+ FilesMapping.prototype._createLogger = function (logger, className) {
203
+ return logger.child({
204
+ className: className
205
+ });
206
+ };
207
+ FilesMapping.prototype._getIncludedMethods = function (fileSig) {
208
+ if (!fileSig.methods)
209
+ return [];
210
+ return this._getIncludeElements(fileSig, METHODS_KEY, METHOD_ELEMENT_TYPE);
211
+ ;
212
+ };
213
+ FilesMapping.prototype._getIncludedBranches = function (fileSig) {
214
+ if (!fileSig.branches)
215
+ return [];
216
+ return this._getIncludeElements(fileSig, BRANCHES_KEY, BRANCH_ELEMENT_TYPE);
217
+ };
218
+ FilesMapping.prototype._getIncludeElements = function (fileSig, key, elementType) {
219
+ var includedElements = [];
220
+ var context = this;
221
+ fileSig[key].forEach(function (element) {
222
+ if (fileSig.hasSourceMaps) {
223
+ context._handleGeneratedElement(element, includedElements, elementType);
224
+ }
225
+ else {
226
+ includedElements.push(element);
227
+ }
228
+ });
229
+ return includedElements;
230
+ };
231
+ FilesMapping.prototype._handleGeneratedElement = function (element, elementsArr, elementType) {
232
+ if (this.slIgnoreGenerated.accepts(element.srcData.relativeFilename)) {
233
+ elementsArr.push(element);
234
+ }
235
+ else {
236
+ if (elementType === METHOD_ELEMENT_TYPE) {
237
+ globalMethodIndexer.setIgnoredMethod(element.idxInMapping);
238
+ }
239
+ this.log.info('Rejecting ' + elementType + ' from file: ' + element.srcData.relativeFilename);
240
+ }
241
+ };
242
+ FilesMapping.prototype._getErroredFilesMessage = function () {
243
+ return "The following files failed to be parsed and will not be sent to the server:\n" +
244
+ this.erroredFiles.join('\n') +
245
+ "\n\t(Hint: if the file use the es6 module syntax, pass the \"--es6Modules\" switch)";
246
+ };
247
+ FilesMapping.prototype._getCreateFileData = function (filename, absoluteFileName) {
248
+ if (!this.fileDataByFileName[filename]) {
249
+ var fileData = this._createNewFileData(filename, absoluteFileName);
250
+ this.fileDataByFileName[filename] = fileData;
251
+ this.finalFilesData.push(fileData);
252
+ }
253
+ return this.fileDataByFileName[filename];
254
+ };
255
+ FilesMapping.prototype._createNewFileData = function (filename, absoluteFileName) {
256
+ var gitPath = this._resolvePhysicalPath(absoluteFileName) || filename;
257
+ var newFile = {
258
+ logicalPath: filename,
259
+ physicalPath: gitPath,
260
+ methods: [],
261
+ lines: [],
262
+ branches: [],
263
+ absolutePath: absoluteFileName
264
+ };
265
+ if (this._shouldAddCommitsArray()) {
266
+ newFile.commitIndexes = this.handlerParams.fileToCommitsMap[gitPath] || [];
267
+ }
268
+ else {
269
+ this._logCommitsArrayNotFound();
270
+ }
271
+ return newFile;
272
+ };
273
+ FilesMapping.prototype._resolvePhysicalPath = function (absoluteFileName) {
274
+ if (!this.handlerParams.scmRootDir) {
275
+ this.logger.debug("scmRootDir not found");
276
+ return;
277
+ }
278
+ absoluteFileName = utils.adjustPathSlashes(absoluteFileName);
279
+ var scmRootDir = utils.adjustPathSlashes(this.handlerParams.scmRootDir);
280
+ var physicalPath = absoluteFileName.replace(scmRootDir, "");
281
+ if (physicalPath.indexOf("/") === 0) {
282
+ physicalPath = physicalPath.substring(1);
283
+ }
284
+ return physicalPath;
285
+ };
286
+ FilesMapping.prototype._shouldAddCommitsArray = function () {
287
+ return this.options && this.options.sendContributors && this.handlerParams.fileToCommitsMap;
288
+ };
289
+ FilesMapping.prototype._logCommitsArrayNotFound = function () {
290
+ var fieldsMap = {
291
+ opts: !this.options,
292
+ sendContributors: this.options && !this.options.sendContributors,
293
+ fileToCommitsMap: !this.handlerParams.fileToCommitsMap
294
+ };
295
+ var missing = utils.getMissingProperties(fieldsMap);
296
+ this.log.error("Cannot add commits indexes, missing fields: " + missing);
297
+ };
298
+ FilesMapping.prototype._extractBranches = function (branch, method, file) {
299
+ if (!branch) {
300
+ return;
301
+ }
302
+ //TODO: Hack! Currently the branches which we collect are inside method.
303
+ //When we'll support global branches, we should get the "original file name"
304
+ //in the same time we create the branch data object.
305
+ branch.originalFilename = method.originalFilename;
306
+ file.branches.push(branch);
307
+ };
308
+ FilesMapping.prototype._createSlIgnore = function (filename) {
309
+ var workspacePath = this.options.workspacepath;
310
+ var lookInParentFolders = !!this.options.instrumentForBrowsers;
311
+ var slIgnoreScanFilePath = fileAndFolderUtils.findFileRecursively(filename, workspacePath, lookInParentFolders, this.logger);
312
+ var slIgnoreScan = new IgnoredFilesHandler(slIgnoreScanFilePath, this.options.outputpath, filename, this.log);
313
+ this.submitIgnorePatternToCockpit(slIgnoreScan, filename);
314
+ return slIgnoreScan;
315
+ };
316
+ FilesMapping.prototype._mapShortNamesToFiles = function () {
317
+ this.shortNameToFileMapper = new ShortNameToFileMapper(this.logger);
318
+ var context = this;
319
+ this.finalFilesData.forEach(function (file) {
320
+ context.shortNameToFileMapper.addFile(file.physicalPath);
321
+ });
322
+ };
323
+ FilesMapping.prototype._convertUniqueIds = function () {
324
+ var context = this;
325
+ this.finalFilesData.forEach(function (file) {
326
+ var converter = new UniqueIdConverter(file.logicalPath, context.logger);
327
+ converter.setAndInitFile(file);
328
+ converter.process();
329
+ var map = converter.uniqueIdsMap;
330
+ if (Array.isArray(file.methods)) {
331
+ file.methods = context._updateUniqueIds(file.methods, map);
332
+ }
333
+ if (Array.isArray(file.branches)) {
334
+ file.branches = context._updateUniqueIds(file.branches, map);
335
+ }
336
+ });
337
+ };
338
+ FilesMapping.prototype._updateUniqueIds = function (arr, uniqueIdMap) {
339
+ var newArr = [];
340
+ for (var i = 0; i < arr.length; i++) {
341
+ var current = arr[i];
342
+ var oldUniqueId = current.uniqueId;
343
+ if (uniqueIdMap[oldUniqueId]) {
344
+ current.uniqueId = uniqueIdMap[oldUniqueId];
345
+ newArr.push(current);
346
+ }
347
+ }
348
+ return newArr;
349
+ };
350
+ FilesMapping.prototype._getJavaScriptFromMarkupFile = function (fullname, fileContent) {
351
+ var handler = new MarkupFilesParser(fileContent, fullname, this.logger);
352
+ handler.extractScriptTags();
353
+ var scriptTags = handler.scriptTags;
354
+ if (!scriptTags || scriptTags.length === 0) {
355
+ this.logger.info("No script tags found in '%s'", fullname);
356
+ return { hasError: true };
357
+ }
358
+ var jsCodeInFile = handler.getAllJsInFile();
359
+ return jsCodeInFile;
360
+ };
361
+ FilesMapping.prototype._isMarkupFile = function (filename) {
362
+ var dvr = new DefaultValuesResolver();
363
+ var fileExtensions = dvr.getFileExtensions();
364
+ var extension = path.extname(filename);
365
+ var result = (utils.isArrayContainsMarkupFile(fileExtensions) && utils.isMarkupFile(extension));
366
+ return result;
367
+ };
368
+ FilesMapping.prototype._resolveProjectRoot = function () {
369
+ var projectRoot;
370
+ if (this.options.projectRoot) {
371
+ projectRoot = this.options.projectRoot;
372
+ this.logger.info("Project root set to '%s' from 'sourceRoot'", projectRoot);
373
+ }
374
+ else if (this.handlerParams.scmRootDir) {
375
+ projectRoot = this.handlerParams.scmRootDir;
376
+ this.logger.info("Project root set to '%s' same as git root", projectRoot);
377
+ }
378
+ else {
379
+ projectRoot = process.cwd();
380
+ this.logger.info("Project root set to '%s' same as CWD", projectRoot);
381
+ }
382
+ return utils.adjustPathSlashes(projectRoot);
383
+ };
384
+ //This method was added for testing.
385
+ FilesMapping.prototype._createActualFile = function (filename, fullFilename) {
386
+ return new ActualFile(filename, fullFilename, this.logger);
387
+ };
388
+ FilesMapping.prototype.enrichBuildData = function () {
389
+ var context = this;
390
+ var fileToSignatureMap = this.createSourcePathToSignatureMap();
391
+ this.fileSignatures.forEach(function (signature) {
392
+ if (signature instanceof GeneratedFileSignature) {
393
+ var relevantSourceSignatures = context.extractSourceSignatures(fileToSignatureMap, signature);
394
+ context.enrichSingleFile(signature, relevantSourceSignatures);
395
+ }
396
+ });
397
+ };
398
+ FilesMapping.prototype.enrichSingleFile = function (generatedSignature, sourceSignaturesArr) {
399
+ try {
400
+ var sourceDataEnricher = new SourceDataEnricher(generatedSignature, sourceSignaturesArr, this.logger);
401
+ sourceDataEnricher.enrichData();
402
+ }
403
+ catch (e) {
404
+ this.logger.info("Error while enriching build data for '%s'. Error: '%s'", generatedSignature.absoluteFilename, e);
405
+ globalErrorHandler.setLastError(e);
406
+ }
407
+ };
408
+ FilesMapping.prototype.createSourcePathToSignatureMap = function () {
409
+ var context = this;
410
+ var pathToSignatureMap = {};
411
+ var sourceFilesPath = [];
412
+ this.fileSignatures.forEach(function (sig) {
413
+ if (sig instanceof GeneratedFileSignature) {
414
+ sourceFilesPath = sourceFilesPath.concat(sig.getSourceFilesPath());
415
+ }
416
+ });
417
+ sourceFilesPath = sourceFilesPath.filter(utils.distinctArray);
418
+ sourceFilesPath = sourceFilesPath.filter(fs.existsSync);
419
+ sourceFilesPath.forEach(function (filePath) {
420
+ if (context.shouldParse(filePath)) {
421
+ var sourceSig = context._generateFileSignature(filePath);
422
+ if (!sourceSig.hasError) {
423
+ pathToSignatureMap[filePath] = sourceSig;
424
+ }
425
+ }
426
+ else {
427
+ //TODO: Report do OBD
428
+ }
429
+ });
430
+ return pathToSignatureMap;
431
+ };
432
+ FilesMapping.prototype.extractSourceSignatures = function (sourceSignatures, generatedSignature) {
433
+ var context = this;
434
+ var sourcesPath = generatedSignature.getSourceFilesPath();
435
+ var relevantSignatures = [];
436
+ sourcesPath.forEach(function (sourcePath) {
437
+ if (sourceSignatures[sourcePath]) {
438
+ relevantSignatures.push(sourceSignatures[sourcePath]);
439
+ }
440
+ else {
441
+ context.logger.info("Could not find source signature for '%s'", sourcePath);
442
+ }
443
+ });
444
+ return relevantSignatures;
445
+ };
446
+ FilesMapping.prototype.shouldParse = function (absolutePath) {
447
+ var tsFilesPattern = "**/*.ts";
448
+ var includedPatterns = this.options.includedFiles.concat([tsFilesPattern]);
449
+ return micromatch.isMatch(absolutePath, includedPatterns);
450
+ };
451
+ FilesMapping.prototype.submitIgnorePatternToCockpit = function (ignoredFilesHandler, filename) {
452
+ var formattedPattern = ignoredFilesHandler.getFormattedPattern();
453
+ if (!formattedPattern) {
454
+ return;
455
+ }
456
+ var ignoreFile = ignoredFilesHandler.isUsingNycConfig ? "NYC configuration" : filename;
457
+ var message = "Using the following ignore pattern from " + ignoreFile + ": " + ignoredFilesHandler.getFormattedPattern();
458
+ CockpitNotifier.sendGenericMessage(message);
459
+ };
460
+ module.exports = FilesMapping;
474
461
  //# sourceMappingURL=files-mapping.js.map