@jsenv/core 40.3.2 → 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 (115) hide show
  1. package/dist/browserslist_index/browserslist_index.js +4951 -0
  2. package/dist/build/build.js +188 -75
  3. package/dist/jsenv_core_node_modules.js +25 -1
  4. package/dist/jsenv_core_packages.js +6384 -11580
  5. package/dist/start_build_server/start_build_server.js +0 -5
  6. package/dist/start_dev_server/start_dev_server.js +108 -74
  7. package/package.json +20 -19
  8. package/src/build/build.js +79 -0
  9. package/src/kitchen/errors.js +6 -1
  10. package/src/kitchen/kitchen.js +95 -7
  11. package/src/plugins/package_side_effects/jsenv_plugin_package_side_effects.js +5 -65
  12. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +0 -112
  13. package/dist/babel_helpers/AwaitValue/AwaitValue.js +0 -3
  14. package/dist/babel_helpers/OverloadYield/OverloadYield.js +0 -11
  15. package/dist/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +0 -32
  16. package/dist/babel_helpers/applyDecs/applyDecs.js +0 -813
  17. package/dist/babel_helpers/applyDecs2203/applyDecs2203.js +0 -635
  18. package/dist/babel_helpers/applyDecs2203R/applyDecs2203R.js +0 -654
  19. package/dist/babel_helpers/applyDecs2301/applyDecs2301.js +0 -721
  20. package/dist/babel_helpers/applyDecs2305/applyDecs2305.js +0 -531
  21. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +0 -7
  22. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +0 -4
  23. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
  24. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +0 -9
  25. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -55
  26. package/dist/babel_helpers/asyncIterator/asyncIterator.js +0 -68
  27. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +0 -34
  28. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
  29. package/dist/babel_helpers/callSuper/callSuper.js +0 -25
  30. package/dist/babel_helpers/checkInRHS/checkInRHS.js +0 -11
  31. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -23
  32. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
  33. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
  34. package/dist/babel_helpers/classCallCheck/classCallCheck.js +0 -5
  35. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -8
  36. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -11
  37. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -13
  38. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +0 -6
  39. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
  40. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
  41. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
  42. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
  43. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
  44. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
  45. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
  46. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -13
  47. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
  48. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -10
  49. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
  50. package/dist/babel_helpers/construct/construct.js +0 -20
  51. package/dist/babel_helpers/createClass/createClass.js +0 -17
  52. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -61
  53. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -24
  54. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +0 -50
  55. package/dist/babel_helpers/createSuper/createSuper.js +0 -22
  56. package/dist/babel_helpers/decorate/decorate.js +0 -488
  57. package/dist/babel_helpers/defaults/defaults.js +0 -11
  58. package/dist/babel_helpers/defineAccessor/defineAccessor.js +0 -6
  59. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
  60. package/dist/babel_helpers/defineProperty/defineProperty.js +0 -21
  61. package/dist/babel_helpers/dispose/dispose.js +0 -45
  62. package/dist/babel_helpers/extends/extends.js +0 -14
  63. package/dist/babel_helpers/get/get.js +0 -19
  64. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +0 -4
  65. package/dist/babel_helpers/identity/identity.js +0 -3
  66. package/dist/babel_helpers/importDeferProxy/importDeferProxy.js +0 -31
  67. package/dist/babel_helpers/inherits/inherits.js +0 -19
  68. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +0 -7
  69. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +0 -12
  70. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +0 -6
  71. package/dist/babel_helpers/instanceof/instanceof.js +0 -10
  72. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +0 -3
  73. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +0 -47
  74. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +0 -9
  75. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -19
  76. package/dist/babel_helpers/iterableToArray/iterableToArray.js +0 -7
  77. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +0 -54
  78. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -16
  79. package/dist/babel_helpers/jsx/jsx.js +0 -50
  80. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +0 -10
  81. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +0 -5
  82. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +0 -5
  83. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +0 -5
  84. package/dist/babel_helpers/nullishReceiverError/nullishReceiverError.js +0 -3
  85. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
  86. package/dist/babel_helpers/objectSpread/objectSpread.js +0 -23
  87. package/dist/babel_helpers/objectSpread2/objectSpread2.js +0 -43
  88. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +0 -19
  89. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
  90. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +0 -12
  91. package/dist/babel_helpers/readOnlyError/readOnlyError.js +0 -4
  92. package/dist/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +0 -698
  93. package/dist/babel_helpers/set/set.js +0 -47
  94. package/dist/babel_helpers/setFunctionName/setFunctionName.js +0 -19
  95. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +0 -7
  96. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
  97. package/dist/babel_helpers/slicedToArray/slicedToArray.js +0 -10
  98. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
  99. package/dist/babel_helpers/superPropBase/superPropBase.js +0 -10
  100. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
  101. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
  102. package/dist/babel_helpers/tdz/tdz.js +0 -4
  103. package/dist/babel_helpers/temporalRef/temporalRef.js +0 -6
  104. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +0 -3
  105. package/dist/babel_helpers/toArray/toArray.js +0 -10
  106. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +0 -10
  107. package/dist/babel_helpers/toPrimitive/toPrimitive.js +0 -14
  108. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +0 -10
  109. package/dist/babel_helpers/typeof/typeof.js +0 -15
  110. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
  111. package/dist/babel_helpers/using/using.js +0 -23
  112. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
  113. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +0 -30
  114. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +0 -79
  115. 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, 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$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,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
 
