@jsenv/core 23.2.1 → 23.4.1

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 (56) hide show
  1. package/{license → LICENSE} +0 -0
  2. package/package.json +13 -14
  3. package/readme.md +4 -4
  4. package/src/buildProject.js +12 -13
  5. package/src/execute.js +92 -93
  6. package/src/executeTestPlan.js +9 -8
  7. package/src/internal/browser-launcher/executeHtmlFile.js +26 -23
  8. package/src/internal/building/buildUsingRollup.js +3 -4
  9. package/src/internal/building/build_logs.js +7 -6
  10. package/src/internal/building/createJsenvRollupPlugin.js +9 -14
  11. package/src/internal/building/url_trace.js +3 -4
  12. package/src/internal/compiling/createCompiledFileService.js +8 -5
  13. package/src/internal/compiling/startCompileServer.js +55 -46
  14. package/src/internal/executing/coverage/babel_plugin_instrument.js +1 -0
  15. package/src/internal/executing/coverage/reportToCoverage.js +147 -120
  16. package/src/internal/executing/{coverage → coverage_empty}/createEmptyCoverage.js +0 -0
  17. package/src/internal/executing/coverage_empty/list_files_not_covered.js +20 -0
  18. package/src/internal/executing/{coverage → coverage_empty}/relativeUrlToEmptyCoverage.js +3 -4
  19. package/src/internal/executing/{coverage/generateCoverageHtmlDirectory.js → coverage_reporter/coverage_reporter_html_directory.js} +11 -4
  20. package/src/internal/executing/{coverage/generateCoverageJsonFile.js → coverage_reporter/coverage_reporter_json_file.js} +0 -0
  21. package/src/internal/executing/{coverage/generateCoverageTextLog.js → coverage_reporter/coverage_reporter_text_log.js} +4 -2
  22. package/src/internal/executing/{coverage → coverage_reporter}/istanbulCoverageMapFromCoverage.js +0 -0
  23. package/src/internal/executing/{coverage/normalizeIstanbulCoverage.js → coverage_utils/file_by_file_coverage.js} +9 -7
  24. package/src/internal/executing/coverage_utils/istanbul_coverage_composition.js +28 -0
  25. package/src/internal/executing/coverage_utils/v8_and_istanbul.js +38 -0
  26. package/src/internal/executing/coverage_utils/v8_coverage_composition.js +23 -0
  27. package/src/internal/executing/coverage_utils/v8_coverage_from_directory.js +64 -0
  28. package/src/internal/executing/coverage_utils/v8_coverage_to_istanbul.js +90 -0
  29. package/src/internal/executing/createSummaryLog.js +15 -15
  30. package/src/internal/executing/executeConcurrently.js +92 -32
  31. package/src/internal/executing/executePlan.js +84 -81
  32. package/src/internal/executing/executionLogs.js +14 -18
  33. package/src/internal/executing/execution_colors.js +6 -12
  34. package/src/internal/executing/launchAndExecute.js +179 -176
  35. package/src/internal/node-launcher/createControllableNodeProcess.js +26 -23
  36. package/src/launchBrowser.js +72 -69
  37. package/src/launchNode.js +11 -99
  38. package/src/startExploring.js +2 -17
  39. package/src/abort/abortable.js +0 -172
  40. package/src/abort/callback_list.js +0 -64
  41. package/src/abort/callback_race.js +0 -34
  42. package/src/abort/cleaner.js +0 -22
  43. package/src/abort/main.js +0 -32
  44. package/src/abort/process_teardown_events.js +0 -59
  45. package/src/internal/createCallbackList.js +0 -21
  46. package/src/internal/executing/coverage/composeIstanbulCoverages.js +0 -108
  47. package/src/internal/executing/coverage/composeV8Coverages.js +0 -20
  48. package/src/internal/executing/coverage/istanbulCoverageFromCoverages.js +0 -43
  49. package/src/internal/executing/coverage/istanbulCoverageFromV8Coverage.js +0 -79
  50. package/src/internal/executing/coverage/v8CoverageFromAllV8Coverages.js +0 -40
  51. package/src/internal/executing/coverage/v8CoverageFromNodeV8Directory.js +0 -67
  52. package/src/internal/executing/logUtils.js +0 -30
  53. package/src/internal/executing/writeLog.js +0 -106
  54. package/src/internal/executing/writeLog.test-manual.js +0 -62
  55. package/src/internal/logs/log_style.js +0 -40
  56. package/src/signal/signal.js +0 -65
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/core",
3
- "version": "23.2.1",
3
+ "version": "23.4.1",
4
4
  "description": "Tool to develop, test and build js projects",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,7 +11,8 @@
