@jsenv/core 40.3.1 → 40.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/README.md +42 -33
- package/dist/browserslist_index/browserslist_index.js +4951 -0
- package/dist/build/build.js +189 -62
- package/dist/jsenv_core_node_modules.js +25 -1
- package/dist/jsenv_core_packages.js +6384 -11580
- package/dist/start_build_server/start_build_server.js +0 -5
- package/dist/start_dev_server/start_dev_server.js +108 -60
- package/package.json +20 -21
- package/src/build/build.js +80 -1
- package/src/kitchen/errors.js +6 -1
- package/src/kitchen/kitchen.js +95 -7
- package/src/plugins/package_side_effects/jsenv_plugin_package_side_effects.js +5 -51
- package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +0 -112
- package/dist/babel_helpers/AwaitValue/AwaitValue.js +0 -3
- package/dist/babel_helpers/OverloadYield/OverloadYield.js +0 -11
- package/dist/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +0 -32
- package/dist/babel_helpers/applyDecs/applyDecs.js +0 -813
- package/dist/babel_helpers/applyDecs2203/applyDecs2203.js +0 -635
- package/dist/babel_helpers/applyDecs2203R/applyDecs2203R.js +0 -654
- package/dist/babel_helpers/applyDecs2301/applyDecs2301.js +0 -721
- package/dist/babel_helpers/applyDecs2305/applyDecs2305.js +0 -531
- package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +0 -7
- package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +0 -4
- package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
- package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +0 -9
- package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -55
- package/dist/babel_helpers/asyncIterator/asyncIterator.js +0 -68
- package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +0 -34
- package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
- package/dist/babel_helpers/callSuper/callSuper.js +0 -25
- package/dist/babel_helpers/checkInRHS/checkInRHS.js +0 -11
- package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -23
- package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
- package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
- package/dist/babel_helpers/classCallCheck/classCallCheck.js +0 -5
- package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -8
- package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -11
- package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -13
- package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +0 -6
- package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
- package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
- package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
- package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
- package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
- package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
- package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
- package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -13
- package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
- package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -10
- package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
- package/dist/babel_helpers/construct/construct.js +0 -20
- package/dist/babel_helpers/createClass/createClass.js +0 -17
- package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -61
- package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -24
- package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +0 -50
- package/dist/babel_helpers/createSuper/createSuper.js +0 -22
- package/dist/babel_helpers/decorate/decorate.js +0 -488
- package/dist/babel_helpers/defaults/defaults.js +0 -11
- package/dist/babel_helpers/defineAccessor/defineAccessor.js +0 -6
- package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
- package/dist/babel_helpers/defineProperty/defineProperty.js +0 -21
- package/dist/babel_helpers/dispose/dispose.js +0 -45
- package/dist/babel_helpers/extends/extends.js +0 -14
- package/dist/babel_helpers/get/get.js +0 -19
- package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +0 -4
- package/dist/babel_helpers/identity/identity.js +0 -3
- package/dist/babel_helpers/importDeferProxy/importDeferProxy.js +0 -31
- package/dist/babel_helpers/inherits/inherits.js +0 -19
- package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +0 -7
- package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +0 -12
- package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +0 -6
- package/dist/babel_helpers/instanceof/instanceof.js +0 -10
- package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +0 -3
- package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +0 -47
- package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +0 -9
- package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -19
- package/dist/babel_helpers/iterableToArray/iterableToArray.js +0 -7
- package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +0 -54
- package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -16
- package/dist/babel_helpers/jsx/jsx.js +0 -50
- package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +0 -10
- package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +0 -5
- package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +0 -5
- package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +0 -5
- package/dist/babel_helpers/nullishReceiverError/nullishReceiverError.js +0 -3
- package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
- package/dist/babel_helpers/objectSpread/objectSpread.js +0 -23
- package/dist/babel_helpers/objectSpread2/objectSpread2.js +0 -43
- package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +0 -19
- package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
- package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +0 -12
- package/dist/babel_helpers/readOnlyError/readOnlyError.js +0 -4
- package/dist/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +0 -698
- package/dist/babel_helpers/set/set.js +0 -47
- package/dist/babel_helpers/setFunctionName/setFunctionName.js +0 -19
- package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +0 -7
- package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
- package/dist/babel_helpers/slicedToArray/slicedToArray.js +0 -10
- package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
- package/dist/babel_helpers/superPropBase/superPropBase.js +0 -10
- package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
- package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
- package/dist/babel_helpers/tdz/tdz.js +0 -4
- package/dist/babel_helpers/temporalRef/temporalRef.js +0 -6
- package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +0 -3
- package/dist/babel_helpers/toArray/toArray.js +0 -10
- package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +0 -10
- package/dist/babel_helpers/toPrimitive/toPrimitive.js +0 -14
- package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +0 -10
- package/dist/babel_helpers/typeof/typeof.js +0 -15
- package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
- package/dist/babel_helpers/using/using.js +0 -23
- package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
- package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +0 -30
- package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +0 -79
- package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +0 -3
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { startServer, jsenvServiceCORS, jsenvServiceErrorHandler, jsenvAccessControlAllowedHeaders, createFileSystemFetch } from "@jsenv/server";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { assertAndNormalizeDirectoryUrl$2 as assertAndNormalizeDirectoryUrl, createLogger$2 as createLogger, Abort$1 as Abort, raceProcessTeardownEvents$1 as raceProcessTeardownEvents, createTaskLog$2 as createTaskLog, urlToExtension$2 as urlToExtension, urlToPathname$2 as urlToPathname } from "../jsenv_core_packages.js";
|
|
4
|
-
import "strip-ansi";
|
|
5
4
|
import "../jsenv_core_node_modules.js";
|
|
6
5
|
import "node:process";
|
|
7
6
|
import "node:os";
|
|
@@ -10,10 +9,6 @@ import "node:util";
|
|
|
10
9
|
import "node:path";
|
|
11
10
|
import "node:crypto";
|
|
12
11
|
import "node:url";
|
|
13
|
-
import "@jsenv/ast";
|
|
14
|
-
import "@jsenv/sourcemap";
|
|
15
|
-
import "node:module";
|
|
16
|
-
import "@jsenv/js-module-fallback";
|
|
17
12
|
|
|
18
13
|
/*
|
|
19
14
|
* startBuildServer is mean to interact with the build files;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import { WebSocketResponse, pickContentType, ServerEvents, jsenvServiceCORS, jsenvAccessControlAllowedHeaders, composeTwoResponses, serveDirectory, jsenvServiceErrorHandler, startServer } from "@jsenv/server";
|
|
2
2
|
import { convertFileSystemErrorToResponseProperties } from "@jsenv/server/src/internal/convertFileSystemErrorToResponseProperties.js";
|
|
3
|
-
import { lookupPackageDirectory, registerDirectoryLifecycle, urlToRelativeUrl, moveUrl, urlIsInsideOf, ensureWindowsDriveLetter, createDetailedMessage, stringifyUrlSite, generateContentFrame, validateResponseIntegrity, setUrlFilename, getCallerPosition, urlToBasename, urlToExtension, asSpecifierWithoutSearch, asUrlWithoutSearch, injectQueryParamsIntoSpecifier, bufferToEtag, isFileSystemPath, urlToPathname, setUrlBasename, urlToFileSystemPath, writeFileSync, createLogger, URL_META, applyNodeEsmResolution, RUNTIME_COMPAT, normalizeUrl, ANSI, CONTENT_TYPE, errorToHTML, DATA_URL, normalizeImportMap, composeTwoImportMaps, resolveImport, JS_QUOTES, defaultLookupPackageScope, defaultReadPackageJson, readCustomConditionsFromProcessArgs, readEntryStatSync, urlToFilename, ensurePathnameTrailingSlash, compareFileUrls, applyFileSystemMagicResolution, getExtensionsToTry, setUrlExtension,
|
|
3
|
+
import { lookupPackageDirectory, registerDirectoryLifecycle, urlToRelativeUrl, moveUrl, urlIsInsideOf, ensureWindowsDriveLetter, createDetailedMessage, stringifyUrlSite, generateContentFrame, validateResponseIntegrity, setUrlFilename, getCallerPosition, urlToBasename, urlToExtension, asSpecifierWithoutSearch, asUrlWithoutSearch, injectQueryParamsIntoSpecifier, bufferToEtag, isFileSystemPath, urlToPathname, setUrlBasename, urlToFileSystemPath, writeFileSync, createLogger, URL_META, applyNodeEsmResolution, RUNTIME_COMPAT, normalizeUrl, ANSI, CONTENT_TYPE, errorToHTML, DATA_URL, normalizeImportMap, composeTwoImportMaps, resolveImport, JS_QUOTES, defaultLookupPackageScope, defaultReadPackageJson, readCustomConditionsFromProcessArgs, readEntryStatSync, urlToFilename, ensurePathnameTrailingSlash, compareFileUrls, applyFileSystemMagicResolution, getExtensionsToTry, setUrlExtension, isSpecifierForNodeBuiltin, memoizeByFirstArgument, assertAndNormalizeDirectoryUrl, createTaskLog, readPackageAtOrNull } from "../jsenv_core_packages.js";
|
|
4
4
|
import { readFileSync, existsSync, readdirSync, lstatSync, realpathSync } from "node:fs";
|
|
5
5
|
import { pathToFileURL } from "node:url";
|
|
6
6
|
import { generateSourcemapFileUrl, createMagicSource, composeTwoSourcemaps, generateSourcemapDataUrl, SOURCEMAP } from "@jsenv/sourcemap";
|
|
7
7
|
import { parseHtml, injectHtmlNodeAsEarlyAsPossible, createHtmlNode, stringifyHtmlAst, applyBabelPlugins, generateUrlForInlineContent, parseJsWithAcorn, parseCssUrls, getHtmlNodeAttribute, getHtmlNodePosition, getHtmlNodeAttributePosition, setHtmlNodeAttributes, parseSrcSet, getUrlForContentInsideHtml, removeHtmlNodeText, setHtmlNodeText, getHtmlNodeText, analyzeScriptNode, visitHtmlNodes, parseJsUrls, getUrlForContentInsideJs, analyzeLinkNode, injectJsenvScript } from "@jsenv/ast";
|
|
8
8
|
import { performance } from "node:perf_hooks";
|
|
9
9
|
import { jsenvPluginSupervisor } from "@jsenv/plugin-supervisor";
|
|
10
|
+
import { jsenvPluginTranspilation } from "@jsenv/plugin-transpilation";
|
|
10
11
|
import { randomUUID } from "node:crypto";
|
|
11
12
|
import { createRequire } from "node:module";
|
|
12
|
-
import "strip-ansi";
|
|
13
13
|
import "../jsenv_core_node_modules.js";
|
|
14
14
|
import "node:process";
|
|
15
15
|
import "node:os";
|
|
16
16
|
import "node:tty";
|
|
17
17
|
import "node:util";
|
|
18
18
|
import "node:path";
|
|
19
|
-
import "@jsenv/js-module-fallback";
|
|
20
19
|
|
|
21
20
|
// default runtimeCompat corresponds to
|
|
22
21
|
// "we can keep <script type="module"> intact":
|
|
@@ -239,6 +238,7 @@ ${reason}`,
|
|
|
239
238
|
if (error.code === "DIRECTORY_REFERENCE_NOT_ALLOWED") {
|
|
240
239
|
error.message = createDetailedMessage(error.message, {
|
|
241
240
|
"reference trace": reference.trace.message,
|
|
241
|
+
...detailsFromFirstReference(reference),
|
|
242
242
|
});
|
|
243
243
|
return error;
|
|
244
244
|
}
|
|
@@ -478,7 +478,11 @@ const detailsFromFirstReference = (reference) => {
|
|
|
478
478
|
};
|
|
479
479
|
const getFirstReferenceInProject = (reference) => {
|
|
480
480
|
const ownerUrlInfo = reference.ownerUrlInfo;
|
|
481
|
-
if (
|
|
481
|
+
if (
|
|
482
|
+
!ownerUrlInfo.url.includes("/node_modules/") &&
|
|
483
|
+
ownerUrlInfo.packageDirectoryUrl ===
|
|
484
|
+
ownerUrlInfo.context.packageDirectory.url
|
|
485
|
+
) {
|
|
482
486
|
return reference;
|
|
483
487
|
}
|
|
484
488
|
return getFirstReferenceInProject(ownerUrlInfo.firstReference);
|
|
@@ -2687,10 +2691,9 @@ const shouldHandleSourcemap = (urlInfo) => {
|
|
|
2687
2691
|
return true;
|
|
2688
2692
|
};
|
|
2689
2693
|
|
|
2690
|
-
const inlineContentClientFileUrl =
|
|
2694
|
+
const inlineContentClientFileUrl = import.meta.resolve(
|
|
2691
2695
|
"../client/inline_content/inline_content.js",
|
|
2692
|
-
|
|
2693
|
-
).href;
|
|
2696
|
+
);
|
|
2694
2697
|
|
|
2695
2698
|
const createKitchen = ({
|
|
2696
2699
|
name,
|
|
@@ -2699,12 +2702,14 @@ const createKitchen = ({
|
|
|
2699
2702
|
|
|
2700
2703
|
rootDirectoryUrl,
|
|
2701
2704
|
mainFilePath,
|
|
2702
|
-
ignore,
|
|
2703
|
-
ignoreProtocol = "remove",
|
|
2704
|
-
supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
|
|
2705
2705
|
dev = false,
|
|
2706
2706
|
build = false,
|
|
2707
2707
|
runtimeCompat,
|
|
2708
|
+
|
|
2709
|
+
ignore,
|
|
2710
|
+
ignoreProtocol = "remove",
|
|
2711
|
+
supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
|
|
2712
|
+
|
|
2708
2713
|
// during dev/test clientRuntimeCompat is a single runtime
|
|
2709
2714
|
// during build clientRuntimeCompat is runtimeCompat
|
|
2710
2715
|
clientRuntimeCompat = runtimeCompat,
|
|
@@ -2717,12 +2722,17 @@ const createKitchen = ({
|
|
|
2717
2722
|
outDirectoryUrl,
|
|
2718
2723
|
initialContext = {},
|
|
2719
2724
|
packageDirectory,
|
|
2725
|
+
packageDependencies,
|
|
2720
2726
|
}) => {
|
|
2721
2727
|
const logger = createLogger({ logLevel });
|
|
2722
2728
|
|
|
2723
2729
|
const nodeRuntimeEnabled = Object.keys(runtimeCompat).includes("node");
|
|
2724
2730
|
const packageConditions = [nodeRuntimeEnabled ? "node" : "browser", "import"];
|
|
2725
2731
|
|
|
2732
|
+
if (packageDependencies === "auto") {
|
|
2733
|
+
packageDependencies = build && nodeRuntimeEnabled ? "ignore" : "include";
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2726
2736
|
const kitchen = {
|
|
2727
2737
|
context: {
|
|
2728
2738
|
...initialContext,
|
|
@@ -2792,6 +2802,82 @@ const createKitchen = ({
|
|
|
2792
2802
|
const protocolIsSupported = supportedProtocols.includes(protocol);
|
|
2793
2803
|
return !protocolIsSupported;
|
|
2794
2804
|
};
|
|
2805
|
+
const isIgnoredBecauseInPackageDependencies = (() => {
|
|
2806
|
+
if (packageDependencies === undefined) {
|
|
2807
|
+
return FUNCTION_RETURNING_FALSE;
|
|
2808
|
+
}
|
|
2809
|
+
if (packageDependencies === "include") {
|
|
2810
|
+
return FUNCTION_RETURNING_FALSE;
|
|
2811
|
+
}
|
|
2812
|
+
if (!packageDirectory.url) {
|
|
2813
|
+
return FUNCTION_RETURNING_FALSE;
|
|
2814
|
+
}
|
|
2815
|
+
const rootPackageJSON = packageDirectory.read(packageDirectory.url);
|
|
2816
|
+
if (!rootPackageJSON) {
|
|
2817
|
+
return FUNCTION_RETURNING_FALSE;
|
|
2818
|
+
}
|
|
2819
|
+
const { dependencies = {}, optionalDependencies = {} } = rootPackageJSON;
|
|
2820
|
+
const dependencyKeys = Object.keys(dependencies);
|
|
2821
|
+
const optionalDependencyKeys = Object.keys(optionalDependencies);
|
|
2822
|
+
const dependencySet = new Set([
|
|
2823
|
+
...dependencyKeys,
|
|
2824
|
+
...optionalDependencyKeys,
|
|
2825
|
+
]);
|
|
2826
|
+
if (dependencySet.size === 0) {
|
|
2827
|
+
return FUNCTION_RETURNING_FALSE;
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
let getEffect;
|
|
2831
|
+
if (packageDependencies === "ignore") {
|
|
2832
|
+
getEffect = (dependencyName) => {
|
|
2833
|
+
if (!dependencySet.has(dependencyName)) {
|
|
2834
|
+
return "include";
|
|
2835
|
+
}
|
|
2836
|
+
return "ignore";
|
|
2837
|
+
};
|
|
2838
|
+
} else if (typeof packageDependencies === "object") {
|
|
2839
|
+
let defaultEffect = "ignore";
|
|
2840
|
+
const dependencyEffectMap = new Map();
|
|
2841
|
+
for (const dependencyKey of Object.keys(packageDependencies)) {
|
|
2842
|
+
const dependencyEffect = packageDependencies[dependencyKey];
|
|
2843
|
+
if (dependencyKey === "*") {
|
|
2844
|
+
defaultEffect = dependencyEffect;
|
|
2845
|
+
} else {
|
|
2846
|
+
dependencyEffectMap.set(dependencyKey, dependencyEffect);
|
|
2847
|
+
}
|
|
2848
|
+
}
|
|
2849
|
+
getEffect = (dependencyName) => {
|
|
2850
|
+
if (!dependencySet.has(dependencyName)) {
|
|
2851
|
+
return "include";
|
|
2852
|
+
}
|
|
2853
|
+
const dependencyEffect = packageDependencies[dependencyName];
|
|
2854
|
+
if (dependencyEffect) {
|
|
2855
|
+
return dependencyEffect;
|
|
2856
|
+
}
|
|
2857
|
+
return defaultEffect;
|
|
2858
|
+
};
|
|
2859
|
+
}
|
|
2860
|
+
return (url) => {
|
|
2861
|
+
if (!url.startsWith("file:")) {
|
|
2862
|
+
return false;
|
|
2863
|
+
}
|
|
2864
|
+
const packageDirectoryUrl = packageDirectory.find(url);
|
|
2865
|
+
if (!packageDirectoryUrl) {
|
|
2866
|
+
return false;
|
|
2867
|
+
}
|
|
2868
|
+
const packageJSON = packageDirectory.read(packageDirectoryUrl);
|
|
2869
|
+
const name = packageJSON?.name;
|
|
2870
|
+
if (!name) {
|
|
2871
|
+
return false;
|
|
2872
|
+
}
|
|
2873
|
+
const effect = getEffect(name);
|
|
2874
|
+
if (effect !== "ignore") {
|
|
2875
|
+
return false;
|
|
2876
|
+
}
|
|
2877
|
+
return true;
|
|
2878
|
+
};
|
|
2879
|
+
})();
|
|
2880
|
+
|
|
2795
2881
|
let isIgnoredByParam = () => false;
|
|
2796
2882
|
if (ignore) {
|
|
2797
2883
|
const associations = URL_META.resolveAssociations(
|
|
@@ -2811,7 +2897,11 @@ const createKitchen = ({
|
|
|
2811
2897
|
};
|
|
2812
2898
|
}
|
|
2813
2899
|
const isIgnored = (url) => {
|
|
2814
|
-
return
|
|
2900
|
+
return (
|
|
2901
|
+
isIgnoredByProtocol(url) ||
|
|
2902
|
+
isIgnoredByParam(url) ||
|
|
2903
|
+
isIgnoredBecauseInPackageDependencies(url)
|
|
2904
|
+
);
|
|
2815
2905
|
};
|
|
2816
2906
|
const resolveReference = (reference) => {
|
|
2817
2907
|
const setReferenceUrl = (referenceUrl) => {
|
|
@@ -3302,6 +3392,8 @@ ${urlInfo.firstReference.trace.message}`;
|
|
|
3302
3392
|
return kitchen;
|
|
3303
3393
|
};
|
|
3304
3394
|
|
|
3395
|
+
const FUNCTION_RETURNING_FALSE = () => false;
|
|
3396
|
+
|
|
3305
3397
|
const debounceCook = (cook) => {
|
|
3306
3398
|
const pendingDishes = new Map();
|
|
3307
3399
|
return async (urlInfo, context) => {
|
|
@@ -8270,19 +8362,6 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
|
8270
8362
|
return [];
|
|
8271
8363
|
}
|
|
8272
8364
|
|
|
8273
|
-
const sideEffectFileUrlSet = new Set();
|
|
8274
|
-
const packageJsonFileUrl = new URL("./package.json", packageDirectory.url)
|
|
8275
|
-
.href;
|
|
8276
|
-
|
|
8277
|
-
const normalizeSideEffectFileUrl = (url) => {
|
|
8278
|
-
const urlRelativeToPackage = urlToRelativeUrl(url, packageDirectory.url);
|
|
8279
|
-
return urlRelativeToPackage[0] === "."
|
|
8280
|
-
? urlRelativeToPackage
|
|
8281
|
-
: `./${urlRelativeToPackage}`;
|
|
8282
|
-
};
|
|
8283
|
-
|
|
8284
|
-
const sideEffectBuildFileUrls = [];
|
|
8285
|
-
|
|
8286
8365
|
const packageSideEffectsCacheMap = new Map();
|
|
8287
8366
|
const readSideEffectInfoFromClosestPackage = (urlInfo) => {
|
|
8288
8367
|
const closestPackageDirectoryUrl = urlInfo.packageDirectoryUrl;
|
|
@@ -8408,48 +8487,17 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
|
8408
8487
|
return;
|
|
8409
8488
|
}
|
|
8410
8489
|
},
|
|
8411
|
-
refineBuildUrlContent: (
|
|
8490
|
+
refineBuildUrlContent: (
|
|
8491
|
+
buildUrlInfo,
|
|
8492
|
+
{ buildUrl, registerBuildSideEffectFile },
|
|
8493
|
+
) => {
|
|
8412
8494
|
for (const sideEffect of buildUrlInfo.contentSideEffects) {
|
|
8413
8495
|
if (sideEffect.has) {
|
|
8414
|
-
|
|
8496
|
+
registerBuildSideEffectFile(buildUrl);
|
|
8415
8497
|
return;
|
|
8416
8498
|
}
|
|
8417
8499
|
}
|
|
8418
8500
|
},
|
|
8419
|
-
refineBuild: () => {
|
|
8420
|
-
if (sideEffectBuildFileUrls.length === 0) {
|
|
8421
|
-
return;
|
|
8422
|
-
}
|
|
8423
|
-
let sideEffectsToAdd = [];
|
|
8424
|
-
if (sideEffects === false) {
|
|
8425
|
-
sideEffectsToAdd = sideEffectBuildFileUrls;
|
|
8426
|
-
} else if (Array.isArray(sideEffects)) {
|
|
8427
|
-
for (const sideEffectFileRelativeUrl of sideEffects) {
|
|
8428
|
-
const sideEffectFileUrl = new URL(
|
|
8429
|
-
sideEffectFileRelativeUrl,
|
|
8430
|
-
packageDirectory.url,
|
|
8431
|
-
).href;
|
|
8432
|
-
sideEffectFileUrlSet.add(sideEffectFileUrl);
|
|
8433
|
-
}
|
|
8434
|
-
for (const url of sideEffectBuildFileUrls) {
|
|
8435
|
-
if (sideEffectFileUrlSet.has(url)) {
|
|
8436
|
-
continue;
|
|
8437
|
-
}
|
|
8438
|
-
sideEffectsToAdd.push(url);
|
|
8439
|
-
}
|
|
8440
|
-
}
|
|
8441
|
-
if (sideEffectsToAdd.length === 0) {
|
|
8442
|
-
return;
|
|
8443
|
-
}
|
|
8444
|
-
|
|
8445
|
-
const finalSideEffects = Array.isArray(sideEffects) ? sideEffects : [];
|
|
8446
|
-
for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
|
|
8447
|
-
finalSideEffects.push(normalizeSideEffectFileUrl(sideEffectBuildUrl));
|
|
8448
|
-
}
|
|
8449
|
-
updateJsonFileSync(packageJsonFileUrl, {
|
|
8450
|
-
sideEffects: finalSideEffects,
|
|
8451
|
-
});
|
|
8452
|
-
},
|
|
8453
8501
|
};
|
|
8454
8502
|
};
|
|
8455
8503
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/core",
|
|
3
|
-
"version": "40.3.
|
|
3
|
+
"version": "40.3.3",
|
|
4
4
|
"description": "Tool to develop, test and build js projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -49,11 +49,10 @@
|
|
|
49
49
|
],
|
|
50
50
|
"sideEffects": [
|
|
51
51
|
"./src/kitchen/client/inline_content.js",
|
|
52
|
+
"./dist/client/new_stylesheet/new_stylesheet.js",
|
|
52
53
|
"./dist/client/inline_content/inline_content.js",
|
|
53
54
|
"./dist/client/directory_listing/jsenv_core_node_modules.js",
|
|
54
|
-
"./dist/jsenv_core_node_modules.js"
|
|
55
|
-
"./dist/client/new_stylesheet/new_stylesheet.js",
|
|
56
|
-
"./dist/client/inline_content/inline_content.js"
|
|
55
|
+
"./dist/jsenv_core_node_modules.js"
|
|
57
56
|
],
|
|
58
57
|
"scripts": {
|
|
59
58
|
"eslint": "npx eslint .",
|
|
@@ -81,23 +80,14 @@
|
|
|
81
80
|
},
|
|
82
81
|
"dependencies": {
|
|
83
82
|
"@financial-times/polyfill-useragent-normaliser": "1.10.2",
|
|
84
|
-
"@jsenv/
|
|
85
|
-
"@jsenv/
|
|
86
|
-
"@jsenv/
|
|
87
|
-
"@jsenv/humanize": "1.5.0",
|
|
88
|
-
"@jsenv/importmap": "1.2.2",
|
|
89
|
-
"@jsenv/integrity": "0.0.2",
|
|
90
|
-
"@jsenv/js-module-fallback": "1.4.7",
|
|
91
|
-
"@jsenv/node-esm-resolution": "1.2.0",
|
|
92
|
-
"@jsenv/plugin-bundling": "2.9.3",
|
|
83
|
+
"@jsenv/ast": "6.6.10",
|
|
84
|
+
"@jsenv/js-module-fallback": "1.4.8",
|
|
85
|
+
"@jsenv/plugin-bundling": "2.9.4",
|
|
93
86
|
"@jsenv/plugin-minification": "1.6.3",
|
|
94
|
-
"@jsenv/plugin-supervisor": "1.6.
|
|
95
|
-
"@jsenv/plugin-transpilation": "1.5.
|
|
96
|
-
"@jsenv/
|
|
97
|
-
"@jsenv/
|
|
98
|
-
"@jsenv/url-meta": "8.5.6",
|
|
99
|
-
"@jsenv/urls": "2.7.2",
|
|
100
|
-
"@jsenv/utils": "2.3.0"
|
|
87
|
+
"@jsenv/plugin-supervisor": "1.6.14",
|
|
88
|
+
"@jsenv/plugin-transpilation": "1.5.15",
|
|
89
|
+
"@jsenv/sourcemap": "1.3.6",
|
|
90
|
+
"@jsenv/server": "16.1.1"
|
|
101
91
|
},
|
|
102
92
|
"devDependencies": {
|
|
103
93
|
"@babel/plugin-syntax-decorators": "7.25.9",
|
|
@@ -119,6 +109,15 @@
|
|
|
119
109
|
"@jsenv/terminal-table": "workspace:*",
|
|
120
110
|
"@jsenv/os-metrics": "workspace:*",
|
|
121
111
|
"@jsenv/runtime-compat": "workspace:*",
|
|
112
|
+
"@jsenv/url-meta": "workspace:*",
|
|
113
|
+
"@jsenv/urls": "workspace:*",
|
|
114
|
+
"@jsenv/utils": "workspace:*",
|
|
115
|
+
"@jsenv/abort": "workspace:*",
|
|
116
|
+
"@jsenv/filesystem": "workspace:*",
|
|
117
|
+
"@jsenv/humanize": "workspace:*",
|
|
118
|
+
"@jsenv/importmap": "workspace:*",
|
|
119
|
+
"@jsenv/integrity": "workspace:*",
|
|
120
|
+
"@jsenv/node-esm-resolution": "workspace:*",
|
|
122
121
|
"@playwright/browser-chromium": "1.51.1",
|
|
123
122
|
"@playwright/browser-firefox": "1.51.1",
|
|
124
123
|
"@playwright/browser-webkit": "1.51.1",
|
|
@@ -130,4 +129,4 @@
|
|
|
130
129
|
"prettier-plugin-organize-imports": "4.1.0",
|
|
131
130
|
"strip-ansi": "7.1.0"
|
|
132
131
|
}
|
|
133
|
-
}
|
|
132
|
+
}
|
package/src/build/build.js
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
ensureEmptyDirectory,
|
|
27
27
|
lookupPackageDirectory,
|
|
28
28
|
readPackageAtOrNull,
|
|
29
|
+
updateJsonFileSync,
|
|
29
30
|
writeFileSync,
|
|
30
31
|
} from "@jsenv/filesystem";
|
|
31
32
|
import {
|
|
@@ -636,6 +637,7 @@ export const build = async ({
|
|
|
636
637
|
entryBuildInfo.buildFileVersions = result.buildFileVersions;
|
|
637
638
|
entryBuildInfo.buildInlineContents = result.buildInlineContents;
|
|
638
639
|
entryBuildInfo.buildManifest = result.buildManifest;
|
|
640
|
+
entryBuildInfo.buildSideEffectFiles = result.buildSideEffectFiles;
|
|
639
641
|
entryBuildInfo.duration = Date.now() - entryPointBuildStartMs;
|
|
640
642
|
onEntryPointBuildEnd();
|
|
641
643
|
})();
|
|
@@ -658,11 +660,15 @@ export const build = async ({
|
|
|
658
660
|
const buildFileVersions = {};
|
|
659
661
|
const buildInlineContents = {};
|
|
660
662
|
const buildManifest = {};
|
|
663
|
+
const buildSideEffectUrlSet = new Set();
|
|
661
664
|
for (const [, entryBuildInfo] of entryBuildInfoMap) {
|
|
662
665
|
Object.assign(buildFileContents, entryBuildInfo.buildFileContents);
|
|
663
666
|
Object.assign(buildFileVersions, entryBuildInfo.buildFileVersions);
|
|
664
667
|
Object.assign(buildInlineContents, entryBuildInfo.buildInlineContents);
|
|
665
668
|
Object.assign(buildManifest, entryBuildInfo.buildManifest);
|
|
669
|
+
for (const buildSideEffectUrl of entryBuildInfo.buildSideEffectFiles) {
|
|
670
|
+
buildSideEffectUrlSet.add(buildSideEffectUrl);
|
|
671
|
+
}
|
|
666
672
|
}
|
|
667
673
|
if (writeOnFileSystem) {
|
|
668
674
|
clearDirectorySync(buildDirectoryUrl, buildDirectoryCleanPatterns);
|
|
@@ -671,6 +677,70 @@ export const build = async ({
|
|
|
671
677
|
const buildUrl = new URL(buildRelativeUrl, buildDirectoryUrl);
|
|
672
678
|
writeFileSync(buildUrl, buildFileContents[buildRelativeUrl]);
|
|
673
679
|
}
|
|
680
|
+
if (buildSideEffectUrlSet.size) {
|
|
681
|
+
const normalizeSideEffectFileUrl = (url) => {
|
|
682
|
+
const urlRelativeToPackage = urlToRelativeUrl(
|
|
683
|
+
url,
|
|
684
|
+
packageDirectory.url,
|
|
685
|
+
);
|
|
686
|
+
return urlRelativeToPackage[0] === "."
|
|
687
|
+
? urlRelativeToPackage
|
|
688
|
+
: `./${urlRelativeToPackage}`;
|
|
689
|
+
};
|
|
690
|
+
const updatePackageSideEffects = (sideEffectUrlSet) => {
|
|
691
|
+
const packageJsonFileUrl = new URL(
|
|
692
|
+
"./package.json",
|
|
693
|
+
packageDirectory.url,
|
|
694
|
+
).href;
|
|
695
|
+
const sideEffectRelativeUrlArray = [];
|
|
696
|
+
for (const sideEffectUrl of sideEffectUrlSet) {
|
|
697
|
+
sideEffectRelativeUrlArray.push(
|
|
698
|
+
normalizeSideEffectFileUrl(sideEffectUrl),
|
|
699
|
+
);
|
|
700
|
+
}
|
|
701
|
+
updateJsonFileSync(packageJsonFileUrl, {
|
|
702
|
+
sideEffects: sideEffectRelativeUrlArray,
|
|
703
|
+
});
|
|
704
|
+
};
|
|
705
|
+
const sideEffects = readPackageDirectory(
|
|
706
|
+
packageDirectory.url,
|
|
707
|
+
)?.sideEffects;
|
|
708
|
+
if (sideEffects === false) {
|
|
709
|
+
updatePackageSideEffects(buildSideEffectUrlSet);
|
|
710
|
+
} else if (Array.isArray(sideEffects)) {
|
|
711
|
+
const sideEffectUrlSet = new Set();
|
|
712
|
+
const packageSideEffectUrlSet = new Set();
|
|
713
|
+
for (const sideEffectFileRelativeUrl of sideEffects) {
|
|
714
|
+
const sideEffectFileUrl = new URL(
|
|
715
|
+
sideEffectFileRelativeUrl,
|
|
716
|
+
packageDirectory.url,
|
|
717
|
+
).href;
|
|
718
|
+
packageSideEffectUrlSet.add(sideEffectFileUrl);
|
|
719
|
+
}
|
|
720
|
+
let hasSomeOutdatedSideEffectUrl = false;
|
|
721
|
+
for (const packageSideEffectUrl of packageSideEffectUrlSet) {
|
|
722
|
+
if (
|
|
723
|
+
urlIsInsideOf(packageSideEffectUrl, buildDirectoryUrl) &&
|
|
724
|
+
!buildSideEffectUrlSet.has(packageSideEffectUrl)
|
|
725
|
+
) {
|
|
726
|
+
hasSomeOutdatedSideEffectUrl = true;
|
|
727
|
+
} else {
|
|
728
|
+
sideEffectUrlSet.add(packageSideEffectUrl);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
let hasSomeNewSideEffectsUrl = false;
|
|
732
|
+
for (const buildSideEffectUrl of buildSideEffectUrlSet) {
|
|
733
|
+
if (packageSideEffectUrlSet.has(buildSideEffectUrl)) {
|
|
734
|
+
continue;
|
|
735
|
+
}
|
|
736
|
+
hasSomeNewSideEffectsUrl = true;
|
|
737
|
+
sideEffectUrlSet.add(buildSideEffectUrl);
|
|
738
|
+
}
|
|
739
|
+
if (hasSomeOutdatedSideEffectUrl || hasSomeNewSideEffectsUrl) {
|
|
740
|
+
updatePackageSideEffects(sideEffectUrlSet);
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
}
|
|
674
744
|
}
|
|
675
745
|
onBuildEnd({
|
|
676
746
|
buildFileContents,
|
|
@@ -796,6 +866,7 @@ const entryPointDefaultParams = {
|
|
|
796
866
|
assetManifest: false,
|
|
797
867
|
assetManifestFileRelativeUrl: "asset-manifest.json",
|
|
798
868
|
packageSideEffects: true,
|
|
869
|
+
packageDependencies: "auto", // "auto", "ignore", "include"
|
|
799
870
|
};
|
|
800
871
|
|
|
801
872
|
const prepareEntryPointBuild = async (
|
|
@@ -846,6 +917,7 @@ const prepareEntryPointBuild = async (
|
|
|
846
917
|
assetManifest,
|
|
847
918
|
assetManifestFileRelativeUrl,
|
|
848
919
|
packageSideEffects,
|
|
920
|
+
packageDependencies,
|
|
849
921
|
} = {
|
|
850
922
|
...entryPointDefaultParams,
|
|
851
923
|
...entryPointParams,
|
|
@@ -939,6 +1011,7 @@ const prepareEntryPointBuild = async (
|
|
|
939
1011
|
? new URL("craft/", outDirectoryUrl)
|
|
940
1012
|
: undefined,
|
|
941
1013
|
packageDirectory,
|
|
1014
|
+
packageDependencies,
|
|
942
1015
|
});
|
|
943
1016
|
|
|
944
1017
|
let _getOtherEntryBuildInfo;
|
|
@@ -1038,6 +1111,7 @@ const prepareEntryPointBuild = async (
|
|
|
1038
1111
|
? new URL("shape/", outDirectoryUrl)
|
|
1039
1112
|
: undefined,
|
|
1040
1113
|
packageDirectory,
|
|
1114
|
+
packageDependencies,
|
|
1041
1115
|
});
|
|
1042
1116
|
const buildSpecifierManager = createBuildSpecifierManager({
|
|
1043
1117
|
rawKitchen,
|
|
@@ -1245,6 +1319,7 @@ const prepareEntryPointBuild = async (
|
|
|
1245
1319
|
});
|
|
1246
1320
|
}
|
|
1247
1321
|
|
|
1322
|
+
const buildSideEffectFiles = [];
|
|
1248
1323
|
refine: {
|
|
1249
1324
|
finalKitchen.context.buildStep = "refine";
|
|
1250
1325
|
|
|
@@ -1332,6 +1407,9 @@ const prepareEntryPointBuild = async (
|
|
|
1332
1407
|
for (const refineBuildUrlContentCallback of refineBuildUrlContentCallbackSet) {
|
|
1333
1408
|
refineBuildUrlContentCallback(buildUrlInfo, {
|
|
1334
1409
|
buildUrl: buildSpecifierManager.getBuildUrl(buildUrlInfo),
|
|
1410
|
+
registerBuildSideEffectFile: (buildFileUrl) => {
|
|
1411
|
+
buildSideEffectFiles.push(buildFileUrl);
|
|
1412
|
+
},
|
|
1335
1413
|
});
|
|
1336
1414
|
}
|
|
1337
1415
|
},
|
|
@@ -1339,7 +1417,7 @@ const prepareEntryPointBuild = async (
|
|
|
1339
1417
|
}
|
|
1340
1418
|
if (refineBuildCallbackSet.size) {
|
|
1341
1419
|
for (const refineBuildCallback of refineBuildCallbackSet) {
|
|
1342
|
-
refineBuildCallback(finalKitchen
|
|
1420
|
+
refineBuildCallback(finalKitchen);
|
|
1343
1421
|
}
|
|
1344
1422
|
}
|
|
1345
1423
|
}
|
|
@@ -1362,6 +1440,7 @@ const prepareEntryPointBuild = async (
|
|
|
1362
1440
|
buildFileVersions,
|
|
1363
1441
|
buildInlineContents,
|
|
1364
1442
|
buildManifest,
|
|
1443
|
+
buildSideEffectFiles,
|
|
1365
1444
|
};
|
|
1366
1445
|
},
|
|
1367
1446
|
};
|
package/src/kitchen/errors.js
CHANGED
|
@@ -49,6 +49,7 @@ ${reason}`,
|
|
|
49
49
|
if (error.code === "DIRECTORY_REFERENCE_NOT_ALLOWED") {
|
|
50
50
|
error.message = createDetailedMessage(error.message, {
|
|
51
51
|
"reference trace": reference.trace.message,
|
|
52
|
+
...detailsFromFirstReference(reference),
|
|
52
53
|
});
|
|
53
54
|
return error;
|
|
54
55
|
}
|
|
@@ -288,7 +289,11 @@ const detailsFromFirstReference = (reference) => {
|
|
|
288
289
|
};
|
|
289
290
|
const getFirstReferenceInProject = (reference) => {
|
|
290
291
|
const ownerUrlInfo = reference.ownerUrlInfo;
|
|
291
|
-
if (
|
|
292
|
+
if (
|
|
293
|
+
!ownerUrlInfo.url.includes("/node_modules/") &&
|
|
294
|
+
ownerUrlInfo.packageDirectoryUrl ===
|
|
295
|
+
ownerUrlInfo.context.packageDirectory.url
|
|
296
|
+
) {
|
|
292
297
|
return reference;
|
|
293
298
|
}
|
|
294
299
|
return getFirstReferenceInProject(ownerUrlInfo.firstReference);
|