webpack/lib/dependencies/HarmonyImportSideEffectDepe...

53 lines
1.6 KiB
JavaScript
Raw Normal View History

/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
2018-07-30 23:08:51 +08:00
"use strict";
2018-07-30 23:08:51 +08:00
2018-10-09 20:30:59 +08:00
const makeSerializable = require("../util/makeSerializable");
const HarmonyImportDependency = require("./HarmonyImportDependency");
2018-11-18 20:26:15 +08:00
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
2018-07-27 17:45:12 +08:00
/** @typedef {import("../Dependency")} Dependency */
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
2018-07-27 17:45:12 +08:00
/** @typedef {import("../InitFragment")} InitFragment */
/** @typedef {import("../ModuleGraph")} ModuleGraph */
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
2019-07-17 22:02:33 +08:00
/** @typedef {import("../util/Hash")} Hash */
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
2018-07-25 15:33:48 +08:00
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
constructor(request, sourceOrder) {
super(request, sourceOrder);
}
get type() {
return "harmony side effect evaluation";
}
/**
* @param {ModuleGraph} moduleGraph module graph
* @returns {function(ModuleGraphConnection, RuntimeSpec): boolean} function to determine if the connection is active
*/
getCondition(moduleGraph) {
return connection => {
const refModule = connection.resolvedModule;
return (
!refModule ||
refModule.factoryMeta === undefined ||
!refModule.factoryMeta.sideEffectFree
);
};
}
}
2018-10-09 20:30:59 +08:00
makeSerializable(
HarmonyImportSideEffectDependency,
"webpack/lib/dependencies/HarmonyImportSideEffectDependency"
);
HarmonyImportSideEffectDependency.Template = HarmonyImportDependency.Template;
module.exports = HarmonyImportSideEffectDependency;