@wtf/release-docs 8.2.1 → 8.2.3

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 (557) hide show
  1. package/README.md +56 -44
  2. package/api/@wtf/release-cargo/auth/functions/mask.md +1 -1
  3. package/api/@wtf/release-cargo/auth/functions/tokenVariableOf.md +1 -1
  4. package/api/@wtf/release-cargo/auth/functions/trustedPublishing.md +1 -1
  5. package/api/@wtf/release-cargo/auth/interfaces/HttpResponse.md +5 -5
  6. package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishing.md +5 -5
  7. package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishingOptions.md +6 -6
  8. package/api/@wtf/release-cargo/auth/type-aliases/HttpFetch.md +1 -1
  9. package/api/@wtf/release-cargo/auth/variables/CRATES_IO_API.md +1 -1
  10. package/api/@wtf/release-cargo/auth/variables/ID_TOKEN_VARIABLE.md +1 -1
  11. package/api/@wtf/release-cargo/auth/variables/USER_AGENT.md +1 -1
  12. package/api/@wtf/release-cargo/crates/functions/publishOrder.md +1 -1
  13. package/api/@wtf/release-cargo/crates/functions/publishable.md +1 -1
  14. package/api/@wtf/release-cargo/crates/functions/readWorkspace.md +1 -1
  15. package/api/@wtf/release-cargo/crates/functions/selectCrates.md +1 -1
  16. package/api/@wtf/release-cargo/crates/interfaces/Selection.md +5 -5
  17. package/api/@wtf/release-cargo/ecosystem/functions/packagesAt.md +1 -1
  18. package/api/@wtf/release-cargo/ecosystem/functions/packagesOfTree.md +1 -1
  19. package/api/@wtf/release-cargo/ecosystem/functions/packagesOfWorkspace.md +1 -1
  20. package/api/@wtf/release-cargo/ecosystem/functions/resolveRequirement.md +1 -1
  21. package/api/@wtf/release-cargo/ecosystem/functions/satisfiesRequirement.md +1 -1
  22. package/api/@wtf/release-cargo/ecosystem/functions/semverRange.md +1 -1
  23. package/api/@wtf/release-cargo/ecosystem/interfaces/CargoPackage.md +7 -7
  24. package/api/@wtf/release-cargo/ecosystem/variables/cargoEcosystem.md +1 -1
  25. package/api/@wtf/release-cargo/errors/classes/CargoError.md +5 -5
  26. package/api/@wtf/release-cargo/errors/type-aliases/CargoErrorCode.md +1 -1
  27. package/api/@wtf/release-cargo/errors/variables/CARGO_ERRORS.md +1 -1
  28. package/api/@wtf/release-cargo/interfaces/Crate.md +6 -6
  29. package/api/@wtf/release-cargo/interfaces/CrateDependency.md +6 -6
  30. package/api/@wtf/release-cargo/interfaces/Workspace.md +3 -3
  31. package/api/@wtf/release-cargo/publish/functions/publishCrates.md +1 -1
  32. package/api/@wtf/release-cargo/publish/interfaces/PublishCratesOptions.md +11 -11
  33. package/api/@wtf/release-cargo/publish/interfaces/PublishedCrate.md +5 -5
  34. package/api/@wtf/release-cargo/publish/type-aliases/CrateStatus.md +1 -1
  35. package/api/@wtf/release-cargo/publish/variables/RECHECK_WAITS.md +1 -1
  36. package/api/@wtf/release-cargo/registry/functions/crateUrl.md +1 -1
  37. package/api/@wtf/release-cargo/registry/functions/indexHasVersion.md +1 -1
  38. package/api/@wtf/release-cargo/registry/functions/indexPath.md +1 -1
  39. package/api/@wtf/release-cargo/registry/variables/CRATES_IO_INDEX.md +1 -1
  40. package/api/@wtf/release-cargo/stamp/functions/checkVersions.md +1 -1
  41. package/api/@wtf/release-cargo/stamp/functions/inheritsVersion.md +1 -1
  42. package/api/@wtf/release-cargo/stamp/functions/stampManifest.md +1 -1
  43. package/api/@wtf/release-cargo/stamp/functions/stampWorkspace.md +1 -1
  44. package/api/@wtf/release-cargo/stamp/interfaces/StampOptions.md +4 -4
  45. package/api/@wtf/release-cargo/stamp/interfaces/Stamped.md +3 -3
  46. package/api/@wtf/release-cargo/stamp/interfaces/StampedWorkspace.md +3 -3
  47. package/api/@wtf/release-cargo/type-aliases/DependencyKind.md +1 -1
  48. package/api/@wtf/release-go/ecosystem/functions/packagesOfModules.md +1 -1
  49. package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +1 -1
  50. package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +1 -1
  51. package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +1 -1
  52. package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +7 -7
  53. package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +1 -1
  54. package/api/@wtf/release-go/errors/classes/GoError.md +5 -5
  55. package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +1 -1
  56. package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +1 -1
  57. package/api/@wtf/release-go/gomod/functions/entriesOf.md +1 -1
  58. package/api/@wtf/release-go/gomod/functions/linesOf.md +1 -1
  59. package/api/@wtf/release-go/gomod/functions/readGoMod.md +1 -1
  60. package/api/@wtf/release-go/gomod/functions/tokensOf.md +1 -1
  61. package/api/@wtf/release-go/gomod/interfaces/Entry.md +4 -4
  62. package/api/@wtf/release-go/gomod/interfaces/GoMod.md +4 -4
  63. package/api/@wtf/release-go/gomod/interfaces/GoReplace.md +6 -6
  64. package/api/@wtf/release-go/gomod/interfaces/GoRequire.md +4 -4
  65. package/api/@wtf/release-go/gomod/interfaces/Token.md +5 -5
  66. package/api/@wtf/release-go/interfaces/GoModule.md +6 -6
  67. package/api/@wtf/release-go/modules/functions/isFetchable.md +1 -1
  68. package/api/@wtf/release-go/modules/functions/isGoMod.md +1 -1
  69. package/api/@wtf/release-go/modules/functions/majorErrors.md +1 -1
  70. package/api/@wtf/release-go/modules/functions/majorOfPath.md +1 -1
  71. package/api/@wtf/release-go/modules/functions/modulesAt.md +1 -1
  72. package/api/@wtf/release-go/modules/functions/modulesOf.md +1 -1
  73. package/api/@wtf/release-go/modules/functions/readModules.md +1 -1
  74. package/api/@wtf/release-go/modules/functions/selectModules.md +1 -1
  75. package/api/@wtf/release-go/modules/interfaces/Selection.md +4 -4
  76. package/api/@wtf/release-go/stamp/functions/checkVersions.md +1 -1
  77. package/api/@wtf/release-go/stamp/functions/stampGoMod.md +1 -1
  78. package/api/@wtf/release-go/stamp/functions/stampModules.md +1 -1
  79. package/api/@wtf/release-go/stamp/interfaces/Stamped.md +3 -3
  80. package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +3 -3
  81. package/api/@wtf/release-go/tags/functions/askProxy.md +1 -1
  82. package/api/@wtf/release-go/tags/functions/maskCredentials.md +1 -1
  83. package/api/@wtf/release-go/tags/functions/releaseCommit.md +1 -1
  84. package/api/@wtf/release-go/tags/functions/remoteTags.md +1 -1
  85. package/api/@wtf/release-go/tags/functions/tagModules.md +1 -1
  86. package/api/@wtf/release-go/tags/functions/tagOfModule.md +1 -1
  87. package/api/@wtf/release-go/tags/functions/tagPrefix.md +1 -1
  88. package/api/@wtf/release-go/tags/interfaces/TagModulesOptions.md +8 -8
  89. package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +5 -5
  90. package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +1 -1
  91. package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +1 -1
  92. package/api/@wtf/release-maven/artifacts/functions/groupIdOf.md +1 -1
  93. package/api/@wtf/release-maven/artifacts/functions/installsOf.md +1 -1
  94. package/api/@wtf/release-maven/artifacts/functions/isPomFile.md +1 -1
  95. package/api/@wtf/release-maven/artifacts/functions/isRange.md +1 -1
  96. package/api/@wtf/release-maven/artifacts/functions/modulesOf.md +1 -1
  97. package/api/@wtf/release-maven/artifacts/functions/nameOf.md +1 -1
  98. package/api/@wtf/release-maven/artifacts/functions/publishOrder.md +1 -1
  99. package/api/@wtf/release-maven/artifacts/functions/readModules.md +1 -1
  100. package/api/@wtf/release-maven/artifacts/functions/readPoms.md +1 -1
  101. package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +1 -1
  102. package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +4 -4
  103. package/api/@wtf/release-maven/ecosystem/functions/compareVersions.md +1 -1
  104. package/api/@wtf/release-maven/ecosystem/functions/parseRange.md +1 -1
  105. package/api/@wtf/release-maven/ecosystem/functions/resolveVersion.md +1 -1
  106. package/api/@wtf/release-maven/ecosystem/functions/satisfiesVersion.md +1 -1
  107. package/api/@wtf/release-maven/ecosystem/interfaces/Bound.md +3 -3
  108. package/api/@wtf/release-maven/ecosystem/interfaces/Restriction.md +3 -3
  109. package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +1 -1
  110. package/api/@wtf/release-maven/errors/classes/MavenError.md +5 -5
  111. package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +1 -1
  112. package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +1 -1
  113. package/api/@wtf/release-maven/interfaces/MavenModule.md +14 -14
  114. package/api/@wtf/release-maven/pom/functions/childOf.md +1 -1
  115. package/api/@wtf/release-maven/pom/functions/childrenOf.md +1 -1
  116. package/api/@wtf/release-maven/pom/functions/dependencyOf.md +1 -1
  117. package/api/@wtf/release-maven/pom/functions/escapeXml.md +1 -1
  118. package/api/@wtf/release-maven/pom/functions/parseXml.md +1 -1
  119. package/api/@wtf/release-maven/pom/functions/readPom.md +1 -1
  120. package/api/@wtf/release-maven/pom/functions/textAt.md +1 -1
  121. package/api/@wtf/release-maven/pom/interfaces/Pom.md +15 -15
  122. package/api/@wtf/release-maven/pom/interfaces/PomDependency.md +5 -5
  123. package/api/@wtf/release-maven/pom/interfaces/PomParent.md +4 -4
  124. package/api/@wtf/release-maven/pom/interfaces/PomPlugin.md +5 -5
  125. package/api/@wtf/release-maven/pom/interfaces/PomRepository.md +3 -3
  126. package/api/@wtf/release-maven/pom/interfaces/Span.md +3 -3
  127. package/api/@wtf/release-maven/pom/interfaces/XmlElement.md +7 -7
  128. package/api/@wtf/release-maven/pom/variables/PLUGIN_GROUP.md +1 -1
  129. package/api/@wtf/release-maven/publish/functions/deployModules.md +1 -1
  130. package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +11 -11
  131. package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +4 -4
  132. package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +1 -1
  133. package/api/@wtf/release-maven/repository/functions/deployTargets.md +1 -1
  134. package/api/@wtf/release-maven/repository/functions/expandValues.md +1 -1
  135. package/api/@wtf/release-maven/repository/functions/hasPom.md +1 -1
  136. package/api/@wtf/release-maven/repository/functions/pomPath.md +1 -1
  137. package/api/@wtf/release-maven/repository/functions/pomUrl.md +1 -1
  138. package/api/@wtf/release-maven/repository/interfaces/Repository.md +3 -3
  139. package/api/@wtf/release-maven/repository/interfaces/ValuesOf.md +3 -3
  140. package/api/@wtf/release-maven/repository/variables/MAVEN_CENTRAL.md +1 -1
  141. package/api/@wtf/release-maven/stamp/functions/checkVersions.md +1 -1
  142. package/api/@wtf/release-maven/stamp/functions/stampModules.md +1 -1
  143. package/api/@wtf/release-maven/stamp/functions/stampPom.md +1 -1
  144. package/api/@wtf/release-maven/stamp/interfaces/PomStampOptions.md +5 -5
  145. package/api/@wtf/release-maven/stamp/interfaces/Stamped.md +3 -3
  146. package/api/@wtf/release-maven/stamp/interfaces/StampedModules.md +3 -3
  147. package/api/@wtf/release-npm/check/functions/checkPackages.md +1 -1
  148. package/api/@wtf/release-npm/check/functions/formatIssue.md +1 -1
  149. package/api/@wtf/release-npm/check/interfaces/CheckOptions.md +6 -6
  150. package/api/@wtf/release-npm/check/interfaces/Issue.md +5 -5
  151. package/api/@wtf/release-npm/check/type-aliases/CheckedPackage.md +1 -1
  152. package/api/@wtf/release-npm/check/type-aliases/IssueCode.md +1 -1
  153. package/api/@wtf/release-npm/ecosystem/variables/npmEcosystem.md +1 -1
  154. package/api/@wtf/release-npm/errors/type-aliases/NpmErrorCode.md +1 -1
  155. package/api/@wtf/release-npm/errors/variables/NPM_ERRORS.md +1 -1
  156. package/api/@wtf/release-npm/interfaces/Lookup.md +3 -3
  157. package/api/@wtf/release-npm/interfaces/PublishOptions.md +6 -6
  158. package/api/@wtf/release-npm/interfaces/PublishPackage.md +5 -5
  159. package/api/@wtf/release-npm/interfaces/PublishTrainOptions.md +13 -13
  160. package/api/@wtf/release-npm/interfaces/Publisher.md +7 -7
  161. package/api/@wtf/release-npm/interfaces/PublisherContext.md +7 -7
  162. package/api/@wtf/release-npm/manifests/functions/concreteRange.md +1 -1
  163. package/api/@wtf/release-npm/manifests/functions/manifestsAt.md +1 -1
  164. package/api/@wtf/release-npm/manifests/functions/packageOf.md +1 -1
  165. package/api/@wtf/release-npm/manifests/functions/packagesOfManifests.md +1 -1
  166. package/api/@wtf/release-npm/manifests/functions/readManifests.md +1 -1
  167. package/api/@wtf/release-npm/manifests/functions/resolveSpecifier.md +1 -1
  168. package/api/@wtf/release-npm/manifests/functions/runtimeDependenciesOf.md +1 -1
  169. package/api/@wtf/release-npm/manifests/functions/satisfiesRange.md +1 -1
  170. package/api/@wtf/release-npm/manifests/interfaces/Manifest.md +5 -5
  171. package/api/@wtf/release-npm/manifests/interfaces/NpmPackage.md +7 -7
  172. package/api/@wtf/release-npm/manifests/type-aliases/DependencyField.md +1 -1
  173. package/api/@wtf/release-npm/manifests/variables/DEPENDENCY_FIELDS.md +1 -1
  174. package/api/@wtf/release-npm/manifests/variables/FIELD_KINDS.md +1 -1
  175. package/api/@wtf/release-npm/manifests/variables/RUNTIME_FIELDS.md +1 -1
  176. package/api/@wtf/release-npm/prepare/functions/isTypeScriptSource.md +1 -1
  177. package/api/@wtf/release-npm/prepare/functions/prepareManifest.md +1 -1
  178. package/api/@wtf/release-npm/prepare/functions/stripSourceConditions.md +1 -1
  179. package/api/@wtf/release-npm/prepare/interfaces/PrepareOptions.md +5 -5
  180. package/api/@wtf/release-npm/prepare/interfaces/PreparedManifest.md +6 -6
  181. package/api/@wtf/release-npm/prepare/variables/SOURCE_CONDITIONS.md +1 -1
  182. package/api/@wtf/release-npm/publishers/functions/builtInPublisher.md +1 -1
  183. package/api/@wtf/release-npm/publishers/functions/isPublisher.md +1 -1
  184. package/api/@wtf/release-npm/publishers/variables/NPM_REGISTRY.md +1 -1
  185. package/api/@wtf/release-npm/publishers/variables/PUBLISHERS.md +1 -1
  186. package/api/@wtf/release-npm/publishers/variables/npmPublisher.md +1 -1
  187. package/api/@wtf/release-npm/publishers/variables/pnpmPublisher.md +1 -1
  188. package/api/@wtf/release-npm/release/functions/checkTrain.md +1 -1
  189. package/api/@wtf/release-npm/release/functions/distTagOf.md +1 -1
  190. package/api/@wtf/release-npm/release/functions/packTrain.md +1 -1
  191. package/api/@wtf/release-npm/release/functions/publishPacked.md +1 -1
  192. package/api/@wtf/release-npm/release/functions/publishTrain.md +1 -1
  193. package/api/@wtf/release-npm/release/functions/publishedOf.md +1 -1
  194. package/api/@wtf/release-npm/release/functions/publishedOfResolved.md +1 -1
  195. package/api/@wtf/release-npm/release/functions/releaseTrain.md +1 -1
  196. package/api/@wtf/release-npm/release/functions/resolveManifests.md +1 -1
  197. package/api/@wtf/release-npm/release/functions/tagTrain.md +1 -1
  198. package/api/@wtf/release-npm/release/interfaces/CheckRelease.md +16 -16
  199. package/api/@wtf/release-npm/release/interfaces/PackOptions.md +8 -8
  200. package/api/@wtf/release-npm/release/interfaces/PackedTrain.md +12 -12
  201. package/api/@wtf/release-npm/release/interfaces/PublishRun.md +11 -11
  202. package/api/@wtf/release-npm/release/interfaces/PublishedOf.md +4 -4
  203. package/api/@wtf/release-npm/release/interfaces/PublishedPackage.md +7 -7
  204. package/api/@wtf/release-npm/release/interfaces/PublishedTrain.md +5 -5
  205. package/api/@wtf/release-npm/release/interfaces/ResolveRelease.md +17 -17
  206. package/api/@wtf/release-npm/release/interfaces/ResolvedPackage.md +4 -4
  207. package/api/@wtf/release-npm/release/interfaces/ResolvedTrain.md +6 -6
  208. package/api/@wtf/release-npm/release/interfaces/TagRelease.md +14 -14
  209. package/api/@wtf/release-npm/release/type-aliases/LookedUpTrain.md +1 -1
  210. package/api/@wtf/release-npm/release/type-aliases/ReleaseRun.md +1 -1
  211. package/api/@wtf/release-npm/release/variables/ID_TOKENS.md +1 -1
  212. package/api/@wtf/release-npm/release/variables/RUNNER_ENVIRONMENTS.md +1 -1
  213. package/api/@wtf/release-npm/workspace/functions/pnpmWorkspaceGlobs.md +1 -1
  214. package/api/@wtf/release-npm/workspace/functions/publishableOf.md +1 -1
  215. package/api/@wtf/release-npm/workspace/functions/readWorkspace.md +1 -1
  216. package/api/@wtf/release-npm/workspace/functions/workspaceFolders.md +1 -1
  217. package/api/@wtf/release-npm/workspace/functions/workspaceGlobs.md +1 -1
  218. package/api/@wtf/release-npm/workspace/interfaces/WorkspaceGlobs.md +3 -3
  219. package/api/@wtf/release-npm/workspace/interfaces/WorkspaceOptions.md +2 -2
  220. package/api/@wtf/release-replace/errors/classes/ReplaceError.md +5 -5
  221. package/api/@wtf/release-replace/errors/type-aliases/ReplaceErrorCode.md +1 -1
  222. package/api/@wtf/release-replace/errors/variables/REPLACE_ERRORS.md +1 -1
  223. package/api/@wtf/release-replace/files/functions/filesMatcher.md +1 -1
  224. package/api/@wtf/release-replace/interfaces/ReplaceMatch.md +5 -5
  225. package/api/@wtf/release-replace/interfaces/ReplacementOf.md +5 -5
  226. package/api/@wtf/release-replace/replace/functions/regExpOf.md +1 -1
  227. package/api/@wtf/release-replace/replace/functions/replaceFiles.md +1 -1
  228. package/api/@wtf/release-replace/replace/functions/replaceText.md +1 -1
  229. package/api/@wtf/release-replace/replace/interfaces/ReplaceOptions.md +10 -10
  230. package/api/@wtf/release-replace/replace/interfaces/TextOptions.md +5 -5
  231. package/api/@wtf/release-replace/replace/type-aliases/To.md +1 -1
  232. package/api/@wtf/release-replace/templates/functions/mergeTemplates.md +1 -1
  233. package/api/@wtf/release-replace/templates/functions/resolveReplacement.md +1 -1
  234. package/api/@wtf/release-replace/templates/functions/resolveReplacements.md +1 -1
  235. package/api/@wtf/release-replace/type-aliases/Escape.md +1 -1
  236. package/api/@wtf/release-replace/type-aliases/ReplaceFunction.md +1 -1
  237. package/api/@wtf/release-replace/type-aliases/Replacement.md +1 -1
  238. package/api/@wtf/release-replace/type-aliases/ReplacementSpec.md +1 -1
  239. package/api/@wtf/release-replace/type-aliases/TemplateUse.md +1 -1
  240. package/api/@wtf/release-replace/type-aliases/Templates.md +1 -1
  241. package/api/@wtf/release-replace/values/functions/escapeValue.md +1 -1
  242. package/api/@wtf/release-replace/values/functions/textOf.md +1 -1
  243. package/api/@wtf/release-replace/values/functions/valueAt.md +1 -1
  244. package/api/@wtf/release-replace/values/variables/ESCAPES.md +1 -1
  245. package/api/@wtf/release-replace/values/variables/VALUE.md +1 -1
  246. package/api/@wtf/release-system/errors/classes/ReleaseError.md +5 -5
  247. package/api/@wtf/release-system/errors/functions/throwAll.md +1 -1
  248. package/api/@wtf/release-system/errors/type-aliases/ErrorClass.md +1 -1
  249. package/api/@wtf/release-system/errors/type-aliases/SystemErrorCode.md +1 -1
  250. package/api/@wtf/release-system/errors/variables/SYSTEM_ERRORS.md +1 -1
  251. package/api/@wtf/release-system/git/functions/commitsSince.md +1 -1
  252. package/api/@wtf/release-system/git/functions/filesOfCommits.md +1 -1
  253. package/api/@wtf/release-system/git/functions/git.md +1 -1
  254. package/api/@wtf/release-system/git/functions/gitOf.md +1 -1
  255. package/api/@wtf/release-system/git/functions/trackedFiles.md +1 -1
  256. package/api/@wtf/release-system/git/interfaces/GitContext.md +4 -4
  257. package/api/@wtf/release-system/git/interfaces/LogCommit.md +5 -5
  258. package/api/@wtf/release-system/node/functions/nodeSystem.md +1 -1
  259. package/api/@wtf/release-system/node/functions/realPathOf.md +1 -1
  260. package/api/@wtf/release-system/node/functions/systemOf.md +1 -1
  261. package/api/@wtf/release-system/paths/functions/normalizePath.md +1 -1
  262. package/api/@wtf/release-system/paths/functions/pathMatcher.md +1 -1
  263. package/api/@wtf/release-system/paths/type-aliases/PathMatcher.md +1 -1
  264. package/api/@wtf/release-system/posix/functions/basenameOf.md +1 -1
  265. package/api/@wtf/release-system/posix/functions/dirnameOf.md +1 -1
  266. package/api/@wtf/release-system/posix/functions/joinPath.md +1 -1
  267. package/api/@wtf/release-system/posix/functions/relativePath.md +1 -1
  268. package/api/@wtf/release-system/posix/functions/resolvePath.md +1 -1
  269. package/api/@wtf/release-system/system/interfaces/DirEntry.md +3 -3
  270. package/api/@wtf/release-system/system/interfaces/ExecOptions.md +4 -4
  271. package/api/@wtf/release-system/system/interfaces/ExecResult.md +4 -4
  272. package/api/@wtf/release-system/system/interfaces/System.md +7 -7
  273. package/api/@wtf/release-system/system/interfaces/SystemFs.md +8 -8
  274. package/api/@wtf/release-system/system/type-aliases/Exec.md +1 -1
  275. package/api/@wtf/release-system/system/type-aliases/SystemInput.md +1 -1
  276. package/api/@wtf/release-system/validator/functions/allOf.md +1 -1
  277. package/api/@wtf/release-system/validator/functions/anyObject.md +1 -1
  278. package/api/@wtf/release-system/validator/functions/anyOf.md +1 -1
  279. package/api/@wtf/release-system/validator/functions/arrayOf.md +1 -1
  280. package/api/@wtf/release-system/validator/functions/booleanOf.md +1 -1
  281. package/api/@wtf/release-system/validator/functions/errorOf.md +1 -1
  282. package/api/@wtf/release-system/validator/functions/errorsOf.md +1 -1
  283. package/api/@wtf/release-system/validator/functions/exclusive.md +1 -1
  284. package/api/@wtf/release-system/validator/functions/issuesOf.md +1 -1
  285. package/api/@wtf/release-system/validator/functions/objectOf.md +1 -1
  286. package/api/@wtf/release-system/validator/functions/oneOf.md +1 -1
  287. package/api/@wtf/release-system/validator/functions/orFunction.md +1 -1
  288. package/api/@wtf/release-system/validator/functions/pathText.md +1 -1
  289. package/api/@wtf/release-system/validator/functions/pluginEntriesOf.md +1 -1
  290. package/api/@wtf/release-system/validator/functions/recordOf.md +1 -1
  291. package/api/@wtf/release-system/validator/functions/refined.md +1 -1
  292. package/api/@wtf/release-system/validator/functions/stringOf.md +1 -1
  293. package/api/@wtf/release-system/validator/functions/tupleOf.md +1 -1
  294. package/api/@wtf/release-system/validator/interfaces/ArrayOptions.md +5 -5
  295. package/api/@wtf/release-system/validator/interfaces/IssueOptions.md +4 -4
  296. package/api/@wtf/release-system/validator/interfaces/ObjectOptions.md +5 -5
  297. package/api/@wtf/release-system/validator/interfaces/OptionIssue.md +4 -4
  298. package/api/@wtf/release-system/validator/interfaces/Property.md +4 -4
  299. package/api/@wtf/release-system/validator/interfaces/RecordOptions.md +6 -6
  300. package/api/@wtf/release-system/validator/interfaces/StringOptions.md +6 -6
  301. package/api/@wtf/release-system/validator/interfaces/Validator.md +4 -4
  302. package/api/@wtf/release-system/validator/type-aliases/JsonSchema.md +1 -1
  303. package/api/@wtf/release-system/validator/type-aliases/Path.md +1 -1
  304. package/api/@wtf/release-trains/cascade/functions/cascadeNotes.md +1 -1
  305. package/api/@wtf/release-trains/cascade/functions/cascadeText.md +1 -1
  306. package/api/@wtf/release-trains/cascade/functions/cascadeType.md +1 -1
  307. package/api/@wtf/release-trains/cascade/functions/cascadesOf.md +1 -1
  308. package/api/@wtf/release-trains/cascade/functions/higherType.md +1 -1
  309. package/api/@wtf/release-trains/cascade/interfaces/Cascade.md +11 -11
  310. package/api/@wtf/release-trains/cascade/interfaces/CascadeCheck.md +8 -8
  311. package/api/@wtf/release-trains/cascade/type-aliases/CascadeKind.md +1 -1
  312. package/api/@wtf/release-trains/cascade/type-aliases/ReleaseType.md +1 -1
  313. package/api/@wtf/release-trains/cascade/variables/RELEASE_TYPES.md +1 -1
  314. package/api/@wtf/release-trains/ecosystem/functions/isEcosystem.md +1 -1
  315. package/api/@wtf/release-trains/ecosystem/functions/loadEcosystems.md +1 -1
  316. package/api/@wtf/release-trains/ecosystem/functions/readPackages.md +1 -1
  317. package/api/@wtf/release-trains/ecosystem/interfaces/Dependency.md +4 -4
  318. package/api/@wtf/release-trains/ecosystem/interfaces/Ecosystem.md +5 -5
  319. package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemContext.md +5 -5
  320. package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemPackages.md +3 -3
  321. package/api/@wtf/release-trains/ecosystem/interfaces/Package.md +6 -6
  322. package/api/@wtf/release-trains/ecosystem/type-aliases/DependencyKind.md +1 -1
  323. package/api/@wtf/release-trains/ecosystem/type-aliases/ModuleLoader.md +1 -1
  324. package/api/@wtf/release-trains/ecosystem/variables/DEPENDENCY_KINDS.md +1 -1
  325. package/api/@wtf/release-trains/errors/classes/TrainsError.md +5 -5
  326. package/api/@wtf/release-trains/errors/type-aliases/TrainsErrorCode.md +1 -1
  327. package/api/@wtf/release-trains/errors/variables/TRAINS_ERRORS.md +1 -1
  328. package/api/@wtf/release-trains/generated/functions/filesIn.md +1 -1
  329. package/api/@wtf/release-trains/generated/functions/formatGenerated.md +1 -1
  330. package/api/@wtf/release-trains/generated/functions/listGenerated.md +1 -1
  331. package/api/@wtf/release-trains/generated/functions/parseGenerated.md +1 -1
  332. package/api/@wtf/release-trains/generated/functions/readGenerated.md +1 -1
  333. package/api/@wtf/release-trains/generated/functions/stageGenerated.md +1 -1
  334. package/api/@wtf/release-trains/generated/functions/stageGeneratedFolders.md +1 -1
  335. package/api/@wtf/release-trains/generated/functions/unlistedIn.md +1 -1
  336. package/api/@wtf/release-trains/generated/interfaces/GeneratedOptions.md +2 -2
  337. package/api/@wtf/release-trains/generated/interfaces/StageOptions.md +6 -6
  338. package/api/@wtf/release-trains/generated/variables/GENERATED.md +1 -1
  339. package/api/@wtf/release-trains/git/functions/tagOf.md +1 -1
  340. package/api/@wtf/release-trains/git/functions/tagsOf.md +1 -1
  341. package/api/@wtf/release-trains/git/functions/versionOfTag.md +1 -1
  342. package/api/@wtf/release-trains/git/interfaces/TrainTag.md +3 -3
  343. package/api/@wtf/release-trains/interfaces/Train.md +7 -7
  344. package/api/@wtf/release-trains/packages/functions/dependencyEdges.md +1 -1
  345. package/api/@wtf/release-trains/packages/functions/dependencyText.md +1 -1
  346. package/api/@wtf/release-trains/packages/functions/dependsOnErrors.md +1 -1
  347. package/api/@wtf/release-trains/packages/functions/normalizeDir.md +1 -1
  348. package/api/@wtf/release-trains/packages/functions/ownersOf.md +1 -1
  349. package/api/@wtf/release-trains/packages/functions/packagesOf.md +1 -1
  350. package/api/@wtf/release-trains/packages/functions/publishOrder.md +1 -1
  351. package/api/@wtf/release-trains/packages/functions/releasedVersions.md +1 -1
  352. package/api/@wtf/release-trains/packages/functions/trainDependencies.md +1 -1
  353. package/api/@wtf/release-trains/packages/functions/trainOrder.md +1 -1
  354. package/api/@wtf/release-trains/packages/functions/unsatisfiedErrors.md +1 -1
  355. package/api/@wtf/release-trains/packages/interfaces/DependencyEdge.md +6 -6
  356. package/api/@wtf/release-trains/packages/interfaces/OrderFault.md +4 -4
  357. package/api/@wtf/release-trains/packages/interfaces/OrderPins.md +3 -3
  358. package/api/@wtf/release-trains/packages/interfaces/PublishOrder.md +3 -3
  359. package/api/@wtf/release-trains/packages/interfaces/TrainDependency.md +3 -3
  360. package/api/@wtf/release-trains/packages/interfaces/VersionsRelease.md +7 -7
  361. package/api/@wtf/release-trains/paths/functions/filterCommits.md +1 -1
  362. package/api/@wtf/release-trains/paths/functions/gitFilesOf.md +1 -1
  363. package/api/@wtf/release-trains/paths/functions/overlapError.md +1 -1
  364. package/api/@wtf/release-trains/paths/functions/trainOfPath.md +1 -1
  365. package/api/@wtf/release-trains/paths/functions/trainsOfCommit.md +1 -1
  366. package/api/@wtf/release-trains/paths/functions/trainsOfPath.md +1 -1
  367. package/api/@wtf/release-trains/paths/type-aliases/FilesOf.md +1 -1
  368. package/api/@wtf/release-trains/schema/interfaces/ConfigPart.md +6 -6
  369. package/api/@wtf/release-trains/schema/interfaces/RootOptions.md +7 -7
  370. package/api/@wtf/release-trains/schema/type-aliases/DependencyRule.md +1 -1
  371. package/api/@wtf/release-trains/schema/variables/DEPENDENCY_RULES.md +1 -1
  372. package/api/@wtf/release-trains/schema/variables/TAG_FORMAT_PATTERN.md +1 -1
  373. package/api/@wtf/release-trains/schema/variables/TRAIN_NAME_PATTERN.md +1 -1
  374. package/api/@wtf/release-trains/schema/variables/configSchema.md +1 -1
  375. package/api/@wtf/release-trains/schema/variables/jsonSchema.md +1 -1
  376. package/api/@wtf/release-trains/schema/variables/rootOptionsSchema.md +1 -1
  377. package/api/@wtf/release-trains/schema/variables/trainSchema.md +1 -1
  378. package/api/@wtf/release-trains/schema/variables/trainsSchema.md +1 -1
  379. package/api/@wtf/release-trains/trains/functions/changelogOf.md +1 -1
  380. package/api/@wtf/release-trains/trains/functions/matchersOf.md +1 -1
  381. package/api/@wtf/release-trains/trains/functions/overlapErrors.md +1 -1
  382. package/api/@wtf/release-trains/trains/functions/selectTrain.md +1 -1
  383. package/api/@wtf/release-trains/trains/functions/tagFormatOf.md +1 -1
  384. package/api/@wtf/release-trains/trains/functions/trainHeadedNotes.md +1 -1
  385. package/api/@wtf/release-trains/trains/functions/trainOfRun.md +1 -1
  386. package/api/@wtf/release-trains/trains/functions/trainOfTag.md +1 -1
  387. package/api/@wtf/release-trains/trains/functions/trainsErrors.md +1 -1
  388. package/api/@wtf/release-trains/trains/functions/trainsOfOptions.md +1 -1
  389. package/api/@wtf/release-trains/trains/variables/TRAIN_VARIABLE.md +1 -1
  390. package/api/@wtf/release-trains/trains/variables/VERSION.md +1 -1
  391. package/api/@wtf/release-trains/type-aliases/BranchSpec.md +1 -1
  392. package/api/@wtf/release-trains/type-aliases/Trains.md +1 -1
  393. package/api/@wtf/release-trains/verify/functions/unreleasedDependencies.md +1 -1
  394. package/api/@wtf/release-trains/verify/functions/verifyTrain.md +1 -1
  395. package/api/@wtf/release-trains/verify/interfaces/UnreleasedDependencies.md +10 -10
  396. package/api/@wtf/release-trains/verify/interfaces/VerifiedTrain.md +5 -5
  397. package/api/@wtf/release-trains/verify/interfaces/VerifyRelease.md +8 -8
  398. package/api/@wtf/release-validate/errors/classes/ValidateError.md +5 -5
  399. package/api/@wtf/release-validate/errors/type-aliases/ValidateErrorCode.md +1 -1
  400. package/api/@wtf/release-validate/errors/variables/VALIDATE_ERRORS.md +1 -1
  401. package/api/@wtf/release-validate/interfaces/ConfigIssue.md +4 -4
  402. package/api/@wtf/release-validate/json-schema/functions/fromJsonSchema.md +1 -1
  403. package/api/@wtf/release-validate/json-schema/functions/pathOfPointer.md +1 -1
  404. package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaError.md +3 -3
  405. package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaValidator.md +3 -3
  406. package/api/@wtf/release-validate/validate/functions/configErrors.md +1 -1
  407. package/api/@wtf/release-validate/validate/functions/isStandardSchema.md +1 -1
  408. package/api/@wtf/release-validate/validate/functions/pathText.md +1 -1
  409. package/api/@wtf/release-validate/validate/functions/validateConfig.md +1 -1
  410. package/api/@wtf/semantic-release-cargo/functions/indexLookup.md +1 -1
  411. package/api/@wtf/semantic-release-cargo/functions/prepare.md +1 -1
  412. package/api/@wtf/semantic-release-cargo/functions/publish.md +1 -1
  413. package/api/@wtf/semantic-release-cargo/functions/verifyConditions.md +1 -1
  414. package/api/@wtf/semantic-release-cargo/interfaces/CargoPluginOptions.md +12 -12
  415. package/api/@wtf/semantic-release-cargo/interfaces/CargoRelease.md +3 -3
  416. package/api/@wtf/semantic-release-cargo/schema/type-aliases/CargoOptions.md +1 -1
  417. package/api/@wtf/semantic-release-cargo/schema/variables/cargoOptionsSchema.md +1 -1
  418. package/api/@wtf/semantic-release-cargo/schema/variables/cargoSchema.md +1 -1
  419. package/api/@wtf/semantic-release-cargo/schema/variables/configSchema.md +1 -1
  420. package/api/@wtf/semantic-release-cargo/schema/variables/jsonSchema.md +1 -1
  421. package/api/@wtf/semantic-release-cargo/variables/default.md +1 -1
  422. package/api/@wtf/semantic-release-go/functions/prepare.md +1 -1
  423. package/api/@wtf/semantic-release-go/functions/publish.md +1 -1
  424. package/api/@wtf/semantic-release-go/functions/verifyConditions.md +1 -1
  425. package/api/@wtf/semantic-release-go/functions/verifyRelease.md +1 -1
  426. package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +8 -8
  427. package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +3 -3
  428. package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +1 -1
  429. package/api/@wtf/semantic-release-go/schema/variables/configSchema.md +1 -1
  430. package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +1 -1
  431. package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +1 -1
  432. package/api/@wtf/semantic-release-go/schema/variables/jsonSchema.md +1 -1
  433. package/api/@wtf/semantic-release-go/variables/default.md +1 -1
  434. package/api/@wtf/semantic-release-maven/functions/pomLookup.md +1 -1
  435. package/api/@wtf/semantic-release-maven/functions/prepare.md +1 -1
  436. package/api/@wtf/semantic-release-maven/functions/publish.md +1 -1
  437. package/api/@wtf/semantic-release-maven/functions/verifyConditions.md +1 -1
  438. package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +3 -3
  439. package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +12 -12
  440. package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +2 -2
  441. package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +1 -1
  442. package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +1 -1
  443. package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +1 -1
  444. package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +1 -1
  445. package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +1 -1
  446. package/api/@wtf/semantic-release-maven/variables/default.md +1 -1
  447. package/api/@wtf/semantic-release-npm/functions/addChannel.md +1 -1
  448. package/api/@wtf/semantic-release-npm/functions/fail.md +1 -1
  449. package/api/@wtf/semantic-release-npm/functions/loadPublisher.md +1 -1
  450. package/api/@wtf/semantic-release-npm/functions/prepare.md +1 -1
  451. package/api/@wtf/semantic-release-npm/functions/publish.md +1 -1
  452. package/api/@wtf/semantic-release-npm/functions/verifyConditions.md +1 -1
  453. package/api/@wtf/semantic-release-npm/interfaces/PublishPluginOptions.md +18 -18
  454. package/api/@wtf/semantic-release-npm/interfaces/PublishedRelease.md +4 -4
  455. package/api/@wtf/semantic-release-npm/interfaces/SmokeOption.md +2 -2
  456. package/api/@wtf/semantic-release-npm/schema/type-aliases/PublishOptions.md +1 -1
  457. package/api/@wtf/semantic-release-npm/schema/variables/configSchema.md +1 -1
  458. package/api/@wtf/semantic-release-npm/schema/variables/jsonSchema.md +1 -1
  459. package/api/@wtf/semantic-release-npm/schema/variables/publishOptionsSchema.md +1 -1
  460. package/api/@wtf/semantic-release-npm/schema/variables/publishSchema.md +1 -1
  461. package/api/@wtf/semantic-release-npm/type-aliases/PublisherSpec.md +1 -1
  462. package/api/@wtf/semantic-release-npm/variables/default.md +1 -1
  463. package/api/@wtf/semantic-release-replace/functions/functionOf.md +1 -1
  464. package/api/@wtf/semantic-release-replace/functions/prepare.md +1 -1
  465. package/api/@wtf/semantic-release-replace/functions/templatesOf.md +1 -1
  466. package/api/@wtf/semantic-release-replace/functions/verifyConditions.md +1 -1
  467. package/api/@wtf/semantic-release-replace/interfaces/ReplacePluginOptions.md +5 -5
  468. package/api/@wtf/semantic-release-replace/schema/interfaces/ModuleExport.md +3 -3
  469. package/api/@wtf/semantic-release-replace/schema/interfaces/ReplaceOptions.md +4 -4
  470. package/api/@wtf/semantic-release-replace/schema/interfaces/RootTemplates.md +2 -2
  471. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacement.md +1 -1
  472. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacementSpec.md +1 -1
  473. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTemplates.md +1 -1
  474. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTo.md +1 -1
  475. package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplateSet.md +1 -1
  476. package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplatesOption.md +1 -1
  477. package/api/@wtf/semantic-release-replace/schema/variables/configSchema.md +1 -1
  478. package/api/@wtf/semantic-release-replace/schema/variables/exportedSetSchema.md +1 -1
  479. package/api/@wtf/semantic-release-replace/schema/variables/jsonSchema.md +1 -1
  480. package/api/@wtf/semantic-release-replace/schema/variables/replaceOptionsSchema.md +1 -1
  481. package/api/@wtf/semantic-release-replace/schema/variables/replacementSchema.md +1 -1
  482. package/api/@wtf/semantic-release-replace/schema/variables/rootTemplatesSchema.md +1 -1
  483. package/api/@wtf/semantic-release-replace/schema/variables/templateSchema.md +1 -1
  484. package/api/@wtf/semantic-release-replace/schema/variables/templatesSchema.md +1 -1
  485. package/api/@wtf/semantic-release-replace/variables/default.md +1 -1
  486. package/api/@wtf/semantic-release-trains/config/functions/skipPlugins.md +1 -1
  487. package/api/@wtf/semantic-release-trains/config/functions/stepId.md +1 -1
  488. package/api/@wtf/semantic-release-trains/config/functions/trainAssets.md +1 -1
  489. package/api/@wtf/semantic-release-trains/config/functions/trainChangelog.md +1 -1
  490. package/api/@wtf/semantic-release-trains/config/functions/trainOfTag.md +1 -1
  491. package/api/@wtf/semantic-release-trains/config/functions/trainTagFormat.md +1 -1
  492. package/api/@wtf/semantic-release-trains/config/interfaces/AssetsOptions.md +4 -4
  493. package/api/@wtf/semantic-release-trains/config/interfaces/SkipOptions.md +3 -3
  494. package/api/@wtf/semantic-release-trains/config/variables/BRANCHES.md +1 -1
  495. package/api/@wtf/semantic-release-trains/config/variables/BREAKING.md +1 -1
  496. package/api/@wtf/semantic-release-trains/config/variables/TITLE.md +1 -1
  497. package/api/@wtf/semantic-release-trains/defaults/functions/skipRuleOf.md +1 -1
  498. package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +1 -1
  499. package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +1 -1
  500. package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +5 -5
  501. package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.md +1 -1
  502. package/api/@wtf/semantic-release-trains/defaults/type-aliases/TrainOptions.md +1 -1
  503. package/api/@wtf/semantic-release-trains/defaults/variables/SKIP_RULES.md +1 -1
  504. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_OPTIONS.md +1 -1
  505. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +1 -1
  506. package/api/@wtf/semantic-release-trains/errors/type-aliases/PluginErrorCode.md +1 -1
  507. package/api/@wtf/semantic-release-trains/errors/variables/PLUGIN_ERRORS.md +1 -1
  508. package/api/@wtf/semantic-release-trains/info/functions/decideTrain.md +1 -1
  509. package/api/@wtf/semantic-release-trains/info/functions/dotenvOf.md +1 -1
  510. package/api/@wtf/semantic-release-trains/info/functions/infoOf.md +1 -1
  511. package/api/@wtf/semantic-release-trains/info/interfaces/DecideRun.md +4 -4
  512. package/api/@wtf/semantic-release-trains/info/interfaces/InfoRun.md +8 -8
  513. package/api/@wtf/semantic-release-trains/info/interfaces/TrainDecision.md +5 -5
  514. package/api/@wtf/semantic-release-trains/info/interfaces/TrainInfo.md +5 -5
  515. package/api/@wtf/semantic-release-trains/interfaces/TrainsEntryOptions.md +5 -5
  516. package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -7
  517. package/api/@wtf/semantic-release-trains/schema/variables/configSchema.md +1 -1
  518. package/api/@wtf/semantic-release-trains/schema/variables/jsonSchema.md +1 -1
  519. package/api/@wtf/semantic-release-trains/schema/variables/pluginSpecSchema.md +1 -1
  520. package/api/@wtf/semantic-release-trains/schema/variables/skipRuleSchema.md +1 -1
  521. package/api/@wtf/semantic-release-trains/schema/variables/trainsEntrySchema.md +1 -1
  522. package/api/@wtf/semantic-release-trains/schema/variables/trainsPluginSchema.md +1 -1
  523. package/api/@wtf/semantic-release-trains/type-aliases/PluginSpec.md +1 -1
  524. package/api/@wtf/semantic-release-trains/type-aliases/TrainsPluginOptions.md +1 -1
  525. package/api/@wtf/semantic-release-trains/variables/addChannel.md +1 -1
  526. package/api/@wtf/semantic-release-trains/variables/analyzeCommits.md +1 -1
  527. package/api/@wtf/semantic-release-trains/variables/default.md +1 -1
  528. package/api/@wtf/semantic-release-trains/variables/fail.md +1 -1
  529. package/api/@wtf/semantic-release-trains/variables/generateNotes.md +1 -1
  530. package/api/@wtf/semantic-release-trains/variables/prepare.md +1 -1
  531. package/api/@wtf/semantic-release-trains/variables/publish.md +1 -1
  532. package/api/@wtf/semantic-release-trains/variables/success.md +1 -1
  533. package/api/@wtf/semantic-release-trains/variables/verifyConditions.md +1 -1
  534. package/api/@wtf/semantic-release-trains/variables/verifyRelease.md +1 -1
  535. package/api/@wtf/semantic-release-validate/functions/configOf.md +1 -1
  536. package/api/@wtf/semantic-release-validate/functions/loadSchema.md +1 -1
  537. package/api/@wtf/semantic-release-validate/functions/verifyConditions.md +1 -1
  538. package/api/@wtf/semantic-release-validate/interfaces/ValidatePluginOptions.md +2 -2
  539. package/api/@wtf/semantic-release-validate/schema/interfaces/Validator.md +2 -2
  540. package/api/@wtf/semantic-release-validate/schema/variables/configSchema.md +1 -1
  541. package/api/@wtf/semantic-release-validate/schema/variables/jsonSchema.md +1 -1
  542. package/api/@wtf/semantic-release-validate/schema/variables/validateOptionsSchema.md +1 -1
  543. package/api/@wtf/semantic-release-validate/variables/default.md +1 -1
  544. package/guides/changelogs.md +39 -28
  545. package/guides/ci-recipes.md +393 -271
  546. package/guides/configuring-trains.md +291 -203
  547. package/guides/dependency-rules.md +171 -113
  548. package/guides/ecosystems.md +222 -156
  549. package/guides/getting-started.md +135 -69
  550. package/guides/publishing-crates.md +208 -143
  551. package/guides/publishing-go-modules.md +170 -110
  552. package/guides/publishing-maven.md +197 -123
  553. package/guides/publishing.md +278 -191
  554. package/guides/system.md +50 -34
  555. package/guides/troubleshooting.md +358 -92
  556. package/guides/validating-a-config.md +81 -56
  557. package/package.json +1 -1
