@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.
Files changed (412) hide show
  1. package/dist/app/CompositionRoot.d.ts +36 -33
  2. package/dist/app/CompositionRoot.d.ts.map +1 -1
  3. package/dist/app/CompositionRoot.js +91 -109
  4. package/dist/app/CompositionRoot.js.map +1 -1
  5. package/dist/app/UAPKGApplication.d.ts +6 -3
  6. package/dist/app/UAPKGApplication.d.ts.map +1 -1
  7. package/dist/app/UAPKGApplication.js +155 -169
  8. package/dist/app/UAPKGApplication.js.map +1 -1
  9. package/dist/build/BuildMetadata.d.ts +9 -6
  10. package/dist/build/BuildMetadata.d.ts.map +1 -1
  11. package/dist/build/BuildMetadata.js +2 -2
  12. package/dist/cli/UAPKGCommandLine.d.ts +259 -257
  13. package/dist/cli/UAPKGCommandLine.d.ts.map +1 -1
  14. package/dist/cli/UAPKGCommandLine.js +248 -239
  15. package/dist/cli/UAPKGCommandLine.js.map +1 -1
  16. package/dist/cli/parseCommandLine.d.ts +5 -1
  17. package/dist/cli/parseCommandLine.d.ts.map +1 -1
  18. package/dist/cli/parseCommandLine.js +8 -3
  19. package/dist/cli/parseCommandLine.js.map +1 -1
  20. package/dist/cli/parsing/UAPKGCommandLineParser.d.ts +9 -6
  21. package/dist/cli/parsing/UAPKGCommandLineParser.d.ts.map +1 -1
  22. package/dist/cli/parsing/UAPKGCommandLineParser.js +23 -31
  23. package/dist/cli/parsing/UAPKGCommandLineParser.js.map +1 -1
  24. package/dist/cli/parsing/UAPKGParserRegistry.d.ts +12 -9
  25. package/dist/cli/parsing/UAPKGParserRegistry.d.ts.map +1 -1
  26. package/dist/cli/parsing/UAPKGParserRegistry.js +53 -50
  27. package/dist/cli/parsing/UAPKGParserRegistry.js.map +1 -1
  28. package/dist/cli/parsing/contracts/UAPKGCommandModule.d.ts +9 -6
  29. package/dist/cli/parsing/contracts/UAPKGCommandModule.d.ts.map +1 -1
  30. package/dist/cli/parsing/contracts/UAPKGCommandModule.js +1 -2
  31. package/dist/cli/parsing/modules/AddCommandModule.d.ts +8 -5
  32. package/dist/cli/parsing/modules/AddCommandModule.d.ts.map +1 -1
  33. package/dist/cli/parsing/modules/AddCommandModule.js +49 -36
  34. package/dist/cli/parsing/modules/AddCommandModule.js.map +1 -1
  35. package/dist/cli/parsing/modules/ConfigCommandModule.d.ts +8 -5
  36. package/dist/cli/parsing/modules/ConfigCommandModule.d.ts.map +1 -1
  37. package/dist/cli/parsing/modules/ConfigCommandModule.js +87 -83
  38. package/dist/cli/parsing/modules/ConfigCommandModule.js.map +1 -1
  39. package/dist/cli/parsing/modules/InitCommandModule.d.ts +8 -5
  40. package/dist/cli/parsing/modules/InitCommandModule.d.ts.map +1 -1
  41. package/dist/cli/parsing/modules/InitCommandModule.js +25 -22
  42. package/dist/cli/parsing/modules/InitCommandModule.js.map +1 -1
  43. package/dist/cli/parsing/modules/InstallCommandModule.d.ts +8 -5
  44. package/dist/cli/parsing/modules/InstallCommandModule.d.ts.map +1 -1
  45. package/dist/cli/parsing/modules/InstallCommandModule.js +36 -28
  46. package/dist/cli/parsing/modules/InstallCommandModule.js.map +1 -1
  47. package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts +8 -5
  48. package/dist/cli/parsing/modules/LifecycleCommandModule.d.ts.map +1 -1
  49. package/dist/cli/parsing/modules/LifecycleCommandModule.js +78 -50
  50. package/dist/cli/parsing/modules/LifecycleCommandModule.js.map +1 -1
  51. package/dist/cli/parsing/modules/ListCommandModule.d.ts +8 -5
  52. package/dist/cli/parsing/modules/ListCommandModule.d.ts.map +1 -1
  53. package/dist/cli/parsing/modules/ListCommandModule.js +26 -15
  54. package/dist/cli/parsing/modules/ListCommandModule.js.map +1 -1
  55. package/dist/cli/parsing/modules/LoginCommandModule.d.ts +8 -5
  56. package/dist/cli/parsing/modules/LoginCommandModule.d.ts.map +1 -1
  57. package/dist/cli/parsing/modules/LoginCommandModule.js +34 -33
  58. package/dist/cli/parsing/modules/LoginCommandModule.js.map +1 -1
  59. package/dist/cli/parsing/modules/LogoutCommandModule.d.ts +8 -5
  60. package/dist/cli/parsing/modules/LogoutCommandModule.d.ts.map +1 -1
  61. package/dist/cli/parsing/modules/LogoutCommandModule.js +30 -28
  62. package/dist/cli/parsing/modules/LogoutCommandModule.js.map +1 -1
  63. package/dist/cli/parsing/modules/OutdatedCommandModule.d.ts +8 -5
  64. package/dist/cli/parsing/modules/OutdatedCommandModule.d.ts.map +1 -1
  65. package/dist/cli/parsing/modules/OutdatedCommandModule.js +21 -16
  66. package/dist/cli/parsing/modules/OutdatedCommandModule.js.map +1 -1
  67. package/dist/cli/parsing/modules/PackCommandModule.d.ts +8 -5
  68. package/dist/cli/parsing/modules/PackCommandModule.d.ts.map +1 -1
  69. package/dist/cli/parsing/modules/PackCommandModule.js +30 -28
  70. package/dist/cli/parsing/modules/PackCommandModule.js.map +1 -1
  71. package/dist/cli/parsing/modules/ProjectGetNameCommandModule.d.ts +8 -5
  72. package/dist/cli/parsing/modules/ProjectGetNameCommandModule.d.ts.map +1 -1
  73. package/dist/cli/parsing/modules/ProjectGetNameCommandModule.js +14 -11
  74. package/dist/cli/parsing/modules/ProjectGetNameCommandModule.js.map +1 -1
  75. package/dist/cli/parsing/modules/PublishCommandModule.d.ts +8 -5
  76. package/dist/cli/parsing/modules/PublishCommandModule.d.ts.map +1 -1
  77. package/dist/cli/parsing/modules/PublishCommandModule.js +63 -47
  78. package/dist/cli/parsing/modules/PublishCommandModule.js.map +1 -1
  79. package/dist/cli/parsing/modules/RegistryCommandModule.d.ts +8 -5
  80. package/dist/cli/parsing/modules/RegistryCommandModule.d.ts.map +1 -1
  81. package/dist/cli/parsing/modules/RegistryCommandModule.js +117 -120
  82. package/dist/cli/parsing/modules/RegistryCommandModule.js.map +1 -1
  83. package/dist/cli/parsing/modules/RemoveCommandModule.d.ts +8 -5
  84. package/dist/cli/parsing/modules/RemoveCommandModule.d.ts.map +1 -1
  85. package/dist/cli/parsing/modules/RemoveCommandModule.js +25 -14
  86. package/dist/cli/parsing/modules/RemoveCommandModule.js.map +1 -1
  87. package/dist/cli/parsing/modules/RequestsCommandModule.d.ts +8 -5
  88. package/dist/cli/parsing/modules/RequestsCommandModule.d.ts.map +1 -1
  89. package/dist/cli/parsing/modules/RequestsCommandModule.js +56 -60
  90. package/dist/cli/parsing/modules/RequestsCommandModule.js.map +1 -1
  91. package/dist/cli/parsing/modules/UpdateCommandModule.d.ts +8 -5
  92. package/dist/cli/parsing/modules/UpdateCommandModule.d.ts.map +1 -1
  93. package/dist/cli/parsing/modules/UpdateCommandModule.js +38 -25
  94. package/dist/cli/parsing/modules/UpdateCommandModule.js.map +1 -1
  95. package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts +8 -5
  96. package/dist/cli/parsing/modules/WhoamiCommandModule.d.ts.map +1 -1
  97. package/dist/cli/parsing/modules/WhoamiCommandModule.js +30 -28
  98. package/dist/cli/parsing/modules/WhoamiCommandModule.js.map +1 -1
  99. package/dist/cli/parsing/modules/WhyCommandModule.d.ts +8 -5
  100. package/dist/cli/parsing/modules/WhyCommandModule.d.ts.map +1 -1
  101. package/dist/cli/parsing/modules/WhyCommandModule.js +25 -14
  102. package/dist/cli/parsing/modules/WhyCommandModule.js.map +1 -1
  103. package/dist/cli/parsing/modules/sharedOptions.d.ts +8 -5
  104. package/dist/cli/parsing/modules/sharedOptions.d.ts.map +1 -1
  105. package/dist/cli/parsing/modules/sharedOptions.js +18 -23
  106. package/dist/cli/parsing/modules/sharedOptions.js.map +1 -1
  107. package/dist/cli/runUAPKGCLI.d.ts +4 -1
  108. package/dist/cli/runUAPKGCLI.d.ts.map +1 -1
  109. package/dist/cli/runUAPKGCLI.js +10 -5
  110. package/dist/cli/runUAPKGCLI.js.map +1 -1
  111. package/dist/cli-bootstrap.d.ts +1 -2
  112. package/dist/cli-bootstrap.js +15 -12
  113. package/dist/cli-bootstrap.js.map +1 -1
  114. package/dist/commands/AddCommand.d.ts +19 -16
  115. package/dist/commands/AddCommand.d.ts.map +1 -1
  116. package/dist/commands/AddCommand.js +49 -53
  117. package/dist/commands/AddCommand.js.map +1 -1
  118. package/dist/commands/Command.d.ts +5 -2
  119. package/dist/commands/Command.d.ts.map +1 -1
  120. package/dist/commands/Command.js +1 -2
  121. package/dist/commands/ConfigCommand.d.ts +28 -25
  122. package/dist/commands/ConfigCommand.d.ts.map +1 -1
  123. package/dist/commands/ConfigCommand.js +165 -186
  124. package/dist/commands/ConfigCommand.js.map +1 -1
  125. package/dist/commands/InitCommand.d.ts +19 -16
  126. package/dist/commands/InitCommand.d.ts.map +1 -1
  127. package/dist/commands/InitCommand.js +65 -60
  128. package/dist/commands/InitCommand.js.map +1 -1
  129. package/dist/commands/InstallCommand.d.ts +16 -13
  130. package/dist/commands/InstallCommand.d.ts.map +1 -1
  131. package/dist/commands/InstallCommand.js +118 -110
  132. package/dist/commands/InstallCommand.js.map +1 -1
  133. package/dist/commands/ListCommand.d.ts +13 -10
  134. package/dist/commands/ListCommand.d.ts.map +1 -1
  135. package/dist/commands/ListCommand.js +76 -81
  136. package/dist/commands/ListCommand.js.map +1 -1
  137. package/dist/commands/LoginCommand.d.ts +17 -14
  138. package/dist/commands/LoginCommand.d.ts.map +1 -1
  139. package/dist/commands/LoginCommand.js +66 -72
  140. package/dist/commands/LoginCommand.js.map +1 -1
  141. package/dist/commands/LogoutCommand.d.ts +15 -12
  142. package/dist/commands/LogoutCommand.d.ts.map +1 -1
  143. package/dist/commands/LogoutCommand.js +36 -37
  144. package/dist/commands/LogoutCommand.js.map +1 -1
  145. package/dist/commands/OutdatedCommand.d.ts +12 -9
  146. package/dist/commands/OutdatedCommand.d.ts.map +1 -1
  147. package/dist/commands/OutdatedCommand.js +41 -40
  148. package/dist/commands/OutdatedCommand.js.map +1 -1
  149. package/dist/commands/PackCommand.d.ts +13 -10
  150. package/dist/commands/PackCommand.d.ts.map +1 -1
  151. package/dist/commands/PackCommand.js +26 -21
  152. package/dist/commands/PackCommand.js.map +1 -1
  153. package/dist/commands/PackageLifecycleCommand.d.ts +23 -19
  154. package/dist/commands/PackageLifecycleCommand.d.ts.map +1 -1
  155. package/dist/commands/PackageLifecycleCommand.js +144 -138
  156. package/dist/commands/PackageLifecycleCommand.js.map +1 -1
  157. package/dist/commands/PostinstallCandidateBuilder.d.ts +11 -8
  158. package/dist/commands/PostinstallCandidateBuilder.d.ts.map +1 -1
  159. package/dist/commands/PostinstallCandidateBuilder.js +42 -42
  160. package/dist/commands/PostinstallCandidateBuilder.js.map +1 -1
  161. package/dist/commands/ProjectGetNameCommand.d.ts +10 -7
  162. package/dist/commands/ProjectGetNameCommand.d.ts.map +1 -1
  163. package/dist/commands/ProjectGetNameCommand.js +25 -25
  164. package/dist/commands/ProjectGetNameCommand.js.map +1 -1
  165. package/dist/commands/PublishCommand.d.ts +29 -23
  166. package/dist/commands/PublishCommand.d.ts.map +1 -1
  167. package/dist/commands/PublishCommand.js +243 -254
  168. package/dist/commands/PublishCommand.js.map +1 -1
  169. package/dist/commands/RegistryCommand.d.ts +38 -35
  170. package/dist/commands/RegistryCommand.d.ts.map +1 -1
  171. package/dist/commands/RegistryCommand.js +195 -223
  172. package/dist/commands/RegistryCommand.js.map +1 -1
  173. package/dist/commands/RemoveCommand.d.ts +14 -11
  174. package/dist/commands/RemoveCommand.d.ts.map +1 -1
  175. package/dist/commands/RemoveCommand.js +47 -54
  176. package/dist/commands/RemoveCommand.js.map +1 -1
  177. package/dist/commands/RequestsCommand.d.ts +21 -18
  178. package/dist/commands/RequestsCommand.d.ts.map +1 -1
  179. package/dist/commands/RequestsCommand.js +82 -95
  180. package/dist/commands/RequestsCommand.js.map +1 -1
  181. package/dist/commands/UpdateCommand.d.ts +29 -26
  182. package/dist/commands/UpdateCommand.d.ts.map +1 -1
  183. package/dist/commands/UpdateCommand.js +111 -111
  184. package/dist/commands/UpdateCommand.js.map +1 -1
  185. package/dist/commands/WhoamiCommand.d.ts +30 -27
  186. package/dist/commands/WhoamiCommand.d.ts.map +1 -1
  187. package/dist/commands/WhoamiCommand.js +63 -72
  188. package/dist/commands/WhoamiCommand.js.map +1 -1
  189. package/dist/commands/WhyCommand.d.ts +13 -10
  190. package/dist/commands/WhyCommand.d.ts.map +1 -1
  191. package/dist/commands/WhyCommand.js +45 -44
  192. package/dist/commands/WhyCommand.js.map +1 -1
  193. package/dist/commands/add/DependencyAddResolver.d.ts +14 -11
  194. package/dist/commands/add/DependencyAddResolver.d.ts.map +1 -1
  195. package/dist/commands/add/DependencyAddResolver.js +36 -36
  196. package/dist/commands/add/DependencyAddResolver.js.map +1 -1
  197. package/dist/control-plane/AccountManager.d.ts +96 -94
  198. package/dist/control-plane/AccountManager.d.ts.map +1 -1
  199. package/dist/control-plane/AccountManager.js +775 -967
  200. package/dist/control-plane/AccountManager.js.map +1 -1
  201. package/dist/control-plane/ArtifactObserver.d.ts +19 -16
  202. package/dist/control-plane/ArtifactObserver.d.ts.map +1 -1
  203. package/dist/control-plane/ArtifactObserver.js +73 -59
  204. package/dist/control-plane/ArtifactObserver.js.map +1 -1
  205. package/dist/control-plane/AuthMetadataStore.d.ts +16 -13
  206. package/dist/control-plane/AuthMetadataStore.d.ts.map +1 -1
  207. package/dist/control-plane/AuthMetadataStore.js +111 -113
  208. package/dist/control-plane/AuthMetadataStore.js.map +1 -1
  209. package/dist/control-plane/AuthStoragePaths.d.ts +7 -4
  210. package/dist/control-plane/AuthStoragePaths.d.ts.map +1 -1
  211. package/dist/control-plane/AuthStoragePaths.js +19 -14
  212. package/dist/control-plane/AuthStoragePaths.js.map +1 -1
  213. package/dist/control-plane/AuthenticationSelector.d.ts +21 -18
  214. package/dist/control-plane/AuthenticationSelector.d.ts.map +1 -1
  215. package/dist/control-plane/AuthenticationSelector.js +69 -63
  216. package/dist/control-plane/AuthenticationSelector.js.map +1 -1
  217. package/dist/control-plane/ControlPlaneClient.d.ts +37 -28
  218. package/dist/control-plane/ControlPlaneClient.d.ts.map +1 -1
  219. package/dist/control-plane/ControlPlaneClient.js +265 -254
  220. package/dist/control-plane/ControlPlaneClient.js.map +1 -1
  221. package/dist/control-plane/ControlPlaneEndpoints.d.ts +9 -6
  222. package/dist/control-plane/ControlPlaneEndpoints.d.ts.map +1 -1
  223. package/dist/control-plane/ControlPlaneEndpoints.js +17 -12
  224. package/dist/control-plane/ControlPlaneEndpoints.js.map +1 -1
  225. package/dist/control-plane/ControlPlaneTypes.d.ts +176 -152
  226. package/dist/control-plane/ControlPlaneTypes.d.ts.map +1 -1
  227. package/dist/control-plane/ControlPlaneTypes.js +88 -81
  228. package/dist/control-plane/ControlPlaneTypes.js.map +1 -1
  229. package/dist/control-plane/CredentialStore.d.ts +20 -18
  230. package/dist/control-plane/CredentialStore.d.ts.map +1 -1
  231. package/dist/control-plane/CredentialStore.js +66 -83
  232. package/dist/control-plane/CredentialStore.js.map +1 -1
  233. package/dist/control-plane/DPoPKeyStore.d.ts +12 -9
  234. package/dist/control-plane/DPoPKeyStore.d.ts.map +1 -1
  235. package/dist/control-plane/DPoPKeyStore.js +57 -53
  236. package/dist/control-plane/DPoPKeyStore.js.map +1 -1
  237. package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts +37 -4
  238. package/dist/control-plane/GitHubActionsOidcCredentialProvider.d.ts.map +1 -1
  239. package/dist/control-plane/GitHubActionsOidcCredentialProvider.js +197 -63
  240. package/dist/control-plane/GitHubActionsOidcCredentialProvider.js.map +1 -1
  241. package/dist/control-plane/PublishIdempotencyStore.d.ts +25 -9
  242. package/dist/control-plane/PublishIdempotencyStore.d.ts.map +1 -1
  243. package/dist/control-plane/PublishIdempotencyStore.js +97 -68
  244. package/dist/control-plane/PublishIdempotencyStore.js.map +1 -1
  245. package/dist/control-plane/PublishRequestErrorMapper.d.ts +155 -0
  246. package/dist/control-plane/PublishRequestErrorMapper.d.ts.map +1 -0
  247. package/dist/control-plane/PublishRequestErrorMapper.js +597 -0
  248. package/dist/control-plane/PublishRequestErrorMapper.js.map +1 -0
  249. package/dist/control-plane/RegistryGrantLock.d.ts +29 -26
  250. package/dist/control-plane/RegistryGrantLock.d.ts.map +1 -1
  251. package/dist/control-plane/RegistryGrantLock.js +149 -185
  252. package/dist/control-plane/RegistryGrantLock.js.map +1 -1
  253. package/dist/control-plane/RegistryTrustResolver.d.ts +13 -10
  254. package/dist/control-plane/RegistryTrustResolver.d.ts.map +1 -1
  255. package/dist/control-plane/RegistryTrustResolver.js +97 -132
  256. package/dist/control-plane/RegistryTrustResolver.js.map +1 -1
  257. package/dist/index.d.ts +62 -39
  258. package/dist/index.js +60 -53
  259. package/dist/postinstall/api/PostinstallDsl.d.ts +24 -21
  260. package/dist/postinstall/api/PostinstallDsl.d.ts.map +1 -1
  261. package/dist/postinstall/api/PostinstallDsl.js +32 -35
  262. package/dist/postinstall/api/PostinstallDsl.js.map +1 -1
  263. package/dist/postinstall/api/definePostinstall.d.ts +5 -2
  264. package/dist/postinstall/api/definePostinstall.d.ts.map +1 -1
  265. package/dist/postinstall/api/definePostinstall.js +20 -16
  266. package/dist/postinstall/api/definePostinstall.js.map +1 -1
  267. package/dist/postinstall/index.d.ts +25 -26
  268. package/dist/postinstall/index.js +25 -37
  269. package/dist/postinstall/loader/EntryResolver.d.ts +11 -9
  270. package/dist/postinstall/loader/EntryResolver.d.ts.map +1 -1
  271. package/dist/postinstall/loader/EntryResolver.js +36 -32
  272. package/dist/postinstall/loader/EntryResolver.js.map +1 -1
  273. package/dist/postinstall/loader/EsbuildTranspiler.d.ts +6 -3
  274. package/dist/postinstall/loader/EsbuildTranspiler.d.ts.map +1 -1
  275. package/dist/postinstall/loader/EsbuildTranspiler.js +52 -56
  276. package/dist/postinstall/loader/EsbuildTranspiler.js.map +1 -1
  277. package/dist/postinstall/loader/ExportValidator.d.ts +8 -5
  278. package/dist/postinstall/loader/ExportValidator.d.ts.map +1 -1
  279. package/dist/postinstall/loader/ExportValidator.js +36 -32
  280. package/dist/postinstall/loader/ExportValidator.js.map +1 -1
  281. package/dist/postinstall/loader/ModuleImporter.d.ts +17 -14
  282. package/dist/postinstall/loader/ModuleImporter.d.ts.map +1 -1
  283. package/dist/postinstall/loader/ModuleImporter.js +50 -58
  284. package/dist/postinstall/loader/ModuleImporter.js.map +1 -1
  285. package/dist/postinstall/loader/PostinstallLoader.d.ts +22 -19
  286. package/dist/postinstall/loader/PostinstallLoader.d.ts.map +1 -1
  287. package/dist/postinstall/loader/PostinstallLoader.js +62 -58
  288. package/dist/postinstall/loader/PostinstallLoader.js.map +1 -1
  289. package/dist/postinstall/markers/MarkerBlockEditor.d.ts +19 -16
  290. package/dist/postinstall/markers/MarkerBlockEditor.d.ts.map +1 -1
  291. package/dist/postinstall/markers/MarkerBlockEditor.js +48 -44
  292. package/dist/postinstall/markers/MarkerBlockEditor.js.map +1 -1
  293. package/dist/postinstall/markers/MarkerBlockService.d.ts +10 -7
  294. package/dist/postinstall/markers/MarkerBlockService.d.ts.map +1 -1
  295. package/dist/postinstall/markers/MarkerBlockService.js +44 -44
  296. package/dist/postinstall/markers/MarkerBlockService.js.map +1 -1
  297. package/dist/postinstall/markers/MarkerIntegrityValidator.d.ts +12 -9
  298. package/dist/postinstall/markers/MarkerIntegrityValidator.d.ts.map +1 -1
  299. package/dist/postinstall/markers/MarkerIntegrityValidator.js +47 -52
  300. package/dist/postinstall/markers/MarkerIntegrityValidator.js.map +1 -1
  301. package/dist/postinstall/policy/PostinstallPolicyGate.d.ts +25 -23
  302. package/dist/postinstall/policy/PostinstallPolicyGate.d.ts.map +1 -1
  303. package/dist/postinstall/policy/PostinstallPolicyGate.js +63 -52
  304. package/dist/postinstall/policy/PostinstallPolicyGate.js.map +1 -1
  305. package/dist/postinstall/runner/PostinstallOrchestrator.d.ts +48 -45
  306. package/dist/postinstall/runner/PostinstallOrchestrator.d.ts.map +1 -1
  307. package/dist/postinstall/runner/PostinstallOrchestrator.js +172 -170
  308. package/dist/postinstall/runner/PostinstallOrchestrator.js.map +1 -1
  309. package/dist/postinstall/unreal/BuildCsInjector.d.ts +16 -13
  310. package/dist/postinstall/unreal/BuildCsInjector.d.ts.map +1 -1
  311. package/dist/postinstall/unreal/BuildCsInjector.js +58 -53
  312. package/dist/postinstall/unreal/BuildCsInjector.js.map +1 -1
  313. package/dist/postinstall/unreal/CSharpInjectionEngine.d.ts +13 -10
  314. package/dist/postinstall/unreal/CSharpInjectionEngine.d.ts.map +1 -1
  315. package/dist/postinstall/unreal/CSharpInjectionEngine.js +56 -59
  316. package/dist/postinstall/unreal/CSharpInjectionEngine.js.map +1 -1
  317. package/dist/postinstall/unreal/CSharpStructureAnalyzer.d.ts +11 -8
  318. package/dist/postinstall/unreal/CSharpStructureAnalyzer.d.ts.map +1 -1
  319. package/dist/postinstall/unreal/CSharpStructureAnalyzer.js +123 -127
  320. package/dist/postinstall/unreal/CSharpStructureAnalyzer.js.map +1 -1
  321. package/dist/postinstall/unreal/CSharpStructures.d.ts +18 -15
  322. package/dist/postinstall/unreal/CSharpStructures.d.ts.map +1 -1
  323. package/dist/postinstall/unreal/CSharpStructures.js +1 -2
  324. package/dist/postinstall/unreal/CSharpWrapperFactory.d.ts +7 -4
  325. package/dist/postinstall/unreal/CSharpWrapperFactory.d.ts.map +1 -1
  326. package/dist/postinstall/unreal/CSharpWrapperFactory.js +54 -58
  327. package/dist/postinstall/unreal/CSharpWrapperFactory.js.map +1 -1
  328. package/dist/postinstall/unreal/PluginHash.d.ts +5 -2
  329. package/dist/postinstall/unreal/PluginHash.d.ts.map +1 -1
  330. package/dist/postinstall/unreal/PluginHash.js +13 -8
  331. package/dist/postinstall/unreal/PluginHash.js.map +1 -1
  332. package/dist/postinstall/unreal/PrettyParseError.d.ts +8 -5
  333. package/dist/postinstall/unreal/PrettyParseError.d.ts.map +1 -1
  334. package/dist/postinstall/unreal/PrettyParseError.js +37 -37
  335. package/dist/postinstall/unreal/PrettyParseError.js.map +1 -1
  336. package/dist/postinstall/unreal/ProjectFileLocator.d.ts +12 -9
  337. package/dist/postinstall/unreal/ProjectFileLocator.d.ts.map +1 -1
  338. package/dist/postinstall/unreal/ProjectFileLocator.js +49 -51
  339. package/dist/postinstall/unreal/ProjectFileLocator.js.map +1 -1
  340. package/dist/postinstall/unreal/TargetCsInjector.d.ts +16 -13
  341. package/dist/postinstall/unreal/TargetCsInjector.d.ts.map +1 -1
  342. package/dist/postinstall/unreal/TargetCsInjector.js +58 -53
  343. package/dist/postinstall/unreal/TargetCsInjector.js.map +1 -1
  344. package/dist/postinstall/unreal/UProjectInjector.d.ts +6 -3
  345. package/dist/postinstall/unreal/UProjectInjector.d.ts.map +1 -1
  346. package/dist/postinstall/unreal/UProjectInjector.js +56 -52
  347. package/dist/postinstall/unreal/UProjectInjector.js.map +1 -1
  348. package/dist/postinstall/unreal/UProjectMetadataReader.d.ts +5 -2
  349. package/dist/postinstall/unreal/UProjectMetadataReader.d.ts.map +1 -1
  350. package/dist/postinstall/unreal/UProjectMetadataReader.js +22 -18
  351. package/dist/postinstall/unreal/UProjectMetadataReader.js.map +1 -1
  352. package/dist/postinstall/unreal/UnrealSourceCatalog.d.ts +17 -14
  353. package/dist/postinstall/unreal/UnrealSourceCatalog.d.ts.map +1 -1
  354. package/dist/postinstall/unreal/UnrealSourceCatalog.js +50 -50
  355. package/dist/postinstall/unreal/UnrealSourceCatalog.js.map +1 -1
  356. package/dist/prompts/InkPromptService.d.ts +10 -7
  357. package/dist/prompts/InkPromptService.d.ts.map +1 -1
  358. package/dist/prompts/InkPromptService.js +100 -71
  359. package/dist/prompts/InkPromptService.js.map +1 -1
  360. package/dist/prompts/ProjectContextDetector.d.ts +10 -7
  361. package/dist/prompts/ProjectContextDetector.d.ts.map +1 -1
  362. package/dist/prompts/ProjectContextDetector.js +32 -26
  363. package/dist/prompts/ProjectContextDetector.js.map +1 -1
  364. package/dist/prompts/PromptService.d.ts +11 -8
  365. package/dist/prompts/PromptService.d.ts.map +1 -1
  366. package/dist/prompts/PromptService.js +1 -8
  367. package/dist/reporting/DiagnosticDeduplicator.d.ts +8 -5
  368. package/dist/reporting/DiagnosticDeduplicator.d.ts.map +1 -1
  369. package/dist/reporting/DiagnosticDeduplicator.js +36 -35
  370. package/dist/reporting/DiagnosticDeduplicator.js.map +1 -1
  371. package/dist/reporting/DiagnosticRenderer.d.ts +11 -8
  372. package/dist/reporting/DiagnosticRenderer.d.ts.map +1 -1
  373. package/dist/reporting/DiagnosticRenderer.js +1 -2
  374. package/dist/reporting/DiagnosticReporter.d.ts +12 -9
  375. package/dist/reporting/DiagnosticReporter.d.ts.map +1 -1
  376. package/dist/reporting/DiagnosticReporter.js +40 -39
  377. package/dist/reporting/DiagnosticReporter.js.map +1 -1
  378. package/dist/reporting/InkDiagnosticRenderer.d.ts +12 -9
  379. package/dist/reporting/InkDiagnosticRenderer.d.ts.map +1 -1
  380. package/dist/reporting/InkDiagnosticRenderer.js +50 -42
  381. package/dist/reporting/InkDiagnosticRenderer.js.map +1 -1
  382. package/dist/reporting/InstallProgressReporter.d.ts +23 -20
  383. package/dist/reporting/InstallProgressReporter.d.ts.map +1 -1
  384. package/dist/reporting/InstallProgressReporter.js +48 -47
  385. package/dist/reporting/InstallProgressReporter.js.map +1 -1
  386. package/dist/reporting/JsonReporter.d.ts +16 -13
  387. package/dist/reporting/JsonReporter.d.ts.map +1 -1
  388. package/dist/reporting/JsonReporter.js +34 -20
  389. package/dist/reporting/JsonReporter.js.map +1 -1
  390. package/dist/reporting/RegistryRequestTerminalFormatter.d.ts +36 -0
  391. package/dist/reporting/RegistryRequestTerminalFormatter.d.ts.map +1 -0
  392. package/dist/reporting/RegistryRequestTerminalFormatter.js +90 -0
  393. package/dist/reporting/RegistryRequestTerminalFormatter.js.map +1 -0
  394. package/dist/reporting/TextDiagnosticRenderer.d.ts +11 -8
  395. package/dist/reporting/TextDiagnosticRenderer.d.ts.map +1 -1
  396. package/dist/reporting/TextDiagnosticRenderer.js +36 -28
  397. package/dist/reporting/TextDiagnosticRenderer.js.map +1 -1
  398. package/dist/reporting/TextSink.d.ts +14 -11
  399. package/dist/reporting/TextSink.d.ts.map +1 -1
  400. package/dist/reporting/TextSink.js +24 -20
  401. package/dist/reporting/TextSink.js.map +1 -1
  402. package/package.json +31 -32
  403. package/dist/cli/parsing/contracts/UAPKGCommandModule.js.map +0 -1
  404. package/dist/cli-bootstrap.d.ts.map +0 -1
  405. package/dist/commands/Command.js.map +0 -1
  406. package/dist/index.d.ts.map +0 -1
  407. package/dist/index.js.map +0 -1
  408. package/dist/postinstall/index.d.ts.map +0 -1
  409. package/dist/postinstall/index.js.map +0 -1
  410. package/dist/postinstall/unreal/CSharpStructures.js.map +0 -1
  411. package/dist/prompts/PromptService.js.map +0 -1
  412. package/dist/reporting/DiagnosticRenderer.js.map +0 -1
