@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.
Files changed (123) hide show
  1. package/dist/build/browserslist_index/browserslist_index.js +4951 -0
  2. package/dist/build/build.js +228 -83
  3. package/dist/build/jsenv_core_node_modules.js +709 -0
  4. package/dist/build/jsenv_core_packages.js +10915 -0
  5. package/dist/start_build_server/jsenv_core_node_modules.js +685 -0
  6. package/dist/start_build_server/jsenv_core_packages.js +1550 -0
  7. package/dist/start_build_server/start_build_server.js +2 -9
  8. package/dist/start_dev_server/jsenv_core_node_modules.js +685 -0
  9. package/dist/start_dev_server/jsenv_core_packages.js +6185 -0
  10. package/dist/start_dev_server/start_dev_server.js +109 -75
  11. package/package.json +20 -20
  12. package/src/build/build.js +79 -0
  13. package/src/build/build_specifier_manager.js +2 -2
  14. package/src/build/build_urls_generator.js +42 -5
  15. package/src/kitchen/errors.js +6 -1
  16. package/src/kitchen/kitchen.js +95 -7
  17. package/src/plugins/package_side_effects/jsenv_plugin_package_side_effects.js +5 -65
  18. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +0 -112
  19. package/dist/babel_helpers/AwaitValue/AwaitValue.js +0 -3
  20. package/dist/babel_helpers/OverloadYield/OverloadYield.js +0 -11
  21. package/dist/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +0 -32
  22. package/dist/babel_helpers/applyDecs/applyDecs.js +0 -813
  23. package/dist/babel_helpers/applyDecs2203/applyDecs2203.js +0 -635
  24. package/dist/babel_helpers/applyDecs2203R/applyDecs2203R.js +0 -654
  25. package/dist/babel_helpers/applyDecs2301/applyDecs2301.js +0 -721
  26. package/dist/babel_helpers/applyDecs2305/applyDecs2305.js +0 -531
  27. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +0 -7
  28. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +0 -4
  29. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
  30. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +0 -9
  31. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -55
  32. package/dist/babel_helpers/asyncIterator/asyncIterator.js +0 -68
  33. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +0 -34
  34. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
  35. package/dist/babel_helpers/callSuper/callSuper.js +0 -25
  36. package/dist/babel_helpers/checkInRHS/checkInRHS.js +0 -11
  37. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -23
  38. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
  39. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
  40. package/dist/babel_helpers/classCallCheck/classCallCheck.js +0 -5
  41. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -8
  42. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -11
  43. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -13
  44. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +0 -6
  45. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
  46. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
  47. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
  48. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
  49. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
  50. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
  51. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
  52. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -13
  53. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
  54. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -10
  55. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
  56. package/dist/babel_helpers/construct/construct.js +0 -20
  57. package/dist/babel_helpers/createClass/createClass.js +0 -17
  58. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -61
  59. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -24
  60. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +0 -50
  61. package/dist/babel_helpers/createSuper/createSuper.js +0 -22
  62. package/dist/babel_helpers/decorate/decorate.js +0 -488
  63. package/dist/babel_helpers/defaults/defaults.js +0 -11
  64. package/dist/babel_helpers/defineAccessor/defineAccessor.js +0 -6
  65. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
  66. package/dist/babel_helpers/defineProperty/defineProperty.js +0 -21
  67. package/dist/babel_helpers/dispose/dispose.js +0 -45
  68. package/dist/babel_helpers/extends/extends.js +0 -14
  69. package/dist/babel_helpers/get/get.js +0 -19
  70. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +0 -4
  71. package/dist/babel_helpers/identity/identity.js +0 -3
  72. package/dist/babel_helpers/importDeferProxy/importDeferProxy.js +0 -31
  73. package/dist/babel_helpers/inherits/inherits.js +0 -19
  74. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +0 -7
  75. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +0 -12
  76. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +0 -6
  77. package/dist/babel_helpers/instanceof/instanceof.js +0 -10
  78. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +0 -3
  79. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +0 -47
  80. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +0 -9
  81. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -19
  82. package/dist/babel_helpers/iterableToArray/iterableToArray.js +0 -7
  83. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +0 -54
  84. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -16
  85. package/dist/babel_helpers/jsx/jsx.js +0 -50
  86. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +0 -10
  87. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +0 -5
  88. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +0 -5
  89. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +0 -5
  90. package/dist/babel_helpers/nullishReceiverError/nullishReceiverError.js +0 -3
  91. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
  92. package/dist/babel_helpers/objectSpread/objectSpread.js +0 -23
  93. package/dist/babel_helpers/objectSpread2/objectSpread2.js +0 -43
  94. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +0 -19
  95. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
  96. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +0 -12
  97. package/dist/babel_helpers/readOnlyError/readOnlyError.js +0 -4
  98. package/dist/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +0 -698
  99. package/dist/babel_helpers/set/set.js +0 -47
  100. package/dist/babel_helpers/setFunctionName/setFunctionName.js +0 -19
  101. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +0 -7
  102. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
  103. package/dist/babel_helpers/slicedToArray/slicedToArray.js +0 -10
  104. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
  105. package/dist/babel_helpers/superPropBase/superPropBase.js +0 -10
  106. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
  107. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
  108. package/dist/babel_helpers/tdz/tdz.js +0 -4
  109. package/dist/babel_helpers/temporalRef/temporalRef.js +0 -6
  110. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +0 -3
  111. package/dist/babel_helpers/toArray/toArray.js +0 -10
  112. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +0 -10
  113. package/dist/babel_helpers/toPrimitive/toPrimitive.js +0 -14
  114. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +0 -10
  115. package/dist/babel_helpers/typeof/typeof.js +0 -15
  116. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
  117. package/dist/babel_helpers/using/using.js +0 -23
  118. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
  119. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +0 -30
  120. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +0 -79
  121. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +0 -3
  122. package/dist/jsenv_core_node_modules.js +0 -2045
  123. package/dist/jsenv_core_packages.js +0 -23833