@@ -1,92 +1,24 @@
1
- # Publishing
2
-
3
- The stock `@semantic-release/npm` publishes one package in a run. A train often has several.
4
- `@wtf/semantic-release-npm` publishes every npm package of the train in one run, in the order of
5
- their dependencies, by `@wtf/release-npm`, the library, and writes no file of the repo. The library
6
- is the ecosystem of npm too, its default export, which the plugin exports at `./ecosystem` and a
7
- config names in `ecosystems` as `'@wtf/semantic-release-npm/ecosystem'`, so the trains read the packages of each `package.json` by it. The version of a release is its tag's: each `package.json` in git keeps a placeholder, as
8
- `0.0.0-development`, and the release commit holds no version.
9
-
10
- 1. **The manifests**, `resolveManifests`. The packages of the train that publish, every package under
11
- its paths that is not private, found as the package manager finds them, by the globs of
12
- `pnpm-workspace.yaml` or of the `workspaces` of `package.json`, and ordered: each after the
13
- packages that it runs with. `first` and `last` pin a package to an end. Each manifest as it
14
- publishes: the version of the release; each `workspace:` range of a package of the train
15
- resolved to that version, as pnpm resolves `workspace:*`, `workspace:^` and `workspace:~`; of a
16
- package of another train, to the last release of that train, by its tags (`releasedVersions` of
17
- `@wtf/release-trains/packages`, and `resolveSpecifier` of `@wtf/release-npm/manifests`, which
18
- the cascade of a train reads too); each devDependency by
19
- a `workspace:` range of a package that no train releases, as a private package of shared
20
- configs, or of a train with no release yet, dropped, as no consumer installs it; each export of the source stripped (the `source`
21
- condition, or a `.ts` target). Then each checked. It writes nothing.
22
- 2. **The tarballs**, `packTrain`. Each package copied, but its `node_modules`, into a folder of the
23
- system's temporary files, its manifest written into the copy, and each packed there, all before
24
- the first publish. A fault stops the run before anything is on the registry.
25
- 3. **The publish**, `publishTrain`. Each package under the dist-tag of the channel of the release
26
- (`latest`, or `beta` of `2.1.0-beta.3`, or `prerelease` of `2.1.0-0`; `release-1.x` of a channel
27
- npm takes for a range, as `1.x` of a branch of maintenance), with provenance where the CI gives
28
- an ID token. Each version that the registry already has is skipped. Before the first, the
29
- registry is asked of each (`publishedOf`): a package it has not, whose dist-tag points above
30
- the release, fails the run, and nothing is published (`EPUBLISHBEHIND`), as it would move the
31
- dist-tag back. A prerelease on `latest`, where npm points it at the first version of a package,
32
- is not above a release. A package named in `aside`, as one that joined the train at a higher
33
- version of its own, is published under the dist-tag of its major's line instead,
34
- `release-<major>.x` of `latest`, and its dist-tag stays; unless that dist-tag points above the
35
- release too. A release on a channel of a line already, as `release-1.x` or `release-1.2.x` of
36
- maintenance, puts nothing aside.
37
-
38
- The plugin takes the steps of `@semantic-release/npm`:
1
+ # Publish npm packages
39
2
 
