@uapkg/cli 1.3.0 → 1.3.2
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 +36 -33
- package/dist/app/CompositionRoot.d.ts.map +1 -1
- package/dist/app/CompositionRoot.js +91 -109
- package/dist/app/CompositionRoot.js.map +1 -1
- package/dist/app/UAPKGApplication.d.ts +6 -3
- package/dist/app/UAPKGApplication.d.ts.map +1 -1
- package/dist/app/UAPKGApplication.js +155 -169
- package/dist/app/UAPKGApplication.js.map +1 -1
- package/dist/build/BuildMetadata.d.ts +9 -6
- package/dist/build/BuildMetadata.d.ts.map +1 -1
- package/dist/build/BuildMetadata.js +2 -2
- package/dist/cli/UAPKGCommandLine.d.ts +259 -257
- package/dist/cli/UAPKGCommandLine.d.ts.map +1 -1
- package/dist/cli/UAPKGCommandLine.js +248 -239
- package/dist/cli/UAPKGCommandLine.js.map +1 -1
- package/dist/cli/parseCommandLine.d.ts +5 -1
- package/dist/cli/parseCommandLine.d.ts.map +1 -1
- package/dist/cli/parseCommandLine.js +8 -3
- package/dist/cli/parseCommandLine.js.map +1 -1
- package/dist/cli/parsing/UAPKGCommandLineParser.d.ts +9 -6
- package/dist/cli/parsing/UAPKGCommandLineParser.d.ts.map +1 -1
- package/dist/cli/parsing/UAPKGCommandLineParser.js +23 -31
- package/dist/cli/parsing/UAPKGCommandLineParser.js.map +1 -1
- package/dist/cli/parsing/UAPKGParserRegistry.d.ts +12 -9
- package/dist/cli/parsing/UAPKGParserRegistry.d.ts.map +1 -1
- package/dist/cli/parsing/UAPKGParserRegistry.js +53 -50
- package/dist/cli/parsing/UAPKGParserRegistry.js.map +1 -1
- package/dist/cli/parsing/contracts/UAPKGCommandModule.d.ts +9 -6
- package/dist/cli/parsing/contracts/UAPKGCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/contracts/UAPKGCommandModule.js +1 -2
- package/dist/cli/parsing/modules/AddCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/AddCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/AddCommandModule.js +49 -36
- package/dist/cli/parsing/modules/AddCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/ConfigCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/ConfigCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/ConfigCommandModule.js +87 -83
- package/dist/cli/parsing/modules/ConfigCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/InitCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/InitCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/InitCommandModule.js +25 -22
- package/dist/cli/parsing/modules/InitCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/InstallCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/InstallCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/InstallCommandModule.js +36 -28
- package/dist/cli/parsing/modules/InstallCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/LifecycleCommandModule.js +78 -50
- package/dist/cli/parsing/modules/LifecycleCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/ListCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/ListCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/ListCommandModule.js +26 -15
- package/dist/cli/parsing/modules/ListCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/LoginCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/LoginCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/LoginCommandModule.js +34 -33
- package/dist/cli/parsing/modules/LoginCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/LogoutCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/LogoutCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/LogoutCommandModule.js +30 -28
- package/dist/cli/parsing/modules/LogoutCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/OutdatedCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/OutdatedCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/OutdatedCommandModule.js +21 -16
- package/dist/cli/parsing/modules/OutdatedCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/PackCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/PackCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/PackCommandModule.js +30 -28
- package/dist/cli/parsing/modules/PackCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/ProjectGetNameCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/ProjectGetNameCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/ProjectGetNameCommandModule.js +14 -11
- package/dist/cli/parsing/modules/ProjectGetNameCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/PublishCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/PublishCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/PublishCommandModule.js +63 -47
- package/dist/cli/parsing/modules/PublishCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/RegistryCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/RegistryCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/RegistryCommandModule.js +117 -120
- package/dist/cli/parsing/modules/RegistryCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/RemoveCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/RemoveCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/RemoveCommandModule.js +25 -14
- package/dist/cli/parsing/modules/RemoveCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/RequestsCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/RequestsCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/RequestsCommandModule.js +56 -60
- package/dist/cli/parsing/modules/RequestsCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/UpdateCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/UpdateCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/UpdateCommandModule.js +38 -25
- package/dist/cli/parsing/modules/UpdateCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/WhoamiCommandModule.js +30 -28
- package/dist/cli/parsing/modules/WhoamiCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/WhyCommandModule.d.ts +8 -5
- package/dist/cli/parsing/modules/WhyCommandModule.d.ts.map +1 -1
- package/dist/cli/parsing/modules/WhyCommandModule.js +25 -14
- package/dist/cli/parsing/modules/WhyCommandModule.js.map +1 -1
- package/dist/cli/parsing/modules/sharedOptions.d.ts +8 -5
- package/dist/cli/parsing/modules/sharedOptions.d.ts.map +1 -1
- package/dist/cli/parsing/modules/sharedOptions.js +18 -23
- package/dist/cli/parsing/modules/sharedOptions.js.map +1 -1
- package/dist/cli/runUAPKGCLI.d.ts +4 -1
- package/dist/cli/runUAPKGCLI.d.ts.map +1 -1
- package/dist/cli/runUAPKGCLI.js +10 -5
- package/dist/cli/runUAPKGCLI.js.map +1 -1
- package/dist/cli-bootstrap.d.ts +1 -2
- package/dist/cli-bootstrap.js +15 -12
- package/dist/cli-bootstrap.js.map +1 -1
- package/dist/commands/AddCommand.d.ts +19 -16
- package/dist/commands/AddCommand.d.ts.map +1 -1
- package/dist/commands/AddCommand.js +49 -53
- package/dist/commands/AddCommand.js.map +1 -1
- package/dist/commands/Command.d.ts +5 -2
- package/dist/commands/Command.d.ts.map +1 -1
- package/dist/commands/Command.js +1 -2
- package/dist/commands/ConfigCommand.d.ts +28 -25
- package/dist/commands/ConfigCommand.d.ts.map +1 -1
- package/dist/commands/ConfigCommand.js +165 -186
- package/dist/commands/ConfigCommand.js.map +1 -1
- package/dist/commands/InitCommand.d.ts +19 -16
- package/dist/commands/InitCommand.d.ts.map +1 -1
- package/dist/commands/InitCommand.js +65 -60
- package/dist/commands/InitCommand.js.map +1 -1
- package/dist/commands/InstallCommand.d.ts +16 -13
- package/dist/commands/InstallCommand.d.ts.map +1 -1
- package/dist/commands/InstallCommand.js +118 -110
- package/dist/commands/InstallCommand.js.map +1 -1
- package/dist/commands/ListCommand.d.ts +13 -10
- package/dist/commands/ListCommand.d.ts.map +1 -1
- package/dist/commands/ListCommand.js +76 -81
- package/dist/commands/ListCommand.js.map +1 -1
- package/dist/commands/LoginCommand.d.ts +17 -14
- package/dist/commands/LoginCommand.d.ts.map +1 -1
- package/dist/commands/LoginCommand.js +66 -72
- package/dist/commands/LoginCommand.js.map +1 -1
- package/dist/commands/LogoutCommand.d.ts +15 -12
- package/dist/commands/LogoutCommand.d.ts.map +1 -1
- package/dist/commands/LogoutCommand.js +36 -37
- package/dist/commands/LogoutCommand.js.map +1 -1
- package/dist/commands/OutdatedCommand.d.ts +12 -9
- package/dist/commands/OutdatedCommand.d.ts.map +1 -1
- package/dist/commands/OutdatedCommand.js +41 -40
- package/dist/commands/OutdatedCommand.js.map +1 -1
- package/dist/commands/PackCommand.d.ts +13 -10
- package/dist/commands/PackCommand.d.ts.map +1 -1
- package/dist/commands/PackCommand.js +26 -21
- package/dist/commands/PackCommand.js.map +1 -1
- package/dist/commands/PackageLifecycleCommand.d.ts +23 -19
- package/dist/commands/PackageLifecycleCommand.d.ts.map +1 -1
- package/dist/commands/PackageLifecycleCommand.js +144 -138
- package/dist/commands/PackageLifecycleCommand.js.map +1 -1
- package/dist/commands/PostinstallCandidateBuilder.d.ts +11 -8
- package/dist/commands/PostinstallCandidateBuilder.d.ts.map +1 -1
- package/dist/commands/PostinstallCandidateBuilder.js +42 -42
- package/dist/commands/PostinstallCandidateBuilder.js.map +1 -1
- package/dist/commands/ProjectGetNameCommand.d.ts +10 -7
- package/dist/commands/ProjectGetNameCommand.d.ts.map +1 -1
- package/dist/commands/ProjectGetNameCommand.js +25 -25
- package/dist/commands/ProjectGetNameCommand.js.map +1 -1
- package/dist/commands/PublishCommand.d.ts +29 -23
- package/dist/commands/PublishCommand.d.ts.map +1 -1
- package/dist/commands/PublishCommand.js +243 -254
- package/dist/commands/PublishCommand.js.map +1 -1
- package/dist/commands/RegistryCommand.d.ts +38 -35
- package/dist/commands/RegistryCommand.d.ts.map +1 -1
- package/dist/commands/RegistryCommand.js +195 -223
- package/dist/commands/RegistryCommand.js.map +1 -1
- package/dist/commands/RemoveCommand.d.ts +14 -11
- package/dist/commands/RemoveCommand.d.ts.map +1 -1
- package/dist/commands/RemoveCommand.js +47 -54
- package/dist/commands/RemoveCommand.js.map +1 -1
- package/dist/commands/RequestsCommand.d.ts +21 -18
- package/dist/commands/RequestsCommand.d.ts.map +1 -1
- package/dist/commands/RequestsCommand.js +82 -95
- package/dist/commands/RequestsCommand.js.map +1 -1
- package/dist/commands/UpdateCommand.d.ts +29 -26
- package/dist/commands/UpdateCommand.d.ts.map +1 -1
- package/dist/commands/UpdateCommand.js +111 -111
- package/dist/commands/UpdateCommand.js.map +1 -1
- package/dist/commands/WhoamiCommand.d.ts +30 -27
- package/dist/commands/WhoamiCommand.d.ts.map +1 -1
- package/dist/commands/WhoamiCommand.js +63 -72
- package/dist/commands/WhoamiCommand.js.map +1 -1
- package/dist/commands/WhyCommand.d.ts +13 -10
- package/dist/commands/WhyCommand.d.ts.map +1 -1
- package/dist/commands/WhyCommand.js +45 -44
- package/dist/commands/WhyCommand.js.map +1 -1
- package/dist/commands/add/DependencyAddResolver.d.ts +14 -11
- package/dist/commands/add/DependencyAddResolver.d.ts.map +1 -1
- package/dist/commands/add/DependencyAddResolver.js +36 -36
- package/dist/commands/add/DependencyAddResolver.js.map +1 -1
- package/dist/control-plane/AccountManager.d.ts +96 -94
- package/dist/control-plane/AccountManager.d.ts.map +1 -1
- package/dist/control-plane/AccountManager.js +775 -967
- package/dist/control-plane/AccountManager.js.map +1 -1
- package/dist/control-plane/ArtifactObserver.d.ts +19 -16
- package/dist/control-plane/ArtifactObserver.d.ts.map +1 -1
- package/dist/control-plane/ArtifactObserver.js +73 -59
- package/dist/control-plane/ArtifactObserver.js.map +1 -1
- package/dist/control-plane/AuthMetadataStore.d.ts +16 -13
- package/dist/control-plane/AuthMetadataStore.d.ts.map +1 -1
- package/dist/control-plane/AuthMetadataStore.js +111 -113
- package/dist/control-plane/AuthMetadataStore.js.map +1 -1
- package/dist/control-plane/AuthStoragePaths.d.ts +7 -4
- package/dist/control-plane/AuthStoragePaths.d.ts.map +1 -1
- package/dist/control-plane/AuthStoragePaths.js +19 -14
- package/dist/control-plane/AuthStoragePaths.js.map +1 -1
- package/dist/control-plane/AuthenticationSelector.d.ts +21 -18
- package/dist/control-plane/AuthenticationSelector.d.ts.map +1 -1
- package/dist/control-plane/AuthenticationSelector.js +69 -63
- package/dist/control-plane/AuthenticationSelector.js.map +1 -1
- package/dist/control-plane/ControlPlaneClient.d.ts +37 -28
- package/dist/control-plane/ControlPlaneClient.d.ts.map +1 -1
- package/dist/control-plane/ControlPlaneClient.js +265 -254
- package/dist/control-plane/ControlPlaneClient.js.map +1 -1
- package/dist/control-plane/ControlPlaneEndpoints.d.ts +9 -6
- package/dist/control-plane/ControlPlaneEndpoints.d.ts.map +1 -1
- package/dist/control-plane/ControlPlaneEndpoints.js +17 -12
- package/dist/control-plane/ControlPlaneEndpoints.js.map +1 -1
- package/dist/control-plane/ControlPlaneTypes.d.ts +176 -152
- package/dist/control-plane/ControlPlaneTypes.d.ts.map +1 -1
- package/dist/control-plane/ControlPlaneTypes.js +88 -81
- package/dist/control-plane/ControlPlaneTypes.js.map +1 -1
- package/dist/control-plane/CredentialStore.d.ts +20 -18
- package/dist/control-plane/CredentialStore.d.ts.map +1 -1
- package/dist/control-plane/CredentialStore.js +66 -83
- package/dist/control-plane/CredentialStore.js.map +1 -1
- package/dist/control-plane/DPoPKeyStore.d.ts +12 -9
- package/dist/control-plane/DPoPKeyStore.d.ts.map +1 -1
- package/dist/control-plane/DPoPKeyStore.js +57 -53
- package/dist/control-plane/DPoPKeyStore.js.map +1 -1
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts +37 -4
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts.map +1 -1
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.js +197 -63
- package/dist/control-plane/GitHubActionsOidcCredentialProvider.js.map +1 -1
- package/dist/control-plane/PublishIdempotencyStore.d.ts +25 -9
- package/dist/control-plane/PublishIdempotencyStore.d.ts.map +1 -1
- package/dist/control-plane/PublishIdempotencyStore.js +97 -68
- package/dist/control-plane/PublishIdempotencyStore.js.map +1 -1
- package/dist/control-plane/PublishRequestErrorMapper.d.ts +155 -0
- package/dist/control-plane/PublishRequestErrorMapper.d.ts.map +1 -0
- package/dist/control-plane/PublishRequestErrorMapper.js +597 -0
- package/dist/control-plane/PublishRequestErrorMapper.js.map +1 -0
- package/dist/control-plane/RegistryGrantLock.d.ts +29 -26
- package/dist/control-plane/RegistryGrantLock.d.ts.map +1 -1
- package/dist/control-plane/RegistryGrantLock.js +149 -185
- package/dist/control-plane/RegistryGrantLock.js.map +1 -1
- package/dist/control-plane/RegistryTrustResolver.d.ts +13 -10
- package/dist/control-plane/RegistryTrustResolver.d.ts.map +1 -1
- package/dist/control-plane/RegistryTrustResolver.js +97 -132
- package/dist/control-plane/RegistryTrustResolver.js.map +1 -1
- package/dist/index.d.ts +62 -39
- package/dist/index.js +60 -53
- package/dist/postinstall/api/PostinstallDsl.d.ts +24 -21
- package/dist/postinstall/api/PostinstallDsl.d.ts.map +1 -1
- package/dist/postinstall/api/PostinstallDsl.js +32 -35
- package/dist/postinstall/api/PostinstallDsl.js.map +1 -1
- package/dist/postinstall/api/definePostinstall.d.ts +5 -2
- package/dist/postinstall/api/definePostinstall.d.ts.map +1 -1
- package/dist/postinstall/api/definePostinstall.js +20 -16
- package/dist/postinstall/api/definePostinstall.js.map +1 -1
- package/dist/postinstall/index.d.ts +25 -26
- package/dist/postinstall/index.js +25 -37
- package/dist/postinstall/loader/EntryResolver.d.ts +11 -9
- package/dist/postinstall/loader/EntryResolver.d.ts.map +1 -1
- package/dist/postinstall/loader/EntryResolver.js +36 -32
- package/dist/postinstall/loader/EntryResolver.js.map +1 -1
- package/dist/postinstall/loader/EsbuildTranspiler.d.ts +6 -3
- package/dist/postinstall/loader/EsbuildTranspiler.d.ts.map +1 -1
- package/dist/postinstall/loader/EsbuildTranspiler.js +52 -56
- package/dist/postinstall/loader/EsbuildTranspiler.js.map +1 -1
- package/dist/postinstall/loader/ExportValidator.d.ts +8 -5
- package/dist/postinstall/loader/ExportValidator.d.ts.map +1 -1
- package/dist/postinstall/loader/ExportValidator.js +36 -32
- package/dist/postinstall/loader/ExportValidator.js.map +1 -1
- package/dist/postinstall/loader/ModuleImporter.d.ts +17 -14
- package/dist/postinstall/loader/ModuleImporter.d.ts.map +1 -1
- package/dist/postinstall/loader/ModuleImporter.js +50 -58
- package/dist/postinstall/loader/ModuleImporter.js.map +1 -1
- package/dist/postinstall/loader/PostinstallLoader.d.ts +22 -19
- package/dist/postinstall/loader/PostinstallLoader.d.ts.map +1 -1
- package/dist/postinstall/loader/PostinstallLoader.js +62 -58
- package/dist/postinstall/loader/PostinstallLoader.js.map +1 -1
- package/dist/postinstall/markers/MarkerBlockEditor.d.ts +19 -16
- package/dist/postinstall/markers/MarkerBlockEditor.d.ts.map +1 -1
- package/dist/postinstall/markers/MarkerBlockEditor.js +48 -44
- package/dist/postinstall/markers/MarkerBlockEditor.js.map +1 -1
- package/dist/postinstall/markers/MarkerBlockService.d.ts +10 -7
- package/dist/postinstall/markers/MarkerBlockService.d.ts.map +1 -1
- package/dist/postinstall/markers/MarkerBlockService.js +44 -44
- package/dist/postinstall/markers/MarkerBlockService.js.map +1 -1
- package/dist/postinstall/markers/MarkerIntegrityValidator.d.ts +12 -9
- package/dist/postinstall/markers/MarkerIntegrityValidator.d.ts.map +1 -1
- package/dist/postinstall/markers/MarkerIntegrityValidator.js +47 -52
- package/dist/postinstall/markers/MarkerIntegrityValidator.js.map +1 -1
- package/dist/postinstall/policy/PostinstallPolicyGate.d.ts +25 -23
- package/dist/postinstall/policy/PostinstallPolicyGate.d.ts.map +1 -1
- package/dist/postinstall/policy/PostinstallPolicyGate.js +63 -52
- package/dist/postinstall/policy/PostinstallPolicyGate.js.map +1 -1
- package/dist/postinstall/runner/PostinstallOrchestrator.d.ts +48 -45
- package/dist/postinstall/runner/PostinstallOrchestrator.d.ts.map +1 -1
- package/dist/postinstall/runner/PostinstallOrchestrator.js +172 -170
- package/dist/postinstall/runner/PostinstallOrchestrator.js.map +1 -1
- package/dist/postinstall/unreal/BuildCsInjector.d.ts +16 -13
- package/dist/postinstall/unreal/BuildCsInjector.d.ts.map +1 -1
- package/dist/postinstall/unreal/BuildCsInjector.js +58 -53
- package/dist/postinstall/unreal/BuildCsInjector.js.map +1 -1
- package/dist/postinstall/unreal/CSharpInjectionEngine.d.ts +13 -10
- package/dist/postinstall/unreal/CSharpInjectionEngine.d.ts.map +1 -1
- package/dist/postinstall/unreal/CSharpInjectionEngine.js +56 -59
- package/dist/postinstall/unreal/CSharpInjectionEngine.js.map +1 -1
- package/dist/postinstall/unreal/CSharpStructureAnalyzer.d.ts +11 -8
- package/dist/postinstall/unreal/CSharpStructureAnalyzer.d.ts.map +1 -1
- package/dist/postinstall/unreal/CSharpStructureAnalyzer.js +123 -127
- package/dist/postinstall/unreal/CSharpStructureAnalyzer.js.map +1 -1
- package/dist/postinstall/unreal/CSharpStructures.d.ts +18 -15
- package/dist/postinstall/unreal/CSharpStructures.d.ts.map +1 -1
- package/dist/postinstall/unreal/CSharpStructures.js +1 -2
- package/dist/postinstall/unreal/CSharpWrapperFactory.d.ts +7 -4
- package/dist/postinstall/unreal/CSharpWrapperFactory.d.ts.map +1 -1
- package/dist/postinstall/unreal/CSharpWrapperFactory.js +54 -58
- package/dist/postinstall/unreal/CSharpWrapperFactory.js.map +1 -1
- package/dist/postinstall/unreal/PluginHash.d.ts +5 -2
- package/dist/postinstall/unreal/PluginHash.d.ts.map +1 -1
- package/dist/postinstall/unreal/PluginHash.js +13 -8
- package/dist/postinstall/unreal/PluginHash.js.map +1 -1
- package/dist/postinstall/unreal/PrettyParseError.d.ts +8 -5
- package/dist/postinstall/unreal/PrettyParseError.d.ts.map +1 -1
- package/dist/postinstall/unreal/PrettyParseError.js +37 -37
- package/dist/postinstall/unreal/PrettyParseError.js.map +1 -1
- package/dist/postinstall/unreal/ProjectFileLocator.d.ts +12 -9
- package/dist/postinstall/unreal/ProjectFileLocator.d.ts.map +1 -1
- package/dist/postinstall/unreal/ProjectFileLocator.js +49 -51
- package/dist/postinstall/unreal/ProjectFileLocator.js.map +1 -1
- package/dist/postinstall/unreal/TargetCsInjector.d.ts +16 -13
- package/dist/postinstall/unreal/TargetCsInjector.d.ts.map +1 -1
- package/dist/postinstall/unreal/TargetCsInjector.js +58 -53
- package/dist/postinstall/unreal/TargetCsInjector.js.map +1 -1
- package/dist/postinstall/unreal/UProjectInjector.d.ts +6 -3
- package/dist/postinstall/unreal/UProjectInjector.d.ts.map +1 -1
- package/dist/postinstall/unreal/UProjectInjector.js +56 -52
- package/dist/postinstall/unreal/UProjectInjector.js.map +1 -1
- package/dist/postinstall/unreal/UProjectMetadataReader.d.ts +5 -2
- package/dist/postinstall/unreal/UProjectMetadataReader.d.ts.map +1 -1
- package/dist/postinstall/unreal/UProjectMetadataReader.js +22 -18
- package/dist/postinstall/unreal/UProjectMetadataReader.js.map +1 -1
- package/dist/postinstall/unreal/UnrealSourceCatalog.d.ts +17 -14
- package/dist/postinstall/unreal/UnrealSourceCatalog.d.ts.map +1 -1
- package/dist/postinstall/unreal/UnrealSourceCatalog.js +50 -50
- package/dist/postinstall/unreal/UnrealSourceCatalog.js.map +1 -1
- package/dist/prompts/InkPromptService.d.ts +10 -7
- package/dist/prompts/InkPromptService.d.ts.map +1 -1
- package/dist/prompts/InkPromptService.js +100 -71
- package/dist/prompts/InkPromptService.js.map +1 -1
- package/dist/prompts/ProjectContextDetector.d.ts +10 -7
- package/dist/prompts/ProjectContextDetector.d.ts.map +1 -1
- package/dist/prompts/ProjectContextDetector.js +32 -26
- package/dist/prompts/ProjectContextDetector.js.map +1 -1
- package/dist/prompts/PromptService.d.ts +11 -8
- package/dist/prompts/PromptService.d.ts.map +1 -1
- package/dist/prompts/PromptService.js +1 -8
- package/dist/reporting/DiagnosticDeduplicator.d.ts +8 -5
- package/dist/reporting/DiagnosticDeduplicator.d.ts.map +1 -1
- package/dist/reporting/DiagnosticDeduplicator.js +36 -35
- package/dist/reporting/DiagnosticDeduplicator.js.map +1 -1
- package/dist/reporting/DiagnosticRenderer.d.ts +11 -8
- package/dist/reporting/DiagnosticRenderer.d.ts.map +1 -1
- package/dist/reporting/DiagnosticRenderer.js +1 -2
- package/dist/reporting/DiagnosticReporter.d.ts +12 -9
- package/dist/reporting/DiagnosticReporter.d.ts.map +1 -1
- package/dist/reporting/DiagnosticReporter.js +40 -39
- package/dist/reporting/DiagnosticReporter.js.map +1 -1
- package/dist/reporting/InkDiagnosticRenderer.d.ts +12 -9
- package/dist/reporting/InkDiagnosticRenderer.d.ts.map +1 -1
- package/dist/reporting/InkDiagnosticRenderer.js +50 -42
- package/dist/reporting/InkDiagnosticRenderer.js.map +1 -1
- package/dist/reporting/InstallProgressReporter.d.ts +23 -20
- package/dist/reporting/InstallProgressReporter.d.ts.map +1 -1
- package/dist/reporting/InstallProgressReporter.js +48 -47
- package/dist/reporting/InstallProgressReporter.js.map +1 -1
- package/dist/reporting/JsonReporter.d.ts +16 -13
- package/dist/reporting/JsonReporter.d.ts.map +1 -1
- package/dist/reporting/JsonReporter.js +34 -20
- package/dist/reporting/JsonReporter.js.map +1 -1
- package/dist/reporting/RegistryRequestTerminalFormatter.d.ts +36 -0
- package/dist/reporting/RegistryRequestTerminalFormatter.d.ts.map +1 -0
- package/dist/reporting/RegistryRequestTerminalFormatter.js +90 -0
- package/dist/reporting/RegistryRequestTerminalFormatter.js.map +1 -0
- package/dist/reporting/TextDiagnosticRenderer.d.ts +11 -8
- package/dist/reporting/TextDiagnosticRenderer.d.ts.map +1 -1
- package/dist/reporting/TextDiagnosticRenderer.js +36 -28
- package/dist/reporting/TextDiagnosticRenderer.js.map +1 -1
- package/dist/reporting/TextSink.d.ts +14 -11
- package/dist/reporting/TextSink.d.ts.map +1 -1
- package/dist/reporting/TextSink.js +24 -20
- package/dist/reporting/TextSink.js.map +1 -1
- package/package.json +31 -32
- package/dist/cli/parsing/contracts/UAPKGCommandModule.js.map +0 -1
- package/dist/cli-bootstrap.d.ts.map +0 -1
- package/dist/commands/Command.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/postinstall/index.d.ts.map +0 -1
- package/dist/postinstall/index.js.map +0 -1
- package/dist/postinstall/unreal/CSharpStructures.js.map +0 -1
- package/dist/prompts/PromptService.js.map +0 -1
- package/dist/reporting/DiagnosticRenderer.js.map +0 -1
|
@@ -1,270 +1,259 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
1
|
+
import { ControlPlaneError } from "../control-plane/ControlPlaneTypes.js";
|
|
2
|
+
import { ControlPlaneClient } from "../control-plane/ControlPlaneClient.js";
|
|
3
|
+
import { describeControlPlaneError } from "../control-plane/AccountManager.js";
|
|
4
|
+
import { AuthenticationSelector } from "../control-plane/AuthenticationSelector.js";
|
|
5
|
+
import { PublishIdempotencyStore, createGitHubActionsPublishIdempotencyKey } from "../control-plane/PublishIdempotencyStore.js";
|
|
6
|
+
import { InkPromptService } from "../prompts/InkPromptService.js";
|
|
7
|
+
import { formatRegistryRequestTerminal, isRegistryRequestSuccessStatus, isRegistryRequestTerminalStatus } from "../reporting/RegistryRequestTerminalFormatter.js";
|
|
8
|
+
import { ArtifactObserver } from "../control-plane/ArtifactObserver.js";
|
|
9
|
+
import { publishRequestDiagnosticForError } from "../control-plane/PublishRequestErrorMapper.js";
|
|
10
|
+
import { isAbsolute, join } from "node:path";
|
|
11
|
+
import { execFile } from "node:child_process";
|
|
12
|
+
import { existsSync } from "node:fs";
|
|
13
|
+
import { randomUUID } from "node:crypto";
|
|
14
|
+
import { readFile } from "node:fs/promises";
|
|
15
|
+
import { readPackageClaimsFromArchive } from "@uapkg/package-claims";
|
|
16
|
+
import { promisify } from "node:util";
|
|
17
|
+
import { getRegistryRepoPath } from "@uapkg/registry-core";
|
|
18
|
+
import { RegistryMetaSchema } from "@uapkg/registry-schema";
|
|
19
|
+
|
|
20
|
+
//#region src/commands/PublishCommand.ts
|
|
16
21
|
const execFileAsync = promisify(execFile);
|
|
17
|
-
const
|
|
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;
|
|
22
|
+
const PUBLISH_WATCH_TIMEOUT_MS = 18e5;
|
|
25
23
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
24
|
+
* Artifact-first publish (PS-REQ-002): the CLI observes the exact release
|
|
25
|
+
* artifact (download or `--asset-path`), reads packaged claims from it, and
|
|
26
|
+
* submits the route-derived publish operation. The packaged archive — never
|
|
27
|
+
* the working tree — is what gets published.
|
|
28
|
+
*/
|
|
29
|
+
var PublishCommand = class {
|
|
30
|
+
root;
|
|
31
|
+
options;
|
|
32
|
+
constructor(root, options) {
|
|
33
|
+
this.root = root;
|
|
34
|
+
this.options = options;
|
|
35
|
+
}
|
|
36
|
+
async execute() {
|
|
37
|
+
try {
|
|
38
|
+
const manifestResult = await this.root.packageManifest.readManifest();
|
|
39
|
+
if (!manifestResult.ok) throw new Error(manifestResult.diagnostics[0]?.message ?? "Unable to read uapkg.json.");
|
|
40
|
+
const manifest = manifestResult.value;
|
|
41
|
+
const registryAlias = this.options.registry ?? manifest.publish?.registry;
|
|
42
|
+
const trust = await this.root.registryTrustResolver.resolve(registryAlias);
|
|
43
|
+
const source = await this.resolveSource(manifest.version, manifest.publish);
|
|
44
|
+
const observer = new ArtifactObserver();
|
|
45
|
+
const artifact = this.options.assetPath ? await observer.observeLocalArchive(resolveAssetPath(this.root.cwd, this.options.assetPath)) : await observer.downloadReleaseAsset(source.repository, source.releaseTag, source.assetName);
|
|
46
|
+
try {
|
|
47
|
+
const claimsResult = await readPackageClaimsFromArchive(artifact.archivePath);
|
|
48
|
+
if (!claimsResult.ok) throw new Error(claimsResult.diagnostics[0]?.message ?? "Unable to read the packaged uapkg.json from the artifact.");
|
|
49
|
+
const claims = claimsResult.value;
|
|
50
|
+
if (this.options.outputFormat === "text" && (claims.name !== manifest.name || claims.version !== manifest.version)) process.stderr.write(`Publishing ${claims.name}@${claims.version} from the packaged artifact (local manifest says ${manifest.name}@${manifest.version}).\n`);
|
|
51
|
+
if (await readTrustedRegistryType(trust.cacheShortId) === "public" && claims.private) throw new Error(`"${claims.name}" is marked private in its packaged manifest; a public UAPKG registry does not accept private packages.`);
|
|
52
|
+
const scopedOwner = scopedOwnerName(claims.name);
|
|
53
|
+
const configuredOwner = normalizeOwner(this.options.owner ?? manifest.publish?.owner);
|
|
54
|
+
if (scopedOwner && configuredOwner && configuredOwner.toLowerCase() !== scopedOwner.toLowerCase()) throw new Error(`Package "${claims.name}" belongs to the "${scopedOwner}" namespace; --owner cannot select "${configuredOwner}".`);
|
|
55
|
+
const owner = scopedOwner ?? configuredOwner;
|
|
56
|
+
const selector = new AuthenticationSelector(this.root.accountManager, new InkPromptService());
|
|
57
|
+
const oidcTarget = {
|
|
58
|
+
registryId: trust.registryId,
|
|
59
|
+
packageName: claims.name
|
|
60
|
+
};
|
|
61
|
+
const requestedScopes = this.options.detach ? ["publishing.request.create"] : ["publishing.request.create", "publishing.request.read.self"];
|
|
62
|
+
let authentication = await selector.select(this.options.auth, trust, requestedScopes, true, oidcTarget);
|
|
63
|
+
let requestOtp = authentication.otp;
|
|
64
|
+
authentication = {
|
|
65
|
+
kind: authentication.kind,
|
|
66
|
+
credential: authentication.credential
|
|
67
|
+
};
|
|
68
|
+
const submission = {
|
|
69
|
+
registryId: trust.registryId,
|
|
70
|
+
...owner ? { ownerOrganizationName: owner } : {},
|
|
71
|
+
payload: {
|
|
72
|
+
packageName: claims.name,
|
|
73
|
+
packageVersion: claims.version,
|
|
74
|
+
source,
|
|
75
|
+
observedIntegrity: {
|
|
76
|
+
sha256: artifact.sha256,
|
|
77
|
+
sizeBytes: artifact.sizeBytes
|
|
78
|
+
},
|
|
79
|
+
claims
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const idempotencyStore = new PublishIdempotencyStore();
|
|
83
|
+
const submissionDigest = PublishIdempotencyStore.submissionDigest("publish", submission);
|
|
84
|
+
const usesActionsIdempotency = authentication.kind === "oidc";
|
|
85
|
+
const idempotencyKey = usesActionsIdempotency ? createGitHubActionsPublishIdempotencyKey({
|
|
86
|
+
registryId: trust.registryId,
|
|
87
|
+
packageName: claims.name,
|
|
88
|
+
packageVersion: claims.version,
|
|
89
|
+
artifactSha256: artifact.sha256
|
|
90
|
+
}) : idempotencyStore.getOrCreate(submissionDigest, () => randomUUID());
|
|
91
|
+
const client = new ControlPlaneClient(trust.apiBaseUrl);
|
|
92
|
+
let created;
|
|
93
|
+
try {
|
|
94
|
+
created = await client.submitRegistryRequest(authentication.credential, "publish", submission, {
|
|
95
|
+
idempotencyKey,
|
|
96
|
+
otp: requestOtp
|
|
97
|
+
});
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (this.options.outputFormat === "json") throw error;
|
|
100
|
+
this.root.diagnostics.reportOne(publishRequestDiagnosticForError(error, {
|
|
101
|
+
packageName: claims.name,
|
|
102
|
+
packageVersion: claims.version,
|
|
103
|
+
registryAlias: trust.alias,
|
|
104
|
+
registryName: trust.registryName,
|
|
105
|
+
registryIssuer: trust.issuer,
|
|
106
|
+
credentialKind: authentication.kind,
|
|
107
|
+
...owner ? { requestedOwner: owner } : {},
|
|
108
|
+
repository: source.repository
|
|
109
|
+
}));
|
|
110
|
+
return 1;
|
|
111
|
+
} finally {
|
|
112
|
+
requestOtp = void 0;
|
|
113
|
+
}
|
|
114
|
+
if (this.options.detach) {
|
|
115
|
+
this.printCreated(created.requestId, created.status, trust.alias);
|
|
116
|
+
return 0;
|
|
117
|
+
}
|
|
118
|
+
const readRequest = async () => {
|
|
119
|
+
try {
|
|
120
|
+
return await client.getRegistryRequestDetail(authentication.credential, created.requestId);
|
|
121
|
+
} catch (error) {
|
|
122
|
+
if (!(error instanceof ControlPlaneError) || error.status !== 401) throw error;
|
|
123
|
+
if (authentication.kind === "gat") throw error;
|
|
124
|
+
if (authentication.kind === "login") this.root.accountManager.invalidateAccessCredentials(trust);
|
|
125
|
+
authentication = await selector.select(authentication.kind, trust, ["publishing.request.read.self"], false, oidcTarget);
|
|
126
|
+
return client.getRegistryRequestDetail(authentication.credential, created.requestId);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
let detail = await readRequest();
|
|
130
|
+
let previousStatus = "";
|
|
131
|
+
const deadline = Date.now() + PUBLISH_WATCH_TIMEOUT_MS;
|
|
132
|
+
while (!isRegistryRequestTerminalStatus(detail.request.status)) {
|
|
133
|
+
if (Date.now() >= deadline) throw new Error(`Timed out waiting for publishing request ${detail.request.id}. Check it with \`uapkg requests status ${detail.request.id}\`.`);
|
|
134
|
+
if (this.options.outputFormat === "text" && detail.request.status !== previousStatus) {
|
|
135
|
+
process.stdout.write(`${detail.request.id}: ${detail.request.status}${detail.request.currentStep ? ` (${detail.request.currentStep})` : ""}\n`);
|
|
136
|
+
previousStatus = detail.request.status;
|
|
137
|
+
}
|
|
138
|
+
await delay(2e3);
|
|
139
|
+
detail = await readRequest();
|
|
140
|
+
}
|
|
141
|
+
if (!usesActionsIdempotency) idempotencyStore.clear(submissionDigest);
|
|
142
|
+
if (isRegistryRequestSuccessStatus(detail.request.status)) {
|
|
143
|
+
let refreshWarning;
|
|
144
|
+
try {
|
|
145
|
+
await this.root.registryTrustResolver.forceRefresh(trust);
|
|
146
|
+
} catch (error) {
|
|
147
|
+
refreshWarning = error instanceof Error ? error.message : String(error);
|
|
148
|
+
}
|
|
149
|
+
this.printTerminal(detail, trust.alias, refreshWarning);
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
this.printTerminal(detail, trust.alias);
|
|
153
|
+
return 1;
|
|
154
|
+
} finally {
|
|
155
|
+
await artifact.cleanup();
|
|
156
|
+
}
|
|
157
|
+
} catch (error) {
|
|
158
|
+
process.stderr.write(`${describeControlPlaneError(error)}\n`);
|
|
159
|
+
return 1;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async resolveSource(packageVersion, manifestPublish) {
|
|
163
|
+
const repository = normalizeGitHubRepository(this.options.repository ?? manifestPublish?.repository ?? await this.gitOrigin());
|
|
164
|
+
const releaseTag = (this.options.tag ?? `v${packageVersion}`).trim();
|
|
165
|
+
const assetName = (this.options.asset ?? manifestPublish?.asset ?? "package.tgz").trim();
|
|
166
|
+
if (!releaseTag) throw new Error("The GitHub Release tag cannot be empty.");
|
|
167
|
+
if (!assetName || assetName.includes("/") || assetName.includes("\\")) throw new Error("The GitHub Release asset must be a file name, not a path.");
|
|
168
|
+
return {
|
|
169
|
+
type: "github_release",
|
|
170
|
+
repository,
|
|
171
|
+
releaseTag,
|
|
172
|
+
assetName
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
async gitOrigin() {
|
|
176
|
+
const git = this.root.config.get("git") ?? "git";
|
|
177
|
+
try {
|
|
178
|
+
const { stdout } = await execFileAsync(git, [
|
|
179
|
+
"remote",
|
|
180
|
+
"get-url",
|
|
181
|
+
"origin"
|
|
182
|
+
], {
|
|
183
|
+
cwd: this.root.cwd,
|
|
184
|
+
timeout: 1e4
|
|
185
|
+
});
|
|
186
|
+
return stdout.trim();
|
|
187
|
+
} catch (error) {
|
|
188
|
+
throw new Error("Unable to derive the GitHub repository from remote \"origin\". Use --repository.", { cause: error });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
printCreated(requestId, status, registryAlias) {
|
|
192
|
+
if (this.options.outputFormat === "json") {
|
|
193
|
+
process.stdout.write(`${JSON.stringify({
|
|
194
|
+
ok: true,
|
|
195
|
+
registry: registryAlias,
|
|
196
|
+
requestId,
|
|
197
|
+
status
|
|
198
|
+
})}\n`);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
process.stdout.write(`Publishing request ${requestId} submitted to "${registryAlias}" (${status}).\n`);
|
|
202
|
+
}
|
|
203
|
+
printTerminal(detail, registryAlias, refreshWarning) {
|
|
204
|
+
const output = formatRegistryRequestTerminal({
|
|
205
|
+
detail,
|
|
206
|
+
registryAlias,
|
|
207
|
+
outputFormat: this.options.outputFormat,
|
|
208
|
+
presentation: { kind: "publish" },
|
|
209
|
+
...refreshWarning ? { registryRefreshWarning: refreshWarning } : {}
|
|
210
|
+
});
|
|
211
|
+
process.stdout.write(output.stdout);
|
|
212
|
+
if (output.stderr) process.stderr.write(output.stderr);
|
|
213
|
+
}
|
|
214
|
+
};
|
|
218
215
|
/** Reads the installer-trusted registry type from the projected registry snapshot. */
|
|
219
216
|
async function readTrustedRegistryType(cacheShortId) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
return undefined;
|
|
231
|
-
}
|
|
217
|
+
const metaPath = join(getRegistryRepoPath(cacheShortId), ".uapkg", "registry.meta.json");
|
|
218
|
+
if (!existsSync(metaPath)) throw new Error("Trusted registry metadata is missing; registry policy cannot be determined.");
|
|
219
|
+
try {
|
|
220
|
+
const raw = await readFile(metaPath, "utf8");
|
|
221
|
+
const parsed = RegistryMetaSchema.safeParse(JSON.parse(raw));
|
|
222
|
+
if (!parsed.success) throw new Error("metadata does not match a supported registry schema");
|
|
223
|
+
return parsed.data.registry.registryType;
|
|
224
|
+
} catch (error) {
|
|
225
|
+
throw new Error("Trusted registry metadata is invalid or uses an unsupported schema version.", { cause: error });
|
|
226
|
+
}
|
|
232
227
|
}
|
|
233
228
|
function resolveAssetPath(cwd, assetPath) {
|
|
234
|
-
|
|
229
|
+
return isAbsolute(assetPath) ? assetPath : join(cwd, assetPath);
|
|
235
230
|
}
|
|
236
231
|
function normalizeGitHubRepository(input) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
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();
|
|
232
|
+
let value = input.trim();
|
|
233
|
+
const scp = value.match(/^git@github\.com:([^/]+)\/(.+)$/i);
|
|
234
|
+
if (scp) value = `${scp[1]}/${scp[2]}`;
|
|
235
|
+
if (value.includes("://")) {
|
|
236
|
+
const url = new URL(value);
|
|
237
|
+
if (url.hostname.toLowerCase() !== "github.com") throw new Error("Publishing sources must be hosted on github.com in UAPKG v1.");
|
|
238
|
+
value = url.pathname.replace(/^\/+/, "");
|
|
239
|
+
}
|
|
240
|
+
value = value.replace(/\.git$/i, "").replace(/\/+$/, "");
|
|
241
|
+
if (!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(value)) throw new Error("Expected a GitHub repository in owner/repository form.");
|
|
242
|
+
return value.toLowerCase();
|
|
253
243
|
}
|
|
254
244
|
function scopedOwnerName(packageName) {
|
|
255
|
-
|
|
256
|
-
return match?.[1]?.toLowerCase();
|
|
245
|
+
return packageName.match(/^@([^/]+)\/[^/]+$/)?.[1]?.toLowerCase();
|
|
257
246
|
}
|
|
258
247
|
function normalizeOwner(value) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
throw new Error('The publish owner must be a valid UAPKG organization name.');
|
|
264
|
-
}
|
|
265
|
-
return owner;
|
|
248
|
+
if (value === void 0) return void 0;
|
|
249
|
+
const owner = value.trim().toLowerCase();
|
|
250
|
+
if (!/^[a-z0-9][a-z0-9-_]*$/.test(owner)) throw new Error("The publish owner must be a valid UAPKG organization name.");
|
|
251
|
+
return owner;
|
|
266
252
|
}
|
|
267
253
|
function delay(milliseconds) {
|
|
268
|
-
|
|
254
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
269
255
|
}
|
|
256
|
+
|
|
257
|
+
//#endregion
|
|
258
|
+
export { PublishCommand, readTrustedRegistryType };
|
|
270
259
|
//# sourceMappingURL=PublishCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishCommand.js","sourceRoot":"","sources":["../../src/commands/PublishCommand.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PublishCommand.js","names":[],"sources":["../../src/commands/PublishCommand.ts"],"sourcesContent":["import { execFile } from 'node:child_process';\nimport { randomUUID } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport { isAbsolute, join } from 'node:path';\nimport { promisify } from 'node:util';\nimport { readPackageClaimsFromArchive } from '@uapkg/package-claims';\nimport { getRegistryRepoPath } from '@uapkg/registry-core';\nimport { RegistryMetaSchema, type RegistryType } from '@uapkg/registry-schema';\nimport type { CompositionRoot } from '../app/CompositionRoot.js';\nimport type { UAPKGOutputFormat } from '../cli/UAPKGCommandLine.js';\nimport { describeControlPlaneError } from '../control-plane/AccountManager.js';\nimport { ArtifactObserver } from '../control-plane/ArtifactObserver.js';\nimport { AuthenticationSelector } from '../control-plane/AuthenticationSelector.js';\nimport { ControlPlaneClient } from '../control-plane/ControlPlaneClient.js';\nimport {\n type ControlPlaneAuthMode,\n ControlPlaneError,\n type RegistryRequestDetail,\n type RegistryRequestStatus,\n type RegistryRequestSubmission,\n} from '../control-plane/ControlPlaneTypes.js';\nimport {\n createGitHubActionsPublishIdempotencyKey,\n PublishIdempotencyStore,\n} from '../control-plane/PublishIdempotencyStore.js';\nimport { publishRequestDiagnosticForError } from '../control-plane/PublishRequestErrorMapper.js';\nimport { InkPromptService } from '../prompts/InkPromptService.js';\nimport {\n formatRegistryRequestTerminal,\n isRegistryRequestSuccessStatus,\n isRegistryRequestTerminalStatus,\n} from '../reporting/RegistryRequestTerminalFormatter.js';\nimport type { Command } from './Command.js';\n\nconst execFileAsync = promisify(execFile);\nconst PUBLISH_WATCH_TIMEOUT_MS = 30 * 60 * 1000;\n\nexport interface PublishCommandOptions {\n readonly registry?: string;\n readonly owner?: string;\n readonly repository?: string;\n readonly tag?: string;\n readonly asset?: string;\n readonly assetPath?: string;\n readonly auth: ControlPlaneAuthMode;\n readonly detach: boolean;\n readonly outputFormat: UAPKGOutputFormat;\n}\n\n/**\n * Artifact-first publish (PS-REQ-002): the CLI observes the exact release\n * artifact (download or `--asset-path`), reads packaged claims from it, and\n * submits the route-derived publish operation. The packaged archive — never\n * the working tree — is what gets published.\n */\nexport class PublishCommand implements Command {\n public constructor(\n private readonly root: CompositionRoot,\n private readonly options: PublishCommandOptions,\n ) {}\n\n public async execute(): Promise<number> {\n try {\n const manifestResult = await this.root.packageManifest.readManifest();\n if (!manifestResult.ok) {\n throw new Error(manifestResult.diagnostics[0]?.message ?? 'Unable to read uapkg.json.');\n }\n const manifest = manifestResult.value;\n\n const registryAlias = this.options.registry ?? manifest.publish?.registry;\n const trust = await this.root.registryTrustResolver.resolve(registryAlias);\n const source = await this.resolveSource(manifest.version, manifest.publish);\n\n const observer = new ArtifactObserver();\n const artifact = this.options.assetPath\n ? await observer.observeLocalArchive(resolveAssetPath(this.root.cwd, this.options.assetPath))\n : await observer.downloadReleaseAsset(source.repository, source.releaseTag, source.assetName);\n\n try {\n const claimsResult = await readPackageClaimsFromArchive(artifact.archivePath);\n if (!claimsResult.ok) {\n throw new Error(\n claimsResult.diagnostics[0]?.message ?? 'Unable to read the packaged uapkg.json from the artifact.',\n );\n }\n const claims = claimsResult.value;\n if (\n this.options.outputFormat === 'text' &&\n (claims.name !== manifest.name || claims.version !== manifest.version)\n ) {\n process.stderr.write(\n `Publishing ${claims.name}@${claims.version} from the packaged artifact (local manifest says ${manifest.name}@${manifest.version}).\\n`,\n );\n }\n\n const registryType = await readTrustedRegistryType(trust.cacheShortId);\n if (registryType === 'public' && claims.private) {\n throw new Error(\n `\"${claims.name}\" is marked private in its packaged manifest; a public UAPKG registry does not accept private packages.`,\n );\n }\n\n const scopedOwner = scopedOwnerName(claims.name);\n const configuredOwner = normalizeOwner(this.options.owner ?? manifest.publish?.owner);\n if (scopedOwner && configuredOwner && configuredOwner.toLowerCase() !== scopedOwner.toLowerCase()) {\n throw new Error(\n `Package \"${claims.name}\" belongs to the \"${scopedOwner}\" namespace; --owner cannot select \"${configuredOwner}\".`,\n );\n }\n const owner = scopedOwner ?? configuredOwner;\n\n const selector = new AuthenticationSelector(this.root.accountManager, new InkPromptService());\n const oidcTarget = { registryId: trust.registryId, packageName: claims.name };\n const requestedScopes = this.options.detach\n ? (['publishing.request.create'] as const)\n : (['publishing.request.create', 'publishing.request.read.self'] as const);\n let authentication = await selector.select(this.options.auth, trust, requestedScopes, true, oidcTarget);\n let requestOtp = authentication.otp;\n authentication = { kind: authentication.kind, credential: authentication.credential };\n\n const submission: RegistryRequestSubmission = {\n registryId: trust.registryId,\n ...(owner ? { ownerOrganizationName: owner } : {}),\n payload: {\n packageName: claims.name,\n packageVersion: claims.version,\n source,\n observedIntegrity: { sha256: artifact.sha256, sizeBytes: artifact.sizeBytes },\n claims,\n },\n };\n\n const idempotencyStore = new PublishIdempotencyStore();\n const submissionDigest = PublishIdempotencyStore.submissionDigest('publish', submission);\n const usesActionsIdempotency = authentication.kind === 'oidc';\n const idempotencyKey = usesActionsIdempotency\n ? createGitHubActionsPublishIdempotencyKey({\n registryId: trust.registryId,\n packageName: claims.name,\n packageVersion: claims.version,\n artifactSha256: artifact.sha256,\n })\n : idempotencyStore.getOrCreate(submissionDigest, () => randomUUID());\n\n const client = new ControlPlaneClient(trust.apiBaseUrl);\n let created: Awaited<ReturnType<ControlPlaneClient['submitRegistryRequest']>>;\n try {\n created = await client.submitRegistryRequest(authentication.credential, 'publish', submission, {\n idempotencyKey,\n otp: requestOtp,\n });\n } catch (error) {\n if (this.options.outputFormat === 'json') throw error;\n this.root.diagnostics.reportOne(\n publishRequestDiagnosticForError(error, {\n packageName: claims.name,\n packageVersion: claims.version,\n registryAlias: trust.alias,\n registryName: trust.registryName,\n registryIssuer: trust.issuer,\n credentialKind: authentication.kind,\n ...(owner ? { requestedOwner: owner } : {}),\n repository: source.repository,\n }),\n );\n return 1;\n } finally {\n // The request-scoped proof must not remain reachable while the CLI\n // polls, refreshes credentials, or watches the durable request.\n requestOtp = undefined;\n }\n if (this.options.detach) {\n this.printCreated(created.requestId, created.status, trust.alias);\n return 0;\n }\n\n const readRequest = async () => {\n try {\n return await client.getRegistryRequestDetail(authentication.credential, created.requestId);\n } catch (error) {\n if (!(error instanceof ControlPlaneError) || error.status !== 401) throw error;\n if (authentication.kind === 'gat') throw error;\n if (authentication.kind === 'login') {\n this.root.accountManager.invalidateAccessCredentials(trust);\n }\n authentication = await selector.select(\n authentication.kind,\n trust,\n ['publishing.request.read.self'],\n false,\n oidcTarget,\n );\n return client.getRegistryRequestDetail(authentication.credential, created.requestId);\n }\n };\n\n let detail = await readRequest();\n let previousStatus = '';\n const deadline = Date.now() + PUBLISH_WATCH_TIMEOUT_MS;\n while (!isRegistryRequestTerminalStatus(detail.request.status)) {\n if (Date.now() >= deadline) {\n throw new Error(\n `Timed out waiting for publishing request ${detail.request.id}. Check it with \\`uapkg requests status ${detail.request.id}\\`.`,\n );\n }\n if (this.options.outputFormat === 'text' && detail.request.status !== previousStatus) {\n process.stdout.write(\n `${detail.request.id}: ${detail.request.status}${detail.request.currentStep ? ` (${detail.request.currentStep})` : ''}\\n`,\n );\n previousStatus = detail.request.status;\n }\n await delay(2_000);\n detail = await readRequest();\n }\n\n if (!usesActionsIdempotency) idempotencyStore.clear(submissionDigest);\n\n if (isRegistryRequestSuccessStatus(detail.request.status)) {\n let refreshWarning: string | undefined;\n try {\n await this.root.registryTrustResolver.forceRefresh(trust);\n } catch (error) {\n refreshWarning = error instanceof Error ? error.message : String(error);\n }\n this.printTerminal(detail, trust.alias, refreshWarning);\n return 0;\n }\n\n this.printTerminal(detail, trust.alias);\n return 1;\n } finally {\n await artifact.cleanup();\n }\n } catch (error) {\n process.stderr.write(`${describeControlPlaneError(error)}\\n`);\n return 1;\n }\n }\n\n private async resolveSource(\n packageVersion: string,\n manifestPublish:\n | {\n readonly repository?: string;\n readonly asset?: string;\n }\n | undefined,\n ) {\n const repository = normalizeGitHubRepository(\n this.options.repository ?? manifestPublish?.repository ?? (await this.gitOrigin()),\n );\n const releaseTag = (this.options.tag ?? `v${packageVersion}`).trim();\n const assetName = (this.options.asset ?? manifestPublish?.asset ?? 'package.tgz').trim();\n if (!releaseTag) throw new Error('The GitHub Release tag cannot be empty.');\n if (!assetName || assetName.includes('/') || assetName.includes('\\\\')) {\n throw new Error('The GitHub Release asset must be a file name, not a path.');\n }\n return {\n type: 'github_release' as const,\n repository,\n releaseTag,\n assetName,\n };\n }\n\n private async gitOrigin(): Promise<string> {\n const git = (this.root.config.get('git') as string | null) ?? 'git';\n try {\n const { stdout } = await execFileAsync(git, ['remote', 'get-url', 'origin'], {\n cwd: this.root.cwd,\n timeout: 10_000,\n });\n return stdout.trim();\n } catch (error) {\n throw new Error('Unable to derive the GitHub repository from remote \"origin\". Use --repository.', {\n cause: error,\n });\n }\n }\n\n private printCreated(requestId: string, status: RegistryRequestStatus, registryAlias: string): void {\n if (this.options.outputFormat === 'json') {\n process.stdout.write(`${JSON.stringify({ ok: true, registry: registryAlias, requestId, status })}\\n`);\n return;\n }\n process.stdout.write(`Publishing request ${requestId} submitted to \"${registryAlias}\" (${status}).\\n`);\n }\n\n private printTerminal(detail: RegistryRequestDetail, registryAlias: string, refreshWarning?: string): void {\n const output = formatRegistryRequestTerminal({\n detail,\n registryAlias,\n outputFormat: this.options.outputFormat,\n presentation: { kind: 'publish' },\n ...(refreshWarning ? { registryRefreshWarning: refreshWarning } : {}),\n });\n process.stdout.write(output.stdout);\n if (output.stderr) process.stderr.write(output.stderr);\n }\n}\n\n/** Reads the installer-trusted registry type from the projected registry snapshot. */\nexport async function readTrustedRegistryType(cacheShortId: string): Promise<RegistryType> {\n const metaPath = join(getRegistryRepoPath(cacheShortId), '.uapkg', 'registry.meta.json');\n if (!existsSync(metaPath)) {\n throw new Error('Trusted registry metadata is missing; registry policy cannot be determined.');\n }\n try {\n const raw = await readFile(metaPath, 'utf8');\n const parsed = RegistryMetaSchema.safeParse(JSON.parse(raw) as unknown);\n if (!parsed.success) {\n throw new Error('metadata does not match a supported registry schema');\n }\n return parsed.data.registry.registryType;\n } catch (error) {\n throw new Error('Trusted registry metadata is invalid or uses an unsupported schema version.', { cause: error });\n }\n}\n\nfunction resolveAssetPath(cwd: string, assetPath: string): string {\n return isAbsolute(assetPath) ? assetPath : join(cwd, assetPath);\n}\n\nfunction normalizeGitHubRepository(input: string): string {\n let value = input.trim();\n const scp = value.match(/^git@github\\.com:([^/]+)\\/(.+)$/i);\n if (scp) value = `${scp[1]}/${scp[2]}`;\n\n if (value.includes('://')) {\n const url = new URL(value);\n if (url.hostname.toLowerCase() !== 'github.com') {\n throw new Error('Publishing sources must be hosted on github.com in UAPKG v1.');\n }\n value = url.pathname.replace(/^\\/+/, '');\n }\n value = value.replace(/\\.git$/i, '').replace(/\\/+$/, '');\n if (!/^[A-Za-z0-9_.-]+\\/[A-Za-z0-9_.-]+$/.test(value)) {\n throw new Error('Expected a GitHub repository in owner/repository form.');\n }\n return value.toLowerCase();\n}\n\nfunction scopedOwnerName(packageName: string): string | undefined {\n const match = packageName.match(/^@([^/]+)\\/[^/]+$/);\n return match?.[1]?.toLowerCase();\n}\n\nfunction normalizeOwner(value: string | undefined): string | undefined {\n if (value === undefined) return undefined;\n const owner = value.trim().toLowerCase();\n if (!/^[a-z0-9][a-z0-9-_]*$/.test(owner)) {\n throw new Error('The publish owner must be a valid UAPKG organization name.');\n }\n return owner;\n}\n\nfunction delay(milliseconds: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\n}\n"],"mappings":"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"}
|