@jsenv/core 34.1.0 → 34.1.1

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
 
@@ -25090,9 +25110,9 @@ const executeTestPlan = async ({
25090
25110
  gcBetweenExecutions = logMemoryHeapUsage,
25091
25111
  coverageEnabled = process.argv.includes("--coverage"),
25092
25112
  coverageConfig = {
25093
- "file:///**/.*": false,
25094
- "file:///**/.*/": false,
25095
25113
  "file:///**/node_modules/": false,
25114
+ "./**/.*": false,
25115
+ "./**/.*/": false,
25096
25116
  "./**/src/**/*.js": true,
25097
25117
  "./**/src/**/*.ts": true,
25098
25118
  "./**/src/**/*.jsx": true,
@@ -25443,11 +25463,7 @@ const initIstanbulMiddleware = async (page, {
25443
25463
  await page.route("**", async route => {
25444
25464
  const request = route.request();
25445
25465
  const url = request.url(); // transform into a local url
25446
- const fileUrl = moveUrl({
25447
- url,
25448
- from: `${webServer.origin}/`,
25449
- to: rootDirectoryUrl
25450
- });
25466
+ const fileUrl = WEB_URL_CONVERTER.asFileUrl(url, webServer);
25451
25467
  const needsInstrumentation = URL_META.applyAssociations({
25452
25468
  url: fileUrl,
25453
25469
  associations
@@ -25544,11 +25560,7 @@ ${fileUrl}
25544
25560
  --- web server root directory url ---
25545
25561
  ${webServer.rootDirectoryUrl}`);
25546
25562
  }
25547
- const fileServerUrl = moveUrl({
25548
- url: fileUrl,
25549
- from: webServer.rootDirectoryUrl,
25550
- to: `${webServer.origin}/`
25551
- });
25563
+ const fileServerUrl = WEB_URL_CONVERTER.asWebUrl(fileUrl, webServer);
25552
25564
  const cleanupCallbackList = createCallbackListNotifiedOnce();
25553
25565
  const cleanup = memoize(async reason => {
25554
25566
  await cleanupCallbackList.notify({
@@ -25646,11 +25658,7 @@ ${webServer.rootDirectoryUrl}`);
25646
25658
  // we convert urls starting with http:// to file:// because we later
25647
25659
  // convert the url to filesystem path in istanbulCoverageFromV8Coverage function
25648
25660
  const v8CoveragesWithFsUrls = v8CoveragesWithWebUrls.map(v8CoveragesWithWebUrl => {
25649
- const fsUrl = moveUrl({
25650
- url: v8CoveragesWithWebUrl.url,
25651
- from: `${webServer.origin}/`,
25652
- to: webServer.rootDirectoryUrl
25653
- });
25661
+ const fsUrl = WEB_URL_CONVERTER.asFileUrl(v8CoveragesWithWebUrl.url, webServer);
25654
25662
  return {
25655
25663
  ...v8CoveragesWithWebUrl,
25656
25664
  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.1",
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,
@@ -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
+ }