slnodejs 6.1.2 → 6.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/browser-agent/dist/browser-agent-all.js +101189 -0
  2. package/browser-agent/dist/browser-agent-all.min.js +57 -0
  3. package/browser-agent/package.json +44 -0
  4. package/lib/cli.js +1 -1
  5. package/package.json +125 -124
  6. package/tsOutputs/api.d.ts +10 -12
  7. package/tsOutputs/api.js +115 -116
  8. package/tsOutputs/build-scanner/ast-utils.js +38 -38
  9. package/tsOutputs/build-scanner/ast-utils.js.map +1 -1
  10. package/tsOutputs/build-scanner/build-diff-process.js +352 -352
  11. package/tsOutputs/build-scanner/cia.js +95 -95
  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 -66
  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 +187 -185
  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/create-node-key.js +7 -7
  33. package/tsOutputs/build-scanner/js_diff/dry-run-files-mapping.js +23 -23
  34. package/tsOutputs/build-scanner/js_diff/file-signature.js +234 -234
  35. package/tsOutputs/build-scanner/js_diff/files-mapping.js +456 -460
  36. package/tsOutputs/build-scanner/js_diff/files-mapping.js.map +1 -1
  37. package/tsOutputs/build-scanner/js_diff/generated-file-signature.js +143 -143
  38. package/tsOutputs/build-scanner/js_diff/globalMethodIndexer.js +26 -26
  39. package/tsOutputs/build-scanner/js_diff/guess-method-location.js +100 -100
  40. package/tsOutputs/build-scanner/js_diff/guess-method-name.js +54 -54
  41. package/tsOutputs/build-scanner/js_diff/method-signature.js +142 -142
  42. package/tsOutputs/build-scanner/js_diff/sl-mapper.js +136 -136
  43. package/tsOutputs/build-scanner/js_diff/source-data-enricher.js +89 -89
  44. package/tsOutputs/build-scanner/js_diff/source-files-notifier.js +31 -31
  45. package/tsOutputs/build-scanner/js_diff/source-position-mapper.js +29 -29
  46. package/tsOutputs/build-scanner/mappings/ensure-files-handler.service.js +213 -213
  47. package/tsOutputs/build-scanner/mappings/ensure-files-handler.service.js.map +1 -1
  48. package/tsOutputs/build-scanner/mappings/file-element-utils.js +46 -46
  49. package/tsOutputs/build-scanner/mappings/file-element-utils.js.map +1 -1
  50. package/tsOutputs/build-scanner/mappings/file-enricher.js +209 -204
  51. package/tsOutputs/build-scanner/mappings/file-enricher.js.map +1 -1
  52. package/tsOutputs/build-scanner/mappings/files-data-container.js +51 -51
  53. package/tsOutputs/build-scanner/mappings/files-data-container.js.map +1 -1
  54. package/tsOutputs/build-scanner/mappings/scm-file-fixer.js +79 -77
  55. package/tsOutputs/build-scanner/mappings/scm-file-fixer.js.map +1 -1
  56. package/tsOutputs/build-scanner/markup-files-parser.js +71 -71
  57. package/tsOutputs/build-scanner/nopt-types.js +19 -19
  58. package/tsOutputs/build-scanner/nopt-usage-2.js +56 -56
  59. package/tsOutputs/build-scanner/polyfills.js +6 -6
  60. package/tsOutputs/build-scanner/scm/parse-log.js +5 -5
  61. package/tsOutputs/build-scanner/scm/scm-files-container.js +49 -49
  62. package/tsOutputs/build-scanner/sl-config-cia-cli.js +175 -175
  63. package/tsOutputs/build-scanner/utils.js +91 -91
  64. package/tsOutputs/cli-parse/agent-instance-data.d.ts +2 -2
  65. package/tsOutputs/cli-parse/agent-instance-data.js +6 -6
  66. package/tsOutputs/cli-parse/child-process-wrapper.js +82 -82
  67. package/tsOutputs/cli-parse/child-process-wrapper.js.map +1 -1
  68. package/tsOutputs/cli-parse/cli.js +509 -509
  69. package/tsOutputs/cli-parse/constants/constants.js +56 -55
  70. package/tsOutputs/cli-parse/constants/constants.js.map +1 -1
  71. package/tsOutputs/cli-parse/constants/third-parties.js +10 -10
  72. package/tsOutputs/cli-parse/contracts.js +2 -2
  73. package/tsOutputs/cli-parse/custom-commander.js +44 -44
  74. package/tsOutputs/cli-parse/executors/base-executor.js +254 -263
  75. package/tsOutputs/cli-parse/executors/base-executor.js.map +1 -1
  76. package/tsOutputs/cli-parse/executors/build-args-dto.js +55 -55
  77. package/tsOutputs/cli-parse/executors/build-end-executor.js +117 -115
  78. package/tsOutputs/cli-parse/executors/build-end-executor.js.map +1 -1
  79. package/tsOutputs/cli-parse/executors/build-executor.js +149 -147
  80. package/tsOutputs/cli-parse/executors/build-executor.js.map +1 -1
  81. package/tsOutputs/cli-parse/executors/config-executor.js +114 -112
  82. package/tsOutputs/cli-parse/executors/config-executor.js.map +1 -1
  83. package/tsOutputs/cli-parse/executors/dry-run/base-data.js +55 -55
  84. package/tsOutputs/cli-parse/executors/dry-run/base-data.js.map +1 -1
  85. package/tsOutputs/cli-parse/executors/dry-run/build-mapping-data.js +230 -228
  86. package/tsOutputs/cli-parse/executors/dry-run/build-mapping-data.js.map +1 -1
  87. package/tsOutputs/cli-parse/executors/dry-run/dry-run-executor.js +279 -277
  88. package/tsOutputs/cli-parse/executors/dry-run/dry-run-executor.js.map +1 -1
  89. package/tsOutputs/cli-parse/executors/dry-run/dry-run-validation.js +122 -120
  90. package/tsOutputs/cli-parse/executors/dry-run/dry-run-validation.js.map +1 -1
  91. package/tsOutputs/cli-parse/executors/dry-run/footprints-data.js +132 -130
  92. package/tsOutputs/cli-parse/executors/dry-run/footprints-data.js.map +1 -1
  93. package/tsOutputs/cli-parse/executors/dry-run/helper-methods.js +104 -104
  94. package/tsOutputs/cli-parse/executors/dry-run/helper-methods.js.map +1 -1
  95. package/tsOutputs/cli-parse/executors/end-execution-executor.js +90 -88
  96. package/tsOutputs/cli-parse/executors/end-execution-executor.js.map +1 -1
  97. package/tsOutputs/cli-parse/executors/integration-build-components-executor.js +134 -132
  98. package/tsOutputs/cli-parse/executors/integration-build-components-executor.js.map +1 -1
  99. package/tsOutputs/cli-parse/executors/integration-build-delete-components-executor.js +75 -73
  100. package/tsOutputs/cli-parse/executors/integration-build-delete-components-executor.js.map +1 -1
  101. package/tsOutputs/cli-parse/executors/integration-build-update-components-executor.js +73 -71
  102. package/tsOutputs/cli-parse/executors/integration-build-update-components-executor.js.map +1 -1
  103. package/tsOutputs/cli-parse/executors/mocha-executor.js +124 -122
  104. package/tsOutputs/cli-parse/executors/mocha-executor.js.map +1 -1
  105. package/tsOutputs/cli-parse/executors/nyc-report-executor.js +106 -104
  106. package/tsOutputs/cli-parse/executors/nyc-report-executor.js.map +1 -1
  107. package/tsOutputs/cli-parse/executors/pr-config-executor.js +85 -83
  108. package/tsOutputs/cli-parse/executors/pr-config-executor.js.map +1 -1
  109. package/tsOutputs/cli-parse/executors/run-executor.js +95 -93
  110. package/tsOutputs/cli-parse/executors/run-executor.js.map +1 -1
  111. package/tsOutputs/cli-parse/executors/start-execution-executor.js +93 -91
  112. package/tsOutputs/cli-parse/executors/start-execution-executor.js.map +1 -1
  113. package/tsOutputs/cli-parse/executors/test-executions-executor.js +77 -75
  114. package/tsOutputs/cli-parse/executors/test-executions-executor.js.map +1 -1
  115. package/tsOutputs/cli-parse/executors/test-listener-executor.js +151 -149
  116. package/tsOutputs/cli-parse/executors/test-listener-executor.js.map +1 -1
  117. package/tsOutputs/cli-parse/executors/test-runner-build-session-data-builder.js +77 -75
  118. package/tsOutputs/cli-parse/executors/test-runner-build-session-data-builder.js.map +1 -1
  119. package/tsOutputs/cli-parse/executors/upload-report-executor.js +118 -116
  120. package/tsOutputs/cli-parse/executors/upload-report-executor.js.map +1 -1
  121. package/tsOutputs/cli-parse/utils.js +32 -32
  122. package/tsOutputs/cli-parse/utils.js.map +1 -1
  123. package/tsOutputs/common/agent-events/agent-events-conracts.d.ts +123 -123
  124. package/tsOutputs/common/agent-events/agent-events-conracts.js +56 -56
  125. package/tsOutputs/common/agent-events/agent-events-controller.d.ts +45 -45
  126. package/tsOutputs/common/agent-events/agent-events-controller.js +301 -301
  127. package/tsOutputs/common/agent-events/agent-events-controller.js.map +1 -1
  128. package/tsOutputs/common/agent-events/agent-instance-info-builder.d.ts +22 -22
  129. package/tsOutputs/common/agent-events/agent-instance-info-builder.js +63 -63
  130. package/tsOutputs/common/agent-events/agent-instance-info-builder.js.map +1 -1
  131. package/tsOutputs/common/agent-events/agent-start-info-builder.d.ts +14 -14
  132. package/tsOutputs/common/agent-events/agent-start-info-builder.js +23 -23
  133. package/tsOutputs/common/agent-events/ci-info-builder.d.ts +7 -7
  134. package/tsOutputs/common/agent-events/ci-info-builder.js +30 -30
  135. package/tsOutputs/common/agent-events/cockpit-notifier.d.ts +26 -26
  136. package/tsOutputs/common/agent-events/cockpit-notifier.js +119 -119
  137. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.d.ts +7 -7
  138. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.js +33 -31
  139. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.js.map +1 -1
  140. package/tsOutputs/common/agent-events/machine-info-builder.d.ts +7 -7
  141. package/tsOutputs/common/agent-events/machine-info-builder.js +35 -35
  142. package/tsOutputs/common/agent-events/machine-info-builder.js.map +1 -1
  143. package/tsOutputs/common/agent-events/nodejs-env-info-builder.d.ts +8 -8
  144. package/tsOutputs/common/agent-events/nodejs-env-info-builder.js +19 -19
  145. package/tsOutputs/common/agent-events/sensitive-data-filter.d.ts +2 -2
  146. package/tsOutputs/common/agent-events/sensitive-data-filter.js +54 -54
  147. package/tsOutputs/common/agent-instance-data.d.ts +10 -10
  148. package/tsOutputs/common/agent-instance-data.js +39 -39
  149. package/tsOutputs/common/agent-instance-data.js.map +1 -1
  150. package/tsOutputs/common/config-process/config-loader.d.ts +8 -8
  151. package/tsOutputs/common/config-process/config-loader.js +86 -86
  152. package/tsOutputs/common/config-process/config-system.d.ts +88 -88
  153. package/tsOutputs/common/config-process/config-system.js +293 -293
  154. package/tsOutputs/common/config-process/config.d.ts +60 -60
  155. package/tsOutputs/common/config-process/config.js +92 -90
  156. package/tsOutputs/common/config-process/config.js.map +1 -1
  157. package/tsOutputs/common/config-process/index.d.ts +21 -21
  158. package/tsOutputs/common/config-process/index.js +127 -125
  159. package/tsOutputs/common/config-process/index.js.map +1 -1
  160. package/tsOutputs/common/constants/constants.d.ts +18 -18
  161. package/tsOutputs/common/constants/constants.js +29 -29
  162. package/tsOutputs/common/constants/sl-env-vars.d.ts +52 -52
  163. package/tsOutputs/common/constants/sl-env-vars.js +122 -122
  164. package/tsOutputs/common/contracts.d.ts +123 -123
  165. package/tsOutputs/common/contracts.js +2 -2
  166. package/tsOutputs/common/coverage-elements/contracts.d.ts +25 -25
  167. package/tsOutputs/common/coverage-elements/contracts.js +8 -8
  168. package/tsOutputs/common/coverage-elements/file-element.d.ts +35 -35
  169. package/tsOutputs/common/coverage-elements/file-element.js +158 -158
  170. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.d.ts +12 -12
  171. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.js +97 -95
  172. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.js.map +1 -1
  173. package/tsOutputs/common/coverage-elements/new-id-resolver.d.ts +3 -3
  174. package/tsOutputs/common/coverage-elements/new-id-resolver.js +45 -45
  175. package/tsOutputs/common/coverage-elements/new-id-resolver.js.map +1 -1
  176. package/tsOutputs/common/coverage-elements/original-module-loader.d.ts +41 -41
  177. package/tsOutputs/common/coverage-elements/original-module-loader.js +189 -189
  178. package/tsOutputs/common/coverage-elements/unique-id-converter.d.ts +32 -32
  179. package/tsOutputs/common/coverage-elements/unique-id-converter.js +234 -234
  180. package/tsOutputs/common/environment-data-service.d.ts +15 -15
  181. package/tsOutputs/common/environment-data-service.js +60 -60
  182. package/tsOutputs/common/events-process/events-contracts.d.ts +52 -52
  183. package/tsOutputs/common/events-process/events-contracts.js +19 -19
  184. package/tsOutputs/common/events-process/events-creator.js +40 -42
  185. package/tsOutputs/common/events-process/events-creator.js.map +1 -1
  186. package/tsOutputs/common/events-process/index.d.ts +42 -42
  187. package/tsOutputs/common/events-process/index.js +266 -265
  188. package/tsOutputs/common/events-process/index.js.map +1 -1
  189. package/tsOutputs/common/footprints-process/collection-interval.d.ts +10 -10
  190. package/tsOutputs/common/footprints-process/collection-interval.js +27 -27
  191. package/tsOutputs/common/footprints-process/collection-interval.js.map +1 -1
  192. package/tsOutputs/common/footprints-process/footprints-service-proxy.d.ts +12 -12
  193. package/tsOutputs/common/footprints-process/footprints-service-proxy.js +51 -51
  194. package/tsOutputs/common/footprints-process/index.d.ts +71 -71
  195. package/tsOutputs/common/footprints-process/index.js +264 -264
  196. package/tsOutputs/common/footprints-process/index.js.map +1 -1
  197. package/tsOutputs/common/footprints-process/istanbul-to-footprints-contract.d.ts +98 -98
  198. package/tsOutputs/common/footprints-process/istanbul-to-footprints-contract.js +9 -9
  199. package/tsOutputs/common/footprints-process/istanbul-to-footprints.d.ts +47 -47
  200. package/tsOutputs/common/footprints-process/istanbul-to-footprints.js +421 -421
  201. package/tsOutputs/common/footprints-process/istanbul-to-footprints.js.map +1 -1
  202. package/tsOutputs/common/footprints-process/production-footprints-handler.d.ts +54 -54
  203. package/tsOutputs/common/footprints-process/production-footprints-handler.js +308 -308
  204. package/tsOutputs/common/footprints-process/production-footprints-handler.js.map +1 -1
  205. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.d.ts +20 -20
  206. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.js +65 -63
  207. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.js.map +1 -1
  208. package/tsOutputs/common/footprints-process-v6/buffer-size-helper.d.ts +15 -15
  209. package/tsOutputs/common/footprints-process-v6/buffer-size-helper.js +40 -40
  210. package/tsOutputs/common/footprints-process-v6/contracts.d.ts +181 -184
  211. package/tsOutputs/common/footprints-process-v6/contracts.js +9 -9
  212. package/tsOutputs/common/footprints-process-v6/footprints-buffer.d.ts +34 -36
  213. package/tsOutputs/common/footprints-process-v6/footprints-buffer.js +135 -147
  214. package/tsOutputs/common/footprints-process-v6/footprints-buffer.js.map +1 -1
  215. package/tsOutputs/common/footprints-process-v6/hits-collector.d.ts +24 -24
  216. package/tsOutputs/common/footprints-process-v6/hits-collector.js +168 -168
  217. package/tsOutputs/common/footprints-process-v6/hits-converter.d.ts +28 -30
  218. package/tsOutputs/common/footprints-process-v6/hits-converter.js +114 -135
  219. package/tsOutputs/common/footprints-process-v6/hits-converter.js.map +1 -1
  220. package/tsOutputs/common/footprints-process-v6/index.d.ts +40 -41
  221. package/tsOutputs/common/footprints-process-v6/index.js +258 -304
  222. package/tsOutputs/common/footprints-process-v6/index.js.map +1 -1
  223. package/tsOutputs/common/footprints-process-v6/location-formatter.d.ts +6 -6
  224. package/tsOutputs/common/footprints-process-v6/location-formatter.js +25 -25
  225. package/tsOutputs/common/footprints-process-v6/relative-path-resolver.d.ts +8 -8
  226. package/tsOutputs/common/footprints-process-v6/relative-path-resolver.js +28 -28
  227. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.d.ts +9 -9
  228. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.js +40 -38
  229. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.js.map +1 -1
  230. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.d.ts +8 -8
  231. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.js +34 -32
  232. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.js.map +1 -1
  233. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.d.ts +14 -14
  234. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.js +41 -39
  235. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.js.map +1 -1
  236. package/tsOutputs/common/footprints-process-v6/source-map-data.d.ts +9 -9
  237. package/tsOutputs/common/footprints-process-v6/source-map-data.js +32 -32
  238. package/tsOutputs/common/footprints-process-v6/source-map-data.js.map +1 -1
  239. package/tsOutputs/common/http/backend-proxy-interface.d.ts +33 -33
  240. package/tsOutputs/common/http/backend-proxy-interface.js +2 -2
  241. package/tsOutputs/common/http/backend-proxy.d.ts +54 -54
  242. package/tsOutputs/common/http/backend-proxy.js +408 -408
  243. package/tsOutputs/common/http/contracts.d.ts +280 -280
  244. package/tsOutputs/common/http/contracts.js +158 -156
  245. package/tsOutputs/common/http/contracts.js.map +1 -1
  246. package/tsOutputs/common/http/dry-run-proxy.js +106 -106
  247. package/tsOutputs/common/http/entities-mapper.d.ts +4 -4
  248. package/tsOutputs/common/http/entities-mapper.js +17 -17
  249. package/tsOutputs/common/http/http-client.d.ts +21 -21
  250. package/tsOutputs/common/http/http-client.js +191 -195
  251. package/tsOutputs/common/http/http-client.js.map +1 -1
  252. package/tsOutputs/common/http/http-verb.d.ts +6 -6
  253. package/tsOutputs/common/http/http-verb.js +10 -10
  254. package/tsOutputs/common/http/sl-routes.d.ts +70 -70
  255. package/tsOutputs/common/http/sl-routes.js +218 -218
  256. package/tsOutputs/common/ignored-files-handler.js +122 -122
  257. package/tsOutputs/common/ignored-files-handler.js.map +1 -1
  258. package/tsOutputs/common/logger.d.ts +40 -40
  259. package/tsOutputs/common/logger.js +190 -188
  260. package/tsOutputs/common/logger.js.map +1 -1
  261. package/tsOutputs/common/messages-formatter.d.ts +6 -6
  262. package/tsOutputs/common/messages-formatter.js +21 -21
  263. package/tsOutputs/common/queue.d.ts +19 -19
  264. package/tsOutputs/common/queue.js +57 -55
  265. package/tsOutputs/common/queue.js.map +1 -1
  266. package/tsOutputs/common/scm/contracts.js +2 -2
  267. package/tsOutputs/common/scm/git-cloner.js +137 -137
  268. package/tsOutputs/common/scm/git-cloner.js.map +1 -1
  269. package/tsOutputs/common/scm/git-format-builder.js +72 -72
  270. package/tsOutputs/common/scm/git.js +411 -411
  271. package/tsOutputs/common/scm/git.js.map +1 -1
  272. package/tsOutputs/common/scm/none.js +115 -115
  273. package/tsOutputs/common/scm/scm-factory.js +21 -21
  274. package/tsOutputs/common/short-name-to-file-mapper.js +79 -79
  275. package/tsOutputs/common/source-map-handler.d.ts +58 -58
  276. package/tsOutputs/common/source-map-handler.js +197 -197
  277. package/tsOutputs/common/source-map-reader.js +84 -84
  278. package/tsOutputs/common/source-maps-utils.d.ts +3 -3
  279. package/tsOutputs/common/source-maps-utils.js +39 -39
  280. package/tsOutputs/common/state-tracker-fpv6.d.ts +6 -6
  281. package/tsOutputs/common/state-tracker-fpv6.js +44 -42
  282. package/tsOutputs/common/state-tracker-fpv6.js.map +1 -1
  283. package/tsOutputs/common/state-tracker.d.ts +49 -49
  284. package/tsOutputs/common/state-tracker.js +301 -299
  285. package/tsOutputs/common/state-tracker.js.map +1 -1
  286. package/tsOutputs/common/system-date.d.ts +2 -2
  287. package/tsOutputs/common/system-date.js +21 -21
  288. package/tsOutputs/common/utils/abstract-data-builder.d.ts +10 -10
  289. package/tsOutputs/common/utils/abstract-data-builder.js +24 -24
  290. package/tsOutputs/common/utils/abstract-data-builder.js.map +1 -1
  291. package/tsOutputs/common/utils/build-session-data-builder.d.ts +18 -18
  292. package/tsOutputs/common/utils/build-session-data-builder.js +137 -135
  293. package/tsOutputs/common/utils/build-session-data-builder.js.map +1 -1
  294. package/tsOutputs/common/utils/dependency-utils.js +69 -69
  295. package/tsOutputs/common/utils/files-utils.d.ts +6 -6
  296. package/tsOutputs/common/utils/files-utils.js +45 -45
  297. package/tsOutputs/common/utils/parsing-utils.d.ts +4 -4
  298. package/tsOutputs/common/utils/parsing-utils.js +29 -29
  299. package/tsOutputs/common/utils/test-utils/mock-server-utils/contracts.js +10 -10
  300. package/tsOutputs/common/utils/test-utils/mock-server-utils/mock-server-proxy.js +248 -248
  301. package/tsOutputs/common/utils/timer-utils.d.ts +3 -3
  302. package/tsOutputs/common/utils/timer-utils.js +12 -12
  303. package/tsOutputs/common/utils/token-data-builder.d.ts +21 -21
  304. package/tsOutputs/common/utils/token-data-builder.js +97 -95
  305. package/tsOutputs/common/utils/token-data-builder.js.map +1 -1
  306. package/tsOutputs/common/utils/validation-utils.d.ts +3 -3
  307. package/tsOutputs/common/utils/validation-utils.js +18 -18
  308. package/tsOutputs/common/uuid.js +23 -23
  309. package/tsOutputs/common/watchdog.d.ts +96 -96
  310. package/tsOutputs/common/watchdog.js +151 -149
  311. package/tsOutputs/common/watchdog.js.map +1 -1
  312. package/tsOutputs/mocha-reporter/constants.js +27 -27
  313. package/tsOutputs/mocha-reporter/end-execution.js +22 -22
  314. package/tsOutputs/mocha-reporter/index.js +323 -323
  315. package/tsOutputs/test-listener/IConsoleLogger.js +5 -5
  316. package/tsOutputs/test-listener/SlNodeJsProxy.js +96 -96
  317. package/tsOutputs/test-listener/UserMessageHelper.js +47 -47
  318. package/tsOutputs/test-listener/agent-loader.js +58 -58
  319. package/tsOutputs/test-listener/agent.d.ts +53 -53
  320. package/tsOutputs/test-listener/agent.js +273 -273
  321. package/tsOutputs/test-listener/agent.js.map +1 -1
  322. package/tsOutputs/test-listener/api.js +157 -157
  323. package/tsOutputs/test-listener/base-proxy.d.ts +15 -15
  324. package/tsOutputs/test-listener/base-proxy.js +133 -133
  325. package/tsOutputs/test-listener/bootstrap.js +16 -16
  326. package/tsOutputs/test-listener/child-process-patcher.js +136 -136
  327. package/tsOutputs/test-listener/child-process-patcher.js.map +1 -1
  328. package/tsOutputs/test-listener/cli.js +64 -64
  329. package/tsOutputs/test-listener/coloring/http-coloring.d.ts +15 -15
  330. package/tsOutputs/test-listener/coloring/http-coloring.js +188 -188
  331. package/tsOutputs/test-listener/coloring/icoloring-provider.d.ts +10 -10
  332. package/tsOutputs/test-listener/coloring/icoloring-provider.js +2 -2
  333. package/tsOutputs/test-listener/coloring/listening-port.d.ts +20 -20
  334. package/tsOutputs/test-listener/coloring/listening-port.js +48 -48
  335. package/tsOutputs/test-listener/command-line-arg-parser.js +91 -91
  336. package/tsOutputs/test-listener/config-process/config-loader.js +104 -104
  337. package/tsOutputs/test-listener/config-process/config-system.d.ts +88 -88
  338. package/tsOutputs/test-listener/config-process/config-system.js +285 -285
  339. package/tsOutputs/test-listener/config-process/index.js +128 -126
  340. package/tsOutputs/test-listener/config-process/index.js.map +1 -1
  341. package/tsOutputs/test-listener/config.d.ts +50 -50
  342. package/tsOutputs/test-listener/config.js +82 -80
  343. package/tsOutputs/test-listener/config.js.map +1 -1
  344. package/tsOutputs/test-listener/contracts.d.ts +72 -72
  345. package/tsOutputs/test-listener/contracts.js +2 -2
  346. package/tsOutputs/test-listener/entities/BasicConfigurationData.js +72 -72
  347. package/tsOutputs/test-listener/entities/build-scanner/ConfigModeData.js +50 -48
  348. package/tsOutputs/test-listener/entities/build-scanner/ConfigModeData.js.map +1 -1
  349. package/tsOutputs/test-listener/entities/build-scanner/ScanModeData.js +53 -51
  350. package/tsOutputs/test-listener/entities/build-scanner/ScanModeData.js.map +1 -1
  351. package/tsOutputs/test-listener/environment-data-service.d.ts +11 -11
  352. package/tsOutputs/test-listener/environment-data-service.js +60 -60
  353. package/tsOutputs/test-listener/execution-process/contracts.js +5 -5
  354. package/tsOutputs/test-listener/execution-process/entities-mapper.js +49 -49
  355. package/tsOutputs/test-listener/execution-process/execution-service-proxy.js +207 -205
  356. package/tsOutputs/test-listener/execution-process/execution-service-proxy.js.map +1 -1
  357. package/tsOutputs/test-listener/execution-process/index.js +163 -163
  358. package/tsOutputs/test-listener/factory.d.ts +87 -87
  359. package/tsOutputs/test-listener/factory.js +285 -285
  360. package/tsOutputs/test-listener/footprints-process/footprints-service-proxy.js +52 -50
  361. package/tsOutputs/test-listener/footprints-process/footprints-service-proxy.js.map +1 -1
  362. package/tsOutputs/test-listener/footprints-process/index.js +230 -230
  363. package/tsOutputs/test-listener/footprints-process/index.js.map +1 -1
  364. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-base.js +130 -130
  365. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-contract.js +2 -2
  366. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-v3.js +290 -288
  367. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-v3.js.map +1 -1
  368. package/tsOutputs/test-listener/integrations/SlGulp.js +104 -104
  369. package/tsOutputs/test-listener/logs-process/index.d.ts +48 -48
  370. package/tsOutputs/test-listener/logs-process/index.js +142 -142
  371. package/tsOutputs/test-listener/logs-process/index.js.map +1 -1
  372. package/tsOutputs/test-listener/logs-process/log-service-proxy.d.ts +9 -9
  373. package/tsOutputs/test-listener/logs-process/log-service-proxy.js +31 -29
  374. package/tsOutputs/test-listener/logs-process/log-service-proxy.js.map +1 -1
  375. package/tsOutputs/test-listener/nyc-report-executor-fpv6.js +143 -143
  376. package/tsOutputs/test-listener/nyc-report-executor-fpv6.js.map +1 -1
  377. package/tsOutputs/test-listener/nyc-report-executor.js +144 -144
  378. package/tsOutputs/test-listener/nyc-report-executor.js.map +1 -1
  379. package/tsOutputs/test-listener/queue.js +57 -55
  380. package/tsOutputs/test-listener/queue.js.map +1 -1
  381. package/tsOutputs/test-listener/remote-agent.d.ts +42 -42
  382. package/tsOutputs/test-listener/remote-agent.js +200 -200
  383. package/tsOutputs/test-listener/remote-agent.js.map +1 -1
  384. package/tsOutputs/test-listener/resolvers/AppNameResolver.js +34 -32
  385. package/tsOutputs/test-listener/resolvers/AppNameResolver.js.map +1 -1
  386. package/tsOutputs/test-listener/resolvers/ArgumentResolver.js +64 -64
  387. package/tsOutputs/test-listener/resolvers/ArgumentResolver.js.map +1 -1
  388. package/tsOutputs/test-listener/resolvers/BuildResolver.js +33 -31
  389. package/tsOutputs/test-listener/resolvers/BuildResolver.js.map +1 -1
  390. package/tsOutputs/test-listener/resolvers/BuildSessionIdFileResolver.js +33 -31
  391. package/tsOutputs/test-listener/resolvers/BuildSessionIdFileResolver.js.map +1 -1
  392. package/tsOutputs/test-listener/resolvers/BuildSessionIdResolver.js +36 -34
  393. package/tsOutputs/test-listener/resolvers/BuildSessionIdResolver.js.map +1 -1
  394. package/tsOutputs/test-listener/resolvers/ProxyResolver.js +33 -31
  395. package/tsOutputs/test-listener/resolvers/ProxyResolver.js.map +1 -1
  396. package/tsOutputs/test-listener/resolvers/TokenResolver.js +33 -31
  397. package/tsOutputs/test-listener/resolvers/TokenResolver.js.map +1 -1
  398. package/tsOutputs/test-listener/state-tracker-process/index.js +162 -160
  399. package/tsOutputs/test-listener/state-tracker-process/index.js.map +1 -1
  400. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.d.ts +8 -8
  401. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.js +71 -69
  402. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.js.map +1 -1
  403. package/tsOutputs/test-listener/test-recommendation-handler.d.ts +29 -29
  404. package/tsOutputs/test-listener/test-recommendation-handler.js +161 -161
  405. package/tsOutputs/test-listener/upload-report-handler.js +96 -96
  406. package/tsOutputs/test-listener/utils.js +68 -68
  407. package/tsOutputs/test-listener/uuid.d.ts +3 -3
  408. package/tsOutputs/test-listener/uuid.js +23 -23
  409. package/tsOutputs/test-listener/wait-for-multiple-callbacks.d.ts +22 -22
  410. package/tsOutputs/test-listener/wait-for-multiple-callbacks.js +60 -60
  411. package/tsOutputs/test-listener/watchdog.d.ts +89 -89
  412. package/tsOutputs/test-listener/watchdog.js +146 -144
  413. package/tsOutputs/test-listener/watchdog.js.map +1 -1
  414. package/tsOutputs/build-scanner/complexity-metrics/complexity-metrics.js +0 -1
  415. package/tsOutputs/build-scanner/complexity-metrics/complexity-metrics.js.map +0 -1
  416. package/tsOutputs/build-scanner/js_diff/code-metrics-spec.js +0 -1
  417. package/tsOutputs/build-scanner/js_diff/code-metrics-spec.js.map +0 -1
  418. package/tsOutputs/build-scanner/js_diff/code-metrics.js +0 -1
  419. package/tsOutputs/build-scanner/js_diff/code-metrics.js.map +0 -1
  420. package/tsOutputs/build-scanner/mappings/contracts.js +0 -3
  421. package/tsOutputs/build-scanner/mappings/contracts.js.map +0 -1
