123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- "use strict";
- const { RawSource, ReplaceSource } = require("webpack-sources");
- class DependenciesBlockVariable {
-
- constructor(name, expression, dependencies) {
- this.name = name;
- this.expression = expression;
- this.dependencies = dependencies || [];
- }
-
- updateHash(hash) {
- hash.update(this.name);
- hash.update(this.expression);
- for (const d of this.dependencies) {
- d.updateHash(hash);
- }
- }
-
- expressionSource(dependencyTemplates, runtimeTemplate) {
- const source = new ReplaceSource(new RawSource(this.expression));
- for (const dep of this.dependencies) {
- const template = dependencyTemplates.get(dep.constructor);
- if (!template) {
- throw new Error(`No template for dependency: ${dep.constructor.name}`);
- }
- template.apply(dep, source, runtimeTemplate, dependencyTemplates);
- }
- return source;
- }
- disconnect() {
- for (const d of this.dependencies) {
- d.disconnect();
- }
- }
- hasDependencies(filter) {
- if (filter) {
- return this.dependencies.some(filter);
- }
- return this.dependencies.length > 0;
- }
- }
- module.exports = DependenciesBlockVariable;
|