11
11
  "node": ">=14.9.0"
12
12
  },
13
13
  "publishConfig": {
14
- "access": "public"
14
+ "access": "public",
15
+ "registry": "https://registry.npmjs.org"
15
16
  },
16
17
  "type": "module",
17
18
  "exports": {
@@ -51,7 +52,7 @@
51
52
  "postpublish": "node ./script/publish/restore_postinstall.mjs"
52
53
  },
53
54
  "dependencies": {
54
- "@babel/core": "7.15.8",
55
+ "@babel/core": "7.16.0",
55
56
  "@babel/helper-module-imports": "7.15.4",
56
57
  "@babel/helpers": "7.15.4",
57
58
  "@babel/parser": "7.15.8",
@@ -62,11 +63,12 @@
62
63
  "@babel/plugin-syntax-numeric-separator": "7.10.4",
63
64
  "@babel/plugin-transform-modules-systemjs": "7.15.4",
64
65
  "@c88/v8-coverage": "0.1.1",
65
- "@jsenv/abort": "1.0.0",
66
- "@jsenv/filesystem": "2.3.1",
66
+ "@jsenv/abort": "4.0.0",
67
+ "@jsenv/filesystem": "2.5.0",
67
68
  "@jsenv/importmap": "1.1.0",
69
+ "@jsenv/log": "1.1.0",
68
70
  "@jsenv/logger": "4.0.1",
69
- "@jsenv/server": "9.2.4",
71
+ "@jsenv/server": "10.0.0",
70
72
  "@jsenv/uneval": "1.6.0",
71
73
  "@jsenv/workers": "1.2.0",
72
74
  "@rollup/plugin-commonjs": "21.0.0",
@@ -78,13 +80,12 @@
78
80
  "bytes": "3.1.0",
79
81
  "cjs-module-lexer": "1.2.2",
80
82
  "construct-style-sheets-polyfill": "3.0.4",
81
- "cssnano": "5.0.8",
82
- "cssnano-preset-default": "5.1.4",
83
+ "cssnano": "5.0.9",
84
+ "cssnano-preset-default": "5.1.5",
83
85
  "cuid": "2.1.8",
84
86
  "estree-walker": "3.0.0",
85
87
  "html-minifier": "4.0.0",
86
88
  "humanize-duration": "3.27.0",
87
- "is-unicode-supported": "1.1.0",
88
89
  "is-valid-identifier": "2.0.2",
89
90
  "istanbul-lib-coverage": "3.0.2",
90
91
  "istanbul-lib-instrument": "5.0.3",
@@ -104,8 +105,6 @@
104
105
  "rollup-plugin-node-globals": "1.4.0",
105
106
  "rollup-plugin-polyfill-node": "0.7.0",
106
107
  "source-map": "0.7.3",
107
- "string-width": "5.0.1",
108
- "supports-color": "9.0.2",
109
108
  "systemjs": "6.11.0",
110
109
  "terser": "5.9.0",
111
110
  "v8-to-istanbul": "8.1.0",
@@ -113,7 +112,7 @@
113
112
  "wrap-ansi": "8.0.1"
114
113
  },