@@ -1,116 +1,114 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { existsSync } from 'node:fs';
3
- import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
4
- import { dirname, resolve } from 'node:path';
5
- import { z } from 'zod';
6
- import { resolveAuthStoragePaths } from './AuthStoragePaths.js';
7
- import { FileRegistryGrantLock } from './RegistryGrantLock.js';
8
- const AUTH_METADATA_LOCK_NAMESPACE = 'urn:uapkg:auth-metadata';
9
- const accountSchema = z
10
- .object({
11
- id: z.uuid(),
12
- username: z.string().min(1),
13
- displayName: z.string().min(1),
14
- })
15
- .strict();
16
- const grantSchema = z
17
- .object({
18
- issuer: z.url(),
19
- registryId: z.uuid(),
20
- registryName: z.string().min(1),
21
- grantId: z.uuid(),
22
- clientId: z.string().min(1),
23
- keyReference: z.string().min(1),
24
- refreshTokenReference: z.string().min(1),
25
- publicKeyThumbprint: z.string().min(1),
26
- deviceName: z.string().min(1),
27
- repositoryFingerprint: z.string().regex(/^sha256:[0-9a-f]{64}$/),
28
- account: accountSchema,
29
- createdAt: z.number().int().nonnegative(),
30
- idleExpiresAt: z.number().int().positive(),
31
- expiresAt: z.number().int().positive(),
32
- })
33
- .strict();
34
- const fileSchema = z
35
- .object({
36
- schemaVersion: z.literal(1),
37
- grants: z.record(z.string(), grantSchema),
38
- })
39
- .strict();
40
- export class AuthMetadataStore {
41
- filePath;
42
- mutationLock;
43
- constructor(filePath = resolveAuthStoragePaths().metadataFile, mutationLock) {
44
- this.filePath = filePath;
45
- this.mutationLock = mutationLock ?? new FileRegistryGrantLock(resolveAuthStoragePaths(filePath).locksDirectory);
46
- }
47
- get path() {
48
- return this.filePath;
49
- }
50
- async find(issuer, registryId) {
51
- return (await this.read()).grants[grantKey(issuer, registryId)];
52
- }
53
- async upsert(metadata) {
54
- await this.withMutationLock(async () => {
55
- const current = await this.read();
56
- await this.write({
57
- schemaVersion: 1,
58
- grants: {
59
- ...current.grants,
60
- [grantKey(metadata.issuer, metadata.registryId)]: metadata,
61
- },
62
- });
63
- });
64
- }
65
- async remove(issuer, registryId) {
66
- await this.withMutationLock(async () => {
67
- const current = await this.read();
68
- const key = grantKey(issuer, registryId);
69
- if (!(key in current.grants))
70
- return;
71
- const next = { ...current.grants };
72
- delete next[key];
73
- await this.write({ schemaVersion: 1, grants: next });
74
- });
75
- }
76
- async read() {
77
- if (!existsSync(this.filePath)) {
78
- return { schemaVersion: 1, grants: {} };
79
- }
80
- let raw;
81
- try {
82
- raw = await readFile(this.filePath, 'utf8');
83
- }
84
- catch (error) {
85
- throw new Error(`Unable to read saved UAPKG login metadata at ${this.filePath}.`, { cause: error });
86
- }
87
- let json;
88
- try {
89
- json = JSON.parse(raw);
90
- }
91
- catch (error) {
92
- throw new Error(`Saved UAPKG login metadata at ${this.filePath} is not valid JSON. Move it aside and run \`uapkg login\` again.`, { cause: error });
93
- }
94
- const parsed = fileSchema.safeParse(json);
95
- if (!parsed.success) {
96
- throw new Error(`Saved UAPKG login metadata at ${this.filePath} is invalid. Move it aside and run \`uapkg login\` again.`);
97
- }
98
- return parsed.data;
99
- }
100
- async write(value) {
101
- await mkdir(dirname(this.filePath), { recursive: true });
102
- const temporaryPath = `${this.filePath}.${process.pid}.${randomUUID()}.tmp`;
103
- await writeFile(temporaryPath, `${JSON.stringify(value, null, 2)}\n`, {
104
- encoding: 'utf8',
105
- mode: 0o600,
106
- });
107
- await rename(temporaryPath, this.filePath);
108
- }
109
- async withMutationLock(operation) {
110
- return this.mutationLock.withLock(AUTH_METADATA_LOCK_NAMESPACE, resolve(this.filePath), operation);
111
- }
112
- }
1
+ import { resolveAuthStoragePaths } from "./AuthStoragePaths.js";
2
+ import { FileRegistryGrantLock } from "./RegistryGrantLock.js";
3
+ import { dirname, resolve } from "node:path";
4
+ import { existsSync } from "node:fs";
5
+ import { randomUUID } from "node:crypto";
6
+ import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
7
+ import { z } from "zod";
8
+
9
+ //#region src/control-plane/AuthMetadataStore.ts
10
+ const AUTH_METADATA_LOCK_NAMESPACE = "urn:uapkg:auth-metadata";
11
+ const accountSchema = z.object({
12
+ id: z.uuid(),
13
+ username: z.string().min(1),
14
+ displayName: z.string().min(1)
15
+ }).strict();
16
+ const grantSchema = z.object({
17
+ issuer: z.url(),
18
+ registryId: z.uuid(),
19
+ registryName: z.string().min(1),
20
+ grantId: z.uuid(),
21
+ clientId: z.string().min(1),
22
+ keyReference: z.string().min(1),
23
+ refreshTokenReference: z.string().min(1),
24
+ publicKeyThumbprint: z.string().min(1),
25
+ deviceName: z.string().min(1),
26
+ repositoryFingerprint: z.string().regex(/^sha256:[0-9a-f]{64}$/),
27
+ account: accountSchema,
28
+ createdAt: z.number().int().nonnegative(),
29
+ idleExpiresAt: z.number().int().positive(),
30
+ expiresAt: z.number().int().positive()
31
+ }).strict();
32
+ const fileSchema = z.object({
33
+ schemaVersion: z.literal(1),
34
+ grants: z.record(z.string(), grantSchema)
35
+ }).strict();
36
+ var AuthMetadataStore = class {
37
+ filePath;
38
+ mutationLock;
39
+ constructor(filePath = resolveAuthStoragePaths().metadataFile, mutationLock) {
40
+ this.filePath = filePath;
41
+ this.mutationLock = mutationLock ?? new FileRegistryGrantLock(resolveAuthStoragePaths(filePath).locksDirectory);
42
+ }
43
+ get path() {
44
+ return this.filePath;
45
+ }
46
+ async find(issuer, registryId) {
47
+ return (await this.read()).grants[grantKey(issuer, registryId)];
48
+ }
49
+ async upsert(metadata) {
50
+ await this.withMutationLock(async () => {
51
+ const current = await this.read();
52
+ await this.write({
53
+ schemaVersion: 1,
54
+ grants: {
55
+ ...current.grants,
56
+ [grantKey(metadata.issuer, metadata.registryId)]: metadata
57
+ }
58
+ });
59
+ });
60
+ }
61
+ async remove(issuer, registryId) {
62
+ await this.withMutationLock(async () => {
63
+ const current = await this.read();
64
+ const key = grantKey(issuer, registryId);
65
+ if (!(key in current.grants)) return;
66
+ const next = { ...current.grants };
67
+ delete next[key];
68
+ await this.write({
69
+ schemaVersion: 1,
70
+ grants: next
71
+ });
72
+ });
73
+ }
74
+ async read() {
75
+ if (!existsSync(this.filePath)) return {
76
+ schemaVersion: 1,
77
+ grants: {}
78
+ };
79
+ let raw;
80
+ try {
81
+ raw = await readFile(this.filePath, "utf8");
82
+ } catch (error) {
83
+ throw new Error(`Unable to read saved UAPKG login metadata at ${this.filePath}.`, { cause: error });
84
+ }
85
+ let json;
86
+ try {
87
+ json = JSON.parse(raw);
88
+ } catch (error) {
89
+ throw new Error(`Saved UAPKG login metadata at ${this.filePath} is not valid JSON. Move it aside and run \`uapkg login\` again.`, { cause: error });
90
+ }
91
+ const parsed = fileSchema.safeParse(json);
92
+ if (!parsed.success) throw new Error(`Saved UAPKG login metadata at ${this.filePath} is invalid. Move it aside and run \`uapkg login\` again.`);
93
+ return parsed.data;
94
+ }
95
+ async write(value) {
96
+ await mkdir(dirname(this.filePath), { recursive: true });
97
+ const temporaryPath = `${this.filePath}.${process.pid}.${randomUUID()}.tmp`;
98
+ await writeFile(temporaryPath, `${JSON.stringify(value, null, 2)}\n`, {
99
+ encoding: "utf8",
100
+ mode: 384
101
+ });
102
+ await rename(temporaryPath, this.filePath);
103
+ }
104
+ async withMutationLock(operation) {
105
+ return this.mutationLock.withLock(AUTH_METADATA_LOCK_NAMESPACE, resolve(this.filePath), operation);
106
+ }
107
+ };
113
108
  function grantKey(issuer, registryId) {
114
- return `${issuer.replace(/\/+$/, '')}|${registryId.toLowerCase()}`;
109
+ return `${issuer.replace(/\/+$/, "")}|${registryId.toLowerCase()}`;
115
110
  }
