@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.
Files changed (165) hide show
  1. package/dist/app/CompositionRoot.d.ts +6 -0
  2. package/dist/app/CompositionRoot.d.ts.map +1 -1
  3. package/dist/app/CompositionRoot.js +16 -0
  4. package/dist/app/CompositionRoot.js.map +1 -1
  5. package/dist/app/UAPKGApplication.d.ts.map +1 -1
  6. package/dist/app/UAPKGApplication.js +62 -2
  7. package/dist/app/UAPKGApplication.js.map +1 -1
  8. package/dist/build/BuildMetadata.d.ts +12 -0
  9. package/dist/build/BuildMetadata.d.ts.map +1 -0
  10. package/dist/build/BuildMetadata.js +6 -0
  11. package/dist/cli/UAPKGCommandLine.d.ts +98 -3
  12. package/dist/cli/UAPKGCommandLine.d.ts.map +1 -1
  13. package/dist/cli/UAPKGCommandLine.js +69 -0
  14. package/dist/cli/UAPKGCommandLine.js.map +1 -1
  15. package/dist/cli/parsing/UAPKGCommandLineParser.d.ts.map +1 -1
  16. package/dist/cli/parsing/UAPKGCommandLineParser.js +8 -1
  17. package/dist/cli/parsing/UAPKGCommandLineParser.js.map +1 -1
  18. package/dist/cli/parsing/UAPKGParserRegistry.d.ts.map +1 -1
  19. package/dist/cli/parsing/UAPKGParserRegistry.js +12 -0
  20. package/dist/cli/parsing/UAPKGParserRegistry.js.map +1 -1
  21. package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts +11 -0
  22. package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts.map +1 -0
  23. package/dist/cli/parsing/modules/LifecycleCommandModule.js +56 -0
  24. package/dist/cli/parsing/modules/LifecycleCommandModule.js.map +1 -0
  25. package/dist/cli/parsing/modules/LoginCommandModule.d.ts +7 -0
  26. package/dist/cli/parsing/modules/LoginCommandModule.d.ts.map +1 -0
  27. package/dist/cli/parsing/modules/LoginCommandModule.js +34 -0
  28. package/dist/cli/parsing/modules/LoginCommandModule.js.map +1 -0
  29. package/dist/cli/parsing/modules/LogoutCommandModule.d.ts +7 -0
  30. package/dist/cli/parsing/modules/LogoutCommandModule.d.ts.map +1 -0
  31. package/dist/cli/parsing/modules/LogoutCommandModule.js +29 -0
  32. package/dist/cli/parsing/modules/LogoutCommandModule.js.map +1 -0
  33. package/dist/cli/parsing/modules/PublishCommandModule.d.ts +7 -0
  34. package/dist/cli/parsing/modules/PublishCommandModule.d.ts.map +1 -0
  35. package/dist/cli/parsing/modules/PublishCommandModule.js +50 -0
  36. package/dist/cli/parsing/modules/PublishCommandModule.js.map +1 -0
  37. package/dist/cli/parsing/modules/RegistryCommandModule.d.ts.map +1 -1
  38. package/dist/cli/parsing/modules/RegistryCommandModule.js +31 -2
  39. package/dist/cli/parsing/modules/RegistryCommandModule.js.map +1 -1
  40. package/dist/cli/parsing/modules/RequestsCommandModule.d.ts +7 -0
  41. package/dist/cli/parsing/modules/RequestsCommandModule.d.ts.map +1 -0
  42. package/dist/cli/parsing/modules/RequestsCommandModule.js +63 -0
  43. package/dist/cli/parsing/modules/RequestsCommandModule.js.map +1 -0
  44. package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts +7 -0
  45. package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts.map +1 -0
  46. package/dist/cli/parsing/modules/WhoamiCommandModule.js +29 -0
  47. package/dist/cli/parsing/modules/WhoamiCommandModule.js.map +1 -0
  48. package/dist/cli-bootstrap.d.ts +2 -0
  49. package/dist/cli-bootstrap.d.ts.map +1 -0
  50. package/dist/cli-bootstrap.js +17 -0
  51. package/dist/cli-bootstrap.js.map +1 -0
  52. package/dist/cli.js +24 -17
  53. package/dist/commands/InstallCommand.d.ts.map +1 -1
  54. package/dist/commands/InstallCommand.js +21 -6
  55. package/dist/commands/InstallCommand.js.map +1 -1
  56. package/dist/commands/LoginCommand.d.ts +17 -0
  57. package/dist/commands/LoginCommand.d.ts.map +1 -0
  58. package/dist/commands/LoginCommand.js +73 -0
  59. package/dist/commands/LoginCommand.js.map +1 -0
  60. package/dist/commands/LogoutCommand.d.ts +15 -0
  61. package/dist/commands/LogoutCommand.d.ts.map +1 -0
  62. package/dist/commands/LogoutCommand.js +38 -0
  63. package/dist/commands/LogoutCommand.js.map +1 -0
  64. package/dist/commands/PackageLifecycleCommand.d.ts +28 -0
  65. package/dist/commands/PackageLifecycleCommand.d.ts.map +1 -0
  66. package/dist/commands/PackageLifecycleCommand.js +134 -0
  67. package/dist/commands/PackageLifecycleCommand.js.map +1 -0
  68. package/dist/commands/PostinstallCandidateBuilder.d.ts +1 -1
  69. package/dist/commands/PostinstallCandidateBuilder.d.ts.map +1 -1
  70. package/dist/commands/PostinstallCandidateBuilder.js +4 -1
  71. package/dist/commands/PostinstallCandidateBuilder.js.map +1 -1
  72. package/dist/commands/PublishCommand.d.ts +32 -0
  73. package/dist/commands/PublishCommand.d.ts.map +1 -0
  74. package/dist/commands/PublishCommand.js +260 -0
  75. package/dist/commands/PublishCommand.js.map +1 -0
  76. package/dist/commands/RegistryCommand.d.ts +13 -3
  77. package/dist/commands/RegistryCommand.d.ts.map +1 -1
  78. package/dist/commands/RegistryCommand.js +115 -11
  79. package/dist/commands/RegistryCommand.js.map +1 -1
  80. package/dist/commands/RequestsCommand.d.ts +21 -0
  81. package/dist/commands/RequestsCommand.d.ts.map +1 -0
  82. package/dist/commands/RequestsCommand.js +98 -0
  83. package/dist/commands/RequestsCommand.js.map +1 -0
  84. package/dist/commands/WhoamiCommand.d.ts +32 -0
  85. package/dist/commands/WhoamiCommand.d.ts.map +1 -0
  86. package/dist/commands/WhoamiCommand.js +75 -0
  87. package/dist/commands/WhoamiCommand.js.map +1 -0
  88. package/dist/commands/add/DependencyAddResolver.d.ts.map +1 -1
  89. package/dist/commands/add/DependencyAddResolver.js +4 -2
  90. package/dist/commands/add/DependencyAddResolver.js.map +1 -1
  91. package/dist/control-plane/AccountManager.d.ts +110 -0
  92. package/dist/control-plane/AccountManager.d.ts.map +1 -0
  93. package/dist/control-plane/AccountManager.js +1014 -0
  94. package/dist/control-plane/AccountManager.js.map +1 -0
  95. package/dist/control-plane/ArtifactObserver.d.ts +24 -0
  96. package/dist/control-plane/ArtifactObserver.d.ts.map +1 -0
  97. package/dist/control-plane/ArtifactObserver.js +63 -0
  98. package/dist/control-plane/ArtifactObserver.js.map +1 -0
  99. package/dist/control-plane/AuthMetadataStore.d.ts +15 -0
  100. package/dist/control-plane/AuthMetadataStore.d.ts.map +1 -0
  101. package/dist/control-plane/AuthMetadataStore.js +116 -0
  102. package/dist/control-plane/AuthMetadataStore.js.map +1 -0
  103. package/dist/control-plane/AuthStoragePaths.d.ts +11 -0
  104. package/dist/control-plane/AuthStoragePaths.d.ts.map +1 -0
  105. package/dist/control-plane/AuthStoragePaths.js +17 -0
  106. package/dist/control-plane/AuthStoragePaths.js.map +1 -0
  107. package/dist/control-plane/AuthenticationSelector.d.ts +21 -0
  108. package/dist/control-plane/AuthenticationSelector.d.ts.map +1 -0
  109. package/dist/control-plane/AuthenticationSelector.js +64 -0
  110. package/dist/control-plane/AuthenticationSelector.js.map +1 -0
  111. package/dist/control-plane/ControlPlaneClient.d.ts +32 -0
  112. package/dist/control-plane/ControlPlaneClient.d.ts.map +1 -0
  113. package/dist/control-plane/ControlPlaneClient.js +280 -0
  114. package/dist/control-plane/ControlPlaneClient.js.map +1 -0
  115. package/dist/control-plane/ControlPlaneEndpoints.d.ts +13 -0
  116. package/dist/control-plane/ControlPlaneEndpoints.d.ts.map +1 -0
  117. package/dist/control-plane/ControlPlaneEndpoints.js +19 -0
  118. package/dist/control-plane/ControlPlaneEndpoints.js.map +1 -0
  119. package/dist/control-plane/ControlPlaneTypes.d.ts +168 -0
  120. package/dist/control-plane/ControlPlaneTypes.d.ts.map +1 -0
  121. package/dist/control-plane/ControlPlaneTypes.js +93 -0
  122. package/dist/control-plane/ControlPlaneTypes.js.map +1 -0
  123. package/dist/control-plane/CredentialStore.d.ts +28 -0
  124. package/dist/control-plane/CredentialStore.d.ts.map +1 -0
  125. package/dist/control-plane/CredentialStore.js +87 -0
  126. package/dist/control-plane/CredentialStore.js.map +1 -0
  127. package/dist/control-plane/DPoPKeyStore.d.ts +11 -0
  128. package/dist/control-plane/DPoPKeyStore.d.ts.map +1 -0
  129. package/dist/control-plane/DPoPKeyStore.js +54 -0
  130. package/dist/control-plane/DPoPKeyStore.js.map +1 -0
  131. package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts +6 -0
  132. package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts.map +1 -0
  133. package/dist/control-plane/GitHubActionsOidcCredentialProvider.js +67 -0
  134. package/dist/control-plane/GitHubActionsOidcCredentialProvider.js.map +1 -0
  135. package/dist/control-plane/PublishIdempotencyStore.d.ts +18 -0
  136. package/dist/control-plane/PublishIdempotencyStore.d.ts.map +1 -0
  137. package/dist/control-plane/PublishIdempotencyStore.js +71 -0
  138. package/dist/control-plane/PublishIdempotencyStore.js.map +1 -0
  139. package/dist/control-plane/RegistryGrantLock.d.ts +35 -0
  140. package/dist/control-plane/RegistryGrantLock.d.ts.map +1 -0
  141. package/dist/control-plane/RegistryGrantLock.js +199 -0
  142. package/dist/control-plane/RegistryGrantLock.js.map +1 -0
  143. package/dist/control-plane/RegistryTrustResolver.d.ts +17 -0
  144. package/dist/control-plane/RegistryTrustResolver.d.ts.map +1 -0
  145. package/dist/control-plane/RegistryTrustResolver.js +140 -0
  146. package/dist/control-plane/RegistryTrustResolver.js.map +1 -0
  147. package/dist/index.d.ts +16 -3
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +16 -2
  150. package/dist/index.js.map +1 -1
  151. package/dist/postinstall/markers/MarkerIntegrityValidator.d.ts +1 -1
  152. package/dist/prompts/InkPromptService.d.ts +1 -0
  153. package/dist/prompts/InkPromptService.d.ts.map +1 -1
  154. package/dist/prompts/InkPromptService.js +20 -0
  155. package/dist/prompts/InkPromptService.js.map +1 -1
  156. package/dist/prompts/PromptService.d.ts +2 -0
  157. package/dist/prompts/PromptService.d.ts.map +1 -1
  158. package/dist/reporting/JsonReporter.d.ts +2 -0
  159. package/dist/reporting/JsonReporter.d.ts.map +1 -1
  160. package/dist/reporting/JsonReporter.js +6 -0
  161. package/dist/reporting/JsonReporter.js.map +1 -1
  162. package/package.json +21 -15
  163. package/dist/cli.d.ts +0 -3
  164. package/dist/cli.d.ts.map +0 -1
  165. package/dist/cli.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ import { createUAPKGCommandLineFactory, } from '../../UAPKGCommandLine.js';