@@ -1,21 +1,21 @@
1
1
  import { parseHtml, injectHtmlNodeAsEarlyAsPossible, createHtmlNode, stringifyHtmlAst, applyBabelPlugins, generateUrlForInlineContent, parseJsWithAcorn, visitHtmlNodes, analyzeScriptNode, getHtmlNodeText, getHtmlNodeAttribute, getHtmlNodePosition, getUrlForContentInsideHtml, setHtmlNodeAttributes, setHtmlNodeText, parseCssUrls, getHtmlNodeAttributePosition, parseSrcSet, removeHtmlNodeText, parseJsUrls, getUrlForContentInsideJs, analyzeLinkNode, injectJsenvScript, findHtmlNode, removeHtmlNode, insertHtmlNodeAfter } from "@jsenv/ast";
2
+ import { jsenvPluginBundling } from "@jsenv/plugin-bundling";
3
+ import { jsenvPluginMinification } from "@jsenv/plugin-minification";
4
+ import { jsenvPluginTranspilation, jsenvPluginJsModuleFallback } from "@jsenv/plugin-transpilation";
2
5
  import { memoryUsage } from "node:process";
3
6
  import { readFileSync, existsSync, readdirSync, lstatSync, realpathSync } from "node:fs";
4
- import { lookupPackageDirectory$1 as lookupPackageDirectory, registerDirectoryLifecycle$1 as registerDirectoryLifecycle, urlToRelativeUrl$1 as urlToRelativeUrl, createDetailedMessage$1 as createDetailedMessage, stringifyUrlSite$1 as stringifyUrlSite, generateContentFrame$1 as generateContentFrame, validateResponseIntegrity$1 as validateResponseIntegrity, urlIsInsideOf$1 as urlIsInsideOf, ensureWindowsDriveLetter$1 as ensureWindowsDriveLetter, setUrlFilename$1 as setUrlFilename, moveUrl$1 as moveUrl, getCallerPosition$1 as getCallerPosition, urlToBasename$1 as urlToBasename, urlToExtension$1 as urlToExtension, asSpecifierWithoutSearch$1 as asSpecifierWithoutSearch, asUrlWithoutSearch$1 as asUrlWithoutSearch, injectQueryParamsIntoSpecifier$1 as injectQueryParamsIntoSpecifier, bufferToEtag$1 as bufferToEtag, isFileSystemPath$1 as isFileSystemPath, urlToPathname$1 as urlToPathname, setUrlBasename$1 as setUrlBasename, urlToFileSystemPath$1 as urlToFileSystemPath, writeFileSync$1 as writeFileSync, createLogger$1 as createLogger, URL_META$1 as URL_META, applyNodeEsmResolution$1 as applyNodeEsmResolution, RUNTIME_COMPAT$1 as RUNTIME_COMPAT, normalizeUrl$1 as normalizeUrl, ANSI$1 as ANSI, CONTENT_TYPE$1 as CONTENT_TYPE, urlToFilename$1 as urlToFilename, DATA_URL$1 as DATA_URL, errorToHTML$1 as errorToHTML, normalizeImportMap$1 as normalizeImportMap, composeTwoImportMaps$1 as composeTwoImportMaps, resolveImport$1 as resolveImport, JS_QUOTES$1 as JS_QUOTES, defaultLookupPackageScope$1 as defaultLookupPackageScope, defaultReadPackageJson$1 as defaultReadPackageJson, readCustomConditionsFromProcessArgs$1 as readCustomConditionsFromProcessArgs, readEntryStatSync$1 as readEntryStatSync, ensurePathnameTrailingSlash$1 as ensurePathnameTrailingSlash, compareFileUrls$1 as compareFileUrls, applyFileSystemMagicResolution$1 as applyFileSystemMagicResolution, getExtensionsToTry$1 as getExtensionsToTry, setUrlExtension$1 as setUrlExtension, isSpecifierForNodeBuiltin$1 as isSpecifierForNodeBuiltin, updateJsonFileSync$1 as updateJsonFileSync, jsenvPluginTranspilation$1 as jsenvPluginTranspilation, renderDetails, humanizeDuration, humanizeFileSize, renderTable, renderBigSection, distributePercentages, humanizeMemory, comparePathnames, UNICODE, escapeRegexpSpecialChars, injectQueryParamIntoSpecifierWithoutEncoding, renderUrlOrRelativeUrlFilename, assertAndNormalizeDirectoryUrl$1 as assertAndNormalizeDirectoryUrl, Abort, raceProcessTeardownEvents, startMonitoringCpuUsage, startMonitoringMemoryUsage, createLookupPackageDirectory, readPackageAtOrNull$1 as readPackageAtOrNull, inferRuntimeCompatFromClosestPackage, browserDefaultRuntimeCompat, nodeDefaultRuntimeCompat, clearDirectorySync, createTaskLog$1 as createTaskLog, jsenvPluginBundling, jsenvPluginMinification, ensureEmptyDirectory, jsenvPluginJsModuleFallback, createDynamicLog } from "../jsenv_core_packages.js";
7
+ import { lookupPackageDirectory, registerDirectoryLifecycle, urlToRelativeUrl, createDetailedMessage, stringifyUrlSite, generateContentFrame, validateResponseIntegrity, urlIsInsideOf, ensureWindowsDriveLetter, setUrlFilename, moveUrl, getCallerPosition, urlToBasename, urlToExtension, asSpecifierWithoutSearch, asUrlWithoutSearch, injectQueryParamsIntoSpecifier, bufferToEtag, isFileSystemPath, urlToPathname, setUrlBasename, urlToFileSystemPath, writeFileSync, createLogger, URL_META, applyNodeEsmResolution, RUNTIME_COMPAT, normalizeUrl, ANSI, CONTENT_TYPE, urlToFilename, DATA_URL, errorToHTML, normalizeImportMap, composeTwoImportMaps, resolveImport, JS_QUOTES, defaultLookupPackageScope, defaultReadPackageJson, readCustomConditionsFromProcessArgs, readEntryStatSync, ensurePathnameTrailingSlash, compareFileUrls, applyFileSystemMagicResolution, getExtensionsToTry, setUrlExtension, isSpecifierForNodeBuiltin, renderDetails, humanizeDuration, humanizeFileSize, renderTable, renderBigSection, distributePercentages, humanizeMemory, comparePathnames, UNICODE, escapeRegexpSpecialChars, injectQueryParamIntoSpecifierWithoutEncoding, renderUrlOrRelativeUrlFilename, injectQueryParams, assertAndNormalizeDirectoryUrl, Abort, raceProcessTeardownEvents, startMonitoringCpuUsage, startMonitoringMemoryUsage, createLookupPackageDirectory, readPackageAtOrNull, inferRuntimeCompatFromClosestPackage, browserDefaultRuntimeCompat, nodeDefaultRuntimeCompat, clearDirectorySync, createTaskLog, ensureEmptyDirectory, updateJsonFileSync, createDynamicLog } from "./jsenv_core_packages.js";
5
8
  import { pathToFileURL } from "node:url";
