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.52
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
/
home /
amatya /
quiz1 /
node_modules /
webpack /
lib /
[ HOME SHELL ]
Name
Size
Permission
Action
asset
[ DIR ]
dr-xr-xr-x
async-modules
[ DIR ]
dr-xr-xr-x
cache
[ DIR ]
dr-xr-xr-x
config
[ DIR ]
dr-xr-xr-x
container
[ DIR ]
dr-xr-xr-x
css
[ DIR ]
dr-xr-xr-x
debug
[ DIR ]
dr-xr-xr-x
dependencies
[ DIR ]
dr-xr-xr-x
electron
[ DIR ]
dr-xr-xr-x
errors
[ DIR ]
dr-xr-xr-x
esm
[ DIR ]
dr-xr-xr-x
hmr
[ DIR ]
dr-xr-xr-x
ids
[ DIR ]
dr-xr-xr-x
javascript
[ DIR ]
dr-xr-xr-x
json
[ DIR ]
dr-xr-xr-x
library
[ DIR ]
dr-xr-xr-x
logging
[ DIR ]
dr-xr-xr-x
node
[ DIR ]
dr-xr-xr-x
optimize
[ DIR ]
dr-xr-xr-x
performance
[ DIR ]
dr-xr-xr-x
prefetch
[ DIR ]
dr-xr-xr-x
rules
[ DIR ]
dr-xr-xr-x
runtime
[ DIR ]
dr-xr-xr-x
schemes
[ DIR ]
dr-xr-xr-x
serialization
[ DIR ]
dr-xr-xr-x
sharing
[ DIR ]
dr-xr-xr-x
stats
[ DIR ]
dr-xr-xr-x
util
[ DIR ]
dr-xr-xr-x
wasm
[ DIR ]
dr-xr-xr-x
wasm-async
[ DIR ]
dr-xr-xr-x
wasm-sync
[ DIR ]
dr-xr-xr-x
web
[ DIR ]
dr-xr-xr-x
webworker
[ DIR ]
dr-xr-xr-x
APIPlugin.js
9.33
KB
-rw-rw-rw-
AbstractMethodError.js
1.2
KB
-rw-rw-rw-
AsyncDependenciesBlock.js
3.26
KB
-rw-rw-rw-
AsyncDependencyToInitialChunkE...
913
B
-rw-rw-rw-
AutomaticPrefetchPlugin.js
1.52
KB
-rw-rw-rw-
BannerPlugin.js
3.6
KB
-rw-rw-rw-
Cache.js
4.02
KB
-rw-rw-rw-
CacheFacade.js
8.5
KB
-rw-rw-rw-
CaseSensitiveModulesWarning.js
2.07
KB
-rw-rw-rw-
Chunk.js
22.66
KB
-rw-rw-rw-
ChunkGraph.js
53.68
KB
-rw-rw-rw-
ChunkGroup.js
15.36
KB
-rw-rw-rw-
ChunkRenderError.js
657
B
-rw-rw-rw-
ChunkTemplate.js
5.74
KB
-rw-rw-rw-
CleanPlugin.js
11.96
KB
-rw-rw-rw-
CodeGenerationError.js
619
B
-rw-rw-rw-
CodeGenerationResults.js
4.56
KB
-rw-rw-rw-
CommentCompilationWarning.js
725
B
-rw-rw-rw-
CompatibilityPlugin.js
5.74
KB
-rw-rw-rw-
Compilation.js
165.88
KB
-rw-rw-rw-
Compiler.js
39.7
KB
-rw-rw-rw-
ConcatenationScope.js
4.23
KB
-rw-rw-rw-
ConcurrentCompilationError.js
441
B
-rw-rw-rw-
ConditionalInitFragment.js
3.68
KB
-rw-rw-rw-
ConstPlugin.js
16.16
KB
-rw-rw-rw-
ContextExclusionPlugin.js
786
B
-rw-rw-rw-
ContextModule.js
37.37
KB
-rw-rw-rw-
ContextModuleFactory.js
13.99
KB
-rw-rw-rw-
ContextReplacementPlugin.js
5.26
KB
-rw-rw-rw-
CssModule.js
4.67
KB
-rw-rw-rw-
DefinePlugin.js
19.65
KB
-rw-rw-rw-
DelegatedModule.js
8.05
KB
-rw-rw-rw-
DelegatedModuleFactoryPlugin.j...
3.44
KB
-rw-rw-rw-
DelegatedPlugin.js
1.11
KB
-rw-rw-rw-
DependenciesBlock.js
3.47
KB
-rw-rw-rw-
Dependency.js
10.23
KB
-rw-rw-rw-
DependencyTemplate.js
2.77
KB
-rw-rw-rw-
DependencyTemplates.js
1.71
KB
-rw-rw-rw-
DllEntryPlugin.js
1.67
KB
-rw-rw-rw-
DllModule.js
5.16
KB
-rw-rw-rw-
DllModuleFactory.js
1018
B
-rw-rw-rw-
DllPlugin.js
1.83
KB
-rw-rw-rw-
DllReferencePlugin.js
6.06
KB
-rw-rw-rw-
DynamicEntryPlugin.js
2.3
KB
-rw-rw-rw-
EntryOptionPlugin.js
2.88
KB
-rw-rw-rw-
EntryPlugin.js
1.73
KB
-rw-rw-rw-
Entrypoint.js
2.99
KB
-rw-rw-rw-
EnvironmentNotSupportAsyncWarn...
1.85
KB
-rw-rw-rw-
EnvironmentPlugin.js
1.87
KB
-rw-rw-rw-
ErrorHelpers.js
2.85
KB
-rw-rw-rw-
EvalDevToolModulePlugin.js
4.17
KB
-rw-rw-rw-
EvalSourceMapDevToolPlugin.js
7.22
KB
-rw-rw-rw-
ExportsInfo.js
45.01
KB
-rw-rw-rw-
ExportsInfoApiPlugin.js
2.52
KB
-rw-rw-rw-
ExternalModule.js
29.18
KB
-rw-rw-rw-
ExternalModuleFactoryPlugin.js
9.68
KB
-rw-rw-rw-
ExternalsPlugin.js
899
B
-rw-rw-rw-
FileSystemInfo.js
116.52
KB
-rw-rw-rw-
FlagAllModulesAsUsedPlugin.js
1.5
KB
-rw-rw-rw-
FlagDependencyExportsPlugin.js
12.94
KB
-rw-rw-rw-
FlagDependencyUsagePlugin.js
10.81
KB
-rw-rw-rw-
FlagEntryExportAsUsedPlugin.js
1.46
KB
-rw-rw-rw-
Generator.js
5.06
KB
-rw-rw-rw-
GraphHelpers.js
1.06
KB
-rw-rw-rw-
HarmonyLinkingError.js
357
B
-rw-rw-rw-
HookWebpackError.js
2.03
KB
-rw-rw-rw-
HotModuleReplacementPlugin.js
29.02
KB
-rw-rw-rw-
HotUpdateChunk.js
353
B
-rw-rw-rw-
IgnoreErrorModuleFactory.js
1.02
KB
-rw-rw-rw-
IgnorePlugin.js
2.66
KB
-rw-rw-rw-
IgnoreWarningsPlugin.js
919
B
-rw-rw-rw-
InitFragment.js
5.35
KB
-rw-rw-rw-
InvalidDependenciesModuleWarni...
1.83
KB
-rw-rw-rw-
JavascriptMetaInfoPlugin.js
2.3
KB
-rw-rw-rw-
LibManifestPlugin.js
4.42
KB
-rw-rw-rw-
LibraryTemplatePlugin.js
1.55
KB
-rw-rw-rw-
LoaderOptionsPlugin.js
2.25
KB
-rw-rw-rw-
LoaderTargetPlugin.js
747
B
-rw-rw-rw-
MainTemplate.js
12.59
KB
-rw-rw-rw-
Module.js
33.3
KB
-rw-rw-rw-
ModuleBuildError.js
1.84
KB
-rw-rw-rw-
ModuleDependencyError.js
1.15
KB
-rw-rw-rw-
ModuleDependencyWarning.js
1.26
KB
-rw-rw-rw-
ModuleError.js
1.48
KB
-rw-rw-rw-
ModuleFactory.js
1.4
KB
-rw-rw-rw-
ModuleFilenameHelpers.js
13.51
KB
-rw-rw-rw-
ModuleGraph.js
25
KB
-rw-rw-rw-
ModuleGraphConnection.js
5.53
KB
-rw-rw-rw-
ModuleHashingError.js
615
B
-rw-rw-rw-
ModuleInfoHeaderPlugin.js
8.87
KB
-rw-rw-rw-
ModuleNotFoundError.js
2.63
KB
-rw-rw-rw-
ModuleParseError.js
3.58
KB
-rw-rw-rw-
ModuleProfile.js
2.44
KB
-rw-rw-rw-
ModuleRestoreError.js
1.01
KB
-rw-rw-rw-
ModuleSourceTypesConstants.js
2.4
KB
-rw-rw-rw-
ModuleStoreError.js
1
KB
-rw-rw-rw-
ModuleTemplate.js
5.17
KB
-rw-rw-rw-
ModuleTypeConstants.js
6.47
KB
-rw-rw-rw-
ModuleWarning.js
1.56
KB
-rw-rw-rw-
MultiCompiler.js
18.04
KB
-rw-rw-rw-
MultiStats.js
5.74
KB
-rw-rw-rw-
MultiWatching.js
1.55
KB
-rw-rw-rw-
NoEmitOnErrorsPlugin.js
713
B
-rw-rw-rw-
NoModeWarning.js
663
B
-rw-rw-rw-
NodeStuffInWebError.js
843
B
-rw-rw-rw-
NodeStuffPlugin.js
8.17
KB
-rw-rw-rw-
NormalModule.js
49.02
KB
-rw-rw-rw-
NormalModuleFactory.js
38.85
KB
-rw-rw-rw-
NormalModuleReplacementPlugin....
2.05
KB
-rw-rw-rw-
NullFactory.js
637
B
-rw-rw-rw-
OptimizationStages.js
225
B
-rw-rw-rw-
OptionsApply.js
523
B
-rw-rw-rw-
Parser.js
968
B
-rw-rw-rw-
PlatformPlugin.js
894
B
-rw-rw-rw-
PrefetchPlugin.js
1.14
KB
-rw-rw-rw-
ProgressPlugin.js
19.76
KB
-rw-rw-rw-
ProvidePlugin.js
3.63
KB
-rw-rw-rw-
RawModule.js
5.18
KB
-rw-rw-rw-
RecordIdsPlugin.js
6.69
KB
-rw-rw-rw-
RequestShortener.js
755
B
-rw-rw-rw-
RequireJsStuffPlugin.js
2.24
KB
-rw-rw-rw-
ResolverFactory.js
5.05
KB
-rw-rw-rw-
RuntimeGlobals.js
9.59
KB
-rw-rw-rw-
RuntimeModule.js
5.97
KB
-rw-rw-rw-
RuntimePlugin.js
16.98
KB
-rw-rw-rw-
RuntimeTemplate.js
32.79
KB
-rw-rw-rw-
SelfModuleFactory.js
844
B
-rw-rw-rw-
SingleEntryPlugin.js
161
B
-rw-rw-rw-
SizeFormatHelpers.js
584
B
-rw-rw-rw-
SourceMapDevToolModuleOptionsP...
1.49
KB
-rw-rw-rw-
SourceMapDevToolPlugin.js
18.47
KB
-rw-rw-rw-
Stats.js
2.23
KB
-rw-rw-rw-
Template.js
12.76
KB
-rw-rw-rw-
TemplatedPathPlugin.js
10.15
KB
-rw-rw-rw-
UnhandledSchemeError.js
833
B
-rw-rw-rw-
UnsupportedFeatureWarning.js
780
B
-rw-rw-rw-
UseStrictPlugin.js
2.61
KB
-rw-rw-rw-
WarnCaseSensitiveModulesPlugin...
1.72
KB
-rw-rw-rw-
WarnDeprecatedOptionPlugin.js
1.46
KB
-rw-rw-rw-
WarnNoModeSetPlugin.js
545
B
-rw-rw-rw-
WatchIgnorePlugin.js
3.93
KB
-rw-rw-rw-
Watching.js
14.34
KB
-rw-rw-rw-
WebpackError.js
1.72
KB
-rw-rw-rw-
WebpackIsIncludedPlugin.js
2.71
KB
-rw-rw-rw-
WebpackOptionsApply.js
28.97
KB
-rw-rw-rw-
WebpackOptionsDefaulter.js
818
B
-rw-rw-rw-
buildChunkGraph.js
41.36
KB
-rw-rw-rw-
cli.js
17.44
KB
-rw-rw-rw-
formatLocation.js
1.73
KB
-rw-rw-rw-
index.js
18.22
KB
-rw-rw-rw-
validateSchema.js
6.34
KB
-rw-rw-rw-
webpack.js
5.99
KB
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : SourceMapDevToolPlugin.js
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const asyncLib = require("neo-async"); const { ConcatSource, RawSource } = require("webpack-sources"); const Compilation = require("./Compilation"); const ModuleFilenameHelpers = require("./ModuleFilenameHelpers"); const ProgressPlugin = require("./ProgressPlugin"); const SourceMapDevToolModuleOptionsPlugin = require("./SourceMapDevToolModuleOptionsPlugin"); const createSchemaValidation = require("./util/create-schema-validation"); const createHash = require("./util/createHash"); const { relative, dirname } = require("./util/fs"); const { makePathsAbsolute } = require("./util/identifier"); /** @typedef {import("webpack-sources").MapOptions} MapOptions */ /** @typedef {import("webpack-sources").Source} Source */ /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */ /** @typedef {import("./Cache").Etag} Etag */ /** @typedef {import("./CacheFacade").ItemCacheFacade} ItemCacheFacade */ /** @typedef {import("./Chunk")} Chunk */ /** @typedef {import("./Compilation").Asset} Asset */ /** @typedef {import("./Compilation").AssetInfo} AssetInfo */ /** @typedef {import("./Compiler")} Compiler */ /** @typedef {import("./Module")} Module */ /** @typedef {import("./NormalModule").SourceMap} SourceMap */ /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {import("./util/createHash").Algorithm} Algorithm */ /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */ const validate = createSchemaValidation( require("../schemas/plugins/SourceMapDevToolPlugin.check.js"), () => require("../schemas/plugins/SourceMapDevToolPlugin.json"), { name: "SourceMap DevTool Plugin", baseDataPath: "options" } ); /** * @typedef {object} SourceMapTask * @property {Source} asset * @property {AssetInfo} assetInfo * @property {(string | Module)[]} modules * @property {string} source * @property {string} file * @property {SourceMap} sourceMap * @property {ItemCacheFacade} cacheItem cache item */ const METACHARACTERS_REGEXP = /[-[\]\\/{}()*+?.^$|]/g; const CONTENT_HASH_DETECT_REGEXP = /\[contenthash(:\w+)?\]/; const CSS_AND_JS_MODULE_EXTENSIONS_REGEXP = /\.((c|m)?js|css)($|\?)/i; const CSS_EXTENSION_DETECT_REGEXP = /\.css($|\?)/i; const MAP_URL_COMMENT_REGEXP = /\[map\]/g; const URL_COMMENT_REGEXP = /\[url\]/g; const URL_FORMATTING_REGEXP = /^\n\/\/(.*)$/; /** * Reset's .lastIndex of stateful Regular Expressions * For when `test` or `exec` is called on them * @param {RegExp} regexp Stateful Regular Expression to be reset * @returns {void} */ const resetRegexpState = regexp => { regexp.lastIndex = -1; }; /** * Escapes regular expression metacharacters * @param {string} str String to quote * @returns {string} Escaped string */ const quoteMeta = str => str.replace(METACHARACTERS_REGEXP, "\\$&"); /** * Creating {@link SourceMapTask} for given file * @param {string} file current compiled file * @param {Source} asset the asset * @param {AssetInfo} assetInfo the asset info * @param {MapOptions} options source map options * @param {Compilation} compilation compilation instance * @param {ItemCacheFacade} cacheItem cache item * @returns {SourceMapTask | undefined} created task instance or `undefined` */ const getTaskForFile = ( file, asset, assetInfo, options, compilation, cacheItem ) => { let source; /** @type {SourceMap} */ let sourceMap; /** * Check if asset can build source map */ if (asset.sourceAndMap) { const sourceAndMap = asset.sourceAndMap(options); sourceMap = /** @type {SourceMap} */ (sourceAndMap.map); source = sourceAndMap.source; } else { sourceMap = /** @type {SourceMap} */ (asset.map(options)); source = asset.source(); } if (!sourceMap || typeof source !== "string") return; const context = /** @type {string} */ (compilation.options.context); const root = compilation.compiler.root; const cachedAbsolutify = makePathsAbsolute.bindContextCache(context, root); const modules = sourceMap.sources.map(source => { if (!source.startsWith("webpack://")) return source; source = cachedAbsolutify(source.slice(10)); const module = compilation.findModule(source); return module || source; }); return { file, asset, source, assetInfo, sourceMap, modules, cacheItem }; }; class SourceMapDevToolPlugin { /** * @param {SourceMapDevToolPluginOptions} [options] options object * @throws {Error} throws error, if got more than 1 arguments */ constructor(options = {}) { validate(options); this.sourceMapFilename = /** @type {string | false} */ (options.filename); /** @type {false | TemplatePath}} */ this.sourceMappingURLComment = options.append === false ? false : // eslint-disable-next-line no-useless-concat options.append || "\n//# source" + "MappingURL=[url]"; /** @type {string | Function} */ this.moduleFilenameTemplate = options.moduleFilenameTemplate || "webpack://[namespace]/[resourcePath]"; /** @type {string | Function} */ this.fallbackModuleFilenameTemplate = options.fallbackModuleFilenameTemplate || "webpack://[namespace]/[resourcePath]?[hash]"; /** @type {string} */ this.namespace = options.namespace || ""; /** @type {SourceMapDevToolPluginOptions} */ this.options = options; } /** * Apply the plugin * @param {Compiler} compiler compiler instance * @returns {void} */ apply(compiler) { const outputFs = /** @type {OutputFileSystem} */ ( compiler.outputFileSystem ); const sourceMapFilename = this.sourceMapFilename; const sourceMappingURLComment = this.sourceMappingURLComment; const moduleFilenameTemplate = this.moduleFilenameTemplate; const namespace = this.namespace; const fallbackModuleFilenameTemplate = this.fallbackModuleFilenameTemplate; const requestShortener = compiler.requestShortener; const options = this.options; options.test = options.test || CSS_AND_JS_MODULE_EXTENSIONS_REGEXP; const matchObject = ModuleFilenameHelpers.matchObject.bind( undefined, options ); compiler.hooks.compilation.tap("SourceMapDevToolPlugin", compilation => { new SourceMapDevToolModuleOptionsPlugin(options).apply(compilation); compilation.hooks.processAssets.tapAsync( { name: "SourceMapDevToolPlugin", stage: Compilation.PROCESS_ASSETS_STAGE_DEV_TOOLING, additionalAssets: true }, (assets, callback) => { const chunkGraph = compilation.chunkGraph; const cache = compilation.getCache("SourceMapDevToolPlugin"); /** @type {Map<string | Module, string>} */ const moduleToSourceNameMapping = new Map(); /** * @type {Function} * @returns {void} */ const reportProgress = ProgressPlugin.getReporter(compilation.compiler) || (() => {}); /** @type {Map<string, Chunk>} */ const fileToChunk = new Map(); for (const chunk of compilation.chunks) { for (const file of chunk.files) { fileToChunk.set(file, chunk); } for (const file of chunk.auxiliaryFiles) { fileToChunk.set(file, chunk); } } /** @type {string[]} */ const files = []; for (const file of Object.keys(assets)) { if (matchObject(file)) { files.push(file); } } reportProgress(0); /** @type {SourceMapTask[]} */ const tasks = []; let fileIndex = 0; asyncLib.each( files, (file, callback) => { const asset = /** @type {Readonly<Asset>} */ (compilation.getAsset(file)); if (asset.info.related && asset.info.related.sourceMap) { fileIndex++; return callback(); } const chunk = fileToChunk.get(file); const sourceMapNamespace = compilation.getPath(this.namespace, { chunk }); const cacheItem = cache.getItemCache( file, cache.mergeEtags( cache.getLazyHashedEtag(asset.source), sourceMapNamespace ) ); cacheItem.get((err, cacheEntry) => { if (err) { return callback(err); } /** * If presented in cache, reassigns assets. Cache assets already have source maps. */ if (cacheEntry) { const { assets, assetsInfo } = cacheEntry; for (const cachedFile of Object.keys(assets)) { if (cachedFile === file) { compilation.updateAsset( cachedFile, assets[cachedFile], assetsInfo[cachedFile] ); } else { compilation.emitAsset( cachedFile, assets[cachedFile], assetsInfo[cachedFile] ); } /** * Add file to chunk, if not presented there */ if (cachedFile !== file && chunk !== undefined) chunk.auxiliaryFiles.add(cachedFile); } reportProgress( (0.5 * ++fileIndex) / files.length, file, "restored cached SourceMap" ); return callback(); } reportProgress( (0.5 * fileIndex) / files.length, file, "generate SourceMap" ); /** @type {SourceMapTask | undefined} */ const task = getTaskForFile( file, asset.source, asset.info, { module: options.module, columns: options.columns }, compilation, cacheItem ); if (task) { const modules = task.modules; for (let idx = 0; idx < modules.length; idx++) { const module = modules[idx]; if ( typeof module === "string" && /^(data|https?):/.test(module) ) { moduleToSourceNameMapping.set(module, module); continue; } if (!moduleToSourceNameMapping.get(module)) { moduleToSourceNameMapping.set( module, ModuleFilenameHelpers.createFilename( module, { moduleFilenameTemplate, namespace: sourceMapNamespace }, { requestShortener, chunkGraph, hashFunction: compilation.outputOptions.hashFunction } ) ); } } tasks.push(task); } reportProgress( (0.5 * ++fileIndex) / files.length, file, "generated SourceMap" ); callback(); }); }, err => { if (err) { return callback(err); } reportProgress(0.5, "resolve sources"); /** @type {Set<string>} */ const usedNamesSet = new Set(moduleToSourceNameMapping.values()); /** @type {Set<string>} */ const conflictDetectionSet = new Set(); /** * all modules in defined order (longest identifier first) * @type {Array<string | Module>} */ const allModules = Array.from( moduleToSourceNameMapping.keys() ).sort((a, b) => { const ai = typeof a === "string" ? a : a.identifier(); const bi = typeof b === "string" ? b : b.identifier(); return ai.length - bi.length; }); // find modules with conflicting source names for (let idx = 0; idx < allModules.length; idx++) { const module = allModules[idx]; let sourceName = /** @type {string} */ (moduleToSourceNameMapping.get(module)); let hasName = conflictDetectionSet.has(sourceName); if (!hasName) { conflictDetectionSet.add(sourceName); continue; } // try the fallback name first sourceName = ModuleFilenameHelpers.createFilename( module, { moduleFilenameTemplate: fallbackModuleFilenameTemplate, namespace }, { requestShortener, chunkGraph, hashFunction: compilation.outputOptions.hashFunction } ); hasName = usedNamesSet.has(sourceName); if (!hasName) { moduleToSourceNameMapping.set(module, sourceName); usedNamesSet.add(sourceName); continue; } // otherwise just append stars until we have a valid name while (hasName) { sourceName += "*"; hasName = usedNamesSet.has(sourceName); } moduleToSourceNameMapping.set(module, sourceName); usedNamesSet.add(sourceName); } let taskIndex = 0; asyncLib.each( tasks, (task, callback) => { const assets = Object.create(null); const assetsInfo = Object.create(null); const file = task.file; const chunk = fileToChunk.get(file); const sourceMap = task.sourceMap; const source = task.source; const modules = task.modules; reportProgress( 0.5 + (0.5 * taskIndex) / tasks.length, file, "attach SourceMap" ); const moduleFilenames = modules.map(m => moduleToSourceNameMapping.get(m) ); sourceMap.sources = /** @type {string[]} */ (moduleFilenames); if (options.noSources) { sourceMap.sourcesContent = undefined; } sourceMap.sourceRoot = options.sourceRoot || ""; sourceMap.file = file; const usesContentHash = sourceMapFilename && CONTENT_HASH_DETECT_REGEXP.test(sourceMapFilename); resetRegexpState(CONTENT_HASH_DETECT_REGEXP); // If SourceMap and asset uses contenthash, avoid a circular dependency by hiding hash in `file` if (usesContentHash && task.assetInfo.contenthash) { const contenthash = task.assetInfo.contenthash; const pattern = Array.isArray(contenthash) ? contenthash.map(quoteMeta).join("|") : quoteMeta(contenthash); sourceMap.file = sourceMap.file.replace( new RegExp(pattern, "g"), m => "x".repeat(m.length) ); } /** @type {false | TemplatePath} */ let currentSourceMappingURLComment = sourceMappingURLComment; const cssExtensionDetected = CSS_EXTENSION_DETECT_REGEXP.test(file); resetRegexpState(CSS_EXTENSION_DETECT_REGEXP); if ( currentSourceMappingURLComment !== false && typeof currentSourceMappingURLComment !== "function" && cssExtensionDetected ) { currentSourceMappingURLComment = currentSourceMappingURLComment.replace( URL_FORMATTING_REGEXP, "\n/*$1*/" ); } const sourceMapString = JSON.stringify(sourceMap); if (sourceMapFilename) { const filename = file; const sourceMapContentHash = /** @type {string} */ ( usesContentHash && createHash( /** @type {Algorithm} */ (compilation.outputOptions.hashFunction) ) .update(sourceMapString) .digest("hex") ); const pathParams = { chunk, filename: options.fileContext ? relative( outputFs, `/${options.fileContext}`, `/${filename}` ) : filename, contentHash: sourceMapContentHash }; const { path: sourceMapFile, info: sourceMapInfo } = compilation.getPathWithInfo( sourceMapFilename, pathParams ); const sourceMapUrl = options.publicPath ? options.publicPath + sourceMapFile : relative( outputFs, dirname(outputFs, `/${file}`), `/${sourceMapFile}` ); /** @type {Source} */ let asset = new RawSource(source); if (currentSourceMappingURLComment !== false) { // Add source map url to compilation asset, if currentSourceMappingURLComment is set asset = new ConcatSource( asset, compilation.getPath(currentSourceMappingURLComment, { url: sourceMapUrl, ...pathParams }) ); } const assetInfo = { related: { sourceMap: sourceMapFile } }; assets[file] = asset; assetsInfo[file] = assetInfo; compilation.updateAsset(file, asset, assetInfo); // Add source map file to compilation assets and chunk files const sourceMapAsset = new RawSource(sourceMapString); const sourceMapAssetInfo = { ...sourceMapInfo, development: true }; assets[sourceMapFile] = sourceMapAsset; assetsInfo[sourceMapFile] = sourceMapAssetInfo; compilation.emitAsset( sourceMapFile, sourceMapAsset, sourceMapAssetInfo ); if (chunk !== undefined) chunk.auxiliaryFiles.add(sourceMapFile); } else { if (currentSourceMappingURLComment === false) { throw new Error( "SourceMapDevToolPlugin: append can't be false when no filename is provided" ); } if (typeof currentSourceMappingURLComment === "function") { throw new Error( "SourceMapDevToolPlugin: append can't be a function when no filename is provided" ); } /** * Add source map as data url to asset */ const asset = new ConcatSource( new RawSource(source), currentSourceMappingURLComment .replace(MAP_URL_COMMENT_REGEXP, () => sourceMapString) .replace( URL_COMMENT_REGEXP, () => `data:application/json;charset=utf-8;base64,${Buffer.from( sourceMapString, "utf-8" ).toString("base64")}` ) ); assets[file] = asset; assetsInfo[file] = undefined; compilation.updateAsset(file, asset); } task.cacheItem.store({ assets, assetsInfo }, err => { reportProgress( 0.5 + (0.5 * ++taskIndex) / tasks.length, task.file, "attached SourceMap" ); if (err) { return callback(err); } callback(); }); }, err => { reportProgress(1); callback(err); } ); } ); } ); }); } } module.exports = SourceMapDevToolPlugin;
Close