111
+
112
+ //#endregion
113
+ export { AuthMetadataStore };
116
114
  //# sourceMappingURL=AuthMetadataStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthMetadataStore.js","sourceRoot":"","sources":["../../src/control-plane/AuthMetadataStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthMetadataStore.js","names":[],"sources":["../../src/control-plane/AuthMetadataStore.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdir, readFile, rename, writeFile } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\nimport { z } from 'zod';\nimport { resolveAuthStoragePaths } from './AuthStoragePaths.js';\nimport type { AuthMetadataFile, RegistryGrantMetadata } from './ControlPlaneTypes.js';\nimport { FileRegistryGrantLock, type RegistryGrantLock } from './RegistryGrantLock.js';\n\nconst AUTH_METADATA_LOCK_NAMESPACE = 'urn:uapkg:auth-metadata';\n\nconst accountSchema = z\n .object({\n id: z.uuid(),\n username: z.string().min(1),\n displayName: z.string().min(1),\n })\n .strict();\n\nconst grantSchema = z\n .object({\n issuer: z.url(),\n registryId: z.uuid(),\n registryName: z.string().min(1),\n grantId: z.uuid(),\n clientId: z.string().min(1),\n keyReference: z.string().min(1),\n refreshTokenReference: z.string().min(1),\n publicKeyThumbprint: z.string().min(1),\n deviceName: z.string().min(1),\n repositoryFingerprint: z.string().regex(/^sha256:[0-9a-f]{64}$/),\n account: accountSchema,\n createdAt: z.number().int().nonnegative(),\n idleExpiresAt: z.number().int().positive(),\n expiresAt: z.number().int().positive(),\n })\n .strict();\n\nconst fileSchema = z\n .object({\n schemaVersion: z.literal(1),\n grants: z.record(z.string(), grantSchema),\n })\n .strict();\n\nexport class AuthMetadataStore {\n private readonly mutationLock: RegistryGrantLock;\n\n public constructor(\n private readonly filePath = resolveAuthStoragePaths().metadataFile,\n mutationLock?: RegistryGrantLock,\n ) {\n this.mutationLock = mutationLock ?? new FileRegistryGrantLock(resolveAuthStoragePaths(filePath).locksDirectory);\n }\n\n public get path(): string {\n return this.filePath;\n }\n\n public async find(issuer: string, registryId: string): Promise<RegistryGrantMetadata | undefined> {\n return (await this.read()).grants[grantKey(issuer, registryId)];\n }\n\n public async upsert(metadata: RegistryGrantMetadata): Promise<void> {\n await this.withMutationLock(async () => {\n const current = await this.read();\n await this.write({\n schemaVersion: 1,\n grants: {\n ...current.grants,\n [grantKey(metadata.issuer, metadata.registryId)]: metadata,\n },\n });\n });\n }\n\n public async remove(issuer: string, registryId: string): Promise<void> {\n await this.withMutationLock(async () => {\n const current = await this.read();\n const key = grantKey(issuer, registryId);\n if (!(key in current.grants)) return;\n const next = { ...current.grants };\n delete next[key];\n await this.write({ schemaVersion: 1, grants: next });\n });\n }\n\n private async read(): Promise<AuthMetadataFile> {\n if (!existsSync(this.filePath)) {\n return { schemaVersion: 1, grants: {} };\n }\n\n let raw: string;\n try {\n raw = await readFile(this.filePath, 'utf8');\n } catch (error) {\n throw new Error(`Unable to read saved UAPKG login metadata at ${this.filePath}.`, { cause: error });\n }\n\n let json: unknown;\n try {\n json = JSON.parse(raw) as unknown;\n } catch (error) {\n throw new Error(\n `Saved UAPKG login metadata at ${this.filePath} is not valid JSON. Move it aside and run \\`uapkg login\\` again.`,\n { cause: error },\n );\n }\n\n const parsed = fileSchema.safeParse(json);\n if (!parsed.success) {\n throw new Error(\n `Saved UAPKG login metadata at ${this.filePath} is invalid. Move it aside and run \\`uapkg login\\` again.`,\n );\n }\n return parsed.data;\n }\n\n private async write(value: AuthMetadataFile): Promise<void> {\n await mkdir(dirname(this.filePath), { recursive: true });\n const temporaryPath = `${this.filePath}.${process.pid}.${randomUUID()}.tmp`;\n await writeFile(temporaryPath, `${JSON.stringify(value, null, 2)}\\n`, {\n encoding: 'utf8',\n mode: 0o600,\n });\n await rename(temporaryPath, this.filePath);\n }\n\n private async withMutationLock<T>(operation: () => Promise<T>): Promise<T> {\n return this.mutationLock.withLock(AUTH_METADATA_LOCK_NAMESPACE, resolve(this.filePath), operation);\n }\n}\n\nfunction grantKey(issuer: string, registryId: string): string {\n return `${issuer.replace(/\\/+$/, '')}|${registryId.toLowerCase()}`;\n}\n"],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- export interface AuthStoragePaths {
