@jsenv/core 24.2.1 → 24.3.3
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/browser_runtime/browser_runtime-fbd309a1.js +5137 -0
- package/dist/browser_runtime/browser_runtime-fbd309a1.js.map +1064 -0
- package/dist/{jsenv_browser_system.js → browser_system/browser_system-29eda202.js} +12 -12
- package/dist/{jsenv_browser_system.js.map → browser_system/browser_system-29eda202.js.map} +64 -64
- package/dist/build_manifest.js +12 -0
- package/dist/compile_proxy/assets/s.js-749702e8.map +242 -0
- package/dist/compile_proxy/compile_proxy-405777e6.html +2074 -0
- package/dist/compile_proxy/compile_proxy.html__inline__20-39c0801c.js.map +385 -0
- package/dist/{jsenv_event_source_client.js → event_source_client/event_source_client-9f14c8b9.js} +39 -21
- package/dist/event_source_client/event_source_client-9f14c8b9.js.map +127 -0
- package/dist/redirector/assets/s.js-749702e8.map +242 -0
- package/dist/redirector/redirector-237cd168.html +2118 -0
- package/dist/redirector/redirector.html__inline__15-33acb0b9.js.map +390 -0
- package/dist/toolbar/assets/compilation.css-209d68b4.map +12 -0
- package/dist/toolbar/assets/eventsource.css-38cd0a36.map +12 -0
- package/dist/toolbar/assets/execution.css-0ebe522f.map +12 -0
- package/dist/toolbar/assets/focus.css-3f9c156d.map +12 -0
- package/dist/toolbar/assets/light-theme.css-78b19a80.map +12 -0
- package/dist/toolbar/assets/overflow-menu.css-d9688a1c.map +12 -0
- package/dist/toolbar/assets/s.js-749702e8.map +242 -0
- package/dist/toolbar/assets/settings.css-2b81b245.map +12 -0
- package/dist/toolbar/assets/toolbar.main.css-846920e9.map +28 -0
- package/dist/toolbar/assets/tooltip.css-03395ee6.map +12 -0
- package/dist/toolbar/toolbar-29e91dcd.html +4779 -0
- package/dist/toolbar/toolbar.main-53e1ab2b.js.map +795 -0
- package/dist/toolbar_injector/assets/jsenv-logo-188b9ca6.svg +95 -0
- package/dist/{jsenv_toolbar_injector.js → toolbar_injector/toolbar_injector-0af91b43.js} +87 -65
- package/dist/toolbar_injector/toolbar_injector-0af91b43.js.map +294 -0
- package/main.js +0 -1
- package/package.json +2 -1
- package/readme.md +10 -7
- package/src/buildProject.js +6 -2
- package/src/dev_server.js +26 -130
- package/src/execute.js +7 -10
- package/src/importUsingChildProcess.js +1 -1
- package/src/internal/{runtime/detectBrowser/detectBrowser.js → browser_detection/browser_detection.js} +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectAndroid.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectChrome.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectEdge.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectElectron.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectFirefox.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectIOS.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectInternetExplorer.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectOpera.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/detectSafari.js +0 -0
- package/src/internal/{runtime/detectBrowser → browser_detection}/util.js +0 -0
- package/src/internal/{runtime/createBrowserRuntime/scanBrowserRuntimeFeatures.js → browser_feature_detection/browser_feature_detection.js} +116 -81
- package/src/internal/browser_feature_detection/compile_proxy.html +27 -0
- package/src/internal/browser_launcher/browser_runtime_report.js +75 -0
- package/src/internal/{browser-launcher → browser_launcher}/createSharing.js +0 -0
- package/src/internal/{browser-launcher → browser_launcher}/executeHtmlFile.js +13 -16
- package/src/internal/{browser-launcher → browser_launcher}/trackPageToNotify.js +0 -0
- package/src/internal/{browser-launcher/jsenv-browser-system.js → browser_runtime/browser_runtime.js} +4 -4
- package/src/internal/{runtime/createBrowserRuntime/createBrowserSystem.js → browser_runtime/browser_system.js} +3 -2
- package/src/internal/{runtime/createBrowserRuntime → browser_runtime}/createBrowserRuntime.js +7 -5
- package/src/internal/{browser-launcher → browser_runtime}/displayErrorInDocument.js +0 -0
- package/src/internal/{browser-launcher → browser_runtime}/displayErrorNotification.js +2 -4
- package/src/internal/{runtime/createBrowserRuntime → browser_runtime}/evalSource.js +2 -0
- package/src/internal/{runtime/createBrowserRuntime → browser_runtime}/makeNamespaceTransferable.js +0 -0
- package/src/internal/{browser-utils → browser_utils}/fetch-browser.js +2 -0
- package/src/internal/{browser-utils → browser_utils}/fetchAndEvalUsingFetch.js +3 -0
- package/src/internal/{browser-utils → browser_utils}/fetchAndEvalUsingScript.js +2 -0
- package/src/internal/{browser-utils → browser_utils}/fetchJson.js +0 -0
- package/src/internal/{browser-utils → browser_utils}/fetchUsingXHR.js +4 -4
- package/src/internal/building/buildUsingRollup.js +4 -0
- package/src/internal/building/createJsenvRollupPlugin.js +19 -9
- package/src/internal/building/css/applyPostCss.js +19 -8
- package/src/internal/building/css/moveCssUrls.js +44 -0
- package/src/internal/building/css/parseCssRessource.js +67 -17
- package/src/internal/building/css/parseCssUrls.js +29 -23
- package/src/internal/building/css/postcss_plugin_url_visitor.js +11 -20
- package/src/internal/building/css/replaceCssUrls.js +38 -19
- package/src/internal/building/css_module.js +6 -10
- package/src/internal/building/html/parseHtmlRessource.js +37 -11
- package/src/internal/building/parseRessource.js +3 -0
- package/src/internal/building/ressource_builder.js +12 -3
- package/src/internal/compiling/babel_plugin_import_assertions.js +1 -2
- package/src/internal/compiling/html_source_file_service.js +23 -21
- package/src/internal/compiling/jsenvCompilerForHtml.js +15 -22
- package/src/internal/compiling/startCompileServer.js +37 -32
- package/src/internal/dev_server/event_source_client/event_source_connection.js +28 -19
- package/src/internal/dev_server/exploring/exploring.html +7 -2
- package/src/internal/dev_server/exploring/fetchExploringJson.js +4 -9
- package/src/internal/dev_server/redirector/redirector.html +37 -2
- package/src/internal/dev_server/toolbar/compilation/toolbar.compilation.js +4 -7
- package/src/internal/dev_server/toolbar/eventsource/toolbar.eventsource.js +2 -2
- package/src/internal/dev_server/toolbar/notification/toolbar.notification.js +75 -44
- package/src/internal/dev_server/toolbar/toolbar.html +31 -5
- package/src/internal/dev_server/toolbar/toolbar.injector.js +55 -36
- package/src/internal/dev_server/toolbar/toolbar.main.js +45 -31
- package/src/internal/dev_server/toolbar/util/fetching.js +1 -1
- package/src/internal/executing/executeConcurrently.js +5 -4
- package/src/internal/executing/executePlan.js +1 -2
- package/src/internal/generateGroupMap/one_runtime_compat.js +1 -1
- package/src/internal/generateGroupMap/runtime_compat_composition.js +1 -1
- package/src/internal/generateGroupMap/runtime_support.js +1 -1
- package/src/internal/jsenvInternalFiles.js +0 -26
- package/src/internal/jsenv_builds.js +19 -0
- package/src/internal/{runtime/node-feature-detect/feature-detect-dynamic-import.mjs → node_feature_detection/feature_detect_dynamic_import.mjs} +0 -0
- package/src/internal/{runtime/node-feature-detect/feature-detect-top-level-await.mjs → node_feature_detection/feature_detect_top_level_await.mjs} +0 -0
- package/src/internal/{runtime/node-feature-detect → node_feature_detection}/nodeSupportsDynamicImport.js +0 -0
- package/src/internal/node_feature_detection/nodeSupportsTopLevelAwait.js +16 -0
- package/src/internal/{runtime/createNodeRuntime/scanNodeRuntimeFeatures.js → node_feature_detection/node_feature_detection.js} +12 -13
- package/src/internal/{node-launcher → node_launcher}/createChildProcessOptions.js +0 -0
- package/src/internal/{node-launcher → node_launcher}/createControllableNodeProcess.js +9 -14
- package/src/internal/{node-launcher → node_launcher}/kill_process_tree.js +0 -0
- package/src/internal/node_launcher/node_runtime_report.js +71 -0
- package/src/internal/{node-launcher → node_launcher}/processOptions.js +0 -0
- package/src/internal/{runtime/detectNode → node_runtime}/detectNode.js +0 -0
- package/src/internal/{runtime/createNodeRuntime → node_runtime}/evalSource.js +1 -1
- package/src/internal/{runtime/createNodeRuntime → node_runtime}/fetchSource.js +1 -1
- package/src/internal/{node-launcher → node_runtime}/nodeControllableFile.mjs +14 -11
- package/src/internal/{runtime/createNodeRuntime/createNodeExecutionWithDynamicImport.js → node_runtime/node_execution_dynamic_import.js} +34 -6
- package/src/internal/node_runtime/node_execution_performance.js +67 -0
- package/src/internal/{runtime/createNodeRuntime/createNodeExecutionWithSystemJs.js → node_runtime/node_execution_systemjs.js} +38 -24
- package/src/internal/{runtime/createNodeRuntime/createNodeSystem.js → node_runtime/node_system.js} +4 -4
- package/src/internal/runtime/computeCompileIdFromGroupId.js +1 -0
- package/src/internal/runtime/resolveGroup.js +1 -1
- package/src/internal/runtime/resolveRuntimeGroup.js +2 -2
- package/src/internal/{semantic-versioning → semantic_versioning}/findHighestVersion.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/findLowestVersion.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/index.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/valueToVersion.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/versionCompare.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/versionIsAbove.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/versionIsBelow.js +0 -0
- package/src/internal/{semantic-versioning → semantic_versioning}/versionIsEqual.js +0 -0
- package/src/launchBrowser.js +12 -3
- package/src/launchNode.js +36 -7
- package/src/requireUsingChildProcess.js +1 -1
- package/dist/jsenv_compile_proxy.js +0 -1339
- package/dist/jsenv_compile_proxy.js.map +0 -378
- package/dist/jsenv_event_source_client.js.map +0 -126
- package/dist/jsenv_exploring_index.js +0 -1092
- package/dist/jsenv_exploring_index.js.map +0 -353
- package/dist/jsenv_exploring_redirector.js +0 -1386
- package/dist/jsenv_exploring_redirector.js.map +0 -384
- package/dist/jsenv_redirector.js +0 -1388
- package/dist/jsenv_redirector.js.map +0 -384
- package/dist/jsenv_toolbar.js +0 -2880
- package/dist/jsenv_toolbar.js.map +0 -771
- package/dist/jsenv_toolbar_injector.js.map +0 -301
- package/src/internal/browser-launcher/jsenv_compile_proxy.html +0 -13
- package/src/internal/browser-launcher/jsenv_compile_proxy.js +0 -5
- package/src/internal/dev_server/event_source_client/event_source_client_file_info.js +0 -17
- package/src/internal/dev_server/exploring/exploring_file_info.js +0 -21
- package/src/internal/dev_server/redirector/redirector.js +0 -30
- package/src/internal/dev_server/redirector/redirector_file_info.js +0 -24
- package/src/internal/dev_server/toolbar/backtolist/toolbar.backtolist.js +0 -33
- package/src/internal/dev_server/toolbar/toolbar_file_info.js +0 -37
- package/src/internal/node-launcher/node-js-file.js +0 -110
- package/src/internal/runtime/createNodeRuntime/createNodeRuntime.js +0 -32
- package/src/internal/runtime/node-feature-detect/nodeSupportsTopLevelAwait.js +0 -18
- package/src/nodeRuntime.js +0 -5
|
@@ -2,10 +2,33 @@ import { resolveUrl } from "@jsenv/filesystem"
|
|
|
2
2
|
|
|
3
3
|
import { unevalException } from "@jsenv/core/src/internal/unevalException.js"
|
|
4
4
|
import { measureAsyncFnPerf } from "@jsenv/core/src/internal/perf_node.js"
|
|
5
|
+
import { startObservingPerformances } from "./node_execution_performance.js"
|
|
5
6
|
|
|
6
|
-
export const
|
|
7
|
+
export const execute = async ({
|
|
7
8
|
projectDirectoryUrl,
|
|
9
|
+
fileRelativeUrl,
|
|
10
|
+
// do not log in the console
|
|
11
|
+
// because error handling becomes responsability
|
|
12
|
+
// of node code launching node process
|
|
13
|
+
// it avoids seeing error in runtime logs during testing
|
|
14
|
+
errorExposureInConsole = false,
|
|
15
|
+
collectCoverage,
|
|
16
|
+
measurePerformance,
|
|
17
|
+
collectPerformance,
|
|
8
18
|
}) => {
|
|
19
|
+
let finalizeExecutionResult = (result) => result
|
|
20
|
+
|
|
21
|
+
if (collectPerformance) {
|
|
22
|
+
const getPerformance = startObservingPerformances()
|
|
23
|
+
finalizeExecutionResult = async (executionResult) => {
|
|
24
|
+
const performance = await getPerformance()
|
|
25
|
+
return {
|
|
26
|
+
...executionResult,
|
|
27
|
+
performance,
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
9
32
|
const executeFile = async (
|
|
10
33
|
specifier,
|
|
11
34
|
{ measurePerformance, errorExposureInConsole = false } = {},
|
|
@@ -13,7 +36,6 @@ export const createNodeExecutionWithDynamicImport = ({
|
|
|
13
36
|
// we can't dynamically import from compileServerOrigin I guess
|
|
14
37
|
// we have to use the filesystem
|
|
15
38
|
const fileUrl = resolveUrl(specifier, projectDirectoryUrl)
|
|
16
|
-
|
|
17
39
|
const importWithDynamicImport = async () => {
|
|
18
40
|
try {
|
|
19
41
|
const status = "completed"
|
|
@@ -33,14 +55,20 @@ export const createNodeExecutionWithDynamicImport = ({
|
|
|
33
55
|
}
|
|
34
56
|
}
|
|
35
57
|
}
|
|
36
|
-
|
|
37
58
|
if (measurePerformance) {
|
|
38
59
|
return measureAsyncFnPerf(importWithDynamicImport, "jsenv_file_import")
|
|
39
60
|
}
|
|
40
61
|
return importWithDynamicImport()
|
|
41
62
|
}
|
|
42
63
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
64
|
+
const executionResult = await executeFile(fileRelativeUrl, {
|
|
65
|
+
errorExposureInConsole,
|
|
66
|
+
measurePerformance,
|
|
67
|
+
collectCoverage,
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
return finalizeExecutionResult({
|
|
71
|
+
...executionResult,
|
|
72
|
+
indirectCoverage: global.__indirectCoverage__,
|
|
73
|
+
})
|
|
46
74
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { PerformanceObserver, performance } from "node:perf_hooks"
|
|
2
|
+
|
|
3
|
+
export const startObservingPerformances = () => {
|
|
4
|
+
const measureEntries = []
|
|
5
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/perf_hooks.html
|
|
6
|
+
const perfObserver = new PerformanceObserver(
|
|
7
|
+
(
|
|
8
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/perf_hooks.html#perf_hooks_class_performanceobserverentrylist
|
|
9
|
+
list,
|
|
10
|
+
) => {
|
|
11
|
+
const perfMeasureEntries = list.getEntriesByType("measure")
|
|
12
|
+
measureEntries.push(...perfMeasureEntries)
|
|
13
|
+
},
|
|
14
|
+
)
|
|
15
|
+
perfObserver.observe({
|
|
16
|
+
entryTypes: ["measure"],
|
|
17
|
+
})
|
|
18
|
+
return async () => {
|
|
19
|
+
// wait for node to call the performance observer
|
|
20
|
+
await new Promise((resolve) => {
|
|
21
|
+
setTimeout(resolve)
|
|
22
|
+
})
|
|
23
|
+
performance.clearMarks()
|
|
24
|
+
perfObserver.disconnect()
|
|
25
|
+
return {
|
|
26
|
+
...readNodePerformance(),
|
|
27
|
+
measures: measuresFromMeasureEntries(measureEntries),
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const readNodePerformance = () => {
|
|
33
|
+
const nodePerformance = {
|
|
34
|
+
nodeTiming: asPlainObject(performance.nodeTiming),
|
|
35
|
+
timeOrigin: performance.timeOrigin,
|
|
36
|
+
eventLoopUtilization: performance.eventLoopUtilization(),
|
|
37
|
+
}
|
|
38
|
+
return nodePerformance
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// remove getters that cannot be stringified
|
|
42
|
+
const asPlainObject = (objectWithGetters) => {
|
|
43
|
+
const objectWithoutGetters = {}
|
|
44
|
+
Object.keys(objectWithGetters).forEach((key) => {
|
|
45
|
+
objectWithoutGetters[key] = objectWithGetters[key]
|
|
46
|
+
})
|
|
47
|
+
return objectWithoutGetters
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const measuresFromMeasureEntries = (measureEntries) => {
|
|
51
|
+
const measures = {}
|
|
52
|
+
// Sort to ensure measures order is predictable
|
|
53
|
+
// It seems to be already predictable on Node 16+ but
|
|
54
|
+
// it's not the case on Node 14.
|
|
55
|
+
measureEntries.sort((a, b) => {
|
|
56
|
+
return a.startTime - b.startTime
|
|
57
|
+
})
|
|
58
|
+
measureEntries.forEach(
|
|
59
|
+
(
|
|
60
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/perf_hooks.html#perf_hooks_class_performanceentry
|
|
61
|
+
perfMeasureEntry,
|
|
62
|
+
) => {
|
|
63
|
+
measures[perfMeasureEntry.name] = perfMeasureEntry.duration
|
|
64
|
+
},
|
|
65
|
+
)
|
|
66
|
+
return measures
|
|
67
|
+
}
|
|
@@ -1,38 +1,48 @@
|
|
|
1
1
|
import { resolveUrl } from "@jsenv/filesystem"
|
|
2
2
|
|
|
3
3
|
import { measureAsyncFnPerf } from "@jsenv/core/src/internal/perf_node.js"
|
|
4
|
+
import { startObservingPerformances } from "./node_execution_performance.js"
|
|
4
5
|
import { unevalException } from "@jsenv/core/src/internal/unevalException.js"
|
|
5
|
-
import { memoize } from "../../memoize.js"
|
|
6
|
-
import { installNodeErrorStackRemapping } from "../../error-stack-remapping/installNodeErrorStackRemapping.js"
|
|
7
|
-
import { fetchSource } from "./fetchSource.js"
|
|
8
|
-
import { createNodeSystem } from "./createNodeSystem.js"
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
import { installNodeErrorStackRemapping } from "@jsenv/core/src/internal/error-stack-remapping/installNodeErrorStackRemapping.js"
|
|
8
|
+
import { fetchSource } from "@jsenv/core/src/internal/node_runtime/fetchSource.js"
|
|
9
|
+
import { createNodeSystem } from "@jsenv/core/src/internal/node_runtime/node_system.js"
|
|
11
10
|
|
|
12
|
-
export const
|
|
11
|
+
export const execute = async ({
|
|
13
12
|
projectDirectoryUrl,
|
|
14
13
|
compileServerOrigin,
|
|
14
|
+
fileRelativeUrl,
|
|
15
15
|
outDirectoryRelativeUrl,
|
|
16
16
|
compileId,
|
|
17
17
|
importDefaultExtension,
|
|
18
|
+
// do not log in the console
|
|
19
|
+
// because error handling becomes responsability
|
|
20
|
+
// of node code launching node process
|
|
21
|
+
// it avoids seeing error in runtime logs during testing
|
|
22
|
+
errorExposureInConsole = false,
|
|
23
|
+
collectCoverage,
|
|
24
|
+
measurePerformance,
|
|
25
|
+
collectPerformance,
|
|
18
26
|
}) => {
|
|
27
|
+
let finalizeExecutionResult = (result) => result
|
|
28
|
+
|
|
29
|
+
if (collectPerformance) {
|
|
30
|
+
const getPerformance = startObservingPerformances()
|
|
31
|
+
finalizeExecutionResult = async (executionResult) => {
|
|
32
|
+
const performance = await getPerformance()
|
|
33
|
+
return {
|
|
34
|
+
...executionResult,
|
|
35
|
+
performance,
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
19
40
|
const { getErrorOriginalStackString } = installNodeErrorStackRemapping({
|
|
20
41
|
projectDirectoryUrl,
|
|
21
42
|
})
|
|
22
43
|
|
|
23
44
|
const compileDirectoryRelativeUrl = `${outDirectoryRelativeUrl}${compileId}/`
|
|
24
45
|
|
|
25
|
-
const importFile = async (specifier) => {
|
|
26
|
-
const nodeSystem = await memoizedCreateNodeSystem({
|
|
27
|
-
projectDirectoryUrl,
|
|
28
|
-
compileServerOrigin,
|
|
29
|
-
compileDirectoryRelativeUrl,
|
|
30
|
-
fetchSource,
|
|
31
|
-
importDefaultExtension,
|
|
32
|
-
})
|
|
33
|
-
return makePromiseKeepNodeProcessAlive(nodeSystem.import(specifier))
|
|
34
|
-
}
|
|
35
|
-
|
|
36
46
|
const errorTransformer = async (error) => {
|
|
37
47
|
// code can throw something else than an error
|
|
38
48
|
// in that case return it unchanged
|
|
@@ -52,7 +62,7 @@ export const createNodeExecutionWithSystemJs = ({
|
|
|
52
62
|
`${compileServerOrigin}/${compileDirectoryRelativeUrl}`,
|
|
53
63
|
)
|
|
54
64
|
|
|
55
|
-
const nodeSystem = await
|
|
65
|
+
const nodeSystem = await createNodeSystem({
|
|
56
66
|
projectDirectoryUrl,
|
|
57
67
|
compileServerOrigin,
|
|
58
68
|
compileDirectoryRelativeUrl,
|
|
@@ -88,18 +98,22 @@ export const createNodeExecutionWithSystemJs = ({
|
|
|
88
98
|
}
|
|
89
99
|
}
|
|
90
100
|
}
|
|
91
|
-
|
|
92
101
|
if (measurePerformance) {
|
|
93
102
|
return measureAsyncFnPerf(importWithSystemJs, "jsenv_file_import")
|
|
94
103
|
}
|
|
95
104
|
return importWithSystemJs()
|
|
96
105
|
}
|
|
97
106
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
107
|
+
const executionResult = await executeFile(fileRelativeUrl, {
|
|
108
|
+
errorExposureInConsole,
|
|
109
|
+
measurePerformance,
|
|
110
|
+
collectCoverage,
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
return finalizeExecutionResult({
|
|
114
|
+
...executionResult,
|
|
115
|
+
indirectCoverage: global.__indirectCoverage__,
|
|
116
|
+
})
|
|
103
117
|
}
|
|
104
118
|
|
|
105
119
|
const makePromiseKeepNodeProcessAlive = async (promise) => {
|
package/src/internal/{runtime/createNodeRuntime/createNodeSystem.js → node_runtime/node_system.js}
RENAMED
|
@@ -8,14 +8,14 @@ import { urlToFileSystemPath, resolveUrl } from "@jsenv/filesystem"
|
|
|
8
8
|
import { isSpecifierForNodeCoreModule } from "@jsenv/importmap/src/isSpecifierForNodeCoreModule.js"
|
|
9
9
|
|
|
10
10
|
import { createImportResolverForNode } from "@jsenv/core/src/internal/import-resolution/import-resolver-node.js"
|
|
11
|
-
import { require } from "
|
|
12
|
-
import "../s.js"
|
|
11
|
+
import { require } from "../require.js"
|
|
12
|
+
import "../runtime/s.js"
|
|
13
13
|
import {
|
|
14
14
|
fromFunctionReturningNamespace,
|
|
15
15
|
getJavaScriptModuleResponseError,
|
|
16
16
|
fromFunctionReturningRegisteredModule,
|
|
17
|
-
} from "../module-registration.js"
|
|
18
|
-
import { valueInstall } from "../valueInstall.js"
|
|
17
|
+
} from "../runtime/module-registration.js"
|
|
18
|
+
import { valueInstall } from "../runtime/valueInstall.js"
|
|
19
19
|
import { evalSource } from "./evalSource.js"
|
|
20
20
|
|
|
21
21
|
export const createNodeSystem = async ({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-env browser, node */
|
|
2
|
-
import { detectBrowser } from "
|
|
3
|
-
import { detectNode } from "
|
|
2
|
+
import { detectBrowser } from "../browser_detection/browser_detection.js"
|
|
3
|
+
import { detectNode } from "../node_runtime/detectNode.js"
|
|
4
4
|
import { resolveGroup } from "./resolveGroup.js"
|
|
5
5
|
|
|
6
6
|
export const resolveRuntimeGroup = (groupMap) => {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/launchBrowser.js
CHANGED
|
@@ -11,9 +11,9 @@ import { memoize } from "@jsenv/filesystem"
|
|
|
11
11
|
|
|
12
12
|
import { fetchUrl } from "./internal/fetchUrl.js"
|
|
13
13
|
import { validateResponse } from "./internal/response_validation.js"
|
|
14
|
-
import { trackPageToNotify } from "./internal/
|
|
15
|
-
import { createSharing } from "./internal/
|
|
16
|
-
import { executeHtmlFile } from "./internal/
|
|
14
|
+
import { trackPageToNotify } from "./internal/browser_launcher/trackPageToNotify.js"
|
|
15
|
+
import { createSharing } from "./internal/browser_launcher/createSharing.js"
|
|
16
|
+
import { executeHtmlFile } from "./internal/browser_launcher/executeHtmlFile.js"
|
|
17
17
|
import {
|
|
18
18
|
PLAYWRIGHT_CHROMIUM_VERSION,
|
|
19
19
|
PLAYWRIGHT_FIREFOX_VERSION,
|
|
@@ -32,6 +32,7 @@ chromiumRuntime.launch = async ({
|
|
|
32
32
|
|
|
33
33
|
projectDirectoryUrl,
|
|
34
34
|
compileServerOrigin,
|
|
35
|
+
compileServerId,
|
|
35
36
|
outDirectoryRelativeUrl,
|
|
36
37
|
|
|
37
38
|
collectPerformance,
|
|
@@ -106,10 +107,12 @@ chromiumRuntime.launch = async ({
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
const browserHooks = browserToRuntimeHooks(browser, {
|
|
110
|
+
runtime: chromiumRuntime,
|
|
109
111
|
browserServerLogLevel,
|
|
110
112
|
|
|
111
113
|
projectDirectoryUrl,
|
|
112
114
|
compileServerOrigin,
|
|
115
|
+
compileServerId,
|
|
113
116
|
outDirectoryRelativeUrl,
|
|
114
117
|
|
|
115
118
|
collectPerformance,
|
|
@@ -184,6 +187,7 @@ firefoxRuntime.launch = async ({
|
|
|
184
187
|
const browser = await browserPromise
|
|
185
188
|
|
|
186
189
|
const browserHooks = browserToRuntimeHooks(browser, {
|
|
190
|
+
runtime: firefoxRuntime,
|
|
187
191
|
launchBrowserOperation,
|
|
188
192
|
browserServerLogLevel,
|
|
189
193
|
|
|
@@ -262,6 +266,7 @@ webkitRuntime.launch = async ({
|
|
|
262
266
|
const browser = await browserPromise
|
|
263
267
|
|
|
264
268
|
const browserHooks = browserToRuntimeHooks(browser, {
|
|
269
|
+
runtime: webkitRuntime,
|
|
265
270
|
launchBrowserOperation,
|
|
266
271
|
browserServerLogLevel,
|
|
267
272
|
|
|
@@ -391,8 +396,10 @@ const stopBrowser = async (browser) => {
|
|
|
391
396
|
const browserToRuntimeHooks = (
|
|
392
397
|
browser,
|
|
393
398
|
{
|
|
399
|
+
runtime,
|
|
394
400
|
projectDirectoryUrl,
|
|
395
401
|
compileServerOrigin,
|
|
402
|
+
compileServerId,
|
|
396
403
|
outDirectoryRelativeUrl,
|
|
397
404
|
|
|
398
405
|
collectPerformance,
|
|
@@ -461,10 +468,12 @@ const browserToRuntimeHooks = (
|
|
|
461
468
|
stoppedCallbackList.add(stopTrackingToNotify)
|
|
462
469
|
|
|
463
470
|
const result = await executeHtmlFile(fileRelativeUrl, {
|
|
471
|
+
runtime,
|
|
464
472
|
executeOperation,
|
|
465
473
|
|
|
466
474
|
projectDirectoryUrl,
|
|
467
475
|
compileServerOrigin,
|
|
476
|
+
compileServerId,
|
|
468
477
|
outDirectoryRelativeUrl,
|
|
469
478
|
|
|
470
479
|
page,
|
package/src/launchNode.js
CHANGED
|
@@ -3,7 +3,8 @@ import { loggerToLogLevel } from "@jsenv/logger"
|
|
|
3
3
|
|
|
4
4
|
import { jsenvCoreDirectoryUrl } from "@jsenv/core/src/internal/jsenvCoreDirectoryUrl.js"
|
|
5
5
|
import { escapeRegexpSpecialCharacters } from "./internal/escapeRegexpSpecialCharacters.js"
|
|
6
|
-
import { createControllableNodeProcess } from "./internal/
|
|
6
|
+
import { createControllableNodeProcess } from "./internal/node_launcher/createControllableNodeProcess.js"
|
|
7
|
+
import { getNodeRuntimeReport } from "./internal/node_launcher/node_runtime_report.js"
|
|
7
8
|
|
|
8
9
|
export const nodeRuntime = {
|
|
9
10
|
name: "node",
|
|
@@ -15,6 +16,7 @@ nodeRuntime.launch = async ({
|
|
|
15
16
|
logProcessCommand,
|
|
16
17
|
|
|
17
18
|
projectDirectoryUrl,
|
|
19
|
+
compileServerId,
|
|
18
20
|
compileServerOrigin,
|
|
19
21
|
outDirectoryRelativeUrl,
|
|
20
22
|
|
|
@@ -34,7 +36,7 @@ nodeRuntime.launch = async ({
|
|
|
34
36
|
stdout,
|
|
35
37
|
stderr,
|
|
36
38
|
stopAfterExecute,
|
|
37
|
-
|
|
39
|
+
forceSystemJs,
|
|
38
40
|
|
|
39
41
|
remap = true,
|
|
40
42
|
}) => {
|
|
@@ -103,7 +105,6 @@ nodeRuntime.launch = async ({
|
|
|
103
105
|
|
|
104
106
|
fileRelativeUrl,
|
|
105
107
|
executionId,
|
|
106
|
-
canUseNativeModuleSystem,
|
|
107
108
|
exitAfterAction: stopAfterExecute,
|
|
108
109
|
|
|
109
110
|
measurePerformance,
|
|
@@ -114,11 +115,39 @@ nodeRuntime.launch = async ({
|
|
|
114
115
|
remap,
|
|
115
116
|
}
|
|
116
117
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
// the computation of runtime features can be cached
|
|
119
|
+
const nodeFeatures = await getNodeRuntimeReport({
|
|
120
|
+
runtime: nodeRuntime,
|
|
121
|
+
compileServerId,
|
|
122
|
+
compileServerOrigin,
|
|
123
|
+
outDirectoryRelativeUrl,
|
|
124
|
+
// https://nodejs.org/docs/latest-v15.x/api/cli.html#cli_node_v8_coverage_dir
|
|
125
|
+
// instrumentation CAN be handed by process.env.NODE_V8_COVERAGE
|
|
126
|
+
// "transform-instrument" becomes non mandatory
|
|
127
|
+
coverageHandledFromOutside:
|
|
128
|
+
!coverageForceIstanbul && process.env.NODE_V8_COVERAGE,
|
|
121
129
|
})
|
|
130
|
+
const { canAvoidCompilation, compileId, importDefaultExtension } =
|
|
131
|
+
nodeFeatures
|
|
132
|
+
|
|
133
|
+
let executionResult
|
|
134
|
+
if (canAvoidCompilation && !forceSystemJs) {
|
|
135
|
+
executionResult = await requestActionOnChildProcess({
|
|
136
|
+
signal,
|
|
137
|
+
actionType: "execute-using-dynamic-import",
|
|
138
|
+
actionParams: executeParams,
|
|
139
|
+
})
|
|
140
|
+
} else {
|
|
141
|
+
executionResult = await requestActionOnChildProcess({
|
|
142
|
+
signal,
|
|
143
|
+
actionType: "execute-using-systemjs",
|
|
144
|
+
actionParams: {
|
|
145
|
+
compileId,
|
|
146
|
+
importDefaultExtension,
|
|
147
|
+
...executeParams,
|
|
148
|
+
},
|
|
149
|
+
})
|
|
150
|
+
}
|
|
122
151
|
|
|
123
152
|
executionResult = transformExecutionResult(executionResult, {
|
|
124
153
|
compileServerOrigin,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { launchAndExecute } from "./internal/executing/launchAndExecute.js"
|
|
2
|
-
import { createControllableNodeProcess } from "./internal/
|
|
2
|
+
import { createControllableNodeProcess } from "./internal/node_launcher/createControllableNodeProcess.js"
|
|
3
3
|
|
|
4
4
|
export const requireUsingChildProcess = async (
|
|
5
5
|
fileUrl,
|