@uapkg/cli 1.1.10 → 1.3.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/dist/app/CompositionRoot.d.ts +6 -0
- package/dist/app/CompositionRoot.d.ts.map +1 -1
- package/dist/app/CompositionRoot.js +16 -0
- package/dist/app/CompositionRoot.js.map +1 -1
- package/dist/app/UAPKGApplication.d.ts.map +1 -1
- package/dist/app/UAPKGApplication.js +62 -2
- package/dist/app/UAPKGApplication.js.map +1 -1
- package/dist/build/BuildMetadata.d.ts +12 -0
- package/dist/build/BuildMetadata.d.ts.map +1 -0
- package/dist/build/BuildMetadata.js +6 -0
- package/dist/cli/UAPKGCommandLine.d.ts +98 -3
- package/dist/cli/UAPKGCommandLine.d.ts.map +1 -1
- package/dist/cli/UAPKGCommandLine.js +69 -0
- package/dist/cli/UAPKGCommandLine.js.map +1 -1
- package/dist/cli/parsing/UAPKGCommandLineParser.d.ts.map +1 -1
- package/dist/cli/parsing/UAPKGCommandLineParser.js +8 -1
- package/dist/cli/parsing/UAPKGCommandLineParser.js.map +1 -1
- package/dist/cli/parsing/UAPKGParserRegistry.d.ts.map +1 -1
- package/dist/cli/parsing/UAPKGParserRegistry.js +12 -0
- package/dist/cli/parsing/UAPKGParserRegistry.js.map +1 -1
- package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts +11 -0
- package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts.map +1 -0
- package/dist/cli/parsing/modules/LifecycleCommandModule.js +56 -0
- package/dist/cli/parsing/modules/LifecycleCommandModule.js.map +1 -0
- package/dist/cli/parsing/modules/LoginCommandModule.d.ts +7 -0
- package/dist/cli/parsing/modules/LoginCommandModule.d.ts.map +1 -0
- package/dist/cli/parsing/modules/LoginCommandModule.js +34 -0
- package/dist/cli/parsing/modules/LoginCommandModule.js.map +1 -0
- package/dist/cli/parsing/modules/LogoutCommandModule.d.ts +7 -0
- package/dist/cli/parsing/modules/LogoutCommandModule.d.ts.map +1 -0
- package/dist/cli/parsing/modules/LogoutCommandModule.js +29 -0
- package/dist/cli/parsing/modules/LogoutCommandModule.js.map +1 -0
- package/dist/cli/parsing/modules/PublishCommandModule.d.ts +7 -0
- package/dist/cli/parsing/modules/PublishCommandModule.d.ts.map +1 -0
- package/dist/cli/parsing/modules/PublishCommandModule.js +50 -0
- package/dist/cli/parsing/modules/PublishCommandModule.js.map +1 -0
- package/dist/cli/parsing/modules/RegistryCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/RegistryCommandModule.js +31 -2
- package/dist/cli/parsing/modules/RegistryCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/RequestsCommandModule.d.ts +7 -0
- package/dist/cli/parsing/modules/RequestsCommandModule.d.ts.map +1 -0
- package/dist/cli/parsing/modules/RequestsCommandModule.js +63 -0
- package/dist/cli/parsing/modules/RequestsCommandModule.js.map +1 -0
- package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts +7 -0
- package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts.map +1 -0
- package/dist/cli/parsing/modules/WhoamiCommandModule.js +29 -0
- package/dist/cli/parsing/modules/WhoamiCommandModule.js.map +1 -0
- package/dist/cli-bootstrap.d.ts +2 -0
- package/dist/cli-bootstrap.d.ts.map +1 -0
- package/dist/cli-bootstrap.js +17 -0
- package/dist/cli-bootstrap.js.map +1 -0
- package/dist/cli.js +24 -17
- package/dist/commands/InstallCommand.d.ts.map +1 -1
- package/dist/commands/InstallCommand.js +21 -6
- package/dist/commands/InstallCommand.js.map +1 -1
- package/dist/commands/LoginCommand.d.ts +17 -0
- package/dist/commands/LoginCommand.d.ts.map +1 -0
- package/dist/commands/LoginCommand.js +73 -0
- package/dist/commands/LoginCommand.js.map +1 -0
- package/dist/commands/LogoutCommand.d.ts +15 -0
- package/dist/commands/LogoutCommand.d.ts.map +1 -0
- package/dist/commands/LogoutCommand.js +38 -0
- package/dist/commands/LogoutCommand.js.map +1 -0
- package/dist/commands/PackageLifecycleCommand.d.ts +28 -0
- package/dist/commands/PackageLifecycleCommand.d.ts.map +1 -0
- package/dist/commands/PackageLifecycleCommand.js +143 -0
- package/dist/commands/PackageLifecycleCommand.js.map +1 -0
- package/dist/commands/PostinstallCandidateBuilder.d.ts +1 -1
- package/dist/commands/PostinstallCandidateBuilder.d.ts.map +1 -1
- package/dist/commands/PostinstallCandidateBuilder.js +4 -1
- package/dist/commands/PostinstallCandidateBuilder.js.map +1 -1
- package/dist/commands/PublishCommand.d.ts +32 -0
- package/dist/commands/PublishCommand.d.ts.map +1 -0
- package/dist/commands/PublishCommand.js +270 -0
- package/dist/commands/PublishCommand.js.map +1 -0
- package/dist/commands/RegistryCommand.d.ts +13 -3
- package/dist/commands/RegistryCommand.d.ts.map +1 -1
- package/dist/commands/RegistryCommand.js +115 -11
- package/dist/commands/RegistryCommand.js.map +1 -1
- package/dist/commands/RequestsCommand.d.ts +21 -0
- package/dist/commands/RequestsCommand.d.ts.map +1 -0
- package/dist/commands/RequestsCommand.js +98 -0
- package/dist/commands/RequestsCommand.js.map +1 -0
- package/dist/commands/WhoamiCommand.d.ts +32 -0
- package/dist/commands/WhoamiCommand.d.ts.map +1 -0
- package/dist/commands/WhoamiCommand.js +75 -0
- package/dist/commands/WhoamiCommand.js.map +1 -0
- package/dist/commands/add/DependencyAddResolver.d.ts.map +1 -1
- package/dist/commands/add/DependencyAddResolver.js +4 -2
- package/dist/commands/add/DependencyAddResolver.js.map +1 -1
- package/dist/control-plane/AccountManager.d.ts +110 -0
- package/dist/control-plane/AccountManager.d.ts.map +1 -0
- package/dist/control-plane/AccountManager.js +1014 -0
- package/dist/control-plane/AccountManager.js.map +1 -0
- package/dist/control-plane/ArtifactObserver.d.ts +24 -0
- package/dist/control-plane/ArtifactObserver.d.ts.map +1 -0
- package/dist/control-plane/ArtifactObserver.js +63 -0
- package/dist/control-plane/ArtifactObserver.js.map +1 -0
- package/dist/control-plane/AuthMetadataStore.d.ts +15 -0
- package/dist/control-plane/AuthMetadataStore.d.ts.map +1 -0
- package/dist/control-plane/AuthMetadataStore.js +116 -0
- package/dist/control-plane/AuthMetadataStore.js.map +1 -0
- package/dist/control-plane/AuthStoragePaths.d.ts +11 -0
- package/dist/control-plane/AuthStoragePaths.d.ts.map +1 -0
- package/dist/control-plane/AuthStoragePaths.js +17 -0
- package/dist/control-plane/AuthStoragePaths.js.map +1 -0
- package/dist/control-plane/AuthenticationSelector.d.ts +21 -0
- package/dist/control-plane/AuthenticationSelector.d.ts.map +1 -0
- package/dist/control-plane/AuthenticationSelector.js +64 -0
- package/dist/control-plane/AuthenticationSelector.js.map +1 -0
- package/dist/control-plane/ControlPlaneClient.d.ts +32 -0
- package/dist/control-plane/ControlPlaneClient.d.ts.map +1 -0
- package/dist/control-plane/ControlPlaneClient.js +280 -0
- package/dist/control-plane/ControlPlaneClient.js.map +1 -0
- package/dist/control-plane/ControlPlaneEndpoints.d.ts +13 -0
- package/dist/control-plane/ControlPlaneEndpoints.d.ts.map +1 -0
- package/dist/control-plane/ControlPlaneEndpoints.js +19 -0
- package/dist/control-plane/ControlPlaneEndpoints.js.map +1 -0
- package/dist/control-plane/ControlPlaneTypes.d.ts +168 -0
- package/dist/control-plane/ControlPlaneTypes.d.ts.map +1 -0
- package/dist/control-plane/ControlPlaneTypes.js +93 -0
- package/dist/control-plane/ControlPlaneTypes.js.map +1 -0
- package/dist/control-plane/CredentialStore.d.ts +28 -0
- package/dist/control-plane/CredentialStore.d.ts.map +1 -0
- package/dist/control-plane/CredentialStore.js +87 -0
- package/dist/control-plane/CredentialStore.js.map +1 -0
- package/dist/control-plane/DPoPKeyStore.d.ts +11 -0
- package/dist/control-plane/DPoPKeyStore.d.ts.map +1 -0
- package/dist/control-plane/DPoPKeyStore.js +54 -0
- package/dist/control-plane/DPoPKeyStore.js.map +1 -0
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts +6 -0
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts.map +1 -0
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.js +67 -0
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.js.map +1 -0
- package/dist/control-plane/PublishIdempotencyStore.d.ts +18 -0
- package/dist/control-plane/PublishIdempotencyStore.d.ts.map +1 -0
- package/dist/control-plane/PublishIdempotencyStore.js +71 -0
- package/dist/control-plane/PublishIdempotencyStore.js.map +1 -0
- package/dist/control-plane/RegistryGrantLock.d.ts +35 -0
- package/dist/control-plane/RegistryGrantLock.d.ts.map +1 -0
- package/dist/control-plane/RegistryGrantLock.js +199 -0
- package/dist/control-plane/RegistryGrantLock.js.map +1 -0
- package/dist/control-plane/RegistryTrustResolver.d.ts +17 -0
- package/dist/control-plane/RegistryTrustResolver.d.ts.map +1 -0
- package/dist/control-plane/RegistryTrustResolver.js +140 -0
- package/dist/control-plane/RegistryTrustResolver.js.map +1 -0
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/postinstall/markers/MarkerIntegrityValidator.d.ts +1 -1
- package/dist/prompts/InkPromptService.d.ts +1 -0
- package/dist/prompts/InkPromptService.d.ts.map +1 -1
- package/dist/prompts/InkPromptService.js +20 -0
- package/dist/prompts/InkPromptService.js.map +1 -1
- package/dist/prompts/PromptService.d.ts +2 -0
- package/dist/prompts/PromptService.d.ts.map +1 -1
- package/dist/reporting/JsonReporter.d.ts +2 -0
- package/dist/reporting/JsonReporter.d.ts.map +1 -1
- package/dist/reporting/JsonReporter.js +6 -0
- package/dist/reporting/JsonReporter.js.map +1 -1
- package/package.json +21 -15
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import { isAbsolute, join } from 'node:path';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import { readPackageClaimsFromArchive } from '@uapkg/package-claims';
|
|
8
|
+
import { getRegistryRepoPath } from '@uapkg/registry-core';
|
|
9
|
+
import { describeControlPlaneError } from '../control-plane/AccountManager.js';
|
|
10
|
+
import { ArtifactObserver } from '../control-plane/ArtifactObserver.js';
|
|
11
|
+
import { AuthenticationSelector } from '../control-plane/AuthenticationSelector.js';
|
|
12
|
+
import { ControlPlaneClient } from '../control-plane/ControlPlaneClient.js';
|
|
13
|
+
import { ControlPlaneError, } from '../control-plane/ControlPlaneTypes.js';
|
|
14
|
+
import { PublishIdempotencyStore } from '../control-plane/PublishIdempotencyStore.js';
|
|
15
|
+
import { InkPromptService } from '../prompts/InkPromptService.js';
|
|
16
|
+
const execFileAsync = promisify(execFile);
|
|
17
|
+
const TERMINAL_STATUSES = new Set([
|
|
18
|
+
'ready',
|
|
19
|
+
'ready_superseded',
|
|
20
|
+
'rejected',
|
|
21
|
+
'operationally_failed',
|
|
22
|
+
]);
|
|
23
|
+
const SUCCESS_STATUSES = new Set(['ready', 'ready_superseded']);
|
|
24
|
+
const PUBLISH_WATCH_TIMEOUT_MS = 30 * 60 * 1000;
|
|
25
|
+
/**
|
|
26
|
+
* Artifact-first publish (PS-REQ-002): the CLI observes the exact release
|
|
27
|
+
* artifact (download or `--asset-path`), reads packaged claims from it, and
|
|
28
|
+
* submits the route-derived publish operation. The packaged archive — never
|
|
29
|
+
* the working tree — is what gets published.
|
|
30
|
+
*/
|
|
31
|
+
export class PublishCommand {
|
|
32
|
+
root;
|
|
33
|
+
options;
|
|
34
|
+
constructor(root, options) {
|
|
35
|
+
this.root = root;
|
|
36
|
+
this.options = options;
|
|
37
|
+
}
|
|
38
|
+
async execute() {
|
|
39
|
+
try {
|
|
40
|
+
const manifestResult = await this.root.packageManifest.readManifest();
|
|
41
|
+
if (!manifestResult.ok) {
|
|
42
|
+
throw new Error(manifestResult.diagnostics[0]?.message ?? 'Unable to read uapkg.json.');
|
|
43
|
+
}
|
|
44
|
+
const manifest = manifestResult.value;
|
|
45
|
+
const registryAlias = this.options.registry ?? manifest.publish?.registry;
|
|
46
|
+
const trust = await this.root.registryTrustResolver.resolve(registryAlias);
|
|
47
|
+
const source = await this.resolveSource(manifest.version, manifest.publish);
|
|
48
|
+
const observer = new ArtifactObserver();
|
|
49
|
+
const artifact = this.options.assetPath
|
|
50
|
+
? await observer.observeLocalArchive(resolveAssetPath(this.root.cwd, this.options.assetPath))
|
|
51
|
+
: await observer.downloadReleaseAsset(source.repository, source.releaseTag, source.assetName);
|
|
52
|
+
try {
|
|
53
|
+
const claimsResult = await readPackageClaimsFromArchive(artifact.archivePath);
|
|
54
|
+
if (!claimsResult.ok) {
|
|
55
|
+
throw new Error(claimsResult.diagnostics[0]?.message ?? 'Unable to read the packaged uapkg.json from the artifact.');
|
|
56
|
+
}
|
|
57
|
+
const claims = claimsResult.value;
|
|
58
|
+
if (this.options.outputFormat === 'text' &&
|
|
59
|
+
(claims.name !== manifest.name || claims.version !== manifest.version)) {
|
|
60
|
+
process.stderr.write(`Publishing ${claims.name}@${claims.version} from the packaged artifact (local manifest says ${manifest.name}@${manifest.version}).\n`);
|
|
61
|
+
}
|
|
62
|
+
const registryType = await readTrustedRegistryType(trust.cacheShortId);
|
|
63
|
+
if (registryType === 'public' && claims.private) {
|
|
64
|
+
throw new Error(`"${claims.name}" is marked private in its packaged manifest; a public UAPKG registry does not accept private packages.`);
|
|
65
|
+
}
|
|
66
|
+
const scopedOwner = scopedOwnerName(claims.name);
|
|
67
|
+
const configuredOwner = normalizeOwner(this.options.owner ?? manifest.publish?.owner);
|
|
68
|
+
if (scopedOwner && configuredOwner && configuredOwner.toLowerCase() !== scopedOwner.toLowerCase()) {
|
|
69
|
+
throw new Error(`Package "${claims.name}" belongs to the "${scopedOwner}" namespace; --owner cannot select "${configuredOwner}".`);
|
|
70
|
+
}
|
|
71
|
+
const owner = scopedOwner ?? configuredOwner;
|
|
72
|
+
const selector = new AuthenticationSelector(this.root.accountManager, new InkPromptService());
|
|
73
|
+
const requestedScopes = this.options.detach
|
|
74
|
+
? ['publishing.request.create']
|
|
75
|
+
: ['publishing.request.create', 'publishing.request.read.self'];
|
|
76
|
+
let authentication = await selector.select(this.options.auth, trust, requestedScopes, true);
|
|
77
|
+
let requestOtp = authentication.otp;
|
|
78
|
+
authentication = { kind: authentication.kind, credential: authentication.credential };
|
|
79
|
+
const submission = {
|
|
80
|
+
registryId: trust.registryId,
|
|
81
|
+
...(owner ? { ownerOrganizationName: owner } : {}),
|
|
82
|
+
payload: {
|
|
83
|
+
packageName: claims.name,
|
|
84
|
+
packageVersion: claims.version,
|
|
85
|
+
source,
|
|
86
|
+
observedIntegrity: { sha256: artifact.sha256, sizeBytes: artifact.sizeBytes },
|
|
87
|
+
claims,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
const idempotencyStore = new PublishIdempotencyStore();
|
|
91
|
+
const submissionDigest = PublishIdempotencyStore.submissionDigest('publish', submission);
|
|
92
|
+
const idempotencyKey = idempotencyStore.getOrCreate(submissionDigest, () => randomUUID());
|
|
93
|
+
const client = new ControlPlaneClient(trust.apiBaseUrl);
|
|
94
|
+
let created;
|
|
95
|
+
try {
|
|
96
|
+
created = await client.submitRegistryRequest(authentication.credential, 'publish', submission, {
|
|
97
|
+
idempotencyKey,
|
|
98
|
+
otp: requestOtp,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
// The request-scoped proof must not remain reachable while the CLI
|
|
103
|
+
// polls, refreshes credentials, or watches the durable request.
|
|
104
|
+
requestOtp = undefined;
|
|
105
|
+
}
|
|
106
|
+
if (this.options.detach) {
|
|
107
|
+
this.printCreated(created.requestId, created.status, trust.alias);
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
let request = await client.getRegistryRequest(authentication.credential, created.requestId);
|
|
111
|
+
let previousStatus = '';
|
|
112
|
+
const deadline = Date.now() + PUBLISH_WATCH_TIMEOUT_MS;
|
|
113
|
+
while (!TERMINAL_STATUSES.has(request.status)) {
|
|
114
|
+
if (Date.now() >= deadline) {
|
|
115
|
+
throw new Error(`Timed out waiting for publishing request ${request.id}. Check it with \`uapkg requests status ${request.id}\`.`);
|
|
116
|
+
}
|
|
117
|
+
if (this.options.outputFormat === 'text' && request.status !== previousStatus) {
|
|
118
|
+
process.stdout.write(`${request.id}: ${request.status}${request.currentStep ? ` (${request.currentStep})` : ''}\n`);
|
|
119
|
+
previousStatus = request.status;
|
|
120
|
+
}
|
|
121
|
+
await delay(2_000);
|
|
122
|
+
try {
|
|
123
|
+
request = await client.getRegistryRequest(authentication.credential, created.requestId);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
if (!(error instanceof ControlPlaneError) || error.status !== 401)
|
|
127
|
+
throw error;
|
|
128
|
+
if (authentication.kind === 'gat')
|
|
129
|
+
throw error;
|
|
130
|
+
if (authentication.kind === 'login') {
|
|
131
|
+
this.root.accountManager.invalidateAccessCredentials(trust);
|
|
132
|
+
}
|
|
133
|
+
authentication = await selector.select(authentication.kind, trust, ['publishing.request.read.self'], false);
|
|
134
|
+
request = await client.getRegistryRequest(authentication.credential, created.requestId);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
idempotencyStore.clear(submissionDigest);
|
|
138
|
+
if (SUCCESS_STATUSES.has(request.status)) {
|
|
139
|
+
let refreshWarning;
|
|
140
|
+
try {
|
|
141
|
+
await this.root.registryTrustResolver.forceRefresh(trust);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
refreshWarning = error instanceof Error ? error.message : String(error);
|
|
145
|
+
}
|
|
146
|
+
this.printTerminal(request, trust.alias, refreshWarning);
|
|
147
|
+
return 0;
|
|
148
|
+
}
|
|
149
|
+
this.printTerminal(request, trust.alias);
|
|
150
|
+
return 1;
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
await artifact.cleanup();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
process.stderr.write(`${describeControlPlaneError(error)}\n`);
|
|
158
|
+
return 1;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async resolveSource(packageVersion, manifestPublish) {
|
|
162
|
+
const repository = normalizeGitHubRepository(this.options.repository ?? manifestPublish?.repository ?? (await this.gitOrigin()));
|
|
163
|
+
const releaseTag = (this.options.tag ?? `v${packageVersion}`).trim();
|
|
164
|
+
const assetName = (this.options.asset ?? manifestPublish?.asset ?? 'package.tgz').trim();
|
|
165
|
+
if (!releaseTag)
|
|
166
|
+
throw new Error('The GitHub Release tag cannot be empty.');
|
|
167
|
+
if (!assetName || assetName.includes('/') || assetName.includes('\\')) {
|
|
168
|
+
throw new Error('The GitHub Release asset must be a file name, not a path.');
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
type: 'github_release',
|
|
172
|
+
repository,
|
|
173
|
+
releaseTag,
|
|
174
|
+
assetName,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async gitOrigin() {
|
|
178
|
+
const git = this.root.config.get('git') ?? 'git';
|
|
179
|
+
try {
|
|
180
|
+
const { stdout } = await execFileAsync(git, ['remote', 'get-url', 'origin'], {
|
|
181
|
+
cwd: this.root.cwd,
|
|
182
|
+
timeout: 10_000,
|
|
183
|
+
});
|
|
184
|
+
return stdout.trim();
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
throw new Error('Unable to derive the GitHub repository from remote "origin". Use --repository.', {
|
|
188
|
+
cause: error,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
printCreated(requestId, status, registryAlias) {
|
|
193
|
+
if (this.options.outputFormat === 'json') {
|
|
194
|
+
process.stdout.write(`${JSON.stringify({ ok: true, registry: registryAlias, requestId, status })}\n`);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
process.stdout.write(`Publishing request ${requestId} submitted to "${registryAlias}" (${status}).\n`);
|
|
198
|
+
}
|
|
199
|
+
printTerminal(request, registryAlias, refreshWarning) {
|
|
200
|
+
if (this.options.outputFormat === 'json') {
|
|
201
|
+
process.stdout.write(`${JSON.stringify({
|
|
202
|
+
ok: SUCCESS_STATUSES.has(request.status),
|
|
203
|
+
registry: registryAlias,
|
|
204
|
+
request,
|
|
205
|
+
...(refreshWarning ? { registryRefreshWarning: refreshWarning } : {}),
|
|
206
|
+
})}\n`);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
process.stdout.write(`Publishing request ${request.id}: ${request.status}.\n`);
|
|
210
|
+
if (request.status === 'ready_superseded') {
|
|
211
|
+
process.stdout.write('The publication was accepted; a newer change to the same package is already projected.\n');
|
|
212
|
+
}
|
|
213
|
+
if (refreshWarning) {
|
|
214
|
+
process.stderr.write(`Package publication succeeded, but the local registry refresh failed: ${refreshWarning}\n`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/** Reads the installer-trusted registry type from the projected registry snapshot. */
|
|
219
|
+
async function readTrustedRegistryType(cacheShortId) {
|
|
220
|
+
const metaPath = join(getRegistryRepoPath(cacheShortId), '.uapkg', 'registry.meta.json');
|
|
221
|
+
if (!existsSync(metaPath))
|
|
222
|
+
return undefined;
|
|
223
|
+
try {
|
|
224
|
+
const raw = await readFile(metaPath, 'utf8');
|
|
225
|
+
const parsed = JSON.parse(raw);
|
|
226
|
+
const value = parsed.registry?.registryType;
|
|
227
|
+
return value === 'public' || value === 'private' ? value : undefined;
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function resolveAssetPath(cwd, assetPath) {
|
|
234
|
+
return isAbsolute(assetPath) ? assetPath : join(cwd, assetPath);
|
|
235
|
+
}
|
|
236
|
+
function normalizeGitHubRepository(input) {
|
|
237
|
+
let value = input.trim();
|
|
238
|
+
const scp = value.match(/^git@github\.com:([^/]+)\/(.+)$/i);
|
|
239
|
+
if (scp)
|
|
240
|
+
value = `${scp[1]}/${scp[2]}`;
|
|
241
|
+
if (value.includes('://')) {
|
|
242
|
+
const url = new URL(value);
|
|
243
|
+
if (url.hostname.toLowerCase() !== 'github.com') {
|
|
244
|
+
throw new Error('Publishing sources must be hosted on github.com in UAPKG v1.');
|
|
245
|
+
}
|
|
246
|
+
value = url.pathname.replace(/^\/+/, '');
|
|
247
|
+
}
|
|
248
|
+
value = value.replace(/\.git$/i, '').replace(/\/+$/, '');
|
|
249
|
+
if (!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(value)) {
|
|
250
|
+
throw new Error('Expected a GitHub repository in owner/repository form.');
|
|
251
|
+
}
|
|
252
|
+
return value.toLowerCase();
|
|
253
|
+
}
|
|
254
|
+
function scopedOwnerName(packageName) {
|
|
255
|
+
const match = packageName.match(/^@([^/]+)\/[^/]+$/);
|
|
256
|
+
return match?.[1]?.toLowerCase();
|
|
257
|
+
}
|
|
258
|
+
function normalizeOwner(value) {
|
|
259
|
+
if (value === undefined)
|
|
260
|
+
return undefined;
|
|
261
|
+
const owner = value.trim().toLowerCase();
|
|
262
|
+
if (!/^[a-z0-9][a-z0-9-_]*$/.test(owner)) {
|
|
263
|
+
throw new Error('The publish owner must be a valid UAPKG organization name.');
|
|
264
|
+
}
|
|
265
|
+
return owner;
|
|
266
|
+
}
|
|
267
|
+
function delay(milliseconds) {
|
|
268
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=PublishCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublishCommand.js","sourceRoot":"","sources":["../../src/commands/PublishCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { CompositionRoot } from '../app/CompositionRoot.js';
|
|
1
2
|
import type { UAPKGConfigScope, UAPKGOutputFormat, UAPKGRegistryAction } from '../cli/UAPKGCommandLine.js';
|
|
2
3
|
import type { Command } from './Command.js';
|
|
3
4
|
export interface RegistryCommandOptions {
|
|
4
|
-
cwd: string;
|
|
5
5
|
action: UAPKGRegistryAction;
|
|
6
6
|
name?: string;
|
|
7
7
|
url?: string;
|
|
@@ -10,20 +10,30 @@ export interface RegistryCommandOptions {
|
|
|
10
10
|
scope?: UAPKGConfigScope;
|
|
11
11
|
output: UAPKGOutputFormat;
|
|
12
12
|
}
|
|
13
|
+
export interface RegistryCommandRuntime {
|
|
14
|
+
isInteractiveTerminal(): boolean;
|
|
15
|
+
}
|
|
13
16
|
export declare class RegistryCommand implements Command {
|
|
17
|
+
private readonly root;
|
|
14
18
|
private readonly options;
|
|
15
|
-
private readonly
|
|
16
|
-
|
|
19
|
+
private readonly runtime;
|
|
20
|
+
private configDiagnostics;
|
|
21
|
+
constructor(root: CompositionRoot, options: RegistryCommandOptions, runtime?: RegistryCommandRuntime);
|
|
17
22
|
execute(): Promise<number>;
|
|
18
23
|
private executeList;
|
|
19
24
|
private executeAdd;
|
|
20
25
|
private executeRemove;
|
|
21
26
|
private executeUse;
|
|
27
|
+
private executeAuth;
|
|
28
|
+
private executeRefresh;
|
|
29
|
+
private resolveRegistryName;
|
|
30
|
+
private withAuthenticationGuidance;
|
|
22
31
|
private resolveRef;
|
|
23
32
|
private scopeOptions;
|
|
24
33
|
private persistPlan;
|
|
25
34
|
private fail;
|
|
26
35
|
private reportIfText;
|
|
36
|
+
private succeedOperational;
|
|
27
37
|
private print;
|
|
28
38
|
}
|
|
29
39
|
//# sourceMappingURL=RegistryCommand.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegistryCommand.d.ts","sourceRoot":"","sources":["../../src/commands/RegistryCommand.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"RegistryCommand.d.ts","sourceRoot":"","sources":["../../src/commands/RegistryCommand.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC3G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,IAAI,OAAO,CAAC;CAClC;AAMD,qBAAa,eAAgB,YAAW,OAAO;IAI3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,iBAAiB,CAA6B;gBAGnC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,sBAAuC;IAGtD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAyBvC,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,UAAU;YAgBJ,WAAW;YAoCX,cAAc;IAgC5B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,IAAI;IAaZ,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,KAAK;CAOd"}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { createConfig } from '@uapkg/config';
|
|
4
3
|
import { createParseErrorDiagnostic } from '@uapkg/diagnostics';
|
|
5
4
|
import Log from '@uapkg/log';
|
|
6
|
-
|
|
5
|
+
const processRuntime = {
|
|
6
|
+
isInteractiveTerminal: () => process.stdin.isTTY === true && process.stderr.isTTY === true,
|
|
7
|
+
};
|
|
7
8
|
export class RegistryCommand {
|
|
9
|
+
root;
|
|
8
10
|
options;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
runtime;
|
|
12
|
+
configDiagnostics = [];
|
|
13
|
+
constructor(root, options, runtime = processRuntime) {
|
|
14
|
+
this.root = root;
|
|
11
15
|
this.options = options;
|
|
16
|
+
this.runtime = runtime;
|
|
12
17
|
}
|
|
13
18
|
async execute() {
|
|
14
|
-
const config =
|
|
15
|
-
this.
|
|
19
|
+
const config = this.root.config;
|
|
20
|
+
this.configDiagnostics = config.getDiagnostics();
|
|
21
|
+
this.reportIfText(this.configDiagnostics);
|
|
16
22
|
switch (this.options.action) {
|
|
17
23
|
case 'list':
|
|
18
24
|
return this.executeList(config);
|
|
@@ -22,6 +28,10 @@ export class RegistryCommand {
|
|
|
22
28
|
return this.executeRemove(config);
|
|
23
29
|
case 'use':
|
|
24
30
|
return this.executeUse(config);
|
|
31
|
+
case 'auth':
|
|
32
|
+
return this.executeAuth(config);
|
|
33
|
+
case 'refresh':
|
|
34
|
+
return this.executeRefresh(config);
|
|
25
35
|
default:
|
|
26
36
|
return this.fail([
|
|
27
37
|
createParseErrorDiagnostic(`Unsupported registry action: ${this.options.action}`),
|
|
@@ -50,7 +60,7 @@ export class RegistryCommand {
|
|
|
50
60
|
if (!setRef.ok)
|
|
51
61
|
return this.fail(setRef.diagnostics);
|
|
52
62
|
this.persistPlan(setRef.value.file, setRef.value.values);
|
|
53
|
-
config.reload({ cwd: this.
|
|
63
|
+
config.reload({ cwd: this.root.cwd });
|
|
54
64
|
this.reportIfText(config.getDiagnostics());
|
|
55
65
|
this.print({
|
|
56
66
|
action: 'add',
|
|
@@ -70,7 +80,7 @@ export class RegistryCommand {
|
|
|
70
80
|
if (!plan.ok)
|
|
71
81
|
return this.fail(plan.diagnostics);
|
|
72
82
|
this.persistPlan(plan.value.file, plan.value.values);
|
|
73
|
-
config.reload({ cwd: this.
|
|
83
|
+
config.reload({ cwd: this.root.cwd });
|
|
74
84
|
this.reportIfText(config.getDiagnostics());
|
|
75
85
|
this.print({ action: 'remove', name, scope: this.options.scope ?? 'auto' });
|
|
76
86
|
return 0;
|
|
@@ -84,11 +94,83 @@ export class RegistryCommand {
|
|
|
84
94
|
if (!plan.ok)
|
|
85
95
|
return this.fail(plan.diagnostics);
|
|
86
96
|
this.persistPlan(plan.value.file, plan.value.values);
|
|
87
|
-
config.reload({ cwd: this.
|
|
97
|
+
config.reload({ cwd: this.root.cwd });
|
|
88
98
|
this.reportIfText(config.getDiagnostics());
|
|
89
99
|
this.print({ action: 'use', name, scope: this.options.scope ?? 'auto' });
|
|
90
100
|
return 0;
|
|
91
101
|
}
|
|
102
|
+
async executeAuth(config) {
|
|
103
|
+
if (this.options.scope) {
|
|
104
|
+
return this.fail([createParseErrorDiagnostic('registry auth does not accept --global or --local.')]);
|
|
105
|
+
}
|
|
106
|
+
const name = this.resolveRegistryName(config);
|
|
107
|
+
if (!name)
|
|
108
|
+
return 1;
|
|
109
|
+
const registryResult = this.root.registryCore.getOrCreateRegistry(name);
|
|
110
|
+
if (!registryResult.ok)
|
|
111
|
+
return this.fail(registryResult.diagnostics);
|
|
112
|
+
let accessResult = await registryResult.value.probeAccess({ interactive: false });
|
|
113
|
+
let usedInteractivePrompt = false;
|
|
114
|
+
const hasTerminal = this.runtime.isInteractiveTerminal();
|
|
115
|
+
if (!accessResult.ok && hasTerminal) {
|
|
116
|
+
usedInteractivePrompt = true;
|
|
117
|
+
accessResult = await registryResult.value.probeAccess({ interactive: true });
|
|
118
|
+
}
|
|
119
|
+
if (!accessResult.ok) {
|
|
120
|
+
return this.fail(this.withAuthenticationGuidance(accessResult.diagnostics, name, hasTerminal));
|
|
121
|
+
}
|
|
122
|
+
this.succeedOperational('auth', {
|
|
123
|
+
action: 'auth',
|
|
124
|
+
name,
|
|
125
|
+
accessible: true,
|
|
126
|
+
interactive: usedInteractivePrompt,
|
|
127
|
+
}, `Registry "${name}" is accessible with the current system Git credentials.`, accessResult.diagnostics);
|
|
128
|
+
return 0;
|
|
129
|
+
}
|
|
130
|
+
async executeRefresh(config) {
|
|
131
|
+
if (this.options.scope) {
|
|
132
|
+
return this.fail([createParseErrorDiagnostic('registry refresh does not accept --global or --local.')]);
|
|
133
|
+
}
|
|
134
|
+
const name = this.resolveRegistryName(config);
|
|
135
|
+
if (!name)
|
|
136
|
+
return 1;
|
|
137
|
+
const registryResult = this.root.registryCore.getOrCreateRegistry(name);
|
|
138
|
+
if (!registryResult.ok)
|
|
139
|
+
return this.fail(registryResult.diagnostics);
|
|
140
|
+
const refreshResult = await registryResult.value.ensureUpToDate({
|
|
141
|
+
bypassFreshnessCheck: true,
|
|
142
|
+
logicalRegistryName: name,
|
|
143
|
+
});
|
|
144
|
+
if (!refreshResult.ok)
|
|
145
|
+
return this.fail(refreshResult.diagnostics);
|
|
146
|
+
if (refreshResult.value === 'Failed') {
|
|
147
|
+
const diagnostics = refreshResult.diagnostics.length > 0
|
|
148
|
+
? refreshResult.diagnostics
|
|
149
|
+
: [createParseErrorDiagnostic(`Registry "${name}" could not be refreshed.`)];
|
|
150
|
+
return this.fail(diagnostics);
|
|
151
|
+
}
|
|
152
|
+
this.succeedOperational('refresh', { action: 'refresh', name, result: refreshResult.value }, `Registry "${name}" refreshed.`, refreshResult.diagnostics);
|
|
153
|
+
return 0;
|
|
154
|
+
}
|
|
155
|
+
resolveRegistryName(config) {
|
|
156
|
+
const candidate = this.options.name ?? config.get('registry');
|
|
157
|
+
if (typeof candidate !== 'string' || candidate.trim().length === 0) {
|
|
158
|
+
this.fail([
|
|
159
|
+
createParseErrorDiagnostic(`registry ${this.options.action} requires a registry alias or a selected default registry.`),
|
|
160
|
+
]);
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
return candidate.trim();
|
|
164
|
+
}
|
|
165
|
+
withAuthenticationGuidance(diagnostics, name, interactiveTerminalAvailable) {
|
|
166
|
+
return diagnostics.map((diagnostic) => ({
|
|
167
|
+
...diagnostic,
|
|
168
|
+
message: `Git could not access registry "${name}".`,
|
|
169
|
+
hint: interactiveTerminalAvailable
|
|
170
|
+
? 'Configure access with a system Git credential helper, SSH key/agent, or deploy key, then retry.'
|
|
171
|
+
: `No interactive terminal is available. Configure a system Git credential helper, GIT_ASKPASS, SSH key/agent, or CI deploy key, then retry 'uapkg registry auth ${name}'.`,
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
92
174
|
resolveRef() {
|
|
93
175
|
const type = this.options.refType ?? 'branch';
|
|
94
176
|
const value = this.options.refValue ?? 'main';
|
|
@@ -102,13 +184,35 @@ export class RegistryCommand {
|
|
|
102
184
|
fs.writeFileSync(filePath, `${JSON.stringify(values, null, 2)}\n`, 'utf8');
|
|
103
185
|
}
|
|
104
186
|
fail(diagnostics) {
|
|
105
|
-
this.
|
|
187
|
+
if (this.options.output === 'json') {
|
|
188
|
+
this.root.json.emit({
|
|
189
|
+
status: 'error',
|
|
190
|
+
command: `registry ${this.options.action}`,
|
|
191
|
+
diagnostics: [...this.configDiagnostics, ...diagnostics],
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.root.diagnostics.reportAll(diagnostics);
|
|
196
|
+
}
|
|
106
197
|
return 1;
|
|
107
198
|
}
|
|
108
199
|
reportIfText(diagnostics) {
|
|
109
200
|
if (this.options.output === 'text') {
|
|
110
|
-
this.
|
|
201
|
+
this.root.diagnostics.reportAll(diagnostics);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
succeedOperational(action, data, text, diagnostics) {
|
|
205
|
+
if (this.options.output === 'json') {
|
|
206
|
+
this.root.json.emit({
|
|
207
|
+
status: 'ok',
|
|
208
|
+
command: `registry ${action}`,
|
|
209
|
+
data,
|
|
210
|
+
diagnostics: [...this.configDiagnostics, ...diagnostics],
|
|
211
|
+
});
|
|
212
|
+
return;
|
|
111
213
|
}
|
|
214
|
+
this.root.diagnostics.reportAll(diagnostics);
|
|
215
|
+
process.stdout.write(`${text}\n`);
|
|
112
216
|
}
|
|
113
217
|
print(value) {
|
|
114
218
|
if (this.options.output === 'json' || typeof value === 'object') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegistryCommand.js","sourceRoot":"","sources":["../../src/commands/RegistryCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"RegistryCommand.js","sourceRoot":"","sources":["../../src/commands/RegistryCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CompositionRoot } from '../app/CompositionRoot.js';
|
|
2
|
+
import type { UAPKGOutputFormat } from '../cli/UAPKGCommandLine.js';
|
|
3
|
+
import { type RegistryRequestStatus } from '../control-plane/ControlPlaneTypes.js';
|
|
4
|
+
import type { Command } from './Command.js';
|
|
5
|
+
export interface RequestsCommandOptions {
|
|
6
|
+
readonly action: 'list' | 'status';
|
|
7
|
+
readonly requestId?: string;
|
|
8
|
+
readonly registry?: string;
|
|
9
|
+
readonly status?: RegistryRequestStatus;
|
|
10
|
+
readonly watch: boolean;
|
|
11
|
+
readonly outputFormat: UAPKGOutputFormat;
|
|
12
|
+
}
|
|
13
|
+
export declare class RequestsCommand implements Command {
|
|
14
|
+
private readonly root;
|
|
15
|
+
private readonly options;
|
|
16
|
+
constructor(root: CompositionRoot, options: RequestsCommandOptions);
|
|
17
|
+
execute(): Promise<number>;
|
|
18
|
+
private printList;
|
|
19
|
+
private printRequest;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=RequestsCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestsCommand.d.ts","sourceRoot":"","sources":["../../src/commands/RequestsCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACtG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAC1C;AASD,qBAAa,eAAgB,YAAW,OAAO;IAE3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,sBAAsB;IAGrC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAgDvC,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,YAAY;CAqBrB"}
|