@0xrama/bnpm 0.0.1
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 +83 -0
- package/dist/package.json +45 -0
- package/dist/src/cache/archive.d.ts +15 -0
- package/dist/src/cache/archive.js +163 -0
- package/dist/src/cache/archive.js.map +1 -0
- package/dist/src/cache/commands.d.ts +15 -0
- package/dist/src/cache/commands.js +168 -0
- package/dist/src/cache/commands.js.map +1 -0
- package/dist/src/cache/quarantine.d.ts +18 -0
- package/dist/src/cache/quarantine.js +104 -0
- package/dist/src/cache/quarantine.js.map +1 -0
- package/dist/src/cache/store.d.ts +10 -0
- package/dist/src/cache/store.js +155 -0
- package/dist/src/cache/store.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +4 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/diff.d.ts +34 -0
- package/dist/src/commands/diff.js +223 -0
- package/dist/src/commands/diff.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +14 -0
- package/dist/src/commands/doctor.js +42 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/edit.d.ts +12 -0
- package/dist/src/commands/edit.js +100 -0
- package/dist/src/commands/edit.js.map +1 -0
- package/dist/src/commands/fund.d.ts +10 -0
- package/dist/src/commands/fund.js +32 -0
- package/dist/src/commands/fund.js.map +1 -0
- package/dist/src/commands/graph.d.ts +29 -0
- package/dist/src/commands/graph.js +90 -0
- package/dist/src/commands/graph.js.map +1 -0
- package/dist/src/commands/index.d.ts +20 -0
- package/dist/src/commands/index.js +1753 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/commands/navigation.d.ts +2 -0
- package/dist/src/commands/navigation.js +47 -0
- package/dist/src/commands/navigation.js.map +1 -0
- package/dist/src/commands/outdated.d.ts +17 -0
- package/dist/src/commands/outdated.js +69 -0
- package/dist/src/commands/outdated.js.map +1 -0
- package/dist/src/commands/process.d.ts +11 -0
- package/dist/src/commands/process.js +189 -0
- package/dist/src/commands/process.js.map +1 -0
- package/dist/src/commands/prompts.d.ts +6 -0
- package/dist/src/commands/prompts.js +86 -0
- package/dist/src/commands/prompts.js.map +1 -0
- package/dist/src/commands/query.d.ts +48 -0
- package/dist/src/commands/query.js +639 -0
- package/dist/src/commands/query.js.map +1 -0
- package/dist/src/commands/rebuild.d.ts +16 -0
- package/dist/src/commands/rebuild.js +44 -0
- package/dist/src/commands/rebuild.js.map +1 -0
- package/dist/src/commands/sbom.d.ts +6 -0
- package/dist/src/commands/sbom.js +31 -0
- package/dist/src/commands/sbom.js.map +1 -0
- package/dist/src/commands/script-approvals.d.ts +22 -0
- package/dist/src/commands/script-approvals.js +128 -0
- package/dist/src/commands/script-approvals.js.map +1 -0
- package/dist/src/commands/shrinkwrap.d.ts +6 -0
- package/dist/src/commands/shrinkwrap.js +97 -0
- package/dist/src/commands/shrinkwrap.js.map +1 -0
- package/dist/src/commands/stage.d.ts +20 -0
- package/dist/src/commands/stage.js +40 -0
- package/dist/src/commands/stage.js.map +1 -0
- package/dist/src/commands/token.d.ts +2 -0
- package/dist/src/commands/token.js +47 -0
- package/dist/src/commands/token.js.map +1 -0
- package/dist/src/commands/trust.d.ts +5 -0
- package/dist/src/commands/trust.js +41 -0
- package/dist/src/commands/trust.js.map +1 -0
- package/dist/src/config/commands.d.ts +5 -0
- package/dist/src/config/commands.js +91 -0
- package/dist/src/config/commands.js.map +1 -0
- package/dist/src/config/configuration.d.ts +40 -0
- package/dist/src/config/configuration.js +157 -0
- package/dist/src/config/configuration.js.map +1 -0
- package/dist/src/config/interactive.d.ts +16 -0
- package/dist/src/config/interactive.js +19 -0
- package/dist/src/config/interactive.js.map +1 -0
- package/dist/src/config/paths.d.ts +22 -0
- package/dist/src/config/paths.js +46 -0
- package/dist/src/config/paths.js.map +1 -0
- package/dist/src/config/types.d.ts +15 -0
- package/dist/src/config/types.js +6 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/core/cli-parser.d.ts +102 -0
- package/dist/src/core/cli-parser.js +1148 -0
- package/dist/src/core/cli-parser.js.map +1 -0
- package/dist/src/core/cli-runner.d.ts +15 -0
- package/dist/src/core/cli-runner.js +261 -0
- package/dist/src/core/cli-runner.js.map +1 -0
- package/dist/src/core/exit-codes.d.ts +13 -0
- package/dist/src/core/exit-codes.js +13 -0
- package/dist/src/core/exit-codes.js.map +1 -0
- package/dist/src/core/output.d.ts +23 -0
- package/dist/src/core/output.js +123 -0
- package/dist/src/core/output.js.map +1 -0
- package/dist/src/installer/install.d.ts +73 -0
- package/dist/src/installer/install.js +596 -0
- package/dist/src/installer/install.js.map +1 -0
- package/dist/src/installer/mutations.d.ts +5 -0
- package/dist/src/installer/mutations.js +160 -0
- package/dist/src/installer/mutations.js.map +1 -0
- package/dist/src/linker/project-linker.d.ts +9 -0
- package/dist/src/linker/project-linker.js +223 -0
- package/dist/src/linker/project-linker.js.map +1 -0
- package/dist/src/lockfile/index.d.ts +27 -0
- package/dist/src/lockfile/index.js +221 -0
- package/dist/src/lockfile/index.js.map +1 -0
- package/dist/src/package/authoring.d.ts +31 -0
- package/dist/src/package/authoring.js +125 -0
- package/dist/src/package/authoring.js.map +1 -0
- package/dist/src/package/pack.d.ts +22 -0
- package/dist/src/package/pack.js +238 -0
- package/dist/src/package/pack.js.map +1 -0
- package/dist/src/package/provenance.d.ts +28 -0
- package/dist/src/package/provenance.js +162 -0
- package/dist/src/package/provenance.js.map +1 -0
- package/dist/src/package/publish.d.ts +28 -0
- package/dist/src/package/publish.js +189 -0
- package/dist/src/package/publish.js.map +1 -0
- package/dist/src/package/trusted-publishing.d.ts +7 -0
- package/dist/src/package/trusted-publishing.js +84 -0
- package/dist/src/package/trusted-publishing.js.map +1 -0
- package/dist/src/project/dependency-error.d.ts +3 -0
- package/dist/src/project/dependency-error.js +7 -0
- package/dist/src/project/dependency-error.js.map +1 -0
- package/dist/src/project/dev-engines.d.ts +10 -0
- package/dist/src/project/dev-engines.js +70 -0
- package/dist/src/project/dev-engines.js.map +1 -0
- package/dist/src/project/discovery.d.ts +6 -0
- package/dist/src/project/discovery.js +51 -0
- package/dist/src/project/discovery.js.map +1 -0
- package/dist/src/project/global.d.ts +3 -0
- package/dist/src/project/global.js +43 -0
- package/dist/src/project/global.js.map +1 -0
- package/dist/src/project/invalidation.d.ts +3 -0
- package/dist/src/project/invalidation.js +21 -0
- package/dist/src/project/invalidation.js.map +1 -0
- package/dist/src/project/link.d.ts +21 -0
- package/dist/src/project/link.js +152 -0
- package/dist/src/project/link.js.map +1 -0
- package/dist/src/project/manifest.d.ts +27 -0
- package/dist/src/project/manifest.js +378 -0
- package/dist/src/project/manifest.js.map +1 -0
- package/dist/src/project/pkg.d.ts +5 -0
- package/dist/src/project/pkg.js +94 -0
- package/dist/src/project/pkg.js.map +1 -0
- package/dist/src/project/recovery.d.ts +2 -0
- package/dist/src/project/recovery.js +82 -0
- package/dist/src/project/recovery.js.map +1 -0
- package/dist/src/project/workspaces.d.ts +4 -0
- package/dist/src/project/workspaces.js +59 -0
- package/dist/src/project/workspaces.js.map +1 -0
- package/dist/src/registry/account.d.ts +79 -0
- package/dist/src/registry/account.js +305 -0
- package/dist/src/registry/account.js.map +1 -0
- package/dist/src/registry/audit.d.ts +18 -0
- package/dist/src/registry/audit.js +74 -0
- package/dist/src/registry/audit.js.map +1 -0
- package/dist/src/registry/client.d.ts +19 -0
- package/dist/src/registry/client.js +102 -0
- package/dist/src/registry/client.js.map +1 -0
- package/dist/src/registry/configuration.d.ts +36 -0
- package/dist/src/registry/configuration.js +133 -0
- package/dist/src/registry/configuration.js.map +1 -0
- package/dist/src/registry/operations.d.ts +163 -0
- package/dist/src/registry/operations.js +502 -0
- package/dist/src/registry/operations.js.map +1 -0
- package/dist/src/registry/types.d.ts +30 -0
- package/dist/src/registry/types.js +2 -0
- package/dist/src/registry/types.js.map +1 -0
- package/dist/src/resolver/registry-resolver.d.ts +40 -0
- package/dist/src/resolver/registry-resolver.js +354 -0
- package/dist/src/resolver/registry-resolver.js.map +1 -0
- package/dist/src/resolver/source-provider.d.ts +17 -0
- package/dist/src/resolver/source-provider.js +336 -0
- package/dist/src/resolver/source-provider.js.map +1 -0
- package/dist/src/resolver/types.d.ts +28 -0
- package/dist/src/resolver/types.js +2 -0
- package/dist/src/resolver/types.js.map +1 -0
- package/dist/src/security/analyzer.d.ts +38 -0
- package/dist/src/security/analyzer.js +241 -0
- package/dist/src/security/analyzer.js.map +1 -0
- package/dist/src/security/audit.d.ts +19 -0
- package/dist/src/security/audit.js +61 -0
- package/dist/src/security/audit.js.map +1 -0
- package/dist/src/security/findings.d.ts +23 -0
- package/dist/src/security/findings.js +2 -0
- package/dist/src/security/findings.js.map +1 -0
- package/dist/src/security/integrity.d.ts +14 -0
- package/dist/src/security/integrity.js +40 -0
- package/dist/src/security/integrity.js.map +1 -0
- package/dist/src/security/policy.d.ts +16 -0
- package/dist/src/security/policy.js +24 -0
- package/dist/src/security/policy.js.map +1 -0
- package/dist/src/security/recent-release.d.ts +19 -0
- package/dist/src/security/recent-release.js +27 -0
- package/dist/src/security/recent-release.js.map +1 -0
- package/dist/src/security/script-runner.d.ts +13 -0
- package/dist/src/security/script-runner.js +73 -0
- package/dist/src/security/script-runner.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PackageDocument, PackageVersionManifest } from "../registry/types.js";
|
|
2
|
+
import type { Requirement, ResolutionGraph, Resolver } from "./types.js";
|
|
3
|
+
export interface PackageMetadataProvider {
|
|
4
|
+
packageDocument(name: string, signal?: AbortSignal): Promise<PackageDocument>;
|
|
5
|
+
}
|
|
6
|
+
export interface SourcePackage {
|
|
7
|
+
readonly actualName: string;
|
|
8
|
+
readonly version: string;
|
|
9
|
+
readonly manifest: PackageVersionManifest;
|
|
10
|
+
readonly integrity: string;
|
|
11
|
+
readonly tarball: URL;
|
|
12
|
+
readonly preparedPath: string;
|
|
13
|
+
readonly source: "tarball" | "git";
|
|
14
|
+
}
|
|
15
|
+
export interface PackageSourceProvider {
|
|
16
|
+
resolve(name: string, specifier: string, fromDirectory: string, signal?: AbortSignal): Promise<SourcePackage | undefined>;
|
|
17
|
+
}
|
|
18
|
+
export declare class ResolutionError extends Error {
|
|
19
|
+
constructor(message: string);
|
|
20
|
+
}
|
|
21
|
+
export interface RegistryResolverOptions {
|
|
22
|
+
readonly baseDirectory?: string;
|
|
23
|
+
readonly workspaces?: ReadonlyMap<string, string>;
|
|
24
|
+
readonly overrides?: Readonly<Record<string, string>>;
|
|
25
|
+
readonly platform?: string;
|
|
26
|
+
readonly architecture?: string;
|
|
27
|
+
readonly nodeVersion?: string;
|
|
28
|
+
readonly libc?: string;
|
|
29
|
+
readonly sourceProvider?: PackageSourceProvider;
|
|
30
|
+
readonly minimumReleaseAgeMilliseconds?: number;
|
|
31
|
+
readonly now?: Date;
|
|
32
|
+
readonly allowedRecentVersions?: ReadonlySet<string>;
|
|
33
|
+
}
|
|
34
|
+
export declare class RegistryResolver implements Resolver {
|
|
35
|
+
#private;
|
|
36
|
+
readonly provider: PackageMetadataProvider;
|
|
37
|
+
readonly options: RegistryResolverOptions;
|
|
38
|
+
constructor(provider: PackageMetadataProvider, options?: RegistryResolverOptions);
|
|
39
|
+
resolve(requirements: readonly Requirement[], signal?: AbortSignal): Promise<ResolutionGraph>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import npa from "npm-package-arg";
|
|
2
|
+
import semver from "semver";
|
|
3
|
+
import { readFile, realpath } from "node:fs/promises";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
import { hashLocalPackage } from "../cache/store.js";
|
|
7
|
+
import { parseManifest } from "../project/manifest.js";
|
|
8
|
+
export class ResolutionError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(`Resolution error: ${message}`);
|
|
11
|
+
this.name = "ResolutionError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function allowedByList(values, current) {
|
|
15
|
+
if (!values || values.length === 0)
|
|
16
|
+
return true;
|
|
17
|
+
if (values.includes(`!${current}`))
|
|
18
|
+
return false;
|
|
19
|
+
const positives = values.filter((value) => !value.startsWith("!"));
|
|
20
|
+
return positives.length === 0 || positives.includes(current) || positives.includes("any");
|
|
21
|
+
}
|
|
22
|
+
let cachedRuntimeLibc;
|
|
23
|
+
let runtimeLibcChecked = false;
|
|
24
|
+
function runtimeLibc() {
|
|
25
|
+
if (runtimeLibcChecked)
|
|
26
|
+
return cachedRuntimeLibc;
|
|
27
|
+
runtimeLibcChecked = true;
|
|
28
|
+
const report = process.report?.getReport();
|
|
29
|
+
cachedRuntimeLibc = typeof report?.header?.glibcVersionRuntime === "string" ? "glibc" : report?.sharedObjects?.some((value) => /(?:^|[\\/])(?:libc\.musl|ld-musl)/.test(value)) ? "musl" : undefined;
|
|
30
|
+
return cachedRuntimeLibc;
|
|
31
|
+
}
|
|
32
|
+
function assertCompatible(manifest, id, options) {
|
|
33
|
+
const platform = options.platform ?? process.platform;
|
|
34
|
+
const architecture = options.architecture ?? process.arch;
|
|
35
|
+
const nodeVersion = options.nodeVersion ?? process.versions.node;
|
|
36
|
+
const libc = options.libc ?? (platform === "linux" && platform === process.platform ? runtimeLibc() : undefined);
|
|
37
|
+
if (!allowedByList(manifest.os, platform))
|
|
38
|
+
throw new ResolutionError(`${id} does not support operating system ${platform}`);
|
|
39
|
+
if (!allowedByList(manifest.cpu, architecture))
|
|
40
|
+
throw new ResolutionError(`${id} does not support CPU architecture ${architecture}`);
|
|
41
|
+
if (platform === "linux" && manifest.libc && (!libc || !allowedByList(manifest.libc, libc)))
|
|
42
|
+
throw new ResolutionError(`${id} does not support C library ${libc ?? "unknown"}`);
|
|
43
|
+
const nodeRange = manifest.engines?.node;
|
|
44
|
+
if (nodeRange && semver.validRange(nodeRange) && !semver.satisfies(nodeVersion, nodeRange))
|
|
45
|
+
throw new ResolutionError(`${id} requires Node.js ${nodeRange}, current ${nodeVersion}`);
|
|
46
|
+
}
|
|
47
|
+
function sortedEntries(value) {
|
|
48
|
+
return Object.entries(value ?? {}).sort(([left], [right]) => left.localeCompare(right));
|
|
49
|
+
}
|
|
50
|
+
function validateManifest(name, version, manifest) {
|
|
51
|
+
if (manifest.name !== name || manifest.version !== version || !semver.valid(version)) {
|
|
52
|
+
throw new ResolutionError(`${name}@${version} has inconsistent registry metadata`);
|
|
53
|
+
}
|
|
54
|
+
if (typeof manifest.dist?.integrity !== "string" || manifest.dist.integrity.length === 0) {
|
|
55
|
+
throw new ResolutionError(`${name}@${version} does not provide strong integrity metadata`);
|
|
56
|
+
}
|
|
57
|
+
let tarball;
|
|
58
|
+
try {
|
|
59
|
+
tarball = new URL(manifest.dist.tarball);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new ResolutionError(`${name}@${version} has an invalid tarball URL`);
|
|
63
|
+
}
|
|
64
|
+
if (tarball.protocol !== "https:")
|
|
65
|
+
throw new ResolutionError(`${name}@${version} tarball must use HTTPS`);
|
|
66
|
+
}
|
|
67
|
+
function requestedPackage(name, specifier) {
|
|
68
|
+
let parsed;
|
|
69
|
+
try {
|
|
70
|
+
parsed = npa.resolve(name, specifier);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new ResolutionError(`invalid requirement ${name}@${specifier}`);
|
|
74
|
+
}
|
|
75
|
+
if (parsed.type === "alias") {
|
|
76
|
+
const alias = parsed;
|
|
77
|
+
if (!alias.subSpec.name || !["version", "range", "tag"].includes(alias.subSpec.type)) {
|
|
78
|
+
throw new ResolutionError(`unsupported alias requirement ${name}@${specifier}`);
|
|
79
|
+
}
|
|
80
|
+
return { actualName: alias.subSpec.name, rawSpec: alias.subSpec.rawSpec };
|
|
81
|
+
}
|
|
82
|
+
if (!parsed.name || !["version", "range", "tag"].includes(parsed.type)) {
|
|
83
|
+
throw new ResolutionError(`unsupported registry requirement ${name}@${specifier}`);
|
|
84
|
+
}
|
|
85
|
+
return { actualName: parsed.name, rawSpec: parsed.rawSpec };
|
|
86
|
+
}
|
|
87
|
+
function selectVersion(document, specifier, options) {
|
|
88
|
+
if (semver.valid(specifier))
|
|
89
|
+
return specifier;
|
|
90
|
+
const tagged = document["dist-tags"][specifier];
|
|
91
|
+
const range = tagged === undefined ? semver.validRange(specifier) : "*";
|
|
92
|
+
if (!range)
|
|
93
|
+
throw new ResolutionError(`${document.name}@${specifier} is not a valid version, range, or tag`);
|
|
94
|
+
const candidates = Object.keys(document.versions).filter((version) => semver.valid(version) && semver.satisfies(version, range)).sort(semver.rcompare);
|
|
95
|
+
if (tagged !== undefined && candidates.includes(tagged)) {
|
|
96
|
+
candidates.splice(candidates.indexOf(tagged), 1);
|
|
97
|
+
candidates.unshift(tagged);
|
|
98
|
+
}
|
|
99
|
+
const minimumAge = options.minimumReleaseAgeMilliseconds;
|
|
100
|
+
const cutoff = minimumAge === undefined ? undefined : (options.now ?? new Date()).getTime() - minimumAge;
|
|
101
|
+
const selected = candidates.find((version) => {
|
|
102
|
+
if (cutoff === undefined || options.allowedRecentVersions?.has(`${document.name}@${version}`))
|
|
103
|
+
return true;
|
|
104
|
+
const timestamp = document.time?.[version];
|
|
105
|
+
if (timestamp === undefined)
|
|
106
|
+
return false;
|
|
107
|
+
const published = new Date(timestamp).getTime();
|
|
108
|
+
return Number.isFinite(published) && published <= cutoff;
|
|
109
|
+
});
|
|
110
|
+
if (!selected)
|
|
111
|
+
throw new ResolutionError(`no version of ${document.name} satisfies ${specifier}`);
|
|
112
|
+
return selected;
|
|
113
|
+
}
|
|
114
|
+
export class RegistryResolver {
|
|
115
|
+
provider;
|
|
116
|
+
options;
|
|
117
|
+
#documents = new Map();
|
|
118
|
+
#locals = new Map();
|
|
119
|
+
constructor(provider, options = {}) {
|
|
120
|
+
this.provider = provider;
|
|
121
|
+
this.options = options;
|
|
122
|
+
}
|
|
123
|
+
#document(name, signal) {
|
|
124
|
+
let pending = this.#documents.get(name);
|
|
125
|
+
if (!pending) {
|
|
126
|
+
pending = this.provider.packageDocument(name, signal);
|
|
127
|
+
this.#documents.set(name, pending);
|
|
128
|
+
}
|
|
129
|
+
return pending;
|
|
130
|
+
}
|
|
131
|
+
async #prefetch(requirements, signal) {
|
|
132
|
+
const pending = [];
|
|
133
|
+
for (const [name, specifier] of requirements) {
|
|
134
|
+
if (specifier.startsWith("file:") || specifier.startsWith("workspace:"))
|
|
135
|
+
continue;
|
|
136
|
+
try {
|
|
137
|
+
const parsed = npa.resolve(name, this.options.overrides?.[name] ?? specifier);
|
|
138
|
+
if (parsed.type === "remote" || parsed.type === "git")
|
|
139
|
+
continue;
|
|
140
|
+
const request = requestedPackage(name, this.options.overrides?.[name] ?? specifier);
|
|
141
|
+
pending.push(this.#document(request.actualName, signal));
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Resolution reports the precise unsupported requirement in deterministic order.
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
await Promise.allSettled(pending);
|
|
148
|
+
}
|
|
149
|
+
async #local(path, requestedName) {
|
|
150
|
+
const canonical = await realpath(path);
|
|
151
|
+
let pending = this.#locals.get(canonical);
|
|
152
|
+
if (!pending) {
|
|
153
|
+
pending = (async () => {
|
|
154
|
+
const manifestPath = resolve(canonical, "package.json");
|
|
155
|
+
const bytes = await readFile(manifestPath, "utf8");
|
|
156
|
+
parseManifest(bytes, manifestPath);
|
|
157
|
+
const raw = JSON.parse(bytes);
|
|
158
|
+
if (typeof raw.name !== "string" || typeof raw.version !== "string" || !semver.valid(raw.version)) {
|
|
159
|
+
throw new ResolutionError(`${manifestPath} requires a valid name and semantic version`);
|
|
160
|
+
}
|
|
161
|
+
const integrity = await hashLocalPackage(canonical);
|
|
162
|
+
const manifest = { ...raw, dist: { integrity, tarball: pathToFileURL(canonical).href } };
|
|
163
|
+
return {
|
|
164
|
+
requestedName,
|
|
165
|
+
actualName: raw.name,
|
|
166
|
+
version: raw.version,
|
|
167
|
+
manifest,
|
|
168
|
+
integrity,
|
|
169
|
+
tarball: pathToFileURL(canonical),
|
|
170
|
+
localPath: canonical,
|
|
171
|
+
source: "directory",
|
|
172
|
+
};
|
|
173
|
+
})();
|
|
174
|
+
this.#locals.set(canonical, pending);
|
|
175
|
+
}
|
|
176
|
+
return pending;
|
|
177
|
+
}
|
|
178
|
+
async #select(name, specifier, fromDirectory, signal) {
|
|
179
|
+
if (specifier.startsWith("workspace:")) {
|
|
180
|
+
const workspacePath = this.options.workspaces?.get(name);
|
|
181
|
+
if (!workspacePath)
|
|
182
|
+
throw new ResolutionError(`workspace package ${name} was not found`);
|
|
183
|
+
const selected = await this.#local(workspacePath, name);
|
|
184
|
+
const requested = specifier.slice("workspace:".length);
|
|
185
|
+
const range = requested === "*" || requested === "^" || requested === "~" ? "*" : requested;
|
|
186
|
+
if (!semver.satisfies(selected.version, range))
|
|
187
|
+
throw new ResolutionError(`${name}@${selected.version} does not satisfy ${specifier}`);
|
|
188
|
+
return selected;
|
|
189
|
+
}
|
|
190
|
+
const local = npa.resolve(name, specifier, fromDirectory);
|
|
191
|
+
if (local.type === "directory")
|
|
192
|
+
return this.#local(String(local.fetchSpec), name);
|
|
193
|
+
if (local.type === "file") {
|
|
194
|
+
const sourced = await this.options.sourceProvider?.resolve(name, specifier, fromDirectory, signal);
|
|
195
|
+
if (!sourced)
|
|
196
|
+
throw new ResolutionError(`local package archive for ${name} could not be resolved`);
|
|
197
|
+
return { requestedName: name, ...sourced };
|
|
198
|
+
}
|
|
199
|
+
const sourced = await this.options.sourceProvider?.resolve(name, specifier, fromDirectory, signal);
|
|
200
|
+
if (sourced)
|
|
201
|
+
return { requestedName: name, ...sourced };
|
|
202
|
+
const request = requestedPackage(name, specifier);
|
|
203
|
+
const pending = this.#document(request.actualName, signal);
|
|
204
|
+
let document;
|
|
205
|
+
try {
|
|
206
|
+
document = await pending;
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
this.#documents.delete(request.actualName);
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
const version = selectVersion(document, request.rawSpec, this.options);
|
|
213
|
+
const manifest = document.versions[version];
|
|
214
|
+
if (!manifest)
|
|
215
|
+
throw new ResolutionError(`${document.name}@${version} is missing from registry versions`);
|
|
216
|
+
validateManifest(request.actualName, version, manifest);
|
|
217
|
+
const published = document.time?.[version];
|
|
218
|
+
const publishedAt = published === undefined ? undefined : new Date(published);
|
|
219
|
+
if (publishedAt && Number.isNaN(publishedAt.getTime()))
|
|
220
|
+
throw new ResolutionError(`${request.actualName}@${version} has an invalid publication timestamp`);
|
|
221
|
+
return {
|
|
222
|
+
requestedName: name,
|
|
223
|
+
actualName: request.actualName,
|
|
224
|
+
version,
|
|
225
|
+
manifest,
|
|
226
|
+
integrity: manifest.dist.integrity ?? "",
|
|
227
|
+
tarball: new URL(manifest.dist.tarball),
|
|
228
|
+
...(publishedAt === undefined ? {} : { publishedAt }),
|
|
229
|
+
source: "registry",
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
async resolve(requirements, signal) {
|
|
233
|
+
const roots = new Map();
|
|
234
|
+
const packages = new Map();
|
|
235
|
+
const directRequirements = new Map();
|
|
236
|
+
for (const requirement of requirements) {
|
|
237
|
+
if (directRequirements.has(requirement.name))
|
|
238
|
+
throw new ResolutionError(`duplicate root requirement ${requirement.name}`);
|
|
239
|
+
directRequirements.set(requirement.name, requirement);
|
|
240
|
+
}
|
|
241
|
+
const resolvingPeerContexts = new Set();
|
|
242
|
+
const resolveOne = async (name, specifier, fromDirectory, environment) => {
|
|
243
|
+
if (signal?.aborted)
|
|
244
|
+
throw signal.reason;
|
|
245
|
+
specifier = this.options.overrides?.[name] ?? specifier;
|
|
246
|
+
const selected = await this.#select(name, specifier, fromDirectory, signal);
|
|
247
|
+
const baseId = `${selected.actualName}@${selected.version}`;
|
|
248
|
+
assertCompatible(selected.manifest, baseId, this.options);
|
|
249
|
+
await this.#prefetch([
|
|
250
|
+
...sortedEntries(selected.manifest.peerDependencies).filter(([peerName]) => !selected.manifest.peerDependenciesMeta?.[peerName]?.optional),
|
|
251
|
+
...sortedEntries(selected.manifest.dependencies),
|
|
252
|
+
...sortedEntries(selected.manifest.optionalDependencies),
|
|
253
|
+
], signal);
|
|
254
|
+
const peerIds = new Map();
|
|
255
|
+
if (resolvingPeerContexts.has(baseId))
|
|
256
|
+
throw new ResolutionError(`cyclic peer dependency involving ${baseId}`);
|
|
257
|
+
resolvingPeerContexts.add(baseId);
|
|
258
|
+
try {
|
|
259
|
+
for (const [peerName, peerRange] of sortedEntries(selected.manifest.peerDependencies)) {
|
|
260
|
+
const optionalPeer = selected.manifest.peerDependenciesMeta?.[peerName]?.optional === true;
|
|
261
|
+
const inherited = environment.get(peerName);
|
|
262
|
+
if (inherited) {
|
|
263
|
+
const inheritedPackage = packages.get(inherited);
|
|
264
|
+
if (inheritedPackage && semver.validRange(peerRange) && semver.satisfies(inheritedPackage.version, peerRange)) {
|
|
265
|
+
peerIds.set(peerName, inherited);
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (optionalPeer)
|
|
270
|
+
continue;
|
|
271
|
+
const peerSpecifier = directRequirements.get(peerName)?.specifier ?? selected.manifest.dependencies?.[peerName] ?? peerRange;
|
|
272
|
+
try {
|
|
273
|
+
const peerId = await resolveOne(peerName, peerSpecifier, selected.localPath ?? fromDirectory, environment);
|
|
274
|
+
const peerPackage = packages.get(peerId);
|
|
275
|
+
if (peerPackage && semver.validRange(peerRange) && !semver.satisfies(peerPackage.version, peerRange)) {
|
|
276
|
+
throw new ResolutionError(`${baseId} requires peer ${peerName}@${peerRange} but resolved ${peerPackage.version}`);
|
|
277
|
+
}
|
|
278
|
+
peerIds.set(peerName, peerId);
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
resolvingPeerContexts.delete(baseId);
|
|
287
|
+
}
|
|
288
|
+
const peerContext = [...peerIds].map(([peerName, peerId]) => `${peerName}=${peerId}`).join("+");
|
|
289
|
+
const id = peerContext ? `${baseId}(${peerContext})` : baseId;
|
|
290
|
+
const existing = packages.get(id);
|
|
291
|
+
if (existing) {
|
|
292
|
+
if (existing.integrity !== selected.integrity)
|
|
293
|
+
throw new ResolutionError(`conflicting sources resolve to ${id}`);
|
|
294
|
+
return id;
|
|
295
|
+
}
|
|
296
|
+
const node = {
|
|
297
|
+
id,
|
|
298
|
+
name: selected.actualName,
|
|
299
|
+
version: selected.version,
|
|
300
|
+
integrity: selected.integrity,
|
|
301
|
+
tarball: selected.tarball,
|
|
302
|
+
...(selected.publishedAt === undefined ? {} : { publishedAt: selected.publishedAt }),
|
|
303
|
+
...(selected.localPath === undefined ? {} : { localPath: selected.localPath }),
|
|
304
|
+
...(selected.preparedPath === undefined ? {} : { preparedPath: selected.preparedPath }),
|
|
305
|
+
...(selected.source === undefined ? {} : { source: selected.source }),
|
|
306
|
+
manifest: selected.manifest,
|
|
307
|
+
dependencies: new Map(),
|
|
308
|
+
};
|
|
309
|
+
packages.set(id, node);
|
|
310
|
+
for (const [peerName, peerId] of peerIds)
|
|
311
|
+
node.dependencies.set(peerName, peerId);
|
|
312
|
+
const childEnvironment = new Map(environment);
|
|
313
|
+
for (const [peerName, peerId] of peerIds)
|
|
314
|
+
childEnvironment.set(peerName, peerId);
|
|
315
|
+
childEnvironment.set(selected.actualName, id);
|
|
316
|
+
const dependencies = { ...(selected.manifest.dependencies ?? {}), ...(selected.manifest.optionalDependencies ?? {}) };
|
|
317
|
+
for (const [dependencyName, dependencySpecifier] of sortedEntries(dependencies)) {
|
|
318
|
+
if (peerIds.has(dependencyName))
|
|
319
|
+
continue;
|
|
320
|
+
const packagesBeforeOptional = new Set(packages.keys());
|
|
321
|
+
try {
|
|
322
|
+
const dependencyId = await resolveOne(dependencyName, dependencySpecifier, selected.localPath ?? fromDirectory, childEnvironment);
|
|
323
|
+
node.dependencies.set(dependencyName, dependencyId);
|
|
324
|
+
childEnvironment.set(dependencyName, dependencyId);
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
if (selected.manifest.optionalDependencies?.[dependencyName] !== undefined || selected.manifest.peerDependenciesMeta?.[dependencyName]?.optional) {
|
|
328
|
+
for (const packageId of packages.keys())
|
|
329
|
+
if (!packagesBeforeOptional.has(packageId))
|
|
330
|
+
packages.delete(packageId);
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
throw error;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return id;
|
|
337
|
+
};
|
|
338
|
+
const sortedRequirements = [...requirements].sort((left, right) => left.name.localeCompare(right.name));
|
|
339
|
+
await this.#prefetch(sortedRequirements.map((requirement) => [requirement.name, requirement.specifier]), signal);
|
|
340
|
+
const rootEnvironment = new Map();
|
|
341
|
+
for (const requirement of sortedRequirements) {
|
|
342
|
+
const id = await resolveOne(requirement.name, requirement.specifier, this.options.baseDirectory ?? process.cwd(), rootEnvironment);
|
|
343
|
+
roots.set(requirement.name, id);
|
|
344
|
+
rootEnvironment.set(requirement.name, id);
|
|
345
|
+
}
|
|
346
|
+
return {
|
|
347
|
+
roots: new Map([...roots].sort(([left], [right]) => left.localeCompare(right))),
|
|
348
|
+
packages: new Map([...packages]
|
|
349
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
350
|
+
.map(([id, value]) => [id, { ...value, dependencies: new Map([...value.dependencies].sort(([left], [right]) => left.localeCompare(right))) }])),
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=registry-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-resolver.js","sourceRoot":"","sources":["../../../src/resolver/registry-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAsBvD,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AA2CD,SAAS,aAAa,CAAC,MAAqC,EAAE,OAAe;IAC3E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5F,CAAC;AAED,IAAI,iBAAqC,CAAC;AAC1C,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,SAAS,WAAW;IAClB,IAAI,kBAAkB;QAAE,OAAO,iBAAiB,CAAC;IACjD,kBAAkB,GAAG,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAA8H,CAAC;IACvK,iBAAiB,GAAG,OAAO,MAAM,EAAE,MAAM,EAAE,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACrM,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgC,EAAE,EAAU,EAAE,OAAgC;IACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,sCAAsC,QAAQ,EAAE,CAAC,CAAC;IAC5H,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,sCAAsC,YAAY,EAAE,CAAC,CAAC;IACrI,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,+BAA+B,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAChL,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACzC,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,qBAAqB,SAAS,aAAa,WAAW,EAAE,CAAC,CAAC;AACvL,CAAC;AAED,SAAS,aAAa,CAAI,KAA8C;IACtE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgC;IACvF,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,qCAAqC,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,6CAA6C,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,OAAY,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,6BAA6B,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,yBAAyB,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IACvD,IAAI,MAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,uBAAuB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAyB,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,eAAe,CAAC,iCAAiC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,eAAe,CAAC,oCAAoC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,QAAyB,EAAE,SAAiB,EAAE,OAAgC;IACnG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACxE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,SAAS,wCAAwC,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvJ,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,CAAC;IAC1I,MAAM,UAAU,GAAG,OAAO,CAAC,6BAA6B,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;IACzG,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3C,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3G,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC;IAC5G,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,iBAAiB,QAAQ,CAAC,IAAI,cAAc,SAAS,EAAE,CAAC,CAAC;IAClG,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,gBAAgB;IAIN,QAAQ;IAAoC,OAAO;IAH/D,UAAU,GAAG,IAAI,GAAG,EAAoC,CAAC;IACzD,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IAE/D,YAAqB,QAAiC,EAAW,OAAO,GAA4B,EAAE;wBAAjF,QAAQ;uBAAoC,OAAO;IAAiC,CAAC;IAE1G,SAAS,CAAC,IAAY,EAAE,MAAoB;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,YAAoD,EAAE,MAAoB;QACxF,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7C,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,SAAS;YAClF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;gBAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;oBAAE,SAAS;gBAChE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;gBACpF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,iFAAiF;YACnF,CAAC;QACH,CAAC;QACD,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,aAAqB;QAC9C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;gBACpB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACxD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACnD,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA2B,CAAC;gBACxD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClG,MAAM,IAAI,eAAe,CAAC,GAAG,YAAY,6CAA6C,CAAC,CAAC;gBAC1F,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAA2B,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjH,OAAO;oBACL,aAAa;oBACb,UAAU,EAAE,GAAG,CAAC,IAAI;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ;oBACR,SAAS;oBACT,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;oBACjC,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,WAAW;iBACpB,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;YACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,SAAiB,EAAE,aAAqB,EAAE,MAAoB;QACxF,IAAI,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,eAAe,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,CAAC;YACzF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,OAAO,qBAAqB,SAAS,EAAE,CAAC,CAAC;YACvI,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,eAAe,CAAC,6BAA6B,IAAI,wBAAwB,CAAC,CAAC;YACnG,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAC7C,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACnG,IAAI,OAAO;YAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,QAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,oCAAoC,CAAC,CAAC;QAC1G,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,uCAAuC,CAAC,CAAC;QAC3J,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO;YACP,QAAQ;YACR,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;YACxC,OAAO,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACvC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,YAAoC,EAAE,MAAoB;QACtE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;QACnD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC1D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,8BAA8B,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1H,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,SAAiB,EAAE,aAAqB,EAAE,WAAwC,EAAmB,EAAE;YAC7I,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,MAAM,CAAC,MAAM,CAAC;YACzC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5D,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAC1I,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChD,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC;aACzD,EAAE,MAAM,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC1C,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;YAC/G,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC;gBACL,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACtF,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;oBAC3F,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC5C,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACjD,IAAI,gBAAgB,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;4BAC9G,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;4BACjC,SAAS;wBACX,CAAC;oBACH,CAAC;oBACD,IAAI,YAAY;wBAAE,SAAS;oBAC3B,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;oBAC7H,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,SAAS,IAAI,aAAa,EAAE,WAAW,CAAC,CAAC;wBAC3G,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBACzC,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;4BACrG,MAAM,IAAI,eAAe,CAAC,GAAG,MAAM,kBAAkB,QAAQ,IAAI,SAAS,iBAAiB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;wBACpH,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAChC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACD,CAAC;oBAAS,CAAC;gBACT,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChG,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;oBAAE,MAAM,IAAI,eAAe,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;gBACjH,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,IAAI,GAAmB;gBAC3B,EAAE;gBACF,IAAI,EAAE,QAAQ,CAAC,UAAU;gBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACpF,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC9E,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACvF,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,YAAY,EAAE,IAAI,GAAG,EAAE;aACxB,CAAC;YACF,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvB,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,OAAO;gBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,OAAO;gBAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjF,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE,CAAC;YACtH,KAAK,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChF,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;oBAAE,SAAS;gBAC1C,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,mBAAmB,EAAE,QAAQ,CAAC,SAAS,IAAI,aAAa,EAAE,gBAAgB,CAAC,CAAC;oBAClI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;oBACpD,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,cAAc,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;wBACjJ,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE;4BAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;gCAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAChH,SAAS;oBACX,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1H,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE,CAAC;YAC7C,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;YACnI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/E,QAAQ,EAAE,IAAI,GAAG,CACf,CAAC,GAAG,QAAQ,CAAC;iBACV,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACjJ;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RegistryConfiguration } from "../registry/configuration.js";
|
|
2
|
+
import { type PackageSourceProvider, type SourcePackage } from "./registry-resolver.js";
|
|
3
|
+
export interface RemoteSourceProviderOptions {
|
|
4
|
+
readonly quarantineRoot: string;
|
|
5
|
+
readonly registryConfiguration: RegistryConfiguration;
|
|
6
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
7
|
+
readonly runGit?: (args: readonly string[], cwd: string, signal?: AbortSignal) => Promise<string>;
|
|
8
|
+
readonly prepareGit?: (packageRoot: string, manifest: Readonly<Record<string, unknown>>, signal?: AbortSignal) => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export type GitPreparer = NonNullable<RemoteSourceProviderOptions["prepareGit"]>;
|
|
11
|
+
export declare class RemoteSourceProvider implements PackageSourceProvider {
|
|
12
|
+
#private;
|
|
13
|
+
readonly options: RemoteSourceProviderOptions;
|
|
14
|
+
constructor(options: RemoteSourceProviderOptions);
|
|
15
|
+
resolve(name: string, specifier: string, fromDirectory: string, signal?: AbortSignal): Promise<SourcePackage | undefined>;
|
|
16
|
+
cleanup(): Promise<void>;
|
|
17
|
+
}
|