@jsenv/core 40.12.12 → 40.12.13

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.
@@ -1394,76 +1394,6 @@ const createTaskLog = (
1394
1394
  };
1395
1395
  };
1396
1396
 
1397
- const pathnameToExtension = (pathname) => {
1398
- const slashLastIndex = pathname.lastIndexOf("/");
1399
- const filename =
1400
- slashLastIndex === -1 ? pathname : pathname.slice(slashLastIndex + 1);
1401
- if (filename.match(/@([0-9])+(\.[0-9]+)?(\.[0-9]+)?$/)) {
1402
- return "";
1403
- }
1404
- const dotLastIndex = filename.lastIndexOf(".");
1405
- if (dotLastIndex === -1) {
1406
- return "";
1407
- }
1408
- // if (dotLastIndex === pathname.length - 1) return ""
1409
- const extension = filename.slice(dotLastIndex);
1410
- return extension;
1411
- };
1412
-
1413
- const resourceToPathname = (resource) => {
1414
- const searchSeparatorIndex = resource.indexOf("?");
1415
- if (searchSeparatorIndex > -1) {
1416
- return resource.slice(0, searchSeparatorIndex);
1417
- }
1418
- const hashIndex = resource.indexOf("#");
1419
- if (hashIndex > -1) {
1420
- return resource.slice(0, hashIndex);
1421
- }
1422
- return resource;
1423
- };
1424
-
1425
- const urlToScheme = (url) => {
1426
- const urlString = String(url);
1427
- const colonIndex = urlString.indexOf(":");
1428
- if (colonIndex === -1) {
1429
- return "";
1430
- }
1431
-
1432
- const scheme = urlString.slice(0, colonIndex);
1433
- return scheme;
1434
- };
1435
-
1436
- const urlToResource = (url) => {
1437
- const scheme = urlToScheme(url);
1438
-
1439
- if (scheme === "file") {
1440
- const urlAsStringWithoutFileProtocol = String(url).slice("file://".length);
1441
- return urlAsStringWithoutFileProtocol;
1442
- }
1443
-
1444
- if (scheme === "https" || scheme === "http") {
1445
- // remove origin
1446
- const afterProtocol = String(url).slice(scheme.length + "://".length);
1447
- const pathnameSlashIndex = afterProtocol.indexOf("/", "://".length);
1448
- const urlAsStringWithoutOrigin = afterProtocol.slice(pathnameSlashIndex);
1449
- return urlAsStringWithoutOrigin;
1450
- }
1451
-
1452
- const urlAsStringWithoutProtocol = String(url).slice(scheme.length + 1);
1453
- return urlAsStringWithoutProtocol;
1454
- };
1455
-
1456
- const urlToPathname = (url) => {
1457
- const resource = urlToResource(url);
1458
- const pathname = resourceToPathname(resource);
1459
- return pathname;
1460
- };
1461
-
1462
- const urlToExtension = (url) => {
1463
- const pathname = urlToPathname(url);
1464
- return pathnameToExtension(pathname);
1465
- };
1466
-
1467
1397
  const transformUrlPathname = (url, transformer) => {
1468
1398
  if (typeof url === "string") {
1469
1399
  const urlObject = new URL(url);
@@ -1576,4 +1506,4 @@ const assertAndNormalizeDirectoryUrl = (
1576
1506
  return value;
1577
1507
  };
1578
1508
 
1579
- export { Abort, assertAndNormalizeDirectoryUrl, createLogger, createTaskLog, raceProcessTeardownEvents, urlToExtension, urlToPathname };
1509
+ export { Abort, assertAndNormalizeDirectoryUrl, createLogger, createTaskLog, raceProcessTeardownEvents };
@@ -1,6 +1,6 @@
1
- import { startServer, jsenvServiceCORS, jsenvAccessControlAllowedHeaders, jsenvServiceErrorHandler, createFileSystemFetch } from "@jsenv/server";
1
+ import { startServer, jsenvServiceCORS, jsenvAccessControlAllowedHeaders, jsenvServiceStaticFiles, jsenvServiceErrorHandler } from "@jsenv/server";
2
2
  import { existsSync } from "node:fs";
3
- import { assertAndNormalizeDirectoryUrl, createLogger, Abort, raceProcessTeardownEvents, createTaskLog, urlToExtension, urlToPathname } from "./jsenv_core_packages.js";
3
+ import { assertAndNormalizeDirectoryUrl, createLogger, Abort, raceProcessTeardownEvents, createTaskLog } from "./jsenv_core_packages.js";
4
4
  import "./jsenv_core_node_modules.js";
5
5
  import "node:process";
6
6
  import "node:os";
@@ -129,12 +129,12 @@ const startBuildServer = async ({
129
129
  timingAllowOrigin: true,
130
130
  }),
131
131
  ...services,
132
- jsenvBuildFileService({
133
- buildDirectoryUrl,
134
- buildMainFilePath,
132
+ jsenvServiceStaticFiles({
133
+ directoryUrl: buildDirectoryUrl,
134
+ mainFilePath: buildMainFilePath,
135
135
  }),
136
136
  jsenvServiceErrorHandler({
137
- sendErrorDetails: true,
137
+ sendErrorDetails: false,
138
138
  }),
139
139
  ],
140
140
  });
@@ -156,49 +156,4 @@ const startBuildServer = async ({
156
156
  };
157
157
  };
158
158
 
159
- const jsenvBuildFileService = ({ buildDirectoryUrl, buildMainFilePath }) => {
160
- return {
161
- name: "jsenv:build_files",
162
- routes: [
163
- {
164
- endpoint: "GET *",
165
- description: "Serve static files.",
166
- fetch: (request, helpers) => {
167
- const urlIsVersioned = new URL(request.url).searchParams.has("v");
168
- if (buildMainFilePath && request.resource === "/") {
169
- request = {
170
- ...request,
171
- resource: `/${buildMainFilePath}`,
172
- };
173
- }
174
- const urlObject = new URL(
175
- request.resource.slice(1),
176
- buildDirectoryUrl,
177
- );
178
- return createFileSystemFetch(buildDirectoryUrl, {
179
- cacheControl: urlIsVersioned
180
- ? `private,max-age=${SECONDS_IN_30_DAYS},immutable`
181
- : "private,max-age=0,must-revalidate",
182
- etagEnabled: true,
183
- compressionEnabled: true,
184
- rootDirectoryUrl: buildDirectoryUrl,
185
- canReadDirectory: true,
186
- ENOENTFallback: () => {
187
- if (
188
- !urlToExtension(urlObject) &&
189
- !urlToPathname(urlObject).endsWith("/")
190
- ) {
191
- return new URL(buildMainFilePath, buildDirectoryUrl);
192
- }
193
- return null;
194
- },
195
- })(request, helpers);
196
- },
197
- },
198
- ],
199
- };
200
- };
201
-
202
- const SECONDS_IN_30_DAYS = 60 * 60 * 24 * 30;
203
-
204
159
  export { startBuildServer };
@@ -1,5 +1,5 @@
1
1
  import { WebSocketResponse, pickContentType, ServerEvents, jsenvServiceCORS, jsenvAccessControlAllowedHeaders, composeTwoResponses, serveDirectory, jsenvServiceErrorHandler, startServer } from "@jsenv/server";
2
- import { convertFileSystemErrorToResponseProperties } from "@jsenv/server/src/internal/convertFileSystemErrorToResponseProperties.js";
2
+ import { convertFileSystemErrorToResponseProperties } from "@jsenv/server/src/services/filesystem/filesystem_error_to_response.js";
3
3
  import { lookupPackageDirectory, registerDirectoryLifecycle, urlToRelativeUrl, moveUrl, urlIsOrIsInsideOf, ensureWindowsDriveLetter, createDetailedMessage, stringifyUrlSite, generateContentFrame, validateResponseIntegrity, setUrlFilename, getCallerPosition, urlToBasename, urlToExtension, asSpecifierWithoutSearch, asUrlWithoutSearch, injectQueryParamsIntoSpecifier, bufferToEtag, isFileSystemPath, urlToPathname, setUrlBasename, urlToFileSystemPath, writeFileSync, createLogger, URL_META, applyNodeEsmResolution, normalizeUrl, ANSI, RUNTIME_COMPAT, CONTENT_TYPE, readPackageAtOrNull, errorToHTML, DATA_URL, normalizeImportMap, composeTwoImportMaps, resolveImport, JS_QUOTES, readCustomConditionsFromProcessArgs, readEntryStatSync, ensurePathnameTrailingSlash, compareFileUrls, urlToFilename, applyFileSystemMagicResolution, getExtensionsToTry, setUrlExtension, isSpecifierForNodeBuiltin, injectQueryParams, memoizeByFirstArgument, assertAndNormalizeDirectoryUrl, createTaskLog, formatError } from "./jsenv_core_packages.js";
4
4
  import { readFileSync, existsSync, readdirSync, lstatSync, realpathSync } from "node:fs";
5
5
  import { pathToFileURL } from "node:url";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/core",
3
- "version": "40.12.12",
3
+ "version": "40.12.13",
4
4
  "description": "Tool to develop, test and build js projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -81,7 +81,7 @@
81
81
  "@jsenv/plugin-minification": "1.7.3",
82
82
  "@jsenv/plugin-supervisor": "1.7.15",
83
83
  "@jsenv/plugin-transpilation": "1.5.70",
84
- "@jsenv/server": "16.3.6",
84
+ "@jsenv/server": "16.4.0",
85
85
  "@jsenv/sourcemap": "1.3.17",
86
86
  "react-table": "7.8.0"
87
87
  },
