fix(pkg): restore VFS Dirent reads
This commit is contained in:
1 parent
fa7d5519f5
commit
1b56c865fa
2 files changed
+79
-5
No files matched your search
@@ -1,8 +1,82 @@
|
||||
diff --git a/prelude/sea-bootstrap.bundle.js b/prelude/sea-bootstrap.bundle.js
|
||||
index ac14980e953134f2285e326a5111cf52de717cf5..6b0c9d5b5063f447cb8aa3e0fc9d342729f29989 100644
|
||||
index ac14980e953134f2285e326a5111cf52de717cf5..19465f8004dcd7f75bc7459de2055546f232fd23 100644
|
||||
--- a/prelude/sea-bootstrap.bundle.js
|
||||
+++ b/prelude/sea-bootstrap.bundle.js
|
||||
@@ -5560,7 +5560,6 @@ var require_sea_bootstrap_core = __commonJS({
|
||||
@@ -5356,6 +5356,39 @@ var require_sea_vfs_setup = __commonJS({
|
||||
}
|
||||
};
|
||||
}
|
||||
+ var DIRENT_UNKNOWN = 0;
|
||||
+ var DIRENT_FILE = 1;
|
||||
+ var DIRENT_DIRECTORY = 2;
|
||||
+ var DIRENT_SYMLINK = 3;
|
||||
+ var SEADirent = class {
|
||||
+ constructor(name, type, parentPath) {
|
||||
+ this.name = name;
|
||||
+ this.parentPath = parentPath;
|
||||
+ this.path = parentPath;
|
||||
+ this._type = type;
|
||||
+ }
|
||||
+ isFile() {
|
||||
+ return this._type === DIRENT_FILE;
|
||||
+ }
|
||||
+ isDirectory() {
|
||||
+ return this._type === DIRENT_DIRECTORY;
|
||||
+ }
|
||||
+ isSymbolicLink() {
|
||||
+ return this._type === DIRENT_SYMLINK;
|
||||
+ }
|
||||
+ isBlockDevice() {
|
||||
+ return false;
|
||||
+ }
|
||||
+ isCharacterDevice() {
|
||||
+ return false;
|
||||
+ }
|
||||
+ isFIFO() {
|
||||
+ return false;
|
||||
+ }
|
||||
+ isSocket() {
|
||||
+ return false;
|
||||
+ }
|
||||
+ };
|
||||
var SEAProvider = class extends MemoryProvider {
|
||||
constructor(seaManifest) {
|
||||
super();
|
||||
@@ -5465,12 +5498,21 @@ var require_sea_vfs_setup = __commonJS({
|
||||
}
|
||||
return -2;
|
||||
}
|
||||
- readdirSync(dirPath) {
|
||||
+ readdirSync(dirPath, options) {
|
||||
perf2.count("readdirSync calls");
|
||||
var p = this._resolveSymlink(toManifestKey(dirPath));
|
||||
var entries = this._manifest.directories[p];
|
||||
- if (entries) return entries.slice();
|
||||
- return super.readdirSync(p);
|
||||
+ if (entries) {
|
||||
+ if (!options || !options.withFileTypes) return entries.slice();
|
||||
+ var manifest3 = this._manifest;
|
||||
+ return entries.map(function(name) {
|
||||
+ var childPath = p === "/" ? "/" + name : p + "/" + name;
|
||||
+ var meta = manifest3.stats[childPath];
|
||||
+ var type = manifest3.symlinks[childPath] !== void 0 ? DIRENT_SYMLINK : meta && meta.isDirectory ? DIRENT_DIRECTORY : meta && meta.isFile ? DIRENT_FILE : DIRENT_UNKNOWN;
|
||||
+ return new SEADirent(name, type, p);
|
||||
+ });
|
||||
+ }
|
||||
+ return super.readdirSync(p, options);
|
||||
}
|
||||
existsSync(filePath) {
|
||||
perf2.count("existsSync calls");
|
||||
@@ -5542,7 +5584,7 @@ var require_sea_vfs_setup = __commonJS({
|
||||
var require_worker_bootstrap_string = __commonJS({
|
||||
"prelude/_worker-bootstrap-string.js"(exports2, module2) {
|
||||
"use strict";
|
||||
- module2.exports = '"use strict";\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __commonJS = (cb, mod) => function __require() {\n try {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n } catch (e) {\n throw mod = 0, e;\n }\n};\n\n// prelude/bootstrap-shared.js\nvar require_bootstrap_shared = __commonJS({\n "prelude/bootstrap-shared.js"(exports2, module2) {\n "use strict";\n var childProcess = require("child_process");\n var { createHash } = require("crypto");\n var fs = require("fs");\n var path = require("path");\n var zlib = require("zlib");\n var { homedir } = require("os");\n var COMPRESS_NONE = 0;\n var COMPRESS_GZIP = 1;\n var COMPRESS_BROTLI = 2;\n var COMPRESS_ZSTD = 3;\n function zstdMissingError(symbol) {\n return new Error(\n "pkg: Zstd compression requires Node.js >= 22.15 (runtime missing zlib." + symbol + "). Re-package this binary with pkg >= the version that embeds Node 22.15+, or contact the distributor for a --compress Brotli/GZip build."\n );\n }\n function pickDecompressorSync(compression) {\n switch (compression) {\n case COMPRESS_NONE:\n return null;\n case COMPRESS_GZIP:\n return zlib.gunzipSync;\n case COMPRESS_BROTLI:\n return zlib.brotliDecompressSync;\n case COMPRESS_ZSTD:\n if (typeof zlib.zstdDecompressSync !== "function") {\n throw zstdMissingError("zstdDecompressSync");\n }\n return zlib.zstdDecompressSync;\n default:\n throw new Error(\n "pkg: unknown compression codec id " + compression + " in manifest"\n );\n }\n }\n function pickDecompressorAsync(compression) {\n switch (compression) {\n case COMPRESS_NONE:\n return null;\n case COMPRESS_GZIP:\n return zlib.gunzip;\n case COMPRESS_BROTLI:\n return zlib.brotliDecompress;\n case COMPRESS_ZSTD:\n if (typeof zlib.zstdDecompress !== "function") {\n throw zstdMissingError("zstdDecompress");\n }\n return zlib.zstdDecompress;\n default:\n throw new Error("pkg: unknown compression codec id " + compression);\n }\n }\n function cpRecursive(src, dest) {\n var st = fs.lstatSync(src);\n if (st.isSymbolicLink()) {\n var target = fs.readlinkSync(src);\n try {\n fs.unlinkSync(dest);\n } catch (_) {\n }\n try {\n fs.symlinkSync(target, dest);\n return;\n } catch (e) {\n if (e && (e.code === "EPERM" || e.code === "EACCES")) {\n var resolved = path.isAbsolute(target) ? target : path.join(path.dirname(src), target);\n cpRecursive(resolved, dest);\n return;\n }\n throw e;\n }\n }\n if (st.isDirectory()) {\n fs.mkdirSync(dest, { recursive: true });\n var entries = fs.readdirSync(src);\n for (var i = 0; i < entries.length; i++) {\n cpRecursive(path.join(src, entries[i]), path.join(dest, entries[i]));\n }\n return;\n }\n var srcContent = fs.readFileSync(src);\n if (fs.existsSync(dest)) {\n var destContent = fs.readFileSync(dest);\n var srcHash = createHash("sha256").update(srcContent).digest("hex");\n var destHash = createHash("sha256").update(destContent).digest("hex");\n if (srcHash === destHash) {\n return;\n }\n }\n fs.writeFileSync(dest, srcContent);\n }\n function patchDlopen(insideSnapshot) {\n var ancestor = process.dlopen;\n var PKG_NATIVE_CACHE_BASE = process.env.PKG_NATIVE_CACHE_PATH || path.join(homedir(), ".cache");\n function revertMakingLong(f) {\n if (/^\\\\\\\\\\?\\\\/.test(f)) return f.slice(4);\n return f;\n }\n process.dlopen = function dlopen() {\n var args = Array.prototype.slice.call(arguments);\n var modulePath = revertMakingLong(args[1]);\n var moduleBaseName = path.basename(modulePath);\n var moduleFolder = path.dirname(modulePath);\n if (insideSnapshot(modulePath)) {\n var moduleContent = fs.readFileSync(modulePath);\n var hash = createHash("sha256").update(moduleContent).digest("hex");\n var tmpFolder = path.join(PKG_NATIVE_CACHE_BASE, "pkg", hash);\n fs.mkdirSync(tmpFolder, { recursive: true });\n var parts = moduleFolder.split(path.sep);\n var mIndex = parts.lastIndexOf("node_modules") + 1;\n var newPath;\n if (mIndex > 0) {\n var modulePackagePath = parts.slice(mIndex).join(path.sep);\n var modulePkgFolder = parts.slice(0, mIndex + 1).join(path.sep);\n var destFolder = path.join(tmpFolder, path.basename(modulePkgFolder));\n cpRecursive(modulePkgFolder, dest
Line truncated
|
||||
+ module2.exports = '"use strict";\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __commonJS = (cb, mod) => function __require() {\n try {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n } catch (e) {\n throw mod = 0, e;\n }\n};\n\n// prelude/bootstrap-shared.js\nvar require_bootstrap_shared = __commonJS({\n "prelude/bootstrap-shared.js"(exports2, module2) {\n "use strict";\n var childProcess = require("child_process");\n var { createHash } = require("crypto");\n var fs = require("fs");\n var path = require("path");\n var zlib = require("zlib");\n var { homedir } = require("os");\n var COMPRESS_NONE = 0;\n var COMPRESS_GZIP = 1;\n var COMPRESS_BROTLI = 2;\n var COMPRESS_ZSTD = 3;\n function zstdMissingError(symbol) {\n return new Error(\n "pkg: Zstd compression requires Node.js >= 22.15 (runtime missing zlib." + symbol + "). Re-package this binary with pkg >= the version that embeds Node 22.15+, or contact the distributor for a --compress Brotli/GZip build."\n );\n }\n function pickDecompressorSync(compression) {\n switch (compression) {\n case COMPRESS_NONE:\n return null;\n case COMPRESS_GZIP:\n return zlib.gunzipSync;\n case COMPRESS_BROTLI:\n return zlib.brotliDecompressSync;\n case COMPRESS_ZSTD:\n if (typeof zlib.zstdDecompressSync !== "function") {\n throw zstdMissingError("zstdDecompressSync");\n }\n return zlib.zstdDecompressSync;\n default:\n throw new Error(\n "pkg: unknown compression codec id " + compression + " in manifest"\n );\n }\n }\n function pickDecompressorAsync(compression) {\n switch (compression) {\n case COMPRESS_NONE:\n return null;\n case COMPRESS_GZIP:\n return zlib.gunzip;\n case COMPRESS_BROTLI:\n return zlib.brotliDecompress;\n case COMPRESS_ZSTD:\n if (typeof zlib.zstdDecompress !== "function") {\n throw zstdMissingError("zstdDecompress");\n }\n return zlib.zstdDecompress;\n default:\n throw new Error("pkg: unknown compression codec id " + compression);\n }\n }\n function cpRecursive(src, dest) {\n var st = fs.lstatSync(src);\n if (st.isSymbolicLink()) {\n var target = fs.readlinkSync(src);\n try {\n fs.unlinkSync(dest);\n } catch (_) {\n }\n try {\n fs.symlinkSync(target, dest);\n return;\n } catch (e) {\n if (e && (e.code === "EPERM" || e.code === "EACCES")) {\n var resolved = path.isAbsolute(target) ? target : path.join(path.dirname(src), target);\n cpRecursive(resolved, dest);\n return;\n }\n throw e;\n }\n }\n if (st.isDirectory()) {\n fs.mkdirSync(dest, { recursive: true });\n var entries = fs.readdirSync(src);\n for (var i = 0; i < entries.length; i++) {\n cpRecursive(path.join(src, entries[i]), path.join(dest, entries[i]));\n }\n return;\n }\n var srcContent = fs.readFileSync(src);\n if (fs.existsSync(dest)) {\n var destContent = fs.readFileSync(dest);\n var srcHash = createHash("sha256").update(srcContent).digest("hex");\n var destHash = createHash("sha256").update(destContent).digest("hex");\n if (srcHash === destHash) {\n return;\n }\n }\n fs.writeFileSync(dest, srcContent);\n }\n function patchDlopen(insideSnapshot) {\n var ancestor = process.dlopen;\n var PKG_NATIVE_CACHE_BASE = process.env.PKG_NATIVE_CACHE_PATH || path.join(homedir(), ".cache");\n function revertMakingLong(f) {\n if (/^\\\\\\\\\\?\\\\/.test(f)) return f.slice(4);\n return f;\n }\n process.dlopen = function dlopen() {\n var args = Array.prototype.slice.call(arguments);\n var modulePath = revertMakingLong(args[1]);\n var moduleBaseName = path.basename(modulePath);\n var moduleFolder = path.dirname(modulePath);\n if (insideSnapshot(modulePath)) {\n var moduleContent = fs.readFileSync(modulePath);\n var hash = createHash("sha256").update(moduleContent).digest("hex");\n var tmpFolder = path.join(PKG_NATIVE_CACHE_BASE, "pkg", hash);\n fs.mkdirSync(tmpFolder, { recursive: true });\n var parts = moduleFolder.split(path.sep);\n var mIndex = parts.lastIndexOf("node_modules") + 1;\n var newPath;\n if (mIndex > 0) {\n var modulePackagePath = parts.slice(mIndex).join(path.sep);\n var modulePkgFolder = parts.slice(0, mIndex + 1).join(path.sep);\n var destFolder = path.join(tmpFolder, path.basename(modulePkgFolder));\n cpRecursive(modulePkgFolder, dest
Line truncated
|
||||
}
|
||||
});
|
||||
|
||||
@@ -5560,7 +5602,6 @@ var require_sea_bootstrap_core = __commonJS({
|
||||
var insideSnapshot = vfs.insideSnapshot;
|
||||
var SNAPSHOT_PREFIX = vfs.SNAPSHOT_PREFIX;
|
||||
shared.patchDlopen(insideSnapshot);
|
||||
|
||||
Generated
+3
-3
@@ -10,7 +10,7 @@ overrides:
|
||||
|
||||
patchedDependencies:
|
||||
'@electron/[email protected]': 280e7b2816caf01423097d24e79107a66afeb563a348630ce9928ae8499a5861
|
||||
'@yao-pkg/[email protected]': 28edd2180c36691c481522ef81f6f6614505f45e491aad542ac4663d4e6b3ff8
|
||||
'@yao-pkg/[email protected]': 07f08c630d0d3886d81fd4600116d07e4871ddcd57f92cb22746b6d246cdc337
|
||||
[email protected]: b40ae545608897914bd25fb009c97eeac478c34e8a910298ddcb01b746534bb0
|
||||
|
||||
importers:
|
||||
@@ -82,7 +82,7 @@ importers:
|
||||
version: 4.1.8([email protected])
|
||||
'@yao-pkg/pkg':
|
||||
specifier: 6.21.0
|
||||
version: 6.21.0(patch_hash=28edd2180c36691c481522ef81f6f6614505f45e491aad542ac4663d4e6b3ff8)([email protected])
|
||||
version: 6.21.0(patch_hash=07f08c630d0d3886d81fd4600116d07e4871ddcd57f92cb22746b6d246cdc337)([email protected])
|
||||
'@yarnpkg/cli-dist':
|
||||
specifier: 4.17.1
|
||||
version: 4.17.1
|
||||
@@ -22393,7 +22393,7 @@ snapshots:
|
||||
- bare-buffer
|
||||
- react-native-b4a
|
||||
|
||||
'@yao-pkg/[email protected](patch_hash=28edd2180c36691c481522ef81f6f6614505f45e491aad542ac4663d4e6b3ff8)([email protected])':
|
||||
'@yao-pkg/[email protected](patch_hash=07f08c630d0d3886d81fd4600116d07e4871ddcd57f92cb22746b6d246cdc337)([email protected])':
|
||||
dependencies:
|
||||
'@babel/generator': 7.29.7
|
||||
'@babel/parser': 7.29.7
|
||||
|
||||
Reference in new issue
Block a user