2
+ const AUTH_MODES = ['auto', 'login', 'gat', 'oidc'];
3
+ const OPERATIONS = [
4
+ { name: 'yank', describe: 'Exclude a published version from new resolution' },
5
+ { name: 'unyank', describe: 'Restore a yanked version to new resolution' },
6
+ { name: 'unpublish', describe: 'Permanently remove a recently published version' },
7
+ { name: 'deprecate', describe: 'Attach a deprecation warning to a version' },
8
+ { name: 'undeprecate', describe: 'Clear the deprecation warning from a version' },
9
+ ];
10
+ /**
11
+ * Registers the five route-derived package lifecycle commands. Each command
12
+ * shares one shape: `uapkg <operation> <package> <version> [--reason ...]`.
13
+ */
14
+ export class LifecycleCommandModule {
15
+ factory = createUAPKGCommandLineFactory();
16
+ register(parser, sink) {
17
+ let current = parser;
18
+ for (const operation of OPERATIONS) {
19
+ current = current.command(`${operation.name} <package> <version>`, operation.describe, (builder) => builder
20
+ .positional('package', { type: 'string', describe: 'Package name' })
21
+ .positional('version', { type: 'string', describe: 'Exact package version' })
22
+ .option('reason', { type: 'string', describe: 'Reason recorded with the request' })
23
+ .option('registry', { type: 'string', describe: 'Configured registry alias' })
24
+ .option('auth', {
25
+ type: 'string',
26
+ choices: AUTH_MODES,
27
+ default: 'auto',
28
+ describe: 'Authentication method',
29
+ })
30
+ .option('detach', {
31
+ type: 'boolean',
32
+ default: false,
33
+ describe: 'Return immediately after submitting the request',
34
+ })
35
+ .option('json', {
36
+ type: 'boolean',
37
+ default: false,
38
+ describe: 'Emit JSON on stdout',
39
+ }), (argv) => {
40
+ sink.set(this.factory.createLifecycle(operation.name, String(argv.package ?? ''), String(argv.version ?? ''), {
41
+ cwd: process.cwd(),
42
+ reason: stringOption(argv.reason),
43
+ registry: stringOption(argv.registry),
44
+ auth: String(argv.auth),
45
+ detach: argv.detach === true,
46
+ outputFormat: argv.json ? 'json' : 'text',
47
+ }));
48
+ });
49
+ }
50
+ return current;
51
+ }
52
+ }
53
+ function stringOption(value) {
54
+ return typeof value === 'string' ? value : undefined;
55
+ }
56
+ //# sourceMappingURL=LifecycleCommandModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/LifecycleCommandModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Argv } from 'yargs';
2
+ import type { CommandLineSink, UAPKGCommandModule } from '../contracts/UAPKGCommandModule.js';
3
+ export declare class LoginCommandModule implements UAPKGCommandModule {
4
+ private readonly factory;
5
+ register(parser: Argv, sink: CommandLineSink): Argv;
6
+ }
7
+ //# sourceMappingURL=LoginCommandModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/LoginCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE9F,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;CAqCpD"}
@@ -0,0 +1,34 @@
1
+ import { createUAPKGCommandLineFactory } from '../../UAPKGCommandLine.js';
2
+ export class LoginCommandModule {
3
+ factory = createUAPKGCommandLineFactory();
4
+ register(parser, sink) {
5
+ return parser.command('login', 'Authorize this browser-capable workstation for one registry', (builder) => builder
6
+ .option('registry', {
7
+ type: 'string',
8
+ describe: 'Configured registry alias (defaults to the selected registry)',
9
+ })
10
+ .option('device-name', {
11
+ type: 'string',
12
+ describe: 'Device label shown on the authorization page',
13
+ })
14
+ .option('reauthorize', {
15
+ type: 'boolean',
16
+ default: false,
17
+ describe: 'Replace the saved grant for this registry',
18
+ })
19
+ .option('json', {
20
+ type: 'boolean',
21
+ default: false,
22
+ describe: 'Emit JSON on stdout',
23
+ }), (argv) => {
24
+ sink.set(this.factory.createLogin({
25
+ cwd: process.cwd(),
26
+ registry: typeof argv.registry === 'string' ? argv.registry : undefined,
27
+ deviceName: typeof argv['device-name'] === 'string' ? argv['device-name'] : undefined,
28
+ reauthorize: argv.reauthorize === true,
29
+ outputFormat: argv.json ? 'json' : 'text',
30
+ }));
31
+ });
32
+ }
33
+ }
34
+ //# sourceMappingURL=LoginCommandModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/LoginCommandModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAG1E,MAAM,OAAO,kBAAkB;IACZ,OAAO,GAAG,6BAA6B,EAAE,CAAC;IAE3D,QAAQ,CAAC,MAAY,EAAE,IAAqB;QAC1C,OAAO,MAAM,CAAC,OAAO,CACnB,OAAO,EACP,6DAA6D,EAC7D,CAAC,OAAO,EAAE,EAAE,CACV,OAAO;aACJ,MAAM,CAAC,UAAU,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,+DAA+D;SAC1E,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,8CAA8C;SACzD,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,2CAA2C;SACtD,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,qBAAqB;SAChC,CAAC,EACN,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;gBACvB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACvE,UAAU,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;gBACrF,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI;gBACtC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { Argv } from 'yargs';
2
+ import type { CommandLineSink, UAPKGCommandModule } from '../contracts/UAPKGCommandModule.js';
3
+ export declare class LogoutCommandModule implements UAPKGCommandModule {
4
+ private readonly factory;
5
+ register(parser: Argv, sink: CommandLineSink): Argv;
6
+ }
7
+ //# sourceMappingURL=LogoutCommandModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoutCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/LogoutCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE9F,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;CAgCpD"}
@@ -0,0 +1,29 @@
1
+ import { createUAPKGCommandLineFactory } from '../../UAPKGCommandLine.js';
2
+ export class LogoutCommandModule {
3
+ factory = createUAPKGCommandLineFactory();
4
+ register(parser, sink) {
5
+ return parser.command('logout', 'Revoke and remove the saved login for one registry', (builder) => builder
6
+ .option('registry', {
7
+ type: 'string',
8
+ describe: 'Configured registry alias (defaults to the selected registry)',
9
+ })
10
+ .option('local-only', {
11
+ type: 'boolean',
12
+ default: false,
13
+ describe: 'Remove local credentials without revoking the remote grant',
14
+ })
15
+ .option('json', {
16
+ type: 'boolean',
17
+ default: false,
18
+ describe: 'Emit JSON on stdout',
19
+ }), (argv) => {
20
+ sink.set(this.factory.createLogout({
21
+ cwd: process.cwd(),
22
+ registry: typeof argv.registry === 'string' ? argv.registry : undefined,
23
+ localOnly: argv['local-only'] === true,
24
+ outputFormat: argv.json ? 'json' : 'text',
25
+ }));
26
+ });
27
+ }
28
+ }
29
+ //# sourceMappingURL=LogoutCommandModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoutCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/LogoutCommandModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAG1E,MAAM,OAAO,mBAAmB;IACb,OAAO,GAAG,6BAA6B,EAAE,CAAC;IAE3D,QAAQ,CAAC,MAAY,EAAE,IAAqB;QAC1C,OAAO,MAAM,CAAC,OAAO,CACnB,QAAQ,EACR,oDAAoD,EACpD,CAAC,OAAO,EAAE,EAAE,CACV,OAAO;aACJ,MAAM,CAAC,UAAU,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,+DAA+D;SAC1E,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,4DAA4D;SACvE,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,qBAAqB;SAChC,CAAC,EACN,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACvE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI;gBACtC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { Argv } from 'yargs';
2
+ import type { CommandLineSink, UAPKGCommandModule } from '../contracts/UAPKGCommandModule.js';
3
+ export declare class PublishCommandModule implements UAPKGCommandModule {
4
+ private readonly factory;
5
+ register(parser: Argv, sink: CommandLineSink): Argv;
6
+ }
7
+ //# sourceMappingURL=PublishCommandModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublishCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/PublishCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI9F,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;CAiDpD"}
@@ -0,0 +1,50 @@
1
+ import { createUAPKGCommandLineFactory } from '../../UAPKGCommandLine.js';
2
+ const AUTH_MODES = ['auto', 'login', 'gat', 'oidc'];
3
+ export class PublishCommandModule {
4
+ factory = createUAPKGCommandLineFactory();
5
+ register(parser, sink) {
6
+ return parser.command('publish', 'Submit a GitHub Release for authorized publication', (builder) => builder
7
+ .option('registry', { type: 'string', describe: 'Configured registry alias' })
8
+ .option('owner', { type: 'string', describe: 'Owner organization for a new unscoped package' })
9
+ .option('repository', { type: 'string', describe: 'GitHub owner/repository coordinate' })
10
+ .option('tag', { type: 'string', describe: 'GitHub Release tag (defaults to v<version>)' })
11
+ .option('asset', { type: 'string', describe: 'GitHub Release asset name (defaults to package.tgz)' })
12
+ .option('asset-path', {
13
+ type: 'string',
14
+ describe: 'Local archive whose exact bytes should be published (skips the download)',
15
+ })
16
+ .option('auth', {
17
+ type: 'string',
18
+ choices: AUTH_MODES,
19
+ default: 'auto',
20
+ describe: 'Publishing authentication method',
21
+ })
22
+ .option('detach', {
23
+ type: 'boolean',
24
+ default: false,
25
+ describe: 'Return immediately after submitting the publishing request',
26
+ })
27
+ .option('json', {
28
+ type: 'boolean',
29
+ default: false,
30
+ describe: 'Emit JSON on stdout',
31
+ }), (argv) => {
32
+ sink.set(this.factory.createPublish({
33
+ cwd: process.cwd(),
34
+ registry: stringOption(argv.registry),
35
+ owner: stringOption(argv.owner),
36
+ repository: stringOption(argv.repository),
37
+ tag: stringOption(argv.tag),
38
+ asset: stringOption(argv.asset),
39
+ assetPath: stringOption(argv['asset-path']),
40
+ auth: String(argv.auth),
41
+ detach: argv.detach === true,
42
+ outputFormat: argv.json ? 'json' : 'text',
43
+ }));
44
+ });
45
+ }
46
+ }
47
+ function stringOption(value) {
48
+ return typeof value === 'string' ? value : undefined;
49
+ }
50
+ //# sourceMappingURL=PublishCommandModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublishCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/PublishCommandModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAkC,MAAM,2BAA2B,CAAC;AAG1G,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAE7D,MAAM,OAAO,oBAAoB;IACd,OAAO,GAAG,6BAA6B,EAAE,CAAC;IAE3D,QAAQ,CAAC,MAAY,EAAE,IAAqB;QAC1C,OAAO,MAAM,CAAC,OAAO,CACnB,SAAS,EACT,oDAAoD,EACpD,CAAC,OAAO,EAAE,EAAE,CACV,OAAO;aACJ,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,2BAA2B,EAAE,CAAC;aAC7E,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,+CAA+C,EAAE,CAAC;aAC9F,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAoC,EAAE,CAAC;aACxF,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,6CAA6C,EAAE,CAAC;aAC1F,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,qDAAqD,EAAE,CAAC;aACpG,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,0EAA0E;SACrF,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,4DAA4D;SACvE,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,qBAAqB;SAChC,CAAC,EACN,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;gBACzB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;gBACzC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAA8B;gBACpD,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;gBAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/RegistryCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG9F,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe;CAuG7C"}
1
+ {"version":3,"file":"RegistryCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/RegistryCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG9F,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe;CAwI7C"}
@@ -6,7 +6,7 @@ export class RegistryCommandModule {
6
6
  return parser.command('registry <action> [name] [url]', 'Manage named registries', (builder) => withScopeOptions(builder)
7
7
  .positional('action', {
8
8
  type: 'string',
9
- choices: ['add', 'remove', 'list', 'use'],
9
+ choices: ['add', 'remove', 'list', 'use', 'auth', 'refresh'],
10
10
  describe: 'Registry action',
11
11
  demandOption: true,
12
12
  })
@@ -37,7 +37,22 @@ export class RegistryCommandModule {
37
37
  })
38
38
  .conflicts('branch', 'tag')
39
39
  .conflicts('branch', 'rev')
40
- .conflicts('tag', 'rev'), (argv) => {
40
+ .conflicts('tag', 'rev')
41
+ .check((argv) => {
42
+ const action = String(argv.action);
43
+ if (action === 'auth' || action === 'refresh') {
44
+ if (argv.global || argv.local) {
45
+ throw new Error(`[uapkg] registry ${action} does not accept --global or --local`);
46
+ }
47
+ if (typeof argv.url === 'string') {
48
+ throw new Error(`[uapkg] registry ${action} accepts a configured alias only`);
49
+ }
50
+ if (typeof argv.branch === 'string' || typeof argv.tag === 'string' || typeof argv.rev === 'string') {
51
+ throw new Error(`[uapkg] registry ${action} does not accept --branch, --tag, or --rev`);
52
+ }
53
+ }
54
+ return true;
55
+ }), (argv) => {
41
56
  const scope = resolveScope(argv.global, argv.local);
42
57
  const output = argv.json ? 'json' : 'text';
43
58
  const action = String(argv.action);
@@ -83,6 +98,20 @@ export class RegistryCommandModule {
83
98
  name: typeof argv.name === 'string' ? argv.name : undefined,
84
99
  }));
85
100
  return;
101
+ case 'auth':
102
+ sink.set(this.factory.createRegistry('auth', {
103
+ cwd: process.cwd(),
104
+ output,
105
+ name: typeof argv.name === 'string' ? argv.name : undefined,
106
+ }));
107
+ return;
108
+ case 'refresh':
109
+ sink.set(this.factory.createRegistry('refresh', {
110
+ cwd: process.cwd(),
111
+ output,
112
+ name: typeof argv.name === 'string' ? argv.name : undefined,
113
+ }));
114
+ return;
86
115
  default:
87
116
  throw new Error(`[uapkg] Unsupported registry action: ${action}`);
88
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/RegistryCommandModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegistryCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/RegistryCommandModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Argv } from 'yargs';
2
+ import type { CommandLineSink, UAPKGCommandModule } from '../contracts/UAPKGCommandModule.js';
3
+ export declare class RequestsCommandModule implements UAPKGCommandModule {
4
+ private readonly factory;
5
+ register(parser: Argv, sink: CommandLineSink): Argv;
6
+ }
7
+ //# sourceMappingURL=RequestsCommandModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestsCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/RequestsCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAY9F,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;CAuEpD"}
@@ -0,0 +1,63 @@
1
+ import { createUAPKGCommandLineFactory } from '../../UAPKGCommandLine.js';
2
+ const REQUEST_STATUSES = [
3
+ 'queued',
4
+ 'checking',
5
+ 'accepted',
6
+ 'ready',
7
+ 'ready_superseded',
8
+ 'rejected',
9
+ 'operationally_failed',
10
+ ];
11
+ export class RequestsCommandModule {
12
+ factory = createUAPKGCommandLineFactory();
13
+ register(parser, sink) {
14
+ return parser.command('requests', 'List or inspect your publishing requests', (builder) => builder
15
+ .command('list', 'List your publishing requests', (listBuilder) => listBuilder
16
+ .option('registry', { type: 'string', describe: 'Configured registry alias' })
17
+ .option('status', {
18
+ type: 'string',
19
+ choices: REQUEST_STATUSES,
20
+ describe: 'Filter requests by status',
21
+ })
22
+ .option('json', {
23
+ type: 'boolean',
24
+ default: false,
25
+ describe: 'Emit JSON on stdout',
26
+ })
27
+ .strict(), (argv) => {
28
+ sink.set(this.factory.createRequests('list', {
29
+ cwd: process.cwd(),
30
+ registry: typeof argv.registry === 'string' ? argv.registry : undefined,
31
+ status: typeof argv.status === 'string' ? argv.status : undefined,
32
+ outputFormat: argv.json ? 'json' : 'text',
33
+ }));
34
+ })
35
+ .command('status <request-id>', 'Inspect one publishing request', (statusBuilder) => statusBuilder
36
+ .positional('request-id', {
37
+ type: 'string',
38
+ demandOption: true,
39
+ describe: 'Publishing request identifier',
40
+ })
41
+ .option('watch', {
42
+ type: 'boolean',
43
+ default: false,
44
+ describe: 'Watch until the request reaches a terminal state',
45
+ })
46
+ .option('json', {
47
+ type: 'boolean',
48
+ default: false,
49
+ describe: 'Emit JSON on stdout',
50
+ })
51
+ .strict(), (argv) => {
52
+ sink.set(this.factory.createRequests('status', {
53
+ cwd: process.cwd(),
54
+ requestId: typeof argv['request-id'] === 'string' ? argv['request-id'] : undefined,
55
+ watch: argv.watch === true,
56
+ outputFormat: argv.json ? 'json' : 'text',
57
+ }));
58
+ })
59
+ .demandCommand(1)
60
+ .strict(), () => undefined);
61
+ }
62
+ }
63
+ //# sourceMappingURL=RequestsCommandModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestsCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/RequestsCommandModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAmC,MAAM,2BAA2B,CAAC;AAG3G,MAAM,gBAAgB,GAAG;IACvB,QAAQ;IACR,UAAU;IACV,UAAU;IACV,OAAO;IACP,kBAAkB;IAClB,UAAU;IACV,sBAAsB;CACd,CAAC;AAEX,MAAM,OAAO,qBAAqB;IACf,OAAO,GAAG,6BAA6B,EAAE,CAAC;IAE3D,QAAQ,CAAC,MAAY,EAAE,IAAqB;QAC1C,OAAO,MAAM,CAAC,OAAO,CACnB,UAAU,EACV,0CAA0C,EAC1C,CAAC,OAAO,EAAE,EAAE,CACV,OAAO;aACJ,OAAO,CACN,MAAM,EACN,+BAA+B,EAC/B,CAAC,WAAW,EAAE,EAAE,CACd,WAAW;aACR,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,2BAA2B,EAAE,CAAC;aAC7E,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,2BAA2B;SACtC,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,qBAAqB;SAChC,CAAC;aACD,MAAM,EAAE,EACb,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;gBAClC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACvE,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,MAAqC,CAAC,CAAC,CAAC,SAAS;gBACjG,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CACN,qBAAqB,EACrB,gCAAgC,EAChC,CAAC,aAAa,EAAE,EAAE,CAChB,aAAa;aACV,UAAU,CAAC,YAAY,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,+BAA+B;SAC1C,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,kDAAkD;SAC7D,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,qBAAqB;SAChC,CAAC;aACD,MAAM,EAAE,EACb,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACpC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,SAAS,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;gBAClF,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;gBAC1B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC,CACF;aACA,aAAa,CAAC,CAAC,CAAC;aAChB,MAAM,EAAE,EACb,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { Argv } from 'yargs';
2
+ import type { CommandLineSink, UAPKGCommandModule } from '../contracts/UAPKGCommandModule.js';
3
+ export declare class WhoamiCommandModule implements UAPKGCommandModule {
4
+ private readonly factory;
5
+ register(parser: Argv, sink: CommandLineSink): Argv;
6
+ }
7
+ //# sourceMappingURL=WhoamiCommandModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhoamiCommandModule.d.ts","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/WhoamiCommandModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE9F,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;CAgCpD"}
@@ -0,0 +1,29 @@
1
+ import { createUAPKGCommandLineFactory, UAPKG_WHOAMI_FIELDS } from '../../UAPKGCommandLine.js';
2
+ export class WhoamiCommandModule {
3
+ factory = createUAPKGCommandLineFactory();
4
+ register(parser, sink) {
5
+ return parser.command('whoami [field]', 'Show the account associated with this registry login', (builder) => builder
6
+ .positional('field', {
7
+ type: 'string',
8
+ choices: UAPKG_WHOAMI_FIELDS,
9
+ describe: 'Identity or registry field to print',
10
+ })
11
+ .option('registry', {
12
+ type: 'string',
13
+ describe: 'Configured registry alias (defaults to the selected registry)',
14
+ })
15
+ .option('json', {
16
+ type: 'boolean',
17
+ default: false,
18
+ describe: 'Emit JSON on stdout',
19
+ }), (argv) => {
20
+ sink.set(this.factory.createWhoami({
21
+ cwd: process.cwd(),
22
+ field: typeof argv.field === 'string' ? argv.field : undefined,
23
+ registry: typeof argv.registry === 'string' ? argv.registry : undefined,
24
+ outputFormat: argv.json ? 'json' : 'text',
25
+ }));
26
+ });
27
+ }
28
+ }
29
+ //# sourceMappingURL=WhoamiCommandModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhoamiCommandModule.js","sourceRoot":"","sources":["../../../../src/cli/parsing/modules/WhoamiCommandModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAyB,MAAM,2BAA2B,CAAC;AAGtH,MAAM,OAAO,mBAAmB;IACb,OAAO,GAAG,6BAA6B,EAAE,CAAC;IAE3D,QAAQ,CAAC,MAAY,EAAE,IAAqB;QAC1C,OAAO,MAAM,CAAC,OAAO,CACnB,gBAAgB,EAChB,sDAAsD,EACtD,CAAC,OAAO,EAAE,EAAE,CACV,OAAO;aACJ,UAAU,CAAC,OAAO,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mBAAmB;YAC5B,QAAQ,EAAE,qCAAqC;SAChD,CAAC;aACD,MAAM,CAAC,UAAU,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,+DAA+D;SAC1E,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,qBAAqB;SAChC,CAAC,EACN,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAA0B,CAAC,CAAC,CAAC,SAAS;gBACpF,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACvE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-bootstrap.d.ts","sourceRoot":"","sources":["../src/cli-bootstrap.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import Config from '@uapkg/config';
2
+ import Log, { configureLogger } from '@uapkg/log';
3
+ import { runUAPKGCLI } from './cli/runUAPKGCLI.js';
4
+ Config.reload({ cwd: process.cwd() });
5
+ configureLogger({
6
+ isVerboseEnabled: () => Config.get('term.verbose') === true,
7
+ isQuietEnabled: () => Config.get('term.quiet') === true,
8
+ });
9
+ runUAPKGCLI(process.argv)
10
+ .then((exitCode) => {
11
+ process.exitCode = exitCode;
12
+ })
13
+ .catch((error) => {
14
+ Log.error(error instanceof Error ? error.message : String(error));
15
+ process.exitCode = 1;
16
+ });
17
+ //# sourceMappingURL=cli-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-bootstrap.js","sourceRoot":"","sources":["../src/cli-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtC,eAAe,CAAC;IACd,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI;IAC3D,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;CACxD,CAAC,CAAC;AAEH,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;IACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
package/dist/cli.js CHANGED
@@ -1,18 +1,25 @@
1
1
  #!/usr/bin/env node
