first commit

This commit is contained in:
Grey committed 2026-05-12 12:41:49 +07:00
commit 604fef891f
8368 files changed
+1285228

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
import type { Compiler } from 'webpack';
declare const ALL = "all";
declare const STATIC = "static";
declare const DYNAMIC = "dynamic";
declare type AvailableModules = typeof ALL | typeof STATIC | typeof DYNAMIC;
declare class VirtualModulesPlugin {
private _staticModules;
private _compiler;
private _watcher;
constructor(modules?: Record<string, string>);
getModuleList(filter?: AvailableModules): {};
writeModule(filePath: string, contents: string): void;
apply(compiler: Compiler): void;
}
export = VirtualModulesPlugin;
+292
View File
@@ -0,0 +1,292 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
const path_1 = __importDefault(require("path"));
const virtual_stats_1 = require("./virtual-stats");
let inode = 45000000;
const ALL = 'all';
const STATIC = 'static';
const DYNAMIC = 'dynamic';
function checkActivation(instance) {
if (!instance._compiler) {
throw new Error('You must use this plugin only after creating webpack instance!');
}
}
function getModulePath(filePath, compiler) {
return path_1.default.isAbsolute(filePath) ? filePath : path_1.default.join(compiler.context, filePath);
}
function createWebpackData(result) {
return (backendOrStorage) => {
if (backendOrStorage._data) {
const curLevelIdx = backendOrStorage._currentLevel;
const curLevel = backendOrStorage._levels[curLevelIdx];
return {
result,
level: curLevel,
};
}
return [null, result];
};
}
function getData(storage, key) {
if (storage._data instanceof Map) {
return storage._data.get(key);
}
else if (storage._data) {
return storage.data[key];
}
else if (storage.data instanceof Map) {
return storage.data.get(key);
}
else {
return storage.data[key];
}
}
function setData(backendOrStorage, key, valueFactory) {
const value = valueFactory(backendOrStorage);
if (backendOrStorage._data instanceof Map) {
backendOrStorage._data.set(key, value);
}
else if (backendOrStorage._data) {
backendOrStorage.data[key] = value;
}
else if (backendOrStorage.data instanceof Map) {
backendOrStorage.data.set(key, value);
}
else {
backendOrStorage.data[key] = value;
}
}
function getStatStorage(fileSystem) {
if (fileSystem._statStorage) {
return fileSystem._statStorage;
}
else if (fileSystem._statBackend) {
return fileSystem._statBackend;
}
else {
throw new Error("Couldn't find a stat storage");
}
}
function getFileStorage(fileSystem) {
if (fileSystem._readFileStorage) {
return fileSystem._readFileStorage;
}
else if (fileSystem._readFileBackend) {
return fileSystem._readFileBackend;
}
else {
throw new Error("Couldn't find a readFileStorage");
}
}
function getReadDirBackend(fileSystem) {
if (fileSystem._readdirBackend) {
return fileSystem._readdirBackend;
}
else if (fileSystem._readdirStorage) {
return fileSystem._readdirStorage;
}
else {
throw new Error("Couldn't find a readDirStorage from Webpack Internals");
}
}
function getRealpathBackend(fileSystem) {
if (fileSystem._realpathBackend) {
return fileSystem._realpathBackend;
}
}
class VirtualModulesPlugin {
constructor(modules) {
this._compiler = null;
this._watcher = null;
this._staticModules = modules || null;
}
getModuleList(filter = ALL) {
var _a, _b;
let modules = {};
const shouldGetStaticModules = filter === ALL || filter === STATIC;
const shouldGetDynamicModules = filter === ALL || filter === DYNAMIC;
if (shouldGetStaticModules) {
modules = Object.assign(Object.assign({}, modules), this._staticModules);
}
if (shouldGetDynamicModules) {
const finalInputFileSystem = (_a = this._compiler) === null || _a === void 0 ? void 0 : _a.inputFileSystem;
const virtualFiles = (_b = finalInputFileSystem === null || finalInputFileSystem === void 0 ? void 0 : finalInputFileSystem._virtualFiles) !== null && _b !== void 0 ? _b : {};
const dynamicModules = {};
Object.keys(virtualFiles).forEach((key) => {
dynamicModules[key] = virtualFiles[key].contents;
});
modules = Object.assign(Object.assign({}, modules), dynamicModules);
}
return modules;
}
writeModule(filePath, contents) {
if (!this._compiler) {
throw new Error(`Plugin has not been initialized`);
}
checkActivation(this);
const len = contents ? contents.length : 0;
const time = Date.now();
const date = new Date(time);
const stats = new virtual_stats_1.VirtualStats({
dev: 8675309,
nlink: 0,
uid: 1000,
gid: 1000,
rdev: 0,
blksize: 4096,
ino: inode++,
mode: 33188,
size: len,
blocks: Math.floor(len / 4096),
atime: date,
mtime: date,
ctime: date,
birthtime: date,
});
const modulePath = getModulePath(filePath, this._compiler);
if (process.env.WVM_DEBUG)
console.log(this._compiler.name, 'Write virtual module:', modulePath, contents);
let finalWatchFileSystem = this._watcher && this._watcher.watchFileSystem;
while (finalWatchFileSystem && finalWatchFileSystem.wfs) {
finalWatchFileSystem = finalWatchFileSystem.wfs;
}
let finalInputFileSystem = this._compiler.inputFileSystem;
while (finalInputFileSystem && finalInputFileSystem._inputFileSystem) {
finalInputFileSystem = finalInputFileSystem._inputFileSystem;
}
finalInputFileSystem._writeVirtualFile(modulePath, stats, contents);
if (finalWatchFileSystem &&
finalWatchFileSystem.watcher &&
(finalWatchFileSystem.watcher.fileWatchers.size || finalWatchFileSystem.watcher.fileWatchers.length)) {
const fileWatchers = finalWatchFileSystem.watcher.fileWatchers instanceof Map
? Array.from(finalWatchFileSystem.watcher.fileWatchers.values())
: finalWatchFileSystem.watcher.fileWatchers;
for (let fileWatcher of fileWatchers) {
if ('watcher' in fileWatcher) {
fileWatcher = fileWatcher.watcher;
}
if (fileWatcher.path === modulePath) {
if (process.env.DEBUG)
console.log(this._compiler.name, 'Emit file change:', modulePath, time);
delete fileWatcher.directoryWatcher._cachedTimeInfoEntries;
fileWatcher.emit('change', time, null);
}
}
}
}
apply(compiler) {
this._compiler = compiler;
const afterEnvironmentHook = () => {
let finalInputFileSystem = compiler.inputFileSystem;
while (finalInputFileSystem && finalInputFileSystem._inputFileSystem) {
finalInputFileSystem = finalInputFileSystem._inputFileSystem;
}
if (!finalInputFileSystem._writeVirtualFile) {
const originalPurge = finalInputFileSystem.purge;
finalInputFileSystem.purge = () => {
originalPurge.apply(finalInputFileSystem, []);
if (finalInputFileSystem._virtualFiles) {
Object.keys(finalInputFileSystem._virtualFiles).forEach((file) => {
const data = finalInputFileSystem._virtualFiles[file];
finalInputFileSystem._writeVirtualFile(file, data.stats, data.contents);
});
}
};
finalInputFileSystem._writeVirtualFile = (file, stats, contents) => {
const statStorage = getStatStorage(finalInputFileSystem);
const fileStorage = getFileStorage(finalInputFileSystem);
const readDirStorage = getReadDirBackend(finalInputFileSystem);
const realPathStorage = getRealpathBackend(finalInputFileSystem);
finalInputFileSystem._virtualFiles = finalInputFileSystem._virtualFiles || {};
finalInputFileSystem._virtualFiles[file] = { stats: stats, contents: contents };
setData(statStorage, file, createWebpackData(stats));
setData(fileStorage, file, createWebpackData(contents));
const segments = file.split(/[\\/]/);
let count = segments.length - 1;
const minCount = segments[0] ? 1 : 0;
while (count > minCount) {
const dir = segments.slice(0, count).join(path_1.default.sep) || path_1.default.sep;
try {
finalInputFileSystem.readdirSync(dir);
}
catch (e) {
const time = Date.now();
const dirStats = new virtual_stats_1.VirtualStats({
dev: 8675309,
nlink: 0,
uid: 1000,
gid: 1000,
rdev: 0,
blksize: 4096,
ino: inode++,
mode: 16877,
size: stats.size,
blocks: Math.floor(stats.size / 4096),
atime: time,
mtime: time,
ctime: time,
birthtime: time,
});
setData(readDirStorage, dir, createWebpackData([]));
if (realPathStorage) {
setData(realPathStorage, dir, createWebpackData(dir));
}
setData(statStorage, dir, createWebpackData(dirStats));
}
let dirData = getData(getReadDirBackend(finalInputFileSystem), dir);
dirData = dirData[1] || dirData.result;
const filename = segments[count];
if (dirData.indexOf(filename) < 0) {
const files = dirData.concat([filename]).sort();
setData(getReadDirBackend(finalInputFileSystem), dir, createWebpackData(files));
}
else {
break;
}
count--;
}
};
}
};
const afterResolversHook = () => {
if (this._staticModules) {
for (const [filePath, contents] of Object.entries(this._staticModules)) {
this.writeModule(filePath, contents);
}
this._staticModules = null;
}
};
const version = typeof compiler.webpack === 'undefined' ? 4 : 5;
const watchRunHook = (watcher, callback) => {
this._watcher = watcher.compiler || watcher;
const virtualFiles = compiler.inputFileSystem._virtualFiles;
const fts = compiler.fileTimestamps;
if (virtualFiles && fts && typeof fts.set === 'function') {
Object.keys(virtualFiles).forEach((file) => {
const mtime = +virtualFiles[file].stats.mtime;
fts.set(file, version === 4
? mtime
: {
safeTime: mtime,
timestamp: mtime,
});
});
}
callback();
};
if (compiler.hooks) {
compiler.hooks.afterEnvironment.tap('VirtualModulesPlugin', afterEnvironmentHook);
compiler.hooks.afterResolvers.tap('VirtualModulesPlugin', afterResolversHook);
compiler.hooks.watchRun.tapAsync('VirtualModulesPlugin', watchRunHook);
}
else {
compiler.plugin('after-environment', afterEnvironmentHook);
compiler.plugin('after-resolvers', afterResolversHook);
compiler.plugin('watch-run', watchRunHook);
}
}
}
module.exports = VirtualModulesPlugin;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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 truncated
+11
View File
@@ -0,0 +1,11 @@
export declare class VirtualStats {
constructor(config: any);
private _checkModeProperty;
isDirectory(): boolean;
isFile(): boolean;
isBlockDevice(): boolean;
isCharacterDevice(): boolean;
isSymbolicLink(): boolean;
isFIFO(): boolean;
isSocket(): boolean;
}
+43
View File
@@ -0,0 +1,43 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.VirtualStats = void 0;
const constants_1 = __importDefault(require("constants"));
class VirtualStats {
constructor(config) {
for (const key in config) {
if (!Object.prototype.hasOwnProperty.call(config, key)) {
continue;
}
this[key] = config[key];
}
}
_checkModeProperty(property) {
return (this.mode & constants_1.default.S_IFMT) === property;
}
isDirectory() {
return this._checkModeProperty(constants_1.default.S_IFDIR);
}
isFile() {
return this._checkModeProperty(constants_1.default.S_IFREG);
}
isBlockDevice() {
return this._checkModeProperty(constants_1.default.S_IFBLK);
}
isCharacterDevice() {
return this._checkModeProperty(constants_1.default.S_IFCHR);
}
isSymbolicLink() {
return this._checkModeProperty(constants_1.default.S_IFLNK);
}
isFIFO() {
return this._checkModeProperty(constants_1.default.S_IFIFO);
}
isSocket() {
return this._checkModeProperty(constants_1.default.S_IFSOCK);
}
}
exports.VirtualStats = VirtualStats;
//# sourceMappingURL=virtual-stats.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"virtual-stats.js","sourceRoot":"","sources":["../src/virtual-stats.ts"],"names":[],"mappings":";;;;;;AASA,0DAAkC;AAElC,MAAa,YAAY;IAMvB,YAAmB,MAAM;QACvB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;gBACtD,SAAS;aACV;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;IACH,CAAC;IAKO,kBAAkB,CAAC,QAAQ;QACjC,OAAO,CAAE,IAAY,CAAC,IAAI,GAAG,mBAAS,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;IAC9D,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAS,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;CACF;AAjDD,oCAiDC"}