115
114
  "devDependencies": {
116
- "@babel/eslint-parser": "7.15.8",
115
+ "@babel/eslint-parser": "7.16.0",
117
116
  "@babel/plugin-syntax-jsx": "7.14.5",
118
117
  "@babel/plugin-transform-block-scoping": "7.15.3",
119
118
  "@babel/plugin-transform-react-jsx": "7.14.9",
@@ -127,7 +126,7 @@
127
126
  "@jsenv/importmap-eslint-resolver": "5.1.2",
128
127
  "@jsenv/importmap-node-module": "2.4.1",
129
128
  "@jsenv/package-publish": "1.6.2",
130
- "@jsenv/performance-impact": "2.2.0",
129
+ "@jsenv/performance-impact": "2.2.1",
131
130
  "@jsenv/prettier-check-project": "5.6.1",
132
131
  "@jsenv/pwa": "4.0.0",
133
132
  "babel-plugin-transform-async-to-promises": "0.8.15",
@@ -140,7 +139,7 @@
140
139
  "prettier": "2.4.1",
141
140
  "react": "17.0.2",
142
141
  "react-dom": "17.0.2",
143
- "redux": "4.1.1",
142
+ "redux": "4.1.2",
144
143
  "rollup-plugin-import-assert": "1.1.1"
145
144
  }
146
145
  }