2
- import Config from '@uapkg/config';
3
- import Log, { configureLogger } from '@uapkg/log';
4
- import { runUAPKGCLI } from './cli/runUAPKGCLI.js';
5
- Config.reload({ cwd: process.cwd() });
6
- configureLogger({
7
- isVerboseEnabled: () => Config.get('term.verbose') === true,
8
- isQuietEnabled: () => Config.get('term.quiet') === true,
9
- });
10
- runUAPKGCLI(process.argv)
11
- .then((exitCode) => {
12
- process.exitCode = exitCode;
13
- })
14
- .catch((error) => {
15
- Log.error(error instanceof Error ? error.message : String(error));
16
- process.exitCode = 1;
17
- });
18
- //# sourceMappingURL=cli.js.map
2
+ import {
3
+ INTERNAL_BUILD_MODE_ENV,
4
+ INTERNAL_PROFILE_HOME_ENV,
5
+ resolveUapkgProfileRoot,
6
+ } from '@uapkg/common';
7
+ import { UAPKG_BUILD_METADATA } from './build/BuildMetadata.js';
8
+
9
+ process.env[INTERNAL_BUILD_MODE_ENV] = UAPKG_BUILD_METADATA.mode;
10
+ process.env[INTERNAL_PROFILE_HOME_ENV] = resolveUapkgProfileRoot(UAPKG_BUILD_METADATA.mode);
11
+
12
+ if (UAPKG_BUILD_METADATA.mode === 'development') {
13
+ const colorDisabled =
14
+ Object.hasOwn(process.env, 'NO_COLOR') || process.env.FORCE_COLOR === '0';
15
+ const supportsColor =
16
+ !colorDisabled &&
17
+ process.stderr.isTTY === true &&
18
+ (typeof process.stderr.hasColors !== 'function' || process.stderr.hasColors());
19
+ const banner = supportsColor
20
+ ? '\u001B[44m\u001B[37mDEVELOPMENT BUILD\u001B[0m'
21
+ : 'DEVELOPMENT BUILD';
22
+ process.stderr.write(`${banner}\n`);
23
+ }
24
+
25
+ await import('./cli-bootstrap.js');
@@ -1 +1 @@
1
- {"version":3,"file":"InstallCommand.d.ts","sourceRoot":"","sources":["../../src/commands/InstallCommand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,YAAW,OAAO;IAE1C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,qBAAqB;IAGpC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsEvC,OAAO,CAAC,IAAI;CAQb"}
1
+ {"version":3,"file":"InstallCommand.d.ts","sourceRoot":"","sources":["../../src/commands/InstallCommand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,YAAW,OAAO;IAE1C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,qBAAqB;IAGpC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsFvC,OAAO,CAAC,IAAI;CAQb"}
@@ -45,17 +45,26 @@ export class InstallCommand {
45
45
  }
46
46
  const progress = new InstallProgressReporter();
47
47
  const consumer = progress.consume(this.root.installer.getStatusStream());
48
+ // Trusted roots for verification-gated traversal: the manifest's declared buckets.
49
+ const rootDependencies = [
50
+ ...Object.keys(manifest.dependencies ?? {}),
51
+ ...Object.keys(manifest.devDependencies ?? {}),
52
+ ...Object.keys(manifest.peerDependencies ?? {}),
53
+ ];
48
54
  const executeResult = await this.root.installer.execute(lockfile, previousLockfile, {
49
55
  manifestRoot: this.root.cwd,
50
56
  force: this.options.force,
51
57
  dryRun: this.options.dryRun,
58
+ rootDependencies,
52
59
  });
53
60
  await consumer;
54
61
  if (!executeResult.ok)
55
62
  return this.fail([...commandDiagnostics, ...executeResult.diagnostics]);
56
- const plan = executeResult.value;
63
+ const report = executeResult.value;
64
+ const plan = report.plan;
65
+ const hasBranchFailures = report.failed.length > 0 || report.skipped.length > 0;
57
66
  const builder = new PostinstallCandidateBuilder();
58
- const candidates = builder.build(this.root, plan, lockfile);
67
+ const candidates = builder.build(this.root, plan, lockfile, new Set(report.installed));
59
68
  const manifestType = builder.resolveManifestType(manifest);
60
69
  let postDiagnostics = [];
61
70
  if (!this.options.dryRun && candidates.length > 0) {
@@ -73,16 +82,22 @@ export class InstallCommand {
73
82
  }
74
83
  if (this.options.outputFormat === 'json') {
75
84
  this.root.json.emit({
76
- status: 'ok',
85
+ status: hasBranchFailures ? 'error' : 'ok',
77
86
  command: 'install',
78
- data: { plan: plan.summary },
87
+ data: {
88
+ plan: plan.summary,
89
+ installed: report.installed,
90
+ failed: report.failed,
91
+ skipped: report.skipped,
92
+ incompleteClosure: report.incompleteClosure,
93
+ },
79
94
  diagnostics: [...commandDiagnostics, ...executeResult.diagnostics, ...postDiagnostics],
80
95
  });
81
- return 0;
96
+ return hasBranchFailures ? 1 : 0;
82
97
  }
83
98
  this.root.diagnostics.reportAll([...commandDiagnostics, ...executeResult.diagnostics, ...postDiagnostics]);
84
99
  progress.renderSummary(plan.summary);
85
- return 0;
100
+ return hasBranchFailures ? 1 : 0;
86
101
  }
87
102
  fail(diagnostics) {
88
103
  if (this.options.outputFormat === 'json') {
@@ -1 +1 @@
1
- {"version":3,"file":"InstallCommand.js","sourceRoot":"","sources":["../../src/commands/InstallCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InstallCommand.js","sourceRoot":"","sources":["../../src/commands/InstallCommand.ts"],"names":[],"mappings":"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"}