utils-Cbrj-Du4.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import fs from "node:fs";
  2. import { basename, dirname, resolve } from "node:path";
  3. //#region src/rspack/utils.ts
  4. function encodeVirtualModuleId(id, plugin) {
  5. return resolve(plugin.__virtualModulePrefix, encodeURIComponent(id));
  6. }
  7. function decodeVirtualModuleId(encoded, _plugin) {
  8. return decodeURIComponent(basename(encoded));
  9. }
  10. function isVirtualModuleId(encoded, plugin) {
  11. return dirname(encoded) === plugin.__virtualModulePrefix;
  12. }
  13. var FakeVirtualModulesPlugin = class FakeVirtualModulesPlugin {
  14. name = "FakeVirtualModulesPlugin";
  15. static counter = 0;
  16. constructor(plugin) {
  17. this.plugin = plugin;
  18. }
  19. apply(compiler) {
  20. FakeVirtualModulesPlugin.counter++;
  21. const dir = this.plugin.__virtualModulePrefix;
  22. if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
  23. compiler.hooks.shutdown.tap(this.name, () => {
  24. if (--FakeVirtualModulesPlugin.counter === 0) fs.rmSync(dir, {
  25. recursive: true,
  26. force: true
  27. });
  28. });
  29. }
  30. async writeModule(file) {
  31. const path$1 = encodeVirtualModuleId(file, this.plugin);
  32. await fs.promises.writeFile(path$1, "");
  33. return path$1;
  34. }
  35. };
  36. //#endregion
  37. export { FakeVirtualModulesPlugin, decodeVirtualModuleId, encodeVirtualModuleId, isVirtualModuleId };