@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.
Files changed (116) hide show
  1. package/README.md +42 -33
  2. package/dist/browserslist_index/browserslist_index.js +4951 -0
  3. package/dist/build/build.js +189 -62
  4. package/dist/jsenv_core_node_modules.js +25 -1
  5. package/dist/jsenv_core_packages.js +6384 -11580
  6. package/dist/start_build_server/start_build_server.js +0 -5
  7. package/dist/start_dev_server/start_dev_server.js +108 -60
  8. package/package.json +20 -21
  9. package/src/build/build.js +80 -1
  10. package/src/kitchen/errors.js +6 -1
  11. package/src/kitchen/kitchen.js +95 -7
  12. package/src/plugins/package_side_effects/jsenv_plugin_package_side_effects.js +5 -51
  13. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +0 -112
  14. package/dist/babel_helpers/AwaitValue/AwaitValue.js +0 -3
  15. package/dist/babel_helpers/OverloadYield/OverloadYield.js +0 -11
  16. package/dist/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +0 -32
  17. package/dist/babel_helpers/applyDecs/applyDecs.js +0 -813
  18. package/dist/babel_helpers/applyDecs2203/applyDecs2203.js +0 -635
  19. package/dist/babel_helpers/applyDecs2203R/applyDecs2203R.js +0 -654
  20. package/dist/babel_helpers/applyDecs2301/applyDecs2301.js +0 -721
  21. package/dist/babel_helpers/applyDecs2305/applyDecs2305.js +0 -531
  22. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +0 -7
  23. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +0 -4
  24. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
  25. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +0 -9
  26. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -55
  27. package/dist/babel_helpers/asyncIterator/asyncIterator.js +0 -68
  28. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +0 -34
  29. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
  30. package/dist/babel_helpers/callSuper/callSuper.js +0 -25
  31. package/dist/babel_helpers/checkInRHS/checkInRHS.js +0 -11
  32. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -23
  33. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
  34. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
  35. package/dist/babel_helpers/classCallCheck/classCallCheck.js +0 -5
  36. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -8
  37. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -11
  38. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -13
  39. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +0 -6
  40. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
  41. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
  42. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
  43. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
  44. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
  45. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
  46. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
  47. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -13
  48. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
  49. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -10
  50. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
  51. package/dist/babel_helpers/construct/construct.js +0 -20
  52. package/dist/babel_helpers/createClass/createClass.js +0 -17
  53. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -61
  54. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -24
  55. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +0 -50
  56. package/dist/babel_helpers/createSuper/createSuper.js +0 -22
  57. package/dist/babel_helpers/decorate/decorate.js +0 -488
  58. package/dist/babel_helpers/defaults/defaults.js +0 -11
  59. package/dist/babel_helpers/defineAccessor/defineAccessor.js +0 -6
  60. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
  61. package/dist/babel_helpers/defineProperty/defineProperty.js +0 -21
  62. package/dist/babel_helpers/dispose/dispose.js +0 -45
  63. package/dist/babel_helpers/extends/extends.js +0 -14
  64. package/dist/babel_helpers/get/get.js +0 -19
  65. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +0 -4
  66. package/dist/babel_helpers/identity/identity.js +0 -3
  67. package/dist/babel_helpers/importDeferProxy/importDeferProxy.js +0 -31
  68. package/dist/babel_helpers/inherits/inherits.js +0 -19
  69. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +0 -7
  70. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +0 -12
  71. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +0 -6
  72. package/dist/babel_helpers/instanceof/instanceof.js +0 -10
  73. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +0 -3
  74. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +0 -47
  75. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +0 -9
  76. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -19
  77. package/dist/babel_helpers/iterableToArray/iterableToArray.js +0 -7
  78. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +0 -54
  79. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -16
  80. package/dist/babel_helpers/jsx/jsx.js +0 -50
  81. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +0 -10
  82. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +0 -5
  83. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +0 -5
  84. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +0 -5
  85. package/dist/babel_helpers/nullishReceiverError/nullishReceiverError.js +0 -3
  86. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
  87. package/dist/babel_helpers/objectSpread/objectSpread.js +0 -23
  88. package/dist/babel_helpers/objectSpread2/objectSpread2.js +0 -43
  89. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +0 -19
  90. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
  91. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +0 -12
  92. package/dist/babel_helpers/readOnlyError/readOnlyError.js +0 -4
  93. package/dist/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +0 -698
  94. package/dist/babel_helpers/set/set.js +0 -47
  95. package/dist/babel_helpers/setFunctionName/setFunctionName.js +0 -19
  96. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +0 -7
  97. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
  98. package/dist/babel_helpers/slicedToArray/slicedToArray.js +0 -10
  99. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
  100. package/dist/babel_helpers/superPropBase/superPropBase.js +0 -10
  101. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
  102. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
  103. package/dist/babel_helpers/tdz/tdz.js +0 -4
  104. package/dist/babel_helpers/temporalRef/temporalRef.js +0 -6
  105. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +0 -3
  106. package/dist/babel_helpers/toArray/toArray.js +0 -10
  107. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +0 -10
  108. package/dist/babel_helpers/toPrimitive/toPrimitive.js +0 -14
  109. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +0 -10
  110. package/dist/babel_helpers/typeof/typeof.js +0 -15
  111. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
  112. package/dist/babel_helpers/using/using.js +0 -23
  113. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
  114. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +0 -30
  115. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +0 -79
  116. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +0 -3
