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 : CleanPlugin.js
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Sergey Melyukov @smelukov */ "use strict"; const asyncLib = require("neo-async"); const { SyncBailHook } = require("tapable"); const Compilation = require("./Compilation"); const createSchemaValidation = require("./util/create-schema-validation"); const { join } = require("./util/fs"); const processAsyncTree = require("./util/processAsyncTree"); /** @typedef {import("../declarations/WebpackOptions").CleanOptions} CleanOptions */ /** @typedef {import("./Compiler")} Compiler */ /** @typedef {import("./logging/Logger").Logger} Logger */ /** @typedef {import("./util/fs").IStats} IStats */ /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */ /** @typedef {import("./util/fs").StatsCallback} StatsCallback */ /** @typedef {(function(string):boolean)|RegExp} IgnoreItem */ /** @typedef {Map<string, number>} Assets */ /** @typedef {function(IgnoreItem): void} AddToIgnoreCallback */ /** * @typedef {object} CleanPluginCompilationHooks * @property {SyncBailHook<[string], boolean | void>} keep when returning true the file/directory will be kept during cleaning, returning false will clean it and ignore the following plugins and config */ /** * @callback KeepFn * @param {string} path path * @returns {boolean | void} true, if the path should be kept */ const validate = createSchemaValidation( undefined, () => { const { definitions } = require("../schemas/WebpackOptions.json"); return { definitions, oneOf: [{ $ref: "#/definitions/CleanOptions" }] }; }, { name: "Clean Plugin", baseDataPath: "options" } ); const _10sec = 10 * 1000; /** * marge assets map 2 into map 1 * @param {Assets} as1 assets * @param {Assets} as2 assets * @returns {void} */ const mergeAssets = (as1, as2) => { for (const [key, value1] of as2) { const value2 = as1.get(key); if (!value2 || value1 > value2) as1.set(key, value1); } }; /** * @param {OutputFileSystem} fs filesystem * @param {string} outputPath output path * @param {Map<string, number>} currentAssets filename of the current assets (must not start with .. or ., must only use / as path separator) * @param {function((Error | null)=, Set<string>=): void} callback returns the filenames of the assets that shouldn't be there * @returns {void} */ const getDiffToFs = (fs, outputPath, currentAssets, callback) => { const directories = new Set(); // get directories of assets for (const [asset] of currentAssets) { directories.add(asset.replace(/(^|\/)[^/]*$/, "")); } // and all parent directories for (const directory of directories) { directories.add(directory.replace(/(^|\/)[^/]*$/, "")); } const diff = new Set(); asyncLib.forEachLimit( directories, 10, (directory, callback) => { /** @type {NonNullable<OutputFileSystem["readdir"]>} */ (fs.readdir)(join(fs, outputPath, directory), (err, entries) => { if (err) { if (err.code === "ENOENT") return callback(); if (err.code === "ENOTDIR") { diff.add(directory); return callback(); } return callback(err); } for (const entry of /** @type {string[]} */ (entries)) { const file = entry; const filename = directory ? `${directory}/${file}` : file; if (!directories.has(filename) && !currentAssets.has(filename)) { diff.add(filename); } } callback(); }); }, err => { if (err) return callback(err); callback(null, diff); } ); }; /** * @param {Assets} currentAssets assets list * @param {Assets} oldAssets old assets list * @returns {Set<string>} diff */ const getDiffToOldAssets = (currentAssets, oldAssets) => { const diff = new Set(); const now = Date.now(); for (const [asset, ts] of oldAssets) { if (ts >= now) continue; if (!currentAssets.has(asset)) diff.add(asset); } return diff; }; /** * @param {OutputFileSystem} fs filesystem * @param {string} filename path to file * @param {StatsCallback} callback callback for provided filename * @returns {void} */ const doStat = (fs, filename, callback) => { if ("lstat" in fs) { /** @type {NonNullable<OutputFileSystem["lstat"]>} */ (fs.lstat)(filename, callback); } else { fs.stat(filename, callback); } }; /** * @param {OutputFileSystem} fs filesystem * @param {string} outputPath output path * @param {boolean} dry only log instead of fs modification * @param {Logger} logger logger * @param {Set<string>} diff filenames of the assets that shouldn't be there * @param {function(string): boolean | void} isKept check if the entry is ignored * @param {function(Error=, Assets=): void} callback callback * @returns {void} */ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => { /** * @param {string} msg message */ const log = msg => { if (dry) { logger.info(msg); } else { logger.log(msg); } }; /** @typedef {{ type: "check" | "unlink" | "rmdir", filename: string, parent: { remaining: number, job: Job } | undefined }} Job */ /** @type {Job[]} */ const jobs = Array.from(diff.keys(), filename => ({ type: "check", filename, parent: undefined })); /** @type {Assets} */ const keptAssets = new Map(); processAsyncTree( jobs, 10, ({ type, filename, parent }, push, callback) => { /** * @param {Error & { code?: string }} err error * @returns {void} */ const handleError = err => { if (err.code === "ENOENT") { log(`${filename} was removed during cleaning by something else`); handleParent(); return callback(); } return callback(err); }; const handleParent = () => { if (parent && --parent.remaining === 0) push(parent.job); }; const path = join(fs, outputPath, filename); switch (type) { case "check": if (isKept(filename)) { keptAssets.set(filename, 0); // do not decrement parent entry as we don't want to delete the parent log(`${filename} will be kept`); return process.nextTick(callback); } doStat(fs, path, (err, stats) => { if (err) return handleError(err); if (!(/** @type {IStats} */ (stats).isDirectory())) { push({ type: "unlink", filename, parent }); return callback(); } /** @type {NonNullable<OutputFileSystem["readdir"]>} */ (fs.readdir)(path, (err, _entries) => { if (err) return handleError(err); /** @type {Job} */ const deleteJob = { type: "rmdir", filename, parent }; const entries = /** @type {string[]} */ (_entries); if (entries.length === 0) { push(deleteJob); } else { const parentToken = { remaining: entries.length, job: deleteJob }; for (const entry of entries) { const file = /** @type {string} */ (entry); if (file.startsWith(".")) { log( `${filename} will be kept (dot-files will never be removed)` ); continue; } push({ type: "check", filename: `${filename}/${file}`, parent: parentToken }); } } return callback(); }); }); break; case "rmdir": log(`${filename} will be removed`); if (dry) { handleParent(); return process.nextTick(callback); } if (!fs.rmdir) { logger.warn( `${filename} can't be removed because output file system doesn't support removing directories (rmdir)` ); return process.nextTick(callback); } fs.rmdir(path, err => { if (err) return handleError(err); handleParent(); callback(); }); break; case "unlink": log(`${filename} will be removed`); if (dry) { handleParent(); return process.nextTick(callback); } if (!fs.unlink) { logger.warn( `${filename} can't be removed because output file system doesn't support removing files (rmdir)` ); return process.nextTick(callback); } fs.unlink(path, err => { if (err) return handleError(err); handleParent(); callback(); }); break; } }, err => { if (err) return callback(err); callback(undefined, keptAssets); } ); }; /** @type {WeakMap<Compilation, CleanPluginCompilationHooks>} */ const compilationHooksMap = new WeakMap(); class CleanPlugin { /** * @param {Compilation} compilation the compilation * @returns {CleanPluginCompilationHooks} the attached hooks */ static getCompilationHooks(compilation) { if (!(compilation instanceof Compilation)) { throw new TypeError( "The 'compilation' argument must be an instance of Compilation" ); } let hooks = compilationHooksMap.get(compilation); if (hooks === undefined) { hooks = { keep: new SyncBailHook(["ignore"]) }; compilationHooksMap.set(compilation, hooks); } return hooks; } /** @param {CleanOptions} options options */ constructor(options = {}) { validate(options); this.options = { dry: false, ...options }; } /** * Apply the plugin * @param {Compiler} compiler the compiler instance * @returns {void} */ apply(compiler) { const { dry, keep } = this.options; /** @type {KeepFn} */ const keepFn = typeof keep === "function" ? keep : typeof keep === "string" ? path => path.startsWith(keep) : typeof keep === "object" && keep.test ? path => keep.test(path) : () => false; // We assume that no external modification happens while the compiler is active // So we can store the old assets and only diff to them to avoid fs access on // incremental builds /** @type {undefined|Assets} */ let oldAssets; compiler.hooks.emit.tapAsync( { name: "CleanPlugin", stage: 100 }, (compilation, callback) => { const hooks = CleanPlugin.getCompilationHooks(compilation); const logger = compilation.getLogger("webpack.CleanPlugin"); const fs = /** @type {OutputFileSystem} */ (compiler.outputFileSystem); if (!fs.readdir) { return callback( new Error( "CleanPlugin: Output filesystem doesn't support listing directories (readdir)" ) ); } /** @type {Assets} */ const currentAssets = new Map(); const now = Date.now(); for (const asset of Object.keys(compilation.assets)) { if (/^[A-Za-z]:\\|^\/|^\\\\/.test(asset)) continue; let normalizedAsset; let newNormalizedAsset = asset.replace(/\\/g, "/"); do { normalizedAsset = newNormalizedAsset; newNormalizedAsset = normalizedAsset.replace( /(^|\/)(?!\.\.)[^/]+\/\.\.\//g, "$1" ); } while (newNormalizedAsset !== normalizedAsset); if (normalizedAsset.startsWith("../")) continue; const assetInfo = compilation.assetsInfo.get(asset); if (assetInfo && assetInfo.hotModuleReplacement) { currentAssets.set(normalizedAsset, now + _10sec); } else { currentAssets.set(normalizedAsset, 0); } } const outputPath = compilation.getPath(compiler.outputPath, {}); /** * @param {string} path path * @returns {boolean | void} true, if needs to be kept */ const isKept = path => { const result = hooks.keep.call(path); if (result !== undefined) return result; return keepFn(path); }; /** * @param {(Error | null)=} err err * @param {Set<string>=} diff diff */ const diffCallback = (err, diff) => { if (err) { oldAssets = undefined; callback(err); return; } applyDiff( fs, outputPath, dry, logger, /** @type {Set<string>} */ (diff), isKept, (err, keptAssets) => { if (err) { oldAssets = undefined; } else { if (oldAssets) mergeAssets(currentAssets, oldAssets); oldAssets = currentAssets; if (keptAssets) mergeAssets(oldAssets, keptAssets); } callback(err); } ); }; if (oldAssets) { diffCallback(null, getDiffToOldAssets(currentAssets, oldAssets)); } else { getDiffToFs(fs, outputPath, currentAssets, diffCallback); } } ); } } module.exports = CleanPlugin;
Close