@uapkg/cli 1.1.9 → 1.2.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 +134 -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 +260 -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,98 @@
|
|
|
1
|
+
import { describeControlPlaneError } from '../control-plane/AccountManager.js';
|
|
2
|
+
import { ControlPlaneClient } from '../control-plane/ControlPlaneClient.js';
|
|
3
|
+
import { ControlPlaneError } from '../control-plane/ControlPlaneTypes.js';
|
|
4
|
+
const TERMINAL_STATUSES = new Set([
|
|
5
|
+
'ready',
|
|
6
|
+
'ready_superseded',
|
|
7
|
+
'rejected',
|
|
8
|
+
'operationally_failed',
|
|
9
|
+
]);
|
|
10
|
+
export class RequestsCommand {
|
|
11
|
+
root;
|
|
12
|
+
options;
|
|
13
|
+
constructor(root, options) {
|
|
14
|
+
this.root = root;
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
async execute() {
|
|
18
|
+
try {
|
|
19
|
+
const trust = await this.root.registryTrustResolver.resolve(this.options.registry);
|
|
20
|
+
let authentication = await this.root.accountManager.getAccessCredential(trust, ['publishing.request.read.self']);
|
|
21
|
+
const client = new ControlPlaneClient(trust.apiBaseUrl);
|
|
22
|
+
if (this.options.action === 'list') {
|
|
23
|
+
const requests = await client.listRegistryRequests(authentication.credential, trust.registryId, this.options.status);
|
|
24
|
+
this.printList(requests, trust.alias);
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
if (!this.options.requestId)
|
|
28
|
+
throw new Error('`uapkg requests status` requires a request ID.');
|
|
29
|
+
let request = await client.getRegistryRequest(authentication.credential, this.options.requestId);
|
|
30
|
+
if (this.options.watch) {
|
|
31
|
+
let lastStatus = '';
|
|
32
|
+
while (!TERMINAL_STATUSES.has(request.status)) {
|
|
33
|
+
if (this.options.outputFormat === 'text' && request.status !== lastStatus) {
|
|
34
|
+
process.stdout.write(`${request.id}: ${request.status}${request.currentStep ? ` (${request.currentStep})` : ''}\n`);
|
|
35
|
+
lastStatus = request.status;
|
|
36
|
+
}
|
|
37
|
+
await delay(2_000);
|
|
38
|
+
try {
|
|
39
|
+
request = await client.getRegistryRequest(authentication.credential, this.options.requestId);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (!(error instanceof ControlPlaneError) || error.status !== 401)
|
|
43
|
+
throw error;
|
|
44
|
+
this.root.accountManager.invalidateAccessCredentials(trust);
|
|
45
|
+
authentication = await this.root.accountManager.getAccessCredential(trust, [
|
|
46
|
+
'publishing.request.read.self',
|
|
47
|
+
]);
|
|
48
|
+
request = await client.getRegistryRequest(authentication.credential, this.options.requestId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this.printRequest(request, trust.alias);
|
|
53
|
+
return isSuccessStatus(request.status) || !TERMINAL_STATUSES.has(request.status) ? 0 : 1;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
process.stderr.write(`${describeControlPlaneError(error)}\n`);
|
|
57
|
+
return 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
printList(requests, registryAlias) {
|
|
61
|
+
if (this.options.outputFormat === 'json') {
|
|
62
|
+
process.stdout.write(`${JSON.stringify({ ok: true, registry: registryAlias, requests })}\n`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (requests.length === 0) {
|
|
66
|
+
process.stdout.write(`No publishing requests found for "${registryAlias}".\n`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
for (const value of requests) {
|
|
70
|
+
const packageCoordinate = value.payload?.packageName
|
|
71
|
+
? ` ${value.payload.packageName}${value.payload.packageVersion ? `@${value.payload.packageVersion}` : ''}`
|
|
72
|
+
: '';
|
|
73
|
+
process.stdout.write(`${value.id} ${value.status} ${value.kind}${packageCoordinate}\n`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
printRequest(request, registryAlias) {
|
|
77
|
+
const value = request;
|
|
78
|
+
if (this.options.outputFormat === 'json') {
|
|
79
|
+
const ok = isSuccessStatus(value.status) || !TERMINAL_STATUSES.has(value.status);
|
|
80
|
+
process.stdout.write(`${JSON.stringify({ ok, registry: registryAlias, request })}\n`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
process.stdout.write(`Request: ${value.id}\n`);
|
|
84
|
+
process.stdout.write(`Status: ${value.status}\n`);
|
|
85
|
+
if (value.currentStep)
|
|
86
|
+
process.stdout.write(`Step: ${value.currentStep}\n`);
|
|
87
|
+
if (value.payload?.packageName) {
|
|
88
|
+
process.stdout.write(`Package: ${value.payload.packageName}${value.payload.packageVersion ? `@${value.payload.packageVersion}` : ''}\n`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function isSuccessStatus(status) {
|
|
93
|
+
return status === 'ready' || status === 'ready_superseded';
|
|
94
|
+
}
|
|
95
|
+
function delay(milliseconds) {
|
|
96
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=RequestsCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestsCommand.js","sourceRoot":"","sources":["../../src/commands/RequestsCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CompositionRoot } from '../app/CompositionRoot.js';
|
|
2
|
+
import type { UAPKGOutputFormat, UAPKGWhoamiField } from '../cli/UAPKGCommandLine.js';
|
|
3
|
+
import type { Command } from './Command.js';
|
|
4
|
+
export interface WhoamiCommandOptions {
|
|
5
|
+
readonly field?: UAPKGWhoamiField;
|
|
6
|
+
readonly registry?: string;
|
|
7
|
+
readonly outputFormat: UAPKGOutputFormat;
|
|
8
|
+
}
|
|
9
|
+
export interface WhoamiCommandData {
|
|
10
|
+
readonly account: {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly username: string;
|
|
13
|
+
readonly displayName: string;
|
|
14
|
+
};
|
|
15
|
+
readonly registry: {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly alias: string;
|
|
19
|
+
};
|
|
20
|
+
readonly deviceName: string;
|
|
21
|
+
}
|
|
22
|
+
export interface WhoamiFieldData {
|
|
23
|
+
readonly field: UAPKGWhoamiField;
|
|
24
|
+
readonly value: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class WhoamiCommand implements Command {
|
|
27
|
+
private readonly root;
|
|
28
|
+
private readonly options;
|
|
29
|
+
constructor(root: CompositionRoot, options: WhoamiCommandOptions);
|
|
30
|
+
execute(): Promise<number>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=WhoamiCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhoamiCommand.d.ts","sourceRoot":"","sources":["../../src/commands/WhoamiCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAc,YAAW,OAAO;IAEzC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,oBAAoB;IAGnC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAiDxC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { controlPlaneDiagnosticForError, describeControlPlaneError } from '../control-plane/AccountManager.js';
|
|
2
|
+
import { ControlPlaneClient } from '../control-plane/ControlPlaneClient.js';
|
|
3
|
+
export class WhoamiCommand {
|
|
4
|
+
root;
|
|
5
|
+
options;
|
|
6
|
+
constructor(root, options) {
|
|
7
|
+
this.root = root;
|
|
8
|
+
this.options = options;
|
|
9
|
+
}
|
|
10
|
+
async execute() {
|
|
11
|
+
try {
|
|
12
|
+
const trust = await this.root.registryTrustResolver.resolve(this.options.registry);
|
|
13
|
+
const access = await this.root.accountManager.getAccessCredential(trust, ['identity.self.read']);
|
|
14
|
+
const self = await new ControlPlaneClient(trust.apiBaseUrl).getSelf(access.credential);
|
|
15
|
+
if (self.registry.id !== trust.registryId || self.grant.id !== access.grant.grantId) {
|
|
16
|
+
throw new Error('The control plane returned identity information for an unexpected registry grant.');
|
|
17
|
+
}
|
|
18
|
+
const data = {
|
|
19
|
+
account: self.account,
|
|
20
|
+
registry: { id: trust.registryId, name: trust.registryName, alias: trust.alias },
|
|
21
|
+
deviceName: self.grant.deviceName,
|
|
22
|
+
};
|
|
23
|
+
if (this.options.field) {
|
|
24
|
+
const fieldData = {
|
|
25
|
+
field: this.options.field,
|
|
26
|
+
value: selectedFieldValue(this.options.field, data),
|
|
27
|
+
};
|
|
28
|
+
if (this.options.outputFormat === 'json') {
|
|
29
|
+
this.root.json.emitSuccess('whoami', fieldData);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
process.stdout.write(`${fieldData.value}\n`);
|
|
33
|
+
}
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
if (this.options.outputFormat === 'json') {
|
|
37
|
+
this.root.json.emitSuccess('whoami', data);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
process.stdout.write(`Username: ${data.account.username}\n`);
|
|
41
|
+
process.stdout.write(`User ID: ${data.account.id}\n`);
|
|
42
|
+
process.stdout.write(`Display Name: ${data.account.displayName}\n`);
|
|
43
|
+
process.stdout.write(`Registry: ${data.registry.name}\n`);
|
|
44
|
+
process.stdout.write(`Registry ID: ${data.registry.id}\n`);
|
|
45
|
+
process.stdout.write(`Registry Alias: ${data.registry.alias}\n`);
|
|
46
|
+
process.stdout.write(`Device: ${data.deviceName}\n`);
|
|
47
|
+
}
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (this.options.outputFormat === 'json') {
|
|
52
|
+
this.root.json.emitError('whoami', [controlPlaneDiagnosticForError(error, 'whoami')]);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
process.stderr.write(`${describeControlPlaneError(error)}\n`);
|
|
56
|
+
}
|
|
57
|
+
return 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function selectedFieldValue(field, data) {
|
|
62
|
+
switch (field) {
|
|
63
|
+
case 'username':
|
|
64
|
+
return data.account.username;
|
|
65
|
+
case 'user-id':
|
|
66
|
+
return data.account.id;
|
|
67
|
+
case 'registry':
|
|
68
|
+
return data.registry.name;
|
|
69
|
+
case 'registry-id':
|
|
70
|
+
return data.registry.id;
|
|
71
|
+
default:
|
|
72
|
+
return field;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=WhoamiCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhoamiCommand.js","sourceRoot":"","sources":["../../src/commands/WhoamiCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyAddResolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/DependencyAddResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAA8C,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAE5C,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DependencyAddResolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/DependencyAddResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAA8C,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAE5C,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;CAoC5G"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RegistryNameSchema, VersionRangeSchema } from '@uapkg/common-schema';
|
|
1
|
+
import { DEFAULT_REGISTRY_ALIAS, RegistryNameSchema, VersionRangeSchema } from '@uapkg/common-schema';
|
|
2
2
|
import { createRegistryNotFoundDiagnostic, fail, ok } from '@uapkg/diagnostics';
|
|
3
3
|
/**
|
|
4
4
|
* Resolves an `add` request against the selected registry before mutating the
|
|
@@ -24,10 +24,12 @@ export class DependencyAddResolver {
|
|
|
24
24
|
if (!resolution.ok)
|
|
25
25
|
return resolution;
|
|
26
26
|
const dependencyRange = spec.range ?? VersionRangeSchema.parse(`^${resolution.value.version}`);
|
|
27
|
+
// Only an explicit non-default --registry is recorded; the default alias stays absent in the manifest.
|
|
28
|
+
const recordedRegistry = registryNameInput !== undefined && registryName !== DEFAULT_REGISTRY_ALIAS ? registryName : undefined;
|
|
27
29
|
return ok({
|
|
28
30
|
dependency: {
|
|
29
31
|
version: dependencyRange,
|
|
30
|
-
registry:
|
|
32
|
+
...(recordedRegistry !== undefined ? { registry: recordedRegistry } : {}),
|
|
31
33
|
},
|
|
32
34
|
resolvedVersion: resolution.value.version,
|
|
33
35
|
}, resolution.diagnostics);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyAddResolver.js","sourceRoot":"","sources":["../../../src/commands/add/DependencyAddResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DependencyAddResolver.js","sourceRoot":"","sources":["../../../src/commands/add/DependencyAddResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,EAAE,EAAe,MAAM,oBAAoB,CAAC;AAS7F;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACI;IAApC,YAAoC,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,IAAiB,EAAE,iBAA0B;QAChE,MAAM,iBAAiB,GAAG,iBAAiB,IAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAmB,IAAI,SAAS,CAAC;QAChH,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC3E,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC;QAE7C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,CAAC,EAAE;YAAE,OAAO,cAA+B,CAAC;QAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,IAAK,GAA+B,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,cAAc,CAC1D,IAAI,CAAC,IAAyB,EAC9B,cAAc,EACd,YAAY,CACb,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAA2B,CAAC;QAEvD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/F,uGAAuG;QACvG,MAAM,gBAAgB,GACpB,iBAAiB,KAAK,SAAS,IAAI,YAAY,KAAK,sBAAsB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAExG,OAAO,EAAE,CACP;YACE,UAAU,EAAE;gBACV,OAAO,EAAE,eAAe;gBACxB,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1E;YACD,eAAe,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;SAC1C,EACD,UAAU,CAAC,WAAW,CACvB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { type ControlPlaneCommandFailedDiagnostic, type ControlPlaneDiagnostic, type LoginDiagnosticCode } from '@uapkg/diagnostics';
|
|
2
|
+
import { AuthMetadataStore } from './AuthMetadataStore.js';
|
|
3
|
+
import { type ControlPlaneCredential } from './ControlPlaneClient.js';
|
|
4
|
+
import { type RegistryGrantMetadata, type RegistryTrust, type UAPKGCliScope } from './ControlPlaneTypes.js';
|
|
5
|
+
import { CredentialStore } from './CredentialStore.js';
|
|
6
|
+
import { type RegistryGrantLock } from './RegistryGrantLock.js';
|
|
7
|
+
export interface LoginOptions {
|
|
8
|
+
readonly deviceName?: string;
|
|
9
|
+
readonly reauthorize?: boolean;
|
|
10
|
+
readonly onProgress?: (event: LoginProgressEvent) => void;
|
|
11
|
+
}
|
|
12
|
+
export type LoginProgressEvent = {
|
|
13
|
+
readonly type: 'preparing';
|
|
14
|
+
readonly registryAlias: string;
|
|
15
|
+
} | {
|
|
16
|
+
readonly type: 'opening-browser';
|
|
17
|
+
} | {
|
|
18
|
+
readonly type: 'browser-open-failed';
|
|
19
|
+
readonly authorizationUrl: string;
|
|
20
|
+
} | {
|
|
21
|
+
readonly type: 'waiting-for-decision';
|
|
22
|
+
} | {
|
|
23
|
+
readonly type: 'approval-received';
|
|
24
|
+
} | {
|
|
25
|
+
readonly type: 'saving-local-credentials';
|
|
26
|
+
} | {
|
|
27
|
+
readonly type: 'confirming-with-service';
|
|
28
|
+
};
|
|
29
|
+
type LoginCompletionOutcome = 'success' | 'denied' | 'failed';
|
|
30
|
+
export declare class LoginError extends Error {
|
|
31
|
+
readonly code: LoginDiagnosticCode;
|
|
32
|
+
readonly oauthError?: string | undefined;
|
|
33
|
+
constructor(code: LoginDiagnosticCode, message: string, oauthError?: string | undefined);
|
|
34
|
+
}
|
|
35
|
+
export interface LoginResult {
|
|
36
|
+
readonly grant: RegistryGrantMetadata;
|
|
37
|
+
readonly warnings: readonly string[];
|
|
38
|
+
}
|
|
39
|
+
export interface AccessCredential {
|
|
40
|
+
readonly credential: ControlPlaneCredential;
|
|
41
|
+
readonly grant: RegistryGrantMetadata;
|
|
42
|
+
}
|
|
43
|
+
export type BrowserOpener = (url: string) => Promise<void>;
|
|
44
|
+
export declare class AccountManager {
|
|
45
|
+
private readonly metadata;
|
|
46
|
+
private readonly credentials;
|
|
47
|
+
private readonly openBrowser;
|
|
48
|
+
private readonly isInteractiveLogin;
|
|
49
|
+
private readonly interactiveLoginTimeoutMs;
|
|
50
|
+
private readonly interactiveLoginFinalizationTimeoutMs;
|
|
51
|
+
private readonly keyStore;
|
|
52
|
+
private readonly accessTokenCache;
|
|
53
|
+
private readonly grantOperationTails;
|
|
54
|
+
private readonly grantLock;
|
|
55
|
+
constructor(metadata?: AuthMetadataStore, credentials?: CredentialStore, openBrowser?: BrowserOpener, isInteractiveLogin?: () => boolean, grantLock?: RegistryGrantLock, interactiveLoginTimeoutMs?: number, interactiveLoginFinalizationTimeoutMs?: number);
|
|
56
|
+
hasGrant(trust: RegistryTrust): Promise<boolean>;
|
|
57
|
+
invalidateAccessCredentials(trust: RegistryTrust): void;
|
|
58
|
+
login(trust: RegistryTrust, options?: LoginOptions): Promise<LoginResult>;
|
|
59
|
+
getAccessCredential(trust: RegistryTrust, scopes: readonly UAPKGCliScope[]): Promise<AccessCredential>;
|
|
60
|
+
logout(trust: RegistryTrust, localOnly?: boolean): Promise<'not-logged-in' | 'removed'>;
|
|
61
|
+
private requireUsableGrant;
|
|
62
|
+
private revokeSavedGrant;
|
|
63
|
+
private activatePreparedGrant;
|
|
64
|
+
private reconcilePreparedGrant;
|
|
65
|
+
private persistPreparedGrant;
|
|
66
|
+
private rollbackPreparedGrant;
|
|
67
|
+
private cleanupPreviousLocalCredentials;
|
|
68
|
+
private revokeToken;
|
|
69
|
+
private discover;
|
|
70
|
+
private validateAuthorizationServer;
|
|
71
|
+
private assertIssuerSupportsScopes;
|
|
72
|
+
private client;
|
|
73
|
+
private assertPinnedTrust;
|
|
74
|
+
private assertInteractiveLogin;
|
|
75
|
+
private withDPoPNonceRetry;
|
|
76
|
+
private accessTokenCacheKey;
|
|
77
|
+
private serializeGrantOperation;
|
|
78
|
+
}
|
|
79
|
+
export interface LoopbackAuthorizationReceipt {
|
|
80
|
+
readonly url: URL;
|
|
81
|
+
complete(outcome: LoginCompletionOutcome): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
export declare class LoopbackAuthorizationReceiver {
|
|
84
|
+
private readonly server;
|
|
85
|
+
private readonly callbackPath;
|
|
86
|
+
private readonly expectedHost;
|
|
87
|
+
private readonly completionUrl;
|
|
88
|
+
readonly redirectUri: string;
|
|
89
|
+
private callbackPromise?;
|
|
90
|
+
private callbackResolve?;
|
|
91
|
+
private callbackReject?;
|
|
92
|
+
private receivedReceipt?;
|
|
93
|
+
private timeout?;
|
|
94
|
+
private state;
|
|
95
|
+
private terminalError?;
|
|
96
|
+
private pendingResponse?;
|
|
97
|
+
private completion?;
|
|
98
|
+
private constructor();
|
|
99
|
+
static listen(issuer: URL): Promise<LoopbackAuthorizationReceiver>;
|
|
100
|
+
waitForCallback(timeoutMs: number, registryAlias?: string): Promise<LoopbackAuthorizationReceipt>;
|
|
101
|
+
close(): void;
|
|
102
|
+
private receive;
|
|
103
|
+
private complete;
|
|
104
|
+
private terminate;
|
|
105
|
+
}
|
|
106
|
+
export declare function loginDiagnosticForError(error: unknown): ControlPlaneDiagnostic;
|
|
107
|
+
export declare function controlPlaneDiagnosticForError(error: unknown, operation: string): ControlPlaneCommandFailedDiagnostic;
|
|
108
|
+
export declare function describeControlPlaneError(error: unknown): string;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=AccountManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountManager.d.ts","sourceRoot":"","sources":["../../src/control-plane/AccountManager.ts"],"names":[],"mappings":"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"}
|