slnodejs 6.0.29 → 6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/lib/cli.js +1 -1
  2. package/package.json +124 -123
  3. package/tsOutputs/api.d.ts +12 -10
  4. package/tsOutputs/api.js +116 -115
  5. package/tsOutputs/build-scanner/ast-utils.js +39 -0
  6. package/tsOutputs/build-scanner/ast-utils.js.map +1 -0
  7. package/tsOutputs/build-scanner/build-diff-process.js +352 -346
  8. package/tsOutputs/build-scanner/build-diff-process.js.map +1 -1
  9. package/tsOutputs/build-scanner/cia.js +95 -95
  10. package/tsOutputs/build-scanner/complexity-metrics/complexity-metrics.js +1 -0
  11. package/tsOutputs/build-scanner/complexity-metrics/complexity-metrics.js.map +1 -0
  12. package/tsOutputs/build-scanner/configuration-loader.js +17 -17
  13. package/tsOutputs/build-scanner/current-agent-instance.js +5 -5
  14. package/tsOutputs/build-scanner/default-values-resolver.js +42 -42
  15. package/tsOutputs/build-scanner/entities-mapper.js +35 -35
  16. package/tsOutputs/build-scanner/file-and-folder-utils.js +176 -176
  17. package/tsOutputs/build-scanner/file-system/actual-file.js +66 -46
  18. package/tsOutputs/build-scanner/file-system/actual-file.js.map +1 -1
  19. package/tsOutputs/build-scanner/git-format-builder.js +68 -68
  20. package/tsOutputs/build-scanner/global-error-handler.js +20 -20
  21. package/tsOutputs/build-scanner/instrumentation/browser-instrumenter.js +299 -299
  22. package/tsOutputs/build-scanner/instrumentation/browser-instrumenter.js.map +1 -1
  23. package/tsOutputs/build-scanner/instrumentation/file-instrumenter.js +271 -180
  24. package/tsOutputs/build-scanner/instrumentation/file-instrumenter.js.map +1 -1
  25. package/tsOutputs/build-scanner/instrumentation/instrumentation-utils.js +58 -58
  26. package/tsOutputs/build-scanner/instrumentation/instrumented-file-size-reducer.js +159 -159
  27. package/tsOutputs/build-scanner/instrumentation/markup-file-instrumenter.js +185 -137
  28. package/tsOutputs/build-scanner/instrumentation/markup-file-instrumenter.js.map +1 -1
  29. package/tsOutputs/build-scanner/instrumentation/sync-instrumenter.js +39 -39
  30. package/tsOutputs/build-scanner/js_diff/ast-node-types.js +44 -44
  31. package/tsOutputs/build-scanner/js_diff/branch-key.js +10 -10
  32. package/tsOutputs/build-scanner/js_diff/branch-signature.js +156 -156
  33. package/tsOutputs/build-scanner/js_diff/code-metrics-spec.js +1 -0
  34. package/tsOutputs/build-scanner/js_diff/code-metrics-spec.js.map +1 -0
  35. package/tsOutputs/build-scanner/js_diff/code-metrics.js +1 -0
  36. package/tsOutputs/build-scanner/js_diff/code-metrics.js.map +1 -0
  37. package/tsOutputs/build-scanner/js_diff/create-node-key.js +7 -7
  38. package/tsOutputs/build-scanner/js_diff/dry-run-files-mapping.js +23 -23
  39. package/tsOutputs/build-scanner/js_diff/dry-run-files-mapping.js.map +1 -1
  40. package/tsOutputs/build-scanner/js_diff/file-signature.js +234 -244
  41. package/tsOutputs/build-scanner/js_diff/file-signature.js.map +1 -1
  42. package/tsOutputs/build-scanner/js_diff/files-mapping.js +460 -473
  43. package/tsOutputs/build-scanner/js_diff/files-mapping.js.map +1 -1
  44. package/tsOutputs/build-scanner/js_diff/generated-file-signature.js +143 -143
  45. package/tsOutputs/build-scanner/js_diff/generated-file-signature.js.map +1 -1
  46. package/tsOutputs/build-scanner/js_diff/globalMethodIndexer.js +26 -26
  47. package/tsOutputs/build-scanner/js_diff/guess-method-location.js +100 -97
  48. package/tsOutputs/build-scanner/js_diff/guess-method-location.js.map +1 -1
  49. package/tsOutputs/build-scanner/js_diff/guess-method-name.js +54 -54
  50. package/tsOutputs/build-scanner/js_diff/method-signature.js +142 -140
  51. package/tsOutputs/build-scanner/js_diff/method-signature.js.map +1 -1
  52. package/tsOutputs/build-scanner/js_diff/sl-mapper.js +136 -75
  53. package/tsOutputs/build-scanner/js_diff/sl-mapper.js.map +1 -1
  54. package/tsOutputs/build-scanner/js_diff/source-data-enricher.js +89 -89
  55. package/tsOutputs/build-scanner/js_diff/source-data-enricher.js.map +1 -1
  56. package/tsOutputs/build-scanner/js_diff/source-files-notifier.js +31 -31
  57. package/tsOutputs/build-scanner/js_diff/source-position-mapper.js +29 -29
  58. package/tsOutputs/build-scanner/mappings/contracts.js +3 -0
  59. package/tsOutputs/build-scanner/mappings/contracts.js.map +1 -0
  60. package/tsOutputs/build-scanner/mappings/ensure-files-handler.service.js +214 -0
  61. package/tsOutputs/build-scanner/mappings/ensure-files-handler.service.js.map +1 -0
  62. package/tsOutputs/build-scanner/mappings/file-element-utils.js +47 -0
  63. package/tsOutputs/build-scanner/mappings/file-element-utils.js.map +1 -0
  64. package/tsOutputs/build-scanner/mappings/file-enricher.js +205 -0
  65. package/tsOutputs/build-scanner/mappings/file-enricher.js.map +1 -0
  66. package/tsOutputs/build-scanner/mappings/files-data-container.js +52 -0
  67. package/tsOutputs/build-scanner/mappings/files-data-container.js.map +1 -0
  68. package/tsOutputs/build-scanner/mappings/scm-file-fixer.js +78 -0
  69. package/tsOutputs/build-scanner/mappings/scm-file-fixer.js.map +1 -0
  70. package/tsOutputs/build-scanner/markup-files-parser.js +71 -71
  71. package/tsOutputs/build-scanner/nopt-types.js +19 -19
  72. package/tsOutputs/build-scanner/nopt-usage-2.js +56 -56
  73. package/tsOutputs/build-scanner/polyfills.js +6 -6
  74. package/tsOutputs/build-scanner/scm/parse-log.js +5 -5
  75. package/tsOutputs/build-scanner/scm/scm-files-container.js +49 -49
  76. package/tsOutputs/build-scanner/sl-config-cia-cli.js +175 -175
  77. package/tsOutputs/build-scanner/utils.js +91 -91
  78. package/tsOutputs/cli-parse/agent-instance-data.d.ts +2 -2
  79. package/tsOutputs/cli-parse/agent-instance-data.js +6 -6
  80. package/tsOutputs/cli-parse/child-process-wrapper.js +82 -82
  81. package/tsOutputs/cli-parse/cli.js +509 -506
  82. package/tsOutputs/cli-parse/cli.js.map +1 -1
  83. package/tsOutputs/cli-parse/constants/constants.js +55 -56
  84. package/tsOutputs/cli-parse/constants/constants.js.map +1 -1
  85. package/tsOutputs/cli-parse/constants/third-parties.js +10 -10
  86. package/tsOutputs/cli-parse/contracts.js +2 -2
  87. package/tsOutputs/cli-parse/custom-commander.js +44 -31
  88. package/tsOutputs/cli-parse/custom-commander.js.map +1 -1
  89. package/tsOutputs/cli-parse/executors/base-executor.js +263 -254
  90. package/tsOutputs/cli-parse/executors/base-executor.js.map +1 -1
  91. package/tsOutputs/cli-parse/executors/build-args-dto.js +55 -55
  92. package/tsOutputs/cli-parse/executors/build-end-executor.js +115 -117
  93. package/tsOutputs/cli-parse/executors/build-end-executor.js.map +1 -1
  94. package/tsOutputs/cli-parse/executors/build-executor.js +147 -149
  95. package/tsOutputs/cli-parse/executors/build-executor.js.map +1 -1
  96. package/tsOutputs/cli-parse/executors/config-executor.js +112 -111
  97. package/tsOutputs/cli-parse/executors/config-executor.js.map +1 -1
  98. package/tsOutputs/cli-parse/executors/dry-run/base-data.js +55 -55
  99. package/tsOutputs/cli-parse/executors/dry-run/base-data.js.map +1 -1
  100. package/tsOutputs/cli-parse/executors/dry-run/build-mapping-data.js +228 -230
  101. package/tsOutputs/cli-parse/executors/dry-run/build-mapping-data.js.map +1 -1
  102. package/tsOutputs/cli-parse/executors/dry-run/dry-run-executor.js +277 -277
  103. package/tsOutputs/cli-parse/executors/dry-run/dry-run-executor.js.map +1 -1
  104. package/tsOutputs/cli-parse/executors/dry-run/dry-run-validation.js +120 -122
  105. package/tsOutputs/cli-parse/executors/dry-run/dry-run-validation.js.map +1 -1
  106. package/tsOutputs/cli-parse/executors/dry-run/footprints-data.js +130 -72
  107. package/tsOutputs/cli-parse/executors/dry-run/footprints-data.js.map +1 -1
  108. package/tsOutputs/cli-parse/executors/dry-run/helper-methods.js +104 -99
  109. package/tsOutputs/cli-parse/executors/dry-run/helper-methods.js.map +1 -1
  110. package/tsOutputs/cli-parse/executors/end-execution-executor.js +88 -90
  111. package/tsOutputs/cli-parse/executors/end-execution-executor.js.map +1 -1
  112. package/tsOutputs/cli-parse/executors/integration-build-components-executor.js +132 -134
  113. package/tsOutputs/cli-parse/executors/integration-build-components-executor.js.map +1 -1
  114. package/tsOutputs/cli-parse/executors/integration-build-delete-components-executor.js +73 -75
  115. package/tsOutputs/cli-parse/executors/integration-build-delete-components-executor.js.map +1 -1
  116. package/tsOutputs/cli-parse/executors/integration-build-update-components-executor.js +71 -73
  117. package/tsOutputs/cli-parse/executors/integration-build-update-components-executor.js.map +1 -1
  118. package/tsOutputs/cli-parse/executors/mocha-executor.js +122 -124
  119. package/tsOutputs/cli-parse/executors/mocha-executor.js.map +1 -1
  120. package/tsOutputs/cli-parse/executors/nyc-report-executor.js +104 -106
  121. package/tsOutputs/cli-parse/executors/nyc-report-executor.js.map +1 -1
  122. package/tsOutputs/cli-parse/executors/pr-config-executor.js +83 -85
  123. package/tsOutputs/cli-parse/executors/pr-config-executor.js.map +1 -1
  124. package/tsOutputs/cli-parse/executors/run-executor.js +93 -95
  125. package/tsOutputs/cli-parse/executors/run-executor.js.map +1 -1
  126. package/tsOutputs/cli-parse/executors/start-execution-executor.js +91 -93
  127. package/tsOutputs/cli-parse/executors/start-execution-executor.js.map +1 -1
  128. package/tsOutputs/cli-parse/executors/test-executions-executor.js +75 -77
  129. package/tsOutputs/cli-parse/executors/test-executions-executor.js.map +1 -1
  130. package/tsOutputs/cli-parse/executors/test-listener-executor.js +149 -151
  131. package/tsOutputs/cli-parse/executors/test-listener-executor.js.map +1 -1
  132. package/tsOutputs/cli-parse/executors/test-runner-build-session-data-builder.js +75 -77
  133. package/tsOutputs/cli-parse/executors/test-runner-build-session-data-builder.js.map +1 -1
  134. package/tsOutputs/cli-parse/executors/upload-report-executor.js +116 -118
  135. package/tsOutputs/cli-parse/executors/upload-report-executor.js.map +1 -1
  136. package/tsOutputs/cli-parse/utils.js +32 -32
  137. package/tsOutputs/common/agent-events/agent-events-conracts.d.ts +123 -123
  138. package/tsOutputs/common/agent-events/agent-events-conracts.js +56 -56
  139. package/tsOutputs/common/agent-events/agent-events-controller.d.ts +45 -45
  140. package/tsOutputs/common/agent-events/agent-events-controller.js +301 -301
  141. package/tsOutputs/common/agent-events/agent-instance-info-builder.d.ts +22 -22
  142. package/tsOutputs/common/agent-events/agent-instance-info-builder.js +63 -63
  143. package/tsOutputs/common/agent-events/agent-start-info-builder.d.ts +14 -14
  144. package/tsOutputs/common/agent-events/agent-start-info-builder.js +23 -23
  145. package/tsOutputs/common/agent-events/ci-info-builder.d.ts +7 -7
  146. package/tsOutputs/common/agent-events/ci-info-builder.js +30 -30
  147. package/tsOutputs/common/agent-events/cockpit-notifier.d.ts +26 -26
  148. package/tsOutputs/common/agent-events/cockpit-notifier.js +119 -119
  149. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.d.ts +7 -7
  150. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.js +31 -33
  151. package/tsOutputs/common/agent-events/dry-run-agent-events-controller.js.map +1 -1
  152. package/tsOutputs/common/agent-events/machine-info-builder.d.ts +7 -7
  153. package/tsOutputs/common/agent-events/machine-info-builder.js +35 -35
  154. package/tsOutputs/common/agent-events/nodejs-env-info-builder.d.ts +8 -8
  155. package/tsOutputs/common/agent-events/nodejs-env-info-builder.js +19 -19
  156. package/tsOutputs/common/agent-events/sensitive-data-filter.d.ts +2 -2
  157. package/tsOutputs/common/agent-events/sensitive-data-filter.js +54 -54
  158. package/tsOutputs/common/agent-instance-data.d.ts +10 -10
  159. package/tsOutputs/common/agent-instance-data.js +39 -39
  160. package/tsOutputs/common/config-process/config-loader.d.ts +8 -8
  161. package/tsOutputs/common/config-process/config-loader.js +86 -86
  162. package/tsOutputs/common/config-process/config-system.d.ts +88 -88
  163. package/tsOutputs/common/config-process/config-system.js +293 -293
  164. package/tsOutputs/common/config-process/config.d.ts +60 -60
  165. package/tsOutputs/common/config-process/config.js +90 -92
  166. package/tsOutputs/common/config-process/config.js.map +1 -1
  167. package/tsOutputs/common/config-process/index.d.ts +21 -21
  168. package/tsOutputs/common/config-process/index.js +125 -127
  169. package/tsOutputs/common/config-process/index.js.map +1 -1
  170. package/tsOutputs/common/constants/constants.d.ts +18 -18
  171. package/tsOutputs/common/constants/constants.js +29 -29
  172. package/tsOutputs/common/constants/sl-env-vars.d.ts +52 -52
  173. package/tsOutputs/common/constants/sl-env-vars.js +122 -122
  174. package/tsOutputs/common/contracts.d.ts +123 -122
  175. package/tsOutputs/common/contracts.js +2 -2
  176. package/tsOutputs/common/coverage-elements/contracts.d.ts +25 -25
  177. package/tsOutputs/common/coverage-elements/contracts.js +8 -8
  178. package/tsOutputs/common/coverage-elements/file-element.d.ts +35 -35
  179. package/tsOutputs/common/coverage-elements/file-element.js +158 -158
  180. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.d.ts +12 -12
  181. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.js +95 -97
  182. package/tsOutputs/common/coverage-elements/istanbul-unique-id-converter.js.map +1 -1
  183. package/tsOutputs/common/coverage-elements/new-id-resolver.d.ts +3 -3
  184. package/tsOutputs/common/coverage-elements/new-id-resolver.js +45 -45
  185. package/tsOutputs/common/coverage-elements/original-module-loader.d.ts +41 -41
  186. package/tsOutputs/common/coverage-elements/original-module-loader.js +189 -189
  187. package/tsOutputs/common/coverage-elements/unique-id-converter.d.ts +32 -32
  188. package/tsOutputs/common/coverage-elements/unique-id-converter.js +234 -234
  189. package/tsOutputs/common/environment-data-service.d.ts +15 -15
  190. package/tsOutputs/common/environment-data-service.js +60 -60
  191. package/tsOutputs/common/events-process/events-contracts.d.ts +52 -52
  192. package/tsOutputs/common/events-process/events-contracts.js +19 -19
  193. package/tsOutputs/common/events-process/events-creator.js +42 -40
  194. package/tsOutputs/common/events-process/events-creator.js.map +1 -1
  195. package/tsOutputs/common/events-process/index.d.ts +42 -42
  196. package/tsOutputs/common/events-process/index.js +265 -266
  197. package/tsOutputs/common/events-process/index.js.map +1 -1
  198. package/tsOutputs/common/footprints-process/collection-interval.d.ts +10 -10
  199. package/tsOutputs/common/footprints-process/collection-interval.js +27 -27
  200. package/tsOutputs/common/footprints-process/footprints-service-proxy.d.ts +12 -12
  201. package/tsOutputs/common/footprints-process/footprints-service-proxy.js +51 -51
  202. package/tsOutputs/common/footprints-process/index.d.ts +71 -71
  203. package/tsOutputs/common/footprints-process/index.js +264 -264
  204. package/tsOutputs/common/footprints-process/istanbul-to-footprints-contract.d.ts +98 -98
  205. package/tsOutputs/common/footprints-process/istanbul-to-footprints-contract.js +9 -9
  206. package/tsOutputs/common/footprints-process/istanbul-to-footprints.d.ts +47 -47
  207. package/tsOutputs/common/footprints-process/istanbul-to-footprints.js +421 -421
  208. package/tsOutputs/common/footprints-process/production-footprints-handler.d.ts +54 -54
  209. package/tsOutputs/common/footprints-process/production-footprints-handler.js +308 -308
  210. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.d.ts +20 -20
  211. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.js +63 -65
  212. package/tsOutputs/common/footprints-process-v6/base-browser-hits-converter.js.map +1 -1
  213. package/tsOutputs/common/footprints-process-v6/buffer-size-helper.d.ts +15 -15
  214. package/tsOutputs/common/footprints-process-v6/buffer-size-helper.js +40 -40
  215. package/tsOutputs/common/footprints-process-v6/contracts.d.ts +184 -181
  216. package/tsOutputs/common/footprints-process-v6/contracts.js +9 -9
  217. package/tsOutputs/common/footprints-process-v6/footprints-buffer.d.ts +36 -34
  218. package/tsOutputs/common/footprints-process-v6/footprints-buffer.js +147 -135
  219. package/tsOutputs/common/footprints-process-v6/footprints-buffer.js.map +1 -1
  220. package/tsOutputs/common/footprints-process-v6/hits-collector.d.ts +24 -24
  221. package/tsOutputs/common/footprints-process-v6/hits-collector.js +168 -168
  222. package/tsOutputs/common/footprints-process-v6/hits-converter.d.ts +30 -28
  223. package/tsOutputs/common/footprints-process-v6/hits-converter.js +135 -105
  224. package/tsOutputs/common/footprints-process-v6/hits-converter.js.map +1 -1
  225. package/tsOutputs/common/footprints-process-v6/index.d.ts +41 -40
  226. package/tsOutputs/common/footprints-process-v6/index.js +304 -258
  227. package/tsOutputs/common/footprints-process-v6/index.js.map +1 -1
  228. package/tsOutputs/common/footprints-process-v6/location-formatter.d.ts +6 -6
  229. package/tsOutputs/common/footprints-process-v6/location-formatter.js +25 -25
  230. package/tsOutputs/common/footprints-process-v6/relative-path-resolver.d.ts +8 -8
  231. package/tsOutputs/common/footprints-process-v6/relative-path-resolver.js +28 -28
  232. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.d.ts +9 -9
  233. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.js +38 -40
  234. package/tsOutputs/common/footprints-process-v6/remote-browser-hits-converter.js.map +1 -1
  235. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.d.ts +8 -8
  236. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.js +32 -34
  237. package/tsOutputs/common/footprints-process-v6/remote-footprints-process.js.map +1 -1
  238. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.d.ts +14 -14
  239. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.js +39 -41
  240. package/tsOutputs/common/footprints-process-v6/remote-hits-collector.js.map +1 -1
  241. package/tsOutputs/common/footprints-process-v6/source-map-data.d.ts +9 -9
  242. package/tsOutputs/common/footprints-process-v6/source-map-data.js +32 -32
  243. package/tsOutputs/common/footprints-process-v6/source-map-data.js.map +1 -1
  244. package/tsOutputs/common/http/backend-proxy-interface.d.ts +33 -33
  245. package/tsOutputs/common/http/backend-proxy-interface.js +2 -2
  246. package/tsOutputs/common/http/backend-proxy.d.ts +54 -53
  247. package/tsOutputs/common/http/backend-proxy.js +408 -398
  248. package/tsOutputs/common/http/backend-proxy.js.map +1 -1
  249. package/tsOutputs/common/http/contracts.d.ts +280 -203
  250. package/tsOutputs/common/http/contracts.js +156 -158
  251. package/tsOutputs/common/http/contracts.js.map +1 -1
  252. package/tsOutputs/common/http/dry-run-proxy.js +106 -106
  253. package/tsOutputs/common/http/entities-mapper.d.ts +4 -4
  254. package/tsOutputs/common/http/entities-mapper.js +17 -17
  255. package/tsOutputs/common/http/http-client.d.ts +21 -21
  256. package/tsOutputs/common/http/http-client.js +195 -191
  257. package/tsOutputs/common/http/http-client.js.map +1 -1
  258. package/tsOutputs/common/http/http-verb.d.ts +6 -6
  259. package/tsOutputs/common/http/http-verb.js +10 -10
  260. package/tsOutputs/common/http/sl-routes.d.ts +70 -70
  261. package/tsOutputs/common/http/sl-routes.js +218 -218
  262. package/tsOutputs/common/ignored-files-handler.js +122 -122
  263. package/tsOutputs/common/logger.d.ts +40 -40
  264. package/tsOutputs/common/logger.js +188 -190
  265. package/tsOutputs/common/logger.js.map +1 -1
  266. package/tsOutputs/common/messages-formatter.d.ts +6 -6
  267. package/tsOutputs/common/messages-formatter.js +21 -21
  268. package/tsOutputs/common/queue.d.ts +19 -19
  269. package/tsOutputs/common/queue.js +55 -57
  270. package/tsOutputs/common/queue.js.map +1 -1
  271. package/tsOutputs/common/scm/contracts.js +2 -2
  272. package/tsOutputs/common/scm/git-cloner.js +138 -0
  273. package/tsOutputs/common/scm/git-cloner.js.map +1 -0
  274. package/tsOutputs/common/scm/git-format-builder.js +72 -72
  275. package/tsOutputs/common/scm/git.js +411 -411
  276. package/tsOutputs/common/scm/none.js +115 -115
  277. package/tsOutputs/common/scm/scm-factory.js +21 -21
  278. package/tsOutputs/common/short-name-to-file-mapper.js +79 -79
  279. package/tsOutputs/common/source-map-handler.d.ts +58 -58
  280. package/tsOutputs/common/source-map-handler.js +197 -197
  281. package/tsOutputs/common/source-map-reader.js +84 -84
  282. package/tsOutputs/common/source-maps-utils.d.ts +3 -3
  283. package/tsOutputs/common/source-maps-utils.js +39 -39
  284. package/tsOutputs/common/state-tracker-fpv6.d.ts +6 -6
  285. package/tsOutputs/common/state-tracker-fpv6.js +42 -44
  286. package/tsOutputs/common/state-tracker-fpv6.js.map +1 -1
  287. package/tsOutputs/common/state-tracker.d.ts +49 -49
  288. package/tsOutputs/common/state-tracker.js +299 -304
  289. package/tsOutputs/common/state-tracker.js.map +1 -1
  290. package/tsOutputs/common/system-date.d.ts +2 -2
  291. package/tsOutputs/common/system-date.js +21 -21
  292. package/tsOutputs/common/utils/abstract-data-builder.d.ts +10 -10
  293. package/tsOutputs/common/utils/abstract-data-builder.js +24 -24
  294. package/tsOutputs/common/utils/build-session-data-builder.d.ts +18 -18
  295. package/tsOutputs/common/utils/build-session-data-builder.js +135 -137
  296. package/tsOutputs/common/utils/build-session-data-builder.js.map +1 -1
  297. package/tsOutputs/common/utils/dependency-utils.js +69 -69
  298. package/tsOutputs/common/utils/files-utils.d.ts +6 -5
  299. package/tsOutputs/common/utils/files-utils.js +45 -36
  300. package/tsOutputs/common/utils/files-utils.js.map +1 -1
  301. package/tsOutputs/common/utils/parsing-utils.d.ts +4 -4
  302. package/tsOutputs/common/utils/parsing-utils.js +29 -29
  303. package/tsOutputs/common/utils/test-utils/mock-server-utils/contracts.js +10 -10
  304. package/tsOutputs/common/utils/test-utils/mock-server-utils/mock-server-proxy.js +248 -248
  305. package/tsOutputs/common/utils/timer-utils.d.ts +3 -3
  306. package/tsOutputs/common/utils/timer-utils.js +12 -12
  307. package/tsOutputs/common/utils/token-data-builder.d.ts +21 -21
  308. package/tsOutputs/common/utils/token-data-builder.js +95 -97
  309. package/tsOutputs/common/utils/token-data-builder.js.map +1 -1
  310. package/tsOutputs/common/utils/validation-utils.d.ts +3 -3
  311. package/tsOutputs/common/utils/validation-utils.js +18 -18
  312. package/tsOutputs/common/uuid.js +23 -23
  313. package/tsOutputs/common/watchdog.d.ts +96 -96
  314. package/tsOutputs/common/watchdog.js +149 -151
  315. package/tsOutputs/common/watchdog.js.map +1 -1
  316. package/tsOutputs/mocha-reporter/constants.js +27 -27
  317. package/tsOutputs/mocha-reporter/end-execution.js +22 -22
  318. package/tsOutputs/mocha-reporter/index.js +323 -323
  319. package/tsOutputs/test-listener/IConsoleLogger.js +5 -5
  320. package/tsOutputs/test-listener/SlNodeJsProxy.js +96 -96
  321. package/tsOutputs/test-listener/UserMessageHelper.js +47 -47
  322. package/tsOutputs/test-listener/agent-loader.js +58 -58
  323. package/tsOutputs/test-listener/agent.d.ts +53 -53
  324. package/tsOutputs/test-listener/agent.js +273 -273
  325. package/tsOutputs/test-listener/api.js +157 -157
  326. package/tsOutputs/test-listener/base-proxy.d.ts +15 -15
  327. package/tsOutputs/test-listener/base-proxy.js +133 -133
  328. package/tsOutputs/test-listener/bootstrap.js +16 -16
  329. package/tsOutputs/test-listener/child-process-patcher.js +136 -136
  330. package/tsOutputs/test-listener/cli.js +64 -64
  331. package/tsOutputs/test-listener/coloring/http-coloring.d.ts +15 -15
  332. package/tsOutputs/test-listener/coloring/http-coloring.js +188 -188
  333. package/tsOutputs/test-listener/coloring/icoloring-provider.d.ts +10 -10
  334. package/tsOutputs/test-listener/coloring/icoloring-provider.js +2 -2
  335. package/tsOutputs/test-listener/coloring/listening-port.d.ts +20 -20
  336. package/tsOutputs/test-listener/coloring/listening-port.js +48 -48
  337. package/tsOutputs/test-listener/command-line-arg-parser.js +91 -91
  338. package/tsOutputs/test-listener/config-process/config-loader.js +104 -104
  339. package/tsOutputs/test-listener/config-process/config-system.d.ts +88 -88
  340. package/tsOutputs/test-listener/config-process/config-system.js +285 -285
  341. package/tsOutputs/test-listener/config-process/index.js +126 -128
  342. package/tsOutputs/test-listener/config-process/index.js.map +1 -1
  343. package/tsOutputs/test-listener/config.d.ts +50 -50
  344. package/tsOutputs/test-listener/config.js +80 -82
  345. package/tsOutputs/test-listener/config.js.map +1 -1
  346. package/tsOutputs/test-listener/contracts.d.ts +72 -72
  347. package/tsOutputs/test-listener/contracts.js +2 -2
  348. package/tsOutputs/test-listener/entities/BasicConfigurationData.js +72 -72
  349. package/tsOutputs/test-listener/entities/build-scanner/ConfigModeData.js +48 -50
  350. package/tsOutputs/test-listener/entities/build-scanner/ConfigModeData.js.map +1 -1
  351. package/tsOutputs/test-listener/entities/build-scanner/ScanModeData.js +51 -53
  352. package/tsOutputs/test-listener/entities/build-scanner/ScanModeData.js.map +1 -1
  353. package/tsOutputs/test-listener/environment-data-service.d.ts +11 -11
  354. package/tsOutputs/test-listener/environment-data-service.js +60 -60
  355. package/tsOutputs/test-listener/execution-process/contracts.js +5 -5
  356. package/tsOutputs/test-listener/execution-process/entities-mapper.js +49 -49
  357. package/tsOutputs/test-listener/execution-process/execution-service-proxy.js +205 -207
  358. package/tsOutputs/test-listener/execution-process/execution-service-proxy.js.map +1 -1
  359. package/tsOutputs/test-listener/execution-process/index.js +163 -163
  360. package/tsOutputs/test-listener/factory.d.ts +87 -87
  361. package/tsOutputs/test-listener/factory.js +285 -285
  362. package/tsOutputs/test-listener/footprints-process/footprints-service-proxy.js +50 -52
  363. package/tsOutputs/test-listener/footprints-process/footprints-service-proxy.js.map +1 -1
  364. package/tsOutputs/test-listener/footprints-process/index.js +230 -230
  365. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-base.js +130 -130
  366. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-contract.js +2 -2
  367. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-v3.js +288 -290
  368. package/tsOutputs/test-listener/footprints-process/istanbul-to-footprints-v3.js.map +1 -1
  369. package/tsOutputs/test-listener/integrations/SlGulp.js +104 -104
  370. package/tsOutputs/test-listener/logs-process/index.d.ts +48 -48
  371. package/tsOutputs/test-listener/logs-process/index.js +142 -142
  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 +29 -31
  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 -136
  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/queue.js +55 -57
  379. package/tsOutputs/test-listener/queue.js.map +1 -1
  380. package/tsOutputs/test-listener/remote-agent.d.ts +42 -42
  381. package/tsOutputs/test-listener/remote-agent.js +200 -200
  382. package/tsOutputs/test-listener/resolvers/AppNameResolver.js +32 -34
  383. package/tsOutputs/test-listener/resolvers/AppNameResolver.js.map +1 -1
  384. package/tsOutputs/test-listener/resolvers/ArgumentResolver.js +64 -64
  385. package/tsOutputs/test-listener/resolvers/BuildResolver.js +31 -33
  386. package/tsOutputs/test-listener/resolvers/BuildResolver.js.map +1 -1
  387. package/tsOutputs/test-listener/resolvers/BuildSessionIdFileResolver.js +31 -33
  388. package/tsOutputs/test-listener/resolvers/BuildSessionIdFileResolver.js.map +1 -1
  389. package/tsOutputs/test-listener/resolvers/BuildSessionIdResolver.js +34 -36
  390. package/tsOutputs/test-listener/resolvers/BuildSessionIdResolver.js.map +1 -1
  391. package/tsOutputs/test-listener/resolvers/ProxyResolver.js +31 -33
  392. package/tsOutputs/test-listener/resolvers/ProxyResolver.js.map +1 -1
  393. package/tsOutputs/test-listener/resolvers/TokenResolver.js +31 -33
  394. package/tsOutputs/test-listener/resolvers/TokenResolver.js.map +1 -1
  395. package/tsOutputs/test-listener/state-tracker-process/index.js +160 -162
  396. package/tsOutputs/test-listener/state-tracker-process/index.js.map +1 -1
  397. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.d.ts +8 -8
  398. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.js +69 -71
  399. package/tsOutputs/test-listener/state-tracker-process/state-tracker-proxy.js.map +1 -1
  400. package/tsOutputs/test-listener/test-recommendation-handler.d.ts +29 -29
  401. package/tsOutputs/test-listener/test-recommendation-handler.js +161 -161
  402. package/tsOutputs/test-listener/upload-report-handler.js +96 -96
  403. package/tsOutputs/test-listener/utils.js +68 -68
  404. package/tsOutputs/test-listener/uuid.d.ts +3 -3
  405. package/tsOutputs/test-listener/uuid.js +23 -23
  406. package/tsOutputs/test-listener/wait-for-multiple-callbacks.d.ts +22 -22
  407. package/tsOutputs/test-listener/wait-for-multiple-callbacks.js +60 -60
  408. package/tsOutputs/test-listener/watchdog.d.ts +89 -89
  409. package/tsOutputs/test-listener/watchdog.js +144 -146
  410. package/tsOutputs/test-listener/watchdog.js.map +1 -1
  411. package/browser-agent/dist/browser-agent-all.js +0 -100989
  412. package/browser-agent/dist/browser-agent-all.min.js +0 -57
  413. package/browser-agent/package.json +0 -44
@@ -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");
10
- var MarkupFileInstrumenter = require("./markup-file-instrumenter");
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