@jsenv/core 40.3.2 → 40.4.0
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/build/browserslist_index/browserslist_index.js +4951 -0
- package/dist/build/build.js +228 -83
- package/dist/build/jsenv_core_node_modules.js +709 -0
- package/dist/build/jsenv_core_packages.js +10915 -0
- package/dist/start_build_server/jsenv_core_node_modules.js +685 -0
- package/dist/start_build_server/jsenv_core_packages.js +1550 -0
- package/dist/start_build_server/start_build_server.js +2 -9
- package/dist/start_dev_server/jsenv_core_node_modules.js +685 -0
- package/dist/start_dev_server/jsenv_core_packages.js +6185 -0
- package/dist/start_dev_server/start_dev_server.js +109 -75
- package/package.json +20 -20
- package/src/build/build.js +79 -0
- package/src/build/build_specifier_manager.js +2 -2
- package/src/build/build_urls_generator.js +42 -5
- 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 -65
- 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
- package/dist/jsenv_core_node_modules.js +0 -2045
- package/dist/jsenv_core_packages.js +0 -23833
|
@@ -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, isSpecifierForNodeBuiltin,
|
|
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 "
|
|
13
|
-
import "../jsenv_core_node_modules.js";
|
|
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,29 +8362,6 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
|
8270
8362
|
return [];
|
|
8271
8363
|
}
|
|
8272
8364
|
|
|
8273
|
-
const normalizeSideEffectFileUrl = (url) => {
|
|
8274
|
-
const urlRelativeToPackage = urlToRelativeUrl(url, packageDirectory.url);
|
|
8275
|
-
return urlRelativeToPackage[0] === "."
|
|
8276
|
-
? urlRelativeToPackage
|
|
8277
|
-
: `./${urlRelativeToPackage}`;
|
|
8278
|
-
};
|
|
8279
|
-
|
|
8280
|
-
const updatePackageSideEffects = (sideEffectBuildFileUrls) => {
|
|
8281
|
-
const packageJsonFileUrl = new URL("./package.json", packageDirectory.url)
|
|
8282
|
-
.href;
|
|
8283
|
-
const sideEffectRelativeUrlArray = [];
|
|
8284
|
-
for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
|
|
8285
|
-
sideEffectRelativeUrlArray.push(
|
|
8286
|
-
normalizeSideEffectFileUrl(sideEffectBuildUrl),
|
|
8287
|
-
);
|
|
8288
|
-
}
|
|
8289
|
-
updateJsonFileSync(packageJsonFileUrl, {
|
|
8290
|
-
sideEffects: sideEffectRelativeUrlArray,
|
|
8291
|
-
});
|
|
8292
|
-
};
|
|
8293
|
-
|
|
8294
|
-
const sideEffectBuildFileUrls = [];
|
|
8295
|
-
|
|
8296
8365
|
const packageSideEffectsCacheMap = new Map();
|
|
8297
8366
|
const readSideEffectInfoFromClosestPackage = (urlInfo) => {
|
|
8298
8367
|
const closestPackageDirectoryUrl = urlInfo.packageDirectoryUrl;
|
|
@@ -8418,52 +8487,17 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
|
8418
8487
|
return;
|
|
8419
8488
|
}
|
|
8420
8489
|
},
|
|
8421
|
-
refineBuildUrlContent: (
|
|
8490
|
+
refineBuildUrlContent: (
|
|
8491
|
+
buildUrlInfo,
|
|
8492
|
+
{ buildUrl, registerBuildSideEffectFile },
|
|
8493
|
+
) => {
|
|
8422
8494
|
for (const sideEffect of buildUrlInfo.contentSideEffects) {
|
|
8423
8495
|
if (sideEffect.has) {
|
|
8424
|
-
|
|
8496
|
+
registerBuildSideEffectFile(buildUrl);
|
|
8425
8497
|
return;
|
|
8426
8498
|
}
|
|
8427
8499
|
}
|
|
8428
8500
|
},
|
|
8429
|
-
refineBuild: (kitchen) => {
|
|
8430
|
-
if (sideEffectBuildFileUrls.length === 0) {
|
|
8431
|
-
return;
|
|
8432
|
-
}
|
|
8433
|
-
if (sideEffects === false) {
|
|
8434
|
-
updatePackageSideEffects(sideEffectBuildFileUrls);
|
|
8435
|
-
return;
|
|
8436
|
-
}
|
|
8437
|
-
const { buildDirectoryUrl } = kitchen.context;
|
|
8438
|
-
const sideEffectFileUrlSet = new Set();
|
|
8439
|
-
if (Array.isArray(sideEffects)) {
|
|
8440
|
-
let packageNeedsUpdate = false;
|
|
8441
|
-
for (const sideEffectFileRelativeUrl of sideEffects) {
|
|
8442
|
-
const sideEffectFileUrl = new URL(
|
|
8443
|
-
sideEffectFileRelativeUrl,
|
|
8444
|
-
packageDirectory.url,
|
|
8445
|
-
).href;
|
|
8446
|
-
if (
|
|
8447
|
-
urlIsInsideOf(sideEffectFileUrl, buildDirectoryUrl) &&
|
|
8448
|
-
!sideEffectBuildFileUrls.includes(sideEffectFileUrl)
|
|
8449
|
-
) {
|
|
8450
|
-
packageNeedsUpdate = true;
|
|
8451
|
-
} else {
|
|
8452
|
-
sideEffectFileUrlSet.add(sideEffectFileUrl);
|
|
8453
|
-
}
|
|
8454
|
-
}
|
|
8455
|
-
for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
|
|
8456
|
-
if (sideEffectFileUrlSet.has(sideEffectBuildUrl)) {
|
|
8457
|
-
continue;
|
|
8458
|
-
}
|
|
8459
|
-
packageNeedsUpdate = true;
|
|
8460
|
-
sideEffectFileUrlSet.add(sideEffectBuildUrl);
|
|
8461
|
-
}
|
|
8462
|
-
if (packageNeedsUpdate) {
|
|
8463
|
-
updatePackageSideEffects(sideEffectFileUrlSet);
|
|
8464
|
-
}
|
|
8465
|
-
}
|
|
8466
|
-
},
|
|
8467
8501
|
};
|
|
8468
8502
|
};
|
|
8469
8503
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/core",
|
|
3
|
-
"version": "40.
|
|
3
|
+
"version": "40.4.0",
|
|
4
4
|
"description": "Tool to develop, test and build js projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -49,9 +49,9 @@
|
|
|
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
|
-
"./dist/jsenv_core_node_modules.js"
|
|
54
|
-
"./dist/client/new_stylesheet/new_stylesheet.js"
|
|
54
|
+
"./dist/client/directory_listing/jsenv_core_node_modules.js"
|
|
55
55
|
],
|
|
56
56
|
"scripts": {
|
|
57
57
|
"eslint": "npx eslint .",
|
|
@@ -79,23 +79,14 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@financial-times/polyfill-useragent-normaliser": "1.10.2",
|
|
82
|
-
"@jsenv/
|
|
83
|
-
"@jsenv/
|
|
84
|
-
"@jsenv/
|
|
85
|
-
"@jsenv/humanize": "1.5.0",
|
|
86
|
-
"@jsenv/importmap": "1.2.2",
|
|
87
|
-
"@jsenv/integrity": "0.0.2",
|
|
88
|
-
"@jsenv/js-module-fallback": "1.4.7",
|
|
89
|
-
"@jsenv/node-esm-resolution": "1.2.0",
|
|
90
|
-
"@jsenv/plugin-bundling": "2.9.3",
|
|
82
|
+
"@jsenv/ast": "6.6.10",
|
|
83
|
+
"@jsenv/js-module-fallback": "1.4.8",
|
|
84
|
+
"@jsenv/plugin-bundling": "2.9.4",
|
|
91
85
|
"@jsenv/plugin-minification": "1.6.3",
|
|
92
|
-
"@jsenv/plugin-supervisor": "1.6.
|
|
93
|
-
"@jsenv/plugin-transpilation": "1.5.
|
|
94
|
-
"@jsenv/
|
|
95
|
-
"@jsenv/
|
|
96
|
-
"@jsenv/url-meta": "8.5.6",
|
|
97
|
-
"@jsenv/urls": "2.7.2",
|
|
98
|
-
"@jsenv/utils": "2.3.0"
|
|
86
|
+
"@jsenv/plugin-supervisor": "1.6.14",
|
|
87
|
+
"@jsenv/plugin-transpilation": "1.5.15",
|
|
88
|
+
"@jsenv/sourcemap": "1.3.6",
|
|
89
|
+
"@jsenv/server": "16.1.1"
|
|
99
90
|
},
|
|
100
91
|
"devDependencies": {
|
|
101
92
|
"@babel/plugin-syntax-decorators": "7.25.9",
|
|
@@ -117,6 +108,15 @@
|
|
|
117
108
|
"@jsenv/terminal-table": "workspace:*",
|
|
118
109
|
"@jsenv/os-metrics": "workspace:*",
|
|
119
110
|
"@jsenv/runtime-compat": "workspace:*",
|
|
111
|
+
"@jsenv/url-meta": "workspace:*",
|
|
112
|
+
"@jsenv/urls": "workspace:*",
|
|
113
|
+
"@jsenv/utils": "workspace:*",
|
|
114
|
+
"@jsenv/abort": "workspace:*",
|
|
115
|
+
"@jsenv/filesystem": "workspace:*",
|
|
116
|
+
"@jsenv/humanize": "workspace:*",
|
|
117
|
+
"@jsenv/importmap": "workspace:*",
|
|
118
|
+
"@jsenv/integrity": "workspace:*",
|
|
119
|
+
"@jsenv/node-esm-resolution": "workspace:*",
|
|
120
120
|
"@playwright/browser-chromium": "1.51.1",
|
|
121
121
|
"@playwright/browser-firefox": "1.51.1",
|
|
122
122
|
"@playwright/browser-webkit": "1.51.1",
|
|
@@ -128,4 +128,4 @@
|
|
|
128
128
|
"prettier-plugin-organize-imports": "4.1.0",
|
|
129
129
|
"strip-ansi": "7.1.0"
|
|
130
130
|
}
|
|
131
|
-
}
|
|
131
|
+
}
|
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
|
},
|
|
@@ -1362,6 +1440,7 @@ const prepareEntryPointBuild = async (
|
|
|
1362
1440
|
buildFileVersions,
|
|
1363
1441
|
buildInlineContents,
|
|
1364
1442
|
buildManifest,
|
|
1443
|
+
buildSideEffectFiles,
|
|
1365
1444
|
};
|
|
1366
1445
|
},
|
|
1367
1446
|
};
|
|
@@ -62,7 +62,6 @@ export const createBuildSpecifierManager = ({
|
|
|
62
62
|
buildUrl = generateSourcemapFileUrl(parentBuildUrl);
|
|
63
63
|
reference.generatedSpecifier = buildUrl;
|
|
64
64
|
} else {
|
|
65
|
-
const url = reference.generatedUrl;
|
|
66
65
|
const rawUrlInfo = rawKitchen.graph.getUrlInfo(reference.url);
|
|
67
66
|
let urlInfo;
|
|
68
67
|
if (rawUrlInfo) {
|
|
@@ -72,6 +71,7 @@ export const createBuildSpecifierManager = ({
|
|
|
72
71
|
buildUrlInfo.subtype = reference.expectedSubtype;
|
|
73
72
|
urlInfo = buildUrlInfo;
|
|
74
73
|
}
|
|
74
|
+
const url = reference.generatedUrl;
|
|
75
75
|
buildUrl = buildUrlsGenerator.generate(url, {
|
|
76
76
|
urlInfo,
|
|
77
77
|
ownerUrlInfo: reference.ownerUrlInfo,
|
|
@@ -249,7 +249,7 @@ export const createBuildSpecifierManager = ({
|
|
|
249
249
|
js_classic: undefined, // TODO: add comment to explain who is using this
|
|
250
250
|
entry_point: undefined,
|
|
251
251
|
dynamic_import: undefined,
|
|
252
|
-
dynamic_import_id: undefined,
|
|
252
|
+
// dynamic_import_id: undefined,
|
|
253
253
|
};
|
|
254
254
|
},
|
|
255
255
|
formatReference: (reference) => {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
// import { ANSI } from "@jsenv/humanize";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
injectQueryParams,
|
|
4
|
+
urlIsInsideOf,
|
|
5
|
+
urlToFilename,
|
|
6
|
+
urlToRelativeUrl,
|
|
7
|
+
} from "@jsenv/urls";
|
|
3
8
|
|
|
4
9
|
export const createBuildUrlsGenerator = ({
|
|
5
10
|
// logger,
|
|
@@ -32,6 +37,20 @@ export const createBuildUrlsGenerator = ({
|
|
|
32
37
|
return buildUrlFromMap;
|
|
33
38
|
}
|
|
34
39
|
if (urlIsInsideOf(url, buildDirectoryUrl)) {
|
|
40
|
+
if (ownerUrlInfo.searchParams.has("dynamic_import_id")) {
|
|
41
|
+
const ownerDirectoryPath = determineDirectoryPath({
|
|
42
|
+
sourceDirectoryUrl,
|
|
43
|
+
assetsDirectory,
|
|
44
|
+
urlInfo: ownerUrlInfo,
|
|
45
|
+
});
|
|
46
|
+
const buildRelativeUrl = urlToRelativeUrl(url, buildDirectoryUrl);
|
|
47
|
+
let buildUrl = `${buildDirectoryUrl}${ownerDirectoryPath}${buildRelativeUrl}`;
|
|
48
|
+
buildUrl = injectQueryParams(buildUrl, {
|
|
49
|
+
dynamic_import_id: undefined,
|
|
50
|
+
});
|
|
51
|
+
associateBuildUrl(url, buildUrl);
|
|
52
|
+
return buildUrl;
|
|
53
|
+
}
|
|
35
54
|
associateBuildUrl(url, url);
|
|
36
55
|
return url;
|
|
37
56
|
}
|
|
@@ -52,7 +71,8 @@ export const createBuildUrlsGenerator = ({
|
|
|
52
71
|
} else {
|
|
53
72
|
directoryPath = urlToRelativeUrl(url, sourceDirectoryUrl);
|
|
54
73
|
}
|
|
55
|
-
const
|
|
74
|
+
const urlObject = new URL(url);
|
|
75
|
+
const { search } = urlObject;
|
|
56
76
|
const buildUrl = `${buildDirectoryUrl}${directoryPath}${search}`;
|
|
57
77
|
associateBuildUrl(url, buildUrl);
|
|
58
78
|
return buildUrl;
|
|
@@ -70,6 +90,7 @@ export const createBuildUrlsGenerator = ({
|
|
|
70
90
|
nameSetPerDirectoryMap.set(directoryPath, nameSet);
|
|
71
91
|
}
|
|
72
92
|
const urlObject = new URL(url);
|
|
93
|
+
injectQueryParams(urlObject, { dynamic_import_id: undefined });
|
|
73
94
|
let { search, hash } = urlObject;
|
|
74
95
|
let urlName = getUrlName(url, urlInfo);
|
|
75
96
|
let [basename, extension] = splitFileExtension(urlName);
|
|
@@ -116,7 +137,7 @@ const determineDirectoryPath = ({
|
|
|
116
137
|
sourceDirectoryUrl,
|
|
117
138
|
assetsDirectory,
|
|
118
139
|
urlInfo,
|
|
119
|
-
ownerUrlInfo,
|
|
140
|
+
ownerUrlInfo = urlInfo.firstReference.ownerUrlInfo,
|
|
120
141
|
}) => {
|
|
121
142
|
if (urlInfo.dirnameHint) {
|
|
122
143
|
return urlInfo.dirnameHint;
|
|
@@ -128,13 +149,29 @@ const determineDirectoryPath = ({
|
|
|
128
149
|
const parentDirectoryPath = determineDirectoryPath({
|
|
129
150
|
sourceDirectoryUrl,
|
|
130
151
|
assetsDirectory,
|
|
131
|
-
urlInfo: ownerUrlInfo
|
|
152
|
+
urlInfo: ownerUrlInfo,
|
|
132
153
|
});
|
|
133
154
|
return parentDirectoryPath;
|
|
134
155
|
}
|
|
135
156
|
const dynamicImportId = urlInfo.searchParams.get("dynamic_import_id");
|
|
136
157
|
if (dynamicImportId) {
|
|
137
|
-
|
|
158
|
+
const ancestorImportIds = [];
|
|
159
|
+
let ancestorUrlInfo = ownerUrlInfo;
|
|
160
|
+
let currentImportId = dynamicImportId;
|
|
161
|
+
while (ancestorUrlInfo) {
|
|
162
|
+
const ancestorDynamicImportId =
|
|
163
|
+
ancestorUrlInfo.searchParams.get("dynamic_import_id");
|
|
164
|
+
if (!ancestorDynamicImportId) {
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
if (ancestorDynamicImportId !== currentImportId) {
|
|
168
|
+
ancestorImportIds.push(ancestorDynamicImportId);
|
|
169
|
+
currentImportId = ancestorDynamicImportId;
|
|
170
|
+
}
|
|
171
|
+
ancestorUrlInfo = ancestorUrlInfo.firstReference?.ownerUrlInfo;
|
|
172
|
+
}
|
|
173
|
+
const importIdPath = [...ancestorImportIds, dynamicImportId].join("/");
|
|
174
|
+
return `${assetsDirectory}${importIdPath}/`;
|
|
138
175
|
}
|
|
139
176
|
if (urlInfo.isEntryPoint && !urlInfo.isDynamicEntryPoint) {
|
|
140
177
|
return "";
|
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);
|