pray-cli 1.6.0
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/CHANGELOG.md +50 -0
- package/LICENSE.md +21 -0
- package/README.md +69 -0
- package/SECURITY.md +28 -0
- package/bin/pray.js +5 -0
- package/dist/archive/praypkg.d.ts +6 -0
- package/dist/archive/praypkg.d.ts.map +1 -0
- package/dist/archive/praypkg.js +67 -0
- package/dist/archive/praypkg.js.map +1 -0
- package/dist/auth/login.d.ts +11 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +84 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/passkey.d.ts +3 -0
- package/dist/auth/passkey.d.ts.map +1 -0
- package/dist/auth/passkey.js +48 -0
- package/dist/auth/passkey.js.map +1 -0
- package/dist/auth/session.d.ts +11 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +38 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/ssh-agent.d.ts +3 -0
- package/dist/auth/ssh-agent.d.ts.map +1 -0
- package/dist/auth/ssh-agent.js +135 -0
- package/dist/auth/ssh-agent.js.map +1 -0
- package/dist/cli/commands/distribution.d.ts +5 -0
- package/dist/cli/commands/distribution.d.ts.map +1 -0
- package/dist/cli/commands/distribution.js +134 -0
- package/dist/cli/commands/distribution.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +44 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/inspect.d.ts +7 -0
- package/dist/cli/commands/inspect.d.ts.map +1 -0
- package/dist/cli/commands/inspect.js +98 -0
- package/dist/cli/commands/inspect.js.map +1 -0
- package/dist/cli/commands/packages.d.ts +4 -0
- package/dist/cli/commands/packages.d.ts.map +1 -0
- package/dist/cli/commands/packages.js +62 -0
- package/dist/cli/commands/packages.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +2 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +55 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/update-core.d.ts +16 -0
- package/dist/cli/commands/update-core.d.ts.map +1 -0
- package/dist/cli/commands/update-core.js +108 -0
- package/dist/cli/commands/update-core.js.map +1 -0
- package/dist/cli/commands/update-latest.d.ts +2 -0
- package/dist/cli/commands/update-latest.d.ts.map +1 -0
- package/dist/cli/commands/update-latest.js +68 -0
- package/dist/cli/commands/update-latest.js.map +1 -0
- package/dist/cli/commands/update-report.d.ts +23 -0
- package/dist/cli/commands/update-report.d.ts.map +1 -0
- package/dist/cli/commands/update-report.js +113 -0
- package/dist/cli/commands/update-report.js.map +1 -0
- package/dist/cli/commands/update.d.ts +11 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +65 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/workspace.d.ts +3 -0
- package/dist/cli/commands/workspace.d.ts.map +1 -0
- package/dist/cli/commands/workspace.js +63 -0
- package/dist/cli/commands/workspace.js.map +1 -0
- package/dist/cli/help.d.ts +6 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +164 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/invocation.d.ts +10 -0
- package/dist/cli/invocation.d.ts.map +1 -0
- package/dist/cli/invocation.js +127 -0
- package/dist/cli/invocation.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +199 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/materialize.d.ts +10 -0
- package/dist/cli/materialize.d.ts.map +1 -0
- package/dist/cli/materialize.js +59 -0
- package/dist/cli/materialize.js.map +1 -0
- package/dist/cli/suggest.d.ts +4 -0
- package/dist/cli/suggest.d.ts.map +1 -0
- package/dist/cli/suggest.js +88 -0
- package/dist/cli/suggest.js.map +1 -0
- package/dist/cli/upgrade.d.ts +2 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +15 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/confess/index.d.ts +11 -0
- package/dist/confess/index.d.ts.map +1 -0
- package/dist/confess/index.js +51 -0
- package/dist/confess/index.js.map +1 -0
- package/dist/constraint.d.ts +8 -0
- package/dist/constraint.d.ts.map +1 -0
- package/dist/constraint.js +97 -0
- package/dist/constraint.js.map +1 -0
- package/dist/domain/types.d.ts +8 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +2 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/environment.d.ts +8 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +42 -0
- package/dist/environment.js.map +1 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +67 -0
- package/dist/errors.js.map +1 -0
- package/dist/git/sources.d.ts +14 -0
- package/dist/git/sources.d.ts.map +1 -0
- package/dist/git/sources.js +225 -0
- package/dist/git/sources.js.map +1 -0
- package/dist/hashing.d.ts +7 -0
- package/dist/hashing.d.ts.map +1 -0
- package/dist/hashing.js +43 -0
- package/dist/hashing.js.map +1 -0
- package/dist/http/client.d.ts +9 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +51 -0
- package/dist/http/client.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/literal/call-parser.d.ts +12 -0
- package/dist/literal/call-parser.d.ts.map +1 -0
- package/dist/literal/call-parser.js +75 -0
- package/dist/literal/call-parser.js.map +1 -0
- package/dist/literal/lines.d.ts +3 -0
- package/dist/literal/lines.d.ts.map +1 -0
- package/dist/literal/lines.js +34 -0
- package/dist/literal/lines.js.map +1 -0
- package/dist/literal/parser.d.ts +5 -0
- package/dist/literal/parser.d.ts.map +1 -0
- package/dist/literal/parser.js +269 -0
- package/dist/literal/parser.js.map +1 -0
- package/dist/literal/split.d.ts +4 -0
- package/dist/literal/split.d.ts.map +1 -0
- package/dist/literal/split.js +110 -0
- package/dist/literal/split.js.map +1 -0
- package/dist/literal/statement-surface.d.ts +11 -0
- package/dist/literal/statement-surface.d.ts.map +1 -0
- package/dist/literal/statement-surface.js +320 -0
- package/dist/literal/statement-surface.js.map +1 -0
- package/dist/literal/statements.d.ts +8 -0
- package/dist/literal/statements.d.ts.map +1 -0
- package/dist/literal/statements.js +49 -0
- package/dist/literal/statements.js.map +1 -0
- package/dist/literal/types.d.ts +27 -0
- package/dist/literal/types.d.ts.map +1 -0
- package/dist/literal/types.js +19 -0
- package/dist/literal/types.js.map +1 -0
- package/dist/lockfile/index.d.ts +24 -0
- package/dist/lockfile/index.d.ts.map +1 -0
- package/dist/lockfile/index.js +100 -0
- package/dist/lockfile/index.js.map +1 -0
- package/dist/lockfile/parse.d.ts +3 -0
- package/dist/lockfile/parse.d.ts.map +1 -0
- package/dist/lockfile/parse.js +94 -0
- package/dist/lockfile/parse.js.map +1 -0
- package/dist/lockfile/paths.d.ts +8 -0
- package/dist/lockfile/paths.d.ts.map +1 -0
- package/dist/lockfile/paths.js +66 -0
- package/dist/lockfile/paths.js.map +1 -0
- package/dist/lockfile/serialize.d.ts +3 -0
- package/dist/lockfile/serialize.d.ts.map +1 -0
- package/dist/lockfile/serialize.js +118 -0
- package/dist/lockfile/serialize.js.map +1 -0
- package/dist/lockfile/types.d.ts +49 -0
- package/dist/lockfile/types.d.ts.map +1 -0
- package/dist/lockfile/types.js +16 -0
- package/dist/lockfile/types.js.map +1 -0
- package/dist/manifest/deprecation.d.ts +7 -0
- package/dist/manifest/deprecation.d.ts.map +1 -0
- package/dist/manifest/deprecation.js +35 -0
- package/dist/manifest/deprecation.js.map +1 -0
- package/dist/manifest/destination.d.ts +19 -0
- package/dist/manifest/destination.d.ts.map +1 -0
- package/dist/manifest/destination.js +179 -0
- package/dist/manifest/destination.js.map +1 -0
- package/dist/manifest/edit.d.ts +9 -0
- package/dist/manifest/edit.d.ts.map +1 -0
- package/dist/manifest/edit.js +56 -0
- package/dist/manifest/edit.js.map +1 -0
- package/dist/manifest/format-manifest.d.ts +14 -0
- package/dist/manifest/format-manifest.d.ts.map +1 -0
- package/dist/manifest/format-manifest.js +274 -0
- package/dist/manifest/format-manifest.js.map +1 -0
- package/dist/manifest/format-serialize.d.ts +4 -0
- package/dist/manifest/format-serialize.d.ts.map +1 -0
- package/dist/manifest/format-serialize.js +172 -0
- package/dist/manifest/format-serialize.js.map +1 -0
- package/dist/manifest/index.d.ts +10 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +33 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/package-declaration.d.ts +4 -0
- package/dist/manifest/package-declaration.d.ts.map +1 -0
- package/dist/manifest/package-declaration.js +80 -0
- package/dist/manifest/package-declaration.js.map +1 -0
- package/dist/manifest/parse-statements.d.ts +15 -0
- package/dist/manifest/parse-statements.d.ts.map +1 -0
- package/dist/manifest/parse-statements.js +216 -0
- package/dist/manifest/parse-statements.js.map +1 -0
- package/dist/manifest/parser.d.ts +3 -0
- package/dist/manifest/parser.d.ts.map +1 -0
- package/dist/manifest/parser.js +382 -0
- package/dist/manifest/parser.js.map +1 -0
- package/dist/manifest/types.d.ts +78 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +84 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/package-spec/discovery.d.ts +2 -0
- package/dist/package-spec/discovery.d.ts.map +1 -0
- package/dist/package-spec/discovery.js +21 -0
- package/dist/package-spec/discovery.js.map +1 -0
- package/dist/package-spec/index.d.ts +5 -0
- package/dist/package-spec/index.d.ts.map +1 -0
- package/dist/package-spec/index.js +5 -0
- package/dist/package-spec/index.js.map +1 -0
- package/dist/package-spec/parse-maps.d.ts +8 -0
- package/dist/package-spec/parse-maps.d.ts.map +1 -0
- package/dist/package-spec/parse-maps.js +127 -0
- package/dist/package-spec/parse-maps.js.map +1 -0
- package/dist/package-spec/parser.d.ts +3 -0
- package/dist/package-spec/parser.d.ts.map +1 -0
- package/dist/package-spec/parser.js +111 -0
- package/dist/package-spec/parser.js.map +1 -0
- package/dist/package-spec/tree-hash.d.ts +4 -0
- package/dist/package-spec/tree-hash.d.ts.map +1 -0
- package/dist/package-spec/tree-hash.js +29 -0
- package/dist/package-spec/tree-hash.js.map +1 -0
- package/dist/package-spec/types.d.ts +44 -0
- package/dist/package-spec/types.d.ts.map +1 -0
- package/dist/package-spec/types.js +12 -0
- package/dist/package-spec/types.js.map +1 -0
- package/dist/project-context/dotenv.d.ts +3 -0
- package/dist/project-context/dotenv.d.ts.map +1 -0
- package/dist/project-context/dotenv.js +49 -0
- package/dist/project-context/dotenv.js.map +1 -0
- package/dist/project-context/index.d.ts +10 -0
- package/dist/project-context/index.d.ts.map +1 -0
- package/dist/project-context/index.js +62 -0
- package/dist/project-context/index.js.map +1 -0
- package/dist/project-context/runtime.d.ts +4 -0
- package/dist/project-context/runtime.d.ts.map +1 -0
- package/dist/project-context/runtime.js +8 -0
- package/dist/project-context/runtime.js.map +1 -0
- package/dist/project-context/types.d.ts +11 -0
- package/dist/project-context/types.d.ts.map +1 -0
- package/dist/project-context/types.js +2 -0
- package/dist/project-context/types.js.map +1 -0
- package/dist/publish/index.d.ts +6 -0
- package/dist/publish/index.d.ts.map +1 -0
- package/dist/publish/index.js +133 -0
- package/dist/publish/index.js.map +1 -0
- package/dist/registry/index.d.ts +17 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +223 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/types.d.ts +27 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +2 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/render/content-builder.d.ts +9 -0
- package/dist/render/content-builder.d.ts.map +1 -0
- package/dist/render/content-builder.js +31 -0
- package/dist/render/content-builder.js.map +1 -0
- package/dist/render/header.d.ts +4 -0
- package/dist/render/header.d.ts.map +1 -0
- package/dist/render/header.js +15 -0
- package/dist/render/header.js.map +1 -0
- package/dist/render/legacy.d.ts +5 -0
- package/dist/render/legacy.d.ts.map +1 -0
- package/dist/render/legacy.js +53 -0
- package/dist/render/legacy.js.map +1 -0
- package/dist/render/managed-export.d.ts +7 -0
- package/dist/render/managed-export.d.ts.map +1 -0
- package/dist/render/managed-export.js +33 -0
- package/dist/render/managed-export.js.map +1 -0
- package/dist/render/project.d.ts +8 -0
- package/dist/render/project.d.ts.map +1 -0
- package/dist/render/project.js +35 -0
- package/dist/render/project.js.map +1 -0
- package/dist/render/provisioned.d.ts +9 -0
- package/dist/render/provisioned.d.ts.map +1 -0
- package/dist/render/provisioned.js +191 -0
- package/dist/render/provisioned.js.map +1 -0
- package/dist/render/scoped.d.ts +5 -0
- package/dist/render/scoped.d.ts.map +1 -0
- package/dist/render/scoped.js +50 -0
- package/dist/render/scoped.js.map +1 -0
- package/dist/render/types.d.ts +7 -0
- package/dist/render/types.d.ts.map +1 -0
- package/dist/render/types.js +2 -0
- package/dist/render/types.js.map +1 -0
- package/dist/resolve/context.d.ts +11 -0
- package/dist/resolve/context.d.ts.map +1 -0
- package/dist/resolve/context.js +16 -0
- package/dist/resolve/context.js.map +1 -0
- package/dist/resolve/package-root.d.ts +13 -0
- package/dist/resolve/package-root.d.ts.map +1 -0
- package/dist/resolve/package-root.js +86 -0
- package/dist/resolve/package-root.js.map +1 -0
- package/dist/resolve/project.d.ts +8 -0
- package/dist/resolve/project.d.ts.map +1 -0
- package/dist/resolve/project.js +261 -0
- package/dist/resolve/project.js.map +1 -0
- package/dist/resolve/types.d.ts +36 -0
- package/dist/resolve/types.d.ts.map +1 -0
- package/dist/resolve/types.js +2 -0
- package/dist/resolve/types.js.map +1 -0
- package/dist/serve/index.d.ts +7 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +88 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/substitute.d.ts +3 -0
- package/dist/substitute.d.ts.map +1 -0
- package/dist/substitute.js +38 -0
- package/dist/substitute.js.map +1 -0
- package/dist/sync/index.d.ts +6 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +74 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/terminal.d.ts +4 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +26 -0
- package/dist/terminal.js.map +1 -0
- package/dist/tree/index.d.ts +4 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +40 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/trust/import-registry.d.ts +6 -0
- package/dist/trust/import-registry.d.ts.map +1 -0
- package/dist/trust/import-registry.js +65 -0
- package/dist/trust/import-registry.js.map +1 -0
- package/dist/trust/import-repo.d.ts +2 -0
- package/dist/trust/import-repo.d.ts.map +1 -0
- package/dist/trust/import-repo.js +50 -0
- package/dist/trust/import-repo.js.map +1 -0
- package/dist/trust/index.d.ts +11 -0
- package/dist/trust/index.d.ts.map +1 -0
- package/dist/trust/index.js +148 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/trust/parse.d.ts +3 -0
- package/dist/trust/parse.d.ts.map +1 -0
- package/dist/trust/parse.js +43 -0
- package/dist/trust/parse.js.map +1 -0
- package/dist/trust/policy-helpers.d.ts +8 -0
- package/dist/trust/policy-helpers.d.ts.map +1 -0
- package/dist/trust/policy-helpers.js +36 -0
- package/dist/trust/policy-helpers.js.map +1 -0
- package/dist/trust/store.d.ts +7 -0
- package/dist/trust/store.d.ts.map +1 -0
- package/dist/trust/store.js +40 -0
- package/dist/trust/store.js.map +1 -0
- package/dist/trust/types.d.ts +13 -0
- package/dist/trust/types.d.ts.map +1 -0
- package/dist/trust/types.js +2 -0
- package/dist/trust/types.js.map +1 -0
- package/dist/validation.d.ts +8 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +41 -0
- package/dist/validation.js.map +1 -0
- package/dist/vendor/index.d.ts +4 -0
- package/dist/vendor/index.d.ts.map +1 -0
- package/dist/vendor/index.js +31 -0
- package/dist/vendor/index.js.map +1 -0
- package/dist/verify/project.d.ts +14 -0
- package/dist/verify/project.d.ts.map +1 -0
- package/dist/verify/project.js +240 -0
- package/dist/verify/project.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { versionSatisfies } from "../constraint.js";
|
|
4
|
+
import { validateEnvironment } from "../environment.js";
|
|
5
|
+
import { PrayError } from "../errors.js";
|
|
6
|
+
import { prepareGitSources } from "../git/sources.js";
|
|
7
|
+
import { normalizeLineEndings } from "../hashing.js";
|
|
8
|
+
import { readLockfile } from "../lockfile/index.js";
|
|
9
|
+
import { defaultLockfilePath } from "../lockfile/paths.js";
|
|
10
|
+
import { emitDeprecationWarnings } from "../manifest/deprecation.js";
|
|
11
|
+
import { exportKindMatchesRole, packageRoles, } from "../manifest/destination.js";
|
|
12
|
+
import { manifestHash, parseManifest, readManifestText, } from "../manifest/index.js";
|
|
13
|
+
import { findPrayspecFile, parsePackageSpec, treeHashForRoot, } from "../package-spec/index.js";
|
|
14
|
+
import { activeInvocationContext } from "../project-context/runtime.js";
|
|
15
|
+
import { defaultResolveOptions } from "./context.js";
|
|
16
|
+
import { resolvePackageRoot, vendoredPackageRoot } from "./package-root.js";
|
|
17
|
+
export async function resolveProject(manifestPath, options = defaultResolveOptions()) {
|
|
18
|
+
const projectRoot = canonicalProjectRoot(manifestPath);
|
|
19
|
+
const lockfilePath = defaultLockfilePath(projectRoot);
|
|
20
|
+
const lockfile = existsSync(lockfilePath)
|
|
21
|
+
? readLockfile(lockfilePath)
|
|
22
|
+
: undefined;
|
|
23
|
+
const manifest = parseManifest(readManifestText(manifestPath));
|
|
24
|
+
emitDeprecationWarnings(manifest.deprecatedKeywords);
|
|
25
|
+
const environment = options.environment ?? activeInvocationContext()?.environment;
|
|
26
|
+
validateEnvironment(manifest, environment);
|
|
27
|
+
const manifestHashValue = manifestHash(manifest);
|
|
28
|
+
const sources = sourceMap(manifest.sources);
|
|
29
|
+
const gitSources = prepareGitSources(projectRoot, manifest.sources, lockfile, options.refreshSourceRevisions);
|
|
30
|
+
const sourceRevisions = new Map();
|
|
31
|
+
for (const [name, checkout] of gitSources.entries()) {
|
|
32
|
+
if (checkout.revision) {
|
|
33
|
+
sourceRevisions.set(name, checkout.revision);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const packages = [];
|
|
37
|
+
const seen = new Set();
|
|
38
|
+
const resolutionErrors = [];
|
|
39
|
+
for (const declaration of manifest.packages) {
|
|
40
|
+
try {
|
|
41
|
+
const packageEntry = await resolvePackage(projectRoot, sources, gitSources, declaration, lockfile, options);
|
|
42
|
+
if (seen.has(packageEntry.declaration.name)) {
|
|
43
|
+
throw PrayError.resolution(`duplicate package declaration: ${packageEntry.declaration.name}`);
|
|
44
|
+
}
|
|
45
|
+
seen.add(packageEntry.declaration.name);
|
|
46
|
+
packages.push(packageEntry);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
50
|
+
resolutionErrors.push(`${declaration.name}: ${message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (resolutionErrors.length > 0) {
|
|
54
|
+
throw PrayError.resolution(resolutionErrors.join("\n"));
|
|
55
|
+
}
|
|
56
|
+
const localFiles = [];
|
|
57
|
+
const localErrors = [];
|
|
58
|
+
for (const local of manifest.local) {
|
|
59
|
+
try {
|
|
60
|
+
localFiles.push(resolveLocalFile(projectRoot, local));
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
64
|
+
localErrors.push(`local ${local.path}: ${message}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (localErrors.length > 0) {
|
|
68
|
+
throw PrayError.resolution(localErrors.join("\n"));
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
manifestPath: resolve(manifestPath),
|
|
72
|
+
projectRoot,
|
|
73
|
+
manifest,
|
|
74
|
+
manifestHash: manifestHashValue,
|
|
75
|
+
packages,
|
|
76
|
+
localFiles,
|
|
77
|
+
sourceRevisions,
|
|
78
|
+
sourceHostKeys: new Map(),
|
|
79
|
+
...(environment ? { environment } : {}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export async function resolveProjectWithGitRefreshFallback(manifestPath, options = defaultResolveOptions(), allowGitRefreshFallback = false) {
|
|
83
|
+
try {
|
|
84
|
+
return await resolveProject(manifestPath, options);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (allowGitRefreshFallback &&
|
|
88
|
+
!options.offline &&
|
|
89
|
+
!options.refreshSourceRevisions &&
|
|
90
|
+
resolutionMayBenefitFromGitSourceRefresh(error)) {
|
|
91
|
+
return resolveProject(manifestPath, {
|
|
92
|
+
...options,
|
|
93
|
+
refreshSourceRevisions: true,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function resolutionMayBenefitFromGitSourceRefresh(error) {
|
|
100
|
+
return (error instanceof PrayError &&
|
|
101
|
+
error.kind === "resolution" &&
|
|
102
|
+
error.message.includes("no registry version"));
|
|
103
|
+
}
|
|
104
|
+
function canonicalProjectRoot(manifestPath) {
|
|
105
|
+
const root = resolve(manifestPath, "..");
|
|
106
|
+
return root.length === 0 ? process.cwd() : root;
|
|
107
|
+
}
|
|
108
|
+
async function resolvePackage(projectRoot, sources, gitSources, declaration, lockfile, options) {
|
|
109
|
+
const vendoredVersion = lockfile?.package.find((entry) => entry.name === declaration.name)?.version;
|
|
110
|
+
const vendoredRoot = vendoredVersion
|
|
111
|
+
? vendoredPackageRoot(projectRoot, declaration.name, vendoredVersion)
|
|
112
|
+
: undefined;
|
|
113
|
+
const resolution = vendoredRoot
|
|
114
|
+
? { root: vendoredRoot }
|
|
115
|
+
: await resolvePackageRoot(projectRoot, sources, gitSources, declaration, lockfile, options);
|
|
116
|
+
const root = resolution.root;
|
|
117
|
+
const specPath = findPrayspecFile(root);
|
|
118
|
+
const spec = parsePackageSpec(readFileSync(specPath, "utf8"));
|
|
119
|
+
if (spec.name !== declaration.name) {
|
|
120
|
+
throw PrayError.resolution(`package path ${root} declares ${spec.name}, expected ${declaration.name}`);
|
|
121
|
+
}
|
|
122
|
+
if (!versionSatisfies(spec.version, declaration.constraint)) {
|
|
123
|
+
throw PrayError.resolution(`package ${declaration.name} version ${spec.version} does not satisfy constraint ${declaration.constraint}`);
|
|
124
|
+
}
|
|
125
|
+
const selectedExports = selectExports(declaration, spec);
|
|
126
|
+
const treeHash = treeHashForRoot(root, spec);
|
|
127
|
+
const exportBodies = loadExportBodies(root, spec, selectedExports);
|
|
128
|
+
const skillFiles = buildSkillFileIndex(spec);
|
|
129
|
+
return {
|
|
130
|
+
declaration,
|
|
131
|
+
root,
|
|
132
|
+
spec,
|
|
133
|
+
treeHash,
|
|
134
|
+
artifactHash: treeHash,
|
|
135
|
+
artifact: `path:${resolve(root)}`,
|
|
136
|
+
selectedExports,
|
|
137
|
+
sourceChecksum: treeHash,
|
|
138
|
+
exportBodies,
|
|
139
|
+
skillFiles,
|
|
140
|
+
signerFingerprint: resolution.signerFingerprint,
|
|
141
|
+
registryLatestVersion: resolution.registryLatestVersion,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function resolveLocalFile(projectRoot, declaration) {
|
|
145
|
+
const path = resolve(projectRoot, declaration.path);
|
|
146
|
+
if (!existsSync(path)) {
|
|
147
|
+
if (declaration.optional) {
|
|
148
|
+
return {
|
|
149
|
+
path,
|
|
150
|
+
manifestPath: declaration.path,
|
|
151
|
+
content: "",
|
|
152
|
+
position: declaration.position,
|
|
153
|
+
optional: true,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
throw PrayError.resolution(missingLocalEmbedGuidance(declaration.path));
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
path,
|
|
160
|
+
manifestPath: declaration.path,
|
|
161
|
+
content: normalizeLineEndings(readFileSync(path, "utf8")),
|
|
162
|
+
position: declaration.position,
|
|
163
|
+
optional: declaration.optional,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
export function missingLocalEmbedGuidance(path) {
|
|
167
|
+
return (`Prayfile lists \`local "${path}"\` but the file does not exist. ` +
|
|
168
|
+
"Create the file or remove the entry from Prayfile, then run `pray install`.");
|
|
169
|
+
}
|
|
170
|
+
function sourceMap(sources) {
|
|
171
|
+
return new Map(sources.map((source) => [source.name, source]));
|
|
172
|
+
}
|
|
173
|
+
function selectExports(declaration, spec) {
|
|
174
|
+
if (declaration.exports.length > 0) {
|
|
175
|
+
for (const exportName of declaration.exports) {
|
|
176
|
+
if (!spec.exports.has(exportName)) {
|
|
177
|
+
throw PrayError.resolution(`package ${declaration.name} does not export ${exportName}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return [...declaration.exports];
|
|
181
|
+
}
|
|
182
|
+
const roles = packageRoles(declaration);
|
|
183
|
+
if (roles.length === 0 && !declaration.file) {
|
|
184
|
+
return [...spec.exports.keys()].sort();
|
|
185
|
+
}
|
|
186
|
+
const effectiveRoles = [...roles];
|
|
187
|
+
if (declaration.file && !effectiveRoles.includes("file")) {
|
|
188
|
+
effectiveRoles.push("file");
|
|
189
|
+
}
|
|
190
|
+
const selected = [];
|
|
191
|
+
for (const role of effectiveRoles) {
|
|
192
|
+
const compatible = [...spec.exports.entries()]
|
|
193
|
+
.filter(([, exportEntry]) => exportKindMatchesRole(exportEntry.kind, role))
|
|
194
|
+
.map(([name]) => name);
|
|
195
|
+
if (compatible.length === 1) {
|
|
196
|
+
const name = compatible[0];
|
|
197
|
+
if (!selected.includes(name)) {
|
|
198
|
+
selected.push(name);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else if (compatible.length === 0) {
|
|
202
|
+
throw PrayError.resolution(`package ${declaration.name} has no export compatible with ${role}`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
throw PrayError.resolution(`package ${declaration.name} has multiple exports compatible with ${role}; set export: "name"`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return selected;
|
|
209
|
+
}
|
|
210
|
+
function loadExportBodies(root, spec, selectedExports) {
|
|
211
|
+
const exportBodies = new Map();
|
|
212
|
+
for (const exportName of selectedExports) {
|
|
213
|
+
const entry = spec.exports.get(exportName);
|
|
214
|
+
if (!entry) {
|
|
215
|
+
throw PrayError.resolution(`package ${spec.name} is missing export ${exportName}`);
|
|
216
|
+
}
|
|
217
|
+
if (entry.kind !== "fragment") {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
const filePath = join(root, entry.path);
|
|
221
|
+
if (!existsSync(filePath)) {
|
|
222
|
+
throw PrayError.integrity(`package file missing for export ${exportName}: ${entry.path}`);
|
|
223
|
+
}
|
|
224
|
+
exportBodies.set(exportName, normalizeLineEndings(readFileSync(filePath, "utf8")));
|
|
225
|
+
}
|
|
226
|
+
return exportBodies;
|
|
227
|
+
}
|
|
228
|
+
function buildSkillFileIndex(spec) {
|
|
229
|
+
const index = new Map();
|
|
230
|
+
for (const [exportName, exportEntry] of spec.exports.entries()) {
|
|
231
|
+
if (exportEntry.kind !== "folder" && exportEntry.kind !== "skill") {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const prefix = exportEntry.path.replace(/\/$/, "");
|
|
235
|
+
index.set(exportName, indexedFilesUnderPrefix(spec.files, prefix).map((file) => skillRelativeFile(file, prefix)));
|
|
236
|
+
}
|
|
237
|
+
for (const [skillName, skill] of spec.skills.entries()) {
|
|
238
|
+
const prefix = skill.path.replace(/\/$/, "");
|
|
239
|
+
index.set(skillName, indexedFilesUnderPrefix(spec.files, prefix).map((file) => skillRelativeFile(file, prefix)));
|
|
240
|
+
}
|
|
241
|
+
return index;
|
|
242
|
+
}
|
|
243
|
+
function indexedFilesUnderPrefix(files, prefix) {
|
|
244
|
+
const normalizedPrefix = prefix.endsWith("/") ? prefix : `${prefix}/`;
|
|
245
|
+
return files
|
|
246
|
+
.filter((file) => file === prefix || file.startsWith(normalizedPrefix))
|
|
247
|
+
.sort();
|
|
248
|
+
}
|
|
249
|
+
function skillRelativeFile(file, skillPrefix) {
|
|
250
|
+
const normalizedPrefix = skillPrefix.replace(/\/$/, "");
|
|
251
|
+
if (!file.startsWith(normalizedPrefix)) {
|
|
252
|
+
return file;
|
|
253
|
+
}
|
|
254
|
+
const relative = file.slice(normalizedPrefix.length).replace(/^\//, "");
|
|
255
|
+
if (relative.length === 0 || file === normalizedPrefix) {
|
|
256
|
+
return file.split("/").pop() ?? file;
|
|
257
|
+
}
|
|
258
|
+
return relative;
|
|
259
|
+
}
|
|
260
|
+
export { defaultResolveOptions } from "./context.js";
|
|
261
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/resolve/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { LocalPosition } from "../domain/types.js";
|
|
2
|
+
import type { Manifest, ManifestPackage } from "../manifest/types.js";
|
|
3
|
+
import type { PackageSpec } from "../package-spec/types.js";
|
|
4
|
+
export interface ResolvedLocalFile {
|
|
5
|
+
path: string;
|
|
6
|
+
manifestPath: string;
|
|
7
|
+
content: string;
|
|
8
|
+
position: LocalPosition;
|
|
9
|
+
optional: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface ResolvedPackage {
|
|
12
|
+
declaration: ManifestPackage;
|
|
13
|
+
root: string;
|
|
14
|
+
spec: PackageSpec;
|
|
15
|
+
treeHash: string;
|
|
16
|
+
artifactHash: string;
|
|
17
|
+
artifact: string;
|
|
18
|
+
selectedExports: string[];
|
|
19
|
+
sourceChecksum: string;
|
|
20
|
+
exportBodies: Map<string, string>;
|
|
21
|
+
skillFiles: Map<string, string[]>;
|
|
22
|
+
signerFingerprint?: string;
|
|
23
|
+
registryLatestVersion?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ResolvedProject {
|
|
26
|
+
manifestPath: string;
|
|
27
|
+
projectRoot: string;
|
|
28
|
+
manifest: Manifest;
|
|
29
|
+
manifestHash: string;
|
|
30
|
+
packages: ResolvedPackage[];
|
|
31
|
+
localFiles: ResolvedLocalFile[];
|
|
32
|
+
sourceRevisions: Map<string, string>;
|
|
33
|
+
sourceHostKeys: Map<string, string>;
|
|
34
|
+
environment?: string;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolve/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,eAAe,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/resolve/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serve/index.ts"],"names":[],"mappings":"AASA,wBAAgB,SAAS,CAAC,OAAO,EAAE;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB;AAuFD,wBAAgB,WAAW,IAAI,KAAK,CAEnC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { createServer, } from "node:http";
|
|
3
|
+
import { extname, join, resolve } from "node:path";
|
|
4
|
+
import { PrayError } from "../errors.js";
|
|
5
|
+
export function runServer(options) {
|
|
6
|
+
const root = resolve(options.root);
|
|
7
|
+
const host = options.host ?? "127.0.0.1";
|
|
8
|
+
const port = options.port ?? 7429;
|
|
9
|
+
return new Promise((resolvePromise, reject) => {
|
|
10
|
+
const server = createServer((request, response) => {
|
|
11
|
+
try {
|
|
12
|
+
handleRequest(root, request, response);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
16
|
+
writeResponse(response, 500, "text/plain", message);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
server.listen(port, host, () => {
|
|
20
|
+
process.stdout.write(`Serving ${root} on http://${host}:${port}\n`);
|
|
21
|
+
});
|
|
22
|
+
server.on("error", reject);
|
|
23
|
+
process.on("SIGINT", () => {
|
|
24
|
+
server.close(() => resolvePromise());
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function handleRequest(root, request, response) {
|
|
29
|
+
const url = new URL(request.url ?? "/", "http://localhost");
|
|
30
|
+
const method = request.method ?? "GET";
|
|
31
|
+
const path = url.pathname;
|
|
32
|
+
if (method === "PUT") {
|
|
33
|
+
handlePut(root, path, request, response);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (method !== "GET") {
|
|
37
|
+
writeResponse(response, 405, "text/plain", "method not allowed");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (path === "/") {
|
|
41
|
+
writeResponse(response, 200, "text/html", `<h1>Pray distribution</h1><p>Root: ${root}</p>`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const filePath = resolve(root, path.replace(/^\//, ""));
|
|
45
|
+
if (!filePath.startsWith(root) || !existsSync(filePath)) {
|
|
46
|
+
writeResponse(response, 404, "text/plain", "not found");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const body = readFileSync(filePath);
|
|
50
|
+
writeResponse(response, 200, contentTypeFor(filePath), body);
|
|
51
|
+
}
|
|
52
|
+
function handlePut(root, path, request, response) {
|
|
53
|
+
const chunks = [];
|
|
54
|
+
request.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
|
|
55
|
+
request.on("end", () => {
|
|
56
|
+
const filePath = resolve(root, path.replace(/^\//, ""));
|
|
57
|
+
if (!filePath.startsWith(root)) {
|
|
58
|
+
writeResponse(response, 403, "text/plain", "forbidden");
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
mkdirSync(join(filePath, ".."), { recursive: true });
|
|
62
|
+
writeFileSync(filePath, Buffer.concat(chunks));
|
|
63
|
+
writeResponse(response, 200, "text/plain", "ok");
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function contentTypeFor(path) {
|
|
67
|
+
switch (extname(path)) {
|
|
68
|
+
case ".json":
|
|
69
|
+
return "application/json";
|
|
70
|
+
case ".praypkg":
|
|
71
|
+
return "application/octet-stream";
|
|
72
|
+
default:
|
|
73
|
+
return "text/plain";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function writeResponse(response, status, contentType, body) {
|
|
77
|
+
const buffer = typeof body === "string" ? Buffer.from(body, "utf8") : body;
|
|
78
|
+
response.writeHead(status, {
|
|
79
|
+
"Content-Type": contentType,
|
|
80
|
+
"Content-Length": buffer.length,
|
|
81
|
+
Connection: "close",
|
|
82
|
+
});
|
|
83
|
+
response.end(buffer);
|
|
84
|
+
}
|
|
85
|
+
export function runStdioRpc() {
|
|
86
|
+
throw PrayError.unsupported("serve --stdio requires SSH RPC support");
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serve/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substitute.d.ts","sourceRoot":"","sources":["../src/substitute.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpD,MAAM,CA+BR"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { PrayError } from "./errors.js";
|
|
2
|
+
const PLACEHOLDER_PREFIX = "((pray:";
|
|
3
|
+
const PLACEHOLDER_SUFFIX = "))";
|
|
4
|
+
export function isPraySymbolKey(key) {
|
|
5
|
+
if (key.length === 0) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return /^[A-Za-z0-9._/-]+$/.test(key);
|
|
9
|
+
}
|
|
10
|
+
export function substitutePraySymbols(text, symbols) {
|
|
11
|
+
const lookup = symbols instanceof Map ? symbols : new Map(Object.entries(symbols));
|
|
12
|
+
let output = "";
|
|
13
|
+
let rest = text;
|
|
14
|
+
while (true) {
|
|
15
|
+
const start = rest.indexOf(PLACEHOLDER_PREFIX);
|
|
16
|
+
if (start < 0) {
|
|
17
|
+
output += rest;
|
|
18
|
+
return output;
|
|
19
|
+
}
|
|
20
|
+
output += rest.slice(0, start);
|
|
21
|
+
const afterPrefix = rest.slice(start + PLACEHOLDER_PREFIX.length);
|
|
22
|
+
const end = afterPrefix.indexOf(PLACEHOLDER_SUFFIX);
|
|
23
|
+
if (end < 0) {
|
|
24
|
+
throw PrayError.render("unclosed ((pray:...) placeholder");
|
|
25
|
+
}
|
|
26
|
+
const path = afterPrefix.slice(0, end);
|
|
27
|
+
if (!isPraySymbolKey(path)) {
|
|
28
|
+
throw PrayError.render(`invalid ((pray:...)) path \`${path}\``);
|
|
29
|
+
}
|
|
30
|
+
const value = lookup.get(path);
|
|
31
|
+
if (value === undefined) {
|
|
32
|
+
throw PrayError.render(`unknown pray symbol \`${path}\`; declare it in \`pray do ... end\``);
|
|
33
|
+
}
|
|
34
|
+
output += value;
|
|
35
|
+
rest = afterPrefix.slice(end + PLACEHOLDER_SUFFIX.length);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=substitute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substitute.js","sourceRoot":"","sources":["../src/substitute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAAqD;IAErD,MAAM,MAAM,GACV,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,IAAI,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,CAAC,MAAM,CAAC,+BAA+B,IAAI,IAAI,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,SAAS,CAAC,MAAM,CACpB,yBAAyB,IAAI,uCAAuC,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC;QAChB,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,WAAW,CAAC,CAgEtB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { unpackPraypkg } from "../archive/praypkg.js";
|
|
4
|
+
import { PrayError } from "../errors.js";
|
|
5
|
+
import { sha256Prefixed } from "../hashing.js";
|
|
6
|
+
import { httpGet, joinUrl } from "../http/client.js";
|
|
7
|
+
import { fetchPackageMetadata } from "../registry/index.js";
|
|
8
|
+
export async function syncDistributionRoot(root, peers) {
|
|
9
|
+
const distributionRoot = root;
|
|
10
|
+
const queue = [...peers];
|
|
11
|
+
const visited = new Set();
|
|
12
|
+
const syncedPackages = new Set();
|
|
13
|
+
while (queue.length > 0) {
|
|
14
|
+
const peer = queue.shift();
|
|
15
|
+
if (visited.has(peer)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
visited.add(peer);
|
|
19
|
+
const metadata = await fetchPackageIndex(peer);
|
|
20
|
+
for (const packageName of metadata.packages) {
|
|
21
|
+
const packageMetadata = await fetchPackageMetadata(peer, packageName);
|
|
22
|
+
const latest = packageMetadata.versions
|
|
23
|
+
.filter((entry) => !entry.yanked)
|
|
24
|
+
.at(-1);
|
|
25
|
+
if (!latest) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const artifactBytes = await httpGet(joinUrl(peer, latest.artifact));
|
|
29
|
+
if (latest.artifactHash &&
|
|
30
|
+
sha256Prefixed(artifactBytes) !== latest.artifactHash) {
|
|
31
|
+
throw PrayError.integrity(`artifact hash mismatch for ${packageName}`);
|
|
32
|
+
}
|
|
33
|
+
const cacheDirectory = join(distributionRoot, ".pray", "sync-staging", packageName.replaceAll("/", "-"), latest.version);
|
|
34
|
+
mkdirSync(cacheDirectory, { recursive: true });
|
|
35
|
+
unpackPraypkg(artifactBytes, cacheDirectory);
|
|
36
|
+
writeRegistryPackageMetadataLocal(join(distributionRoot, "v1", "packages", `${packageName}.json`), packageMetadata);
|
|
37
|
+
mkdirSync(join(distributionRoot, latest.artifact, ".."), {
|
|
38
|
+
recursive: true,
|
|
39
|
+
});
|
|
40
|
+
writeFileSync(join(distributionRoot, latest.artifact), artifactBytes);
|
|
41
|
+
syncedPackages.add(packageName);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
writeFileSync(join(distributionRoot, "v1", "index.json"), `${JSON.stringify({
|
|
45
|
+
spec: "prayfile-distribution-1",
|
|
46
|
+
packages: [...syncedPackages].sort(),
|
|
47
|
+
}, null, 2)}\n`, "utf8");
|
|
48
|
+
return { peers: [...visited], packages: [...syncedPackages].sort() };
|
|
49
|
+
}
|
|
50
|
+
async function fetchPackageIndex(peer) {
|
|
51
|
+
const text = await httpGet(joinUrl(peer, "v1/index.json")).then((buffer) => buffer.toString("utf8"));
|
|
52
|
+
const data = JSON.parse(text);
|
|
53
|
+
return { packages: data.packages ?? [] };
|
|
54
|
+
}
|
|
55
|
+
function writeRegistryPackageMetadataLocal(path, metadata) {
|
|
56
|
+
mkdirSync(join(path, ".."), { recursive: true });
|
|
57
|
+
writeFileSync(path, `${JSON.stringify({
|
|
58
|
+
name: metadata.name,
|
|
59
|
+
versions: metadata.versions.map((entry) => ({
|
|
60
|
+
version: entry.version,
|
|
61
|
+
artifact: entry.artifact,
|
|
62
|
+
artifact_hash: entry.artifactHash,
|
|
63
|
+
tree_hash: entry.treeHash,
|
|
64
|
+
yanked: entry.yanked,
|
|
65
|
+
targets: entry.targets,
|
|
66
|
+
exports: entry.exports,
|
|
67
|
+
signer: entry.signer,
|
|
68
|
+
signer_fingerprint: entry.signerFingerprint,
|
|
69
|
+
published_at: entry.publishedAt,
|
|
70
|
+
signature: entry.signature,
|
|
71
|
+
})),
|
|
72
|
+
}, null, 2)}\n`, "utf8");
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAcA,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C;AAED,wBAAgB,YAAY,IAAI,OAAO,CAMtC;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
function envTruthy(name) {
|
|
2
|
+
const value = process.env[name];
|
|
3
|
+
if (!value) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const normalized = value.trim().toLowerCase();
|
|
7
|
+
return (normalized === "1" ||
|
|
8
|
+
normalized === "true" ||
|
|
9
|
+
normalized === "yes" ||
|
|
10
|
+
normalized === "on");
|
|
11
|
+
}
|
|
12
|
+
export function noColorRequested() {
|
|
13
|
+
const value = process.env.NO_COLOR;
|
|
14
|
+
return value !== undefined && value.length > 0;
|
|
15
|
+
}
|
|
16
|
+
export function colorEnabled() {
|
|
17
|
+
if (envTruthy("PRAY_NO_COLOR") || noColorRequested()) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const term = process.env.TERM;
|
|
21
|
+
return term === undefined || term !== "dumb";
|
|
22
|
+
}
|
|
23
|
+
export function noInputRequested() {
|
|
24
|
+
return envTruthy("PRAY_NO_INPUT");
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,CACL,UAAU,KAAK,GAAG;QAClB,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,KAAK;QACpB,UAAU,KAAK,IAAI,CACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ResolvedPackage, ResolvedProject } from "../resolve/types.js";
|
|
2
|
+
export declare function renderDependencyTree(project: ResolvedProject): string[];
|
|
3
|
+
export declare function packageSourceSummary(packageEntry: ResolvedPackage): string;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tree/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAYvE;AA6BD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,eAAe,GAAG,MAAM,CAQ1E"}
|