package/readme.md CHANGED
@@ -99,16 +99,16 @@ executeTestPlan({
99
99
  ✔ execution 1 of 2 completed (all completed)
100
100
  file: animals.test.html
101
101
  runtime: chromium/82.0.4057.0
102
- duration: 1.28 seconds
102
+ duration: 1.2 seconds
103
103
 
104
104
  ✔ execution 2 of 2 completed (all completed)
105
105
  file: animals.test.html
106
106
  runtime: firefox/73.0b13
107
- duration: 2.42 seconds
107
+ duration: 2.4 seconds
108
108
 
109
109
  -------------- summary -----------------
110
- 2 execution: all completed
111
- total duration: 3.72 seconds
110
+ 2 executions: all completed
111
+ total duration: 3.6 seconds
112
112
  ----------------------------------------
113
113
  ```
114
114
 
@@ -1,10 +1,7 @@
1
1
  import { createLogger, createDetailedMessage } from "@jsenv/logger"
2
2
  import { resolveDirectoryUrl } from "@jsenv/filesystem"
3
+ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
3
4
 
4
- import {
5
- Abortable,
6
- raceProcessTeardownEvents,
7
- } from "@jsenv/core/src/abort/main.js"
8
5
  import { COMPILE_ID_BEST } from "./internal/CONSTANTS.js"
9
6
  import {
10
7
  assertProjectDirectoryUrl,
@@ -136,16 +133,18 @@ export const buildProject = async ({
136
133
  projectDirectoryUrl,
137
134
  })
138
135
 
139
- const buildOperation = Abortable.fromSignal(signal)
136
+ const buildOperation = Abort.startOperation()
137
+ buildOperation.addAbortSignal(signal)
138
+
140
139
  if (handleSIGINT) {
141
- Abortable.effect(buildOperation, (cb) =>
142
- raceProcessTeardownEvents(
140
+ buildOperation.addAbortSource((abort) => {
141
+ return raceProcessTeardownEvents(
143
142
  {
144
143
  SIGINT: true,
145
144
  },
146
- cb,
147
- ),
148
- )
145
+ abort,
146
+ )
147
+ })
149
148
  }
150
149
 
151
150
  const compileServer = await startCompileServer({
@@ -183,7 +182,7 @@ export const buildProject = async ({
183
182
  transformHtmlSourceFiles: false,
184
183
  })
185
184
 
186
- buildOperation.cleaner.addCallback(async () => {
185
+ buildOperation.addEndCallback(async () => {
187
186
  await compileServer.stop(`build cleanup`)
188
187
  })
189
188
 
@@ -239,13 +238,13 @@ export const buildProject = async ({
239
238
 
240
239
  return result
241
240
  } catch (e) {
242
- if (Abortable.isAbortError(e)) {
241
+ if (Abort.isAbortError(e)) {
243
242
  logger.info("build aborted")
244
243
  return null
245
244
  }
246
245
  throw e
247
246
  } finally {
248
- await buildOperation.cleaner.clean()
247
+ await buildOperation.end()
249
248
  }
250
249
  }
251
250
 
package/src/execute.js CHANGED
@@ -1,7 +1,5 @@
1
- import {
2
- Abortable,
3
- raceProcessTeardownEvents,
4
- } from "@jsenv/core/src/abort/main.js"
1
+ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
2
+
5
3
  import { normalizeRuntimeSupport } from "@jsenv/core/src/internal/generateGroupMap/runtime_support.js"
6
4
  import {
7
5
  assertProjectDirectoryUrl,
@@ -58,7 +56,7 @@ export const execute = async ({
58
56
  runtimeStartedCallback,
59
57
  runtimeStoppedCallback,
60
58
  runtimeErrorAfterExecutionCallback,
61
- runtimeDisconnectCallback = () => {},
59
+ runtimeDisconnectCallback,
62
60
  }) => {
63
61
  projectDirectoryUrl = assertProjectDirectoryUrl({ projectDirectoryUrl })
64
62
  await assertProjectDirectoryExists({ projectDirectoryUrl })
@@ -79,101 +77,99 @@ export const execute = async ({
79
77
  )
80
78
  }
81
79
 
82
- const executeOperation = Abortable.fromSignal(signal)
80
+ const executeOperation = Abort.startOperation()
81
+ executeOperation.addAbortSignal(signal)
83
82
  if (handleSIGINT) {
84
- Abortable.effect(executeOperation, (cb) =>
85
- raceProcessTeardownEvents(
83
+ executeOperation.addAbortSource((abort) => {
84
+ return raceProcessTeardownEvents(
86
85
  {
87
86
  SIGINT: true,
88
87
  },
89
- cb,
90
- ),
91
- )
88
+ abort,
89
+ )
90
+ })
92
91
  }
93
92
 
94
- const {
95
- outDirectoryRelativeUrl,
96
- origin: compileServerOrigin,
97
- stop,
98
- } = await startCompileServer({
99
- signal: executeOperation.signal,
100
- compileServerLogLevel,
101
-
102
- projectDirectoryUrl,
103
- jsenvDirectoryRelativeUrl,
104
- jsenvDirectoryClean,
105
- outDirectoryName: "out-dev",
106
-
107
- importDefaultExtension,
108
-
109
- compileServerProtocol,
110
- compileServerPrivateKey,
111
- compileServerCertificate,
112
- compileServerIp,
113
- compileServerPort,
114
- babelPluginMap,
115
- customCompilers,
116
- runtimeSupport: normalizeRuntimeSupport({
117
- [runtime.name]: runtime.version,
118
- }),
119
- compileServerCanReadFromFilesystem,
120
- compileServerCanWriteOnFilesystem,
121
- })
122
- executeOperation.cleaner.addCallback(() => {
123
- return stop()
124
- })
125
-
126
- const result = await launchAndExecute({
127
- signal: executeOperation.signal,
128
- launchAndExecuteLogLevel,
129
-
130
- runtime,
131
- runtimeParams: {
132
- projectDirectoryUrl,
133
- compileServerOrigin,
93
+ try {
94
+ const {
134
95
  outDirectoryRelativeUrl,
135
- ...runtimeParams,
136
- },
137
- executeParams: {
138
- fileRelativeUrl,
139
- },
140
-
141
- allocatedMs,
142
- measureDuration,
143
- mirrorConsole,
144
- captureConsole,
145
- collectRuntimeName,
146
- collectRuntimeVersion,
147
- inheritCoverage,
148
- collectCoverage,
149
- measurePerformance,
150
- collectPerformance,
151
-
152
- stopAfterExecute,
153
- stopAfterExecuteReason,
154
- gracefulStopAllocatedMs,
155
-
156
- runtimeConsoleCallback,
157
- runtimeStartedCallback,
158
- runtimeStoppedCallback,
159
- runtimeErrorAfterExecutionCallback,
160
- runtimeDisconnectCallback: () => {
161
- // stop server when runtime disconnects
162
- executeOperation.cleaner.clean("runtime-stopped")
163
- runtimeDisconnectCallback()
164
- },
165
- })
166
-
167
- if (collectCompileServerInfo) {
168
- result.outDirectoryRelativeUrl = outDirectoryRelativeUrl
169
- result.compileServerOrigin = compileServerOrigin
170
- }
96
+ origin: compileServerOrigin,
97
+ stop,
98
+ } = await startCompileServer({
99
+ signal: executeOperation.signal,
100
+ compileServerLogLevel,
101
+
102
+ projectDirectoryUrl,
103
+ jsenvDirectoryRelativeUrl,
104
+ jsenvDirectoryClean,
105
+ outDirectoryName: "out-dev",
106
+
107
+ importDefaultExtension,
108
+
109
+ compileServerProtocol,
110
+ compileServerPrivateKey,
111
+ compileServerCertificate,
112
+ compileServerIp,
113
+ compileServerPort,
114
+ babelPluginMap,
115
+ customCompilers,
116
+ runtimeSupport: normalizeRuntimeSupport({
117
+ [runtime.name]: runtime.version,
118
+ }),
119
+ compileServerCanReadFromFilesystem,
120
+ compileServerCanWriteOnFilesystem,
121
+ })
122
+ executeOperation.addEndCallback(async () => {
123
+ await stop("execution done")
124
+ })
171
125
 
172
- if (result.status === "errored") {
173
- if (ignoreError) {
174
- return result
126
+ const result = await launchAndExecute({
127
+ signal: executeOperation.signal,
128
+ launchAndExecuteLogLevel,
129
+
130
+ runtime,
131
+ runtimeParams: {
132
+ projectDirectoryUrl,
133
+ compileServerOrigin,
134
+ outDirectoryRelativeUrl,
135
+ ...runtimeParams,
136
+ },
137
+ executeParams: {
138
+ fileRelativeUrl,
139
+ },
140
+
141
+ allocatedMs,
142
+ measureDuration,
143
+ mirrorConsole,
144
+ captureConsole,
145
+ collectRuntimeName,
146
+ collectRuntimeVersion,
147
+ inheritCoverage,
148
+ collectCoverage,
149
+ measurePerformance,
150
+ collectPerformance,
151
+
152
+ stopAfterExecute,
153
+ stopAfterExecuteReason,
154
+ gracefulStopAllocatedMs,
155
+
156
+ runtimeConsoleCallback,
157
+ runtimeStartedCallback,
158
+ runtimeStoppedCallback,
159
+ runtimeErrorAfterExecutionCallback,
160
+ runtimeDisconnectCallback,
161
+ })
162
+
163
+ if (collectCompileServerInfo) {
164
+ result.outDirectoryRelativeUrl = outDirectoryRelativeUrl
165
+ result.compileServerOrigin = compileServerOrigin
175
166
  }
176
- /*
167
+
168
+ if (result.status === "errored") {
169
+ if (ignoreError) {
170
+ return result
171
+ }
172
+ /*
177
173
  Warning: when node launched with --unhandled-rejections=strict, despites
178
174
  this promise being rejected by throw result.error node will compltely ignore it.
179
175
 
@@ -185,7 +181,10 @@ export const execute = async ({
185
181
  ```
186
182
  But it feels like a hack.
187
183
  */
188
- throw result.error
184
+ throw result.error
185
+ }
186
+ return result
187
+ } finally {
188
+ await executeOperation.end()
189
189
  }
