@wtf/release-docs 9.1.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (884) hide show
  1. package/README.md +3 -3
  2. package/api/.generated +244 -145
  3. package/api/@wtf/release/README.md +55 -0
  4. package/api/@wtf/release/contract/README.md +60 -0
  5. package/api/@wtf/release/contract/interfaces/Plan.md +46 -0
  6. package/api/@wtf/release/contract/interfaces/Release.md +96 -0
  7. package/api/@wtf/release/contract/interfaces/ReleaseSteps.md +203 -0
  8. package/api/@wtf/release/contract/type-aliases/OptionalStep.md +13 -0
  9. package/api/@wtf/release/contract/type-aliases/ReleasingEcosystem.md +44 -0
  10. package/api/@wtf/release/driver/README.md +43 -0
  11. package/api/@wtf/release/driver/functions/runStep.md +50 -0
  12. package/api/@wtf/release/driver/interfaces/StepOutcome.md +31 -0
  13. package/api/@wtf/release/driver/type-aliases/EcosystemsOf.md +14 -0
  14. package/api/@wtf/release/driver/type-aliases/Step.md +13 -0
  15. package/api/@wtf/release/driver/variables/STEPS.md +13 -0
  16. package/api/@wtf/{release-trains → release}/ecosystem/README.md +11 -11
  17. package/api/@wtf/release/ecosystem/functions/isEcosystem.md +27 -0
  18. package/api/@wtf/{release-trains → release}/ecosystem/functions/loadEcosystems.md +5 -5
  19. package/api/@wtf/release/ecosystem/functions/readPackages.md +33 -0
  20. package/api/@wtf/release/ecosystem/interfaces/Dependency.md +43 -0
  21. package/api/@wtf/{release-trains → release}/ecosystem/interfaces/Ecosystem.md +23 -14
  22. package/api/@wtf/release/ecosystem/interfaces/EcosystemContext.md +56 -0
  23. package/api/@wtf/release/ecosystem/interfaces/EcosystemPackages.md +35 -0
  24. package/api/@wtf/release/ecosystem/interfaces/Package.md +71 -0
  25. package/api/@wtf/release/ecosystem/type-aliases/DependencyKind.md +16 -0
  26. package/api/@wtf/{release-trains → release}/ecosystem/type-aliases/ModuleLoader.md +2 -2
  27. package/api/@wtf/release/ecosystem/variables/DEPENDENCY_KINDS.md +13 -0
  28. package/api/@wtf/release/errors/README.md +41 -0
  29. package/api/@wtf/{release-system → release}/errors/classes/ReleaseError.md +10 -19
  30. package/api/@wtf/release/errors/functions/isReleaseError.md +28 -0
  31. package/api/@wtf/release/errors/functions/throwAll.md +26 -0
  32. package/api/@wtf/{release-system → release}/errors/type-aliases/ErrorClass.md +2 -2
  33. package/api/@wtf/release/errors/type-aliases/ReleaseErrorCode.md +13 -0
  34. package/api/@wtf/release/errors/variables/RELEASE_ERRORS.md +35 -0
  35. package/api/@wtf/release/files/README.md +38 -0
  36. package/api/@wtf/release/files/functions/copy.md +45 -0
  37. package/api/@wtf/release/files/functions/exists.md +33 -0
  38. package/api/@wtf/release/files/functions/makeDir.md +33 -0
  39. package/api/@wtf/release/files/functions/readBytes.md +33 -0
  40. package/api/@wtf/release/files/functions/readDir.md +33 -0
  41. package/api/@wtf/release/files/functions/readFile.md +33 -0
  42. package/api/@wtf/release/files/functions/remove.md +34 -0
  43. package/api/@wtf/release/files/functions/writeFile.md +38 -0
  44. package/api/@wtf/release/files/interfaces/DirEntry.md +27 -0
  45. package/api/@wtf/release/forge/README.md +49 -0
  46. package/api/@wtf/release/forge/functions/linksOf.md +49 -0
  47. package/api/@wtf/release/forge/interfaces/Forge.md +113 -0
  48. package/api/@wtf/release/forge/interfaces/ForgeRun.md +41 -0
  49. package/api/@wtf/release/forge/interfaces/LinksOptions.md +43 -0
  50. package/api/@wtf/release/forge/interfaces/PackageRegistry.md +41 -0
  51. package/api/@wtf/release/forge/interfaces/ReleaseLink.md +41 -0
  52. package/api/@wtf/release/forge/interfaces/Released.md +91 -0
  53. package/api/@wtf/{release-trains → release}/generated/README.md +8 -8
  54. package/api/@wtf/{release-trains → release}/generated/functions/filesIn.md +4 -4
  55. package/api/@wtf/{release-trains → release}/generated/functions/formatGenerated.md +2 -2
  56. package/api/@wtf/release/generated/functions/listGenerated.md +35 -0
  57. package/api/@wtf/{release-trains → release}/generated/functions/parseGenerated.md +2 -2
  58. package/api/@wtf/release/generated/functions/readGenerated.md +33 -0
  59. package/api/@wtf/{release-trains → release}/generated/functions/stageGenerated.md +2 -2
  60. package/api/@wtf/release/generated/functions/stageGeneratedFolders.md +29 -0
  61. package/api/@wtf/release/generated/functions/unlistedIn.md +36 -0
  62. package/api/@wtf/release/generated/interfaces/GeneratedOptions.md +21 -0
  63. package/api/@wtf/release/generated/interfaces/StageOptions.md +76 -0
  64. package/api/@wtf/release/generated/variables/GENERATED.md +13 -0
  65. package/api/@wtf/{release-system → release}/git/README.md +11 -10
  66. package/api/@wtf/{release-system → release}/git/functions/commitsSince.md +3 -3
  67. package/api/@wtf/{release-system → release}/git/functions/filesOfCommits.md +3 -3
  68. package/api/@wtf/{release-system → release}/git/functions/git.md +3 -3
  69. package/api/@wtf/release/git/functions/revisionOf.md +33 -0
  70. package/api/@wtf/release/git/functions/tagsOfRepo.md +33 -0
  71. package/api/@wtf/{release-system → release}/git/functions/trackedFiles.md +3 -3
  72. package/api/@wtf/release/git/interfaces/GitContext.md +26 -0
  73. package/api/@wtf/release/git/interfaces/LogCommit.md +43 -0
  74. package/api/@wtf/release/interfaces/RepoContext.md +57 -0
  75. package/api/@wtf/release/order/README.md +37 -0
  76. package/api/@wtf/{release-trains/packages → release/order}/functions/normalizeDir.md +2 -2
  77. package/api/@wtf/{release-trains/packages → release/order}/functions/publishOrder.md +7 -6
  78. package/api/@wtf/release/order/interfaces/OrderFault.md +39 -0
  79. package/api/@wtf/release/order/interfaces/OrderPins.md +27 -0
  80. package/api/@wtf/release/order/interfaces/PublishOrder.md +35 -0
  81. package/api/@wtf/{release-system → release}/paths/README.md +4 -4
  82. package/api/@wtf/{release-system → release}/paths/functions/normalizePath.md +2 -2
  83. package/api/@wtf/{release-system → release}/paths/functions/pathMatcher.md +2 -2
  84. package/api/@wtf/{release-system → release}/paths/type-aliases/PathMatcher.md +2 -2
  85. package/api/@wtf/{release-system → release}/posix/README.md +5 -5
  86. package/api/@wtf/{release-system → release}/posix/functions/basenameOf.md +2 -2
  87. package/api/@wtf/{release-system → release}/posix/functions/dirnameOf.md +2 -2
  88. package/api/@wtf/{release-system → release}/posix/functions/joinPath.md +2 -2
  89. package/api/@wtf/{release-system → release}/posix/functions/relativePath.md +2 -2
  90. package/api/@wtf/{release-system → release}/posix/functions/resolvePath.md +3 -3
  91. package/api/@wtf/release/process/README.md +30 -0
  92. package/api/@wtf/release/process/functions/envOf.md +34 -0
  93. package/api/@wtf/release/process/functions/run.md +48 -0
  94. package/api/@wtf/release/process/interfaces/RunOptions.md +52 -0
  95. package/api/@wtf/release/process/interfaces/RunResult.md +35 -0
  96. package/api/@wtf/release/type-aliases/ReleasePlatform.md +22 -0
  97. package/api/@wtf/release/type-aliases/RepoPlatform.md +21 -0
  98. package/api/@wtf/{release-system → release}/validator/README.md +6 -5
  99. package/api/@wtf/{release-system → release}/validator/functions/allOf.md +2 -2
  100. package/api/@wtf/{release-system → release}/validator/functions/anyObject.md +3 -3
  101. package/api/@wtf/{release-system → release}/validator/functions/anyOf.md +2 -2
  102. package/api/@wtf/{release-system → release}/validator/functions/arrayOf.md +2 -2
  103. package/api/@wtf/{release-system → release}/validator/functions/booleanOf.md +2 -2
  104. package/api/@wtf/{release-system → release}/validator/functions/errorOf.md +2 -2
  105. package/api/@wtf/{release-system → release}/validator/functions/errorsOf.md +2 -2
  106. package/api/@wtf/{release-system → release}/validator/functions/exclusive.md +2 -2
  107. package/api/@wtf/release/validator/functions/issueOf.md +45 -0
  108. package/api/@wtf/{release-system → release}/validator/functions/issuesOf.md +2 -2
  109. package/api/@wtf/{release-system → release}/validator/functions/objectOf.md +2 -2
  110. package/api/@wtf/{release-system → release}/validator/functions/oneOf.md +2 -2
  111. package/api/@wtf/{release-system → release}/validator/functions/orFunction.md +2 -2
  112. package/api/@wtf/{release-system → release}/validator/functions/pathText.md +2 -2
  113. package/api/@wtf/{release-system → release}/validator/functions/recordOf.md +2 -2
  114. package/api/@wtf/{release-system → release}/validator/functions/refined.md +2 -2
  115. package/api/@wtf/{release-system → release}/validator/functions/stringOf.md +2 -2
  116. package/api/@wtf/{release-system → release}/validator/functions/tupleOf.md +2 -2
  117. package/api/@wtf/release/validator/functions/validatorOf.md +42 -0
  118. package/api/@wtf/{release-system → release}/validator/interfaces/ArrayOptions.md +6 -6
  119. package/api/@wtf/{release-system → release}/validator/interfaces/IssueOptions.md +5 -5
  120. package/api/@wtf/{release-system → release}/validator/interfaces/ObjectOptions.md +6 -6
  121. package/api/@wtf/release/validator/interfaces/OptionIssue.md +63 -0
  122. package/api/@wtf/release/validator/interfaces/Property.md +49 -0
  123. package/api/@wtf/{release-system → release}/validator/interfaces/RecordOptions.md +7 -7
  124. package/api/@wtf/{release-system → release}/validator/interfaces/StringOptions.md +7 -7
  125. package/api/@wtf/{release-system → release}/validator/interfaces/Validator.md +5 -5
  126. package/api/@wtf/release/validator/type-aliases/JsonSchema.md +17 -0
  127. package/api/@wtf/release/validator/type-aliases/Path.md +13 -0
  128. package/api/@wtf/release-cargo/README.md +11 -8
  129. package/api/@wtf/release-cargo/auth/README.md +1 -1
  130. package/api/@wtf/release-cargo/auth/functions/mask.md +1 -1
  131. package/api/@wtf/release-cargo/auth/functions/tokenVariableOf.md +1 -1
  132. package/api/@wtf/release-cargo/auth/functions/trustedPublishing.md +1 -1
  133. package/api/@wtf/release-cargo/auth/interfaces/HttpResponse.md +5 -5
  134. package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishing.md +5 -5
  135. package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishingOptions.md +6 -6
  136. package/api/@wtf/release-cargo/auth/type-aliases/HttpFetch.md +1 -1
  137. package/api/@wtf/release-cargo/auth/variables/CRATES_IO_API.md +1 -1
  138. package/api/@wtf/release-cargo/auth/variables/ID_TOKEN_VARIABLE.md +1 -1
  139. package/api/@wtf/release-cargo/auth/variables/USER_AGENT.md +3 -3
  140. package/api/@wtf/release-cargo/crates/README.md +11 -10
  141. package/api/@wtf/release-cargo/crates/functions/publishOrder.md +1 -1
  142. package/api/@wtf/release-cargo/crates/functions/publishable.md +1 -1
  143. package/api/@wtf/release-cargo/crates/functions/readWorkspace.md +9 -8
  144. package/api/@wtf/release-cargo/crates/functions/selectCrates.md +16 -16
  145. package/api/@wtf/release-cargo/crates/functions/selects.md +36 -0
  146. package/api/@wtf/release-cargo/crates/interfaces/Selection.md +15 -15
  147. package/api/@wtf/release-cargo/ecosystem/README.md +9 -6
  148. package/api/@wtf/release-cargo/ecosystem/functions/packagesAt.md +6 -6
  149. package/api/@wtf/release-cargo/ecosystem/functions/packagesOfTree.md +3 -3
  150. package/api/@wtf/release-cargo/ecosystem/functions/packagesOfWorkspace.md +2 -2
  151. package/api/@wtf/release-cargo/ecosystem/functions/resolveRequirement.md +1 -1
  152. package/api/@wtf/release-cargo/ecosystem/functions/satisfiesRequirement.md +1 -1
  153. package/api/@wtf/release-cargo/ecosystem/functions/semverRange.md +1 -1
  154. package/api/@wtf/release-cargo/ecosystem/interfaces/CargoPackage.md +17 -17
  155. package/api/@wtf/release-cargo/ecosystem/variables/cargoEcosystem.md +6 -4
  156. package/api/@wtf/release-cargo/errors/README.md +4 -5
  157. package/api/@wtf/release-cargo/errors/classes/CargoError.md +18 -33
  158. package/api/@wtf/release-cargo/errors/type-aliases/CargoErrorCode.md +1 -1
  159. package/api/@wtf/release-cargo/errors/variables/CARGO_ERRORS.md +8 -4
  160. package/api/@wtf/release-cargo/interfaces/Crate.md +6 -6
  161. package/api/@wtf/release-cargo/interfaces/CrateDependency.md +6 -6
  162. package/api/@wtf/release-cargo/interfaces/Workspace.md +3 -3
  163. package/api/@wtf/release-cargo/publish/README.md +4 -5
  164. package/api/@wtf/release-cargo/publish/functions/publishCrates.md +5 -4
  165. package/api/@wtf/release-cargo/publish/interfaces/PublishCratesOptions.md +33 -20
  166. package/api/@wtf/release-cargo/publish/interfaces/PublishedCrate.md +5 -5
  167. package/api/@wtf/release-cargo/publish/type-aliases/CrateStatus.md +1 -1
  168. package/api/@wtf/release-cargo/publish/variables/RECHECK_WAITS.md +1 -1
  169. package/api/@wtf/release-cargo/registry/README.md +5 -3
  170. package/api/@wtf/release-cargo/registry/functions/crateUrl.md +1 -1
  171. package/api/@wtf/release-cargo/registry/functions/indexHasVersion.md +1 -1
  172. package/api/@wtf/release-cargo/registry/functions/indexLookup.md +50 -0
  173. package/api/@wtf/release-cargo/registry/functions/indexPath.md +1 -1
  174. package/api/@wtf/release-cargo/registry/variables/CRATES_IO_INDEX.md +1 -1
  175. package/api/@wtf/release-cargo/release/README.md +54 -0
  176. package/api/@wtf/release-cargo/release/functions/prepareCrates.md +42 -0
  177. package/api/@wtf/release-cargo/release/functions/publishPlan.md +53 -0
  178. package/api/@wtf/release-cargo/release/functions/publishedOf.md +36 -0
  179. package/api/@wtf/release-cargo/release/functions/verifyCrates.md +44 -0
  180. package/api/@wtf/release-cargo/release/interfaces/CargoOptions.md +89 -0
  181. package/api/@wtf/release-cargo/release/type-aliases/CargoPlan.md +13 -0
  182. package/api/@wtf/release-cargo/stamp/README.md +6 -5
  183. package/api/@wtf/release-cargo/stamp/functions/checkVersions.md +1 -1
  184. package/api/@wtf/release-cargo/stamp/functions/inheritsVersion.md +1 -1
  185. package/api/@wtf/release-cargo/stamp/functions/stampManifest.md +1 -1
  186. package/api/@wtf/release-cargo/stamp/functions/stampWorkspace.md +19 -10
  187. package/api/@wtf/release-cargo/stamp/interfaces/StampOptions.md +4 -4
  188. package/api/@wtf/release-cargo/stamp/interfaces/StampWorkspaceOptions.md +21 -0
  189. package/api/@wtf/release-cargo/stamp/interfaces/Stamped.md +3 -3
  190. package/api/@wtf/release-cargo/stamp/interfaces/StampedWorkspace.md +4 -4
  191. package/api/@wtf/release-cargo/type-aliases/DependencyKind.md +1 -1
  192. package/api/@wtf/release-go/README.md +13 -9
  193. package/api/@wtf/release-go/ecosystem/README.md +13 -6
  194. package/api/@wtf/release-go/ecosystem/functions/packagesOfModules.md +2 -2
  195. package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +4 -4
  196. package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +2 -2
  197. package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +1 -1
  198. package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +17 -17
  199. package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +6 -3
  200. package/api/@wtf/release-go/errors/README.md +4 -5
  201. package/api/@wtf/release-go/errors/classes/GoError.md +17 -32
  202. package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +1 -1
  203. package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +8 -4
  204. package/api/@wtf/release-go/gomod/functions/entriesOf.md +1 -1
  205. package/api/@wtf/release-go/gomod/functions/linesOf.md +1 -1
  206. package/api/@wtf/release-go/gomod/functions/readGoMod.md +1 -1
  207. package/api/@wtf/release-go/gomod/functions/tokensOf.md +1 -1
  208. package/api/@wtf/release-go/gomod/interfaces/Entry.md +4 -4
  209. package/api/@wtf/release-go/gomod/interfaces/GoMod.md +4 -4
  210. package/api/@wtf/release-go/gomod/interfaces/GoReplace.md +6 -6
  211. package/api/@wtf/release-go/gomod/interfaces/GoRequire.md +4 -4
  212. package/api/@wtf/release-go/gomod/interfaces/Token.md +5 -5
  213. package/api/@wtf/release-go/interfaces/GoIdentity.md +31 -0
  214. package/api/@wtf/release-go/interfaces/GoModule.md +6 -6
  215. package/api/@wtf/release-go/interfaces/GoOptions.md +86 -0
  216. package/api/@wtf/release-go/modules/README.md +9 -9
  217. package/api/@wtf/release-go/modules/functions/isFetchable.md +1 -1
  218. package/api/@wtf/release-go/modules/functions/isGoMod.md +1 -1
  219. package/api/@wtf/release-go/modules/functions/majorErrors.md +1 -1
  220. package/api/@wtf/release-go/modules/functions/majorOfPath.md +1 -1
  221. package/api/@wtf/release-go/modules/functions/modulesAt.md +3 -3
  222. package/api/@wtf/release-go/modules/functions/modulesOf.md +1 -1
  223. package/api/@wtf/release-go/modules/functions/readModules.md +4 -5
  224. package/api/@wtf/release-go/modules/functions/selectModules.md +13 -11
  225. package/api/@wtf/release-go/modules/interfaces/Selection.md +10 -11
  226. package/api/@wtf/release-go/release/README.md +45 -0
  227. package/api/@wtf/release-go/release/functions/isGoVersion.md +28 -0
  228. package/api/@wtf/release-go/release/functions/prepareModules.md +47 -0
  229. package/api/@wtf/release-go/release/functions/publishModules.md +54 -0
  230. package/api/@wtf/release-go/release/functions/releaseModules.md +48 -0
  231. package/api/@wtf/release-go/release/functions/releasedOf.md +41 -0
  232. package/api/@wtf/release-go/release/functions/verifyModules.md +44 -0
  233. package/api/@wtf/release-go/release/interfaces/ReleaseModules.md +31 -0
  234. package/api/@wtf/release-go/stamp/README.md +6 -5
  235. package/api/@wtf/release-go/stamp/functions/checkVersions.md +1 -1
  236. package/api/@wtf/release-go/stamp/functions/stampGoMod.md +1 -1
  237. package/api/@wtf/release-go/stamp/functions/stampModules.md +16 -10
  238. package/api/@wtf/release-go/stamp/interfaces/StampOptions.md +21 -0
  239. package/api/@wtf/release-go/stamp/interfaces/Stamped.md +3 -3
  240. package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +13 -3
  241. package/api/@wtf/release-go/tags/README.md +3 -6
  242. package/api/@wtf/release-go/tags/functions/askProxy.md +6 -6
  243. package/api/@wtf/release-go/tags/functions/maskCredentials.md +1 -1
  244. package/api/@wtf/release-go/tags/functions/releaseCommit.md +16 -9
  245. package/api/@wtf/release-go/tags/functions/remoteTags.md +3 -3
  246. package/api/@wtf/release-go/tags/functions/tagModules.md +3 -3
  247. package/api/@wtf/release-go/tags/functions/tagOfModule.md +1 -1
  248. package/api/@wtf/release-go/tags/functions/tagPrefix.md +1 -1
  249. package/api/@wtf/release-go/tags/interfaces/CommitIdentity.md +35 -0
  250. package/api/@wtf/release-go/tags/interfaces/TagModulesOptions.md +42 -10
  251. package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +5 -5
  252. package/api/@wtf/release-go/tags/interfaces/TagsContext.md +22 -0
  253. package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +1 -1
  254. package/api/@wtf/release-maven/README.md +11 -8
  255. package/api/@wtf/release-maven/artifacts/README.md +11 -6
  256. package/api/@wtf/release-maven/artifacts/functions/groupIdOf.md +1 -1
  257. package/api/@wtf/release-maven/artifacts/functions/installsOf.md +1 -1
  258. package/api/@wtf/release-maven/artifacts/functions/isPomFile.md +1 -1
  259. package/api/@wtf/release-maven/artifacts/functions/isRange.md +1 -1
  260. package/api/@wtf/release-maven/artifacts/functions/modulesOf.md +1 -1
  261. package/api/@wtf/release-maven/artifacts/functions/nameOf.md +1 -1
  262. package/api/@wtf/release-maven/artifacts/functions/publishOrder.md +1 -1
  263. package/api/@wtf/release-maven/artifacts/functions/readModules.md +3 -3
  264. package/api/@wtf/release-maven/artifacts/functions/readPoms.md +4 -4
  265. package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +1 -1
  266. package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +8 -8
  267. package/api/@wtf/release-maven/ecosystem/README.md +28 -13
  268. package/api/@wtf/release-maven/ecosystem/functions/checkReleaseVersion.md +32 -0
  269. package/api/@wtf/release-maven/ecosystem/functions/compareVersions.md +1 -1
  270. package/api/@wtf/release-maven/ecosystem/functions/parseRange.md +1 -1
  271. package/api/@wtf/release-maven/ecosystem/functions/resolveVersion.md +1 -1
  272. package/api/@wtf/release-maven/ecosystem/functions/satisfiesVersion.md +1 -1
  273. package/api/@wtf/release-maven/ecosystem/interfaces/Bound.md +3 -3
  274. package/api/@wtf/release-maven/ecosystem/interfaces/MavenReleaseOptions.md +77 -0
  275. package/api/@wtf/release-maven/ecosystem/interfaces/Restriction.md +3 -3
  276. package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +5 -3
  277. package/api/@wtf/release-maven/errors/README.md +3 -4
  278. package/api/@wtf/release-maven/errors/classes/MavenError.md +17 -32
  279. package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +1 -1
  280. package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +4 -4
  281. package/api/@wtf/release-maven/interfaces/MavenModule.md +24 -24
  282. package/api/@wtf/release-maven/pom/functions/childOf.md +1 -1
  283. package/api/@wtf/release-maven/pom/functions/childrenOf.md +1 -1
  284. package/api/@wtf/release-maven/pom/functions/dependencyOf.md +1 -1
  285. package/api/@wtf/release-maven/pom/functions/escapeXml.md +1 -1
  286. package/api/@wtf/release-maven/pom/functions/parseXml.md +1 -1
  287. package/api/@wtf/release-maven/pom/functions/readPom.md +1 -1
  288. package/api/@wtf/release-maven/pom/functions/textAt.md +1 -1
  289. package/api/@wtf/release-maven/pom/interfaces/Pom.md +15 -15
  290. package/api/@wtf/release-maven/pom/interfaces/PomDependency.md +5 -5
  291. package/api/@wtf/release-maven/pom/interfaces/PomParent.md +4 -4
  292. package/api/@wtf/release-maven/pom/interfaces/PomPlugin.md +5 -5
  293. package/api/@wtf/release-maven/pom/interfaces/PomRepository.md +3 -3
  294. package/api/@wtf/release-maven/pom/interfaces/Span.md +3 -3
  295. package/api/@wtf/release-maven/pom/interfaces/XmlElement.md +7 -7
  296. package/api/@wtf/release-maven/pom/variables/PLUGIN_GROUP.md +1 -1
  297. package/api/@wtf/release-maven/publish/README.md +9 -6
  298. package/api/@wtf/release-maven/publish/functions/deployModules.md +2 -2
  299. package/api/@wtf/release-maven/publish/functions/releasedModules.md +44 -0
  300. package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +18 -27
  301. package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +4 -4
  302. package/api/@wtf/release-maven/publish/interfaces/ReleasedWhere.md +67 -0
  303. package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +1 -1
  304. package/api/@wtf/release-maven/repository/README.md +12 -6
  305. package/api/@wtf/release-maven/repository/functions/deployTargets.md +1 -1
  306. package/api/@wtf/release-maven/repository/functions/expandValues.md +1 -1
  307. package/api/@wtf/release-maven/repository/functions/hasPom.md +1 -1
  308. package/api/@wtf/release-maven/repository/functions/lookupHeaders.md +37 -0
  309. package/api/@wtf/release-maven/repository/functions/lookupPom.md +44 -0
  310. package/api/@wtf/release-maven/repository/functions/pomPath.md +1 -1
  311. package/api/@wtf/release-maven/repository/functions/pomUrl.md +1 -1
  312. package/api/@wtf/release-maven/repository/functions/releaseTargets.md +46 -0
  313. package/api/@wtf/release-maven/repository/interfaces/LookupAuth.md +32 -0
  314. package/api/@wtf/release-maven/repository/interfaces/ReleaseTargets.md +32 -0
  315. package/api/@wtf/release-maven/repository/interfaces/Repository.md +3 -3
  316. package/api/@wtf/release-maven/repository/interfaces/ValuesOf.md +3 -3
  317. package/api/@wtf/release-maven/repository/variables/MAVEN_CENTRAL.md +1 -1
  318. package/api/@wtf/release-maven/stamp/README.md +8 -8
  319. package/api/@wtf/release-maven/stamp/functions/checkVersions.md +1 -1
  320. package/api/@wtf/release-maven/stamp/functions/stampModules.md +15 -15
  321. package/api/@wtf/release-maven/stamp/functions/stampPom.md +1 -1
  322. package/api/@wtf/release-maven/stamp/interfaces/PomStampOptions.md +5 -5
  323. package/api/@wtf/release-maven/stamp/interfaces/Stamped.md +3 -3
  324. package/api/@wtf/release-maven/stamp/interfaces/StampedModules.md +4 -4
  325. package/api/@wtf/release-npm/README.md +20 -15
  326. package/api/@wtf/release-npm/check/README.md +1 -1
  327. package/api/@wtf/release-npm/check/functions/checkPackages.md +3 -3
  328. package/api/@wtf/release-npm/check/functions/formatIssue.md +1 -1
  329. package/api/@wtf/release-npm/check/interfaces/CheckOptions.md +7 -7
  330. package/api/@wtf/release-npm/check/interfaces/Issue.md +6 -6
  331. package/api/@wtf/release-npm/check/type-aliases/CheckedPackage.md +1 -1
  332. package/api/@wtf/release-npm/check/type-aliases/IssueCode.md +2 -2
  333. package/api/@wtf/release-npm/ecosystem/README.md +21 -11
  334. package/api/@wtf/release-npm/ecosystem/variables/npmEcosystem.md +17 -7
  335. package/api/@wtf/release-npm/errors/README.md +8 -4
  336. package/api/@wtf/release-npm/errors/classes/NpmError.md +253 -0
  337. package/api/@wtf/release-npm/errors/type-aliases/NpmErrorCode.md +1 -1
  338. package/api/@wtf/release-npm/errors/variables/NPM_ERRORS.md +7 -3
  339. package/api/@wtf/release-npm/interfaces/Lookup.md +3 -3
  340. package/api/@wtf/release-npm/interfaces/NpmAside.md +46 -0
  341. package/api/@wtf/release-npm/interfaces/NpmOptions.md +134 -0
  342. package/api/@wtf/release-npm/interfaces/PublishOptions.md +6 -6
  343. package/api/@wtf/release-npm/interfaces/PublishPackage.md +5 -5
  344. package/api/@wtf/release-npm/interfaces/Publisher.md +11 -11
  345. package/api/@wtf/release-npm/interfaces/PublisherContext.md +32 -23
  346. package/api/@wtf/release-npm/manifests/README.md +5 -5
  347. package/api/@wtf/release-npm/manifests/functions/concreteRange.md +1 -1
  348. package/api/@wtf/release-npm/manifests/functions/manifestsAt.md +3 -4
  349. package/api/@wtf/release-npm/manifests/functions/packageOf.md +1 -1
  350. package/api/@wtf/release-npm/manifests/functions/packagesOfManifests.md +1 -1
  351. package/api/@wtf/release-npm/manifests/functions/readManifests.md +7 -7
  352. package/api/@wtf/release-npm/manifests/functions/resolveSpecifier.md +1 -1
  353. package/api/@wtf/release-npm/manifests/functions/runtimeDependenciesOf.md +1 -1
  354. package/api/@wtf/release-npm/manifests/functions/satisfiesRange.md +1 -1
  355. package/api/@wtf/release-npm/manifests/interfaces/Manifest.md +5 -5
  356. package/api/@wtf/release-npm/manifests/interfaces/NpmPackage.md +16 -16
  357. package/api/@wtf/release-npm/manifests/type-aliases/DependencyField.md +1 -1
  358. package/api/@wtf/release-npm/manifests/variables/DEPENDENCY_FIELDS.md +1 -1
  359. package/api/@wtf/release-npm/manifests/variables/FIELD_KINDS.md +2 -2
  360. package/api/@wtf/release-npm/manifests/variables/RUNTIME_FIELDS.md +1 -1
  361. package/api/@wtf/release-npm/prepare/functions/isTypeScriptSource.md +1 -1
  362. package/api/@wtf/release-npm/prepare/functions/prepareManifest.md +1 -1
  363. package/api/@wtf/release-npm/prepare/functions/stripSourceConditions.md +1 -1
  364. package/api/@wtf/release-npm/prepare/interfaces/PrepareOptions.md +6 -6
  365. package/api/@wtf/release-npm/prepare/interfaces/PreparedManifest.md +6 -6
  366. package/api/@wtf/release-npm/prepare/variables/SOURCE_CONDITIONS.md +1 -1
  367. package/api/@wtf/release-npm/publishers/README.md +1 -1
  368. package/api/@wtf/release-npm/publishers/functions/builtInPublisher.md +1 -1
  369. package/api/@wtf/release-npm/publishers/functions/isPublisher.md +1 -1
  370. package/api/@wtf/release-npm/publishers/functions/registryOf.md +1 -1
  371. package/api/@wtf/release-npm/publishers/variables/NPM_REGISTRY.md +1 -1
  372. package/api/@wtf/release-npm/publishers/variables/PUBLISHERS.md +1 -1
  373. package/api/@wtf/release-npm/publishers/variables/npmPublisher.md +1 -1
  374. package/api/@wtf/release-npm/publishers/variables/pnpmPublisher.md +1 -1
  375. package/api/@wtf/release-npm/release/README.md +59 -37
  376. package/api/@wtf/release-npm/release/functions/checkPlan.md +44 -0
  377. package/api/@wtf/release-npm/release/functions/discardPacked.md +32 -0
  378. package/api/@wtf/release-npm/release/functions/moveRelease.md +47 -0
  379. package/api/@wtf/release-npm/release/functions/packRelease.md +39 -0
  380. package/api/@wtf/release-npm/release/functions/prepareRelease.md +46 -0
  381. package/api/@wtf/release-npm/release/functions/publishPacked.md +17 -11
  382. package/api/@wtf/release-npm/release/functions/publishRelease.md +44 -0
  383. package/api/@wtf/release-npm/release/functions/publishedOf.md +12 -11
  384. package/api/@wtf/release-npm/release/functions/resolvePlan.md +49 -0
  385. package/api/@wtf/release-npm/release/functions/smokeRelease.md +40 -0
  386. package/api/@wtf/release-npm/release/functions/verifyRelease.md +41 -0
  387. package/api/@wtf/release-npm/release/interfaces/MovedPackage.md +79 -0
  388. package/api/@wtf/release-npm/release/interfaces/MovedRelease.md +39 -0
  389. package/api/@wtf/release-npm/release/interfaces/NpmPlan.md +68 -0
  390. package/api/@wtf/release-npm/release/interfaces/PackOptions.md +35 -31
  391. package/api/@wtf/release-npm/release/interfaces/PackedRelease.md +107 -0
  392. package/api/@wtf/release-npm/release/interfaces/PublishRun.md +35 -50
  393. package/api/@wtf/release-npm/release/interfaces/PublishedOf.md +4 -14
  394. package/api/@wtf/release-npm/release/interfaces/PublishedPackage.md +13 -14
  395. package/api/@wtf/release-npm/release/interfaces/PublishedRelease.md +49 -0
  396. package/api/@wtf/release-npm/release/interfaces/ResolvedPackage.md +4 -4
  397. package/api/@wtf/release-npm/release/interfaces/ResolvedRelease.md +37 -0
  398. package/api/@wtf/release-npm/release/type-aliases/LookedUpRelease.md +13 -0
  399. package/api/@wtf/release-npm/release/variables/ID_TOKENS.md +1 -1
  400. package/api/@wtf/release-npm/release/variables/RUNNER_ENVIRONMENTS.md +1 -1
  401. package/api/@wtf/release-npm/release/variables/npmOptionsSchema.md +13 -0
  402. package/api/@wtf/release-npm/workspace/README.md +7 -3
  403. package/api/@wtf/release-npm/workspace/functions/pnpmWorkspaceGlobs.md +1 -1
  404. package/api/@wtf/release-npm/workspace/functions/publishableOf.md +1 -1
  405. package/api/@wtf/release-npm/workspace/functions/readWorkspace.md +3 -9
  406. package/api/@wtf/release-npm/workspace/functions/workspaceFolders.md +3 -9
  407. package/api/@wtf/release-npm/workspace/functions/workspaceGlobs.md +3 -9
  408. package/api/@wtf/release-npm/workspace/interfaces/WorkspaceGlobs.md +3 -3
  409. package/api/@wtf/release-oci/README.md +12 -10
  410. package/api/@wtf/release-oci/ecosystem/README.md +22 -7
  411. package/api/@wtf/release-oci/ecosystem/functions/packagesOfImages.md +2 -2
  412. package/api/@wtf/release-oci/ecosystem/functions/packagesOfRepo.md +4 -4
  413. package/api/@wtf/release-oci/ecosystem/functions/repositoriesOf.md +27 -0
  414. package/api/@wtf/release-oci/ecosystem/functions/resolveTag.md +2 -2
  415. package/api/@wtf/release-oci/ecosystem/functions/satisfiesTag.md +2 -2
  416. package/api/@wtf/release-oci/ecosystem/interfaces/OciOptions.md +64 -0
  417. package/api/@wtf/release-oci/ecosystem/interfaces/OciPackage.md +17 -17
  418. package/api/@wtf/release-oci/ecosystem/interfaces/OciSourceOptions.md +32 -0
  419. package/api/@wtf/release-oci/ecosystem/variables/ociEcosystem.md +18 -4
  420. package/api/@wtf/release-oci/errors/README.md +4 -5
  421. package/api/@wtf/release-oci/errors/classes/OciError.md +17 -32
  422. package/api/@wtf/release-oci/errors/type-aliases/OciErrorCode.md +1 -1
  423. package/api/@wtf/release-oci/errors/variables/OCI_ERRORS.md +10 -2
  424. package/api/@wtf/release-oci/images/README.md +3 -3
  425. package/api/@wtf/release-oci/images/functions/imageDirOf.md +1 -1
  426. package/api/@wtf/release-oci/images/functions/imagesAt.md +3 -3
  427. package/api/@wtf/release-oci/images/functions/imagesOf.md +1 -1
  428. package/api/@wtf/release-oci/images/functions/isImageManifest.md +1 -1
  429. package/api/@wtf/release-oci/images/functions/readImages.md +3 -3
  430. package/api/@wtf/release-oci/images/functions/registryImageOf.md +3 -3
  431. package/api/@wtf/release-oci/images/functions/repositoryOf.md +1 -1
  432. package/api/@wtf/release-oci/interfaces/OciImage.md +4 -4
  433. package/api/@wtf/release-oci/publish/README.md +26 -13
  434. package/api/@wtf/release-oci/publish/functions/digestOf.md +1 -1
  435. package/api/@wtf/release-oci/publish/functions/moveImages.md +32 -0
  436. package/api/@wtf/release-oci/publish/functions/platformsOf.md +1 -1
  437. package/api/@wtf/release-oci/publish/functions/publishImages.md +8 -6
  438. package/api/@wtf/release-oci/publish/functions/smokeImages.md +1 -1
  439. package/api/@wtf/release-oci/publish/interfaces/CraneContext.md +10 -37
  440. package/api/@wtf/release-oci/publish/interfaces/ImageToPublish.md +3 -3
  441. package/api/@wtf/release-oci/publish/interfaces/ImagesMove.md +84 -0
  442. package/api/@wtf/release-oci/publish/interfaces/ImagesRelease.md +18 -17
  443. package/api/@wtf/release-oci/publish/interfaces/MovedImage.md +41 -0
  444. package/api/@wtf/release-oci/publish/interfaces/OciSource.md +3 -3
  445. package/api/@wtf/release-oci/publish/interfaces/PublishedImage.md +11 -21
  446. package/api/@wtf/release-oci/publish/interfaces/SmokedImage.md +5 -5
  447. package/api/@wtf/release-oci/registry/README.md +20 -4
  448. package/api/@wtf/release-oci/registry/functions/checkRegistryAccess.md +28 -0
  449. package/api/@wtf/release-oci/registry/functions/registryPageOf.md +1 -1
  450. package/api/@wtf/release-oci/registry/interfaces/ContainerRegistry.md +35 -0
  451. package/api/@wtf/release-oci/registry/interfaces/RegistryProject.md +51 -0
  452. package/api/@wtf/release-oci/registry/interfaces/RegistryQuery.md +20 -8
  453. package/api/@wtf/release-oci/registry/interfaces/RegistryResponse.md +47 -0
  454. package/api/@wtf/release-oci/registry/type-aliases/RegistryAccess.md +13 -0
  455. package/api/@wtf/release-oci/registry/type-aliases/RegistryFetch.md +39 -0
  456. package/api/@wtf/release-oci/tags/README.md +9 -8
  457. package/api/@wtf/release-oci/tags/functions/checkReleaseTags.md +35 -0
  458. package/api/@wtf/release-oci/tags/functions/isImageTag.md +27 -0
  459. package/api/@wtf/release-oci/tags/interfaces/ReleaseTags.md +4 -4
  460. package/api/@wtf/release-replace/README.md +6 -5
  461. package/api/@wtf/release-replace/errors/README.md +3 -3
  462. package/api/@wtf/release-replace/errors/classes/ReplaceError.md +17 -32
  463. package/api/@wtf/release-replace/errors/type-aliases/ReplaceErrorCode.md +1 -1
  464. package/api/@wtf/release-replace/errors/variables/REPLACE_ERRORS.md +1 -1
  465. package/api/@wtf/release-replace/files/functions/filesMatcher.md +3 -3
  466. package/api/@wtf/release-replace/interfaces/ReplaceMatch.md +5 -5
  467. package/api/@wtf/release-replace/interfaces/ReplacementOf.md +5 -5
  468. package/api/@wtf/release-replace/replace/README.md +3 -3
  469. package/api/@wtf/release-replace/replace/functions/regExpOf.md +1 -1
  470. package/api/@wtf/release-replace/replace/functions/replaceFiles.md +3 -3
  471. package/api/@wtf/release-replace/replace/functions/replaceText.md +1 -1
  472. package/api/@wtf/release-replace/replace/interfaces/ReplaceOptions.md +35 -32
  473. package/api/@wtf/release-replace/replace/interfaces/TextOptions.md +5 -5
  474. package/api/@wtf/release-replace/replace/type-aliases/To.md +1 -1
  475. package/api/@wtf/release-replace/templates/functions/mergeTemplates.md +1 -1
  476. package/api/@wtf/release-replace/templates/functions/resolveReplacement.md +1 -1
  477. package/api/@wtf/release-replace/templates/functions/resolveReplacements.md +1 -1
  478. package/api/@wtf/release-replace/type-aliases/Escape.md +1 -1
  479. package/api/@wtf/release-replace/type-aliases/ReplaceFunction.md +1 -1
  480. package/api/@wtf/release-replace/type-aliases/Replacement.md +1 -1
  481. package/api/@wtf/release-replace/type-aliases/ReplacementSpec.md +1 -1
  482. package/api/@wtf/release-replace/type-aliases/TemplateUse.md +1 -1
  483. package/api/@wtf/release-replace/type-aliases/Templates.md +1 -1
  484. package/api/@wtf/release-replace/values/functions/escapeValue.md +1 -1
  485. package/api/@wtf/release-replace/values/functions/textOf.md +1 -1
  486. package/api/@wtf/release-replace/values/functions/valueAt.md +1 -1
  487. package/api/@wtf/release-replace/values/variables/ESCAPES.md +1 -1
  488. package/api/@wtf/release-replace/values/variables/VALUE.md +1 -1
  489. package/api/@wtf/release-trains/README.md +9 -8
  490. package/api/@wtf/release-trains/cascade/README.md +6 -5
  491. package/api/@wtf/release-trains/cascade/functions/cascadeNotes.md +1 -1
  492. package/api/@wtf/release-trains/cascade/functions/cascadeText.md +1 -1
  493. package/api/@wtf/release-trains/cascade/functions/cascadeType.md +1 -1
  494. package/api/@wtf/release-trains/cascade/functions/cascadesOf.md +2 -2
  495. package/api/@wtf/release-trains/cascade/functions/higherType.md +1 -1
  496. package/api/@wtf/release-trains/cascade/interfaces/Cascade.md +11 -11
  497. package/api/@wtf/release-trains/cascade/interfaces/CascadeCheck.md +30 -27
  498. package/api/@wtf/release-trains/cascade/type-aliases/CascadeKind.md +2 -2
  499. package/api/@wtf/release-trains/cascade/type-aliases/ReleaseType.md +1 -1
  500. package/api/@wtf/release-trains/cascade/variables/RELEASE_TYPES.md +1 -1
  501. package/api/@wtf/release-trains/errors/README.md +6 -5
  502. package/api/@wtf/release-trains/errors/classes/TrainsError.md +18 -32
  503. package/api/@wtf/release-trains/errors/type-aliases/TrainsErrorCode.md +1 -1
  504. package/api/@wtf/release-trains/errors/variables/TRAINS_ERRORS.md +1 -13
  505. package/api/@wtf/release-trains/git/README.md +4 -4
  506. package/api/@wtf/release-trains/git/functions/tagOf.md +1 -1
  507. package/api/@wtf/release-trains/git/functions/tagsOf.md +4 -4
  508. package/api/@wtf/release-trains/git/functions/versionOfTag.md +1 -1
  509. package/api/@wtf/release-trains/git/interfaces/TrainTag.md +3 -3
  510. package/api/@wtf/release-trains/gitlab/README.md +6 -3
  511. package/api/@wtf/release-trains/gitlab/functions/findPackage.md +1 -1
  512. package/api/@wtf/release-trains/gitlab/functions/gitlabForge.md +33 -0
  513. package/api/@wtf/release-trains/gitlab/functions/gitlabHeadersOf.md +1 -1
  514. package/api/@wtf/release-trains/gitlab/functions/gitlabProjectOf.md +1 -1
  515. package/api/@wtf/release-trains/gitlab/functions/gitlabRegistryOf.md +1 -1
  516. package/api/@wtf/release-trains/gitlab/functions/uploadGeneric.md +1 -1
  517. package/api/@wtf/release-trains/gitlab/interfaces/GenericUpload.md +8 -8
  518. package/api/@wtf/release-trains/gitlab/interfaces/GitLabForgeOptions.md +97 -0
  519. package/api/@wtf/release-trains/gitlab/interfaces/GitLabOptions.md +4 -4
  520. package/api/@wtf/release-trains/gitlab/interfaces/GitLabProject.md +6 -6
  521. package/api/@wtf/release-trains/gitlab/interfaces/GitLabRegistry.md +5 -5
  522. package/api/@wtf/release-trains/gitlab/interfaces/HttpResponse.md +4 -4
  523. package/api/@wtf/release-trains/gitlab/interfaces/PackageQuery.md +9 -9
  524. package/api/@wtf/release-trains/gitlab/type-aliases/HttpFetch.md +1 -1
  525. package/api/@wtf/release-trains/gitlab/variables/LISTING_WAITS.md +1 -1
  526. package/api/@wtf/release-trains/interfaces/Train.md +7 -7
  527. package/api/@wtf/release-trains/links/README.md +16 -20
  528. package/api/@wtf/release-trains/links/functions/releaseLinks.md +15 -13
  529. package/api/@wtf/release-trains/links/interfaces/LinkOptions.md +56 -33
  530. package/api/@wtf/release-trains/packages/README.md +11 -16
  531. package/api/@wtf/release-trains/packages/functions/dependencyEdges.md +2 -2
  532. package/api/@wtf/release-trains/packages/functions/dependencyText.md +1 -1
  533. package/api/@wtf/release-trains/packages/functions/dependsOnErrors.md +2 -2
  534. package/api/@wtf/release-trains/packages/functions/ownersOf.md +2 -2
  535. package/api/@wtf/release-trains/packages/functions/packagesOf.md +2 -2
  536. package/api/@wtf/release-trains/packages/functions/releasedVersions.md +2 -2
  537. package/api/@wtf/release-trains/packages/functions/trainDependencies.md +2 -2
  538. package/api/@wtf/release-trains/packages/functions/trainOrder.md +2 -2
  539. package/api/@wtf/release-trains/packages/functions/unsatisfiedErrors.md +5 -4
  540. package/api/@wtf/release-trains/packages/interfaces/DependencyEdge.md +6 -6
  541. package/api/@wtf/release-trains/packages/interfaces/TrainDependency.md +3 -3
  542. package/api/@wtf/release-trains/packages/interfaces/VersionsRelease.md +24 -21
  543. package/api/@wtf/release-trains/paths/README.md +5 -4
  544. package/api/@wtf/release-trains/paths/functions/filterCommits.md +1 -1
  545. package/api/@wtf/release-trains/paths/functions/gitFilesOf.md +4 -4
  546. package/api/@wtf/release-trains/paths/functions/overlapError.md +1 -1
  547. package/api/@wtf/release-trains/paths/functions/trainOfPath.md +1 -1
  548. package/api/@wtf/release-trains/paths/functions/trainsOfCommit.md +1 -1
  549. package/api/@wtf/release-trains/paths/functions/trainsOfPath.md +1 -1
  550. package/api/@wtf/release-trains/paths/type-aliases/FilesOf.md +1 -1
  551. package/api/@wtf/release-trains/plan/README.md +38 -0
  552. package/api/@wtf/release-trains/plan/functions/planOf.md +45 -0
  553. package/api/@wtf/release-trains/plan/interfaces/PlanRelease.md +113 -0
  554. package/api/@wtf/release-trains/plan/interfaces/TrainPlan.md +72 -0
  555. package/api/@wtf/release-trains/schema/README.md +1 -1
  556. package/api/@wtf/release-trains/schema/interfaces/ConfigPart.md +6 -6
  557. package/api/@wtf/release-trains/schema/interfaces/RootOptions.md +7 -17
  558. package/api/@wtf/release-trains/schema/type-aliases/DependencyRule.md +1 -1
  559. package/api/@wtf/release-trains/schema/variables/DEPENDENCY_RULES.md +1 -1
  560. package/api/@wtf/release-trains/schema/variables/TAG_FORMAT_PATTERN.md +1 -1
  561. package/api/@wtf/release-trains/schema/variables/TRAIN_NAME_PATTERN.md +1 -1
  562. package/api/@wtf/release-trains/schema/variables/configSchema.md +2 -2
  563. package/api/@wtf/release-trains/schema/variables/jsonSchema.md +2 -2
  564. package/api/@wtf/release-trains/schema/variables/rootOptionsSchema.md +4 -4
  565. package/api/@wtf/release-trains/schema/variables/trainSchema.md +2 -2
  566. package/api/@wtf/release-trains/schema/variables/trainsSchema.md +2 -2
  567. package/api/@wtf/release-trains/trains/functions/changelogOf.md +1 -1
  568. package/api/@wtf/release-trains/trains/functions/matchersOf.md +3 -3
  569. package/api/@wtf/release-trains/trains/functions/overlapErrors.md +1 -1
  570. package/api/@wtf/release-trains/trains/functions/selectTrain.md +1 -1
  571. package/api/@wtf/release-trains/trains/functions/tagFormatOf.md +1 -1
  572. package/api/@wtf/release-trains/trains/functions/trainHeadedNotes.md +1 -1
  573. package/api/@wtf/release-trains/trains/functions/trainOfRun.md +1 -1
  574. package/api/@wtf/release-trains/trains/functions/trainOfTag.md +1 -1
  575. package/api/@wtf/release-trains/trains/functions/trainsErrors.md +1 -1
  576. package/api/@wtf/release-trains/trains/functions/trainsOfOptions.md +4 -9
  577. package/api/@wtf/release-trains/trains/variables/TRAIN_VARIABLE.md +1 -1
  578. package/api/@wtf/release-trains/trains/variables/VERSION.md +1 -1
  579. package/api/@wtf/release-trains/type-aliases/BranchSpec.md +1 -1
  580. package/api/@wtf/release-trains/type-aliases/Trains.md +1 -1
  581. package/api/@wtf/release-trains/verify/README.md +8 -7
  582. package/api/@wtf/release-trains/verify/functions/unreleasedDependencies.md +3 -3
  583. package/api/@wtf/release-trains/verify/functions/verifyTrain.md +3 -3
  584. package/api/@wtf/release-trains/verify/interfaces/UnreleasedDependencies.md +33 -30
  585. package/api/@wtf/release-trains/verify/interfaces/VerifiedTrain.md +5 -5
  586. package/api/@wtf/release-trains/verify/interfaces/VerifyRelease.md +27 -24
  587. package/api/@wtf/release-validate/errors/README.md +3 -4
  588. package/api/@wtf/release-validate/errors/classes/ValidateError.md +29 -32
  589. package/api/@wtf/release-validate/errors/type-aliases/ValidateErrorCode.md +1 -1
  590. package/api/@wtf/release-validate/errors/variables/VALIDATE_ERRORS.md +1 -1
  591. package/api/@wtf/release-validate/interfaces/ConfigIssue.md +4 -4
  592. package/api/@wtf/release-validate/json-schema/functions/fromJsonSchema.md +1 -1
  593. package/api/@wtf/release-validate/json-schema/functions/pathOfPointer.md +1 -1
  594. package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaError.md +3 -3
  595. package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaValidator.md +3 -3
  596. package/api/@wtf/release-validate/validate/functions/configErrors.md +1 -1
  597. package/api/@wtf/release-validate/validate/functions/isStandardSchema.md +1 -1
  598. package/api/@wtf/release-validate/validate/functions/pathText.md +1 -1
  599. package/api/@wtf/release-validate/validate/functions/validateConfig.md +1 -1
  600. package/api/@wtf/semantic-release/README.md +36 -0
  601. package/api/@wtf/semantic-release/errors/README.md +32 -0
  602. package/api/@wtf/semantic-release/errors/functions/marked.md +29 -0
  603. package/api/@wtf/semantic-release/errors/functions/markedStep.md +36 -0
  604. package/api/@wtf/semantic-release/errors/variables/SEMANTIC_RELEASE_ERROR.md +13 -0
  605. package/api/@wtf/{release-system/node → semantic-release}/functions/realPathOf.md +3 -3
  606. package/api/@wtf/semantic-release/functions/runOf.md +31 -0
  607. package/api/@wtf/semantic-release/interfaces/RunContext.md +31 -0
  608. package/api/@wtf/semantic-release/links/README.md +38 -0
  609. package/api/@wtf/{release-trains → semantic-release}/links/functions/forgetReleased.md +2 -2
  610. package/api/@wtf/{release-trains → semantic-release}/links/functions/recordReleased.md +3 -3
  611. package/api/@wtf/semantic-release/links/functions/releasedOf.md +28 -0
  612. package/api/@wtf/semantic-release/links/interfaces/ReleaseRun.md +41 -0
  613. package/api/@wtf/semantic-release/release/README.md +47 -0
  614. package/api/@wtf/semantic-release/release/functions/inTrain.md +42 -0
  615. package/api/@wtf/semantic-release/release/functions/stepRelease.md +35 -0
  616. package/api/@wtf/semantic-release/release/functions/trainNamed.md +34 -0
  617. package/api/@wtf/semantic-release/release/functions/trainPrefix.md +27 -0
  618. package/api/@wtf/semantic-release/release/interfaces/StepContext.md +63 -0
  619. package/api/@wtf/semantic-release/release/interfaces/StepOf.md +63 -0
  620. package/api/@wtf/semantic-release/schema/README.md +23 -0
  621. package/api/@wtf/{release-system/validator → semantic-release/schema}/functions/pluginEntriesOf.md +5 -5
  622. package/api/@wtf/semantic-release-cargo/README.md +32 -26
  623. package/api/@wtf/semantic-release-cargo/functions/indexLookup.md +3 -3
  624. package/api/@wtf/semantic-release-cargo/interfaces/CargoPluginOptions.md +46 -23
  625. package/api/@wtf/semantic-release-cargo/interfaces/CargoRelease.md +3 -3
  626. package/api/@wtf/semantic-release-cargo/schema/README.md +2 -2
  627. package/api/@wtf/semantic-release-cargo/schema/type-aliases/CargoOptions.md +2 -2
  628. package/api/@wtf/semantic-release-cargo/schema/variables/cargoOptionsSchema.md +2 -2
  629. package/api/@wtf/semantic-release-cargo/schema/variables/cargoSchema.md +2 -2
  630. package/api/@wtf/semantic-release-cargo/schema/variables/configSchema.md +2 -2
  631. package/api/@wtf/semantic-release-cargo/schema/variables/jsonSchema.md +2 -2
  632. package/api/@wtf/semantic-release-cargo/variables/default.md +43 -14
  633. package/api/@wtf/semantic-release-cargo/{functions → variables}/prepare.md +7 -7
  634. package/api/@wtf/semantic-release-cargo/{functions → variables}/publish.md +6 -5
  635. package/api/@wtf/semantic-release-cargo/variables/verifyConditions.md +37 -0
  636. package/api/@wtf/semantic-release-cargo/variables/verifyRelease.md +37 -0
  637. package/api/@wtf/semantic-release-go/README.md +40 -36
  638. package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +7 -17
  639. package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +3 -3
  640. package/api/@wtf/semantic-release-go/schema/README.md +2 -2
  641. package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +2 -2
  642. package/api/@wtf/semantic-release-go/schema/variables/configSchema.md +2 -2
  643. package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +2 -2
  644. package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +2 -2
  645. package/api/@wtf/semantic-release-go/schema/variables/jsonSchema.md +2 -2
  646. package/api/@wtf/semantic-release-go/variables/default.md +26 -22
  647. package/api/@wtf/semantic-release-go/variables/prepare.md +40 -0
  648. package/api/@wtf/semantic-release-go/variables/publish.md +45 -0
  649. package/api/@wtf/semantic-release-go/{functions → variables}/verifyConditions.md +8 -7
  650. package/api/@wtf/semantic-release-go/variables/verifyRelease.md +40 -0
  651. package/api/@wtf/semantic-release-maven/README.md +38 -20
  652. package/api/@wtf/semantic-release-maven/functions/pomLookup.md +3 -3
  653. package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +12 -22
  654. package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +2 -2
  655. package/api/@wtf/semantic-release-maven/schema/README.md +2 -2
  656. package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +2 -2
  657. package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +2 -2
  658. package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +2 -2
  659. package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +2 -2
  660. package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +2 -2
  661. package/api/@wtf/semantic-release-maven/variables/default.md +45 -16
  662. package/api/@wtf/semantic-release-maven/variables/prepare.md +41 -0
  663. package/api/@wtf/semantic-release-maven/variables/publish.md +44 -0
  664. package/api/@wtf/semantic-release-maven/{functions → variables}/verifyConditions.md +6 -7
  665. package/api/@wtf/semantic-release-maven/variables/verifyRelease.md +36 -0
  666. package/api/@wtf/semantic-release-npm/README.md +39 -29
  667. package/api/@wtf/semantic-release-npm/functions/loadPublisher.md +1 -1
  668. package/api/@wtf/semantic-release-npm/interfaces/PublishPluginOptions.md +24 -82
  669. package/api/@wtf/semantic-release-npm/interfaces/PublishedRelease.md +4 -4
  670. package/api/@wtf/semantic-release-npm/interfaces/SmokeOption.md +2 -2
  671. package/api/@wtf/semantic-release-npm/schema/README.md +1 -1
  672. package/api/@wtf/semantic-release-npm/schema/type-aliases/PublishOptions.md +3 -3
  673. package/api/@wtf/semantic-release-npm/schema/variables/configSchema.md +2 -2
  674. package/api/@wtf/semantic-release-npm/schema/variables/jsonSchema.md +2 -2
  675. package/api/@wtf/semantic-release-npm/schema/variables/publishOptionsSchema.md +2 -2
  676. package/api/@wtf/semantic-release-npm/schema/variables/publishSchema.md +2 -2
  677. package/api/@wtf/semantic-release-npm/type-aliases/PublisherSpec.md +1 -1
  678. package/api/@wtf/semantic-release-npm/{functions → variables}/addChannel.md +7 -6
  679. package/api/@wtf/semantic-release-npm/variables/default.md +51 -15
  680. package/api/@wtf/semantic-release-npm/variables/fail.md +36 -0
  681. package/api/@wtf/semantic-release-npm/variables/prepare.md +37 -0
  682. package/api/@wtf/semantic-release-npm/{functions → variables}/publish.md +8 -6
  683. package/api/@wtf/semantic-release-npm/{functions → variables}/verifyConditions.md +6 -4
  684. package/api/@wtf/semantic-release-npm/variables/verifyRelease.md +35 -0
  685. package/api/@wtf/semantic-release-oci/README.md +17 -14
  686. package/api/@wtf/semantic-release-oci/interfaces/OciPluginOptions.md +23 -20
  687. package/api/@wtf/semantic-release-oci/interfaces/OciRelease.md +3 -3
  688. package/api/@wtf/semantic-release-oci/schema/README.md +3 -3
  689. package/api/@wtf/semantic-release-oci/schema/type-aliases/OciOptions.md +2 -2
  690. package/api/@wtf/semantic-release-oci/schema/variables/configSchema.md +2 -2
  691. package/api/@wtf/semantic-release-oci/schema/variables/jsonSchema.md +2 -2
  692. package/api/@wtf/semantic-release-oci/schema/variables/ociOptionsSchema.md +2 -2
  693. package/api/@wtf/semantic-release-oci/schema/variables/ociSchema.md +2 -2
  694. package/api/@wtf/semantic-release-oci/variables/default.md +40 -7
  695. package/api/@wtf/semantic-release-oci/variables/publish.md +47 -0
  696. package/api/@wtf/semantic-release-oci/{functions → variables}/verifyConditions.md +7 -5
  697. package/api/@wtf/semantic-release-oci/variables/verifyRelease.md +35 -0
  698. package/api/@wtf/semantic-release-replace/README.md +4 -4
  699. package/api/@wtf/semantic-release-replace/functions/functionOf.md +1 -1
  700. package/api/@wtf/semantic-release-replace/functions/templatesOf.md +1 -1
  701. package/api/@wtf/semantic-release-replace/schema/README.md +1 -1
  702. package/api/@wtf/semantic-release-replace/schema/interfaces/ModuleExport.md +3 -3
  703. package/api/@wtf/semantic-release-replace/schema/interfaces/ReplaceOptions.md +4 -8
  704. package/api/@wtf/semantic-release-replace/schema/interfaces/RootTemplates.md +2 -2
  705. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacement.md +1 -1
  706. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacementSpec.md +1 -1
  707. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTemplates.md +1 -1
  708. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTo.md +1 -1
  709. package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplateSet.md +1 -1
  710. package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplatesOption.md +1 -1
  711. package/api/@wtf/semantic-release-replace/schema/variables/configSchema.md +2 -2
  712. package/api/@wtf/semantic-release-replace/schema/variables/exportedSetSchema.md +2 -2
  713. package/api/@wtf/semantic-release-replace/schema/variables/jsonSchema.md +2 -2
  714. package/api/@wtf/semantic-release-replace/schema/variables/replaceOptionsSchema.md +2 -2
  715. package/api/@wtf/semantic-release-replace/schema/variables/replacementSchema.md +2 -2
  716. package/api/@wtf/semantic-release-replace/schema/variables/rootTemplatesSchema.md +2 -2
  717. package/api/@wtf/semantic-release-replace/schema/variables/templateSchema.md +2 -2
  718. package/api/@wtf/semantic-release-replace/schema/variables/templatesSchema.md +2 -2
  719. package/api/@wtf/semantic-release-replace/type-aliases/ReplacePluginOptions.md +13 -0
  720. package/api/@wtf/semantic-release-replace/variables/default.md +5 -5
  721. package/api/@wtf/semantic-release-replace/{functions → variables}/prepare.md +6 -6
  722. package/api/@wtf/semantic-release-replace/{functions → variables}/verifyConditions.md +5 -5
  723. package/api/@wtf/semantic-release-trains/config/functions/skipPlugins.md +1 -1
  724. package/api/@wtf/semantic-release-trains/config/functions/stepId.md +1 -1
  725. package/api/@wtf/semantic-release-trains/config/functions/trainAssets.md +1 -1
  726. package/api/@wtf/semantic-release-trains/config/functions/trainChangelog.md +1 -1
  727. package/api/@wtf/semantic-release-trains/config/functions/trainOfTag.md +1 -1
  728. package/api/@wtf/semantic-release-trains/config/functions/trainTagFormat.md +1 -1
  729. package/api/@wtf/semantic-release-trains/config/interfaces/AssetsOptions.md +4 -4
  730. package/api/@wtf/semantic-release-trains/config/interfaces/SkipOptions.md +3 -3
  731. package/api/@wtf/semantic-release-trains/config/variables/BRANCHES.md +1 -1
  732. package/api/@wtf/semantic-release-trains/config/variables/BREAKING.md +1 -1
  733. package/api/@wtf/semantic-release-trains/config/variables/TITLE.md +1 -1
  734. package/api/@wtf/semantic-release-trains/defaults/functions/listingFetchOf.md +1 -1
  735. package/api/@wtf/semantic-release-trains/defaults/functions/skipRuleOf.md +1 -1
  736. package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +3 -2
  737. package/api/@wtf/semantic-release-trains/defaults/functions/stepOptionsOf.md +1 -1
  738. package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +1 -1
  739. package/api/@wtf/semantic-release-trains/defaults/interfaces/ListingRetry.md +3 -3
  740. package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +35 -12
  741. package/api/@wtf/semantic-release-trains/defaults/interfaces/StepOptionsContext.md +18 -7
  742. package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.md +3 -2
  743. package/api/@wtf/semantic-release-trains/defaults/type-aliases/StepOptions.md +1 -1
  744. package/api/@wtf/semantic-release-trains/defaults/type-aliases/TrainOptions.md +1 -1
  745. package/api/@wtf/semantic-release-trains/defaults/variables/SKIP_RULES.md +1 -1
  746. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_OPTIONS.md +1 -1
  747. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +1 -1
  748. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_STEP_OPTIONS.md +1 -1
  749. package/api/@wtf/semantic-release-trains/defaults/variables/releaseAssets.md +2 -2
  750. package/api/@wtf/semantic-release-trains/errors/type-aliases/PluginErrorCode.md +1 -1
  751. package/api/@wtf/semantic-release-trains/errors/variables/PLUGIN_ERRORS.md +1 -1
  752. package/api/@wtf/semantic-release-trains/info/README.md +3 -3
  753. package/api/@wtf/semantic-release-trains/info/functions/decideTrain.md +1 -1
  754. package/api/@wtf/semantic-release-trains/info/functions/dotenvOf.md +1 -1
  755. package/api/@wtf/semantic-release-trains/info/functions/infoOf.md +3 -2
  756. package/api/@wtf/semantic-release-trains/info/interfaces/DecideRun.md +4 -4
  757. package/api/@wtf/semantic-release-trains/info/interfaces/InfoRun.md +36 -33
  758. package/api/@wtf/semantic-release-trains/info/interfaces/TrainDecision.md +5 -5
  759. package/api/@wtf/semantic-release-trains/info/interfaces/TrainInfo.md +5 -5
  760. package/api/@wtf/semantic-release-trains/interfaces/TrainsEntryOptions.md +5 -5
  761. package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -17
  762. package/api/@wtf/semantic-release-trains/schema/README.md +1 -1
  763. package/api/@wtf/semantic-release-trains/schema/variables/configSchema.md +2 -2
  764. package/api/@wtf/semantic-release-trains/schema/variables/jsonSchema.md +2 -2
  765. package/api/@wtf/semantic-release-trains/schema/variables/pluginSpecSchema.md +2 -2
  766. package/api/@wtf/semantic-release-trains/schema/variables/skipRuleSchema.md +2 -2
  767. package/api/@wtf/semantic-release-trains/schema/variables/trainsEntrySchema.md +2 -2
  768. package/api/@wtf/semantic-release-trains/schema/variables/trainsPluginSchema.md +2 -2
  769. package/api/@wtf/semantic-release-trains/type-aliases/PluginSpec.md +1 -1
  770. package/api/@wtf/semantic-release-trains/type-aliases/TrainsPluginOptions.md +1 -1
  771. package/api/@wtf/semantic-release-trains/variables/addChannel.md +1 -1
  772. package/api/@wtf/semantic-release-trains/variables/analyzeCommits.md +1 -1
  773. package/api/@wtf/semantic-release-trains/variables/default.md +1 -1
  774. package/api/@wtf/semantic-release-trains/variables/fail.md +1 -1
  775. package/api/@wtf/semantic-release-trains/variables/generateNotes.md +1 -1
  776. package/api/@wtf/semantic-release-trains/variables/prepare.md +1 -1
  777. package/api/@wtf/semantic-release-trains/variables/publish.md +1 -1
  778. package/api/@wtf/semantic-release-trains/variables/success.md +1 -1
  779. package/api/@wtf/semantic-release-trains/variables/verifyConditions.md +1 -1
  780. package/api/@wtf/semantic-release-trains/variables/verifyRelease.md +1 -1
  781. package/api/@wtf/semantic-release-validate/README.md +1 -1
  782. package/api/@wtf/semantic-release-validate/functions/configOf.md +1 -1
  783. package/api/@wtf/semantic-release-validate/functions/loadSchema.md +1 -1
  784. package/api/@wtf/semantic-release-validate/interfaces/ValidatePluginOptions.md +2 -2
  785. package/api/@wtf/semantic-release-validate/schema/interfaces/Validator.md +2 -2
  786. package/api/@wtf/semantic-release-validate/schema/variables/configSchema.md +1 -1
  787. package/api/@wtf/semantic-release-validate/schema/variables/jsonSchema.md +1 -1
  788. package/api/@wtf/semantic-release-validate/schema/variables/validateOptionsSchema.md +1 -1
  789. package/api/@wtf/semantic-release-validate/variables/default.md +2 -2
  790. package/api/@wtf/semantic-release-validate/{functions → variables}/verifyConditions.md +5 -5
  791. package/api/README.md +22 -10
  792. package/api/trains.json +29 -10
  793. package/guides/ci-recipes.md +29 -27
  794. package/guides/configuring-trains.md +24 -20
  795. package/guides/dependency-rules.md +17 -17
  796. package/guides/ecosystems.md +43 -25
  797. package/guides/getting-started.md +12 -10
  798. package/guides/platform.md +179 -0
  799. package/guides/publishing-crates.md +58 -17
  800. package/guides/publishing-go-modules.md +55 -11
  801. package/guides/publishing-maven.md +48 -10
  802. package/guides/publishing-oci.md +36 -5
  803. package/guides/publishing.md +105 -84
  804. package/guides/troubleshooting.md +12 -12
  805. package/package.json +24 -18
  806. package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +0 -23
  807. package/api/@wtf/release-npm/interfaces/PublishTrainOptions.md +0 -144
  808. package/api/@wtf/release-npm/release/functions/checkTrain.md +0 -32
  809. package/api/@wtf/release-npm/release/functions/distTagOf.md +0 -31
  810. package/api/@wtf/release-npm/release/functions/packTrain.md +0 -39
  811. package/api/@wtf/release-npm/release/functions/publishTrain.md +0 -37
  812. package/api/@wtf/release-npm/release/functions/publishedOfResolved.md +0 -36
  813. package/api/@wtf/release-npm/release/functions/releaseTrain.md +0 -31
  814. package/api/@wtf/release-npm/release/functions/resolveManifests.md +0 -37
  815. package/api/@wtf/release-npm/release/functions/tagTrain.md +0 -36
  816. package/api/@wtf/release-npm/release/interfaces/CheckRelease.md +0 -222
  817. package/api/@wtf/release-npm/release/interfaces/PackedTrain.md +0 -125
  818. package/api/@wtf/release-npm/release/interfaces/PublishedTrain.md +0 -47
  819. package/api/@wtf/release-npm/release/interfaces/ResolveRelease.md +0 -220
  820. package/api/@wtf/release-npm/release/interfaces/ResolvedTrain.md +0 -55
  821. package/api/@wtf/release-npm/release/interfaces/TagRelease.md +0 -174
  822. package/api/@wtf/release-npm/release/type-aliases/LookedUpTrain.md +0 -13
  823. package/api/@wtf/release-npm/release/type-aliases/ReleaseRun.md +0 -13
  824. package/api/@wtf/release-npm/workspace/interfaces/WorkspaceOptions.md +0 -19
  825. package/api/@wtf/release-oci/tags/functions/releaseTagsOf.md +0 -39
  826. package/api/@wtf/release-oci/tags/functions/tagsOfRelease.md +0 -33
  827. package/api/@wtf/release-system/README.md +0 -71
  828. package/api/@wtf/release-system/errors/README.md +0 -42
  829. package/api/@wtf/release-system/errors/functions/throwAll.md +0 -26
  830. package/api/@wtf/release-system/errors/type-aliases/SystemErrorCode.md +0 -13
  831. package/api/@wtf/release-system/errors/variables/SYSTEM_ERRORS.md +0 -23
  832. package/api/@wtf/release-system/git/functions/gitOf.md +0 -39
  833. package/api/@wtf/release-system/git/interfaces/GitContext.md +0 -46
  834. package/api/@wtf/release-system/git/interfaces/LogCommit.md +0 -43
  835. package/api/@wtf/release-system/node/README.md +0 -25
  836. package/api/@wtf/release-system/node/functions/nodeSystem.md +0 -20
  837. package/api/@wtf/release-system/node/functions/systemOf.md +0 -29
  838. package/api/@wtf/release-system/system/README.md +0 -39
  839. package/api/@wtf/release-system/system/interfaces/DirEntry.md +0 -27
  840. package/api/@wtf/release-system/system/interfaces/ExecOptions.md +0 -41
  841. package/api/@wtf/release-system/system/interfaces/ExecResult.md +0 -35
  842. package/api/@wtf/release-system/system/interfaces/System.md +0 -73
  843. package/api/@wtf/release-system/system/interfaces/SystemFs.md +0 -184
  844. package/api/@wtf/release-system/system/type-aliases/Exec.md +0 -41
  845. package/api/@wtf/release-system/system/type-aliases/SystemInput.md +0 -20
  846. package/api/@wtf/release-system/validator/interfaces/OptionIssue.md +0 -63
  847. package/api/@wtf/release-system/validator/interfaces/Property.md +0 -49
  848. package/api/@wtf/release-system/validator/type-aliases/JsonSchema.md +0 -17
  849. package/api/@wtf/release-system/validator/type-aliases/Path.md +0 -13
  850. package/api/@wtf/release-trains/ecosystem/functions/isEcosystem.md +0 -27
  851. package/api/@wtf/release-trains/ecosystem/functions/readPackages.md +0 -33
  852. package/api/@wtf/release-trains/ecosystem/interfaces/Dependency.md +0 -43
  853. package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemContext.md +0 -68
  854. package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemPackages.md +0 -27
  855. package/api/@wtf/release-trains/ecosystem/interfaces/Package.md +0 -71
  856. package/api/@wtf/release-trains/ecosystem/type-aliases/DependencyKind.md +0 -16
  857. package/api/@wtf/release-trains/ecosystem/variables/DEPENDENCY_KINDS.md +0 -13
  858. package/api/@wtf/release-trains/generated/functions/listGenerated.md +0 -41
  859. package/api/@wtf/release-trains/generated/functions/readGenerated.md +0 -39
  860. package/api/@wtf/release-trains/generated/functions/stageGeneratedFolders.md +0 -29
  861. package/api/@wtf/release-trains/generated/functions/unlistedIn.md +0 -42
  862. package/api/@wtf/release-trains/generated/interfaces/GeneratedOptions.md +0 -19
  863. package/api/@wtf/release-trains/generated/interfaces/StageOptions.md +0 -73
  864. package/api/@wtf/release-trains/generated/variables/GENERATED.md +0 -13
  865. package/api/@wtf/release-trains/links/functions/releasedOf.md +0 -28
  866. package/api/@wtf/release-trains/links/interfaces/PackageRegistry.md +0 -41
  867. package/api/@wtf/release-trains/links/interfaces/ReleaseLink.md +0 -41
  868. package/api/@wtf/release-trains/links/interfaces/ReleaseRun.md +0 -41
  869. package/api/@wtf/release-trains/links/interfaces/ReleasedPackage.md +0 -92
  870. package/api/@wtf/release-trains/packages/interfaces/OrderFault.md +0 -39
  871. package/api/@wtf/release-trains/packages/interfaces/OrderPins.md +0 -27
  872. package/api/@wtf/release-trains/packages/interfaces/PublishOrder.md +0 -35
  873. package/api/@wtf/semantic-release-cargo/functions/verifyConditions.md +0 -39
  874. package/api/@wtf/semantic-release-go/functions/prepare.md +0 -41
  875. package/api/@wtf/semantic-release-go/functions/publish.md +0 -43
  876. package/api/@wtf/semantic-release-go/functions/verifyRelease.md +0 -38
  877. package/api/@wtf/semantic-release-maven/functions/prepare.md +0 -41
  878. package/api/@wtf/semantic-release-maven/functions/publish.md +0 -43
  879. package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +0 -32
  880. package/api/@wtf/semantic-release-npm/functions/fail.md +0 -36
  881. package/api/@wtf/semantic-release-npm/functions/prepare.md +0 -34
  882. package/api/@wtf/semantic-release-oci/functions/publish.md +0 -44
  883. package/api/@wtf/semantic-release-replace/interfaces/ReplacePluginOptions.md +0 -71
  884. package/guides/system.md +0 -175