@@ -17,13 +17,12 @@ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort";
17
17
  import { assertAndNormalizeDirectoryUrl } from "@jsenv/filesystem";
18
18
  import { createLogger, createTaskLog } from "@jsenv/humanize";
19
19
  import {
20
- createFileSystemFetch,
21
20
  jsenvAccessControlAllowedHeaders,
22
21
  jsenvServiceCORS,
23
22
  jsenvServiceErrorHandler,
23
+ jsenvServiceStaticFiles,
24
24
  startServer,
25
25
  } from "@jsenv/server";
26
- import { urlToExtension, urlToPathname } from "@jsenv/urls";
27
26
  import { existsSync } from "node:fs";
28
27
 
29
28
  /**
@@ -132,12 +131,12 @@ export const startBuildServer = async ({
132
131
  timingAllowOrigin: true,
133
132
  }),
134
133
  ...services,
135
- jsenvBuildFileService({
136
- buildDirectoryUrl,
137
- buildMainFilePath,
134
+ jsenvServiceStaticFiles({
135
+ directoryUrl: buildDirectoryUrl,
136
+ mainFilePath: buildMainFilePath,
138
137
  }),
139
138
  jsenvServiceErrorHandler({
140
- sendErrorDetails: true,
139
+ sendErrorDetails: false,
141
140
  }),
142
141
  ],
143
142
  });
@@ -158,48 +157,3 @@ export const startBuildServer = async ({
158
157
  },
159
158
  };
160
159
  };
161
-
162
- const jsenvBuildFileService = ({ buildDirectoryUrl, buildMainFilePath }) => {
163
- return {
164
- name: "jsenv:build_files",
165
- routes: [
166
- {
167
- endpoint: "GET *",
168
- description: "Serve static files.",
169
- fetch: (request, helpers) => {
170
- const urlIsVersioned = new URL(request.url).searchParams.has("v");
171
- if (buildMainFilePath && request.resource === "/") {
172
- request = {
173
- ...request,
174
- resource: `/${buildMainFilePath}`,
175
- };
176
- }
177
- const urlObject = new URL(
178
- request.resource.slice(1),
179
- buildDirectoryUrl,
180
- );
181
- return createFileSystemFetch(buildDirectoryUrl, {
182
- cacheControl: urlIsVersioned
183
- ? `private,max-age=${SECONDS_IN_30_DAYS},immutable`
184
- : "private,max-age=0,must-revalidate",
185
- etagEnabled: true,
186
- compressionEnabled: true,
187
- rootDirectoryUrl: buildDirectoryUrl,
188
- canReadDirectory: true,
189
- ENOENTFallback: () => {
190
- if (
191
- !urlToExtension(urlObject) &&
192
- !urlToPathname(urlObject).endsWith("/")
193
- ) {
194
- return new URL(buildMainFilePath, buildDirectoryUrl);
195
- }
196
- return null;
197
- },
198
- })(request, helpers);
199
- },
200
- },
201
- ],
202
- };
203
- };
204
-
205
- const SECONDS_IN_30_DAYS = 60 * 60 * 24 * 30;
@@ -12,7 +12,7 @@ import {
12
12
  serveDirectory,
13
13
  startServer,
14
14
  } from "@jsenv/server";
15
- import { convertFileSystemErrorToResponseProperties } from "@jsenv/server/src/internal/convertFileSystemErrorToResponseProperties.js";
15
+ import { convertFileSystemErrorToResponseProperties } from "@jsenv/server/src/services/filesystem/filesystem_error_to_response.js";
16
16
  import { URL_META } from "@jsenv/url-meta";
17
17
  import { urlIsOrIsInsideOf, urlToRelativeUrl } from "@jsenv/urls";
18
18
  import { existsSync, readFileSync } from "node:fs";