@@ -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, updateJsonFileSync$1 as updateJsonFileSync, isSpecifierForNodeBuiltin$1 as isSpecifierForNodeBuiltin, 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$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, 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, 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
14
  import "../jsenv_core_node_modules.js";
13
15
  import "node:os";
14
16
  import "node:tty";
15
17
  import "node:util";
16
18
  import "node:path";
17
- import "node:module";
18
- import "@jsenv/js-module-fallback";
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,19 +8322,6 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
8229
8322
  return [];
8230
8323
  }
8231
8324
 
8232
- const sideEffectFileUrlSet = new Set();
8233
- const packageJsonFileUrl = new URL("./package.json", packageDirectory.url)
8234
- .href;
8235
-
8236
- const normalizeSideEffectFileUrl = (url) => {
8237
- const urlRelativeToPackage = urlToRelativeUrl(url, packageDirectory.url);
8238
- return urlRelativeToPackage[0] === "."
8239
- ? urlRelativeToPackage
8240
- : `./${urlRelativeToPackage}`;
8241
- };
8242
-
8243
- const sideEffectBuildFileUrls = [];
8244
-
8245
8325
  const packageSideEffectsCacheMap = new Map();
8246
8326
  const readSideEffectInfoFromClosestPackage = (urlInfo) => {
8247
8327
  const closestPackageDirectoryUrl = urlInfo.packageDirectoryUrl;
@@ -8367,48 +8447,17 @@ const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
8367
8447
  return;
8368
8448
  }
8369
8449
  },
8370
- refineBuildUrlContent: (buildUrlInfo, { buildUrl }) => {
8450
+ refineBuildUrlContent: (
8451
+ buildUrlInfo,
8452
+ { buildUrl, registerBuildSideEffectFile },
8453
+ ) => {
8371
8454
  for (const sideEffect of buildUrlInfo.contentSideEffects) {
8372
8455
  if (sideEffect.has) {
8373
- sideEffectBuildFileUrls.push(buildUrl);
8456
+ registerBuildSideEffectFile(buildUrl);
8374
8457
  return;
8375
8458
  }
8376
8459
  }
8377
8460
  },
8378
- refineBuild: () => {
8379
- if (sideEffectBuildFileUrls.length === 0) {
8380
- return;
8381
- }
8382
- let sideEffectsToAdd = [];
8383
- if (sideEffects === false) {
8384
- sideEffectsToAdd = sideEffectBuildFileUrls;
8385
- } else if (Array.isArray(sideEffects)) {
8386
- for (const sideEffectFileRelativeUrl of sideEffects) {
8387
- const sideEffectFileUrl = new URL(
8388
- sideEffectFileRelativeUrl,
8389
- packageDirectory.url,
8390
- ).href;
8391
- sideEffectFileUrlSet.add(sideEffectFileUrl);
8392
- }
8393
- for (const url of sideEffectBuildFileUrls) {
8394
- if (sideEffectFileUrlSet.has(url)) {
8395
- continue;
8396
- }
8397
- sideEffectsToAdd.push(url);
8398
- }
8399
- }
8400
- if (sideEffectsToAdd.length === 0) {
8401
- return;
8402
- }
8403
-
8404
- const finalSideEffects = Array.isArray(sideEffects) ? sideEffects : [];
8405
- for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
8406
- finalSideEffects.push(normalizeSideEffectFileUrl(sideEffectBuildUrl));
8407
- }
8408
- updateJsonFileSync(packageJsonFileUrl, {
8409
- sideEffects: finalSideEffects,
8410
- });
8411
- },
8412
8461
  };
