@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 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
- const {
23086
- pathname,
23087
- search
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 = moveUrl({
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 = moveUrl({
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 = moveUrl({
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/core",
3
- "version": "34.1.0",
3
+ "version": "34.1.2",
4
4
  "description": "Tool to develop, test and build js projects",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -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 { moveUrl, asUrlWithoutSearch } from "@jsenv/urls"
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
- const { pathname, search } = refererUrlObject
441
- if (pathname.startsWith("/@fs/")) {
442
- const fsRootRelativeUrl = pathname.slice("/@fs/".length)
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 { moveUrl, urlIsInsideOf } from "@jsenv/urls"
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 = moveUrl({
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 = moveUrl({
172
- url: v8CoveragesWithWebUrl.url,
173
- from: `${webServer.origin}/`,
174
- to: webServer.rootDirectoryUrl,
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 = moveUrl({
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
+ }