6
9
  import { generateSourcemapFileUrl, createMagicSource, composeTwoSourcemaps, generateSourcemapDataUrl, SOURCEMAP } from "@jsenv/sourcemap";
7
10
  import { performance } from "node:perf_hooks";
8
11
  import { jsenvPluginSupervisor } from "@jsenv/plugin-supervisor";
9
12
  import { WebSocketResponse, pickContentType } from "@jsenv/server";
10
13
  import { randomUUID, createHash } from "node:crypto";
11
- import "strip-ansi";
12
- import "../jsenv_core_node_modules.js";
14
+ import "./jsenv_core_node_modules.js";
13
15
  import "node:os";
14
16
  import "node:tty";
15
- import "node:util";
16
17
  import "node:path";
17
- import "node:module";
18
- import "@jsenv/js-module-fallback";
18
+ import "node:util";
19
19
 
20
20
  const getDirectoryWatchPatterns = (
21
21
  directoryUrl,
@@ -179,6 +179,7 @@ ${reason}`,
179
179
  if (error.code === "DIRECTORY_REFERENCE_NOT_ALLOWED") {
180
180
  error.message = createDetailedMessage(error.message, {
181
181
  "reference trace": reference.trace.message,
182
+ ...detailsFromFirstReference(reference),
182
183
  });
183
184
  return error;
184
185
  }
@@ -418,7 +419,11 @@ const detailsFromFirstReference = (reference) => {
418
419
  };
419
420
  const getFirstReferenceInProject = (reference) => {
420
421
  const ownerUrlInfo = reference.ownerUrlInfo;
421
- if (!ownerUrlInfo.url.includes("/node_modules/")) {
422
+ if (
423
+ !ownerUrlInfo.url.includes("/node_modules/") &&
424
+ ownerUrlInfo.packageDirectoryUrl ===
425
+ ownerUrlInfo.context.packageDirectory.url
426
+ ) {
422
427
  return reference;
423
428
  }
424
429
  return getFirstReferenceInProject(ownerUrlInfo.firstReference);
@@ -2646,10 +2651,9 @@ const shouldHandleSourcemap = (urlInfo) => {
2646
2651
  return true;
2647
2652
  };
2648
2653
 
2649
- const inlineContentClientFileUrl = new URL(
2654
+ const inlineContentClientFileUrl = import.meta.resolve(
2650
2655
  "../client/inline_content/inline_content.js",
2651
- import.meta.url,
2652
- ).href;
2656
+ );
2653
2657
 
2654
2658
  const createKitchen = ({
2655
2659
  name,
@@ -2658,12 +2662,14 @@ const createKitchen = ({
2658
2662
 
2659
2663
  rootDirectoryUrl,
2660
2664
  mainFilePath,
2661
- ignore,
2662
- ignoreProtocol = "remove",
2663
- supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
2664
2665
  dev = false,
2665
2666
  build = false,
2666
2667
  runtimeCompat,
2668
+
2669
+ ignore,
2670
+ ignoreProtocol = "remove",
2671
+ supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
2672
+
2667
2673
  // during dev/test clientRuntimeCompat is a single runtime
2668
2674
  // during build clientRuntimeCompat is runtimeCompat
2669
2675
  clientRuntimeCompat = runtimeCompat,
@@ -2676,12 +2682,17 @@ const createKitchen = ({
2676
2682
  outDirectoryUrl,
2677
2683
  initialContext = {},
2678
2684
  packageDirectory,
2685
+ packageDependencies,
2679
2686
  }) => {
2680
2687
  const logger = createLogger({ logLevel });
2681
2688
 
2682
2689
  const nodeRuntimeEnabled = Object.keys(runtimeCompat).includes("node");
2683
2690
  const packageConditions = [nodeRuntimeEnabled ? "node" : "browser", "import"];
2684
2691
 
2692
+ if (packageDependencies === "auto") {
2693
+ packageDependencies = build && nodeRuntimeEnabled ? "ignore" : "include";
2694
+ }
2695
+
2685
2696
  const kitchen = {
2686
2697
  context: {
2687
2698
  ...initialContext,
@@ -2751,6 +2762,82 @@ const createKitchen = ({
2751
2762
  const protocolIsSupported = supportedProtocols.includes(protocol);
2752
2763
  return !protocolIsSupported;
2753
2764
  };
2765
+ const isIgnoredBecauseInPackageDependencies = (() => {
2766
+ if (packageDependencies === undefined) {
2767
+ return FUNCTION_RETURNING_FALSE;
2768
+ }
2769
+ if (packageDependencies === "include") {
2770
+ return FUNCTION_RETURNING_FALSE;
2771
+ }
2772
+ if (!packageDirectory.url) {
2773
+ return FUNCTION_RETURNING_FALSE;
2774
+ }
2775
+ const rootPackageJSON = packageDirectory.read(packageDirectory.url);
2776
+ if (!rootPackageJSON) {
2777
+ return FUNCTION_RETURNING_FALSE;
2778
+ }
2779
+ const { dependencies = {}, optionalDependencies = {} } = rootPackageJSON;
2780
+ const dependencyKeys = Object.keys(dependencies);
2781
+ const optionalDependencyKeys = Object.keys(optionalDependencies);
2782
+ const dependencySet = new Set([
2783
+ ...dependencyKeys,
2784
+ ...optionalDependencyKeys,
2785
+ ]);
2786
+ if (dependencySet.size === 0) {
2787
+ return FUNCTION_RETURNING_FALSE;
2788
+ }
2789
+
2790
+ let getEffect;
2791
+ if (packageDependencies === "ignore") {
2792
+ getEffect = (dependencyName) => {
2793
+ if (!dependencySet.has(dependencyName)) {
2794
+ return "include";
2795
+ }
2796
+ return "ignore";
2797
+ };
2798
+ } else if (typeof packageDependencies === "object") {
2799
+ let defaultEffect = "ignore";
2800
+ const dependencyEffectMap = new Map();
2801
+ for (const dependencyKey of Object.keys(packageDependencies)) {
2802
+ const dependencyEffect = packageDependencies[dependencyKey];
2803
+ if (dependencyKey === "*") {
2804
+ defaultEffect = dependencyEffect;
2805
+ } else {
2806
+ dependencyEffectMap.set(dependencyKey, dependencyEffect);
2807
+ }
2808
+ }
2809
+ getEffect = (dependencyName) => {
2810
+ if (!dependencySet.has(dependencyName)) {
2811
+ return "include";
2812
+ }
2813
+ const dependencyEffect = packageDependencies[dependencyName];
2814
+ if (dependencyEffect) {
2815
+ return dependencyEffect;
2816
+ }
2817
+ return defaultEffect;
2818
+ };
2819
+ }
2820
+ return (url) => {
2821
+ if (!url.startsWith("file:")) {
2822
+ return false;
2823
+ }
2824
+ const packageDirectoryUrl = packageDirectory.find(url);
2825
+ if (!packageDirectoryUrl) {
2826
+ return false;
2827
+ }
2828
+ const packageJSON = packageDirectory.read(packageDirectoryUrl);
2829
+ const name = packageJSON?.name;
2830
+ if (!name) {
2831
+ return false;
2832
+ }
2833
+ const effect = getEffect(name);
2834
+ if (effect !== "ignore") {
2835
+ return false;
2836
+ }
2837
+ return true;
2838
+ };
2839
+ })();
2840
+
2754
2841
  let isIgnoredByParam = () => false;
2755
2842
  if (ignore) {
2756
2843
  const associations = URL_META.resolveAssociations(
@@ -2770,7 +2857,11 @@ const createKitchen = ({
2770
2857
  };
2771
2858
  }
2772
2859
  const isIgnored = (url) => {
2773
- return isIgnoredByProtocol(url) || isIgnoredByParam(url);
2860
+ return (
2861
+ isIgnoredByProtocol(url) ||
2862
+ isIgnoredByParam(url) ||
2863
+ isIgnoredBecauseInPackageDependencies(url)
2864
+ );
2774
2865
  };
2775
2866
  const resolveReference = (reference) => {
2776
2867
  const setReferenceUrl = (referenceUrl) => {
@@ -3261,6 +3352,8 @@ ${urlInfo.firstReference.trace.message}`;
3261
3352
  return kitchen;
3262
3353
  };
