Linux ubuntu22 5.15.0-133-generic #144-Ubuntu SMP Fri Feb 7 20:47:38 UTC 2025 x86_64
nginx/1.18.0
: 128.199.27.159 | : 216.73.216.1
Cant Read [ /etc/named.conf ]
8.1.31
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
amatya /
node_modules /
webpack /
lib /
[ HOME SHELL ]
Name
Size
Permission
Action
debug
[ DIR ]
drwxr-xr-x
dependencies
[ DIR ]
drwxr-xr-x
node
[ DIR ]
drwxr-xr-x
optimize
[ DIR ]
drwxr-xr-x
performance
[ DIR ]
drwxr-xr-x
util
[ DIR ]
drwxr-xr-x
wasm
[ DIR ]
drwxr-xr-x
web
[ DIR ]
drwxr-xr-x
webworker
[ DIR ]
drwxr-xr-x
APIPlugin.js
2.2
KB
-rw-r--r--
AmdMainTemplatePlugin.js
2.52
KB
-rw-r--r--
AsyncDependenciesBlock.js
2.42
KB
-rw-r--r--
AsyncDependencyToInitialChunkE...
871
B
-rw-r--r--
AutomaticPrefetchPlugin.js
1.38
KB
-rw-r--r--
BannerPlugin.js
2.91
KB
-rw-r--r--
BasicEvaluatedExpression.js
4.55
KB
-rw-r--r--
CachePlugin.js
2.84
KB
-rw-r--r--
CaseSensitiveModulesWarning.js
1.87
KB
-rw-r--r--
Chunk.js
22.15
KB
-rw-r--r--
ChunkGroup.js
12.13
KB
-rw-r--r--
ChunkRenderError.js
708
B
-rw-r--r--
ChunkTemplate.js
2.46
KB
-rw-r--r--
CommentCompilationWarning.js
748
B
-rw-r--r--
CompatibilityPlugin.js
1.98
KB
-rw-r--r--
Compilation.js
72.71
KB
-rw-r--r--
Compiler.js
19.52
KB
-rw-r--r--
ConcurrentCompilationError.js
492
B
-rw-r--r--
ConstPlugin.js
9.6
KB
-rw-r--r--
ContextExclusionPlugin.js
721
B
-rw-r--r--
ContextModule.js
24.03
KB
-rw-r--r--
ContextModuleFactory.js
6.45
KB
-rw-r--r--
ContextReplacementPlugin.js
4.03
KB
-rw-r--r--
DefinePlugin.js
7.9
KB
-rw-r--r--
DelegatedModule.js
2.77
KB
-rw-r--r--
DelegatedModuleFactoryPlugin.j...
2.32
KB
-rw-r--r--
DelegatedPlugin.js
1.02
KB
-rw-r--r--
DependenciesBlock.js
3.27
KB
-rw-r--r--
DependenciesBlockVariable.js
2.14
KB
-rw-r--r--
Dependency.js
1.97
KB
-rw-r--r--
DllEntryPlugin.js
1.24
KB
-rw-r--r--
DllModule.js
1.09
KB
-rw-r--r--
DllModuleFactory.js
536
B
-rw-r--r--
DllPlugin.js
1.4
KB
-rw-r--r--
DllReferencePlugin.js
4.88
KB
-rw-r--r--
DynamicEntryPlugin.js
2.76
KB
-rw-r--r--
EntryModuleNotFoundError.js
475
B
-rw-r--r--
EntryOptionPlugin.js
1.46
KB
-rw-r--r--
Entrypoint.js
1.75
KB
-rw-r--r--
EnvironmentPlugin.js
2.01
KB
-rw-r--r--
ErrorHelpers.js
1.41
KB
-rw-r--r--
EvalDevToolModulePlugin.js
792
B
-rw-r--r--
EvalDevToolModuleTemplatePlugi...
1.64
KB
-rw-r--r--
EvalSourceMapDevToolModuleTemp...
3.13
KB
-rw-r--r--
EvalSourceMapDevToolPlugin.js
1.04
KB
-rw-r--r--
ExportPropertyMainTemplatePlug...
1.31
KB
-rw-r--r--
ExtendedAPIPlugin.js
2.43
KB
-rw-r--r--
ExternalModule.js
4.29
KB
-rw-r--r--
ExternalModuleFactoryPlugin.js
2.92
KB
-rw-r--r--
ExternalsPlugin.js
546
B
-rw-r--r--
FlagDependencyExportsPlugin.js
4.33
KB
-rw-r--r--
FlagDependencyUsagePlugin.js
3.33
KB
-rw-r--r--
FlagInitialModulesAsUsedPlugin...
799
B
-rw-r--r--
FunctionModulePlugin.js
463
B
-rw-r--r--
FunctionModuleTemplatePlugin.j...
3.27
KB
-rw-r--r--
Generator.js
1.71
KB
-rw-r--r--
GraphHelpers.js
1.93
KB
-rw-r--r--
HarmonyLinkingError.js
408
B
-rw-r--r--
HashedModuleIdsPlugin.js
1.64
KB
-rw-r--r--
HotModuleReplacement.runtime.j...
16.69
KB
-rw-r--r--
HotModuleReplacementPlugin.js
12.15
KB
-rw-r--r--
HotUpdateChunk.js
324
B
-rw-r--r--
HotUpdateChunkTemplate.js
1.59
KB
-rw-r--r--
IgnorePlugin.js
2.37
KB
-rw-r--r--
JavascriptGenerator.js
5.73
KB
-rw-r--r--
JavascriptModulesPlugin.js
5.25
KB
-rw-r--r--
JsonGenerator.js
1.41
KB
-rw-r--r--
JsonModulesPlugin.js
698
B
-rw-r--r--
JsonParser.js
758
B
-rw-r--r--
LibManifestPlugin.js
2.22
KB
-rw-r--r--
LibraryTemplatePlugin.js
5.62
KB
-rw-r--r--
LoaderOptionsPlugin.js
1.46
KB
-rw-r--r--
LoaderTargetPlugin.js
480
B
-rw-r--r--
MainTemplate.js
16.2
KB
-rw-r--r--
MemoryOutputFileSystem.js
139
B
-rw-r--r--
Module.js
10.13
KB
-rw-r--r--
ModuleBuildError.js
1.2
KB
-rw-r--r--
ModuleDependencyError.js
812
B
-rw-r--r--
ModuleDependencyWarning.js
554
B
-rw-r--r--
ModuleError.js
843
B
-rw-r--r--
ModuleFilenameHelpers.js
5.36
KB
-rw-r--r--
ModuleNotFoundError.js
516
B
-rw-r--r--
ModuleParseError.js
1.54
KB
-rw-r--r--
ModuleReason.js
1.16
KB
-rw-r--r--
ModuleTemplate.js
1.97
KB
-rw-r--r--
ModuleWarning.js
901
B
-rw-r--r--
MultiCompiler.js
7.05
KB
-rw-r--r--
MultiEntryPlugin.js
2.01
KB
-rw-r--r--
MultiModule.js
1.88
KB
-rw-r--r--
MultiModuleFactory.js
489
B
-rw-r--r--
MultiStats.js
2.17
KB
-rw-r--r--
MultiWatching.js
714
B
-rw-r--r--
NamedChunksPlugin.js
659
B
-rw-r--r--
NamedModulesPlugin.js
1.43
KB
-rw-r--r--
NoEmitOnErrorsPlugin.js
559
B
-rw-r--r--
NoModeWarning.js
715
B
-rw-r--r--
NodeStuffPlugin.js
5.62
KB
-rw-r--r--
NormalModule.js
14.09
KB
-rw-r--r--
NormalModuleFactory.js
13.38
KB
-rw-r--r--
NormalModuleReplacementPlugin....
1.25
KB
-rw-r--r--
NullFactory.js
217
B
-rw-r--r--
OptionsApply.js
200
B
-rw-r--r--
OptionsDefaulter.js
1.92
KB
-rw-r--r--
Parser.js
65.25
KB
-rw-r--r--
ParserHelpers.js
2.78
KB
-rw-r--r--
PrefetchPlugin.js
837
B
-rw-r--r--
ProgressPlugin.js
9.69
KB
-rw-r--r--
ProvidePlugin.js
2.34
KB
-rw-r--r--
RawModule.js
1.16
KB
-rw-r--r--
RecordIdsPlugin.js
6.36
KB
-rw-r--r--
RemovedPluginError.js
229
B
-rw-r--r--
RequestShortener.js
2.55
KB
-rw-r--r--
RequireJsStuffPlugin.js
1.76
KB
-rw-r--r--
ResolverFactory.js
2.28
KB
-rw-r--r--
RuleSet.js
11.83
KB
-rw-r--r--
RuntimeTemplate.js
9.25
KB
-rw-r--r--
SetVarMainTemplatePlugin.js
1.69
KB
-rw-r--r--
SingleEntryPlugin.js
1.45
KB
-rw-r--r--
SizeFormatHelpers.js
538
B
-rw-r--r--
SourceMapDevToolModuleOptionsP...
1.17
KB
-rw-r--r--
SourceMapDevToolPlugin.js
9.16
KB
-rw-r--r--
Stats.js
38.31
KB
-rw-r--r--
SystemMainTemplatePlugin.js
3.23
KB
-rw-r--r--
Template.js
7.97
KB
-rw-r--r--
TemplatedPathPlugin.js
5.24
KB
-rw-r--r--
UmdMainTemplatePlugin.js
8.57
KB
-rw-r--r--
UnsupportedFeatureWarning.js
809
B
-rw-r--r--
UseStrictPlugin.js
1.57
KB
-rw-r--r--
WarnCaseSensitiveModulesPlugin...
1016
B
-rw-r--r--
WarnNoModeSetPlugin.js
391
B
-rw-r--r--
WatchIgnorePlugin.js
2.31
KB
-rw-r--r--
Watching.js
4.57
KB
-rw-r--r--
WebpackError.js
660
B
-rw-r--r--
WebpackOptionsApply.js
18.33
KB
-rw-r--r--
WebpackOptionsDefaulter.js
11.4
KB
-rw-r--r--
WebpackOptionsValidationError....
9.65
KB
-rw-r--r--
compareLocations.js
1.29
KB
-rw-r--r--
formatLocation.js
2.01
KB
-rw-r--r--
validateSchema.js
1.55
KB
-rw-r--r--
webpack.js
7.71
KB
-rw-r--r--
webpack.web.js
942
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : Compiler.js
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const parseJson = require("json-parse-better-errors"); const asyncLib = require("neo-async"); const path = require("path"); const { Source } = require("webpack-sources"); const util = require("util"); const { Tapable, SyncHook, SyncBailHook, AsyncParallelHook, AsyncSeriesHook } = require("tapable"); const Compilation = require("./Compilation"); const Stats = require("./Stats"); const Watching = require("./Watching"); const NormalModuleFactory = require("./NormalModuleFactory"); const ContextModuleFactory = require("./ContextModuleFactory"); const ResolverFactory = require("./ResolverFactory"); const RequestShortener = require("./RequestShortener"); const { makePathsRelative } = require("./util/identifier"); const ConcurrentCompilationError = require("./ConcurrentCompilationError"); /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */ /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */ /** * @typedef {Object} CompilationParams * @property {NormalModuleFactory} normalModuleFactory * @property {ContextModuleFactory} contextModuleFactory * @property {Set<string>} compilationDependencies */ class Compiler extends Tapable { constructor(context) { super(); this.hooks = { /** @type {SyncBailHook<Compilation>} */ shouldEmit: new SyncBailHook(["compilation"]), /** @type {AsyncSeriesHook<Stats>} */ done: new AsyncSeriesHook(["stats"]), /** @type {AsyncSeriesHook<>} */ additionalPass: new AsyncSeriesHook([]), /** @type {AsyncSeriesHook<Compiler>} */ beforeRun: new AsyncSeriesHook(["compiler"]), /** @type {AsyncSeriesHook<Compiler>} */ run: new AsyncSeriesHook(["compiler"]), /** @type {AsyncSeriesHook<Compilation>} */ emit: new AsyncSeriesHook(["compilation"]), /** @type {AsyncSeriesHook<Compilation>} */ afterEmit: new AsyncSeriesHook(["compilation"]), /** @type {SyncHook<Compilation, CompilationParams>} */ thisCompilation: new SyncHook(["compilation", "params"]), /** @type {SyncHook<Compilation, CompilationParams>} */ compilation: new SyncHook(["compilation", "params"]), /** @type {SyncHook<NormalModuleFactory>} */ normalModuleFactory: new SyncHook(["normalModuleFactory"]), /** @type {SyncHook<ContextModuleFactory>} */ contextModuleFactory: new SyncHook(["contextModulefactory"]), /** @type {AsyncSeriesHook<CompilationParams>} */ beforeCompile: new AsyncSeriesHook(["params"]), /** @type {SyncHook<CompilationParams>} */ compile: new SyncHook(["params"]), /** @type {AsyncParallelHook<Compilation>} */ make: new AsyncParallelHook(["compilation"]), /** @type {AsyncSeriesHook<Compilation>} */ afterCompile: new AsyncSeriesHook(["compilation"]), /** @type {AsyncSeriesHook<Compiler>} */ watchRun: new AsyncSeriesHook(["compiler"]), /** @type {SyncHook<Error>} */ failed: new SyncHook(["error"]), /** @type {SyncHook<string, string>} */ invalid: new SyncHook(["filename", "changeTime"]), /** @type {SyncHook} */ watchClose: new SyncHook([]), // TODO the following hooks are weirdly located here // TODO move them for webpack 5 /** @type {SyncHook} */ environment: new SyncHook([]), /** @type {SyncHook} */ afterEnvironment: new SyncHook([]), /** @type {SyncHook<Compiler>} */ afterPlugins: new SyncHook(["compiler"]), /** @type {SyncHook<Compiler>} */ afterResolvers: new SyncHook(["compiler"]), /** @type {SyncBailHook<string, Entry>} */ entryOption: new SyncBailHook(["context", "entry"]) }; this._pluginCompat.tap("Compiler", options => { switch (options.name) { case "additional-pass": case "before-run": case "run": case "emit": case "after-emit": case "before-compile": case "make": case "after-compile": case "watch-run": options.async = true; break; } }); /** @type {string=} */ this.name = undefined; /** @type {Compilation=} */ this.parentCompilation = undefined; /** @type {string} */ this.outputPath = ""; this.outputFileSystem = null; this.inputFileSystem = null; /** @type {string|null} */ this.recordsInputPath = null; /** @type {string|null} */ this.recordsOutputPath = null; this.records = {}; this.removedFiles = new Set(); /** @type {Map<string, number>} */ this.fileTimestamps = new Map(); /** @type {Map<string, number>} */ this.contextTimestamps = new Map(); /** @type {ResolverFactory} */ this.resolverFactory = new ResolverFactory(); // TODO remove in webpack 5 this.resolvers = { normal: { plugins: util.deprecate((hook, fn) => { this.resolverFactory.plugin("resolver normal", resolver => { resolver.plugin(hook, fn); }); }, "webpack: Using compiler.resolvers.normal is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver normal", resolver => {\n resolver.plugin(/* … */);\n}); instead.'), apply: util.deprecate((...args) => { this.resolverFactory.plugin("resolver normal", resolver => { resolver.apply(...args); }); }, "webpack: Using compiler.resolvers.normal is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver normal", resolver => {\n resolver.apply(/* … */);\n}); instead.') }, loader: { plugins: util.deprecate((hook, fn) => { this.resolverFactory.plugin("resolver loader", resolver => { resolver.plugin(hook, fn); }); }, "webpack: Using compiler.resolvers.loader is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver loader", resolver => {\n resolver.plugin(/* … */);\n}); instead.'), apply: util.deprecate((...args) => { this.resolverFactory.plugin("resolver loader", resolver => { resolver.apply(...args); }); }, "webpack: Using compiler.resolvers.loader is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver loader", resolver => {\n resolver.apply(/* … */);\n}); instead.') }, context: { plugins: util.deprecate((hook, fn) => { this.resolverFactory.plugin("resolver context", resolver => { resolver.plugin(hook, fn); }); }, "webpack: Using compiler.resolvers.context is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver context", resolver => {\n resolver.plugin(/* … */);\n}); instead.'), apply: util.deprecate((...args) => { this.resolverFactory.plugin("resolver context", resolver => { resolver.apply(...args); }); }, "webpack: Using compiler.resolvers.context is deprecated.\n" + 'Use compiler.resolverFactory.plugin("resolver context", resolver => {\n resolver.apply(/* … */);\n}); instead.') } }; /** @type {WebpackOptions} */ this.options = /** @type {WebpackOptions} */ ({}); this.context = context; this.requestShortener = new RequestShortener(context); /** @type {boolean} */ this.running = false; /** @type {boolean} */ this.watchMode = false; /** @private @type {WeakMap<Source, { sizeOnlySource: SizeOnlySource, writtenTo: Map<string, number> }>} */ this._assetEmittingSourceCache = new WeakMap(); /** @private @type {Map<string, number>} */ this._assetEmittingWrittenFiles = new Map(); } watch(watchOptions, handler) { if (this.running) return handler(new ConcurrentCompilationError()); this.running = true; this.watchMode = true; this.fileTimestamps = new Map(); this.contextTimestamps = new Map(); this.removedFiles = new Set(); return new Watching(this, watchOptions, handler); } run(callback) { if (this.running) return callback(new ConcurrentCompilationError()); const finalCallback = (err, stats) => { this.running = false; if (err) { this.hooks.failed.call(err); } if (callback !== undefined) return callback(err, stats); }; const startTime = Date.now(); this.running = true; const onCompiled = (err, compilation) => { if (err) return finalCallback(err); if (this.hooks.shouldEmit.call(compilation) === false) { const stats = new Stats(compilation); stats.startTime = startTime; stats.endTime = Date.now(); this.hooks.done.callAsync(stats, err => { if (err) return finalCallback(err); return finalCallback(null, stats); }); return; } this.emitAssets(compilation, err => { if (err) return finalCallback(err); if (compilation.hooks.needAdditionalPass.call()) { compilation.needAdditionalPass = true; const stats = new Stats(compilation); stats.startTime = startTime; stats.endTime = Date.now(); this.hooks.done.callAsync(stats, err => { if (err) return finalCallback(err); this.hooks.additionalPass.callAsync(err => { if (err) return finalCallback(err); this.compile(onCompiled); }); }); return; } this.emitRecords(err => { if (err) return finalCallback(err); const stats = new Stats(compilation); stats.startTime = startTime; stats.endTime = Date.now(); this.hooks.done.callAsync(stats, err => { if (err) return finalCallback(err); return finalCallback(null, stats); }); }); }); }; this.hooks.beforeRun.callAsync(this, err => { if (err) return finalCallback(err); this.hooks.run.callAsync(this, err => { if (err) return finalCallback(err); this.readRecords(err => { if (err) return finalCallback(err); this.compile(onCompiled); }); }); }); } runAsChild(callback) { this.compile((err, compilation) => { if (err) return callback(err); this.parentCompilation.children.push(compilation); for (const name of Object.keys(compilation.assets)) { this.parentCompilation.assets[name] = compilation.assets[name]; } const entries = Array.from( compilation.entrypoints.values(), ep => ep.chunks ).reduce((array, chunks) => { return array.concat(chunks); }, []); return callback(null, entries, compilation); }); } purgeInputFileSystem() { if (this.inputFileSystem && this.inputFileSystem.purge) { this.inputFileSystem.purge(); } } emitAssets(compilation, callback) { let outputPath; const emitFiles = err => { if (err) return callback(err); asyncLib.forEachLimit( compilation.assets, 15, (source, file, callback) => { let targetFile = file; const queryStringIdx = targetFile.indexOf("?"); if (queryStringIdx >= 0) { targetFile = targetFile.substr(0, queryStringIdx); } const writeOut = err => { if (err) return callback(err); const targetPath = this.outputFileSystem.join( outputPath, targetFile ); // TODO webpack 5 remove futureEmitAssets option and make it on by default if (this.options.output.futureEmitAssets) { // check if the target file has already been written by this Compiler const targetFileGeneration = this._assetEmittingWrittenFiles.get( targetPath ); // create an cache entry for this Source if not already existing let cacheEntry = this._assetEmittingSourceCache.get(source); if (cacheEntry === undefined) { cacheEntry = { sizeOnlySource: undefined, writtenTo: new Map() }; this._assetEmittingSourceCache.set(source, cacheEntry); } // if the target file has already been written if (targetFileGeneration !== undefined) { // check if the Source has been written to this target file const writtenGeneration = cacheEntry.writtenTo.get(targetPath); if (writtenGeneration === targetFileGeneration) { // if yes, we skip writing the file // as it's already there // (we assume one doesn't remove files while the Compiler is running) return callback(); } } // get the binary (Buffer) content from the Source /** @type {Buffer} */ let content; if (typeof source.buffer === "function") { content = source.buffer(); } else { const bufferOrString = source.source(); if (Buffer.isBuffer(bufferOrString)) { content = bufferOrString; } else { content = Buffer.from(bufferOrString, "utf8"); } } // Create a replacement resource which only allows to ask for size // This allows to GC all memory allocated by the Source // (expect when the Source is stored in any other cache) cacheEntry.sizeOnlySource = new SizeOnlySource(content.length); compilation.assets[file] = cacheEntry.sizeOnlySource; // Write the file to output file system this.outputFileSystem.writeFile(targetPath, content, err => { if (err) return callback(err); // information marker that the asset has been emitted compilation.emittedAssets.add(file); // cache the information that the Source has been written to that location const newGeneration = targetFileGeneration === undefined ? 1 : targetFileGeneration + 1; cacheEntry.writtenTo.set(targetPath, newGeneration); this._assetEmittingWrittenFiles.set(targetPath, newGeneration); callback(); }); } else { if (source.existsAt === targetPath) { source.emitted = false; return callback(); } let content = source.source(); if (!Buffer.isBuffer(content)) { content = Buffer.from(content, "utf8"); } source.existsAt = targetPath; source.emitted = true; this.outputFileSystem.writeFile(targetPath, content, callback); } }; if (targetFile.match(/\/|\\/)) { const dir = path.dirname(targetFile); this.outputFileSystem.mkdirp( this.outputFileSystem.join(outputPath, dir), writeOut ); } else { writeOut(); } }, err => { if (err) return callback(err); this.hooks.afterEmit.callAsync(compilation, err => { if (err) return callback(err); return callback(); }); } ); }; this.hooks.emit.callAsync(compilation, err => { if (err) return callback(err); outputPath = compilation.getPath(this.outputPath); this.outputFileSystem.mkdirp(outputPath, emitFiles); }); } emitRecords(callback) { if (!this.recordsOutputPath) return callback(); const idx1 = this.recordsOutputPath.lastIndexOf("/"); const idx2 = this.recordsOutputPath.lastIndexOf("\\"); let recordsOutputPathDirectory = null; if (idx1 > idx2) { recordsOutputPathDirectory = this.recordsOutputPath.substr(0, idx1); } else if (idx1 < idx2) { recordsOutputPathDirectory = this.recordsOutputPath.substr(0, idx2); } const writeFile = () => { this.outputFileSystem.writeFile( this.recordsOutputPath, JSON.stringify(this.records, undefined, 2), callback ); }; if (!recordsOutputPathDirectory) { return writeFile(); } this.outputFileSystem.mkdirp(recordsOutputPathDirectory, err => { if (err) return callback(err); writeFile(); }); } readRecords(callback) { if (!this.recordsInputPath) { this.records = {}; return callback(); } this.inputFileSystem.stat(this.recordsInputPath, err => { // It doesn't exist // We can ignore this. if (err) return callback(); this.inputFileSystem.readFile(this.recordsInputPath, (err, content) => { if (err) return callback(err); try { this.records = parseJson(content.toString("utf-8")); } catch (e) { e.message = "Cannot parse records: " + e.message; return callback(e); } return callback(); }); }); } createChildCompiler( compilation, compilerName, compilerIndex, outputOptions, plugins ) { const childCompiler = new Compiler(this.context); if (Array.isArray(plugins)) { for (const plugin of plugins) { plugin.apply(childCompiler); } } for (const name in this.hooks) { if ( ![ "make", "compile", "emit", "afterEmit", "invalid", "done", "thisCompilation" ].includes(name) ) { if (childCompiler.hooks[name]) { childCompiler.hooks[name].taps = this.hooks[name].taps.slice(); } } } childCompiler.name = compilerName; childCompiler.outputPath = this.outputPath; childCompiler.inputFileSystem = this.inputFileSystem; childCompiler.outputFileSystem = null; childCompiler.resolverFactory = this.resolverFactory; childCompiler.fileTimestamps = this.fileTimestamps; childCompiler.contextTimestamps = this.contextTimestamps; const relativeCompilerName = makePathsRelative(this.context, compilerName); if (!this.records[relativeCompilerName]) { this.records[relativeCompilerName] = []; } if (this.records[relativeCompilerName][compilerIndex]) { childCompiler.records = this.records[relativeCompilerName][compilerIndex]; } else { this.records[relativeCompilerName].push((childCompiler.records = {})); } childCompiler.options = Object.create(this.options); childCompiler.options.output = Object.create(childCompiler.options.output); for (const name in outputOptions) { childCompiler.options.output[name] = outputOptions[name]; } childCompiler.parentCompilation = compilation; compilation.hooks.childCompiler.call( childCompiler, compilerName, compilerIndex ); return childCompiler; } isChild() { return !!this.parentCompilation; } createCompilation() { return new Compilation(this); } newCompilation(params) { const compilation = this.createCompilation(); compilation.fileTimestamps = this.fileTimestamps; compilation.contextTimestamps = this.contextTimestamps; compilation.name = this.name; compilation.records = this.records; compilation.compilationDependencies = params.compilationDependencies; this.hooks.thisCompilation.call(compilation, params); this.hooks.compilation.call(compilation, params); return compilation; } createNormalModuleFactory() { const normalModuleFactory = new NormalModuleFactory( this.options.context, this.resolverFactory, this.options.module || {} ); this.hooks.normalModuleFactory.call(normalModuleFactory); return normalModuleFactory; } createContextModuleFactory() { const contextModuleFactory = new ContextModuleFactory(this.resolverFactory); this.hooks.contextModuleFactory.call(contextModuleFactory); return contextModuleFactory; } newCompilationParams() { const params = { normalModuleFactory: this.createNormalModuleFactory(), contextModuleFactory: this.createContextModuleFactory(), compilationDependencies: new Set() }; return params; } compile(callback) { const params = this.newCompilationParams(); this.hooks.beforeCompile.callAsync(params, err => { if (err) return callback(err); this.hooks.compile.call(params); const compilation = this.newCompilation(params); this.hooks.make.callAsync(compilation, err => { if (err) return callback(err); compilation.finish(err => { if (err) return callback(err); compilation.seal(err => { if (err) return callback(err); this.hooks.afterCompile.callAsync(compilation, err => { if (err) return callback(err); return callback(null, compilation); }); }); }); }); }); } } module.exports = Compiler; class SizeOnlySource extends Source { constructor(size) { super(); this._size = size; } _error() { return new Error( "Content and Map of this Source is no longer available (only size() is supported)" ); } size() { return this._size; } /** * @param {any} options options * @returns {string} the source */ source(options) { throw this._error(); } node() { throw this._error(); } listMap() { throw this._error(); } map() { throw this._error(); } listNode() { throw this._error(); } updateHash() { throw this._error(); } }
Close