summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:10:59 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:41:44 +0800
commitfc87c009806dcc98867f6b58efe29b042aa01dee (patch)
tree8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js
parent3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff)
node: updatemain
Diffstat (limited to 'node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js')
-rw-r--r--node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js123
1 files changed, 0 insertions, 123 deletions
diff --git a/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js b/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js
deleted file mode 100644
index 4cf84fc1..00000000
--- a/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-
-"use strict";
-
-const EnvironmentNotSupportAsyncWarning = require("../EnvironmentNotSupportAsyncWarning");
-const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
-const DynamicExports = require("./DynamicExports");
-const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
-const HarmonyExports = require("./HarmonyExports");
-
-/** @typedef {import("../Module").BuildMeta} BuildMeta */
-/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
-/** @typedef {import("./HarmonyModulesPlugin").HarmonyModulesPluginOptions} HarmonyModulesPluginOptions */
-
-module.exports = class HarmonyDetectionParserPlugin {
- /**
- * @param {HarmonyModulesPluginOptions} options options
- */
- constructor(options) {
- const { topLevelAwait = false } = options || {};
- this.topLevelAwait = topLevelAwait;
- }
-
- /**
- * @param {JavascriptParser} parser the parser
- * @returns {void}
- */
- apply(parser) {
- parser.hooks.program.tap("HarmonyDetectionParserPlugin", ast => {
- const isStrictHarmony =
- parser.state.module.type === JAVASCRIPT_MODULE_TYPE_ESM;
- const isHarmony =
- isStrictHarmony ||
- ast.body.some(
- statement =>
- statement.type === "ImportDeclaration" ||
- statement.type === "ExportDefaultDeclaration" ||
- statement.type === "ExportNamedDeclaration" ||
- statement.type === "ExportAllDeclaration"
- );
- if (isHarmony) {
- const module = parser.state.module;
- const compatDep = new HarmonyCompatibilityDependency();
- compatDep.loc = {
- start: {
- line: -1,
- column: 0
- },
- end: {
- line: -1,
- column: 0
- },
- index: -3
- };
- module.addPresentationalDependency(compatDep);
- DynamicExports.bailout(parser.state);
- HarmonyExports.enable(parser.state, isStrictHarmony);
- parser.scope.isStrict = true;
- }
- });
-
- parser.hooks.topLevelAwait.tap("HarmonyDetectionParserPlugin", () => {
- const module = parser.state.module;
- if (!this.topLevelAwait) {
- throw new Error(
- "The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enable it)"
- );
- }
- if (!HarmonyExports.isEnabled(parser.state)) {
- throw new Error(
- "Top-level-await is only supported in EcmaScript Modules"
- );
- }
- /** @type {BuildMeta} */
- (module.buildMeta).async = true;
- EnvironmentNotSupportAsyncWarning.check(
- module,
- parser.state.compilation.runtimeTemplate,
- "topLevelAwait"
- );
- });
-
- /**
- * @returns {boolean | undefined} true if in harmony
- */
- const skipInHarmony = () => {
- if (HarmonyExports.isEnabled(parser.state)) {
- return true;
- }
- };
-
- /**
- * @returns {null | undefined} null if in harmony
- */
- const nullInHarmony = () => {
- if (HarmonyExports.isEnabled(parser.state)) {
- return null;
- }
- };
-
- const nonHarmonyIdentifiers = ["define", "exports"];
- for (const identifier of nonHarmonyIdentifiers) {
- parser.hooks.evaluateTypeof
- .for(identifier)
- .tap("HarmonyDetectionParserPlugin", nullInHarmony);
- parser.hooks.typeof
- .for(identifier)
- .tap("HarmonyDetectionParserPlugin", skipInHarmony);
- parser.hooks.evaluate
- .for(identifier)
- .tap("HarmonyDetectionParserPlugin", nullInHarmony);
- parser.hooks.expression
- .for(identifier)
- .tap("HarmonyDetectionParserPlugin", skipInHarmony);
- parser.hooks.call
- .for(identifier)
- .tap("HarmonyDetectionParserPlugin", skipInHarmony);
- }
- }
-};