3263
3354
 
3355
+ const FUNCTION_RETURNING_FALSE = () => false;
3356
+
3264
3357
  const debounceCook = (cook) => {
3265
3358
  const pendingDishes = new Map();
3266
3359
  return async (urlInfo, context) => {
@@ -8229,29 +8322,6 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
8229
8322
  return [];
8230
8323
  }
8231
8324
 
8232
- const normalizeSideEffectFileUrl = (url) => {
8233
- const urlRelativeToPackage = urlToRelativeUrl(url, packageDirectory.url);
8234
- return urlRelativeToPackage[0] === "."
8235
- ? urlRelativeToPackage
8236
- : `./${urlRelativeToPackage}`;
8237
- };
8238
-
8239
- const updatePackageSideEffects = (sideEffectBuildFileUrls) => {
8240
- const packageJsonFileUrl = new URL("./package.json", packageDirectory.url)
8241
- .href;
8242
- const sideEffectRelativeUrlArray = [];
8243
- for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
8244
- sideEffectRelativeUrlArray.push(
8245
- normalizeSideEffectFileUrl(sideEffectBuildUrl),
8246
- );
8247
- }
8248
- updateJsonFileSync(packageJsonFileUrl, {
8249
- sideEffects: sideEffectRelativeUrlArray,
8250
- });
8251
- };
8252
-
8253
- const sideEffectBuildFileUrls = [];
8254
-
8255
8325
  const packageSideEffectsCacheMap = new Map();
