@jsenv/core 27.0.0-alpha.80 → 27.0.0-alpha.83
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.
- package/dist/babel_helpers/applyDecs/applyDecs.js +756 -0
- package/dist/babel_helpers/construct/construct.js +1 -1
- package/dist/babel_helpers/extends/extends.js +1 -1
- package/dist/babel_helpers/get/get.js +1 -1
- package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +1 -1
- package/dist/babel_helpers/identity/identity.js +3 -0
- package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +2 -2
- package/dist/js/event_source_client.js +205 -1
- package/dist/main.js +852 -63
- package/package.json +9 -10
- package/src/build/start_build_server.js +29 -26
- package/src/dev/start_dev_server.js +34 -30
- package/src/execute/runtimes/browsers/from_playwright.js +3 -2
- package/src/helpers/event_source/event_source.js +197 -0
- package/src/helpers/event_source/sse_service.js +53 -0
- package/src/helpers/worker_reload.js +56 -0
- package/src/plugins/autoreload/dev_sse/client/event_source_client.js +1 -1
- package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +1 -1
- package/src/test/coverage/babel_plugin_instrument.js +82 -0
- package/src/test/coverage/coverage_reporter_html_directory.js +36 -0
- package/src/test/coverage/coverage_reporter_json_file.js +22 -0
- package/src/test/coverage/coverage_reporter_text_log.js +19 -0
- package/src/test/coverage/empty_coverage_factory.js +52 -0
- package/src/test/coverage/file_by_file_coverage.js +26 -0
- package/src/test/coverage/istanbul_coverage_composition.js +28 -0
- package/src/test/coverage/istanbul_coverage_map_from_coverage.js +16 -0
- package/src/test/coverage/list_files_not_covered.js +15 -0
- package/src/test/coverage/missing_coverage.js +41 -0
- package/src/test/coverage/report_to_coverage.js +196 -0
- package/src/test/coverage/v8_and_istanbul.js +37 -0
- package/src/test/coverage/v8_coverage_composition.js +24 -0
- package/src/test/coverage/v8_coverage_from_directory.js +87 -0
- package/src/test/coverage/v8_coverage_to_istanbul.js +99 -0
- package/src/test/execute_plan.js +2 -2
- package/src/test/execute_test_plan.js +3 -3
- package/dist/babel_helpers/readme.md +0 -8
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
2
|
+
import { Abort } from "@jsenv/abort"
|
|
3
|
+
|
|
4
|
+
import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
|
|
5
|
+
import { composeTwoFileByFileIstanbulCoverages } from "./istanbul_coverage_composition.js"
|
|
6
|
+
|
|
7
|
+
export const v8CoverageToIstanbul = async (v8Coverage, { signal }) => {
|
|
8
|
+
const operation = Abort.startOperation()
|
|
9
|
+
operation.addAbortSignal(signal)
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
const v8ToIstanbul = requireFromJsenv("v8-to-istanbul")
|
|
13
|
+
const sourcemapCache = v8Coverage["source-map-cache"]
|
|
14
|
+
let istanbulCoverageComposed = null
|
|
15
|
+
|
|
16
|
+
await v8Coverage.result.reduce(async (previous, fileV8Coverage) => {
|
|
17
|
+
operation.throwIfAborted()
|
|
18
|
+
await previous
|
|
19
|
+
|
|
20
|
+
const { source } = fileV8Coverage
|
|
21
|
+
let sources
|
|
22
|
+
// when v8 coverage comes from playwright (chromium) v8Coverage.source is set
|
|
23
|
+
if (typeof source === "string") {
|
|
24
|
+
sources = { source }
|
|
25
|
+
}
|
|
26
|
+
// when v8 coverage comes from Node.js, the source can be read from sourcemapCache
|
|
27
|
+
else if (sourcemapCache) {
|
|
28
|
+
sources = sourcesFromSourceMapCache(fileV8Coverage.url, sourcemapCache)
|
|
29
|
+
}
|
|
30
|
+
const path = urlToFileSystemPath(fileV8Coverage.url)
|
|
31
|
+
|
|
32
|
+
const converter = v8ToIstanbul(
|
|
33
|
+
path,
|
|
34
|
+
// wrapperLength is undefined we don't need it
|
|
35
|
+
// https://github.com/istanbuljs/v8-to-istanbul/blob/2b54bc97c5edf8a37b39a171ec29134ba9bfd532/lib/v8-to-istanbul.js#L27
|
|
36
|
+
undefined,
|
|
37
|
+
sources,
|
|
38
|
+
)
|
|
39
|
+
await converter.load()
|
|
40
|
+
|
|
41
|
+
converter.applyCoverage(fileV8Coverage.functions)
|
|
42
|
+
const istanbulCoverage = converter.toIstanbul()
|
|
43
|
+
|
|
44
|
+
istanbulCoverageComposed = istanbulCoverageComposed
|
|
45
|
+
? composeTwoFileByFileIstanbulCoverages(
|
|
46
|
+
istanbulCoverageComposed,
|
|
47
|
+
istanbulCoverage,
|
|
48
|
+
)
|
|
49
|
+
: istanbulCoverage
|
|
50
|
+
}, Promise.resolve())
|
|
51
|
+
|
|
52
|
+
if (!istanbulCoverageComposed) {
|
|
53
|
+
return {}
|
|
54
|
+
}
|
|
55
|
+
istanbulCoverageComposed = markAsConvertedFromV8(istanbulCoverageComposed)
|
|
56
|
+
return istanbulCoverageComposed
|
|
57
|
+
} finally {
|
|
58
|
+
await operation.end()
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const markAsConvertedFromV8 = (fileByFileCoverage) => {
|
|
63
|
+
const fileByFileMarked = {}
|
|
64
|
+
Object.keys(fileByFileCoverage).forEach((key) => {
|
|
65
|
+
const fileCoverage = fileByFileCoverage[key]
|
|
66
|
+
fileByFileMarked[key] = {
|
|
67
|
+
...fileCoverage,
|
|
68
|
+
fromV8: true,
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
return fileByFileMarked
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const sourcesFromSourceMapCache = (url, sourceMapCache) => {
|
|
75
|
+
const sourceMapAndLineLengths = sourceMapCache[url]
|
|
76
|
+
if (!sourceMapAndLineLengths) {
|
|
77
|
+
return {}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const { data, lineLengths } = sourceMapAndLineLengths
|
|
81
|
+
// See: https://github.com/nodejs/node/pull/34305
|
|
82
|
+
if (!data) {
|
|
83
|
+
return undefined
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const sources = {
|
|
87
|
+
sourcemap: data,
|
|
88
|
+
...(lineLengths ? { source: sourcesFromLineLengths(lineLengths) } : {}),
|
|
89
|
+
}
|
|
90
|
+
return sources
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const sourcesFromLineLengths = (lineLengths) => {
|
|
94
|
+
let source = ""
|
|
95
|
+
lineLengths.forEach((length) => {
|
|
96
|
+
source += `${"".padEnd(length, ".")}\n`
|
|
97
|
+
})
|
|
98
|
+
return source
|
|
99
|
+
}
|
package/src/test/execute_plan.js
CHANGED
|
@@ -19,8 +19,8 @@ import {
|
|
|
19
19
|
writeFileSync,
|
|
20
20
|
} from "@jsenv/filesystem"
|
|
21
21
|
|
|
22
|
-
import { babelPluginInstrument } from "
|
|
23
|
-
import { reportToCoverage } from "
|
|
22
|
+
import { babelPluginInstrument } from "./coverage/babel_plugin_instrument.js"
|
|
23
|
+
import { reportToCoverage } from "./coverage/report_to_coverage.js"
|
|
24
24
|
import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
|
|
25
25
|
import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
|
|
26
26
|
import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
} from "@jsenv/filesystem"
|
|
7
7
|
import { createLogger, createDetailedMessage } from "@jsenv/log"
|
|
8
8
|
|
|
9
|
-
import { generateCoverageJsonFile } from "
|
|
10
|
-
import { generateCoverageHtmlDirectory } from "
|
|
11
|
-
import { generateCoverageTextLog } from "
|
|
9
|
+
import { generateCoverageJsonFile } from "./coverage/coverage_reporter_json_file.js"
|
|
10
|
+
import { generateCoverageHtmlDirectory } from "./coverage/coverage_reporter_html_directory.js"
|
|
11
|
+
import { generateCoverageTextLog } from "./coverage/coverage_reporter_text_log.js"
|
|
12
12
|
import { executePlan } from "./execute_plan.js"
|
|
13
13
|
|
|
14
14
|
export const defaultCoverageConfig = {
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Babel helpers
|
|
2
|
-
|
|
3
|
-
Babel helpers are copied in there to properly appear in sourcemap.
|
|
4
|
-
|
|
5
|
-
- Last sync date: 31 January 2022
|
|
6
|
-
|
|
7
|
-
- Helpers file: https://github.com/babel/babel/blob/main/packages/babel-helpers/src/helpers.ts
|
|
8
|
-
- Individual helpers: https://github.com/babel/babel/tree/main/packages/babel-helpers/src/helpers
|