40
- - `verifyConditions` checks the publisher and the packages as they are in the repo.
41
- - `prepare` does steps 1 and 2, and asks the registry, before the tag: a range that no release
42
- satisfies (`EDEPENDENCYUNSATISFIED`), a train it needs with no release (`EDEPENDENCYNORELEASE`),
43
- a package of no train it needs (`EDEPENDENCYNOTRAIN`), a package that cannot be packed,
44
- or a release that would move a dist-tag back (`EPUBLISHBEHIND`), fails here.
45
- - `publish` does step 3 with what `prepare` packed, after the tag is pushed, and gives
46
- semantic-release the release as the stock plugin does: the name of the publisher and its
47
- packages, the page of the first package, and the channel. Then it removes the copies, and the
48
- tarballs but of a `tarballDir` it is given, which keeps them. A run whose `publish` finds nothing
49
- packed of its train and version, in the same process, resolves and packs again.
50
- - `addChannel` moves a release that is published already to the dist-tag of its new channel, by
51
- `tagTrain`, as semantic-release asks when a branch of one channel is merged into the branch of
52
- another: each package of the train the registry has at the version, by `npm dist-tag add` of
53
- either publisher built in. npm moves a dist-tag by the token of its config alone: its trusted
54
- publishing covers `npm publish` and no other command, so a release from a branch of a channel
55
- needs `NPM_TOKEN` too. A publisher of your own moves dist-tags by its `tag` step; one without it
56
- moves none. semantic-release records the new channel before it asks for `addChannel`, so a run
57
- again moves nothing: move a dist-tag that failed by hand, as its error says.
58
-
59
- The release of the host is not this plugin's. List `@semantic-release/gitlab` or
60
- `@semantic-release/github` after it.
3
+ `@wtf/semantic-release-npm` publishes every npm package in a train in one run. Use it in place of
4
+ the stock `@semantic-release/npm`, which publishes one package per run, when a train holds several
5
+ packages. The plugin publishes the packages in dependency order and does not write any file in your
6
+ repo.
7
+
8
+ The version comes from the tag. Each `package.json` in git keeps a placeholder version, such as
9
+ `0.0.0-development`, and the release commit holds no version. The plugin writes the version into a
10
+ copy of each package when it packs it.
61
11
 
