5 changed files with 27773 additions and 3 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,273 @@
|
||||
import { URL, fileURLToPath, pathToFileURL } from 'url'; |
||||
import fs from 'fs'; |
||||
import path from 'path'; |
||||
import moduleExports, { Module } from 'module'; |
||||
|
||||
var PathType; |
||||
(function(PathType2) { |
||||
PathType2[PathType2["File"] = 0] = "File"; |
||||
PathType2[PathType2["Portable"] = 1] = "Portable"; |
||||
PathType2[PathType2["Native"] = 2] = "Native"; |
||||
})(PathType || (PathType = {})); |
||||
const npath = Object.create(path); |
||||
const ppath = Object.create(path.posix); |
||||
npath.cwd = () => process.cwd(); |
||||
ppath.cwd = () => toPortablePath(process.cwd()); |
||||
ppath.resolve = (...segments) => { |
||||
if (segments.length > 0 && ppath.isAbsolute(segments[0])) { |
||||
return path.posix.resolve(...segments); |
||||
} else { |
||||
return path.posix.resolve(ppath.cwd(), ...segments); |
||||
} |
||||
}; |
||||
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 (to.startsWith(from)) { |
||||
return to.slice(from.length); |
||||
} else { |
||||
return null; |
||||
} |
||||
}; |
||||
npath.fromPortablePath = fromPortablePath; |
||||
npath.toPortablePath = toPortablePath; |
||||
npath.contains = (from, to) => contains(npath, from, to); |
||||
ppath.contains = (from, to) => contains(ppath, from, to); |
||||
const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; |
||||
const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; |
||||
const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; |
||||
const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; |
||||
function fromPortablePath(p) { |
||||
if (process.platform !== `win32`) |
||||
return p; |
||||
let portablePathMatch, uncPortablePathMatch; |
||||
if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) |
||||
p = portablePathMatch[1]; |
||||
else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) |
||||
p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; |
||||
else |
||||
return p; |
||||
return p.replace(/\//g, `\\`); |
||||
} |
||||
function toPortablePath(p) { |
||||
if (process.platform !== `win32`) |
||||
return p; |
||||
p = p.replace(/\\/g, `/`); |
||||
let windowsPathMatch, uncWindowsPathMatch; |
||||
if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) |
||||
p = `/${windowsPathMatch[1]}`; |
||||
else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) |
||||
p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; |
||||
return p; |
||||
} |
||||
|
||||
const builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(`natives`))); |
||||
const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request); |
||||
function readPackageScope(checkPath) { |
||||
const rootSeparatorIndex = checkPath.indexOf(npath.sep); |
||||
let separatorIndex; |
||||
do { |
||||
separatorIndex = checkPath.lastIndexOf(npath.sep); |
||||
checkPath = checkPath.slice(0, separatorIndex); |
||||
if (checkPath.endsWith(`${npath.sep}node_modules`)) |
||||
return false; |
||||
const pjson = readPackage(checkPath + npath.sep); |
||||
if (pjson) { |
||||
return { |
||||
data: pjson, |
||||
path: checkPath |
||||
}; |
||||
} |
||||
} while (separatorIndex > rootSeparatorIndex); |
||||
return false; |
||||
} |
||||
function readPackage(requestPath) { |
||||
const jsonPath = npath.resolve(requestPath, `package.json`); |
||||
if (!fs.existsSync(jsonPath)) |
||||
return null; |
||||
return JSON.parse(fs.readFileSync(jsonPath, `utf8`)); |
||||
} |
||||
|
||||
async function tryReadFile(path2) { |
||||
try { |
||||
return await fs.promises.readFile(path2, `utf8`); |
||||
} catch (error) { |
||||
if (error.code === `ENOENT`) |
||||
return null; |
||||
throw error; |
||||
} |
||||
} |
||||
function tryParseURL(str, base) { |
||||
try { |
||||
return new URL(str, base); |
||||
} catch { |
||||
return null; |
||||
} |
||||
} |
||||
let entrypointPath = null; |
||||
function setEntrypointPath(file) { |
||||
entrypointPath = file; |
||||
} |
||||
function getFileFormat(filepath) { |
||||
var _a, _b; |
||||
const ext = path.extname(filepath); |
||||
switch (ext) { |
||||
case `.mjs`: { |
||||
return `module`; |
||||
} |
||||
case `.cjs`: { |
||||
return `commonjs`; |
||||
} |
||||
case `.wasm`: { |
||||
throw new Error(`Unknown file extension ".wasm" for ${filepath}`); |
||||
} |
||||
case `.json`: { |
||||
throw new Error(`Unknown file extension ".json" for ${filepath}`); |
||||
} |
||||
case `.js`: { |
||||
const pkg = readPackageScope(filepath); |
||||
if (!pkg) |
||||
return `commonjs`; |
||||
return (_a = pkg.data.type) != null ? _a : `commonjs`; |
||||
} |
||||
default: { |
||||
if (entrypointPath !== filepath) |
||||
return null; |
||||
const pkg = readPackageScope(filepath); |
||||
if (!pkg) |
||||
return `commonjs`; |
||||
if (pkg.data.type === `module`) |
||||
return null; |
||||
return (_b = pkg.data.type) != null ? _b : `commonjs`; |
||||
} |
||||
} |
||||
} |
||||
|
||||
async function getFormat$1(resolved, context, defaultGetFormat) { |
||||
const url = tryParseURL(resolved); |
||||
if ((url == null ? void 0 : url.protocol) !== `file:`) |
||||
return defaultGetFormat(resolved, context, defaultGetFormat); |
||||
const format = getFileFormat(fileURLToPath(url)); |
||||
if (format) { |
||||
return { |
||||
format |
||||
}; |
||||
} |
||||
return defaultGetFormat(resolved, context, defaultGetFormat); |
||||
} |
||||
|
||||
async function getSource$1(urlString, context, defaultGetSource) { |
||||
const url = tryParseURL(urlString); |
||||
if ((url == null ? void 0 : url.protocol) !== `file:`) |
||||
return defaultGetSource(urlString, context, defaultGetSource); |
||||
return { |
||||
source: await fs.promises.readFile(fileURLToPath(url), `utf8`) |
||||
}; |
||||
} |
||||
|
||||
async function load$1(urlString, context, nextLoad) { |
||||
const url = tryParseURL(urlString); |
||||
if ((url == null ? void 0 : url.protocol) !== `file:`) |
||||
return nextLoad(urlString, context, nextLoad); |
||||
const filePath = fileURLToPath(url); |
||||
const format = getFileFormat(filePath); |
||||
if (!format) |
||||
return nextLoad(urlString, context, nextLoad); |
||||
return { |
||||
format, |
||||
source: await fs.promises.readFile(filePath, `utf8`), |
||||
shortCircuit: true |
||||
}; |
||||
} |
||||
|
||||
const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; |
||||
const isRelativeRegexp = /^\.{0,2}\//; |
||||
async function resolve$1(originalSpecifier, context, nextResolve) { |
||||
var _a; |
||||
const {findPnpApi} = moduleExports; |
||||
if (!findPnpApi || isBuiltinModule(originalSpecifier)) |
||||
return nextResolve(originalSpecifier, context, nextResolve); |
||||
let specifier = originalSpecifier; |
||||
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 ? fileURLToPath(parentURL) : process.cwd(); |
||||
const pnpapi = (_a = findPnpApi(issuer)) != null ? _a : url ? findPnpApi(specifier) : null; |
||||
if (!pnpapi) |
||||
return nextResolve(originalSpecifier, context, nextResolve); |
||||
const dependencyNameMatch = specifier.match(pathRegExp); |
||||
let allowLegacyResolve = false; |
||||
if (dependencyNameMatch) { |
||||
const [, dependencyName, subPath] = dependencyNameMatch; |
||||
if (subPath === ``) { |
||||
const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer); |
||||
if (resolved) { |
||||
const content = await tryReadFile(resolved); |
||||
if (content) { |
||||
const pkg = JSON.parse(content); |
||||
allowLegacyResolve = pkg.exports == null; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
const result = pnpapi.resolveRequest(specifier, issuer, { |
||||
conditions: new Set(conditions), |
||||
extensions: allowLegacyResolve ? void 0 : [] |
||||
}); |
||||
if (!result) |
||||
throw new Error(`Resolving '${specifier}' from '${issuer}' failed`); |
||||
const resultURL = pathToFileURL(result); |
||||
if (url) { |
||||
resultURL.search = url.search; |
||||
resultURL.hash = url.hash; |
||||
} |
||||
if (!parentURL) |
||||
setEntrypointPath(fileURLToPath(resultURL)); |
||||
return { |
||||
url: resultURL.href, |
||||
shortCircuit: true |
||||
}; |
||||
} |
||||
|
||||
const binding = process.binding(`fs`); |
||||
const originalfstat = binding.fstat; |
||||
const ZIP_FD = 2147483648; |
||||
binding.fstat = function(...args) { |
||||
const [fd, useBigint, req] = args; |
||||
if ((fd & ZIP_FD) !== 0 && useBigint === false && req === void 0) { |
||||
try { |
||||
const stats = fs.fstatSync(fd); |
||||
return new Float64Array([ |
||||
stats.dev, |
||||
stats.mode, |
||||
stats.nlink, |
||||
stats.uid, |
||||
stats.gid, |
||||
stats.rdev, |
||||
stats.blksize, |
||||
stats.ino, |
||||
stats.size, |
||||
stats.blocks |
||||
]); |
||||
} catch { |
||||
} |
||||
} |
||||
return originalfstat.apply(this, args); |
||||
}; |
||||
|
||||
const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); |
||||
const hasConsolidatedHooks = major > 16 || major === 16 && minor >= 12; |
||||
const resolve = resolve$1; |
||||
const getFormat = hasConsolidatedHooks ? void 0 : getFormat$1; |
||||
const getSource = hasConsolidatedHooks ? void 0 : getSource$1; |
||||
const load = hasConsolidatedHooks ? load$1 : void 0; |
||||
|
||||
export { getFormat, getSource, load, resolve }; |
@ -1,2 +1,2 @@
|
||||
nodeLinker: node-modules |
||||
nodeLinker: pnp |
||||
yarnPath: .yarn/releases/yarn-3.2.2.cjs |
||||
|
Loading…
Reference in new issue