mirror of https://github.com/webpack/webpack.git
				
				
				
			
							parent
							
								
									910f5c1a01
								
							
						
					
					
						commit
						a2e326129c
					
				|  | @ -724,7 +724,10 @@ ${other}`); | ||||||
| 								return this.outputFileSystem.readFile( | 								return this.outputFileSystem.readFile( | ||||||
| 									targetPath, | 									targetPath, | ||||||
| 									(err, existingContent) => { | 									(err, existingContent) => { | ||||||
| 										if (err || !content.equals(existingContent)) { | 										if ( | ||||||
|  | 											err || | ||||||
|  | 											!content.equals(/** @type {Buffer} */ (existingContent)) | ||||||
|  | 										) { | ||||||
| 											return doWrite(content); | 											return doWrite(content); | ||||||
| 										} else { | 										} else { | ||||||
| 											return alreadyWritten(); | 											return alreadyWritten(); | ||||||
|  |  | ||||||
|  | @ -298,11 +298,13 @@ module.exports = class ContextModuleFactory extends ModuleFactory { | ||||||
| 		const addDirectory = (directory, addSubDirectory, callback) => { | 		const addDirectory = (directory, addSubDirectory, callback) => { | ||||||
| 			fs.readdir(directory, (err, files) => { | 			fs.readdir(directory, (err, files) => { | ||||||
| 				if (err) return callback(err); | 				if (err) return callback(err); | ||||||
| 				files = files.map(file => file.normalize("NFC")); | 				const processedFiles = cmf.hooks.contextModuleFiles.call( | ||||||
| 				files = cmf.hooks.contextModuleFiles.call(files); | 					/** @type {string[]} */ (files).map(file => file.normalize("NFC")) | ||||||
| 				if (!files || files.length === 0) return callback(null, []); | 				); | ||||||
|  | 				if (!processedFiles || processedFiles.length === 0) | ||||||
|  | 					return callback(null, []); | ||||||
| 				asyncLib.map( | 				asyncLib.map( | ||||||
| 					files.filter(p => p.indexOf(".") !== 0), | 					processedFiles.filter(p => p.indexOf(".") !== 0), | ||||||
| 					(segment, callback) => { | 					(segment, callback) => { | ||||||
| 						const subResource = join(fs, directory, segment); | 						const subResource = join(fs, directory, segment); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1171,8 +1171,9 @@ class FileSystemInfo { | ||||||
| 							callback(); | 							callback(); | ||||||
| 							break; | 							break; | ||||||
| 						} | 						} | ||||||
| 						this.fs.realpath(path, (err, realPath) => { | 						this.fs.realpath(path, (err, _realPath) => { | ||||||
| 							if (err) return callback(err); | 							if (err) return callback(err); | ||||||
|  | 							const realPath = /** @type {string} */ (_realPath); | ||||||
| 							if (realPath !== path) { | 							if (realPath !== path) { | ||||||
| 								resolveFiles.add(path); | 								resolveFiles.add(path); | ||||||
| 							} | 							} | ||||||
|  | @ -1192,8 +1193,9 @@ class FileSystemInfo { | ||||||
| 							callback(); | 							callback(); | ||||||
| 							break; | 							break; | ||||||
| 						} | 						} | ||||||
| 						this.fs.realpath(path, (err, realPath) => { | 						this.fs.realpath(path, (err, _realPath) => { | ||||||
| 							if (err) return callback(err); | 							if (err) return callback(err); | ||||||
|  | 							const realPath = /** @type {string} */ (_realPath); | ||||||
| 							if (realPath !== path) { | 							if (realPath !== path) { | ||||||
| 								resolveFiles.add(path); | 								resolveFiles.add(path); | ||||||
| 							} | 							} | ||||||
|  | @ -2405,7 +2407,7 @@ class FileSystemInfo { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	_readContextTimestamp(path, callback) { | 	_readContextTimestamp(path, callback) { | ||||||
| 		this.fs.readdir(path, (err, files) => { | 		this.fs.readdir(path, (err, _files) => { | ||||||
| 			if (err) { | 			if (err) { | ||||||
| 				if (err.code === "ENOENT") { | 				if (err.code === "ENOENT") { | ||||||
| 					this._contextTimestamps.set(path, null); | 					this._contextTimestamps.set(path, null); | ||||||
|  | @ -2414,7 +2416,7 @@ class FileSystemInfo { | ||||||
| 				} | 				} | ||||||
| 				return callback(err); | 				return callback(err); | ||||||
| 			} | 			} | ||||||
| 			files = files | 			const files = /** @type {string[]} */ (_files) | ||||||
| 				.map(file => file.normalize("NFC")) | 				.map(file => file.normalize("NFC")) | ||||||
| 				.filter(file => !/^\./.test(file)) | 				.filter(file => !/^\./.test(file)) | ||||||
| 				.sort(); | 				.sort(); | ||||||
|  | @ -2501,7 +2503,7 @@ class FileSystemInfo { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	_readContextHash(path, callback) { | 	_readContextHash(path, callback) { | ||||||
| 		this.fs.readdir(path, (err, files) => { | 		this.fs.readdir(path, (err, _files) => { | ||||||
| 			if (err) { | 			if (err) { | ||||||
| 				if (err.code === "ENOENT") { | 				if (err.code === "ENOENT") { | ||||||
| 					this._contextHashes.set(path, null); | 					this._contextHashes.set(path, null); | ||||||
|  | @ -2509,7 +2511,7 @@ class FileSystemInfo { | ||||||
| 				} | 				} | ||||||
| 				return callback(err); | 				return callback(err); | ||||||
| 			} | 			} | ||||||
| 			files = files | 			const files = /** @type {string[]} */ (_files) | ||||||
| 				.map(file => file.normalize("NFC")) | 				.map(file => file.normalize("NFC")) | ||||||
| 				.filter(file => !/^\./.test(file)) | 				.filter(file => !/^\./.test(file)) | ||||||
| 				.sort(); | 				.sort(); | ||||||
|  | @ -2624,7 +2626,9 @@ class FileSystemInfo { | ||||||
| 				return callback(err); | 				return callback(err); | ||||||
| 			} | 			} | ||||||
| 			const set = new Set( | 			const set = new Set( | ||||||
| 				elements.map(element => join(this.fs, path, element)) | 				/** @type {string[]} */ (elements).map(element => | ||||||
|  | 					join(this.fs, path, element) | ||||||
|  | 				) | ||||||
| 			); | 			); | ||||||
| 			callback(null, set); | 			callback(null, set); | ||||||
| 		}); | 		}); | ||||||
|  |  | ||||||
|  | @ -441,7 +441,7 @@ class FileMiddleware extends SerializerMiddleware { | ||||||
| 						reject(err); | 						reject(err); | ||||||
| 						return; | 						return; | ||||||
| 					} | 					} | ||||||
| 					let remaining = stats.size; | 					let remaining = /** @type {number} */ (stats.size); | ||||||
| 					let currentBuffer; | 					let currentBuffer; | ||||||
| 					let currentBufferUsed; | 					let currentBufferUsed; | ||||||
| 					const buf = []; | 					const buf = []; | ||||||
|  |  | ||||||
|  | @ -7,17 +7,57 @@ | ||||||
| 
 | 
 | ||||||
| const path = require("path"); | const path = require("path"); | ||||||
| 
 | 
 | ||||||
| /** @typedef {import("fs").Stats} NodeFsStats */ |  | ||||||
| /** @typedef {import("../../declarations/WebpackOptions").WatchOptions} WatchOptions */ | /** @typedef {import("../../declarations/WebpackOptions").WatchOptions} WatchOptions */ | ||||||
| /** @typedef {import("../FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */ | /** @typedef {import("../FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */ | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @typedef {Object} IStats | ||||||
|  |  * @property {() => boolean} isFile | ||||||
|  |  * @property {() => boolean} isDirectory | ||||||
|  |  * @property {() => boolean} isBlockDevice | ||||||
|  |  * @property {() => boolean} isCharacterDevice | ||||||
|  |  * @property {() => boolean} isSymbolicLink | ||||||
|  |  * @property {() => boolean} isFIFO | ||||||
|  |  * @property {() => boolean} isSocket | ||||||
|  |  * @property {number | bigint} dev | ||||||
|  |  * @property {number | bigint} ino | ||||||
|  |  * @property {number | bigint} mode | ||||||
|  |  * @property {number | bigint} nlink | ||||||
|  |  * @property {number | bigint} uid | ||||||
|  |  * @property {number | bigint} gid | ||||||
|  |  * @property {number | bigint} rdev | ||||||
|  |  * @property {number | bigint} size | ||||||
|  |  * @property {number | bigint} blksize | ||||||
|  |  * @property {number | bigint} blocks | ||||||
|  |  * @property {number | bigint} atimeMs | ||||||
|  |  * @property {number | bigint} mtimeMs | ||||||
|  |  * @property {number | bigint} ctimeMs | ||||||
|  |  * @property {number | bigint} birthtimeMs | ||||||
|  |  * @property {Date} atime | ||||||
|  |  * @property {Date} mtime | ||||||
|  |  * @property {Date} ctime | ||||||
|  |  * @property {Date} birthtime | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @typedef {Object} IDirent | ||||||
|  |  * @property {() => boolean} isFile | ||||||
|  |  * @property {() => boolean} isDirectory | ||||||
|  |  * @property {() => boolean} isBlockDevice | ||||||
|  |  * @property {() => boolean} isCharacterDevice | ||||||
|  |  * @property {() => boolean} isSymbolicLink | ||||||
|  |  * @property {() => boolean} isFIFO | ||||||
|  |  * @property {() => boolean} isSocket | ||||||
|  |  * @property {string | Buffer} name | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
| /** @typedef {function(NodeJS.ErrnoException=): void} Callback */ | /** @typedef {function(NodeJS.ErrnoException=): void} Callback */ | ||||||
| /** @typedef {function(NodeJS.ErrnoException=, Buffer=): void} BufferCallback */ | /** @typedef {function(NodeJS.ErrnoException=, Buffer=): void} BufferCallback */ | ||||||
| /** @typedef {function(NodeJS.ErrnoException=, Buffer|string=): void} BufferOrStringCallback */ | /** @typedef {function(NodeJS.ErrnoException=, Buffer|string=): void} BufferOrStringCallback */ | ||||||
| /** @typedef {function(NodeJS.ErrnoException=, string[]=): void} StringArrayCallback */ | /** @typedef {function(NodeJS.ErrnoException=, (string | Buffer)[] | IDirent[]=): void} DirentArrayCallback */ | ||||||
| /** @typedef {function(NodeJS.ErrnoException=, string=): void} StringCallback */ | /** @typedef {function(NodeJS.ErrnoException=, string=): void} StringCallback */ | ||||||
| /** @typedef {function(NodeJS.ErrnoException=, number=): void} NumberCallback */ | /** @typedef {function(NodeJS.ErrnoException=, number=): void} NumberCallback */ | ||||||
| /** @typedef {function(NodeJS.ErrnoException=, NodeFsStats=): void} StatsCallback */ | /** @typedef {function(NodeJS.ErrnoException=, IStats=): void} StatsCallback */ | ||||||
| /** @typedef {function((NodeJS.ErrnoException | Error)=, any=): void} ReadJsonCallback */ | /** @typedef {function((NodeJS.ErrnoException | Error)=, any=): void} ReadJsonCallback */ | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -45,7 +85,7 @@ const path = require("path"); | ||||||
|  * @property {function(string, Buffer|string, Callback): void} writeFile |  * @property {function(string, Buffer|string, Callback): void} writeFile | ||||||
|  * @property {function(string, Callback): void} mkdir |  * @property {function(string, Callback): void} mkdir | ||||||
|  * @property {function(string, StatsCallback): void} stat |  * @property {function(string, StatsCallback): void} stat | ||||||
|  * @property {function(string, BufferCallback): void} readFile |  * @property {function(string, BufferOrStringCallback): void} readFile | ||||||
|  * @property {(function(string, string): string)=} join |  * @property {(function(string, string): string)=} join | ||||||
|  * @property {(function(string, string): string)=} relative |  * @property {(function(string, string): string)=} relative | ||||||
|  * @property {(function(string): string)=} dirname |  * @property {(function(string): string)=} dirname | ||||||
|  | @ -53,12 +93,12 @@ const path = require("path"); | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @typedef {Object} InputFileSystem |  * @typedef {Object} InputFileSystem | ||||||
|  * @property {function(string, BufferCallback): void} readFile |  * @property {function(string, BufferOrStringCallback): void} readFile | ||||||
|  * @property {(function(string, ReadJsonCallback): void)=} readJson |  * @property {(function(string, ReadJsonCallback): void)=} readJson | ||||||
|  * @property {function(string, BufferOrStringCallback): void} readlink |  * @property {function(string, BufferOrStringCallback): void} readlink | ||||||
|  * @property {function(string, StringArrayCallback): void} readdir |  * @property {function(string, DirentArrayCallback): void} readdir | ||||||
|  * @property {function(string, StatsCallback): void} stat |  * @property {function(string, StatsCallback): void} stat | ||||||
|  * @property {(function(string, StringCallback): void)=} realpath |  * @property {(function(string, BufferOrStringCallback): void)=} realpath | ||||||
|  * @property {(function(string=): void)=} purge |  * @property {(function(string=): void)=} purge | ||||||
|  * @property {(function(string, string): string)=} join |  * @property {(function(string, string): string)=} join | ||||||
|  * @property {(function(string, string): string)=} relative |  * @property {(function(string, string): string)=} relative | ||||||
|  | @ -73,7 +113,7 @@ const path = require("path"); | ||||||
| /** | /** | ||||||
|  * @typedef {Object} IntermediateFileSystemExtras |  * @typedef {Object} IntermediateFileSystemExtras | ||||||
|  * @property {function(string): void} mkdirSync |  * @property {function(string): void} mkdirSync | ||||||
|  * @property {function(string): import("fs").WriteStream} createWriteStream |  * @property {function(string): NodeJS.WritableStream} createWriteStream | ||||||
|  * @property {function(string, string, NumberCallback): void} open |  * @property {function(string, string, NumberCallback): void} open | ||||||
|  * @property {function(number, Buffer, number, number, number, NumberCallback): void} read |  * @property {function(number, Buffer, number, number, number, NumberCallback): void} read | ||||||
|  * @property {function(number, Callback): void} close |  * @property {function(number, Callback): void} close | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | module.exports = () => false; | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | const memfs = require("memfs"); | ||||||
|  | const fs = require("fs"); | ||||||
|  | 
 | ||||||
|  | /** @type {import("../../../../").Configuration} */ | ||||||
|  | module.exports = { | ||||||
|  | 	plugins: [ | ||||||
|  | 		compiler => { | ||||||
|  | 			compiler.outputFileSystem = memfs.fs; | ||||||
|  | 			compiler.inputFileSystem = memfs.fs; | ||||||
|  | 			compiler.intermediateFileSystem = memfs.fs; | ||||||
|  | 
 | ||||||
|  | 			compiler.outputFileSystem = fs; | ||||||
|  | 			compiler.inputFileSystem = fs; | ||||||
|  | 			compiler.intermediateFileSystem = fs; | ||||||
|  | 		} | ||||||
|  | 	] | ||||||
|  | }; | ||||||
|  | @ -77,7 +77,6 @@ import { | ||||||
| 	WithStatement, | 	WithStatement, | ||||||
| 	YieldExpression | 	YieldExpression | ||||||
| } from "estree"; | } from "estree"; | ||||||
| import { Stats as FsStats, WriteStream } from "fs"; |  | ||||||
| import { JSONSchema4, JSONSchema6, JSONSchema7 } from "json-schema"; | import { JSONSchema4, JSONSchema6, JSONSchema7 } from "json-schema"; | ||||||
| import { default as ValidationError } from "schema-utils/declarations/ValidationError"; | import { default as ValidationError } from "schema-utils/declarations/ValidationError"; | ||||||
| import { | import { | ||||||
|  | @ -3765,6 +3764,43 @@ declare class HttpsUriPlugin { | ||||||
| 	 */ | 	 */ | ||||||
| 	apply(compiler: Compiler): void; | 	apply(compiler: Compiler): void; | ||||||
| } | } | ||||||
|  | declare interface IDirent { | ||||||
|  | 	isFile: () => boolean; | ||||||
|  | 	isDirectory: () => boolean; | ||||||
|  | 	isBlockDevice: () => boolean; | ||||||
|  | 	isCharacterDevice: () => boolean; | ||||||
|  | 	isSymbolicLink: () => boolean; | ||||||
|  | 	isFIFO: () => boolean; | ||||||
|  | 	isSocket: () => boolean; | ||||||
|  | 	name: string | Buffer; | ||||||
|  | } | ||||||
|  | declare interface IStats { | ||||||
|  | 	isFile: () => boolean; | ||||||
|  | 	isDirectory: () => boolean; | ||||||
|  | 	isBlockDevice: () => boolean; | ||||||
|  | 	isCharacterDevice: () => boolean; | ||||||
|  | 	isSymbolicLink: () => boolean; | ||||||
|  | 	isFIFO: () => boolean; | ||||||
|  | 	isSocket: () => boolean; | ||||||
|  | 	dev: number | bigint; | ||||||
|  | 	ino: number | bigint; | ||||||
|  | 	mode: number | bigint; | ||||||
|  | 	nlink: number | bigint; | ||||||
|  | 	uid: number | bigint; | ||||||
|  | 	gid: number | bigint; | ||||||
|  | 	rdev: number | bigint; | ||||||
|  | 	size: number | bigint; | ||||||
|  | 	blksize: number | bigint; | ||||||
|  | 	blocks: number | bigint; | ||||||
|  | 	atimeMs: number | bigint; | ||||||
|  | 	mtimeMs: number | bigint; | ||||||
|  | 	ctimeMs: number | bigint; | ||||||
|  | 	birthtimeMs: number | bigint; | ||||||
|  | 	atime: Date; | ||||||
|  | 	mtime: Date; | ||||||
|  | 	ctime: Date; | ||||||
|  | 	birthtime: Date; | ||||||
|  | } | ||||||
| declare class IgnorePlugin { | declare class IgnorePlugin { | ||||||
| 	constructor(options: IgnorePluginOptions); | 	constructor(options: IgnorePluginOptions); | ||||||
| 	options: IgnorePluginOptions; | 	options: IgnorePluginOptions; | ||||||
|  | @ -3831,7 +3867,7 @@ declare abstract class InitFragment { | ||||||
| declare interface InputFileSystem { | declare interface InputFileSystem { | ||||||
| 	readFile: ( | 	readFile: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: Buffer) => void | 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: string | Buffer) => void | ||||||
| 	) => void; | 	) => void; | ||||||
| 	readJson?: ( | 	readJson?: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
|  | @ -3843,15 +3879,18 @@ declare interface InputFileSystem { | ||||||
| 	) => void; | 	) => void; | ||||||
| 	readdir: ( | 	readdir: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: string[]) => void | 		arg1: ( | ||||||
|  | 			arg0?: NodeJS.ErrnoException, | ||||||
|  | 			arg1?: (string | Buffer)[] | IDirent[] | ||||||
|  | 		) => void | ||||||
| 	) => void; | 	) => void; | ||||||
| 	stat: ( | 	stat: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: FsStats) => void | 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: IStats) => void | ||||||
| 	) => void; | 	) => void; | ||||||
| 	realpath?: ( | 	realpath?: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: string) => void | 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: string | Buffer) => void | ||||||
| 	) => void; | 	) => void; | ||||||
| 	purge?: (arg0?: string) => void; | 	purge?: (arg0?: string) => void; | ||||||
| 	join?: (arg0: string, arg1: string) => string; | 	join?: (arg0: string, arg1: string) => string; | ||||||
|  | @ -3863,7 +3902,7 @@ type IntermediateFileSystem = InputFileSystem & | ||||||
| 	IntermediateFileSystemExtras; | 	IntermediateFileSystemExtras; | ||||||
| declare interface IntermediateFileSystemExtras { | declare interface IntermediateFileSystemExtras { | ||||||
| 	mkdirSync: (arg0: string) => void; | 	mkdirSync: (arg0: string) => void; | ||||||
| 	createWriteStream: (arg0: string) => WriteStream; | 	createWriteStream: (arg0: string) => NodeJS.WritableStream; | ||||||
| 	open: ( | 	open: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: string, | 		arg1: string, | ||||||
|  | @ -6816,11 +6855,11 @@ declare interface OutputFileSystem { | ||||||
| 	mkdir: (arg0: string, arg1: (arg0?: NodeJS.ErrnoException) => void) => void; | 	mkdir: (arg0: string, arg1: (arg0?: NodeJS.ErrnoException) => void) => void; | ||||||
| 	stat: ( | 	stat: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: FsStats) => void | 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: IStats) => void | ||||||
| 	) => void; | 	) => void; | ||||||
| 	readFile: ( | 	readFile: ( | ||||||
| 		arg0: string, | 		arg0: string, | ||||||
| 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: Buffer) => void | 		arg1: (arg0?: NodeJS.ErrnoException, arg1?: string | Buffer) => void | ||||||
| 	) => void; | 	) => void; | ||||||
| 	join?: (arg0: string, arg1: string) => string; | 	join?: (arg0: string, arg1: string) => string; | ||||||
| 	relative?: (arg0: string, arg1: string) => string; | 	relative?: (arg0: string, arg1: string) => string; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue