@jsenv/core 23.8.2 → 23.8.7
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/jsenv_browser_system.js +46 -39
- package/dist/jsenv_browser_system.js.map +14 -14
- package/dist/jsenv_compile_proxy.js.map +6 -6
- package/dist/jsenv_exploring_index.js.map +5 -5
- package/dist/jsenv_exploring_redirector.js.map +12 -12
- package/dist/jsenv_toolbar.js.map +7 -7
- package/dist/jsenv_toolbar_injector.js.map +5 -5
- package/helpers/babel/.eslintrc.cjs +24 -24
- package/helpers/babel/AsyncGenerator/AsyncGenerator.js +81 -81
- package/helpers/babel/AwaitValue/AwaitValue.js +3 -3
- package/helpers/babel/applyDecoratorDescriptor/applyDecoratorDescriptor.js +33 -33
- package/helpers/babel/arrayLikeToArray/arrayLikeToArray.js +7 -7
- package/helpers/babel/arrayWithHoles/arrayWithHoles.js +4 -4
- package/helpers/babel/arrayWithoutHoles/arrayWithoutHoles.js +6 -6
- package/helpers/babel/assertThisInitialized/assertThisInitialized.js +7 -7
- package/helpers/babel/asyncGeneratorDelegate/asyncGeneratorDelegate.js +40 -40
- package/helpers/babel/asyncIterator/asyncIterator.js +12 -12
- package/helpers/babel/asyncToGenerator/asyncToGenerator.js +34 -34
- package/helpers/babel/awaitAsyncGenerator/awaitAsyncGenerator.js +5 -5
- package/helpers/babel/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +20 -20
- package/helpers/babel/classApplyDescriptorGet/classApplyDescriptorGet.js +6 -6
- package/helpers/babel/classApplyDescriptorSet/classApplyDescriptorSet.js +13 -13
- package/helpers/babel/classCallCheck/classCallCheck.js +5 -5
- package/helpers/babel/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -5
- package/helpers/babel/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -6
- package/helpers/babel/classExtractFieldDescriptor/classExtractFieldDescriptor.js +7 -7
- package/helpers/babel/classNameTDZError/classNameTDZError.js +4 -4
- package/helpers/babel/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +7 -7
- package/helpers/babel/classPrivateFieldGet/classPrivateFieldGet.js +7 -7
- package/helpers/babel/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +6 -6
- package/helpers/babel/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -5
- package/helpers/babel/classPrivateFieldSet/classPrivateFieldSet.js +8 -8
- package/helpers/babel/classPrivateMethodGet/classPrivateMethodGet.js +6 -6
- package/helpers/babel/classPrivateMethodSet/classPrivateMethodSet.js +3 -3
- package/helpers/babel/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +9 -9
- package/helpers/babel/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +15 -15
- package/helpers/babel/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +6 -6
- package/helpers/babel/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -3
- package/helpers/babel/construct/construct.js +16 -16
- package/helpers/babel/createClass/createClass.js +15 -15
- package/helpers/babel/createForOfIteratorHelper/createForOfIteratorHelper.js +60 -60
- package/helpers/babel/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +23 -23
- package/helpers/babel/createRawReactElement/createRawReactElement.js +50 -50
- package/helpers/babel/createSuper/createSuper.js +22 -22
- package/helpers/babel/decorate/decorate.js +403 -403
- package/helpers/babel/defaults/defaults.js +11 -11
- package/helpers/babel/defineEnumerableProperties/defineEnumerableProperties.js +23 -23
- package/helpers/babel/defineProperty/defineProperty.js +18 -18
- package/helpers/babel/extends/extends.js +14 -14
- package/helpers/babel/get/get.js +13 -13
- package/helpers/babel/getPrototypeOf/getPrototypeOf.js +4 -4
- package/helpers/babel/inherits/inherits.js +15 -15
- package/helpers/babel/inheritsLoose/inheritsLoose.js +7 -7
- package/helpers/babel/initializerDefineProperty/initializerDefineProperty.js +10 -10
- package/helpers/babel/initializerWarningHelper/initializerWarningHelper.js +6 -6
- package/helpers/babel/instanceof/instanceof.js +6 -6
- package/helpers/babel/interopRequireDefault/interopRequireDefault.js +3 -3
- package/helpers/babel/interopRequireWildcard/interopRequireWildcard.js +37 -37
- package/helpers/babel/isNativeFunction/isNativeFunction.js +4 -4
- package/helpers/babel/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -21
- package/helpers/babel/iterableToArray/iterableToArray.js +7 -7
- package/helpers/babel/iterableToArrayLimit/iterableToArrayLimit.js +36 -36
- package/helpers/babel/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +10 -10
- package/helpers/babel/jsx/jsx.js +45 -45
- package/helpers/babel/maybeArrayLike/maybeArrayLike.js +10 -10
- package/helpers/babel/newArrowCheck/newArrowCheck.js +5 -5
- package/helpers/babel/nonIterableRest/nonIterableRest.js +5 -5
- package/helpers/babel/nonIterableSpread/nonIterableSpread.js +5 -5
- package/helpers/babel/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -3
- package/helpers/babel/objectSpread/objectSpread.js +23 -23
- package/helpers/babel/objectSpread2/objectSpread2.js +33 -33
- package/helpers/babel/objectWithoutProperties/objectWithoutProperties.js +19 -19
- package/helpers/babel/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +13 -13
- package/helpers/babel/possibleConstructorReturn/possibleConstructorReturn.js +10 -10
- package/helpers/babel/readOnlyError/readOnlyError.js +4 -4
- package/helpers/babel/readme.md +9 -9
- package/helpers/babel/set/set.js +44 -44
- package/helpers/babel/setPrototypeOf/setPrototypeOf.js +6 -6
- package/helpers/babel/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -8
- package/helpers/babel/slicedToArray/slicedToArray.js +10 -10
- package/helpers/babel/slicedToArrayLoose/slicedToArrayLoose.js +13 -13
- package/helpers/babel/superPropBase/superPropBase.js +10 -10
- package/helpers/babel/taggedTemplateLiteral/taggedTemplateLiteral.js +10 -10
- package/helpers/babel/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +7 -7
- package/helpers/babel/tdz/tdz.js +4 -4
- package/helpers/babel/temporalRef/temporalRef.js +6 -6
- package/helpers/babel/temporalUndefined/temporalUndefined.js +3 -3
- package/helpers/babel/toArray/toArray.js +10 -10
- package/helpers/babel/toConsumableArray/toConsumableArray.js +10 -10
- package/helpers/babel/toPrimitive/toPrimitive.js +10 -10
- package/helpers/babel/toPropertyKey/toPropertyKey.js +6 -6
- package/helpers/babel/typeof/typeof.js +14 -14
- package/helpers/babel/unsupportedIterableToArray/unsupportedIterableToArray.js +12 -12
- package/helpers/babel/wrapAsyncGenerator/wrapAsyncGenerator.js +8 -8
- package/helpers/babel/wrapNativeSuper/wrapNativeSuper.js +30 -30
- package/helpers/babel/wrapRegExp/wrapRegExp.js +63 -63
- package/helpers/babel/writeOnlyError/writeOnlyError.js +4 -4
- package/helpers/regenerator-runtime/regenerator-runtime.js +748 -748
- package/{LICENSE → license} +21 -21
- package/package.json +2 -2
- package/src/buildProject.js +300 -300
- package/src/execute.js +184 -184
- package/src/internal/browser-launcher/jsenv-browser-system.js +203 -199
- package/src/internal/building/buildUsingRollup.js +2 -10
- package/src/internal/compiling/babel_plugin_import_assertions.js +121 -121
- package/src/internal/compiling/babel_plugin_import_metadata.js +22 -22
- package/src/internal/compiling/babel_plugin_import_visitor.js +84 -84
- package/src/internal/compiling/compile-directory/getOrGenerateCompiledFile.js +268 -268
- package/src/internal/compiling/compile-directory/updateMeta.js +154 -154
- package/src/internal/compiling/compile-directory/validateCache.js +265 -265
- package/src/internal/compiling/compileFile.js +233 -224
- package/src/internal/compiling/compileHtml.js +550 -550
- package/src/internal/compiling/createCompiledFileService.js +291 -291
- package/src/internal/compiling/html_source_file_service.js +403 -404
- package/src/internal/compiling/js-compilation-service/jsenvTransform.js +272 -270
- package/src/internal/compiling/jsenvCompilerForHtml.js +374 -308
- package/src/internal/compiling/jsenvCompilerForJavaScript.js +2 -0
- package/src/internal/compiling/startCompileServer.js +1086 -1048
- package/src/internal/compiling/transformResultToCompilationResult.js +220 -220
- package/src/internal/executing/coverage/babel_plugin_instrument.js +90 -90
- package/src/internal/executing/coverage/reportToCoverage.js +193 -187
- package/src/internal/executing/executePlan.js +183 -183
- package/src/internal/executing/launchAndExecute.js +458 -458
- package/src/internal/generateGroupMap/featuresCompatMap.js +29 -0
- package/src/internal/generateGroupMap/jsenvBabelPluginCompatMap.js +1 -8
- package/src/internal/runtime/createBrowserRuntime/scanBrowserRuntimeFeatures.js +246 -246
- package/src/internal/runtime/createNodeRuntime/scanNodeRuntimeFeatures.js +112 -112
- package/src/internal/runtime/s.js +727 -727
- package/src/internal/toolbar/jsenv-logo.svg +144 -144
- package/src/internal/toolbar/toolbar.main.css +196 -196
- package/src/internal/toolbar/toolbar.main.js +227 -227
- package/src/internal/url_conversion.js +317 -317
- package/src/startExploring.js +309 -309
|
@@ -1,187 +1,193 @@
|
|
|
1
|
-
import { readFile } from "@jsenv/filesystem"
|
|
2
|
-
import { Abort } from "@jsenv/abort"
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
visitNodeV8Directory,
|
|
6
|
-
filterV8Coverage,
|
|
7
|
-
} from "../coverage_utils/v8_coverage_from_directory.js"
|
|
8
|
-
import { composeTwoV8Coverages } from "../coverage_utils/v8_coverage_composition.js"
|
|
9
|
-
import { composeTwoFileByFileIstanbulCoverages } from "../coverage_utils/istanbul_coverage_composition.js"
|
|
10
|
-
import { v8CoverageToIstanbul } from "../coverage_utils/v8_coverage_to_istanbul.js"
|
|
11
|
-
import { composeV8AndIstanbul } from "../coverage_utils/v8_and_istanbul.js"
|
|
12
|
-
import { normalizeFileByFileCoveragePaths } from "../coverage_utils/file_by_file_coverage.js"
|
|
13
|
-
import { getMissingFileByFileCoverage } from "../coverage_missing/missing_coverage.js"
|
|
14
|
-
|
|
15
|
-
export const reportToCoverage = async (
|
|
16
|
-
report,
|
|
17
|
-
{
|
|
18
|
-
signal,
|
|
19
|
-
logger,
|
|
20
|
-
projectDirectoryUrl,
|
|
21
|
-
babelPluginMap,
|
|
22
|
-
coverageConfig,
|
|
23
|
-
coverageIncludeMissing,
|
|
24
|
-
coverageIgnorePredicate,
|
|
25
|
-
coverageForceIstanbul,
|
|
26
|
-
coverageV8ConflictWarning,
|
|
27
|
-
},
|
|
28
|
-
) => {
|
|
29
|
-
// collect v8 and istanbul coverage from executions
|
|
30
|
-
let { v8Coverage, fileByFileIstanbulCoverage } = await getCoverageFromReport({
|
|
31
|
-
signal,
|
|
32
|
-
report,
|
|
33
|
-
onMissing: ({ file, executionResult, executionName }) => {
|
|
34
|
-
// several reasons not to have coverage here:
|
|
35
|
-
// 1. the file we executed did not import an instrumented file.
|
|
36
|
-
// - a test file without import
|
|
37
|
-
// - a test file importing only file excluded from coverage
|
|
38
|
-
// - a coverDescription badly configured so that we don't realize
|
|
39
|
-
// a file should be covered
|
|
40
|
-
|
|
41
|
-
// 2. the file we wanted to executed timedout
|
|
42
|
-
// - infinite loop
|
|
43
|
-
// - too extensive operation
|
|
44
|
-
// - a badly configured or too low allocatedMs for that execution.
|
|
45
|
-
|
|
46
|
-
// 3. the file we wanted to execute contains syntax-error
|
|
47
|
-
|
|
48
|
-
// in any scenario we are fine because
|
|
49
|
-
// coverDescription will generate empty coverage for files
|
|
50
|
-
// that were suppose to be coverage but were not.
|
|
51
|
-
if (executionResult.status === "completed") {
|
|
52
|
-
logger.debug(
|
|
53
|
-
`No execution.coverageFileUrl from execution named "${executionName}" of ${file}`,
|
|
54
|
-
)
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
if (!coverageForceIstanbul && process.env.NODE_V8_COVERAGE) {
|
|
60
|
-
await visitNodeV8Directory({
|
|
61
|
-
signal,
|
|
62
|
-
NODE_V8_COVERAGE: process.env.NODE_V8_COVERAGE,
|
|
63
|
-
onV8Coverage: (nodeV8Coverage) => {
|
|
64
|
-
const nodeV8CoverageLight = filterV8Coverage(nodeV8Coverage, {
|
|
65
|
-
coverageIgnorePredicate,
|
|
66
|
-
})
|
|
67
|
-
v8Coverage = v8Coverage
|
|
68
|
-
? composeTwoV8Coverages(v8Coverage, nodeV8CoverageLight)
|
|
69
|
-
: nodeV8CoverageLight
|
|
70
|
-
},
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// try to merge v8 with istanbul, if any
|
|
75
|
-
let fileByFileCoverage
|
|
76
|
-
if (v8Coverage) {
|
|
77
|
-
let v8FileByFileCoverage = await v8CoverageToIstanbul(v8Coverage, {
|
|
78
|
-
signal,
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
v8FileByFileCoverage = normalizeFileByFileCoveragePaths(
|
|
82
|
-
v8FileByFileCoverage,
|
|
83
|
-
projectDirectoryUrl,
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
if (fileByFileIstanbulCoverage) {
|
|
87
|
-
fileByFileIstanbulCoverage = normalizeFileByFileCoveragePaths(
|
|
88
|
-
fileByFileIstanbulCoverage,
|
|
89
|
-
projectDirectoryUrl,
|
|
90
|
-
)
|
|
91
|
-
fileByFileCoverage = composeV8AndIstanbul(
|
|
92
|
-
v8FileByFileCoverage,
|
|
93
|
-
fileByFileIstanbulCoverage,
|
|
94
|
-
{ coverageV8ConflictWarning },
|
|
95
|
-
)
|
|
96
|
-
} else {
|
|
97
|
-
fileByFileCoverage = v8FileByFileCoverage
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
// get istanbul only
|
|
101
|
-
else if (fileByFileIstanbulCoverage) {
|
|
102
|
-
fileByFileCoverage = normalizeFileByFileCoveragePaths(
|
|
103
|
-
fileByFileIstanbulCoverage,
|
|
104
|
-
projectDirectoryUrl,
|
|
105
|
-
)
|
|
106
|
-
}
|
|
107
|
-
// no coverage found in execution (or zero file where executed)
|
|
108
|
-
else {
|
|
109
|
-
fileByFileCoverage = {}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// now add coverage for file not covered
|
|
113
|
-
if (coverageIncludeMissing) {
|
|
114
|
-
const missingFileByFileCoverage = await getMissingFileByFileCoverage({
|
|
115
|
-
signal,
|
|
116
|
-
projectDirectoryUrl,
|
|
117
|
-
coverageConfig,
|
|
118
|
-
fileByFileCoverage,
|
|
119
|
-
babelPluginMap,
|
|
120
|
-
})
|
|
121
|
-
Object.assign(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
1
|
+
import { readFile } from "@jsenv/filesystem"
|
|
2
|
+
import { Abort } from "@jsenv/abort"
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
visitNodeV8Directory,
|
|
6
|
+
filterV8Coverage,
|
|
7
|
+
} from "../coverage_utils/v8_coverage_from_directory.js"
|
|
8
|
+
import { composeTwoV8Coverages } from "../coverage_utils/v8_coverage_composition.js"
|
|
9
|
+
import { composeTwoFileByFileIstanbulCoverages } from "../coverage_utils/istanbul_coverage_composition.js"
|
|
10
|
+
import { v8CoverageToIstanbul } from "../coverage_utils/v8_coverage_to_istanbul.js"
|
|
11
|
+
import { composeV8AndIstanbul } from "../coverage_utils/v8_and_istanbul.js"
|
|
12
|
+
import { normalizeFileByFileCoveragePaths } from "../coverage_utils/file_by_file_coverage.js"
|
|
13
|
+
import { getMissingFileByFileCoverage } from "../coverage_missing/missing_coverage.js"
|
|
14
|
+
|
|
15
|
+
export const reportToCoverage = async (
|
|
16
|
+
report,
|
|
17
|
+
{
|
|
18
|
+
signal,
|
|
19
|
+
logger,
|
|
20
|
+
projectDirectoryUrl,
|
|
21
|
+
babelPluginMap,
|
|
22
|
+
coverageConfig,
|
|
23
|
+
coverageIncludeMissing,
|
|
24
|
+
coverageIgnorePredicate,
|
|
25
|
+
coverageForceIstanbul,
|
|
26
|
+
coverageV8ConflictWarning,
|
|
27
|
+
},
|
|
28
|
+
) => {
|
|
29
|
+
// collect v8 and istanbul coverage from executions
|
|
30
|
+
let { v8Coverage, fileByFileIstanbulCoverage } = await getCoverageFromReport({
|
|
31
|
+
signal,
|
|
32
|
+
report,
|
|
33
|
+
onMissing: ({ file, executionResult, executionName }) => {
|
|
34
|
+
// several reasons not to have coverage here:
|
|
35
|
+
// 1. the file we executed did not import an instrumented file.
|
|
36
|
+
// - a test file without import
|
|
37
|
+
// - a test file importing only file excluded from coverage
|
|
38
|
+
// - a coverDescription badly configured so that we don't realize
|
|
39
|
+
// a file should be covered
|
|
40
|
+
|
|
41
|
+
// 2. the file we wanted to executed timedout
|
|
42
|
+
// - infinite loop
|
|
43
|
+
// - too extensive operation
|
|
44
|
+
// - a badly configured or too low allocatedMs for that execution.
|
|
45
|
+
|
|
46
|
+
// 3. the file we wanted to execute contains syntax-error
|
|
47
|
+
|
|
48
|
+
// in any scenario we are fine because
|
|
49
|
+
// coverDescription will generate empty coverage for files
|
|
50
|
+
// that were suppose to be coverage but were not.
|
|
51
|
+
if (executionResult.status === "completed") {
|
|
52
|
+
logger.debug(
|
|
53
|
+
`No execution.coverageFileUrl from execution named "${executionName}" of ${file}`,
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
if (!coverageForceIstanbul && process.env.NODE_V8_COVERAGE) {
|
|
60
|
+
await visitNodeV8Directory({
|
|
61
|
+
signal,
|
|
62
|
+
NODE_V8_COVERAGE: process.env.NODE_V8_COVERAGE,
|
|
63
|
+
onV8Coverage: (nodeV8Coverage) => {
|
|
64
|
+
const nodeV8CoverageLight = filterV8Coverage(nodeV8Coverage, {
|
|
65
|
+
coverageIgnorePredicate,
|
|
66
|
+
})
|
|
67
|
+
v8Coverage = v8Coverage
|
|
68
|
+
? composeTwoV8Coverages(v8Coverage, nodeV8CoverageLight)
|
|
69
|
+
: nodeV8CoverageLight
|
|
70
|
+
},
|
|
71
|
+
})
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// try to merge v8 with istanbul, if any
|
|
75
|
+
let fileByFileCoverage
|
|
76
|
+
if (v8Coverage) {
|
|
77
|
+
let v8FileByFileCoverage = await v8CoverageToIstanbul(v8Coverage, {
|
|
78
|
+
signal,
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
v8FileByFileCoverage = normalizeFileByFileCoveragePaths(
|
|
82
|
+
v8FileByFileCoverage,
|
|
83
|
+
projectDirectoryUrl,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
if (fileByFileIstanbulCoverage) {
|
|
87
|
+
fileByFileIstanbulCoverage = normalizeFileByFileCoveragePaths(
|
|
88
|
+
fileByFileIstanbulCoverage,
|
|
89
|
+
projectDirectoryUrl,
|
|
90
|
+
)
|
|
91
|
+
fileByFileCoverage = composeV8AndIstanbul(
|
|
92
|
+
v8FileByFileCoverage,
|
|
93
|
+
fileByFileIstanbulCoverage,
|
|
94
|
+
{ coverageV8ConflictWarning },
|
|
95
|
+
)
|
|
96
|
+
} else {
|
|
97
|
+
fileByFileCoverage = v8FileByFileCoverage
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// get istanbul only
|
|
101
|
+
else if (fileByFileIstanbulCoverage) {
|
|
102
|
+
fileByFileCoverage = normalizeFileByFileCoveragePaths(
|
|
103
|
+
fileByFileIstanbulCoverage,
|
|
104
|
+
projectDirectoryUrl,
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
// no coverage found in execution (or zero file where executed)
|
|
108
|
+
else {
|
|
109
|
+
fileByFileCoverage = {}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// now add coverage for file not covered
|
|
113
|
+
if (coverageIncludeMissing) {
|
|
114
|
+
const missingFileByFileCoverage = await getMissingFileByFileCoverage({
|
|
115
|
+
signal,
|
|
116
|
+
projectDirectoryUrl,
|
|
117
|
+
coverageConfig,
|
|
118
|
+
fileByFileCoverage,
|
|
119
|
+
babelPluginMap,
|
|
120
|
+
})
|
|
121
|
+
Object.assign(
|
|
122
|
+
fileByFileCoverage,
|
|
123
|
+
normalizeFileByFileCoveragePaths(
|
|
124
|
+
missingFileByFileCoverage,
|
|
125
|
+
projectDirectoryUrl,
|
|
126
|
+
),
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return fileByFileCoverage
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const getCoverageFromReport = async ({ signal, report, onMissing }) => {
|
|
134
|
+
const operation = Abort.startOperation()
|
|
135
|
+
operation.addAbortSignal(signal)
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
let v8Coverage
|
|
139
|
+
let fileByFileIstanbulCoverage
|
|
140
|
+
|
|
141
|
+
// collect v8 and istanbul coverage from executions
|
|
142
|
+
await Object.keys(report).reduce(async (previous, file) => {
|
|
143
|
+
operation.throwIfAborted()
|
|
144
|
+
await previous
|
|
145
|
+
|
|
146
|
+
const executionResultForFile = report[file]
|
|
147
|
+
await Object.keys(executionResultForFile).reduce(
|
|
148
|
+
async (previous, executionName) => {
|
|
149
|
+
operation.throwIfAborted()
|
|
150
|
+
await previous
|
|
151
|
+
|
|
152
|
+
const executionResultForFileOnRuntime =
|
|
153
|
+
executionResultForFile[executionName]
|
|
154
|
+
const { coverageFileUrl } = executionResultForFileOnRuntime
|
|
155
|
+
if (!coverageFileUrl) {
|
|
156
|
+
onMissing({
|
|
157
|
+
executionName,
|
|
158
|
+
file,
|
|
159
|
+
executionResult: executionResultForFileOnRuntime,
|
|
160
|
+
})
|
|
161
|
+
return
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const executionCoverage = await readFile(coverageFileUrl, {
|
|
165
|
+
as: "json",
|
|
166
|
+
})
|
|
167
|
+
if (isV8Coverage(executionCoverage)) {
|
|
168
|
+
v8Coverage = v8Coverage
|
|
169
|
+
? composeTwoV8Coverages(v8Coverage, executionCoverage)
|
|
170
|
+
: executionCoverage
|
|
171
|
+
} else {
|
|
172
|
+
fileByFileIstanbulCoverage = fileByFileIstanbulCoverage
|
|
173
|
+
? composeTwoFileByFileIstanbulCoverages(
|
|
174
|
+
fileByFileIstanbulCoverage,
|
|
175
|
+
executionCoverage,
|
|
176
|
+
)
|
|
177
|
+
: executionCoverage
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
Promise.resolve(),
|
|
181
|
+
)
|
|
182
|
+
}, Promise.resolve())
|
|
183
|
+
|
|
184
|
+
return {
|
|
185
|
+
v8Coverage,
|
|
186
|
+
fileByFileIstanbulCoverage,
|
|
187
|
+
}
|
|
188
|
+
} finally {
|
|
189
|
+
await operation.end()
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const isV8Coverage = (coverage) => Boolean(coverage.result)
|