2
- readonly metadataFile: string;
3
- readonly locksDirectory: string;
1
+ //#region src/control-plane/AuthStoragePaths.d.ts
2
+ interface AuthStoragePaths {
3
+ readonly metadataFile: string;
4
+ readonly locksDirectory: string;
4
5
  }
5
6
  /**
6
7
  * Resolves the CLI-owned files used for persistent authentication state.
7
8
  * An explicit metadata path keeps the historical custom-store behavior by
8
9
  * placing its locks alongside that file.
9
10
  */
10
- export declare function resolveAuthStoragePaths(metadataFile?: string): AuthStoragePaths;
11
+ declare function resolveAuthStoragePaths(metadataFile?: string): AuthStoragePaths;
12
+ //#endregion
13
+ export { AuthStoragePaths, resolveAuthStoragePaths };
11
14
  //# sourceMappingURL=AuthStoragePaths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthStoragePaths.d.ts","sourceRoot":"","sources":["../../src/control-plane/AuthStoragePaths.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAM/E"}
1
+ {"version":3,"file":"AuthStoragePaths.d.ts","names":[],"sources":["../../src/control-plane/AuthStoragePaths.ts"],"mappings":";UAMiB;WACN;WACA;;;;;;;iBAQK,wBAAwB,wBAAwB"}
@@ -1,17 +1,22 @@
1
- import { dirname, join } from 'node:path';
2
- import { resolveActiveUapkgProfileRoot } from '@uapkg/common';
3
- const AUTH_METADATA_FILE_NAME = 'auth.json';
4
- const AUTH_LOCKS_DIRECTORY_NAME = 'auth-locks';
1
+ import { resolveActiveUapkgProfileRoot } from "@uapkg/common";
2
+ import { dirname, join } from "node:path";
3
+
4
+ //#region src/control-plane/AuthStoragePaths.ts
5
+ const AUTH_METADATA_FILE_NAME = "auth.json";
6
+ const AUTH_LOCKS_DIRECTORY_NAME = "auth-locks";
5
7
  /**
6
- * Resolves the CLI-owned files used for persistent authentication state.
7
- * An explicit metadata path keeps the historical custom-store behavior by
8
- * placing its locks alongside that file.
9
- */
10
- export function resolveAuthStoragePaths(metadataFile) {
11
- const resolvedMetadataFile = metadataFile ?? join(resolveActiveUapkgProfileRoot(), AUTH_METADATA_FILE_NAME);
12
- return {
13
- metadataFile: resolvedMetadataFile,
14
- locksDirectory: join(dirname(resolvedMetadataFile), AUTH_LOCKS_DIRECTORY_NAME),
15
- };
8
+ * Resolves the CLI-owned files used for persistent authentication state.
9
+ * An explicit metadata path keeps the historical custom-store behavior by
10
+ * placing its locks alongside that file.
11
+ */
12
+ function resolveAuthStoragePaths(metadataFile) {
13
+ const resolvedMetadataFile = metadataFile ?? join(resolveActiveUapkgProfileRoot(), AUTH_METADATA_FILE_NAME);
14
+ return {
15
+ metadataFile: resolvedMetadataFile,
16
+ locksDirectory: join(dirname(resolvedMetadataFile), AUTH_LOCKS_DIRECTORY_NAME)
17
+ };
16
18
  }
19
+
20
+ //#endregion
21
+ export { resolveAuthStoragePaths };
17
22
  //# sourceMappingURL=AuthStoragePaths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthStoragePaths.js","sourceRoot":"","sources":["../../src/control-plane/AuthStoragePaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAC5C,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAO/C;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAqB;IAC3D,MAAM,oBAAoB,GAAG,YAAY,IAAI,IAAI,CAAC,6BAA6B,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC5G,OAAO;QACL,YAAY,EAAE,oBAAoB;QAClC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;KAC/E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AuthStoragePaths.js","names":[],"sources":["../../src/control-plane/AuthStoragePaths.ts"],"sourcesContent":["import { dirname, join } from 'node:path';\nimport { resolveActiveUapkgProfileRoot } from '@uapkg/common';\n\nconst AUTH_METADATA_FILE_NAME = 'auth.json';\nconst AUTH_LOCKS_DIRECTORY_NAME = 'auth-locks';\n\nexport interface AuthStoragePaths {\n readonly metadataFile: string;\n readonly locksDirectory: string;\n}\n\n/**\n * Resolves the CLI-owned files used for persistent authentication state.\n * An explicit metadata path keeps the historical custom-store behavior by\n * placing its locks alongside that file.\n */\nexport function resolveAuthStoragePaths(metadataFile?: string): AuthStoragePaths {\n const resolvedMetadataFile = metadataFile ?? join(resolveActiveUapkgProfileRoot(), AUTH_METADATA_FILE_NAME);\n return {\n metadataFile: resolvedMetadataFile,\n locksDirectory: join(dirname(resolvedMetadataFile), AUTH_LOCKS_DIRECTORY_NAME),\n };\n}\n"],"mappings":";;;;AAGA,MAAM,0BAA0B;AAChC,MAAM,4BAA4B;;;;;;AAYlC,SAAgB,wBAAwB,cAAyC;CAC/E,MAAM,uBAAuB,gBAAgB,KAAK,8BAA8B,GAAG,uBAAuB;CAC1G,OAAO;EACL,cAAc;EACd,gBAAgB,KAAK,QAAQ,oBAAoB,GAAG,yBAAyB;CAC/E;AACF"}
@@ -1,21 +1,24 @@
1
- import type { PromptService } from '../prompts/PromptService.js';
2
- import type { AccountManager } from './AccountManager.js';
3
- import type { ControlPlaneCredential } from './ControlPlaneClient.js';
4
- import type { ControlPlaneAuthMode, RegistryTrust, UAPKGCliScope } from './ControlPlaneTypes.js';
5
- import { GitHubActionsOidcCredentialProvider } from './GitHubActionsOidcCredentialProvider.js';
6
- export interface SelectedAuthentication {
7
- readonly kind: 'oidc' | 'login' | 'gat';
8
- readonly credential: ControlPlaneCredential;
9
- readonly otp?: string;
1
+ import { ControlPlaneAuthMode, RegistryTrust, UAPKGCliScope } from "./ControlPlaneTypes.js";
2
+ import { ControlPlaneCredential } from "./ControlPlaneClient.js";
3
+ import { AccountManager } from "./AccountManager.js";
4
+ import { PromptService } from "../prompts/PromptService.js";
5
+ import { GitHubActionsOidcCredentialProvider, GitHubActionsOidcTarget } from "./GitHubActionsOidcCredentialProvider.js";
6
+ //#region src/control-plane/AuthenticationSelector.d.ts
7
+ interface SelectedAuthentication {
8
+ readonly kind: 'oidc' | 'login' | 'gat';
9
+ readonly credential: ControlPlaneCredential;
10
+ readonly otp?: string;
10
11
  }
11
- export declare class AuthenticationSelector {
12
- private readonly account;
13
- private readonly prompts;
14
- private readonly oidc;
15
- private readonly isInteractive;
16
- constructor(account: AccountManager, prompts: PromptService, oidc?: GitHubActionsOidcCredentialProvider, isInteractive?: () => boolean);
17
- select(mode: ControlPlaneAuthMode, trust: RegistryTrust, scopes: readonly UAPKGCliScope[], requireRequestOtp: boolean): Promise<SelectedAuthentication>;
18
- private readOtp;
19
- private assertInteractiveRequestOtp;
12
+ declare class AuthenticationSelector {
13
+ private readonly account;
14
+ private readonly prompts;
15
+ private readonly oidc;
16
+ private readonly isInteractive;
17
+ constructor(account: AccountManager, prompts: PromptService, oidc?: GitHubActionsOidcCredentialProvider, isInteractive?: () => boolean);
18
+ select(mode: ControlPlaneAuthMode, trust: RegistryTrust, scopes: readonly UAPKGCliScope[], requireRequestOtp: boolean, oidcTarget?: GitHubActionsOidcTarget): Promise<SelectedAuthentication>;
19
+ private readOtp;
20
+ private assertInteractiveRequestOtp;
20
21
  }
22
+ //#endregion
23
+ export { AuthenticationSelector, SelectedAuthentication };
21
24
  //# sourceMappingURL=AuthenticationSelector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationSelector.d.ts","sourceRoot":"","sources":["../../src/control-plane/AuthenticationSelector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,mCAAmC,EAAE,MAAM,0CAA0C,CAAC;AAE/F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,sCAA4C,EAChD,aAAa,gBAAsE;IAGzF,MAAM,CACjB,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,sBAAsB,CAAC;YA0CpB,OAAO;IASrB,OAAO,CAAC,2BAA2B;CAMpC"}
1
+ {"version":3,"file":"AuthenticationSelector.d.ts","names":[],"sources":["../../src/control-plane/AuthenticationSelector.ts"],"mappings":";;;;;;UAUiB;WACN;WACA,YAAY;WACZ;;cAGE;mBAEQ;mBACA;mBACA;mBACA;EAJnB,YACmB,SAAS,gBACT,SAAS,eACT,OAAI,qCACJ;EAGN,OACX,MAAM,sBACN,OAAO,eACP,iBAAiB,iBACjB,4BACA,aAAa,0BACZ,QAAQ;UA6CG;UASN"}
@@ -1,64 +1,70 @@
1
- import isCI from 'is-ci';
2
- import { GitHubActionsOidcCredentialProvider } from './GitHubActionsOidcCredentialProvider.js';
3
- export class AuthenticationSelector {
4
- account;
5
- prompts;
6
- oidc;
7
- isInteractive;
8
- constructor(account, prompts, oidc = new GitHubActionsOidcCredentialProvider(), isInteractive = () => Boolean(process.stdin.isTTY && process.stdout.isTTY && !isCI)) {
9
- this.account = account;
10
- this.prompts = prompts;
11
- this.oidc = oidc;
12
- this.isInteractive = isInteractive;
13
- }
14
- async select(mode, trust, scopes, requireRequestOtp) {
15
- if (mode === 'oidc' || (mode === 'auto' && this.oidc.isAvailable())) {
16
- const accessToken = await this.oidc.exchange(trust);
17
- return { kind: 'oidc', credential: { kind: 'bearer', accessToken } };
18
- }
19
- if (mode === 'login' || (mode === 'auto' && (await this.account.hasGrant(trust)))) {
20
- if (requireRequestOtp)
21
- this.assertInteractiveRequestOtp();
22
- const access = await this.account.getAccessCredential(trust, scopes);
23
- return {
24
- kind: 'login',
25
- credential: access.credential,
26
- otp: requireRequestOtp ? await this.readOtp() : undefined,
27
- };
28
- }
29
- const environmentToken = process.env.UAPKG_TOKEN?.trim();
30
- if (mode === 'gat' || (mode === 'auto' && environmentToken)) {
31
- if (!this.isInteractive()) {
32
- throw new Error('Human GAT authentication requires an attended TTY. Headless publishing must use a configured GitHub Actions OIDC trusted publisher.');
33
- }
34
- const accessToken = environmentToken || (await this.prompts.secret('UAPKG granular access token')).trim();
35
- if (!accessToken)
36
- throw new Error('A granular access token is required.');
37
- return {
38
- kind: 'gat',
39
- credential: { kind: 'bearer', accessToken },
40
- otp: requireRequestOtp ? await this.readOtp() : undefined,
41
- };
42
- }
43
- throw new Error([
44
- `No supported publishing credential is available for "${trust.alias}".`,
45
- '',
46
- `Run \`uapkg login --registry ${trust.alias}\` on a browser-capable workstation,`,
47
- 'set UAPKG_TOKEN for an attended GAT publish, or configure GitHub Actions OIDC.',
48
- ].join('\n'));
49
- }
50
- async readOtp() {
51
- this.assertInteractiveRequestOtp();
52
- const otp = (await this.prompts.secret('Current TOTP code')).trim();
53
- if (!/^[0-9]{6}$/.test(otp)) {
54
- throw new Error('A current 6-digit TOTP code is required for this publishing request.');
55
- }
56
- return otp;
57
- }
58
- assertInteractiveRequestOtp() {
59
- if (this.isInteractive())
60
- return;
61
- throw new Error('Request-scoped TOTP confirmation requires an attended TTY. Human publishing is not supported in headless environments.');
62
- }
63
- }
1
+ import { GitHubActionsOidcCredentialProvider } from "./GitHubActionsOidcCredentialProvider.js";
2
+ import isCI from "is-ci";
3
+
4
+ //#region src/control-plane/AuthenticationSelector.ts
5
+ var AuthenticationSelector = class {
6
+ account;
7
+ prompts;
8
+ oidc;
9
+ isInteractive;
10
+ constructor(account, prompts, oidc = new GitHubActionsOidcCredentialProvider(), isInteractive = () => Boolean(process.stdin.isTTY && process.stdout.isTTY && !isCI)) {
11
+ this.account = account;
12
+ this.prompts = prompts;
13
+ this.oidc = oidc;
14
+ this.isInteractive = isInteractive;
15
+ }
16
+ async select(mode, trust, scopes, requireRequestOtp, oidcTarget) {
17
+ if (mode === "oidc" || mode === "auto" && this.oidc.isAvailable()) {
18
+ if (!oidcTarget) throw new Error("GitHub Actions OIDC requires a target package resolved from the requested operation.");
19
+ return {
20
+ kind: "oidc",
21
+ credential: {
22
+ kind: "bearer",
23
+ accessToken: await this.oidc.exchange(trust, oidcTarget)
24
+ }
25
+ };
26
+ }
27
+ if (mode === "login" || mode === "auto" && await this.account.hasGrant(trust)) {
28
+ if (requireRequestOtp) this.assertInteractiveRequestOtp();
29
+ return {
30
+ kind: "login",
31
+ credential: (await this.account.getAccessCredential(trust, scopes)).credential,
32
+ otp: requireRequestOtp ? await this.readOtp() : void 0
33
+ };
34
+ }
35
+ const environmentToken = process.env.UAPKG_TOKEN?.trim();
36
+ if (mode === "gat" || mode === "auto" && environmentToken) {
37
+ if (!this.isInteractive()) throw new Error("Human GAT authentication requires an attended TTY. Headless publishing must use a configured GitHub Actions OIDC trusted publisher.");
38
+ const accessToken = environmentToken || (await this.prompts.secret("UAPKG granular access token")).trim();
39
+ if (!accessToken) throw new Error("A granular access token is required.");
40
+ return {
41
+ kind: "gat",
42
+ credential: {
43
+ kind: "bearer",
44
+ accessToken
45
+ },
46
+ otp: requireRequestOtp ? await this.readOtp() : void 0
47
+ };
48
+ }
49
+ throw new Error([
50
+ `No supported publishing credential is available for "${trust.alias}".`,
51
+ "",
52
+ `Run \`uapkg login --registry ${trust.alias}\` on a browser-capable workstation,`,
53
+ "set UAPKG_TOKEN for an attended GAT publish, or configure GitHub Actions OIDC."
54
+ ].join("\n"));
55
+ }
56
+ async readOtp() {
57
+ this.assertInteractiveRequestOtp();
58
+ const otp = (await this.prompts.secret("Current TOTP code")).trim();
59
+ if (!/^[0-9]{6}$/.test(otp)) throw new Error("A current 6-digit TOTP code is required for this publishing request.");
60
+ return otp;
61
+ }
62
+ assertInteractiveRequestOtp() {
63
+ if (this.isInteractive()) return;
64
+ throw new Error("Request-scoped TOTP confirmation requires an attended TTY. Human publishing is not supported in headless environments.");
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ export { AuthenticationSelector };
64
70
  //# sourceMappingURL=AuthenticationSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationSelector.js","sourceRoot":"","sources":["../../src/control-plane/AuthenticationSelector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticationSelector.js","names":[],"sources":["../../src/control-plane/AuthenticationSelector.ts"],"sourcesContent":["import isCI from 'is-ci';\nimport type { PromptService } from '../prompts/PromptService.js';\nimport type { AccountManager } from './AccountManager.js';\nimport type { ControlPlaneCredential } from './ControlPlaneClient.js';\nimport type { ControlPlaneAuthMode, RegistryTrust, UAPKGCliScope } from './ControlPlaneTypes.js';\nimport {\n GitHubActionsOidcCredentialProvider,\n type GitHubActionsOidcTarget,\n} from './GitHubActionsOidcCredentialProvider.js';\n\nexport interface SelectedAuthentication {\n readonly kind: 'oidc' | 'login' | 'gat';\n readonly credential: ControlPlaneCredential;\n readonly otp?: string;\n}\n\nexport class AuthenticationSelector {\n public constructor(\n private readonly account: AccountManager,\n private readonly prompts: PromptService,\n private readonly oidc = new GitHubActionsOidcCredentialProvider(),\n private readonly isInteractive = () => Boolean(process.stdin.isTTY && process.stdout.isTTY && !isCI),\n ) {}\n\n public async select(\n mode: ControlPlaneAuthMode,\n trust: RegistryTrust,\n scopes: readonly UAPKGCliScope[],\n requireRequestOtp: boolean,\n oidcTarget?: GitHubActionsOidcTarget,\n ): Promise<SelectedAuthentication> {\n if (mode === 'oidc' || (mode === 'auto' && this.oidc.isAvailable())) {\n if (!oidcTarget) {\n throw new Error('GitHub Actions OIDC requires a target package resolved from the requested operation.');\n }\n const accessToken = await this.oidc.exchange(trust, oidcTarget);\n return { kind: 'oidc', credential: { kind: 'bearer', accessToken } };\n }\n\n if (mode === 'login' || (mode === 'auto' && (await this.account.hasGrant(trust)))) {\n if (requireRequestOtp) this.assertInteractiveRequestOtp();\n const access = await this.account.getAccessCredential(trust, scopes);\n return {\n kind: 'login',\n credential: access.credential,\n otp: requireRequestOtp ? await this.readOtp() : undefined,\n };\n }\n\n const environmentToken = process.env.UAPKG_TOKEN?.trim();\n if (mode === 'gat' || (mode === 'auto' && environmentToken)) {\n if (!this.isInteractive()) {\n throw new Error(\n 'Human GAT authentication requires an attended TTY. Headless publishing must use a configured GitHub Actions OIDC trusted publisher.',\n );\n }\n const accessToken = environmentToken || (await this.prompts.secret('UAPKG granular access token')).trim();\n if (!accessToken) throw new Error('A granular access token is required.');\n return {\n kind: 'gat',\n credential: { kind: 'bearer', accessToken },\n otp: requireRequestOtp ? await this.readOtp() : undefined,\n };\n }\n\n throw new Error(\n [\n `No supported publishing credential is available for \"${trust.alias}\".`,\n '',\n `Run \\`uapkg login --registry ${trust.alias}\\` on a browser-capable workstation,`,\n 'set UAPKG_TOKEN for an attended GAT publish, or configure GitHub Actions OIDC.',\n ].join('\\n'),\n );\n }\n\n private async readOtp(): Promise<string> {\n this.assertInteractiveRequestOtp();\n const otp = (await this.prompts.secret('Current TOTP code')).trim();\n if (!/^[0-9]{6}$/.test(otp)) {\n throw new Error('A current 6-digit TOTP code is required for this publishing request.');\n }\n return otp;\n }\n\n private assertInteractiveRequestOtp(): void {\n if (this.isInteractive()) return;\n throw new Error(\n 'Request-scoped TOTP confirmation requires an attended TTY. Human publishing is not supported in headless environments.',\n );\n }\n}\n"],"mappings":";;;;AAgBA,IAAa,yBAAb,MAAoC;CAEf;CACA;CACA;CACA;CAJnB,AAAO,YACL,AAAiB,SACjB,AAAiB,SACjB,AAAiB,OAAO,IAAI,oCAAoC,GAChE,AAAiB,sBAAsB,QAAQ,QAAQ,MAAM,SAAS,QAAQ,OAAO,SAAS,CAAC,IAAI,GACnG;EAJiB;EACA;EACA;EACA;CAChB;CAEH,MAAa,OACX,MACA,OACA,QACA,mBACA,YACiC;EACjC,IAAI,SAAS,UAAW,SAAS,UAAU,KAAK,KAAK,YAAY,GAAI;GACnE,IAAI,CAAC,YACH,MAAM,IAAI,MAAM,sFAAsF;GAGxG,OAAO;IAAE,MAAM;IAAQ,YAAY;KAAE,MAAM;KAAU,mBAD3B,KAAK,KAAK,SAAS,OAAO,UAAU;IACG;GAAE;EACrE;EAEA,IAAI,SAAS,WAAY,SAAS,UAAW,MAAM,KAAK,QAAQ,SAAS,KAAK,GAAK;GACjF,IAAI,mBAAmB,KAAK,4BAA4B;GAExD,OAAO;IACL,MAAM;IACN,aAAY,MAHO,KAAK,QAAQ,oBAAoB,OAAO,MAAM,EAG/C,CAAC;IACnB,KAAK,oBAAoB,MAAM,KAAK,QAAQ,IAAI;GAClD;EACF;EAEA,MAAM,mBAAmB,QAAQ,IAAI,aAAa,KAAK;EACvD,IAAI,SAAS,SAAU,SAAS,UAAU,kBAAmB;GAC3D,IAAI,CAAC,KAAK,cAAc,GACtB,MAAM,IAAI,MACR,qIACF;GAEF,MAAM,cAAc,qBAAqB,MAAM,KAAK,QAAQ,OAAO,6BAA6B,EAAC,CAAE,KAAK;GACxG,IAAI,CAAC,aAAa,MAAM,IAAI,MAAM,sCAAsC;GACxE,OAAO;IACL,MAAM;IACN,YAAY;KAAE,MAAM;KAAU;IAAY;IAC1C,KAAK,oBAAoB,MAAM,KAAK,QAAQ,IAAI;GAClD;EACF;EAEA,MAAM,IAAI,MACR;GACE,wDAAwD,MAAM,MAAM;GACpE;GACA,gCAAgC,MAAM,MAAM;GAC5C;EACF,CAAC,CAAC,KAAK,IAAI,CACb;CACF;CAEA,MAAc,UAA2B;EACvC,KAAK,4BAA4B;EACjC,MAAM,OAAO,MAAM,KAAK,QAAQ,OAAO,mBAAmB,EAAC,CAAE,KAAK;EAClE,IAAI,CAAC,aAAa,KAAK,GAAG,GACxB,MAAM,IAAI,MAAM,sEAAsE;EAExF,OAAO;CACT;CAEA,AAAQ,8BAAoC;EAC1C,IAAI,KAAK,cAAc,GAAG;EAC1B,MAAM,IAAI,MACR,wHACF;CACF;AACF"}