8413
8462
  };
8414
8463
 
@@ -11110,6 +11159,7 @@ const build = async ({
11110
11159
  entryBuildInfo.buildFileVersions = result.buildFileVersions;
11111
11160
  entryBuildInfo.buildInlineContents = result.buildInlineContents;
11112
11161
  entryBuildInfo.buildManifest = result.buildManifest;
11162
+ entryBuildInfo.buildSideEffectFiles = result.buildSideEffectFiles;
11113
11163
  entryBuildInfo.duration = Date.now() - entryPointBuildStartMs;
11114
11164
  onEntryPointBuildEnd();
11115
11165
  })();
@@ -11132,11 +11182,15 @@ const build = async ({
11132
11182
  const buildFileVersions = {};
11133
11183
  const buildInlineContents = {};
11134
11184
  const buildManifest = {};
11185
+ const buildSideEffectUrlSet = new Set();
11135
11186
  for (const [, entryBuildInfo] of entryBuildInfoMap) {
11136
11187
  Object.assign(buildFileContents, entryBuildInfo.buildFileContents);
11137
11188
  Object.assign(buildFileVersions, entryBuildInfo.buildFileVersions);
11138
11189
  Object.assign(buildInlineContents, entryBuildInfo.buildInlineContents);
11139
11190
  Object.assign(buildManifest, entryBuildInfo.buildManifest);
11191
+ for (const buildSideEffectUrl of entryBuildInfo.buildSideEffectFiles) {
11192
+ buildSideEffectUrlSet.add(buildSideEffectUrl);
11193
+ }
11140
11194
  }
11141
11195
  if (writeOnFileSystem) {
11142
11196
  clearDirectorySync(buildDirectoryUrl, buildDirectoryCleanPatterns);
@@ -11145,6 +11199,70 @@ const build = async ({
11145
11199
  const buildUrl = new URL(buildRelativeUrl, buildDirectoryUrl);
11146
11200
  writeFileSync(buildUrl, buildFileContents[buildRelativeUrl]);
11147
11201
  }
11202
+ if (buildSideEffectUrlSet.size) {
11203
+ const normalizeSideEffectFileUrl = (url) => {
11204
+ const urlRelativeToPackage = urlToRelativeUrl(
11205
+ url,
11206
+ packageDirectory.url,
11207
+ );
11208
+ return urlRelativeToPackage[0] === "."
11209
+ ? urlRelativeToPackage
11210
+ : `./${urlRelativeToPackage}`;
11211
+ };
11212
+ const updatePackageSideEffects = (sideEffectUrlSet) => {
11213
+ const packageJsonFileUrl = new URL(
11214
+ "./package.json",
11215
+ packageDirectory.url,
11216
+ ).href;
11217
+ const sideEffectRelativeUrlArray = [];
11218
+ for (const sideEffectUrl of sideEffectUrlSet) {
11219
+ sideEffectRelativeUrlArray.push(
11220
+ normalizeSideEffectFileUrl(sideEffectUrl),
11221
+ );
11222
+ }
11223
+ updateJsonFileSync(packageJsonFileUrl, {
11224
+ sideEffects: sideEffectRelativeUrlArray,
11225
+ });
11226
+ };
11227
+ const sideEffects = readPackageDirectory(
11228
+ packageDirectory.url,
11229
+ )?.sideEffects;
11230
+ if (sideEffects === false) {
11231
+ updatePackageSideEffects(buildSideEffectUrlSet);
11232
+ } else if (Array.isArray(sideEffects)) {
11233
+ const sideEffectUrlSet = new Set();
11234
+ const packageSideEffectUrlSet = new Set();
11235
+ for (const sideEffectFileRelativeUrl of sideEffects) {
11236
+ const sideEffectFileUrl = new URL(
11237
+ sideEffectFileRelativeUrl,
11238
+ packageDirectory.url,
11239
+ ).href;
11240
+ packageSideEffectUrlSet.add(sideEffectFileUrl);
11241
+ }
11242
+ let hasSomeOutdatedSideEffectUrl = false;
11243
+ for (const packageSideEffectUrl of packageSideEffectUrlSet) {
11244
+ if (
11245
+ urlIsInsideOf(packageSideEffectUrl, buildDirectoryUrl) &&
11246
+ !buildSideEffectUrlSet.has(packageSideEffectUrl)
11247
+ ) {
11248
+ hasSomeOutdatedSideEffectUrl = true;
11249
+ } else {
11250
+ sideEffectUrlSet.add(packageSideEffectUrl);
11251
+ }
11252
+ }
11253
+ let hasSomeNewSideEffectsUrl = false;
11254
+ for (const buildSideEffectUrl of buildSideEffectUrlSet) {
11255
+ if (packageSideEffectUrlSet.has(buildSideEffectUrl)) {
11256
+ continue;
11257
+ }
11258
+ hasSomeNewSideEffectsUrl = true;
11259
+ sideEffectUrlSet.add(buildSideEffectUrl);
11260
+ }
11261
+ if (hasSomeOutdatedSideEffectUrl || hasSomeNewSideEffectsUrl) {
11262
+ updatePackageSideEffects(sideEffectUrlSet);
11263
+ }
11264
+ }
11265
+ }
11148
11266
  }
11149
11267
  onBuildEnd({
11150
11268
  buildFileContents,
@@ -11270,6 +11388,7 @@ const entryPointDefaultParams = {
11270
11388
  assetManifest: false,
11271
11389
  assetManifestFileRelativeUrl: "asset-manifest.json",
11272
11390
  packageSideEffects: true,
11391
+ packageDependencies: "auto", // "auto", "ignore", "include"
11273
11392
  };
11274
11393
 
11275
11394
  const prepareEntryPointBuild = async (
@@ -11320,6 +11439,7 @@ const prepareEntryPointBuild = async (
11320
11439
  assetManifest,
11321
11440
  assetManifestFileRelativeUrl,
11322
11441
  packageSideEffects,
11442
+ packageDependencies,
11323
11443
  } = {
11324
11444
  ...entryPointDefaultParams,
11325
11445
  ...entryPointParams,
@@ -11413,6 +11533,7 @@ const prepareEntryPointBuild = async (
11413
11533
  ? new URL("craft/", outDirectoryUrl)
11414
11534
  : undefined,
11415
11535
  packageDirectory,
11536
+ packageDependencies,
11416
11537
  });
11417
11538
 
11418
11539
  let _getOtherEntryBuildInfo;
@@ -11512,6 +11633,7 @@ const prepareEntryPointBuild = async (
11512
11633
  ? new URL("shape/", outDirectoryUrl)
11513
11634
  : undefined,
11514
11635
  packageDirectory,
11636
+ packageDependencies,
11515
11637
  });
11516
11638
  const buildSpecifierManager = createBuildSpecifierManager({
11517
11639
  rawKitchen,
@@ -11717,6 +11839,7 @@ const prepareEntryPointBuild = async (
11717
11839
  });
11718
11840
  }
11719
11841
 
11842
+ const buildSideEffectFiles = [];
11720
11843
  {
11721
11844
  finalKitchen.context.buildStep = "refine";
11722
11845
 
@@ -11804,6 +11927,9 @@ const prepareEntryPointBuild = async (
11804
11927
  for (const refineBuildUrlContentCallback of refineBuildUrlContentCallbackSet) {
11805
11928
  refineBuildUrlContentCallback(buildUrlInfo, {
11806
11929
  buildUrl: buildSpecifierManager.getBuildUrl(buildUrlInfo),
11930
+ registerBuildSideEffectFile: (buildFileUrl) => {
11931
+ buildSideEffectFiles.push(buildFileUrl);
11932
+ },
11807
11933
  });
11808
11934
  }
11809
11935
  },
@@ -11811,7 +11937,7 @@ const prepareEntryPointBuild = async (
11811
11937
  }
11812
11938
  if (refineBuildCallbackSet.size) {
11813
11939
  for (const refineBuildCallback of refineBuildCallbackSet) {
11814
- refineBuildCallback(finalKitchen.graph);
11940
+ refineBuildCallback(finalKitchen);
11815
11941
  }
11816
11942
  }
11817
11943
  }
@@ -11834,6 +11960,7 @@ const prepareEntryPointBuild = async (
11834
11960
  buildFileVersions,
11835
11961
  buildInlineContents,
11836
11962
  buildManifest,
11963
+ buildSideEffectFiles,
11837
11964
  };
11838
11965
  },
11839
11966
  };
@@ -891,6 +891,30 @@ function isUnicodeSupported$1() {
891
891
  || env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';
892
892
  }
893
893
 
894
+ function ansiRegex({onlyFirst = false} = {}) {
895
+ // Valid string terminator sequences are BEL, ESC\, and 0x9c
896
+ const ST = '(?:\\u0007|\\u001B\\u005C|\\u009C)';
897
+ const pattern = [
898
+ `[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`,
899
+ '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))',
900
+ ].join('|');
901
+
902
+ return new RegExp(pattern, onlyFirst ? undefined : 'g');
903
+ }
904
+
905
+ const regex = ansiRegex();
906
+
907
+ function stripAnsi(string) {
908
+ if (typeof string !== 'string') {
909
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
910
+ }
911
+
912
+ // Even though the regex is global, we don't need to reset the `.lastIndex`
913
+ // because unlike `.exec()` and `.test()`, `.replace()` does it automatically
914
+ // and doing it manually has a performance penalty.
915
+ return string.replace(regex, '');
916
+ }
917
+
894
918
  const r$1 = String.raw;
895
919
  const seq$1 = r$1`(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})`;
896
920
  const sTags$1 = r$1`\u{E0061}-\u{E007A}`;
@@ -2042,4 +2066,4 @@ const clearTerminal = isWindows
2042
2066
  // More info: https://www.real-world-systems.com/docs/ANSIcode.html
2043
2067
  : `${eraseScreen}${ESC}3J${ESC}H`;
2044
2068
 
2045
- export { clearTerminal$2 as clearTerminal, clearTerminal$1, clearTerminal as clearTerminal$2, createSupportsColor$2 as createSupportsColor, createSupportsColor$1, createSupportsColor as createSupportsColor$2, eastAsianWidth$2 as eastAsianWidth, eastAsianWidth$1, eastAsianWidth as eastAsianWidth$2, emojiRegex$2 as emojiRegex, emojiRegex$1, emojiRegex as emojiRegex$2, eraseLines$2 as eraseLines, eraseLines$1, eraseLines as eraseLines$2, isUnicodeSupported$2 as isUnicodeSupported, isUnicodeSupported$1, isUnicodeSupported as isUnicodeSupported$2 };
2069
+ export { clearTerminal$2 as clearTerminal, clearTerminal$1, clearTerminal as clearTerminal$2, createSupportsColor$2 as createSupportsColor, createSupportsColor$1, createSupportsColor as createSupportsColor$2, eastAsianWidth$2 as eastAsianWidth, eastAsianWidth$1, eastAsianWidth as eastAsianWidth$2, emojiRegex$2 as emojiRegex, emojiRegex$1, emojiRegex as emojiRegex$2, eraseLines$2 as eraseLines, eraseLines$1, eraseLines as eraseLines$2, isUnicodeSupported$2 as isUnicodeSupported, isUnicodeSupported$1, isUnicodeSupported as isUnicodeSupported$2, stripAnsi };