@@ -14,8 +14,13 @@ An ecosystem is a module that reads one kind of manifest, such as npm's `package
14
14
  depends on.
15
15
  - `satisfies` says whether a version is within a range, by the ecosystem's own rules.
16
16
 
17
- Five ecosystems are built in. Each one has a semantic-release plugin of its own that publishes its
18
- packages:
17
+ An ecosystem that releases implements the steps of the contract of `@wtf/release/contract` too:
18
+ `verify`, `prepare`, `smoke`, `publish` and `move`, each optional but `publish`. Any driver runs
19
+ them, a semantic-release plugin, a CLI or a test, over a plan of the packages to publish (see
20
+ [Release the packages](#release-the-packages)).
21
+
22
+ Five ecosystems are built in, each one releasing by the contract, and each with a semantic-release
23
+ plugin of its own that drives it:
19
24
 
20
25
  | Ecosystem | Package | Plugin | Manifests it reads |
21
26
  | --------- | -------------------- | ----------------------------- | --------------------------------------------------------------------------------------- |
@@ -70,8 +75,8 @@ ecosystem costs a repo nothing. For example, cargo's ecosystem gives no package
70
75
  a train (`EDEPENDENCYNOTRAIN`). That train must have released (`EDEPENDENCYNORELEASE`), and one
71
76
  of its releases must be within the range (`EDEPENDENCYUNSATISFIED`).
72
77
  - **Versions.** A release stamps each range on another train's package with that train's last
73
- release, read from the train's tags that `HEAD` holds (`releasedVersions` of
74
- `@wtf/release-trains/packages`).
78
+ release, read from the train's tags that `HEAD` holds. `planOf` of `@wtf/release-trains/plan`
79
+ gives them in the plan of the train, the version of each package of the repo.
75
80
  - **Cascade.** When another train's last release falls outside a range that this train's last
76
81
  release published, this train releases again. It releases a major when a major left a `peer`
77
82
  range behind, and a patch for any other kind.
@@ -107,8 +112,8 @@ See [Publish npm packages](publishing.md).
107
112
 
108
113
  `@wtf/release-cargo` reads the Cargo workspace at the root of the repo with
109
114
  `cargo metadata --no-deps --format-version 1`. For a commit, it exports the files with
110
- `git archive` into the system's temporary files, unpacks them with `tar`, reads them, and removes
111
- them.
115
+ `git archive` into a temporary folder of the platform, unpacks them with `tar`, reads them, and
116
+ removes them.
112
117
 
113
118
  - **Published:** every crate without `publish = false`.
114
119
  - **Kinds:** a normal dependency is `runtime`, a build dependency is `build`, and a dev-dependency
@@ -215,13 +220,13 @@ reads.
215
220
 
216
221
  ### The interface
217
222
 
218
- `@wtf/release-trains/ecosystem` declares the interface:
223
+ `@wtf/release/ecosystem` declares the interface:
219
224
 
220
225
  ```ts fragment
221
226
  export interface Ecosystem {
222
227
  /** 'npm', 'cargo': as an error, the notes and a key of the trains say it. */
223
228
  readonly name: string
224
- /** The packages of the repo, of the working tree, or at `context.ref`, by `context.system`. */
229
+ /** The packages of the repo, of the working tree, or at `context.ref`, of `context.root`. */
225
230
  packages(context: EcosystemContext): Promise<readonly Package[]>
226
231
  /** The range a release publishes of `range`, of `version`, the release of the package it names. */
227
232
  resolve(range: string, version: string): string
@@ -246,8 +251,8 @@ export interface Dependency {
246
251
 
247
252
  The trains call `packages` for the working tree, with no `ref`. They also call it for a commit, such
248
253
  as the tag of a train's last release, which a cascade reads. `packages` does everything through its
249
- context's `system`, as every library does: files, git, and the ecosystem's own tool. See
250
- [The system](system.md).
254
+ context, as every library does: the files of the folder of the repo, `root`, and git and the
255
+ ecosystem's own tool by the `platform`. See [The platform](platform.md).
251
256
 
252
257
  ### An example
253
258
 
@@ -256,9 +261,10 @@ of its own, a `release.json` in each folder. The manifest holds a name, a flag t
256
261
  package publishes, and dependencies at exact versions:
257
262
 
258
263
  ```ts
259
- import { git, gitOf, trackedFiles } from '@wtf/release-system/git'
260
- import { basenameOf, dirnameOf, joinPath } from '@wtf/release-system/posix'
261
- import type { Ecosystem, EcosystemContext, Package } from '@wtf/release-trains/ecosystem'
264
+ import { readFile } from '@wtf/release/files'
265
+ import { git, trackedFiles } from '@wtf/release/git'
266
+ import { basenameOf, dirnameOf } from '@wtf/release/posix'
267
+ import type { Ecosystem, EcosystemContext, Package } from '@wtf/release/ecosystem'
262
268
 
263
269
  /** What a release.json holds. */
264
270
  interface Manifest {
@@ -269,8 +275,7 @@ interface Manifest {
269
275
 
270
276
  /** Each release.json of the repo, of the working tree or of `context.ref`, by git. */
271
277
  async function manifestsOf(context: EcosystemContext): Promise<[string, Manifest][]> {
272
- const { cwd, system } = gitOf(context)
273
- const { ref } = context
278
+ const { root, ref } = context
274
279
  const files = (
275
280
  ref === undefined
276
281
  ? await trackedFiles(context)
@@ -280,7 +285,7 @@ async function manifestsOf(context: EcosystemContext): Promise<[string, Manifest
280
285
  files.map(async (file): Promise<[string, Manifest]> => {
281
286
  const text =
282
287
  ref === undefined
283
- ? await system.fs.readFile(joinPath(cwd, file))
288
+ ? await readFile(root, file)
284
289
  : await git(['show', `${ref}:${file}`], context)
285
290
  return [file, JSON.parse(text) as Manifest]
286
291
  })
@@ -325,16 +330,29 @@ export default ecosystem
325
330
  such as `1.5.0-beta.1` for `^1.4.0`, because the trains release prereleases on their channels.
326
331
  - **No manifest means no package.** In a repo without any of the ecosystem's manifests, return `[]`
327
332
  rather than fail. A config can then name the ecosystem before the first manifest exists.
328
- - **Always use the system.** Do not use `node:*`, `process` or the global `fetch`. Everything the
329
- module does outside itself goes through `context.system`. The trains can then run it on a CLI's
330
- system, or on a test's system in memory.
333
+ - **Always use the context.** Do not use `node:*`, `process` or the global `fetch`. Everything the
334
+ module does outside itself goes through `context.root` and `context.platform`. The trains can
335
+ then run it on a CLI's platform, or on a test's platform and folder in memory.
336
+
337
+ ### Release the packages
331
338
 
332
- ### Publish the packages
339
+ To release its packages too, the ecosystem implements `ReleasingEcosystem` of
340
+ `@wtf/release/contract`, of options of its own: `publish`, and the steps of `verify`, `prepare`,
341
+ `smoke` and `move` that fit it. Each step takes the `Release` (the version, the folder of the repo,
342
+ the platform, whether it is a dry run, and where to log), the `Plan` of the ecosystem (its packages
343
+ to publish, in order, and the version of each package of the repo), and its options. It knows no
344
+ train: a driver gives it the plan, as `planOf` of `@wtf/release-trains/plan` works one out for a
345
+ train, and runs a step of every ecosystem by `runStep` of `@wtf/release/driver`. The test ecosystem
346
+ of `@wtf/release` (`packages/release/test/contract.test.ts`) implements every step, and each
347
+ built-in library one, as the guide of each shows.
333
348
 
334
- The ecosystem does not publish. Write a semantic-release plugin for that, as
335
- `@wtf/semantic-release-npm`, `@wtf/semantic-release-cargo`, `@wtf/semantic-release-go` and
336
- `@wtf/semantic-release-maven` are. The plugin:
349
+ A semantic-release plugin over it, as `@wtf/semantic-release-npm`, `-cargo`, `-go`, `-maven` and
350
+ `-oci` are:
337
351
 
338
352
  - reads `trains`, `ecosystems` and `train` from the root of the config;
339
- - finds its train's packages with `ownersOf` from `@wtf/release-trains/packages`;
340
- - reads the other trains' versions with `releasedVersions`, which throws the trains' errors.
353
+ - works out the plan of its train with `planOf`, which throws the trains' errors;
354
+ - runs each step of the ecosystem in its step of semantic-release, on the platform and the folder of
355
+ the run that `runOf` of `@wtf/semantic-release` gives, marking the errors that leave it by
356
+ `markedStep`;
357
+ - records what `publish` published for the links of the release, by `recordReleased` of
358
+ `@wtf/semantic-release/links`.
@@ -36,15 +36,16 @@ You can also write an ecosystem of your own for any other kind of package. See
36
36
  wtf release has two layers:
37
37
 
38
38
  - **Libraries** do the work. They do not depend on semantic-release or on any other release tool.
39
- Each function takes the `system` it runs on from its caller, so you can also run the libraries
40
- from a CLI or a script of your own. See [The system](system.md).
39
+ Each function takes the folder of the repo and the platform it runs on from its caller, so you
40
+ can also run the libraries from a CLI or a script of your own. See [The platform](platform.md).
41
41
  - **Plugins** let semantic-release run the libraries. Each plugin is a thin adapter over its
42
42
  library.
43
43
 
44
44
  The libraries:
45
45
 
46
- - `@wtf/release-system` is the base of the other libraries: the system, paths and globs, git,
47
- option validators and `ReleaseError`. It knows nothing about trains.
46
+ - `@wtf/release` is the base of the other libraries: the platform they run on, the files of the
47
+ repo, programs, paths and globs, git, option validators and `ReleaseError`. It knows nothing about
48
+ trains.
48
49
  - `@wtf/release-trains` handles the trains: their commits, their checks, and the folders a build
49
50
  generates.
50
51
  - `@wtf/release-npm`, `@wtf/release-cargo`, `@wtf/release-go`, `@wtf/release-maven` and
@@ -55,6 +56,8 @@ The libraries:
55
56
 
56
57
  The plugins:
57
58
 
59
+ - `@wtf/semantic-release` is what every plugin shares: it makes Node's platform and the folder of
60
+ the repo for a run, and marks the libraries' errors for semantic-release.
58
61
  - `@wtf/semantic-release-trains` checks the trains, gives a plugin it wraps only the train's
59
62
  commits, and stages the folders a build generates.
60
63
  - `@wtf/semantic-release-npm`, `@wtf/semantic-release-cargo`, `@wtf/semantic-release-go`,
@@ -107,15 +110,14 @@ The examples in these guides use the trains that this repo releases its own pack
107
110
 
108
111
  | Train | Folders |
109
112
  | ---------- | ----------------------------------------------------------------- |
110
- | `system` | `packages/release-system` |
113
+ | `release` | `packages/release`, `packages/semantic-release` |
111
114
  | `trains` | `packages/release-trains`, `packages/semantic-release-trains`, … |
112
115
  | `replace` | `packages/release-replace`, `packages/semantic-release-replace` |
113
116
  | `validate` | `packages/release-validate`, `packages/semantic-release-validate` |
114
117
  | `docs` | `packages/docs` |
115
118
 
116
- `@wtf/release-trains` and `@wtf/release-replace` list `@wtf/release-system`, so `trains` and
117
- `replace` depend on `system`. `validate` depends on no other train. The docs package lists every
118
- package, so `docs` releases last.
119
+ Each library lists `@wtf/release`, and each plugin `@wtf/semantic-release`, so `trains`, `replace`
120
+ and `validate` depend on `release`. The docs package lists every package, so `docs` releases last.
119
121
 
120
122
  Each example shows only the trains it needs. The repo's own `release.config.mjs` declares them all,
121
123
  and tags each one `<train>-v<version>`. Here is a config with two trains:
@@ -192,7 +194,7 @@ releases nothing:
192
194
  RELEASE_TRAIN=trains npx semantic-release --dry-run --no-ci
193
195
  ```
194
196
 
195
- Release a train that another train depends on first, such as `system` before `trains`. The plugin
197
+ Release a train that another train depends on first, such as `release` before `trains`. The plugin
196
198
  warns you when a dependency train has commits that it has not released. See
197
199
  [Trains that depend on other trains](dependency-rules.md).
198
200
 
@@ -214,7 +216,7 @@ copy of each package that it packs. See [Publish npm packages](publishing.md).
214
216
  train's tag on your host.
215
217
  Wrapped in the trains plugin, `@semantic-release/gitlab` links each package that the release
216
218
  published. See [The links of the release](publishing.md#the-links-of-the-release).
217
- - [The system](system.md): run the libraries on a system of your own.
219
+ - [The platform](platform.md): run the libraries on a platform of your own.
218
220
 
219
221
  ## Make the first release
220
222
 
@@ -0,0 +1,179 @@
1
+ # The platform
2
+
3
+ Read this page when you want to run the libraries outside semantic-release, from a CLI of your own,
4
+ or in tests. You can also use it to change how the plugins run programs.
5
+
6
+ Every function of the libraries, such as `@wtf/release-trains`, `@wtf/release-npm` and
7
+ `@wtf/release-replace`, reaches the outside world through two things its caller gives it:
8
+
9
+ - `root`, the folder of the repo. It is a `FileSystemDirectoryHandle` of the File System standard,
10
+ so it can be a folder on disk, a folder in memory, or a browser's.
11
+ - `platform`, what runs programs, fetches and makes temporary folders. It is a part of the platform
12
+ of [`@wtf/platform`](https://www.npmjs.com/package/@wtf/platform), picked to what the function
13
+ uses.
14
+
15
+ The types come from `@wtf/release`, the base that the other libraries build on. A function requires
16
+ them from its caller and never makes them itself. None of the library modules names Node. Each
17
+ caller passes what fits it:
18
+
19
+ - A semantic-release plugin passes Node's platform and the folder of the run.
20
+ - A CLI passes Node's, or a platform of its own.
21
+ - A test passes a platform and a folder in memory.
22
+
23
+ Each function takes only what it uses:
24
+
25
+ | It takes | What it holds | Which functions take it |
26
+ | ----------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
27
+ | `root` alone | The folder of the repo. | A function that only reads or writes files of the repo. |
28
+ | `RepoPlatform` | `spawn`, which starts a program, `env`, the environment a program gets, and `dirs.cwd`, the working folder. | A function that runs git, or another program of the repo. |
29
+ | `ReleasePlatform` | A `RepoPlatform`, with `fetch`, and `path`, `navigator`, `crypto` and `dirs.temp` for temporary folders. | A release that fetches, or stages what it packs outside the repo. |
30
+
31
+ `platform.dirs.cwd` is the path of the folder that `root` is the handle of, and programs run there.
32
+ `RepoContext` holds the two together, `{ root, platform }`:
33
+
34
+ ```ts
35
+ import type { RepoContext } from '@wtf/release'
36
+ import { readFile } from '@wtf/release/files'
37
+ import { run } from '@wtf/release/process'
38
+
39
+ /** The name of the root package, and the commit of the working tree. */
40
+ export async function describe({ root, platform }: RepoContext) {
41
+ const { name } = JSON.parse(await readFile(root, 'package.json')) as { name: string }
42
+ const { stdout } = await run(platform, 'git', ['rev-parse', 'HEAD'])
43
+ return `${name}@${stdout.trim()}`
44
+ }
45
+ ```
46
+
47
+ `@wtf/release/files` reads and writes the files of a folder by their paths from it, with `/`:
48
+ `readFile`, `readBytes`, `writeFile`, `exists`, `readDir`, `makeDir`, `remove` and `copy`.
49
+ `@wtf/release/posix` joins paths without a platform.
50
+
51
+ `run` of `@wtf/release/process` runs a program in the folder of the repo, or in a folder of it, and
52
+ returns `{ stdout, stderr, code }`. The program gets the platform's `env`, or the environment you
53
+ give it whole; `envOf` makes one of the platform's with variables of your own. A non-zero exit code
54
+ is not a failure of `run` itself, and the caller decides what it means. `run` rejects only when the
55
+ program cannot start.
56
+
57
+ ## Use Node's platform
58
+
59
+ A CLI or a script on Node makes Node's platform with `nodePlatform` of
60
+ `@wtf/platform-node/platform`, and the folder of the repo with `nodeDirectory` of
61
+ `@wtf/platform-fs-node/handles`. Node's platform works in `process.cwd()` and gives each program
62
+ `process.env`:
63
+
64
+ ```ts
65
+ import type { ReleasePlatform } from '@wtf/release'
66
+ import { readWorkspace } from '@wtf/release-npm/workspace'
67
+ import { nodeDirectory } from '@wtf/platform-fs-node/handles'
68
+ import { nodeStorage } from '@wtf/platform-fs-node/storage'
69
+ import { nodePlatform } from '@wtf/platform-node/platform'
70
+
71
+ const platform: ReleasePlatform = nodePlatform({
72
+ fetch: (input, init) => fetch(input, init),
73
+ storage: nodeStorage()
74
+ })
75
+ const root = await nodeDirectory(platform.dirs.cwd)
76
+
77
+ export const packages = await readWorkspace(root)
78
+ ```
79
+
80
+ ## Write a platform of your own
81
+
82
+ A CLI gives each function the platform it runs on, so it can change any member of it. This example
83
+ logs each program before it runs:
84
+
85
+ ```ts
86
+ import type { ReleasePlatform, RepoContext } from '@wtf/release'
87
+ import npm from '@wtf/release-npm'
88
+ import { verifyTrain } from '@wtf/release-trains/verify'
89
+
90
+ /** A platform whose programs are logged before they run, over the one a CLI has. */
91
+ export const logged = (platform: ReleasePlatform): ReleasePlatform => ({
92
+ ...platform,
93
+ spawn: (command, args, options) => {
94
+ console.error(`$ ${command} ${args.join(' ')}`)
95
+ return platform.spawn(command, args, options)
96
+ }
97
+ })
98
+
99
+ export function check({ root, platform }: RepoContext<ReleasePlatform>) {
100
+ return verifyTrain({
101
+ trains: {
102
+ validate: { paths: ['packages/release-validate', 'packages/semantic-release-validate'] }
103
+ },
104
+ train: 'validate',
105
+ ecosystems: [npm],
106
+ root,
107
+ platform: logged(platform)
108
+ })
109
+ }
110
+ ```
111
+
112
+ ## The platform of the plugins
113
+
114
+ Each plugin makes Node's platform and the folder of the repo for the run, with `runOf` of
115
+ `@wtf/semantic-release`. It makes them from the folder and the environment that semantic-release
116
+ gives each step, `cwd` and `env`, which the plugin requires. It passes them to every call into its
117
+ library, so each program runs in that folder and with that environment.
118
+
119
+ A plugin knows it runs on Node, and a library does not: a library always takes the platform it is
120
+ given and assumes none. So a plugin has no option of its platform, and lays nothing over Node's. To
121
+ change what the programs of a release see, change the environment of the run, as the variables of
122
+ its job: `GIT_TERMINAL_PROMPT=0` stops every program of the release from asking for a password.
123
+
124
+ A test of a plugin that runs it on a platform in memory mocks `@wtf/platform-node/platform`, as
125
+ Vitest's `vi.mock` does, so the plugin's Node's platform is the test's.
126
+
127
+ ## Errors
128
+
129
+ The libraries throw plain errors: each is a `ReleaseError` of `@wtf/release/errors`, or of a class
130
+ of its package that extends it, with a stable code, a message of what is wrong, and details of how
131
+ to fix it. They know nothing of the tool that prints them.
132
+
133
+ A plugin marks them as they leave each of its steps, with `markedStep` of
134
+ `@wtf/semantic-release/errors`, so that semantic-release prints each by its code, its message and
135
+ its details. A CLI of your own prints them its own way:
136
+
137
+ ```ts
138
+ import { isReleaseError } from '@wtf/release/errors'
139
+
140
+ /** An error as a CLI prints it: its code and how to fix it, of a release's. */
141
+ export const printed = (error: unknown): string =>
142
+ isReleaseError(error) ? `${error.code}: ${error.message}\n${error.details}` : String(error)
143
+ ```
144
+
145
+ ## Use a platform in tests
146
+
147
+ A platform with scripted programs and a folder in memory run the libraries with no disk and no git.
148
+ `memoryPlatform` of `@wtf/platform-memory/platform` answers each program by a script, and records
149
+ each it runs. `memoryDirectory` of `@wtf/platform-fs-memory/handles` is a disk in memory:
150
+
151
+ ```ts
152
+ import { testDirs } from '@wtf/platform/dirs'
153
+ import { memoryDirectory } from '@wtf/platform-fs-memory/handles'
154
+ import { memoryPlatform } from '@wtf/platform-memory/platform'
155
+ import { makeDir, writeFile } from '@wtf/release/files'
156
+ import npm from '@wtf/release-npm'
157
+
158
+ // A disk in memory, of the folder of the repo, /repo, and a temporary folder, /tmp.
159
+ const disk = memoryDirectory()
160
+ const root = await makeDir(disk, 'repo')
161
+ await makeDir(disk, 'tmp')
162
+ await writeFile(root, 'package.json', '{ "name": "repo", "private": true }')
163
+ await writeFile(root, 'packages/core/package.json', '{ "name": "@acme/core" }')
164
+
165
+ // git lists the files it tracks. Any other program is not there, as of a command not found.
166
+ const platform = memoryPlatform({
167
+ dirs: testDirs({ cwd: '/repo', temp: '/tmp' }),
168
+ directory: () => disk,
169
+ spawn: (command, args) =>
170
+ command === 'git' && args[0] === 'ls-files'
171
+ ? { stdout: 'package.json\0packages/core/package.json\0' }
172
+ : undefined
173
+ })
174
+
175
+ export const names = async () => (await npm.packages({ root, platform })).map(({ name }) => name) // ['repo', '@acme/core']
176
+
177
+ // Each program that ran: [{ command: 'git', args: ['ls-files', '-z'], … }]
178
+ export const runs = () => platform.spawn.runs
179
+ ```
@@ -94,21 +94,57 @@ and at the commit of a train's last release. For that commit, they export the fi
94
94
 
95
95
  ## What a release does
96
96
 
97
- 1. **`verifyConditions`** checks the options and reads the workspace with `cargo metadata`. It
98
- selects the crates that the release publishes and puts them in dependency order. It reads each
99
- other train's last release from its tags. It checks the credentials. A workspace that cannot be
97
+ The plugin maps each step of semantic-release onto a step of the cargo ecosystem, the contract of
98
+ [`@wtf/release`](../../release/README.md). It gives the ecosystem the release, of the next
99
+ release's version, and the train's plan: the train's crates that publish, in dependency order, and
100
+ the version of each crate of the workspace, the release's for the train's crates and each other
101
+ train's last release for that train's crates.
102
+
103
+ 1. **`verifyConditions`** checks the options and works out the plan, which reads the workspace with
104
+ `cargo metadata` and each other train's last release from its tags. A workspace that cannot be
100
105
  published fails here, before the tag (see
101
106
  [When crates depend on other trains](#when-crates-depend-on-other-trains)).
102
- 2. **`prepare`** writes the versions into the manifests: the release's version into the train's
103
- crates, and each other train's last release into that train's crates and into each dependency on
104
- them. It then reads the workspace again. A crate that is not at its train's version fails the run
105
- (see [What the stamp does not read](#what-the-stamp-does-not-read)).
106
- 3. **`publish`** asks the registry's sparse index which crates it already has, and skips them. It
107
- publishes the rest in dependency order with `cargo publish`. cargo waits for each crate to appear
108
- in the index before the next one, so the crates of a release can install each other.
109
-
110
- A dry run of semantic-release runs only `verifyConditions`. It writes no version and publishes
111
- nothing.
107
+ 2. **`verifyRelease`** runs the ecosystem's `verify` once semantic-release knows the version: it
108
+ checks the version, the crates that the release publishes, of `include` and `exclude`, their
109
+ order, and the credentials.
110
+ 3. **`prepare`** runs the ecosystem's `prepare`, which writes the plan's versions into the
111
+ manifests: the release's version into the train's crates, and each other train's last release
112
+ into that train's crates and into each dependency on them. It then reads the workspace again. A
113
+ crate that is not at its train's version fails the run (see
114
+ [What the stamp does not read](#what-the-stamp-does-not-read)).
115
+ 4. **`publish`** runs the ecosystem's `publish`. It asks the registry's sparse index which crates
116
+ it already has, and skips them. It publishes the rest in the plan's order with `cargo publish`.
117
+ cargo waits for each crate to appear in the index before the next one, so the crates of a
118
+ release can install each other.
119
+
120
+ A dry run of semantic-release runs only `verifyConditions` and `verifyRelease`. It writes no
121
+ version and publishes nothing.
122
+
123
+ ### Without semantic-release
124
+
125
+ The ecosystem knows no train and no release tool, so any driver can release the crates: give it a
126
+ release and a plan, and run its steps, as with `runStep` of `@wtf/release/driver`. A dry run
127
+ (`dryRun: true`) writes and publishes nothing: `prepare` gives the manifests it would write, and
128
+ `publish` only asks the registry.
129
+
130
+ ```ts
131
+ import type { Release } from '@wtf/release/contract'
132
+ import { runStep } from '@wtf/release/driver'
133
+ import { publishOrder } from '@wtf/release/order'
134
+ import cargo from '@wtf/release-cargo'
135
+
136
+ /** Every crate of the workspace that publishes, at the version of the release, but the docs. */
137
+ export async function releaseCrates(release: Release) {
138
+ const packages = await cargo.packages(release)
139
+ const { order } = publishOrder(packages.filter(({ published }) => published))
140
+ const versions = new Map(order.map(({ name }) => [name, release.version]))
141
+ const plans = new Map([['cargo', { own: order, versions }]])
142
+ const ecosystems = [[cargo, { exclude: ['docs'] }]] as const
143
+ await runStep(release, plans, ecosystems, 'verify')
144
+ await runStep(release, plans, ecosystems, 'prepare')
145
+ return (await runStep(release, plans, ecosystems, 'publish')).released
146
+ }
147
+ ```
112
148
 
113
149
  ## When crates depend on other trains
114
150
 
@@ -210,7 +246,10 @@ no release publishes it.
210
246
  before the tag with `EDEPENDENCYNORELEASE`.
211
247
  - **`publish = false` on what is not published.** Mark an example or a test crate of the workspace
212
248
  this way. Otherwise the train whose paths hold it publishes it. You can also leave a crate of the
213
- train out with `exclude`, which names only crates of the train (`ECRATES`).
249
+ train out with `exclude`, which names only crates of the train, or crates that publish nowhere
250
+ (`ECRATES`). A crate with `publish = false` that a train's paths hold is stamped at the
251
+ train's version all the same, with its dependencies on published crates, so `cargo publish
252
+ --workspace` and the smoke, which build every member, resolve it.
214
253
 
215
254
  ## Authenticate to the registry
216
255
 
@@ -220,9 +259,9 @@ uses:
220
259
  - an ID token of the job, in `CRATES_IO_ID_TOKEN` by default (`idToken` names another variable);
221
260
  - a token, in `CARGO_REGISTRY_TOKEN`.
222
261
 
223
- With both, the plugin uses the ID token and the log says so. With neither, `verifyConditions` fails
224
- with `ECRATEAUTH` before the tag. A dry run only warns, because semantic-release runs only
225
- `verifyConditions` in a dry run.
262
+ With both, the plugin uses the ID token and the log says so. With neither, `verifyRelease` fails
263
+ with `ECRATEAUTH` before the tag. A dry run only warns so, because semantic-release runs neither
264
+ `prepare` nor `publish` in a dry run.
226
265
 
227
266
  ### Trusted publishing
228
267
 
@@ -265,6 +304,8 @@ The plugin does the rest:
265
304
  - When the job ends, even when it fails, the plugin revokes the token (`DELETE` on the same URL). A
266
305
  failed revoke is logged and fails nothing, because the token expires by itself.
267
306
  - The tokens appear in no log and no error.
307
+ - Each request to the registry names the library, `@wtf/release-cargo`, as its user agent, as
308
+ crates.io asks every client to name itself.
268
309
 
269
310
  A registry other than crates.io that offers the same exchange takes its API as `registryApi`, with
270
311
  its `registry` and its `index`:
@@ -10,7 +10,9 @@ or `v<version>` for a module at the root. The Go proxy reads the module from tha
10
10
  publishes a module by pushing its tag.
11
11
 
12
12
  The plugin runs on the library [`@wtf/release-go`](../../release-go/README.md). The library's
13
- default export is the Go ecosystem, and the plugin exports the same ecosystem at `./ecosystem`. Add
13
+ default export is the Go ecosystem, which reads the modules of a repo and releases them in the steps
14
+ of [`@wtf/release`](../../release/README.md)'s contract, and the plugin exports the same ecosystem
15
+ at `./ecosystem`. Add
14
16
  `'@wtf/semantic-release-go/ecosystem'` to `ecosystems` in your config. The trains then treat modules
15
17
  the same way as npm packages: they decide which train holds each module, the order of the trains,
16
18
  the checks of a release, and the releases a train owes the trains it depends on. See
@@ -102,18 +104,24 @@ workflow:
102
104
 
103
105
  ## What a release does
104
106
 
105
- 1. **`verifyConditions`** checks the options and reads the go.mod files that git tracks. It selects
106
- the modules that the release tags, and reads each other train's last release from its tags. A
107
- repo that cannot be released fails here, before the tag (see
107
+ Each step of semantic-release runs a step of the Go ecosystem over the plan of the train: the
108
+ modules of the train that Go can fetch, and the version of each module of the repo.
109
+
110
+ 1. **`verifyConditions`** checks the options and reads the go.mod files that git tracks. It works
111
+ out the plan of the train, which reads each other train's last release from its tags, and selects
112
+ the modules that the release tags. A repo that cannot be released fails here, before the tag (see
108
113
  [When modules depend on other trains](#when-modules-depend-on-other-trains)).
109
- 2. **`verifyRelease`** checks each module's path against the major of the release's version
110
- (`EGOMAJOR`; see [Release a new major](#release-a-new-major)).
111
- 3. **`prepare`** checks the majors again and writes the versions into the go.mod files. It writes
114
+ 2. **`verifyRelease`** runs the ecosystem's `verify`. It checks that the version is one Go tags a
115
+ module of (`EGOSEMVER`), and each module's path against the major of the version (`EGOMAJOR`;
116
+ see [Release a new major](#release-a-new-major)).
117
+ 3. **`prepare`** runs the ecosystem's `prepare`, which writes the versions into the go.mod
118
+ files. It writes
112
119
  the release's version into each require of a module of the train, and each other train's last
113
120
  release into each require of that train's modules, in every go.mod of the repo. Then it reads the
114
121
  files again, and a require that is not at its train's version fails the run (`EGOVERSION`; see
115
122
  [What the release changes in go.mod](#what-the-release-changes-in-gomod)).
116
- 4. **`publish`** commits the changed go.mod files and tags that commit with each module's tag (see
123
+ 4. **`publish`** runs `publish`, which commits the changed go.mod files and tags that commit with
124
+ each module's tag (see
117
125
  [Tag a commit that holds the versions](#tag-a-commit-that-holds-the-versions)). It skips each tag
118
126
  the remote already has. With `proxy`, it then asks the Go proxy for each module.
119
127
 
@@ -132,7 +140,8 @@ tag. The branch, the index and the working tree stay as they are; only the tags
132
140
 
133
141
  - The commit message is `chore(release): Go modules of <train> <version>`.
134
142
  - The author comes from `GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL`, and the committer from
135
- `GIT_COMMITTER_*`. Without them, both are `semantic-release-bot`.
143
+ `GIT_COMMITTER_*`. Without them, both are `semantic-release-bot`. The plugin gives the library
144
+ this author: the library itself has none, and a caller of its own names one.
136
145
  - When no go.mod changed, as for modules that require no other module of the repo, the plugin tags
137
146
  the release commit itself.
138
147
 
@@ -190,8 +199,8 @@ From v2 on, Go holds the major in the module path: `example.com/repo/core/v2`. A
190
199
  `/vN` needs a release of major N. A release of major 2 or higher needs a path that ends in its
191
200
  major.
192
201
 
193
- The plugin checks this in `verifyRelease`, once semantic-release knows the version, and again in
194
- `prepare`. So a breaking change to a module whose path has no `/v2` fails before anything is tagged
202
+ The plugin checks this in `verifyRelease`, once semantic-release knows the version. So a breaking
203
+ change to a module whose path has no `/v2` fails before anything is tagged
195
204
  (`EGOMAJOR`). The error names the go.mod to change. In the commit of the breaking change:
196
205
 
197
206
  1. Write `module example.com/repo/core/v2` in that go.mod.
@@ -276,3 +285,38 @@ Before it creates anything, the plugin asks the remote for every tag. It skips e
276
285
  has, and pushes the rest in one atomic push: all of them or none. So retry the tag's job to create
277
286
  the missing tags. A remote that cannot be asked stops the run before anything is created
278
287
  (`EGOTAG`).
288
+
289
+ ## Release Go modules without semantic-release
290
+
291
+ The Go ecosystem knows no train and no release tool. Any caller can release modules with it: give
292
+ it a release, a plan, and its options, and run its steps, one by one or through `runStep` of
293
+ `@wtf/release/driver`. The plan says which modules the release tags (`own`) and the version that
294
+ each module of the repo is required at (`versions`). `@wtf/release-trains/plan` works out the plan
295
+ of a train, or you can write one by hand.
296
+
297
+ ```ts
298
+ import type { Plan, Release } from '@wtf/release/contract'
299
+ import { runStep } from '@wtf/release/driver'
300
+ import go from '@wtf/release-go'
301
+
302
+ declare const release: Release
303
+ declare const plan: Plan
304
+
305
+ const plans = new Map([['go', plan]])
306
+ const ecosystems = [
307
+ [
308
+ go,
309
+ {
310
+ remote: 'origin',
311
+ author: { name: 'Release Bot', email: 'release-bot@example.com' },
312
+ proxy: true
313
+ }
314
+ ]
315
+ ] as const
316
+ await runStep(release, plans, ecosystems, 'verify')
317
+ await runStep(release, plans, ecosystems, 'prepare')
318
+ export const { released } = await runStep(release, plans, ecosystems, 'publish')
319
+ ```
320
+
321
+ `publish` needs `remote` and `author`, unless the release is a dry run (`EGOTAG`). A dry run writes
322
+ no go.mod, creates no commit and no tag, and asks the proxy nothing: it says the tags it would push.