@@ -11124,6 +11159,7 @@ const build = async ({
11124
11159
  entryBuildInfo.buildFileVersions = result.buildFileVersions;
11125
11160
  entryBuildInfo.buildInlineContents = result.buildInlineContents;
11126
11161
  entryBuildInfo.buildManifest = result.buildManifest;
11162
+ entryBuildInfo.buildSideEffectFiles = result.buildSideEffectFiles;
11127
11163
  entryBuildInfo.duration = Date.now() - entryPointBuildStartMs;
11128
11164
  onEntryPointBuildEnd();
11129
11165
  })();
@@ -11146,11 +11182,15 @@ const build = async ({
11146
11182
  const buildFileVersions = {};
11147
11183
  const buildInlineContents = {};
11148
11184
  const buildManifest = {};
11185
+ const buildSideEffectUrlSet = new Set();
11149
11186
  for (const [, entryBuildInfo] of entryBuildInfoMap) {
11150
11187
  Object.assign(buildFileContents, entryBuildInfo.buildFileContents);
11151
11188
  Object.assign(buildFileVersions, entryBuildInfo.buildFileVersions);
11152
11189
  Object.assign(buildInlineContents, entryBuildInfo.buildInlineContents);
11153
11190
  Object.assign(buildManifest, entryBuildInfo.buildManifest);
11191
+ for (const buildSideEffectUrl of entryBuildInfo.buildSideEffectFiles) {
11192
+ buildSideEffectUrlSet.add(buildSideEffectUrl);
11193
+ }
11154
11194
  }
11155
11195
  if (writeOnFileSystem) {
11156
11196
  clearDirectorySync(buildDirectoryUrl, buildDirectoryCleanPatterns);
@@ -11159,6 +11199,70 @@ const build = async ({
11159
11199
  const buildUrl = new URL(buildRelativeUrl, buildDirectoryUrl);
11160
11200
  writeFileSync(buildUrl, buildFileContents[buildRelativeUrl]);
11161
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
+ }
11162
11266
  }
11163
11267
  onBuildEnd({
11164
11268
  buildFileContents,
@@ -11284,6 +11388,7 @@ const entryPointDefaultParams = {
11284
11388
  assetManifest: false,
11285
11389
  assetManifestFileRelativeUrl: "asset-manifest.json",
11286
11390
  packageSideEffects: true,
11391
+ packageDependencies: "auto", // "auto", "ignore", "include"
11287
11392
  };
11288
11393
 
11289
11394
  const prepareEntryPointBuild = async (
@@ -11334,6 +11439,7 @@ const prepareEntryPointBuild = async (
11334
11439
  assetManifest,
11335
11440
  assetManifestFileRelativeUrl,
11336
11441
  packageSideEffects,
11442
+ packageDependencies,
11337
11443
  } = {
11338
11444
  ...entryPointDefaultParams,
11339
11445
  ...entryPointParams,
@@ -11427,6 +11533,7 @@ const prepareEntryPointBuild = async (
11427
11533
  ? new URL("craft/", outDirectoryUrl)
11428
11534
  : undefined,
11429
11535
  packageDirectory,
11536
+ packageDependencies,
11430
11537
  });
11431
11538
 
11432
11539
  let _getOtherEntryBuildInfo;
@@ -11526,6 +11633,7 @@ const prepareEntryPointBuild = async (
11526
11633
  ? new URL("shape/", outDirectoryUrl)
11527
11634
  : undefined,
11528
11635
  packageDirectory,
11636
+ packageDependencies,
11529
11637
  });
11530
11638
  const buildSpecifierManager = createBuildSpecifierManager({
11531
11639
  rawKitchen,
@@ -11731,6 +11839,7 @@ const prepareEntryPointBuild = async (
11731
11839
  });
11732
11840
  }
11733
11841
 
11842
+ const buildSideEffectFiles = [];
11734
11843
  {
11735
11844
  finalKitchen.context.buildStep = "refine";
11736
11845
 
@@ -11818,6 +11927,9 @@ const prepareEntryPointBuild = async (
11818
11927
  for (const refineBuildUrlContentCallback of refineBuildUrlContentCallbackSet) {
11819
11928
  refineBuildUrlContentCallback(buildUrlInfo, {
11820
11929
  buildUrl: buildSpecifierManager.getBuildUrl(buildUrlInfo),
11930
+ registerBuildSideEffectFile: (buildFileUrl) => {
11931
+ buildSideEffectFiles.push(buildFileUrl);
11932
+ },
11821
11933
  });
11822
11934
  }
11823
11935
  },
@@ -11848,6 +11960,7 @@ const prepareEntryPointBuild = async (
11848
11960
  buildFileVersions,
11849
11961
  buildInlineContents,
11850
11962
  buildManifest,
11963
+ buildSideEffectFiles,
11851
11964
  };
11852
11965
  },
11853
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 };