8256
8326
  const readSideEffectInfoFromClosestPackage = (urlInfo) => {
8257
8327
  const closestPackageDirectoryUrl = urlInfo.packageDirectoryUrl;
@@ -8377,52 +8447,17 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
8377
8447
  return;
8378
8448
  }
8379
8449
  },
8380
- refineBuildUrlContent: (buildUrlInfo, { buildUrl }) => {
8450
+ refineBuildUrlContent: (
8451
+ buildUrlInfo,
8452
+ { buildUrl, registerBuildSideEffectFile },
8453
+ ) => {
8381
8454
  for (const sideEffect of buildUrlInfo.contentSideEffects) {
8382
8455
  if (sideEffect.has) {
8383
- sideEffectBuildFileUrls.push(buildUrl);
8456
+ registerBuildSideEffectFile(buildUrl);
8384
8457
  return;
8385
8458
  }
8386
8459
  }
8387
8460
  },
8388
- refineBuild: (kitchen) => {
8389
- if (sideEffectBuildFileUrls.length === 0) {
8390
- return;
8391
- }
8392
- if (sideEffects === false) {
8393
- updatePackageSideEffects(sideEffectBuildFileUrls);
8394
- return;
8395
- }
8396
- const { buildDirectoryUrl } = kitchen.context;
8397
- const sideEffectFileUrlSet = new Set();
8398
- if (Array.isArray(sideEffects)) {
8399
- let packageNeedsUpdate = false;
8400
- for (const sideEffectFileRelativeUrl of sideEffects) {
8401
- const sideEffectFileUrl = new URL(
8402
- sideEffectFileRelativeUrl,
8403
- packageDirectory.url,
8404
- ).href;
8405
- if (
8406
- urlIsInsideOf(sideEffectFileUrl, buildDirectoryUrl) &&
8407
- !sideEffectBuildFileUrls.includes(sideEffectFileUrl)
8408
- ) {
8409
- packageNeedsUpdate = true;
8410
- } else {
8411
- sideEffectFileUrlSet.add(sideEffectFileUrl);
8412
- }
8413
- }
8414
- for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
8415
- if (sideEffectFileUrlSet.has(sideEffectBuildUrl)) {
8416
- continue;
8417
- }
8418
- packageNeedsUpdate = true;
8419
- sideEffectFileUrlSet.add(sideEffectBuildUrl);
8420
- }
8421
- if (packageNeedsUpdate) {
8422
- updatePackageSideEffects(sideEffectFileUrlSet);
8423
- }
8424
- }
8425
- },
8426
8461
  };
