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,21 +1,21 @@
1
- var GlobalErrorHandler = function () {
2
- var lastError = null;
3
- var errorPrefix = "[SeaLights Build Scanner] - Finished with errors. Last error: ";
4
- return {
5
- setLastError: function (e, message) {
6
- if (!e) {
7
- return;
8
- }
9
- e.message = message ? message + e.message : e.message;
10
- lastError = e;
11
- },
12
- hasErrors: function () {
13
- return lastError !== null;
14
- },
15
- printLastError: function () {
16
- console.log(errorPrefix, lastError);
17
- }
18
- };
19
- };
20
- module.exports = GlobalErrorHandler();
1
+ var GlobalErrorHandler = function () {
2
+ var lastError = null;
3
+ var errorPrefix = "[SeaLights Build Scanner] - Finished with errors. Last error: ";
4
+ return {
5
+ setLastError: function (e, message) {
6
+ if (!e) {
7
+ return;
8
+ }
9
+ e.message = message ? message + e.message : e.message;
10
+ lastError = e;
11
+ },
12
+ hasErrors: function () {
13
+ return lastError !== null;
14
+ },
15
+ printLastError: function () {
16
+ console.log(errorPrefix, lastError);
17
+ }
18
+ };
19
+ };
20
+ module.exports = GlobalErrorHandler();
21
21
  //# sourceMappingURL=global-error-handler.js.map
