From d5c158024fda7655846ca7878a24091d27a65d32 Mon Sep 17 00:00:00 2001 From: James Pace Date: Sun, 1 Mar 2026 19:14:43 -0500 Subject: [PATCH] version page first draft. --- .pnp.cjs | 6303 ++++++++++------- .pnp.loader.mjs | 1223 +++- .../yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip | Bin 0 -> 725969 bytes package.json | 3 +- src/Version.tsx | 63 +- yarn.lock | 10 + 6 files changed, 4798 insertions(+), 2804 deletions(-) create mode 100644 .yarn/cache/yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip diff --git a/.pnp.cjs b/.pnp.cjs index 998f84d..ec5bd4c 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -4,7 +4,7 @@ "use strict"; const RAW_RUNTIME_STATE = -'{\ + '{\ "__info": [\ "This file is automatically generated. Do not touch it, or risk",\ "your modifications being lost."\ @@ -51,7 +51,8 @@ const RAW_RUNTIME_STATE = ["react-router-dom", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.13.1"],\ ["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"],\ ["typescript-eslint", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:8.56.1"],\ - ["vite", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.3.1"]\ + ["vite", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.3.1"],\ + ["yaml", "npm:2.8.2"]\ ],\ "linkType": "SOFT"\ }]\ @@ -1674,7 +1675,8 @@ const RAW_RUNTIME_STATE = ["react-router-dom", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.13.1"],\ ["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"],\ ["typescript-eslint", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:8.56.1"],\ - ["vite", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.3.1"]\ + ["vite", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.3.1"],\ + ["yaml", "npm:2.8.2"]\ ],\ "linkType": "SOFT"\ }]\ @@ -3759,7 +3761,7 @@ const RAW_RUNTIME_STATE = ["tinyglobby", "npm:0.2.15"],\ ["tsx", null],\ ["vite", "virtual:ae939b5bf1c4da31987d1d461851d6cc956667f76e9d6d3a45643e06af20bf533b9bcec6bab70ed0ca795aebf9ce43b3ed74bd20004783b74b2a0cc963cd86b8#npm:7.3.1"],\ - ["yaml", null]\ + ["yaml", "npm:2.8.2"]\ ],\ "packagePeers": [\ "@types/jiti",\ @@ -3847,6 +3849,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["yaml", [\ + ["npm:2.8.2", {\ + "packageLocation": "./.yarn/cache/yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip/node_modules/yaml/",\ + "packageDependencies": [\ + ["yaml", "npm:2.8.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["yocto-queue", [\ ["npm:0.1.0", {\ "packageLocation": "./.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-dceb44c285.zip/node_modules/yocto-queue/",\ @@ -3891,37 +3902,46 @@ const RAW_RUNTIME_STATE = }'; function $$SETUP_STATE(hydrateRuntimeState, basePath) { - return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); + return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), { + basePath: basePath || __dirname, + }); } -const fs = require('fs'); -const path = require('path'); -const crypto = require('crypto'); -const os = require('os'); -const events = require('events'); -const nodeUtils = require('util'); -const stream = require('stream'); -const zlib = require('zlib'); -const require$$0 = require('module'); -const StringDecoder = require('string_decoder'); -const url = require('url'); -const buffer = require('buffer'); -const readline = require('readline'); -const assert = require('assert'); +const fs = require("fs"); +const path = require("path"); +const crypto = require("crypto"); +const os = require("os"); +const events = require("events"); +const nodeUtils = require("util"); +const stream = require("stream"); +const zlib = require("zlib"); +const require$$0 = require("module"); +const StringDecoder = require("string_decoder"); +const url = require("url"); +const buffer = require("buffer"); +const readline = require("readline"); +const assert = require("assert"); -const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; +const _interopDefaultLegacy = (e) => + e && typeof e === "object" && "default" in e ? e : { default: e }; function _interopNamespace(e) { if (e && e.__esModule) return e; const n = Object.create(null); if (e) { for (const k in e) { - if (k !== 'default') { + if (k !== "default") { const d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: () => e[k] - }); + Object.defineProperty( + n, + k, + d.get + ? d + : { + enumerable: true, + get: () => e[k], + }, + ); } } } @@ -3929,14 +3949,15 @@ function _interopNamespace(e) { return Object.freeze(n); } -const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); -const path__default = /*#__PURE__*/_interopDefaultLegacy(path); -const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils); -const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); -const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); -const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder); -const buffer__default = /*#__PURE__*/_interopDefaultLegacy(buffer); -const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert); +const fs__default = /*#__PURE__*/ _interopDefaultLegacy(fs); +const path__default = /*#__PURE__*/ _interopDefaultLegacy(path); +const nodeUtils__namespace = /*#__PURE__*/ _interopNamespace(nodeUtils); +const zlib__default = /*#__PURE__*/ _interopDefaultLegacy(zlib); +const require$$0__default = /*#__PURE__*/ _interopDefaultLegacy(require$$0); +const StringDecoder__default = + /*#__PURE__*/ _interopDefaultLegacy(StringDecoder); +const buffer__default = /*#__PURE__*/ _interopDefaultLegacy(buffer); +const assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert); const S_IFMT = 61440; const S_IFDIR = 16384; @@ -4108,65 +4129,40 @@ function convertToBigIntStats(stats) { return bigintStats; } function areStatsEqual(a, b) { - if (a.atimeMs !== b.atimeMs) - return false; - if (a.birthtimeMs !== b.birthtimeMs) - return false; - if (a.blksize !== b.blksize) - return false; - if (a.blocks !== b.blocks) - return false; - if (a.ctimeMs !== b.ctimeMs) - return false; - if (a.dev !== b.dev) - return false; - if (a.gid !== b.gid) - return false; - if (a.ino !== b.ino) - return false; - if (a.isBlockDevice() !== b.isBlockDevice()) - return false; - if (a.isCharacterDevice() !== b.isCharacterDevice()) - return false; - if (a.isDirectory() !== b.isDirectory()) - return false; - if (a.isFIFO() !== b.isFIFO()) - return false; - if (a.isFile() !== b.isFile()) - return false; - if (a.isSocket() !== b.isSocket()) - return false; - if (a.isSymbolicLink() !== b.isSymbolicLink()) - return false; - if (a.mode !== b.mode) - return false; - if (a.mtimeMs !== b.mtimeMs) - return false; - if (a.nlink !== b.nlink) - return false; - if (a.rdev !== b.rdev) - return false; - if (a.size !== b.size) - return false; - if (a.uid !== b.uid) - return false; + if (a.atimeMs !== b.atimeMs) return false; + if (a.birthtimeMs !== b.birthtimeMs) return false; + if (a.blksize !== b.blksize) return false; + if (a.blocks !== b.blocks) return false; + if (a.ctimeMs !== b.ctimeMs) return false; + if (a.dev !== b.dev) return false; + if (a.gid !== b.gid) return false; + if (a.ino !== b.ino) return false; + if (a.isBlockDevice() !== b.isBlockDevice()) return false; + if (a.isCharacterDevice() !== b.isCharacterDevice()) return false; + if (a.isDirectory() !== b.isDirectory()) return false; + if (a.isFIFO() !== b.isFIFO()) return false; + if (a.isFile() !== b.isFile()) return false; + if (a.isSocket() !== b.isSocket()) return false; + if (a.isSymbolicLink() !== b.isSymbolicLink()) return false; + if (a.mode !== b.mode) return false; + if (a.mtimeMs !== b.mtimeMs) return false; + if (a.nlink !== b.nlink) return false; + if (a.rdev !== b.rdev) return false; + if (a.size !== b.size) return false; + if (a.uid !== b.uid) return false; const aN = a; const bN = b; - if (aN.atimeNs !== bN.atimeNs) - return false; - if (aN.mtimeNs !== bN.mtimeNs) - return false; - if (aN.ctimeNs !== bN.ctimeNs) - return false; - if (aN.birthtimeNs !== bN.birthtimeNs) - return false; + if (aN.atimeNs !== bN.atimeNs) return false; + if (aN.mtimeNs !== bN.mtimeNs) return false; + if (aN.ctimeNs !== bN.ctimeNs) return false; + if (aN.birthtimeNs !== bN.birthtimeNs) return false; return true; } const PortablePath = { root: `/`, dot: `.`, - parent: `..` + parent: `..`, }; const Filename = { home: `~`, @@ -4182,12 +4178,15 @@ const Filename = { pnpData: `.pnp.data.json`, pnpEsmLoader: `.pnp.loader.mjs`, rc: `.yarnrc.yml`, - env: `.env` + env: `.env`, }; const npath = Object.create(path__default.default); const ppath = Object.create(path__default.default.posix); npath.cwd = () => process.cwd(); -ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +ppath.cwd = + process.platform === `win32` + ? () => toPortablePath(process.cwd()) + : process.cwd; if (process.platform === `win32`) { ppath.resolve = (...segments) => { if (segments.length > 0 && ppath.isAbsolute(segments[0])) { @@ -4197,13 +4196,11 @@ if (process.platform === `win32`) { } }; } -const contains = function(pathUtils, from, to) { +const contains = function (pathUtils, from, to) { from = pathUtils.normalize(from); to = pathUtils.normalize(to); - if (from === to) - return `.`; - if (!from.endsWith(pathUtils.sep)) - from = from + pathUtils.sep; + if (from === to) return `.`; + if (!from.endsWith(pathUtils.sep)) from = from + pathUtils.sep; if (to.startsWith(from)) { return to.slice(from.length); } else { @@ -4218,29 +4215,32 @@ const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; function fromPortablePathWin32(p) { let portablePathMatch, uncPortablePathMatch; - if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + if ((portablePathMatch = p.match(PORTABLE_PATH_REGEXP))) p = portablePathMatch[1]; - else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + else if ((uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP))) p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; - else - return p; + else return p; return p.replace(/\//g, `\\`); } function toPortablePathWin32(p) { p = p.replace(/\\/g, `/`); let windowsPathMatch, uncWindowsPathMatch; - if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + if ((windowsPathMatch = p.match(WINDOWS_PATH_REGEXP))) p = `/${windowsPathMatch[1]}`; - else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + else if ((uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP))) p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; return p; } -const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; -const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +const toPortablePath = + process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = + process.platform === `win32` ? fromPortablePathWin32 : (p) => p; npath.fromPortablePath = fromPortablePath; npath.toPortablePath = toPortablePath; function convertPath(targetPathUtils, sourcePath) { - return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); + return targetPathUtils === npath + ? fromPortablePath(sourcePath) + : toPortablePath(sourcePath); } const defaultTime = new Date(SAFE_TIME * 1e3); @@ -4250,34 +4250,90 @@ async function copyPromise(destinationFs, destination, sourceFs, source, opts) { const normalizedSource = sourceFs.pathUtils.normalize(source); const prelayout = []; const postlayout = []; - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); - await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); - await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); - for (const operation of prelayout) - await operation(); - await Promise.all(postlayout.map((operation) => { - return operation(); - })); + const { atime, mtime } = opts.stableTime + ? { atime: defaultTime, mtime: defaultTime } + : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise( + destinationFs.pathUtils.dirname(destination), + { utimes: [atime, mtime] }, + ); + await copyImpl( + prelayout, + postlayout, + destinationFs, + normalizedDestination, + sourceFs, + normalizedSource, + { ...opts, didParentExist: true }, + ); + for (const operation of prelayout) await operation(); + await Promise.all( + postlayout.map((operation) => { + return operation(); + }), + ); } -async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { - const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; +async function copyImpl( + prelayout, + postlayout, + destinationFs, + destination, + sourceFs, + source, + opts, +) { + const destinationStat = opts.didParentExist + ? await maybeLStat(destinationFs, destination) + : null; const sourceStat = await sourceFs.lstatPromise(source); - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + const { atime, mtime } = opts.stableTime + ? { atime: defaultTime, mtime: defaultTime } + : sourceStat; let updated; switch (true) { case sourceStat.isDirectory(): { - updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + updated = await copyFolder( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } break; case sourceStat.isFile(): { - updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + updated = await copyFile( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } break; case sourceStat.isSymbolicLink(): { - updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + updated = await copySymlink( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } break; default: { @@ -4285,12 +4341,23 @@ async function copyImpl(prelayout, postlayout, destinationFs, destination, sourc } } if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { - if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { - postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + if ( + updated || + destinationStat?.mtime?.getTime() !== mtime.getTime() || + destinationStat?.atime?.getTime() !== atime.getTime() + ) { + postlayout.push(() => + destinationFs.lutimesPromise(destination, atime, mtime), + ); updated = true; } - if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { - postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + if ( + destinationStat === null || + (destinationStat.mode & 511) !== (sourceStat.mode & 511) + ) { + postlayout.push(() => + destinationFs.chmodPromise(destination, sourceStat.mode & 511), + ); updated = true; } } @@ -4303,7 +4370,17 @@ async function maybeLStat(baseFs, p) { return null; } } -async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copyFolder( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (destinationStat !== null && !destinationStat.isDirectory()) { if (opts.overwrite) { prelayout.push(async () => destinationFs.removePromise(destination)); @@ -4316,7 +4393,9 @@ async function copyFolder(prelayout, postlayout, destinationFs, destination, des if (destinationStat === null) { prelayout.push(async () => { try { - await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + await destinationFs.mkdirPromise(destination, { + mode: sourceStat.mode, + }); } catch (err) { if (err.code !== `EEXIST`) { throw err; @@ -4326,38 +4405,81 @@ async function copyFolder(prelayout, postlayout, destinationFs, destination, des updated = true; } const entries = await sourceFs.readdirPromise(source); - const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + const nextOpts = + opts.didParentExist && !destinationStat + ? { ...opts, didParentExist: false } + : opts; if (opts.stableSort) { for (const entry of entries.sort()) { - if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + if ( + await copyImpl( + prelayout, + postlayout, + destinationFs, + destinationFs.pathUtils.join(destination, entry), + sourceFs, + sourceFs.pathUtils.join(source, entry), + nextOpts, + ) + ) { updated = true; } } } else { - const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { - await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); - })); + const entriesUpdateStatus = await Promise.all( + entries.map(async (entry) => { + await copyImpl( + prelayout, + postlayout, + destinationFs, + destinationFs.pathUtils.join(destination, entry), + sourceFs, + sourceFs.pathUtils.join(source, entry), + nextOpts, + ); + }), + ); if (entriesUpdateStatus.some((status) => status)) { updated = true; } } return updated; } -async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { - const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); +async function copyFileViaIndex( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + linkStrategy, +) { + const sourceHash = await sourceFs.checksumFilePromise(source, { + algorithm: `sha1`, + }); const defaultMode = 420; const sourceMode = sourceStat.mode & 511; const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; - const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + const indexPath = destinationFs.pathUtils.join( + linkStrategy.indexPath, + sourceHash.slice(0, 2), + `${indexFileName}.dat`, + ); let AtomicBehavior; ((AtomicBehavior2) => { - AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; - AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + AtomicBehavior2[(AtomicBehavior2["Lock"] = 0)] = "Lock"; + AtomicBehavior2[(AtomicBehavior2["Rename"] = 1)] = "Rename"; })(AtomicBehavior || (AtomicBehavior = {})); - let atomicBehavior = 1 /* Rename */; + let atomicBehavior = 1; /* Rename */ let indexStat = await maybeLStat(destinationFs, indexPath); if (destinationStat) { - const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isDestinationHardlinkedFromIndex = + indexStat && + destinationStat.dev === indexStat.dev && + destinationStat.ino === indexStat.ino; const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; if (isDestinationHardlinkedFromIndex) { if (isIndexModified && linkStrategy.autoRepair) { @@ -4374,7 +4496,12 @@ async function copyFileViaIndex(prelayout, postlayout, destinationFs, destinatio } } } - const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + const tempPath = + !indexStat && atomicBehavior === 1 /* Rename */ + ? `${indexPath}.${Math.floor(Math.random() * 4294967296) + .toString(16) + .padStart(8, `0`)}` + : null; let tempPathCleaned = false; prelayout.push(async () => { if (!indexStat) { @@ -4416,7 +4543,17 @@ async function copyFileViaIndex(prelayout, postlayout, destinationFs, destinatio }); return false; } -async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copyFileDirect( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (destinationStat !== null) { if (opts.overwrite) { prelayout.push(async () => destinationFs.removePromise(destination)); @@ -4431,14 +4568,55 @@ async function copyFileDirect(prelayout, postlayout, destinationFs, destination, }); return true; } -async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copyFile( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (opts.linkStrategy?.type === `HardlinkFromIndex`) { - return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + return copyFileViaIndex( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + opts.linkStrategy, + ); } else { - return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + return copyFileDirect( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } } -async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copySymlink( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (destinationStat !== null) { if (opts.overwrite) { prelayout.push(async () => destinationFs.removePromise(destination)); @@ -4448,7 +4626,13 @@ async function copySymlink(prelayout, postlayout, destinationFs, destination, de } } prelayout.push(async () => { - await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + await destinationFs.symlinkPromise( + convertPath( + destinationFs.pathUtils, + await sourceFs.readlinkPromise(source), + ), + destination, + ); }); return true; } @@ -4477,8 +4661,7 @@ class CustomDir { } read(cb) { const dirent = this.readSync(); - if (typeof cb !== `undefined`) - return cb(null, dirent); + if (typeof cb !== `undefined`) return cb(null, dirent); return Promise.resolve(dirent); } readSync() { @@ -4487,8 +4670,7 @@ class CustomDir { } close(cb) { this.closeSync(); - if (typeof cb !== `undefined`) - return cb(null); + if (typeof cb !== `undefined`) return cb(null); return Promise.resolve(); } closeSync() { @@ -4500,12 +4682,11 @@ class CustomDir { function opendir(fakeFs, path, entries, opts) { const nextDirent = () => { const filename = entries.shift(); - if (typeof filename === `undefined`) - return null; + if (typeof filename === `undefined`) return null; const entryPath = fakeFs.pathUtils.join(path, filename); return Object.assign(fakeFs.statSync(entryPath), { name: filename, - path: void 0 + path: void 0, }); }; return new CustomDir(path, nextDirent, opts); @@ -4513,7 +4694,9 @@ function opendir(fakeFs, path, entries, opts) { function assertStatus(current, expected) { if (current !== expected) { - throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`); + throw new Error( + `Invalid StatWatcher status: expected '${expected}', got '${current}'`, + ); } } class CustomStatWatcher extends events.EventEmitter { @@ -4559,7 +4742,9 @@ class CustomStatWatcher extends events.EventEmitter { try { return this.fakeFs.statSync(this.path, { bigint: this.bigint }); } catch { - const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry(); + const statInstance = this.bigint + ? new BigIntStatsEntry() + : new StatEntry(); return clearStats(statInstance); } } @@ -4572,8 +4757,7 @@ class CustomStatWatcher extends events.EventEmitter { const interval = setInterval(() => { const currentStats = this.stat(); const previousStats = this.lastStats; - if (areStatsEqual(currentStats, previousStats)) - return; + if (areStatsEqual(currentStats, previousStats)) return; this.lastStats = currentStats; this.emit("change" /* Change */, currentStats, previousStats); }, opts.interval); @@ -4592,8 +4776,7 @@ class CustomStatWatcher extends events.EventEmitter { unregisterChangeListener(listener) { this.removeListener("change" /* Change */, listener); const interval = this.changeListeners.get(listener); - if (typeof interval !== `undefined`) - clearInterval(interval); + if (typeof interval !== `undefined`) clearInterval(interval); this.changeListeners.delete(listener); } /** @@ -4611,16 +4794,14 @@ class CustomStatWatcher extends events.EventEmitter { * Refs all stored intervals. */ ref() { - for (const interval of this.changeListeners.values()) - interval.ref(); + for (const interval of this.changeListeners.values()) interval.ref(); return this; } /** * Unrefs all stored intervals. */ unref() { - for (const interval of this.changeListeners.values()) - interval.unref(); + for (const interval of this.changeListeners.values()) interval.unref(); return this; } } @@ -4642,18 +4823,17 @@ function watchFile(fakeFs, path, a, b) { break; default: { - ({ - bigint = false, - persistent = true, - interval = 5007 - } = a); + ({ bigint = false, persistent = true, interval = 5007 } = a); listener = b; } break; } let statWatchers = statWatchersByFakeFS.get(fakeFs); if (typeof statWatchers === `undefined`) - statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map()); + statWatchersByFakeFS.set( + fakeFs, + (statWatchers = /* @__PURE__ */ new Map()), + ); let statWatcher = statWatchers.get(path); if (typeof statWatcher === `undefined`) { statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint }); @@ -4664,15 +4844,11 @@ function watchFile(fakeFs, path, a, b) { } function unwatchFile(fakeFs, path, cb) { const statWatchers = statWatchersByFakeFS.get(fakeFs); - if (typeof statWatchers === `undefined`) - return; + if (typeof statWatchers === `undefined`) return; const statWatcher = statWatchers.get(path); - if (typeof statWatcher === `undefined`) - return; - if (typeof cb === `undefined`) - statWatcher.unregisterAllChangeListeners(); - else - statWatcher.unregisterChangeListener(cb); + if (typeof statWatcher === `undefined`) return; + if (typeof cb === `undefined`) statWatcher.unregisterAllChangeListeners(); + else statWatcher.unregisterChangeListener(cb); if (!statWatcher.hasChangeListeners()) { statWatcher.stop(); statWatchers.delete(path); @@ -4680,8 +4856,7 @@ function unwatchFile(fakeFs, path, cb) { } function unwatchAllFiles(fakeFs) { const statWatchers = statWatchersByFakeFS.get(fakeFs); - if (typeof statWatchers === `undefined`) - return; + if (typeof statWatchers === `undefined`) return; for (const path of statWatchers.keys()) { unwatchFile(fakeFs, path); } @@ -4718,8 +4893,12 @@ class FakeFS { const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); const hash = crypto.createHash(algorithm); let bytesRead = 0; - while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) - hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + while ( + (bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0 + ) + hash.update( + bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead), + ); return hash.digest(`hex`); } finally { await this.closePromise(fd); @@ -4739,9 +4918,11 @@ class FakeFS { if (stat.isDirectory()) { if (recursive) { const entries = await this.readdirPromise(p); - await Promise.all(entries.map((entry) => { - return this.removePromise(this.pathUtils.resolve(p, entry)); - })); + await Promise.all( + entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + }), + ); } for (let t = 0; t <= maxRetries; t++) { try { @@ -4781,8 +4962,7 @@ class FakeFS { } async mkdirpPromise(p, { chmod, utimes } = {}) { p = this.resolve(p); - if (p === this.pathUtils.dirname(p)) - return void 0; + if (p === this.pathUtils.dirname(p)) return void 0; const parts = p.split(this.pathUtils.sep); let createdDirectory; for (let u = 2; u <= parts.length; ++u) { @@ -4798,12 +4978,13 @@ class FakeFS { } } createdDirectory ??= subPath; - if (chmod != null) - await this.chmodPromise(subPath, chmod); + if (chmod != null) await this.chmodPromise(subPath, chmod); if (utimes != null) { await this.utimesPromise(subPath, utimes[0], utimes[1]); } else { - const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + const parentStat = await this.statPromise( + this.pathUtils.dirname(subPath), + ); await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); } } @@ -4812,8 +4993,7 @@ class FakeFS { } mkdirpSync(p, { chmod, utimes } = {}) { p = this.resolve(p); - if (p === this.pathUtils.dirname(p)) - return void 0; + if (p === this.pathUtils.dirname(p)) return void 0; const parts = p.split(this.pathUtils.sep); let createdDirectory; for (let u = 2; u <= parts.length; ++u) { @@ -4829,8 +5009,7 @@ class FakeFS { } } createdDirectory ??= subPath; - if (chmod != null) - this.chmodSync(subPath, chmod); + if (chmod != null) this.chmodSync(subPath, chmod); if (utimes != null) { this.utimesSync(subPath, utimes[0], utimes[1]); } else { @@ -4841,8 +5020,23 @@ class FakeFS { } return createdDirectory; } - async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { - return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + async copyPromise( + destination, + source, + { + baseFs = this, + overwrite = true, + stableSort = false, + stableTime = false, + linkStrategy = null, + } = {}, + ) { + return await copyPromise(this, destination, baseFs, source, { + overwrite, + stableSort, + stableTime, + linkStrategy, + }); } copySync(destination, source, { baseFs = this, overwrite = true } = {}) { const stat = baseFs.lstatSync(source); @@ -4851,24 +5045,28 @@ class FakeFS { this.mkdirpSync(destination); const directoryListing = baseFs.readdirSync(source); for (const entry of directoryListing) { - this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + this.copySync( + this.pathUtils.join(destination, entry), + baseFs.pathUtils.join(source, entry), + { baseFs, overwrite }, + ); } } else if (stat.isFile()) { if (!exists || overwrite) { - if (exists) - this.removeSync(destination); + if (exists) this.removeSync(destination); const content = baseFs.readFileSync(source); this.writeFileSync(destination, content); } } else if (stat.isSymbolicLink()) { if (!exists || overwrite) { - if (exists) - this.removeSync(destination); + if (exists) this.removeSync(destination); const target = baseFs.readlinkSync(source); this.symlinkSync(convertPath(this.pathUtils, target), destination); } } else { - throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + throw new Error( + `Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`, + ); } const mode = stat.mode & 511; this.chmodSync(destination, mode); @@ -4884,21 +5082,19 @@ class FakeFS { let current = Buffer.alloc(0); try { current = await this.readFilePromise(p); - } catch { - } - if (Buffer.compare(current, content) === 0) - return; + } catch {} + if (Buffer.compare(current, content) === 0) return; await this.writeFilePromise(p, content, { mode }); } async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { let current = ``; try { current = await this.readFilePromise(p, `utf8`); - } catch { - } - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; - if (current === normalizedContent) - return; + } catch {} + const normalizedContent = automaticNewlines + ? normalizeLineEndings(current, content) + : content; + if (current === normalizedContent) return; await this.writeFilePromise(p, normalizedContent, { mode }); } changeFileSync(p, content, opts = {}) { @@ -4912,21 +5108,19 @@ class FakeFS { let current = Buffer.alloc(0); try { current = this.readFileSync(p); - } catch { - } - if (Buffer.compare(current, content) === 0) - return; + } catch {} + if (Buffer.compare(current, content) === 0) return; this.writeFileSync(p, content, { mode }); } changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { let current = ``; try { current = this.readFileSync(p, `utf8`); - } catch { - } - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; - if (current === normalizedContent) - return; + } catch {} + const normalizedContent = automaticNewlines + ? normalizeLineEndings(current, content) + : content; + if (current === normalizedContent) return; this.writeFileSync(p, normalizedContent, { mode }); } async movePromise(fromP, toP) { @@ -4977,17 +5171,18 @@ class FakeFS { fd = await this.openPromise(lockPath, `wx`); } catch (error) { if (error.code === `EEXIST`) { - if (!await isAlive()) { + if (!(await isAlive())) { try { await this.unlinkPromise(lockPath); continue; - } catch { - } + } catch {} } if (Date.now() - startTime < 60 * 1e3) { await new Promise((resolve) => setTimeout(resolve, interval)); } else { - throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + throw new Error( + `Couldn't acquire a lock in a reasonable time (via ${lockPath})`, + ); } } else { throw error; @@ -5001,8 +5196,7 @@ class FakeFS { try { await this.closePromise(fd); await this.unlinkPromise(lockPath); - } catch { - } + } catch {} } } async readJsonPromise(p) { @@ -5025,26 +5219,30 @@ class FakeFS { } async writeJsonPromise(p, data, { compact = false } = {}) { const space = compact ? 0 : 2; - return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} -`); + return await this.writeFilePromise( + p, + `${JSON.stringify(data, null, space)} +`, + ); } writeJsonSync(p, data, { compact = false } = {}) { const space = compact ? 0 : 2; - return this.writeFileSync(p, `${JSON.stringify(data, null, space)} -`); + return this.writeFileSync( + p, + `${JSON.stringify(data, null, space)} +`, + ); } async preserveTimePromise(p, cb) { const stat = await this.lstatPromise(p); const result = await cb(); - if (typeof result !== `undefined`) - p = result; + if (typeof result !== `undefined`) p = result; await this.lutimesPromise(p, stat.atime, stat.mtime); } async preserveTimeSync(p, cb) { const stat = this.lstatSync(p); const result = cb(); - if (typeof result !== `undefined`) - p = result; + if (typeof result !== `undefined`) p = result; this.lutimesSync(p, stat.atime, stat.mtime); } } @@ -5055,13 +5253,18 @@ class BasePortableFakeFS extends FakeFS { } function getEndOfLine(content) { const matches = content.match(/\r?\n/g); - if (matches === null) - return os.EOL; - const crlf = matches.filter((nl) => nl === `\r -`).length; + if (matches === null) return os.EOL; + const crlf = matches.filter( + (nl) => + nl === + `\r +`, + ).length; const lf = matches.length - crlf; - return crlf > lf ? `\r -` : ` + return crlf > lf + ? `\r +` + : ` `; } function normalizeLineEndings(originalContent, newContent) { @@ -5085,10 +5288,15 @@ class ProxiedFS extends FakeFS { return this.baseFs.openSync(this.mapToBase(p), flags, mode); } async opendirPromise(p, opts) { - return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + return Object.assign( + await this.baseFs.opendirPromise(this.mapToBase(p), opts), + { path: p }, + ); } opendirSync(p, opts) { - return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { + path: p, + }); } async readPromise(fd, buffer, offset, length, position) { return await this.baseFs.readPromise(fd, buffer, offset, length, position); @@ -5100,7 +5308,13 @@ class ProxiedFS extends FakeFS { if (typeof buffer === `string`) { return await this.baseFs.writePromise(fd, buffer, offset); } else { - return await this.baseFs.writePromise(fd, buffer, offset, length, position); + return await this.baseFs.writePromise( + fd, + buffer, + offset, + length, + position, + ); } } writeSync(fd, buffer, offset, length, position) { @@ -5117,13 +5331,21 @@ class ProxiedFS extends FakeFS { this.baseFs.closeSync(fd); } createReadStream(p, opts) { - return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + return this.baseFs.createReadStream( + p !== null ? this.mapToBase(p) : p, + opts, + ); } createWriteStream(p, opts) { - return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + return this.baseFs.createWriteStream( + p !== null ? this.mapToBase(p) : p, + opts, + ); } async realpathPromise(p) { - return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + return this.mapFromBase( + await this.baseFs.realpathPromise(this.mapToBase(p)), + ); } realpathSync(p) { return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); @@ -5183,16 +5405,27 @@ class ProxiedFS extends FakeFS { return this.baseFs.chownSync(this.mapToBase(p), uid, gid); } async renamePromise(oldP, newP) { - return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + return this.baseFs.renamePromise( + this.mapToBase(oldP), + this.mapToBase(newP), + ); } renameSync(oldP, newP) { return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); } async copyFilePromise(sourceP, destP, flags = 0) { - return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + return this.baseFs.copyFilePromise( + this.mapToBase(sourceP), + this.mapToBase(destP), + flags, + ); } copyFileSync(sourceP, destP, flags = 0) { - return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + return this.baseFs.copyFileSync( + this.mapToBase(sourceP), + this.mapToBase(destP), + flags, + ); } async appendFilePromise(p, content, opts) { return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); @@ -5243,25 +5476,41 @@ class ProxiedFS extends FakeFS { return this.baseFs.rmSync(this.mapToBase(p), opts); } async linkPromise(existingP, newP) { - return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + return this.baseFs.linkPromise( + this.mapToBase(existingP), + this.mapToBase(newP), + ); } linkSync(existingP, newP) { - return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + return this.baseFs.linkSync( + this.mapToBase(existingP), + this.mapToBase(newP), + ); } async symlinkPromise(target, p, type) { const mappedP = this.mapToBase(p); if (this.pathUtils.isAbsolute(target)) return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + const mappedAbsoluteTarget = this.mapToBase( + this.pathUtils.join(this.pathUtils.dirname(p), target), + ); + const mappedTarget = this.baseFs.pathUtils.relative( + this.baseFs.pathUtils.dirname(mappedP), + mappedAbsoluteTarget, + ); return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); } symlinkSync(target, p, type) { const mappedP = this.mapToBase(p); if (this.pathUtils.isAbsolute(target)) return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + const mappedAbsoluteTarget = this.mapToBase( + this.pathUtils.join(this.pathUtils.dirname(p), target), + ); + const mappedTarget = this.baseFs.pathUtils.relative( + this.baseFs.pathUtils.dirname(mappedP), + mappedAbsoluteTarget, + ); return this.baseFs.symlinkSync(mappedTarget, mappedP, type); } async readFilePromise(p, encoding) { @@ -5277,7 +5526,9 @@ class ProxiedFS extends FakeFS { return this.baseFs.readdirSync(this.mapToBase(p), opts); } async readlinkPromise(p) { - return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + return this.mapFromBase( + await this.baseFs.readlinkPromise(this.mapToBase(p)), + ); } readlinkSync(p) { return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); @@ -5299,7 +5550,7 @@ class ProxiedFS extends FakeFS { this.mapToBase(p), // @ts-expect-error - reason TBS a, - b + b, ); } watchFile(p, a, b) { @@ -5307,7 +5558,7 @@ class ProxiedFS extends FakeFS { this.mapToBase(p), // @ts-expect-error - reason TBS a, - b + b, ); } unwatchFile(p, cb) { @@ -5345,7 +5596,12 @@ class NodeFS extends BasePortableFakeFS { } async openPromise(p, flags, mode) { return await new Promise((resolve, reject) => { - this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + this.realFs.open( + npath.fromPortablePath(p), + flags, + mode, + this.makeCallback(resolve, reject), + ); }); } openSync(p, flags, mode) { @@ -5354,39 +5610,56 @@ class NodeFS extends BasePortableFakeFS { async opendirPromise(p, opts) { return await new Promise((resolve, reject) => { if (typeof opts !== `undefined`) { - this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.opendir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.opendir( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }).then((dir) => { const dirWithFixedPath = dir; Object.defineProperty(dirWithFixedPath, `path`, { value: p, configurable: true, - writable: true + writable: true, }); return dirWithFixedPath; }); } opendirSync(p, opts) { - const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dir = + typeof opts !== `undefined` + ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) + : this.realFs.opendirSync(npath.fromPortablePath(p)); const dirWithFixedPath = dir; Object.defineProperty(dirWithFixedPath, `path`, { value: p, configurable: true, - writable: true + writable: true, }); return dirWithFixedPath; } async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { return await new Promise((resolve, reject) => { - this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { - if (error) { - reject(error); - } else { - resolve(bytesRead); - } - }); + this.realFs.read( + fd, + buffer, + offset, + length, + position, + (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }, + ); }); } readSync(fd, buffer, offset, length, position) { @@ -5395,9 +5668,21 @@ class NodeFS extends BasePortableFakeFS { async writePromise(fd, buffer, offset, length, position) { return await new Promise((resolve, reject) => { if (typeof buffer === `string`) { - return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + return this.realFs.write( + fd, + buffer, + offset, + this.makeCallback(resolve, reject), + ); } else { - return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + return this.realFs.write( + fd, + buffer, + offset, + length, + position, + this.makeCallback(resolve, reject), + ); } }); } @@ -5426,13 +5711,19 @@ class NodeFS extends BasePortableFakeFS { } async realpathPromise(p) { return await new Promise((resolve, reject) => { - this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + this.realFs.realpath( + npath.fromPortablePath(p), + {}, + this.makeCallback(resolve, reject), + ); }).then((path) => { return npath.toPortablePath(path); }); } realpathSync(p) { - return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + return npath.toPortablePath( + this.realFs.realpathSync(npath.fromPortablePath(p), {}), + ); } async existsPromise(p) { return await new Promise((resolve) => { @@ -5444,7 +5735,11 @@ class NodeFS extends BasePortableFakeFS { } async accessPromise(p, mode) { return await new Promise((resolve, reject) => { - this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + this.realFs.access( + npath.fromPortablePath(p), + mode, + this.makeCallback(resolve, reject), + ); }); } existsSync(p) { @@ -5453,9 +5748,16 @@ class NodeFS extends BasePortableFakeFS { async statPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.stat( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.stat( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -5485,9 +5787,16 @@ class NodeFS extends BasePortableFakeFS { async lstatPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.lstat( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.lstat( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -5508,7 +5817,11 @@ class NodeFS extends BasePortableFakeFS { } async chmodPromise(p, mask) { return await new Promise((resolve, reject) => { - this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + this.realFs.chmod( + npath.fromPortablePath(p), + mask, + this.makeCallback(resolve, reject), + ); }); } chmodSync(p, mask) { @@ -5524,7 +5837,12 @@ class NodeFS extends BasePortableFakeFS { } async chownPromise(p, uid, gid) { return await new Promise((resolve, reject) => { - this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + this.realFs.chown( + npath.fromPortablePath(p), + uid, + gid, + this.makeCallback(resolve, reject), + ); }); } chownSync(p, uid, gid) { @@ -5532,27 +5850,53 @@ class NodeFS extends BasePortableFakeFS { } async renamePromise(oldP, newP) { return await new Promise((resolve, reject) => { - this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + this.realFs.rename( + npath.fromPortablePath(oldP), + npath.fromPortablePath(newP), + this.makeCallback(resolve, reject), + ); }); } renameSync(oldP, newP) { - return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + return this.realFs.renameSync( + npath.fromPortablePath(oldP), + npath.fromPortablePath(newP), + ); } async copyFilePromise(sourceP, destP, flags = 0) { return await new Promise((resolve, reject) => { - this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + this.realFs.copyFile( + npath.fromPortablePath(sourceP), + npath.fromPortablePath(destP), + flags, + this.makeCallback(resolve, reject), + ); }); } copyFileSync(sourceP, destP, flags = 0) { - return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + return this.realFs.copyFileSync( + npath.fromPortablePath(sourceP), + npath.fromPortablePath(destP), + flags, + ); } async appendFilePromise(p, content, opts) { return await new Promise((resolve, reject) => { - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + const fsNativePath = + typeof p === `string` ? npath.fromPortablePath(p) : p; if (opts) { - this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + this.realFs.appendFile( + fsNativePath, + content, + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + this.realFs.appendFile( + fsNativePath, + content, + this.makeCallback(resolve, reject), + ); } }); } @@ -5566,11 +5910,21 @@ class NodeFS extends BasePortableFakeFS { } async writeFilePromise(p, content, opts) { return await new Promise((resolve, reject) => { - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + const fsNativePath = + typeof p === `string` ? npath.fromPortablePath(p) : p; if (opts) { - this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + this.realFs.writeFile( + fsNativePath, + content, + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + this.realFs.writeFile( + fsNativePath, + content, + this.makeCallback(resolve, reject), + ); } }); } @@ -5584,7 +5938,10 @@ class NodeFS extends BasePortableFakeFS { } async unlinkPromise(p) { return await new Promise((resolve, reject) => { - this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.unlink( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); }); } unlinkSync(p) { @@ -5592,7 +5949,12 @@ class NodeFS extends BasePortableFakeFS { } async utimesPromise(p, atime, mtime) { return await new Promise((resolve, reject) => { - this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + this.realFs.utimes( + npath.fromPortablePath(p), + atime, + mtime, + this.makeCallback(resolve, reject), + ); }); } utimesSync(p, atime, mtime) { @@ -5600,7 +5962,12 @@ class NodeFS extends BasePortableFakeFS { } async lutimesPromise(p, atime, mtime) { return await new Promise((resolve, reject) => { - this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + this.realFs.lutimes( + npath.fromPortablePath(p), + atime, + mtime, + this.makeCallback(resolve, reject), + ); }); } lutimesSync(p, atime, mtime) { @@ -5608,7 +5975,11 @@ class NodeFS extends BasePortableFakeFS { } async mkdirPromise(p, opts) { return await new Promise((resolve, reject) => { - this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.mkdir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); }); } mkdirSync(p, opts) { @@ -5617,9 +5988,16 @@ class NodeFS extends BasePortableFakeFS { async rmdirPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.rmdir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.rmdir( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -5629,9 +6007,16 @@ class NodeFS extends BasePortableFakeFS { async rmPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.rm( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.rm( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -5640,24 +6025,45 @@ class NodeFS extends BasePortableFakeFS { } async linkPromise(existingP, newP) { return await new Promise((resolve, reject) => { - this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + this.realFs.link( + npath.fromPortablePath(existingP), + npath.fromPortablePath(newP), + this.makeCallback(resolve, reject), + ); }); } linkSync(existingP, newP) { - return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + return this.realFs.linkSync( + npath.fromPortablePath(existingP), + npath.fromPortablePath(newP), + ); } async symlinkPromise(target, p, type) { return await new Promise((resolve, reject) => { - this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + this.realFs.symlink( + npath.fromPortablePath(target.replace(/\/+$/, ``)), + npath.fromPortablePath(p), + type, + this.makeCallback(resolve, reject), + ); }); } symlinkSync(target, p, type) { - return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + return this.realFs.symlinkSync( + npath.fromPortablePath(target.replace(/\/+$/, ``)), + npath.fromPortablePath(p), + type, + ); } async readFilePromise(p, encoding) { return await new Promise((resolve, reject) => { - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; - this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + const fsNativePath = + typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile( + fsNativePath, + encoding, + this.makeCallback(resolve, reject), + ); }); } readFileSync(p, encoding) { @@ -5669,15 +6075,36 @@ class NodeFS extends BasePortableFakeFS { if (opts) { if (opts.recursive && process.platform === `win32`) { if (opts.withFileTypes) { - this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + opts, + this.makeCallback( + (results) => resolve(results.map(direntToPortable)), + reject, + ), + ); } else { - this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + opts, + this.makeCallback( + (results) => resolve(results.map(npath.toPortablePath)), + reject, + ), + ); } } else { - this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } } else { - this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -5685,9 +6112,13 @@ class NodeFS extends BasePortableFakeFS { if (opts) { if (opts.recursive && process.platform === `win32`) { if (opts.withFileTypes) { - return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + return this.realFs + .readdirSync(npath.fromPortablePath(p), opts) + .map(direntToPortable); } else { - return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + return this.realFs + .readdirSync(npath.fromPortablePath(p), opts) + .map(npath.toPortablePath); } } else { return this.realFs.readdirSync(npath.fromPortablePath(p), opts); @@ -5698,17 +6129,26 @@ class NodeFS extends BasePortableFakeFS { } async readlinkPromise(p) { return await new Promise((resolve, reject) => { - this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.readlink( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); }).then((path) => { return npath.toPortablePath(path); }); } readlinkSync(p) { - return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + return npath.toPortablePath( + this.realFs.readlinkSync(npath.fromPortablePath(p)), + ); } async truncatePromise(p, len) { return await new Promise((resolve, reject) => { - this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + this.realFs.truncate( + npath.fromPortablePath(p), + len, + this.makeCallback(resolve, reject), + ); }); } truncateSync(p, len) { @@ -5727,7 +6167,7 @@ class NodeFS extends BasePortableFakeFS { npath.fromPortablePath(p), // @ts-expect-error - reason TBS a, - b + b, ); } watchFile(p, a, b) { @@ -5735,7 +6175,7 @@ class NodeFS extends BasePortableFakeFS { npath.fromPortablePath(p), // @ts-expect-error - reason TBS a, - b + b, ); } unwatchFile(p, cb) { @@ -5769,9 +6209,25 @@ class MountFS extends BasePortableFakeFS { isMount = /* @__PURE__ */ new Set(); notMount = /* @__PURE__ */ new Set(); realPaths = /* @__PURE__ */ new Map(); - constructor({ baseFs = new NodeFS(), filter = null, magicByte = 42, maxOpenFiles = Infinity, useCache = true, maxAge = 5e3, typeCheck = fs.constants.S_IFREG, getMountPoint, factoryPromise, factorySync }) { - if (Math.floor(magicByte) !== magicByte || !(magicByte > 1 && magicByte <= 127)) - throw new Error(`The magic byte must be set to a round value between 1 and 127 included`); + constructor({ + baseFs = new NodeFS(), + filter = null, + magicByte = 42, + maxOpenFiles = Infinity, + useCache = true, + maxAge = 5e3, + typeCheck = fs.constants.S_IFREG, + getMountPoint, + factoryPromise, + factorySync, + }) { + if ( + Math.floor(magicByte) !== magicByte || + !(magicByte > 1 && magicByte <= 127) + ) + throw new Error( + `The magic byte must be set to a round value between 1 and 127 included`, + ); super(); this.baseFs = baseFs; this.mountInstances = useCache ? /* @__PURE__ */ new Map() : null; @@ -5817,43 +6273,69 @@ class MountFS extends BasePortableFakeFS { return remappedFd; } async openPromise(p, flags, mode) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.openPromise(p, flags, mode); - }, async (mountFs, { subPath }) => { - return this.remapFd(mountFs, await mountFs.openPromise(subPath, flags, mode)); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.openPromise(p, flags, mode); + }, + async (mountFs, { subPath }) => { + return this.remapFd( + mountFs, + await mountFs.openPromise(subPath, flags, mode), + ); + }, + ); } openSync(p, flags, mode) { - return this.makeCallSync(p, () => { - return this.baseFs.openSync(p, flags, mode); - }, (mountFs, { subPath }) => { - return this.remapFd(mountFs, mountFs.openSync(subPath, flags, mode)); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.openSync(p, flags, mode); + }, + (mountFs, { subPath }) => { + return this.remapFd(mountFs, mountFs.openSync(subPath, flags, mode)); + }, + ); } async opendirPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.opendirPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.opendirPromise(subPath, opts); - }, { - requireSubpath: false - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.opendirPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.opendirPromise(subPath, opts); + }, + { + requireSubpath: false, + }, + ); } opendirSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.opendirSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.opendirSync(subPath, opts); - }, { - requireSubpath: false - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.opendirSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.opendirSync(subPath, opts); + }, + { + requireSubpath: false, + }, + ); } async readPromise(fd, buffer, offset, length, position) { if ((fd & MOUNT_MASK) !== this.magic) - return await this.baseFs.readPromise(fd, buffer, offset, length, position); + return await this.baseFs.readPromise( + fd, + buffer, + offset, + length, + position, + ); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`read`); + if (typeof entry === `undefined`) throw EBADF(`read`); const [mountFs, realFd] = entry; return await mountFs.readPromise(realFd, buffer, offset, length, position); } @@ -5861,8 +6343,7 @@ class MountFS extends BasePortableFakeFS { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.readSync(fd, buffer, offset, length, position); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`readSync`); + if (typeof entry === `undefined`) throw EBADF(`readSync`); const [mountFs, realFd] = entry; return mountFs.readSync(realFd, buffer, offset, length, position); } @@ -5871,17 +6352,28 @@ class MountFS extends BasePortableFakeFS { if (typeof buffer === `string`) { return await this.baseFs.writePromise(fd, buffer, offset); } else { - return await this.baseFs.writePromise(fd, buffer, offset, length, position); + return await this.baseFs.writePromise( + fd, + buffer, + offset, + length, + position, + ); } } const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`write`); + if (typeof entry === `undefined`) throw EBADF(`write`); const [mountFs, realFd] = entry; if (typeof buffer === `string`) { return await mountFs.writePromise(realFd, buffer, offset); } else { - return await mountFs.writePromise(realFd, buffer, offset, length, position); + return await mountFs.writePromise( + realFd, + buffer, + offset, + length, + position, + ); } } writeSync(fd, buffer, offset, length, position) { @@ -5893,8 +6385,7 @@ class MountFS extends BasePortableFakeFS { } } const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`writeSync`); + if (typeof entry === `undefined`) throw EBADF(`writeSync`); const [mountFs, realFd] = entry; if (typeof buffer === `string`) { return mountFs.writeSync(realFd, buffer, offset); @@ -5906,114 +6397,162 @@ class MountFS extends BasePortableFakeFS { if ((fd & MOUNT_MASK) !== this.magic) return await this.baseFs.closePromise(fd); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`close`); + if (typeof entry === `undefined`) throw EBADF(`close`); this.fdMap.delete(fd); const [mountFs, realFd] = entry; return await mountFs.closePromise(realFd); } closeSync(fd) { - if ((fd & MOUNT_MASK) !== this.magic) - return this.baseFs.closeSync(fd); + if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.closeSync(fd); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`closeSync`); + if (typeof entry === `undefined`) throw EBADF(`closeSync`); this.fdMap.delete(fd); const [mountFs, realFd] = entry; return mountFs.closeSync(realFd); } createReadStream(p, opts) { - if (p === null) - return this.baseFs.createReadStream(p, opts); - return this.makeCallSync(p, () => { - return this.baseFs.createReadStream(p, opts); - }, (mountFs, { archivePath, subPath }) => { - const stream = mountFs.createReadStream(subPath, opts); - stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath)); - return stream; - }); + if (p === null) return this.baseFs.createReadStream(p, opts); + return this.makeCallSync( + p, + () => { + return this.baseFs.createReadStream(p, opts); + }, + (mountFs, { archivePath, subPath }) => { + const stream = mountFs.createReadStream(subPath, opts); + stream.path = npath.fromPortablePath( + this.pathUtils.join(archivePath, subPath), + ); + return stream; + }, + ); } createWriteStream(p, opts) { - if (p === null) - return this.baseFs.createWriteStream(p, opts); - return this.makeCallSync(p, () => { - return this.baseFs.createWriteStream(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.createWriteStream(subPath, opts); - }); + if (p === null) return this.baseFs.createWriteStream(p, opts); + return this.makeCallSync( + p, + () => { + return this.baseFs.createWriteStream(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.createWriteStream(subPath, opts); + }, + ); } async realpathPromise(p) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.realpathPromise(p); - }, async (mountFs, { archivePath, subPath }) => { - let realArchivePath = this.realPaths.get(archivePath); - if (typeof realArchivePath === `undefined`) { - realArchivePath = await this.baseFs.realpathPromise(archivePath); - this.realPaths.set(archivePath, realArchivePath); - } - return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await mountFs.realpathPromise(subPath))); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.realpathPromise(p); + }, + async (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = await this.baseFs.realpathPromise(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join( + realArchivePath, + this.pathUtils.relative( + PortablePath.root, + await mountFs.realpathPromise(subPath), + ), + ); + }, + ); } realpathSync(p) { - return this.makeCallSync(p, () => { - return this.baseFs.realpathSync(p); - }, (mountFs, { archivePath, subPath }) => { - let realArchivePath = this.realPaths.get(archivePath); - if (typeof realArchivePath === `undefined`) { - realArchivePath = this.baseFs.realpathSync(archivePath); - this.realPaths.set(archivePath, realArchivePath); - } - return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, mountFs.realpathSync(subPath))); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.realpathSync(p); + }, + (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = this.baseFs.realpathSync(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join( + realArchivePath, + this.pathUtils.relative( + PortablePath.root, + mountFs.realpathSync(subPath), + ), + ); + }, + ); } async existsPromise(p) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.existsPromise(p); - }, async (mountFs, { subPath }) => { - return await mountFs.existsPromise(subPath); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.existsPromise(p); + }, + async (mountFs, { subPath }) => { + return await mountFs.existsPromise(subPath); + }, + ); } existsSync(p) { - return this.makeCallSync(p, () => { - return this.baseFs.existsSync(p); - }, (mountFs, { subPath }) => { - return mountFs.existsSync(subPath); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.existsSync(p); + }, + (mountFs, { subPath }) => { + return mountFs.existsSync(subPath); + }, + ); } async accessPromise(p, mode) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.accessPromise(p, mode); - }, async (mountFs, { subPath }) => { - return await mountFs.accessPromise(subPath, mode); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.accessPromise(p, mode); + }, + async (mountFs, { subPath }) => { + return await mountFs.accessPromise(subPath, mode); + }, + ); } accessSync(p, mode) { - return this.makeCallSync(p, () => { - return this.baseFs.accessSync(p, mode); - }, (mountFs, { subPath }) => { - return mountFs.accessSync(subPath, mode); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.accessSync(p, mode); + }, + (mountFs, { subPath }) => { + return mountFs.accessSync(subPath, mode); + }, + ); } async statPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.statPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.statPromise(subPath, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.statPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.statPromise(subPath, opts); + }, + ); } statSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.statSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.statSync(subPath, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.statSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.statSync(subPath, opts); + }, + ); } async fstatPromise(fd, opts) { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.fstatPromise(fd, opts); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fstat`); + if (typeof entry === `undefined`) throw EBADF(`fstat`); const [mountFs, realFd] = entry; return mountFs.fstatPromise(realFd, opts); } @@ -6021,31 +6560,37 @@ class MountFS extends BasePortableFakeFS { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.fstatSync(fd, opts); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fstatSync`); + if (typeof entry === `undefined`) throw EBADF(`fstatSync`); const [mountFs, realFd] = entry; return mountFs.fstatSync(realFd, opts); } async lstatPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.lstatPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.lstatPromise(subPath, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.lstatPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.lstatPromise(subPath, opts); + }, + ); } lstatSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.lstatSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.lstatSync(subPath, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.lstatSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.lstatSync(subPath, opts); + }, + ); } async fchmodPromise(fd, mask) { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.fchmodPromise(fd, mask); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fchmod`); + if (typeof entry === `undefined`) throw EBADF(`fchmod`); const [mountFs, realFd] = entry; return mountFs.fchmodPromise(realFd, mask); } @@ -6053,31 +6598,37 @@ class MountFS extends BasePortableFakeFS { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.fchmodSync(fd, mask); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fchmodSync`); + if (typeof entry === `undefined`) throw EBADF(`fchmodSync`); const [mountFs, realFd] = entry; return mountFs.fchmodSync(realFd, mask); } async chmodPromise(p, mask) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.chmodPromise(p, mask); - }, async (mountFs, { subPath }) => { - return await mountFs.chmodPromise(subPath, mask); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.chmodPromise(p, mask); + }, + async (mountFs, { subPath }) => { + return await mountFs.chmodPromise(subPath, mask); + }, + ); } chmodSync(p, mask) { - return this.makeCallSync(p, () => { - return this.baseFs.chmodSync(p, mask); - }, (mountFs, { subPath }) => { - return mountFs.chmodSync(subPath, mask); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.chmodSync(p, mask); + }, + (mountFs, { subPath }) => { + return mountFs.chmodSync(subPath, mask); + }, + ); } async fchownPromise(fd, uid, gid) { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.fchownPromise(fd, uid, gid); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fchown`); + if (typeof entry === `undefined`) throw EBADF(`fchown`); const [zipFs, realFd] = entry; return zipFs.fchownPromise(realFd, uid, gid); } @@ -6085,333 +6636,552 @@ class MountFS extends BasePortableFakeFS { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.fchownSync(fd, uid, gid); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fchownSync`); + if (typeof entry === `undefined`) throw EBADF(`fchownSync`); const [zipFs, realFd] = entry; return zipFs.fchownSync(realFd, uid, gid); } async chownPromise(p, uid, gid) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.chownPromise(p, uid, gid); - }, async (mountFs, { subPath }) => { - return await mountFs.chownPromise(subPath, uid, gid); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.chownPromise(p, uid, gid); + }, + async (mountFs, { subPath }) => { + return await mountFs.chownPromise(subPath, uid, gid); + }, + ); } chownSync(p, uid, gid) { - return this.makeCallSync(p, () => { - return this.baseFs.chownSync(p, uid, gid); - }, (mountFs, { subPath }) => { - return mountFs.chownSync(subPath, uid, gid); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.chownSync(p, uid, gid); + }, + (mountFs, { subPath }) => { + return mountFs.chownSync(subPath, uid, gid); + }, + ); } async renamePromise(oldP, newP) { - return await this.makeCallPromise(oldP, async () => { - return await this.makeCallPromise(newP, async () => { - return await this.baseFs.renamePromise(oldP, newP); - }, async () => { - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); - }); - }, async (mountFsO, { subPath: subPathO }) => { - return await this.makeCallPromise(newP, async () => { - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); - }, async (mountFsN, { subPath: subPathN }) => { - if (mountFsO !== mountFsN) { - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); - } else { - return await mountFsO.renamePromise(subPathO, subPathN); - } - }); - }); + return await this.makeCallPromise( + oldP, + async () => { + return await this.makeCallPromise( + newP, + async () => { + return await this.baseFs.renamePromise(oldP, newP); + }, + async () => { + throw Object.assign( + new Error(`EEXDEV: cross-device link not permitted`), + { code: `EEXDEV` }, + ); + }, + ); + }, + async (mountFsO, { subPath: subPathO }) => { + return await this.makeCallPromise( + newP, + async () => { + throw Object.assign( + new Error(`EEXDEV: cross-device link not permitted`), + { code: `EEXDEV` }, + ); + }, + async (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign( + new Error(`EEXDEV: cross-device link not permitted`), + { code: `EEXDEV` }, + ); + } else { + return await mountFsO.renamePromise(subPathO, subPathN); + } + }, + ); + }, + ); } renameSync(oldP, newP) { - return this.makeCallSync(oldP, () => { - return this.makeCallSync(newP, () => { - return this.baseFs.renameSync(oldP, newP); - }, () => { - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); - }); - }, (mountFsO, { subPath: subPathO }) => { - return this.makeCallSync(newP, () => { - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); - }, (mountFsN, { subPath: subPathN }) => { - if (mountFsO !== mountFsN) { - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); - } else { - return mountFsO.renameSync(subPathO, subPathN); - } - }); - }); + return this.makeCallSync( + oldP, + () => { + return this.makeCallSync( + newP, + () => { + return this.baseFs.renameSync(oldP, newP); + }, + () => { + throw Object.assign( + new Error(`EEXDEV: cross-device link not permitted`), + { code: `EEXDEV` }, + ); + }, + ); + }, + (mountFsO, { subPath: subPathO }) => { + return this.makeCallSync( + newP, + () => { + throw Object.assign( + new Error(`EEXDEV: cross-device link not permitted`), + { code: `EEXDEV` }, + ); + }, + (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign( + new Error(`EEXDEV: cross-device link not permitted`), + { code: `EEXDEV` }, + ); + } else { + return mountFsO.renameSync(subPathO, subPathN); + } + }, + ); + }, + ); } async copyFilePromise(sourceP, destP, flags = 0) { const fallback = async (sourceFs, sourceP2, destFs, destP2) => { if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) - throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); - if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2)) - throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + throw Object.assign( + new Error( + `EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`, + ), + { code: `EXDEV` }, + ); + if ( + flags & fs.constants.COPYFILE_EXCL && + (await this.existsPromise(sourceP2)) + ) + throw Object.assign( + new Error( + `EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`, + ), + { code: `EEXIST` }, + ); let content; try { content = await sourceFs.readFilePromise(sourceP2); } catch { - throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + throw Object.assign( + new Error( + `EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`, + ), + { code: `EINVAL` }, + ); } await destFs.writeFilePromise(destP2, content); }; - return await this.makeCallPromise(sourceP, async () => { - return await this.makeCallPromise(destP, async () => { - return await this.baseFs.copyFilePromise(sourceP, destP, flags); - }, async (mountFsD, { subPath: subPathD }) => { - return await fallback(this.baseFs, sourceP, mountFsD, subPathD); - }); - }, async (mountFsS, { subPath: subPathS }) => { - return await this.makeCallPromise(destP, async () => { - return await fallback(mountFsS, subPathS, this.baseFs, destP); - }, async (mountFsD, { subPath: subPathD }) => { - if (mountFsS !== mountFsD) { - return await fallback(mountFsS, subPathS, mountFsD, subPathD); - } else { - return await mountFsS.copyFilePromise(subPathS, subPathD, flags); - } - }); - }); + return await this.makeCallPromise( + sourceP, + async () => { + return await this.makeCallPromise( + destP, + async () => { + return await this.baseFs.copyFilePromise(sourceP, destP, flags); + }, + async (mountFsD, { subPath: subPathD }) => { + return await fallback(this.baseFs, sourceP, mountFsD, subPathD); + }, + ); + }, + async (mountFsS, { subPath: subPathS }) => { + return await this.makeCallPromise( + destP, + async () => { + return await fallback(mountFsS, subPathS, this.baseFs, destP); + }, + async (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return await fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return await mountFsS.copyFilePromise(subPathS, subPathD, flags); + } + }, + ); + }, + ); } copyFileSync(sourceP, destP, flags = 0) { const fallback = (sourceFs, sourceP2, destFs, destP2) => { if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) - throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + throw Object.assign( + new Error( + `EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`, + ), + { code: `EXDEV` }, + ); if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2)) - throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + throw Object.assign( + new Error( + `EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`, + ), + { code: `EEXIST` }, + ); let content; try { content = sourceFs.readFileSync(sourceP2); } catch { - throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + throw Object.assign( + new Error( + `EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`, + ), + { code: `EINVAL` }, + ); } destFs.writeFileSync(destP2, content); }; - return this.makeCallSync(sourceP, () => { - return this.makeCallSync(destP, () => { - return this.baseFs.copyFileSync(sourceP, destP, flags); - }, (mountFsD, { subPath: subPathD }) => { - return fallback(this.baseFs, sourceP, mountFsD, subPathD); - }); - }, (mountFsS, { subPath: subPathS }) => { - return this.makeCallSync(destP, () => { - return fallback(mountFsS, subPathS, this.baseFs, destP); - }, (mountFsD, { subPath: subPathD }) => { - if (mountFsS !== mountFsD) { - return fallback(mountFsS, subPathS, mountFsD, subPathD); - } else { - return mountFsS.copyFileSync(subPathS, subPathD, flags); - } - }); - }); + return this.makeCallSync( + sourceP, + () => { + return this.makeCallSync( + destP, + () => { + return this.baseFs.copyFileSync(sourceP, destP, flags); + }, + (mountFsD, { subPath: subPathD }) => { + return fallback(this.baseFs, sourceP, mountFsD, subPathD); + }, + ); + }, + (mountFsS, { subPath: subPathS }) => { + return this.makeCallSync( + destP, + () => { + return fallback(mountFsS, subPathS, this.baseFs, destP); + }, + (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return mountFsS.copyFileSync(subPathS, subPathD, flags); + } + }, + ); + }, + ); } async appendFilePromise(p, content, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.appendFilePromise(p, content, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.appendFilePromise(subPath, content, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.appendFilePromise(p, content, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.appendFilePromise(subPath, content, opts); + }, + ); } appendFileSync(p, content, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.appendFileSync(p, content, opts); - }, (mountFs, { subPath }) => { - return mountFs.appendFileSync(subPath, content, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.appendFileSync(p, content, opts); + }, + (mountFs, { subPath }) => { + return mountFs.appendFileSync(subPath, content, opts); + }, + ); } async writeFilePromise(p, content, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.writeFilePromise(p, content, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.writeFilePromise(subPath, content, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.writeFilePromise(p, content, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.writeFilePromise(subPath, content, opts); + }, + ); } writeFileSync(p, content, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.writeFileSync(p, content, opts); - }, (mountFs, { subPath }) => { - return mountFs.writeFileSync(subPath, content, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.writeFileSync(p, content, opts); + }, + (mountFs, { subPath }) => { + return mountFs.writeFileSync(subPath, content, opts); + }, + ); } async unlinkPromise(p) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.unlinkPromise(p); - }, async (mountFs, { subPath }) => { - return await mountFs.unlinkPromise(subPath); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.unlinkPromise(p); + }, + async (mountFs, { subPath }) => { + return await mountFs.unlinkPromise(subPath); + }, + ); } unlinkSync(p) { - return this.makeCallSync(p, () => { - return this.baseFs.unlinkSync(p); - }, (mountFs, { subPath }) => { - return mountFs.unlinkSync(subPath); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.unlinkSync(p); + }, + (mountFs, { subPath }) => { + return mountFs.unlinkSync(subPath); + }, + ); } async utimesPromise(p, atime, mtime) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.utimesPromise(p, atime, mtime); - }, async (mountFs, { subPath }) => { - return await mountFs.utimesPromise(subPath, atime, mtime); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.utimesPromise(p, atime, mtime); + }, + async (mountFs, { subPath }) => { + return await mountFs.utimesPromise(subPath, atime, mtime); + }, + ); } utimesSync(p, atime, mtime) { - return this.makeCallSync(p, () => { - return this.baseFs.utimesSync(p, atime, mtime); - }, (mountFs, { subPath }) => { - return mountFs.utimesSync(subPath, atime, mtime); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.utimesSync(p, atime, mtime); + }, + (mountFs, { subPath }) => { + return mountFs.utimesSync(subPath, atime, mtime); + }, + ); } async lutimesPromise(p, atime, mtime) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.lutimesPromise(p, atime, mtime); - }, async (mountFs, { subPath }) => { - return await mountFs.lutimesPromise(subPath, atime, mtime); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.lutimesPromise(p, atime, mtime); + }, + async (mountFs, { subPath }) => { + return await mountFs.lutimesPromise(subPath, atime, mtime); + }, + ); } lutimesSync(p, atime, mtime) { - return this.makeCallSync(p, () => { - return this.baseFs.lutimesSync(p, atime, mtime); - }, (mountFs, { subPath }) => { - return mountFs.lutimesSync(subPath, atime, mtime); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.lutimesSync(p, atime, mtime); + }, + (mountFs, { subPath }) => { + return mountFs.lutimesSync(subPath, atime, mtime); + }, + ); } async mkdirPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.mkdirPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.mkdirPromise(subPath, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.mkdirPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.mkdirPromise(subPath, opts); + }, + ); } mkdirSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.mkdirSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.mkdirSync(subPath, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.mkdirSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.mkdirSync(subPath, opts); + }, + ); } async rmdirPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.rmdirPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.rmdirPromise(subPath, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.rmdirPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.rmdirPromise(subPath, opts); + }, + ); } rmdirSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.rmdirSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.rmdirSync(subPath, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.rmdirSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.rmdirSync(subPath, opts); + }, + ); } async rmPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.rmPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.rmPromise(subPath, opts); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.rmPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.rmPromise(subPath, opts); + }, + ); } rmSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.rmSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.rmSync(subPath, opts); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.rmSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.rmSync(subPath, opts); + }, + ); } async linkPromise(existingP, newP) { - return await this.makeCallPromise(newP, async () => { - return await this.baseFs.linkPromise(existingP, newP); - }, async (mountFs, { subPath }) => { - return await mountFs.linkPromise(existingP, subPath); - }); + return await this.makeCallPromise( + newP, + async () => { + return await this.baseFs.linkPromise(existingP, newP); + }, + async (mountFs, { subPath }) => { + return await mountFs.linkPromise(existingP, subPath); + }, + ); } linkSync(existingP, newP) { - return this.makeCallSync(newP, () => { - return this.baseFs.linkSync(existingP, newP); - }, (mountFs, { subPath }) => { - return mountFs.linkSync(existingP, subPath); - }); + return this.makeCallSync( + newP, + () => { + return this.baseFs.linkSync(existingP, newP); + }, + (mountFs, { subPath }) => { + return mountFs.linkSync(existingP, subPath); + }, + ); } async symlinkPromise(target, p, type) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.symlinkPromise(target, p, type); - }, async (mountFs, { subPath }) => { - return await mountFs.symlinkPromise(target, subPath); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.symlinkPromise(target, p, type); + }, + async (mountFs, { subPath }) => { + return await mountFs.symlinkPromise(target, subPath); + }, + ); } symlinkSync(target, p, type) { - return this.makeCallSync(p, () => { - return this.baseFs.symlinkSync(target, p, type); - }, (mountFs, { subPath }) => { - return mountFs.symlinkSync(target, subPath); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.symlinkSync(target, p, type); + }, + (mountFs, { subPath }) => { + return mountFs.symlinkSync(target, subPath); + }, + ); } async readFilePromise(p, encoding) { - return this.makeCallPromise(p, async () => { - return await this.baseFs.readFilePromise(p, encoding); - }, async (mountFs, { subPath }) => { - return await mountFs.readFilePromise(subPath, encoding); - }); + return this.makeCallPromise( + p, + async () => { + return await this.baseFs.readFilePromise(p, encoding); + }, + async (mountFs, { subPath }) => { + return await mountFs.readFilePromise(subPath, encoding); + }, + ); } readFileSync(p, encoding) { - return this.makeCallSync(p, () => { - return this.baseFs.readFileSync(p, encoding); - }, (mountFs, { subPath }) => { - return mountFs.readFileSync(subPath, encoding); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.readFileSync(p, encoding); + }, + (mountFs, { subPath }) => { + return mountFs.readFileSync(subPath, encoding); + }, + ); } async readdirPromise(p, opts) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.readdirPromise(p, opts); - }, async (mountFs, { subPath }) => { - return await mountFs.readdirPromise(subPath, opts); - }, { - requireSubpath: false - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.readdirPromise(p, opts); + }, + async (mountFs, { subPath }) => { + return await mountFs.readdirPromise(subPath, opts); + }, + { + requireSubpath: false, + }, + ); } readdirSync(p, opts) { - return this.makeCallSync(p, () => { - return this.baseFs.readdirSync(p, opts); - }, (mountFs, { subPath }) => { - return mountFs.readdirSync(subPath, opts); - }, { - requireSubpath: false - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.readdirSync(p, opts); + }, + (mountFs, { subPath }) => { + return mountFs.readdirSync(subPath, opts); + }, + { + requireSubpath: false, + }, + ); } async readlinkPromise(p) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.readlinkPromise(p); - }, async (mountFs, { subPath }) => { - return await mountFs.readlinkPromise(subPath); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.readlinkPromise(p); + }, + async (mountFs, { subPath }) => { + return await mountFs.readlinkPromise(subPath); + }, + ); } readlinkSync(p) { - return this.makeCallSync(p, () => { - return this.baseFs.readlinkSync(p); - }, (mountFs, { subPath }) => { - return mountFs.readlinkSync(subPath); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.readlinkSync(p); + }, + (mountFs, { subPath }) => { + return mountFs.readlinkSync(subPath); + }, + ); } async truncatePromise(p, len) { - return await this.makeCallPromise(p, async () => { - return await this.baseFs.truncatePromise(p, len); - }, async (mountFs, { subPath }) => { - return await mountFs.truncatePromise(subPath, len); - }); + return await this.makeCallPromise( + p, + async () => { + return await this.baseFs.truncatePromise(p, len); + }, + async (mountFs, { subPath }) => { + return await mountFs.truncatePromise(subPath, len); + }, + ); } truncateSync(p, len) { - return this.makeCallSync(p, () => { - return this.baseFs.truncateSync(p, len); - }, (mountFs, { subPath }) => { - return mountFs.truncateSync(subPath, len); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.truncateSync(p, len); + }, + (mountFs, { subPath }) => { + return mountFs.truncateSync(subPath, len); + }, + ); } async ftruncatePromise(fd, len) { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.ftruncatePromise(fd, len); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`ftruncate`); + if (typeof entry === `undefined`) throw EBADF(`ftruncate`); const [mountFs, realFd] = entry; return mountFs.ftruncatePromise(realFd, len); } @@ -6419,84 +7189,95 @@ class MountFS extends BasePortableFakeFS { if ((fd & MOUNT_MASK) !== this.magic) return this.baseFs.ftruncateSync(fd, len); const entry = this.fdMap.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`ftruncateSync`); + if (typeof entry === `undefined`) throw EBADF(`ftruncateSync`); const [mountFs, realFd] = entry; return mountFs.ftruncateSync(realFd, len); } watch(p, a, b) { - return this.makeCallSync(p, () => { - return this.baseFs.watch( - p, - // @ts-expect-error - reason TBS - a, - b - ); - }, (mountFs, { subPath }) => { - return mountFs.watch( - subPath, - // @ts-expect-error - reason TBS - a, - b - ); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.watch( + p, + // @ts-expect-error - reason TBS + a, + b, + ); + }, + (mountFs, { subPath }) => { + return mountFs.watch( + subPath, + // @ts-expect-error - reason TBS + a, + b, + ); + }, + ); } watchFile(p, a, b) { - return this.makeCallSync(p, () => { - return this.baseFs.watchFile( - p, - // @ts-expect-error - reason TBS - a, - b - ); - }, () => { - return watchFile(this, p, a, b); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.watchFile( + p, + // @ts-expect-error - reason TBS + a, + b, + ); + }, + () => { + return watchFile(this, p, a, b); + }, + ); } unwatchFile(p, cb) { - return this.makeCallSync(p, () => { - return this.baseFs.unwatchFile(p, cb); - }, () => { - return unwatchFile(this, p, cb); - }); + return this.makeCallSync( + p, + () => { + return this.baseFs.unwatchFile(p, cb); + }, + () => { + return unwatchFile(this, p, cb); + }, + ); } async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) { - if (typeof p !== `string`) - return await discard(); + if (typeof p !== `string`) return await discard(); const normalizedP = this.resolve(p); const mountInfo = this.findMount(normalizedP); - if (!mountInfo) - return await discard(); - if (requireSubpath && mountInfo.subPath === `/`) - return await discard(); - return await this.getMountPromise(mountInfo.archivePath, async (mountFs) => await accept(mountFs, mountInfo)); + if (!mountInfo) return await discard(); + if (requireSubpath && mountInfo.subPath === `/`) return await discard(); + return await this.getMountPromise( + mountInfo.archivePath, + async (mountFs) => await accept(mountFs, mountInfo), + ); } makeCallSync(p, discard, accept, { requireSubpath = true } = {}) { - if (typeof p !== `string`) - return discard(); + if (typeof p !== `string`) return discard(); const normalizedP = this.resolve(p); const mountInfo = this.findMount(normalizedP); - if (!mountInfo) - return discard(); - if (requireSubpath && mountInfo.subPath === `/`) - return discard(); - return this.getMountSync(mountInfo.archivePath, (mountFs) => accept(mountFs, mountInfo)); + if (!mountInfo) return discard(); + if (requireSubpath && mountInfo.subPath === `/`) return discard(); + return this.getMountSync(mountInfo.archivePath, (mountFs) => + accept(mountFs, mountInfo), + ); } findMount(p) { - if (this.filter && !this.filter.test(p)) - return null; + if (this.filter && !this.filter.test(p)) return null; let filePath = ``; while (true) { const pathPartWithArchive = p.substring(filePath.length); const mountPoint = this.getMountPoint(pathPartWithArchive, filePath); - if (!mountPoint) - return null; + if (!mountPoint) return null; filePath = this.pathUtils.join(filePath, mountPoint); if (!this.isMount.has(filePath)) { - if (this.notMount.has(filePath)) - continue; + if (this.notMount.has(filePath)) continue; try { - if (this.typeCheck !== null && (this.baseFs.statSync(filePath).mode & fs.constants.S_IFMT) !== this.typeCheck) { + if ( + this.typeCheck !== null && + (this.baseFs.statSync(filePath).mode & fs.constants.S_IFMT) !== + this.typeCheck + ) { this.notMount.add(filePath); continue; } @@ -6507,18 +7288,23 @@ class MountFS extends BasePortableFakeFS { } return { archivePath: filePath, - subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length)) + subPath: this.pathUtils.join( + PortablePath.root, + p.substring(filePath.length), + ), }; } } limitOpenFilesTimeout = null; limitOpenFiles(max) { - if (this.mountInstances === null) - return; + if (this.mountInstances === null) return; const now = Date.now(); let nextExpiresAt = now + this.maxAge; let closeCount = max === null ? 0 : this.mountInstances.size - max; - for (const [path, { childFs, expiresAt, refCount }] of this.mountInstances.entries()) { + for (const [ + path, + { childFs, expiresAt, refCount }, + ] of this.mountInstances.entries()) { if (refCount !== 0 || childFs.hasOpenFileHandles?.()) { continue; } else if (now >= expiresAt) { @@ -6534,7 +7320,11 @@ class MountFS extends BasePortableFakeFS { this.mountInstances.delete(path); closeCount -= 1; } - if (this.limitOpenFilesTimeout === null && (max === null && this.mountInstances.size > 0 || max !== null) && isFinite(nextExpiresAt)) { + if ( + this.limitOpenFilesTimeout === null && + ((max === null && this.mountInstances.size > 0) || max !== null) && + isFinite(nextExpiresAt) + ) { this.limitOpenFilesTimeout = setTimeout(() => { this.limitOpenFilesTimeout = null; this.limitOpenFiles(null); @@ -6551,7 +7341,7 @@ class MountFS extends BasePortableFakeFS { cachedMountFs = { childFs: createFsInstance(), expiresAt: 0, - refCount: 0 + refCount: 0, }; } } @@ -6581,7 +7371,7 @@ class MountFS extends BasePortableFakeFS { cachedMountFs = { childFs: this.factorySync(this.baseFs, p), expiresAt: 0, - refCount: 0 + refCount: 0, }; } this.mountInstances.delete(p); @@ -6615,34 +7405,40 @@ class PosixFS extends ProxiedFS { } const NUMBER_REGEXP = /^[0-9]+$/; -const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VIRTUAL_REGEXP = + /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; class VirtualFS extends ProxiedFS { baseFs; static makeVirtualPath(base, component, to) { if (ppath.basename(base) !== `__virtual__`) - throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + throw new Error( + `Assertion failed: Virtual folders must be named "__virtual__"`, + ); if (!ppath.basename(component).match(VALID_COMPONENT)) - throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + throw new Error( + `Assertion failed: Virtual components must be ended by an hexadecimal hash`, + ); const target = ppath.relative(ppath.dirname(base), to); const segments = target.split(`/`); let depth = 0; - while (depth < segments.length && segments[depth] === `..`) - depth += 1; + while (depth < segments.length && segments[depth] === `..`) depth += 1; const finalSegments = segments.slice(depth); - const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + const fullVirtualPath = ppath.join( + base, + component, + String(depth), + ...finalSegments, + ); return fullVirtualPath; } static resolveVirtual(p) { const match = p.match(VIRTUAL_REGEXP); - if (!match || !match[3] && match[5]) - return p; + if (!match || (!match[3] && match[5])) return p; const target = ppath.dirname(match[1]); - if (!match[3] || !match[4]) - return target; + if (!match[3] || !match[4]) return target; const isnum = NUMBER_REGEXP.test(match[4]); - if (!isnum) - return p; + if (!isnum) return p; const depth = Number(match[4]); const backstep = `../`.repeat(depth); const subpath = match[5] || `.`; @@ -6660,28 +7456,24 @@ class VirtualFS extends ProxiedFS { } realpathSync(p) { const match = p.match(VIRTUAL_REGEXP); - if (!match) - return this.baseFs.realpathSync(p); - if (!match[5]) - return p; + if (!match) return this.baseFs.realpathSync(p); + if (!match[5]) return p; const realpath = this.baseFs.realpathSync(this.mapToBase(p)); return VirtualFS.makeVirtualPath(match[1], match[3], realpath); } async realpathPromise(p) { const match = p.match(VIRTUAL_REGEXP); - if (!match) - return await this.baseFs.realpathPromise(p); - if (!match[5]) - return p; + if (!match) return await this.baseFs.realpathPromise(p); + if (!match[5]) return p; const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); return VirtualFS.makeVirtualPath(match[1], match[3], realpath); } mapToBase(p) { - if (p === ``) - return p; - if (this.pathUtils.isAbsolute(p)) - return VirtualFS.resolveVirtual(p); - const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + if (p === ``) return p; + if (this.pathUtils.isAbsolute(p)) return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual( + this.baseFs.resolve(PortablePath.dot), + ); const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; } @@ -6690,7 +7482,10 @@ class VirtualFS extends ProxiedFS { } } -const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? url.URL : globalThis.URL; +const URL = + Number(process.versions.node.split(".", 1)[0]) < 20 + ? url.URL + : globalThis.URL; class NodePathFS extends ProxiedFS { baseFs; @@ -6702,14 +7497,14 @@ class NodePathFS extends ProxiedFS { return path; } mapToBase(path) { - if (typeof path === `string`) - return path; - if (path instanceof URL) - return url.fileURLToPath(path); + if (typeof path === `string`) return path; + if (path instanceof URL) return url.fileURLToPath(path); if (Buffer.isBuffer(path)) { const str = path.toString(); if (!isUtf8(path, str)) - throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`); + throw new Error( + `Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`, + ); return str; } throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`); @@ -6746,8 +7541,13 @@ class FileHandle { async appendFile(data, options) { try { this[kRef](this.appendFile); - const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; - return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0); + const encoding = + (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].appendFilePromise( + this.fd, + data, + encoding ? { encoding } : void 0, + ); } finally { this[kUnref](); } @@ -6792,7 +7592,10 @@ class FileHandle { offset = bufferOrOptions?.offset ?? 0; length = bufferOrOptions?.length ?? buffer.byteLength - offset; position = bufferOrOptions?.position ?? null; - } else if (typeof offsetOrOptions === `object` && offsetOrOptions !== null) { + } else if ( + typeof offsetOrOptions === `object` && + offsetOrOptions !== null + ) { buffer = bufferOrOptions; offset = offsetOrOptions?.offset ?? 0; length = offsetOrOptions?.length ?? buffer.byteLength - offset; @@ -6805,20 +7608,22 @@ class FileHandle { if (length === 0) { return { bytesRead: length, - buffer + buffer, }; } const bytesRead = await this[kBaseFs].readPromise( this.fd, // FIXME: FakeFS should support ArrayBufferViews directly - Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength), + Buffer.isBuffer(buffer) + ? buffer + : Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength), offset, length, - position + position, ); return { bytesRead, - buffer + buffer, }; } finally { this[kUnref](); @@ -6827,7 +7632,8 @@ class FileHandle { async readFile(options) { try { this[kRef](this.readFile); - const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + const encoding = + (typeof options === `string` ? options : options?.encoding) ?? void 0; return await this[kBaseFs].readFilePromise(this.fd, encoding); } finally { this[kUnref](); @@ -6836,7 +7642,7 @@ class FileHandle { readLines(options) { return readline.createInterface({ input: this.createReadStream(options), - crlfDelay: Infinity + crlfDelay: Infinity, }); } async stat(opts) { @@ -6862,7 +7668,8 @@ class FileHandle { async writeFile(data, options) { try { this[kRef](this.writeFile); - const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + const encoding = + (typeof options === `string` ? options : options?.encoding) ?? void 0; await this[kBaseFs].writeFilePromise(this.fd, data, encoding); } finally { this[kUnref](); @@ -6873,11 +7680,22 @@ class FileHandle { this[kRef](this.write); if (ArrayBuffer.isView(args[0])) { const [buffer, offset, length, position] = args; - const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset ?? void 0, length ?? void 0, position ?? void 0); + const bytesWritten = await this[kBaseFs].writePromise( + this.fd, + buffer, + offset ?? void 0, + length ?? void 0, + position ?? void 0, + ); return { bytesWritten, buffer }; } else { const [data, position, encoding] = args; - const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding); + const bytesWritten = await this[kBaseFs].writePromise( + this.fd, + data, + position, + encoding, + ); return { bytesWritten, buffer: data }; } } finally { @@ -6891,7 +7709,12 @@ class FileHandle { let bytesWritten = 0; if (typeof position !== `undefined`) { for (const buffer of buffers) { - const writeResult = await this.write(buffer, void 0, void 0, position); + const writeResult = await this.write( + buffer, + void 0, + void 0, + position, + ); bytesWritten += writeResult.bytesWritten; position += writeResult.bytesWritten; } @@ -6903,7 +7726,7 @@ class FileHandle { } return { buffers, - bytesWritten + bytesWritten, }; } finally { this[kUnref](); @@ -6949,7 +7772,9 @@ class FileHandle { if (this[kRefs] === 0) { const fd = this[kFd]; this[kFd] = -1; - this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]); + this[kBaseFs] + .closePromise(fd) + .then(this[kCloseResolve], this[kCloseReject]); } } } @@ -6990,7 +7815,7 @@ const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ `watch`, `watchFile`, `writeFileSync`, - `writeSync` + `writeSync`, ]); const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ `accessPromise`, @@ -7023,7 +7848,7 @@ const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ `unlinkPromise`, `utimesPromise`, `writeFilePromise`, - `writeSync` + `writeSync`, ]); function patchFs(patchedFs, fakeFs) { fakeFs = new NodePathFS(fakeFs); @@ -7031,20 +7856,23 @@ function patchFs(patchedFs, fakeFs) { const orig = target[name]; target[name] = replacement; if (typeof orig?.[nodeUtils.promisify.custom] !== `undefined`) { - replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom]; + replacement[nodeUtils.promisify.custom] = + orig[nodeUtils.promisify.custom]; } }; { setupFn(patchedFs, `exists`, (p, ...args) => { const hasCallback = typeof args[args.length - 1] === `function`; - const callback = hasCallback ? args.pop() : () => { - }; + const callback = hasCallback ? args.pop() : () => {}; process.nextTick(() => { - fakeFs.existsPromise(p).then((exists) => { - callback(exists); - }, () => { - callback(false); - }); + fakeFs.existsPromise(p).then( + (exists) => { + callback(exists); + }, + () => { + callback(false); + }, + ); }); }); setupFn(patchedFs, `read`, (...args) => { @@ -7061,11 +7889,10 @@ function patchFs(patchedFs, fakeFs) { buffer = Buffer.alloc(16384), offset = 0, length = buffer.byteLength, - position + position, } = options); } - if (offset == null) - offset = 0; + if (offset == null) offset = 0; length |= 0; if (length === 0) { process.nextTick(() => { @@ -7073,33 +7900,35 @@ function patchFs(patchedFs, fakeFs) { }); return; } - if (position == null) - position = -1; + if (position == null) position = -1; process.nextTick(() => { - fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => { - callback(null, bytesRead, buffer); - }, (error) => { - callback(error, 0, buffer); - }); + fakeFs.readPromise(fd, buffer, offset, length, position).then( + (bytesRead) => { + callback(null, bytesRead, buffer); + }, + (error) => { + callback(error, 0, buffer); + }, + ); }); }); for (const fnName of ASYNC_IMPLEMENTATIONS) { const origName = fnName.replace(/Promise$/, ``); - if (typeof patchedFs[origName] === `undefined`) - continue; + if (typeof patchedFs[origName] === `undefined`) continue; const fakeImpl = fakeFs[fnName]; - if (typeof fakeImpl === `undefined`) - continue; + if (typeof fakeImpl === `undefined`) continue; const wrapper = (...args) => { const hasCallback = typeof args[args.length - 1] === `function`; - const callback = hasCallback ? args.pop() : () => { - }; + const callback = hasCallback ? args.pop() : () => {}; process.nextTick(() => { - fakeImpl.apply(fakeFs, args).then((result) => { - callback(null, result); - }, (error) => { - callback(error); - }); + fakeImpl.apply(fakeFs, args).then( + (result) => { + callback(null, result); + }, + (error) => { + callback(error); + }, + ); }); }; setupFn(patchedFs, origName, wrapper); @@ -7120,22 +7949,17 @@ function patchFs(patchedFs, fakeFs) { const options = args[2] || {}; ({ offset = 0, length = buffer.byteLength, position } = options); } - if (offset == null) - offset = 0; + if (offset == null) offset = 0; length |= 0; - if (length === 0) - return 0; - if (position == null) - position = -1; + if (length === 0) return 0; + if (position == null) position = -1; return fakeFs.readSync(fd, buffer, offset, length, position); }); for (const fnName of SYNC_IMPLEMENTATIONS) { const origName = fnName; - if (typeof patchedFs[origName] === `undefined`) - continue; + if (typeof patchedFs[origName] === `undefined`) continue; const fakeImpl = fakeFs[fnName]; - if (typeof fakeImpl === `undefined`) - continue; + if (typeof fakeImpl === `undefined`) continue; setupFn(patchedFs, origName, fakeImpl.bind(fakeFs)); } patchedFs.realpathSync.native = patchedFs.realpathSync; @@ -7144,13 +7968,10 @@ function patchFs(patchedFs, fakeFs) { const patchedFsPromises = patchedFs.promises; for (const fnName of ASYNC_IMPLEMENTATIONS) { const origName = fnName.replace(/Promise$/, ``); - if (typeof patchedFsPromises[origName] === `undefined`) - continue; + if (typeof patchedFsPromises[origName] === `undefined`) continue; const fakeImpl = fakeFs[fnName]; - if (typeof fakeImpl === `undefined`) - continue; - if (fnName === `open`) - continue; + if (typeof fakeImpl === `undefined`) continue; + if (fnName === `open`) continue; setupFn(patchedFsPromises, origName, (pathLike, ...args) => { if (pathLike instanceof FileHandle) { return pathLike[origName].apply(pathLike, args); @@ -7165,11 +7986,19 @@ function patchFs(patchedFs, fakeFs) { }); } { - patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + patchedFs.read[nodeUtils.promisify.custom] = async ( + fd, + buffer, + ...args + ) => { const res = fakeFs.readPromise(fd, buffer, ...args); return { bytesRead: await res, buffer }; }; - patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + patchedFs.write[nodeUtils.promisify.custom] = async ( + fd, + buffer, + ...args + ) => { const res = fakeFs.writePromise(fd, buffer, ...args); return { bytesWritten: await res, buffer }; }; @@ -7178,7 +8007,9 @@ function patchFs(patchedFs, fakeFs) { let cachedInstance; let registeredFactory = () => { - throw new Error(`Assertion failed: No libzip instance is available, and no factory was configured`); + throw new Error( + `Assertion failed: No libzip instance is available, and no factory was configured`, + ); }; function setFactory(factory) { registeredFactory = factory; @@ -7189,724 +8020,732 @@ function getInstance() { return cachedInstance; } -var libzipSync = {exports: {}}; +var libzipSync = { exports: {} }; (function (module, exports) { -var frozenFs = Object.assign({}, fs__default.default); -var createModule = function() { - var _scriptDir = void 0; - if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename; - return function(createModule2) { - createModule2 = createModule2 || {}; - var Module = typeof createModule2 !== "undefined" ? createModule2 : {}; - var readyPromiseResolve, readyPromiseReject; - Module["ready"] = new Promise(function(resolve, reject) { - readyPromiseResolve = resolve; - readyPromiseReject = reject; - }); - var moduleOverrides = {}; - var key; - for (key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } - } - var scriptDirectory = ""; - function locateFile(path) { - if (Module["locateFile"]) { - return Module["locateFile"](path, scriptDirectory); - } - return scriptDirectory + path; - } - var read_, readBinary; - var nodeFS; - var nodePath; - { - { - scriptDirectory = __dirname + "/"; - } - read_ = function shell_read(filename, binary) { - var ret = tryParseAsDataURI(filename); - if (ret) { - return binary ? ret : ret.toString(); - } - if (!nodeFS) nodeFS = frozenFs; - if (!nodePath) nodePath = path__default.default; - filename = nodePath["normalize"](filename); - return nodeFS["readFileSync"](filename, binary ? null : "utf8"); - }; - readBinary = function readBinary2(filename) { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; - }; - if (process["argv"].length > 1) { - process["argv"][1].replace(/\\/g, "/"); - } - process["argv"].slice(2); - Module["inspect"] = function() { - return "[Emscripten Module object]"; - }; - } - Module["print"] || console.log.bind(console); - var err = Module["printErr"] || console.warn.bind(console); - for (key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } - } - moduleOverrides = null; - if (Module["arguments"]) ; - if (Module["thisProgram"]) ; - if (Module["quit"]) ; - var wasmBinary; - if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; - Module["noExitRuntime"] || true; - if (typeof WebAssembly !== "object") { - abort("no native wasm support detected"); - } - function getValue(ptr, type, noSafe) { - type = type || "i8"; - if (type.charAt(type.length - 1) === "*") type = "i32"; - switch (type) { - case "i1": - return HEAP8[ptr >> 0]; - case "i8": - return HEAP8[ptr >> 0]; - case "i16": - return LE_HEAP_LOAD_I16((ptr >> 1) * 2); - case "i32": - return LE_HEAP_LOAD_I32((ptr >> 2) * 4); - case "i64": - return LE_HEAP_LOAD_I32((ptr >> 2) * 4); - case "float": - return LE_HEAP_LOAD_F32((ptr >> 2) * 4); - case "double": - return LE_HEAP_LOAD_F64((ptr >> 3) * 8); - default: - abort("invalid type for getValue: " + type); - } - return null; - } - var wasmMemory; - var ABORT = false; - function assert(condition, text) { - if (!condition) { - abort("Assertion failed: " + text); - } - } - function getCFunc(ident) { - var func = Module["_" + ident]; - assert( - func, - "Cannot call unknown function " + ident + ", make sure it is exported" - ); - return func; - } - function ccall(ident, returnType, argTypes, args, opts) { - var toC = { - string: function(str) { - var ret2 = 0; - if (str !== null && str !== void 0 && str !== 0) { - var len = (str.length << 2) + 1; - ret2 = stackAlloc(len); - stringToUTF8(str, ret2, len); - } - return ret2; - }, - array: function(arr) { - var ret2 = stackAlloc(arr.length); - writeArrayToMemory(arr, ret2); - return ret2; - } - }; - function convertReturnValue(ret2) { - if (returnType === "string") return UTF8ToString(ret2); - if (returnType === "boolean") return Boolean(ret2); - return ret2; - } - var func = getCFunc(ident); - var cArgs = []; - var stack = 0; - if (args) { - for (var i = 0; i < args.length; i++) { - var converter = toC[argTypes[i]]; - if (converter) { - if (stack === 0) stack = stackSave(); - cArgs[i] = converter(args[i]); - } else { - cArgs[i] = args[i]; - } - } - } - var ret = func.apply(null, cArgs); - ret = convertReturnValue(ret); - if (stack !== 0) stackRestore(stack); - return ret; - } - function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || []; - var numericArgs = argTypes.every(function(type) { - return type === "number"; + var frozenFs = Object.assign({}, fs__default.default); + var createModule = (function () { + var _scriptDir = void 0; + if (typeof __filename !== "undefined") + _scriptDir = _scriptDir || __filename; + return function (createModule2) { + createModule2 = createModule2 || {}; + var Module = typeof createModule2 !== "undefined" ? createModule2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function (resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; }); - var numericRet = returnType !== "string"; - if (numericRet && numericArgs && !opts) { - return getCFunc(ident); - } - return function() { - return ccall(ident, returnType, argTypes, arguments); - }; - } - var UTF8Decoder = new TextDecoder("utf8"); - function UTF8ToString(ptr, maxBytesToRead) { - if (!ptr) return ""; - var maxPtr = ptr + maxBytesToRead; - for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; - return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); - } - function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0; - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 55296 && u <= 57343) { - var u1 = str.charCodeAt(++i); - u = 65536 + ((u & 1023) << 10) | u1 & 1023; - } - if (u <= 127) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 2047) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 192 | u >> 6; - heap[outIdx++] = 128 | u & 63; - } else if (u <= 65535) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 224 | u >> 12; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } else { - if (outIdx + 3 >= endIdx) break; - heap[outIdx++] = 240 | u >> 18; - heap[outIdx++] = 128 | u >> 12 & 63; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; } } - heap[outIdx] = 0; - return outIdx - startIdx; - } - function stringToUTF8(str, outPtr, maxBytesToWrite) { - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); - } - function lengthBytesUTF8(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 55296 && u <= 57343) - u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; - if (u <= 127) ++len; - else if (u <= 2047) len += 2; - else if (u <= 65535) len += 3; - else len += 4; + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; } - return len; - } - function allocateUTF8(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _malloc(size); - if (ret) stringToUTF8Array(str, HEAP8, ret, size); - return ret; - } - function writeArrayToMemory(array, buffer2) { - HEAP8.set(array, buffer2); - } - function alignUp(x, multiple) { - if (x % multiple > 0) { - x += multiple - x % multiple; + var read_, readBinary; + var nodeFS; + var nodePath; + { + { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + var ret = tryParseAsDataURI(filename); + if (ret) { + return binary ? ret : ret.toString(); + } + if (!nodeFS) nodeFS = frozenFs; + if (!nodePath) nodePath = path__default.default; + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + process["argv"][1].replace(/\\/g, "/"); + } + process["argv"].slice(2); + Module["inspect"] = function () { + return "[Emscripten Module object]"; + }; } - return x; - } - var buffer, HEAP8, HEAPU8; - var HEAP_DATA_VIEW; - function updateGlobalBufferAndViews(buf) { - buffer = buf; - Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(buf); - Module["HEAP8"] = HEAP8 = new Int8Array(buf); - Module["HEAP16"] = new Int16Array(buf); - Module["HEAP32"] = new Int32Array(buf); - Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); - Module["HEAPU16"] = new Uint16Array(buf); - Module["HEAPU32"] = new Uint32Array(buf); - Module["HEAPF32"] = new Float32Array(buf); - Module["HEAPF64"] = new Float64Array(buf); - } - Module["INITIAL_MEMORY"] || 16777216; - var wasmTable; - var __ATPRERUN__ = []; - var __ATINIT__ = []; - var __ATPOSTRUN__ = []; - function preRun() { - if (Module["preRun"]) { - if (typeof Module["preRun"] == "function") - Module["preRun"] = [Module["preRun"]]; - while (Module["preRun"].length) { - addOnPreRun(Module["preRun"].shift()); + Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; } } - callRuntimeCallbacks(__ATPRERUN__); - } - function initRuntime() { - callRuntimeCallbacks(__ATINIT__); - } - function postRun() { - if (Module["postRun"]) { - if (typeof Module["postRun"] == "function") - Module["postRun"] = [Module["postRun"]]; - while (Module["postRun"].length) { - addOnPostRun(Module["postRun"].shift()); + moduleOverrides = null; + if (Module["arguments"]); + if (Module["thisProgram"]); + if (Module["quit"]); + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + return HEAP8[ptr >> 0]; + case "i8": + return HEAP8[ptr >> 0]; + case "i16": + return LE_HEAP_LOAD_I16((ptr >> 1) * 2); + case "i32": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "i64": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "float": + return LE_HEAP_LOAD_F32((ptr >> 2) * 4); + case "double": + return LE_HEAP_LOAD_F64((ptr >> 3) * 8); + default: + abort("invalid type for getValue: " + type); + } + return null; + } + var wasmMemory; + var ABORT = false; + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); } } - callRuntimeCallbacks(__ATPOSTRUN__); - } - function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); - } - function addOnInit(cb) { - __ATINIT__.unshift(cb); - } - function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); - } - var runDependencies = 0; - var dependenciesFulfilled = null; - function addRunDependency(id) { - runDependencies++; - if (Module["monitorRunDependencies"]) { - Module["monitorRunDependencies"](runDependencies); + function getCFunc(ident) { + var func = Module["_" + ident]; + assert( + func, + "Cannot call unknown function " + + ident + + ", make sure it is exported", + ); + return func; } - } - function removeRunDependency(id) { - runDependencies--; - if (Module["monitorRunDependencies"]) { - Module["monitorRunDependencies"](runDependencies); + function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + string: function (str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, + array: function (arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + }, + }; + function convertReturnValue(ret2) { + if (returnType === "string") return UTF8ToString(ret2); + if (returnType === "boolean") return Boolean(ret2); + return ret2; + } + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; } - if (runDependencies == 0) { - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function (type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function () { + return ccall(ident, returnType, argTypes, arguments); + }; + } + var UTF8Decoder = new TextDecoder("utf8"); + function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023); + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | (u >> 6); + heap[outIdx++] = 128 | (u & 63); + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | (u >> 12); + heap[outIdx++] = 128 | ((u >> 6) & 63); + heap[outIdx++] = 128 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | (u >> 18); + heap[outIdx++] = 128 | ((u >> 12) & 63); + heap[outIdx++] = 128 | ((u >> 6) & 63); + heap[outIdx++] = 128 | (u & 63); + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) + u = (65536 + ((u & 1023) << 10)) | (str.charCodeAt(++i) & 1023); + if (u <= 127) ++len; + else if (u <= 2047) len += 2; + else if (u <= 65535) len += 3; + else len += 4; + } + return len; + } + function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function writeArrayToMemory(array, buffer2) { + HEAP8.set(array, buffer2); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - (x % multiple); + } + return x; + } + var buffer, HEAP8, HEAPU8; + var HEAP_DATA_VIEW; + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(buf); + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = new Int16Array(buf); + Module["HEAP32"] = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = new Uint16Array(buf); + Module["HEAPU32"] = new Uint32Array(buf); + Module["HEAPF32"] = new Float32Array(buf); + Module["HEAPF64"] = new Float64Array(buf); + } + Module["INITIAL_MEMORY"] || 16777216; + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + callRuntimeCallbacks(__ATINIT__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); } } - } - Module["preloadedImages"] = {}; - Module["preloadedAudios"] = {}; - function abort(what) { - if (Module["onAbort"]) { - Module["onAbort"](what); + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } } - what += ""; - err(what); - ABORT = true; - what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; - var e = new WebAssembly.RuntimeError(what); - readyPromiseReject(e); - throw e; - } - var dataURIPrefix = "data:application/octet-stream;base64,"; - function isDataURI(filename) { - return filename.startsWith(dataURIPrefix); - } - var wasmBinaryFile = "data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w=="; - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); - } - function getBinary(file) { - try { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - var binary = tryParseAsDataURI(file); - if (binary) { - return binary; - } - if (readBinary) { - return readBinary(file); - } else { - throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; - } - } catch (err2) { - abort(err2); - } - } - function instantiateSync(file, info) { - var instance; - var module2; - var binary; - try { - binary = getBinary(file); - module2 = new WebAssembly.Module(binary); - instance = new WebAssembly.Instance(module2, info); - } catch (e) { - var str = e.toString(); - err("failed to compile wasm module: " + str); - if (str.includes("imported Memory") || str.includes("memory import")) { - err( - "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)." - ); + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); } + what += ""; + err(what); + ABORT = true; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); throw e; } - return [instance, module2]; - } - function createWasm() { - var info = { a: asmLibraryArg }; - function receiveInstance(instance, module2) { - var exports3 = instance.exports; - Module["asm"] = exports3; - wasmMemory = Module["asm"]["g"]; - updateGlobalBufferAndViews(wasmMemory.buffer); - wasmTable = Module["asm"]["W"]; - addOnInit(Module["asm"]["h"]); - removeRunDependency(); + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); } - addRunDependency(); - if (Module["instantiateWasm"]) { + var wasmBinaryFile = + "data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDmC48AAAgACAAKQOYLkIIiDcDmC4gACgCoC5BCGsLNgKgLgsLEAAgACgCCBAGIABBADYCCAvwAQECf0F/IQECQCAALQAoDQAgACgCJEEDRgRAIABBDGoEQCAAQQA2AhAgAEEXNgIMC0F/DwsCQCAAKAIgBEAgACkDGELAAINCAFINASAAQQxqBEAgAEEANgIQIABBHTYCDAtBfw8LAkAgACgCACICRQ0AIAIQMkF/Sg0AIAAoAgAhASAAQQxqIgAEQCAAIAEoAgw2AgAgACABKAIQNgIEC0F/DwsgAEEAQgBBABAOQn9VDQAgACgCACIARQ0BIAAQGhpBfw8LQQAhASAAQQA7ATQgAEEMagRAIABCADcCDAsgACAAKAIgQQFqNgIgCyABCzsAIAAtACgEfkJ/BSAAKAIgRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAAQQBCAEEHEA4LC5oIAQt/IABFBEAgARAJDwsgAUFATwRAQYSEAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQZSIASgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQOwwBCyAHQcyEASgCAEYEQEHAhAEoAgAgBGoiBCAGTQ0CIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgBCAGayICQQFyNgIEQcCEASACNgIAQcyEASADNgIADAELIAdByIQBKAIARgRAQbyEASgCACAEaiIDIAZJDQICQCADIAZrIgJBEE8EQCAFIAlBAXEgBnJBAnI2AgQgBSAGaiIEIAJBAXI2AgQgAyAFaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAUgCUEBcSADckECcjYCBCADIAVqIgIgAigCBEEBcjYCBEEAIQJBACEEC0HIhAEgBDYCAEG8hAEgAjYCAAwBCyAHKAIEIgNBAnENASADQXhxIARqIgogBkkNASAKIAZrIQwCQCADQf8BTQRAIAcoAggiBCADQQN2IgJBA3RB3IQBakYaIAQgBygCDCIDRgRAQbSEAUG0hAEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAHKAIYIQsCQCAHIAcoAgwiCEcEQCAHKAIIIgJBxIQBKAIASRogAiAINgIMIAggAjYCCAwBCwJAIAdBFGoiBCgCACICDQAgB0EQaiIEKAIAIgINAEEAIQgMAQsDQCAEIQMgAiIIQRRqIgQoAgAiAg0AIAhBEGohBCAIKAIQIgINAAsgA0EANgIACyALRQ0AAkAgByAHKAIcIgNBAnRB5IYBaiICKAIARgRAIAIgCDYCACAIDQFBuIQBQbiEASgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAdGG2ogCDYCACAIRQ0BCyAIIAs2AhggBygCECICBEAgCCACNgIQIAIgCDYCGAsgBygCFCICRQ0AIAggAjYCFCACIAg2AhgLIAxBD00EQCAFIAlBAXEgCnJBAnI2AgQgBSAKaiICIAIoAgRBAXI2AgQMAQsgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyAMQQNyNgIEIAUgCmoiAiACKAIEQQFyNgIEIAMgDBA7CyAFIQILIAILIgIEQCACQQhqDwsgARAJIgVFBEBBAA8LIAUgAEF8QXggAEEEaygCACICQQNxGyACQXhxaiICIAEgASACSxsQBxogABAGIAUL6QEBA38CQCABRQ0AIAJBgDBxIgIEfwJ/IAJBgCBHBEBBAiACQYAQRg0BGiADBEAgA0EANgIEIANBEjYCAAtBAA8LQQQLIQJBAAVBAQshBkEUEAkiBEUEQCADBEAgA0EANgIEIANBDjYCAAtBAA8LIAQgAUEBahAJIgU2AgAgBUUEQCAEEAZBAA8LIAUgACABEAcgAWpBADoAACAEQQA2AhAgBEIANwMIIAQgATsBBCAGDQAgBCACECNBBUcNACAEKAIAEAYgBCgCDBAGIAQQBkEAIQQgAwRAIANBADYCBCADQRI2AgALCyAEC7UBAQJ/AkACQAJAAkACQAJAAkAgAC0ABQRAIAAtAABBAnFFDQELIAAoAjAQECAAQQA2AjAgAC0ABUUNAQsgAC0AAEEIcUUNAQsgACgCNBAcIABBADYCNCAALQAFRQ0BCyAALQAAQQRxRQ0BCyAAKAI4EBAgAEEANgI4IAAtAAVFDQELIAAtAABBgAFxRQ0BCyAAKAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w=="; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { try { - var exports2 = Module["instantiateWasm"](info, receiveInstance); - return exports2; + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + var binary = tryParseAsDataURI(file); + if (binary) { + return binary; + } + if (readBinary) { + return readBinary(file); + } else { + throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; + } + } catch (err2) { + abort(err2); + } + } + function instantiateSync(file, info) { + var instance; + var module2; + var binary; + try { + binary = getBinary(file); + module2 = new WebAssembly.Module(binary); + instance = new WebAssembly.Instance(module2, info); } catch (e) { - err("Module.instantiateWasm callback failed with error: " + e); + var str = e.toString(); + err("failed to compile wasm module: " + str); + if ( + str.includes("imported Memory") || + str.includes("memory import") + ) { + err( + "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).", + ); + } + throw e; + } + return [instance, module2]; + } + function createWasm() { + var info = { a: asmLibraryArg }; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmMemory = Module["asm"]["g"]; + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["W"]; + addOnInit(Module["asm"]["h"]); + removeRunDependency(); + } + addRunDependency(); + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + var result = instantiateSync(wasmBinaryFile, info); + receiveInstance(result[0]); + return Module["asm"]; + } + function LE_HEAP_LOAD_F32(byteOffset) { + return HEAP_DATA_VIEW.getFloat32(byteOffset, true); + } + function LE_HEAP_LOAD_F64(byteOffset) { + return HEAP_DATA_VIEW.getFloat64(byteOffset, true); + } + function LE_HEAP_LOAD_I16(byteOffset) { + return HEAP_DATA_VIEW.getInt16(byteOffset, true); + } + function LE_HEAP_LOAD_I32(byteOffset) { + return HEAP_DATA_VIEW.getInt32(byteOffset, true); + } + function LE_HEAP_STORE_I32(byteOffset, value) { + HEAP_DATA_VIEW.setInt32(byteOffset, value, true); + } + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === void 0) { + wasmTable.get(func)(); + } else { + wasmTable.get(func)(callback.arg); + } + } else { + func(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _gmtime_r(time, tmPtr) { + var date = new Date(LE_HEAP_LOAD_I32((time >> 2) * 4) * 1e3); + LE_HEAP_STORE_I32((tmPtr >> 2) * 4, date.getUTCSeconds()); + LE_HEAP_STORE_I32(((tmPtr + 4) >> 2) * 4, date.getUTCMinutes()); + LE_HEAP_STORE_I32(((tmPtr + 8) >> 2) * 4, date.getUTCHours()); + LE_HEAP_STORE_I32(((tmPtr + 12) >> 2) * 4, date.getUTCDate()); + LE_HEAP_STORE_I32(((tmPtr + 16) >> 2) * 4, date.getUTCMonth()); + LE_HEAP_STORE_I32( + ((tmPtr + 20) >> 2) * 4, + date.getUTCFullYear() - 1900, + ); + LE_HEAP_STORE_I32(((tmPtr + 24) >> 2) * 4, date.getUTCDay()); + LE_HEAP_STORE_I32(((tmPtr + 36) >> 2) * 4, 0); + LE_HEAP_STORE_I32(((tmPtr + 32) >> 2) * 4, 0); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0; + LE_HEAP_STORE_I32(((tmPtr + 28) >> 2) * 4, yday); + if (!_gmtime_r.GMTString) _gmtime_r.GMTString = allocateUTF8("GMT"); + LE_HEAP_STORE_I32(((tmPtr + 40) >> 2) * 4, _gmtime_r.GMTString); + return tmPtr; + } + function ___gmtime_r(a0, a1) { + return _gmtime_r(a0, a1); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) {} + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { return false; } - } - var result = instantiateSync(wasmBinaryFile, info); - receiveInstance(result[0]); - return Module["asm"]; - } - function LE_HEAP_LOAD_F32(byteOffset) { - return HEAP_DATA_VIEW.getFloat32(byteOffset, true); - } - function LE_HEAP_LOAD_F64(byteOffset) { - return HEAP_DATA_VIEW.getFloat64(byteOffset, true); - } - function LE_HEAP_LOAD_I16(byteOffset) { - return HEAP_DATA_VIEW.getInt16(byteOffset, true); - } - function LE_HEAP_LOAD_I32(byteOffset) { - return HEAP_DATA_VIEW.getInt32(byteOffset, true); - } - function LE_HEAP_STORE_I32(byteOffset, value) { - HEAP_DATA_VIEW.setInt32(byteOffset, value, true); - } - function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - var callback = callbacks.shift(); - if (typeof callback == "function") { - callback(Module); - continue; - } - var func = callback.func; - if (typeof func === "number") { - if (callback.arg === void 0) { - wasmTable.get(func)(); - } else { - wasmTable.get(func)(callback.arg); + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min( + overGrownHeapSize, + requestedSize + 100663296, + ); + var newSize = Math.min( + maxHeapSize, + alignUp(Math.max(requestedSize, overGrownHeapSize), 65536), + ); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; } - } else { - func(callback.arg === void 0 ? null : callback.arg); } - } - } - function _gmtime_r(time, tmPtr) { - var date = new Date(LE_HEAP_LOAD_I32((time >> 2) * 4) * 1e3); - LE_HEAP_STORE_I32((tmPtr >> 2) * 4, date.getUTCSeconds()); - LE_HEAP_STORE_I32((tmPtr + 4 >> 2) * 4, date.getUTCMinutes()); - LE_HEAP_STORE_I32((tmPtr + 8 >> 2) * 4, date.getUTCHours()); - LE_HEAP_STORE_I32((tmPtr + 12 >> 2) * 4, date.getUTCDate()); - LE_HEAP_STORE_I32((tmPtr + 16 >> 2) * 4, date.getUTCMonth()); - LE_HEAP_STORE_I32((tmPtr + 20 >> 2) * 4, date.getUTCFullYear() - 1900); - LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); - LE_HEAP_STORE_I32((tmPtr + 36 >> 2) * 4, 0); - LE_HEAP_STORE_I32((tmPtr + 32 >> 2) * 4, 0); - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); - var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; - LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); - if (!_gmtime_r.GMTString) _gmtime_r.GMTString = allocateUTF8("GMT"); - LE_HEAP_STORE_I32((tmPtr + 40 >> 2) * 4, _gmtime_r.GMTString); - return tmPtr; - } - function ___gmtime_r(a0, a1) { - return _gmtime_r(a0, a1); - } - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num); - } - function emscripten_realloc_buffer(size) { - try { - wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); - updateGlobalBufferAndViews(wasmMemory.buffer); - return 1; - } catch (e) { - } - } - function _emscripten_resize_heap(requestedSize) { - var oldSize = HEAPU8.length; - requestedSize = requestedSize >>> 0; - var maxHeapSize = 2147483648; - if (requestedSize > maxHeapSize) { return false; } - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); - overGrownHeapSize = Math.min( - overGrownHeapSize, - requestedSize + 100663296 + function _setTempRet0(val) {} + function _time(ptr) { + var ret = (Date.now() / 1e3) | 0; + if (ptr) { + LE_HEAP_STORE_I32((ptr >> 2) * 4, ret); + } + return ret; + } + function _tzset() { + if (_tzset.called) return; + _tzset.called = true; + var currentYear = /* @__PURE__ */ new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + LE_HEAP_STORE_I32((__get_timezone() >> 2) * 4, stdTimezoneOffset * 60); + LE_HEAP_STORE_I32( + (__get_daylight() >> 2) * 4, + Number(winterOffset != summerOffset), ); - var newSize = Math.min( - maxHeapSize, - alignUp(Math.max(requestedSize, overGrownHeapSize), 65536) - ); - var replacement = emscripten_realloc_buffer(newSize); - if (replacement) { - return true; + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, winterNamePtr); + LE_HEAP_STORE_I32(((__get_tzname() + 4) >> 2) * 4, summerNamePtr); + } else { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, summerNamePtr); + LE_HEAP_STORE_I32(((__get_tzname() + 4) >> 2) * 4, winterNamePtr); } } - return false; - } - function _setTempRet0(val) { - } - function _time(ptr) { - var ret = Date.now() / 1e3 | 0; - if (ptr) { - LE_HEAP_STORE_I32((ptr >> 2) * 4, ret); - } - return ret; - } - function _tzset() { - if (_tzset.called) return; - _tzset.called = true; - var currentYear = (/* @__PURE__ */ new Date()).getFullYear(); - var winter = new Date(currentYear, 0, 1); - var summer = new Date(currentYear, 6, 1); - var winterOffset = winter.getTimezoneOffset(); - var summerOffset = summer.getTimezoneOffset(); - var stdTimezoneOffset = Math.max(winterOffset, summerOffset); - LE_HEAP_STORE_I32((__get_timezone() >> 2) * 4, stdTimezoneOffset * 60); - LE_HEAP_STORE_I32( - (__get_daylight() >> 2) * 4, - Number(winterOffset != summerOffset) - ); - function extractZone(date) { - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); - return match ? match[1] : "GMT"; - } - var winterName = extractZone(winter); - var summerName = extractZone(summer); - var winterNamePtr = allocateUTF8(winterName); - var summerNamePtr = allocateUTF8(summerName); - if (summerOffset < winterOffset) { - LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, winterNamePtr); - LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, summerNamePtr); - } else { - LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, summerNamePtr); - LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, winterNamePtr); - } - } - function _timegm(tmPtr) { - _tzset(); - var time = Date.UTC( - LE_HEAP_LOAD_I32((tmPtr + 20 >> 2) * 4) + 1900, - LE_HEAP_LOAD_I32((tmPtr + 16 >> 2) * 4), - LE_HEAP_LOAD_I32((tmPtr + 12 >> 2) * 4), - LE_HEAP_LOAD_I32((tmPtr + 8 >> 2) * 4), - LE_HEAP_LOAD_I32((tmPtr + 4 >> 2) * 4), - LE_HEAP_LOAD_I32((tmPtr >> 2) * 4), - 0 - ); - var date = new Date(time); - LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); - var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; - LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); - return date.getTime() / 1e3 | 0; - } - function intArrayFromBase64(s) { - { - var buf; - try { - buf = Buffer.from(s, "base64"); - } catch (_) { - buf = new Buffer(s, "base64"); - } - return new Uint8Array( - buf["buffer"], - buf["byteOffset"], - buf["byteLength"] + function _timegm(tmPtr) { + _tzset(); + var time = Date.UTC( + LE_HEAP_LOAD_I32(((tmPtr + 20) >> 2) * 4) + 1900, + LE_HEAP_LOAD_I32(((tmPtr + 16) >> 2) * 4), + LE_HEAP_LOAD_I32(((tmPtr + 12) >> 2) * 4), + LE_HEAP_LOAD_I32(((tmPtr + 8) >> 2) * 4), + LE_HEAP_LOAD_I32(((tmPtr + 4) >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr >> 2) * 4), + 0, ); + var date = new Date(time); + LE_HEAP_STORE_I32(((tmPtr + 24) >> 2) * 4, date.getUTCDay()); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0; + LE_HEAP_STORE_I32(((tmPtr + 28) >> 2) * 4, yday); + return (date.getTime() / 1e3) | 0; } - } - function tryParseAsDataURI(filename) { - if (!isDataURI(filename)) { - return; + function intArrayFromBase64(s) { + { + var buf; + try { + buf = Buffer.from(s, "base64"); + } catch (_) { + buf = new Buffer(s, "base64"); + } + return new Uint8Array( + buf["buffer"], + buf["byteOffset"], + buf["byteLength"], + ); + } } - return intArrayFromBase64(filename.slice(dataURIPrefix.length)); - } - var asmLibraryArg = { - e: ___gmtime_r, - c: _emscripten_memcpy_big, - d: _emscripten_resize_heap, - a: _setTempRet0, - b: _time, - f: _timegm - }; - var asm = createWasm(); - Module["___wasm_call_ctors"] = asm["h"]; - Module["_zip_ext_count_symlinks"] = asm["i"]; - Module["_zip_file_get_external_attributes"] = asm["j"]; - Module["_zipstruct_statS"] = asm["k"]; - Module["_zipstruct_stat_size"] = asm["l"]; - Module["_zipstruct_stat_mtime"] = asm["m"]; - Module["_zipstruct_stat_crc"] = asm["n"]; - Module["_zipstruct_errorS"] = asm["o"]; - Module["_zipstruct_error_code_zip"] = asm["p"]; - Module["_zipstruct_stat_comp_size"] = asm["q"]; - Module["_zipstruct_stat_comp_method"] = asm["r"]; - Module["_zip_close"] = asm["s"]; - Module["_zip_delete"] = asm["t"]; - Module["_zip_dir_add"] = asm["u"]; - Module["_zip_discard"] = asm["v"]; - Module["_zip_error_init_with_code"] = asm["w"]; - Module["_zip_get_error"] = asm["x"]; - Module["_zip_file_get_error"] = asm["y"]; - Module["_zip_error_strerror"] = asm["z"]; - Module["_zip_fclose"] = asm["A"]; - Module["_zip_file_add"] = asm["B"]; - Module["_free"] = asm["C"]; - var _malloc = Module["_malloc"] = asm["D"]; - Module["_zip_source_error"] = asm["E"]; - Module["_zip_source_seek"] = asm["F"]; - Module["_zip_file_set_external_attributes"] = asm["G"]; - Module["_zip_file_set_mtime"] = asm["H"]; - Module["_zip_fopen_index"] = asm["I"]; - Module["_zip_fread"] = asm["J"]; - Module["_zip_get_name"] = asm["K"]; - Module["_zip_get_num_entries"] = asm["L"]; - Module["_zip_source_read"] = asm["M"]; - Module["_zip_name_locate"] = asm["N"]; - Module["_zip_open_from_source"] = asm["O"]; - Module["_zip_set_file_compression"] = asm["P"]; - Module["_zip_source_buffer"] = asm["Q"]; - Module["_zip_source_buffer_create"] = asm["R"]; - Module["_zip_source_close"] = asm["S"]; - Module["_zip_source_free"] = asm["T"]; - Module["_zip_source_keep"] = asm["U"]; - Module["_zip_source_open"] = asm["V"]; - Module["_zip_source_tell"] = asm["X"]; - Module["_zip_stat_index"] = asm["Y"]; - var __get_tzname = Module["__get_tzname"] = asm["Z"]; - var __get_daylight = Module["__get_daylight"] = asm["_"]; - var __get_timezone = Module["__get_timezone"] = asm["$"]; - var stackSave = Module["stackSave"] = asm["aa"]; - var stackRestore = Module["stackRestore"] = asm["ba"]; - var stackAlloc = Module["stackAlloc"] = asm["ca"]; - Module["cwrap"] = cwrap; - Module["getValue"] = getValue; - var calledRun; - dependenciesFulfilled = function runCaller() { - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; - }; - function run(args) { - if (runDependencies > 0) { - return; + function tryParseAsDataURI(filename) { + if (!isDataURI(filename)) { + return; + } + return intArrayFromBase64(filename.slice(dataURIPrefix.length)); } - preRun(); - if (runDependencies > 0) { - return; - } - function doRun() { - if (calledRun) return; - calledRun = true; - Module["calledRun"] = true; - if (ABORT) return; - initRuntime(); - readyPromiseResolve(Module); - if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); - postRun(); - } - if (Module["setStatus"]) { - Module["setStatus"]("Running..."); - setTimeout(function() { - setTimeout(function() { - Module["setStatus"](""); + var asmLibraryArg = { + e: ___gmtime_r, + c: _emscripten_memcpy_big, + d: _emscripten_resize_heap, + a: _setTempRet0, + b: _time, + f: _timegm, + }; + var asm = createWasm(); + Module["___wasm_call_ctors"] = asm["h"]; + Module["_zip_ext_count_symlinks"] = asm["i"]; + Module["_zip_file_get_external_attributes"] = asm["j"]; + Module["_zipstruct_statS"] = asm["k"]; + Module["_zipstruct_stat_size"] = asm["l"]; + Module["_zipstruct_stat_mtime"] = asm["m"]; + Module["_zipstruct_stat_crc"] = asm["n"]; + Module["_zipstruct_errorS"] = asm["o"]; + Module["_zipstruct_error_code_zip"] = asm["p"]; + Module["_zipstruct_stat_comp_size"] = asm["q"]; + Module["_zipstruct_stat_comp_method"] = asm["r"]; + Module["_zip_close"] = asm["s"]; + Module["_zip_delete"] = asm["t"]; + Module["_zip_dir_add"] = asm["u"]; + Module["_zip_discard"] = asm["v"]; + Module["_zip_error_init_with_code"] = asm["w"]; + Module["_zip_get_error"] = asm["x"]; + Module["_zip_file_get_error"] = asm["y"]; + Module["_zip_error_strerror"] = asm["z"]; + Module["_zip_fclose"] = asm["A"]; + Module["_zip_file_add"] = asm["B"]; + Module["_free"] = asm["C"]; + var _malloc = (Module["_malloc"] = asm["D"]); + Module["_zip_source_error"] = asm["E"]; + Module["_zip_source_seek"] = asm["F"]; + Module["_zip_file_set_external_attributes"] = asm["G"]; + Module["_zip_file_set_mtime"] = asm["H"]; + Module["_zip_fopen_index"] = asm["I"]; + Module["_zip_fread"] = asm["J"]; + Module["_zip_get_name"] = asm["K"]; + Module["_zip_get_num_entries"] = asm["L"]; + Module["_zip_source_read"] = asm["M"]; + Module["_zip_name_locate"] = asm["N"]; + Module["_zip_open_from_source"] = asm["O"]; + Module["_zip_set_file_compression"] = asm["P"]; + Module["_zip_source_buffer"] = asm["Q"]; + Module["_zip_source_buffer_create"] = asm["R"]; + Module["_zip_source_close"] = asm["S"]; + Module["_zip_source_free"] = asm["T"]; + Module["_zip_source_keep"] = asm["U"]; + Module["_zip_source_open"] = asm["V"]; + Module["_zip_source_tell"] = asm["X"]; + Module["_zip_stat_index"] = asm["Y"]; + var __get_tzname = (Module["__get_tzname"] = asm["Z"]); + var __get_daylight = (Module["__get_daylight"] = asm["_"]); + var __get_timezone = (Module["__get_timezone"] = asm["$"]); + var stackSave = (Module["stackSave"] = asm["aa"]); + var stackRestore = (Module["stackRestore"] = asm["ba"]); + var stackAlloc = (Module["stackAlloc"] = asm["ca"]); + Module["cwrap"] = cwrap; + Module["getValue"] = getValue; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function run(args) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function () { + setTimeout(function () { + Module["setStatus"](""); + }, 1); + doRun(); }, 1); + } else { doRun(); - }, 1); - } else { - doRun(); + } } - } - Module["run"] = run; - if (Module["preInit"]) { - if (typeof Module["preInit"] == "function") - Module["preInit"] = [Module["preInit"]]; - while (Module["preInit"].length > 0) { - Module["preInit"].pop()(); + Module["run"] = run; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } } - } - run(); - return createModule2; - }; -}(); -module.exports = createModule; -}(libzipSync)); + run(); + return createModule2; + }; + })(); + module.exports = createModule; +})(libzipSync); const createModule = libzipSync.exports; const number64 = [ `number`, // low - `number` + `number`, // high ]; var Errors = /* @__PURE__ */ ((Errors2) => { - Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK"; - Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK"; - Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME"; - Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE"; - Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK"; - Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ"; - Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE"; - Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC"; - Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED"; - Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT"; - Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS"; - Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN"; - Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN"; - Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB"; - Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY"; - Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED"; - Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP"; - Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF"; - Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL"; - Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP"; - Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL"; - Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS"; - Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE"; - Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED"; - Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP"; - Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY"; - Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD"; - Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD"; - Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP"; - Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE"; - Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL"; - Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA"; + Errors2[(Errors2["ZIP_ER_OK"] = 0)] = "ZIP_ER_OK"; + Errors2[(Errors2["ZIP_ER_MULTIDISK"] = 1)] = "ZIP_ER_MULTIDISK"; + Errors2[(Errors2["ZIP_ER_RENAME"] = 2)] = "ZIP_ER_RENAME"; + Errors2[(Errors2["ZIP_ER_CLOSE"] = 3)] = "ZIP_ER_CLOSE"; + Errors2[(Errors2["ZIP_ER_SEEK"] = 4)] = "ZIP_ER_SEEK"; + Errors2[(Errors2["ZIP_ER_READ"] = 5)] = "ZIP_ER_READ"; + Errors2[(Errors2["ZIP_ER_WRITE"] = 6)] = "ZIP_ER_WRITE"; + Errors2[(Errors2["ZIP_ER_CRC"] = 7)] = "ZIP_ER_CRC"; + Errors2[(Errors2["ZIP_ER_ZIPCLOSED"] = 8)] = "ZIP_ER_ZIPCLOSED"; + Errors2[(Errors2["ZIP_ER_NOENT"] = 9)] = "ZIP_ER_NOENT"; + Errors2[(Errors2["ZIP_ER_EXISTS"] = 10)] = "ZIP_ER_EXISTS"; + Errors2[(Errors2["ZIP_ER_OPEN"] = 11)] = "ZIP_ER_OPEN"; + Errors2[(Errors2["ZIP_ER_TMPOPEN"] = 12)] = "ZIP_ER_TMPOPEN"; + Errors2[(Errors2["ZIP_ER_ZLIB"] = 13)] = "ZIP_ER_ZLIB"; + Errors2[(Errors2["ZIP_ER_MEMORY"] = 14)] = "ZIP_ER_MEMORY"; + Errors2[(Errors2["ZIP_ER_CHANGED"] = 15)] = "ZIP_ER_CHANGED"; + Errors2[(Errors2["ZIP_ER_COMPNOTSUPP"] = 16)] = "ZIP_ER_COMPNOTSUPP"; + Errors2[(Errors2["ZIP_ER_EOF"] = 17)] = "ZIP_ER_EOF"; + Errors2[(Errors2["ZIP_ER_INVAL"] = 18)] = "ZIP_ER_INVAL"; + Errors2[(Errors2["ZIP_ER_NOZIP"] = 19)] = "ZIP_ER_NOZIP"; + Errors2[(Errors2["ZIP_ER_INTERNAL"] = 20)] = "ZIP_ER_INTERNAL"; + Errors2[(Errors2["ZIP_ER_INCONS"] = 21)] = "ZIP_ER_INCONS"; + Errors2[(Errors2["ZIP_ER_REMOVE"] = 22)] = "ZIP_ER_REMOVE"; + Errors2[(Errors2["ZIP_ER_DELETED"] = 23)] = "ZIP_ER_DELETED"; + Errors2[(Errors2["ZIP_ER_ENCRNOTSUPP"] = 24)] = "ZIP_ER_ENCRNOTSUPP"; + Errors2[(Errors2["ZIP_ER_RDONLY"] = 25)] = "ZIP_ER_RDONLY"; + Errors2[(Errors2["ZIP_ER_NOPASSWD"] = 26)] = "ZIP_ER_NOPASSWD"; + Errors2[(Errors2["ZIP_ER_WRONGPASSWD"] = 27)] = "ZIP_ER_WRONGPASSWD"; + Errors2[(Errors2["ZIP_ER_OPNOTSUPP"] = 28)] = "ZIP_ER_OPNOTSUPP"; + Errors2[(Errors2["ZIP_ER_INUSE"] = 29)] = "ZIP_ER_INUSE"; + Errors2[(Errors2["ZIP_ER_TELL"] = 30)] = "ZIP_ER_TELL"; + Errors2[(Errors2["ZIP_ER_COMPRESSED_DATA"] = 31)] = "ZIP_ER_COMPRESSED_DATA"; return Errors2; })(Errors || {}); const makeInterface = (emZip) => ({ @@ -7951,77 +8790,148 @@ const makeInterface = (emZip) => ({ malloc: emZip._malloc, free: emZip._free, getValue: emZip.getValue, - openFromSource: emZip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]), + openFromSource: emZip.cwrap(`zip_open_from_source`, `number`, [ + `number`, + `number`, + `number`, + ]), close: emZip.cwrap(`zip_close`, `number`, [`number`]), discard: emZip.cwrap(`zip_discard`, null, [`number`]), getError: emZip.cwrap(`zip_get_error`, `number`, [`number`]), - getName: emZip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]), - getNumEntries: emZip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]), + getName: emZip.cwrap(`zip_get_name`, `string`, [ + `number`, + `number`, + `number`, + ]), + getNumEntries: emZip.cwrap(`zip_get_num_entries`, `number`, [ + `number`, + `number`, + ]), delete: emZip.cwrap(`zip_delete`, `number`, [`number`, `number`]), - statIndex: emZip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]), - fopenIndex: emZip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]), - fread: emZip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]), + statIndex: emZip.cwrap(`zip_stat_index`, `number`, [ + `number`, + ...number64, + `number`, + `number`, + ]), + fopenIndex: emZip.cwrap(`zip_fopen_index`, `number`, [ + `number`, + ...number64, + `number`, + ]), + fread: emZip.cwrap(`zip_fread`, `number`, [ + `number`, + `number`, + `number`, + `number`, + ]), fclose: emZip.cwrap(`zip_fclose`, `number`, [`number`]), dir: { - add: emZip.cwrap(`zip_dir_add`, `number`, [`number`, `string`]) + add: emZip.cwrap(`zip_dir_add`, `number`, [`number`, `string`]), }, file: { - add: emZip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]), + add: emZip.cwrap(`zip_file_add`, `number`, [ + `number`, + `string`, + `number`, + `number`, + ]), getError: emZip.cwrap(`zip_file_get_error`, `number`, [`number`]), - getExternalAttributes: emZip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), - setExternalAttributes: emZip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), - setMtime: emZip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]), - setCompression: emZip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`]) + getExternalAttributes: emZip.cwrap( + `zip_file_get_external_attributes`, + `number`, + [`number`, ...number64, `number`, `number`, `number`], + ), + setExternalAttributes: emZip.cwrap( + `zip_file_set_external_attributes`, + `number`, + [`number`, ...number64, `number`, `number`, `number`], + ), + setMtime: emZip.cwrap(`zip_file_set_mtime`, `number`, [ + `number`, + ...number64, + `number`, + `number`, + ]), + setCompression: emZip.cwrap(`zip_set_file_compression`, `number`, [ + `number`, + ...number64, + `number`, + `number`, + ]), }, ext: { - countSymlinks: emZip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`]) + countSymlinks: emZip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`]), }, error: { - initWithCode: emZip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]), - strerror: emZip.cwrap(`zip_error_strerror`, `string`, [`number`]) + initWithCode: emZip.cwrap(`zip_error_init_with_code`, null, [ + `number`, + `number`, + ]), + strerror: emZip.cwrap(`zip_error_strerror`, `string`, [`number`]), }, name: { - locate: emZip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`]) + locate: emZip.cwrap(`zip_name_locate`, `number`, [ + `number`, + `string`, + `number`, + ]), }, source: { - fromUnattachedBuffer: emZip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]), - fromBuffer: emZip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]), + fromUnattachedBuffer: emZip.cwrap(`zip_source_buffer_create`, `number`, [ + `number`, + ...number64, + `number`, + `number`, + ]), + fromBuffer: emZip.cwrap(`zip_source_buffer`, `number`, [ + `number`, + `number`, + ...number64, + `number`, + ]), free: emZip.cwrap(`zip_source_free`, null, [`number`]), keep: emZip.cwrap(`zip_source_keep`, null, [`number`]), open: emZip.cwrap(`zip_source_open`, `number`, [`number`]), close: emZip.cwrap(`zip_source_close`, `number`, [`number`]), - seek: emZip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]), + seek: emZip.cwrap(`zip_source_seek`, `number`, [ + `number`, + ...number64, + `number`, + ]), tell: emZip.cwrap(`zip_source_tell`, `number`, [`number`]), - read: emZip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]), - error: emZip.cwrap(`zip_source_error`, `number`, [`number`]) + read: emZip.cwrap(`zip_source_read`, `number`, [ + `number`, + `number`, + `number`, + ]), + error: emZip.cwrap(`zip_source_error`, `number`, [`number`]), }, struct: { statS: emZip.cwrap(`zipstruct_statS`, `number`, []), statSize: emZip.cwrap(`zipstruct_stat_size`, `number`, [`number`]), statCompSize: emZip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]), - statCompMethod: emZip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]), + statCompMethod: emZip.cwrap(`zipstruct_stat_comp_method`, `number`, [ + `number`, + ]), statMtime: emZip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]), statCrc: emZip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]), errorS: emZip.cwrap(`zipstruct_errorS`, `number`, []), - errorCodeZip: emZip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`]) - } + errorCodeZip: emZip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`]), + }, }); function getArchivePart(path, extension) { let idx = path.indexOf(extension); - if (idx <= 0) - return null; + if (idx <= 0) return null; let nextCharIdx = idx; while (idx >= 0) { nextCharIdx = idx + extension.length; - if (path[nextCharIdx] === ppath.sep) - break; - if (path[idx - 1] === ppath.sep) - return null; + if (path[nextCharIdx] === ppath.sep) break; + if (path[idx - 1] === ppath.sep) return null; idx = path.indexOf(extension, nextCharIdx); } - if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep) - return null; + if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep) return null; return path.slice(0, nextCharIdx); } class ZipOpenFS extends MountFS { @@ -8036,21 +8946,24 @@ class ZipOpenFS extends MountFS { constructor(opts = {}) { const fileExtensions = opts.fileExtensions; const readOnlyArchives = opts.readOnlyArchives; - const getMountPoint = typeof fileExtensions === `undefined` ? (path) => getArchivePart(path, `.zip`) : (path) => { - for (const extension of fileExtensions) { - const result = getArchivePart(path, extension); - if (result) { - return result; - } - } - return null; - }; + const getMountPoint = + typeof fileExtensions === `undefined` + ? (path) => getArchivePart(path, `.zip`) + : (path) => { + for (const extension of fileExtensions) { + const result = getArchivePart(path, extension); + if (result) { + return result; + } + } + return null; + }; const factorySync = (baseFs, p) => { return new ZipFS(p, { baseFs, readOnly: readOnlyArchives, stats: baseFs.statSync(p), - customZipImplementation: opts.customZipImplementation + customZipImplementation: opts.customZipImplementation, }); }; const factoryPromise = async (baseFs, p) => { @@ -8058,7 +8971,7 @@ class ZipOpenFS extends MountFS { baseFs, readOnly: readOnlyArchives, stats: await baseFs.statPromise(p), - customZipImplementation: opts.customZipImplementation + customZipImplementation: opts.customZipImplementation, }; return () => { return new ZipFS(p, zipOptions); @@ -8068,7 +8981,7 @@ class ZipOpenFS extends MountFS { ...opts, factorySync, factoryPromise, - getMountPoint + getMountPoint, }); } } @@ -8089,13 +9002,13 @@ class LibZipImpl { symlinkCount; filesShouldBeCached = true; constructor(opts) { - const buffer = `buffer` in opts ? opts.buffer : opts.baseFs.readFileSync(opts.path); + const buffer = + `buffer` in opts ? opts.buffer : opts.baseFs.readFileSync(opts.path); this.libzip = getInstance(); const errPtr = this.libzip.malloc(4); try { let flags = 0; - if (opts.readOnly) - flags |= this.libzip.ZIP_RDONLY; + if (opts.readOnly) flags |= this.libzip.ZIP_RDONLY; const lzSource = this.allocateUnattachedSource(buffer); try { this.zip = this.libzip.openFromSource(lzSource, flags, errPtr); @@ -8106,7 +9019,10 @@ class LibZipImpl { } if (this.zip === 0) { const error = this.libzip.struct.errorS(); - this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`)); + this.libzip.error.initWithCode( + error, + this.libzip.getValue(errPtr, `i32`), + ); throw this.makeLibzipError(error); } } finally { @@ -8131,8 +9047,7 @@ class LibZipImpl { stat(entry) { const stat = this.libzip.struct.statS(); const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat); - if (rc === -1) - throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (rc === -1) throw this.makeLibzipError(this.libzip.getError(this.zip)); const size = this.libzip.struct.statSize(stat) >>> 0; const mtime = this.libzip.struct.statMtime(stat) >>> 0; const crc = this.libzip.struct.statCrc(stat) >>> 0; @@ -8141,19 +9056,35 @@ class LibZipImpl { makeLibzipError(error) { const errorCode = this.libzip.struct.errorCodeZip(error); const strerror = this.libzip.error.strerror(error); - const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]); + const libzipError = new LibzipError( + strerror, + this.libzip.errors[errorCode], + ); if (errorCode === this.libzip.errors.ZIP_ER_CHANGED) - throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`); + throw new Error( + `Assertion failed: Unexpected libzip error: ${libzipError.message}`, + ); return libzipError; } setFileSource(target, compression, buffer) { const lzSource = this.allocateSource(buffer); try { - const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE); + const newIndex = this.libzip.file.add( + this.zip, + target, + lzSource, + this.libzip.ZIP_FL_OVERWRITE, + ); if (newIndex === -1) throw this.makeLibzipError(this.libzip.getError(this.zip)); if (compression !== null) { - const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, compression[0], compression[1]); + const rc = this.libzip.file.setCompression( + this.zip, + newIndex, + 0, + compression[0], + compression[1], + ); if (rc === -1) { throw this.makeLibzipError(this.libzip.getError(this.zip)); } @@ -8171,7 +9102,14 @@ class LibZipImpl { } } getExternalAttributes(index) { - const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); + const attrs = this.libzip.file.getExternalAttributes( + this.zip, + index, + 0, + 0, + this.libzip.uint08S, + this.libzip.uint32S, + ); if (attrs === -1) throw this.makeLibzipError(this.libzip.getError(this.zip)); const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; @@ -8179,7 +9117,14 @@ class LibZipImpl { return [opsys, attributes]; } setExternalAttributes(index, opsys, attributes) { - const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, opsys, attributes); + const rc = this.libzip.file.setExternalAttributes( + this.zip, + index, + 0, + 0, + opsys, + attributes, + ); if (rc === -1) { throw this.makeLibzipError(this.libzip.getError(this.zip)); } @@ -8190,23 +9135,25 @@ class LibZipImpl { getFileSource(index) { const stat = this.libzip.struct.statS(); const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat); - if (rc === -1) - throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (rc === -1) throw this.makeLibzipError(this.libzip.getError(this.zip)); const size = this.libzip.struct.statCompSize(stat); const compressionMethod = this.libzip.struct.statCompMethod(stat); const buffer = this.libzip.malloc(size); try { - const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED); + const file = this.libzip.fopenIndex( + this.zip, + index, + 0, + this.libzip.ZIP_FL_COMPRESSED, + ); if (file === 0) throw this.makeLibzipError(this.libzip.getError(this.zip)); try { const rc2 = this.libzip.fread(file, buffer, size, 0); if (rc2 === -1) throw this.makeLibzipError(this.libzip.file.getError(file)); - else if (rc2 < size) - throw new Error(`Incomplete read`); - else if (rc2 > size) - throw new Error(`Overread`); + else if (rc2 < size) throw new Error(`Incomplete read`); + else if (rc2 > size) throw new Error(`Overread`); const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size); const data = Buffer.from(memory); return { data, compressionMethod }; @@ -8236,27 +9183,35 @@ class LibZipImpl { throw this.makeLibzipError(this.libzip.getError(this.zip)); if (this.libzip.source.open(this.lzSource) === -1) throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); - if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1) + if ( + this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === + -1 + ) throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); const size = this.libzip.source.tell(this.lzSource); if (size === -1) throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); - if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1) + if ( + this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === + -1 + ) throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); const buffer = this.libzip.malloc(size); - if (!buffer) - throw new Error(`Couldn't allocate enough memory`); + if (!buffer) throw new Error(`Couldn't allocate enough memory`); try { const rc = this.libzip.source.read(this.lzSource, buffer, size); if (rc === -1) throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); - else if (rc < size) - throw new Error(`Incomplete read`); - else if (rc > size) - throw new Error(`Overread`); - let result = Buffer.from(this.libzip.HEAPU8.subarray(buffer, buffer + size)); + else if (rc < size) throw new Error(`Incomplete read`); + else if (rc > size) throw new Error(`Overread`); + let result = Buffer.from( + this.libzip.HEAPU8.subarray(buffer, buffer + size), + ); if (process.env.YARN_IS_TEST_ENV && process.env.YARN_ZIP_DATA_EPILOGUE) - result = Buffer.concat([result, Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)]); + result = Buffer.concat([ + result, + Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE), + ]); return result; } finally { this.libzip.free(buffer); @@ -8267,19 +9222,27 @@ class LibZipImpl { } } allocateBuffer(content) { - if (!Buffer.isBuffer(content)) - content = Buffer.from(content); + if (!Buffer.isBuffer(content)) content = Buffer.from(content); const buffer = this.libzip.malloc(content.byteLength); - if (!buffer) - throw new Error(`Couldn't allocate enough memory`); - const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength); + if (!buffer) throw new Error(`Couldn't allocate enough memory`); + const heap = new Uint8Array( + this.libzip.HEAPU8.buffer, + buffer, + content.byteLength, + ); heap.set(content); return { buffer, byteLength: content.byteLength }; } allocateUnattachedSource(content) { const error = this.libzip.struct.errorS(); const { buffer, byteLength } = this.allocateBuffer(content); - const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error); + const source = this.libzip.source.fromUnattachedBuffer( + buffer, + byteLength, + 0, + 1, + error, + ); if (source === 0) { this.libzip.free(error); throw this.makeLibzipError(error); @@ -8288,7 +9251,13 @@ class LibZipImpl { } allocateSource(content) { const { buffer, byteLength } = this.allocateBuffer(content); - const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1); + const source = this.libzip.source.fromBuffer( + this.zip, + buffer, + byteLength, + 0, + 1, + ); if (source === 0) { this.libzip.free(buffer); throw this.makeLibzipError(this.libzip.getError(this.zip)); @@ -8305,8 +9274,7 @@ const STORE = 0; const DEFLATE = 8; const DEFAULT_COMPRESSION_LEVEL = `mixed`; function toUnixTimestamp(time) { - if (typeof time === `string` && String(+time) === time) - return +time; + if (typeof time === `string` && String(+time) === time) return +time; if (typeof time === `number` && Number.isFinite(time)) { if (time < 0) { return Date.now() / 1e3; @@ -8314,34 +9282,12 @@ function toUnixTimestamp(time) { return time; } } - if (nodeUtils.types.isDate(time)) - return time.getTime() / 1e3; + if (nodeUtils.types.isDate(time)) return time.getTime() / 1e3; throw new Error(`Invalid time`); } function makeEmptyArchive() { return Buffer.from([ - 80, - 75, - 5, - 6, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 + 80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]); } class ZipFS extends BasePortableFakeFS { @@ -8365,10 +9311,12 @@ class ZipFS extends BasePortableFakeFS { readOnly = false; constructor(source, opts = {}) { super(); - if (opts.readOnly) - this.readOnly = true; + if (opts.readOnly) this.readOnly = true; const pathOptions = opts; - this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL; + this.level = + typeof pathOptions.level !== `undefined` + ? pathOptions.level + : DEFAULT_COMPRESSION_LEVEL; const ZipImplCls = opts.customZipImplementation ?? LibZipImpl; if (typeof source === `string`) { const { baseFs = new NodeFS() } = pathOptions; @@ -8397,19 +9345,29 @@ class ZipFS extends BasePortableFakeFS { } if (typeof source === `string`) { if (opts.create) { - this.zipImpl = new ZipImplCls({ buffer: makeEmptyArchive(), readOnly: this.readOnly }); + this.zipImpl = new ZipImplCls({ + buffer: makeEmptyArchive(), + readOnly: this.readOnly, + }); } else { - this.zipImpl = new ZipImplCls({ path: source, baseFs: this.baseFs, readOnly: this.readOnly, size: this.stats.size }); + this.zipImpl = new ZipImplCls({ + path: source, + baseFs: this.baseFs, + readOnly: this.readOnly, + size: this.stats.size, + }); } } else { - this.zipImpl = new ZipImplCls({ buffer: source ?? makeEmptyArchive(), readOnly: this.readOnly }); + this.zipImpl = new ZipImplCls({ + buffer: source ?? makeEmptyArchive(), + readOnly: this.readOnly, + }); } this.listings.set(PortablePath.root, /* @__PURE__ */ new Set()); const listings = this.zipImpl.getListings(); for (let t = 0; t < listings.length; t++) { const raw = listings[t]; - if (ppath.isAbsolute(raw)) - continue; + if (ppath.isAbsolute(raw)) continue; const p = ppath.resolve(PortablePath.root, raw); this.registerEntry(p, t); if (raw.endsWith(`/`)) { @@ -8437,8 +9395,7 @@ class ZipFS extends BasePortableFakeFS { return this.path; } prepareClose() { - if (!this.ready) - throw EBUSY(`archive closed, close`); + if (!this.ready) throw EBUSY(`archive closed, close`); unwatchAllFiles(this); } getBufferAndClose() { @@ -8460,13 +9417,20 @@ class ZipFS extends BasePortableFakeFS { } saveAndClose() { if (!this.path || !this.baseFs) - throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`); + throw new Error( + `ZipFS cannot be saved and must be discarded when loaded from a buffer`, + ); if (this.readOnly) { this.discardAndClose(); return; } - const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode; - this.baseFs.writeFileSync(this.path, this.getBufferAndClose(), { mode: newMode }); + const newMode = + this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE + ? void 0 + : this.stats.mode; + this.baseFs.writeFileSync(this.path, this.getBufferAndClose(), { + mode: newMode, + }); this.ready = false; } resolve(p) { @@ -8491,8 +9455,7 @@ class ZipFS extends BasePortableFakeFS { if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw ENOENT(`opendir '${p}'`); const directoryListing = this.listings.get(resolvedP); - if (!directoryListing) - throw ENOTDIR(`opendir '${p}'`); + if (!directoryListing) throw ENOTDIR(`opendir '${p}'`); const entries = [...directoryListing]; const fd = this.openSync(resolvedP, `r`); const onClose = () => { @@ -8505,14 +9468,16 @@ class ZipFS extends BasePortableFakeFS { } readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) { const entry = this.fds.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`read`); - const realPosition = position === -1 || position === null ? entry.cursor : position; + if (typeof entry === `undefined`) throw EBADF(`read`); + const realPosition = + position === -1 || position === null ? entry.cursor : position; const source = this.readFileSync(entry.p); source.copy(buffer, offset, realPosition, realPosition + length); - const bytesRead = Math.max(0, Math.min(source.length - realPosition, length)); - if (position === -1 || position === null) - entry.cursor += bytesRead; + const bytesRead = Math.max( + 0, + Math.min(source.length - realPosition, length), + ); + if (position === -1 || position === null) entry.cursor += bytesRead; return bytesRead; } async writePromise(fd, buffer, offset, length, position) { @@ -8524,8 +9489,7 @@ class ZipFS extends BasePortableFakeFS { } writeSync(fd, buffer, offset, length, position) { const entry = this.fds.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`read`); + if (typeof entry === `undefined`) throw EBADF(`read`); throw new Error(`Unimplemented`); } async closePromise(fd) { @@ -8533,13 +9497,11 @@ class ZipFS extends BasePortableFakeFS { } closeSync(fd) { const entry = this.fds.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`read`); + if (typeof entry === `undefined`) throw EBADF(`read`); this.fds.delete(fd); } createReadStream(p, { encoding } = {}) { - if (p === null) - throw new Error(`Unimplemented`); + if (p === null) throw new Error(`Unimplemented`); const fd = this.openSync(p, `r`); const stream$1 = Object.assign( new stream.PassThrough({ @@ -8549,7 +9511,7 @@ class ZipFS extends BasePortableFakeFS { clearImmediate(immediate); this.closeSync(fd); callback(error); - } + }, }), { close() { @@ -8558,8 +9520,8 @@ class ZipFS extends BasePortableFakeFS { bytesRead: 0, path: p, // "This property is `true` if the underlying file has not been opened yet" - pending: false - } + pending: false, + }, ); const immediate = setImmediate(async () => { try { @@ -8573,10 +9535,8 @@ class ZipFS extends BasePortableFakeFS { return stream$1; } createWriteStream(p, { encoding } = {}) { - if (this.readOnly) - throw EROFS(`open '${p}'`); - if (p === null) - throw new Error(`Unimplemented`); + if (this.readOnly) throw EROFS(`open '${p}'`); + if (p === null) throw new Error(`Unimplemented`); const chunks = []; const fd = this.openSync(p, `w`); const stream$1 = Object.assign( @@ -8596,7 +9556,7 @@ class ZipFS extends BasePortableFakeFS { } finally { this.closeSync(fd); } - } + }, }), { close() { @@ -8605,8 +9565,8 @@ class ZipFS extends BasePortableFakeFS { bytesWritten: 0, path: p, // "This property is `true` if the underlying file has not been opened yet" - pending: false - } + pending: false, + }, ); stream$1.on(`data`, (chunk) => { const chunkBuffer = Buffer.from(chunk); @@ -8628,8 +9588,7 @@ class ZipFS extends BasePortableFakeFS { return this.existsSync(p); } existsSync(p) { - if (!this.ready) - throw EBUSY(`archive closed, existsSync '${p}'`); + if (!this.ready) throw EBUSY(`archive closed, existsSync '${p}'`); if (this.symlinkCount === 0) { const resolvedP2 = ppath.resolve(PortablePath.root, p); return this.entries.has(resolvedP2) || this.listings.has(resolvedP2); @@ -8640,8 +9599,7 @@ class ZipFS extends BasePortableFakeFS { } catch { return false; } - if (resolvedP === void 0) - return false; + if (resolvedP === void 0) return false; return this.entries.has(resolvedP) || this.listings.has(resolvedP); } async accessPromise(p, mode) { @@ -8656,17 +9614,19 @@ class ZipFS extends BasePortableFakeFS { } } async statPromise(p, opts = { bigint: false }) { - if (opts.bigint) - return this.statSync(p, { bigint: true }); + if (opts.bigint) return this.statSync(p, { bigint: true }); return this.statSync(p); } statSync(p, opts = { bigint: false, throwIfNoEntry: true }) { - const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry); - if (resolvedP === void 0) - return void 0; + const resolvedP = this.resolveFilename( + `stat '${p}'`, + p, + void 0, + opts.throwIfNoEntry, + ); + if (resolvedP === void 0) return void 0; if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { - if (opts.throwIfNoEntry === false) - return void 0; + if (opts.throwIfNoEntry === false) return void 0; throw ENOENT(`stat '${p}'`); } if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) @@ -8678,8 +9638,7 @@ class ZipFS extends BasePortableFakeFS { } fstatSync(fd, opts) { const entry = this.fds.get(fd); - if (typeof entry === `undefined`) - throw EBADF(`fstatSync`); + if (typeof entry === `undefined`) throw EBADF(`fstatSync`); const { p } = entry; const resolvedP = this.resolveFilename(`stat '${p}'`, p); if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) @@ -8689,17 +9648,19 @@ class ZipFS extends BasePortableFakeFS { return this.statImpl(`fstat '${p}'`, resolvedP, opts); } async lstatPromise(p, opts = { bigint: false }) { - if (opts.bigint) - return this.lstatSync(p, { bigint: true }); + if (opts.bigint) return this.lstatSync(p, { bigint: true }); return this.lstatSync(p); } lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) { - const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry); - if (resolvedP === void 0) - return void 0; + const resolvedP = this.resolveFilename( + `lstat '${p}'`, + p, + false, + opts.throwIfNoEntry, + ); + if (resolvedP === void 0) return void 0; if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { - if (opts.throwIfNoEntry === false) - return void 0; + if (opts.throwIfNoEntry === false) return void 0; throw ENOENT(`lstat '${p}'`); } if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) @@ -8724,11 +9685,33 @@ class ZipFS extends BasePortableFakeFS { const birthtime = new Date(birthtimeMs); const ctime = new Date(ctimeMs); const mtime = new Date(mtimeMs); - const type = this.listings.has(p) ? fs.constants.S_IFDIR : this.isSymbolicLink(entry) ? fs.constants.S_IFLNK : fs.constants.S_IFREG; + const type = this.listings.has(p) + ? fs.constants.S_IFDIR + : this.isSymbolicLink(entry) + ? fs.constants.S_IFLNK + : fs.constants.S_IFREG; const defaultMode = type === fs.constants.S_IFDIR ? 493 : 420; - const mode = type | this.getUnixMode(entry, defaultMode) & 511; - const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); - return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + const mode = type | (this.getUnixMode(entry, defaultMode) & 511); + const statInstance = Object.assign(new StatEntry(), { + uid, + gid, + size, + blksize, + blocks, + atime, + birthtime, + ctime, + mtime, + atimeMs, + birthtimeMs, + ctimeMs, + mtimeMs, + mode, + crc, + }); + return opts.bigint === true + ? convertToBigIntStats(statInstance) + : statInstance; } if (this.listings.has(p)) { const uid = this.stats.uid; @@ -8746,21 +9729,37 @@ class ZipFS extends BasePortableFakeFS { const mtime = new Date(mtimeMs); const mode = fs.constants.S_IFDIR | 493; const crc = 0; - const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); - return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + const statInstance = Object.assign(new StatEntry(), { + uid, + gid, + size, + blksize, + blocks, + atime, + birthtime, + ctime, + mtime, + atimeMs, + birthtimeMs, + ctimeMs, + mtimeMs, + mode, + crc, + }); + return opts.bigint === true + ? convertToBigIntStats(statInstance) + : statInstance; } throw new Error(`Unreachable`); } getUnixMode(index, defaultMode) { const [opsys, attributes] = this.zipImpl.getExternalAttributes(index); - if (opsys !== ZIP_UNIX) - return defaultMode; + if (opsys !== ZIP_UNIX) return defaultMode; return attributes >>> 16; } registerListing(p) { const existingListing = this.listings.get(p); - if (existingListing) - return existingListing; + if (existingListing) return existingListing; const parentListing = this.registerListing(ppath.dirname(p)); parentListing.add(ppath.basename(p)); const newListing = /* @__PURE__ */ new Set(); @@ -8781,8 +9780,7 @@ class ZipFS extends BasePortableFakeFS { this.unregisterListing(p); const entry = this.entries.get(p); this.entries.delete(p); - if (typeof entry === `undefined`) - return; + if (typeof entry === `undefined`) return; this.fileSources.delete(entry); if (this.isSymbolicLink(entry)) { this.symlinkCount--; @@ -8792,40 +9790,48 @@ class ZipFS extends BasePortableFakeFS { this.unregisterEntry(p); this.zipImpl.deleteEntry(index); } - resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) { - if (!this.ready) - throw EBUSY(`archive closed, ${reason}`); + resolveFilename( + reason, + p, + resolveLastComponent = true, + throwIfNoEntry = true, + ) { + if (!this.ready) throw EBUSY(`archive closed, ${reason}`); let resolvedP = ppath.resolve(PortablePath.root, p); - if (resolvedP === `/`) - return PortablePath.root; + if (resolvedP === `/`) return PortablePath.root; const fileIndex = this.entries.get(resolvedP); if (resolveLastComponent && fileIndex !== void 0) { if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) { const target = this.getFileSource(fileIndex).toString(); - return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry); + return this.resolveFilename( + reason, + ppath.resolve(ppath.dirname(resolvedP), target), + true, + throwIfNoEntry, + ); } else { return resolvedP; } } while (true) { - const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry); - if (parentP === void 0) - return parentP; + const parentP = this.resolveFilename( + reason, + ppath.dirname(resolvedP), + true, + throwIfNoEntry, + ); + if (parentP === void 0) return parentP; const isDir = this.listings.has(parentP); const doesExist = this.entries.has(parentP); if (!isDir && !doesExist) { - if (throwIfNoEntry === false) - return void 0; + if (throwIfNoEntry === false) return void 0; throw ENOENT(reason); } - if (!isDir) - throw ENOTDIR(reason); + if (!isDir) throw ENOTDIR(reason); resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP)); - if (!resolveLastComponent || this.symlinkCount === 0) - break; + if (!resolveLastComponent || this.symlinkCount === 0) break; const index = this.zipImpl.locate(resolvedP.slice(1)); - if (index === -1) - break; + if (index === -1) break; if (this.isSymbolicLink(index)) { const target = this.getFileSource(index).toString(); resolvedP = ppath.resolve(ppath.dirname(resolvedP), target); @@ -8848,22 +9854,18 @@ class ZipFS extends BasePortableFakeFS { return newIndex; } isSymbolicLink(index) { - if (this.symlinkCount === 0) - return false; + if (this.symlinkCount === 0) return false; const [opsys, attrs] = this.zipImpl.getExternalAttributes(index); - if (opsys !== ZIP_UNIX) - return false; + if (opsys !== ZIP_UNIX) return false; const attributes = attrs >>> 16; return (attributes & fs.constants.S_IFMT) === fs.constants.S_IFLNK; } getFileSource(index, opts = { asyncDecompress: false }) { const cachedFileSource = this.fileSources.get(index); - if (typeof cachedFileSource !== `undefined`) - return cachedFileSource; + if (typeof cachedFileSource !== `undefined`) return cachedFileSource; const { data, compressionMethod } = this.zipImpl.getFileSource(index); if (compressionMethod === STORE) { - if (this.zipImpl.filesShouldBeCached) - this.fileSources.set(index, data); + if (this.zipImpl.filesShouldBeCached) this.fileSources.set(index, data); return data; } else if (compressionMethod === DEFLATE) { if (opts.asyncDecompress) { @@ -8898,15 +9900,16 @@ class ZipFS extends BasePortableFakeFS { return this.chmodSync(p, mask); } chmodSync(p, mask) { - if (this.readOnly) - throw EROFS(`chmod '${p}'`); + if (this.readOnly) throw EROFS(`chmod '${p}'`); mask &= 493; const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false); const entry = this.entries.get(resolvedP); if (typeof entry === `undefined`) - throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`); + throw new Error( + `Assertion failed: The entry should have been registered (${resolvedP})`, + ); const oldMod = this.getUnixMode(entry, fs.constants.S_IFREG | 0); - const newMod = oldMod & ~511 | mask; + const newMod = (oldMod & ~511) | mask; this.zipImpl.setExternalAttributes(entry, ZIP_UNIX, newMod << 16); } async fchownPromise(fd, uid, gid) { @@ -8928,15 +9931,25 @@ class ZipFS extends BasePortableFakeFS { throw new Error(`Unimplemented`); } async copyFilePromise(sourceP, destP, flags) { - const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); - const source = await this.getFileSource(indexSource, { asyncDecompress: true }); + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile( + sourceP, + destP, + flags, + ); + const source = await this.getFileSource(indexSource, { + asyncDecompress: true, + }); const newIndex = this.setFileSource(resolvedDestP, source); if (newIndex !== indexDest) { this.registerEntry(resolvedDestP, newIndex); } } copyFileSync(sourceP, destP, flags = 0) { - const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile( + sourceP, + destP, + flags, + ); const source = this.getFileSource(indexSource); const newIndex = this.setFileSource(resolvedDestP, source); if (newIndex !== indexDest) { @@ -8944,123 +9957,130 @@ class ZipFS extends BasePortableFakeFS { } } prepareCopyFile(sourceP, destP, flags = 0) { - if (this.readOnly) - throw EROFS(`copyfile '${sourceP} -> '${destP}'`); + if (this.readOnly) throw EROFS(`copyfile '${sourceP} -> '${destP}'`); if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) - throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`); - const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP); + throw ENOSYS( + `unsupported clone operation`, + `copyfile '${sourceP}' -> ${destP}'`, + ); + const resolvedSourceP = this.resolveFilename( + `copyfile '${sourceP} -> ${destP}'`, + sourceP, + ); const indexSource = this.entries.get(resolvedSourceP); if (typeof indexSource === `undefined`) throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`); - const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP); + const resolvedDestP = this.resolveFilename( + `copyfile '${sourceP}' -> ${destP}'`, + destP, + ); const indexDest = this.entries.get(resolvedDestP); - if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`) + if ( + (flags & + (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== + 0 && + typeof indexDest !== `undefined` + ) throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`); return { indexSource, resolvedDestP, - indexDest + indexDest, }; } async appendFilePromise(p, content, opts) { - if (this.readOnly) - throw EROFS(`open '${p}'`); - if (typeof opts === `undefined`) - opts = { flag: `a` }; - else if (typeof opts === `string`) - opts = { flag: `a`, encoding: opts }; - else if (typeof opts.flag === `undefined`) - opts = { flag: `a`, ...opts }; + if (this.readOnly) throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) opts = { flag: `a` }; + else if (typeof opts === `string`) opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) opts = { flag: `a`, ...opts }; return this.writeFilePromise(p, content, opts); } appendFileSync(p, content, opts = {}) { - if (this.readOnly) - throw EROFS(`open '${p}'`); - if (typeof opts === `undefined`) - opts = { flag: `a` }; - else if (typeof opts === `string`) - opts = { flag: `a`, encoding: opts }; - else if (typeof opts.flag === `undefined`) - opts = { flag: `a`, ...opts }; + if (this.readOnly) throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) opts = { flag: `a` }; + else if (typeof opts === `string`) opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) opts = { flag: `a`, ...opts }; return this.writeFileSync(p, content, opts); } fdToPath(fd, reason) { const path = this.fds.get(fd)?.p; - if (typeof path === `undefined`) - throw EBADF(reason); + if (typeof path === `undefined`) throw EBADF(reason); return path; } async writeFilePromise(p, content, opts) { const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); - if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) - content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]); - if (encoding !== null) - content = content.toString(encoding); + if ( + index !== void 0 && + typeof opts === `object` && + opts.flag && + opts.flag.includes(`a`) + ) + content = Buffer.concat([ + await this.getFileSource(index, { asyncDecompress: true }), + Buffer.from(content), + ]); + if (encoding !== null) content = content.toString(encoding); const newIndex = this.setFileSource(resolvedP, content); - if (newIndex !== index) - this.registerEntry(resolvedP, newIndex); + if (newIndex !== index) this.registerEntry(resolvedP, newIndex); if (mode !== null) { await this.chmodPromise(resolvedP, mode); } } writeFileSync(p, content, opts) { const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); - if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) - content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]); - if (encoding !== null) - content = content.toString(encoding); + if ( + index !== void 0 && + typeof opts === `object` && + opts.flag && + opts.flag.includes(`a`) + ) + content = Buffer.concat([ + this.getFileSource(index), + Buffer.from(content), + ]); + if (encoding !== null) content = content.toString(encoding); const newIndex = this.setFileSource(resolvedP, content); - if (newIndex !== index) - this.registerEntry(resolvedP, newIndex); + if (newIndex !== index) this.registerEntry(resolvedP, newIndex); if (mode !== null) { this.chmodSync(resolvedP, mode); } } prepareWriteFile(p, opts) { - if (typeof p === `number`) - p = this.fdToPath(p, `read`); - if (this.readOnly) - throw EROFS(`open '${p}'`); + if (typeof p === `number`) p = this.fdToPath(p, `read`); + if (this.readOnly) throw EROFS(`open '${p}'`); const resolvedP = this.resolveFilename(`open '${p}'`, p); - if (this.listings.has(resolvedP)) - throw EISDIR(`open '${p}'`); - let encoding = null, mode = null; + if (this.listings.has(resolvedP)) throw EISDIR(`open '${p}'`); + let encoding = null, + mode = null; if (typeof opts === `string`) { encoding = opts; } else if (typeof opts === `object`) { - ({ - encoding = null, - mode = null - } = opts); + ({ encoding = null, mode = null } = opts); } const index = this.entries.get(resolvedP); return { encoding, mode, resolvedP, - index + index, }; } async unlinkPromise(p) { return this.unlinkSync(p); } unlinkSync(p) { - if (this.readOnly) - throw EROFS(`unlink '${p}'`); + if (this.readOnly) throw EROFS(`unlink '${p}'`); const resolvedP = this.resolveFilename(`unlink '${p}'`, p); - if (this.listings.has(resolvedP)) - throw EISDIR(`unlink '${p}'`); + if (this.listings.has(resolvedP)) throw EISDIR(`unlink '${p}'`); const index = this.entries.get(resolvedP); - if (typeof index === `undefined`) - throw EINVAL(`unlink '${p}'`); + if (typeof index === `undefined`) throw EINVAL(`unlink '${p}'`); this.deleteEntry(resolvedP, index); } async utimesPromise(p, atime, mtime) { return this.utimesSync(p, atime, mtime); } utimesSync(p, atime, mtime) { - if (this.readOnly) - throw EROFS(`utimes '${p}'`); + if (this.readOnly) throw EROFS(`utimes '${p}'`); const resolvedP = this.resolveFilename(`utimes '${p}'`, p); this.utimesImpl(resolvedP, mtime); } @@ -9068,29 +10088,24 @@ class ZipFS extends BasePortableFakeFS { return this.lutimesSync(p, atime, mtime); } lutimesSync(p, atime, mtime) { - if (this.readOnly) - throw EROFS(`lutimes '${p}'`); + if (this.readOnly) throw EROFS(`lutimes '${p}'`); const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false); this.utimesImpl(resolvedP, mtime); } utimesImpl(resolvedP, mtime) { if (this.listings.has(resolvedP)) { - if (!this.entries.has(resolvedP)) - this.hydrateDirectory(resolvedP); + if (!this.entries.has(resolvedP)) this.hydrateDirectory(resolvedP); } const entry = this.entries.get(resolvedP); - if (entry === void 0) - throw new Error(`Unreachable`); + if (entry === void 0) throw new Error(`Unreachable`); this.zipImpl.setMtime(entry, toUnixTimestamp(mtime)); } async mkdirPromise(p, opts) { return this.mkdirSync(p, opts); } mkdirSync(p, { mode = 493, recursive = false } = {}) { - if (recursive) - return this.mkdirpSync(p, { chmod: mode }); - if (this.readOnly) - throw EROFS(`mkdir '${p}'`); + if (recursive) return this.mkdirpSync(p, { chmod: mode }); + if (this.readOnly) throw EROFS(`mkdir '${p}'`); const resolvedP = this.resolveFilename(`mkdir '${p}'`, p); if (this.entries.has(resolvedP) || this.listings.has(resolvedP)) throw EEXIST(`mkdir '${p}'`); @@ -9102,46 +10117,40 @@ class ZipFS extends BasePortableFakeFS { return this.rmdirSync(p, opts); } rmdirSync(p, { recursive = false } = {}) { - if (this.readOnly) - throw EROFS(`rmdir '${p}'`); + if (this.readOnly) throw EROFS(`rmdir '${p}'`); if (recursive) { this.removeSync(p); return; } const resolvedP = this.resolveFilename(`rmdir '${p}'`, p); const directoryListing = this.listings.get(resolvedP); - if (!directoryListing) - throw ENOTDIR(`rmdir '${p}'`); - if (directoryListing.size > 0) - throw ENOTEMPTY(`rmdir '${p}'`); + if (!directoryListing) throw ENOTDIR(`rmdir '${p}'`); + if (directoryListing.size > 0) throw ENOTEMPTY(`rmdir '${p}'`); const index = this.entries.get(resolvedP); - if (typeof index === `undefined`) - throw EINVAL(`rmdir '${p}'`); + if (typeof index === `undefined`) throw EINVAL(`rmdir '${p}'`); this.deleteEntry(p, index); } async rmPromise(p, opts) { return this.rmSync(p, opts); } rmSync(p, { recursive = false } = {}) { - if (this.readOnly) - throw EROFS(`rm '${p}'`); + if (this.readOnly) throw EROFS(`rm '${p}'`); if (recursive) { this.removeSync(p); return; } const resolvedP = this.resolveFilename(`rm '${p}'`, p); const directoryListing = this.listings.get(resolvedP); - if (!directoryListing) - throw ENOTDIR(`rm '${p}'`); - if (directoryListing.size > 0) - throw ENOTEMPTY(`rm '${p}'`); + if (!directoryListing) throw ENOTDIR(`rm '${p}'`); + if (directoryListing.size > 0) throw ENOTEMPTY(`rm '${p}'`); const index = this.entries.get(resolvedP); - if (typeof index === `undefined`) - throw EINVAL(`rm '${p}'`); + if (typeof index === `undefined`) throw EINVAL(`rm '${p}'`); this.deleteEntry(p, index); } hydrateDirectory(resolvedP) { - const index = this.zipImpl.addDirectory(ppath.relative(PortablePath.root, resolvedP)); + const index = this.zipImpl.addDirectory( + ppath.relative(PortablePath.root, resolvedP), + ); this.registerListing(resolvedP); this.registerEntry(resolvedP, index); return index; @@ -9156,8 +10165,7 @@ class ZipFS extends BasePortableFakeFS { return this.symlinkSync(target, p); } symlinkSync(target, p) { - if (this.readOnly) - throw EROFS(`symlink '${target}' -> '${p}'`); + if (this.readOnly) throw EROFS(`symlink '${target}' -> '${p}'`); const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p); if (this.listings.has(resolvedP)) throw EISDIR(`symlink '${target}' -> '${p}'`); @@ -9165,7 +10173,11 @@ class ZipFS extends BasePortableFakeFS { throw EEXIST(`symlink '${target}' -> '${p}'`); const index = this.setFileSource(resolvedP, target); this.registerEntry(resolvedP, index); - this.zipImpl.setExternalAttributes(index, ZIP_UNIX, (fs.constants.S_IFLNK | 511) << 16); + this.zipImpl.setExternalAttributes( + index, + ZIP_UNIX, + (fs.constants.S_IFLNK | 511) << 16, + ); this.symlinkCount += 1; } async readFilePromise(p, encoding) { @@ -9181,18 +10193,15 @@ class ZipFS extends BasePortableFakeFS { return encoding ? data.toString(encoding) : data; } readFileBuffer(p, opts = { asyncDecompress: false }) { - if (typeof p === `number`) - p = this.fdToPath(p, `read`); + if (typeof p === `number`) p = this.fdToPath(p, `read`); const resolvedP = this.resolveFilename(`open '${p}'`, p); if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw ENOENT(`open '${p}'`); if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) throw ENOTDIR(`open '${p}'`); - if (this.listings.has(resolvedP)) - throw EISDIR(`read`); + if (this.listings.has(resolvedP)) throw EISDIR(`read`); const entry = this.entries.get(resolvedP); - if (entry === void 0) - throw new Error(`Unreachable`); + if (entry === void 0) throw new Error(`Unreachable`); return this.getFileSource(entry, opts); } async readdirPromise(p, opts) { @@ -9203,28 +10212,31 @@ class ZipFS extends BasePortableFakeFS { if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw ENOENT(`scandir '${p}'`); const directoryListing = this.listings.get(resolvedP); - if (!directoryListing) - throw ENOTDIR(`scandir '${p}'`); + if (!directoryListing) throw ENOTDIR(`scandir '${p}'`); if (opts?.recursive) { if (opts?.withFileTypes) { const entries = Array.from(directoryListing, (name) => { return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { name, path: PortablePath.dot, - parentPath: PortablePath.dot + parentPath: PortablePath.dot, }); }); for (const entry of entries) { - if (!entry.isDirectory()) - continue; + if (!entry.isDirectory()) continue; const subPath = ppath.join(entry.path, entry.name); const subListing = this.listings.get(ppath.join(resolvedP, subPath)); for (const child of subListing) { - entries.push(Object.assign(this.statImpl(`lstat`, ppath.join(p, subPath, child)), { - name: child, - path: subPath, - parentPath: subPath - })); + entries.push( + Object.assign( + this.statImpl(`lstat`, ppath.join(p, subPath, child)), + { + name: child, + path: subPath, + parentPath: subPath, + }, + ), + ); } } return entries; @@ -9232,8 +10244,7 @@ class ZipFS extends BasePortableFakeFS { const entries = [...directoryListing]; for (const subPath of entries) { const subListing = this.listings.get(ppath.join(resolvedP, subPath)); - if (typeof subListing === `undefined`) - continue; + if (typeof subListing === `undefined`) continue; for (const child of subListing) { entries.push(ppath.join(subPath, child)); } @@ -9245,7 +10256,7 @@ class ZipFS extends BasePortableFakeFS { return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { name, path: void 0, - parentPath: void 0 + parentPath: void 0, }); }); } else { @@ -9254,7 +10265,9 @@ class ZipFS extends BasePortableFakeFS { } async readlinkPromise(p) { const entry = this.prepareReadlink(p); - return (await this.getFileSource(entry, { asyncDecompress: true })).toString(); + return ( + await this.getFileSource(entry, { asyncDecompress: true }) + ).toString(); } readlinkSync(p) { const entry = this.prepareReadlink(p); @@ -9266,20 +10279,16 @@ class ZipFS extends BasePortableFakeFS { throw ENOENT(`readlink '${p}'`); if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) throw ENOTDIR(`open '${p}'`); - if (this.listings.has(resolvedP)) - throw EINVAL(`readlink '${p}'`); + if (this.listings.has(resolvedP)) throw EINVAL(`readlink '${p}'`); const entry = this.entries.get(resolvedP); - if (entry === void 0) - throw new Error(`Unreachable`); - if (!this.isSymbolicLink(entry)) - throw EINVAL(`readlink '${p}'`); + if (entry === void 0) throw new Error(`Unreachable`); + if (!this.isSymbolicLink(entry)) throw EINVAL(`readlink '${p}'`); return entry; } async truncatePromise(p, len = 0) { const resolvedP = this.resolveFilename(`open '${p}'`, p); const index = this.entries.get(resolvedP); - if (typeof index === `undefined`) - throw EINVAL(`open '${p}'`); + if (typeof index === `undefined`) throw EINVAL(`open '${p}'`); const source = await this.getFileSource(index, { asyncDecompress: true }); const truncated = Buffer.alloc(len, 0); source.copy(truncated); @@ -9288,8 +10297,7 @@ class ZipFS extends BasePortableFakeFS { truncateSync(p, len = 0) { const resolvedP = this.resolveFilename(`open '${p}'`, p); const index = this.entries.get(resolvedP); - if (typeof index === `undefined`) - throw EINVAL(`open '${p}'`); + if (typeof index === `undefined`) throw EINVAL(`open '${p}'`); const source = this.getFileSource(index); const truncated = Buffer.alloc(len, 0); source.copy(truncated); @@ -9317,18 +10325,13 @@ class ZipFS extends BasePortableFakeFS { } break; } - if (!persistent) - return { on: () => { - }, close: () => { - } }; - const interval = setInterval(() => { - }, 24 * 60 * 60 * 1e3); + if (!persistent) return { on: () => {}, close: () => {} }; + const interval = setInterval(() => {}, 24 * 60 * 60 * 1e3); return { - on: () => { - }, + on: () => {}, close: () => { clearInterval(interval); - } + }, }; } watchFile(p, a, b) { @@ -9343,7 +10346,7 @@ class ZipFS extends BasePortableFakeFS { const SIGNATURE = { CENTRAL_DIRECTORY: 33639248, - END_OF_CENTRAL_DIRECTORY: 101010256 + END_OF_CENTRAL_DIRECTORY: 101010256, }; const noCommentCDSize = 22; class JsZipImpl { @@ -9376,7 +10379,7 @@ class JsZipImpl { eocdBuffer, 0, noCommentCDSize, - fileSize - noCommentCDSize + fileSize - noCommentCDSize, ); if (eocdBuffer.readUInt32LE(0) === SIGNATURE.END_OF_CENTRAL_DIRECTORY) { eocdOffset = 0; @@ -9388,7 +10391,7 @@ class JsZipImpl { eocdBuffer, 0, bufferSize, - Math.max(0, fileSize - bufferSize) + Math.max(0, fileSize - bufferSize), ); for (let i = eocdBuffer.length - 4; i >= 0; i--) { if (eocdBuffer.readUInt32LE(i) === SIGNATURE.END_OF_CENTRAL_DIRECTORY) { @@ -9406,14 +10409,20 @@ class JsZipImpl { const commentLength = eocdBuffer.readUInt16LE(eocdOffset + 20); if (eocdOffset + commentLength + noCommentCDSize > eocdBuffer.length) throw new Error(`Zip archive inconsistent`); - if (totalEntries == 65535 || centralDirSize == 4294967295 || centralDirOffset == 4294967295) + if ( + totalEntries == 65535 || + centralDirSize == 4294967295 || + centralDirOffset == 4294967295 + ) throw new Error(`Zip 64 is not supported`); - if (centralDirSize > fileSize) - throw new Error(`Zip archive inconsistent`); + if (centralDirSize > fileSize) throw new Error(`Zip archive inconsistent`); if (totalEntries > centralDirSize / 46) throw new Error(`Zip archive inconsistent`); const cdBuffer = Buffer.alloc(centralDirSize); - if (baseFs.readSync(fd, cdBuffer, 0, cdBuffer.length, centralDirOffset) !== cdBuffer.length) + if ( + baseFs.readSync(fd, cdBuffer, 0, cdBuffer.length, centralDirOffset) !== + cdBuffer.length + ) throw new Error(`Zip archive inconsistent`); const entries = []; let offset = 0; @@ -9435,9 +10444,10 @@ class JsZipImpl { const extraLength = cdBuffer.readUInt16LE(offset + 30); const commentLength2 = cdBuffer.readUInt16LE(offset + 32); const localHeaderOffset = cdBuffer.readUInt32LE(offset + 42); - const name = cdBuffer.toString(`utf8`, offset + 46, offset + 46 + nameLength).replaceAll(`\0`, ` `); - if (name.includes(`\0`)) - throw new Error(`Invalid ZIP file`); + const name = cdBuffer + .toString(`utf8`, offset + 46, offset + 46 + nameLength) + .replaceAll(`\0`, ` `); + if (name.includes(`\0`)) throw new Error(`Invalid ZIP file`); const compressedSize = cdBuffer.readUInt32LE(offset + 20); const externalAttributes = cdBuffer.readUInt32LE(offset + 38); entries.push({ @@ -9447,11 +10457,12 @@ class JsZipImpl { //we dont care, crc, compressionMethod, - isSymbolicLink: os === ZIP_UNIX && (externalAttributes >>> 16 & S_IFMT) === S_IFLNK, + isSymbolicLink: + os === ZIP_UNIX && ((externalAttributes >>> 16) & S_IFMT) === S_IFLNK, size: cdBuffer.readUInt32LE(offset + 24), compressedSize, externalAttributes, - localHeaderOffset + localHeaderOffset, }); sumCompressedSize += compressedSize; index += 1; @@ -9459,8 +10470,7 @@ class JsZipImpl { } if (sumCompressedSize > fileSize) throw new Error(`Zip archive inconsistent`); - if (offset !== cdBuffer.length) - throw new Error(`Zip archive inconsistent`); + if (offset !== cdBuffer.length) throw new Error(`Zip archive inconsistent`); return entries; } getExternalAttributes(index) { @@ -9472,9 +10482,7 @@ class JsZipImpl { } getSymlinkCount() { let count = 0; - for (const entry of this.entries) - if (entry.isSymbolicLink) - count += 1; + for (const entry of this.entries) if (entry.isSymbolicLink) count += 1; return count; } stat(index) { @@ -9482,18 +10490,16 @@ class JsZipImpl { return { crc: entry.crc, mtime: entry.mtime, - size: entry.size + size: entry.size, }; } locate(name) { for (let ind = 0; ind < this.entries.length; ind++) - if (this.entries[ind].name === name) - return ind; + if (this.entries[ind].name === name) return ind; return -1; } getFileSource(index) { - if (this.fd === `closed`) - throw new Error(`ZIP file is closed`); + if (this.fd === `closed`) throw new Error(`ZIP file is closed`); const entry = this.entries[index]; const localHeaderBuf = Buffer.alloc(30); this.baseFs.readSync( @@ -9501,12 +10507,20 @@ class JsZipImpl { localHeaderBuf, 0, localHeaderBuf.length, - entry.localHeaderOffset + entry.localHeaderOffset, ); const nameLength = localHeaderBuf.readUInt16LE(26); const extraLength = localHeaderBuf.readUInt16LE(28); const buffer = Buffer.alloc(entry.compressedSize); - if (this.baseFs.readSync(this.fd, buffer, 0, entry.compressedSize, entry.localHeaderOffset + 30 + nameLength + extraLength) !== entry.compressedSize) + if ( + this.baseFs.readSync( + this.fd, + buffer, + 0, + entry.compressedSize, + entry.localHeaderOffset + 30 + nameLength + extraLength, + ) !== entry.compressedSize + ) throw new Error(`Invalid ZIP file`); return { data: buffer, compressionMethod: entry.compressionMethod }; } @@ -9543,11 +10557,13 @@ setFactory(() => { var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => { ErrorCode2["API_ERROR"] = `API_ERROR`; - ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`; + ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = + `BUILTIN_NODE_RESOLUTION_FAILED`; ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`; ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`; ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`; - ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`; + ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = + `QUALIFIED_PATH_RESOLUTION_FAILED`; ErrorCode2["INTERNAL"] = `INTERNAL`; ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`; ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`; @@ -9558,33 +10574,36 @@ const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([ "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */, "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */, "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */, - "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */ + "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */, ]); function makeError(pnpCode, message, data = {}, code) { code ??= MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode; const propertySpec = { configurable: true, writable: true, - enumerable: false + enumerable: false, }; return Object.defineProperties(new Error(message), { code: { ...propertySpec, - value: code + value: code, }, pnpCode: { ...propertySpec, - value: pnpCode + value: pnpCode, }, data: { ...propertySpec, - value: data - } + value: data, + }, }); } function getIssuerModule(parent) { let issuer = parent; - while (issuer && (issuer.id === `[eval]` || issuer.id === `` || !issuer.filename)) + while ( + issuer && + (issuer.id === `[eval]` || issuer.id === `` || !issuer.filename) + ) issuer = issuer.parent; return issuer || null; } @@ -9592,8 +10611,11 @@ function getPathForDisplay(p) { return npath.normalize(npath.fromPortablePath(p)); } -const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); -const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; +const [major, minor] = process.versions.node + .split(`.`) + .map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = + major > 19 || (major === 19 && minor >= 2) || (major === 18 && minor >= 13); function readPackageScope(checkPath) { const rootSeparatorIndex = checkPath.indexOf(npath.sep); @@ -9601,13 +10623,12 @@ function readPackageScope(checkPath) { do { separatorIndex = checkPath.lastIndexOf(npath.sep); checkPath = checkPath.slice(0, separatorIndex); - if (checkPath.endsWith(`${npath.sep}node_modules`)) - return false; + if (checkPath.endsWith(`${npath.sep}node_modules`)) return false; const pjson = readPackage(checkPath + npath.sep); if (pjson) { return { data: pjson, - path: checkPath + path: checkPath, }; } } while (separatorIndex > rootSeparatorIndex); @@ -9615,12 +10636,16 @@ function readPackageScope(checkPath) { } function readPackage(requestPath) { const jsonPath = npath.resolve(requestPath, `package.json`); - if (!fs__default.default.existsSync(jsonPath)) - return null; + if (!fs__default.default.existsSync(jsonPath)) return null; return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`)); } function ERR_REQUIRE_ESM(filename, parentPath = null) { - const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename); + const basename = + parentPath && + path__default.default.basename(filename) === + path__default.default.basename(parentPath) + ? filename + : path__default.default.basename(filename); const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported. Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`; const err = new Error(msg); @@ -9629,7 +10654,11 @@ Instead change the require of ${basename} in ${parentPath} to a dynamic import() } function reportRequiredFilesToWatchMode(files) { if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { - files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename)))); + files = files.map((filename) => + npath.fromPortablePath( + VirtualFS.resolveVirtual(npath.toPortablePath(filename)), + ), + ); if (WATCH_MODE_MESSAGE_USES_ARRAYS) { process.send({ "watch:require": files }); } else { @@ -9645,12 +10674,16 @@ function applyPatch(pnpapi, opts) { process.versions.pnp = String(pnpapi.VERSIONS.std); const moduleExports = require$$0__default.default; moduleExports.findPnpApi = (lookupSource) => { - const lookupPath = lookupSource instanceof URL ? url.fileURLToPath(lookupSource) : lookupSource; + const lookupPath = + lookupSource instanceof URL + ? url.fileURLToPath(lookupSource) + : lookupSource; const apiPath = opts.manager.findApiPathFor(lookupPath); - if (apiPath === null) - return null; + if (apiPath === null) return null; const apiEntry = opts.manager.getApiEntry(apiPath, true); - return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null; + return apiEntry.instance.findPackageLocator(lookupPath) + ? apiEntry.instance + : null; }; function getRequireStack(parent) { const requireStack = []; @@ -9659,7 +10692,7 @@ function applyPatch(pnpapi, opts) { return requireStack; } const originalModuleLoad = require$$0.Module._load; - require$$0.Module._load = function(request, parent, isMain) { + require$$0.Module._load = function (request, parent, isMain) { if (request === `pnpapi`) { const parentApiPath = opts.manager.getApiPathFromParent(parent); if (parentApiPath) { @@ -9672,16 +10705,25 @@ function applyPatch(pnpapi, opts) { return paths.map((path) => ({ apiPath: opts.manager.findApiPathFor(path), path, - module: null + module: null, })); } function getIssuerSpecsFromModule(module) { - if (module && module.id !== `` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) { - return [{ - apiPath: opts.manager.findApiPathFor(module.paths[0]), - path: module.paths[0], - module - }]; + if ( + module && + module.id !== `` && + module.id !== `internal/preload` && + !module.parent && + !module.filename && + module.paths.length > 0 + ) { + return [ + { + apiPath: opts.manager.findApiPathFor(module.paths[0]), + path: module.paths[0], + module, + }, + ]; } const issuer = getIssuerModule(module); if (issuer !== null) { @@ -9690,7 +10732,9 @@ function applyPatch(pnpapi, opts) { return [{ apiPath, path, module }]; } else { const path = process.cwd(); - const apiPath = opts.manager.findApiPathFor(npath.join(path, `[file]`)) ?? opts.manager.getApiPathFromParent(null); + const apiPath = + opts.manager.findApiPathFor(npath.join(path, `[file]`)) ?? + opts.manager.getApiPathFromParent(null); return [{ apiPath, path, module }]; } } @@ -9700,18 +10744,35 @@ function applyPatch(pnpapi, opts) { fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath); return fakeParent; } - const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const pathRegExp = + /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/; const originalModuleResolveFilename = require$$0.Module._resolveFilename; - require$$0.Module._resolveFilename = function(request, parent, isMain, options) { - if (require$$0.isBuiltin(request)) - return request; + require$$0.Module._resolveFilename = function ( + request, + parent, + isMain, + options, + ) { + if (require$$0.isBuiltin(request)) return request; if (!enableNativeHooks) - return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options); + return originalModuleResolveFilename.call( + require$$0.Module, + request, + parent, + isMain, + options, + ); if (options && options.plugnplay === false) { const { plugnplay, ...forwardedOptions } = options; try { enableNativeHooks = false; - return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions); + return originalModuleResolveFilename.call( + require$$0.Module, + request, + parent, + isMain, + forwardedOptions, + ); } finally { enableNativeHooks = true; } @@ -9724,21 +10785,32 @@ function applyPatch(pnpapi, opts) { if (optionNames.size > 0) { throw makeError( ErrorCode.UNSUPPORTED, - `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})` + `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})`, ); } } - const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent); + const issuerSpecs = + options && options.paths + ? getIssuerSpecsFromPaths(options.paths) + : getIssuerSpecsFromModule(parent); if (request.match(pathRegExp) === null) { - const parentDirectory = parent?.filename != null ? npath.dirname(parent.filename) : null; - const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null; + const parentDirectory = + parent?.filename != null ? npath.dirname(parent.filename) : null; + const absoluteRequest = npath.isAbsolute(request) + ? request + : parentDirectory !== null + ? npath.resolve(parentDirectory, request) + : null; if (absoluteRequest !== null) { - const apiPath = parent && parentDirectory === npath.dirname(absoluteRequest) ? opts.manager.getApiPathFromParent(parent) : opts.manager.findApiPathFor(absoluteRequest); + const apiPath = + parent && parentDirectory === npath.dirname(absoluteRequest) + ? opts.manager.getApiPathFromParent(parent) + : opts.manager.findApiPathFor(absoluteRequest); if (apiPath !== null) { issuerSpecs.unshift({ apiPath, path: parentDirectory, - module: null + module: null, }); } } @@ -9746,18 +10818,31 @@ function applyPatch(pnpapi, opts) { let firstError; for (const { apiPath, path, module } of issuerSpecs) { let resolution; - const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null; + const issuerApi = + apiPath !== null + ? opts.manager.getApiEntry(apiPath, true).instance + : null; try { if (issuerApi !== null) { - resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null, { - conditions: options?.conditions - }); + resolution = issuerApi.resolveRequest( + request, + path !== null ? `${path}/` : null, + { + conditions: options?.conditions, + }, + ); } else { if (path === null) throw new Error(`Assertion failed: Expected the path to be set`); - resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain, { - conditions: options?.conditions - }); + resolution = originalModuleResolveFilename.call( + require$$0.Module, + request, + module || makeFakeParent(path), + isMain, + { + conditions: options?.conditions, + }, + ); } } catch (error) { firstError = firstError || error; @@ -9772,7 +10857,7 @@ function applyPatch(pnpapi, opts) { configurable: true, writable: true, enumerable: false, - value: requireStack + value: requireStack, }); if (requireStack.length > 0) firstError.message += ` @@ -9784,25 +10869,29 @@ Require stack: throw firstError; }; const originalFindPath = require$$0.Module._findPath; - require$$0.Module._findPath = function(request, paths, isMain) { - if (request === `pnpapi`) - return false; + require$$0.Module._findPath = function (request, paths, isMain) { + if (request === `pnpapi`) return false; if (!enableNativeHooks) return originalFindPath.call(require$$0.Module, request, paths, isMain); const isAbsolute = npath.isAbsolute(request); - if (isAbsolute) - paths = [``]; - else if (!paths || paths.length === 0) - return false; + if (isAbsolute) paths = [``]; + else if (!paths || paths.length === 0) return false; for (const path of paths) { let resolution; try { - const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path); + const pnpApiPath = opts.manager.findApiPathFor( + isAbsolute ? request : path, + ); if (pnpApiPath !== null) { const api = opts.manager.getApiEntry(pnpApiPath, true).instance; resolution = api.resolveRequest(request, path) || false; } else { - resolution = originalFindPath.call(require$$0.Module, request, [path], isMain); + resolution = originalFindPath.call( + require$$0.Module, + request, + [path], + isMain, + ); } } catch { continue; @@ -9815,7 +10904,7 @@ Require stack: }; if (!process.features.require_module) { const originalExtensionJSFunction = require$$0.Module._extensions[`.js`]; - require$$0.Module._extensions[`.js`] = function(module, filename) { + require$$0.Module._extensions[`.js`] = function (module, filename) { if (filename.endsWith(`.js`)) { const pkg = readPackageScope(filename); if (pkg && pkg.data?.type === `module`) { @@ -9828,18 +10917,26 @@ Require stack: }; } const originalDlopen = process.dlopen; - process.dlopen = function(...args) { + process.dlopen = function (...args) { const [module, filename, ...rest] = args; return originalDlopen.call( this, module, - npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))), - ...rest + npath.fromPortablePath( + VirtualFS.resolveVirtual(npath.toPortablePath(filename)), + ), + ...rest, ); }; const originalEmit = process.emit; - process.emit = function(name, data, ...args) { - if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`))) + process.emit = function (name, data, ...args) { + if ( + name === `warning` && + typeof data === `object` && + data.name === `ExperimentalWarning` && + (data.message.includes(`--experimental-loader`) || + data.message.includes(`Custom ESM Loaders is an experimental feature`)) + ) return false; return originalEmit.apply(process, arguments); }; @@ -9849,40 +10946,73 @@ Require stack: function hydrateRuntimeState(data, { basePath }) { const portablePath = npath.toPortablePath(basePath); const absolutePortablePath = ppath.resolve(portablePath); - const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null; + const ignorePattern = + data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null; const packageLocatorsByLocations = /* @__PURE__ */ new Map(); - const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => { - return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => { - if (packageName === null !== (packageReference === null)) - throw new Error(`Assertion failed: The name and reference should be null, or neither should`); - const discardFromLookup = packageInformationData.discardFromLookup ?? false; - const packageLocator = { name: packageName, reference: packageReference }; - const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation); - if (!entry) { - packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup }); - } else { - entry.discardFromLookup = entry.discardFromLookup && discardFromLookup; - if (!discardFromLookup) { - entry.locator = packageLocator; - } - } - let resolvedPackageLocation = null; - return [packageReference, { - packageDependencies: new Map(packageInformationData.packageDependencies), - packagePeers: new Set(packageInformationData.packagePeers), - linkType: packageInformationData.linkType, - discardFromLookup, - // we only need this for packages that are used by the currently running script - // this is a lazy getter because `ppath.join` has some overhead - get packageLocation() { - return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation)); - } - }]; - }))]; - })); - const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => { - return [packageName, new Set(packageReferences)]; - })); + const packageRegistry = new Map( + data.packageRegistryData.map(([packageName, packageStoreData]) => { + return [ + packageName, + new Map( + packageStoreData.map(([packageReference, packageInformationData]) => { + if ((packageName === null) !== (packageReference === null)) + throw new Error( + `Assertion failed: The name and reference should be null, or neither should`, + ); + const discardFromLookup = + packageInformationData.discardFromLookup ?? false; + const packageLocator = { + name: packageName, + reference: packageReference, + }; + const entry = packageLocatorsByLocations.get( + packageInformationData.packageLocation, + ); + if (!entry) { + packageLocatorsByLocations.set( + packageInformationData.packageLocation, + { locator: packageLocator, discardFromLookup }, + ); + } else { + entry.discardFromLookup = + entry.discardFromLookup && discardFromLookup; + if (!discardFromLookup) { + entry.locator = packageLocator; + } + } + let resolvedPackageLocation = null; + return [ + packageReference, + { + packageDependencies: new Map( + packageInformationData.packageDependencies, + ), + packagePeers: new Set(packageInformationData.packagePeers), + linkType: packageInformationData.linkType, + discardFromLookup, + // we only need this for packages that are used by the currently running script + // this is a lazy getter because `ppath.join` has some overhead + get packageLocation() { + return ( + resolvedPackageLocation || + (resolvedPackageLocation = ppath.join( + absolutePortablePath, + packageInformationData.packageLocation, + )) + ); + }, + }, + ]; + }), + ), + ]; + }), + ); + const fallbackExclusionList = new Map( + data.fallbackExclusionList.map(([packageName, packageReferences]) => { + return [packageName, new Set(packageReferences)]; + }), + ); const fallbackPool = new Map(data.fallbackPool); const dependencyTreeRoots = data.dependencyTreeRoots; const enableTopLevelFallback = data.enableTopLevelFallback; @@ -9895,23 +11025,33 @@ function hydrateRuntimeState(data, { basePath }) { fallbackPool, ignorePattern, packageLocatorsByLocations, - packageRegistry + packageRegistry, }; } const ArrayIsArray = Array.isArray; const JSONStringify = JSON.stringify; const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; -const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); -const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); -const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); -const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); -const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); -const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); -const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); -const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); -const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); -const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const ObjectPrototypeHasOwnProperty = (obj, prop) => + Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => + RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => + RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => + String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => + String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => + String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => + String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => + String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => + String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => + String.prototype.startsWith.apply(str, rest); const SafeMap = Map; const JSONParse = JSON.parse; @@ -9929,35 +11069,39 @@ const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( (specifier, packagePath, base) => { return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; }, - TypeError + TypeError, ); const ERR_INVALID_MODULE_SPECIFIER = createErrorType( `ERR_INVALID_MODULE_SPECIFIER`, (request, reason, base = void 0) => { return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; }, - TypeError + TypeError, ); const ERR_INVALID_PACKAGE_TARGET = createErrorType( `ERR_INVALID_PACKAGE_TARGET`, (pkgPath, key, target, isImport = false, base = void 0) => { - const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + const relError = + typeof target === `string` && + !isImport && + target.length && + !StringPrototypeStartsWith(target, `./`); if (key === `.`) { assert__default.default(isImport === false); return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; } return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( - target + target, )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; }, - Error + Error, ); const ERR_INVALID_PACKAGE_CONFIG = createErrorType( `ERR_INVALID_PACKAGE_CONFIG`, (path, base, message) => { return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; }, - Error + Error, ); const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType( "ERR_PACKAGE_PATH_NOT_EXPORTED", @@ -9966,7 +11110,7 @@ const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType( return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; }, - Error + Error, ); function filterOwnProperties(source, keys) { @@ -9995,7 +11139,7 @@ function getPackageConfig(path, specifier, base, readFileSyncFn) { name: void 0, type: "none", exports: void 0, - imports: void 0 + imports: void 0, }; packageJSONCache.set(path, packageConfig2); return packageConfig2; @@ -10006,17 +11150,20 @@ function getPackageConfig(path, specifier, base, readFileSyncFn) { } catch (error) { throw new ERR_INVALID_PACKAGE_CONFIG( path, - (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier), - error.message + (base ? `"${specifier}" from ` : "") + + url.fileURLToPath(base || specifier), + error.message, ); } let { imports, main, name, type } = filterOwnProperties(packageJSON, [ "imports", "main", "name", - "type" + "type", ]); - const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") + ? packageJSON.exports + : void 0; if (typeof imports !== "object" || imports === null) { imports = void 0; } @@ -10036,7 +11183,7 @@ function getPackageConfig(path, specifier, base, readFileSyncFn) { name, type, exports, - imports + imports, }; packageJSONCache.set(path, packageConfig); return packageConfig; @@ -10045,14 +11192,16 @@ function getPackageScopeConfig(resolved, readFileSyncFn) { let packageJSONUrl = new URL("./package.json", resolved); while (true) { const packageJSONPath2 = packageJSONUrl.pathname; - if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + if ( + StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json") + ) { break; } const packageConfig2 = getPackageConfig( url.fileURLToPath(packageJSONUrl), resolved, void 0, - readFileSyncFn + readFileSyncFn, ); if (packageConfig2.exists) { return packageConfig2; @@ -10071,7 +11220,7 @@ function getPackageScopeConfig(resolved, readFileSyncFn) { name: void 0, type: "none", exports: void 0, - imports: void 0 + imports: void 0, }; packageJSONCache.set(packageJSONPath, packageConfig); return packageConfig; @@ -10081,7 +11230,7 @@ function throwImportNotDefined(specifier, packageJSONUrl, base) { throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( specifier, packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)), - url.fileURLToPath(base) + url.fileURLToPath(base), ); } function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { @@ -10089,10 +11238,16 @@ function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { throw new ERR_INVALID_MODULE_SPECIFIER( subpath, reason, - base && url.fileURLToPath(base) + base && url.fileURLToPath(base), ); } -function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { +function throwInvalidPackageTarget( + subpath, + target, + packageJSONUrl, + internal, + base, +) { if (typeof target === "object" && target !== null) { target = JSONStringify(target, null, ""); } else { @@ -10103,33 +11258,50 @@ function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, ba subpath, target, internal, - base && url.fileURLToPath(base) + base && url.fileURLToPath(base), ); } -const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const invalidSegmentRegEx = + /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; const patternRegEx = /\*/g; -function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { +function resolvePackageTargetString( + target, + subpath, + match, + packageJSONUrl, + base, + pattern, + internal, + conditions, +) { if (subpath !== "" && !pattern && target[target.length - 1] !== "/") throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); if (!StringPrototypeStartsWith(target, "./")) { - if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + if ( + internal && + !StringPrototypeStartsWith(target, "../") && + !StringPrototypeStartsWith(target, "/") + ) { let isURL = false; try { new URL(target); isURL = true; - } catch { - } + } catch {} if (!isURL) { - const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + const exportTarget = pattern + ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) + : target + subpath; return exportTarget; } } throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); } - if (RegExpPrototypeExec( - invalidSegmentRegEx, - StringPrototypeSlice(target, 2) - ) !== null) + if ( + RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2), + ) !== null + ) throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); const resolved = new URL(target, packageJSONUrl); const resolvedPath = resolved.pathname; @@ -10138,12 +11310,14 @@ function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); if (subpath === "") return resolved; if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { - const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + const request = pattern + ? StringPrototypeReplace(match, "*", () => subpath) + : match + subpath; throwInvalidSubpath(request, packageJSONUrl, internal, base); } if (pattern) { return new URL( - RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath), ); } return new URL(subpath, resolved); @@ -10153,7 +11327,16 @@ function isArrayIndex(key) { if (`${keyNum}` !== key) return false; return keyNum >= 0 && keyNum < 4294967295; } -function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { +function resolvePackageTarget( + packageJSONUrl, + target, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions, +) { if (typeof target === "string") { return resolvePackageTargetString( target, @@ -10162,7 +11345,8 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b packageJSONUrl, base, pattern, - internal); + internal, + ); } else if (ArrayIsArray(target)) { if (target.length === 0) { return null; @@ -10180,7 +11364,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b base, pattern, internal, - conditions + conditions, ); } catch (e) { lastException = e; @@ -10209,7 +11393,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b throw new ERR_INVALID_PACKAGE_CONFIG( url.fileURLToPath(packageJSONUrl), base, - '"exports" cannot contain numeric property keys.' + '"exports" cannot contain numeric property keys.', ); } } @@ -10225,7 +11409,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b base, pattern, internal, - conditions + conditions, ); if (resolveResult === void 0) continue; return resolveResult; @@ -10240,7 +11424,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b target, packageJSONUrl, internal, - base + base, ); } function patternKeyCompare(a, b) { @@ -10271,7 +11455,7 @@ function isConditionalExportsMainSugar(exports, packageJSONUrl, base) { throw new ERR_INVALID_PACKAGE_CONFIG( url.fileURLToPath(packageJSONUrl), base, - `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.` + `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`, ); } } @@ -10281,7 +11465,7 @@ function throwExportsNotFound(subpath, packageJSONUrl, base) { throw new ERR_PACKAGE_PATH_NOT_EXPORTED( url.fileURLToPath(new URL(".", packageJSONUrl)), subpath, - base && url.fileURLToPath(base) + base && url.fileURLToPath(base), ); } const emittedPackageWarnings = /* @__PURE__ */ new Set(); @@ -10292,7 +11476,7 @@ function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) { process.emitWarning( `Use of deprecated trailing slash pattern mapping "${match}" in the "exports" field module resolution of the package at ${pjsonPath}${base ? ` imported from ${url.fileURLToPath(base)}` : ""}. Mapping specifiers ending in "/" is no longer supported.`, "DeprecationWarning", - "DEP0155" + "DEP0155", ); } function packageExportsResolve({ @@ -10300,11 +11484,15 @@ function packageExportsResolve({ packageSubpath, exports, base, - conditions + conditions, }) { if (isConditionalExportsMainSugar(exports, packageJSONUrl, base)) exports = { ".": exports }; - if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && !StringPrototypeIncludes(packageSubpath, "*") && !StringPrototypeEndsWith(packageSubpath, "/")) { + if ( + ObjectPrototypeHasOwnProperty(exports, packageSubpath) && + !StringPrototypeIncludes(packageSubpath, "*") && + !StringPrototypeEndsWith(packageSubpath, "/") + ) { const target = exports[packageSubpath]; const resolveResult = resolvePackageTarget( packageJSONUrl, @@ -10314,7 +11502,7 @@ function packageExportsResolve({ base, false, false, - conditions + conditions, ); if (resolveResult == null) { throwExportsNotFound(packageSubpath, packageJSONUrl, base); @@ -10327,23 +11515,31 @@ function packageExportsResolve({ for (let i = 0; i < keys.length; i++) { const key = keys[i]; const patternIndex = StringPrototypeIndexOf(key, "*"); - if (patternIndex !== -1 && StringPrototypeStartsWith( - packageSubpath, - StringPrototypeSlice(key, 0, patternIndex) - )) { + if ( + patternIndex !== -1 && + StringPrototypeStartsWith( + packageSubpath, + StringPrototypeSlice(key, 0, patternIndex), + ) + ) { if (StringPrototypeEndsWith(packageSubpath, "/")) emitTrailingSlashPatternDeprecation( packageSubpath, packageJSONUrl, - base + base, ); const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); - if (packageSubpath.length >= key.length && StringPrototypeEndsWith(packageSubpath, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + if ( + packageSubpath.length >= key.length && + StringPrototypeEndsWith(packageSubpath, patternTrailer) && + patternKeyCompare(bestMatch, key) === 1 && + StringPrototypeLastIndexOf(key, "*") === patternIndex + ) { bestMatch = key; bestMatchSubpath = StringPrototypeSlice( packageSubpath, patternIndex, - packageSubpath.length - patternTrailer.length + packageSubpath.length - patternTrailer.length, ); } } @@ -10358,7 +11554,7 @@ function packageExportsResolve({ base, true, false, - conditions + conditions, ); if (resolveResult == null) { throwExportsNotFound(packageSubpath, packageJSONUrl, base); @@ -10368,9 +11564,17 @@ function packageExportsResolve({ throwExportsNotFound(packageSubpath, packageJSONUrl, base); } function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { - if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + if ( + name === "#" || + StringPrototypeStartsWith(name, "#/") || + StringPrototypeEndsWith(name, "/") + ) { const reason = "is not a valid internal imports specifier name"; - throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base)); + throw new ERR_INVALID_MODULE_SPECIFIER( + name, + reason, + url.fileURLToPath(base), + ); } let packageJSONUrl; const packageConfig = getPackageScopeConfig(base, readFileSyncFn); @@ -10378,7 +11582,10 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath); const imports = packageConfig.imports; if (imports) { - if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + if ( + ObjectPrototypeHasOwnProperty(imports, name) && + !StringPrototypeIncludes(name, "*") + ) { const resolveResult = resolvePackageTarget( packageJSONUrl, imports[name], @@ -10387,7 +11594,7 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { base, false, true, - conditions + conditions, ); if (resolveResult != null) { return resolveResult; @@ -10399,17 +11606,25 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { for (let i = 0; i < keys.length; i++) { const key = keys[i]; const patternIndex = StringPrototypeIndexOf(key, "*"); - if (patternIndex !== -1 && StringPrototypeStartsWith( - name, - StringPrototypeSlice(key, 0, patternIndex) - )) { + if ( + patternIndex !== -1 && + StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex), + ) + ) { const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); - if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + if ( + name.length >= key.length && + StringPrototypeEndsWith(name, patternTrailer) && + patternKeyCompare(bestMatch, key) === 1 && + StringPrototypeLastIndexOf(key, "*") === patternIndex + ) { bestMatch = key; bestMatchSubpath = StringPrototypeSlice( name, patternIndex, - name.length - patternTrailer.length + name.length - patternTrailer.length, ); } } @@ -10424,7 +11639,7 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { base, true, true, - conditions + conditions, ); if (resolveResult != null) { return resolveResult; @@ -10436,192 +11651,192 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { throwImportNotDefined(name, packageJSONUrl, base); } -const flagSymbol = Symbol('arg flag'); +const flagSymbol = Symbol("arg flag"); class ArgError extends Error { - constructor(msg, code) { - super(msg); - this.name = 'ArgError'; - this.code = code; + constructor(msg, code) { + super(msg); + this.name = "ArgError"; + this.code = code; - Object.setPrototypeOf(this, ArgError.prototype); - } + Object.setPrototypeOf(this, ArgError.prototype); + } } function arg( - opts, - { - argv = process.argv.slice(2), - permissive = false, - stopAtPositional = false - } = {} + opts, + { + argv = process.argv.slice(2), + permissive = false, + stopAtPositional = false, + } = {}, ) { - if (!opts) { - throw new ArgError( - 'argument specification object is required', - 'ARG_CONFIG_NO_SPEC' - ); - } + if (!opts) { + throw new ArgError( + "argument specification object is required", + "ARG_CONFIG_NO_SPEC", + ); + } - const result = { _: [] }; + const result = { _: [] }; - const aliases = {}; - const handlers = {}; + const aliases = {}; + const handlers = {}; - for (const key of Object.keys(opts)) { - if (!key) { - throw new ArgError( - 'argument key cannot be an empty string', - 'ARG_CONFIG_EMPTY_KEY' - ); - } + for (const key of Object.keys(opts)) { + if (!key) { + throw new ArgError( + "argument key cannot be an empty string", + "ARG_CONFIG_EMPTY_KEY", + ); + } - if (key[0] !== '-') { - throw new ArgError( - `argument key must start with '-' but found: '${key}'`, - 'ARG_CONFIG_NONOPT_KEY' - ); - } + if (key[0] !== "-") { + throw new ArgError( + `argument key must start with '-' but found: '${key}'`, + "ARG_CONFIG_NONOPT_KEY", + ); + } - if (key.length === 1) { - throw new ArgError( - `argument key must have a name; singular '-' keys are not allowed: ${key}`, - 'ARG_CONFIG_NONAME_KEY' - ); - } + if (key.length === 1) { + throw new ArgError( + `argument key must have a name; singular '-' keys are not allowed: ${key}`, + "ARG_CONFIG_NONAME_KEY", + ); + } - if (typeof opts[key] === 'string') { - aliases[key] = opts[key]; - continue; - } + if (typeof opts[key] === "string") { + aliases[key] = opts[key]; + continue; + } - let type = opts[key]; - let isFlag = false; + let type = opts[key]; + let isFlag = false; - if ( - Array.isArray(type) && - type.length === 1 && - typeof type[0] === 'function' - ) { - const [fn] = type; - type = (value, name, prev = []) => { - prev.push(fn(value, name, prev[prev.length - 1])); - return prev; - }; - isFlag = fn === Boolean || fn[flagSymbol] === true; - } else if (typeof type === 'function') { - isFlag = type === Boolean || type[flagSymbol] === true; - } else { - throw new ArgError( - `type missing or not a function or valid array type: ${key}`, - 'ARG_CONFIG_VAD_TYPE' - ); - } + if ( + Array.isArray(type) && + type.length === 1 && + typeof type[0] === "function" + ) { + const [fn] = type; + type = (value, name, prev = []) => { + prev.push(fn(value, name, prev[prev.length - 1])); + return prev; + }; + isFlag = fn === Boolean || fn[flagSymbol] === true; + } else if (typeof type === "function") { + isFlag = type === Boolean || type[flagSymbol] === true; + } else { + throw new ArgError( + `type missing or not a function or valid array type: ${key}`, + "ARG_CONFIG_VAD_TYPE", + ); + } - if (key[1] !== '-' && key.length > 2) { - throw new ArgError( - `short argument keys (with a single hyphen) must have only one character: ${key}`, - 'ARG_CONFIG_SHORTOPT_TOOLONG' - ); - } + if (key[1] !== "-" && key.length > 2) { + throw new ArgError( + `short argument keys (with a single hyphen) must have only one character: ${key}`, + "ARG_CONFIG_SHORTOPT_TOOLONG", + ); + } - handlers[key] = [type, isFlag]; - } + handlers[key] = [type, isFlag]; + } - for (let i = 0, len = argv.length; i < len; i++) { - const wholeArg = argv[i]; + for (let i = 0, len = argv.length; i < len; i++) { + const wholeArg = argv[i]; - if (stopAtPositional && result._.length > 0) { - result._ = result._.concat(argv.slice(i)); - break; - } + if (stopAtPositional && result._.length > 0) { + result._ = result._.concat(argv.slice(i)); + break; + } - if (wholeArg === '--') { - result._ = result._.concat(argv.slice(i + 1)); - break; - } + if (wholeArg === "--") { + result._ = result._.concat(argv.slice(i + 1)); + break; + } - if (wholeArg.length > 1 && wholeArg[0] === '-') { - /* eslint-disable operator-linebreak */ - const separatedArguments = - wholeArg[1] === '-' || wholeArg.length === 2 - ? [wholeArg] - : wholeArg - .slice(1) - .split('') - .map((a) => `-${a}`); - /* eslint-enable operator-linebreak */ + if (wholeArg.length > 1 && wholeArg[0] === "-") { + /* eslint-disable operator-linebreak */ + const separatedArguments = + wholeArg[1] === "-" || wholeArg.length === 2 + ? [wholeArg] + : wholeArg + .slice(1) + .split("") + .map((a) => `-${a}`); + /* eslint-enable operator-linebreak */ - for (let j = 0; j < separatedArguments.length; j++) { - const arg = separatedArguments[j]; - const [originalArgName, argStr] = - arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined]; + for (let j = 0; j < separatedArguments.length; j++) { + const arg = separatedArguments[j]; + const [originalArgName, argStr] = + arg[1] === "-" ? arg.split(/=(.*)/, 2) : [arg, undefined]; - let argName = originalArgName; - while (argName in aliases) { - argName = aliases[argName]; - } + let argName = originalArgName; + while (argName in aliases) { + argName = aliases[argName]; + } - if (!(argName in handlers)) { - if (permissive) { - result._.push(arg); - continue; - } else { - throw new ArgError( - `unknown or unexpected option: ${originalArgName}`, - 'ARG_UNKNOWN_OPTION' - ); - } - } + if (!(argName in handlers)) { + if (permissive) { + result._.push(arg); + continue; + } else { + throw new ArgError( + `unknown or unexpected option: ${originalArgName}`, + "ARG_UNKNOWN_OPTION", + ); + } + } - const [type, isFlag] = handlers[argName]; + const [type, isFlag] = handlers[argName]; - if (!isFlag && j + 1 < separatedArguments.length) { - throw new ArgError( - `option requires argument (but was followed by another short argument): ${originalArgName}`, - 'ARG_MISSING_REQUIRED_SHORTARG' - ); - } + if (!isFlag && j + 1 < separatedArguments.length) { + throw new ArgError( + `option requires argument (but was followed by another short argument): ${originalArgName}`, + "ARG_MISSING_REQUIRED_SHORTARG", + ); + } - if (isFlag) { - result[argName] = type(true, argName, result[argName]); - } else if (argStr === undefined) { - if ( - argv.length < i + 2 || - (argv[i + 1].length > 1 && - argv[i + 1][0] === '-' && - !( - argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && - (type === Number || - // eslint-disable-next-line no-undef - (typeof BigInt !== 'undefined' && type === BigInt)) - )) - ) { - const extended = - originalArgName === argName ? '' : ` (alias for ${argName})`; - throw new ArgError( - `option requires argument: ${originalArgName}${extended}`, - 'ARG_MISSING_REQUIRED_LONGARG' - ); - } + if (isFlag) { + result[argName] = type(true, argName, result[argName]); + } else if (argStr === undefined) { + if ( + argv.length < i + 2 || + (argv[i + 1].length > 1 && + argv[i + 1][0] === "-" && + !( + argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && + (type === Number || + // eslint-disable-next-line no-undef + (typeof BigInt !== "undefined" && type === BigInt)) + )) + ) { + const extended = + originalArgName === argName ? "" : ` (alias for ${argName})`; + throw new ArgError( + `option requires argument: ${originalArgName}${extended}`, + "ARG_MISSING_REQUIRED_LONGARG", + ); + } - result[argName] = type(argv[i + 1], argName, result[argName]); - ++i; - } else { - result[argName] = type(argStr, argName, result[argName]); - } - } - } else { - result._.push(wholeArg); - } - } + result[argName] = type(argv[i + 1], argName, result[argName]); + ++i; + } else { + result[argName] = type(argStr, argName, result[argName]); + } + } + } else { + result._.push(wholeArg); + } + } - return result; + return result; } arg.flag = (fn) => { - fn[flagSymbol] = true; - return fn; + fn[flagSymbol] = true; + return fn; }; // Utility types @@ -10666,7 +11881,7 @@ function parseOptions() { options = { "--conditions": [], ...parseArgv(getNodeOptionsEnvArgv()), - ...parseArgv(process.execArgv) + ...parseArgv(process.execArgv), }; } } @@ -10674,18 +11889,21 @@ function parseArgv(argv) { return arg_1( { "--conditions": [String], - "-C": "--conditions" + "-C": "--conditions", }, { argv, - permissive: true - } + permissive: true, + }, ); } function getNodeOptionsEnvArgv() { const errors = []; - const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors); - if (errors.length !== 0) ; + const envArgv = ParseNodeOptionsEnvVar( + process.env.NODE_OPTIONS || "", + errors, + ); + if (errors.length !== 0); return envArgv; } function ParseNodeOptionsEnvVar(node_options, errors) { @@ -10722,9 +11940,11 @@ function ParseNodeOptionsEnvVar(node_options, errors) { } function makeApi(runtimeState, opts) { - const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0; + const alwaysWarnOnFallback = + Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0; const debugLevel = Number(process.env.PNP_DEBUG_LEVEL); - const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const pathRegExp = + /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/; const isDirRegExp = /\/$/; const isRelativeRegexp = /^\.{0,2}\//; @@ -10739,7 +11959,9 @@ function makeApi(runtimeState, opts) { if (packageStore) { for (const reference of packageStore.keys()) { if (reference === null) { - throw new Error(`Assertion failed: This reference shouldn't be null`); + throw new Error( + `Assertion failed: This reference shouldn't be null`, + ); } else { fallbackLocators.push({ name, reference }); } @@ -10747,17 +11969,14 @@ function makeApi(runtimeState, opts) { } } } - const { - ignorePattern, - packageRegistry, - packageLocatorsByLocations - } = runtimeState; + const { ignorePattern, packageRegistry, packageLocatorsByLocations } = + runtimeState; function makeLogEntry(name, args) { return { fn: name, args, error: null, - result: null + result: null, }; } function trace(entry) { @@ -10765,16 +11984,20 @@ function makeApi(runtimeState, opts) { const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`; const error = entry.error; if (error) - console.error(c(`31;1`, `\u2716 ${entry.error?.message.replace(/\n.*/s, ``)}`)); - else - console.error(c(`33;1`, `\u203C Resolution`)); - if (entry.args.length > 0) - console.error(); + console.error( + c(`31;1`, `\u2716 ${entry.error?.message.replace(/\n.*/s, ``)}`), + ); + else console.error(c(`33;1`, `\u203C Resolution`)); + if (entry.args.length > 0) console.error(); for (const arg of entry.args) - console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`); + console.error( + ` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`, + ); if (entry.result) { console.error(); - console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`); + console.error( + ` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`, + ); } const stack = new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2) ?? []; if (stack.length > 0) { @@ -10786,16 +12009,15 @@ function makeApi(runtimeState, opts) { console.error(); } function maybeLog(name, fn) { - if (opts.allowDebug === false) - return fn; + if (opts.allowDebug === false) return fn; if (Number.isFinite(debugLevel)) { if (debugLevel >= 2) { return (...args) => { const logEntry = makeLogEntry(name, args); try { - return logEntry.result = fn(...args); + return (logEntry.result = fn(...args)); } catch (error) { - throw logEntry.error = error; + throw (logEntry.error = error); } finally { trace(logEntry); } @@ -10820,47 +12042,54 @@ function makeApi(runtimeState, opts) { if (!packageInformation) { throw makeError( ErrorCode.INTERNAL, - `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)` + `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)`, ); } return packageInformation; } function isDependencyTreeRoot(packageLocator) { - if (packageLocator.name === null) - return true; + if (packageLocator.name === null) return true; for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots) - if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference) + if ( + dependencyTreeRoot.name === packageLocator.name && + dependencyTreeRoot.reference === packageLocator.reference + ) return true; return false; } const defaultExportsConditions = /* @__PURE__ */ new Set([ `node`, `require`, - ...getOptionValue(`--conditions`) + ...getOptionValue(`--conditions`), ]); - function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions, issuer) { - const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), { - resolveIgnored: true, - includeDiscardFromLookup: true - }); + function applyNodeExportsResolution( + unqualifiedPath, + conditions = defaultExportsConditions, + issuer, + ) { + const locator = findPackageLocator( + ppath.join(unqualifiedPath, `internal.js`), + { + resolveIgnored: true, + includeDiscardFromLookup: true, + }, + ); if (locator === null) { throw makeError( ErrorCode.INTERNAL, - `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)` + `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)`, ); } const { packageLocation } = getPackageInformationSafe(locator); const manifestPath = ppath.join(packageLocation, Filename.manifest); - if (!opts.fakeFs.existsSync(manifestPath)) - return null; + if (!opts.fakeFs.existsSync(manifestPath)) return null; const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`)); - if (pkgJson.exports == null) - return null; + if (pkgJson.exports == null) return null; let subpath = ppath.contains(packageLocation, unqualifiedPath); if (subpath === null) { throw makeError( ErrorCode.INTERNAL, - `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)` + `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)`, ); } if (subpath !== `.` && !isRelativeRegexp.test(subpath)) @@ -10871,38 +12100,55 @@ function makeApi(runtimeState, opts) { packageSubpath: subpath, exports: pkgJson.exports, base: issuer ? url.pathToFileURL(npath.fromPortablePath(issuer)) : null, - conditions + conditions, }); return npath.toPortablePath(url.fileURLToPath(resolvedExport)); } catch (error) { throw makeError( ErrorCode.EXPORTS_RESOLUTION_FAILED, error.message, - { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions }, - error.code + { + unqualifiedPath: getPathForDisplay(unqualifiedPath), + locator, + pkgJson, + subpath: getPathForDisplay(subpath), + conditions, + }, + error.code, ); } } - function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) { + function applyNodeExtensionResolution( + unqualifiedPath, + candidates, + { extensions }, + ) { let stat; try { candidates.push(unqualifiedPath); stat = opts.fakeFs.statSync(unqualifiedPath); - } catch { - } + } catch {} if (stat && !stat.isDirectory()) return opts.fakeFs.realpathSync(unqualifiedPath); if (stat && stat.isDirectory()) { let pkgJson; try { - pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`)); - } catch { - } + pkgJson = JSON.parse( + opts.fakeFs.readFileSync( + ppath.join(unqualifiedPath, Filename.manifest), + `utf8`, + ), + ); + } catch {} let nextUnqualifiedPath; if (pkgJson && pkgJson.main) nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main); if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) { - const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions }); + const resolution = applyNodeExtensionResolution( + nextUnqualifiedPath, + candidates, + { extensions }, + ); if (resolution !== null) { return resolution; } @@ -10917,7 +12163,11 @@ function makeApi(runtimeState, opts) { } if (stat && stat.isDirectory()) { for (let i = 0, length = extensions.length; i < length; i++) { - const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] }); + const candidateFile = ppath.format({ + dir: unqualifiedPath, + name: `index`, + ext: extensions[i], + }); candidates.push(candidateFile); if (opts.fakeFs.existsSync(candidateFile)) { return candidateFile; @@ -10933,16 +12183,18 @@ function makeApi(runtimeState, opts) { return fakeModule; } function callNativeResolution(request, issuer) { - if (issuer.endsWith(`/`)) - issuer = ppath.join(issuer, `internal.js`); - return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false }); + if (issuer.endsWith(`/`)) issuer = ppath.join(issuer, `internal.js`); + return require$$0.Module._resolveFilename( + npath.fromPortablePath(request), + makeFakeModule(npath.fromPortablePath(issuer)), + false, + { plugnplay: false }, + ); } function isPathIgnored(path) { - if (ignorePattern === null) - return false; + if (ignorePattern === null) return false; const subPath = ppath.contains(runtimeState.basePath, path); - if (subPath === null) - return false; + if (subPath === null) return false; if (ignorePattern.test(subPath.replace(/\/$/, ``))) { return true; } else { @@ -10953,29 +12205,28 @@ function makeApi(runtimeState, opts) { const topLevel = topLevelLocator; function getPackageInformation({ name, reference }) { const packageInformationStore = packageRegistry.get(name); - if (!packageInformationStore) - return null; + if (!packageInformationStore) return null; const packageInformation = packageInformationStore.get(reference); - if (!packageInformation) - return null; + if (!packageInformation) return null; return packageInformation; } function findPackageDependents({ name, reference }) { const dependents = []; for (const [dependentName, packageInformationStore] of packageRegistry) { - if (dependentName === null) - continue; - for (const [dependentReference, packageInformation] of packageInformationStore) { - if (dependentReference === null) - continue; - const dependencyReference = packageInformation.packageDependencies.get(name); - if (dependencyReference !== reference) - continue; + if (dependentName === null) continue; + for (const [ + dependentReference, + packageInformation, + ] of packageInformationStore) { + if (dependentReference === null) continue; + const dependencyReference = + packageInformation.packageDependencies.get(name); + if (dependencyReference !== reference) continue; if (dependentName === name && dependentReference === reference) continue; dependents.push({ name: dependentName, - reference: dependentReference + reference: dependentReference, }); } } @@ -10986,8 +12237,7 @@ function makeApi(runtimeState, opts) { const alreadyVisited = /* @__PURE__ */ new Set(); const traversal = (currentPackage) => { const identifier = JSON.stringify(currentPackage.name); - if (alreadyVisited.has(identifier)) - return; + if (alreadyVisited.has(identifier)) return; alreadyVisited.add(identifier); const dependents = findPackageDependents(currentPackage); for (const dependent of dependents) { @@ -10997,7 +12247,10 @@ function makeApi(runtimeState, opts) { } else { let brokenSet = brokenPackages.get(dependent.name); if (typeof brokenSet === `undefined`) - brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set()); + brokenPackages.set( + dependent.name, + (brokenSet = /* @__PURE__ */ new Set()), + ); brokenSet.add(dependent.reference); } } @@ -11009,9 +12262,11 @@ function makeApi(runtimeState, opts) { brokenList.push({ name, reference }); return brokenList; } - function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) { - if (isPathIgnored(location) && !resolveIgnored) - return null; + function findPackageLocator( + location, + { resolveIgnored = false, includeDiscardFromLookup = false } = {}, + ) { + if (isPathIgnored(location) && !resolveIgnored) return null; let relativeLocation = ppath.relative(runtimeState.basePath, location); if (!relativeLocation.match(isStrictRegExp)) relativeLocation = `./${relativeLocation}`; @@ -11019,8 +12274,14 @@ function makeApi(runtimeState, opts) { relativeLocation = `${relativeLocation}/`; do { const entry = packageLocatorsByLocations.get(relativeLocation); - if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) { - relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1); + if ( + typeof entry === `undefined` || + (entry.discardFromLookup && !includeDiscardFromLookup) + ) { + relativeLocation = relativeLocation.substring( + 0, + relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1, + ); continue; } return entry.locator; @@ -11031,18 +12292,22 @@ function makeApi(runtimeState, opts) { try { return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`); } catch (err) { - if (err.code === `ENOENT`) - return void 0; + if (err.code === `ENOENT`) return void 0; throw err; } } - function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) { + function resolveToUnqualified( + request, + issuer, + { considerBuiltins = true } = {}, + ) { if (request.startsWith(`#`)) - throw new Error(`resolveToUnqualified can not handle private import mappings`); + throw new Error( + `resolveToUnqualified can not handle private import mappings`, + ); if (request === `pnpapi`) return npath.toPortablePath(opts.pnpapiResolution); - if (considerBuiltins && require$$0.isBuiltin(request)) - return null; + if (considerBuiltins && require$$0.isBuiltin(request)) return null; const requestForDisplay = getPathForDisplay(request); const issuerForDisplay = issuer && getPathForDisplay(issuer); if (issuer && isPathIgnored(issuer)) { @@ -11056,7 +12321,7 @@ function makeApi(runtimeState, opts) { Require request: "${requestForDisplay}" Required by: ${issuerForDisplay} `, - { request: requestForDisplay, issuer: issuerForDisplay } + { request: requestForDisplay, issuer: issuerForDisplay }, ); } return npath.toPortablePath(result); @@ -11072,14 +12337,18 @@ Required by: ${issuerForDisplay} throw makeError( ErrorCode.API_ERROR, `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, - { request: requestForDisplay, issuer: issuerForDisplay } + { request: requestForDisplay, issuer: issuerForDisplay }, ); } const absoluteIssuer = ppath.resolve(issuer); if (issuer.match(isDirRegExp)) { - unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request)); + unqualifiedPath = ppath.normalize( + ppath.join(absoluteIssuer, request), + ); } else { - unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request)); + unqualifiedPath = ppath.normalize( + ppath.join(ppath.dirname(absoluteIssuer), request), + ); } } } else { @@ -11087,7 +12356,7 @@ Required by: ${issuerForDisplay} throw makeError( ErrorCode.API_ERROR, `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, - { request: requestForDisplay, issuer: issuerForDisplay } + { request: requestForDisplay, issuer: issuerForDisplay }, ); } const [, dependencyName, subPath] = dependencyNameMatch; @@ -11102,28 +12371,32 @@ Required by: ${issuerForDisplay} Require path: "${requestForDisplay}" Required by: ${issuerForDisplay} `, - { request: requestForDisplay, issuer: issuerForDisplay } + { request: requestForDisplay, issuer: issuerForDisplay }, ); } return npath.toPortablePath(result); } const issuerInformation = getPackageInformationSafe(issuerLocator); - let dependencyReference = issuerInformation.packageDependencies.get(dependencyName); + let dependencyReference = + issuerInformation.packageDependencies.get(dependencyName); let fallbackReference = null; if (dependencyReference == null) { if (issuerLocator.name !== null) { - const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name); - const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference); + const exclusionEntry = runtimeState.fallbackExclusionList.get( + issuerLocator.name, + ); + const canUseFallbacks = + !exclusionEntry || !exclusionEntry.has(issuerLocator.reference); if (canUseFallbacks) { for (let t = 0, T = fallbackLocators.length; t < T; ++t) { - const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]); - const reference = fallbackInformation.packageDependencies.get(dependencyName); - if (reference == null) - continue; - if (alwaysWarnOnFallback) - fallbackReference = reference; - else - dependencyReference = reference; + const fallbackInformation = getPackageInformationSafe( + fallbackLocators[t], + ); + const reference = + fallbackInformation.packageDependencies.get(dependencyName); + if (reference == null) continue; + if (alwaysWarnOnFallback) fallbackReference = reference; + else dependencyReference = reference; break; } if (runtimeState.enableTopLevelFallback) { @@ -11147,21 +12420,42 @@ Required by: ${issuerForDisplay} Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerForDisplay} `, - { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + { + request: requestForDisplay, + issuer: issuerForDisplay, + dependencyName, + }, ); } else { - const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator); - if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) { + const brokenAncestors = findBrokenPeerDependencies( + dependencyName, + issuerLocator, + ); + if ( + brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor)) + ) { error = makeError( ErrorCode.MISSING_PEER_DEPENDENCY, `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) -${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} -`).join(``)} +${brokenAncestors + .map( + ( + ancestorLocator, + ) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} `, - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ) + .join(``)} +`, + { + request: requestForDisplay, + issuer: issuerForDisplay, + issuerLocator: Object.assign({}, issuerLocator), + dependencyName, + brokenAncestors, + }, ); } else { error = makeError( @@ -11171,10 +12465,22 @@ ${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ances Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) -${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} -`).join(``)} +${brokenAncestors + .map( + ( + ancestorLocator, + ) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} `, - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ) + .join(``)} +`, + { + request: requestForDisplay, + issuer: issuerForDisplay, + issuerLocator: Object.assign({}, issuerLocator), + dependencyName, + brokenAncestors, + }, ); } } @@ -11188,7 +12494,11 @@ ${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ances Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerForDisplay} `, - { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + { + request: requestForDisplay, + issuer: issuerForDisplay, + dependencyName, + }, ); } else { error = makeError( @@ -11198,7 +12508,12 @@ Required by: ${issuerForDisplay} Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerForDisplay} `, - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + { + request: requestForDisplay, + issuer: issuerForDisplay, + issuerLocator: Object.assign({}, issuerLocator), + dependencyName, + }, ); } } else { @@ -11210,7 +12525,11 @@ Required by: ${issuerForDisplay} Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerForDisplay} `, - { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + { + request: requestForDisplay, + issuer: issuerForDisplay, + dependencyName, + }, ); } else { error = makeError( @@ -11220,14 +12539,22 @@ Required by: ${issuerForDisplay} Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) `, - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + { + request: requestForDisplay, + issuer: issuerForDisplay, + issuerLocator: Object.assign({}, issuerLocator), + dependencyName, + }, ); } } } if (dependencyReference == null) { if (fallbackReference === null || error === null) - throw error || new Error(`Assertion failed: Expected an error to have been set`); + throw ( + error || + new Error(`Assertion failed: Expected an error to have been set`) + ); dependencyReference = fallbackReference; const message = error.message.replace(/\n.*/g, ``); error.message = message; @@ -11236,8 +12563,11 @@ Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDi process.emitWarning(error); } } - const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference }; - const dependencyInformation = getPackageInformationSafe(dependencyLocator); + const dependencyLocator = Array.isArray(dependencyReference) + ? { name: dependencyReference[0], reference: dependencyReference[1] } + : { name: dependencyName, reference: dependencyReference }; + const dependencyInformation = + getPackageInformationSafe(dependencyLocator); if (!dependencyInformation.packageLocation) { throw makeError( ErrorCode.MISSING_DEPENDENCY, @@ -11246,7 +12576,11 @@ Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDi Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) `, - { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) } + { + request: requestForDisplay, + issuer: issuerForDisplay, + dependencyLocator: Object.assign({}, dependencyLocator), + }, ); } const dependencyLocation = dependencyInformation.packageLocation; @@ -11258,27 +12592,45 @@ Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDi } return ppath.normalize(unqualifiedPath); } - function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions, issuer) { - if (isStrictRegExp.test(request)) - return unqualifiedPath; - const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions, issuer); + function resolveUnqualifiedExport( + request, + unqualifiedPath, + conditions = defaultExportsConditions, + issuer, + ) { + if (isStrictRegExp.test(request)) return unqualifiedPath; + const unqualifiedExportPath = applyNodeExportsResolution( + unqualifiedPath, + conditions, + issuer, + ); if (unqualifiedExportPath) { return ppath.normalize(unqualifiedExportPath); } else { return unqualifiedPath; } } - function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) { + function resolveUnqualified( + unqualifiedPath, + { extensions = Object.keys(require$$0.Module._extensions) } = {}, + ) { const candidates = []; - const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }); + const qualifiedPath = applyNodeExtensionResolution( + unqualifiedPath, + candidates, + { extensions }, + ); if (qualifiedPath) { return ppath.normalize(qualifiedPath); } else { - reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate))); + reportRequiredFilesToWatchMode( + candidates.map((candidate) => npath.fromPortablePath(candidate)), + ); const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath); const containingPackage = findPackageLocator(unqualifiedPath); if (containingPackage) { - const { packageLocation } = getPackageInformationSafe(containingPackage); + const { packageLocation } = + getPackageInformationSafe(containingPackage); let exists = true; try { opts.fakeFs.accessSync(packageLocation); @@ -11286,16 +12638,26 @@ Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDi if (err?.code === `ENOENT`) { exists = false; } else { - const readableError = (err?.message ?? err ?? `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase()); - throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}). + const readableError = ( + err?.message ?? + err ?? + `empty exception thrown` + ).replace(/^[A-Z]/, ($0) => $0.toLowerCase()); + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `Required package exists but could not be accessed (${readableError}). Missing package: ${containingPackage.name}@${containingPackage.reference} Expected package location: ${getPathForDisplay(packageLocation)} -`, { unqualifiedPath: unqualifiedPathForDisplay, extensions }); +`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions }, + ); } } if (!exists) { - const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`; + const errorMessage = packageLocation.includes(`/unplugged/`) + ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` + : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`; throw makeError( ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `${errorMessage} @@ -11303,7 +12665,7 @@ Expected package location: ${getPathForDisplay(packageLocation)} Missing package: ${containingPackage.name}@${containingPackage.reference} Expected package location: ${getPathForDisplay(packageLocation)} `, - { unqualifiedPath: unqualifiedPathForDisplay, extensions } + { unqualifiedPath: unqualifiedPathForDisplay, extensions }, ); } } @@ -11312,26 +12674,37 @@ Expected package location: ${getPathForDisplay(packageLocation)} `Qualified path resolution failed: we looked for the following paths, but none could be accessed. Source path: ${unqualifiedPathForDisplay} -${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} -`).join(``)}`, - { unqualifiedPath: unqualifiedPathForDisplay, extensions } +${candidates + .map( + (candidate) => `Not found: ${getPathForDisplay(candidate)} +`, + ) + .join(``)}`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions }, ); } } function resolvePrivateRequest(request, issuer, opts2) { if (!issuer) - throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`); + throw new Error( + `Assertion failed: An issuer is required to resolve private import mappings`, + ); const resolved = packageImportsResolve({ name: request, base: url.pathToFileURL(npath.fromPortablePath(issuer)), conditions: opts2.conditions ?? defaultExportsConditions, - readFileSyncFn: tryReadFile + readFileSyncFn: tryReadFile, }); if (resolved instanceof URL) { - return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions }); + return resolveUnqualified( + npath.toPortablePath(url.fileURLToPath(resolved)), + { extensions: opts2.extensions }, + ); } else { if (resolved.startsWith(`#`)) - throw new Error(`Mapping from one private import to another isn't allowed`); + throw new Error( + `Mapping from one private import to another isn't allowed`, + ); return resolveRequest(resolved, issuer, opts2); } } @@ -11340,17 +12713,30 @@ ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} if (request.startsWith(`#`)) return resolvePrivateRequest(request, issuer, opts2); const { considerBuiltins, extensions, conditions } = opts2; - const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins }); - if (request === `pnpapi`) - return unqualifiedPath; - if (unqualifiedPath === null) - return null; - const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false; - const remappedPath = (!considerBuiltins || !require$$0.isBuiltin(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions, issuer) : unqualifiedPath; + const unqualifiedPath = resolveToUnqualified(request, issuer, { + considerBuiltins, + }); + if (request === `pnpapi`) return unqualifiedPath; + if (unqualifiedPath === null) return null; + const isIssuerIgnored = () => + issuer !== null ? isPathIgnored(issuer) : false; + const remappedPath = + (!considerBuiltins || !require$$0.isBuiltin(request)) && + !isIssuerIgnored() + ? resolveUnqualifiedExport( + request, + unqualifiedPath, + conditions, + issuer, + ) + : unqualifiedPath; return resolveUnqualified(remappedPath, { extensions }); } catch (error) { if (Object.hasOwn(error, `pnpCode`)) - Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) }); + Object.assign(error.data, { + request: getPathForDisplay(request), + issuer: issuer && getPathForDisplay(issuer), + }); throw error; } } @@ -11382,8 +12768,7 @@ ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} }, getPackageInformation: (locator) => { const info = getPackageInformation(locator); - if (info === null) - return null; + if (info === null) return null; const packageLocation = npath.fromPortablePath(info.packageLocation); const nativeInfo = { ...info, packageLocation }; return nativeInfo; @@ -11391,21 +12776,37 @@ ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} findPackageLocator: (path) => { return findPackageLocator(npath.toPortablePath(path)); }, - resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => { - const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; - const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2); - if (resolution === null) - return null; - return npath.fromPortablePath(resolution); - }), - resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => { - return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2)); - }), + resolveToUnqualified: maybeLog( + `resolveToUnqualified`, + (request, issuer, opts2) => { + const portableIssuer = + issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveToUnqualified( + npath.toPortablePath(request), + portableIssuer, + opts2, + ); + if (resolution === null) return null; + return npath.fromPortablePath(resolution); + }, + ), + resolveUnqualified: maybeLog( + `resolveUnqualified`, + (unqualifiedPath, opts2) => { + return npath.fromPortablePath( + resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2), + ); + }, + ), resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => { - const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; - const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2); - if (resolution === null) - return null; + const portableIssuer = + issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveRequest( + npath.toPortablePath(request), + portableIssuer, + opts2, + ); + if (resolution === null) return null; return npath.fromPortablePath(resolution); }), resolveVirtual: maybeLog(`resolveVirtual`, (path) => { @@ -11415,19 +12816,26 @@ ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} } else { return null; } - }) + }), }; } function makeManager(pnpapi, opts) { - const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null)); - const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath)); + const initialApiPath = npath.toPortablePath( + pnpapi.resolveToUnqualified(`pnpapi`, null), + ); + const initialApiStats = opts.fakeFs.statSync( + npath.toPortablePath(initialApiPath), + ); const apiMetadata = /* @__PURE__ */ new Map([ - [initialApiPath, { - instance: pnpapi, - stats: initialApiStats, - lastRefreshCheck: Date.now() - }] + [ + initialApiPath, + { + instance: pnpapi, + stats: initialApiStats, + lastRefreshCheck: Date.now(), + }, + ], ]); function loadApiInstance(pnpApiPath) { const nativePath = npath.fromPortablePath(pnpApiPath); @@ -11437,12 +12845,13 @@ function makeManager(pnpapi, opts) { } function refreshApiEntry(pnpApiPath, apiEntry) { const timeNow = Date.now(); - if (timeNow - apiEntry.lastRefreshCheck < 500) - return; + if (timeNow - apiEntry.lastRefreshCheck < 500) return; apiEntry.lastRefreshCheck = timeNow; const stats = opts.fakeFs.statSync(pnpApiPath); if (stats.mtime > apiEntry.stats.mtime) { - process.emitWarning(`[Warning] The runtime detected new information in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`); + process.emitWarning( + `[Warning] The runtime detected new information in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`, + ); apiEntry.stats = stats; apiEntry.instance = loadApiInstance(pnpApiPath); } @@ -11454,11 +12863,14 @@ function makeManager(pnpapi, opts) { refreshApiEntry(pnpApiPath, apiEntry); } } else { - apiMetadata.set(pnpApiPath, apiEntry = { - instance: loadApiInstance(pnpApiPath), - stats: opts.fakeFs.statSync(pnpApiPath), - lastRefreshCheck: Date.now() - }); + apiMetadata.set( + pnpApiPath, + (apiEntry = { + instance: loadApiInstance(pnpApiPath), + stats: opts.fakeFs.statSync(pnpApiPath), + lastRefreshCheck: Date.now(), + }), + ); } return apiEntry; } @@ -11481,25 +12893,38 @@ function makeManager(pnpapi, opts) { let bestCandidate = null; for (const [apiPath, apiEntry] of apiMetadata) { const locator = apiEntry.instance.findPackageLocator(modulePath); - if (!locator) - continue; - if (apiMetadata.size === 1) - return apiPath; - const packageInformation = apiEntry.instance.getPackageInformation(locator); + if (!locator) continue; + if (apiMetadata.size === 1) return apiPath; + const packageInformation = + apiEntry.instance.getPackageInformation(locator); if (!packageInformation) - throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`); + throw new Error( + `Assertion failed: Couldn't get package information for '${modulePath}'`, + ); if (!bestCandidate) - bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] }; - if (packageInformation.packageLocation === bestCandidate.packageLocation) { + bestCandidate = { + packageLocation: packageInformation.packageLocation, + apiPaths: [], + }; + if ( + packageInformation.packageLocation === bestCandidate.packageLocation + ) { bestCandidate.apiPaths.push(apiPath); - } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) { - bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] }; + } else if ( + packageInformation.packageLocation.length > + bestCandidate.packageLocation.length + ) { + bestCandidate = { + packageLocation: packageInformation.packageLocation, + apiPaths: [apiPath], + }; } } if (bestCandidate) { - if (bestCandidate.apiPaths.length === 1) - return bestCandidate.apiPaths[0]; - const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(` + if (bestCandidate.apiPaths.length === 1) return bestCandidate.apiPaths[0]; + const controlSegment = bestCandidate.apiPaths.map( + (apiPath) => ` ${npath.fromPortablePath(apiPath)}`, + ).join(` `); throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances. This is usually caused by using the global cache (enableGlobalCache: true) @@ -11514,13 +12939,18 @@ ${controlSegment} do { curr = next; const cached = findApiPathCache.get(curr); - if (cached !== void 0) - return addToCacheAndReturn(start, curr, cached); + if (cached !== void 0) return addToCacheAndReturn(start, curr, cached); const cjsCandidate = ppath.join(curr, Filename.pnpCjs); - if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile()) + if ( + opts.fakeFs.existsSync(cjsCandidate) && + opts.fakeFs.statSync(cjsCandidate).isFile() + ) return addToCacheAndReturn(start, curr, cjsCandidate); const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs); - if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile()) + if ( + opts.fakeFs.existsSync(legacyCjsCandidate) && + opts.fakeFs.statSync(legacyCjsCandidate).isFile() + ) return addToCacheAndReturn(start, curr, legacyCjsCandidate); next = ppath.dirname(curr); } while (curr !== PortablePath.root); @@ -11528,11 +12958,9 @@ ${controlSegment} } const moduleToApiPathCache = /* @__PURE__ */ new WeakMap(); function getApiPathFromParent(parent) { - if (parent == null) - return initialApiPath; + if (parent == null) return initialApiPath; let apiPath = moduleToApiPathCache.get(parent); - if (typeof apiPath !== `undefined`) - return apiPath; + if (typeof apiPath !== `undefined`) return apiPath; apiPath = parent.filename ? findApiPathFor(parent.filename) : null; moduleToApiPathCache.set(parent, apiPath); return apiPath; @@ -11540,7 +12968,7 @@ ${controlSegment} return { getApiPathFromParent, findApiPathFor, - getApiEntry + getApiEntry, }; } @@ -11548,14 +12976,15 @@ const localFs = { ...fs__default.default }; const nodeFs = new NodeFS(localFs); const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState); const defaultPnpapiResolution = __filename; -const customZipImplementation = defaultRuntimeState.pnpZipBackend === `js` ? JsZipImpl : void 0; +const customZipImplementation = + defaultRuntimeState.pnpZipBackend === `js` ? JsZipImpl : void 0; const defaultFsLayer = new VirtualFS({ baseFs: new ZipOpenFS({ customZipImplementation, baseFs: nodeFs, maxOpenFiles: 80, - readOnlyArchives: true - }) + readOnlyArchives: true, + }), }); class DynamicFS extends ProxiedFS { baseFs = defaultFsLayer; @@ -11571,42 +13000,48 @@ class DynamicFS extends ProxiedFS { } const dynamicFsLayer = new DynamicFS(); let manager; -const defaultApi = Object.assign(makeApi(defaultRuntimeState, { - fakeFs: dynamicFsLayer, - pnpapiResolution: defaultPnpapiResolution -}), { - /** - * Can be used to generate a different API than the default one (for example - * to map it on `/` rather than the local directory path, or to use a - * different FS layer than the default one). - */ - makeApi: ({ - basePath = void 0, - fakeFs = dynamicFsLayer, - pnpapiResolution = defaultPnpapiResolution, - ...rest - }) => { - const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState; - return makeApi(apiRuntimeState, { - fakeFs, - pnpapiResolution, +const defaultApi = Object.assign( + makeApi(defaultRuntimeState, { + fakeFs: dynamicFsLayer, + pnpapiResolution: defaultPnpapiResolution, + }), + { + /** + * Can be used to generate a different API than the default one (for example + * to map it on `/` rather than the local directory path, or to use a + * different FS layer than the default one). + */ + makeApi: ({ + basePath = void 0, + fakeFs = dynamicFsLayer, + pnpapiResolution = defaultPnpapiResolution, ...rest - }); + }) => { + const apiRuntimeState = + typeof basePath !== `undefined` + ? $$SETUP_STATE(hydrateRuntimeState, basePath) + : defaultRuntimeState; + return makeApi(apiRuntimeState, { + fakeFs, + pnpapiResolution, + ...rest, + }); + }, + /** + * Will inject the specified API into the environment, monkey-patching FS. Is + * automatically called when the hook is loaded through `--require`. + */ + setup: (api) => { + applyPatch(api || defaultApi, { + fakeFs: defaultFsLayer, + manager, + }); + dynamicFsLayer.baseFs = new NodeFS(fs__default.default); + }, }, - /** - * Will inject the specified API into the environment, monkey-patching FS. Is - * automatically called when the hook is loaded through `--require`. - */ - setup: (api) => { - applyPatch(api || defaultApi, { - fakeFs: defaultFsLayer, - manager - }); - dynamicFsLayer.baseFs = new NodeFS(fs__default.default); - } -}); +); manager = makeManager(defaultApi, { - fakeFs: dynamicFsLayer + fakeFs: dynamicFsLayer, }); if (module.parent && module.parent.id === `internal/preload`) { defaultApi.setup(); @@ -11640,7 +13075,8 @@ if (process.mainModule === module) { }; if (process.argv.length > 2) { if (process.argv.length !== 4) { - process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} + process.stderr + .write(`Usage: ${process.argv[0]} ${process.argv[1]} `); process.exitCode = 64; } else { @@ -11654,8 +13090,7 @@ if (process.mainModule === module) { do { const index = buffer.indexOf(` `); - if (index === -1) - break; + if (index === -1) break; const line = buffer.slice(0, index); buffer = buffer.slice(index + 1); processRequest(line); diff --git a/.pnp.loader.mjs b/.pnp.loader.mjs index 2d5a584..17bdf88 100644 --- a/.pnp.loader.mjs +++ b/.pnp.loader.mjs @@ -1,25 +1,28 @@ /* eslint-disable */ // @ts-nocheck -import fs from 'fs'; -import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url'; -import path from 'path'; -import { createHash } from 'crypto'; -import { EOL } from 'os'; -import esmModule, { createRequire, isBuiltin } from 'module'; -import assert from 'assert'; +import fs from "fs"; +import { URL as URL$1, fileURLToPath, pathToFileURL } from "url"; +import path from "path"; +import { createHash } from "crypto"; +import { EOL } from "os"; +import esmModule, { createRequire, isBuiltin } from "module"; +import assert from "assert"; const SAFE_TIME = 456789e3; const PortablePath = { root: `/`, dot: `.`, - parent: `..` + parent: `..`, }; const npath = Object.create(path); const ppath = Object.create(path.posix); npath.cwd = () => process.cwd(); -ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +ppath.cwd = + process.platform === `win32` + ? () => toPortablePath(process.cwd()) + : process.cwd; if (process.platform === `win32`) { ppath.resolve = (...segments) => { if (segments.length > 0 && ppath.isAbsolute(segments[0])) { @@ -29,13 +32,11 @@ if (process.platform === `win32`) { } }; } -const contains = function(pathUtils, from, to) { +const contains = function (pathUtils, from, to) { from = pathUtils.normalize(from); to = pathUtils.normalize(to); - if (from === to) - return `.`; - if (!from.endsWith(pathUtils.sep)) - from = from + pathUtils.sep; + if (from === to) return `.`; + if (!from.endsWith(pathUtils.sep)) from = from + pathUtils.sep; if (to.startsWith(from)) { return to.slice(from.length); } else { @@ -50,29 +51,32 @@ const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; function fromPortablePathWin32(p) { let portablePathMatch, uncPortablePathMatch; - if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + if ((portablePathMatch = p.match(PORTABLE_PATH_REGEXP))) p = portablePathMatch[1]; - else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + else if ((uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP))) p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; - else - return p; + else return p; return p.replace(/\//g, `\\`); } function toPortablePathWin32(p) { p = p.replace(/\\/g, `/`); let windowsPathMatch, uncWindowsPathMatch; - if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + if ((windowsPathMatch = p.match(WINDOWS_PATH_REGEXP))) p = `/${windowsPathMatch[1]}`; - else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + else if ((uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP))) p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; return p; } -const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; -const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +const toPortablePath = + process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = + process.platform === `win32` ? fromPortablePathWin32 : (p) => p; npath.fromPortablePath = fromPortablePath; npath.toPortablePath = toPortablePath; function convertPath(targetPathUtils, sourcePath) { - return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); + return targetPathUtils === npath + ? fromPortablePath(sourcePath) + : toPortablePath(sourcePath); } const defaultTime = new Date(SAFE_TIME * 1e3); @@ -82,34 +86,90 @@ async function copyPromise(destinationFs, destination, sourceFs, source, opts) { const normalizedSource = sourceFs.pathUtils.normalize(source); const prelayout = []; const postlayout = []; - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); - await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); - await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); - for (const operation of prelayout) - await operation(); - await Promise.all(postlayout.map((operation) => { - return operation(); - })); + const { atime, mtime } = opts.stableTime + ? { atime: defaultTime, mtime: defaultTime } + : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise( + destinationFs.pathUtils.dirname(destination), + { utimes: [atime, mtime] }, + ); + await copyImpl( + prelayout, + postlayout, + destinationFs, + normalizedDestination, + sourceFs, + normalizedSource, + { ...opts, didParentExist: true }, + ); + for (const operation of prelayout) await operation(); + await Promise.all( + postlayout.map((operation) => { + return operation(); + }), + ); } -async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { - const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; +async function copyImpl( + prelayout, + postlayout, + destinationFs, + destination, + sourceFs, + source, + opts, +) { + const destinationStat = opts.didParentExist + ? await maybeLStat(destinationFs, destination) + : null; const sourceStat = await sourceFs.lstatPromise(source); - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + const { atime, mtime } = opts.stableTime + ? { atime: defaultTime, mtime: defaultTime } + : sourceStat; let updated; switch (true) { case sourceStat.isDirectory(): { - updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + updated = await copyFolder( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } break; case sourceStat.isFile(): { - updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + updated = await copyFile( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } break; case sourceStat.isSymbolicLink(): { - updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + updated = await copySymlink( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } break; default: { @@ -117,12 +177,23 @@ async function copyImpl(prelayout, postlayout, destinationFs, destination, sourc } } if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { - if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { - postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + if ( + updated || + destinationStat?.mtime?.getTime() !== mtime.getTime() || + destinationStat?.atime?.getTime() !== atime.getTime() + ) { + postlayout.push(() => + destinationFs.lutimesPromise(destination, atime, mtime), + ); updated = true; } - if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { - postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + if ( + destinationStat === null || + (destinationStat.mode & 511) !== (sourceStat.mode & 511) + ) { + postlayout.push(() => + destinationFs.chmodPromise(destination, sourceStat.mode & 511), + ); updated = true; } } @@ -135,7 +206,17 @@ async function maybeLStat(baseFs, p) { return null; } } -async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copyFolder( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (destinationStat !== null && !destinationStat.isDirectory()) { if (opts.overwrite) { prelayout.push(async () => destinationFs.removePromise(destination)); @@ -148,7 +229,9 @@ async function copyFolder(prelayout, postlayout, destinationFs, destination, des if (destinationStat === null) { prelayout.push(async () => { try { - await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + await destinationFs.mkdirPromise(destination, { + mode: sourceStat.mode, + }); } catch (err) { if (err.code !== `EEXIST`) { throw err; @@ -158,38 +241,81 @@ async function copyFolder(prelayout, postlayout, destinationFs, destination, des updated = true; } const entries = await sourceFs.readdirPromise(source); - const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + const nextOpts = + opts.didParentExist && !destinationStat + ? { ...opts, didParentExist: false } + : opts; if (opts.stableSort) { for (const entry of entries.sort()) { - if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + if ( + await copyImpl( + prelayout, + postlayout, + destinationFs, + destinationFs.pathUtils.join(destination, entry), + sourceFs, + sourceFs.pathUtils.join(source, entry), + nextOpts, + ) + ) { updated = true; } } } else { - const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { - await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); - })); + const entriesUpdateStatus = await Promise.all( + entries.map(async (entry) => { + await copyImpl( + prelayout, + postlayout, + destinationFs, + destinationFs.pathUtils.join(destination, entry), + sourceFs, + sourceFs.pathUtils.join(source, entry), + nextOpts, + ); + }), + ); if (entriesUpdateStatus.some((status) => status)) { updated = true; } } return updated; } -async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { - const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); +async function copyFileViaIndex( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + linkStrategy, +) { + const sourceHash = await sourceFs.checksumFilePromise(source, { + algorithm: `sha1`, + }); const defaultMode = 420; const sourceMode = sourceStat.mode & 511; const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; - const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + const indexPath = destinationFs.pathUtils.join( + linkStrategy.indexPath, + sourceHash.slice(0, 2), + `${indexFileName}.dat`, + ); let AtomicBehavior; ((AtomicBehavior2) => { - AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; - AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + AtomicBehavior2[(AtomicBehavior2["Lock"] = 0)] = "Lock"; + AtomicBehavior2[(AtomicBehavior2["Rename"] = 1)] = "Rename"; })(AtomicBehavior || (AtomicBehavior = {})); - let atomicBehavior = 1 /* Rename */; + let atomicBehavior = 1; /* Rename */ let indexStat = await maybeLStat(destinationFs, indexPath); if (destinationStat) { - const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isDestinationHardlinkedFromIndex = + indexStat && + destinationStat.dev === indexStat.dev && + destinationStat.ino === indexStat.ino; const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; if (isDestinationHardlinkedFromIndex) { if (isIndexModified && linkStrategy.autoRepair) { @@ -206,7 +332,12 @@ async function copyFileViaIndex(prelayout, postlayout, destinationFs, destinatio } } } - const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + const tempPath = + !indexStat && atomicBehavior === 1 /* Rename */ + ? `${indexPath}.${Math.floor(Math.random() * 4294967296) + .toString(16) + .padStart(8, `0`)}` + : null; let tempPathCleaned = false; prelayout.push(async () => { if (!indexStat) { @@ -248,7 +379,17 @@ async function copyFileViaIndex(prelayout, postlayout, destinationFs, destinatio }); return false; } -async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copyFileDirect( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (destinationStat !== null) { if (opts.overwrite) { prelayout.push(async () => destinationFs.removePromise(destination)); @@ -263,14 +404,55 @@ async function copyFileDirect(prelayout, postlayout, destinationFs, destination, }); return true; } -async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copyFile( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (opts.linkStrategy?.type === `HardlinkFromIndex`) { - return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + return copyFileViaIndex( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + opts.linkStrategy, + ); } else { - return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + return copyFileDirect( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, + ); } } -async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { +async function copySymlink( + prelayout, + postlayout, + destinationFs, + destination, + destinationStat, + sourceFs, + source, + sourceStat, + opts, +) { if (destinationStat !== null) { if (opts.overwrite) { prelayout.push(async () => destinationFs.removePromise(destination)); @@ -280,7 +462,13 @@ async function copySymlink(prelayout, postlayout, destinationFs, destination, de } } prelayout.push(async () => { - await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + await destinationFs.symlinkPromise( + convertPath( + destinationFs.pathUtils, + await sourceFs.readlinkPromise(source), + ), + destination, + ); }); return true; } @@ -316,8 +504,12 @@ class FakeFS { const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); const hash = createHash(algorithm); let bytesRead = 0; - while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) - hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + while ( + (bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0 + ) + hash.update( + bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead), + ); return hash.digest(`hex`); } finally { await this.closePromise(fd); @@ -337,9 +529,11 @@ class FakeFS { if (stat.isDirectory()) { if (recursive) { const entries = await this.readdirPromise(p); - await Promise.all(entries.map((entry) => { - return this.removePromise(this.pathUtils.resolve(p, entry)); - })); + await Promise.all( + entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + }), + ); } for (let t = 0; t <= maxRetries; t++) { try { @@ -379,8 +573,7 @@ class FakeFS { } async mkdirpPromise(p, { chmod, utimes } = {}) { p = this.resolve(p); - if (p === this.pathUtils.dirname(p)) - return void 0; + if (p === this.pathUtils.dirname(p)) return void 0; const parts = p.split(this.pathUtils.sep); let createdDirectory; for (let u = 2; u <= parts.length; ++u) { @@ -396,12 +589,13 @@ class FakeFS { } } createdDirectory ??= subPath; - if (chmod != null) - await this.chmodPromise(subPath, chmod); + if (chmod != null) await this.chmodPromise(subPath, chmod); if (utimes != null) { await this.utimesPromise(subPath, utimes[0], utimes[1]); } else { - const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + const parentStat = await this.statPromise( + this.pathUtils.dirname(subPath), + ); await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); } } @@ -410,8 +604,7 @@ class FakeFS { } mkdirpSync(p, { chmod, utimes } = {}) { p = this.resolve(p); - if (p === this.pathUtils.dirname(p)) - return void 0; + if (p === this.pathUtils.dirname(p)) return void 0; const parts = p.split(this.pathUtils.sep); let createdDirectory; for (let u = 2; u <= parts.length; ++u) { @@ -427,8 +620,7 @@ class FakeFS { } } createdDirectory ??= subPath; - if (chmod != null) - this.chmodSync(subPath, chmod); + if (chmod != null) this.chmodSync(subPath, chmod); if (utimes != null) { this.utimesSync(subPath, utimes[0], utimes[1]); } else { @@ -439,8 +631,23 @@ class FakeFS { } return createdDirectory; } - async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { - return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + async copyPromise( + destination, + source, + { + baseFs = this, + overwrite = true, + stableSort = false, + stableTime = false, + linkStrategy = null, + } = {}, + ) { + return await copyPromise(this, destination, baseFs, source, { + overwrite, + stableSort, + stableTime, + linkStrategy, + }); } copySync(destination, source, { baseFs = this, overwrite = true } = {}) { const stat = baseFs.lstatSync(source); @@ -449,24 +656,28 @@ class FakeFS { this.mkdirpSync(destination); const directoryListing = baseFs.readdirSync(source); for (const entry of directoryListing) { - this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + this.copySync( + this.pathUtils.join(destination, entry), + baseFs.pathUtils.join(source, entry), + { baseFs, overwrite }, + ); } } else if (stat.isFile()) { if (!exists || overwrite) { - if (exists) - this.removeSync(destination); + if (exists) this.removeSync(destination); const content = baseFs.readFileSync(source); this.writeFileSync(destination, content); } } else if (stat.isSymbolicLink()) { if (!exists || overwrite) { - if (exists) - this.removeSync(destination); + if (exists) this.removeSync(destination); const target = baseFs.readlinkSync(source); this.symlinkSync(convertPath(this.pathUtils, target), destination); } } else { - throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + throw new Error( + `Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`, + ); } const mode = stat.mode & 511; this.chmodSync(destination, mode); @@ -482,21 +693,19 @@ class FakeFS { let current = Buffer.alloc(0); try { current = await this.readFilePromise(p); - } catch { - } - if (Buffer.compare(current, content) === 0) - return; + } catch {} + if (Buffer.compare(current, content) === 0) return; await this.writeFilePromise(p, content, { mode }); } async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { let current = ``; try { current = await this.readFilePromise(p, `utf8`); - } catch { - } - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; - if (current === normalizedContent) - return; + } catch {} + const normalizedContent = automaticNewlines + ? normalizeLineEndings(current, content) + : content; + if (current === normalizedContent) return; await this.writeFilePromise(p, normalizedContent, { mode }); } changeFileSync(p, content, opts = {}) { @@ -510,21 +719,19 @@ class FakeFS { let current = Buffer.alloc(0); try { current = this.readFileSync(p); - } catch { - } - if (Buffer.compare(current, content) === 0) - return; + } catch {} + if (Buffer.compare(current, content) === 0) return; this.writeFileSync(p, content, { mode }); } changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { let current = ``; try { current = this.readFileSync(p, `utf8`); - } catch { - } - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; - if (current === normalizedContent) - return; + } catch {} + const normalizedContent = automaticNewlines + ? normalizeLineEndings(current, content) + : content; + if (current === normalizedContent) return; this.writeFileSync(p, normalizedContent, { mode }); } async movePromise(fromP, toP) { @@ -575,17 +782,18 @@ class FakeFS { fd = await this.openPromise(lockPath, `wx`); } catch (error) { if (error.code === `EEXIST`) { - if (!await isAlive()) { + if (!(await isAlive())) { try { await this.unlinkPromise(lockPath); continue; - } catch { - } + } catch {} } if (Date.now() - startTime < 60 * 1e3) { await new Promise((resolve) => setTimeout(resolve, interval)); } else { - throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + throw new Error( + `Couldn't acquire a lock in a reasonable time (via ${lockPath})`, + ); } } else { throw error; @@ -599,8 +807,7 @@ class FakeFS { try { await this.closePromise(fd); await this.unlinkPromise(lockPath); - } catch { - } + } catch {} } } async readJsonPromise(p) { @@ -623,26 +830,30 @@ class FakeFS { } async writeJsonPromise(p, data, { compact = false } = {}) { const space = compact ? 0 : 2; - return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} -`); + return await this.writeFilePromise( + p, + `${JSON.stringify(data, null, space)} +`, + ); } writeJsonSync(p, data, { compact = false } = {}) { const space = compact ? 0 : 2; - return this.writeFileSync(p, `${JSON.stringify(data, null, space)} -`); + return this.writeFileSync( + p, + `${JSON.stringify(data, null, space)} +`, + ); } async preserveTimePromise(p, cb) { const stat = await this.lstatPromise(p); const result = await cb(); - if (typeof result !== `undefined`) - p = result; + if (typeof result !== `undefined`) p = result; await this.lutimesPromise(p, stat.atime, stat.mtime); } async preserveTimeSync(p, cb) { const stat = this.lstatSync(p); const result = cb(); - if (typeof result !== `undefined`) - p = result; + if (typeof result !== `undefined`) p = result; this.lutimesSync(p, stat.atime, stat.mtime); } } @@ -653,13 +864,18 @@ class BasePortableFakeFS extends FakeFS { } function getEndOfLine(content) { const matches = content.match(/\r?\n/g); - if (matches === null) - return EOL; - const crlf = matches.filter((nl) => nl === `\r -`).length; + if (matches === null) return EOL; + const crlf = matches.filter( + (nl) => + nl === + `\r +`, + ).length; const lf = matches.length - crlf; - return crlf > lf ? `\r -` : ` + return crlf > lf + ? `\r +` + : ` `; } function normalizeLineEndings(originalContent, newContent) { @@ -683,10 +899,15 @@ class ProxiedFS extends FakeFS { return this.baseFs.openSync(this.mapToBase(p), flags, mode); } async opendirPromise(p, opts) { - return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + return Object.assign( + await this.baseFs.opendirPromise(this.mapToBase(p), opts), + { path: p }, + ); } opendirSync(p, opts) { - return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { + path: p, + }); } async readPromise(fd, buffer, offset, length, position) { return await this.baseFs.readPromise(fd, buffer, offset, length, position); @@ -698,7 +919,13 @@ class ProxiedFS extends FakeFS { if (typeof buffer === `string`) { return await this.baseFs.writePromise(fd, buffer, offset); } else { - return await this.baseFs.writePromise(fd, buffer, offset, length, position); + return await this.baseFs.writePromise( + fd, + buffer, + offset, + length, + position, + ); } } writeSync(fd, buffer, offset, length, position) { @@ -715,13 +942,21 @@ class ProxiedFS extends FakeFS { this.baseFs.closeSync(fd); } createReadStream(p, opts) { - return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + return this.baseFs.createReadStream( + p !== null ? this.mapToBase(p) : p, + opts, + ); } createWriteStream(p, opts) { - return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + return this.baseFs.createWriteStream( + p !== null ? this.mapToBase(p) : p, + opts, + ); } async realpathPromise(p) { - return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + return this.mapFromBase( + await this.baseFs.realpathPromise(this.mapToBase(p)), + ); } realpathSync(p) { return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); @@ -781,16 +1016,27 @@ class ProxiedFS extends FakeFS { return this.baseFs.chownSync(this.mapToBase(p), uid, gid); } async renamePromise(oldP, newP) { - return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + return this.baseFs.renamePromise( + this.mapToBase(oldP), + this.mapToBase(newP), + ); } renameSync(oldP, newP) { return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); } async copyFilePromise(sourceP, destP, flags = 0) { - return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + return this.baseFs.copyFilePromise( + this.mapToBase(sourceP), + this.mapToBase(destP), + flags, + ); } copyFileSync(sourceP, destP, flags = 0) { - return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + return this.baseFs.copyFileSync( + this.mapToBase(sourceP), + this.mapToBase(destP), + flags, + ); } async appendFilePromise(p, content, opts) { return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); @@ -841,25 +1087,41 @@ class ProxiedFS extends FakeFS { return this.baseFs.rmSync(this.mapToBase(p), opts); } async linkPromise(existingP, newP) { - return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + return this.baseFs.linkPromise( + this.mapToBase(existingP), + this.mapToBase(newP), + ); } linkSync(existingP, newP) { - return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + return this.baseFs.linkSync( + this.mapToBase(existingP), + this.mapToBase(newP), + ); } async symlinkPromise(target, p, type) { const mappedP = this.mapToBase(p); if (this.pathUtils.isAbsolute(target)) return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + const mappedAbsoluteTarget = this.mapToBase( + this.pathUtils.join(this.pathUtils.dirname(p), target), + ); + const mappedTarget = this.baseFs.pathUtils.relative( + this.baseFs.pathUtils.dirname(mappedP), + mappedAbsoluteTarget, + ); return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); } symlinkSync(target, p, type) { const mappedP = this.mapToBase(p); if (this.pathUtils.isAbsolute(target)) return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + const mappedAbsoluteTarget = this.mapToBase( + this.pathUtils.join(this.pathUtils.dirname(p), target), + ); + const mappedTarget = this.baseFs.pathUtils.relative( + this.baseFs.pathUtils.dirname(mappedP), + mappedAbsoluteTarget, + ); return this.baseFs.symlinkSync(mappedTarget, mappedP, type); } async readFilePromise(p, encoding) { @@ -875,7 +1137,9 @@ class ProxiedFS extends FakeFS { return this.baseFs.readdirSync(this.mapToBase(p), opts); } async readlinkPromise(p) { - return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + return this.mapFromBase( + await this.baseFs.readlinkPromise(this.mapToBase(p)), + ); } readlinkSync(p) { return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); @@ -897,7 +1161,7 @@ class ProxiedFS extends FakeFS { this.mapToBase(p), // @ts-expect-error - reason TBS a, - b + b, ); } watchFile(p, a, b) { @@ -905,7 +1169,7 @@ class ProxiedFS extends FakeFS { this.mapToBase(p), // @ts-expect-error - reason TBS a, - b + b, ); } unwatchFile(p, cb) { @@ -943,7 +1207,12 @@ class NodeFS extends BasePortableFakeFS { } async openPromise(p, flags, mode) { return await new Promise((resolve, reject) => { - this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + this.realFs.open( + npath.fromPortablePath(p), + flags, + mode, + this.makeCallback(resolve, reject), + ); }); } openSync(p, flags, mode) { @@ -952,39 +1221,56 @@ class NodeFS extends BasePortableFakeFS { async opendirPromise(p, opts) { return await new Promise((resolve, reject) => { if (typeof opts !== `undefined`) { - this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.opendir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.opendir( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }).then((dir) => { const dirWithFixedPath = dir; Object.defineProperty(dirWithFixedPath, `path`, { value: p, configurable: true, - writable: true + writable: true, }); return dirWithFixedPath; }); } opendirSync(p, opts) { - const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dir = + typeof opts !== `undefined` + ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) + : this.realFs.opendirSync(npath.fromPortablePath(p)); const dirWithFixedPath = dir; Object.defineProperty(dirWithFixedPath, `path`, { value: p, configurable: true, - writable: true + writable: true, }); return dirWithFixedPath; } async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { return await new Promise((resolve, reject) => { - this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { - if (error) { - reject(error); - } else { - resolve(bytesRead); - } - }); + this.realFs.read( + fd, + buffer, + offset, + length, + position, + (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }, + ); }); } readSync(fd, buffer, offset, length, position) { @@ -993,9 +1279,21 @@ class NodeFS extends BasePortableFakeFS { async writePromise(fd, buffer, offset, length, position) { return await new Promise((resolve, reject) => { if (typeof buffer === `string`) { - return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + return this.realFs.write( + fd, + buffer, + offset, + this.makeCallback(resolve, reject), + ); } else { - return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + return this.realFs.write( + fd, + buffer, + offset, + length, + position, + this.makeCallback(resolve, reject), + ); } }); } @@ -1024,13 +1322,19 @@ class NodeFS extends BasePortableFakeFS { } async realpathPromise(p) { return await new Promise((resolve, reject) => { - this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + this.realFs.realpath( + npath.fromPortablePath(p), + {}, + this.makeCallback(resolve, reject), + ); }).then((path) => { return npath.toPortablePath(path); }); } realpathSync(p) { - return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + return npath.toPortablePath( + this.realFs.realpathSync(npath.fromPortablePath(p), {}), + ); } async existsPromise(p) { return await new Promise((resolve) => { @@ -1042,7 +1346,11 @@ class NodeFS extends BasePortableFakeFS { } async accessPromise(p, mode) { return await new Promise((resolve, reject) => { - this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + this.realFs.access( + npath.fromPortablePath(p), + mode, + this.makeCallback(resolve, reject), + ); }); } existsSync(p) { @@ -1051,9 +1359,16 @@ class NodeFS extends BasePortableFakeFS { async statPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.stat( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.stat( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -1083,9 +1398,16 @@ class NodeFS extends BasePortableFakeFS { async lstatPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.lstat( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.lstat( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -1106,7 +1428,11 @@ class NodeFS extends BasePortableFakeFS { } async chmodPromise(p, mask) { return await new Promise((resolve, reject) => { - this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + this.realFs.chmod( + npath.fromPortablePath(p), + mask, + this.makeCallback(resolve, reject), + ); }); } chmodSync(p, mask) { @@ -1122,7 +1448,12 @@ class NodeFS extends BasePortableFakeFS { } async chownPromise(p, uid, gid) { return await new Promise((resolve, reject) => { - this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + this.realFs.chown( + npath.fromPortablePath(p), + uid, + gid, + this.makeCallback(resolve, reject), + ); }); } chownSync(p, uid, gid) { @@ -1130,27 +1461,53 @@ class NodeFS extends BasePortableFakeFS { } async renamePromise(oldP, newP) { return await new Promise((resolve, reject) => { - this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + this.realFs.rename( + npath.fromPortablePath(oldP), + npath.fromPortablePath(newP), + this.makeCallback(resolve, reject), + ); }); } renameSync(oldP, newP) { - return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + return this.realFs.renameSync( + npath.fromPortablePath(oldP), + npath.fromPortablePath(newP), + ); } async copyFilePromise(sourceP, destP, flags = 0) { return await new Promise((resolve, reject) => { - this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + this.realFs.copyFile( + npath.fromPortablePath(sourceP), + npath.fromPortablePath(destP), + flags, + this.makeCallback(resolve, reject), + ); }); } copyFileSync(sourceP, destP, flags = 0) { - return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + return this.realFs.copyFileSync( + npath.fromPortablePath(sourceP), + npath.fromPortablePath(destP), + flags, + ); } async appendFilePromise(p, content, opts) { return await new Promise((resolve, reject) => { - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + const fsNativePath = + typeof p === `string` ? npath.fromPortablePath(p) : p; if (opts) { - this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + this.realFs.appendFile( + fsNativePath, + content, + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + this.realFs.appendFile( + fsNativePath, + content, + this.makeCallback(resolve, reject), + ); } }); } @@ -1164,11 +1521,21 @@ class NodeFS extends BasePortableFakeFS { } async writeFilePromise(p, content, opts) { return await new Promise((resolve, reject) => { - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + const fsNativePath = + typeof p === `string` ? npath.fromPortablePath(p) : p; if (opts) { - this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + this.realFs.writeFile( + fsNativePath, + content, + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + this.realFs.writeFile( + fsNativePath, + content, + this.makeCallback(resolve, reject), + ); } }); } @@ -1182,7 +1549,10 @@ class NodeFS extends BasePortableFakeFS { } async unlinkPromise(p) { return await new Promise((resolve, reject) => { - this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.unlink( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); }); } unlinkSync(p) { @@ -1190,7 +1560,12 @@ class NodeFS extends BasePortableFakeFS { } async utimesPromise(p, atime, mtime) { return await new Promise((resolve, reject) => { - this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + this.realFs.utimes( + npath.fromPortablePath(p), + atime, + mtime, + this.makeCallback(resolve, reject), + ); }); } utimesSync(p, atime, mtime) { @@ -1198,7 +1573,12 @@ class NodeFS extends BasePortableFakeFS { } async lutimesPromise(p, atime, mtime) { return await new Promise((resolve, reject) => { - this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + this.realFs.lutimes( + npath.fromPortablePath(p), + atime, + mtime, + this.makeCallback(resolve, reject), + ); }); } lutimesSync(p, atime, mtime) { @@ -1206,7 +1586,11 @@ class NodeFS extends BasePortableFakeFS { } async mkdirPromise(p, opts) { return await new Promise((resolve, reject) => { - this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.mkdir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); }); } mkdirSync(p, opts) { @@ -1215,9 +1599,16 @@ class NodeFS extends BasePortableFakeFS { async rmdirPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.rmdir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.rmdir( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -1227,9 +1618,16 @@ class NodeFS extends BasePortableFakeFS { async rmPromise(p, opts) { return await new Promise((resolve, reject) => { if (opts) { - this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.rm( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } else { - this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.rm( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -1238,24 +1636,45 @@ class NodeFS extends BasePortableFakeFS { } async linkPromise(existingP, newP) { return await new Promise((resolve, reject) => { - this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + this.realFs.link( + npath.fromPortablePath(existingP), + npath.fromPortablePath(newP), + this.makeCallback(resolve, reject), + ); }); } linkSync(existingP, newP) { - return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + return this.realFs.linkSync( + npath.fromPortablePath(existingP), + npath.fromPortablePath(newP), + ); } async symlinkPromise(target, p, type) { return await new Promise((resolve, reject) => { - this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + this.realFs.symlink( + npath.fromPortablePath(target.replace(/\/+$/, ``)), + npath.fromPortablePath(p), + type, + this.makeCallback(resolve, reject), + ); }); } symlinkSync(target, p, type) { - return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + return this.realFs.symlinkSync( + npath.fromPortablePath(target.replace(/\/+$/, ``)), + npath.fromPortablePath(p), + type, + ); } async readFilePromise(p, encoding) { return await new Promise((resolve, reject) => { - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; - this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + const fsNativePath = + typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile( + fsNativePath, + encoding, + this.makeCallback(resolve, reject), + ); }); } readFileSync(p, encoding) { @@ -1267,15 +1686,36 @@ class NodeFS extends BasePortableFakeFS { if (opts) { if (opts.recursive && process.platform === `win32`) { if (opts.withFileTypes) { - this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + opts, + this.makeCallback( + (results) => resolve(results.map(direntToPortable)), + reject, + ), + ); } else { - this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + opts, + this.makeCallback( + (results) => resolve(results.map(npath.toPortablePath)), + reject, + ), + ); } } else { - this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + opts, + this.makeCallback(resolve, reject), + ); } } else { - this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.readdir( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); } }); } @@ -1283,9 +1723,13 @@ class NodeFS extends BasePortableFakeFS { if (opts) { if (opts.recursive && process.platform === `win32`) { if (opts.withFileTypes) { - return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + return this.realFs + .readdirSync(npath.fromPortablePath(p), opts) + .map(direntToPortable); } else { - return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + return this.realFs + .readdirSync(npath.fromPortablePath(p), opts) + .map(npath.toPortablePath); } } else { return this.realFs.readdirSync(npath.fromPortablePath(p), opts); @@ -1296,17 +1740,26 @@ class NodeFS extends BasePortableFakeFS { } async readlinkPromise(p) { return await new Promise((resolve, reject) => { - this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + this.realFs.readlink( + npath.fromPortablePath(p), + this.makeCallback(resolve, reject), + ); }).then((path) => { return npath.toPortablePath(path); }); } readlinkSync(p) { - return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + return npath.toPortablePath( + this.realFs.readlinkSync(npath.fromPortablePath(p)), + ); } async truncatePromise(p, len) { return await new Promise((resolve, reject) => { - this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + this.realFs.truncate( + npath.fromPortablePath(p), + len, + this.makeCallback(resolve, reject), + ); }); } truncateSync(p, len) { @@ -1325,7 +1778,7 @@ class NodeFS extends BasePortableFakeFS { npath.fromPortablePath(p), // @ts-expect-error - reason TBS a, - b + b, ); } watchFile(p, a, b) { @@ -1333,7 +1786,7 @@ class NodeFS extends BasePortableFakeFS { npath.fromPortablePath(p), // @ts-expect-error - reason TBS a, - b + b, ); } unwatchFile(p, cb) { @@ -1351,34 +1804,40 @@ class NodeFS extends BasePortableFakeFS { } const NUMBER_REGEXP = /^[0-9]+$/; -const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VIRTUAL_REGEXP = + /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; class VirtualFS extends ProxiedFS { baseFs; static makeVirtualPath(base, component, to) { if (ppath.basename(base) !== `__virtual__`) - throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + throw new Error( + `Assertion failed: Virtual folders must be named "__virtual__"`, + ); if (!ppath.basename(component).match(VALID_COMPONENT)) - throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + throw new Error( + `Assertion failed: Virtual components must be ended by an hexadecimal hash`, + ); const target = ppath.relative(ppath.dirname(base), to); const segments = target.split(`/`); let depth = 0; - while (depth < segments.length && segments[depth] === `..`) - depth += 1; + while (depth < segments.length && segments[depth] === `..`) depth += 1; const finalSegments = segments.slice(depth); - const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + const fullVirtualPath = ppath.join( + base, + component, + String(depth), + ...finalSegments, + ); return fullVirtualPath; } static resolveVirtual(p) { const match = p.match(VIRTUAL_REGEXP); - if (!match || !match[3] && match[5]) - return p; + if (!match || (!match[3] && match[5])) return p; const target = ppath.dirname(match[1]); - if (!match[3] || !match[4]) - return target; + if (!match[3] || !match[4]) return target; const isnum = NUMBER_REGEXP.test(match[4]); - if (!isnum) - return p; + if (!isnum) return p; const depth = Number(match[4]); const backstep = `../`.repeat(depth); const subpath = match[5] || `.`; @@ -1396,28 +1855,24 @@ class VirtualFS extends ProxiedFS { } realpathSync(p) { const match = p.match(VIRTUAL_REGEXP); - if (!match) - return this.baseFs.realpathSync(p); - if (!match[5]) - return p; + if (!match) return this.baseFs.realpathSync(p); + if (!match[5]) return p; const realpath = this.baseFs.realpathSync(this.mapToBase(p)); return VirtualFS.makeVirtualPath(match[1], match[3], realpath); } async realpathPromise(p) { const match = p.match(VIRTUAL_REGEXP); - if (!match) - return await this.baseFs.realpathPromise(p); - if (!match[5]) - return p; + if (!match) return await this.baseFs.realpathPromise(p); + if (!match[5]) return p; const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); return VirtualFS.makeVirtualPath(match[1], match[3], realpath); } mapToBase(p) { - if (p === ``) - return p; - if (this.pathUtils.isAbsolute(p)) - return VirtualFS.resolveVirtual(p); - const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + if (p === ``) return p; + if (this.pathUtils.isAbsolute(p)) return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual( + this.baseFs.resolve(PortablePath.dot), + ); const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; } @@ -1426,12 +1881,18 @@ class VirtualFS extends ProxiedFS { } } -const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? URL$1 : globalThis.URL; +const URL = + Number(process.versions.node.split(".", 1)[0]) < 20 ? URL$1 : globalThis.URL; -const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); -const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; -const HAS_LAZY_LOADED_TRANSLATORS = major === 20 && minor < 6 || major === 19 && minor >= 3; -const SUPPORTS_IMPORT_ATTRIBUTES = major >= 21 || major === 20 && minor >= 10 || major === 18 && minor >= 20; +const [major, minor] = process.versions.node + .split(`.`) + .map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = + major > 19 || (major === 19 && minor >= 2) || (major === 18 && minor >= 13); +const HAS_LAZY_LOADED_TRANSLATORS = + (major === 20 && minor < 6) || (major === 19 && minor >= 3); +const SUPPORTS_IMPORT_ATTRIBUTES = + major >= 21 || (major === 20 && minor >= 10) || (major === 18 && minor >= 20); const SUPPORTS_IMPORT_ATTRIBUTES_ONLY = major >= 22; function readPackageScope(checkPath) { @@ -1440,13 +1901,12 @@ function readPackageScope(checkPath) { do { separatorIndex = checkPath.lastIndexOf(npath.sep); checkPath = checkPath.slice(0, separatorIndex); - if (checkPath.endsWith(`${npath.sep}node_modules`)) - return false; + if (checkPath.endsWith(`${npath.sep}node_modules`)) return false; const pjson = readPackage(checkPath + npath.sep); if (pjson) { return { data: pjson, - path: checkPath + path: checkPath, }; } } while (separatorIndex > rootSeparatorIndex); @@ -1454,8 +1914,7 @@ function readPackageScope(checkPath) { } function readPackage(requestPath) { const jsonPath = npath.resolve(requestPath, `package.json`); - if (!fs.existsSync(jsonPath)) - return null; + if (!fs.existsSync(jsonPath)) return null; return JSON.parse(fs.readFileSync(jsonPath, `utf8`)); } @@ -1463,8 +1922,7 @@ async function tryReadFile$1(path2) { try { return await fs.promises.readFile(path2, `utf8`); } catch (error) { - if (error.code === `ENOENT`) - return null; + if (error.code === `ENOENT`) return null; throw error; } } @@ -1489,27 +1947,21 @@ function getFileFormat(filepath) { return `commonjs`; } case `.wasm`: { - throw new Error( - `Unknown file extension ".wasm" for ${filepath}` - ); + throw new Error(`Unknown file extension ".wasm" for ${filepath}`); } case `.json`: { return `json`; } case `.js`: { const pkg = readPackageScope(filepath); - if (!pkg) - return `commonjs`; + if (!pkg) return `commonjs`; return pkg.data.type ?? `commonjs`; } default: { - if (entrypointPath !== filepath) - return null; + if (entrypointPath !== filepath) return null; const pkg = readPackageScope(filepath); - if (!pkg) - return `commonjs`; - if (pkg.data.type === `module`) - return null; + if (!pkg) return `commonjs`; + if (pkg.data.type === `module`) return null; return pkg.data.type ?? `commonjs`; } } @@ -1517,23 +1969,28 @@ function getFileFormat(filepath) { async function load$1(urlString, context, nextLoad) { const url = tryParseURL(urlString); - if (url?.protocol !== `file:`) - return nextLoad(urlString, context, nextLoad); + if (url?.protocol !== `file:`) return nextLoad(urlString, context, nextLoad); const filePath = fileURLToPath(url); const format = getFileFormat(filePath); - if (!format) - return nextLoad(urlString, context, nextLoad); + if (!format) return nextLoad(urlString, context, nextLoad); if (format === `json`) { if (SUPPORTS_IMPORT_ATTRIBUTES_ONLY) { if (context.importAttributes?.type !== `json`) { - const err = new TypeError(`[ERR_IMPORT_ATTRIBUTE_MISSING]: Module "${urlString}" needs an import attribute of "type: json"`); + const err = new TypeError( + `[ERR_IMPORT_ATTRIBUTE_MISSING]: Module "${urlString}" needs an import attribute of "type: json"`, + ); err.code = `ERR_IMPORT_ATTRIBUTE_MISSING`; throw err; } } else { - const type = `importAttributes` in context ? context.importAttributes?.type : context.importAssertions?.type; + const type = + `importAttributes` in context + ? context.importAttributes?.type + : context.importAssertions?.type; if (type !== `json`) { - const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import ${SUPPORTS_IMPORT_ATTRIBUTES ? `attribute` : `assertion`} of type "json"`); + const err = new TypeError( + `[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import ${SUPPORTS_IMPORT_ATTRIBUTES ? `attribute` : `assertion`} of type "json"`, + ); err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`; throw err; } @@ -1542,33 +1999,48 @@ async function load$1(urlString, context, nextLoad) { if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { const pathToSend = pathToFileURL( npath.fromPortablePath( - VirtualFS.resolveVirtual(npath.toPortablePath(filePath)) - ) + VirtualFS.resolveVirtual(npath.toPortablePath(filePath)), + ), ).href; process.send({ - "watch:import": WATCH_MODE_MESSAGE_USES_ARRAYS ? [pathToSend] : pathToSend + "watch:import": WATCH_MODE_MESSAGE_USES_ARRAYS + ? [pathToSend] + : pathToSend, }); } return { format, - source: format === `commonjs` ? void 0 : await fs.promises.readFile(filePath, `utf8`), - shortCircuit: true + source: + format === `commonjs` + ? void 0 + : await fs.promises.readFile(filePath, `utf8`), + shortCircuit: true, }; } const ArrayIsArray = Array.isArray; const JSONStringify = JSON.stringify; const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; -const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); -const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); -const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); -const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); -const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); -const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); -const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); -const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); -const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); -const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const ObjectPrototypeHasOwnProperty = (obj, prop) => + Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => + RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => + RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => + String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => + String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => + String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => + String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => + String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => + String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => + String.prototype.startsWith.apply(str, rest); const SafeMap = Map; const JSONParse = JSON.parse; @@ -1586,35 +2058,39 @@ const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( (specifier, packagePath, base) => { return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; }, - TypeError + TypeError, ); const ERR_INVALID_MODULE_SPECIFIER = createErrorType( `ERR_INVALID_MODULE_SPECIFIER`, (request, reason, base = void 0) => { return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; }, - TypeError + TypeError, ); const ERR_INVALID_PACKAGE_TARGET = createErrorType( `ERR_INVALID_PACKAGE_TARGET`, (pkgPath, key, target, isImport = false, base = void 0) => { - const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + const relError = + typeof target === `string` && + !isImport && + target.length && + !StringPrototypeStartsWith(target, `./`); if (key === `.`) { assert(isImport === false); return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; } return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( - target + target, )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; }, - Error + Error, ); const ERR_INVALID_PACKAGE_CONFIG = createErrorType( `ERR_INVALID_PACKAGE_CONFIG`, (path, base, message) => { return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; }, - Error + Error, ); function filterOwnProperties(source, keys) { @@ -1643,7 +2119,7 @@ function getPackageConfig(path, specifier, base, readFileSyncFn) { name: void 0, type: "none", exports: void 0, - imports: void 0 + imports: void 0, }; packageJSONCache.set(path, packageConfig2); return packageConfig2; @@ -1655,16 +2131,18 @@ function getPackageConfig(path, specifier, base, readFileSyncFn) { throw new ERR_INVALID_PACKAGE_CONFIG( path, (base ? `"${specifier}" from ` : "") + fileURLToPath(base || specifier), - error.message + error.message, ); } let { imports, main, name, type } = filterOwnProperties(packageJSON, [ "imports", "main", "name", - "type" + "type", ]); - const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") + ? packageJSON.exports + : void 0; if (typeof imports !== "object" || imports === null) { imports = void 0; } @@ -1684,7 +2162,7 @@ function getPackageConfig(path, specifier, base, readFileSyncFn) { name, type, exports, - imports + imports, }; packageJSONCache.set(path, packageConfig); return packageConfig; @@ -1693,14 +2171,16 @@ function getPackageScopeConfig(resolved, readFileSyncFn) { let packageJSONUrl = new URL("./package.json", resolved); while (true) { const packageJSONPath2 = packageJSONUrl.pathname; - if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + if ( + StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json") + ) { break; } const packageConfig2 = getPackageConfig( fileURLToPath(packageJSONUrl), resolved, void 0, - readFileSyncFn + readFileSyncFn, ); if (packageConfig2.exists) { return packageConfig2; @@ -1719,7 +2199,7 @@ function getPackageScopeConfig(resolved, readFileSyncFn) { name: void 0, type: "none", exports: void 0, - imports: void 0 + imports: void 0, }; packageJSONCache.set(packageJSONPath, packageConfig); return packageConfig; @@ -1729,7 +2209,7 @@ function throwImportNotDefined(specifier, packageJSONUrl, base) { throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( specifier, packageJSONUrl && fileURLToPath(new URL(".", packageJSONUrl)), - fileURLToPath(base) + fileURLToPath(base), ); } function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { @@ -1737,10 +2217,16 @@ function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { throw new ERR_INVALID_MODULE_SPECIFIER( subpath, reason, - base && fileURLToPath(base) + base && fileURLToPath(base), ); } -function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { +function throwInvalidPackageTarget( + subpath, + target, + packageJSONUrl, + internal, + base, +) { if (typeof target === "object" && target !== null) { target = JSONStringify(target, null, ""); } else { @@ -1751,33 +2237,50 @@ function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, ba subpath, target, internal, - base && fileURLToPath(base) + base && fileURLToPath(base), ); } -const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const invalidSegmentRegEx = + /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; const patternRegEx = /\*/g; -function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { +function resolvePackageTargetString( + target, + subpath, + match, + packageJSONUrl, + base, + pattern, + internal, + conditions, +) { if (subpath !== "" && !pattern && target[target.length - 1] !== "/") throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); if (!StringPrototypeStartsWith(target, "./")) { - if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + if ( + internal && + !StringPrototypeStartsWith(target, "../") && + !StringPrototypeStartsWith(target, "/") + ) { let isURL = false; try { new URL(target); isURL = true; - } catch { - } + } catch {} if (!isURL) { - const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + const exportTarget = pattern + ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) + : target + subpath; return exportTarget; } } throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); } - if (RegExpPrototypeExec( - invalidSegmentRegEx, - StringPrototypeSlice(target, 2) - ) !== null) + if ( + RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2), + ) !== null + ) throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); const resolved = new URL(target, packageJSONUrl); const resolvedPath = resolved.pathname; @@ -1786,12 +2289,14 @@ function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); if (subpath === "") return resolved; if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { - const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + const request = pattern + ? StringPrototypeReplace(match, "*", () => subpath) + : match + subpath; throwInvalidSubpath(request, packageJSONUrl, internal, base); } if (pattern) { return new URL( - RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath), ); } return new URL(subpath, resolved); @@ -1801,7 +2306,16 @@ function isArrayIndex(key) { if (`${keyNum}` !== key) return false; return keyNum >= 0 && keyNum < 4294967295; } -function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { +function resolvePackageTarget( + packageJSONUrl, + target, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions, +) { if (typeof target === "string") { return resolvePackageTargetString( target, @@ -1810,7 +2324,8 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b packageJSONUrl, base, pattern, - internal); + internal, + ); } else if (ArrayIsArray(target)) { if (target.length === 0) { return null; @@ -1828,7 +2343,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b base, pattern, internal, - conditions + conditions, ); } catch (e) { lastException = e; @@ -1857,7 +2372,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b throw new ERR_INVALID_PACKAGE_CONFIG( fileURLToPath(packageJSONUrl), base, - '"exports" cannot contain numeric property keys.' + '"exports" cannot contain numeric property keys.', ); } } @@ -1873,7 +2388,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b base, pattern, internal, - conditions + conditions, ); if (resolveResult === void 0) continue; return resolveResult; @@ -1888,7 +2403,7 @@ function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, b target, packageJSONUrl, internal, - base + base, ); } function patternKeyCompare(a, b) { @@ -1905,7 +2420,11 @@ function patternKeyCompare(a, b) { return 0; } function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { - if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + if ( + name === "#" || + StringPrototypeStartsWith(name, "#/") || + StringPrototypeEndsWith(name, "/") + ) { const reason = "is not a valid internal imports specifier name"; throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base)); } @@ -1915,7 +2434,10 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { packageJSONUrl = pathToFileURL(packageConfig.pjsonPath); const imports = packageConfig.imports; if (imports) { - if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + if ( + ObjectPrototypeHasOwnProperty(imports, name) && + !StringPrototypeIncludes(name, "*") + ) { const resolveResult = resolvePackageTarget( packageJSONUrl, imports[name], @@ -1924,7 +2446,7 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { base, false, true, - conditions + conditions, ); if (resolveResult != null) { return resolveResult; @@ -1936,17 +2458,25 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { for (let i = 0; i < keys.length; i++) { const key = keys[i]; const patternIndex = StringPrototypeIndexOf(key, "*"); - if (patternIndex !== -1 && StringPrototypeStartsWith( - name, - StringPrototypeSlice(key, 0, patternIndex) - )) { + if ( + patternIndex !== -1 && + StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex), + ) + ) { const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); - if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + if ( + name.length >= key.length && + StringPrototypeEndsWith(name, patternTrailer) && + patternKeyCompare(bestMatch, key) === 1 && + StringPrototypeLastIndexOf(key, "*") === patternIndex + ) { bestMatch = key; bestMatchSubpath = StringPrototypeSlice( name, patternIndex, - name.length - patternTrailer.length + name.length - patternTrailer.length, ); } } @@ -1961,7 +2491,7 @@ function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { base, true, true, - conditions + conditions, ); if (resolveResult != null) { return resolveResult; @@ -1980,14 +2510,14 @@ if (!findPnpApi) { pnpApi.setup(); findPnpApi = esmModule.findPnpApi; } -const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; +const pathRegExp = + /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; const isRelativeRegexp = /^\.{0,2}\//; function tryReadFile(filePath) { try { return fs.readFileSync(filePath, `utf8`); } catch (err) { - if (err.code === `ENOENT`) - return void 0; + if (err.code === `ENOENT`) return void 0; throw err; } } @@ -1996,13 +2526,15 @@ async function resolvePrivateRequest(specifier, issuer, context, nextResolve) { name: specifier, base: pathToFileURL(issuer), conditions: new Set(context.conditions), - readFileSyncFn: tryReadFile + readFileSyncFn: tryReadFile, }); if (resolved instanceof URL) { return { url: resolved.href, shortCircuit: true }; } else { if (resolved.startsWith(`#`)) - throw new Error(`Mapping from one private import to another isn't allowed`); + throw new Error( + `Mapping from one private import to another isn't allowed`, + ); return resolve$1(resolved, context, nextResolve); } } @@ -2010,17 +2542,22 @@ async function resolve$1(originalSpecifier, context, nextResolve) { if (!findPnpApi || isBuiltin(originalSpecifier)) return nextResolve(originalSpecifier, context, nextResolve); let specifier = originalSpecifier; - const url = tryParseURL(specifier, isRelativeRegexp.test(specifier) ? context.parentURL : void 0); + const url = tryParseURL( + specifier, + isRelativeRegexp.test(specifier) ? context.parentURL : void 0, + ); if (url) { if (url.protocol !== `file:`) return nextResolve(originalSpecifier, context, nextResolve); specifier = fileURLToPath(url); } const { parentURL, conditions = [] } = context; - const issuer = parentURL && tryParseURL(parentURL)?.protocol === `file:` ? fileURLToPath(parentURL) : process.cwd(); + const issuer = + parentURL && tryParseURL(parentURL)?.protocol === `file:` + ? fileURLToPath(parentURL) + : process.cwd(); const pnpapi = findPnpApi(issuer) ?? (url ? findPnpApi(specifier) : null); - if (!pnpapi) - return nextResolve(originalSpecifier, context, nextResolve); + if (!pnpapi) return nextResolve(originalSpecifier, context, nextResolve); if (specifier.startsWith(`#`)) return resolvePrivateRequest(specifier, issuer, context, nextResolve); const dependencyNameMatch = specifier.match(pathRegExp); @@ -2028,7 +2565,10 @@ async function resolve$1(originalSpecifier, context, nextResolve) { if (dependencyNameMatch) { const [, dependencyName, subPath] = dependencyNameMatch; if (subPath === `` && dependencyName !== `pnpapi`) { - const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer); + const resolved = pnpapi.resolveToUnqualified( + `${dependencyName}/package.json`, + issuer, + ); if (resolved) { const content = await tryReadFile$1(resolved); if (content) { @@ -2043,10 +2583,14 @@ async function resolve$1(originalSpecifier, context, nextResolve) { result = pnpapi.resolveRequest(specifier, issuer, { conditions: new Set(conditions), // TODO: Handle --experimental-specifier-resolution=node - extensions: allowLegacyResolve ? void 0 : [] + extensions: allowLegacyResolve ? void 0 : [], }); } catch (err) { - if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`) + if ( + err instanceof Error && + `code` in err && + err.code === `MODULE_NOT_FOUND` + ) err.code = `ERR_MODULE_NOT_FOUND`; throw err; } @@ -2057,11 +2601,10 @@ async function resolve$1(originalSpecifier, context, nextResolve) { resultURL.search = url.search; resultURL.hash = url.hash; } - if (!parentURL) - setEntrypointPath(fileURLToPath(resultURL)); + if (!parentURL) setEntrypointPath(fileURLToPath(resultURL)); return { url: resultURL.href, - shortCircuit: true + shortCircuit: true, }; } @@ -2069,17 +2612,16 @@ if (!HAS_LAZY_LOADED_TRANSLATORS) { const binding = process.binding(`fs`); const originalReadFile = binding.readFileUtf8 || binding.readFileSync; if (originalReadFile) { - binding[originalReadFile.name] = function(...args) { + binding[originalReadFile.name] = function (...args) { try { return fs.readFileSync(args[0], { encoding: `utf8`, // @ts-expect-error - The docs says it needs to be a string but // links to https://nodejs.org/dist/latest-v20.x/docs/api/fs.html#file-system-flags // which says it can be a number which matches the implementation. - flag: args[1] + flag: args[1], }); - } catch { - } + } catch {} return originalReadFile.apply(this, args); }; } else { @@ -2087,9 +2629,13 @@ if (!HAS_LAZY_LOADED_TRANSLATORS) { const originalfstat = binding2.fstat; const ZIP_MASK = 4278190080; const ZIP_MAGIC = 704643072; - binding2.fstat = function(...args) { + binding2.fstat = function (...args) { const [fd, useBigint, req] = args; - if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) { + if ( + (fd & ZIP_MASK) === ZIP_MAGIC && + useBigint === false && + req === void 0 + ) { try { const stats = fs.fstatSync(fd); return new Float64Array([ @@ -2102,7 +2648,7 @@ if (!HAS_LAZY_LOADED_TRANSLATORS) { stats.blksize, stats.ino, stats.size, - stats.blocks + stats.blocks, // atime sec // atime ns // mtime sec @@ -2112,8 +2658,7 @@ if (!HAS_LAZY_LOADED_TRANSLATORS) { // birthtime sec // birthtime ns ]); - } catch { - } + } catch {} } return originalfstat.apply(this, args); }; diff --git a/.yarn/cache/yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip b/.yarn/cache/yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip new file mode 100644 index 0000000000000000000000000000000000000000..311982ca7e71b17242e7ae02b3cdbf844bb3f204 GIT binary patch literal 725969 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 9831a7e..cf7bade 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "react": "^19.2.0", "react-bootstrap": "^2.10.10", "react-dom": "^19.2.0", - "react-router-dom": "^7.13.1" + "react-router-dom": "^7.13.1", + "yaml": "^2.8.2" }, "devDependencies": { "@eslint/js": "^9.39.1", diff --git a/src/Version.tsx b/src/Version.tsx index c0aa482..69c3815 100644 --- a/src/Version.tsx +++ b/src/Version.tsx @@ -1,45 +1,48 @@ import { AppNav, Footer } from "./AppNav.tsx"; -import { Container, Row, Col, Image } from "react-bootstrap"; -import { atom, useAtom } from 'jotai'; -import { atomWithQuery } from 'jotai-tanstack-query'; +import { Container, Row, Col, Card } from "react-bootstrap"; +import { atom, useAtom } from "jotai"; +import { atomWithQuery } from "jotai-tanstack-query"; +import YAML from "yaml"; const versionQueryFn = async () => { - const resp = await fetch("api/build_info"); - if(!resp.ok) { - throw new Error('Network response was not ok') - } - console.log(resp); - return resp.json(); -} + const resp = await fetch("api/build_info"); + if (!resp.ok) { + throw new Error("Network response was not ok"); + } + return resp.json(); +}; -const versionAtom = atomWithQuery( () => - ({ - queryKey: ["version"], - queryFn: versionQueryFn, - }) -); +const versionAtom = atomWithQuery(() => ({ + queryKey: ["version"], + queryFn: versionQueryFn, +})); export function Version() { const [{ data, isPending, isError }] = useAtom(versionAtom); - let versionText = () => { - if(isPending) { - return "Loading..."; - } - if(isError) { - return "Error loading!"; - } - return JSON.stringify(data); - }; - + let versionText = () => { + if (isPending) { + return "Loading..."; + } + if (isError) { + return "Error loading!"; + } + if (!data.status) { + return "Can not find version"; + } + return YAML.stringify(data.message); + }; return (
- -

- {versionText()} -

+ + + project.yaml + +
{versionText()}
+
+
diff --git a/yarn.lock b/yarn.lock index 108cd7d..845a879 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1195,6 +1195,7 @@ __metadata: typescript: "npm:~5.9.3" typescript-eslint: "npm:^8.48.0" vite: "npm:^7.3.1" + yaml: "npm:^2.8.2" languageName: unknown linkType: soft @@ -3072,6 +3073,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.8.2": + version: 2.8.2 + resolution: "yaml@npm:2.8.2" + bin: + yaml: bin.mjs + checksum: 10c0/703e4dc1e34b324aa66876d63618dcacb9ed49f7e7fe9b70f1e703645be8d640f68ab84f12b86df8ac960bac37acf5513e115de7c970940617ce0343c8c9cd96 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"