62
- ### When a publish fails
63
-
64
- Of a publish in the pipeline of the tag, by `semantic-release-trains-tag`, retry the job that
65
- publishes, and keep the tag: the retry packs the build of the tagged commit again, skips each package
66
- the registry has, and publishes the rest (see
67
- [the pipeline of a tag](ci-recipes.md#the-pipeline-of-a-tag)). Delete no tag and run no release of
68
- the branch again: of a release whose config names no publish plugin, that run commits a second
69
- release commit, of the same version, its changelog written again by the stock
70
- `@semantic-release/changelog`, and tags it, a commit the pipeline of the first tag did not build.
71
-
72
- Of a publish in the release run itself, as below, semantic-release pushes the release commit of
73
- `@semantic-release/git`, and the tag, before it runs `publish`, as it does for every plugin. A
74
- publish that fails part way leaves both, and a run again
75
- finds that version released and does nothing. To finish it, delete the tag, on the remote and in the
76
- clone that runs again (a tag of the clone is a release done too), and run the release again at the release commit, the tip of the branch: semantic-release releases nothing
77
- of a commit behind the tip. The run computes the same version, tags the release commit, skips each
78
- package that the registry already has, publishes the rest, and makes the release of the host. A
79
- changelog plugin the trains plugin wraps finds the section of the release in the changelog already
80
- and skips its `prepare`, so `@semantic-release/git` finds nothing to commit. Listed unwrapped,
81
- `@semantic-release/changelog` writes the section again: wrap it, or remove the second section
82
- before the run.
83
-
84
- A retry of a job that runs at the commit of its pipeline, as a job of to-be-continuous does, runs
85
- behind the release commit. Check the tip out first, where it is the pipeline's commit with release
86
- commits alone on top: see [CI recipes](ci-recipes.md#gitlab-ci).
12
+ The plugin runs on a library, `@wtf/release-npm`. The library's default export is the npm
13
+ ecosystem, and the plugin exports the same ecosystem at `./ecosystem`. Add
14
+ `'@wtf/semantic-release-npm/ecosystem'` to `ecosystems` in your config so that the trains can find
15
+ the packages in each `package.json`. [How ecosystems work](ecosystems.md) explains what an
16
+ ecosystem does.
87
17
 
88
18
  ## Turn it on
89
19
 
20
+ Add the plugin to your config, after the trains plugin:
21
+
90
22
  ```js train=trains
91
23
  // release.config.mjs
92
24
  import { trainTagFormat } from '@wtf/semantic-release-trains/config'
@@ -109,63 +41,225 @@ export default {
109
41
  }
110
42
  ```
111
43
 
112
- | Option | Default | What it is |
113
- | ------------ | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
114
- | `publisher` | `npm` | `npm`, `pnpm`, the path of a module, or a package. See below. |
115
- | `access` | each `publishConfig.access` | `public` or `restricted`. |
116
- | `provenance` | `auto` | With provenance: `auto` when the CI gives an ID token, or `true`, or `false`. |
117
- | `registry` | each `publishConfig.registry` | The registry. |
118
- | `first` | none | The folder of the package that publishes first. |
119
- | `last` | none | The folder of the package that publishes last. |
120
- | `conditions` | `['source']` | The export conditions of the source, which no tarball ships. |
121
- | `check` | `true` | Check the packages before the first publish. |
122
- | `aside` | none | The packages, by name, published under `release-<major>.x` of `latest`, `<dist-tag>-<major>.x` of another, where their dist-tag points above the release. |
123
- | `tarballDir` | of the system's temporary files | The folder of the tarballs, kept after the release, as assets of the release of the host; one in the repo is for git to ignore, and a job of the CI starts it empty. |
124
- | `pack` | none | Folders or globs of private packages of the train, packed beside the others into `tarballDir`, never published: as a demo, an asset of the release of the host. |
125
- | `distTag` | the channel's | The dist-tag every package is published under, over the channel's, as a one-off; an empty one is none. |
126
- | `smoke` | `false` | `true`, or `{ forbid }` of globs no tarball may hold: each package packed tried as a consumer installs it, in `prepare`, before the tag. See below. |
127
-
128
- `provenance: 'auto'` looks for an ID token npm signs the provenance by: `SIGSTORE_ID_TOKEN` (GitLab,
129
- of the audience `sigstore`), or the OIDC of GitHub Actions. `NPM_ID_TOKEN`, of npm's trusted
130
- publishing on GitLab, signs nothing: give a GitLab job both, or npm fails `--provenance`. On a
131
- runner the CI does not host, `CI_RUNNER_ENVIRONMENT` (GitLab) or `RUNNER_ENVIRONMENT` (GitHub) of
132
- `self-hosted`, it publishes with none: npm refuses provenance, and trusted publishing, of such a
133
- runner, so it publishes by a token of npm there.
134
-
135
- A package of `pack` is packed of its manifest as it publishes too: of the version of the release,
136
- and each `workspace:` range of a private package of the workspace resolved to it. `distTag` of an
137
- environment variable a job sets, as `distTag: process.env.NPM_DIST_TAG`, writes `undefined` when it
138
- is unset, which JSON leaves out: the channel's then.
139
-
140
- ### The smoke
141
-
142
- A workspace and its tests resolve each package of its source, and see neither a file its tarball
143
- misses, nor an export that imports a peer its consumer has not installed. Of `smoke`, `prepare` tries
144
- each package it packed as a consumer installs it, each private package of `pack` too, before the tag,
145
- by `smokePacked` of `@wtf/release-npm/smoke`, and fails the run with `EPUBLISHSMOKE` of
146
- every fault it finds:
147
-
148
- - of the tarball: an entry of its `files` it holds not, as of a package packed of no build; an export
149
- of a condition of the source; a file of `forbid`, as `**/*.tsbuildinfo`;
150
- - of its install by npm, in a project of its own in the system's temporary files, every other package
151
- packed installed of its tarball by npm's `overrides`, so none is asked of the registry;
152
- - of an import of each entry of its `exports`, but `./package.json` and a pattern: a `SyntaxError`, a
153
- module not found that is no optional peer of the manifest, nor a specifier of a bundler's own, and
154
- an export a packed package does not export. Any other error of an import is the module's to throw.
155
- A package of no `exports` and no `main`, as a demo of static files, has no entry to import: it is
156
- installed alone.
157
-
158
- It needs `tar`, `npm` and `node` where it runs. A job that runs no release, as of a merge request,
159
- runs it of every train by the bin of the plugin: see [CI recipes](ci-recipes.md#the-smoke-of-a-merge-request).
160
- A pipeline whose job of the bin runs before its publish job, as
161
- [the pipeline of a tag](ci-recipes.md#the-pipeline-of-a-tag) of to-be-continuous, turns `smoke` off
162
- in the tag's run, of a variable the publish job sets, so the job that holds the ID tokens does no
163
- more than publish.
164
-
165
- ## As a library
166
-
167
- The three steps are functions of `@wtf/release-npm/release`, of no release tool, each by
168
- the `system` its caller gives it, as a CLI passes its own, adapted to the interface:
44
+ The plugin does not create the release on GitLab or GitHub. List `@semantic-release/gitlab` or
45
+ `@semantic-release/github` after it.
46
+
47
+ | Option | Default | What it does |
48
+ | ------------ | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
49
+ | `publisher` | `npm` | The tool that publishes: `npm`, `pnpm`, the path of a module, or a package name. See [Publishers](#publishers). |
50
+ | `access` | each package's `publishConfig.access` | `public` or `restricted`. |
51
+ | `provenance` | `auto` | Whether to publish with provenance: `auto` (when the CI provides an ID token), `true` or `false`. |
52
+ | `registry` | each package's `publishConfig.registry` | The registry to publish to. |
53
+ | `first` | none | The folder of the package to publish first. |
54
+ | `last` | none | The folder of the package to publish last. |
55
+ | `conditions` | `['source']` | The export conditions that point at source files. No tarball ships them. |
56
+ | `check` | `true` | Check the packages before the first publish. See [What the check catches](#what-the-check-catches). |
57
+ | `aside` | none | Package names to publish under their major's line when their dist-tag points above the release: `release-<major>.x` in place of `latest`, `<dist-tag>-<major>.x` in place of another. |
58
+ | `tarballDir` | a folder in the system's temporary files | Where to keep the tarballs after the release, for example as assets of the GitLab or GitHub release. Add a folder in the repo to `.gitignore`. A CI job starts with it empty. |
59
+ | `pack` | none | Folders or globs of private packages in the train. The plugin packs them into `tarballDir` beside the others and never publishes them. Use it for a demo or another release asset. |
60
+ | `distTag` | the channel's | One dist-tag for every package, in place of the channel's, for a one-off release. An empty string means no override. |
61
+ | `smoke` | `false` | `true`, or `{ forbid }` with globs that no tarball may hold. Installs each packed package as a consumer would, in `prepare`, before the tag. See [Smoke-test the packages](#smoke-test-the-packages-before-the-tag). |
62
+
63
+ ### Provenance
64
+
65
+ With `provenance: 'auto'`, the plugin looks for an ID token that npm can sign the provenance with:
66
+
67
+ - `SIGSTORE_ID_TOKEN` on GitLab, with the audience `sigstore`;
68
+ - the OIDC token of GitHub Actions.
69
+
70
+ `NPM_ID_TOKEN`, which npm's trusted publishing uses on GitLab, does not sign anything. Give a GitLab
71
+ job both tokens, or npm fails `--provenance`.
72
+
73
+ On a self-hosted runner, the plugin publishes without provenance. It detects one when
74
+ `CI_RUNNER_ENVIRONMENT` (GitLab) or `RUNNER_ENVIRONMENT` (GitHub) is `self-hosted`. npm refuses
75
+ provenance and trusted publishing from such a runner, so publish with an npm token there.
76
+
77
+ ### Packages in `pack`, and `distTag` from a variable
78
+
79
+ The plugin packs a package in `pack` with its manifest resolved as for a publish. The manifest gets
80
+ the release's version, and each `workspace:` range on a private package of the workspace resolves
81
+ to that version.
82
+
83
+ You can set `distTag` from an environment variable that a job sets, as
84
+ `distTag: process.env.NPM_DIST_TAG`. When the variable is unset, the value is `undefined`, which
85
+ JSON leaves out, and the channel's dist-tag applies.
86
+
87
+ ## What a release does
88
+
89
+ A release runs three steps. Each step is a function of `@wtf/release-npm/release`.
90
+
91
+ 1. **Resolve the manifests** (`resolveManifests`). The plugin finds the train's packages that
92
+ publish: every package under the train's `paths` that is not private. It finds them the way the
93
+ package manager does, by the globs in `pnpm-workspace.yaml` or in the `workspaces` field of
94
+ `package.json`. It orders them so that each package comes after the packages it runs with
95
+ (`dependencies`, `peerDependencies` and `optionalDependencies`). `first` and `last` pin a package
96
+ to either end. Then it builds each manifest as it will publish:
97
+ - The version is the release's version.
98
+ - Each `workspace:` range on a package in the same train resolves to that version, the way pnpm
99
+ resolves `workspace:*`, `workspace:^` and `workspace:~`.
100
+ - Each `workspace:` range on a package in another train resolves to that train's last release,
101
+ which the plugin reads from the tags. `releasedVersions` from `@wtf/release-trains/packages`
102
+ and `resolveSpecifier` from `@wtf/release-npm/manifests` do this, and a train's cascade reads
103
+ the same functions.
104
+ - The plugin drops a devDependency whose `workspace:` range points at a package that no train
105
+ releases, such as a private package of shared configs, or at a train with no release yet. No
106
+ consumer installs a devDependency.
107
+ - The plugin strips each export that points at source: the `source` condition, or a `.ts`
108
+ target.
109
+
110
+ Then it checks each manifest. This step writes nothing.
111
+
112
+ 2. **Pack the tarballs** (`packTrain`). The plugin copies each package, without its `node_modules`,
113
+ into a folder in the system's temporary files. It writes the resolved manifest into the copy and
114
+ packs the copy there. It packs every package before the first publish, so a fault stops the run
115
+ before anything reaches the registry.
116
+
117
+ 3. **Publish** (`publishTrain`). The plugin publishes each package under the dist-tag of the
118
+ release's channel. That is `latest`, or `beta` for `2.1.0-beta.3`, or `prerelease` for
119
+ `2.1.0-0`. A channel that npm would read as a range, such as `1.x` on a maintenance branch,
120
+ becomes `release-1.x`. The plugin adds provenance where the CI provides an ID token, and skips
121
+ each version that the registry already has.
122
+
123
+ ### When a dist-tag would move back
124
+
125
+ Before the first publish, the plugin asks the registry about every package (`publishedOf`). Suppose
126
+ the registry does not have a package at the release's version, and the package's dist-tag points
127
+ above the release. Publishing would move the dist-tag back, so the run fails with `EPUBLISHBEHIND`
128
+ and publishes nothing. A prerelease on `latest` does not count as above a release: npm points
129
+ `latest` at the first version of a package, even when that version is a prerelease.
130
+
131
+ A package can join a train at a higher version of its own. Name such a package in `aside`. The
132
+ plugin then publishes it under the dist-tag of its major's line, `release-<major>.x` in place of
133
+ `latest`, and leaves its dist-tag where it is. If the line's dist-tag also points above the
134
+ release, the run fails too. A release whose channel is a line already, such as `release-1.x` or
135
+ `release-1.2.x` on a maintenance branch, puts nothing aside.
136
+
137
+ ### Which semantic-release step does what
138
+
139
+ The plugin implements the same steps as `@semantic-release/npm`:
140
+
141
+ - `verifyConditions` checks the publisher and the packages as they are in the repo.
142
+ - `prepare` runs steps 1 and 2 and asks the registry, all before the tag. These faults fail the run
143
+ here:
144
+ - a range that no release satisfies (`EDEPENDENCYUNSATISFIED`);
145
+ - a dependency on a train with no release (`EDEPENDENCYNORELEASE`);
146
+ - a dependency on a package of no train (`EDEPENDENCYNOTRAIN`);
147
+ - a package that cannot be packed;
148
+ - a release that would move a dist-tag back (`EPUBLISHBEHIND`).
149
+ - `publish` runs step 3 with what `prepare` packed, after the tag is pushed. It returns the release
150
+ to semantic-release as the stock plugin does: the publisher's name and its packages, the page of
151
+ the first package, and the channel. Then it removes the copies and the tarballs. With
152
+ `tarballDir`, it keeps the tarballs. If `publish` finds nothing packed for its train and version
153
+ in the same process, it resolves and packs again.
154
+ - `addChannel` moves a published release to the dist-tag of its new channel, by `tagTrain`.
155
+ semantic-release asks for this when you merge a branch of one channel into the branch of another.
156
+ The plugin runs `npm dist-tag add` for each package of the train that the registry has at the
157
+ version, with either built-in publisher.
158
+
159
+ npm moves a dist-tag only with the token in its config. Its trusted publishing covers
160
+ `npm publish` and no other command, so a release from a channel branch needs `NPM_TOKEN` too. A
161
+ publisher of your own moves dist-tags with its `tag` step; a publisher without one moves none.
162
+ semantic-release records the new channel before it calls `addChannel`, so running again moves
163
+ nothing. If moving a dist-tag fails, move it by hand, as the error says.
164
+
165
+ ## When packages depend on other trains
166
+
167
+ A package can depend on a package in another train. The release then writes that train's last
168
+ release into the range, as step 1 describes. Before the tag, the trains check that the other train
169
+ has released, at a version that the range takes. They also decide the order of the trains, and when
170
+ a train must release again because another train left its range behind. See
171
+ [Trains that depend on other trains](dependency-rules.md).
172
+
173
+ ## Smoke-test the packages before the tag
174
+
175
+ A workspace and its tests resolve each package from its source. They do not notice a file that the
176
+ tarball misses, or an export that imports a peer the consumer has not installed. With `smoke`, the
177
+ plugin tries each package it packed the way a consumer installs it, in `prepare`, before the tag. It
178
+ tries the private packages of `pack` too. It does this with `smokePacked` from
179
+ `@wtf/release-npm/smoke`, and it fails the run with `EPUBLISHSMOKE`, listing every fault it finds:
180
+
181
+ - **In the tarball:** an entry of `files` that the tarball does not hold, as when a package was
182
+ packed without a build; an export with a source condition; a file that matches `forbid`, such as
183
+ `**/*.tsbuildinfo`.
184
+ - **In the install:** npm installs the package in a project of its own in the system's temporary
185
+ files. Every other packed package installs from its tarball through npm's `overrides`, so npm does
186
+ not ask the registry for any of them.
187
+ - **In the imports:** the plugin imports each entry of `exports`, except `./package.json` and
188
+ patterns. It reports a `SyntaxError`, a module not found that is neither an optional peer in the
189
+ manifest nor a bundler's own specifier, and an export that a packed package does not export. Any
190
+ other error from an import is the module's own and does not fail the smoke test. A package with no
191
+ `exports` and no `main`, such as a demo of static files, has nothing to import. The plugin only
192
+ installs it.
193
+
194
+ The smoke test needs `tar`, `npm` and `node` where it runs. A job that runs no release, such as a
195
+ merge request job, can run it for every train with the plugin's bin: see
196
+ [Smoke-test packages in a merge request](ci-recipes.md#smoke-test-packages-in-a-merge-request).
197
+ Some pipelines run the bin in a job before the publish job, as the
198
+ [tag pipeline](ci-recipes.md#build-smoke-test-and-publish-in-a-tag-pipeline) for to-be-continuous
199
+ does. Such a pipeline turns `smoke` off in the tag's run, with a variable that the publish job sets,
200
+ so that the job holding the ID tokens only publishes.
201
+
202
+ ## What the check catches
203
+
204
+ Before the first publish, the run fails with `EPUBLISHCHECK` when a package of the train:
205
+
206
+ - is scoped and does not publish as public (`publishConfig.access`), which npm refuses;
207
+ - names no `license`, or no `repository` with the `directory` of its folder;
208
+ - runs with a private package of the workspace, which never publishes;
209
+ - cannot be ordered, because of a pin that cannot hold or a cycle;
210
+ - still has a `workspace:` range, an export with the `source` condition, or a `.ts` export after
211
+ the plugin resolved its manifest.
212
+
213
+ ## Registries and credentials
214
+
215
+ The default `npm` publisher publishes to any registry that speaks npm's protocol. npm handles
216
+ provenance and trusted publishing itself, with the CI's ID token. Without an ID token, npm uses the
217
+ token in its config, such as `//registry.npmjs.org/:_authToken=${NPM_TOKEN}` in an `.npmrc`. To
218
+ publish with another tool, choose another [publisher](#publishers). The recipes at the end show the
219
+ GitLab package registry and JSR.
220
+
221
+ ## When a publish fails
222
+
223
+ How you finish a failed publish depends on where the publish ran.
224
+
225
+ ### A publish in the tag's pipeline
226
+
227
+ If `semantic-release-trains-tag` publishes in the tag's pipeline, retry the publish job and keep the
228
+ tag. The retry packs the tagged commit's build again, skips each package the registry has, and
229
+ publishes the rest. See
230
+ [Build, smoke-test and publish in a tag pipeline](ci-recipes.md#build-smoke-test-and-publish-in-a-tag-pipeline).
231
+
232
+ Do not delete the tag, and do not run the branch release again. When the branch config names no
233
+ publish plugin, as in this setup, that run makes a second release commit with the same version. The
234
+ stock `@semantic-release/changelog` writes the changelog again, and the run tags that commit. The
235
+ first tag's pipeline never built that commit.
236
+
237
+ ### A publish in the release run
238
+
239
+ If the plugin publishes in the release run itself, as in the config above, semantic-release pushes
240
+ the release commit of `@semantic-release/git` and the tag before it runs `publish`. It does this for
241
+ every plugin. A publish that fails part way leaves both behind, and a new run finds that version
242
+ released and does nothing. To finish the release:
243
+
244
+ 1. Delete the tag on the remote and in the clone that runs again. A tag in the clone also counts as
245
+ a finished release.
246
+ 2. Run the release again at the release commit, the tip of the branch. semantic-release releases
247
+ nothing from a commit behind the tip.
248
+
249
+ The run computes the same version, tags the release commit, skips each package the registry already
250
+ has, publishes the rest, and creates the GitLab or GitHub release. A changelog plugin that the
251
+ trains plugin wraps finds the release's section in the changelog and skips its `prepare`, so
252
+ `@semantic-release/git` finds nothing to commit. If you list `@semantic-release/changelog`
253
+ unwrapped, it writes the section again. Wrap it, or remove the second section before the run.
254
+
255
+ A retried job that runs at its pipeline's commit, as a to-be-continuous job does, runs behind the
256
+ release commit. Check out the tip first, where the tip is the pipeline's commit with only release
257
+ commits on top. See [Run releases in CI](ci-recipes.md#gitlab-ci).
258
+
259
+ ## Use the steps as a library
260
+
261
+ The three steps are functions of `@wtf/release-npm/release` and need no release tool. Each step runs
262
+ on the `system` that its caller passes, as a CLI passes its own system adapted to the interface:
169
263
 
170
264
  ```ts
171
265
  import type { System } from '@wtf/release-system/system'
@@ -187,25 +281,14 @@ export async function release(system: System, version: string) {
187
281
  }
188
282
  ```
189
283
 
190
- `releaseTrain` runs the three in one call, as a job of the pipeline of a tag publishes its release:
191
- see [CI recipes](ci-recipes.md#publishing-from-the-tag).
192
-
193
- ## The check
194
-
195
- Before the first publish, the run fails with `EPUBLISHCHECK` when a package of the train:
196
-
197
- - is scoped, and does not publish as public (`publishConfig.access`): npm refuses it;
198
- - names no `license`, or no `repository` with the `directory` of its folder;
199
- - runs with a package of the workspace that is private, which never publishes;
200
- - cannot be ordered: a pin that cannot hold, or a cycle;
201
- - still has a `workspace:` range, an export of the `source` condition, or a `.ts` export after its
202
- manifest is resolved.
284
+ `releaseTrain` runs all three in one call, the way a job in the tag's pipeline publishes its
285
+ release. See [Publish from the tag pipeline](ci-recipes.md#publish-from-the-tag-pipeline).
203
286
 
204
287
  ## Publishers
205
288
 
206
- A publisher does two things: it looks a package up on the registry, and it publishes it. Its
207
- `lookup` answers, in one question, whether the registry has the version, and, where it reads
208
- dist-tags, the version the release's dist-tag points at, as `tagged`.
289
+ A publisher does two things: it looks a package up on the registry, and it publishes the package.
290
+ Its `lookup` answers two questions in one call: whether the registry has the version, and, if the
291
+ publisher reads dist-tags, which version the release's dist-tag points at (`tagged`).
209
292
 
210
293
  ```ts
211
294
  import type { Publisher } from '@wtf/release-npm'
@@ -223,34 +306,38 @@ export const logOnly: Publisher = {
223
306
  }
224
307
  ```
225
308
 
226
- `pack` is optional. A publisher that packs has every package packed before the first publish, and
227
- gets its tarball as `options.tarball`. `page` is optional too: it gives the page of a package, which
228
- the plugin gives semantic-release as the URL of the release. `tag` is optional: it points a dist-tag
229
- at a version the registry has, for `addChannel` and `tagTrain`; without it, a release does not move
230
- to another channel. A `lookup` with no `tagged` is not checked for a dist-tag it would move back.
231
-
232
- The option `publisher` chooses one:
233
-
234
- - `npm`, the default, runs the `npm` bin: `npm view <name>@<tag> version versions dist-tags`
235
- looks a package up, and of a dist-tag it has not, `@<version>`, once a step of the release, which
236
- keeps the package's versions and dist-tags (the context's `memo`) and asks again of what it
237
- changes;
238
- `npm pack --ignore-scripts` packs, as the build ran before the release,
239
- `npm publish <tarball>` publishes, and `npm dist-tag add` moves a dist-tag. npm itself handles
240
- provenance, and the trusted publishing of its registry by the ID token of the CI. With no ID
241
- token, npm uses the token of its config, such as `//registry.npmjs.org/:_authToken=${NPM_TOKEN}`
242
- in an `.npmrc`.
243
- - `pnpm` runs `pnpm publish <copy> --no-git-checks --ignore-scripts` of the copy of each package,
244
- from the root of the repo, or from the copy where the package has an `.npmrc` of its own, and
245
- asks the registry and moves a dist-tag by npm.
246
- - The path of a module, such as `./release/publisher.mjs`, from the root of the repo, or the name of
247
- a package. Its default export is the publisher.
248
- - A publisher itself, in a config written in JavaScript.
249
-
250
- ### A recipe: yarn
251
-
252
- yarn publishes; npm, which reads the same registry, looks a package up, as the `npm` publisher
253
- does:
309
+ A publisher can also have these optional members:
310
+
311
+ - `pack`: with it, the plugin packs every package before the first publish and passes each tarball
312
+ as `options.tarball`.
313
+ - `page`: it returns a package's page, which the plugin passes to semantic-release as the release's
314
+ URL.
315
+ - `tag`: it points a dist-tag at a version the registry has, for `addChannel` and `tagTrain`.
316
+ Without it, a release cannot move to another channel.
317
+
318
+ The plugin does not check whether a `lookup` without `tagged` would move a dist-tag back.
319
+
320
+ The `publisher` option chooses the publisher:
321
+
322
+ - **`npm`**, the default, runs the `npm` bin:
323
+ - `npm view <name>@<tag> version versions dist-tags` looks a package up. If the package has no
324
+ such dist-tag, the publisher asks for `@<version>` instead. It asks once per release step,
325
+ keeps the package's versions and dist-tags in the context's `memo`, and asks again only about
326
+ what it changes.
327
+ - `npm pack --ignore-scripts` packs, because the build ran before the release.
328
+ - `npm publish <tarball>` publishes.
329
+ - `npm dist-tag add` moves a dist-tag.
330
+ - **`pnpm`** runs `pnpm publish <copy> --no-git-checks --ignore-scripts` on each package's copy. It
331
+ runs from the repo's root, or from the copy when the package has an `.npmrc` of its own. It uses
332
+ npm to ask the registry and to move dist-tags.
333
+ - **The path of a module**, such as `./release/publisher.mjs` from the repo's root, or a package
334
+ name. Its default export is the publisher.
335
+ - **A publisher object**, in a config written in JavaScript.
336
+
337
+ ### Recipe: publish with yarn
338
+
339
+ yarn publishes, and npm looks each package up, as the `npm` publisher does. npm reads the same
340
+ registry:
254
341
 
255
342
  ```js train=trains
256
343
  // release/yarn-publisher.mjs
@@ -277,10 +364,10 @@ export default {
277
364
  }
278
365
  ```
279
366
 
280
- ### A recipe: the package registry of GitLab
367
+ ### Recipe: publish to the GitLab package registry
281
368
 
282
- The `npm` publisher publishes to any registry of npm's protocol. Name the registry of the project,
283
- and give npm the token of the job:
369
+ The `npm` publisher works with this registry. Name the project's registry, and give npm the job's
370
+ token:
284
371
 
285
372
  ```js train=trains
286
373
  // release.config.mjs
@@ -311,7 +398,7 @@ export default {
311
398
  echo "//${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=\${CI_JOB_TOKEN}" >> .npmrc
312
399
  ```
313
400
 
314
- ### A recipe: JSR
401
+ ### Recipe: publish to JSR
315
402
 
316
403
  ```js train=trains
317
404
  // release/jsr-publisher.mjs
@@ -332,5 +419,5 @@ export default {
332
419
  }
333
420
  ```
334
421
 
335
- JSR reads the version of the package from its `jsr.json`: write it into the copy, in `publish`,
336
- before `jsr publish`, as `pkg.version`.
422
+ JSR reads the package's version from its `jsr.json`. In `publish`, write `pkg.version` into the
423
+ copy's `jsr.json` before you run `jsr publish`.