@@ -1,300 +1,300 @@
1
- var path = require('path');
2
- var mkdirp = require('mkdirp');
3
- var async = require('async');
4
- var fs = require('fs');
5
- var libInstrument = require('istanbul-lib-instrument');
6
- var fileAndFolderUtils = require('../file-and-folder-utils');
7
- var utils = require('../utils');
8
- var ValidationUtils = require("../../common/utils/validation-utils").ValidationUtils;
9
- var FileInstrumenter = require("./file-instrumenter").FileInstrumenter;
10
- var MarkupFileInstrumenter = require("./markup-file-instrumenter").MarkupFileInstrumenter;
11
- var IgnoreFilesHandler = require("../../common/ignored-files-handler").IgnoredFilesHandler;
12
- var MessagesFormatter = require("../../common/messages-formatter").MessagesFormatter;
13
- var ConfigLoader = require("../../common/config-process/config-loader").ConfigLoader;
14
- var SlEnvVars = require("../../common/constants/sl-env-vars").SlEnvVars;
15
- var Constants = require("../../common/constants/constants").Constants;
16
- var CiaEnvVars = SlEnvVars.CIA;
17
- /**
18
- * * This class responsible to instrument a set of files with Sealights information.
19
- * @param {* Instrumentation options} opts
20
- * @param {* A logger} logger
21
- */
22
- function BrowserInstrumenter(opts, logger, slMapper) {
23
- ValidationUtils.verifyNotNullOrEmpty(opts, "opts");
24
- ValidationUtils.verifyNotNullOrEmpty(logger, "logger");
25
- ValidationUtils.verifyNotNullOrEmpty(slMapper, "slMapper");
26
- this.opts = opts;
27
- this.logger = logger;
28
- this.slMapper = slMapper;
29
- this.files = {
30
- instrumented: [],
31
- notInstrumented: [],
32
- withInstrumentationErrors: [],
33
- withCopyErrors: []
34
- };
35
- }
36
- BrowserInstrumenter.prototype.instrument = function (callback) {
37
- ValidationUtils.verifyNotNullOrEmpty(callback, "callback");
38
- try {
39
- var err = this._validate(callback);
40
- if (err) {
41
- this.logger.error("Instrumentation failed due to invalid input. Error: %s", err);
42
- return callback(err);
43
- }
44
- var hasPhysicalFiles = this.opts.files && this.opts.files.length > 0;
45
- if (!hasPhysicalFiles) {
46
- this.logger.warn("Didn't find any files which require instrumentation. Skipping browser instrumentation.");
47
- return callback();
48
- }
49
- this.logger.info("Starting instrumentation process.");
50
- var _this = this;
51
- this._processFiles(function () {
52
- _this._onComplete(callback);
53
- });
54
- }
55
- catch (e) {
56
- this.logger.error("Failed during instrumentation. Error: %s", e);
57
- return callback(e);
58
- }
59
- };
60
- BrowserInstrumenter.prototype._printSummaries = function () {
61
- var summary = "Instrumentation summary:" +
62
- "\n\tInstrumented files: " + this.files.instrumented.length +
63
- "\n\tFiles copied as is (not instrumented): " + this.files.notInstrumented.length +
64
- "\n\tFiles with instrumentation errors: " + this.files.withInstrumentationErrors.length +
65
- "\n\tFiles with copy errors: " + this.files.withCopyErrors.length;
66
- this.logger.info(summary);
67
- };
68
- BrowserInstrumenter.prototype._onComplete = function (callback) {
69
- var _this = this;
70
- if (this.opts.copyAllFilesToOutput) {
71
- fileAndFolderUtils.copyDir(this.opts.sourceRoot, this.opts.outputPath, this.opts.files, function (err) {
72
- _this.logger.info("Finished copying all files to output. Error: %s", err);
73
- _this._printSummaries();
74
- return callback(err, _this.files);
75
- });
76
- }
77
- else {
78
- _this._printSummaries();
79
- return callback(null, _this.files);
80
- }
81
- };
82
- BrowserInstrumenter.prototype._onFileCopied = function (inputFile) {
83
- this.files.notInstrumented.push(inputFile);
84
- };
85
- BrowserInstrumenter.prototype._onFileCopyError = function (inputFile, errorMsg) {
86
- this.files.withCopyErrors.push({
87
- file: inputFile,
88
- error: errorMsg
89
- });
90
- };
91
- BrowserInstrumenter.prototype._onFileWithInstrumentationError = function (inputFile, errorMsg) {
92
- this.files.withInstrumentationErrors.push({
93
- file: inputFile,
94
- error: errorMsg
95
- });
96
- };
97
- BrowserInstrumenter.prototype._onFileInstrumented = function (inputFile) {
98
- this.files.instrumented.push(inputFile);
99
- };
100
- BrowserInstrumenter.prototype._validate = function (callback) {
101
- var opts = this.opts;
102
- if (opts.instrumentationType != "browser") {
103
- return new Error("instrumentationType must be 'browser'");
104
- }
105
- if (!opts.extensionsToInstrument || opts.extensionsToInstrument.length === 0) {
106
- return new Error("'extensionsToInstrument' must specified");
107
- }
108
- var hasPhysicalFiles = opts.files && opts.files.length > 0;
109
- if (hasPhysicalFiles) {
110
- if (!opts.outputPath) {
111
- return new Error("outputPath was not specified");
112
- }
113
- if (!opts.sourceRoot) {
114
- return new Error("sourceRoot was not specified");
115
- }
116
- }
117
- if (!opts.server) {
118
- return new Error("server was not specified");
119
- }
120
- if (!opts.token) {
121
- return new Error("token was not specified");
122
- }
123
- if (!opts.customerId) {
124
- return new Error("customerId was not specified");
125
- }
126
- if (!opts.workspacepath) {
127
- return new Error("workspacepath was not specified");
128
- }
129
- //All good.
130
- return null;
131
- };
132
- function addHtmlTag(preambleHeader, sourceUrl, loadedFlag) {
133
- preambleHeader.push("if(!window.$Sealights." + loadedFlag + " && !" + Constants.SKIP_BROWSER_AGENT + ") {", " var script = document.createElement(\"script\");", " script.type = \"text/javascript\";", " script.src = \"" + sourceUrl + "\";", " var head = document.head || document.getElementsByTagName && document.getElementsByTagName('head')[0]", " if (head) { head.appendChild(script); window.$Sealights." + loadedFlag + " = true; } else { /* Unsupported/restricted browser */ }", "}");
134
- }
135
- BrowserInstrumenter.prototype._createPreamble = function () {
136
- var opts = this.opts;
137
- var agentUrl = opts.server;
138
- if (agentUrl[agentUrl.length] != '/')
139
- agentUrl += '/';
140
- agentUrl += 'v1/agents/browser/recommended?redirect=1&customerId=' + encodeURIComponent(opts.customerId);
141
- var workspacePath = opts.workspacepath;
142
- if (CiaEnvVars.getSourceRoot() != null) {
143
- workspacePath = CiaEnvVars.getSourceRoot();
144
- this.logger.info("Overriding 'workspacepath' with 'Source Root'. Old: '" + opts.workspacepath + "', New: '" + workspacePath + "'.");
145
- }
146
- var lastChar = workspacePath[workspacePath.length - 1];
147
- if (lastChar != "\\" && lastChar != "/") {
148
- workspacePath = workspacePath + "/";
149
- }
150
- var config = JSON.stringify(this.createConfigObject(opts, workspacePath), null, ' ');
151
- var preambleHeader = [
152
- "var config = " + config + ";\n" +
153
- "window.$Sealights = window.$Sealights || {};\n" +
154
- "if(window && window.$SealightsAgent){\n" +
155
- " window.$SealightsAgent.createInstance(config)\n" +
156
- "} else {\n" +
157
- " window.$Sealights.components = window.$Sealights.components || {};\n" +
158
- " window.$Sealights.components[\"" + this.opts.buildSessionId + "\"] = config;" +
159
- "}"
160
- ];
161
- if (this.slMapper && opts.slMappingUrl) {
162
- this.slMapper.writeToFile();
163
- addHtmlTag(preambleHeader, opts.slMappingUrl, "slMappingAdded");
164
- }
165
- if (opts.downloadAgent == true) {
166
- addHtmlTag(preambleHeader, agentUrl, "scriptAdded");
167
- }
168
- return preambleHeader;
169
- };
170
- BrowserInstrumenter.prototype._createInstrumenter = function () {
171
- var config = {
172
- coverageVariable: "$SealightsCoverage_" + this.opts.buildSessionId,
173
- embedSource: false,
174
- compact: true,
175
- preserveComments: true,
176
- esModules: !!this.opts.esModules
177
- };
178
- var instrumenter = libInstrument.createInstrumenter(config);
179
- return instrumenter;
180
- };
181
- BrowserInstrumenter.prototype._createFileInstrumentor = function (preambleHeader, name, slIgnoreWrapper) {
182
- var extension = path.extname(name);
183
- if (utils.isMarkupFile(extension)) {
184
- this.logger.debug("'MarkupFileInstrumenter' is active");
185
- return new MarkupFileInstrumenter(this.opts, preambleHeader, this.instrumenter, name, slIgnoreWrapper, this.logger);
186
- }
187
- this.logger.debug("'FileInstrumenter' is active");
188
- return new FileInstrumenter(this.opts, preambleHeader, this.instrumenter, name, slIgnoreWrapper, this.logger);
189
- };
190
- BrowserInstrumenter.prototype._processFiles = function (callback) {
191
- var inputDir = this.opts.sourceRoot;
192
- var outputDir = this.opts.outputPath;
193
- var relativeNames = this.opts.files;
194
- var preambleHeader = this._createPreamble();
195
- this.instrumenter = this._createInstrumenter();
196
- this.logger.info("Starting to process files. Number of files to process: " + relativeNames.length);
197
- var IgnoredFilesHandler = this._createIgnoreHandler(IgnoreFilesHandler.SCAN_IGNORE_FILE_NAME);
198
- var extensions = {};
199
- this.opts.extensionsToInstrument.map(function (ext) {
200
- extensions[ext] = true;
201
- });
202
- this.opts.extensionsToInstrument = extensions;
203
- this.opts.onFileWithInstrumentationError = this._onFileWithInstrumentationError.bind(this);
204
- this.opts.onFileCopied = this._onFileCopied.bind(this);
205
- this.opts.onFileInstrumented = this._onFileInstrumented.bind(this);
206
- this.opts.onFileCopyError = this._onFileCopyError.bind(this);
207
- var _this = this;
208
- //Verify the output folder exists
209
- if (this.opts.outputPath) {
210
- mkdirp.sync(this.opts.outputPath);
211
- }
212
- var processor = function (name, callback) {
213
- var fi = _this._createFileInstrumentor(preambleHeader, name, IgnoredFilesHandler);
214
- fi.processSingleFile(callback);
215
- }, q = async.queue(processor, 10), errors = [], count = 0, startTime = new Date().getTime();
216
- q.push(relativeNames, function (err, name) {
217
- var inputFile, outputFile;
218
- inputFile = path.resolve(inputDir, name);
219
- outputFile = path.resolve(outputDir, name);
220
- if (err) {
221
- errors.push({
222
- file: name,
223
- error: err.message || err.toString()
224
- });
225
- fs.writeFileSync(outputFile, fs.readFileSync(inputFile));
226
- _this.logger.warn("Had error while processing '" + inputFile + "'. File is copied as is. ");
227
- }
228
- else {
229
- _this.logger.debug("Processed '" + inputFile + "'.");
230
- }
231
- // WTF??
232
- var verbose = false;
233
- if (verbose) {
234
- console.log('Processed: ' + name);
235
- }
236
- else {
237
- if (count % 100 === 0) {
238
- process.stdout.write('.');
239
- }
240
- }
241
- count += 1;
242
- });
243
- q.drain = function () {
244
- _this.logger.info("Draining the Q.");
245
- var endTime = new Date().getTime();
246
- _this.logger.info('\nProcessed [' + count + '] files in ' + Math.floor((endTime - startTime) / 1000) + ' secs');
247
- if (errors.length > 0) {
248
- _this.logger.warn('The following ' + errors.length + ' file(s) had errors and were copied as-is:\n' + _this._formatErrorMessage(errors));
249
- }
250
- if (callback) {
251
- callback();
252
- }
253
- };
254
- };
255
- BrowserInstrumenter.prototype._createIgnoreHandler = function (filename) {
256
- var workspacePath = this.opts.workspacepath;
257
- var slIgnoreScanFilePath = fileAndFolderUtils.findFileRecursively(filename, workspacePath, true, this.logger);
258
- var slIgnore = new IgnoreFilesHandler(slIgnoreScanFilePath, this.opts.outputpath, filename, this.logger);
259
- return slIgnore;
260
- };
261
- BrowserInstrumenter.prototype._formatErrorMessage = function (fileWithErrors) {
262
- var messageFormatter = new MessagesFormatter();
263
- var counter = 1;
264
- fileWithErrors.forEach(function (f) {
265
- var msg = "[" + counter++ + "] '" + f.file + "'. Error: '" + f.error;
266
- messageFormatter.addContent(msg);
267
- });
268
- return messageFormatter.content;
269
- };
270
- BrowserInstrumenter.prototype.createConfigObject = function (opts, workspacePath) {
271
- // Should load all env vars starting With 'SL_'
272
- var agentConfig = new ConfigLoader().loadAgentConfiguration();
273
- return {
274
- customerId: opts.customerId,
275
- appName: opts.appName,
276
- buildName: opts.build,
277
- branchName: opts.branch,
278
- server: opts.server,
279
- token: opts.token,
280
- buildSessionId: opts.buildSessionId,
281
- labId: opts.labId,
282
- enabled: true,
283
- workspacepath: workspacePath,
284
- maxItemsInQueue: 500,
285
- registerShutdownHook: true,
286
- interval: 10,
287
- resolveWithoutHash: opts.resolveWithoutHash,
288
- delayShutdownInSeconds: opts.delayShutdownInSeconds,
289
- isUseNewUniqueId: SlEnvVars.isUseNewUniqueId(),
290
- footprintsEnableV6: agentConfig.footprintsEnableV6.value,
291
- footprintsBufferThresholdMb: agentConfig.footprintsBufferThresholdMb.value,
292
- footprintsCollectIntervalSecs: agentConfig.footprintsCollectIntervalSecs.value,
293
- footprintsSendIntervalSecs: agentConfig.executionQueryIntervalSecs.value,
294
- executionQueryIntervalSecs: agentConfig.executionQueryIntervalSecs.value,
295
- footprintsQueueSize: agentConfig.footprintsQueueSize.value,
296
- blockBrowserHttpTraffic: SlEnvVars.blockBrowserHttpTraffic()
297
- };
298
- };
299
- module.exports = BrowserInstrumenter;
1
+ var path = require('path');
2
+ var mkdirp = require('mkdirp');
3
+ var async = require('async');
4
+ var fs = require('fs');
5
+ var libInstrument = require('istanbul-lib-instrument');
6
+ var fileAndFolderUtils = require('../file-and-folder-utils');
7
+ var utils = require('../utils');
8
+ var ValidationUtils = require("../../common/utils/validation-utils").ValidationUtils;
9
+ var FileInstrumenter = require("./file-instrumenter").FileInstrumenter;
10
+ var MarkupFileInstrumenter = require("./markup-file-instrumenter").MarkupFileInstrumenter;
11
+ var IgnoreFilesHandler = require("../../common/ignored-files-handler").IgnoredFilesHandler;
12
+ var MessagesFormatter = require("../../common/messages-formatter").MessagesFormatter;
13
+ var ConfigLoader = require("../../common/config-process/config-loader").ConfigLoader;
14
+ var SlEnvVars = require("../../common/constants/sl-env-vars").SlEnvVars;
15
+ var Constants = require("../../common/constants/constants").Constants;
16
+ var CiaEnvVars = SlEnvVars.CIA;
17
+ /**
18
+ * * This class responsible to instrument a set of files with Sealights information.
19
+ * @param {* Instrumentation options} opts
20
+ * @param {* A logger} logger
21
+ */
22
+ function BrowserInstrumenter(opts, logger, slMapper) {
23
+ ValidationUtils.verifyNotNullOrEmpty(opts, "opts");
24
+ ValidationUtils.verifyNotNullOrEmpty(logger, "logger");
25
+ ValidationUtils.verifyNotNullOrEmpty(slMapper, "slMapper");
26
+ this.opts = opts;
27
+ this.logger = logger;
28
+ this.slMapper = slMapper;
29
+ this.files = {
30
+ instrumented: [],
31
+ notInstrumented: [],
32
+ withInstrumentationErrors: [],
33
+ withCopyErrors: []
34
+ };
35
+ }
36
+ BrowserInstrumenter.prototype.instrument = function (callback) {
37
+ ValidationUtils.verifyNotNullOrEmpty(callback, "callback");
38
+ try {
39
+ var err = this._validate(callback);
40
+ if (err) {
41
+ this.logger.error("Instrumentation failed due to invalid input. Error: %s", err);
42
+ return callback(err);
43
+ }
44
+ var hasPhysicalFiles = this.opts.files && this.opts.files.length > 0;
45
+ if (!hasPhysicalFiles) {
46
+ this.logger.warn("Didn't find any files which require instrumentation. Skipping browser instrumentation.");
47
+ return callback();
48
+ }
49
+ this.logger.info("Starting instrumentation process.");
50
+ var _this = this;
51
+ this._processFiles(function () {
52
+ _this._onComplete(callback);
53
+ });
54
+ }
55
+ catch (e) {
56
+ this.logger.error("Failed during instrumentation. Error: %s", e);
57
+ return callback(e);
58
+ }
59
+ };
60
+ BrowserInstrumenter.prototype._printSummaries = function () {
61
+ var summary = "Instrumentation summary:" +
62
+ "\n\tInstrumented files: " + this.files.instrumented.length +
63
+ "\n\tFiles copied as is (not instrumented): " + this.files.notInstrumented.length +
64
+ "\n\tFiles with instrumentation errors: " + this.files.withInstrumentationErrors.length +
65
+ "\n\tFiles with copy errors: " + this.files.withCopyErrors.length;
66
+ this.logger.info(summary);
67
+ };
68
+ BrowserInstrumenter.prototype._onComplete = function (callback) {
69
+ var _this = this;
70
+ if (this.opts.copyAllFilesToOutput) {
71
+ fileAndFolderUtils.copyDir(this.opts.sourceRoot, this.opts.outputPath, this.opts.files, function (err) {
72
+ _this.logger.info("Finished copying all files to output. Error: %s", err);
73
+ _this._printSummaries();
74
+ return callback(err, _this.files);
75
+ });
76
+ }
77
+ else {
78
+ _this._printSummaries();
79
+ return callback(null, _this.files);
80
+ }
81
+ };
82
+ BrowserInstrumenter.prototype._onFileCopied = function (inputFile) {
83
+ this.files.notInstrumented.push(inputFile);
84
+ };
85
+ BrowserInstrumenter.prototype._onFileCopyError = function (inputFile, errorMsg) {
86
+ this.files.withCopyErrors.push({
87
+ file: inputFile,
88
+ error: errorMsg
89
+ });
90
+ };
91
+ BrowserInstrumenter.prototype._onFileWithInstrumentationError = function (inputFile, errorMsg) {
92
+ this.files.withInstrumentationErrors.push({
93
+ file: inputFile,
94
+ error: errorMsg
95
+ });
96
+ };
97
+ BrowserInstrumenter.prototype._onFileInstrumented = function (inputFile) {
98
+ this.files.instrumented.push(inputFile);
99
+ };
100
+ BrowserInstrumenter.prototype._validate = function (callback) {
101
+ var opts = this.opts;
102
+ if (opts.instrumentationType != "browser") {
103
+ return new Error("instrumentationType must be 'browser'");
104
+ }
105
+ if (!opts.extensionsToInstrument || opts.extensionsToInstrument.length === 0) {
106
+ return new Error("'extensionsToInstrument' must specified");
107
+ }
108
+ var hasPhysicalFiles = opts.files && opts.files.length > 0;
109
+ if (hasPhysicalFiles) {
110
+ if (!opts.outputPath) {
111
+ return new Error("outputPath was not specified");
112
+ }
113
+ if (!opts.sourceRoot) {
114
+ return new Error("sourceRoot was not specified");
115
+ }
116
+ }
117
+ if (!opts.server) {
118
+ return new Error("server was not specified");
119
+ }
120
+ if (!opts.token) {
121
+ return new Error("token was not specified");
122
+ }
123
+ if (!opts.customerId) {
124
+ return new Error("customerId was not specified");
125
+ }
126
+ if (!opts.workspacepath) {
127
+ return new Error("workspacepath was not specified");
128
+ }
129
+ //All good.
130
+ return null;
131
+ };
132
+ function addHtmlTag(preambleHeader, sourceUrl, loadedFlag) {
133
+ preambleHeader.push("if(!window.$Sealights." + loadedFlag + " && !" + Constants.SKIP_BROWSER_AGENT + ") {", " var script = document.createElement(\"script\");", " script.type = \"text/javascript\";", " script.src = \"" + sourceUrl + "\";", " var head = document.head || document.getElementsByTagName && document.getElementsByTagName('head')[0]", " if (head) { head.appendChild(script); window.$Sealights." + loadedFlag + " = true; } else { /* Unsupported/restricted browser */ }", "}");
134
+ }
135
+ BrowserInstrumenter.prototype._createPreamble = function () {
136
+ var opts = this.opts;
137
+ var agentUrl = opts.server;
138
+ if (agentUrl[agentUrl.length] != '/')
139
+ agentUrl += '/';
140
+ agentUrl += 'v1/agents/browser/recommended?redirect=1&customerId=' + encodeURIComponent(opts.customerId);
141
+ var workspacePath = opts.workspacepath;
142
+ if (CiaEnvVars.getSourceRoot() != null) {
143
+ workspacePath = CiaEnvVars.getSourceRoot();
144
+ this.logger.info("Overriding 'workspacepath' with 'Source Root'. Old: '" + opts.workspacepath + "', New: '" + workspacePath + "'.");
145
+ }
146
+ var lastChar = workspacePath[workspacePath.length - 1];
147
+ if (lastChar != "\\" && lastChar != "/") {
148
+ workspacePath = workspacePath + "/";
149
+ }
150
+ var config = JSON.stringify(this.createConfigObject(opts, workspacePath), null, ' ');
151
+ var preambleHeader = [
152
+ "var config = " + config + ";\n" +
153
+ "window.$Sealights = window.$Sealights || {};\n" +
154
+ "if(window && window.$SealightsAgent){\n" +
155
+ " window.$SealightsAgent.createInstance(config)\n" +
156
+ "} else {\n" +
157
+ " window.$Sealights.components = window.$Sealights.components || {};\n" +
158
+ " window.$Sealights.components[\"" + this.opts.buildSessionId + "\"] = config;" +
159
+ "}"
160
+ ];
161
+ if (this.slMapper && opts.slMappingUrl) {
162
+ this.slMapper.writeToFile();
163
+ addHtmlTag(preambleHeader, opts.slMappingUrl, "slMappingAdded");
164
+ }
165
+ if (opts.downloadAgent == true) {
166
+ addHtmlTag(preambleHeader, agentUrl, "scriptAdded");
167
+ }
168
+ return preambleHeader;
169
+ };
170
+ BrowserInstrumenter.prototype._createInstrumenter = function () {
171
+ var config = {
172
+ coverageVariable: "$SealightsCoverage_" + this.opts.buildSessionId,
173
+ embedSource: false,
174
+ compact: true,
175
+ preserveComments: true,
176
+ esModules: !!this.opts.esModules
177
+ };
178
+ var instrumenter = libInstrument.createInstrumenter(config);
179
+ return instrumenter;
180
+ };
181
+ BrowserInstrumenter.prototype._createFileInstrumentor = function (preambleHeader, name, slIgnoreWrapper) {
182
+ var extension = path.extname(name);
183
+ if (utils.isMarkupFile(extension)) {
184
+ this.logger.debug("'MarkupFileInstrumenter' is active");
185
+ return new MarkupFileInstrumenter(this.opts, preambleHeader, this.instrumenter, name, slIgnoreWrapper, this.logger);
186
+ }
187
+ this.logger.debug("'FileInstrumenter' is active");
188
+ return new FileInstrumenter(this.opts, preambleHeader, this.instrumenter, name, slIgnoreWrapper, this.logger);
189
+ };
190
+ BrowserInstrumenter.prototype._processFiles = function (callback) {
191
+ var inputDir = this.opts.sourceRoot;
192
+ var outputDir = this.opts.outputPath;
193
+ var relativeNames = this.opts.files;
194
+ var preambleHeader = this._createPreamble();
195
+ this.instrumenter = this._createInstrumenter();
196
+ this.logger.info("Starting to process files. Number of files to process: " + relativeNames.length);
197
+ var IgnoredFilesHandler = this._createIgnoreHandler(IgnoreFilesHandler.SCAN_IGNORE_FILE_NAME);
198
+ var extensions = {};
199
+ this.opts.extensionsToInstrument.map(function (ext) {
200
+ extensions[ext] = true;
201
+ });
202
+ this.opts.extensionsToInstrument = extensions;
203
+ this.opts.onFileWithInstrumentationError = this._onFileWithInstrumentationError.bind(this);
204
+ this.opts.onFileCopied = this._onFileCopied.bind(this);
205
+ this.opts.onFileInstrumented = this._onFileInstrumented.bind(this);
206
+ this.opts.onFileCopyError = this._onFileCopyError.bind(this);
207
+ var _this = this;
208
+ //Verify the output folder exists
209
+ if (this.opts.outputPath) {
210
+ mkdirp.sync(this.opts.outputPath);
211
+ }
212
+ var processor = function (name, callback) {
213
+ var fi = _this._createFileInstrumentor(preambleHeader, name, IgnoredFilesHandler);
214
+ fi.processSingleFile(callback);
215
+ }, q = async.queue(processor, 10), errors = [], count = 0, startTime = new Date().getTime();
216
+ q.push(relativeNames, function (err, name) {
217
+ var inputFile, outputFile;
218
+ inputFile = path.resolve(inputDir, name);
219
+ outputFile = path.resolve(outputDir, name);
220
+ if (err) {
221
+ errors.push({
222
+ file: name,
223
+ error: err.message || err.toString()
224
+ });
225
+ fs.writeFileSync(outputFile, fs.readFileSync(inputFile));
226
+ _this.logger.warn("Had error while processing '" + inputFile + "'. File is copied as is. ");
227
+ }
228
+ else {
229
+ _this.logger.debug("Processed '" + inputFile + "'.");
230
+ }
231
+ // WTF??
232
+ var verbose = false;
233
+ if (verbose) {
234
+ console.log('Processed: ' + name);
235
+ }
236
+ else {
237
+ if (count % 100 === 0) {
238
+ process.stdout.write('.');
239
+ }
240
+ }
241
+ count += 1;
242
+ });
243
+ q.drain = function () {
244
+ _this.logger.info("Draining the Q.");
245
+ var endTime = new Date().getTime();
246
+ _this.logger.info('\nProcessed [' + count + '] files in ' + Math.floor((endTime - startTime) / 1000) + ' secs');
247
+ if (errors.length > 0) {
248
+ _this.logger.warn('The following ' + errors.length + ' file(s) had errors and were copied as-is:\n' + _this._formatErrorMessage(errors));
249
+ }
250
+ if (callback) {
251
+ callback();
252
+ }
253
+ };
254
+ };
255
+ BrowserInstrumenter.prototype._createIgnoreHandler = function (filename) {
256
+ var workspacePath = this.opts.workspacepath;
257
+ var slIgnoreScanFilePath = fileAndFolderUtils.findFileRecursively(filename, workspacePath, true, this.logger);
258
+ var slIgnore = new IgnoreFilesHandler(slIgnoreScanFilePath, this.opts.outputpath, filename, this.logger);
259
+ return slIgnore;
260
+ };
261
+ BrowserInstrumenter.prototype._formatErrorMessage = function (fileWithErrors) {
262
+ var messageFormatter = new MessagesFormatter();
263
+ var counter = 1;
264
+ fileWithErrors.forEach(function (f) {
265
+ var msg = "[" + counter++ + "] '" + f.file + "'. Error: '" + f.error;
266
+ messageFormatter.addContent(msg);
267
+ });
268
+ return messageFormatter.content;
269
+ };
270
+ BrowserInstrumenter.prototype.createConfigObject = function (opts, workspacePath) {
271
+ // Should load all env vars starting With 'SL_'
272
+ var agentConfig = new ConfigLoader().loadAgentConfiguration();
273
+ return {
274
+ customerId: opts.customerId,
275
+ appName: opts.appName,
276
+ buildName: opts.build,
277
+ branchName: opts.branch,
278
+ server: opts.server,
279
+ token: opts.token,
280
+ buildSessionId: opts.buildSessionId,
281
+ labId: opts.labId,
282
+ enabled: true,
283
+ workspacepath: workspacePath,
284
+ maxItemsInQueue: 500,
285
+ registerShutdownHook: true,
286
+ interval: 10,
287
+ resolveWithoutHash: opts.resolveWithoutHash,
288
+ delayShutdownInSeconds: opts.delayShutdownInSeconds,
289
+ isUseNewUniqueId: SlEnvVars.isUseNewUniqueId(),
290
+ footprintsEnableV6: agentConfig.footprintsEnableV6.value,
291
+ footprintsBufferThresholdMb: agentConfig.footprintsBufferThresholdMb.value,
292
+ footprintsCollectIntervalSecs: agentConfig.footprintsCollectIntervalSecs.value,
293
+ footprintsSendIntervalSecs: agentConfig.executionQueryIntervalSecs.value,
294
+ executionQueryIntervalSecs: agentConfig.executionQueryIntervalSecs.value,
295
+ footprintsQueueSize: agentConfig.footprintsQueueSize.value,
296
+ blockBrowserHttpTraffic: SlEnvVars.blockBrowserHttpTraffic()
297
+ };
298
+ };
299
+ module.exports = BrowserInstrumenter;
300
300
  //# sourceMappingURL=browser-instrumenter.js.map