pyfig 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/index.js +14 -6
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/sync-resolver.js +14 -6
- package/dist/cjs/sync-resolver.js.map +3 -3
- package/dist/provision.d.ts +2 -0
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +15 -5
- package/dist/provision.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -178,7 +178,7 @@ bunx --bun pyfig --json
|
|
|
178
178
|
|
|
179
179
|
## Concurrency and installation safety
|
|
180
180
|
|
|
181
|
-
Pyfig resolves a compatible uv release from Astral's GitHub releases, downloads that exact archive over HTTPS, verifies its adjacent SHA-256 checksum, validates the staged executable version, and atomically publishes it in Pyfig's cache. A compatible cached executable is probed locally without a network request. Release metadata is cached on disk for 24 hours; stale metadata is refreshed under a Loqkit lock and remains available as a fallback when GitHub's API is temporarily unavailable. Pyfig does not execute installer scripts or modify shell profiles.
|
|
181
|
+
Pyfig resolves a compatible uv release from Astral's GitHub releases, downloads that exact archive over HTTPS, verifies its adjacent SHA-256 checksum, validates the staged executable version, and atomically publishes it in Pyfig's cache. A compatible cached executable is probed locally without a network request. Release metadata is cached on disk for 24 hours; stale metadata is refreshed under a Loqkit lock and remains available as a fallback when GitHub's API is temporarily unavailable. Set `GITHUB_TOKEN` or `GH_TOKEN` to authenticate release discovery on CI and other rate-limited hosts. Pyfig does not execute installer scripts or modify shell profiles.
|
|
182
182
|
|
|
183
183
|
Provisioning mutations use Loqkit's layered in-memory, worker, native-file-lock-when-available, and portable-file coordination with capability checks before and after acquisition. Compatible managed uv executables are cached by resolved version; Loqkit coordinates both the `requiresUv` policy lookup and exact release publication. uv supplies its own target-environment lock for installs. Base client preparation is memoized; dependency preparation is intentionally rerun so uv can cheaply verify current inputs through its shared cache.
|
|
184
184
|
|
package/dist/cjs/index.js
CHANGED
|
@@ -969,11 +969,7 @@ async function fetchUvReleaseCatalog(options) {
|
|
|
969
969
|
let exhausted = false;
|
|
970
970
|
try {
|
|
971
971
|
for (let page = 1;page <= UV_RELEASE_MAX_PAGES; page += 1) {
|
|
972
|
-
const text = await downloadText(`https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`, options.downloadTimeoutMs, dispatcher,
|
|
973
|
-
Accept: "application/vnd.github+json",
|
|
974
|
-
"User-Agent": "pyfig",
|
|
975
|
-
"X-GitHub-Api-Version": "2022-11-28"
|
|
976
|
-
});
|
|
972
|
+
const text = await downloadText(`https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`, options.downloadTimeoutMs, dispatcher, githubApiHeaders(options.env));
|
|
977
973
|
const payload = JSON.parse(text);
|
|
978
974
|
if (!Array.isArray(payload)) {
|
|
979
975
|
throw new Error("GitHub returned invalid uv release metadata.");
|
|
@@ -1006,6 +1002,18 @@ async function fetchUvReleaseCatalog(options) {
|
|
|
1006
1002
|
}
|
|
1007
1003
|
return { fetchedAt: Date.now(), releases: [...releases.values()] };
|
|
1008
1004
|
}
|
|
1005
|
+
function githubApiHeaders(env) {
|
|
1006
|
+
const token = [env["GITHUB_TOKEN"], env["GH_TOKEN"]].find((value) => typeof value === "string" && value.trim().length > 0);
|
|
1007
|
+
if (token && /[\r\n]/u.test(token)) {
|
|
1008
|
+
throw new TypeError("GitHub API token must not contain line breaks.");
|
|
1009
|
+
}
|
|
1010
|
+
return {
|
|
1011
|
+
Accept: "application/vnd.github+json",
|
|
1012
|
+
"User-Agent": "pyfig",
|
|
1013
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
1014
|
+
...token ? { Authorization: `Bearer ${token}` } : {}
|
|
1015
|
+
};
|
|
1016
|
+
}
|
|
1009
1017
|
async function readFreshUvReleaseCatalog(file) {
|
|
1010
1018
|
const catalog = await readUvReleaseCatalog(file);
|
|
1011
1019
|
if (!catalog)
|
|
@@ -1296,4 +1304,4 @@ function createPyfig(options = {}) {
|
|
|
1296
1304
|
};
|
|
1297
1305
|
}
|
|
1298
1306
|
|
|
1299
|
-
//# debugId=
|
|
1307
|
+
//# debugId=0CA78C4B6148614B64756E2164756E21
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"import {\n filter,\n maxSatisfying,\n valid as validPep440Version,\n validRange as validPep440Specifier,\n} from '@renovatebot/pep440';\n\n/** Validate a PEP 440 version specifier used by a runtime policy. */\nexport function isValidPep440Specifier(specifier: string): boolean {\n return validPep440Specifier(specifier);\n}\n\n/** Normalize a PEP 440 version, or reject invalid input. */\nexport function normalizePep440Version(version: string): string | null {\n return validPep440Version(version);\n}\n\n/**\n * Match a version using PEP 440 specifier-set behavior, including its\n * pre-release fallback when the candidate set has no matching final release.\n */\nexport function pep440VersionSatisfies(version: string, specifier: string): boolean {\n return filter([version], specifier).length === 1;\n}\n\n/** Select the greatest PEP 440 version allowed by a specifier. */\nexport function maxPep440Version(\n versions: readonly string[],\n specifier: string,\n): string | null {\n return maxSatisfying([...versions], specifier);\n}\n",
|
|
7
7
|
"import fs from 'node:fs';\nimport path from 'node:path';\n\n/** Resolve the nearest Git worktree without interpreting project manifests. */\nexport function resolveProjectRoot(startDirectory: string = process.cwd()): string {\n const start = path.resolve(startDirectory);\n for (const directory of ancestors(start)) {\n if (fs.existsSync(path.join(directory, '.git'))) return directory;\n }\n return start;\n}\n\nfunction* ancestors(startDirectory: string): Generator<string> {\n let directory = startDirectory;\n while (true) {\n yield directory;\n const parent = path.dirname(directory);\n if (parent === directory) return;\n directory = parent;\n }\n}\n",
|
|
8
8
|
"import type {\n ChildProcess,\n SpawnOptions,\n SpawnSyncOptions,\n spawnSync,\n} from 'node:child_process';\nimport { memoize } from 'loqkit';\nimport type { PyfigOptions } from './config.js';\nimport type { PythonInfo, UvInfo } from './probes.js';\nimport {\n ensureEnvironment,\n ensureUv,\n type PythonEnvironment,\n type RuntimeDependencyOptions,\n} from './provision.js';\nimport { uvSpawn, uvSpawnSync } from './runners.js';\n\n/** A scoped uv-first API with one consistent environment policy. */\nexport interface PyfigClient {\n prepare(\n dependencies?: readonly string[],\n options?: RuntimeDependencyOptions,\n ): Promise<PythonEnvironment>;\n pythonInfo(): Promise<PythonInfo>;\n uvInfo(): Promise<UvInfo>;\n uv(args?: readonly string[], options?: SpawnOptions): Promise<ChildProcess>;\n uvSync(\n args?: readonly string[],\n options?: SpawnSyncOptions,\n ): ReturnType<typeof spawnSync>;\n}\n\n/** Bind configuration once so consumers cannot accidentally diverge between calls. */\nexport function createPyfig(options: PyfigOptions = {}): PyfigClient {\n const scopedOptions: PyfigOptions = {\n ...options,\n env: options.env ? { ...options.env } : undefined,\n };\n const baseEnvironment = memoize(() => ensureEnvironment(scopedOptions));\n const uvInfo = memoize(() => ensureUv(scopedOptions));\n return {\n prepare: (dependencies = [], dependencyOptions = {}) => dependencies.length === 0 &&\n !dependencyOptions.allExtras &&\n (dependencyOptions.extras?.length ?? 0) === 0 &&\n (dependencyOptions.groups?.length ?? 0) === 0\n ? baseEnvironment()\n : ensureEnvironment(scopedOptions, dependencies, dependencyOptions),\n pythonInfo: async () => (await baseEnvironment()).python,\n uvInfo,\n uv: (args = [], spawnOptions = {}) => uvSpawn(args, spawnOptions, scopedOptions),\n uvSync: (args = [], spawnOptions = {}) => uvSpawnSync(args, spawnOptions, scopedOptions),\n };\n}\n",
|
|
9
|
-
"import { createHash, randomUUID } from 'node:crypto';\nimport { createReadStream, createWriteStream } from 'node:fs';\nimport {\n chmod,\n copyFile,\n mkdir,\n mkdtemp,\n readFile,\n readdir,\n rename,\n rm,\n writeFile,\n} from 'node:fs/promises';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { unzipSync } from 'fflate';\nimport * as tar from 'tar';\nimport { EnvHttpProxyAgent, fetch } from 'undici';\nimport {\n resolveOptions,\n uvEnvironment,\n type PyfigOptions,\n type ResolvedPyfigOptions,\n} from './config.js';\nimport { withProvisioningLock } from './provision-lock.js';\nimport { sanitizeUvEnvironment, uvCommandEnvironment } from './package-target.js';\nimport {\n maxPep440Version,\n normalizePep440Version,\n} from './pep440.js';\nimport {\n findUv,\n probePython,\n probeUv,\n pythonSatisfiesPolicy,\n type PythonInfo,\n type UvInfo,\n} from './probes.js';\nimport { runAsync } from './process.js';\nimport {\n canonicalPath,\n externalVirtualEnvironmentDirectories,\n pathsEqual,\n virtualEnvironmentDirectory,\n virtualEnvironmentPythonExecutable,\n} from './virtual-environment.js';\n\nexport interface PythonEnvironment {\n python: PythonInfo;\n uv: UvInfo;\n /** True when the environment lives in node_modules/.pyfig/venv. */\n managed: boolean;\n}\n\nexport interface RuntimeDependencyOptions {\n /** Optional-dependency extras read from an existing pyproject.toml. */\n extras?: readonly string[];\n /** Include every optional-dependency extra from an existing pyproject.toml. */\n allExtras?: boolean;\n /** Dependency groups read from an existing pyproject.toml. */\n groups?: readonly string[];\n}\n\n/** Ensure a compatible uv executable, preferring an existing installation. */\nexport async function ensureUv(options: PyfigOptions = {}): Promise<UvInfo> {\n return ensureUvResolved(resolveOptions(options));\n}\n\n/**\n * Select a compatible environment and optionally add runtime dependencies.\n * Project dependency files are inputs only and are never changed.\n */\nexport async function ensureEnvironment(\n options: PyfigOptions = {},\n dependencies: readonly string[] = [],\n dependencyOptions: RuntimeDependencyOptions = {},\n): Promise<PythonEnvironment> {\n const resolved = resolveOptions(options);\n const normalized = normalizeDependencies(dependencies);\n const selections = normalizeDependencyOptions(dependencyOptions);\n const uv = await ensureUvResolved(resolved);\n const python = await ensureVirtualEnvironmentResolved(resolved, uv);\n if (normalized.length > 0 || selections.extras.length > 0 ||\n selections.groups.length > 0 || selections.allExtras) {\n await installRuntimeDependencies(uv, python, normalized, selections, resolved);\n }\n return {\n python,\n uv,\n managed: isManagedEnvironment(python, resolved),\n };\n}\n\nasync function ensureVirtualEnvironmentResolved(\n options: ResolvedPyfigOptions,\n uv: UvInfo,\n): Promise<PythonInfo> {\n const existing = await findReusableEnvironment(options);\n if (existing) return existing;\n\n const directory = virtualEnvironmentDirectory(options.projectRoot);\n const check = async (): Promise<PythonInfo | null> => {\n const candidate = await inspectVirtualEnvironment(directory, options);\n return candidate && pythonSatisfiesPolicy(candidate, options) &&\n await virtualEnvironmentMatchesConfiguredPython(candidate, options)\n ? candidate\n : null;\n };\n if (!options.createVirtualEnvironment) {\n throw new Error(\n `No compatible environment is available and creation is disabled. ` +\n `Pyfig would create ${directory}.`,\n );\n }\n\n const basePython = await ensureBasePythonResolved(uv, options);\n return withProvisioningLock({\n key: `venv:${canonicalPath(directory)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check,\n mutate: async () => {\n // Only Pyfig's private path is replaceable. Active and repository-root\n // environments are preserved when incompatible.\n await rm(directory, { recursive: true, force: true });\n await mkdir(path.dirname(directory), { recursive: true });\n await runAsync(\n uv.executable,\n [\n 'venv',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n '--python',\n basePython.executable,\n directory,\n ],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await check();\n if (!installed) {\n throw new Error(\n `uv created ${directory}, but its Python does not satisfy the requested capabilities.`,\n );\n }\n return installed;\n },\n });\n}\n\nasync function findReusableEnvironment(\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (configured.virtualEnvironment) return configured;\n }\n\n for (const directory of [\n ...externalVirtualEnvironmentDirectories(options.projectRoot, options.env),\n virtualEnvironmentDirectory(options.projectRoot),\n ]) {\n const info = await inspectVirtualEnvironment(directory, options);\n if (info && pythonSatisfiesPolicy(info, options) &&\n await virtualEnvironmentMatchesConfiguredPython(info, options)) {\n return info;\n }\n }\n return null;\n}\n\nasync function ensureBasePythonResolved(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (!configured.virtualEnvironment) return configured;\n const base = await probePython({ executable: configured.baseExecutable, args: [] }, options);\n if (base && pythonSatisfiesPolicy(base, options)) return base;\n throw incompatibleConfiguredPython(options);\n }\n\n // Corporate and offline hosts get a strict system-only pass before Pyfig\n // considers any already-managed interpreter or network installation.\n const system = await findPythonWithUv(uv, options, 'system');\n if (system) return system;\n const cachedManaged = await findPythonWithUv(uv, options, 'managed');\n if (cachedManaged) return cachedManaged;\n if (!options.installPython) {\n throw new Error(missingPythonMessage(options, 'managed Python installation is disabled'));\n }\n\n return withProvisioningLock({\n key: `python:${canonicalPath(path.join(options.cacheDir, 'python'))}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findPythonWithUv(uv, options, 'managed'),\n mutate: async () => {\n await runAsync(\n uv.executable,\n ['python', 'install', '--no-config', options.managedPython],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await findPythonWithUv(uv, options, 'managed');\n if (!installed) {\n throw new Error(missingPythonMessage(\n options,\n `uv installed ${options.managedPython}, but it remains incompatible`,\n ));\n }\n return installed;\n },\n });\n}\n\nasync function findPythonWithUv(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n source: 'system' | 'managed',\n): Promise<PythonInfo | null> {\n for (const request of ['', options.managedPython]) {\n const args = [\n 'python',\n 'find',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n source === 'system' ? '--system' : '--managed-python',\n ];\n if (request) args.push(request);\n try {\n const { stdout } = await runAsync(\n uv.executable,\n args,\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const info = await probePython({ executable: stdout.trim(), args: [] }, options);\n if (info && pythonSatisfiesPolicy(info, options)) return info;\n } catch {\n // Continue through the generic and configured version requests.\n }\n }\n\n // `uv python find` returns one match. That match can lack development\n // headers even when another installed interpreter satisfies every requested\n // capability, so inspect uv's complete installed-only inventory before\n // moving from system Python to managed Python or from cache to download.\n try {\n const { stdout } = await runAsync(\n uv.executable,\n [\n 'python',\n 'list',\n '--no-config',\n '--no-python-downloads',\n '--only-installed',\n '--output-format',\n 'json',\n source === 'system' ? '--no-managed-python' : '--managed-python',\n ],\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const candidates = installedPythonPaths(stdout);\n for (const executable of candidates) {\n const info = await probePython({ executable, args: [] }, options);\n if (info && !info.virtualEnvironment && pythonSatisfiesPolicy(info, options)) {\n return info;\n }\n }\n } catch {\n // Older compatible uv releases can still use the find-based fallback.\n }\n return null;\n}\n\nfunction installedPythonPaths(output: string): string[] {\n const parsed = JSON.parse(output) as unknown;\n if (!Array.isArray(parsed)) return [];\n const paths = parsed.flatMap((entry) => {\n if (!entry || typeof entry !== 'object' || !('path' in entry)) return [];\n const candidate = (entry as { path?: unknown }).path;\n return typeof candidate === 'string' && candidate ? [candidate] : [];\n });\n return [...new Map(paths.map((candidate) => [canonicalPath(candidate), candidate])).values()];\n}\n\nasync function inspectVirtualEnvironment(\n directory: string,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n const executable = virtualEnvironmentPythonExecutable(directory);\n const info = await probePython({ executable, args: [] }, options);\n return info?.virtualEnvironment && pathsEqual(info.virtualEnvironment, directory) ? info : null;\n}\n\nasync function installRuntimeDependencies(\n uv: UvInfo,\n python: PythonInfo,\n dependencies: readonly string[],\n dependencyOptions: Required<RuntimeDependencyOptions>,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n if (!python.virtualEnvironment) {\n throw new Error('Runtime dependency installation requires a virtual environment.');\n }\n await withProvisioningLock({\n key: `dependencies:${canonicalPath(python.virtualEnvironment)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: async () => null,\n mutate: async () => {\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-dependencies-'));\n try {\n const additions = path.join(temporary, 'runtime-dependencies.txt');\n const resolved = path.join(temporary, 'resolved-dependencies.txt');\n const pyproject = path.join(options.projectRoot, 'pyproject.toml');\n const hasPyproject = fs.existsSync(pyproject);\n if (!hasPyproject && (\n dependencyOptions.extras.length > 0 ||\n dependencyOptions.groups.length > 0 ||\n dependencyOptions.allExtras\n )) {\n throw new Error('Runtime extras and groups require an existing pyproject.toml.');\n }\n const sources = hasPyproject ? [pyproject] : [];\n if (dependencies.length > 0) {\n await writeFile(additions, `${dependencies.join('\\n')}\\n`, 'utf8');\n sources.push(additions);\n }\n const selectionArgs = [\n ...dependencyOptions.extras.flatMap((extra) => ['--extra', extra]),\n ...dependencyOptions.groups.flatMap((group) => ['--group', group]),\n ...(dependencyOptions.allExtras ? ['--all-extras'] : []),\n ];\n await runAsync(\n uv.executable,\n [\n 'pip', 'compile', '--no-config', '--python', python.executable, ...selectionArgs,\n ...sources, '--output-file', resolved,\n ],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n // install preserves unrelated packages; sync would remove anything not\n // represented in this temporary resolution.\n await runAsync(\n uv.executable,\n ['pip', 'install', '--no-config', '--python', python.executable, '-r', resolved],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n } finally {\n await rm(temporary, { recursive: true, force: true });\n }\n return true;\n },\n });\n}\n\nasync function ensureUvResolved(options: ResolvedPyfigOptions): Promise<UvInfo> {\n const existing = await findAvailableUv(options);\n if (existing) return existing;\n if (!options.installUv) {\n throw new Error(\n `Compatible uv is unavailable (requires-uv ${options.requiresUv}), and uv installation is disabled.`,\n );\n }\n\n const policyKey = createHash('sha256').update(options.requiresUv).digest('hex');\n return withProvisioningLock({\n key: `uv-policy:${canonicalPath(uvInstallRoot(options))}:${policyKey}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n const release = await resolveUvRelease(options);\n const installDir = uvInstallDirectory(options, release.version);\n const executable = uvExecutable(options, release.version);\n return withProvisioningLock({\n key: `uv-release:${canonicalPath(installDir)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n await installUv(installDir, release, options);\n const result = probeUv(executable, options);\n if (!result || result.version !== release.version) {\n throw new Error(\n `Expected managed uv ${release.version}, but the installed executable did not match.`,\n );\n }\n return result;\n },\n });\n },\n });\n}\n\nasync function findAvailableUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const external = await findUv(options);\n if (external) return external;\n return findManagedUv(options);\n}\n\nasync function findManagedUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const entries = await readdir(uvInstallRoot(options), { withFileTypes: true }).catch(() => []);\n let versions = entries\n .filter(entry => entry.isDirectory() && normalizePep440Version(entry.name) === entry.name)\n .map(entry => entry.name);\n while (versions.length > 0) {\n const selected = maxPep440Version(versions, options.requiresUv);\n if (!selected) return null;\n const candidate = probeUv(uvExecutable(options, selected), options);\n if (candidate?.version === selected) return candidate;\n versions = versions.filter(version => version !== selected);\n }\n return null;\n}\n\nfunction normalizeDependencies(dependencies: readonly string[]): string[] {\n const normalized = dependencies.map((dependency) => dependency.trim());\n for (const dependency of normalized) {\n if (!dependency || /[\\0\\r\\n]/u.test(dependency)) {\n throw new TypeError(`Invalid runtime dependency: ${JSON.stringify(dependency)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction normalizeDependencyOptions(\n options: RuntimeDependencyOptions,\n): Required<RuntimeDependencyOptions> {\n const extras = normalizeNames('extra', options.extras ?? []);\n const groups = normalizeNames('dependency group', options.groups ?? []);\n if (options.allExtras && extras.length > 0) {\n throw new TypeError('allExtras cannot be combined with explicit extras.');\n }\n return { extras, groups, allExtras: options.allExtras ?? false };\n}\n\nfunction normalizeNames(kind: string, names: readonly string[]): string[] {\n const normalized = names.map((name) => name.trim());\n for (const name of normalized) {\n if (!name || !/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(name)) {\n throw new TypeError(`Invalid ${kind}: ${JSON.stringify(name)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction isManagedEnvironment(\n python: PythonInfo,\n options: ResolvedPyfigOptions,\n): boolean {\n return Boolean(python.virtualEnvironment) && pathsEqual(\n python.virtualEnvironment as string,\n virtualEnvironmentDirectory(options.projectRoot),\n );\n}\n\nfunction isolatedUvEnvironment(options: ResolvedPyfigOptions): NodeJS.ProcessEnv {\n return sanitizeUvEnvironment(uvEnvironment(options));\n}\n\n/** Explicit --system/--managed-python selectors cannot be combined with uv's preference setting. */\nfunction explicitPythonSourceEnvironment(\n options: ResolvedPyfigOptions,\n): NodeJS.ProcessEnv {\n const env = isolatedUvEnvironment(options);\n delete env['UV_PYTHON_PREFERENCE'];\n return env;\n}\n\nfunction targetUvEnvironment(\n options: ResolvedPyfigOptions,\n python: PythonInfo,\n): NodeJS.ProcessEnv {\n return uvCommandEnvironment(uvEnvironment(options), python);\n}\n\nfunction incompatibleConfiguredPython(options: ResolvedPyfigOptions): Error {\n return new Error(\n `Configured Python ${options.python} is unavailable or does not satisfy ` +\n `requires-python ${options.requiresPython}` +\n `${options.requireEmbedding ? ' with CPython embedding files' : ''}.`,\n );\n}\n\nfunction missingPythonMessage(options: ResolvedPyfigOptions, reason: string): string {\n const embedding = options.requireEmbedding\n ? ' with compatible CPython headers, library, architecture, and GIL ABI'\n : '';\n return `No Python satisfies requires-python ${options.requiresPython}${embedding}; ${reason}.`;\n}\n\nasync function virtualEnvironmentMatchesConfiguredPython(\n virtualEnvironment: PythonInfo,\n options: ResolvedPyfigOptions,\n): Promise<boolean> {\n if (!options.python) return true;\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) return false;\n if (configured.virtualEnvironment && pathsEqual(configured.executable, virtualEnvironment.executable)) {\n return true;\n }\n const configuredBase = configured.virtualEnvironment\n ? configured.baseExecutable\n : configured.executable;\n return pathsEqual(configuredBase, virtualEnvironment.baseExecutable);\n}\n\ninterface UvRelease {\n assets: string[];\n tag: string;\n version: string;\n}\n\ninterface UvReleaseCatalog {\n fetchedAt: number;\n releases: UvRelease[];\n}\n\nconst UV_RELEASE_PAGE_SIZE = 100;\nconst UV_RELEASE_MAX_PAGES = 20;\nconst UV_RELEASE_METADATA_TTL_MS = 24 * 60 * 60_000;\n\nasync function resolveUvRelease(options: ResolvedPyfigOptions): Promise<UvRelease> {\n const catalog = await ensureUvReleaseCatalog(options);\n const asset = uvAsset();\n const releases = catalog.releases.filter(release =>\n release.assets.includes(asset) && release.assets.includes(`${asset}.sha256`)\n );\n const version = maxPep440Version(\n releases.map(release => release.version),\n options.requiresUv,\n );\n const release = releases.find(candidate => candidate.version === version);\n if (!release) {\n throw new Error(`No published uv release satisfies requires-uv ${options.requiresUv}.`);\n }\n return release;\n}\n\nasync function ensureUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const file = uvReleaseMetadataFile(options);\n const stale = await readUvReleaseCatalog(file);\n try {\n return await withProvisioningLock({\n key: `uv-metadata:${canonicalPath(file)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => readFreshUvReleaseCatalog(file),\n mutate: async () => {\n const catalog = await fetchUvReleaseCatalog(options);\n await writeUvReleaseCatalog(file, catalog);\n return catalog;\n },\n });\n } catch (error) {\n const fallback = await readUvReleaseCatalog(file) ?? stale;\n if (fallback) return fallback;\n throw error;\n }\n}\n\nasync function fetchUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const dispatcher = proxyDispatcher(options.env);\n const releases = new Map<string, UvRelease>();\n let exhausted = false;\n try {\n for (let page = 1; page <= UV_RELEASE_MAX_PAGES; page += 1) {\n const text = await downloadText(\n `https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`,\n options.downloadTimeoutMs,\n dispatcher,\n {\n Accept: 'application/vnd.github+json',\n 'User-Agent': 'pyfig',\n 'X-GitHub-Api-Version': '2022-11-28',\n },\n );\n const payload = JSON.parse(text) as unknown;\n if (!Array.isArray(payload)) {\n throw new Error('GitHub returned invalid uv release metadata.');\n }\n for (const candidate of payload) {\n if (!candidate || typeof candidate !== 'object') continue;\n const release = candidate as { assets?: unknown; draft?: unknown; tag_name?: unknown };\n if (release.draft === true || typeof release.tag_name !== 'string') continue;\n const assetNames = releaseAssetNames(release.assets);\n const version = normalizePep440Version(release.tag_name);\n if (version) {\n releases.set(version, { assets: assetNames, tag: release.tag_name, version });\n }\n }\n if (payload.length < UV_RELEASE_PAGE_SIZE) {\n exhausted = true;\n break;\n }\n }\n } finally {\n await dispatcher?.close();\n }\n\n if (!exhausted) {\n throw new Error(`uv release catalog exceeded ${UV_RELEASE_MAX_PAGES} pages.`);\n }\n if (releases.size === 0) {\n throw new Error('GitHub returned no usable uv releases.');\n }\n return { fetchedAt: Date.now(), releases: [...releases.values()] };\n}\n\nasync function readFreshUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n const catalog = await readUvReleaseCatalog(file);\n if (!catalog) return null;\n const age = Date.now() - catalog.fetchedAt;\n return age >= 0 && age < UV_RELEASE_METADATA_TTL_MS ? catalog : null;\n}\n\nasync function readUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n try {\n return parseUvReleaseCatalog(JSON.parse(await readFile(file, 'utf8')) as unknown);\n } catch {\n return null;\n }\n}\n\nfunction parseUvReleaseCatalog(value: unknown): UvReleaseCatalog | null {\n if (!value || typeof value !== 'object') return null;\n const catalog = value as { fetchedAt?: unknown; releases?: unknown };\n if (!Number.isSafeInteger(catalog.fetchedAt) || (catalog.fetchedAt as number) < 0 ||\n !Array.isArray(catalog.releases)) {\n return null;\n }\n const releases: UvRelease[] = [];\n for (const value of catalog.releases) {\n if (!value || typeof value !== 'object') return null;\n const release = value as { assets?: unknown; tag?: unknown; version?: unknown };\n if (!Array.isArray(release.assets) ||\n !release.assets.every(asset => typeof asset === 'string') ||\n typeof release.tag !== 'string' ||\n !/^[A-Za-z0-9][A-Za-z0-9._+-]*$/u.test(release.tag) ||\n typeof release.version !== 'string' ||\n normalizePep440Version(release.version) !== release.version) {\n return null;\n }\n releases.push({\n assets: release.assets as string[],\n tag: release.tag,\n version: release.version,\n });\n }\n return { fetchedAt: catalog.fetchedAt as number, releases };\n}\n\nasync function writeUvReleaseCatalog(file: string, catalog: UvReleaseCatalog): Promise<void> {\n await mkdir(path.dirname(file), { recursive: true });\n const staged = path.join(\n path.dirname(file),\n `.${path.basename(file)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await writeFile(staged, `${JSON.stringify(catalog)}\\n`, { encoding: 'utf8', flag: 'wx' });\n if (process.platform === 'win32') await rm(file, { force: true });\n await rename(staged, file);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvReleaseMetadataFile(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'metadata', 'uv-releases.json');\n}\n\nfunction releaseAssetNames(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.flatMap(entry => {\n if (!entry || typeof entry !== 'object') return [];\n const name = (entry as { name?: unknown }).name;\n return typeof name === 'string' ? [name] : [];\n });\n}\n\nfunction uvInstallRoot(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'tools', 'uv');\n}\n\nfunction uvInstallDirectory(options: ResolvedPyfigOptions, version: string): string {\n return path.join(uvInstallRoot(options), version);\n}\n\nfunction uvExecutable(options: ResolvedPyfigOptions, version: string): string {\n return path.join(\n uvInstallDirectory(options, version),\n process.platform === 'win32' ? 'uv.exe' : 'uv',\n );\n}\n\nasync function installUv(\n installDir: string,\n release: UvRelease,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n const asset = uvAsset();\n const baseUrl = `https://github.com/astral-sh/uv/releases/download/${release.tag}`;\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-uv-'));\n const dispatcher = proxyDispatcher(options.env);\n try {\n const archive = path.join(temporary, asset);\n await download(`${baseUrl}/${asset}`, archive, options.downloadTimeoutMs, dispatcher);\n const expected = (await downloadText(\n `${baseUrl}/${asset}.sha256`,\n options.downloadTimeoutMs,\n dispatcher,\n )).trim().split(/\\s+/u)[0];\n const actual = await sha256File(archive);\n if (!expected || expected.toLowerCase() !== actual.toLowerCase()) {\n throw new Error(`uv archive checksum mismatch for ${asset}`);\n }\n\n const extracted = path.join(temporary, 'extracted');\n await mkdir(extracted, { recursive: true });\n const source = await extractUvExecutable(archive, asset, extracted);\n if (!source) throw new Error(`uv archive did not contain the expected executable: ${asset}`);\n await publishUvAtomically(source, installDir, release.version, options);\n } finally {\n await dispatcher?.close();\n await rm(temporary, { recursive: true, force: true });\n }\n}\n\nasync function extractUvExecutable(\n archive: string,\n asset: string,\n destination: string,\n): Promise<string | null> {\n const executableName = process.platform === 'win32' ? 'uv.exe' : 'uv';\n if (!asset.endsWith('.zip')) {\n await tar.x({ file: archive, cwd: destination, strict: true });\n return findFile(destination, executableName);\n }\n\n // ZIP entry paths are never written to disk. Extract only uv's bytes and\n // publish them at a path controlled by Pyfig, which prevents Zip Slip and\n // symlink entries from redirecting writes outside the temporary directory.\n const entries = unzipSync(await readFile(archive), {\n filter: ({ name }) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName,\n });\n const matches = Object.entries(entries)\n .filter(([name]) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName);\n if (matches.length !== 1 || !matches[0]) return null;\n const source = path.join(destination, executableName);\n await writeFile(source, matches[0][1], { flag: 'wx' });\n return source;\n}\n\nasync function publishUvAtomically(\n source: string,\n installDir: string,\n version: string,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n await mkdir(installDir, { recursive: true });\n const executable = uvExecutable(options, version);\n const staged = path.join(\n installDir,\n `.${path.basename(executable)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await copyFile(source, staged);\n if (process.platform !== 'win32') await chmod(staged, 0o755);\n const stagedUv = probeUv(staged, options);\n if (!stagedUv || stagedUv.version !== version) {\n throw new Error(`Downloaded uv executable is not version ${version}.`);\n }\n if (process.platform === 'win32') await rm(executable, { force: true });\n await rename(staged, executable);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvAsset(): string {\n const architecture = process.arch === 'x64'\n ? 'x86_64'\n : process.arch === 'arm64'\n ? 'aarch64'\n : null;\n if (!architecture) throw new Error(`uv bootstrap does not support architecture ${process.arch}.`);\n if (process.platform === 'win32') return `uv-${architecture}-pc-windows-msvc.zip`;\n if (process.platform === 'darwin') return `uv-${architecture}-apple-darwin.tar.gz`;\n if (process.platform === 'linux') return `uv-${architecture}-unknown-linux-musl.tar.gz`;\n throw new Error(`uv bootstrap does not support platform ${process.platform}.`);\n}\n\nasync function download(\n url: string,\n destination: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n): Promise<void> {\n const response = await fetch(url, {\n dispatcher,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok || !response.body) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n await pipeline(\n Readable.fromWeb(response.body),\n createWriteStream(destination, { flags: 'wx' }),\n );\n}\n\nasync function downloadText(\n url: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n headers?: Record<string, string>,\n): Promise<string> {\n const response = await fetch(url, {\n dispatcher,\n headers,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n return response.text();\n}\n\nfunction proxyDispatcher(env: NodeJS.ProcessEnv): EnvHttpProxyAgent | undefined {\n const httpProxy = environmentValue(env, 'http_proxy', 'HTTP_PROXY');\n const httpsProxy = environmentValue(env, 'https_proxy', 'HTTPS_PROXY');\n if (!httpProxy && !httpsProxy) return undefined;\n return new EnvHttpProxyAgent({\n httpProxy,\n httpsProxy,\n noProxy: environmentValue(env, 'no_proxy', 'NO_PROXY'),\n });\n}\n\nfunction environmentValue(\n env: NodeJS.ProcessEnv,\n lowercase: string,\n uppercase: string,\n): string | undefined {\n return env[lowercase] ?? env[uppercase];\n}\n\nasync function sha256File(file: string): Promise<string> {\n const hash = createHash('sha256');\n for await (const chunk of createReadStream(file)) hash.update(chunk);\n return hash.digest('hex');\n}\n\nasync function findFile(directory: string, name: string): Promise<string | null> {\n for (const entry of await readdir(directory, { withFileTypes: true })) {\n const target = path.join(directory, entry.name);\n if (entry.isFile() && entry.name === name) return target;\n if (entry.isDirectory()) {\n const nested = await findFile(target, name);\n if (nested) return nested;\n }\n }\n return null;\n}\n",
|
|
9
|
+
"import { createHash, randomUUID } from 'node:crypto';\nimport { createReadStream, createWriteStream } from 'node:fs';\nimport {\n chmod,\n copyFile,\n mkdir,\n mkdtemp,\n readFile,\n readdir,\n rename,\n rm,\n writeFile,\n} from 'node:fs/promises';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { unzipSync } from 'fflate';\nimport * as tar from 'tar';\nimport { EnvHttpProxyAgent, fetch } from 'undici';\nimport {\n resolveOptions,\n uvEnvironment,\n type PyfigOptions,\n type ResolvedPyfigOptions,\n} from './config.js';\nimport { withProvisioningLock } from './provision-lock.js';\nimport { sanitizeUvEnvironment, uvCommandEnvironment } from './package-target.js';\nimport {\n maxPep440Version,\n normalizePep440Version,\n} from './pep440.js';\nimport {\n findUv,\n probePython,\n probeUv,\n pythonSatisfiesPolicy,\n type PythonInfo,\n type UvInfo,\n} from './probes.js';\nimport { runAsync } from './process.js';\nimport {\n canonicalPath,\n externalVirtualEnvironmentDirectories,\n pathsEqual,\n virtualEnvironmentDirectory,\n virtualEnvironmentPythonExecutable,\n} from './virtual-environment.js';\n\nexport interface PythonEnvironment {\n python: PythonInfo;\n uv: UvInfo;\n /** True when the environment lives in node_modules/.pyfig/venv. */\n managed: boolean;\n}\n\nexport interface RuntimeDependencyOptions {\n /** Optional-dependency extras read from an existing pyproject.toml. */\n extras?: readonly string[];\n /** Include every optional-dependency extra from an existing pyproject.toml. */\n allExtras?: boolean;\n /** Dependency groups read from an existing pyproject.toml. */\n groups?: readonly string[];\n}\n\n/** Ensure a compatible uv executable, preferring an existing installation. */\nexport async function ensureUv(options: PyfigOptions = {}): Promise<UvInfo> {\n return ensureUvResolved(resolveOptions(options));\n}\n\n/**\n * Select a compatible environment and optionally add runtime dependencies.\n * Project dependency files are inputs only and are never changed.\n */\nexport async function ensureEnvironment(\n options: PyfigOptions = {},\n dependencies: readonly string[] = [],\n dependencyOptions: RuntimeDependencyOptions = {},\n): Promise<PythonEnvironment> {\n const resolved = resolveOptions(options);\n const normalized = normalizeDependencies(dependencies);\n const selections = normalizeDependencyOptions(dependencyOptions);\n const uv = await ensureUvResolved(resolved);\n const python = await ensureVirtualEnvironmentResolved(resolved, uv);\n if (normalized.length > 0 || selections.extras.length > 0 ||\n selections.groups.length > 0 || selections.allExtras) {\n await installRuntimeDependencies(uv, python, normalized, selections, resolved);\n }\n return {\n python,\n uv,\n managed: isManagedEnvironment(python, resolved),\n };\n}\n\nasync function ensureVirtualEnvironmentResolved(\n options: ResolvedPyfigOptions,\n uv: UvInfo,\n): Promise<PythonInfo> {\n const existing = await findReusableEnvironment(options);\n if (existing) return existing;\n\n const directory = virtualEnvironmentDirectory(options.projectRoot);\n const check = async (): Promise<PythonInfo | null> => {\n const candidate = await inspectVirtualEnvironment(directory, options);\n return candidate && pythonSatisfiesPolicy(candidate, options) &&\n await virtualEnvironmentMatchesConfiguredPython(candidate, options)\n ? candidate\n : null;\n };\n if (!options.createVirtualEnvironment) {\n throw new Error(\n `No compatible environment is available and creation is disabled. ` +\n `Pyfig would create ${directory}.`,\n );\n }\n\n const basePython = await ensureBasePythonResolved(uv, options);\n return withProvisioningLock({\n key: `venv:${canonicalPath(directory)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check,\n mutate: async () => {\n // Only Pyfig's private path is replaceable. Active and repository-root\n // environments are preserved when incompatible.\n await rm(directory, { recursive: true, force: true });\n await mkdir(path.dirname(directory), { recursive: true });\n await runAsync(\n uv.executable,\n [\n 'venv',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n '--python',\n basePython.executable,\n directory,\n ],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await check();\n if (!installed) {\n throw new Error(\n `uv created ${directory}, but its Python does not satisfy the requested capabilities.`,\n );\n }\n return installed;\n },\n });\n}\n\nasync function findReusableEnvironment(\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (configured.virtualEnvironment) return configured;\n }\n\n for (const directory of [\n ...externalVirtualEnvironmentDirectories(options.projectRoot, options.env),\n virtualEnvironmentDirectory(options.projectRoot),\n ]) {\n const info = await inspectVirtualEnvironment(directory, options);\n if (info && pythonSatisfiesPolicy(info, options) &&\n await virtualEnvironmentMatchesConfiguredPython(info, options)) {\n return info;\n }\n }\n return null;\n}\n\nasync function ensureBasePythonResolved(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (!configured.virtualEnvironment) return configured;\n const base = await probePython({ executable: configured.baseExecutable, args: [] }, options);\n if (base && pythonSatisfiesPolicy(base, options)) return base;\n throw incompatibleConfiguredPython(options);\n }\n\n // Corporate and offline hosts get a strict system-only pass before Pyfig\n // considers any already-managed interpreter or network installation.\n const system = await findPythonWithUv(uv, options, 'system');\n if (system) return system;\n const cachedManaged = await findPythonWithUv(uv, options, 'managed');\n if (cachedManaged) return cachedManaged;\n if (!options.installPython) {\n throw new Error(missingPythonMessage(options, 'managed Python installation is disabled'));\n }\n\n return withProvisioningLock({\n key: `python:${canonicalPath(path.join(options.cacheDir, 'python'))}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findPythonWithUv(uv, options, 'managed'),\n mutate: async () => {\n await runAsync(\n uv.executable,\n ['python', 'install', '--no-config', options.managedPython],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await findPythonWithUv(uv, options, 'managed');\n if (!installed) {\n throw new Error(missingPythonMessage(\n options,\n `uv installed ${options.managedPython}, but it remains incompatible`,\n ));\n }\n return installed;\n },\n });\n}\n\nasync function findPythonWithUv(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n source: 'system' | 'managed',\n): Promise<PythonInfo | null> {\n for (const request of ['', options.managedPython]) {\n const args = [\n 'python',\n 'find',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n source === 'system' ? '--system' : '--managed-python',\n ];\n if (request) args.push(request);\n try {\n const { stdout } = await runAsync(\n uv.executable,\n args,\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const info = await probePython({ executable: stdout.trim(), args: [] }, options);\n if (info && pythonSatisfiesPolicy(info, options)) return info;\n } catch {\n // Continue through the generic and configured version requests.\n }\n }\n\n // `uv python find` returns one match. That match can lack development\n // headers even when another installed interpreter satisfies every requested\n // capability, so inspect uv's complete installed-only inventory before\n // moving from system Python to managed Python or from cache to download.\n try {\n const { stdout } = await runAsync(\n uv.executable,\n [\n 'python',\n 'list',\n '--no-config',\n '--no-python-downloads',\n '--only-installed',\n '--output-format',\n 'json',\n source === 'system' ? '--no-managed-python' : '--managed-python',\n ],\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const candidates = installedPythonPaths(stdout);\n for (const executable of candidates) {\n const info = await probePython({ executable, args: [] }, options);\n if (info && !info.virtualEnvironment && pythonSatisfiesPolicy(info, options)) {\n return info;\n }\n }\n } catch {\n // Older compatible uv releases can still use the find-based fallback.\n }\n return null;\n}\n\nfunction installedPythonPaths(output: string): string[] {\n const parsed = JSON.parse(output) as unknown;\n if (!Array.isArray(parsed)) return [];\n const paths = parsed.flatMap((entry) => {\n if (!entry || typeof entry !== 'object' || !('path' in entry)) return [];\n const candidate = (entry as { path?: unknown }).path;\n return typeof candidate === 'string' && candidate ? [candidate] : [];\n });\n return [...new Map(paths.map((candidate) => [canonicalPath(candidate), candidate])).values()];\n}\n\nasync function inspectVirtualEnvironment(\n directory: string,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n const executable = virtualEnvironmentPythonExecutable(directory);\n const info = await probePython({ executable, args: [] }, options);\n return info?.virtualEnvironment && pathsEqual(info.virtualEnvironment, directory) ? info : null;\n}\n\nasync function installRuntimeDependencies(\n uv: UvInfo,\n python: PythonInfo,\n dependencies: readonly string[],\n dependencyOptions: Required<RuntimeDependencyOptions>,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n if (!python.virtualEnvironment) {\n throw new Error('Runtime dependency installation requires a virtual environment.');\n }\n await withProvisioningLock({\n key: `dependencies:${canonicalPath(python.virtualEnvironment)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: async () => null,\n mutate: async () => {\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-dependencies-'));\n try {\n const additions = path.join(temporary, 'runtime-dependencies.txt');\n const resolved = path.join(temporary, 'resolved-dependencies.txt');\n const pyproject = path.join(options.projectRoot, 'pyproject.toml');\n const hasPyproject = fs.existsSync(pyproject);\n if (!hasPyproject && (\n dependencyOptions.extras.length > 0 ||\n dependencyOptions.groups.length > 0 ||\n dependencyOptions.allExtras\n )) {\n throw new Error('Runtime extras and groups require an existing pyproject.toml.');\n }\n const sources = hasPyproject ? [pyproject] : [];\n if (dependencies.length > 0) {\n await writeFile(additions, `${dependencies.join('\\n')}\\n`, 'utf8');\n sources.push(additions);\n }\n const selectionArgs = [\n ...dependencyOptions.extras.flatMap((extra) => ['--extra', extra]),\n ...dependencyOptions.groups.flatMap((group) => ['--group', group]),\n ...(dependencyOptions.allExtras ? ['--all-extras'] : []),\n ];\n await runAsync(\n uv.executable,\n [\n 'pip', 'compile', '--no-config', '--python', python.executable, ...selectionArgs,\n ...sources, '--output-file', resolved,\n ],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n // install preserves unrelated packages; sync would remove anything not\n // represented in this temporary resolution.\n await runAsync(\n uv.executable,\n ['pip', 'install', '--no-config', '--python', python.executable, '-r', resolved],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n } finally {\n await rm(temporary, { recursive: true, force: true });\n }\n return true;\n },\n });\n}\n\nasync function ensureUvResolved(options: ResolvedPyfigOptions): Promise<UvInfo> {\n const existing = await findAvailableUv(options);\n if (existing) return existing;\n if (!options.installUv) {\n throw new Error(\n `Compatible uv is unavailable (requires-uv ${options.requiresUv}), and uv installation is disabled.`,\n );\n }\n\n const policyKey = createHash('sha256').update(options.requiresUv).digest('hex');\n return withProvisioningLock({\n key: `uv-policy:${canonicalPath(uvInstallRoot(options))}:${policyKey}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n const release = await resolveUvRelease(options);\n const installDir = uvInstallDirectory(options, release.version);\n const executable = uvExecutable(options, release.version);\n return withProvisioningLock({\n key: `uv-release:${canonicalPath(installDir)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n await installUv(installDir, release, options);\n const result = probeUv(executable, options);\n if (!result || result.version !== release.version) {\n throw new Error(\n `Expected managed uv ${release.version}, but the installed executable did not match.`,\n );\n }\n return result;\n },\n });\n },\n });\n}\n\nasync function findAvailableUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const external = await findUv(options);\n if (external) return external;\n return findManagedUv(options);\n}\n\nasync function findManagedUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const entries = await readdir(uvInstallRoot(options), { withFileTypes: true }).catch(() => []);\n let versions = entries\n .filter(entry => entry.isDirectory() && normalizePep440Version(entry.name) === entry.name)\n .map(entry => entry.name);\n while (versions.length > 0) {\n const selected = maxPep440Version(versions, options.requiresUv);\n if (!selected) return null;\n const candidate = probeUv(uvExecutable(options, selected), options);\n if (candidate?.version === selected) return candidate;\n versions = versions.filter(version => version !== selected);\n }\n return null;\n}\n\nfunction normalizeDependencies(dependencies: readonly string[]): string[] {\n const normalized = dependencies.map((dependency) => dependency.trim());\n for (const dependency of normalized) {\n if (!dependency || /[\\0\\r\\n]/u.test(dependency)) {\n throw new TypeError(`Invalid runtime dependency: ${JSON.stringify(dependency)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction normalizeDependencyOptions(\n options: RuntimeDependencyOptions,\n): Required<RuntimeDependencyOptions> {\n const extras = normalizeNames('extra', options.extras ?? []);\n const groups = normalizeNames('dependency group', options.groups ?? []);\n if (options.allExtras && extras.length > 0) {\n throw new TypeError('allExtras cannot be combined with explicit extras.');\n }\n return { extras, groups, allExtras: options.allExtras ?? false };\n}\n\nfunction normalizeNames(kind: string, names: readonly string[]): string[] {\n const normalized = names.map((name) => name.trim());\n for (const name of normalized) {\n if (!name || !/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(name)) {\n throw new TypeError(`Invalid ${kind}: ${JSON.stringify(name)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction isManagedEnvironment(\n python: PythonInfo,\n options: ResolvedPyfigOptions,\n): boolean {\n return Boolean(python.virtualEnvironment) && pathsEqual(\n python.virtualEnvironment as string,\n virtualEnvironmentDirectory(options.projectRoot),\n );\n}\n\nfunction isolatedUvEnvironment(options: ResolvedPyfigOptions): NodeJS.ProcessEnv {\n return sanitizeUvEnvironment(uvEnvironment(options));\n}\n\n/** Explicit --system/--managed-python selectors cannot be combined with uv's preference setting. */\nfunction explicitPythonSourceEnvironment(\n options: ResolvedPyfigOptions,\n): NodeJS.ProcessEnv {\n const env = isolatedUvEnvironment(options);\n delete env['UV_PYTHON_PREFERENCE'];\n return env;\n}\n\nfunction targetUvEnvironment(\n options: ResolvedPyfigOptions,\n python: PythonInfo,\n): NodeJS.ProcessEnv {\n return uvCommandEnvironment(uvEnvironment(options), python);\n}\n\nfunction incompatibleConfiguredPython(options: ResolvedPyfigOptions): Error {\n return new Error(\n `Configured Python ${options.python} is unavailable or does not satisfy ` +\n `requires-python ${options.requiresPython}` +\n `${options.requireEmbedding ? ' with CPython embedding files' : ''}.`,\n );\n}\n\nfunction missingPythonMessage(options: ResolvedPyfigOptions, reason: string): string {\n const embedding = options.requireEmbedding\n ? ' with compatible CPython headers, library, architecture, and GIL ABI'\n : '';\n return `No Python satisfies requires-python ${options.requiresPython}${embedding}; ${reason}.`;\n}\n\nasync function virtualEnvironmentMatchesConfiguredPython(\n virtualEnvironment: PythonInfo,\n options: ResolvedPyfigOptions,\n): Promise<boolean> {\n if (!options.python) return true;\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) return false;\n if (configured.virtualEnvironment && pathsEqual(configured.executable, virtualEnvironment.executable)) {\n return true;\n }\n const configuredBase = configured.virtualEnvironment\n ? configured.baseExecutable\n : configured.executable;\n return pathsEqual(configuredBase, virtualEnvironment.baseExecutable);\n}\n\ninterface UvRelease {\n assets: string[];\n tag: string;\n version: string;\n}\n\ninterface UvReleaseCatalog {\n fetchedAt: number;\n releases: UvRelease[];\n}\n\nconst UV_RELEASE_PAGE_SIZE = 100;\nconst UV_RELEASE_MAX_PAGES = 20;\nconst UV_RELEASE_METADATA_TTL_MS = 24 * 60 * 60_000;\n\nasync function resolveUvRelease(options: ResolvedPyfigOptions): Promise<UvRelease> {\n const catalog = await ensureUvReleaseCatalog(options);\n const asset = uvAsset();\n const releases = catalog.releases.filter(release =>\n release.assets.includes(asset) && release.assets.includes(`${asset}.sha256`)\n );\n const version = maxPep440Version(\n releases.map(release => release.version),\n options.requiresUv,\n );\n const release = releases.find(candidate => candidate.version === version);\n if (!release) {\n throw new Error(`No published uv release satisfies requires-uv ${options.requiresUv}.`);\n }\n return release;\n}\n\nasync function ensureUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const file = uvReleaseMetadataFile(options);\n const stale = await readUvReleaseCatalog(file);\n try {\n return await withProvisioningLock({\n key: `uv-metadata:${canonicalPath(file)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => readFreshUvReleaseCatalog(file),\n mutate: async () => {\n const catalog = await fetchUvReleaseCatalog(options);\n await writeUvReleaseCatalog(file, catalog);\n return catalog;\n },\n });\n } catch (error) {\n const fallback = await readUvReleaseCatalog(file) ?? stale;\n if (fallback) return fallback;\n throw error;\n }\n}\n\nasync function fetchUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const dispatcher = proxyDispatcher(options.env);\n const releases = new Map<string, UvRelease>();\n let exhausted = false;\n try {\n for (let page = 1; page <= UV_RELEASE_MAX_PAGES; page += 1) {\n const text = await downloadText(\n `https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`,\n options.downloadTimeoutMs,\n dispatcher,\n githubApiHeaders(options.env),\n );\n const payload = JSON.parse(text) as unknown;\n if (!Array.isArray(payload)) {\n throw new Error('GitHub returned invalid uv release metadata.');\n }\n for (const candidate of payload) {\n if (!candidate || typeof candidate !== 'object') continue;\n const release = candidate as { assets?: unknown; draft?: unknown; tag_name?: unknown };\n if (release.draft === true || typeof release.tag_name !== 'string') continue;\n const assetNames = releaseAssetNames(release.assets);\n const version = normalizePep440Version(release.tag_name);\n if (version) {\n releases.set(version, { assets: assetNames, tag: release.tag_name, version });\n }\n }\n if (payload.length < UV_RELEASE_PAGE_SIZE) {\n exhausted = true;\n break;\n }\n }\n } finally {\n await dispatcher?.close();\n }\n\n if (!exhausted) {\n throw new Error(`uv release catalog exceeded ${UV_RELEASE_MAX_PAGES} pages.`);\n }\n if (releases.size === 0) {\n throw new Error('GitHub returned no usable uv releases.');\n }\n return { fetchedAt: Date.now(), releases: [...releases.values()] };\n}\n\n/** Build GitHub API headers without exposing credentials outside the request. */\nexport function githubApiHeaders(env: NodeJS.ProcessEnv): Record<string, string> {\n const token = [env['GITHUB_TOKEN'], env['GH_TOKEN']]\n .find(value => typeof value === 'string' && value.trim().length > 0);\n if (token && /[\\r\\n]/u.test(token)) {\n throw new TypeError('GitHub API token must not contain line breaks.');\n }\n return {\n Accept: 'application/vnd.github+json',\n 'User-Agent': 'pyfig',\n 'X-GitHub-Api-Version': '2022-11-28',\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n };\n}\n\nasync function readFreshUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n const catalog = await readUvReleaseCatalog(file);\n if (!catalog) return null;\n const age = Date.now() - catalog.fetchedAt;\n return age >= 0 && age < UV_RELEASE_METADATA_TTL_MS ? catalog : null;\n}\n\nasync function readUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n try {\n return parseUvReleaseCatalog(JSON.parse(await readFile(file, 'utf8')) as unknown);\n } catch {\n return null;\n }\n}\n\nfunction parseUvReleaseCatalog(value: unknown): UvReleaseCatalog | null {\n if (!value || typeof value !== 'object') return null;\n const catalog = value as { fetchedAt?: unknown; releases?: unknown };\n if (!Number.isSafeInteger(catalog.fetchedAt) || (catalog.fetchedAt as number) < 0 ||\n !Array.isArray(catalog.releases)) {\n return null;\n }\n const releases: UvRelease[] = [];\n for (const value of catalog.releases) {\n if (!value || typeof value !== 'object') return null;\n const release = value as { assets?: unknown; tag?: unknown; version?: unknown };\n if (!Array.isArray(release.assets) ||\n !release.assets.every(asset => typeof asset === 'string') ||\n typeof release.tag !== 'string' ||\n !/^[A-Za-z0-9][A-Za-z0-9._+-]*$/u.test(release.tag) ||\n typeof release.version !== 'string' ||\n normalizePep440Version(release.version) !== release.version) {\n return null;\n }\n releases.push({\n assets: release.assets as string[],\n tag: release.tag,\n version: release.version,\n });\n }\n return { fetchedAt: catalog.fetchedAt as number, releases };\n}\n\nasync function writeUvReleaseCatalog(file: string, catalog: UvReleaseCatalog): Promise<void> {\n await mkdir(path.dirname(file), { recursive: true });\n const staged = path.join(\n path.dirname(file),\n `.${path.basename(file)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await writeFile(staged, `${JSON.stringify(catalog)}\\n`, { encoding: 'utf8', flag: 'wx' });\n if (process.platform === 'win32') await rm(file, { force: true });\n await rename(staged, file);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvReleaseMetadataFile(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'metadata', 'uv-releases.json');\n}\n\nfunction releaseAssetNames(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.flatMap(entry => {\n if (!entry || typeof entry !== 'object') return [];\n const name = (entry as { name?: unknown }).name;\n return typeof name === 'string' ? [name] : [];\n });\n}\n\nfunction uvInstallRoot(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'tools', 'uv');\n}\n\nfunction uvInstallDirectory(options: ResolvedPyfigOptions, version: string): string {\n return path.join(uvInstallRoot(options), version);\n}\n\nfunction uvExecutable(options: ResolvedPyfigOptions, version: string): string {\n return path.join(\n uvInstallDirectory(options, version),\n process.platform === 'win32' ? 'uv.exe' : 'uv',\n );\n}\n\nasync function installUv(\n installDir: string,\n release: UvRelease,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n const asset = uvAsset();\n const baseUrl = `https://github.com/astral-sh/uv/releases/download/${release.tag}`;\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-uv-'));\n const dispatcher = proxyDispatcher(options.env);\n try {\n const archive = path.join(temporary, asset);\n await download(`${baseUrl}/${asset}`, archive, options.downloadTimeoutMs, dispatcher);\n const expected = (await downloadText(\n `${baseUrl}/${asset}.sha256`,\n options.downloadTimeoutMs,\n dispatcher,\n )).trim().split(/\\s+/u)[0];\n const actual = await sha256File(archive);\n if (!expected || expected.toLowerCase() !== actual.toLowerCase()) {\n throw new Error(`uv archive checksum mismatch for ${asset}`);\n }\n\n const extracted = path.join(temporary, 'extracted');\n await mkdir(extracted, { recursive: true });\n const source = await extractUvExecutable(archive, asset, extracted);\n if (!source) throw new Error(`uv archive did not contain the expected executable: ${asset}`);\n await publishUvAtomically(source, installDir, release.version, options);\n } finally {\n await dispatcher?.close();\n await rm(temporary, { recursive: true, force: true });\n }\n}\n\nasync function extractUvExecutable(\n archive: string,\n asset: string,\n destination: string,\n): Promise<string | null> {\n const executableName = process.platform === 'win32' ? 'uv.exe' : 'uv';\n if (!asset.endsWith('.zip')) {\n await tar.x({ file: archive, cwd: destination, strict: true });\n return findFile(destination, executableName);\n }\n\n // ZIP entry paths are never written to disk. Extract only uv's bytes and\n // publish them at a path controlled by Pyfig, which prevents Zip Slip and\n // symlink entries from redirecting writes outside the temporary directory.\n const entries = unzipSync(await readFile(archive), {\n filter: ({ name }) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName,\n });\n const matches = Object.entries(entries)\n .filter(([name]) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName);\n if (matches.length !== 1 || !matches[0]) return null;\n const source = path.join(destination, executableName);\n await writeFile(source, matches[0][1], { flag: 'wx' });\n return source;\n}\n\nasync function publishUvAtomically(\n source: string,\n installDir: string,\n version: string,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n await mkdir(installDir, { recursive: true });\n const executable = uvExecutable(options, version);\n const staged = path.join(\n installDir,\n `.${path.basename(executable)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await copyFile(source, staged);\n if (process.platform !== 'win32') await chmod(staged, 0o755);\n const stagedUv = probeUv(staged, options);\n if (!stagedUv || stagedUv.version !== version) {\n throw new Error(`Downloaded uv executable is not version ${version}.`);\n }\n if (process.platform === 'win32') await rm(executable, { force: true });\n await rename(staged, executable);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvAsset(): string {\n const architecture = process.arch === 'x64'\n ? 'x86_64'\n : process.arch === 'arm64'\n ? 'aarch64'\n : null;\n if (!architecture) throw new Error(`uv bootstrap does not support architecture ${process.arch}.`);\n if (process.platform === 'win32') return `uv-${architecture}-pc-windows-msvc.zip`;\n if (process.platform === 'darwin') return `uv-${architecture}-apple-darwin.tar.gz`;\n if (process.platform === 'linux') return `uv-${architecture}-unknown-linux-musl.tar.gz`;\n throw new Error(`uv bootstrap does not support platform ${process.platform}.`);\n}\n\nasync function download(\n url: string,\n destination: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n): Promise<void> {\n const response = await fetch(url, {\n dispatcher,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok || !response.body) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n await pipeline(\n Readable.fromWeb(response.body),\n createWriteStream(destination, { flags: 'wx' }),\n );\n}\n\nasync function downloadText(\n url: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n headers?: Record<string, string>,\n): Promise<string> {\n const response = await fetch(url, {\n dispatcher,\n headers,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n return response.text();\n}\n\nfunction proxyDispatcher(env: NodeJS.ProcessEnv): EnvHttpProxyAgent | undefined {\n const httpProxy = environmentValue(env, 'http_proxy', 'HTTP_PROXY');\n const httpsProxy = environmentValue(env, 'https_proxy', 'HTTPS_PROXY');\n if (!httpProxy && !httpsProxy) return undefined;\n return new EnvHttpProxyAgent({\n httpProxy,\n httpsProxy,\n noProxy: environmentValue(env, 'no_proxy', 'NO_PROXY'),\n });\n}\n\nfunction environmentValue(\n env: NodeJS.ProcessEnv,\n lowercase: string,\n uppercase: string,\n): string | undefined {\n return env[lowercase] ?? env[uppercase];\n}\n\nasync function sha256File(file: string): Promise<string> {\n const hash = createHash('sha256');\n for await (const chunk of createReadStream(file)) hash.update(chunk);\n return hash.digest('hex');\n}\n\nasync function findFile(directory: string, name: string): Promise<string | null> {\n for (const entry of await readdir(directory, { withFileTypes: true })) {\n const target = path.join(directory, entry.name);\n if (entry.isFile() && entry.name === name) return target;\n if (entry.isDirectory()) {\n const nested = await findFile(target, name);\n if (nested) return nested;\n }\n }\n return null;\n}\n",
|
|
10
10
|
"import { withLock } from 'loqkit';\n\nexport interface ProvisioningLockOptions<T> {\n /** Stable logical identity shared by every caller of the protected resource. */\n key: string;\n timeoutMs: number;\n check: () => Promise<T | null>;\n mutate: () => Promise<T>;\n}\n\n/** Use Loqkit's layered lock and predicate checks for one idempotent mutation. */\nexport async function withProvisioningLock<T>(\n options: ProvisioningLockOptions<T>,\n): Promise<T> {\n let existing: { value: T } | undefined;\n const result = await withLock(\n { resource: options.key },\n options.mutate,\n {\n key: options.key,\n name: 'Pyfig provisioning',\n namespace: 'pyfig',\n timeout: options.timeoutMs,\n predicate: async () => {\n const value = await options.check();\n if (value === null) return true;\n existing = { value };\n return false;\n },\n },\n );\n\n if (result.context.state === 'executed') return result.value as T;\n if (existing) return existing.value;\n throw new Error(`Provisioning check for ${options.key} did not produce a resource.`);\n}\n",
|
|
11
11
|
"import fs from 'node:fs';\nimport path from 'node:path';\n\nexport const VIRTUAL_ENV_DIRECTORY_NAME = path.join('node_modules', '.pyfig', 'venv');\n\nexport function virtualEnvironmentDirectory(projectRoot: string): string {\n return path.join(projectRoot, VIRTUAL_ENV_DIRECTORY_NAME);\n}\n\n/** Existing application environments are eligible for read-only reuse. */\nexport function externalVirtualEnvironmentDirectories(\n projectRoot: string,\n env: NodeJS.ProcessEnv,\n): string[] {\n const candidates = [env['VIRTUAL_ENV'], path.join(projectRoot, '.venv')]\n .filter((value): value is string => Boolean(value))\n .map((value) => path.resolve(value));\n return [...new Map(candidates.map((value) => [canonicalPath(value), value])).values()];\n}\n\nexport function virtualEnvironmentPythonExecutable(virtualEnvironment: string): string {\n return path.join(\n virtualEnvironment,\n process.platform === 'win32' ? 'Scripts' : 'bin',\n process.platform === 'win32' ? 'python.exe' : 'python',\n );\n}\n\n/** Apply the environment changes that shell activation scripts make for child processes. */\nexport function activateVirtualEnvironment(\n env: NodeJS.ProcessEnv,\n virtualEnvironment: string,\n pythonExecutable: string,\n): NodeJS.ProcessEnv {\n const activated = { ...env };\n const pathEntry = Object.keys(activated).find((key) => key.toUpperCase() === 'PATH');\n const existingPath = pathEntry ? activated[pathEntry] : undefined;\n for (const key of Object.keys(activated)) {\n const normalized = key.toUpperCase();\n if (normalized === 'PATH' || normalized === 'PYTHONHOME' || normalized === 'VIRTUAL_ENV') {\n delete activated[key];\n }\n }\n activated['PATH'] = [path.dirname(pythonExecutable), existingPath]\n .filter((value): value is string => Boolean(value))\n .join(path.delimiter);\n activated['VIRTUAL_ENV'] = virtualEnvironment;\n return activated;\n}\n\nexport function pathsEqual(left: string, right: string): boolean {\n return canonicalPath(left) === canonicalPath(right);\n}\n\n/** Canonicalize existing paths so symlink, junction, and filesystem casing aliases compare equally. */\nexport function canonicalPath(value: string): string {\n const resolved = path.resolve(value);\n let canonical = resolved;\n try {\n canonical = fs.realpathSync.native(resolved);\n } catch {\n // Paths being provisioned do not exist yet; the absolute spelling is the best stable key.\n }\n return process.platform === 'win32' ? canonical.toLowerCase() : canonical;\n}\n",
|
|
12
12
|
"import type { PythonInfo } from './probes.js';\nimport { activateVirtualEnvironment } from './virtual-environment.js';\n\nconst TARGET_OPTIONS = new Set([\n '--active',\n '--config-file',\n '--directory',\n '--isolated',\n '--prefix',\n '--project',\n '--python',\n '--root',\n '--system',\n '--target',\n '--user',\n]);\n\nconst TARGET_ENVIRONMENT_VARIABLES = new Set([\n 'CONDA_PREFIX',\n 'PIP_PREFIX',\n 'PIP_PYTHON',\n 'PIP_ROOT',\n 'PIP_TARGET',\n 'PIP_USER',\n 'PYTHONHOME',\n 'PYTHONUSERBASE',\n 'UV_CONFIG_FILE',\n 'UV_PROJECT',\n 'UV_PROJECT_ENVIRONMENT',\n 'UV_PYTHON',\n 'UV_PREFIX',\n 'UV_ROOT',\n 'UV_SYSTEM_PYTHON',\n 'UV_TARGET',\n]);\n\nexport function uvCommandNeedsEnvironment(args: readonly string[]): boolean {\n return args[0] === 'pip' || args[0] === 'run';\n}\n\n/** Pin uv pip and uv run to the environment selected by Pyfig. */\nexport function targetUvArguments(\n args: readonly string[],\n python: PythonInfo,\n): string[] {\n if (!python.virtualEnvironment) {\n throw new Error('Targeted uv commands require a virtual environment.');\n }\n assertNoTargetOverride(args);\n if (args[0] === 'run') {\n return ['run', '--no-project', '--python', python.executable, ...args.slice(1)];\n }\n if (args[0] === 'pip' && args[1]) {\n return ['pip', args[1], '--python', python.executable, ...args.slice(2)];\n }\n return [...args];\n}\n\nexport function uvCommandEnvironment(\n env: NodeJS.ProcessEnv,\n python?: PythonInfo,\n): NodeJS.ProcessEnv {\n const sanitized = sanitizeUvEnvironment(env);\n if (!python?.virtualEnvironment) return sanitized;\n return {\n ...activateVirtualEnvironment(\n sanitized,\n python.virtualEnvironment,\n python.executable,\n ),\n UV_PYTHON: python.executable,\n };\n}\n\n/** Remove inherited values that could redirect uv away from an explicit target. */\nexport function sanitizeUvEnvironment(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const sanitized = { ...env };\n for (const key of Object.keys(sanitized)) {\n if (TARGET_ENVIRONMENT_VARIABLES.has(key.toUpperCase())) delete sanitized[key];\n }\n return sanitized;\n}\n\nfunction assertNoTargetOverride(args: readonly string[]): void {\n for (const argument of args.slice(1)) {\n if (argument === '--') return;\n const [name] = argument.split('=', 1);\n if (name && TARGET_OPTIONS.has(name)) {\n throw new Error(`${name} cannot override the environment selected by Pyfig.`);\n }\n if (argument === '-p' || argument.startsWith('-p=') || /^-p[^-]/u.test(argument)) {\n throw new Error('-p cannot override the environment selected by Pyfig.');\n }\n }\n}\n",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"import {\n spawn,\n spawnSync,\n type ChildProcess,\n type SpawnOptions,\n type SpawnSyncOptions,\n} from 'node:child_process';\nimport {\n resolveOptions,\n uvEnvironment,\n type PyfigOptions,\n type ResolvedPyfigOptions,\n} from './config.js';\nimport type { PythonInfo, UvInfo } from './probes.js';\nimport {\n targetUvArguments,\n uvCommandEnvironment,\n uvCommandNeedsEnvironment,\n} from './package-target.js';\nimport { ensureEnvironment, ensureUv, type PythonEnvironment } from './provision.js';\nimport { runtimeFile } from './runtime-files.js';\n\nexport interface ResolvedCommand {\n executable: string;\n args: string[];\n env: NodeJS.ProcessEnv;\n}\n\ninterface SyncResolutionRequest {\n target: 'environment' | 'uv';\n options: ResolvedPyfigOptions;\n}\n\n/** Run uv, pinning uv pip and uv run to Pyfig's selected environment. */\nexport async function uvSpawn(\n args: readonly string[] = [],\n spawnOptions: SpawnOptions = {},\n pyfigOptions: PyfigOptions = {},\n): Promise<ChildProcess> {\n const options = optionsForInvocation(pyfigOptions, spawnOptions.env);\n const resolved = resolveOptions(options);\n const environment = uvCommandNeedsEnvironment(args)\n ? await ensureEnvironment(resolved)\n : undefined;\n const uv = environment?.uv ?? await ensureUv(resolved);\n const command = buildUvCommand(uv, args, resolved, environment?.python);\n return spawn(command.executable, command.args, {\n ...spawnOptions,\n env: command.env,\n });\n}\n\n/** Synchronous counterpart to uvSpawn for build and CommonJS hooks. */\nexport function uvSpawnSync(\n args: readonly string[] = [],\n spawnOptions: SpawnSyncOptions = {},\n pyfigOptions: PyfigOptions = {},\n): ReturnType<typeof spawnSync> {\n const options = optionsForInvocation(pyfigOptions, spawnOptions.env);\n const resolved = resolveOptions(options);\n const environment = uvCommandNeedsEnvironment(args)\n ? resolveSynchronously('environment', resolved)\n : undefined;\n const uv = environment?.uv ?? resolveSynchronously('uv', resolved);\n const command = buildUvCommand(uv, args, resolved, environment?.python);\n return spawnSync(command.executable, command.args, {\n ...spawnOptions,\n env: command.env,\n });\n}\n\nexport function buildUvCommand(\n uv: UvInfo,\n args: readonly string[],\n options: ResolvedPyfigOptions,\n python?: PythonInfo,\n): ResolvedCommand {\n return {\n executable: uv.executable,\n args: python ? targetUvArguments(args, python) : [...args],\n env: uvCommandEnvironment(uvEnvironment(options), python),\n };\n}\n\nfunction optionsForInvocation(\n pyfigOptions: PyfigOptions,\n spawnEnv: NodeJS.ProcessEnv | undefined,\n): PyfigOptions {\n return spawnEnv === undefined ? pyfigOptions : { ...pyfigOptions, env: spawnEnv };\n}\n\nfunction resolveSynchronously(\n target: 'environment',\n options: PyfigOptions,\n): PythonEnvironment;\nfunction resolveSynchronously(target: 'uv', options: PyfigOptions): UvInfo;\nfunction resolveSynchronously(\n target: SyncResolutionRequest['target'],\n options: PyfigOptions,\n): PythonEnvironment | UvInfo {\n const resolved = resolveOptions(options);\n const request: SyncResolutionRequest = { target, options: resolved };\n const result = spawnSync(process.execPath, [runtimeFile('sync-resolver')], {\n input: JSON.stringify(request),\n encoding: 'utf8',\n env: resolved.env,\n timeout: synchronousResolutionTimeout(resolved),\n maxBuffer: 4 * 1024 * 1024,\n windowsHide: true,\n });\n if (result.status !== 0 || result.error) {\n const detail = result.stderr.trim() || result.error?.message || `exit ${result.status}`;\n throw new Error(`Could not resolve ${target} synchronously: ${detail}`);\n }\n try {\n return JSON.parse(result.stdout) as PythonEnvironment | UvInfo;\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n throw new Error(`Could not parse synchronous ${target} resolution: ${detail}`);\n }\n}\n\nfunction synchronousResolutionTimeout(options: ResolvedPyfigOptions): number {\n return options.coordinationTimeoutMs + options.downloadTimeoutMs +\n (2 * options.installTimeoutMs) + (4 * options.probeTimeoutMs) + 60_000;\n}\n",
|
|
16
16
|
"import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\ndeclare const PYFIG_CJS_DIRECTORY: string | undefined;\n\n/** Resolve a compiled runtime helper beside either the ESM files or the CJS bundle. */\nexport function runtimeFile(name: string): string {\n const moduleDirectory = typeof PYFIG_CJS_DIRECTORY === 'string'\n ? PYFIG_CJS_DIRECTORY\n : path.dirname(fileURLToPath(import.meta.url));\n const compiled = path.join(moduleDirectory, `${name}.js`);\n return fs.existsSync(compiled) ? compiled : path.join(moduleDirectory, `${name}.ts`);\n}\n"
|
|
17
17
|
],
|
|
18
|
-
"mappings": "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",
|
|
19
|
-
"debugId": "
|
|
18
|
+
"mappings": "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",
|
|
19
|
+
"debugId": "0CA78C4B6148614B64756E2164756E21",
|
|
20
20
|
"names": []
|
|
21
21
|
}
|
|
@@ -955,11 +955,7 @@ async function fetchUvReleaseCatalog(options) {
|
|
|
955
955
|
let exhausted = false;
|
|
956
956
|
try {
|
|
957
957
|
for (let page = 1;page <= UV_RELEASE_MAX_PAGES; page += 1) {
|
|
958
|
-
const text = await downloadText(`https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`, options.downloadTimeoutMs, dispatcher,
|
|
959
|
-
Accept: "application/vnd.github+json",
|
|
960
|
-
"User-Agent": "pyfig",
|
|
961
|
-
"X-GitHub-Api-Version": "2022-11-28"
|
|
962
|
-
});
|
|
958
|
+
const text = await downloadText(`https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`, options.downloadTimeoutMs, dispatcher, githubApiHeaders(options.env));
|
|
963
959
|
const payload = JSON.parse(text);
|
|
964
960
|
if (!Array.isArray(payload)) {
|
|
965
961
|
throw new Error("GitHub returned invalid uv release metadata.");
|
|
@@ -992,6 +988,18 @@ async function fetchUvReleaseCatalog(options) {
|
|
|
992
988
|
}
|
|
993
989
|
return { fetchedAt: Date.now(), releases: [...releases.values()] };
|
|
994
990
|
}
|
|
991
|
+
function githubApiHeaders(env) {
|
|
992
|
+
const token = [env["GITHUB_TOKEN"], env["GH_TOKEN"]].find((value) => typeof value === "string" && value.trim().length > 0);
|
|
993
|
+
if (token && /[\r\n]/u.test(token)) {
|
|
994
|
+
throw new TypeError("GitHub API token must not contain line breaks.");
|
|
995
|
+
}
|
|
996
|
+
return {
|
|
997
|
+
Accept: "application/vnd.github+json",
|
|
998
|
+
"User-Agent": "pyfig",
|
|
999
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
1000
|
+
...token ? { Authorization: `Bearer ${token}` } : {}
|
|
1001
|
+
};
|
|
1002
|
+
}
|
|
995
1003
|
async function readFreshUvReleaseCatalog(file) {
|
|
996
1004
|
const catalog = await readUvReleaseCatalog(file);
|
|
997
1005
|
if (!catalog)
|
|
@@ -1206,4 +1214,4 @@ main().catch((error) => {
|
|
|
1206
1214
|
process.exitCode = 1;
|
|
1207
1215
|
});
|
|
1208
1216
|
|
|
1209
|
-
//# debugId=
|
|
1217
|
+
//# debugId=DFB6475FEB013D6C64756E2164756E21
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sources": ["../../src/sync-resolver.ts", "../../src/provision.ts", "../../src/config.ts", "../../src/pep440.ts", "../../src/project-root.ts", "../../src/provision-lock.ts", "../../src/virtual-environment.ts", "../../src/package-target.ts", "../../src/process.ts", "../../src/probes.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { readFileSync } from 'node:fs';\nimport type { ResolvedPyfigOptions } from './config.js';\nimport { ensureEnvironment, ensureUv } from './provision.js';\n\ninterface SyncResolutionRequest {\n target: 'environment' | 'uv';\n options: ResolvedPyfigOptions;\n}\n\nasync function main(): Promise<void> {\n const request = JSON.parse(readFileSync(0, 'utf8')) as SyncResolutionRequest;\n const result = request.target === 'uv'\n ? await ensureUv(request.options)\n : await ensureEnvironment(request.options);\n process.stdout.write(JSON.stringify(result));\n}\n\nmain().catch((error: unknown) => {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(message);\n process.exitCode = 1;\n});\n",
|
|
6
|
-
"import { createHash, randomUUID } from 'node:crypto';\nimport { createReadStream, createWriteStream } from 'node:fs';\nimport {\n chmod,\n copyFile,\n mkdir,\n mkdtemp,\n readFile,\n readdir,\n rename,\n rm,\n writeFile,\n} from 'node:fs/promises';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { unzipSync } from 'fflate';\nimport * as tar from 'tar';\nimport { EnvHttpProxyAgent, fetch } from 'undici';\nimport {\n resolveOptions,\n uvEnvironment,\n type PyfigOptions,\n type ResolvedPyfigOptions,\n} from './config.js';\nimport { withProvisioningLock } from './provision-lock.js';\nimport { sanitizeUvEnvironment, uvCommandEnvironment } from './package-target.js';\nimport {\n maxPep440Version,\n normalizePep440Version,\n} from './pep440.js';\nimport {\n findUv,\n probePython,\n probeUv,\n pythonSatisfiesPolicy,\n type PythonInfo,\n type UvInfo,\n} from './probes.js';\nimport { runAsync } from './process.js';\nimport {\n canonicalPath,\n externalVirtualEnvironmentDirectories,\n pathsEqual,\n virtualEnvironmentDirectory,\n virtualEnvironmentPythonExecutable,\n} from './virtual-environment.js';\n\nexport interface PythonEnvironment {\n python: PythonInfo;\n uv: UvInfo;\n /** True when the environment lives in node_modules/.pyfig/venv. */\n managed: boolean;\n}\n\nexport interface RuntimeDependencyOptions {\n /** Optional-dependency extras read from an existing pyproject.toml. */\n extras?: readonly string[];\n /** Include every optional-dependency extra from an existing pyproject.toml. */\n allExtras?: boolean;\n /** Dependency groups read from an existing pyproject.toml. */\n groups?: readonly string[];\n}\n\n/** Ensure a compatible uv executable, preferring an existing installation. */\nexport async function ensureUv(options: PyfigOptions = {}): Promise<UvInfo> {\n return ensureUvResolved(resolveOptions(options));\n}\n\n/**\n * Select a compatible environment and optionally add runtime dependencies.\n * Project dependency files are inputs only and are never changed.\n */\nexport async function ensureEnvironment(\n options: PyfigOptions = {},\n dependencies: readonly string[] = [],\n dependencyOptions: RuntimeDependencyOptions = {},\n): Promise<PythonEnvironment> {\n const resolved = resolveOptions(options);\n const normalized = normalizeDependencies(dependencies);\n const selections = normalizeDependencyOptions(dependencyOptions);\n const uv = await ensureUvResolved(resolved);\n const python = await ensureVirtualEnvironmentResolved(resolved, uv);\n if (normalized.length > 0 || selections.extras.length > 0 ||\n selections.groups.length > 0 || selections.allExtras) {\n await installRuntimeDependencies(uv, python, normalized, selections, resolved);\n }\n return {\n python,\n uv,\n managed: isManagedEnvironment(python, resolved),\n };\n}\n\nasync function ensureVirtualEnvironmentResolved(\n options: ResolvedPyfigOptions,\n uv: UvInfo,\n): Promise<PythonInfo> {\n const existing = await findReusableEnvironment(options);\n if (existing) return existing;\n\n const directory = virtualEnvironmentDirectory(options.projectRoot);\n const check = async (): Promise<PythonInfo | null> => {\n const candidate = await inspectVirtualEnvironment(directory, options);\n return candidate && pythonSatisfiesPolicy(candidate, options) &&\n await virtualEnvironmentMatchesConfiguredPython(candidate, options)\n ? candidate\n : null;\n };\n if (!options.createVirtualEnvironment) {\n throw new Error(\n `No compatible environment is available and creation is disabled. ` +\n `Pyfig would create ${directory}.`,\n );\n }\n\n const basePython = await ensureBasePythonResolved(uv, options);\n return withProvisioningLock({\n key: `venv:${canonicalPath(directory)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check,\n mutate: async () => {\n // Only Pyfig's private path is replaceable. Active and repository-root\n // environments are preserved when incompatible.\n await rm(directory, { recursive: true, force: true });\n await mkdir(path.dirname(directory), { recursive: true });\n await runAsync(\n uv.executable,\n [\n 'venv',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n '--python',\n basePython.executable,\n directory,\n ],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await check();\n if (!installed) {\n throw new Error(\n `uv created ${directory}, but its Python does not satisfy the requested capabilities.`,\n );\n }\n return installed;\n },\n });\n}\n\nasync function findReusableEnvironment(\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (configured.virtualEnvironment) return configured;\n }\n\n for (const directory of [\n ...externalVirtualEnvironmentDirectories(options.projectRoot, options.env),\n virtualEnvironmentDirectory(options.projectRoot),\n ]) {\n const info = await inspectVirtualEnvironment(directory, options);\n if (info && pythonSatisfiesPolicy(info, options) &&\n await virtualEnvironmentMatchesConfiguredPython(info, options)) {\n return info;\n }\n }\n return null;\n}\n\nasync function ensureBasePythonResolved(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (!configured.virtualEnvironment) return configured;\n const base = await probePython({ executable: configured.baseExecutable, args: [] }, options);\n if (base && pythonSatisfiesPolicy(base, options)) return base;\n throw incompatibleConfiguredPython(options);\n }\n\n // Corporate and offline hosts get a strict system-only pass before Pyfig\n // considers any already-managed interpreter or network installation.\n const system = await findPythonWithUv(uv, options, 'system');\n if (system) return system;\n const cachedManaged = await findPythonWithUv(uv, options, 'managed');\n if (cachedManaged) return cachedManaged;\n if (!options.installPython) {\n throw new Error(missingPythonMessage(options, 'managed Python installation is disabled'));\n }\n\n return withProvisioningLock({\n key: `python:${canonicalPath(path.join(options.cacheDir, 'python'))}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findPythonWithUv(uv, options, 'managed'),\n mutate: async () => {\n await runAsync(\n uv.executable,\n ['python', 'install', '--no-config', options.managedPython],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await findPythonWithUv(uv, options, 'managed');\n if (!installed) {\n throw new Error(missingPythonMessage(\n options,\n `uv installed ${options.managedPython}, but it remains incompatible`,\n ));\n }\n return installed;\n },\n });\n}\n\nasync function findPythonWithUv(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n source: 'system' | 'managed',\n): Promise<PythonInfo | null> {\n for (const request of ['', options.managedPython]) {\n const args = [\n 'python',\n 'find',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n source === 'system' ? '--system' : '--managed-python',\n ];\n if (request) args.push(request);\n try {\n const { stdout } = await runAsync(\n uv.executable,\n args,\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const info = await probePython({ executable: stdout.trim(), args: [] }, options);\n if (info && pythonSatisfiesPolicy(info, options)) return info;\n } catch {\n // Continue through the generic and configured version requests.\n }\n }\n\n // `uv python find` returns one match. That match can lack development\n // headers even when another installed interpreter satisfies every requested\n // capability, so inspect uv's complete installed-only inventory before\n // moving from system Python to managed Python or from cache to download.\n try {\n const { stdout } = await runAsync(\n uv.executable,\n [\n 'python',\n 'list',\n '--no-config',\n '--no-python-downloads',\n '--only-installed',\n '--output-format',\n 'json',\n source === 'system' ? '--no-managed-python' : '--managed-python',\n ],\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const candidates = installedPythonPaths(stdout);\n for (const executable of candidates) {\n const info = await probePython({ executable, args: [] }, options);\n if (info && !info.virtualEnvironment && pythonSatisfiesPolicy(info, options)) {\n return info;\n }\n }\n } catch {\n // Older compatible uv releases can still use the find-based fallback.\n }\n return null;\n}\n\nfunction installedPythonPaths(output: string): string[] {\n const parsed = JSON.parse(output) as unknown;\n if (!Array.isArray(parsed)) return [];\n const paths = parsed.flatMap((entry) => {\n if (!entry || typeof entry !== 'object' || !('path' in entry)) return [];\n const candidate = (entry as { path?: unknown }).path;\n return typeof candidate === 'string' && candidate ? [candidate] : [];\n });\n return [...new Map(paths.map((candidate) => [canonicalPath(candidate), candidate])).values()];\n}\n\nasync function inspectVirtualEnvironment(\n directory: string,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n const executable = virtualEnvironmentPythonExecutable(directory);\n const info = await probePython({ executable, args: [] }, options);\n return info?.virtualEnvironment && pathsEqual(info.virtualEnvironment, directory) ? info : null;\n}\n\nasync function installRuntimeDependencies(\n uv: UvInfo,\n python: PythonInfo,\n dependencies: readonly string[],\n dependencyOptions: Required<RuntimeDependencyOptions>,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n if (!python.virtualEnvironment) {\n throw new Error('Runtime dependency installation requires a virtual environment.');\n }\n await withProvisioningLock({\n key: `dependencies:${canonicalPath(python.virtualEnvironment)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: async () => null,\n mutate: async () => {\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-dependencies-'));\n try {\n const additions = path.join(temporary, 'runtime-dependencies.txt');\n const resolved = path.join(temporary, 'resolved-dependencies.txt');\n const pyproject = path.join(options.projectRoot, 'pyproject.toml');\n const hasPyproject = fs.existsSync(pyproject);\n if (!hasPyproject && (\n dependencyOptions.extras.length > 0 ||\n dependencyOptions.groups.length > 0 ||\n dependencyOptions.allExtras\n )) {\n throw new Error('Runtime extras and groups require an existing pyproject.toml.');\n }\n const sources = hasPyproject ? [pyproject] : [];\n if (dependencies.length > 0) {\n await writeFile(additions, `${dependencies.join('\\n')}\\n`, 'utf8');\n sources.push(additions);\n }\n const selectionArgs = [\n ...dependencyOptions.extras.flatMap((extra) => ['--extra', extra]),\n ...dependencyOptions.groups.flatMap((group) => ['--group', group]),\n ...(dependencyOptions.allExtras ? ['--all-extras'] : []),\n ];\n await runAsync(\n uv.executable,\n [\n 'pip', 'compile', '--no-config', '--python', python.executable, ...selectionArgs,\n ...sources, '--output-file', resolved,\n ],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n // install preserves unrelated packages; sync would remove anything not\n // represented in this temporary resolution.\n await runAsync(\n uv.executable,\n ['pip', 'install', '--no-config', '--python', python.executable, '-r', resolved],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n } finally {\n await rm(temporary, { recursive: true, force: true });\n }\n return true;\n },\n });\n}\n\nasync function ensureUvResolved(options: ResolvedPyfigOptions): Promise<UvInfo> {\n const existing = await findAvailableUv(options);\n if (existing) return existing;\n if (!options.installUv) {\n throw new Error(\n `Compatible uv is unavailable (requires-uv ${options.requiresUv}), and uv installation is disabled.`,\n );\n }\n\n const policyKey = createHash('sha256').update(options.requiresUv).digest('hex');\n return withProvisioningLock({\n key: `uv-policy:${canonicalPath(uvInstallRoot(options))}:${policyKey}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n const release = await resolveUvRelease(options);\n const installDir = uvInstallDirectory(options, release.version);\n const executable = uvExecutable(options, release.version);\n return withProvisioningLock({\n key: `uv-release:${canonicalPath(installDir)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n await installUv(installDir, release, options);\n const result = probeUv(executable, options);\n if (!result || result.version !== release.version) {\n throw new Error(\n `Expected managed uv ${release.version}, but the installed executable did not match.`,\n );\n }\n return result;\n },\n });\n },\n });\n}\n\nasync function findAvailableUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const external = await findUv(options);\n if (external) return external;\n return findManagedUv(options);\n}\n\nasync function findManagedUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const entries = await readdir(uvInstallRoot(options), { withFileTypes: true }).catch(() => []);\n let versions = entries\n .filter(entry => entry.isDirectory() && normalizePep440Version(entry.name) === entry.name)\n .map(entry => entry.name);\n while (versions.length > 0) {\n const selected = maxPep440Version(versions, options.requiresUv);\n if (!selected) return null;\n const candidate = probeUv(uvExecutable(options, selected), options);\n if (candidate?.version === selected) return candidate;\n versions = versions.filter(version => version !== selected);\n }\n return null;\n}\n\nfunction normalizeDependencies(dependencies: readonly string[]): string[] {\n const normalized = dependencies.map((dependency) => dependency.trim());\n for (const dependency of normalized) {\n if (!dependency || /[\\0\\r\\n]/u.test(dependency)) {\n throw new TypeError(`Invalid runtime dependency: ${JSON.stringify(dependency)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction normalizeDependencyOptions(\n options: RuntimeDependencyOptions,\n): Required<RuntimeDependencyOptions> {\n const extras = normalizeNames('extra', options.extras ?? []);\n const groups = normalizeNames('dependency group', options.groups ?? []);\n if (options.allExtras && extras.length > 0) {\n throw new TypeError('allExtras cannot be combined with explicit extras.');\n }\n return { extras, groups, allExtras: options.allExtras ?? false };\n}\n\nfunction normalizeNames(kind: string, names: readonly string[]): string[] {\n const normalized = names.map((name) => name.trim());\n for (const name of normalized) {\n if (!name || !/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(name)) {\n throw new TypeError(`Invalid ${kind}: ${JSON.stringify(name)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction isManagedEnvironment(\n python: PythonInfo,\n options: ResolvedPyfigOptions,\n): boolean {\n return Boolean(python.virtualEnvironment) && pathsEqual(\n python.virtualEnvironment as string,\n virtualEnvironmentDirectory(options.projectRoot),\n );\n}\n\nfunction isolatedUvEnvironment(options: ResolvedPyfigOptions): NodeJS.ProcessEnv {\n return sanitizeUvEnvironment(uvEnvironment(options));\n}\n\n/** Explicit --system/--managed-python selectors cannot be combined with uv's preference setting. */\nfunction explicitPythonSourceEnvironment(\n options: ResolvedPyfigOptions,\n): NodeJS.ProcessEnv {\n const env = isolatedUvEnvironment(options);\n delete env['UV_PYTHON_PREFERENCE'];\n return env;\n}\n\nfunction targetUvEnvironment(\n options: ResolvedPyfigOptions,\n python: PythonInfo,\n): NodeJS.ProcessEnv {\n return uvCommandEnvironment(uvEnvironment(options), python);\n}\n\nfunction incompatibleConfiguredPython(options: ResolvedPyfigOptions): Error {\n return new Error(\n `Configured Python ${options.python} is unavailable or does not satisfy ` +\n `requires-python ${options.requiresPython}` +\n `${options.requireEmbedding ? ' with CPython embedding files' : ''}.`,\n );\n}\n\nfunction missingPythonMessage(options: ResolvedPyfigOptions, reason: string): string {\n const embedding = options.requireEmbedding\n ? ' with compatible CPython headers, library, architecture, and GIL ABI'\n : '';\n return `No Python satisfies requires-python ${options.requiresPython}${embedding}; ${reason}.`;\n}\n\nasync function virtualEnvironmentMatchesConfiguredPython(\n virtualEnvironment: PythonInfo,\n options: ResolvedPyfigOptions,\n): Promise<boolean> {\n if (!options.python) return true;\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) return false;\n if (configured.virtualEnvironment && pathsEqual(configured.executable, virtualEnvironment.executable)) {\n return true;\n }\n const configuredBase = configured.virtualEnvironment\n ? configured.baseExecutable\n : configured.executable;\n return pathsEqual(configuredBase, virtualEnvironment.baseExecutable);\n}\n\ninterface UvRelease {\n assets: string[];\n tag: string;\n version: string;\n}\n\ninterface UvReleaseCatalog {\n fetchedAt: number;\n releases: UvRelease[];\n}\n\nconst UV_RELEASE_PAGE_SIZE = 100;\nconst UV_RELEASE_MAX_PAGES = 20;\nconst UV_RELEASE_METADATA_TTL_MS = 24 * 60 * 60_000;\n\nasync function resolveUvRelease(options: ResolvedPyfigOptions): Promise<UvRelease> {\n const catalog = await ensureUvReleaseCatalog(options);\n const asset = uvAsset();\n const releases = catalog.releases.filter(release =>\n release.assets.includes(asset) && release.assets.includes(`${asset}.sha256`)\n );\n const version = maxPep440Version(\n releases.map(release => release.version),\n options.requiresUv,\n );\n const release = releases.find(candidate => candidate.version === version);\n if (!release) {\n throw new Error(`No published uv release satisfies requires-uv ${options.requiresUv}.`);\n }\n return release;\n}\n\nasync function ensureUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const file = uvReleaseMetadataFile(options);\n const stale = await readUvReleaseCatalog(file);\n try {\n return await withProvisioningLock({\n key: `uv-metadata:${canonicalPath(file)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => readFreshUvReleaseCatalog(file),\n mutate: async () => {\n const catalog = await fetchUvReleaseCatalog(options);\n await writeUvReleaseCatalog(file, catalog);\n return catalog;\n },\n });\n } catch (error) {\n const fallback = await readUvReleaseCatalog(file) ?? stale;\n if (fallback) return fallback;\n throw error;\n }\n}\n\nasync function fetchUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const dispatcher = proxyDispatcher(options.env);\n const releases = new Map<string, UvRelease>();\n let exhausted = false;\n try {\n for (let page = 1; page <= UV_RELEASE_MAX_PAGES; page += 1) {\n const text = await downloadText(\n `https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`,\n options.downloadTimeoutMs,\n dispatcher,\n {\n Accept: 'application/vnd.github+json',\n 'User-Agent': 'pyfig',\n 'X-GitHub-Api-Version': '2022-11-28',\n },\n );\n const payload = JSON.parse(text) as unknown;\n if (!Array.isArray(payload)) {\n throw new Error('GitHub returned invalid uv release metadata.');\n }\n for (const candidate of payload) {\n if (!candidate || typeof candidate !== 'object') continue;\n const release = candidate as { assets?: unknown; draft?: unknown; tag_name?: unknown };\n if (release.draft === true || typeof release.tag_name !== 'string') continue;\n const assetNames = releaseAssetNames(release.assets);\n const version = normalizePep440Version(release.tag_name);\n if (version) {\n releases.set(version, { assets: assetNames, tag: release.tag_name, version });\n }\n }\n if (payload.length < UV_RELEASE_PAGE_SIZE) {\n exhausted = true;\n break;\n }\n }\n } finally {\n await dispatcher?.close();\n }\n\n if (!exhausted) {\n throw new Error(`uv release catalog exceeded ${UV_RELEASE_MAX_PAGES} pages.`);\n }\n if (releases.size === 0) {\n throw new Error('GitHub returned no usable uv releases.');\n }\n return { fetchedAt: Date.now(), releases: [...releases.values()] };\n}\n\nasync function readFreshUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n const catalog = await readUvReleaseCatalog(file);\n if (!catalog) return null;\n const age = Date.now() - catalog.fetchedAt;\n return age >= 0 && age < UV_RELEASE_METADATA_TTL_MS ? catalog : null;\n}\n\nasync function readUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n try {\n return parseUvReleaseCatalog(JSON.parse(await readFile(file, 'utf8')) as unknown);\n } catch {\n return null;\n }\n}\n\nfunction parseUvReleaseCatalog(value: unknown): UvReleaseCatalog | null {\n if (!value || typeof value !== 'object') return null;\n const catalog = value as { fetchedAt?: unknown; releases?: unknown };\n if (!Number.isSafeInteger(catalog.fetchedAt) || (catalog.fetchedAt as number) < 0 ||\n !Array.isArray(catalog.releases)) {\n return null;\n }\n const releases: UvRelease[] = [];\n for (const value of catalog.releases) {\n if (!value || typeof value !== 'object') return null;\n const release = value as { assets?: unknown; tag?: unknown; version?: unknown };\n if (!Array.isArray(release.assets) ||\n !release.assets.every(asset => typeof asset === 'string') ||\n typeof release.tag !== 'string' ||\n !/^[A-Za-z0-9][A-Za-z0-9._+-]*$/u.test(release.tag) ||\n typeof release.version !== 'string' ||\n normalizePep440Version(release.version) !== release.version) {\n return null;\n }\n releases.push({\n assets: release.assets as string[],\n tag: release.tag,\n version: release.version,\n });\n }\n return { fetchedAt: catalog.fetchedAt as number, releases };\n}\n\nasync function writeUvReleaseCatalog(file: string, catalog: UvReleaseCatalog): Promise<void> {\n await mkdir(path.dirname(file), { recursive: true });\n const staged = path.join(\n path.dirname(file),\n `.${path.basename(file)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await writeFile(staged, `${JSON.stringify(catalog)}\\n`, { encoding: 'utf8', flag: 'wx' });\n if (process.platform === 'win32') await rm(file, { force: true });\n await rename(staged, file);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvReleaseMetadataFile(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'metadata', 'uv-releases.json');\n}\n\nfunction releaseAssetNames(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.flatMap(entry => {\n if (!entry || typeof entry !== 'object') return [];\n const name = (entry as { name?: unknown }).name;\n return typeof name === 'string' ? [name] : [];\n });\n}\n\nfunction uvInstallRoot(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'tools', 'uv');\n}\n\nfunction uvInstallDirectory(options: ResolvedPyfigOptions, version: string): string {\n return path.join(uvInstallRoot(options), version);\n}\n\nfunction uvExecutable(options: ResolvedPyfigOptions, version: string): string {\n return path.join(\n uvInstallDirectory(options, version),\n process.platform === 'win32' ? 'uv.exe' : 'uv',\n );\n}\n\nasync function installUv(\n installDir: string,\n release: UvRelease,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n const asset = uvAsset();\n const baseUrl = `https://github.com/astral-sh/uv/releases/download/${release.tag}`;\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-uv-'));\n const dispatcher = proxyDispatcher(options.env);\n try {\n const archive = path.join(temporary, asset);\n await download(`${baseUrl}/${asset}`, archive, options.downloadTimeoutMs, dispatcher);\n const expected = (await downloadText(\n `${baseUrl}/${asset}.sha256`,\n options.downloadTimeoutMs,\n dispatcher,\n )).trim().split(/\\s+/u)[0];\n const actual = await sha256File(archive);\n if (!expected || expected.toLowerCase() !== actual.toLowerCase()) {\n throw new Error(`uv archive checksum mismatch for ${asset}`);\n }\n\n const extracted = path.join(temporary, 'extracted');\n await mkdir(extracted, { recursive: true });\n const source = await extractUvExecutable(archive, asset, extracted);\n if (!source) throw new Error(`uv archive did not contain the expected executable: ${asset}`);\n await publishUvAtomically(source, installDir, release.version, options);\n } finally {\n await dispatcher?.close();\n await rm(temporary, { recursive: true, force: true });\n }\n}\n\nasync function extractUvExecutable(\n archive: string,\n asset: string,\n destination: string,\n): Promise<string | null> {\n const executableName = process.platform === 'win32' ? 'uv.exe' : 'uv';\n if (!asset.endsWith('.zip')) {\n await tar.x({ file: archive, cwd: destination, strict: true });\n return findFile(destination, executableName);\n }\n\n // ZIP entry paths are never written to disk. Extract only uv's bytes and\n // publish them at a path controlled by Pyfig, which prevents Zip Slip and\n // symlink entries from redirecting writes outside the temporary directory.\n const entries = unzipSync(await readFile(archive), {\n filter: ({ name }) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName,\n });\n const matches = Object.entries(entries)\n .filter(([name]) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName);\n if (matches.length !== 1 || !matches[0]) return null;\n const source = path.join(destination, executableName);\n await writeFile(source, matches[0][1], { flag: 'wx' });\n return source;\n}\n\nasync function publishUvAtomically(\n source: string,\n installDir: string,\n version: string,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n await mkdir(installDir, { recursive: true });\n const executable = uvExecutable(options, version);\n const staged = path.join(\n installDir,\n `.${path.basename(executable)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await copyFile(source, staged);\n if (process.platform !== 'win32') await chmod(staged, 0o755);\n const stagedUv = probeUv(staged, options);\n if (!stagedUv || stagedUv.version !== version) {\n throw new Error(`Downloaded uv executable is not version ${version}.`);\n }\n if (process.platform === 'win32') await rm(executable, { force: true });\n await rename(staged, executable);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvAsset(): string {\n const architecture = process.arch === 'x64'\n ? 'x86_64'\n : process.arch === 'arm64'\n ? 'aarch64'\n : null;\n if (!architecture) throw new Error(`uv bootstrap does not support architecture ${process.arch}.`);\n if (process.platform === 'win32') return `uv-${architecture}-pc-windows-msvc.zip`;\n if (process.platform === 'darwin') return `uv-${architecture}-apple-darwin.tar.gz`;\n if (process.platform === 'linux') return `uv-${architecture}-unknown-linux-musl.tar.gz`;\n throw new Error(`uv bootstrap does not support platform ${process.platform}.`);\n}\n\nasync function download(\n url: string,\n destination: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n): Promise<void> {\n const response = await fetch(url, {\n dispatcher,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok || !response.body) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n await pipeline(\n Readable.fromWeb(response.body),\n createWriteStream(destination, { flags: 'wx' }),\n );\n}\n\nasync function downloadText(\n url: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n headers?: Record<string, string>,\n): Promise<string> {\n const response = await fetch(url, {\n dispatcher,\n headers,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n return response.text();\n}\n\nfunction proxyDispatcher(env: NodeJS.ProcessEnv): EnvHttpProxyAgent | undefined {\n const httpProxy = environmentValue(env, 'http_proxy', 'HTTP_PROXY');\n const httpsProxy = environmentValue(env, 'https_proxy', 'HTTPS_PROXY');\n if (!httpProxy && !httpsProxy) return undefined;\n return new EnvHttpProxyAgent({\n httpProxy,\n httpsProxy,\n noProxy: environmentValue(env, 'no_proxy', 'NO_PROXY'),\n });\n}\n\nfunction environmentValue(\n env: NodeJS.ProcessEnv,\n lowercase: string,\n uppercase: string,\n): string | undefined {\n return env[lowercase] ?? env[uppercase];\n}\n\nasync function sha256File(file: string): Promise<string> {\n const hash = createHash('sha256');\n for await (const chunk of createReadStream(file)) hash.update(chunk);\n return hash.digest('hex');\n}\n\nasync function findFile(directory: string, name: string): Promise<string | null> {\n for (const entry of await readdir(directory, { withFileTypes: true })) {\n const target = path.join(directory, entry.name);\n if (entry.isFile() && entry.name === name) return target;\n if (entry.isDirectory()) {\n const nested = await findFile(target, name);\n if (nested) return nested;\n }\n }\n return null;\n}\n",
|
|
6
|
+
"import { createHash, randomUUID } from 'node:crypto';\nimport { createReadStream, createWriteStream } from 'node:fs';\nimport {\n chmod,\n copyFile,\n mkdir,\n mkdtemp,\n readFile,\n readdir,\n rename,\n rm,\n writeFile,\n} from 'node:fs/promises';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { unzipSync } from 'fflate';\nimport * as tar from 'tar';\nimport { EnvHttpProxyAgent, fetch } from 'undici';\nimport {\n resolveOptions,\n uvEnvironment,\n type PyfigOptions,\n type ResolvedPyfigOptions,\n} from './config.js';\nimport { withProvisioningLock } from './provision-lock.js';\nimport { sanitizeUvEnvironment, uvCommandEnvironment } from './package-target.js';\nimport {\n maxPep440Version,\n normalizePep440Version,\n} from './pep440.js';\nimport {\n findUv,\n probePython,\n probeUv,\n pythonSatisfiesPolicy,\n type PythonInfo,\n type UvInfo,\n} from './probes.js';\nimport { runAsync } from './process.js';\nimport {\n canonicalPath,\n externalVirtualEnvironmentDirectories,\n pathsEqual,\n virtualEnvironmentDirectory,\n virtualEnvironmentPythonExecutable,\n} from './virtual-environment.js';\n\nexport interface PythonEnvironment {\n python: PythonInfo;\n uv: UvInfo;\n /** True when the environment lives in node_modules/.pyfig/venv. */\n managed: boolean;\n}\n\nexport interface RuntimeDependencyOptions {\n /** Optional-dependency extras read from an existing pyproject.toml. */\n extras?: readonly string[];\n /** Include every optional-dependency extra from an existing pyproject.toml. */\n allExtras?: boolean;\n /** Dependency groups read from an existing pyproject.toml. */\n groups?: readonly string[];\n}\n\n/** Ensure a compatible uv executable, preferring an existing installation. */\nexport async function ensureUv(options: PyfigOptions = {}): Promise<UvInfo> {\n return ensureUvResolved(resolveOptions(options));\n}\n\n/**\n * Select a compatible environment and optionally add runtime dependencies.\n * Project dependency files are inputs only and are never changed.\n */\nexport async function ensureEnvironment(\n options: PyfigOptions = {},\n dependencies: readonly string[] = [],\n dependencyOptions: RuntimeDependencyOptions = {},\n): Promise<PythonEnvironment> {\n const resolved = resolveOptions(options);\n const normalized = normalizeDependencies(dependencies);\n const selections = normalizeDependencyOptions(dependencyOptions);\n const uv = await ensureUvResolved(resolved);\n const python = await ensureVirtualEnvironmentResolved(resolved, uv);\n if (normalized.length > 0 || selections.extras.length > 0 ||\n selections.groups.length > 0 || selections.allExtras) {\n await installRuntimeDependencies(uv, python, normalized, selections, resolved);\n }\n return {\n python,\n uv,\n managed: isManagedEnvironment(python, resolved),\n };\n}\n\nasync function ensureVirtualEnvironmentResolved(\n options: ResolvedPyfigOptions,\n uv: UvInfo,\n): Promise<PythonInfo> {\n const existing = await findReusableEnvironment(options);\n if (existing) return existing;\n\n const directory = virtualEnvironmentDirectory(options.projectRoot);\n const check = async (): Promise<PythonInfo | null> => {\n const candidate = await inspectVirtualEnvironment(directory, options);\n return candidate && pythonSatisfiesPolicy(candidate, options) &&\n await virtualEnvironmentMatchesConfiguredPython(candidate, options)\n ? candidate\n : null;\n };\n if (!options.createVirtualEnvironment) {\n throw new Error(\n `No compatible environment is available and creation is disabled. ` +\n `Pyfig would create ${directory}.`,\n );\n }\n\n const basePython = await ensureBasePythonResolved(uv, options);\n return withProvisioningLock({\n key: `venv:${canonicalPath(directory)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check,\n mutate: async () => {\n // Only Pyfig's private path is replaceable. Active and repository-root\n // environments are preserved when incompatible.\n await rm(directory, { recursive: true, force: true });\n await mkdir(path.dirname(directory), { recursive: true });\n await runAsync(\n uv.executable,\n [\n 'venv',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n '--python',\n basePython.executable,\n directory,\n ],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await check();\n if (!installed) {\n throw new Error(\n `uv created ${directory}, but its Python does not satisfy the requested capabilities.`,\n );\n }\n return installed;\n },\n });\n}\n\nasync function findReusableEnvironment(\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (configured.virtualEnvironment) return configured;\n }\n\n for (const directory of [\n ...externalVirtualEnvironmentDirectories(options.projectRoot, options.env),\n virtualEnvironmentDirectory(options.projectRoot),\n ]) {\n const info = await inspectVirtualEnvironment(directory, options);\n if (info && pythonSatisfiesPolicy(info, options) &&\n await virtualEnvironmentMatchesConfiguredPython(info, options)) {\n return info;\n }\n }\n return null;\n}\n\nasync function ensureBasePythonResolved(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo> {\n if (options.python) {\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) {\n throw incompatibleConfiguredPython(options);\n }\n if (!configured.virtualEnvironment) return configured;\n const base = await probePython({ executable: configured.baseExecutable, args: [] }, options);\n if (base && pythonSatisfiesPolicy(base, options)) return base;\n throw incompatibleConfiguredPython(options);\n }\n\n // Corporate and offline hosts get a strict system-only pass before Pyfig\n // considers any already-managed interpreter or network installation.\n const system = await findPythonWithUv(uv, options, 'system');\n if (system) return system;\n const cachedManaged = await findPythonWithUv(uv, options, 'managed');\n if (cachedManaged) return cachedManaged;\n if (!options.installPython) {\n throw new Error(missingPythonMessage(options, 'managed Python installation is disabled'));\n }\n\n return withProvisioningLock({\n key: `python:${canonicalPath(path.join(options.cacheDir, 'python'))}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findPythonWithUv(uv, options, 'managed'),\n mutate: async () => {\n await runAsync(\n uv.executable,\n ['python', 'install', '--no-config', options.managedPython],\n isolatedUvEnvironment(options),\n options.installTimeoutMs,\n );\n const installed = await findPythonWithUv(uv, options, 'managed');\n if (!installed) {\n throw new Error(missingPythonMessage(\n options,\n `uv installed ${options.managedPython}, but it remains incompatible`,\n ));\n }\n return installed;\n },\n });\n}\n\nasync function findPythonWithUv(\n uv: UvInfo,\n options: ResolvedPyfigOptions,\n source: 'system' | 'managed',\n): Promise<PythonInfo | null> {\n for (const request of ['', options.managedPython]) {\n const args = [\n 'python',\n 'find',\n '--no-project',\n '--no-config',\n '--no-python-downloads',\n source === 'system' ? '--system' : '--managed-python',\n ];\n if (request) args.push(request);\n try {\n const { stdout } = await runAsync(\n uv.executable,\n args,\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const info = await probePython({ executable: stdout.trim(), args: [] }, options);\n if (info && pythonSatisfiesPolicy(info, options)) return info;\n } catch {\n // Continue through the generic and configured version requests.\n }\n }\n\n // `uv python find` returns one match. That match can lack development\n // headers even when another installed interpreter satisfies every requested\n // capability, so inspect uv's complete installed-only inventory before\n // moving from system Python to managed Python or from cache to download.\n try {\n const { stdout } = await runAsync(\n uv.executable,\n [\n 'python',\n 'list',\n '--no-config',\n '--no-python-downloads',\n '--only-installed',\n '--output-format',\n 'json',\n source === 'system' ? '--no-managed-python' : '--managed-python',\n ],\n explicitPythonSourceEnvironment(options),\n options.probeTimeoutMs,\n );\n const candidates = installedPythonPaths(stdout);\n for (const executable of candidates) {\n const info = await probePython({ executable, args: [] }, options);\n if (info && !info.virtualEnvironment && pythonSatisfiesPolicy(info, options)) {\n return info;\n }\n }\n } catch {\n // Older compatible uv releases can still use the find-based fallback.\n }\n return null;\n}\n\nfunction installedPythonPaths(output: string): string[] {\n const parsed = JSON.parse(output) as unknown;\n if (!Array.isArray(parsed)) return [];\n const paths = parsed.flatMap((entry) => {\n if (!entry || typeof entry !== 'object' || !('path' in entry)) return [];\n const candidate = (entry as { path?: unknown }).path;\n return typeof candidate === 'string' && candidate ? [candidate] : [];\n });\n return [...new Map(paths.map((candidate) => [canonicalPath(candidate), candidate])).values()];\n}\n\nasync function inspectVirtualEnvironment(\n directory: string,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n const executable = virtualEnvironmentPythonExecutable(directory);\n const info = await probePython({ executable, args: [] }, options);\n return info?.virtualEnvironment && pathsEqual(info.virtualEnvironment, directory) ? info : null;\n}\n\nasync function installRuntimeDependencies(\n uv: UvInfo,\n python: PythonInfo,\n dependencies: readonly string[],\n dependencyOptions: Required<RuntimeDependencyOptions>,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n if (!python.virtualEnvironment) {\n throw new Error('Runtime dependency installation requires a virtual environment.');\n }\n await withProvisioningLock({\n key: `dependencies:${canonicalPath(python.virtualEnvironment)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: async () => null,\n mutate: async () => {\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-dependencies-'));\n try {\n const additions = path.join(temporary, 'runtime-dependencies.txt');\n const resolved = path.join(temporary, 'resolved-dependencies.txt');\n const pyproject = path.join(options.projectRoot, 'pyproject.toml');\n const hasPyproject = fs.existsSync(pyproject);\n if (!hasPyproject && (\n dependencyOptions.extras.length > 0 ||\n dependencyOptions.groups.length > 0 ||\n dependencyOptions.allExtras\n )) {\n throw new Error('Runtime extras and groups require an existing pyproject.toml.');\n }\n const sources = hasPyproject ? [pyproject] : [];\n if (dependencies.length > 0) {\n await writeFile(additions, `${dependencies.join('\\n')}\\n`, 'utf8');\n sources.push(additions);\n }\n const selectionArgs = [\n ...dependencyOptions.extras.flatMap((extra) => ['--extra', extra]),\n ...dependencyOptions.groups.flatMap((group) => ['--group', group]),\n ...(dependencyOptions.allExtras ? ['--all-extras'] : []),\n ];\n await runAsync(\n uv.executable,\n [\n 'pip', 'compile', '--no-config', '--python', python.executable, ...selectionArgs,\n ...sources, '--output-file', resolved,\n ],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n // install preserves unrelated packages; sync would remove anything not\n // represented in this temporary resolution.\n await runAsync(\n uv.executable,\n ['pip', 'install', '--no-config', '--python', python.executable, '-r', resolved],\n targetUvEnvironment(options, python),\n options.installTimeoutMs,\n undefined,\n options.projectRoot,\n );\n } finally {\n await rm(temporary, { recursive: true, force: true });\n }\n return true;\n },\n });\n}\n\nasync function ensureUvResolved(options: ResolvedPyfigOptions): Promise<UvInfo> {\n const existing = await findAvailableUv(options);\n if (existing) return existing;\n if (!options.installUv) {\n throw new Error(\n `Compatible uv is unavailable (requires-uv ${options.requiresUv}), and uv installation is disabled.`,\n );\n }\n\n const policyKey = createHash('sha256').update(options.requiresUv).digest('hex');\n return withProvisioningLock({\n key: `uv-policy:${canonicalPath(uvInstallRoot(options))}:${policyKey}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n const release = await resolveUvRelease(options);\n const installDir = uvInstallDirectory(options, release.version);\n const executable = uvExecutable(options, release.version);\n return withProvisioningLock({\n key: `uv-release:${canonicalPath(installDir)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => findAvailableUv(options),\n mutate: async () => {\n await installUv(installDir, release, options);\n const result = probeUv(executable, options);\n if (!result || result.version !== release.version) {\n throw new Error(\n `Expected managed uv ${release.version}, but the installed executable did not match.`,\n );\n }\n return result;\n },\n });\n },\n });\n}\n\nasync function findAvailableUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const external = await findUv(options);\n if (external) return external;\n return findManagedUv(options);\n}\n\nasync function findManagedUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const entries = await readdir(uvInstallRoot(options), { withFileTypes: true }).catch(() => []);\n let versions = entries\n .filter(entry => entry.isDirectory() && normalizePep440Version(entry.name) === entry.name)\n .map(entry => entry.name);\n while (versions.length > 0) {\n const selected = maxPep440Version(versions, options.requiresUv);\n if (!selected) return null;\n const candidate = probeUv(uvExecutable(options, selected), options);\n if (candidate?.version === selected) return candidate;\n versions = versions.filter(version => version !== selected);\n }\n return null;\n}\n\nfunction normalizeDependencies(dependencies: readonly string[]): string[] {\n const normalized = dependencies.map((dependency) => dependency.trim());\n for (const dependency of normalized) {\n if (!dependency || /[\\0\\r\\n]/u.test(dependency)) {\n throw new TypeError(`Invalid runtime dependency: ${JSON.stringify(dependency)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction normalizeDependencyOptions(\n options: RuntimeDependencyOptions,\n): Required<RuntimeDependencyOptions> {\n const extras = normalizeNames('extra', options.extras ?? []);\n const groups = normalizeNames('dependency group', options.groups ?? []);\n if (options.allExtras && extras.length > 0) {\n throw new TypeError('allExtras cannot be combined with explicit extras.');\n }\n return { extras, groups, allExtras: options.allExtras ?? false };\n}\n\nfunction normalizeNames(kind: string, names: readonly string[]): string[] {\n const normalized = names.map((name) => name.trim());\n for (const name of normalized) {\n if (!name || !/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(name)) {\n throw new TypeError(`Invalid ${kind}: ${JSON.stringify(name)}`);\n }\n }\n return [...new Set(normalized)];\n}\n\nfunction isManagedEnvironment(\n python: PythonInfo,\n options: ResolvedPyfigOptions,\n): boolean {\n return Boolean(python.virtualEnvironment) && pathsEqual(\n python.virtualEnvironment as string,\n virtualEnvironmentDirectory(options.projectRoot),\n );\n}\n\nfunction isolatedUvEnvironment(options: ResolvedPyfigOptions): NodeJS.ProcessEnv {\n return sanitizeUvEnvironment(uvEnvironment(options));\n}\n\n/** Explicit --system/--managed-python selectors cannot be combined with uv's preference setting. */\nfunction explicitPythonSourceEnvironment(\n options: ResolvedPyfigOptions,\n): NodeJS.ProcessEnv {\n const env = isolatedUvEnvironment(options);\n delete env['UV_PYTHON_PREFERENCE'];\n return env;\n}\n\nfunction targetUvEnvironment(\n options: ResolvedPyfigOptions,\n python: PythonInfo,\n): NodeJS.ProcessEnv {\n return uvCommandEnvironment(uvEnvironment(options), python);\n}\n\nfunction incompatibleConfiguredPython(options: ResolvedPyfigOptions): Error {\n return new Error(\n `Configured Python ${options.python} is unavailable or does not satisfy ` +\n `requires-python ${options.requiresPython}` +\n `${options.requireEmbedding ? ' with CPython embedding files' : ''}.`,\n );\n}\n\nfunction missingPythonMessage(options: ResolvedPyfigOptions, reason: string): string {\n const embedding = options.requireEmbedding\n ? ' with compatible CPython headers, library, architecture, and GIL ABI'\n : '';\n return `No Python satisfies requires-python ${options.requiresPython}${embedding}; ${reason}.`;\n}\n\nasync function virtualEnvironmentMatchesConfiguredPython(\n virtualEnvironment: PythonInfo,\n options: ResolvedPyfigOptions,\n): Promise<boolean> {\n if (!options.python) return true;\n const configured = await probePython({ executable: options.python, args: [] }, options);\n if (!configured || !pythonSatisfiesPolicy(configured, options)) return false;\n if (configured.virtualEnvironment && pathsEqual(configured.executable, virtualEnvironment.executable)) {\n return true;\n }\n const configuredBase = configured.virtualEnvironment\n ? configured.baseExecutable\n : configured.executable;\n return pathsEqual(configuredBase, virtualEnvironment.baseExecutable);\n}\n\ninterface UvRelease {\n assets: string[];\n tag: string;\n version: string;\n}\n\ninterface UvReleaseCatalog {\n fetchedAt: number;\n releases: UvRelease[];\n}\n\nconst UV_RELEASE_PAGE_SIZE = 100;\nconst UV_RELEASE_MAX_PAGES = 20;\nconst UV_RELEASE_METADATA_TTL_MS = 24 * 60 * 60_000;\n\nasync function resolveUvRelease(options: ResolvedPyfigOptions): Promise<UvRelease> {\n const catalog = await ensureUvReleaseCatalog(options);\n const asset = uvAsset();\n const releases = catalog.releases.filter(release =>\n release.assets.includes(asset) && release.assets.includes(`${asset}.sha256`)\n );\n const version = maxPep440Version(\n releases.map(release => release.version),\n options.requiresUv,\n );\n const release = releases.find(candidate => candidate.version === version);\n if (!release) {\n throw new Error(`No published uv release satisfies requires-uv ${options.requiresUv}.`);\n }\n return release;\n}\n\nasync function ensureUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const file = uvReleaseMetadataFile(options);\n const stale = await readUvReleaseCatalog(file);\n try {\n return await withProvisioningLock({\n key: `uv-metadata:${canonicalPath(file)}`,\n timeoutMs: options.coordinationTimeoutMs,\n check: () => readFreshUvReleaseCatalog(file),\n mutate: async () => {\n const catalog = await fetchUvReleaseCatalog(options);\n await writeUvReleaseCatalog(file, catalog);\n return catalog;\n },\n });\n } catch (error) {\n const fallback = await readUvReleaseCatalog(file) ?? stale;\n if (fallback) return fallback;\n throw error;\n }\n}\n\nasync function fetchUvReleaseCatalog(\n options: ResolvedPyfigOptions,\n): Promise<UvReleaseCatalog> {\n const dispatcher = proxyDispatcher(options.env);\n const releases = new Map<string, UvRelease>();\n let exhausted = false;\n try {\n for (let page = 1; page <= UV_RELEASE_MAX_PAGES; page += 1) {\n const text = await downloadText(\n `https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`,\n options.downloadTimeoutMs,\n dispatcher,\n githubApiHeaders(options.env),\n );\n const payload = JSON.parse(text) as unknown;\n if (!Array.isArray(payload)) {\n throw new Error('GitHub returned invalid uv release metadata.');\n }\n for (const candidate of payload) {\n if (!candidate || typeof candidate !== 'object') continue;\n const release = candidate as { assets?: unknown; draft?: unknown; tag_name?: unknown };\n if (release.draft === true || typeof release.tag_name !== 'string') continue;\n const assetNames = releaseAssetNames(release.assets);\n const version = normalizePep440Version(release.tag_name);\n if (version) {\n releases.set(version, { assets: assetNames, tag: release.tag_name, version });\n }\n }\n if (payload.length < UV_RELEASE_PAGE_SIZE) {\n exhausted = true;\n break;\n }\n }\n } finally {\n await dispatcher?.close();\n }\n\n if (!exhausted) {\n throw new Error(`uv release catalog exceeded ${UV_RELEASE_MAX_PAGES} pages.`);\n }\n if (releases.size === 0) {\n throw new Error('GitHub returned no usable uv releases.');\n }\n return { fetchedAt: Date.now(), releases: [...releases.values()] };\n}\n\n/** Build GitHub API headers without exposing credentials outside the request. */\nexport function githubApiHeaders(env: NodeJS.ProcessEnv): Record<string, string> {\n const token = [env['GITHUB_TOKEN'], env['GH_TOKEN']]\n .find(value => typeof value === 'string' && value.trim().length > 0);\n if (token && /[\\r\\n]/u.test(token)) {\n throw new TypeError('GitHub API token must not contain line breaks.');\n }\n return {\n Accept: 'application/vnd.github+json',\n 'User-Agent': 'pyfig',\n 'X-GitHub-Api-Version': '2022-11-28',\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n };\n}\n\nasync function readFreshUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n const catalog = await readUvReleaseCatalog(file);\n if (!catalog) return null;\n const age = Date.now() - catalog.fetchedAt;\n return age >= 0 && age < UV_RELEASE_METADATA_TTL_MS ? catalog : null;\n}\n\nasync function readUvReleaseCatalog(file: string): Promise<UvReleaseCatalog | null> {\n try {\n return parseUvReleaseCatalog(JSON.parse(await readFile(file, 'utf8')) as unknown);\n } catch {\n return null;\n }\n}\n\nfunction parseUvReleaseCatalog(value: unknown): UvReleaseCatalog | null {\n if (!value || typeof value !== 'object') return null;\n const catalog = value as { fetchedAt?: unknown; releases?: unknown };\n if (!Number.isSafeInteger(catalog.fetchedAt) || (catalog.fetchedAt as number) < 0 ||\n !Array.isArray(catalog.releases)) {\n return null;\n }\n const releases: UvRelease[] = [];\n for (const value of catalog.releases) {\n if (!value || typeof value !== 'object') return null;\n const release = value as { assets?: unknown; tag?: unknown; version?: unknown };\n if (!Array.isArray(release.assets) ||\n !release.assets.every(asset => typeof asset === 'string') ||\n typeof release.tag !== 'string' ||\n !/^[A-Za-z0-9][A-Za-z0-9._+-]*$/u.test(release.tag) ||\n typeof release.version !== 'string' ||\n normalizePep440Version(release.version) !== release.version) {\n return null;\n }\n releases.push({\n assets: release.assets as string[],\n tag: release.tag,\n version: release.version,\n });\n }\n return { fetchedAt: catalog.fetchedAt as number, releases };\n}\n\nasync function writeUvReleaseCatalog(file: string, catalog: UvReleaseCatalog): Promise<void> {\n await mkdir(path.dirname(file), { recursive: true });\n const staged = path.join(\n path.dirname(file),\n `.${path.basename(file)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await writeFile(staged, `${JSON.stringify(catalog)}\\n`, { encoding: 'utf8', flag: 'wx' });\n if (process.platform === 'win32') await rm(file, { force: true });\n await rename(staged, file);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvReleaseMetadataFile(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'metadata', 'uv-releases.json');\n}\n\nfunction releaseAssetNames(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.flatMap(entry => {\n if (!entry || typeof entry !== 'object') return [];\n const name = (entry as { name?: unknown }).name;\n return typeof name === 'string' ? [name] : [];\n });\n}\n\nfunction uvInstallRoot(options: ResolvedPyfigOptions): string {\n return path.join(options.cacheDir, 'tools', 'uv');\n}\n\nfunction uvInstallDirectory(options: ResolvedPyfigOptions, version: string): string {\n return path.join(uvInstallRoot(options), version);\n}\n\nfunction uvExecutable(options: ResolvedPyfigOptions, version: string): string {\n return path.join(\n uvInstallDirectory(options, version),\n process.platform === 'win32' ? 'uv.exe' : 'uv',\n );\n}\n\nasync function installUv(\n installDir: string,\n release: UvRelease,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n const asset = uvAsset();\n const baseUrl = `https://github.com/astral-sh/uv/releases/download/${release.tag}`;\n const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-uv-'));\n const dispatcher = proxyDispatcher(options.env);\n try {\n const archive = path.join(temporary, asset);\n await download(`${baseUrl}/${asset}`, archive, options.downloadTimeoutMs, dispatcher);\n const expected = (await downloadText(\n `${baseUrl}/${asset}.sha256`,\n options.downloadTimeoutMs,\n dispatcher,\n )).trim().split(/\\s+/u)[0];\n const actual = await sha256File(archive);\n if (!expected || expected.toLowerCase() !== actual.toLowerCase()) {\n throw new Error(`uv archive checksum mismatch for ${asset}`);\n }\n\n const extracted = path.join(temporary, 'extracted');\n await mkdir(extracted, { recursive: true });\n const source = await extractUvExecutable(archive, asset, extracted);\n if (!source) throw new Error(`uv archive did not contain the expected executable: ${asset}`);\n await publishUvAtomically(source, installDir, release.version, options);\n } finally {\n await dispatcher?.close();\n await rm(temporary, { recursive: true, force: true });\n }\n}\n\nasync function extractUvExecutable(\n archive: string,\n asset: string,\n destination: string,\n): Promise<string | null> {\n const executableName = process.platform === 'win32' ? 'uv.exe' : 'uv';\n if (!asset.endsWith('.zip')) {\n await tar.x({ file: archive, cwd: destination, strict: true });\n return findFile(destination, executableName);\n }\n\n // ZIP entry paths are never written to disk. Extract only uv's bytes and\n // publish them at a path controlled by Pyfig, which prevents Zip Slip and\n // symlink entries from redirecting writes outside the temporary directory.\n const entries = unzipSync(await readFile(archive), {\n filter: ({ name }) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName,\n });\n const matches = Object.entries(entries)\n .filter(([name]) => path.posix.basename(name.replaceAll('\\\\', '/')) === executableName);\n if (matches.length !== 1 || !matches[0]) return null;\n const source = path.join(destination, executableName);\n await writeFile(source, matches[0][1], { flag: 'wx' });\n return source;\n}\n\nasync function publishUvAtomically(\n source: string,\n installDir: string,\n version: string,\n options: ResolvedPyfigOptions,\n): Promise<void> {\n await mkdir(installDir, { recursive: true });\n const executable = uvExecutable(options, version);\n const staged = path.join(\n installDir,\n `.${path.basename(executable)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await copyFile(source, staged);\n if (process.platform !== 'win32') await chmod(staged, 0o755);\n const stagedUv = probeUv(staged, options);\n if (!stagedUv || stagedUv.version !== version) {\n throw new Error(`Downloaded uv executable is not version ${version}.`);\n }\n if (process.platform === 'win32') await rm(executable, { force: true });\n await rename(staged, executable);\n } finally {\n await rm(staged, { force: true });\n }\n}\n\nfunction uvAsset(): string {\n const architecture = process.arch === 'x64'\n ? 'x86_64'\n : process.arch === 'arm64'\n ? 'aarch64'\n : null;\n if (!architecture) throw new Error(`uv bootstrap does not support architecture ${process.arch}.`);\n if (process.platform === 'win32') return `uv-${architecture}-pc-windows-msvc.zip`;\n if (process.platform === 'darwin') return `uv-${architecture}-apple-darwin.tar.gz`;\n if (process.platform === 'linux') return `uv-${architecture}-unknown-linux-musl.tar.gz`;\n throw new Error(`uv bootstrap does not support platform ${process.platform}.`);\n}\n\nasync function download(\n url: string,\n destination: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n): Promise<void> {\n const response = await fetch(url, {\n dispatcher,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok || !response.body) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n await pipeline(\n Readable.fromWeb(response.body),\n createWriteStream(destination, { flags: 'wx' }),\n );\n}\n\nasync function downloadText(\n url: string,\n timeoutMs: number,\n dispatcher: EnvHttpProxyAgent | undefined,\n headers?: Record<string, string>,\n): Promise<string> {\n const response = await fetch(url, {\n dispatcher,\n headers,\n redirect: 'follow',\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok) {\n await response.body?.cancel();\n throw new Error(`Could not download ${url}: HTTP ${response.status}`);\n }\n return response.text();\n}\n\nfunction proxyDispatcher(env: NodeJS.ProcessEnv): EnvHttpProxyAgent | undefined {\n const httpProxy = environmentValue(env, 'http_proxy', 'HTTP_PROXY');\n const httpsProxy = environmentValue(env, 'https_proxy', 'HTTPS_PROXY');\n if (!httpProxy && !httpsProxy) return undefined;\n return new EnvHttpProxyAgent({\n httpProxy,\n httpsProxy,\n noProxy: environmentValue(env, 'no_proxy', 'NO_PROXY'),\n });\n}\n\nfunction environmentValue(\n env: NodeJS.ProcessEnv,\n lowercase: string,\n uppercase: string,\n): string | undefined {\n return env[lowercase] ?? env[uppercase];\n}\n\nasync function sha256File(file: string): Promise<string> {\n const hash = createHash('sha256');\n for await (const chunk of createReadStream(file)) hash.update(chunk);\n return hash.digest('hex');\n}\n\nasync function findFile(directory: string, name: string): Promise<string | null> {\n for (const entry of await readdir(directory, { withFileTypes: true })) {\n const target = path.join(directory, entry.name);\n if (entry.isFile() && entry.name === name) return target;\n if (entry.isDirectory()) {\n const nested = await findFile(target, name);\n if (nested) return nested;\n }\n }\n return null;\n}\n",
|
|
7
7
|
"import path from 'node:path';\nimport * as envPaths from 'env-paths';\nimport {\n isValidPep440Specifier,\n pep440VersionSatisfies,\n} from './pep440.js';\nimport { resolveProjectRoot } from './project-root.js';\n\nexport const DEFAULT_REQUIRES_PYTHON = '>=3.10,<4';\nexport const DEFAULT_MANAGED_PYTHON = '3.12';\n// External uv only needs to support the command and isolation flags Pyfig uses.\n// The installer resolves the greatest published release allowed by this policy.\nexport const DEFAULT_REQUIRES_UV = '>=0.10,<1';\n\nconst DEFAULT_PROBE_TIMEOUT_MS = 10_000;\nconst DEFAULT_INSTALL_TIMEOUT_MS = 10 * 60_000;\nconst DEFAULT_DOWNLOAD_TIMEOUT_MS = 5 * 60_000;\n\n// Bun's CommonJS bundler wraps an external ESM default one level deeper than\n// Node.js. Normalize that boundary once instead of leaking runtime checks into\n// configuration resolution.\nconst envPathsFunction = (() => {\n const imported = envPaths.default as typeof envPaths.default | {\n default?: typeof envPaths.default;\n };\n const implementation = typeof imported === 'function' ? imported : imported.default;\n if (!implementation) throw new TypeError('env-paths did not expose its default function.');\n return implementation;\n})();\n\nexport interface PyfigOptions {\n /** Exact interpreter path that an existing or newly created venv must derive from. */\n python?: string;\n /** PEP 440 Python version specifier, matching pyproject.toml requires-python. */\n requiresPython?: string;\n /** uv Python request used only when no compatible interpreter exists. */\n managedPython?: string;\n /** PEP 440 version specifier accepted for an existing or managed uv executable. */\n requiresUv?: string;\n /** Require Python development headers and a linkable CPython library. */\n requireEmbedding?: boolean;\n /** Reject free-threaded CPython builds when the consumer requires the GIL ABI. */\n requireGil?: boolean;\n /** Shared default for the three specific setup policies. */\n autoInstall?: boolean;\n /** Allow uv to install a managed Python when no compatible interpreter exists. */\n installPython?: boolean;\n /** Allow Pyfig to install a compatible, checksum-verified uv executable. */\n installUv?: boolean;\n /** Allow creation of Pyfig's private environment under node_modules. */\n createVirtualEnvironment?: boolean;\n /** Private cache root for uv, managed Python, downloads, and coordination. */\n cacheDir?: string;\n /** Repository root that owns node_modules/.pyfig. */\n projectRoot?: string;\n /** Maximum duration of one executable capability probe. */\n probeTimeoutMs?: number;\n /** Maximum duration of a Python, uv, or venv installation subprocess. */\n installTimeoutMs?: number;\n /** Maximum duration of one uv archive or checksum request. */\n downloadTimeoutMs?: number;\n /** Maximum wait for another worker or process provisioning the same resource. */\n coordinationTimeoutMs?: number;\n /** Complete child environment and configuration source for this invocation. */\n env?: NodeJS.ProcessEnv;\n}\n\nexport interface ResolvedPyfigOptions {\n python: string;\n requiresPython: string;\n managedPython: string;\n requiresUv: string;\n requireEmbedding: boolean;\n requireGil: boolean;\n autoInstall: boolean;\n installPython: boolean;\n installUv: boolean;\n createVirtualEnvironment: boolean;\n cacheDir: string;\n projectRoot: string;\n probeTimeoutMs: number;\n installTimeoutMs: number;\n downloadTimeoutMs: number;\n coordinationTimeoutMs: number;\n env: NodeJS.ProcessEnv;\n}\n\nexport function resolveOptions(options: PyfigOptions = {}): ResolvedPyfigOptions {\n // Snapshot the environment so callers cannot change an in-flight policy by\n // mutating process.env or a reused options object after resolution.\n const env = { ...(options.env ?? process.env) };\n const requiresPython = options.requiresPython ??\n env['PYFIG_REQUIRES_PYTHON'] ?? DEFAULT_REQUIRES_PYTHON;\n const requiresUv = options.requiresUv ?? env['PYFIG_REQUIRES_UV'] ?? DEFAULT_REQUIRES_UV;\n assertPep440Specifier('requires-python', requiresPython);\n assertPep440Specifier('requires-uv', requiresUv);\n\n const managedPython = options.managedPython ??\n env['PYFIG_MANAGED_PYTHON'] ?? DEFAULT_MANAGED_PYTHON;\n assertManagedPythonRequest(managedPython, requiresPython);\n\n const probeTimeoutMs = resolveDuration(\n 'probeTimeoutMs',\n options.probeTimeoutMs,\n env['PYFIG_PROBE_TIMEOUT_MS'],\n DEFAULT_PROBE_TIMEOUT_MS,\n );\n const installTimeoutMs = resolveDuration(\n 'installTimeoutMs',\n options.installTimeoutMs,\n env['PYFIG_INSTALL_TIMEOUT_MS'],\n DEFAULT_INSTALL_TIMEOUT_MS,\n );\n const downloadTimeoutMs = resolveDuration(\n 'downloadTimeoutMs',\n options.downloadTimeoutMs,\n env['PYFIG_DOWNLOAD_TIMEOUT_MS'],\n DEFAULT_DOWNLOAD_TIMEOUT_MS,\n );\n const coordinationTimeoutMs = resolveDuration(\n 'coordinationTimeoutMs',\n options.coordinationTimeoutMs,\n env['PYFIG_COORDINATION_TIMEOUT_MS'],\n installTimeoutMs + downloadTimeoutMs + 60_000,\n );\n const configuredHome = options.cacheDir ?? env['PYFIG_HOME'];\n const cacheDir = configuredHome\n ? path.resolve(configuredHome)\n : envPathsFunction('pyfig', { suffix: '' }).cache;\n const configuredProjectRoot = options.projectRoot ?? env['PYFIG_PROJECT_ROOT'];\n const projectRoot = configuredProjectRoot\n ? path.resolve(configuredProjectRoot)\n : resolveProjectRoot(env['INIT_CWD'] ?? process.cwd());\n const autoInstall = options.autoInstall ?? parseBoolean(env['PYFIG_AUTO_INSTALL'], true);\n\n return {\n python: options.python ?? env['PYFIG_PYTHON'] ?? '',\n requiresPython,\n managedPython,\n requiresUv,\n requireEmbedding: options.requireEmbedding ?? parseBoolean(env['PYFIG_REQUIRE_EMBEDDING'], false),\n requireGil: options.requireGil ?? parseBoolean(env['PYFIG_REQUIRE_GIL'], false),\n autoInstall,\n installPython: options.installPython ?? parseBoolean(env['PYFIG_INSTALL_PYTHON'], autoInstall),\n installUv: options.installUv ?? parseBoolean(env['PYFIG_INSTALL_UV'], autoInstall),\n createVirtualEnvironment: options.createVirtualEnvironment ??\n parseBoolean(env['PYFIG_CREATE_VIRTUAL_ENVIRONMENT'], autoInstall),\n cacheDir,\n projectRoot,\n probeTimeoutMs,\n installTimeoutMs,\n downloadTimeoutMs,\n coordinationTimeoutMs,\n env,\n };\n}\n\n/** Keep uv data private while preferring a compatible system interpreter. */\nexport function uvEnvironment(options: ResolvedPyfigOptions): NodeJS.ProcessEnv {\n return {\n ...options.env,\n UV_PYTHON_INSTALL_DIR: path.join(options.cacheDir, 'python'),\n UV_CACHE_DIR: path.join(options.cacheDir, 'uv-cache'),\n UV_PYTHON_PREFERENCE: 'system',\n UV_NO_CONFIG: '1',\n };\n}\n\nfunction assertPep440Specifier(name: string, specifier: string): void {\n if (!isValidPep440Specifier(specifier)) {\n throw new TypeError(`Invalid ${name} PEP 440 specifier: ${specifier}`);\n }\n}\n\nfunction assertManagedPythonRequest(request: string, requiresPython: string): void {\n if (!request || /[\\\\/\\0\\r\\n]/u.test(request) || request.includes('..')) {\n throw new TypeError(`Invalid managed Python request: ${request}`);\n }\n if (/^\\d+\\.\\d+(?:\\.\\d+)?$/u.test(request)) {\n const normalized = request.split('.').length === 2 ? `${request}.0` : request;\n if (!pep440VersionSatisfies(normalized, requiresPython)) {\n throw new TypeError(\n `Managed Python ${request} cannot satisfy requires-python ${requiresPython}.`,\n );\n }\n }\n}\n\nfunction resolveDuration(\n name: string,\n explicit: number | undefined,\n environment: string | undefined,\n fallback: number,\n allowZero = false,\n): number {\n const value = explicit ?? (environment === undefined ? fallback : Number(environment));\n const minimum = allowZero ? 0 : 1;\n if (!Number.isSafeInteger(value) || value < minimum) {\n throw new TypeError(`${name} must be ${allowZero ? 'a non-negative' : 'a positive'} integer.`);\n }\n return value;\n}\n\nfunction parseBoolean(value: string | undefined, fallback: boolean): boolean {\n if (value === undefined) return fallback;\n if (/^(1|true|yes|on)$/iu.test(value)) return true;\n if (/^(0|false|no|off)$/iu.test(value)) return false;\n throw new TypeError(`Invalid boolean value: ${value}`);\n}\n",
|
|
8
8
|
"import {\n filter,\n maxSatisfying,\n valid as validPep440Version,\n validRange as validPep440Specifier,\n} from '@renovatebot/pep440';\n\n/** Validate a PEP 440 version specifier used by a runtime policy. */\nexport function isValidPep440Specifier(specifier: string): boolean {\n return validPep440Specifier(specifier);\n}\n\n/** Normalize a PEP 440 version, or reject invalid input. */\nexport function normalizePep440Version(version: string): string | null {\n return validPep440Version(version);\n}\n\n/**\n * Match a version using PEP 440 specifier-set behavior, including its\n * pre-release fallback when the candidate set has no matching final release.\n */\nexport function pep440VersionSatisfies(version: string, specifier: string): boolean {\n return filter([version], specifier).length === 1;\n}\n\n/** Select the greatest PEP 440 version allowed by a specifier. */\nexport function maxPep440Version(\n versions: readonly string[],\n specifier: string,\n): string | null {\n return maxSatisfying([...versions], specifier);\n}\n",
|
|
9
9
|
"import fs from 'node:fs';\nimport path from 'node:path';\n\n/** Resolve the nearest Git worktree without interpreting project manifests. */\nexport function resolveProjectRoot(startDirectory: string = process.cwd()): string {\n const start = path.resolve(startDirectory);\n for (const directory of ancestors(start)) {\n if (fs.existsSync(path.join(directory, '.git'))) return directory;\n }\n return start;\n}\n\nfunction* ancestors(startDirectory: string): Generator<string> {\n let directory = startDirectory;\n while (true) {\n yield directory;\n const parent = path.dirname(directory);\n if (parent === directory) return;\n directory = parent;\n }\n}\n",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"import { spawn, spawnSync } from 'node:child_process';\nimport path from 'node:path';\nimport which from 'which';\n\nexport interface CommandSpec {\n executable: string;\n args: string[];\n}\n\nexport interface RunResult {\n stdout: string;\n stderr: string;\n}\n\nexport async function resolveExecutable(\n value: string,\n env: NodeJS.ProcessEnv,\n): Promise<string | null> {\n if (!value) return null;\n if (path.isAbsolute(value)) {\n return await which(value, { nothrow: true, path: env['PATH'], pathExt: env['PATHEXT'] });\n }\n if (!/^[A-Za-z0-9_.-]+$/u.test(value)) return null;\n return await which(value, { nothrow: true, path: env['PATH'], pathExt: env['PATHEXT'] });\n}\n\nexport function run(\n executable: string,\n args: string[],\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n): RunResult {\n const result = spawnSync(executable, args, {\n encoding: 'utf8',\n env,\n timeout: timeoutMs,\n maxBuffer: 4 * 1024 * 1024,\n windowsHide: true,\n });\n if (result.status !== 0 || result.error) {\n const detail = result.stderr?.trim() || result.error?.message || `exit ${result.status}`;\n throw new Error(`${path.basename(executable)} ${args.slice(0, 3).join(' ')} failed: ${detail}`);\n }\n return { stdout: result.stdout, stderr: result.stderr };\n}\n\n/** Run a child without blocking lock heartbeats or other coordination timers. */\nexport async function runAsync(\n executable: string,\n args: string[],\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n signal?: AbortSignal,\n cwd?: string,\n): Promise<RunResult> {\n return new Promise<RunResult>((resolve, reject) => {\n const child = spawn(executable, args, {\n env,\n cwd,\n stdio: ['ignore', 'pipe', 'pipe'],\n windowsHide: true,\n });\n let stdout = '';\n let stderr = '';\n let settled = false;\n const finish = (error?: Error, result?: RunResult): void => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n signal?.removeEventListener('abort', abort);\n if (error) reject(error);\n else if (result) resolve(result);\n };\n const abort = (): void => {\n child.kill();\n const reason = signal?.reason;\n finish(reason instanceof Error ? reason : new Error(`${path.basename(executable)} was aborted.`));\n };\n const timer = setTimeout(() => {\n child.kill();\n finish(new Error(`${path.basename(executable)} timed out after ${timeoutMs}ms.`));\n }, timeoutMs);\n\n child.stdout.setEncoding('utf8');\n child.stderr.setEncoding('utf8');\n child.stdout.on('data', (chunk: string) => {\n stdout += chunk;\n if (stdout.length > 4 * 1024 * 1024) {\n child.kill();\n finish(new Error(`${path.basename(executable)} exceeded the output limit.`));\n }\n });\n child.stderr.on('data', (chunk: string) => {\n stderr += chunk;\n if (stderr.length > 4 * 1024 * 1024) {\n child.kill();\n finish(new Error(`${path.basename(executable)} exceeded the error-output limit.`));\n }\n });\n child.once('error', (error) => finish(error));\n child.once('close', (code, childSignal) => {\n if (code !== 0) {\n const detail = stderr.trim() || (childSignal ? `signal ${childSignal}` : `exit ${code}`);\n finish(new Error(`${path.basename(executable)} ${args.slice(0, 3).join(' ')} failed: ${detail}`));\n return;\n }\n finish(undefined, { stdout, stderr });\n });\n\n if (signal?.aborted) abort();\n else signal?.addEventListener('abort', abort, { once: true });\n });\n}\n",
|
|
14
14
|
"import type { ResolvedPyfigOptions } from './config.js';\nimport { normalizePep440Version, pep440VersionSatisfies } from './pep440.js';\nimport { resolveExecutable, run, type CommandSpec } from './process.js';\n\nexport interface PythonInfo {\n executable: string;\n baseExecutable: string;\n version: string;\n major: number;\n minor: number;\n patch: number;\n releaseLevel: string;\n implementation: string;\n architecture: string;\n pointerBits: number;\n prefix: string;\n basePrefix: string;\n virtualEnvironment: string | null;\n gilDisabled: boolean;\n embedding: PythonEmbeddingInfo | null;\n}\n\nexport interface PythonEmbeddingInfo {\n includeDirectory: string;\n headerPath: string;\n libraryPath: string;\n libraryDirectory: string;\n libraryName: string;\n libraryKind: 'import' | 'shared' | 'static';\n stableAbiLibraryPath: string | null;\n}\n\nexport interface UvInfo {\n executable: string;\n version: string;\n}\n\nconst PYTHON_PROBE = `\nimport json\nimport os\nimport platform\nimport struct\nimport sys\nimport sysconfig\n\nbase_prefix = getattr(sys, \"base_prefix\", sys.prefix)\ninclude_directory = sysconfig.get_path(\"include\") or \"\"\nheader_path = os.path.join(include_directory, \"Python.h\") if include_directory else \"\"\nlibrary_candidates = []\nstable_abi_library_candidates = []\nif os.name == \"nt\":\n library_directory = sysconfig.get_config_var(\"LIBDIR\") or os.path.join(base_prefix, \"libs\")\n configured_library = sysconfig.get_config_var(\"LDLIBRARY\") or \"\"\n if configured_library:\n library_candidates.append(os.path.join(library_directory, os.path.splitext(configured_library)[0] + \".lib\"))\n library_candidates.append(os.path.join(library_directory, f\"python{sys.version_info.major}{sys.version_info.minor}.lib\"))\n stable_abi_library_candidates.append(os.path.join(library_directory, \"python3.lib\"))\nelse:\n library_directories = [\n sysconfig.get_config_var(\"LIBDIR\"),\n sysconfig.get_config_var(\"LIBPL\"),\n os.path.join(base_prefix, \"lib\"),\n ]\n library_names = [\n sysconfig.get_config_var(\"LDLIBRARY\"),\n sysconfig.get_config_var(\"LIBRARY\"),\n ]\n for directory in library_directories:\n for name in library_names:\n if directory and name:\n library_candidates.append(os.path.join(directory, name))\n if directory:\n stable_abi_library_candidates.extend([\n os.path.join(directory, \"libpython3.so\"),\n os.path.join(directory, \"libpython3.dylib\"),\n ])\n\nlibrary_path = next((candidate for candidate in library_candidates if os.path.isfile(candidate)), \"\")\nstable_abi_library_path = next(\n (candidate for candidate in stable_abi_library_candidates if os.path.isfile(candidate)),\n None,\n)\nembedding = None\nif os.path.isfile(header_path) and library_path:\n library_name = os.path.basename(library_path)\n library_kind = \"import\" if os.name == \"nt\" else (\"static\" if library_name.endswith(\".a\") else \"shared\")\n embedding = {\n \"includeDirectory\": include_directory,\n \"headerPath\": header_path,\n \"libraryPath\": library_path,\n \"libraryDirectory\": os.path.dirname(library_path),\n \"libraryName\": library_name,\n \"libraryKind\": library_kind,\n \"stableAbiLibraryPath\": stable_abi_library_path,\n }\n\nrelease_level = sys.version_info.releaselevel\nrelease_suffixes = {\n \"alpha\": \"a\",\n \"beta\": \"b\",\n \"candidate\": \"rc\",\n \"final\": \"\",\n}\nrelease_suffix = release_suffixes[release_level]\nif release_suffix:\n release_suffix += str(sys.version_info.serial)\n\nprint(json.dumps({\n \"executable\": sys.executable,\n \"baseExecutable\": getattr(sys, \"_base_executable\", sys.executable),\n \"version\": \".\".join(map(str, sys.version_info[:3])) + release_suffix,\n \"major\": sys.version_info.major,\n \"minor\": sys.version_info.minor,\n \"patch\": sys.version_info.micro,\n \"releaseLevel\": release_level,\n \"implementation\": sys.implementation.name,\n \"architecture\": platform.machine().lower(),\n \"pointerBits\": struct.calcsize(\"P\") * 8,\n \"prefix\": sys.prefix,\n \"basePrefix\": base_prefix,\n \"virtualEnvironment\": sys.prefix if sys.prefix != base_prefix else None,\n \"gilDisabled\": bool(sysconfig.get_config_var(\"Py_GIL_DISABLED\")),\n \"embedding\": embedding,\n}))\n`;\n\nexport function pythonSatisfiesPolicy(\n python: PythonInfo,\n options: Pick<ResolvedPyfigOptions, 'requiresPython' | 'requireEmbedding' | 'requireGil'>,\n): boolean {\n return pep440VersionSatisfies(python.version, options.requiresPython) &&\n (!options.requireEmbedding || (\n python.implementation === 'cpython' &&\n python.embedding !== null &&\n pythonArchitectureMatchesRuntime(python)\n )) &&\n (!options.requireGil || !python.gilDisabled);\n}\n\nexport async function probePython(\n candidate: CommandSpec,\n options: ResolvedPyfigOptions,\n): Promise<PythonInfo | null> {\n const executable = await resolveExecutable(candidate.executable, options.env);\n if (!executable) return null;\n try {\n const { stdout } = run(\n executable,\n [...candidate.args, '-c', PYTHON_PROBE],\n options.env,\n options.probeTimeoutMs,\n );\n const info = JSON.parse(stdout.trim()) as PythonInfo;\n return normalizePep440Version(info.version) ? info : null;\n } catch {\n return null;\n }\n}\n\nexport async function findUv(options: ResolvedPyfigOptions): Promise<UvInfo | null> {\n const configured = options.env['PYFIG_UV'] ?? 'uv';\n const executable = await resolveExecutable(configured, options.env);\n const uv = executable ? probeUv(executable, options) : null;\n return uv && pep440VersionSatisfies(uv.version, options.requiresUv) ? uv : null;\n}\n\nexport function probeUv(\n executable: string,\n options: ResolvedPyfigOptions,\n): UvInfo | null {\n try {\n const { stdout } = run(executable, ['--version'], options.env, options.probeTimeoutMs);\n const version = normalizeVersion(stdout.match(/^uv\\s+(\\S+)/iu)?.[1]);\n return version ? { executable, version } : null;\n } catch {\n return null;\n }\n}\n\nfunction normalizeVersion(value: string | undefined): string | null {\n if (!value) return null;\n return normalizePep440Version(value);\n}\n\nfunction pythonArchitectureMatchesRuntime(python: PythonInfo): boolean {\n const architecture = python.architecture.toLowerCase();\n if (python.pointerBits !== (process.arch === 'ia32' ? 32 : 64)) return false;\n if (process.arch === 'x64') return architecture === 'x86_64' || architecture === 'amd64';\n if (process.arch === 'arm64') return architecture === 'aarch64' || architecture === 'arm64';\n if (process.arch === 'ia32') {\n return architecture === 'x86' || architecture === 'i386' || architecture === 'i686';\n }\n return architecture === process.arch;\n}\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA6B,IAA7B;;;ACAuC,IAAvC;AACoD,IAApD;AAWO,IAVP;AAWe,IAAf;AACe,IAAf;AACiB,IAAjB;AACyB,IAAzB;AACyB,IAAzB;AAC0B,IAA1B;AACqB,IAArB;AACyC,IAAzC;;;ACpBiB,IAAjB;AAC0B,IAA1B;;;ACIO,IALP;AAQO,SAAS,sBAAsB,CAAC,WAA4B;AAAA,EACjE,OAAO,yBAAqB,SAAS;AAAA;AAIhC,SAAS,sBAAsB,CAAC,SAAgC;AAAA,EACrE,OAAO,oBAAmB,OAAO;AAAA;AAO5B,SAAS,sBAAsB,CAAC,SAAiB,WAA4B;AAAA,EAClF,OAAO,qBAAO,CAAC,OAAO,GAAG,SAAS,EAAE,WAAW;AAAA;AAI1C,SAAS,gBAAgB,CAC9B,UACA,WACe;AAAA,EACf,OAAO,4BAAc,CAAC,GAAG,QAAQ,GAAG,SAAS;AAAA;;;AC9BhC,IAAf;AACiB,IAAjB;AAGO,SAAS,kBAAkB,CAAC,iBAAyB,QAAQ,IAAI,GAAW;AAAA,EACjF,MAAM,QAAQ,yBAAK,QAAQ,cAAc;AAAA,EACzC,WAAW,aAAa,UAAU,KAAK,GAAG;AAAA,IACxC,IAAI,uBAAG,WAAW,yBAAK,KAAK,WAAW,MAAM,CAAC;AAAA,MAAG,OAAO;AAAA,EAC1D;AAAA,EACA,OAAO;AAAA;AAGT,UAAU,SAAS,CAAC,gBAA2C;AAAA,EAC7D,IAAI,YAAY;AAAA,EAChB,OAAO,MAAM;AAAA,IACX,MAAM;AAAA,IACN,MAAM,SAAS,yBAAK,QAAQ,SAAS;AAAA,IACrC,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,YAAY;AAAA,EACd;AAAA;;;AFXK,IAAM,0BAA0B;AAChC,IAAM,yBAAyB;AAG/B,IAAM,sBAAsB;AAEnC,IAAM,2BAA2B;AACjC,IAAM,6BAA6B,KAAK;AACxC,IAAM,8BAA8B,IAAI;AAKxC,IAAM,oBAAoB,MAAM;AAAA,EAC9B,MAAM,WAAoB;AAAA,EAG1B,MAAM,iBAAiB,OAAO,aAAa,aAAa,WAAW,SAAS;AAAA,EAC5E,IAAI,CAAC;AAAA,IAAgB,MAAM,IAAI,UAAU,gDAAgD;AAAA,EACzF,OAAO;AAAA,GACN;AA2DI,SAAS,cAAc,CAAC,UAAwB,CAAC,GAAyB;AAAA,EAG/E,MAAM,MAAM,KAAM,QAAQ,OAAO,QAAQ,IAAK;AAAA,EAC9C,MAAM,iBAAiB,QAAQ,kBAC7B,IAAI,4BAA4B;AAAA,EAClC,MAAM,aAAa,QAAQ,cAAc,IAAI,wBAAwB;AAAA,EACrE,sBAAsB,mBAAmB,cAAc;AAAA,EACvD,sBAAsB,eAAe,UAAU;AAAA,EAE/C,MAAM,gBAAgB,QAAQ,iBAC5B,IAAI,2BAA2B;AAAA,EACjC,2BAA2B,eAAe,cAAc;AAAA,EAExD,MAAM,iBAAiB,gBACrB,kBACA,QAAQ,gBACR,IAAI,2BACJ,wBACF;AAAA,EACA,MAAM,mBAAmB,gBACvB,oBACA,QAAQ,kBACR,IAAI,6BACJ,0BACF;AAAA,EACA,MAAM,oBAAoB,gBACxB,qBACA,QAAQ,mBACR,IAAI,8BACJ,2BACF;AAAA,EACA,MAAM,wBAAwB,gBAC5B,yBACA,QAAQ,uBACR,IAAI,kCACJ,mBAAmB,oBAAoB,KACzC;AAAA,EACA,MAAM,iBAAiB,QAAQ,YAAY,IAAI;AAAA,EAC/C,MAAM,WAAW,iBACb,0BAAK,QAAQ,cAAc,IAC3B,iBAAiB,SAAS,EAAE,QAAQ,GAAG,CAAC,EAAE;AAAA,EAC9C,MAAM,wBAAwB,QAAQ,eAAe,IAAI;AAAA,EACzD,MAAM,cAAc,wBAChB,0BAAK,QAAQ,qBAAqB,IAClC,mBAAmB,IAAI,eAAe,QAAQ,IAAI,CAAC;AAAA,EACvD,MAAM,cAAc,QAAQ,eAAe,aAAa,IAAI,uBAAuB,IAAI;AAAA,EAEvF,OAAO;AAAA,IACL,QAAQ,QAAQ,UAAU,IAAI,mBAAmB;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB,QAAQ,oBAAoB,aAAa,IAAI,4BAA4B,KAAK;AAAA,IAChG,YAAY,QAAQ,cAAc,aAAa,IAAI,sBAAsB,KAAK;AAAA,IAC9E;AAAA,IACA,eAAe,QAAQ,iBAAiB,aAAa,IAAI,yBAAyB,WAAW;AAAA,IAC7F,WAAW,QAAQ,aAAa,aAAa,IAAI,qBAAqB,WAAW;AAAA,IACjF,0BAA0B,QAAQ,4BAChC,aAAa,IAAI,qCAAqC,WAAW;AAAA,IACnE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAIK,SAAS,aAAa,CAAC,SAAkD;AAAA,EAC9E,OAAO;AAAA,OACF,QAAQ;AAAA,IACX,uBAAuB,0BAAK,KAAK,QAAQ,UAAU,QAAQ;AAAA,IAC3D,cAAc,0BAAK,KAAK,QAAQ,UAAU,UAAU;AAAA,IACpD,sBAAsB;AAAA,IACtB,cAAc;AAAA,EAChB;AAAA;AAGF,SAAS,qBAAqB,CAAC,MAAc,WAAyB;AAAA,EACpE,IAAI,CAAC,uBAAuB,SAAS,GAAG;AAAA,IACtC,MAAM,IAAI,UAAU,WAAW,2BAA2B,WAAW;AAAA,EACvE;AAAA;AAGF,SAAS,0BAA0B,CAAC,SAAiB,gBAA8B;AAAA,EACjF,IAAI,CAAC,WAAW,eAAe,KAAK,OAAO,KAAK,QAAQ,SAAS,IAAI,GAAG;AAAA,IACtE,MAAM,IAAI,UAAU,mCAAmC,SAAS;AAAA,EAClE;AAAA,EACA,IAAI,wBAAwB,KAAK,OAAO,GAAG;AAAA,IACzC,MAAM,aAAa,QAAQ,MAAM,GAAG,EAAE,WAAW,IAAI,GAAG,cAAc;AAAA,IACtE,IAAI,CAAC,uBAAuB,YAAY,cAAc,GAAG;AAAA,MACvD,MAAM,IAAI,UACR,kBAAkB,0CAA0C,iBAC9D;AAAA,IACF;AAAA,EACF;AAAA;AAGF,SAAS,eAAe,CACtB,MACA,UACA,aACA,UACA,YAAY,OACJ;AAAA,EACR,MAAM,QAAQ,aAAa,gBAAgB,YAAY,WAAW,OAAO,WAAW;AAAA,EACpF,MAAM,UAAU,YAAY,IAAI;AAAA,EAChC,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,SAAS;AAAA,IACnD,MAAM,IAAI,UAAU,GAAG,gBAAgB,YAAY,mBAAmB,uBAAuB;AAAA,EAC/F;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,OAA2B,UAA4B;AAAA,EAC3E,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,IAAI,sBAAsB,KAAK,KAAK;AAAA,IAAG,OAAO;AAAA,EAC9C,IAAI,uBAAuB,KAAK,KAAK;AAAA,IAAG,OAAO;AAAA,EAC/C,MAAM,IAAI,UAAU,0BAA0B,OAAO;AAAA;;;AG/M9B,IAAzB;AAWO,eAAe,oBAAuB,CAC3C,SACY;AAAA,EACZ,IAAI;AAAA,EACJ,MAAM,SAAS,MAAM,uBACnB,EAAE,UAAU,QAAQ,IAAI,GACxB,QAAQ,QACR;AAAA,IACE,KAAK,QAAQ;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS,QAAQ;AAAA,IACjB,WAAW,YAAY;AAAA,MACrB,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAAA,MAClC,IAAI,UAAU;AAAA,QAAM,OAAO;AAAA,MAC3B,WAAW,EAAE,MAAM;AAAA,MACnB,OAAO;AAAA;AAAA,EAEX,CACF;AAAA,EAEA,IAAI,OAAO,QAAQ,UAAU;AAAA,IAAY,OAAO,OAAO;AAAA,EACvD,IAAI;AAAA,IAAU,OAAO,SAAS;AAAA,EAC9B,MAAM,IAAI,MAAM,0BAA0B,QAAQ,iCAAiC;AAAA;;;AClCtE,IAAf;AACiB,IAAjB;AAEO,IAAM,6BAA6B,0BAAK,KAAK,gBAAgB,UAAU,MAAM;AAE7E,SAAS,2BAA2B,CAAC,aAA6B;AAAA,EACvE,OAAO,0BAAK,KAAK,aAAa,0BAA0B;AAAA;AAInD,SAAS,qCAAqC,CACnD,aACA,KACU;AAAA,EACV,MAAM,aAAa,CAAC,IAAI,gBAAgB,0BAAK,KAAK,aAAa,OAAO,CAAC,EACpE,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC,EACjD,IAAI,CAAC,UAAU,0BAAK,QAAQ,KAAK,CAAC;AAAA,EACrC,OAAO,CAAC,GAAG,IAAI,IAAI,WAAW,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;AAAA;AAGhF,SAAS,kCAAkC,CAAC,oBAAoC;AAAA,EACrF,OAAO,0BAAK,KACV,oBACA,QAAQ,aAAa,UAAU,YAAY,OAC3C,QAAQ,aAAa,UAAU,eAAe,QAChD;AAAA;AAIK,SAAS,0BAA0B,CACxC,KACA,oBACA,kBACmB;AAAA,EACnB,MAAM,YAAY,KAAK,IAAI;AAAA,EAC3B,MAAM,YAAY,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,MAAM,MAAM;AAAA,EACnF,MAAM,eAAe,YAAY,UAAU,aAAa;AAAA,EACxD,WAAW,OAAO,OAAO,KAAK,SAAS,GAAG;AAAA,IACxC,MAAM,aAAa,IAAI,YAAY;AAAA,IACnC,IAAI,eAAe,UAAU,eAAe,gBAAgB,eAAe,eAAe;AAAA,MACxF,OAAO,UAAU;AAAA,IACnB;AAAA,EACF;AAAA,EACA,UAAU,UAAU,CAAC,0BAAK,QAAQ,gBAAgB,GAAG,YAAY,EAC9D,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC,EACjD,KAAK,0BAAK,SAAS;AAAA,EACtB,UAAU,iBAAiB;AAAA,EAC3B,OAAO;AAAA;AAGF,SAAS,UAAU,CAAC,MAAc,OAAwB;AAAA,EAC/D,OAAO,cAAc,IAAI,MAAM,cAAc,KAAK;AAAA;AAI7C,SAAS,aAAa,CAAC,OAAuB;AAAA,EACnD,MAAM,WAAW,0BAAK,QAAQ,KAAK;AAAA,EACnC,IAAI,YAAY;AAAA,EAChB,IAAI;AAAA,IACF,YAAY,wBAAG,aAAa,OAAO,QAAQ;AAAA,IAC3C,MAAM;AAAA,EAGR,OAAO,QAAQ,aAAa,UAAU,UAAU,YAAY,IAAI;AAAA;;;AC5DlE,IAAM,iBAAiB,IAAI,IAAI;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,+BAA+B,IAAI,IAAI;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,yBAAyB,CAAC,MAAkC;AAAA,EAC1E,OAAO,KAAK,OAAO,SAAS,KAAK,OAAO;AAAA;AAInC,SAAS,iBAAiB,CAC/B,MACA,QACU;AAAA,EACV,IAAI,CAAC,OAAO,oBAAoB;AAAA,IAC9B,MAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAAA,EACA,uBAAuB,IAAI;AAAA,EAC3B,IAAI,KAAK,OAAO,OAAO;AAAA,IACrB,OAAO,CAAC,OAAO,gBAAgB,YAAY,OAAO,YAAY,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,EAChF;AAAA,EACA,IAAI,KAAK,OAAO,SAAS,KAAK,IAAI;AAAA,IAChC,OAAO,CAAC,OAAO,KAAK,IAAI,YAAY,OAAO,YAAY,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,EACzE;AAAA,EACA,OAAO,CAAC,GAAG,IAAI;AAAA;AAGV,SAAS,oBAAoB,CAClC,KACA,QACmB;AAAA,EACnB,MAAM,YAAY,sBAAsB,GAAG;AAAA,EAC3C,IAAI,CAAC,QAAQ;AAAA,IAAoB,OAAO;AAAA,EACxC,OAAO;AAAA,OACF,2BACD,WACA,OAAO,oBACP,OAAO,UACT;AAAA,IACA,WAAW,OAAO;AAAA,EACpB;AAAA;AAIK,SAAS,qBAAqB,CAAC,KAA2C;AAAA,EAC/E,MAAM,YAAY,KAAK,IAAI;AAAA,EAC3B,WAAW,OAAO,OAAO,KAAK,SAAS,GAAG;AAAA,IACxC,IAAI,6BAA6B,IAAI,IAAI,YAAY,CAAC;AAAA,MAAG,OAAO,UAAU;AAAA,EAC5E;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAAC,MAA+B;AAAA,EAC7D,WAAW,YAAY,KAAK,MAAM,CAAC,GAAG;AAAA,IACpC,IAAI,aAAa;AAAA,MAAM;AAAA,IACvB,OAAO,QAAQ,SAAS,MAAM,KAAK,CAAC;AAAA,IACpC,IAAI,QAAQ,eAAe,IAAI,IAAI,GAAG;AAAA,MACpC,MAAM,IAAI,MAAM,GAAG,yDAAyD;AAAA,IAC9E;AAAA,IACA,IAAI,aAAa,QAAQ,SAAS,WAAW,KAAK,KAAK,WAAW,KAAK,QAAQ,GAAG;AAAA,MAChF,MAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AAAA,EACF;AAAA;;;AC7F+B,IAAjC;AACiB,IAAjB;AACkB,IAAlB;AAYO,eAAe,iBAAiB,CACrC,OACA,KACwB;AAAA,EACxB,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,IAAI,0BAAK,WAAW,KAAK,GAAG;AAAA,IAC1B,OAAO,MAAM,qBAAM,OAAO,EAAE,SAAS,MAAM,MAAM,IAAI,SAAS,SAAS,IAAI,WAAW,CAAC;AAAA,EACzF;AAAA,EACA,IAAI,CAAC,qBAAqB,KAAK,KAAK;AAAA,IAAG,OAAO;AAAA,EAC9C,OAAO,MAAM,qBAAM,OAAO,EAAE,SAAS,MAAM,MAAM,IAAI,SAAS,SAAS,IAAI,WAAW,CAAC;AAAA;AAGlF,SAAS,GAAG,CACjB,YACA,MACA,KACA,WACW;AAAA,EACX,MAAM,SAAS,oCAAU,YAAY,MAAM;AAAA,IACzC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,WAAW,IAAI,OAAO;AAAA,IACtB,aAAa;AAAA,EACf,CAAC;AAAA,EACD,IAAI,OAAO,WAAW,KAAK,OAAO,OAAO;AAAA,IACvC,MAAM,SAAS,OAAO,QAAQ,KAAK,KAAK,OAAO,OAAO,WAAW,QAAQ,OAAO;AAAA,IAChF,MAAM,IAAI,MAAM,GAAG,0BAAK,SAAS,UAAU,KAAK,KAAK,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,QAAQ;AAAA,EAChG;AAAA,EACA,OAAO,EAAE,QAAQ,OAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA;AAIjD,eAAe,QAAQ,CAC5B,YACA,MACA,KACA,WACA,QACA,KACoB;AAAA,EACpB,OAAO,IAAI,QAAmB,CAAC,SAAS,WAAW;AAAA,IACjD,MAAM,QAAQ,gCAAM,YAAY,MAAM;AAAA,MACpC;AAAA,MACA;AAAA,MACA,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,MAChC,aAAa;AAAA,IACf,CAAC;AAAA,IACD,IAAI,SAAS;AAAA,IACb,IAAI,SAAS;AAAA,IACb,IAAI,UAAU;AAAA,IACd,MAAM,SAAS,CAAC,OAAe,WAA6B;AAAA,MAC1D,IAAI;AAAA,QAAS;AAAA,MACb,UAAU;AAAA,MACV,aAAa,KAAK;AAAA,MAClB,QAAQ,oBAAoB,SAAS,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAO,OAAO,KAAK;AAAA,MACvB,KAAK,IAAI;AAAA,QAAQ,QAAQ,MAAM;AAAA;AAAA,IAEjC,MAAM,QAAQ,MAAY;AAAA,MACxB,MAAM,KAAK;AAAA,MACX,MAAM,SAAS,QAAQ;AAAA,MACvB,OAAO,kBAAkB,QAAQ,SAAS,IAAI,MAAM,GAAG,0BAAK,SAAS,UAAU,gBAAgB,CAAC;AAAA;AAAA,IAElG,MAAM,QAAQ,WAAW,MAAM;AAAA,MAC7B,MAAM,KAAK;AAAA,MACX,OAAO,IAAI,MAAM,GAAG,0BAAK,SAAS,UAAU,qBAAqB,cAAc,CAAC;AAAA,OAC/E,SAAS;AAAA,IAEZ,MAAM,OAAO,YAAY,MAAM;AAAA,IAC/B,MAAM,OAAO,YAAY,MAAM;AAAA,IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB;AAAA,MACzC,UAAU;AAAA,MACV,IAAI,OAAO,SAAS,IAAI,OAAO,MAAM;AAAA,QACnC,MAAM,KAAK;AAAA,QACX,OAAO,IAAI,MAAM,GAAG,0BAAK,SAAS,UAAU,8BAA8B,CAAC;AAAA,MAC7E;AAAA,KACD;AAAA,IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB;AAAA,MACzC,UAAU;AAAA,MACV,IAAI,OAAO,SAAS,IAAI,OAAO,MAAM;AAAA,QACnC,MAAM,KAAK;AAAA,QACX,OAAO,IAAI,MAAM,GAAG,0BAAK,SAAS,UAAU,oCAAoC,CAAC;AAAA,MACnF;AAAA,KACD;AAAA,IACD,MAAM,KAAK,SAAS,CAAC,UAAU,OAAO,KAAK,CAAC;AAAA,IAC5C,MAAM,KAAK,SAAS,CAAC,MAAM,gBAAgB;AAAA,MACzC,IAAI,SAAS,GAAG;AAAA,QACd,MAAM,SAAS,OAAO,KAAK,MAAM,cAAc,UAAU,gBAAgB,QAAQ;AAAA,QACjF,OAAO,IAAI,MAAM,GAAG,0BAAK,SAAS,UAAU,KAAK,KAAK,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,QAAQ,CAAC;AAAA,QAChG;AAAA,MACF;AAAA,MACA,OAAO,WAAW,EAAE,QAAQ,OAAO,CAAC;AAAA,KACrC;AAAA,IAED,IAAI,QAAQ;AAAA,MAAS,MAAM;AAAA,IAC3B;AAAA,MAAK,QAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,GAC7D;AAAA;;;AC1EH,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyFd,SAAS,qBAAqB,CACnC,QACA,SACS;AAAA,EACT,OAAO,uBAAuB,OAAO,SAAS,QAAQ,cAAc,MACjE,CAAC,QAAQ,oBACR,OAAO,mBAAmB,aAC1B,OAAO,cAAc,QACrB,iCAAiC,MAAM,OAExC,CAAC,QAAQ,cAAc,CAAC,OAAO;AAAA;AAG7B,eAAe,WAAW,CAC/B,WACA,SAC4B;AAAA,EAC5B,MAAM,aAAa,MAAM,kBAAkB,UAAU,YAAY,QAAQ,GAAG;AAAA,EAC5E,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,IAAI;AAAA,IACF,QAAQ,WAAW,IACjB,YACA,CAAC,GAAG,UAAU,MAAM,MAAM,YAAY,GACtC,QAAQ,KACR,QAAQ,cACV;AAAA,IACA,MAAM,OAAO,KAAK,MAAM,OAAO,KAAK,CAAC;AAAA,IACrC,OAAO,uBAAuB,KAAK,OAAO,IAAI,OAAO;AAAA,IACrD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,eAAe,MAAM,CAAC,SAAuD;AAAA,EAClF,MAAM,aAAa,QAAQ,IAAI,eAAe;AAAA,EAC9C,MAAM,aAAa,MAAM,kBAAkB,YAAY,QAAQ,GAAG;AAAA,EAClE,MAAM,KAAK,aAAa,QAAQ,YAAY,OAAO,IAAI;AAAA,EACvD,OAAO,MAAM,uBAAuB,GAAG,SAAS,QAAQ,UAAU,IAAI,KAAK;AAAA;AAGtE,SAAS,OAAO,CACrB,YACA,SACe;AAAA,EACf,IAAI;AAAA,IACF,QAAQ,WAAW,IAAI,YAAY,CAAC,WAAW,GAAG,QAAQ,KAAK,QAAQ,cAAc;AAAA,IACrF,MAAM,UAAU,iBAAiB,OAAO,MAAM,eAAe,IAAI,EAAE;AAAA,IACnE,OAAO,UAAU,EAAE,YAAY,QAAQ,IAAI;AAAA,IAC3C,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,gBAAgB,CAAC,OAA0C;AAAA,EAClE,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,OAAO,uBAAuB,KAAK;AAAA;AAGrC,SAAS,gCAAgC,CAAC,QAA6B;AAAA,EACrE,MAAM,eAAe,OAAO,aAAa,YAAY;AAAA,EACrD,IAAI,OAAO,iBAAiB,QAAQ,SAAS,SAAS,KAAK;AAAA,IAAK,OAAO;AAAA,EACvE,IAAI,QAAQ,SAAS;AAAA,IAAO,OAAO,iBAAiB,YAAY,iBAAiB;AAAA,EACjF,IAAI,QAAQ,SAAS;AAAA,IAAS,OAAO,iBAAiB,aAAa,iBAAiB;AAAA,EACpF,IAAI,QAAQ,SAAS,QAAQ;AAAA,IAC3B,OAAO,iBAAiB,SAAS,iBAAiB,UAAU,iBAAiB;AAAA,EAC/E;AAAA,EACA,OAAO,iBAAiB,QAAQ;AAAA;;;AR7H3B,eAAe,QAAQ,CAAC,UAAwB,CAAC,GAAoB;AAAA,EAC1E,OAAO,iBAAiB,eAAe,OAAO,CAAC;AAAA;AAO1C,eAAe,iBAAiB,CACrC,UAAwB,CAAC,GACzB,eAAkC,CAAC,GACnC,oBAA8C,CAAC,GACnB;AAAA,EAC5B,MAAM,WAAW,eAAe,OAAO;AAAA,EACvC,MAAM,aAAa,sBAAsB,YAAY;AAAA,EACrD,MAAM,aAAa,2BAA2B,iBAAiB;AAAA,EAC/D,MAAM,KAAK,MAAM,iBAAiB,QAAQ;AAAA,EAC1C,MAAM,SAAS,MAAM,iCAAiC,UAAU,EAAE;AAAA,EAClE,IAAI,WAAW,SAAS,KAAK,WAAW,OAAO,SAAS,KACpD,WAAW,OAAO,SAAS,KAAK,WAAW,WAAW;AAAA,IACxD,MAAM,2BAA2B,IAAI,QAAQ,YAAY,YAAY,QAAQ;AAAA,EAC/E;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS,qBAAqB,QAAQ,QAAQ;AAAA,EAChD;AAAA;AAGF,eAAe,gCAAgC,CAC7C,SACA,IACqB;AAAA,EACrB,MAAM,WAAW,MAAM,wBAAwB,OAAO;AAAA,EACtD,IAAI;AAAA,IAAU,OAAO;AAAA,EAErB,MAAM,YAAY,4BAA4B,QAAQ,WAAW;AAAA,EACjE,MAAM,QAAQ,YAAwC;AAAA,IACpD,MAAM,YAAY,MAAM,0BAA0B,WAAW,OAAO;AAAA,IACpE,OAAO,aAAa,sBAAsB,WAAW,OAAO,KAC1D,MAAM,0CAA0C,WAAW,OAAO,IAChE,YACA;AAAA;AAAA,EAEN,IAAI,CAAC,QAAQ,0BAA0B;AAAA,IACrC,MAAM,IAAI,MACR,sEACA,sBAAsB,YACxB;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,MAAM,yBAAyB,IAAI,OAAO;AAAA,EAC7D,OAAO,qBAAqB;AAAA,IAC1B,KAAK,QAAQ,cAAc,SAAS;AAAA,IACpC,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA,QAAQ,YAAY;AAAA,MAGlB,MAAM,mBAAG,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,MACpD,MAAM,sBAAM,0BAAK,QAAQ,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MACxD,MAAM,SACJ,GAAG,YACH;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,MACF,GACA,sBAAsB,OAAO,GAC7B,QAAQ,gBACV;AAAA,MACA,MAAM,YAAY,MAAM,MAAM;AAAA,MAC9B,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,MACR,cAAc,wEAChB;AAAA,MACF;AAAA,MACA,OAAO;AAAA;AAAA,EAEX,CAAC;AAAA;AAGH,eAAe,uBAAuB,CACpC,SAC4B;AAAA,EAC5B,IAAI,QAAQ,QAAQ;AAAA,IAClB,MAAM,aAAa,MAAM,YAAY,EAAE,YAAY,QAAQ,QAAQ,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,IACtF,IAAI,CAAC,cAAc,CAAC,sBAAsB,YAAY,OAAO,GAAG;AAAA,MAC9D,MAAM,6BAA6B,OAAO;AAAA,IAC5C;AAAA,IACA,IAAI,WAAW;AAAA,MAAoB,OAAO;AAAA,EAC5C;AAAA,EAEA,WAAW,aAAa;AAAA,IACtB,GAAG,sCAAsC,QAAQ,aAAa,QAAQ,GAAG;AAAA,IACzE,4BAA4B,QAAQ,WAAW;AAAA,EACjD,GAAG;AAAA,IACD,MAAM,OAAO,MAAM,0BAA0B,WAAW,OAAO;AAAA,IAC/D,IAAI,QAAQ,sBAAsB,MAAM,OAAO,KAC3C,MAAM,0CAA0C,MAAM,OAAO,GAAG;AAAA,MAClE,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,wBAAwB,CACrC,IACA,SACqB;AAAA,EACrB,IAAI,QAAQ,QAAQ;AAAA,IAClB,MAAM,aAAa,MAAM,YAAY,EAAE,YAAY,QAAQ,QAAQ,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,IACtF,IAAI,CAAC,cAAc,CAAC,sBAAsB,YAAY,OAAO,GAAG;AAAA,MAC9D,MAAM,6BAA6B,OAAO;AAAA,IAC5C;AAAA,IACA,IAAI,CAAC,WAAW;AAAA,MAAoB,OAAO;AAAA,IAC3C,MAAM,OAAO,MAAM,YAAY,EAAE,YAAY,WAAW,gBAAgB,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,IAC3F,IAAI,QAAQ,sBAAsB,MAAM,OAAO;AAAA,MAAG,OAAO;AAAA,IACzD,MAAM,6BAA6B,OAAO;AAAA,EAC5C;AAAA,EAIA,MAAM,SAAS,MAAM,iBAAiB,IAAI,SAAS,QAAQ;AAAA,EAC3D,IAAI;AAAA,IAAQ,OAAO;AAAA,EACnB,MAAM,gBAAgB,MAAM,iBAAiB,IAAI,SAAS,SAAS;AAAA,EACnE,IAAI;AAAA,IAAe,OAAO;AAAA,EAC1B,IAAI,CAAC,QAAQ,eAAe;AAAA,IAC1B,MAAM,IAAI,MAAM,qBAAqB,SAAS,yCAAyC,CAAC;AAAA,EAC1F;AAAA,EAEA,OAAO,qBAAqB;AAAA,IAC1B,KAAK,UAAU,cAAc,0BAAK,KAAK,QAAQ,UAAU,QAAQ,CAAC;AAAA,IAClE,WAAW,QAAQ;AAAA,IACnB,OAAO,MAAM,iBAAiB,IAAI,SAAS,SAAS;AAAA,IACpD,QAAQ,YAAY;AAAA,MAClB,MAAM,SACJ,GAAG,YACH,CAAC,UAAU,WAAW,eAAe,QAAQ,aAAa,GAC1D,sBAAsB,OAAO,GAC7B,QAAQ,gBACV;AAAA,MACA,MAAM,YAAY,MAAM,iBAAiB,IAAI,SAAS,SAAS;AAAA,MAC/D,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,MAAM,qBACd,SACA,gBAAgB,QAAQ,4CAC1B,CAAC;AAAA,MACH;AAAA,MACA,OAAO;AAAA;AAAA,EAEX,CAAC;AAAA;AAGH,eAAe,gBAAgB,CAC7B,IACA,SACA,QAC4B;AAAA,EAC5B,WAAW,WAAW,CAAC,IAAI,QAAQ,aAAa,GAAG;AAAA,IACjD,MAAM,OAAO;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,WAAW,aAAa;AAAA,IACrC;AAAA,IACA,IAAI;AAAA,MAAS,KAAK,KAAK,OAAO;AAAA,IAC9B,IAAI;AAAA,MACF,QAAQ,WAAW,MAAM,SACvB,GAAG,YACH,MACA,gCAAgC,OAAO,GACvC,QAAQ,cACV;AAAA,MACA,MAAM,OAAO,MAAM,YAAY,EAAE,YAAY,OAAO,KAAK,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,MAC/E,IAAI,QAAQ,sBAAsB,MAAM,OAAO;AAAA,QAAG,OAAO;AAAA,MACzD,MAAM;AAAA,EAGV;AAAA,EAMA,IAAI;AAAA,IACF,QAAQ,WAAW,MAAM,SACvB,GAAG,YACH;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,WAAW,wBAAwB;AAAA,IAChD,GACA,gCAAgC,OAAO,GACvC,QAAQ,cACV;AAAA,IACA,MAAM,aAAa,qBAAqB,MAAM;AAAA,IAC9C,WAAW,cAAc,YAAY;AAAA,MACnC,MAAM,OAAO,MAAM,YAAY,EAAE,YAAY,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,MAChE,IAAI,QAAQ,CAAC,KAAK,sBAAsB,sBAAsB,MAAM,OAAO,GAAG;AAAA,QAC5E,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,MAAM;AAAA,EAGR,OAAO;AAAA;AAGT,SAAS,oBAAoB,CAAC,QAA0B;AAAA,EACtD,MAAM,SAAS,KAAK,MAAM,MAAM;AAAA,EAChC,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,IAAG,OAAO,CAAC;AAAA,EACpC,MAAM,QAAQ,OAAO,QAAQ,CAAC,UAAU;AAAA,IACtC,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,EAAE,UAAU;AAAA,MAAQ,OAAO,CAAC;AAAA,IACvE,MAAM,YAAa,MAA6B;AAAA,IAChD,OAAO,OAAO,cAAc,YAAY,YAAY,CAAC,SAAS,IAAI,CAAC;AAAA,GACpE;AAAA,EACD,OAAO,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;AAAA;AAG9F,eAAe,yBAAyB,CACtC,WACA,SAC4B;AAAA,EAC5B,MAAM,aAAa,mCAAmC,SAAS;AAAA,EAC/D,MAAM,OAAO,MAAM,YAAY,EAAE,YAAY,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,EAChE,OAAO,MAAM,sBAAsB,WAAW,KAAK,oBAAoB,SAAS,IAAI,OAAO;AAAA;AAG7F,eAAe,0BAA0B,CACvC,IACA,QACA,cACA,mBACA,SACe;AAAA,EACf,IAAI,CAAC,OAAO,oBAAoB;AAAA,IAC9B,MAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAAA,EACA,MAAM,qBAAqB;AAAA,IACzB,KAAK,gBAAgB,cAAc,OAAO,kBAAkB;AAAA,IAC5D,WAAW,QAAQ;AAAA,IACnB,OAAO,YAAY;AAAA,IACnB,QAAQ,YAAY;AAAA,MAClB,MAAM,YAAY,MAAM,wBAAQ,0BAAK,KAAK,uBAAG,OAAO,GAAG,qBAAqB,CAAC;AAAA,MAC7E,IAAI;AAAA,QACF,MAAM,YAAY,0BAAK,KAAK,WAAW,0BAA0B;AAAA,QACjE,MAAM,WAAW,0BAAK,KAAK,WAAW,2BAA2B;AAAA,QACjE,MAAM,YAAY,0BAAK,KAAK,QAAQ,aAAa,gBAAgB;AAAA,QACjE,MAAM,eAAe,wBAAG,WAAW,SAAS;AAAA,QAC5C,IAAI,CAAC,iBACH,kBAAkB,OAAO,SAAS,KAClC,kBAAkB,OAAO,SAAS,KAClC,kBAAkB,YACjB;AAAA,UACD,MAAM,IAAI,MAAM,+DAA+D;AAAA,QACjF;AAAA,QACA,MAAM,UAAU,eAAe,CAAC,SAAS,IAAI,CAAC;AAAA,QAC9C,IAAI,aAAa,SAAS,GAAG;AAAA,UAC3B,MAAM,0BAAU,WAAW,GAAG,aAAa,KAAK;AAAA,CAAI;AAAA,GAAO,MAAM;AAAA,UACjE,QAAQ,KAAK,SAAS;AAAA,QACxB;AAAA,QACA,MAAM,gBAAgB;AAAA,UACpB,GAAG,kBAAkB,OAAO,QAAQ,CAAC,UAAU,CAAC,WAAW,KAAK,CAAC;AAAA,UACjE,GAAG,kBAAkB,OAAO,QAAQ,CAAC,UAAU,CAAC,WAAW,KAAK,CAAC;AAAA,UACjE,GAAI,kBAAkB,YAAY,CAAC,cAAc,IAAI,CAAC;AAAA,QACxD;AAAA,QACA,MAAM,SACJ,GAAG,YACH;AAAA,UACE;AAAA,UAAO;AAAA,UAAW;AAAA,UAAe;AAAA,UAAY,OAAO;AAAA,UAAY,GAAG;AAAA,UACnE,GAAG;AAAA,UAAS;AAAA,UAAiB;AAAA,QAC/B,GACA,oBAAoB,SAAS,MAAM,GACnC,QAAQ,kBACR,WACA,QAAQ,WACV;AAAA,QAGA,MAAM,SACJ,GAAG,YACH,CAAC,OAAO,WAAW,eAAe,YAAY,OAAO,YAAY,MAAM,QAAQ,GAC/E,oBAAoB,SAAS,MAAM,GACnC,QAAQ,kBACR,WACA,QAAQ,WACV;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,mBAAG,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA,MAEtD,OAAO;AAAA;AAAA,EAEX,CAAC;AAAA;AAGH,eAAe,gBAAgB,CAAC,SAAgD;AAAA,EAC9E,MAAM,WAAW,MAAM,gBAAgB,OAAO;AAAA,EAC9C,IAAI;AAAA,IAAU,OAAO;AAAA,EACrB,IAAI,CAAC,QAAQ,WAAW;AAAA,IACtB,MAAM,IAAI,MACR,6CAA6C,QAAQ,+CACvD;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,8BAAW,QAAQ,EAAE,OAAO,QAAQ,UAAU,EAAE,OAAO,KAAK;AAAA,EAC9E,OAAO,qBAAqB;AAAA,IAC1B,KAAK,aAAa,cAAc,cAAc,OAAO,CAAC,KAAK;AAAA,IAC3D,WAAW,QAAQ;AAAA,IACnB,OAAO,MAAM,gBAAgB,OAAO;AAAA,IACpC,QAAQ,YAAY;AAAA,MAClB,MAAM,UAAU,MAAM,iBAAiB,OAAO;AAAA,MAC9C,MAAM,aAAa,mBAAmB,SAAS,QAAQ,OAAO;AAAA,MAC9D,MAAM,aAAa,aAAa,SAAS,QAAQ,OAAO;AAAA,MACxD,OAAO,qBAAqB;AAAA,QAC1B,KAAK,cAAc,cAAc,UAAU;AAAA,QAC3C,WAAW,QAAQ;AAAA,QACnB,OAAO,MAAM,gBAAgB,OAAO;AAAA,QACpC,QAAQ,YAAY;AAAA,UAClB,MAAM,UAAU,YAAY,SAAS,OAAO;AAAA,UAC5C,MAAM,SAAS,QAAQ,YAAY,OAAO;AAAA,UAC1C,IAAI,CAAC,UAAU,OAAO,YAAY,QAAQ,SAAS;AAAA,YACjD,MAAM,IAAI,MACR,uBAAuB,QAAQ,sDACjC;AAAA,UACF;AAAA,UACA,OAAO;AAAA;AAAA,MAEX,CAAC;AAAA;AAAA,EAEL,CAAC;AAAA;AAGH,eAAe,eAAe,CAAC,SAAuD;AAAA,EACpF,MAAM,WAAW,MAAM,OAAO,OAAO;AAAA,EACrC,IAAI;AAAA,IAAU,OAAO;AAAA,EACrB,OAAO,cAAc,OAAO;AAAA;AAG9B,eAAe,aAAa,CAAC,SAAuD;AAAA,EAClF,MAAM,UAAU,MAAM,wBAAQ,cAAc,OAAO,GAAG,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC,CAAC;AAAA,EAC7F,IAAI,WAAW,QACZ,OAAO,WAAS,MAAM,YAAY,KAAK,uBAAuB,MAAM,IAAI,MAAM,MAAM,IAAI,EACxF,IAAI,WAAS,MAAM,IAAI;AAAA,EAC1B,OAAO,SAAS,SAAS,GAAG;AAAA,IAC1B,MAAM,WAAW,iBAAiB,UAAU,QAAQ,UAAU;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAU,OAAO;AAAA,IACtB,MAAM,YAAY,QAAQ,aAAa,SAAS,QAAQ,GAAG,OAAO;AAAA,IAClE,IAAI,WAAW,YAAY;AAAA,MAAU,OAAO;AAAA,IAC5C,WAAW,SAAS,OAAO,aAAW,YAAY,QAAQ;AAAA,EAC5D;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,qBAAqB,CAAC,cAA2C;AAAA,EACxE,MAAM,aAAa,aAAa,IAAI,CAAC,eAAe,WAAW,KAAK,CAAC;AAAA,EACrE,WAAW,cAAc,YAAY;AAAA,IACnC,IAAI,CAAC,cAAc,YAAY,KAAK,UAAU,GAAG;AAAA,MAC/C,MAAM,IAAI,UAAU,+BAA+B,KAAK,UAAU,UAAU,GAAG;AAAA,IACjF;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC;AAAA;AAGhC,SAAS,0BAA0B,CACjC,SACoC;AAAA,EACpC,MAAM,SAAS,eAAe,SAAS,QAAQ,UAAU,CAAC,CAAC;AAAA,EAC3D,MAAM,SAAS,eAAe,oBAAoB,QAAQ,UAAU,CAAC,CAAC;AAAA,EACtE,IAAI,QAAQ,aAAa,OAAO,SAAS,GAAG;AAAA,IAC1C,MAAM,IAAI,UAAU,oDAAoD;AAAA,EAC1E;AAAA,EACA,OAAO,EAAE,QAAQ,QAAQ,WAAW,QAAQ,aAAa,MAAM;AAAA;AAGjE,SAAS,cAAc,CAAC,MAAc,OAAoC;AAAA,EACxE,MAAM,aAAa,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAAA,EAClD,WAAW,QAAQ,YAAY;AAAA,IAC7B,IAAI,CAAC,QAAQ,CAAC,gCAAgC,KAAK,IAAI,GAAG;AAAA,MACxD,MAAM,IAAI,UAAU,WAAW,SAAS,KAAK,UAAU,IAAI,GAAG;AAAA,IAChE;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC;AAAA;AAGhC,SAAS,oBAAoB,CAC3B,QACA,SACS;AAAA,EACT,OAAO,QAAQ,OAAO,kBAAkB,KAAK,WAC3C,OAAO,oBACP,4BAA4B,QAAQ,WAAW,CACjD;AAAA;AAGF,SAAS,qBAAqB,CAAC,SAAkD;AAAA,EAC/E,OAAO,sBAAsB,cAAc,OAAO,CAAC;AAAA;AAIrD,SAAS,+BAA+B,CACtC,SACmB;AAAA,EACnB,MAAM,MAAM,sBAAsB,OAAO;AAAA,EACzC,OAAO,IAAI;AAAA,EACX,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAC1B,SACA,QACmB;AAAA,EACnB,OAAO,qBAAqB,cAAc,OAAO,GAAG,MAAM;AAAA;AAG5D,SAAS,4BAA4B,CAAC,SAAsC;AAAA,EAC1E,OAAO,IAAI,MACT,qBAAqB,QAAQ,+CAC7B,mBAAmB,QAAQ,mBAC3B,GAAG,QAAQ,mBAAmB,kCAAkC,KAClE;AAAA;AAGF,SAAS,oBAAoB,CAAC,SAA+B,QAAwB;AAAA,EACnF,MAAM,YAAY,QAAQ,mBACtB,yEACA;AAAA,EACJ,OAAO,uCAAuC,QAAQ,iBAAiB,cAAc;AAAA;AAGvF,eAAe,yCAAyC,CACtD,oBACA,SACkB;AAAA,EAClB,IAAI,CAAC,QAAQ;AAAA,IAAQ,OAAO;AAAA,EAC5B,MAAM,aAAa,MAAM,YAAY,EAAE,YAAY,QAAQ,QAAQ,MAAM,CAAC,EAAE,GAAG,OAAO;AAAA,EACtF,IAAI,CAAC,cAAc,CAAC,sBAAsB,YAAY,OAAO;AAAA,IAAG,OAAO;AAAA,EACvE,IAAI,WAAW,sBAAsB,WAAW,WAAW,YAAY,mBAAmB,UAAU,GAAG;AAAA,IACrG,OAAO;AAAA,EACT;AAAA,EACA,MAAM,iBAAiB,WAAW,qBAC9B,WAAW,iBACX,WAAW;AAAA,EACf,OAAO,WAAW,gBAAgB,mBAAmB,cAAc;AAAA;AAcrE,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;AAC7B,IAAM,6BAA6B,KAAK,KAAK;AAE7C,eAAe,gBAAgB,CAAC,SAAmD;AAAA,EACjF,MAAM,UAAU,MAAM,uBAAuB,OAAO;AAAA,EACpD,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,WAAW,QAAQ,SAAS,OAAO,aACvC,QAAQ,OAAO,SAAS,KAAK,KAAK,QAAQ,OAAO,SAAS,GAAG,cAAc,CAC7E;AAAA,EACA,MAAM,UAAU,iBACd,SAAS,IAAI,aAAW,QAAQ,OAAO,GACvC,QAAQ,UACV;AAAA,EACA,MAAM,UAAU,SAAS,KAAK,eAAa,UAAU,YAAY,OAAO;AAAA,EACxE,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,MAAM,iDAAiD,QAAQ,aAAa;AAAA,EACxF;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,sBAAsB,CACnC,SAC2B;AAAA,EAC3B,MAAM,OAAO,sBAAsB,OAAO;AAAA,EAC1C,MAAM,QAAQ,MAAM,qBAAqB,IAAI;AAAA,EAC7C,IAAI;AAAA,IACF,OAAO,MAAM,qBAAqB;AAAA,MAChC,KAAK,eAAe,cAAc,IAAI;AAAA,MACtC,WAAW,QAAQ;AAAA,MACnB,OAAO,MAAM,0BAA0B,IAAI;AAAA,MAC3C,QAAQ,YAAY;AAAA,QAClB,MAAM,UAAU,MAAM,sBAAsB,OAAO;AAAA,QACnD,MAAM,sBAAsB,MAAM,OAAO;AAAA,QACzC,OAAO;AAAA;AAAA,IAEX,CAAC;AAAA,IACD,OAAO,OAAO;AAAA,IACd,MAAM,WAAW,MAAM,qBAAqB,IAAI,KAAK;AAAA,IACrD,IAAI;AAAA,MAAU,OAAO;AAAA,IACrB,MAAM;AAAA;AAAA;AAIV,eAAe,qBAAqB,CAClC,SAC2B;AAAA,EAC3B,MAAM,aAAa,gBAAgB,QAAQ,GAAG;AAAA,EAC9C,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI,YAAY;AAAA,EAChB,IAAI;AAAA,IACF,SAAS,OAAO,EAAG,QAAQ,sBAAsB,QAAQ,GAAG;AAAA,MAC1D,MAAM,OAAO,MAAM,aACjB,+DAA+D,6BAA6B,QAC5F,QAAQ,mBACR,YACA,iBAAiB,QAAQ,GAAG,CAC9B;AAAA,MACA,MAAM,UAAU,KAAK,MAAM,IAAI;AAAA,MAC/B,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAAA,QAC3B,MAAM,IAAI,MAAM,8CAA8C;AAAA,MAChE;AAAA,MACA,WAAW,aAAa,SAAS;AAAA,QAC/B,IAAI,CAAC,aAAa,OAAO,cAAc;AAAA,UAAU;AAAA,QACjD,MAAM,UAAU;AAAA,QAChB,IAAI,QAAQ,UAAU,QAAQ,OAAO,QAAQ,aAAa;AAAA,UAAU;AAAA,QACpE,MAAM,aAAa,kBAAkB,QAAQ,MAAM;AAAA,QACnD,MAAM,UAAU,uBAAuB,QAAQ,QAAQ;AAAA,QACvD,IAAI,SAAS;AAAA,UACX,SAAS,IAAI,SAAS,EAAE,QAAQ,YAAY,KAAK,QAAQ,UAAU,QAAQ,CAAC;AAAA,QAC9E;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,SAAS,sBAAsB;AAAA,QACzC,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,MAAM,YAAY,MAAM;AAAA;AAAA,EAG1B,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,MAAM,+BAA+B,6BAA6B;AAAA,EAC9E;AAAA,EACA,IAAI,SAAS,SAAS,GAAG;AAAA,IACvB,MAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAAA,EACA,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,UAAU,CAAC,GAAG,SAAS,OAAO,CAAC,EAAE;AAAA;AAI5D,SAAS,gBAAgB,CAAC,KAAgD;AAAA,EAC/E,MAAM,QAAQ,CAAC,IAAI,iBAAiB,IAAI,WAAW,EAChD,KAAK,WAAS,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,CAAC;AAAA,EACrE,IAAI,SAAS,UAAU,KAAK,KAAK,GAAG;AAAA,IAClC,MAAM,IAAI,UAAU,gDAAgD;AAAA,EACtE;AAAA,EACA,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,wBAAwB;AAAA,OACpB,QAAQ,EAAE,eAAe,UAAU,QAAQ,IAAI,CAAC;AAAA,EACtD;AAAA;AAGF,eAAe,yBAAyB,CAAC,MAAgD;AAAA,EACvF,MAAM,UAAU,MAAM,qBAAqB,IAAI;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,MAAM,MAAM,KAAK,IAAI,IAAI,QAAQ;AAAA,EACjC,OAAO,OAAO,KAAK,MAAM,6BAA6B,UAAU;AAAA;AAGlE,eAAe,oBAAoB,CAAC,MAAgD;AAAA,EAClF,IAAI;AAAA,IACF,OAAO,sBAAsB,KAAK,MAAM,MAAM,yBAAS,MAAM,MAAM,CAAC,CAAY;AAAA,IAChF,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,qBAAqB,CAAC,OAAyC;AAAA,EACtE,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,UAAU;AAAA,EAChB,IAAI,CAAC,OAAO,cAAc,QAAQ,SAAS,KAAM,QAAQ,YAAuB,KAC5E,CAAC,MAAM,QAAQ,QAAQ,QAAQ,GAAG;AAAA,IACpC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAwB,CAAC;AAAA,EAC/B,WAAW,SAAS,QAAQ,UAAU;AAAA,IACpC,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,MAAU,OAAO;AAAA,IAChD,MAAM,UAAU;AAAA,IAChB,IAAI,CAAC,MAAM,QAAQ,QAAQ,MAAM,KAC7B,CAAC,QAAQ,OAAO,MAAM,WAAS,OAAO,UAAU,QAAQ,KACxD,OAAO,QAAQ,QAAQ,YACvB,CAAC,iCAAiC,KAAK,QAAQ,GAAG,KAClD,OAAO,QAAQ,YAAY,YAC3B,uBAAuB,QAAQ,OAAO,MAAM,QAAQ,SAAS;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,IACA,SAAS,KAAK;AAAA,MACZ,QAAQ,QAAQ;AAAA,MAChB,KAAK,QAAQ;AAAA,MACb,SAAS,QAAQ;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,WAAW,QAAQ,WAAqB,SAAS;AAAA;AAG5D,eAAe,qBAAqB,CAAC,MAAc,SAA0C;AAAA,EAC3F,MAAM,sBAAM,0BAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACnD,MAAM,SAAS,0BAAK,KAClB,0BAAK,QAAQ,IAAI,GACjB,IAAI,0BAAK,SAAS,IAAI,KAAK,QAAQ,OAAO,8BAAW,OACvD;AAAA,EACA,IAAI;AAAA,IACF,MAAM,0BAAU,QAAQ,GAAG,KAAK,UAAU,OAAO;AAAA,GAAO,EAAE,UAAU,QAAQ,MAAM,KAAK,CAAC;AAAA,IACxF,IAAI,QAAQ,aAAa;AAAA,MAAS,MAAM,mBAAG,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,IAChE,MAAM,uBAAO,QAAQ,IAAI;AAAA,IACzB,QAAQ;AAAA,IACR,MAAM,mBAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;AAIpC,SAAS,qBAAqB,CAAC,SAAuC;AAAA,EACpE,OAAO,0BAAK,KAAK,QAAQ,UAAU,YAAY,kBAAkB;AAAA;AAGnE,SAAS,iBAAiB,CAAC,OAA0B;AAAA,EACnD,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,CAAC;AAAA,EACnC,OAAO,MAAM,QAAQ,WAAS;AAAA,IAC5B,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,MAAU,OAAO,CAAC;AAAA,IACjD,MAAM,OAAQ,MAA6B;AAAA,IAC3C,OAAO,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI,CAAC;AAAA,GAC7C;AAAA;AAGH,SAAS,aAAa,CAAC,SAAuC;AAAA,EAC5D,OAAO,0BAAK,KAAK,QAAQ,UAAU,SAAS,IAAI;AAAA;AAGlD,SAAS,kBAAkB,CAAC,SAA+B,SAAyB;AAAA,EAClF,OAAO,0BAAK,KAAK,cAAc,OAAO,GAAG,OAAO;AAAA;AAGlD,SAAS,YAAY,CAAC,SAA+B,SAAyB;AAAA,EAC5E,OAAO,0BAAK,KACV,mBAAmB,SAAS,OAAO,GACnC,QAAQ,aAAa,UAAU,WAAW,IAC5C;AAAA;AAGF,eAAe,SAAS,CACtB,YACA,SACA,SACe;AAAA,EACf,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,UAAU,qDAAqD,QAAQ;AAAA,EAC7E,MAAM,YAAY,MAAM,wBAAQ,0BAAK,KAAK,uBAAG,OAAO,GAAG,WAAW,CAAC;AAAA,EACnE,MAAM,aAAa,gBAAgB,QAAQ,GAAG;AAAA,EAC9C,IAAI;AAAA,IACF,MAAM,UAAU,0BAAK,KAAK,WAAW,KAAK;AAAA,IAC1C,MAAM,SAAS,GAAG,WAAW,SAAS,SAAS,QAAQ,mBAAmB,UAAU;AAAA,IACpF,MAAM,YAAY,MAAM,aACtB,GAAG,WAAW,gBACd,QAAQ,mBACR,UACF,GAAG,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,IACxB,MAAM,SAAS,MAAM,WAAW,OAAO;AAAA,IACvC,IAAI,CAAC,YAAY,SAAS,YAAY,MAAM,OAAO,YAAY,GAAG;AAAA,MAChE,MAAM,IAAI,MAAM,oCAAoC,OAAO;AAAA,IAC7D;AAAA,IAEA,MAAM,YAAY,0BAAK,KAAK,WAAW,WAAW;AAAA,IAClD,MAAM,sBAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,IAC1C,MAAM,SAAS,MAAM,oBAAoB,SAAS,OAAO,SAAS;AAAA,IAClE,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,MAAM,uDAAuD,OAAO;AAAA,IAC3F,MAAM,oBAAoB,QAAQ,YAAY,QAAQ,SAAS,OAAO;AAAA,IACtE,QAAQ;AAAA,IACR,MAAM,YAAY,MAAM;AAAA,IACxB,MAAM,mBAAG,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA;AAIxD,eAAe,mBAAmB,CAChC,SACA,OACA,aACwB;AAAA,EACxB,MAAM,iBAAiB,QAAQ,aAAa,UAAU,WAAW;AAAA,EACjE,IAAI,CAAC,MAAM,SAAS,MAAM,GAAG;AAAA,IAC3B,MAAU,MAAE,EAAE,MAAM,SAAS,KAAK,aAAa,QAAQ,KAAK,CAAC;AAAA,IAC7D,OAAO,SAAS,aAAa,cAAc;AAAA,EAC7C;AAAA,EAKA,MAAM,UAAU,wBAAU,MAAM,yBAAS,OAAO,GAAG;AAAA,IACjD,QAAQ,GAAG,WAAW,0BAAK,MAAM,SAAS,KAAK,WAAW,MAAM,GAAG,CAAC,MAAM;AAAA,EAC5E,CAAC;AAAA,EACD,MAAM,UAAU,OAAO,QAAQ,OAAO,EACnC,OAAO,EAAE,UAAU,0BAAK,MAAM,SAAS,KAAK,WAAW,MAAM,GAAG,CAAC,MAAM,cAAc;AAAA,EACxF,IAAI,QAAQ,WAAW,KAAK,CAAC,QAAQ;AAAA,IAAI,OAAO;AAAA,EAChD,MAAM,SAAS,0BAAK,KAAK,aAAa,cAAc;AAAA,EACpD,MAAM,0BAAU,QAAQ,QAAQ,GAAG,IAAI,EAAE,MAAM,KAAK,CAAC;AAAA,EACrD,OAAO;AAAA;AAGT,eAAe,mBAAmB,CAChC,QACA,YACA,SACA,SACe;AAAA,EACf,MAAM,sBAAM,YAAY,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3C,MAAM,aAAa,aAAa,SAAS,OAAO;AAAA,EAChD,MAAM,SAAS,0BAAK,KAClB,YACA,IAAI,0BAAK,SAAS,UAAU,KAAK,QAAQ,OAAO,8BAAW,OAC7D;AAAA,EACA,IAAI;AAAA,IACF,MAAM,yBAAS,QAAQ,MAAM;AAAA,IAC7B,IAAI,QAAQ,aAAa;AAAA,MAAS,MAAM,sBAAM,QAAQ,GAAK;AAAA,IAC3D,MAAM,WAAW,QAAQ,QAAQ,OAAO;AAAA,IACxC,IAAI,CAAC,YAAY,SAAS,YAAY,SAAS;AAAA,MAC7C,MAAM,IAAI,MAAM,2CAA2C,UAAU;AAAA,IACvE;AAAA,IACA,IAAI,QAAQ,aAAa;AAAA,MAAS,MAAM,mBAAG,YAAY,EAAE,OAAO,KAAK,CAAC;AAAA,IACtE,MAAM,uBAAO,QAAQ,UAAU;AAAA,IAC/B,QAAQ;AAAA,IACR,MAAM,mBAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;AAIpC,SAAS,OAAO,GAAW;AAAA,EACzB,MAAM,eAAe,QAAQ,SAAS,QAClC,WACA,QAAQ,SAAS,UACf,YACA;AAAA,EACN,IAAI,CAAC;AAAA,IAAc,MAAM,IAAI,MAAM,8CAA8C,QAAQ,OAAO;AAAA,EAChG,IAAI,QAAQ,aAAa;AAAA,IAAS,OAAO,MAAM;AAAA,EAC/C,IAAI,QAAQ,aAAa;AAAA,IAAU,OAAO,MAAM;AAAA,EAChD,IAAI,QAAQ,aAAa;AAAA,IAAS,OAAO,MAAM;AAAA,EAC/C,MAAM,IAAI,MAAM,0CAA0C,QAAQ,WAAW;AAAA;AAG/E,eAAe,QAAQ,CACrB,KACA,aACA,WACA,YACe;AAAA,EACf,MAAM,WAAW,MAAM,oBAAM,KAAK;AAAA,IAChC;AAAA,IACA,UAAU;AAAA,IACV,QAAQ,YAAY,QAAQ,SAAS;AAAA,EACvC,CAAC;AAAA,EACD,IAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAAA,IAClC,MAAM,SAAS,MAAM,OAAO;AAAA,IAC5B,MAAM,IAAI,MAAM,sBAAsB,aAAa,SAAS,QAAQ;AAAA,EACtE;AAAA,EACA,MAAM,0BACJ,4BAAS,QAAQ,SAAS,IAAI,GAC9B,kCAAkB,aAAa,EAAE,OAAO,KAAK,CAAC,CAChD;AAAA;AAGF,eAAe,YAAY,CACzB,KACA,WACA,YACA,SACiB;AAAA,EACjB,MAAM,WAAW,MAAM,oBAAM,KAAK;AAAA,IAChC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,QAAQ,YAAY,QAAQ,SAAS;AAAA,EACvC,CAAC;AAAA,EACD,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,SAAS,MAAM,OAAO;AAAA,IAC5B,MAAM,IAAI,MAAM,sBAAsB,aAAa,SAAS,QAAQ;AAAA,EACtE;AAAA,EACA,OAAO,SAAS,KAAK;AAAA;AAGvB,SAAS,eAAe,CAAC,KAAuD;AAAA,EAC9E,MAAM,YAAY,iBAAiB,KAAK,cAAc,YAAY;AAAA,EAClE,MAAM,aAAa,iBAAiB,KAAK,eAAe,aAAa;AAAA,EACrE,IAAI,CAAC,aAAa,CAAC;AAAA,IAAY;AAAA,EAC/B,OAAO,IAAI,gCAAkB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,SAAS,iBAAiB,KAAK,YAAY,UAAU;AAAA,EACvD,CAAC;AAAA;AAGH,SAAS,gBAAgB,CACvB,KACA,WACA,WACoB;AAAA,EACpB,OAAO,IAAI,cAAc,IAAI;AAAA;AAG/B,eAAe,UAAU,CAAC,MAA+B;AAAA,EACvD,MAAM,OAAO,8BAAW,QAAQ;AAAA,EAChC,iBAAiB,SAAS,iCAAiB,IAAI;AAAA,IAAG,KAAK,OAAO,KAAK;AAAA,EACnE,OAAO,KAAK,OAAO,KAAK;AAAA;AAG1B,eAAe,QAAQ,CAAC,WAAmB,MAAsC;AAAA,EAC/E,WAAW,SAAS,MAAM,wBAAQ,WAAW,EAAE,eAAe,KAAK,CAAC,GAAG;AAAA,IACrE,MAAM,SAAS,0BAAK,KAAK,WAAW,MAAM,IAAI;AAAA,IAC9C,IAAI,MAAM,OAAO,KAAK,MAAM,SAAS;AAAA,MAAM,OAAO;AAAA,IAClD,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,MAAM,SAAS,MAAM,SAAS,QAAQ,IAAI;AAAA,MAC1C,IAAI;AAAA,QAAQ,OAAO;AAAA,IACrB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;ADx3BT,eAAe,IAAI,GAAkB;AAAA,EACnC,MAAM,UAAU,KAAK,MAAM,6BAAa,GAAG,MAAM,CAAC;AAAA,EAClD,MAAM,SAAS,QAAQ,WAAW,OAC9B,MAAM,SAAS,QAAQ,OAAO,IAC9B,MAAM,kBAAkB,QAAQ,OAAO;AAAA,EAC3C,QAAQ,OAAO,MAAM,KAAK,UAAU,MAAM,CAAC;AAAA;AAG7C,KAAK,EAAE,MAAM,CAAC,UAAmB;AAAA,EAC/B,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EACrE,QAAQ,OAAO,MAAM,OAAO;AAAA,EAC5B,QAAQ,WAAW;AAAA,CACpB;",
|
|
17
|
+
"debugId": "DFB6475FEB013D6C64756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|
package/dist/provision.d.ts
CHANGED
|
@@ -21,4 +21,6 @@ export declare function ensureUv(options?: PyfigOptions): Promise<UvInfo>;
|
|
|
21
21
|
* Project dependency files are inputs only and are never changed.
|
|
22
22
|
*/
|
|
23
23
|
export declare function ensureEnvironment(options?: PyfigOptions, dependencies?: readonly string[], dependencyOptions?: RuntimeDependencyOptions): Promise<PythonEnvironment>;
|
|
24
|
+
/** Build GitHub API headers without exposing credentials outside the request. */
|
|
25
|
+
export declare function githubApiHeaders(env: NodeJS.ProcessEnv): Record<string, string>;
|
|
24
26
|
//# sourceMappingURL=provision.d.ts.map
|
package/dist/provision.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAqBA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AAOrB,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,YAAiB,EAC1B,YAAY,GAAE,SAAS,MAAM,EAAO,EACpC,iBAAiB,GAAE,wBAA6B,GAC/C,OAAO,CAAC,iBAAiB,CAAC,CAe5B"}
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAqBA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AAOrB,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,YAAiB,EAC1B,YAAY,GAAE,SAAS,MAAM,EAAO,EACpC,iBAAiB,GAAE,wBAA6B,GAC/C,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAmhBD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/E"}
|
package/dist/provision.js
CHANGED
|
@@ -416,11 +416,7 @@ async function fetchUvReleaseCatalog(options) {
|
|
|
416
416
|
let exhausted = false;
|
|
417
417
|
try {
|
|
418
418
|
for (let page = 1; page <= UV_RELEASE_MAX_PAGES; page += 1) {
|
|
419
|
-
const text = await downloadText(`https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`, options.downloadTimeoutMs, dispatcher,
|
|
420
|
-
Accept: 'application/vnd.github+json',
|
|
421
|
-
'User-Agent': 'pyfig',
|
|
422
|
-
'X-GitHub-Api-Version': '2022-11-28',
|
|
423
|
-
});
|
|
419
|
+
const text = await downloadText(`https://api.github.com/repos/astral-sh/uv/releases?per_page=${UV_RELEASE_PAGE_SIZE}&page=${page}`, options.downloadTimeoutMs, dispatcher, githubApiHeaders(options.env));
|
|
424
420
|
const payload = JSON.parse(text);
|
|
425
421
|
if (!Array.isArray(payload)) {
|
|
426
422
|
throw new Error('GitHub returned invalid uv release metadata.');
|
|
@@ -454,6 +450,20 @@ async function fetchUvReleaseCatalog(options) {
|
|
|
454
450
|
}
|
|
455
451
|
return { fetchedAt: Date.now(), releases: [...releases.values()] };
|
|
456
452
|
}
|
|
453
|
+
/** Build GitHub API headers without exposing credentials outside the request. */
|
|
454
|
+
export function githubApiHeaders(env) {
|
|
455
|
+
const token = [env['GITHUB_TOKEN'], env['GH_TOKEN']]
|
|
456
|
+
.find(value => typeof value === 'string' && value.trim().length > 0);
|
|
457
|
+
if (token && /[\r\n]/u.test(token)) {
|
|
458
|
+
throw new TypeError('GitHub API token must not contain line breaks.');
|
|
459
|
+
}
|
|
460
|
+
return {
|
|
461
|
+
Accept: 'application/vnd.github+json',
|
|
462
|
+
'User-Agent': 'pyfig',
|
|
463
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
464
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
465
|
+
};
|
|
466
|
+
}
|
|
457
467
|
async function readFreshUvReleaseCatalog(file) {
|
|
458
468
|
const catalog = await readUvReleaseCatalog(file);
|
|
459
469
|
if (!catalog)
|
package/dist/provision.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|