190
- return result
191
190
  }
@@ -14,9 +14,9 @@ import {
14
14
  } from "./internal/argUtils.js"
15
15
  import { executePlan } from "./internal/executing/executePlan.js"
16
16
  import { executionIsPassed } from "./internal/executing/executionIsPassed.js"
17
- import { generateCoverageJsonFile } from "./internal/executing/coverage/generateCoverageJsonFile.js"
18
- import { generateCoverageHtmlDirectory } from "./internal/executing/coverage/generateCoverageHtmlDirectory.js"
19
- import { generateCoverageTextLog } from "./internal/executing/coverage/generateCoverageTextLog.js"
17
+ import { generateCoverageJsonFile } from "./internal/executing/coverage_reporter/coverage_reporter_json_file.js"
18
+ import { generateCoverageHtmlDirectory } from "./internal/executing/coverage_reporter/coverage_reporter_html_directory.js"
19
+ import { generateCoverageTextLog } from "./internal/executing/coverage_reporter/coverage_reporter_text_log.js"
20
20
  import { jsenvCoverageConfig } from "./jsenvCoverageConfig.js"
21
21
 
22
22
  export const executeTestPlan = async ({
@@ -44,18 +44,18 @@ export const executeTestPlan = async ({
44
44
 
45
45
  coverage = process.argv.includes("--cover") ||
46
46
  process.argv.includes("--coverage"),
47
+ coverageTempDirectoryRelativeUrl = "./coverage/tmp/",
47
48
  coverageConfig = jsenvCoverageConfig,
48
49
  coverageIncludeMissing = true,
49
50
  coverageAndExecutionAllowed = false,
50
51
  coverageForceIstanbul = false,
51
- coverageV8MergeConflictIsExpected = false,
52
-
52
+ coverageV8ConflictWarning = true,
53
53
  coverageTextLog = true,
54
54
  coverageJsonFile = Boolean(process.env.CI),
55
55
  coverageJsonFileLog = true,
56
56
  coverageJsonFileRelativeUrl = "./coverage/coverage.json",
57
57
  coverageHtmlDirectory = !process.env.CI,
58
- coverageHtmlDirectoryRelativeUrl = "./coverage",
58
+ coverageHtmlDirectoryRelativeUrl = "./coverage/",
59
59
  coverageHtmlDirectoryIndexLog = true,
60
60
  // skip empty means empty files won't appear in the coverage reports (log and html)
61
61
  coverageSkipEmpty = false,
@@ -153,7 +153,8 @@ export const executeTestPlan = async ({
153
153
  coverageConfig,
154
154
  coverageIncludeMissing,
155
155
  coverageForceIstanbul,
156
- coverageV8MergeConflictIsExpected,
156
+ coverageV8ConflictWarning,
157
+ coverageTempDirectoryRelativeUrl,
157
158
 
158
159
  jsenvDirectoryClean,
159
160
  compileServerProtocol,
@@ -173,7 +174,7 @@ export const executeTestPlan = async ({
173
174
  }
174
175
 
175
176
  const planCoverage = result.planCoverage
176
- // planCoverage can be null when execution is abortes
177
+ // planCoverage can be null when execution is aborted
177
178
  if (planCoverage) {
178
179
  const promises = []
179
180
  // keep this one first because it does ensureEmptyDirectory
@@ -5,17 +5,16 @@ import {
5
5
  urlToExtension,
6
6
  } from "@jsenv/filesystem"
7
7
 
8
- import { Abortable } from "@jsenv/core/src/abort/main.js"
9
8
  import { jsenvCompileProxyHtmlFileInfo } from "@jsenv/core/src/internal/jsenvInternalFiles.js"
10
- import { v8CoverageFromAllV8Coverages } from "@jsenv/core/src/internal/executing/coverage/v8CoverageFromAllV8Coverages.js"
11
- import { composeIstanbulCoverages } from "@jsenv/core/src/internal/executing/coverage/composeIstanbulCoverages.js"
9
+ import { filterV8Coverage } from "@jsenv/core/src/internal/executing/coverage_utils/v8_coverage_from_directory.js"
10
+ import { composeTwoFileByFileIstanbulCoverages } from "@jsenv/core/src/internal/executing/coverage_utils/istanbul_coverage_composition.js"
12
11
  import { evalSource } from "../runtime/createNodeRuntime/evalSource.js"
13
12
  import { escapeRegexpSpecialCharacters } from "../escapeRegexpSpecialCharacters.js"
14
13
 
15
14
  export const executeHtmlFile = async (
16
15
  fileRelativeUrl,
17
16
  {
18
- launchBrowserOperation,
17
+ executeOperation,
19
18
  projectDirectoryUrl,
20
19
  compileServerOrigin,
21
20
  outDirectoryRelativeUrl,
@@ -24,7 +23,7 @@ export const executeHtmlFile = async (
24
23
  // measurePerformance,
25
24
  collectPerformance,
26
25
  collectCoverage,
27
- coverageConfig,
26
+ coverageIgnorePredicate,
28
27
  coverageForceIstanbul,
29
28
  coveragePlaywrightAPIAvailable,
30
29
  transformErrorHook,
@@ -47,13 +46,13 @@ export const executeHtmlFile = async (
47
46
  compileProxyProjectRelativeUrl,
48
47
  compileServerOrigin,
49
48
  )
50
- Abortable.throwIfAborted(launchBrowserOperation)
49
+ executeOperation.throwIfAborted()
51
50
  await page.goto(compileProxyClientUrl)
52
51
 
53
52
  const coverageHandledFromOutside =
54
53
  coveragePlaywrightAPIAvailable && !coverageForceIstanbul
55
54
 
56
- Abortable.throwIfAborted(launchBrowserOperation)
55
+ executeOperation.throwIfAborted()
57
56
  const browserRuntimeFeaturesReport = await page.evaluate(
58
57
  /* istanbul ignore next */
59
58
  ({ coverageHandledFromOutside }) => {
@@ -69,7 +68,7 @@ export const executeHtmlFile = async (
69
68
  try {
70
69
  let executionResult
71
70
  const { canAvoidCompilation, compileId } = browserRuntimeFeaturesReport
72
- Abortable.throwIfAborted(launchBrowserOperation)
71
+ executeOperation.throwIfAborted()
73
72
  if (canAvoidCompilation) {
74
73
  executionResult = await executeSource({
75
74
  projectDirectoryUrl,
@@ -77,7 +76,7 @@ export const executeHtmlFile = async (
77
76
  fileRelativeUrl,
78
77
  page,
79
78
  collectCoverage,
80
- coverageConfig,
79
+ coverageIgnorePredicate,
81
80
  transformErrorHook,
82
81
  })
83
82
  } else {
@@ -125,8 +124,8 @@ export const executeHtmlFile = async (
125
124
  // if browser is closed due to abort
126
125
  // before it is able to finish evaluate we can safely ignore
127
126
  // and rethrow with current abort error
128
- if (launchBrowserOperation.signal.aborted && isBrowserClosedError(error)) {
129
- Abortable.throwIfAborted(launchBrowserOperation)
127
+ if (executeOperation.signal.aborted && isBrowserClosedError(error)) {
128
+ executeOperation.throwIfAborted()
130
129
  }
131
130
  throw error
132
131
  }
@@ -150,7 +149,7 @@ const executeSource = async ({
150
149
  fileRelativeUrl,
151
150
  page,
152
151
  collectCoverage,
153
- coverageConfig,
152
+ coverageIgnorePredicate,
154
153
  transformErrorHook,
155
154
  }) => {
156
155
  let transformResult = (result) => result
@@ -176,11 +175,12 @@ const executeSource = async ({
176
175
  }
177
176
  },
178
177
  )
179
- const allV8Coverages = [{ result: v8CoveragesWithFsUrls }]
180
- const coverage = v8CoverageFromAllV8Coverages(allV8Coverages, {
181
- coverageRootUrl: projectDirectoryUrl,
182
- coverageConfig,
183
- })
178
+ const coverage = filterV8Coverage(
179
+ { result: v8CoveragesWithFsUrls },
180
+ {
181
+ coverageIgnorePredicate,
182
+ },
183
+ )
184
184
  return {
185
185
  ...result,
186
186
  coverage,
@@ -298,15 +298,18 @@ const executeCompiledVersion = async ({
298
298
  }
299
299
 
300
300
  const generateCoverageForPage = (fileExecutionResultMap) => {
301
- const istanbulCoverages = []
301
+ let istanbulCoverageComposed = null
302
302
  Object.keys(fileExecutionResultMap).forEach((fileRelativeUrl) => {
303
303
  const istanbulCoverage = fileExecutionResultMap[fileRelativeUrl].coverage
304
- if (istanbulCoverage) {
305
- istanbulCoverages.push(istanbulCoverage)
306
- }
304
+ istanbulCoverageComposed = istanbulCoverageComposed
305
+ ? composeTwoFileByFileIstanbulCoverages(
306
+ istanbulCoverageComposed,
307
+ istanbulCoverage,
308
+ )
309
+ : istanbulCoverage
307
310
  })
308
- const istanbulCoverage = composeIstanbulCoverages(istanbulCoverages)
309
- return istanbulCoverage
311
+
312
+ return istanbulCoverageComposed
310
313
  }
311
314
 
312
315
  const evalException = (
@@ -8,7 +8,6 @@ import {
8
8
  } from "@jsenv/filesystem"
9
9
  import { createDetailedMessage } from "@jsenv/logger"
10
10
 
11
- import { Abortable } from "@jsenv/core/src/abort/main.js"
12
11
  import { buildServiceWorker } from "@jsenv/core/src/internal/building/buildServiceWorker.js"
13
12
  import { humanizeUrl } from "@jsenv/core/src/internal/building/url_trace.js"
14
13
  import {
@@ -272,7 +271,7 @@ const useRollup = async ({
272
271
  buildDirectoryUrl,
273
272
  asOriginalUrl,
274
273
  }) => {
275
- Abortable.throwIfAborted(buildOperation)
274
+ buildOperation.throwIfAborted()
276
275
  const { rollup } = await import("rollup")
277
276
  const { importAssertions } = await import("acorn-import-assertions")
278
277
 
@@ -350,10 +349,10 @@ const useRollup = async ({
350
349
  : {}),
351
350
  }
352
351
 
353
- Abortable.throwIfAborted(buildOperation)
352
+ buildOperation.throwIfAborted()
354
353
  const rollupReturnValue = await rollup(rollupInputOptions)
355
354
 
356
- Abortable.throwIfAborted(buildOperation)
355
+ buildOperation.throwIfAborted()
357
356
  const rollupOutputArray = await rollupReturnValue.generate(
358
357
  rollupOutputOptions,
359
358
  )
@@ -1,5 +1,6 @@
1
+ import { ANSI, UNICODE } from "@jsenv/log"
2
+
1
3
  import { getHtmlNodeLocation } from "@jsenv/core/src/internal/compiling/compileHtml.js"
2
- import { setANSIColor, ANSI_GREY, okSign } from "../logs/log_style.js"
3
4
  import { byteAsFileSize } from "../logs/byteAsFileSize.js"
4
5
  import { msAsDuration } from "../logs/msAsDuration.js"
5
6
  import { stringifyUrlSite } from "./url_trace.js"
@@ -47,7 +48,7 @@ export const formatBuildDoneInfo = ({
47
48
  }) => {
48
49
  return `${formatBuildDoneDetails({ buildStats, buildDirectoryRelativeUrl })}
49
50
  ${formatBuildSummary({ buildStats })}
50
- ${okSign} build end
51
+ ${UNICODE.OK} build end
51
52
  `
52
53
  }
53
54
 
@@ -107,14 +108,14 @@ const formatBuildSummary = ({ buildStats }) => {
107
108
  const buildFileCount = Object.keys(buildFileSizes).length
108
109
 
109
110
  return `------- build summary -------
110
- ${setANSIColor(
111
+ ${ANSI.color(
111
112
  `project files:`,
112
- ANSI_GREY,
113
+ ANSI.GREY,
113
114
  )} ${projectFileCount} (${byteAsFileSize(projectTotalFileSize)})
114
- ${setANSIColor(`build files:`, ANSI_GREY)} ${buildFileCount} (${byteAsFileSize(
115
+ ${ANSI.color(`build files:`, ANSI.GREY)} ${buildFileCount} (${byteAsFileSize(
115
116
  buildTotalFileSize,
116
117
  )})
117
- ${setANSIColor(`build duration:`, ANSI_GREY)} ${msAsDuration(buildDuration)}
118
+ ${ANSI.color(`build duration:`, ANSI.GREY)} ${msAsDuration(buildDuration)}
118
119
  ------------------------------`
119
120
  }
120
121