@@ -1,461 +1,457 @@
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;
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 opts = {
174
+ es6Modules: true,
175
+ babylonPlugins: ["classProperties"].concat(this.options.babylonPlugins),
176
+ projectRoot: this.options.projectRoot,
177
+ scmRootDir: this.handlerParams.scmRootDir,
178
+ isBranchCoverage: this.handlerParams.cfg.useBranchCoverage || this.options.usebranchcoverage
179
+ };
180
+ var extension = path.extname(absolutePath);
181
+ if (extension === ".ts" || extension === ".tsx") {
182
+ opts.babylonPlugins.push("typescript");
183
+ }
184
+ try {
185
+ var fileSignature = this.createFileSignature(absolutePath, relativePath, fileContent, sourceMaps, opts, this.handlerParams.scmFilesContainer);
186
+ return fileSignature;
187
+ }
188
+ catch (e) {
189
+ var message = "Failed to create signature for '" + absolutePath + "'. Error '" + e.message + "'";
190
+ this.logger.error(message);
191
+ this.signaturesParsingErrors.push(message);
192
+ this.logger.debug(e.stack);
193
+ return {
194
+ hasError: true
195
+ };
196
+ }
197
+ };
198
+ FilesMapping.prototype._createLogger = function (logger, className) {
199
+ return logger.child({
200
+ className: className
201
+ });
202
+ };
203
+ FilesMapping.prototype._getIncludedMethods = function (fileSig) {
204
+ if (!fileSig.methods)
205
+ return [];
206
+ return this._getIncludeElements(fileSig, METHODS_KEY, METHOD_ELEMENT_TYPE);
207
+ ;
208
+ };
209
+ FilesMapping.prototype._getIncludedBranches = function (fileSig) {
210
+ if (!fileSig.branches)
211
+ return [];
212
+ return this._getIncludeElements(fileSig, BRANCHES_KEY, BRANCH_ELEMENT_TYPE);
213
+ };
214
+ FilesMapping.prototype._getIncludeElements = function (fileSig, key, elementType) {
215
+ var includedElements = [];
216
+ var context = this;
217
+ fileSig[key].forEach(function (element) {
218
+ if (fileSig.hasSourceMaps) {
219
+ context._handleGeneratedElement(element, includedElements, elementType);
220
+ }
221
+ else {
222
+ includedElements.push(element);
223
+ }
224
+ });
225
+ return includedElements;
226
+ };
227
+ FilesMapping.prototype._handleGeneratedElement = function (element, elementsArr, elementType) {
228
+ if (this.slIgnoreGenerated.accepts(element.srcData.relativeFilename)) {
229
+ elementsArr.push(element);
230
+ }
231
+ else {
232
+ if (elementType === METHOD_ELEMENT_TYPE) {
233
+ globalMethodIndexer.setIgnoredMethod(element.idxInMapping);
234
+ }
235
+ this.log.info('Rejecting ' + elementType + ' from file: ' + element.srcData.relativeFilename);
236
+ }
237
+ };
238
+ FilesMapping.prototype._getErroredFilesMessage = function () {
239
+ return "The following files failed to be parsed and will not be sent to the server:\n" +
240
+ this.erroredFiles.join('\n') +
241
+ "\n\t(Hint: if the file use the es6 module syntax, pass the \"--es6Modules\" switch)";
242
+ };
243
+ FilesMapping.prototype._getCreateFileData = function (filename, absoluteFileName) {
244
+ if (!this.fileDataByFileName[filename]) {
245
+ var fileData = this._createNewFileData(filename, absoluteFileName);
246
+ this.fileDataByFileName[filename] = fileData;
247
+ this.finalFilesData.push(fileData);
248
+ }
249
+ return this.fileDataByFileName[filename];
250
+ };
251
+ FilesMapping.prototype._createNewFileData = function (filename, absoluteFileName) {
252
+ var gitPath = this._resolvePhysicalPath(absoluteFileName) || filename;
253
+ var newFile = {
254
+ logicalPath: filename,
255
+ physicalPath: gitPath,
256
+ methods: [],
257
+ lines: [],
258
+ branches: [],
259
+ absolutePath: absoluteFileName
260
+ };
261
+ if (this._shouldAddCommitsArray()) {
262
+ newFile.commitIndexes = this.handlerParams.fileToCommitsMap[gitPath] || [];
263
+ }
264
+ else {
265
+ this._logCommitsArrayNotFound();
266
+ }
267
+ return newFile;
268
+ };
269
+ FilesMapping.prototype._resolvePhysicalPath = function (absoluteFileName) {
270
+ if (!this.handlerParams.scmRootDir) {
271
+ this.logger.debug("scmRootDir not found");
272
+ return;
273
+ }
274
+ absoluteFileName = utils.adjustPathSlashes(absoluteFileName);
275
+ var scmRootDir = utils.adjustPathSlashes(this.handlerParams.scmRootDir);
276
+ var physicalPath = absoluteFileName.replace(scmRootDir, "");
277
+ if (physicalPath.indexOf("/") === 0) {
278
+ physicalPath = physicalPath.substring(1);
279
+ }
280
+ return physicalPath;
281
+ };
282
+ FilesMapping.prototype._shouldAddCommitsArray = function () {
283
+ return this.options && this.options.sendContributors && this.handlerParams.fileToCommitsMap;
284
+ };
285
+ FilesMapping.prototype._logCommitsArrayNotFound = function () {
286
+ var fieldsMap = {
287
+ opts: !this.options,
288
+ sendContributors: this.options && !this.options.sendContributors,
289
+ fileToCommitsMap: !this.handlerParams.fileToCommitsMap
290
+ };
291
+ var missing = utils.getMissingProperties(fieldsMap);
292
+ this.log.error("Cannot add commits indexes, missing fields: " + missing);
293
+ };
294
+ FilesMapping.prototype._extractBranches = function (branch, method, file) {
295
+ if (!branch) {
296
+ return;
297
+ }
298
+ //TODO: Hack! Currently the branches which we collect are inside method.
299
+ //When we'll support global branches, we should get the "original file name"
300
+ //in the same time we create the branch data object.
301
+ branch.originalFilename = method.originalFilename;
302
+ file.branches.push(branch);
303
+ };
304
+ FilesMapping.prototype._createSlIgnore = function (filename) {
305
+ var workspacePath = this.options.workspacepath;
306
+ var lookInParentFolders = !!this.options.instrumentForBrowsers;
307
+ var slIgnoreScanFilePath = fileAndFolderUtils.findFileRecursively(filename, workspacePath, lookInParentFolders, this.logger);
308
+ var slIgnoreScan = new IgnoredFilesHandler(slIgnoreScanFilePath, this.options.outputpath, filename, this.log);
309
+ this.submitIgnorePatternToCockpit(slIgnoreScan, filename);
310
+ return slIgnoreScan;
311
+ };
312
+ FilesMapping.prototype._mapShortNamesToFiles = function () {
313
+ this.shortNameToFileMapper = new ShortNameToFileMapper(this.logger);
314
+ var context = this;
315
+ this.finalFilesData.forEach(function (file) {
316
+ context.shortNameToFileMapper.addFile(file.physicalPath);
317
+ });
318
+ };
319
+ FilesMapping.prototype._convertUniqueIds = function () {
320
+ var context = this;
321
+ this.finalFilesData.forEach(function (file) {
322
+ var converter = new UniqueIdConverter(file.logicalPath, context.logger);
323
+ converter.setAndInitFile(file);
324
+ converter.process();
325
+ var map = converter.uniqueIdsMap;
326
+ if (Array.isArray(file.methods)) {
327
+ file.methods = context._updateUniqueIds(file.methods, map);
328
+ }
329
+ if (Array.isArray(file.branches)) {
330
+ file.branches = context._updateUniqueIds(file.branches, map);
331
+ }
332
+ });
333
+ };
334
+ FilesMapping.prototype._updateUniqueIds = function (arr, uniqueIdMap) {
335
+ var newArr = [];
336
+ for (var i = 0; i < arr.length; i++) {
337
+ var current = arr[i];
338
+ var oldUniqueId = current.uniqueId;
339
+ if (uniqueIdMap[oldUniqueId]) {
340
+ current.uniqueId = uniqueIdMap[oldUniqueId];
341
+ newArr.push(current);
342
+ }
343
+ }
344
+ return newArr;
345
+ };
346
+ FilesMapping.prototype._getJavaScriptFromMarkupFile = function (fullname, fileContent) {
347
+ var handler = new MarkupFilesParser(fileContent, fullname, this.logger);
348
+ handler.extractScriptTags();
349
+ var scriptTags = handler.scriptTags;
350
+ if (!scriptTags || scriptTags.length === 0) {
351
+ this.logger.info("No script tags found in '%s'", fullname);
352
+ return { hasError: true };
353
+ }
354
+ var jsCodeInFile = handler.getAllJsInFile();
355
+ return jsCodeInFile;
356
+ };
357
+ FilesMapping.prototype._isMarkupFile = function (filename) {
358
+ var dvr = new DefaultValuesResolver();
359
+ var fileExtensions = dvr.getFileExtensions();
360
+ var extension = path.extname(filename);
361
+ var result = (utils.isArrayContainsMarkupFile(fileExtensions) && utils.isMarkupFile(extension));
362
+ return result;
363
+ };
364
+ FilesMapping.prototype._resolveProjectRoot = function () {
365
+ var projectRoot;
366
+ if (this.options.projectRoot) {
367
+ projectRoot = this.options.projectRoot;
368
+ this.logger.info("Project root set to '%s' from 'sourceRoot'", projectRoot);
369
+ }
370
+ else if (this.handlerParams.scmRootDir) {
371
+ projectRoot = this.handlerParams.scmRootDir;
372
+ this.logger.info("Project root set to '%s' same as git root", projectRoot);
373
+ }
374
+ else {
375
+ projectRoot = process.cwd();
376
+ this.logger.info("Project root set to '%s' same as CWD", projectRoot);
377
+ }
378
+ return utils.adjustPathSlashes(projectRoot);
379
+ };
380
+ //This method was added for testing.
381
+ FilesMapping.prototype._createActualFile = function (filename, fullFilename) {
382
+ return new ActualFile(filename, fullFilename, this.logger);
383
+ };
384
+ FilesMapping.prototype.enrichBuildData = function () {
385
+ var context = this;
386
+ var fileToSignatureMap = this.createSourcePathToSignatureMap();
387
+ this.fileSignatures.forEach(function (signature) {
388
+ if (signature instanceof GeneratedFileSignature) {
389
+ var relevantSourceSignatures = context.extractSourceSignatures(fileToSignatureMap, signature);
390
+ context.enrichSingleFile(signature, relevantSourceSignatures);
391
+ }
392
+ });
393
+ };
394
+ FilesMapping.prototype.enrichSingleFile = function (generatedSignature, sourceSignaturesArr) {
395
+ try {
396
+ var sourceDataEnricher = new SourceDataEnricher(generatedSignature, sourceSignaturesArr, this.logger);
397
+ sourceDataEnricher.enrichData();
398
+ }
399
+ catch (e) {
400
+ this.logger.info("Error while enriching build data for '%s'. Error: '%s'", generatedSignature.absoluteFilename, e);
401
+ globalErrorHandler.setLastError(e);
402
+ }
403
+ };
404
+ FilesMapping.prototype.createSourcePathToSignatureMap = function () {
405
+ var context = this;
406
+ var pathToSignatureMap = {};
407
+ var sourceFilesPath = [];
408
+ this.fileSignatures.forEach(function (sig) {
409
+ if (sig instanceof GeneratedFileSignature) {
410
+ sourceFilesPath = sourceFilesPath.concat(sig.getSourceFilesPath());
411
+ }
412
+ });
413
+ sourceFilesPath = sourceFilesPath.filter(utils.distinctArray);
414
+ sourceFilesPath = sourceFilesPath.filter(fs.existsSync);
415
+ sourceFilesPath.forEach(function (filePath) {
416
+ if (context.shouldParse(filePath)) {
417
+ var sourceSig = context._generateFileSignature(filePath);
418
+ if (!sourceSig.hasError) {
419
+ pathToSignatureMap[filePath] = sourceSig;
420
+ }
421
+ }
422
+ else {
423
+ //TODO: Report do OBD
424
+ }
425
+ });
426
+ return pathToSignatureMap;
427
+ };
428
+ FilesMapping.prototype.extractSourceSignatures = function (sourceSignatures, generatedSignature) {
429
+ var context = this;
430
+ var sourcesPath = generatedSignature.getSourceFilesPath();
431
+ var relevantSignatures = [];
432
+ sourcesPath.forEach(function (sourcePath) {
433
+ if (sourceSignatures[sourcePath]) {
434
+ relevantSignatures.push(sourceSignatures[sourcePath]);
435
+ }
436
+ else {
437
+ context.logger.info("Could not find source signature for '%s'", sourcePath);
438
+ }
439
+ });
440
+ return relevantSignatures;
441
+ };
442
+ FilesMapping.prototype.shouldParse = function (absolutePath) {
443
+ var tsFilesPattern = "**/*.ts";
444
+ var includedPatterns = this.options.includedFiles.concat([tsFilesPattern]);
445
+ return micromatch.isMatch(absolutePath, includedPatterns);
446
+ };
447
+ FilesMapping.prototype.submitIgnorePatternToCockpit = function (ignoredFilesHandler, filename) {
448
+ var formattedPattern = ignoredFilesHandler.getFormattedPattern();
449
+ if (!formattedPattern) {
450
+ return;
451
+ }
452
+ var ignoreFile = ignoredFilesHandler.isUsingNycConfig ? "NYC configuration" : filename;
453
+ var message = "Using the following ignore pattern from " + ignoreFile + ": " + ignoredFilesHandler.getFormattedPattern();
454
+ CockpitNotifier.sendGenericMessage(message);
455
+ };
456
+ module.exports = FilesMapping;
461
457
  //# sourceMappingURL=files-mapping.js.map