8427
8462
  };
8428
8463
 
@@ -8985,7 +9020,6 @@ const createBuildSpecifierManager = ({
8985
9020
  buildUrl = generateSourcemapFileUrl(parentBuildUrl);
8986
9021
  reference.generatedSpecifier = buildUrl;
8987
9022
  } else {
8988
- const url = reference.generatedUrl;
8989
9023
  const rawUrlInfo = rawKitchen.graph.getUrlInfo(reference.url);
8990
9024
  let urlInfo;
8991
9025
  if (rawUrlInfo) {
@@ -8995,6 +9029,7 @@ const createBuildSpecifierManager = ({
8995
9029
  buildUrlInfo.subtype = reference.expectedSubtype;
8996
9030
  urlInfo = buildUrlInfo;
8997
9031
  }
9032
+ const url = reference.generatedUrl;
8998
9033
  buildUrl = buildUrlsGenerator.generate(url, {
8999
9034
  urlInfo,
9000
9035
  ownerUrlInfo: reference.ownerUrlInfo,
@@ -9172,7 +9207,7 @@ const createBuildSpecifierManager = ({
9172
9207
  js_classic: undefined, // TODO: add comment to explain who is using this
9173
9208
  entry_point: undefined,
9174
9209
  dynamic_import: undefined,
9175
- dynamic_import_id: undefined,
9210
+ // dynamic_import_id: undefined,
9176
9211
  };
9177
9212
  },
9178
9213
  formatReference: (reference) => {
@@ -10314,6 +10349,20 @@ const createBuildUrlsGenerator = ({
10314
10349
  return buildUrlFromMap;
10315
10350
  }
10316
10351
  if (urlIsInsideOf(url, buildDirectoryUrl)) {
10352
+ if (ownerUrlInfo.searchParams.has("dynamic_import_id")) {
10353
+ const ownerDirectoryPath = determineDirectoryPath({
10354
+ sourceDirectoryUrl,
10355
+ assetsDirectory,
10356
+ urlInfo: ownerUrlInfo,
10357
+ });
10358
+ const buildRelativeUrl = urlToRelativeUrl(url, buildDirectoryUrl);
10359
+ let buildUrl = `${buildDirectoryUrl}${ownerDirectoryPath}${buildRelativeUrl}`;
10360
+ buildUrl = injectQueryParams(buildUrl, {
10361
+ dynamic_import_id: undefined,
10362
+ });
10363
+ associateBuildUrl(url, buildUrl);
10364
+ return buildUrl;
10365
+ }
10317
10366
  associateBuildUrl(url, url);
10318
10367
  return url;
10319
10368
  }
@@ -10334,7 +10383,8 @@ const createBuildUrlsGenerator = ({
10334
10383
  } else {
10335
10384
  directoryPath = urlToRelativeUrl(url, sourceDirectoryUrl);
10336
10385
  }
10337
- const { search } = new URL(url);
10386
+ const urlObject = new URL(url);
10387
+ const { search } = urlObject;
10338
10388
  const buildUrl = `${buildDirectoryUrl}${directoryPath}${search}`;
10339
10389
  associateBuildUrl(url, buildUrl);
10340
10390
  return buildUrl;
@@ -10352,6 +10402,7 @@ const createBuildUrlsGenerator = ({
10352
10402
  nameSetPerDirectoryMap.set(directoryPath, nameSet);
10353
10403
  }
10354
10404
  const urlObject = new URL(url);
10405
+ injectQueryParams(urlObject, { dynamic_import_id: undefined });
10355
10406
  let { search, hash } = urlObject;
10356
10407
  let urlName = getUrlName(url, urlInfo);
10357
10408
  let [basename, extension] = splitFileExtension(urlName);
@@ -10398,7 +10449,7 @@ const determineDirectoryPath = ({
10398
10449
  sourceDirectoryUrl,
10399
10450
  assetsDirectory,
10400
10451
  urlInfo,
10401
- ownerUrlInfo,
10452
+ ownerUrlInfo = urlInfo.firstReference.ownerUrlInfo,
10402
10453
  }) => {
10403
10454
  if (urlInfo.dirnameHint) {
10404
10455
  return urlInfo.dirnameHint;
@@ -10410,13 +10461,29 @@ const determineDirectoryPath = ({
10410
10461
  const parentDirectoryPath = determineDirectoryPath({
10411
10462
  sourceDirectoryUrl,
10412
10463
  assetsDirectory,
10413
- urlInfo: ownerUrlInfo || urlInfo.firstReference.ownerUrlInfo,
10464
+ urlInfo: ownerUrlInfo,
10414
10465
  });
10415
10466
  return parentDirectoryPath;
10416
10467
  }
10417
10468
  const dynamicImportId = urlInfo.searchParams.get("dynamic_import_id");
10418
10469
  if (dynamicImportId) {
10419
- return `${assetsDirectory}${dynamicImportId}/`;
10470
+ const ancestorImportIds = [];
10471
+ let ancestorUrlInfo = ownerUrlInfo;
10472
+ let currentImportId = dynamicImportId;
10473
+ while (ancestorUrlInfo) {
10474
+ const ancestorDynamicImportId =
10475
+ ancestorUrlInfo.searchParams.get("dynamic_import_id");
10476
+ if (!ancestorDynamicImportId) {
10477
+ break;
10478
+ }
10479
+ if (ancestorDynamicImportId !== currentImportId) {
10480
+ ancestorImportIds.push(ancestorDynamicImportId);
10481
+ currentImportId = ancestorDynamicImportId;
10482
+ }
10483
+ ancestorUrlInfo = ancestorUrlInfo.firstReference?.ownerUrlInfo;
10484
+ }
10485
+ const importIdPath = [...ancestorImportIds, dynamicImportId].join("/");
10486
+ return `${assetsDirectory}${importIdPath}/`;
10420
10487
  }
10421
10488
  if (urlInfo.isEntryPoint && !urlInfo.isDynamicEntryPoint) {
10422
10489
  return "";
@@ -11124,6 +11191,7 @@ const build = async ({
11124
11191
  entryBuildInfo.buildFileVersions = result.buildFileVersions;
11125
11192
  entryBuildInfo.buildInlineContents = result.buildInlineContents;
11126
11193
  entryBuildInfo.buildManifest = result.buildManifest;
11194
+ entryBuildInfo.buildSideEffectFiles = result.buildSideEffectFiles;
11127
11195
  entryBuildInfo.duration = Date.now() - entryPointBuildStartMs;
11128
11196
  onEntryPointBuildEnd();
11129
11197
  })();
@@ -11146,11 +11214,15 @@ const build = async ({
11146
11214
  const buildFileVersions = {};
11147
11215
  const buildInlineContents = {};
11148
11216
  const buildManifest = {};
11217
+ const buildSideEffectUrlSet = new Set();
11149
11218
  for (const [, entryBuildInfo] of entryBuildInfoMap) {
11150
11219
  Object.assign(buildFileContents, entryBuildInfo.buildFileContents);
11151
11220
  Object.assign(buildFileVersions, entryBuildInfo.buildFileVersions);
11152
11221
  Object.assign(buildInlineContents, entryBuildInfo.buildInlineContents);
11153
11222
  Object.assign(buildManifest, entryBuildInfo.buildManifest);
11223
+ for (const buildSideEffectUrl of entryBuildInfo.buildSideEffectFiles) {
11224
+ buildSideEffectUrlSet.add(buildSideEffectUrl);
11225
+ }
11154
11226
  }
11155
11227
  if (writeOnFileSystem) {
11156
11228
  clearDirectorySync(buildDirectoryUrl, buildDirectoryCleanPatterns);
@@ -11159,6 +11231,70 @@ const build = async ({
11159
11231
  const buildUrl = new URL(buildRelativeUrl, buildDirectoryUrl);
11160
11232
  writeFileSync(buildUrl, buildFileContents[buildRelativeUrl]);
11161
11233
  }
11234
+ if (buildSideEffectUrlSet.size) {
11235
+ const normalizeSideEffectFileUrl = (url) => {
11236
+ const urlRelativeToPackage = urlToRelativeUrl(
11237
+ url,
11238
+ packageDirectory.url,
11239
+ );
11240
+ return urlRelativeToPackage[0] === "."
11241
+ ? urlRelativeToPackage
11242
+ : `./${urlRelativeToPackage}`;
11243
+ };
11244
+ const updatePackageSideEffects = (sideEffectUrlSet) => {
11245
+ const packageJsonFileUrl = new URL(
11246
+ "./package.json",
11247
+ packageDirectory.url,
11248
+ ).href;
11249
+ const sideEffectRelativeUrlArray = [];
11250
+ for (const sideEffectUrl of sideEffectUrlSet) {
11251
+ sideEffectRelativeUrlArray.push(
11252
+ normalizeSideEffectFileUrl(sideEffectUrl),
11253
+ );
11254
+ }
11255
+ updateJsonFileSync(packageJsonFileUrl, {
11256
+ sideEffects: sideEffectRelativeUrlArray,
11257
+ });
11258
+ };
11259
+ const sideEffects = readPackageDirectory(
11260
+ packageDirectory.url,
11261
+ )?.sideEffects;
11262
+ if (sideEffects === false) {
11263
+ updatePackageSideEffects(buildSideEffectUrlSet);
11264
+ } else if (Array.isArray(sideEffects)) {
11265
+ const sideEffectUrlSet = new Set();
11266
+ const packageSideEffectUrlSet = new Set();
11267
+ for (const sideEffectFileRelativeUrl of sideEffects) {
11268
+ const sideEffectFileUrl = new URL(
11269
+ sideEffectFileRelativeUrl,
11270
+ packageDirectory.url,
11271
+ ).href;
11272
+ packageSideEffectUrlSet.add(sideEffectFileUrl);
11273
+ }
11274
+ let hasSomeOutdatedSideEffectUrl = false;
11275
+ for (const packageSideEffectUrl of packageSideEffectUrlSet) {
11276
+ if (
11277
+ urlIsInsideOf(packageSideEffectUrl, buildDirectoryUrl) &&
11278
+ !buildSideEffectUrlSet.has(packageSideEffectUrl)
11279
+ ) {
11280
+ hasSomeOutdatedSideEffectUrl = true;
11281
+ } else {
11282
+ sideEffectUrlSet.add(packageSideEffectUrl);
11283
+ }
11284
+ }
11285
+ let hasSomeNewSideEffectsUrl = false;
11286
+ for (const buildSideEffectUrl of buildSideEffectUrlSet) {
11287
+ if (packageSideEffectUrlSet.has(buildSideEffectUrl)) {
11288
+ continue;
11289
+ }
11290
+ hasSomeNewSideEffectsUrl = true;
11291
+ sideEffectUrlSet.add(buildSideEffectUrl);
11292
+ }
11293
+ if (hasSomeOutdatedSideEffectUrl || hasSomeNewSideEffectsUrl) {
11294
+ updatePackageSideEffects(sideEffectUrlSet);
11295
+ }
11296
+ }
11297
+ }
11162
11298
  }
11163
11299
  onBuildEnd({
11164
11300
  buildFileContents,
@@ -11284,6 +11420,7 @@ const entryPointDefaultParams = {
11284
11420
  assetManifest: false,
11285
11421
  assetManifestFileRelativeUrl: "asset-manifest.json",
11286
11422
  packageSideEffects: true,
11423
+ packageDependencies: "auto", // "auto", "ignore", "include"
11287
11424
  };
11288
11425
 
11289
11426
  const prepareEntryPointBuild = async (
@@ -11334,6 +11471,7 @@ const prepareEntryPointBuild = async (
11334
11471
  assetManifest,
11335
11472
  assetManifestFileRelativeUrl,
11336
11473
  packageSideEffects,
11474
+ packageDependencies,
11337
11475
  } = {
11338
11476
  ...entryPointDefaultParams,
11339
11477
  ...entryPointParams,
@@ -11427,6 +11565,7 @@ const prepareEntryPointBuild = async (
11427
11565
  ? new URL("craft/", outDirectoryUrl)
11428
11566
  : undefined,
11429
11567
  packageDirectory,
11568
+ packageDependencies,
11430
11569
  });
11431
11570
 
11432
11571
  let _getOtherEntryBuildInfo;
@@ -11526,6 +11665,7 @@ const prepareEntryPointBuild = async (
11526
11665
  ? new URL("shape/", outDirectoryUrl)
11527
11666
  : undefined,
11528
11667
  packageDirectory,
11668
+ packageDependencies,
11529
11669
  });
11530
11670
  const buildSpecifierManager = createBuildSpecifierManager({
11531
11671
  rawKitchen,
@@ -11731,6 +11871,7 @@ const prepareEntryPointBuild = async (
11731
11871
  });
11732
11872
  }
11733
11873
 
11874
+ const buildSideEffectFiles = [];
11734
11875
  {
11735
11876
  finalKitchen.context.buildStep = "refine";
11736
11877
 
@@ -11818,6 +11959,9 @@ const prepareEntryPointBuild = async (
11818
11959
  for (const refineBuildUrlContentCallback of refineBuildUrlContentCallbackSet) {
11819
11960
  refineBuildUrlContentCallback(buildUrlInfo, {
11820
11961
  buildUrl: buildSpecifierManager.getBuildUrl(buildUrlInfo),
11962
+ registerBuildSideEffectFile: (buildFileUrl) => {
11963
+ buildSideEffectFiles.push(buildFileUrl);
11964
+ },
11821
11965
  });
11822
11966
  }
11823
11967
  },
@@ -11848,6 +11992,7 @@ const prepareEntryPointBuild = async (
11848
11992
  buildFileVersions,
11849
11993
  buildInlineContents,
11850
11994
  buildManifest,
11995
+ buildSideEffectFiles,
11851
11996
  };
11852
11997
  },
11853
11998
  };