@jsenv/core 34.1.0 → 34.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.
- package/dist/jsenv.js +40 -30
- package/package.json +1 -1
- package/src/dev/file_service.js +5 -10
- package/src/execute/runtimes/browsers/from_playwright.js +7 -12
- package/src/execute/runtimes/browsers/middleware_istanbul.js +2 -6
- package/src/execute/web_server_param.js +3 -1
- package/src/test/execute_test_plan.js +2 -2
- package/src/web_url_converter.js +28 -0
package/dist/jsenv.js
CHANGED
|
@@ -22633,6 +22633,35 @@ const canUseVersionedUrl = urlInfo => {
|
|
|
22633
22633
|
return urlInfo.type !== "webmanifest";
|
|
22634
22634
|
};
|
|
22635
22635
|
|
|
22636
|
+
const WEB_URL_CONVERTER = {
|
|
22637
|
+
asWebUrl: (fileUrl, webServer) => {
|
|
22638
|
+
if (urlIsInsideOf(fileUrl, webServer.rootDirectoryUrl)) {
|
|
22639
|
+
return moveUrl({
|
|
22640
|
+
url: fileUrl,
|
|
22641
|
+
from: webServer.rootDirectoryUrl,
|
|
22642
|
+
to: `${webServer.origin}/`
|
|
22643
|
+
});
|
|
22644
|
+
}
|
|
22645
|
+
const fsRootUrl = ensureWindowsDriveLetter("file:///", fileUrl);
|
|
22646
|
+
return `${webServer.origin}/@fs/${fileUrl.slice(fsRootUrl.length)}`;
|
|
22647
|
+
},
|
|
22648
|
+
asFileUrl: (webUrl, webServer) => {
|
|
22649
|
+
const {
|
|
22650
|
+
pathname,
|
|
22651
|
+
search
|
|
22652
|
+
} = new URL(webUrl);
|
|
22653
|
+
if (pathname.startsWith("/@fs/")) {
|
|
22654
|
+
const fsRootRelativeUrl = pathname.slice("/@fs/".length);
|
|
22655
|
+
return `file:///${fsRootRelativeUrl}${search}`;
|
|
22656
|
+
}
|
|
22657
|
+
return moveUrl({
|
|
22658
|
+
url: webUrl,
|
|
22659
|
+
from: `${webServer.origin}/`,
|
|
22660
|
+
to: webServer.rootDirectoryUrl
|
|
22661
|
+
});
|
|
22662
|
+
}
|
|
22663
|
+
};
|
|
22664
|
+
|
|
22636
22665
|
/*
|
|
22637
22666
|
* This plugin is very special because it is here
|
|
22638
22667
|
* to provide "serverEvents" used by other plugins
|
|
@@ -23082,18 +23111,9 @@ const inferParentFromRequest = (request, sourceDirectoryUrl) => {
|
|
|
23082
23111
|
const refererUrlObject = new URL(referer);
|
|
23083
23112
|
refererUrlObject.searchParams.delete("hmr");
|
|
23084
23113
|
refererUrlObject.searchParams.delete("v");
|
|
23085
|
-
|
|
23086
|
-
|
|
23087
|
-
|
|
23088
|
-
} = refererUrlObject;
|
|
23089
|
-
if (pathname.startsWith("/@fs/")) {
|
|
23090
|
-
const fsRootRelativeUrl = pathname.slice("/@fs/".length);
|
|
23091
|
-
return `file:///${fsRootRelativeUrl}${search}`;
|
|
23092
|
-
}
|
|
23093
|
-
return moveUrl({
|
|
23094
|
-
url: referer,
|
|
23095
|
-
from: `${request.origin}/`,
|
|
23096
|
-
to: sourceDirectoryUrl
|
|
23114
|
+
return WEB_URL_CONVERTER.asFileUrl(referer, {
|
|
23115
|
+
origin: request.origin,
|
|
23116
|
+
rootDirectoryUrl: sourceDirectoryUrl
|
|
23097
23117
|
});
|
|
23098
23118
|
};
|
|
23099
23119
|
|
|
@@ -23448,7 +23468,9 @@ const assertAndNormalizeWebServer = async webServer => {
|
|
|
23448
23468
|
}
|
|
23449
23469
|
const {
|
|
23450
23470
|
headers
|
|
23451
|
-
} = await basicFetch(webServer.origin
|
|
23471
|
+
} = await basicFetch(webServer.origin, {
|
|
23472
|
+
rejectUnauthorized: false
|
|
23473
|
+
});
|
|
23452
23474
|
if (headers["x-server-name"] === "jsenv_dev_server") {
|
|
23453
23475
|
webServer.isJsenvDevServer = true;
|
|
23454
23476
|
const {
|
|
@@ -25090,9 +25112,9 @@ const executeTestPlan = async ({
|
|
|
25090
25112
|
gcBetweenExecutions = logMemoryHeapUsage,
|
|
25091
25113
|
coverageEnabled = process.argv.includes("--coverage"),
|
|
25092
25114
|
coverageConfig = {
|
|
25093
|
-
"file:///**/.*": false,
|
|
25094
|
-
"file:///**/.*/": false,
|
|
25095
25115
|
"file:///**/node_modules/": false,
|
|
25116
|
+
"./**/.*": false,
|
|
25117
|
+
"./**/.*/": false,
|
|
25096
25118
|
"./**/src/**/*.js": true,
|
|
25097
25119
|
"./**/src/**/*.ts": true,
|
|
25098
25120
|
"./**/src/**/*.jsx": true,
|
|
@@ -25443,11 +25465,7 @@ const initIstanbulMiddleware = async (page, {
|
|
|
25443
25465
|
await page.route("**", async route => {
|
|
25444
25466
|
const request = route.request();
|
|
25445
25467
|
const url = request.url(); // transform into a local url
|
|
25446
|
-
const fileUrl =
|
|
25447
|
-
url,
|
|
25448
|
-
from: `${webServer.origin}/`,
|
|
25449
|
-
to: rootDirectoryUrl
|
|
25450
|
-
});
|
|
25468
|
+
const fileUrl = WEB_URL_CONVERTER.asFileUrl(url, webServer);
|
|
25451
25469
|
const needsInstrumentation = URL_META.applyAssociations({
|
|
25452
25470
|
url: fileUrl,
|
|
25453
25471
|
associations
|
|
@@ -25544,11 +25562,7 @@ ${fileUrl}
|
|
|
25544
25562
|
--- web server root directory url ---
|
|
25545
25563
|
${webServer.rootDirectoryUrl}`);
|
|
25546
25564
|
}
|
|
25547
|
-
const fileServerUrl =
|
|
25548
|
-
url: fileUrl,
|
|
25549
|
-
from: webServer.rootDirectoryUrl,
|
|
25550
|
-
to: `${webServer.origin}/`
|
|
25551
|
-
});
|
|
25565
|
+
const fileServerUrl = WEB_URL_CONVERTER.asWebUrl(fileUrl, webServer);
|
|
25552
25566
|
const cleanupCallbackList = createCallbackListNotifiedOnce();
|
|
25553
25567
|
const cleanup = memoize(async reason => {
|
|
25554
25568
|
await cleanupCallbackList.notify({
|
|
@@ -25646,11 +25660,7 @@ ${webServer.rootDirectoryUrl}`);
|
|
|
25646
25660
|
// we convert urls starting with http:// to file:// because we later
|
|
25647
25661
|
// convert the url to filesystem path in istanbulCoverageFromV8Coverage function
|
|
25648
25662
|
const v8CoveragesWithFsUrls = v8CoveragesWithWebUrls.map(v8CoveragesWithWebUrl => {
|
|
25649
|
-
const fsUrl =
|
|
25650
|
-
url: v8CoveragesWithWebUrl.url,
|
|
25651
|
-
from: `${webServer.origin}/`,
|
|
25652
|
-
to: webServer.rootDirectoryUrl
|
|
25653
|
-
});
|
|
25663
|
+
const fsUrl = WEB_URL_CONVERTER.asFileUrl(v8CoveragesWithWebUrl.url, webServer);
|
|
25654
25664
|
return {
|
|
25655
25665
|
...v8CoveragesWithWebUrl,
|
|
25656
25666
|
url: fsUrl
|
package/package.json
CHANGED
package/src/dev/file_service.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs"
|
|
2
2
|
import { serveDirectory, composeTwoResponses } from "@jsenv/server"
|
|
3
3
|
import { bufferToEtag } from "@jsenv/filesystem"
|
|
4
|
-
import {
|
|
4
|
+
import { asUrlWithoutSearch } from "@jsenv/urls"
|
|
5
5
|
import { URL_META } from "@jsenv/url-meta"
|
|
6
6
|
|
|
7
|
+
import { WEB_URL_CONVERTER } from "../web_url_converter.js"
|
|
7
8
|
import { watchSourceFiles } from "../watch_source_files.js"
|
|
8
9
|
import { explorerHtmlFileUrl } from "@jsenv/core/src/plugins/explorer/jsenv_plugin_explorer.js"
|
|
9
10
|
import { createUrlGraph } from "@jsenv/core/src/kitchen/url_graph.js"
|
|
@@ -437,14 +438,8 @@ const inferParentFromRequest = (request, sourceDirectoryUrl) => {
|
|
|
437
438
|
const refererUrlObject = new URL(referer)
|
|
438
439
|
refererUrlObject.searchParams.delete("hmr")
|
|
439
440
|
refererUrlObject.searchParams.delete("v")
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
return `file:///${fsRootRelativeUrl}${search}`
|
|
444
|
-
}
|
|
445
|
-
return moveUrl({
|
|
446
|
-
url: referer,
|
|
447
|
-
from: `${request.origin}/`,
|
|
448
|
-
to: sourceDirectoryUrl,
|
|
441
|
+
return WEB_URL_CONVERTER.asFileUrl(referer, {
|
|
442
|
+
origin: request.origin,
|
|
443
|
+
rootDirectoryUrl: sourceDirectoryUrl,
|
|
449
444
|
})
|
|
450
445
|
}
|
|
@@ -6,9 +6,10 @@ import {
|
|
|
6
6
|
raceProcessTeardownEvents,
|
|
7
7
|
raceCallbacks,
|
|
8
8
|
} from "@jsenv/abort"
|
|
9
|
-
import {
|
|
9
|
+
import { urlIsInsideOf } from "@jsenv/urls"
|
|
10
10
|
import { memoize } from "@jsenv/utils/src/memoize/memoize.js"
|
|
11
11
|
|
|
12
|
+
import { WEB_URL_CONVERTER } from "../../../web_url_converter.js"
|
|
12
13
|
import { initJsSupervisorMiddleware } from "./middleware_js_supervisor.js"
|
|
13
14
|
import { initIstanbulMiddleware } from "./middleware_istanbul.js"
|
|
14
15
|
import { filterV8Coverage } from "@jsenv/core/src/test/coverage/v8_coverage.js"
|
|
@@ -62,12 +63,7 @@ ${fileUrl}
|
|
|
62
63
|
--- web server root directory url ---
|
|
63
64
|
${webServer.rootDirectoryUrl}`)
|
|
64
65
|
}
|
|
65
|
-
const fileServerUrl =
|
|
66
|
-
url: fileUrl,
|
|
67
|
-
from: webServer.rootDirectoryUrl,
|
|
68
|
-
to: `${webServer.origin}/`,
|
|
69
|
-
})
|
|
70
|
-
|
|
66
|
+
const fileServerUrl = WEB_URL_CONVERTER.asWebUrl(fileUrl, webServer)
|
|
71
67
|
const cleanupCallbackList = createCallbackListNotifiedOnce()
|
|
72
68
|
const cleanup = memoize(async (reason) => {
|
|
73
69
|
await cleanupCallbackList.notify({ reason })
|
|
@@ -168,11 +164,10 @@ ${webServer.rootDirectoryUrl}`)
|
|
|
168
164
|
// convert the url to filesystem path in istanbulCoverageFromV8Coverage function
|
|
169
165
|
const v8CoveragesWithFsUrls = v8CoveragesWithWebUrls.map(
|
|
170
166
|
(v8CoveragesWithWebUrl) => {
|
|
171
|
-
const fsUrl =
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
})
|
|
167
|
+
const fsUrl = WEB_URL_CONVERTER.asFileUrl(
|
|
168
|
+
v8CoveragesWithWebUrl.url,
|
|
169
|
+
webServer,
|
|
170
|
+
)
|
|
176
171
|
return {
|
|
177
172
|
...v8CoveragesWithWebUrl,
|
|
178
173
|
url: fsUrl,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { URL_META } from "@jsenv/url-meta"
|
|
2
|
-
import { moveUrl } from "@jsenv/urls"
|
|
3
2
|
import { applyBabelPlugins } from "@jsenv/ast"
|
|
4
3
|
import { SOURCEMAP, generateSourcemapDataUrl } from "@jsenv/sourcemap"
|
|
5
4
|
|
|
5
|
+
import { WEB_URL_CONVERTER } from "../../../web_url_converter.js"
|
|
6
6
|
import { babelPluginInstrument } from "../../../test/coverage/babel_plugin_instrument.js"
|
|
7
7
|
|
|
8
8
|
export const initIstanbulMiddleware = async (
|
|
@@ -16,11 +16,7 @@ export const initIstanbulMiddleware = async (
|
|
|
16
16
|
await page.route("**", async (route) => {
|
|
17
17
|
const request = route.request()
|
|
18
18
|
const url = request.url() // transform into a local url
|
|
19
|
-
const fileUrl =
|
|
20
|
-
url,
|
|
21
|
-
from: `${webServer.origin}/`,
|
|
22
|
-
to: rootDirectoryUrl,
|
|
23
|
-
})
|
|
19
|
+
const fileUrl = WEB_URL_CONVERTER.asFileUrl(url, webServer)
|
|
24
20
|
const needsInstrumentation = URL_META.applyAssociations({
|
|
25
21
|
url: fileUrl,
|
|
26
22
|
associations,
|
|
@@ -44,7 +44,9 @@ export const assertAndNormalizeWebServer = async (webServer) => {
|
|
|
44
44
|
)
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
const { headers } = await basicFetch(webServer.origin
|
|
47
|
+
const { headers } = await basicFetch(webServer.origin, {
|
|
48
|
+
rejectUnauthorized: false,
|
|
49
|
+
})
|
|
48
50
|
if (headers["x-server-name"] === "jsenv_dev_server") {
|
|
49
51
|
webServer.isJsenvDevServer = true
|
|
50
52
|
const { json } = await basicFetch(`${webServer.origin}/__params__.json`, {
|
|
@@ -64,9 +64,9 @@ export const executeTestPlan = async ({
|
|
|
64
64
|
|
|
65
65
|
coverageEnabled = process.argv.includes("--coverage"),
|
|
66
66
|
coverageConfig = {
|
|
67
|
-
"file:///**/.*": false,
|
|
68
|
-
"file:///**/.*/": false,
|
|
69
67
|
"file:///**/node_modules/": false,
|
|
68
|
+
"./**/.*": false,
|
|
69
|
+
"./**/.*/": false,
|
|
70
70
|
"./**/src/**/*.js": true,
|
|
71
71
|
"./**/src/**/*.ts": true,
|
|
72
72
|
"./**/src/**/*.jsx": true,
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ensureWindowsDriveLetter } from "@jsenv/filesystem"
|
|
2
|
+
import { urlIsInsideOf, moveUrl } from "@jsenv/urls"
|
|
3
|
+
|
|
4
|
+
export const WEB_URL_CONVERTER = {
|
|
5
|
+
asWebUrl: (fileUrl, webServer) => {
|
|
6
|
+
if (urlIsInsideOf(fileUrl, webServer.rootDirectoryUrl)) {
|
|
7
|
+
return moveUrl({
|
|
8
|
+
url: fileUrl,
|
|
9
|
+
from: webServer.rootDirectoryUrl,
|
|
10
|
+
to: `${webServer.origin}/`,
|
|
11
|
+
})
|
|
12
|
+
}
|
|
13
|
+
const fsRootUrl = ensureWindowsDriveLetter("file:///", fileUrl)
|
|
14
|
+
return `${webServer.origin}/@fs/${fileUrl.slice(fsRootUrl.length)}`
|
|
15
|
+
},
|
|
16
|
+
asFileUrl: (webUrl, webServer) => {
|
|
17
|
+
const { pathname, search } = new URL(webUrl)
|
|
18
|
+
if (pathname.startsWith("/@fs/")) {
|
|
19
|
+
const fsRootRelativeUrl = pathname.slice("/@fs/".length)
|
|
20
|
+
return `file:///${fsRootRelativeUrl}${search}`
|
|
21
|
+
}
|
|
22
|
+
return moveUrl({
|
|
23
|
+
url: webUrl,
|
|
24
|
+
from: `${webServer.origin}/`,
|
|
25
|
+
to: webServer.rootDirectoryUrl,
|
|
26
|
+
})
|
|
27
|
+
},
|
|
28
|
+
}
|