@deltabox/toolchain 2.0.0 → 2.1.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 (36) hide show
  1. package/CHANGELOG.md +32 -4
  2. package/dist/changelog.d.ts +4 -1
  3. package/dist/changelog.js +1 -1
  4. package/dist/index.d.ts +2 -1
  5. package/dist/package.js +1 -1
  6. package/dist/packages/changelog/src/cli/index.js +1 -1
  7. package/dist/packages/changelog/src/index.d.ts +5 -2
  8. package/dist/packages/changelog/src/index.js +1 -1
  9. package/dist/packages/changelog/src/run.d.ts +1 -0
  10. package/dist/packages/changelog/src/run.js +1 -1
  11. package/dist/packages/changelog/src/utils/args.js +1 -1
  12. package/dist/packages/changelog/src/utils/breaking.d.ts +16 -0
  13. package/dist/packages/changelog/src/utils/breaking.js +1 -0
  14. package/dist/packages/changelog/src/utils/format.js +1 -1
  15. package/dist/packages/changelog/src/utils/git.d.ts +3 -1
  16. package/dist/packages/changelog/src/utils/git.js +1 -1
  17. package/dist/packages/changelog/src/utils/reformat.d.ts +3 -1
  18. package/dist/packages/changelog/src/utils/reformat.js +4 -4
  19. package/dist/packages/changelog/src/utils/release-notes.d.ts +18 -0
  20. package/dist/packages/changelog/src/utils/release-notes.js +1 -0
  21. package/dist/packages/changelog/src/utils/summary.d.ts +4 -0
  22. package/dist/packages/changelog/src/utils/summary.js +3 -3
  23. package/dist/packages/changelog/src/utils/types.d.ts +6 -1
  24. package/dist/packages/changelog/src/utils/versioning.d.ts +5 -0
  25. package/dist/packages/changelog/src/utils/versioning.js +1 -1
  26. package/dist/packages/changelog/src/utils/write.js +1 -1
  27. package/dist/packages/changelog/src/workflows.js +1 -1
  28. package/dist/packages/shared/src/changelog-breaking.d.ts +31 -0
  29. package/dist/packages/shared/src/config-schema/changelog.d.ts +3 -0
  30. package/dist/packages/shared/src/config-schema/changelog.js +1 -1
  31. package/dist/packages/shared/src/config-schema/ci.d.ts +1 -0
  32. package/dist/packages/shared/src/config-schema/index.d.ts +6 -0
  33. package/dist/packages/shared/src/config-types.d.ts +5 -0
  34. package/dist/packages/shared/src/index.d.ts +3 -2
  35. package/dist/shared.d.ts +2 -1
  36. package/package.json +12 -12
package/CHANGELOG.md CHANGED
@@ -1,9 +1,40 @@
1
1
  # Changelog
2
2
 
3
- ## 2.0.0 (October 2026)
3
+ ## 2.1.0 (October 2026)
4
4
 
5
5
  <!-- release:start -->
6
6
 
7
+ ### New features
8
+ #### Changelog
9
+ - Configure breaking-change detection ([#f80634f](https://github.com/deltabox-studio/toolchain/commit/f80634f) by [T0chi](https://github.com/T0chi))
10
+ - Detect breaking changes by Conventional Commits rules by default (! in the subject or a BREAKING CHANGE: footer) and add a changelog.breaking / ci.changelog.breaking override (conventional, ny, alse, pattern/match, or a callback).
11
+
12
+ <!-- release:end -->
13
+
14
+
15
+ ## 2.0.1 (October 2026)
16
+
17
+ ### Bug fixes
18
+ #### Vscode
19
+ - Always show builtin providers and templates ([#d67c2ad](https://github.com/deltabox-studio/toolchain/commit/d67c2ad) by [T0chi](https://github.com/T0chi))
20
+ #### Changelog
21
+ - Make release notes first-release safe ([#25e39ef](https://github.com/deltabox-studio/toolchain/commit/25e39ef) by [T0chi](https://github.com/T0chi))
22
+ - Extract release bodies through a tested CLI helper that only uses tag versions present in CHANGELOG.md, skips the current version, and falls back to the newest entry when there is no prior release.
23
+ - Group breaking changes first ([#c30d212](https://github.com/deltabox-studio/toolchain/commit/c30d212) by [T0chi](https://github.com/T0chi))
24
+ - Detect subject and footer breaks, group them under the breaking section ahead of feat/fix, and keep the grouping with custom commit formatters and --format-only.
25
+ ### Documentation
26
+ - Auto-generate sidebar and reorganize guides ([#3485f53](https://github.com/deltabox-studio/toolchain/commit/3485f53) by [T0chi](https://github.com/T0chi))
27
+ - Document release-notes extraction ([#fcac0b8](https://github.com/deltabox-studio/toolchain/commit/fcac0b8) by [T0chi](https://github.com/T0chi))
28
+ - Document dbx changelog --release-notes, the last-released-version matching and the first-release fallback.
29
+ - Document breaking changes group order ([#5aa2397](https://github.com/deltabox-studio/toolchain/commit/5aa2397) by [T0chi](https://github.com/T0chi))
30
+ - Note the default order (breaking, feat, fix) and that breaking grouping works with custom commit formatters.
31
+
32
+ ### Package changes
33
+ #### Added
34
+ - `vite-plugin-vitepress-auto-sidebar` `^1.7.1`
35
+
36
+ ## 2.0.0 (October 2026)
37
+
7
38
  ### New features
8
39
  #### Changelog
9
40
  - Customize CC group order and titles ([#856842b](https://github.com/deltabox-studio/toolchain/commit/856842b) by [T0chi](https://github.com/T0chi))
@@ -306,9 +337,6 @@
306
337
  #### Added
307
338
  - `jsonc-parser` `^3.3.1`
308
339
 
309
- <!-- release:end -->
310
-
311
-
312
340
  ## 1.11.4 (October 2026)
313
341
 
314
342
  ### Documentation
@@ -1,8 +1,10 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingCommit, ChangelogBreakingSetting } from "./packages/shared/src/changelog-breaking.js";
3
4
  import { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting } from "./packages/shared/src/changelog-groups.js";
4
5
  import { AuthorInfo, BumpType, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, ExistingEntry, GroupedItem, GroupedRule, IssueInfo, ParsedCommit, ProcessingMethod } from "./packages/changelog/src/utils/types.js";
5
6
  import { parseArgsCli } from "./packages/changelog/src/utils/args.js";
7
+ import { isBreakingCommit } from "./packages/changelog/src/utils/breaking.js";
6
8
  import { formatBody, groupItems, parseCcSubject, renderGroups, ruleTitle, splitInlineDescription } from "./packages/changelog/src/utils/format.js";
7
9
  import { deriveBump, readCommits } from "./packages/changelog/src/utils/git.js";
8
10
  import { parseExistingChangelog, reformatChangelogContent } from "./packages/changelog/src/utils/reformat.js";
@@ -14,7 +16,8 @@ import { RanWorkflow, RunWorkflowsOptions, RunWorkflowsResult, WorkflowTarget, r
14
16
  import { COMMITLINT_HEADER, COMMIT_MSG_HOOK, HOOK_HEADER, WORKFLOW_HEADER, changelogSyncTask, commitMsgHook, workflowFilePaths, workflowFilenames } from "./packages/changelog/src/sync.js";
15
17
  import { CommitlintOptions, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, renderCommitlintConfig } from "./packages/changelog/src/templates.js";
16
18
  import { ProjectGraphNode, readProjectGraph, relatedWorkspacePaths } from "./packages/changelog/src/utils/graph.js";
19
+ import { buildReleaseNotes, normalizeReleaseVersion, releaseNotesFromGit } from "./packages/changelog/src/utils/release-notes.js";
17
20
  import { BumpRuleContext, PlanVersionsOptions, ResolvedVersioning, VersionPackages, VersionPlan, VersioningTarget, deriveCustomBump, discoverVersionPackages, planVersions, readPackageVersion, resolveVersioning, writePackageVersion } from "./packages/changelog/src/utils/versioning.js";
18
21
  import "./packages/changelog/src/index.js";
19
22
  import { changelogCommands } from "./packages/changelog/src/cli/index.js";
20
- export { AuthorInfo, BumpRuleContext, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, type ChangelogGroupConfig, type ChangelogGroupContext, type ChangelogGroupEntry, type ChangelogGroupHidden, type ChangelogGroupItem, type ChangelogGroupOrder, type ChangelogGroupTitle, type ChangelogGroupsContext, type ChangelogGroupsSetting, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_DIR, DEFAULT_WORKFLOW_TOKENS, DefaultWorkflowOptions, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, type ProjectGraphNode, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, WorkflowTarget, applyWorkflowConfig, buildSummary, changelogCommands, changelogSyncTask, commitMsgHook, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, deriveCustomBump, discoverVersionPackages, formatBody, groupItems, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, readProjectGraph, reformatChangelogContent, relatedWorkspacePaths, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderCustomWorkflow, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, resolveWorkflowTarget, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilePath, workflowFilePaths, workflowFilenames, workflowTargets, writePackageVersion };
23
+ export { AuthorInfo, BumpRuleContext, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, type ChangelogBreakingCommit, type ChangelogBreakingSetting, type ChangelogGroupConfig, type ChangelogGroupContext, type ChangelogGroupEntry, type ChangelogGroupHidden, type ChangelogGroupItem, type ChangelogGroupOrder, type ChangelogGroupTitle, type ChangelogGroupsContext, type ChangelogGroupsSetting, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_DIR, DEFAULT_WORKFLOW_TOKENS, DefaultWorkflowOptions, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, type ProjectGraphNode, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, WorkflowTarget, applyWorkflowConfig, buildReleaseNotes, buildSummary, changelogCommands, changelogSyncTask, commitMsgHook, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, deriveCustomBump, discoverVersionPackages, formatBody, groupItems, isBreakingCommit, isEnabled, main, normalizeReleaseVersion, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, readProjectGraph, reformatChangelogContent, relatedWorkspacePaths, releaseNotesFromGit, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderCustomWorkflow, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, resolveWorkflowTarget, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilePath, workflowFilePaths, workflowFilenames, workflowTargets, writePackageVersion };
package/dist/changelog.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{parseArgsCli as e}from"./packages/changelog/src/utils/args.js";import{deriveBump as t,readCommits as n}from"./packages/changelog/src/utils/git.js";import{formatBody as r,groupItems as i,parseCcSubject as a,renderGroups as o,ruleTitle as s,splitInlineDescription as c}from"./packages/changelog/src/utils/format.js";import{renderChangelogEntry as l}from"./packages/changelog/src/utils/version.js";import{parseExistingChangelog as u,reformatChangelogContent as d}from"./packages/changelog/src/utils/reformat.js";import{buildSummary as f,renderCommitRef as p}from"./packages/changelog/src/utils/summary.js";import{readProjectGraph as m,relatedWorkspacePaths as h}from"./packages/changelog/src/utils/graph.js";import{deriveCustomBump as g,discoverVersionPackages as _,planVersions as v,readPackageVersion as y,resolveVersioning as b,writePackageVersion as x}from"./packages/changelog/src/utils/versioning.js";import{main as S,runChangelog as C}from"./packages/changelog/src/run.js";import{DEFAULT_WORKFLOW_DIR as w,DEFAULT_WORKFLOW_TOKENS as T,WORKFLOW_FILENAMES as E,applyWorkflowConfig as D,defaultWorkflows as O,isEnabled as k,renderCustomWorkflow as A,renderWorkflow as j,renderWorkflows as M,workflowFilePath as N}from"./packages/changelog/src/workflows.js";import{resolveWorkflowId as P,resolveWorkflowTarget as F,runWorkflows as I,workflowTargets as L}from"./packages/changelog/src/run-workflows.js";import{conventionalCommitsVscodeExtensions as R,conventionalCommitsVscodeSettings as z,renderCommitlintConfig as B}from"./packages/changelog/src/templates.js";import{COMMITLINT_HEADER as V,COMMIT_MSG_HOOK as H,HOOK_HEADER as U,WORKFLOW_HEADER as W,changelogSyncTask as G,commitMsgHook as K,workflowFilePaths as q,workflowFilenames as J}from"./packages/changelog/src/sync.js";import"./packages/changelog/src/index.js";import{changelogCommands as Y}from"./packages/changelog/src/cli/index.js";export{V as COMMITLINT_HEADER,H as COMMIT_MSG_HOOK,w as DEFAULT_WORKFLOW_DIR,T as DEFAULT_WORKFLOW_TOKENS,U as HOOK_HEADER,E as WORKFLOW_FILENAMES,W as WORKFLOW_HEADER,D as applyWorkflowConfig,f as buildSummary,Y as changelogCommands,G as changelogSyncTask,K as commitMsgHook,R as conventionalCommitsVscodeExtensions,z as conventionalCommitsVscodeSettings,O as defaultWorkflows,t as deriveBump,g as deriveCustomBump,_ as discoverVersionPackages,r as formatBody,i as groupItems,k as isEnabled,S as main,e as parseArgsCli,a as parseCcSubject,u as parseExistingChangelog,v as planVersions,n as readCommits,y as readPackageVersion,m as readProjectGraph,d as reformatChangelogContent,h as relatedWorkspacePaths,l as renderChangelogEntry,p as renderCommitRef,B as renderCommitlintConfig,A as renderCustomWorkflow,o as renderGroups,j as renderWorkflow,M as renderWorkflows,b as resolveVersioning,P as resolveWorkflowId,F as resolveWorkflowTarget,s as ruleTitle,C as runChangelog,I as runWorkflows,c as splitInlineDescription,N as workflowFilePath,q as workflowFilePaths,J as workflowFilenames,L as workflowTargets,x as writePackageVersion};
1
+ import"node:path";import"node:url";import.meta.url;import{parseArgsCli as e}from"./packages/changelog/src/utils/args.js";import{isBreakingCommit as t}from"./packages/changelog/src/utils/breaking.js";import{deriveBump as n,readCommits as r}from"./packages/changelog/src/utils/git.js";import{formatBody as i,groupItems as a,parseCcSubject as o,renderGroups as s,ruleTitle as c,splitInlineDescription as l}from"./packages/changelog/src/utils/format.js";import{renderChangelogEntry as u}from"./packages/changelog/src/utils/version.js";import{parseExistingChangelog as d,reformatChangelogContent as f}from"./packages/changelog/src/utils/reformat.js";import{buildReleaseNotes as p,normalizeReleaseVersion as m,releaseNotesFromGit as h}from"./packages/changelog/src/utils/release-notes.js";import{buildSummary as g,renderCommitRef as _}from"./packages/changelog/src/utils/summary.js";import{readProjectGraph as v,relatedWorkspacePaths as y}from"./packages/changelog/src/utils/graph.js";import{deriveCustomBump as b,discoverVersionPackages as x,planVersions as S,readPackageVersion as C,resolveVersioning as w,writePackageVersion as T}from"./packages/changelog/src/utils/versioning.js";import{main as E,runChangelog as D}from"./packages/changelog/src/run.js";import{DEFAULT_WORKFLOW_DIR as O,DEFAULT_WORKFLOW_TOKENS as k,WORKFLOW_FILENAMES as A,applyWorkflowConfig as j,defaultWorkflows as M,isEnabled as N,renderCustomWorkflow as P,renderWorkflow as F,renderWorkflows as I,workflowFilePath as L}from"./packages/changelog/src/workflows.js";import{resolveWorkflowId as R,resolveWorkflowTarget as z,runWorkflows as B,workflowTargets as V}from"./packages/changelog/src/run-workflows.js";import{conventionalCommitsVscodeExtensions as H,conventionalCommitsVscodeSettings as U,renderCommitlintConfig as W}from"./packages/changelog/src/templates.js";import{COMMITLINT_HEADER as G,COMMIT_MSG_HOOK as K,HOOK_HEADER as q,WORKFLOW_HEADER as J,changelogSyncTask as Y,commitMsgHook as X,workflowFilePaths as Z,workflowFilenames as Q}from"./packages/changelog/src/sync.js";import"./packages/changelog/src/index.js";import{changelogCommands as $}from"./packages/changelog/src/cli/index.js";export{G as COMMITLINT_HEADER,K as COMMIT_MSG_HOOK,O as DEFAULT_WORKFLOW_DIR,k as DEFAULT_WORKFLOW_TOKENS,q as HOOK_HEADER,A as WORKFLOW_FILENAMES,J as WORKFLOW_HEADER,j as applyWorkflowConfig,p as buildReleaseNotes,g as buildSummary,$ as changelogCommands,Y as changelogSyncTask,X as commitMsgHook,H as conventionalCommitsVscodeExtensions,U as conventionalCommitsVscodeSettings,M as defaultWorkflows,n as deriveBump,b as deriveCustomBump,x as discoverVersionPackages,i as formatBody,a as groupItems,t as isBreakingCommit,N as isEnabled,E as main,m as normalizeReleaseVersion,e as parseArgsCli,o as parseCcSubject,d as parseExistingChangelog,S as planVersions,r as readCommits,C as readPackageVersion,v as readProjectGraph,f as reformatChangelogContent,y as relatedWorkspacePaths,h as releaseNotesFromGit,u as renderChangelogEntry,_ as renderCommitRef,W as renderCommitlintConfig,P as renderCustomWorkflow,s as renderGroups,F as renderWorkflow,I as renderWorkflows,w as resolveVersioning,R as resolveWorkflowId,z as resolveWorkflowTarget,c as ruleTitle,D as runChangelog,B as runWorkflows,l as splitInlineDescription,L as workflowFilePath,Z as workflowFilePaths,Q as workflowFilenames,V as workflowTargets,T as writePackageVersion};
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { TOOLCHAIN_PACKAGE, findOwnCliEntry, localToolchainVersion } from "./packages/shared/src/bin.js";
4
+ import { ChangelogBreakingCommit, ChangelogBreakingSetting } from "./packages/shared/src/changelog-breaking.js";
4
5
  import { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting } from "./packages/shared/src/changelog-groups.js";
5
6
  import { mergeJsonAt, readJsonAt, readJsonFile, toJson, writeJsonFile } from "./packages/shared/src/fs-utils.js";
6
7
  import { DEFAULT_IGNORE_PATTERNS, IgnoreOptions, collectGitignorePatterns, isIgnoredPath, resolveIgnorePatterns } from "./packages/shared/src/ignore.js";
@@ -56,4 +57,4 @@ import { index_d_exports as index_d_exports$4 } from "./packages/project/src/ind
56
57
  import { index_d_exports as index_d_exports$7 } from "./packages/tsdown/src/index.js";
57
58
  import { defaultSyncTasks } from "./sync.js";
58
59
  import { NormalizeToolingOptions, NormalizedTooling, ToolingDefaultsTaskOptions, normalizeToolingConfig, toolingDefaultsTask } from "./tooling.js";
59
- export { Awaitable, BuildProjectGraphOptions, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DBX_GITIGNORE_BLOCK, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FileOrigin, FormatterTool, GeneratedFile, IGNORED_DIRS, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LoadToolchainConfigOptions, LoadedConfig, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, MANIFEST_DIR, MANIFEST_FILE, ManagedFile, Manifest, MessageId, NormalizeToolingOptions, NormalizedTooling, PackageJson, PackageManager, ProjectGraph, ProjectNode, ProjectType, ProviderRegistryPath, RegistryPolicy, RemovedFile, ReplacementOptions, ReplacementValue, Replacements, Replacer, ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, RunOptions, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, Sortable, SpawnCrossOptions, SyncContext, SyncResult, SyncSummary, SyncTask, TIMESTAMPS_FILE, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, ToolingDefaultsTaskOptions, TsconfigFileNames, VscodeSyncOptions, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, addGlobalProviderRegistry, addProjectProviderRegistry, applyOverrides, applyReplacements, applyReplacementsDeep, asString, index_d_exports as biome, biomeConfigSchema, buildProjectGraph, camelCase, camelCaseId, capitalize, catalogsConfigSchema, index_d_exports$1 as changelog, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, index_d_exports$2 as config, configSchema, configureLogger, constantCase, index_d_exports$3 as core, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defaultGlobalProvidersDir, defaultSyncTasks, defineConfig, defineReplacements, detectPackageManager, detectProjectType, editorConfigSyncTask, ensureDbxGitignore, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findConfigFile, findOwnCliEntry, findParentConfigFile, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, globalProviderRegistryPath, hasText, hasUnresolvedTokens, indent, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, legacyProviderRegistryPath, lintConfigSchema, loadToolchainConfig, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, mergeToolchainConfig, normalizeLogLevel, normalizeToolingConfig, orderProjects, pascalCase, index_d_exports$4 as project, projectConfigSchema, projectFromPackageJson, projectGraphPath, projectToPackageJson, projectTypeSchema, providerActions, providerRegistryPath, providerRegistryPaths, providersConfigSchema, readAllProviders, readAllProvidersSync, readGlobalProviders, readJsonAt, readJsonFile, readManifest, readProjectGraph, readProviderRegistry, readSyncedAt, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeGlobalProviderRegistry, removeLeadingSlash, removeProjectProviderRegistry, removeTrailingSlash, repoSlugFromUrl, resetProjects, resetToolchain, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveProjectType, resolveSort, resolveTokens, resolveWatchGlobs, run, runSync, runWatch, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, selectProjects, setGlobalProviderRegistries, setLogConfig, setLogOverrides, setProjectProviderRegistries, index_d_exports$5 as shared, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, toolingConfigTask, toolingDefaultsTask, index_d_exports$6 as tsconfig, tsconfigConfigSchema, index_d_exports$7 as tsdown, viteConfigSchema, vscodeSettingsSchema, vscodeSyncTask, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeGlobalProviders, writeJsonFile, writeManifest, writeProjectGraph, writeProviderRegistry };
60
+ export { Awaitable, BuildProjectGraphOptions, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogBreakingCommit, ChangelogBreakingSetting, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DBX_GITIGNORE_BLOCK, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FileOrigin, FormatterTool, GeneratedFile, IGNORED_DIRS, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LoadToolchainConfigOptions, LoadedConfig, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, MANIFEST_DIR, MANIFEST_FILE, ManagedFile, Manifest, MessageId, NormalizeToolingOptions, NormalizedTooling, PackageJson, PackageManager, ProjectGraph, ProjectNode, ProjectType, ProviderRegistryPath, RegistryPolicy, RemovedFile, ReplacementOptions, ReplacementValue, Replacements, Replacer, ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, RunOptions, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, Sortable, SpawnCrossOptions, SyncContext, SyncResult, SyncSummary, SyncTask, TIMESTAMPS_FILE, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, ToolingDefaultsTaskOptions, TsconfigFileNames, VscodeSyncOptions, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, addGlobalProviderRegistry, addProjectProviderRegistry, applyOverrides, applyReplacements, applyReplacementsDeep, asString, index_d_exports as biome, biomeConfigSchema, buildProjectGraph, camelCase, camelCaseId, capitalize, catalogsConfigSchema, index_d_exports$1 as changelog, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, index_d_exports$2 as config, configSchema, configureLogger, constantCase, index_d_exports$3 as core, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defaultGlobalProvidersDir, defaultSyncTasks, defineConfig, defineReplacements, detectPackageManager, detectProjectType, editorConfigSyncTask, ensureDbxGitignore, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findConfigFile, findOwnCliEntry, findParentConfigFile, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, globalProviderRegistryPath, hasText, hasUnresolvedTokens, indent, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, legacyProviderRegistryPath, lintConfigSchema, loadToolchainConfig, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, mergeToolchainConfig, normalizeLogLevel, normalizeToolingConfig, orderProjects, pascalCase, index_d_exports$4 as project, projectConfigSchema, projectFromPackageJson, projectGraphPath, projectToPackageJson, projectTypeSchema, providerActions, providerRegistryPath, providerRegistryPaths, providersConfigSchema, readAllProviders, readAllProvidersSync, readGlobalProviders, readJsonAt, readJsonFile, readManifest, readProjectGraph, readProviderRegistry, readSyncedAt, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeGlobalProviderRegistry, removeLeadingSlash, removeProjectProviderRegistry, removeTrailingSlash, repoSlugFromUrl, resetProjects, resetToolchain, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveProjectType, resolveSort, resolveTokens, resolveWatchGlobs, run, runSync, runWatch, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, selectProjects, setGlobalProviderRegistries, setLogConfig, setLogOverrides, setProjectProviderRegistries, index_d_exports$5 as shared, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, toolingConfigTask, toolingDefaultsTask, index_d_exports$6 as tsconfig, tsconfigConfigSchema, index_d_exports$7 as tsdown, viteConfigSchema, vscodeSettingsSchema, vscodeSyncTask, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeGlobalProviders, writeJsonFile, writeManifest, writeProjectGraph, writeProviderRegistry };
package/dist/package.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;var e=`2.0.0`;export{e as version};
1
+ import"node:path";import"node:url";import.meta.url;var e=`2.1.0`;export{e as version};
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import{resolveChangelogConfig as t}from"../../../shared/src/toolchain.js";import"../../../shared/src/index.js";import{runChangelog as n}from"../run.js";import{runWorkflows as r,workflowTargets as i}from"../run-workflows.js";function a(){return[{name:`workflow`,description:"Trigger one or more generated GitHub workflows (via `gh workflow run`).",args:[{name:`workflows`,description:`Workflow ids, custom ids, or file names (default: every enabled workflow).`,variadic:!0,required:!1}],options:[{flags:`--cwd <dir>`,description:`Project root (default: cwd).`},{flags:`--ref <ref>`,description:`Git ref to run the workflow on.`},{flags:`--gh <cmd>`,description:`The gh executable (default: gh).`},{flags:`--list`,description:`List the enabled workflows (and where they are written).`},{flags:`--json`,description:`With --list: print the workflows as JSON.`}],run:async(t,n)=>{if(t.list){let r=i(n.config);if(t.json){e.raw(JSON.stringify(r,null,4));return}if(r.length===0){e.info(`no workflows are enabled.`);return}for(let t of r)e.info(` ${t.id.padEnd(20)} ${t.path}`);return}let a=t.workflows,o=Array.isArray(a)?a:a?[String(a)]:void 0,s=await r({cwd:t.cwd??n.cwd,config:n.config,...o?{workflows:o}:{},...t.ref?{ref:t.ref}:{},...t.gh?{gh:t.gh}:{}}),c=!1;for(let t of s.ran)t.code===0?e.info(`triggered ${t.file}`):(c=!0,e.error(`${t.file} exited ${t.code}`));c&&(process.exitCode=1)}},{name:`changelog`,description:`Scan commits, derive the semver bump and update the CHANGELOG.md files + versions.`,options:[{flags:`--range <range>`,description:`Git revision range to scan.`},{flags:`--dry-run`,description:`Print the proposed entry without writing.`},{flags:`--version <semver>`,description:`Override the version.`},{flags:`--base-version <semver>`,description:`Bump from this version instead.`},{flags:`--processing-method <method>`,description:"`latest` (default), `all`, or a git range."},{flags:`--format-only`,description:`Only regroup existing changelogs.`},{flags:`--no-package-changes-section`,description:`Skip the package-changes footer.`}],run:(e,r)=>{let i=[];e.range&&i.push(`--range`,String(e.range)),e.dryRun&&i.push(`--dry-run`),e.version&&i.push(`--version`,String(e.version)),e.baseVersion&&i.push(`--base-version`,String(e.baseVersion)),e.processingMethod&&i.push(`--processing-method`,String(e.processingMethod)),e.formatOnly&&i.push(`--format-only`),e.packageChangesSection===!1&&i.push(`--no-package-changes-section`),n(i,t(r.config))}}]}export{a as changelogCommands};
1
+ import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import{resolveChangelogConfig as t}from"../../../shared/src/toolchain.js";import"../../../shared/src/index.js";import{runChangelog as n}from"../run.js";import{runWorkflows as r,workflowTargets as i}from"../run-workflows.js";function a(){return[{name:`workflow`,description:"Trigger one or more generated GitHub workflows (via `gh workflow run`).",args:[{name:`workflows`,description:`Workflow ids, custom ids, or file names (default: every enabled workflow).`,variadic:!0,required:!1}],options:[{flags:`--cwd <dir>`,description:`Project root (default: cwd).`},{flags:`--ref <ref>`,description:`Git ref to run the workflow on.`},{flags:`--gh <cmd>`,description:`The gh executable (default: gh).`},{flags:`--list`,description:`List the enabled workflows (and where they are written).`},{flags:`--json`,description:`With --list: print the workflows as JSON.`}],run:async(t,n)=>{if(t.list){let r=i(n.config);if(t.json){e.raw(JSON.stringify(r,null,4));return}if(r.length===0){e.info(`no workflows are enabled.`);return}for(let t of r)e.info(` ${t.id.padEnd(20)} ${t.path}`);return}let a=t.workflows,o=Array.isArray(a)?a:a?[String(a)]:void 0,s=await r({cwd:t.cwd??n.cwd,config:n.config,...o?{workflows:o}:{},...t.ref?{ref:t.ref}:{},...t.gh?{gh:t.gh}:{}}),c=!1;for(let t of s.ran)t.code===0?e.info(`triggered ${t.file}`):(c=!0,e.error(`${t.file} exited ${t.code}`));c&&(process.exitCode=1)}},{name:`changelog`,description:`Scan commits, derive the semver bump and update the CHANGELOG.md files + versions.`,options:[{flags:`--range <range>`,description:`Git revision range to scan.`},{flags:`--dry-run`,description:`Print the proposed entry without writing.`},{flags:`--version <semver>`,description:`Override the version.`},{flags:`--base-version <semver>`,description:`Bump from this version instead.`},{flags:`--release-notes <semver>`,description:`Print the release body for this version and exit.`},{flags:`--processing-method <method>`,description:"`latest` (default), `all`, or a git range."},{flags:`--format-only`,description:`Only regroup existing changelogs.`},{flags:`--no-package-changes-section`,description:`Skip the package-changes footer.`}],run:(e,r)=>{let i=[];e.range&&i.push(`--range`,String(e.range)),e.dryRun&&i.push(`--dry-run`),e.version&&i.push(`--version`,String(e.version)),e.baseVersion&&i.push(`--base-version`,String(e.baseVersion)),e.releaseNotes&&i.push(`--release-notes`,String(e.releaseNotes)),e.processingMethod&&i.push(`--processing-method`,String(e.processingMethod)),e.formatOnly&&i.push(`--format-only`),e.packageChangesSection===!1&&i.push(`--no-package-changes-section`),n(i,t(r.config))}}]}export{a as changelogCommands};
@@ -1,8 +1,10 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingCommit, ChangelogBreakingSetting } from "../../shared/src/changelog-breaking.js";
3
4
  import { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting } from "../../shared/src/changelog-groups.js";
4
5
  import { AuthorInfo, BumpType, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, ExistingEntry, GroupedItem, GroupedRule, IssueInfo, ParsedCommit, ProcessingMethod } from "./utils/types.js";
5
6
  import { parseArgsCli } from "./utils/args.js";
7
+ import { isBreakingCommit } from "./utils/breaking.js";
6
8
  import { formatBody, groupItems, parseCcSubject, renderGroups, ruleTitle, splitInlineDescription } from "./utils/format.js";
7
9
  import { deriveBump, readCommits } from "./utils/git.js";
8
10
  import { parseExistingChangelog, reformatChangelogContent } from "./utils/reformat.js";
@@ -14,9 +16,10 @@ import { RanWorkflow, RunWorkflowsOptions, RunWorkflowsResult, WorkflowTarget, r
14
16
  import { COMMITLINT_HEADER, COMMIT_MSG_HOOK, HOOK_HEADER, WORKFLOW_HEADER, changelogSyncTask, commitMsgHook, workflowFilePaths, workflowFilenames } from "./sync.js";
15
17
  import { CommitlintOptions, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, renderCommitlintConfig } from "./templates.js";
16
18
  import { ProjectGraphNode, readProjectGraph, relatedWorkspacePaths } from "./utils/graph.js";
19
+ import { buildReleaseNotes, normalizeReleaseVersion, releaseNotesFromGit } from "./utils/release-notes.js";
17
20
  import { BumpRuleContext, PlanVersionsOptions, ResolvedVersioning, VersionPackages, VersionPlan, VersioningTarget, deriveCustomBump, discoverVersionPackages, planVersions, readPackageVersion, resolveVersioning, writePackageVersion } from "./utils/versioning.js";
18
21
  declare namespace index_d_exports {
19
- export { AuthorInfo, BumpRuleContext, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_DIR, DEFAULT_WORKFLOW_TOKENS, DefaultWorkflowOptions, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, ProjectGraphNode, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, WorkflowTarget, applyWorkflowConfig, buildSummary, changelogSyncTask, commitMsgHook, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, deriveCustomBump, discoverVersionPackages, formatBody, groupItems, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, readProjectGraph, reformatChangelogContent, relatedWorkspacePaths, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderCustomWorkflow, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, resolveWorkflowTarget, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilePath, workflowFilePaths, workflowFilenames, workflowTargets, writePackageVersion };
22
+ export { AuthorInfo, BumpRuleContext, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, ChangelogBreakingCommit, ChangelogBreakingSetting, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_DIR, DEFAULT_WORKFLOW_TOKENS, DefaultWorkflowOptions, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, ProjectGraphNode, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, WorkflowTarget, applyWorkflowConfig, buildReleaseNotes, buildSummary, changelogSyncTask, commitMsgHook, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, deriveCustomBump, discoverVersionPackages, formatBody, groupItems, isBreakingCommit, isEnabled, main, normalizeReleaseVersion, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, readProjectGraph, reformatChangelogContent, relatedWorkspacePaths, releaseNotesFromGit, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderCustomWorkflow, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, resolveWorkflowTarget, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilePath, workflowFilePaths, workflowFilenames, workflowTargets, writePackageVersion };
20
23
  }
21
24
  //#endregion
22
- export { AuthorInfo, BumpRuleContext, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, type ChangelogGroupConfig, type ChangelogGroupContext, type ChangelogGroupEntry, type ChangelogGroupHidden, type ChangelogGroupItem, type ChangelogGroupOrder, type ChangelogGroupTitle, type ChangelogGroupsContext, type ChangelogGroupsSetting, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_DIR, DEFAULT_WORKFLOW_TOKENS, DefaultWorkflowOptions, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, type ProjectGraphNode, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, WorkflowTarget, applyWorkflowConfig, buildSummary, changelogSyncTask, commitMsgHook, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, deriveCustomBump, discoverVersionPackages, formatBody, groupItems, index_d_exports, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, readProjectGraph, reformatChangelogContent, relatedWorkspacePaths, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderCustomWorkflow, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, resolveWorkflowTarget, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilePath, workflowFilePaths, workflowFilenames, workflowTargets, writePackageVersion };
25
+ export { AuthorInfo, BumpRuleContext, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, type ChangelogBreakingCommit, type ChangelogBreakingSetting, type ChangelogGroupConfig, type ChangelogGroupContext, type ChangelogGroupEntry, type ChangelogGroupHidden, type ChangelogGroupItem, type ChangelogGroupOrder, type ChangelogGroupTitle, type ChangelogGroupsContext, type ChangelogGroupsSetting, ChangelogProvider, ChangelogProviderContext, CliOptions, CommitFormatContext, CommitFormatOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_DIR, DEFAULT_WORKFLOW_TOKENS, DefaultWorkflowOptions, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, type ProjectGraphNode, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, WorkflowTarget, applyWorkflowConfig, buildReleaseNotes, buildSummary, changelogSyncTask, commitMsgHook, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, deriveCustomBump, discoverVersionPackages, formatBody, groupItems, index_d_exports, isBreakingCommit, isEnabled, main, normalizeReleaseVersion, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, readProjectGraph, reformatChangelogContent, relatedWorkspacePaths, releaseNotesFromGit, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderCustomWorkflow, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, resolveWorkflowTarget, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilePath, workflowFilePaths, workflowFilenames, workflowTargets, writePackageVersion };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{parseArgsCli as t}from"./utils/args.js";import{deriveBump as n,readCommits as r}from"./utils/git.js";import{formatBody as i,groupItems as a,parseCcSubject as o,renderGroups as s,ruleTitle as c,splitInlineDescription as l}from"./utils/format.js";import{renderChangelogEntry as u}from"./utils/version.js";import{parseExistingChangelog as d,reformatChangelogContent as f}from"./utils/reformat.js";import{buildSummary as p,renderCommitRef as m}from"./utils/summary.js";import{readProjectGraph as h,relatedWorkspacePaths as g}from"./utils/graph.js";import{deriveCustomBump as _,discoverVersionPackages as v,planVersions as y,readPackageVersion as b,resolveVersioning as x,writePackageVersion as S}from"./utils/versioning.js";import{main as C,runChangelog as w}from"./run.js";import{DEFAULT_WORKFLOW_DIR as T,DEFAULT_WORKFLOW_TOKENS as E,WORKFLOW_FILENAMES as D,applyWorkflowConfig as O,defaultWorkflows as k,isEnabled as A,renderCustomWorkflow as j,renderWorkflow as M,renderWorkflows as N,workflowFilePath as P}from"./workflows.js";import{resolveWorkflowId as F,resolveWorkflowTarget as I,runWorkflows as L,workflowTargets as R}from"./run-workflows.js";import{conventionalCommitsVscodeExtensions as z,conventionalCommitsVscodeSettings as B,renderCommitlintConfig as V}from"./templates.js";import{COMMITLINT_HEADER as H,COMMIT_MSG_HOOK as U,HOOK_HEADER as W,WORKFLOW_HEADER as G,changelogSyncTask as K,commitMsgHook as q,workflowFilePaths as J,workflowFilenames as Y}from"./sync.js";var X=/* @__PURE__ */ e({COMMITLINT_HEADER:()=>H,COMMIT_MSG_HOOK:()=>U,DEFAULT_WORKFLOW_DIR:()=>T,DEFAULT_WORKFLOW_TOKENS:()=>E,HOOK_HEADER:()=>W,WORKFLOW_FILENAMES:()=>D,WORKFLOW_HEADER:()=>G,applyWorkflowConfig:()=>O,buildSummary:()=>p,changelogSyncTask:()=>K,commitMsgHook:()=>q,conventionalCommitsVscodeExtensions:()=>z,conventionalCommitsVscodeSettings:()=>B,defaultWorkflows:()=>k,deriveBump:()=>n,deriveCustomBump:()=>_,discoverVersionPackages:()=>v,formatBody:()=>i,groupItems:()=>a,isEnabled:()=>A,main:()=>C,parseArgsCli:()=>t,parseCcSubject:()=>o,parseExistingChangelog:()=>d,planVersions:()=>y,readCommits:()=>r,readPackageVersion:()=>b,readProjectGraph:()=>h,reformatChangelogContent:()=>f,relatedWorkspacePaths:()=>g,renderChangelogEntry:()=>u,renderCommitRef:()=>m,renderCommitlintConfig:()=>V,renderCustomWorkflow:()=>j,renderGroups:()=>s,renderWorkflow:()=>M,renderWorkflows:()=>N,resolveVersioning:()=>x,resolveWorkflowId:()=>F,resolveWorkflowTarget:()=>I,ruleTitle:()=>c,runChangelog:()=>w,runWorkflows:()=>L,splitInlineDescription:()=>l,workflowFilePath:()=>P,workflowFilePaths:()=>J,workflowFilenames:()=>Y,workflowTargets:()=>R,writePackageVersion:()=>S});export{H as COMMITLINT_HEADER,U as COMMIT_MSG_HOOK,T as DEFAULT_WORKFLOW_DIR,E as DEFAULT_WORKFLOW_TOKENS,W as HOOK_HEADER,D as WORKFLOW_FILENAMES,G as WORKFLOW_HEADER,O as applyWorkflowConfig,p as buildSummary,K as changelogSyncTask,q as commitMsgHook,z as conventionalCommitsVscodeExtensions,B as conventionalCommitsVscodeSettings,k as defaultWorkflows,n as deriveBump,_ as deriveCustomBump,v as discoverVersionPackages,i as formatBody,a as groupItems,A as isEnabled,C as main,t as parseArgsCli,o as parseCcSubject,d as parseExistingChangelog,y as planVersions,r as readCommits,b as readPackageVersion,h as readProjectGraph,f as reformatChangelogContent,g as relatedWorkspacePaths,u as renderChangelogEntry,m as renderCommitRef,V as renderCommitlintConfig,j as renderCustomWorkflow,s as renderGroups,M as renderWorkflow,N as renderWorkflows,x as resolveVersioning,F as resolveWorkflowId,I as resolveWorkflowTarget,c as ruleTitle,w as runChangelog,L as runWorkflows,l as splitInlineDescription,X as src_exports,P as workflowFilePath,J as workflowFilePaths,Y as workflowFilenames,R as workflowTargets,S as writePackageVersion};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{parseArgsCli as t}from"./utils/args.js";import{isBreakingCommit as n}from"./utils/breaking.js";import{deriveBump as r,readCommits as i}from"./utils/git.js";import{formatBody as a,groupItems as o,parseCcSubject as s,renderGroups as c,ruleTitle as l,splitInlineDescription as u}from"./utils/format.js";import{renderChangelogEntry as d}from"./utils/version.js";import{parseExistingChangelog as f,reformatChangelogContent as p}from"./utils/reformat.js";import{buildReleaseNotes as m,normalizeReleaseVersion as h,releaseNotesFromGit as g}from"./utils/release-notes.js";import{buildSummary as _,renderCommitRef as v}from"./utils/summary.js";import{readProjectGraph as y,relatedWorkspacePaths as b}from"./utils/graph.js";import{deriveCustomBump as x,discoverVersionPackages as S,planVersions as C,readPackageVersion as w,resolveVersioning as T,writePackageVersion as E}from"./utils/versioning.js";import{main as D,runChangelog as O}from"./run.js";import{DEFAULT_WORKFLOW_DIR as k,DEFAULT_WORKFLOW_TOKENS as A,WORKFLOW_FILENAMES as j,applyWorkflowConfig as M,defaultWorkflows as N,isEnabled as P,renderCustomWorkflow as F,renderWorkflow as I,renderWorkflows as L,workflowFilePath as R}from"./workflows.js";import{resolveWorkflowId as z,resolveWorkflowTarget as B,runWorkflows as V,workflowTargets as H}from"./run-workflows.js";import{conventionalCommitsVscodeExtensions as U,conventionalCommitsVscodeSettings as W,renderCommitlintConfig as G}from"./templates.js";import{COMMITLINT_HEADER as K,COMMIT_MSG_HOOK as q,HOOK_HEADER as J,WORKFLOW_HEADER as Y,changelogSyncTask as X,commitMsgHook as Z,workflowFilePaths as Q,workflowFilenames as $}from"./sync.js";var ee=/* @__PURE__ */ e({COMMITLINT_HEADER:()=>K,COMMIT_MSG_HOOK:()=>q,DEFAULT_WORKFLOW_DIR:()=>k,DEFAULT_WORKFLOW_TOKENS:()=>A,HOOK_HEADER:()=>J,WORKFLOW_FILENAMES:()=>j,WORKFLOW_HEADER:()=>Y,applyWorkflowConfig:()=>M,buildReleaseNotes:()=>m,buildSummary:()=>_,changelogSyncTask:()=>X,commitMsgHook:()=>Z,conventionalCommitsVscodeExtensions:()=>U,conventionalCommitsVscodeSettings:()=>W,defaultWorkflows:()=>N,deriveBump:()=>r,deriveCustomBump:()=>x,discoverVersionPackages:()=>S,formatBody:()=>a,groupItems:()=>o,isBreakingCommit:()=>n,isEnabled:()=>P,main:()=>D,normalizeReleaseVersion:()=>h,parseArgsCli:()=>t,parseCcSubject:()=>s,parseExistingChangelog:()=>f,planVersions:()=>C,readCommits:()=>i,readPackageVersion:()=>w,readProjectGraph:()=>y,reformatChangelogContent:()=>p,relatedWorkspacePaths:()=>b,releaseNotesFromGit:()=>g,renderChangelogEntry:()=>d,renderCommitRef:()=>v,renderCommitlintConfig:()=>G,renderCustomWorkflow:()=>F,renderGroups:()=>c,renderWorkflow:()=>I,renderWorkflows:()=>L,resolveVersioning:()=>T,resolveWorkflowId:()=>z,resolveWorkflowTarget:()=>B,ruleTitle:()=>l,runChangelog:()=>O,runWorkflows:()=>V,splitInlineDescription:()=>u,workflowFilePath:()=>R,workflowFilePaths:()=>Q,workflowFilenames:()=>$,workflowTargets:()=>H,writePackageVersion:()=>E});export{K as COMMITLINT_HEADER,q as COMMIT_MSG_HOOK,k as DEFAULT_WORKFLOW_DIR,A as DEFAULT_WORKFLOW_TOKENS,J as HOOK_HEADER,j as WORKFLOW_FILENAMES,Y as WORKFLOW_HEADER,M as applyWorkflowConfig,m as buildReleaseNotes,_ as buildSummary,X as changelogSyncTask,Z as commitMsgHook,U as conventionalCommitsVscodeExtensions,W as conventionalCommitsVscodeSettings,N as defaultWorkflows,r as deriveBump,x as deriveCustomBump,S as discoverVersionPackages,a as formatBody,o as groupItems,n as isBreakingCommit,P as isEnabled,D as main,h as normalizeReleaseVersion,t as parseArgsCli,s as parseCcSubject,f as parseExistingChangelog,C as planVersions,i as readCommits,w as readPackageVersion,y as readProjectGraph,p as reformatChangelogContent,b as relatedWorkspacePaths,g as releaseNotesFromGit,d as renderChangelogEntry,v as renderCommitRef,G as renderCommitlintConfig,F as renderCustomWorkflow,c as renderGroups,I as renderWorkflow,L as renderWorkflows,T as resolveVersioning,z as resolveWorkflowId,B as resolveWorkflowTarget,l as ruleTitle,O as runChangelog,V as runWorkflows,u as splitInlineDescription,ee as src_exports,R as workflowFilePath,Q as workflowFilePaths,$ as workflowFilenames,H as workflowTargets,E as writePackageVersion};
@@ -3,6 +3,7 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { ChangelogConfig } from "../../shared/src/config-types.js";
4
4
  import "../../shared/src/index.js";
5
5
  import { parseArgsCli } from "./utils/args.js";
6
+ import { isBreakingCommit } from "./utils/breaking.js";
6
7
  import { formatBody, groupItems, parseCcSubject, renderGroups, ruleTitle, splitInlineDescription } from "./utils/format.js";
7
8
  import { deriveBump, readCommits } from "./utils/git.js";
8
9
  import { parseExistingChangelog, reformatChangelogContent } from "./utils/reformat.js";
@@ -1 +1 @@
1
- import{resolve as e}from"node:path";import{fileURLToPath as t}from"node:url";import.meta.url;import{logger as n}from"../../shared/src/logger.js";import{resolveCommitlintEnabled as r}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{parseArgsCli as i}from"./utils/args.js";import{readCommits as a}from"./utils/git.js";import{changelogFiles as o,readRootVersion as s,repoRoot as c,writeVersion as l}from"./utils/repo.js";import{packageChangesForCurrent as u}from"./utils/packages.js";import"./utils/format.js";import{insertNewEntry as d,renderChangelogEntry as f,retagChangelogs as p}from"./utils/version.js";import{formatExistingChangelogs as m,parseExistingChangelog as h,reformatRootChangelog as g}from"./utils/reformat.js";import{buildSummary as _}from"./utils/summary.js";import{deriveCustomBump as v,planVersions as y,resolveVersioning as b,writePackageVersion as x}from"./utils/versioning.js";import{writeChangelogs as S}from"./utils/write.js";import{existsSync as C,readFileSync as w,realpathSync as T,writeFileSync as E}from"node:fs";import{spawnSync as D}from"node:child_process";function O(t=process.argv.slice(2),T){let O=i(t),k=T?.groups;if(O.formatOnly){n.info(`[format-only] Reformatting ${o().length} changelog file(s)${O.dryRun?` (dry run)`:``}.`),m(O.dryRun,O.packageChanges,k);return}let A=s();if(O.version){let e=O.version.trim();if(!/^\d+\.\d+\.\d+$/.test(e))throw Error(`Invalid version: ${e}`);if(e===A){n.info(`Version is already ${e}; nothing to do.`);return}l(e),p(A,e),n.info(`Retagged versions ${A} -> ${e}.`);return}let j=A;if(O.baseVersion){if(!/^\d+\.\d+\.\d+$/.test(O.baseVersion.trim()))throw Error(`Invalid base version: ${O.baseVersion}`);j=O.baseVersion.trim()}let M=O.processingMethod,N=M===`all`,P=M!==`latest`&&M!==`all`?M:O.range,F=a(P),I=b(T),L=I.provider;if(!O.dryRun&&L===`changesets`){if(D(`npx`,[`--yes`,`changeset`,`version`],{cwd:c(),stdio:`inherit`,shell:process.platform===`win32`}).status!==0)throw Error(`changesets provider failed.`);n.info(`Ran the changesets provider; changesets owns the changelog/version output.`);return}let R=v(F,I.bump,I.allowOverBump),z=r(T),B=_(F,{commitlint:z,range:P,...k?{groups:k}:{},...I.commit?{commit:I.commit}:{}});if(L&&typeof L==`object`&&typeof L.run==`function`){let e=L.run({cwd:c(),changelog:T,records:F});typeof e==`string`&&(B=e)}else if(typeof L==`function`){let e=L({cwd:c(),changelog:T,records:F});typeof e==`string`&&(B=e)}let V=y({versioning:I,rootVersion:j,bump:R,range:P,...I.bump?{bumpRules:I.bump}:{},...I.allowOverBump?{allowOverBump:!0}:{}}),H=V.rootVersion;if(O.dryRun){let t=c(),r=e(t,`CHANGELOG.md`),i=C(r)?w(r,`utf8`):``,a=h(i)[0]?.version,o=O.packageChanges&&a?u(a):``,s=f(H,B,/* @__PURE__ */ new Date,!0,o);n.info(`[DRY-RUN] Range: ${P}`),n.info(`[DRY-RUN] Processing method: ${M}${N?` (backward reformat)`:``}`),n.info(`[DRY-RUN] Bump: ${R} (\`${j}\` -> \`${H}\`)`),n.info(`[DRY-RUN] Versioning: ${I.enabled?I.target:`disabled`}`),n.info(`[DRY-RUN] ${F.length} commit(s) scanned. Project files untouched.`),n.info(``),n.info(`Proposed new CHANGELOG.md entry (new version only):`),n.info(``),n.raw(s),n.info(`--- end of proposed entry ---`);let l=N?g(O.packageChanges,k):i,p=d(l,s),m=e(t,`CHANGELOG.proposed.md`);E(m,p,`utf8`),n.info(`Wrote ${m}`)}else{for(let[e,t]of V.writes)x(e,t);S(H,P,F,B,N,O.packageChanges,V.entries,z,k),I.enabled?n.info(`Bumped ${j} -> ${H} (${R}) from ${F.length} commit(s).`):n.info(`Wrote changelogs for ${H} (${R}) from ${F.length} commit(s); versioning disabled.`)}}const k=O,A=t(import.meta.url);process.argv[1]&&/[\\/]run\.[cm]?[jt]s$/.test(A)&&j(process.argv[1])===A&&O();function j(e){try{return T(e)}catch{return e}}export{k as main,O as runChangelog};
1
+ import{resolve as e}from"node:path";import{fileURLToPath as t}from"node:url";import.meta.url;import{logger as n}from"../../shared/src/logger.js";import{resolveCommitlintEnabled as r}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{parseArgsCli as i}from"./utils/args.js";import"./utils/breaking.js";import{readCommits as a}from"./utils/git.js";import{changelogFiles as o,readRootVersion as s,repoRoot as c,writeVersion as l}from"./utils/repo.js";import{packageChangesForCurrent as u}from"./utils/packages.js";import"./utils/format.js";import{insertNewEntry as d,renderChangelogEntry as f,retagChangelogs as p}from"./utils/version.js";import{formatExistingChangelogs as m,parseExistingChangelog as h,reformatRootChangelog as g}from"./utils/reformat.js";import{releaseNotesFromGit as _}from"./utils/release-notes.js";import{buildSummary as v}from"./utils/summary.js";import{deriveCustomBump as y,planVersions as b,resolveVersioning as x,writePackageVersion as S}from"./utils/versioning.js";import{writeChangelogs as C}from"./utils/write.js";import{existsSync as w,readFileSync as T,realpathSync as E,writeFileSync as D}from"node:fs";import{spawnSync as O}from"node:child_process";function k(t=process.argv.slice(2),E){let k=i(t),A=E?.groups,j=E?.breaking;if(k.releaseNotes){n.raw(_(k.releaseNotes));return}if(k.formatOnly){n.info(`[format-only] Reformatting ${o().length} changelog file(s)${k.dryRun?` (dry run)`:``}.`),m(k.dryRun,k.packageChanges,A,j);return}let M=s();if(k.version){let e=k.version.trim();if(!/^\d+\.\d+\.\d+$/.test(e))throw Error(`Invalid version: ${e}`);if(e===M){n.info(`Version is already ${e}; nothing to do.`);return}l(e),p(M,e),n.info(`Retagged versions ${M} -> ${e}.`);return}let N=M;if(k.baseVersion){if(!/^\d+\.\d+\.\d+$/.test(k.baseVersion.trim()))throw Error(`Invalid base version: ${k.baseVersion}`);N=k.baseVersion.trim()}let P=k.processingMethod,F=P===`all`,I=P!==`latest`&&P!==`all`?P:k.range,L=a(I),R=x(E),z=R.provider;if(!k.dryRun&&z===`changesets`){if(O(`npx`,[`--yes`,`changeset`,`version`],{cwd:c(),stdio:`inherit`,shell:process.platform===`win32`}).status!==0)throw Error(`changesets provider failed.`);n.info(`Ran the changesets provider; changesets owns the changelog/version output.`);return}let B=y(L,R.bump,R.allowOverBump,{env:process.env,logger:n,...j===void 0?{}:{breaking:j}}),V=r(E),H=v(L,{commitlint:V,range:I,...A?{groups:A}:{},...j===void 0?{}:{breaking:j},...R.commit?{commit:R.commit}:{}});if(z&&typeof z==`object`&&typeof z.run==`function`){let e=z.run({cwd:c(),changelog:E,records:L});typeof e==`string`&&(H=e)}else if(typeof z==`function`){let e=z({cwd:c(),changelog:E,records:L});typeof e==`string`&&(H=e)}let U=b({versioning:R,rootVersion:N,bump:B,range:I,...R.bump?{bumpRules:R.bump}:{},...R.allowOverBump?{allowOverBump:!0}:{},...j===void 0?{}:{breaking:j}}),W=U.rootVersion;if(k.dryRun){let t=c(),r=e(t,`CHANGELOG.md`),i=w(r)?T(r,`utf8`):``,a=h(i)[0]?.version,o=k.packageChanges&&a?u(a):``,s=f(W,H,/* @__PURE__ */ new Date,!0,o);n.info(`[DRY-RUN] Range: ${I}`),n.info(`[DRY-RUN] Processing method: ${P}${F?` (backward reformat)`:``}`),n.info(`[DRY-RUN] Bump: ${B} (\`${N}\` -> \`${W}\`)`),n.info(`[DRY-RUN] Versioning: ${R.enabled?R.target:`disabled`}`),n.info(`[DRY-RUN] ${L.length} commit(s) scanned. Project files untouched.`),n.info(``),n.info(`Proposed new CHANGELOG.md entry (new version only):`),n.info(``),n.raw(s),n.info(`--- end of proposed entry ---`);let l=F?g(k.packageChanges,A,j):i,p=d(l,s),m=e(t,`CHANGELOG.proposed.md`);D(m,p,`utf8`),n.info(`Wrote ${m}`)}else{for(let[e,t]of U.writes)S(e,t);C(W,I,L,H,F,k.packageChanges,U.entries,V,A,j),R.enabled?n.info(`Bumped ${N} -> ${W} (${B}) from ${L.length} commit(s).`):n.info(`Wrote changelogs for ${W} (${B}) from ${L.length} commit(s); versioning disabled.`)}}const A=k,j=t(import.meta.url);process.argv[1]&&/[\\/]run\.[cm]?[jt]s$/.test(j)&&M(process.argv[1])===j&&k();function M(e){try{return E(e)}catch{return e}}export{A as main,k as runChangelog};
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{parseArgs as e}from"node:util";function t(t){let{values:n,positionals:r}=e({args:t,allowPositionals:!0,options:{range:{type:`string`},"dry-run":{type:`boolean`,default:!1},version:{type:`string`},"base-version":{type:`string`},"processing-method":{type:`string`},"format-only":{type:`boolean`,default:!1},"no-package-changes-section":{type:`boolean`,default:!1}}}),i=n[`processing-method`]?.trim()||process.env.CHANGELOG_PROCESSING_METHOD?.trim()||`latest`;return{range:n.range??r[0]??`HEAD`,dryRun:n[`dry-run`]??!1,version:n.version,baseVersion:n[`base-version`],processingMethod:i,formatOnly:n[`format-only`]??!1,packageChanges:!(n[`no-package-changes-section`]??!1)}}export{t as parseArgsCli};
1
+ import"node:path";import"node:url";import.meta.url;import{parseArgs as e}from"node:util";function t(t){let{values:n,positionals:r}=e({args:t,allowPositionals:!0,options:{range:{type:`string`},"dry-run":{type:`boolean`,default:!1},version:{type:`string`},"base-version":{type:`string`},"release-notes":{type:`string`},"processing-method":{type:`string`},"format-only":{type:`boolean`,default:!1},"no-package-changes-section":{type:`boolean`,default:!1}}}),i=n[`processing-method`]?.trim()||process.env.CHANGELOG_PROCESSING_METHOD?.trim()||`latest`;return{range:n.range??r[0]??`HEAD`,dryRun:n[`dry-run`]??!1,version:n.version,baseVersion:n[`base-version`],releaseNotes:n[`release-notes`],processingMethod:i,formatOnly:n[`format-only`]??!1,packageChanges:!(n[`no-package-changes-section`]??!1)}}export{t as parseArgsCli};
@@ -0,0 +1,16 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingSetting } from "../../../shared/src/changelog-breaking.js";
4
+ import "../../../shared/src/index.js";
5
+ //#region packages/changelog/src/utils/breaking.d.ts
6
+ /** The commit fields breaking detection needs. */
7
+ export interface BreakingCommit {
8
+ subject: string;
9
+ body: string;
10
+ }
11
+ /**
12
+ * Whether a commit is breaking, using the Conventional-Commits rules by default.
13
+ * The `setting` lets a changelog config override the detection strategy.
14
+ */
15
+ export declare function isBreakingCommit(commit: BreakingCommit, setting?: ChangelogBreakingSetting): boolean;
16
+ //#endregion
@@ -0,0 +1 @@
1
+ import"node:path";import"node:url";import.meta.url;const e=/^[a-zA-Z][a-zA-Z0-9]*(\([^)]*\))?!:/,t=/^BREAKING[ -]CHANGE:/m,n=/BREAKING[ -]CHANGE/i;function r(r,i){if(i===!1)return!1;if(i===void 0||i===!0||i===`conventional`)return e.test(r.subject)||t.test(r.body);if(i===`any`)return n.test(`${r.subject}\n${r.body}`);if(typeof i==`function`)return!!i({subject:r.subject,body:r.body});if(i&&typeof i==`object`){let e=`${r.subject}\n${r.body}`;if(typeof i.pattern==`string`)try{return new RegExp(i.pattern,`m`).test(e)}catch{return!1}if(typeof i.match==`string`)return e.includes(i.match)}return!1}export{r as isBreakingCommit};
@@ -1,4 +1,4 @@
1
- import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import{sanitizeText as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{readFileSync as n,writeFileSync as r}from"node:fs";const i={feat:`New features`,fix:`Bug fixes`,refactor:`Refactors`,docs:`Documentation`,style:`Styles`,chore:`Chores`,test:`Tests`,perf:`Performance`,build:`Build system`,ci:`CI`,revert:`Reverts`,breaking:`Breaking changes`},a=[`breaking`,`feat`,`fix`,`perf`,`refactor`,`docs`,`style`,`test`,`build`,`ci`,`chore`,`revert`];function o(e){return i[e]??i[e.toLowerCase()]??`Other changes`}function s(e){let t=/^([a-zA-Z][a-zA-Z0-9]*)(\(([^)]*)\))?(!)?:\s*(.*)$/.exec(e);return t?{type:t[1].toLowerCase(),scope:t[3]?.trim()||void 0,breaking:!!t[4],rest:t[5]??``}:{type:`chore`,breaking:!1,rest:e}}function c(e,t){if(typeof e==`function`){let n=e(t);return typeof n==`function`?void 0:n}return e}function l(e){if(!e)return[];if(Array.isArray(e)){let t=[];for(let[n,r]of e.entries())typeof r==`string`?t.push({type:r.toLowerCase(),index:n}):r&&typeof r==`object`&&r.type&&t.push({type:r.type.toLowerCase(),...r.title===void 0?{}:{title:r.title},...r.order===void 0?{}:{order:r.order},...r.hidden===void 0?{}:{hidden:r.hidden},index:n});return t}if(typeof e!=`object`)return[];let t=[];for(let[n,[r,i]]of Object.entries(e).entries()){let e=i===!1?{hidden:!0}:i===!0||i==null?{}:typeof i==`string`?{title:i}:i;t.push({type:r.toLowerCase(),...e.title===void 0?{}:{title:e.title},...e.order===void 0?{}:{order:e.order},...e.hidden===void 0?{}:{hidden:e.hidden},index:n})}return t}function u(e,t){if(typeof e==`function`){let n=e(t);return typeof n==`string`&&n.length>0?n:t.defaultTitle}return e??t.defaultTitle}function d(e,t,n){let r=typeof e==`function`?e(n):e;return typeof r==`number`&&Number.isFinite(r)?r:t}function f(e,t){return typeof e==`function`?!!e(t):e===!0}function p(e){let t=a.indexOf(e);return t===-1?a.length:t}function m(e,t){let n=/* @__PURE__ */ new Map;for(let t of e){let{parsed:e}=t,r=n.get(e.type)??{title:o(e.type),ungrouped:[],scopes:/* @__PURE__ */ new Map};if(e.scope){let n=r.scopes.get(e.scope)??[];n.push(t),r.scopes.set(e.scope,n)}else r.ungrouped.push(t);n.set(e.type,r)}let r=[...n.keys()],i={types:r,items:e},a=l(c(t,i)),s=[],m=/* @__PURE__ */ new Set,h=-1;for(let e of a){if(m.has(e.type))continue;let t=n.get(e.type);if(!t)continue;m.add(e.type);let r=[...t.ungrouped,...[...t.scopes.values()].flat()],a={...i,type:e.type,defaultTitle:o(e.type),index:e.index,groupItems:r},c=d(e.order,e.index,a);h=Math.max(h,c),!f(e.hidden,a)&&s.push({rule:{...t,title:u(e.title,a)},order:c,seq:e.index})}let g=r.filter(e=>!m.has(e)).sort((e,t)=>p(e)-p(t));for(let[e,t]of g.entries()){let r=n.get(t);s.push({rule:r,order:h+1+p(t),seq:a.length+e})}return s.sort((e,t)=>e.order-t.order||e.seq-t.seq).map(e=>e.rule)}function h(e){if(e.length===0)return`- No description provided.`;let t=[];for(let n of e){t.push(`### ${n.title}`);for(let e of n.ungrouped)t.push(e.text),t.push(...g(e.bodyParagraphs));for(let[e,r]of n.scopes){t.push(`#### ${_(e)}`);for(let e of r)t.push(e.text),t.push(...g(e.bodyParagraphs))}}return t.join(`
1
+ import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import{sanitizeText as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{readFileSync as n,writeFileSync as r}from"node:fs";const i={feat:`New features`,fix:`Bug fixes`,refactor:`Refactors`,docs:`Documentation`,style:`Styles`,chore:`Chores`,test:`Tests`,perf:`Performance`,build:`Build system`,ci:`CI`,revert:`Reverts`,breaking:`Breaking Changes`},a=[`breaking`,`feat`,`fix`,`perf`,`refactor`,`docs`,`style`,`test`,`build`,`ci`,`chore`,`revert`];function o(e){return i[e]??i[e.toLowerCase()]??`Other changes`}function s(e){let t=/^([a-zA-Z][a-zA-Z0-9]*)(\(([^)]*)\))?(!)?:\s*(.*)$/.exec(e);return t?{type:t[1].toLowerCase(),scope:t[3]?.trim()||void 0,breaking:!!t[4],rest:t[5]??``}:{type:`chore`,breaking:!1,rest:e}}function c(e,t){if(typeof e==`function`){let n=e(t);return typeof n==`function`?void 0:n}return e}function l(e){if(!e)return[];if(Array.isArray(e)){let t=[];for(let[n,r]of e.entries())typeof r==`string`?t.push({type:r.toLowerCase(),index:n}):r&&typeof r==`object`&&r.type&&t.push({type:r.type.toLowerCase(),...r.title===void 0?{}:{title:r.title},...r.order===void 0?{}:{order:r.order},...r.hidden===void 0?{}:{hidden:r.hidden},index:n});return t}if(typeof e!=`object`)return[];let t=[];for(let[n,[r,i]]of Object.entries(e).entries()){let e=i===!1?{hidden:!0}:i===!0||i==null?{}:typeof i==`string`?{title:i}:i;t.push({type:r.toLowerCase(),...e.title===void 0?{}:{title:e.title},...e.order===void 0?{}:{order:e.order},...e.hidden===void 0?{}:{hidden:e.hidden},index:n})}return t}function u(e,t){if(typeof e==`function`){let n=e(t);return typeof n==`string`&&n.length>0?n:t.defaultTitle}return e??t.defaultTitle}function d(e,t,n){let r=typeof e==`function`?e(n):e;return typeof r==`number`&&Number.isFinite(r)?r:t}function f(e,t){return typeof e==`function`?!!e(t):e===!0}function p(e){let t=a.indexOf(e);return t===-1?a.length:t}function m(e,t){let n=/* @__PURE__ */ new Map;for(let t of e){let{parsed:e}=t,r=t.breaking||e.breaking?`breaking`:e.type,i=n.get(r)??{title:o(r),ungrouped:[],scopes:/* @__PURE__ */ new Map};if(e.scope){let n=i.scopes.get(e.scope)??[];n.push(t),i.scopes.set(e.scope,n)}else i.ungrouped.push(t);n.set(r,i)}let r=[...n.keys()],i={types:r,items:e},a=l(c(t,i)),s=[],m=/* @__PURE__ */ new Set,h=-1;for(let e of a){if(m.has(e.type))continue;let t=n.get(e.type);if(!t)continue;m.add(e.type);let r=[...t.ungrouped,...[...t.scopes.values()].flat()],a={...i,type:e.type,defaultTitle:o(e.type),index:e.index,groupItems:r},c=d(e.order,e.index,a);h=Math.max(h,c),!f(e.hidden,a)&&s.push({rule:{...t,title:u(e.title,a)},order:c,seq:e.index})}let g=r.filter(e=>!m.has(e)).sort((e,t)=>p(e)-p(t));for(let[e,t]of g.entries()){let r=n.get(t);s.push({rule:r,order:h+1+p(t),seq:a.length+e})}return s.sort((e,t)=>e.order-t.order||e.seq-t.seq).map(e=>e.rule)}function h(e){if(e.length===0)return`- No description provided.`;let t=[];for(let n of e){t.push(`### ${n.title}`);for(let e of n.ungrouped)t.push(e.text),t.push(...g(e.bodyParagraphs));for(let[e,r]of n.scopes){t.push(`#### ${_(e)}`);for(let e of r)t.push(e.text),t.push(...g(e.bodyParagraphs))}}return t.join(`
2
2
  `)}function g(e){let t=[];for(let n of e){let[e,...r]=n;e&&(t.push(` - ${e}`),t.push(...r.map(e=>` ${e}`)))}return t}function _(e){return e.charAt(0).toUpperCase()+e.slice(1)}function v(e){return e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e}function y(e){let t=e.lastIndexOf(`([#`);if(t===-1)return{main:e,inline:``};let n=e.slice(t),r=/^(\(\[#[^\]]+\]\([^)]*\) by [^)]*\)\)?)(?:\(fixes [^)]*\)\)?)?/.exec(n);if(!r)return{main:e,inline:``};let i=r[0]??``;return{main:e.slice(0,t)+i,inline:e.slice(t+i.length).trim()}}function b(e){let n=[],r=[];for(let i of e.split(`
3
3
  `)){let e=t(i.trim());if(!e){r.length>0&&(n.push(r),r=[]);continue}if(e.startsWith(`-`)||e.startsWith(`*`)||/^[0-9]+[.)]/.test(e)||!e.replace(/(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#\d+\s*[,;]?\s*/gi,``).trim())continue;let a=/^(BREAKING CHANGE|Reviewed-by|Signed-off-by|Co-authored-by|Acked-by|Co-developed-by|Helped-by|Reported-by|Suggested-by|Tested-by|Cc):\s+(.+)$/i.exec(e);a&&!/^(http|https)\b/.test(e)?(r.length>0&&(n.push(r),r=[]),n.push([`**${(a[1]??``).trim()}:** ${(a[2]??``).trim()}`])):r.push(e)}return r.length>0&&n.push(r),n}function x(e,t){return`https://github.com/${e}/commit/${t}`}function S(e,t){return`https://github.com/${e}/issues/${t}`}function C(e,t){return e.replace(/\[(#[0-9a-fA-F]{6,40})\]\(([^)]*)\)/g,(e,n)=>{let r=n.replace(`#`,``).slice(0,7);return`[#${r}](${x(t,r)})`}).replace(/(^|[^\w[])#([0-9a-fA-F]{7,40})(?![0-9a-fA-F])(?=[)\].,;:\s]|$)/g,(e,n,r)=>{let i=r.slice(0,7);return`${n}[#${i}](${x(t,i)})`})}function w(e,t){return e.replace(/\[#(\d+)(?=[ \]])(?:[^\]]*)\]\([^)]*\)/g,(e,n)=>`[#${n}](${S(t,n)})`).replace(/(^|[^\w[])#(\d+)(?=[)\].,;:\s]|$)/g,(e,n,r)=>`${n}[#${r}](${S(t,r)})`)}function T(e,t){if(!t)return e;let n=C(e,t);return n=w(n,t),n}function E(t,i){if(!i)return;let a=n(t,`utf8`),o=a.split(`
4
4
  `).map(e=>T(e,i)).join(`
@@ -1,9 +1,11 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingSetting } from "../../../shared/src/changelog-breaking.js";
4
+ import "../../../shared/src/index.js";
3
5
  import { BumpType, CommitRecord } from "./types.js";
4
6
  //#region packages/changelog/src/utils/git.d.ts
5
7
  /** Read the commits in a git range (optionally limited to path(s)), newest first. */
6
8
  export declare function readCommits(range: string, path?: string | string[]): CommitRecord[];
7
9
  /** Derive the semver bump from the commits (major > minor > patch). */
8
- export declare function deriveBump(records: CommitRecord[]): BumpType;
10
+ export declare function deriveBump(records: CommitRecord[], breaking?: ChangelogBreakingSetting): BumpType;
9
11
  //#endregion
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{sanitizeText as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import n from"node:fs";import{execFileSync as r}from"node:child_process";function i(e,n){let i=n===void 0?[]:Array.isArray(n)?n:[n],a=[`log`,`--no-merges`,`--pretty=format:%H%x1f%s%x1f%b%x1f%an%x1f%ae%x1e`,e];return i.length>0&&a.push(`--`,...i),r(`git`,a,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).split(``).filter(e=>e.length>0).map(e=>{let[n,r,i,a,o]=e.split(``);return{hash:n.trim(),subject:t((r??``).trim()),body:t((i??``).trim()),author:(a??``).trim(),authorEmail:(o??``).trim()}}).filter(e=>e.subject.length>0)}function a(e){let t=e.match(/(?:github\.com[/:])([^/]+)\/([^/.]+?)(?:\.git)?$/);if(t?.[1]&&t[2])return`${t[1]}/${t[2]}`}function o(){try{let e=a(r(`git`,[`remote`,`get-url`,`origin`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim());if(e)return e}catch{}try{let t=n.readFileSync(e.join(process.cwd(),`package.json`),`utf8`),r=JSON.parse(t),i=typeof r.repository==`string`?r.repository:r.repository?.url;if(i)return a(i)}catch{}}let s;function c(){if(process.env.DBX_NO_GH)return s=!1,!1;if(s!==void 0)return s;try{r(`gh`,[`auth`,`status`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:2e3}),s=!0}catch{s=!1}return s}const l=/* @__PURE__ */ new Map;function u(e,t,n){if(!c())return;let i=`repos/${e}${t}::${n}`;if(l.has(i))return l.get(i);let a;try{let i=r(`gh`,[`api`,`repos/${e}${t}`,`--jq`,n],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3}).trim();a=i&&i!==`null`?i:void 0}catch{a=void 0}return l.set(i,a),a}function d(e){return/^(\d+)\+([^@]+)@users\.noreply\.github\.com$/.exec(e.trim())?.[2]}function f(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function p(e,t){let n;t&&(n=u(t,`/commits/${e.hash}/pulls`,`.[0].user.login`),n||=u(t,`/commits/${e.hash}`,`.author.login`)),n||=d(e.authorEmail);let r=n??e.author;return f(r)&&(r=d(r)??r.split(`@`)[0]??r),{name:r,url:n?`https://github.com/${n}`:void 0}}function m(e){return e.url?`[${e.name}](${e.url})`:e.name}function h(e){let t=/* @__PURE__ */ new Set;for(let n of e.matchAll(/\b(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#(\d+)/gi)){let e=Number(n[1]);Number.isInteger(e)&&t.add(e)}return[...t]}function g(e,t){let n={number:t},r=u(e,`/issues/${t}`,`[.title,.html_url]`);if(r)try{let e=JSON.parse(r);n.title=e[0]||void 0,n.url=e[1]||void 0}catch{}return n}function _(e,t){let n=h(`${e.subject}\n${e.body}`);return n.length===0?[]:t?n.map(e=>g(t,e)):n.map(e=>({number:e}))}function v(e){return e.length===0?``:` (fixes ${e.map(e=>e.url&&e.title?`[#${e.number} ${e.title}](${e.url})`:e.url?`[#${e.number}](${e.url})`:`#${e.number}`).join(`, `)})`}const y=/* @__PURE__ */ new Map;function b(e,t){let n=`${e}::${t??``}`;if(y.has(n))return y.get(n);let i=e.trim(),a=(i.includes(`..`)?(i.split(`..`)[0]??``).trim():``)||(t?`${t}^`:void 0);if(!a){y.set(n,void 0);return}let o;try{o=r(`git`,[`log`,`--no-merges`,`--format=%ae%x1f%an%x1e`,a],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],maxBuffer:134217728})}catch{y.set(n,void 0);return}let s=/* @__PURE__ */ new Set;for(let e of o.split(``)){if(!e.trim())continue;let[t=``,n=``]=e.split(``);for(let e of[t,n]){let t=e.trim().toLowerCase();t&&s.add(t)}}return y.set(n,s),s}function x(e){return/\[(#[0-9a-fA-F]{6,40})\]\([^)]*\)/.exec(e)?.[1]?.replace(`#`,``)}function S(e){try{return r(`git`,[`log`,`-1`,`--format=%aI`,e],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return}}function C(e){for(let t of[`v${e}`,e])try{let e=r(`git`,[`log`,`-1`,`--format=%aI`,t],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim();if(e)return e}catch{}}function w(e,t){let n=C(e);if(n)return new Date(n);for(let e of t){let t=x(e);if(t){let e=S(t);if(e)return new Date(e)}}}let T;function E(){if(T)return T;let e=/* @__PURE__ */ new Map;try{let t=r(`git`,[`log`,`--no-merges`,`--all`,`--format=%H%x1f%s%x1f%b%x1e`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],maxBuffer:134217728});for(let n of t.split(``)){if(!n.trim())continue;let[t=``,r=``,i=``]=n.split(``);if(!t)continue;let a={subject:r.trim(),body:i.trim()};e.set(t.trim(),a),e.set(t.trim().slice(0,7),a)}}catch{}return T=e,e}function D(e){return E().get(e)}function O(e){let t=`patch`;for(let n of e){let e=`${n.subject}\n${n.body}`;/\bBREAKING CHANGE\b/.test(e)||/^[a-zA-Z]+(\([^)]*\))?!:/.test(n.subject)?t=`major`:t!==`major`&&/^feat(\([^)]*\))?:/i.test(n.subject)&&(t=`minor`)}return t}export{x as bulletHash,O as deriveBump,w as deriveVersionDate,D as readCommit,i as readCommits,b as readPriorAuthors,_ as recordIssues,m as renderAuthor,v as renderIssues,o as repoSlug,p as resolveAuthorInfo};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{sanitizeText as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{isBreakingCommit as n}from"./breaking.js";import r from"node:fs";import{execFileSync as i}from"node:child_process";function a(e,n){let r=n===void 0?[]:Array.isArray(n)?n:[n],a=[`log`,`--no-merges`,`--pretty=format:%H%x1f%s%x1f%b%x1f%an%x1f%ae%x1e`,e];return r.length>0&&a.push(`--`,...r),i(`git`,a,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).split(``).filter(e=>e.length>0).map(e=>{let[n,r,i,a,o]=e.split(``);return{hash:n.trim(),subject:t((r??``).trim()),body:t((i??``).trim()),author:(a??``).trim(),authorEmail:(o??``).trim()}}).filter(e=>e.subject.length>0)}function o(e){let t=e.match(/(?:github\.com[/:])([^/]+)\/([^/.]+?)(?:\.git)?$/);if(t?.[1]&&t[2])return`${t[1]}/${t[2]}`}function s(){try{let e=o(i(`git`,[`remote`,`get-url`,`origin`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim());if(e)return e}catch{}try{let t=r.readFileSync(e.join(process.cwd(),`package.json`),`utf8`),n=JSON.parse(t),i=typeof n.repository==`string`?n.repository:n.repository?.url;if(i)return o(i)}catch{}}let c;function l(){if(process.env.DBX_NO_GH)return c=!1,!1;if(c!==void 0)return c;try{i(`gh`,[`auth`,`status`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:2e3}),c=!0}catch{c=!1}return c}const u=/* @__PURE__ */ new Map;function d(e,t,n){if(!l())return;let r=`repos/${e}${t}::${n}`;if(u.has(r))return u.get(r);let a;try{let r=i(`gh`,[`api`,`repos/${e}${t}`,`--jq`,n],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3}).trim();a=r&&r!==`null`?r:void 0}catch{a=void 0}return u.set(r,a),a}function f(e){return/^(\d+)\+([^@]+)@users\.noreply\.github\.com$/.exec(e.trim())?.[2]}function p(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function m(e,t){let n;t&&(n=d(t,`/commits/${e.hash}/pulls`,`.[0].user.login`),n||=d(t,`/commits/${e.hash}`,`.author.login`)),n||=f(e.authorEmail);let r=n??e.author;return p(r)&&(r=f(r)??r.split(`@`)[0]??r),{name:r,url:n?`https://github.com/${n}`:void 0}}function h(e){return e.url?`[${e.name}](${e.url})`:e.name}function g(e){let t=/* @__PURE__ */ new Set;for(let n of e.matchAll(/\b(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#(\d+)/gi)){let e=Number(n[1]);Number.isInteger(e)&&t.add(e)}return[...t]}function _(e,t){let n={number:t},r=d(e,`/issues/${t}`,`[.title,.html_url]`);if(r)try{let e=JSON.parse(r);n.title=e[0]||void 0,n.url=e[1]||void 0}catch{}return n}function v(e,t){let n=g(`${e.subject}\n${e.body}`);return n.length===0?[]:t?n.map(e=>_(t,e)):n.map(e=>({number:e}))}function y(e){return e.length===0?``:` (fixes ${e.map(e=>e.url&&e.title?`[#${e.number} ${e.title}](${e.url})`:e.url?`[#${e.number}](${e.url})`:`#${e.number}`).join(`, `)})`}const b=/* @__PURE__ */ new Map;function x(e,t){let n=`${e}::${t??``}`;if(b.has(n))return b.get(n);let r=e.trim(),a=(r.includes(`..`)?(r.split(`..`)[0]??``).trim():``)||(t?`${t}^`:void 0);if(!a){b.set(n,void 0);return}let o;try{o=i(`git`,[`log`,`--no-merges`,`--format=%ae%x1f%an%x1e`,a],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],maxBuffer:134217728})}catch{b.set(n,void 0);return}let s=/* @__PURE__ */ new Set;for(let e of o.split(``)){if(!e.trim())continue;let[t=``,n=``]=e.split(``);for(let e of[t,n]){let t=e.trim().toLowerCase();t&&s.add(t)}}return b.set(n,s),s}function S(e){return/\[(#[0-9a-fA-F]{6,40})\]\([^)]*\)/.exec(e)?.[1]?.replace(`#`,``)}function C(e){try{return i(`git`,[`log`,`-1`,`--format=%aI`,e],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return}}function w(e){for(let t of[`v${e}`,e])try{let e=i(`git`,[`log`,`-1`,`--format=%aI`,t],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim();if(e)return e}catch{}}function T(e,t){let n=w(e);if(n)return new Date(n);for(let e of t){let t=S(e);if(t){let e=C(t);if(e)return new Date(e)}}}let E;function D(){if(E)return E;let e=/* @__PURE__ */ new Map;try{let t=i(`git`,[`log`,`--no-merges`,`--all`,`--format=%H%x1f%s%x1f%b%x1e`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],maxBuffer:134217728});for(let n of t.split(``)){if(!n.trim())continue;let[t=``,r=``,i=``]=n.split(``);if(!t)continue;let a={subject:r.trim(),body:i.trim()};e.set(t.trim(),a),e.set(t.trim().slice(0,7),a)}}catch{}return E=e,e}function O(e){return D().get(e)}function k(e,t){let r=`patch`;for(let i of e)n(i,t)?r=`major`:r!==`major`&&/^feat(\([^)]*\))?:/i.test(i.subject)&&(r=`minor`);return r}export{S as bulletHash,k as deriveBump,T as deriveVersionDate,O as readCommit,a as readCommits,x as readPriorAuthors,v as recordIssues,h as renderAuthor,y as renderIssues,s as repoSlug,m as resolveAuthorInfo};
@@ -1,10 +1,12 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingSetting } from "../../../shared/src/changelog-breaking.js";
3
4
  import { ChangelogGroupsSetting } from "../../../shared/src/changelog-groups.js";
5
+ import "../../../shared/src/index.js";
4
6
  import { ExistingEntry } from "./types.js";
5
7
  //#region packages/changelog/src/utils/reformat.d.ts
6
8
  /** Split a changelog into `## <version>` sections with their bullet lines. */
7
9
  export declare function parseExistingChangelog(content: string): ExistingEntry[];
8
10
  /** Backward-reformat an entire changelog file's content (all versions). */
9
- export declare function reformatChangelogContent(content: string, repo: string | undefined, markersOnNewest?: boolean, includePackageChanges?: boolean, groups?: ChangelogGroupsSetting): string;
11
+ export declare function reformatChangelogContent(content: string, repo: string | undefined, markersOnNewest?: boolean, includePackageChanges?: boolean, groups?: ChangelogGroupsSetting, breaking?: ChangelogBreakingSetting): string;
10
12
  //#endregion
@@ -1,6 +1,6 @@
1
- import{resolve as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{bulletHash as n,deriveVersionDate as r,readCommit as i,repoSlug as a}from"./git.js";import{changelogFiles as o,repoRoot as s}from"./repo.js";import{packageChangesForVersion as c}from"./packages.js";import{capitalize as l,formatBody as u,formatLine as d,groupItems as f,parseCcSubject as p,renderGroups as m}from"./format.js";import{renderChangelogEntry as h}from"./version.js";import{existsSync as g,readFileSync as _,writeFileSync as v}from"node:fs";function y(e){let t=[],n;for(let r of e.split(`
2
- `)){let e=/^##\s+([0-9]+\.[0-9]+\.[0-9]+)(?:\s*\(.*\))?\s*$/.exec(r);e?(n={version:e[1],bullets:[]},t.push(n)):n&&(r.includes(`<!-- release:`)||r.startsWith(`- `)&&n.bullets.push(r))}return t}function b(e){let t=e.lastIndexOf(`([#`);if(t===-1)return``;let n=e.slice(t);return/^(\(\[#[^\]]+\]\([^)]*\) by [^)]*\)\)?)(?:\(fixes [^)]*\)\)?)?/.exec(n)?.[0]??``}function x(e,t,a=!1,o=``,s){let c=[];for(let r of e.bullets){let e=r.replace(/^-\s+/,``),a=n(r),o=a?i(a):void 0,s=o?.subject??e.replace(/\*\*/g,``),f=p(s),m=b(e),h=`- ${[d(l(f.rest),t),m].filter(Boolean).join(` `)}`,g=o?u(o.body):[];c.push({parsed:f,text:h,bodyParagraphs:g})}let g=r(e.version,e.bullets);return h(e.version,m(f(c,s)),g,a,o)}function S(e,t,n=!1,r=!1,i){let a=y(e);if(a.length===0)return e;let o=e.split(`
3
- `)[0]??`# Changelog`;return`${o.startsWith(`# `)?o:`# Changelog`}\n\n${a.map((e,o)=>{let s=a[o+1],l=r&&s?c(e.version,s.version):``;return x(e,t,n&&o===0,l,i)}).filter(Boolean).join(`
1
+ import{resolve as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{isBreakingCommit as n}from"./breaking.js";import{bulletHash as r,deriveVersionDate as i,readCommit as a,repoSlug as o}from"./git.js";import{changelogFiles as s,repoRoot as c}from"./repo.js";import{packageChangesForVersion as l}from"./packages.js";import{capitalize as u,formatBody as d,formatLine as f,groupItems as p,parseCcSubject as m,renderGroups as h}from"./format.js";import{renderChangelogEntry as g}from"./version.js";import{existsSync as _,readFileSync as v,writeFileSync as y}from"node:fs";function b(e){let t=[],n;for(let r of e.split(`
2
+ `)){let e=/^##\s+([0-9]+\.[0-9]+\.[0-9]+)(?:\s*\(.*\))?\s*$/.exec(r);e?(n={version:e[1],bullets:[]},t.push(n)):n&&(r.includes(`<!-- release:`)||r.startsWith(`- `)&&n.bullets.push(r))}return t}function x(e){let t=e.lastIndexOf(`([#`);if(t===-1)return``;let n=e.slice(t);return/^(\(\[#[^\]]+\]\([^)]*\) by [^)]*\)\)?)(?:\(fixes [^)]*\)\)?)?/.exec(n)?.[0]??``}function S(e,t,o=!1,s=``,c,l){let _=[];for(let i of e.bullets){let e=i.replace(/^-\s+/,``),o=r(i),s=o?a(o):void 0,c=s?.subject??e.replace(/\*\*/g,``),p=m(c),h=x(e),g=`- ${[f(u(p.rest),t),h].filter(Boolean).join(` `)}`,v=s?d(s.body):[],y=n({subject:c,body:s?.body??``},l);_.push({parsed:p,breaking:y,text:g,bodyParagraphs:v})}let v=i(e.version,e.bullets);return g(e.version,h(p(_,c)),v,o,s)}function C(e,t,n=!1,r=!1,i,a){let o=b(e);if(o.length===0)return e;let s=e.split(`
3
+ `)[0]??`# Changelog`;return`${s.startsWith(`# `)?s:`# Changelog`}\n\n${o.map((e,s)=>{let c=o[s+1],u=r&&c?l(e.version,c.version):``;return S(e,t,n&&s===0,u,i,a)}).filter(Boolean).join(`
4
4
 
5
5
 
6
- `)}\n`}function C(t=!1,n){let r=s(),i=e(r,`CHANGELOG.md`);return g(i)?S(_(i,`utf8`),a(),!1,t,n):``}function w(n,r=!1,i){let c=e(s(),`CHANGELOG.md`);for(let e of o()){let o=S(_(e,`utf8`),a(),!0,r&&e===c,i);if(n){let n=e.replace(/CHANGELOG\.md$/,`CHANGELOG.proposed.md`);v(n,o,`utf8`),t.info(`[DRY-RUN] Wrote ${n}`)}else v(e,o,`utf8`),t.info(` formatted ${e}`)}}export{w as formatExistingChangelogs,y as parseExistingChangelog,S as reformatChangelogContent,C as reformatRootChangelog};
6
+ `)}\n`}function w(t=!1,n,r){let i=c(),a=e(i,`CHANGELOG.md`);return _(a)?C(v(a,`utf8`),o(),!1,t,n,r):``}function T(n,r=!1,i,a){let l=e(c(),`CHANGELOG.md`);for(let e of s()){let s=C(v(e,`utf8`),o(),!0,r&&e===l,i,a);if(n){let n=e.replace(/CHANGELOG\.md$/,`CHANGELOG.proposed.md`);y(n,s,`utf8`),t.info(`[DRY-RUN] Wrote ${n}`)}else y(e,s,`utf8`),t.info(` formatted ${e}`)}}export{T as formatExistingChangelogs,b as parseExistingChangelog,C as reformatChangelogContent,w as reformatRootChangelog};
@@ -0,0 +1,18 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ //#region packages/changelog/src/utils/release-notes.d.ts
4
+ /** Normalize a tag to its semver version (`v1.2.3`, `@scope/pkg@1.2.3` -> `1.2.3`). */
5
+ export declare function normalizeReleaseVersion(tag: string): string | undefined;
6
+ /**
7
+ * Build the release body from a changelog and its candidate tag versions.
8
+ *
9
+ * - Finds the newest tag version that exists in the changelog (excluding the
10
+ * version being released) and returns everything above it.
11
+ * - If there is no prior released version (first release), returns only the
12
+ * newest changelog entry instead of the entire file.
13
+ * - Returns '' when the changelog has no version headings.
14
+ */
15
+ export declare function buildReleaseNotes(changelog: string, tagVersions: string[], currentVersion?: string): string;
16
+ /** Read the release body from the repo's changelog + tags (with a first-release guard). */
17
+ export declare function releaseNotesFromGit(currentVersion: string, cwd?: string): string;
18
+ //#endregion
@@ -0,0 +1 @@
1
+ import{resolve as e}from"node:path";import"node:url";import.meta.url;import{repoRoot as t}from"./repo.js";import{existsSync as n,readFileSync as r}from"node:fs";import{spawnSync as i}from"node:child_process";function a(e){return/(?:^|@)v?(\d+\.\d+\.\d+)$/.exec(e.trim())?.[1]}function o(e){let t=[];for(let n of e.matchAll(/^##\s+(\d+\.\d+\.\d+)(?:\s|$)/gm))n.index!==void 0&&t.push({version:n[1],index:n.index});return t}function s(e,t,n){let r=o(e);if(r.length===0)return``;let i=r[0].index,s=new Set(t.map(a).filter(e=>e!==void 0)),c=r.find(e=>e.version!==n&&s.has(e.version)),l=c?c.index:r[1]?.index??e.length;return l<=i?``:e.slice(i,l).trimEnd()}function c(a,o=t()){let c=e(o,`CHANGELOG.md`),l=``;if(n(c))try{l=r(c,`utf8`).replace(/^\uFEFF/,``)}catch{l=``}let u=(i(`git`,[`tag`,`--merged`,`HEAD`,`--sort=-v:refname`],{cwd:o,encoding:`utf8`}).stdout??``).split(/\r?\n/).filter(Boolean);return s(l,u,a)||`Release ${a}`}export{s as buildReleaseNotes,a as normalizeReleaseVersion,c as releaseNotesFromGit};
@@ -1,6 +1,8 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingSetting } from "../../../shared/src/changelog-breaking.js";
3
4
  import { ChangelogGroupsSetting } from "../../../shared/src/changelog-groups.js";
5
+ import "../../../shared/src/index.js";
4
6
  import { CommitFormatOptions, CommitRecord } from "./types.js";
5
7
  //#region packages/changelog/src/utils/summary.d.ts
6
8
  /**
@@ -31,6 +33,8 @@ export interface BuildSummaryOptions {
31
33
  commit?: CommitFormatOptions;
32
34
  /** Conventional-Commits group order/titles/hiding. */
33
35
  groups?: ChangelogGroupsSetting;
36
+ /** How breaking changes are detected (default: Conventional Commits). */
37
+ breaking?: ChangelogBreakingSetting;
34
38
  }
35
39
  /** Render the grouped changelog summary for a set of commits. */
36
40
  export declare function buildSummary(records: CommitRecord[], options?: BuildSummaryOptions): string;
@@ -1,3 +1,3 @@
1
- import"node:path";import"node:url";import.meta.url;import{readPriorAuthors as e,recordIssues as t,renderAuthor as n,renderIssues as r,repoSlug as i,resolveAuthorInfo as a}from"./git.js";import{capitalize as o,formatBody as s,groupItems as c,parseCcSubject as l,renderGroups as u}from"./format.js";function d(e,t){let n=t.slice(0,7);return e?`[#${n}](https://github.com/${e}/commit/${t})`:`#${n}`}const f=[`major`,`minor`,`patch`],p={major:`Major changes`,minor:`Minor changes`,patch:`Patch changes`};function m(e){let t=l(e.subject);return t.breaking||/BREAKING[ -]CHANGE/i.test(e.body)||/^[a-zA-Z][a-zA-Z0-9]*(\([^)]*\))?!:\s/.test(e.subject)?`major`:t.type===`feat`?`minor`:`patch`}function h(e,i,c={}){let u=l(e.subject),f=a(e,i),p=t(e,i),m;if(c.format)m=`- ${c.format({commit:e,repo:i,author:f,issues:p,options:c})}`;else{let t=[];if(c.commitSha!==!1&&t.push(d(i,e.hash)),c.author!==!1){let e=c.authorAvatar&&f.url?`![${f.name}](${f.url}) `:``;t.push(`by ${e}${n(f)}`)}let a=t.length>0?` (${t.join(` `)})`:``,s=c.issues===!1?``:r(p);m=`- ${o(u.rest)}${a}${s}`}return{parsed:u,text:m,bodyParagraphs:c.body===!1?[]:s(e.body)}}function g(e){let t=[e.text];for(let n of e.bodyParagraphs){let[e,...r]=n;e&&(t.push(` - ${e}`),t.push(...r.map(e=>` ${e}`)))}return t}function _(e,t){let n=i(),r=/* @__PURE__ */ new Map;for(let i of e){let e=m(i),a=r.get(e)??[];a.push(h(i,n,t??{})),r.set(e,a)}if(r.size===0)return`- No description provided.`;let a=[];for(let e of f){let t=r.get(e);if(t&&t.length!==0){a.push(`### ${p[e]}`);for(let e of t)a.push(...g(e))}}return a.join(`
2
- `)}function v(e){return e.trim().toLowerCase()}function y(e){return[e.authorEmail,e.author].map(v).filter(e=>e.length>0)}function b(t,n,r){let i;if(r.priorAuthors!==void 0)i=new Set([...r.priorAuthors].map(v));else if(r.range){let n=t[t.length-1]?.hash;i=e(r.range,n)}if(!i)return[];let o=/* @__PURE__ */ new Map;for(let e of t){let t=y(e);if(t.length===0||t.some(e=>i.has(e)))continue;let r=t[0],s=o.get(r);s?s.commits.push(e):o.set(r,{key:r,author:a(e,n),commits:[e]})}return[...o.values()].sort((e,t)=>e.author.name.localeCompare(t.author.name))}function x(e,t,r){let i=b(e,t,r);if(i.length===0)return``;let a=[`### New contributors`];for(let e of i){a.push(`- ${n(e.author)}`);for(let n of e.commits)a.push(...g(h(n,t,{author:!1,body:!1})).map(e=>` ${e}`))}return a.join(`
3
- `)}function S(e,t={}){let n=i(),r=t.commitlint===!1?_(e,t.commit):u(c(e.map(e=>h(e,n,t.commit??{})),t.groups)),a=x(e,n,t);return a?`${r}\n\n${a}`:r}export{S as buildSummary,d as renderCommitRef};
1
+ import"node:path";import"node:url";import.meta.url;import{isBreakingCommit as e}from"./breaking.js";import{readPriorAuthors as t,recordIssues as n,renderAuthor as r,renderIssues as i,repoSlug as a,resolveAuthorInfo as o}from"./git.js";import{capitalize as s,formatBody as c,groupItems as l,parseCcSubject as u,renderGroups as d}from"./format.js";function f(e,t){let n=t.slice(0,7);return e?`[#${n}](https://github.com/${e}/commit/${t})`:`#${n}`}const p=[`major`,`minor`,`patch`],m={major:`Major changes`,minor:`Minor changes`,patch:`Patch changes`};function h(t,n){let r=u(t.subject);return e(t,n)?`major`:r.type===`feat`?`minor`:`patch`}function g(t,a,l={}){let d=u(t.subject),p=o(t,a),m=n(t,a),h;if(l.format)h=`- ${l.format({commit:t,repo:a,author:p,issues:m,options:l})}`;else{let e=[];if(l.commitSha!==!1&&e.push(f(a,t.hash)),l.author!==!1){let t=l.authorAvatar&&p.url?`![${p.name}](${p.url}) `:``;e.push(`by ${t}${r(p)}`)}let n=e.length>0?` (${e.join(` `)})`:``,o=l.issues===!1?``:i(m);h=`- ${s(d.rest)}${n}${o}`}return{parsed:d,breaking:e(t,l.breaking),text:h,bodyParagraphs:l.body===!1?[]:c(t.body)}}function _(e){let t=[e.text];for(let n of e.bodyParagraphs){let[e,...r]=n;e&&(t.push(` - ${e}`),t.push(...r.map(e=>` ${e}`)))}return t}function v(e,t,n){let r=a(),i=/* @__PURE__ */ new Map;for(let a of e){let e=h(a,n),o=i.get(e)??[];o.push(g(a,r,{...t,breaking:n})),i.set(e,o)}if(i.size===0)return`- No description provided.`;let o=[];for(let e of p){let t=i.get(e);if(t&&t.length!==0){o.push(`### ${m[e]}`);for(let e of t)o.push(..._(e))}}return o.join(`
2
+ `)}function y(e){return e.trim().toLowerCase()}function b(e){return[e.authorEmail,e.author].map(y).filter(e=>e.length>0)}function x(e,n,r){let i;if(r.priorAuthors!==void 0)i=new Set([...r.priorAuthors].map(y));else if(r.range){let n=e[e.length-1]?.hash;i=t(r.range,n)}if(!i)return[];let a=/* @__PURE__ */ new Map;for(let t of e){let e=b(t);if(e.length===0||e.some(e=>i.has(e)))continue;let r=e[0],s=a.get(r);s?s.commits.push(t):a.set(r,{key:r,author:o(t,n),commits:[t]})}return[...a.values()].sort((e,t)=>e.author.name.localeCompare(t.author.name))}function S(e,t,n){let i=x(e,t,n);if(i.length===0)return``;let a=[`### New contributors`];for(let e of i){a.push(`- ${r(e.author)}`);for(let n of e.commits)a.push(..._(g(n,t,{author:!1,body:!1})).map(e=>` ${e}`))}return a.join(`
3
+ `)}function C(e,t={}){let n=a(),r=t.commitlint===!1?v(e,t.commit,t.breaking):d(l(e.map(e=>g(e,n,{...t.commit,...t.breaking===void 0?{}:{breaking:t.breaking}})),t.groups)),i=S(e,n,t);return i?`${r}\n\n${i}`:r}export{C as buildSummary,f as renderCommitRef};
@@ -1,5 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingCommit, ChangelogBreakingSetting } from "../../../shared/src/changelog-breaking.js";
3
4
  import { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting } from "../../../shared/src/changelog-groups.js";
4
5
  import "../../../shared/src/index.js";
5
6
  //#region packages/changelog/src/utils/types.d.ts
@@ -26,6 +27,8 @@ export interface CliOptions {
26
27
  dryRun: boolean;
27
28
  version?: string;
28
29
  baseVersion?: string;
30
+ /** Print the release body for this version (and exit). */
31
+ releaseNotes?: string;
29
32
  processingMethod: ProcessingMethod;
30
33
  formatOnly: boolean;
31
34
  /** Include the `### Package changes` footer (disable with --no-package-changes-section). */
@@ -47,6 +50,8 @@ export interface GroupedRule {
47
50
  }
48
51
  export interface GroupedItem {
49
52
  parsed: ParsedCommit;
53
+ /** Whether this commit is breaking (subject `!` or a BREAKING CHANGE footer). */
54
+ breaking?: boolean;
50
55
  text: string;
51
56
  /** Description paragraphs; each becomes one nested bullet with wrapped continuations. */
52
57
  bodyParagraphs: string[][];
@@ -87,4 +92,4 @@ export interface ExistingEntry {
87
92
  bullets: string[];
88
93
  }
89
94
  //#endregion
90
- export type { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting };
95
+ export type { ChangelogBreakingCommit, ChangelogBreakingSetting, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting };
@@ -1,5 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingSetting } from "../../../shared/src/changelog-breaking.js";
3
4
  import { logger } from "../../../shared/src/logger.js";
4
5
  import { ChangelogConfig } from "../../../shared/src/config-types.js";
5
6
  import "../../../shared/src/index.js";
@@ -55,6 +56,8 @@ export interface BumpRuleContext {
55
56
  env: NodeJS.ProcessEnv;
56
57
  logger: typeof logger;
57
58
  packageJson?: Record<string, unknown>;
59
+ /** How breaking changes are detected (default: Conventional Commits). */
60
+ breaking?: ChangelogBreakingSetting;
58
61
  }
59
62
  /** Resolve a bump from custom rules, falling back to Conventional Commits. */
60
63
  export declare function deriveCustomBump(records: CommitRecord[], rules?: Record<string, unknown>, allowOverBump?: boolean, context?: BumpRuleContext): BumpType;
@@ -77,6 +80,8 @@ export interface PlanVersionsOptions {
77
80
  bumpRules?: Record<string, unknown>;
78
81
  /** Allow over-bumping (default false). */
79
82
  allowOverBump?: boolean;
83
+ /** How breaking changes are detected (default: Conventional Commits). */
84
+ breaking?: ChangelogBreakingSetting;
80
85
  /** The git revision range the commits were read from. */
81
86
  range: string;
82
87
  /** The repository root (default: resolved from cwd). */
@@ -1 +1 @@
1
- import{resolve as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{deriveBump as n,readCommits as r}from"./git.js";import{repoRoot as i}from"./repo.js";import{parseCcSubject as a}from"./format.js";import{bumpVersion as o}from"./version.js";import{relatedWorkspacePaths as s}from"./graph.js";import{existsSync as c,globSync as l,readFileSync as u,writeFileSync as d}from"node:fs";function f(e){let t=e?.versioning;return t===!1?{enabled:!1,target:`uniform`}:t===void 0||t===!0?{enabled:!0,target:`uniform`}:{enabled:!0,target:t.target??`uniform`,...t.workspaces?{workspaces:t.workspaces}:{},...t.bump?{bump:t.bump}:{},...t.allowOverBump?{allowOverBump:!0}:{},...t.provider?{provider:t.provider}:{},...t.commit?{commit:t.commit}:{}}}function p(t){try{let n=JSON.parse(u(e(t,`package.json`),`utf8`));return typeof n.version==`string`?n.version:void 0}catch{return}}function m(n,r){let i=e(n,`package.json`),a=u(i,`utf8`),o=a.replace(/("version"\s*:\s*)"[^"]*"/,`$1"${r}"`);o!==a&&(d(i,o,`utf8`),t.info(` bumped ${i}`))}function h(n,r=i()){let a=c(e(r,`package.json`)),o=n;if(o===void 0&&a)try{let t=JSON.parse(u(e(r,`package.json`),`utf8`)).workspaces;o=Array.isArray(t)?t.filter(e=>typeof e==`string`):t&&typeof t==`object`&&Array.isArray(t.packages)?t.packages.filter(e=>typeof e==`string`):void 0}catch{o=void 0}let s=/* @__PURE__ */ new Set;for(let t of o??[])if(t===`.`)s.add(r);else for(let n of l(t,{cwd:r})){let t=e(r,n);c(e(t,`package.json`))&&s.add(t)}return s.delete(r),!a&&s.size===0&&t.warn(`[changelog] versioning: no root package.json and no matching workspaces — nothing to version.`),{root:r,rootHasPackage:a,workspaces:[...s]}}function g(e,t,n){if(e===!0)return!0;if(e===!1||e==null)return!1;if(typeof e==`string`){if(e.startsWith(`/`)&&e.lastIndexOf(`/`)>0){let n=e.lastIndexOf(`/`);try{return new RegExp(e.slice(1,n),e.slice(n+1)).test(`${t.subject}\n${t.body}`)}catch{return!1}}return`${t.subject}\n${t.body}`.includes(e)}if(Array.isArray(e))return e.some(e=>g(e,t,n));if(typeof e==`function`)return!!e({...n,commit:t});if(typeof e==`object`){let n=e,r=a(t.subject);return!(n.breaking===!0&&!r.breaking&&!/BREAKING[ -]CHANGE/i.test(t.body)||typeof n.type==`string`&&r.type!==n.type||Array.isArray(n.types)&&!n.types.includes(r.type)||typeof n.scope==`string`&&r.scope!==n.scope||Array.isArray(n.scopes)&&!n.scopes.includes(r.scope)||typeof n.pattern==`string`&&!new RegExp(n.pattern).test(`${t.subject}\n${t.body}`)||typeof n.match==`string`&&!`${t.subject}\n${t.body}`.includes(n.match))}return!1}const _=[`patch`,`minor`,`major`];function v(e,r,i=!1,a={env:process.env,logger:t}){if(!r||Object.keys(r).length===0)return n(e);let o=`patch`,s=0;for(let t of _){let n=r[t];for(let r of e)(typeof n==`function`?(()=>{let e=n({...a,commit:r,level:t});return typeof e==`string`?e===t:!!e})():g(n,r,a))&&(s+=1,_.indexOf(t)>_.indexOf(o)&&(o=t))}if(i&&s>1)for(let e=1;e<s&&o!==`major`;e+=1)o=o===`patch`?`minor`:`major`;return o}function y(e){let{versioning:t,bump:n,range:a}=e,c=e.root??i(),{rootHasPackage:l,workspaces:u}=h(t.workspaces,c),d=e.commitsFor??(e=>r(a,s(e,c))),f=o(e.rootVersion,n),m=/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Map,_=t.enabled?t.target:`uniform`;if(l&&t.enabled&&m.set(c,f),_===`individual`)for(let n of u){let r=d(n);if(r.length===0)continue;let i=o(p(n)??`0.0.0`,v(r,e.bumpRules,e.allowOverBump));g.set(n,i),t.enabled&&m.set(n,i)}else if(_===`uniform`)for(let e of u)g.set(e,f),t.enabled&&m.set(e,f);return{rootVersion:f,writes:m,entries:g}}export{v as deriveCustomBump,h as discoverVersionPackages,y as planVersions,p as readPackageVersion,f as resolveVersioning,m as writePackageVersion};
1
+ import{resolve as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{isBreakingCommit as n}from"./breaking.js";import{deriveBump as r,readCommits as i}from"./git.js";import{repoRoot as a}from"./repo.js";import{parseCcSubject as o}from"./format.js";import{bumpVersion as s}from"./version.js";import{relatedWorkspacePaths as c}from"./graph.js";import{existsSync as l,globSync as u,readFileSync as d,writeFileSync as f}from"node:fs";function p(e){let t=e?.versioning;return t===!1?{enabled:!1,target:`uniform`}:t===void 0||t===!0?{enabled:!0,target:`uniform`}:{enabled:!0,target:t.target??`uniform`,...t.workspaces?{workspaces:t.workspaces}:{},...t.bump?{bump:t.bump}:{},...t.allowOverBump?{allowOverBump:!0}:{},...t.provider?{provider:t.provider}:{},...t.commit?{commit:t.commit}:{}}}function m(t){try{let n=JSON.parse(d(e(t,`package.json`),`utf8`));return typeof n.version==`string`?n.version:void 0}catch{return}}function h(n,r){let i=e(n,`package.json`),a=d(i,`utf8`),o=a.replace(/("version"\s*:\s*)"[^"]*"/,`$1"${r}"`);o!==a&&(f(i,o,`utf8`),t.info(` bumped ${i}`))}function g(n,r=a()){let i=l(e(r,`package.json`)),o=n;if(o===void 0&&i)try{let t=JSON.parse(d(e(r,`package.json`),`utf8`)).workspaces;o=Array.isArray(t)?t.filter(e=>typeof e==`string`):t&&typeof t==`object`&&Array.isArray(t.packages)?t.packages.filter(e=>typeof e==`string`):void 0}catch{o=void 0}let s=/* @__PURE__ */ new Set;for(let t of o??[])if(t===`.`)s.add(r);else for(let n of u(t,{cwd:r})){let t=e(r,n);l(e(t,`package.json`))&&s.add(t)}return s.delete(r),!i&&s.size===0&&t.warn(`[changelog] versioning: no root package.json and no matching workspaces — nothing to version.`),{root:r,rootHasPackage:i,workspaces:[...s]}}function _(e,t,r){if(e===!0)return!0;if(e===!1||e==null)return!1;if(typeof e==`string`){if(e.startsWith(`/`)&&e.lastIndexOf(`/`)>0){let n=e.lastIndexOf(`/`);try{return new RegExp(e.slice(1,n),e.slice(n+1)).test(`${t.subject}\n${t.body}`)}catch{return!1}}return`${t.subject}\n${t.body}`.includes(e)}if(Array.isArray(e))return e.some(e=>_(e,t,r));if(typeof e==`function`)return!!e({...r,commit:t});if(typeof e==`object`){let i=e,a=o(t.subject);return!(i.breaking===!0&&!n(t,r.breaking)||typeof i.type==`string`&&a.type!==i.type||Array.isArray(i.types)&&!i.types.includes(a.type)||typeof i.scope==`string`&&a.scope!==i.scope||Array.isArray(i.scopes)&&!i.scopes.includes(a.scope)||typeof i.pattern==`string`&&!new RegExp(i.pattern).test(`${t.subject}\n${t.body}`)||typeof i.match==`string`&&!`${t.subject}\n${t.body}`.includes(i.match))}return!1}const v=[`patch`,`minor`,`major`];function y(e,n,i=!1,a={env:process.env,logger:t}){if(!n||Object.keys(n).length===0)return r(e,a.breaking);let o=`patch`,s=0;for(let t of v){let r=n[t];for(let n of e)(typeof r==`function`?(()=>{let e=r({...a,commit:n,level:t});return typeof e==`string`?e===t:!!e})():_(r,n,a))&&(s+=1,v.indexOf(t)>v.indexOf(o)&&(o=t))}if(i&&s>1)for(let e=1;e<s&&o!==`major`;e+=1)o=o===`patch`?`minor`:`major`;return o}function b(e){let{versioning:n,bump:r,range:o}=e,l=e.root??a(),{rootHasPackage:u,workspaces:d}=g(n.workspaces,l),f=e.commitsFor??(e=>i(o,c(e,l))),p=s(e.rootVersion,r),h=/* @__PURE__ */ new Map,_=/* @__PURE__ */ new Map,v=n.enabled?n.target:`uniform`;if(u&&n.enabled&&h.set(l,p),v===`individual`)for(let r of d){let i=f(r);if(i.length===0)continue;let a=s(m(r)??`0.0.0`,y(i,e.bumpRules,e.allowOverBump,{env:process.env,logger:t,...e.breaking===void 0?{}:{breaking:e.breaking}}));_.set(r,a),n.enabled&&h.set(r,a)}else if(v===`uniform`)for(let e of d)_.set(e,p),n.enabled&&h.set(e,p);return{rootVersion:p,writes:h,entries:_}}export{y as deriveCustomBump,g as discoverVersionPackages,b as planVersions,m as readPackageVersion,p as resolveVersioning,h as writePackageVersion};
@@ -1 +1 @@
1
- import{resolve as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{readCommits as n,repoSlug as r}from"./git.js";import{discoverWorkspaceDirs as i,repoRoot as a}from"./repo.js";import{packageChangesForCurrent as o}from"./packages.js";import{formatChangelogFile as s}from"./format.js";import{prependChangelogEntry as c,renderChangelogEntry as l}from"./version.js";import{parseExistingChangelog as u,reformatRootChangelog as d}from"./reformat.js";import{buildSummary as f}from"./summary.js";import{relatedWorkspacePaths as p}from"./graph.js";import{existsSync as m,readFileSync as h,writeFileSync as g}from"node:fs";function _(_,v,y,b,x,S=!1,C,w=!0,T){let E=a(),D=r(),O=e(E,`CHANGELOG.md`),k=``;if(S&&m(O)){let e=u(h(O,`utf8`))[0];e&&(k=o(e.version))}if(x){let e=d(S,T);e&&(g(O,e,`utf8`),t.info(` reformatted ${O}`))}let A=l(_,b,/* @__PURE__ */ new Date,!0,k);c(O,A),t.info(` updated ${O}`);let j=C??new Map(i().filter(t=>e(t)!==e(E)).map(e=>[e,_]));for(let[r,i]of j){let a=e(r,`CHANGELOG.md`),o=n(v,p(r,E));if(o.length===0){t.info(` skipped ${a} (no related commits)`);continue}let s=!m(a),u=f(o,{commitlint:w,range:v,groups:T});c(a,l(i,u,/* @__PURE__ */ new Date)),t.info(` ${s?`created`:`updated`} ${a}`)}let M=/* @__PURE__ */ new Set([...i(),...j.keys()]);for(let t of M){let n=e(t,`CHANGELOG.md`);m(n)&&s(n,D)}}export{_ as writeChangelogs};
1
+ import{resolve as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{readCommits as n,repoSlug as r}from"./git.js";import{discoverWorkspaceDirs as i,repoRoot as a}from"./repo.js";import{packageChangesForCurrent as o}from"./packages.js";import{formatChangelogFile as s}from"./format.js";import{prependChangelogEntry as c,renderChangelogEntry as l}from"./version.js";import{parseExistingChangelog as u,reformatRootChangelog as d}from"./reformat.js";import{buildSummary as f}from"./summary.js";import{relatedWorkspacePaths as p}from"./graph.js";import{existsSync as m,readFileSync as h,writeFileSync as g}from"node:fs";function _(_,v,y,b,x,S=!1,C,w=!0,T,E){let D=a(),O=r(),k=e(D,`CHANGELOG.md`),A=``;if(S&&m(k)){let e=u(h(k,`utf8`))[0];e&&(A=o(e.version))}if(x){let e=d(S,T,E);e&&(g(k,e,`utf8`),t.info(` reformatted ${k}`))}let j=l(_,b,/* @__PURE__ */ new Date,!0,A);c(k,j),t.info(` updated ${k}`);let M=C??new Map(i().filter(t=>e(t)!==e(D)).map(e=>[e,_]));for(let[r,i]of M){let a=e(r,`CHANGELOG.md`),o=n(v,p(r,D));if(o.length===0){t.info(` skipped ${a} (no related commits)`);continue}let s=!m(a),u=f(o,{commitlint:w,range:v,...T?{groups:T}:{},...E===void 0?{}:{breaking:E}});c(a,l(i,u,/* @__PURE__ */ new Date)),t.info(` ${s?`created`:`updated`} ${a}`)}let N=/* @__PURE__ */ new Set([...i(),...M.keys()]);for(let t of N){let n=e(t,`CHANGELOG.md`);m(n)&&s(n,O)}}export{_ as writeChangelogs};
@@ -1,5 +1,5 @@
1
1
  import"node:path";import"node:url";import.meta.url;import{applyReplacementsDeep as e}from"../../shared/src/template.js";import{DEFAULT_PACKAGE_MANAGER_VERSIONS as t}from"../../shared/src/toolchain.js";import{toYaml as n}from"../../shared/src/yaml.js";import"../../shared/src/index.js";const r={nodeVersion:`22`,yarnVersion:`4.17.1`,packageManager:`yarn`,mainBranch:`main`,devBranch:`main`,tooling:`dbx`,commitlintConfig:`commitlint.config.mjs`},i={ci:`ci.yml`,changelog:`changelog.yml`,release:`release.yml`,sync:`sync.yml`,issues:`issues.yml`},a=`.github/workflows`;function o(e){let t=(e??`.github/workflows`).replace(/\\/g,`/`).replace(/^\.?\//,``).replace(/\/+$/,``);if(/^[a-zA-Z]:/.test(t)||t.split(`/`).includes(`..`))throw Error(`invalid workflow directory "${e}" (must stay inside the project).`);return t}function s(e,t){let n=(e??t).trim();if(!n||/[\\/]/.test(n)||n===`.`||n===`..`)throw Error(`invalid workflow filename "${e}" (expected a file name).`);return n}function c(e,t,n=`${e}.yml`){let r=t&&typeof t==`object`?t:void 0,i=o(r?.dir),a=s(r?.filename,n);return i?`${i}/${a}`:a}function l(e){return e===void 0?!1:typeof e==`boolean`?e:typeof e==`string`?e.trim().length>0:e.enabled!==!1}function u(e){let n=String(e.packageManager??`yarn`);return String(e.packageManagerVersion??e.yarnVersion??t[n]??`4.17.1`)}function d(e){let t=e.config?.tokens??{},n={...r,...e.tokens,...t},i=t.packageManager;return i!==void 0&&i!==e.tokens.packageManager&&t.packageManagerVersion===void 0&&t.yarnVersion===void 0&&(delete n.packageManagerVersion,delete n.yarnVersion),t.packageManagerVersion===void 0&&t.yarnVersion!==void 0&&(n.packageManagerVersion=t.yarnVersion),n}function f(e){let t=String(e.tooling??`dbx`);switch(String(e.packageManager??`yarn`)){case`pnpm`:return`pnpm exec ${t}`;case`npm`:return`npx ${t}`;case`bun`:return`bunx ${t}`;default:return`${e.packageManager??`yarn`} ${t}`}}function p(e){let t=String(e.packageManager??`yarn`),n=u(e),r=[{name:`Checkout`,uses:`actions/checkout@v4`,with:{"fetch-depth":0,token:"${{ secrets.GITHUB_TOKEN }}"}},{name:`Setup Node`,uses:`actions/setup-node@v4`,with:{"node-version":String(e.nodeVersion)}}];return t===`bun`?[...r,{name:`Setup Bun`,uses:`oven-sh/setup-bun@v2`,with:{"bun-version":n}},{name:`Install dependencies`,run:`bun install --frozen-lockfile`}]:t===`npm`?[...r,{name:`Install dependencies`,run:`npm install -g npm@${n}\nnpm ci`}]:[...r,{name:`Enable Corepack`,run:`corepack enable\ncorepack prepare ${t}@${n} --activate`},{name:`Install dependencies`,run:t===`pnpm`?`pnpm install --frozen-lockfile`:`yarn install --immutable`}]}function m(e,t={}){let n=f(e),r=String(e.mainBranch),i=String(e.devBranch),a=t.commitlint!==!1;return{ci:{name:`CI`,on:{push:{branches:[r]},pull_request:{branches:[`release/**`,`feat/**`,`feature/**`,`fix/**`,`chore/**`]}},jobs:{ci:{"runs-on":`ubuntu-latest`,steps:[...p(e),...a?[{name:`Commitlint (Conventional Commits)`,if:"${{ github.event_name == 'pull_request' || github.event.before != '0000000000000000000000000000000000000000' }}",run:`set -euo pipefail\nbase="\${{ github.event.pull_request.base.sha || github.event.before }}"\nhead="\${{ github.event.pull_request.head.sha || github.event.after }}"\n${e.packageManager} commitlint --from "$base" --to "$head" --config ${e.commitlintConfig}`}]:[],{name:`Verify generated files are in sync`,run:`${n} sync --check`},{name:`Build`,run:`${e.packageManager} build`}]}}},changelog:{name:`Changelog (dev)`,on:{push:{branches:[i]}},permissions:{contents:`write`},concurrency:{group:`changelog-dev`,"cancel-in-progress":!1},jobs:{"generate-changelog":{"runs-on":`ubuntu-latest`,if:`!startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[...p(e),{name:`Generate changelog + bump versions`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,'after="${{ github.event.after }}"; [ -n "$after" ] || after="HEAD"',`boundary="$(git log --format=%H --grep='^chore: version packages ' -1 || true)"`,`if [ -n "$boundary" ]; then range="$boundary..$after"; else range="$after"; fi`,`${n} changelog --range "$range"`].join(`
2
2
  `)},{name:`Commit + push changelog updates`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,`git diff --quiet && { echo "No changelog changes."; exit 0; }`,`git config user.name "github-actions[bot]"`,`git config user.email "41898282+github-actions[bot]@users.noreply.github.com"`,`git add -u -- "*package.json" "*CHANGELOG.md"`,`git commit -m "chore: version packages ($(node -p "require('./package.json').version"))"`,`git push origin ${i}`].join(`
3
- `)}]}}},release:{name:`Release`,on:{push:{branches:[r]},workflow_dispatch:null},permissions:{contents:`write`,"pull-requests":`write`},concurrency:{group:`release`,"cancel-in-progress":!1},jobs:{"create-release-pr":{"runs-on":`ubuntu-latest`,if:`(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && !startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[...p(e),{name:`Open release PR`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,`version="$(node -p "require('./package.json').version")"`,`branch="release/$version"`,`if git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then`,` echo "Release PR already open for $version."; exit 0`,`fi`,`git config user.name "github-actions[bot]"`,`git config user.email "41898282+github-actions[bot]@users.noreply.github.com"`,`git checkout -b "$branch"`,`git add -A`,`git commit -m "chore: version packages ($version)" || true`,`git push origin "$branch"`,`last_tag="$(git describe --tags --abbrev=0 2>/dev/null || true)"`,`if [ -n "$last_tag" ]; then`,' last_version="${last_tag#v}"',` notes="$(awk -v v="$last_version" '/^## / { if ($2 == v) exit; started = 1 } started { print }' CHANGELOG.md 2>/dev/null || true)"`,`else`,` notes="$(cat CHANGELOG.md 2>/dev/null || true)"`,`fi`,`[ -n "$notes" ] || notes="Release $version"`,`gh pr create --base ${r} --head "$branch" --title "release: $version" --body "$notes"`].join(`
3
+ `)}]}}},release:{name:`Release`,on:{push:{branches:[r]},workflow_dispatch:null},permissions:{contents:`write`,"pull-requests":`write`},concurrency:{group:`release`,"cancel-in-progress":!1},jobs:{"create-release-pr":{"runs-on":`ubuntu-latest`,if:`(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && !startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[...p(e),{name:`Open release PR`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,`version="$(node -p "require('./package.json').version")"`,`branch="release/$version"`,`if git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then`,` echo "Release PR already open for $version."; exit 0`,`fi`,`git config user.name "github-actions[bot]"`,`git config user.email "41898282+github-actions[bot]@users.noreply.github.com"`,`git checkout -b "$branch"`,`git add -A`,`git commit -m "chore: version packages ($version)" || true`,`git push origin "$branch"`,`notes="$(${n} changelog --release-notes "$version")"`,`[ -n "$notes" ] || notes="Release $version"`,`gh pr create --base ${r} --head "$branch" --title "release: $version" --body "$notes"`].join(`
4
4
  `)}]}}},sync:{name:`Toolchain sync`,on:{push:{branches:[.../* @__PURE__ */ new Set([r,i])]},pull_request:null},jobs:{sync:{"runs-on":`ubuntu-latest`,steps:[...p(e),{name:`Verify generated files are in sync`,run:`${n} sync --check`}]}}},issues:{name:`Issues`,on:{issues:{types:[`opened`]}},permissions:{issues:`write`},jobs:{"enforce-title":{"runs-on":`ubuntu-latest`,steps:[{name:`Check and rename issue title`,env:{GH_TOKEN:"${{ github.token }}",ISSUE_NUMBER:"${{ github.event.issue.number }}"},run:[`set -euo pipefail`,`labels=$(gh issue view "$ISSUE_NUMBER" --json labels -q '.labels[].name' || true)`,`title=$(gh issue view "$ISSUE_NUMBER" --json title -q '.title')`,`type=""`,`for label in $labels; do case "$label" in *bug*) type="bug" ;; esac; done`,`if [ -z "$type" ]; then for label in $labels; do case "$label" in *enhancement*|*feature*|*feat*) type="feat" ;; esac; done; fi`,`if [ -z "$type" ]; then echo "No bug/enhancement label on issue #$ISSUE_NUMBER; skipping."; exit 0; fi`,`prefix="[bug]"; [ "$type" = "feat" ] && prefix="[feat]"`,`stripped=$(printf '%s' "$title" | sed -E 's/^\\[(bug|feat)\\] *//i')`,`new_title="$prefix $stripped"`,`if [ "$new_title" = "$title" ]; then echo "Issue #$ISSUE_NUMBER title already conforms."; exit 0; fi`,`gh issue edit "$ISSUE_NUMBER" --title "$new_title"`].join(`
5
5
  `)}]}}}}}function h(e){return e.steps?Array.isArray(e.steps)?e.steps:[e.steps]:[]}function g(e,t={}){let n=structuredClone(e);if(t.pushBranches){let e=n.on.push??{};n.on.push={...e,branches:t.pushBranches}}if(t.pullRequestBranches){let e=n.on.pull_request??{};n.on.pull_request={...e,branches:t.pullRequestBranches}}t.triggers&&(n.on={...n.on,...t.triggers}),t.extra&&Object.assign(n,t.extra),t.jobs&&(n.jobs={...n.jobs,...t.jobs});let r=Object.keys(n.jobs)[0];for(let e of h(t)){let t=e.job??r;if(!t)continue;let i=n.jobs[t];i&&(i.steps=[...e.before??[],...i.steps,...e.after??[]])}return n}function _(t,r){let i=r.config??{};if(i.enabled===!1)return;let a=d(r),o=m(a,{commitlint:r.commitlint!==!1})[t],s=e(g(o,i),a);return n(s)}function v(t,r){let i=r.config??{};if(i.enabled===!1)return;let a=d(r),o=e(g({name:t,on:{},jobs:{}},i),a),s=o.on&&typeof o.on==`object`&&Object.keys(o.on).length>0,c=o.jobs&&typeof o.jobs==`object`&&Object.keys(o.jobs).length>0;if(!s||!c)throw Error(`custom workflow "${t}" must define at least one trigger and one job (use \`triggers\` and \`jobs\`, or \`extra\`).`);return n(o)}function y(e,t={},n={}){let r={};for(let a of Object.keys(i)){let o=t[a];if(!l(o))continue;let s=c(a,o,i[a]),u=s.split(`/`).pop()??s;if(typeof o==`string`){r[u]=o;continue}let d=_(a,{tokens:e,config:typeof o==`object`?o:{},...n});d&&(r[u]=d)}for(let[t,i]of Object.entries(n.custom??{})){if(!l(i))continue;let a=c(t,i),o=a.split(`/`).pop()??a;if(typeof i==`string`){r[o]=i;continue}let s=v(t,{tokens:e,config:i,...n});s&&(r[o]=s)}return r}export{a as DEFAULT_WORKFLOW_DIR,r as DEFAULT_WORKFLOW_TOKENS,i as WORKFLOW_FILENAMES,g as applyWorkflowConfig,m as defaultWorkflows,l as isEnabled,v as renderCustomWorkflow,_ as renderWorkflow,y as renderWorkflows,c as workflowFilePath};
@@ -0,0 +1,31 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ //#region packages/shared/src/changelog-breaking.d.ts
4
+ /**
5
+ * Typed `changelog.breaking` configuration. The runtime implementation lives in
6
+ * `@deltabox/toolchain-changelog`; these shapes are shared so `dbx.config.*`
7
+ * gets callback-aware types without a package cycle.
8
+ */
9
+ /** The subset of a commit used to decide whether it is a breaking change. */
10
+ export interface ChangelogBreakingCommit {
11
+ /** The Conventional-Commits subject. */
12
+ subject: string;
13
+ /** The commit body (including any footers). */
14
+ body: string;
15
+ }
16
+ /**
17
+ * How breaking changes are detected.
18
+ *
19
+ * - `conventional` (default): a `!` before the subject colon, or a
20
+ * `BREAKING CHANGE:` / `BREAKING-CHANGE:` footer line.
21
+ * - `any`: legacy loose detection (any mention anywhere in the subject/body).
22
+ * - `false`: disable breaking-change detection.
23
+ * - `{ pattern }` / `{ match }`: a custom regex/substring against the subject
24
+ * and body.
25
+ * - a callback: a custom predicate (TS/JS configs only).
26
+ */
27
+ export type ChangelogBreakingSetting = boolean | 'conventional' | 'any' | {
28
+ pattern?: string;
29
+ match?: string;
30
+ } | ((commit: ChangelogBreakingCommit) => boolean);
31
+ //#endregion
@@ -127,6 +127,7 @@ export declare const changelogConfigSchema: z.ZodObject<{
127
127
  }, z.core.$strip>]>>;
128
128
  vscode: z.ZodOptional<z.ZodBoolean>;
129
129
  groups: z.ZodOptional<z.ZodUnknown>;
130
+ breaking: z.ZodOptional<z.ZodUnknown>;
130
131
  branches: z.ZodOptional<z.ZodObject<{
131
132
  main: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
132
133
  dev: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
@@ -210,6 +211,7 @@ export declare const changelogWorkflowSettingSchema: z.ZodUnion<readonly [z.ZodB
210
211
  }, z.core.$strip>]>>;
211
212
  vscode: z.ZodOptional<z.ZodBoolean>;
212
213
  groups: z.ZodOptional<z.ZodUnknown>;
214
+ breaking: z.ZodOptional<z.ZodUnknown>;
213
215
  branches: z.ZodOptional<z.ZodObject<{
214
216
  main: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
215
217
  dev: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
@@ -241,5 +243,6 @@ export declare const legacyChangelogConfigSchema: z.ZodObject<{
241
243
  }, z.core.$strip>]>>;
242
244
  vscode: z.ZodOptional<z.ZodBoolean>;
243
245
  groups: z.ZodOptional<z.ZodUnknown>;
246
+ breaking: z.ZodOptional<z.ZodUnknown>;
244
247
  }, z.core.$strip>;
245
248
  //#endregion
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{section as e,withEnabled as t}from"./meta.js";import{workflowOptionsSchema as n}from"./workflow.js";import{z as r}from"zod";const i=r.object({main:r.union([r.string(),r.array(r.string())]).describe('Branch glob(s) the CI + release workflows run on, and the release PR base (default `["main"]`).').optional(),dev:r.union([r.string(),r.array(r.string())]).describe("Branch glob(s) the changelog/version workflow runs on. No default: when omitted it reuses `main` (so a single-branch repo needs no `dev`).").optional()}).describe(`Branches the generated workflows target.`).meta({id:`ChangelogBranchesConfig`}),a=t(r.object({dir:r.string().describe("Directory the generated `commitlint.config.mjs` is written to (default: the project root). The husky hook and CI use `--config` to point at it.").optional(),types:r.array(r.string()).describe(`Allowed commit types (commitlint).`).optional(),scopes:r.array(r.string()).describe(`Allowed commit scopes (commitlint).`).optional()}),`Enable commitlint (default true when the changelog is enabled). Set false to generate changelogs without the Conventional-Commits pipeline.`).describe(`commitlint config, output location and allow-lists.`).meta({id:`ChangelogCommitlintConfig`}),o=r.enum([`uniform`,`root-only`,`individual`]).describe(`Where the changelog version bump is applied.`).meta({id:`ChangelogVersioningTarget`}),s=r.object({target:o.describe("`uniform` bumps the root and every workspace to one shared version; `root-only` bumps the root only; `individual` bumps each changed workspace independently (default `uniform`).").optional(),workspaces:r.array(r.string()).describe("Glob patterns selecting the workspaces to version (relative to the root). Defaults to the root `package.json` `workspaces` field; when there is none the root `package.json` is used on its own.").optional(),bump:r.record(r.string(),r.unknown()).describe(`Custom bump rules for major/minor/patch (matchers or callbacks).`).optional(),allowOverBump:r.boolean().describe(`Apply a bump once per matching change instead of once per run (default false).`).optional(),commit:r.unknown().describe(`Commit message formatting/credit options or callback.`).optional(),provider:r.unknown().describe("`default`, `changesets`, a provider id, or a custom provider/callback.").optional()}).describe(`Automatic version bumping options.`).meta({id:`ChangelogVersioningConfig`}),c=r.union([r.boolean(),s]).describe(`Automatic version bumping when a changelog entry is generated.`).meta({id:`ChangelogVersioning`}),l={commitlint:e(a).describe("commitlint config; set `false` to disable the Conventional-Commits pipeline.").optional(),versioning:c.describe("Automatic version bumping on changelog generation (default `true`).").optional(),vscode:r.boolean().describe(`Write the Conventional-Commits VS Code settings (default true).`).optional(),groups:r.unknown().describe("Conventional-Commits group order/titles: an ordered array of CC types or `{ type, title, order, hidden }`, a type->title/options record, or a callback. Titles/order/hidden also accept callbacks (TS/JS configs only).").optional()},u=t(n.extend({branches:i.describe(`Branches the generated workflows target.`).optional(),...l}),`Enable/disable the changelog workflow and pipeline (default: enabled when present).`).describe(`Changelog workflow + pipeline: versioning, VS Code settings and commitlint.`).meta({id:`ChangelogConfig`}),d=r.union([r.boolean(),r.string(),u]).describe("`true`/`false` to enable/disable, the changelog pipeline config object, or a raw YAML string written verbatim as the changelog workflow file.").meta({id:`ChangelogWorkflowSetting`}),f=t(r.object(l)).describe("Manual `toolchain.changelog` pipeline config for `dbx changelog`, the VS Code actions and the API; `ci.changelog` inherits these options.").meta({id:`ToolchainChangelogConfig`});export{i as changelogBranchesConfigSchema,a as changelogCommitlintConfigSchema,u as changelogConfigSchema,s as changelogVersioningConfigSchema,c as changelogVersioningSchema,o as changelogVersioningTargetSchema,d as changelogWorkflowSettingSchema,f as legacyChangelogConfigSchema};
1
+ import"node:path";import"node:url";import.meta.url;import{section as e,withEnabled as t}from"./meta.js";import{workflowOptionsSchema as n}from"./workflow.js";import{z as r}from"zod";const i=r.object({main:r.union([r.string(),r.array(r.string())]).describe('Branch glob(s) the CI + release workflows run on, and the release PR base (default `["main"]`).').optional(),dev:r.union([r.string(),r.array(r.string())]).describe("Branch glob(s) the changelog/version workflow runs on. No default: when omitted it reuses `main` (so a single-branch repo needs no `dev`).").optional()}).describe(`Branches the generated workflows target.`).meta({id:`ChangelogBranchesConfig`}),a=t(r.object({dir:r.string().describe("Directory the generated `commitlint.config.mjs` is written to (default: the project root). The husky hook and CI use `--config` to point at it.").optional(),types:r.array(r.string()).describe(`Allowed commit types (commitlint).`).optional(),scopes:r.array(r.string()).describe(`Allowed commit scopes (commitlint).`).optional()}),`Enable commitlint (default true when the changelog is enabled). Set false to generate changelogs without the Conventional-Commits pipeline.`).describe(`commitlint config, output location and allow-lists.`).meta({id:`ChangelogCommitlintConfig`}),o=r.enum([`uniform`,`root-only`,`individual`]).describe(`Where the changelog version bump is applied.`).meta({id:`ChangelogVersioningTarget`}),s=r.object({target:o.describe("`uniform` bumps the root and every workspace to one shared version; `root-only` bumps the root only; `individual` bumps each changed workspace independently (default `uniform`).").optional(),workspaces:r.array(r.string()).describe("Glob patterns selecting the workspaces to version (relative to the root). Defaults to the root `package.json` `workspaces` field; when there is none the root `package.json` is used on its own.").optional(),bump:r.record(r.string(),r.unknown()).describe(`Custom bump rules for major/minor/patch (matchers or callbacks).`).optional(),allowOverBump:r.boolean().describe(`Apply a bump once per matching change instead of once per run (default false).`).optional(),commit:r.unknown().describe(`Commit message formatting/credit options or callback.`).optional(),provider:r.unknown().describe("`default`, `changesets`, a provider id, or a custom provider/callback.").optional()}).describe(`Automatic version bumping options.`).meta({id:`ChangelogVersioningConfig`}),c=r.union([r.boolean(),s]).describe(`Automatic version bumping when a changelog entry is generated.`).meta({id:`ChangelogVersioning`}),l={commitlint:e(a).describe("commitlint config; set `false` to disable the Conventional-Commits pipeline.").optional(),versioning:c.describe("Automatic version bumping on changelog generation (default `true`).").optional(),vscode:r.boolean().describe(`Write the Conventional-Commits VS Code settings (default true).`).optional(),groups:r.unknown().describe("Conventional-Commits group order/titles: an ordered array of CC types or `{ type, title, order, hidden }`, a type->title/options record, or a callback. Titles/order/hidden also accept callbacks (TS/JS configs only).").optional(),breaking:r.unknown().describe("How breaking changes are detected: `conventional` (default: a `!` in the CC subject or a `BREAKING CHANGE:` footer), `any` (legacy loose match), `false` (disable), `{ pattern }` / `{ match }`, or a callback (TS/JS configs only).").optional()},u=t(n.extend({branches:i.describe(`Branches the generated workflows target.`).optional(),...l}),`Enable/disable the changelog workflow and pipeline (default: enabled when present).`).describe(`Changelog workflow + pipeline: versioning, VS Code settings and commitlint.`).meta({id:`ChangelogConfig`}),d=r.union([r.boolean(),r.string(),u]).describe("`true`/`false` to enable/disable, the changelog pipeline config object, or a raw YAML string written verbatim as the changelog workflow file.").meta({id:`ChangelogWorkflowSetting`}),f=t(r.object(l)).describe("Manual `toolchain.changelog` pipeline config for `dbx changelog`, the VS Code actions and the API; `ci.changelog` inherits these options.").meta({id:`ToolchainChangelogConfig`});export{i as changelogBranchesConfigSchema,a as changelogCommitlintConfigSchema,u as changelogConfigSchema,s as changelogVersioningConfigSchema,c as changelogVersioningSchema,o as changelogVersioningTargetSchema,d as changelogWorkflowSettingSchema,f as legacyChangelogConfigSchema};
@@ -380,6 +380,7 @@ export declare const ciConfigSchema: import("zod").ZodObject<{
380
380
  }, import("zod/v4/core").$strip>]>>;
381
381
  vscode: import("zod").ZodOptional<import("zod").ZodBoolean>;
382
382
  groups: import("zod").ZodOptional<import("zod").ZodUnknown>;
383
+ breaking: import("zod").ZodOptional<import("zod").ZodUnknown>;
383
384
  branches: import("zod").ZodOptional<import("zod").ZodObject<{
384
385
  main: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>]>>;
385
386
  dev: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>]>>;
@@ -410,6 +410,7 @@ export declare const toolchainConfigSchema: z.ZodObject<{
410
410
  }, z.core.$strip>]>>;
411
411
  vscode: z.ZodOptional<z.ZodBoolean>;
412
412
  groups: z.ZodOptional<z.ZodUnknown>;
413
+ breaking: z.ZodOptional<z.ZodUnknown>;
413
414
  branches: z.ZodOptional<z.ZodObject<{
414
415
  main: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
415
416
  dev: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
@@ -436,6 +437,7 @@ export declare const toolchainConfigSchema: z.ZodObject<{
436
437
  }, z.core.$strip>]>>;
437
438
  vscode: z.ZodOptional<z.ZodBoolean>;
438
439
  groups: z.ZodOptional<z.ZodUnknown>;
440
+ breaking: z.ZodOptional<z.ZodUnknown>;
439
441
  }, z.core.$strip>]>>;
440
442
  fmt: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
441
443
  vscode: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
@@ -953,6 +955,7 @@ export declare const dbxConfigSchema: z.ZodObject<{
953
955
  }, z.core.$strip>]>>;
954
956
  vscode: z.ZodOptional<z.ZodBoolean>;
955
957
  groups: z.ZodOptional<z.ZodUnknown>;
958
+ breaking: z.ZodOptional<z.ZodUnknown>;
956
959
  branches: z.ZodOptional<z.ZodObject<{
957
960
  main: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
958
961
  dev: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
@@ -979,6 +982,7 @@ export declare const dbxConfigSchema: z.ZodObject<{
979
982
  }, z.core.$strip>]>>;
980
983
  vscode: z.ZodOptional<z.ZodBoolean>;
981
984
  groups: z.ZodOptional<z.ZodUnknown>;
985
+ breaking: z.ZodOptional<z.ZodUnknown>;
982
986
  }, z.core.$strip>]>>;
983
987
  fmt: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
984
988
  vscode: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
@@ -1495,6 +1499,7 @@ export declare const configSchema: {
1495
1499
  }, z.core.$strip>]>>;
1496
1500
  vscode: z.ZodOptional<z.ZodBoolean>;
1497
1501
  groups: z.ZodOptional<z.ZodUnknown>;
1502
+ breaking: z.ZodOptional<z.ZodUnknown>;
1498
1503
  branches: z.ZodOptional<z.ZodObject<{
1499
1504
  main: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1500
1505
  dev: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
@@ -1521,6 +1526,7 @@ export declare const configSchema: {
1521
1526
  }, z.core.$strip>]>>;
1522
1527
  vscode: z.ZodOptional<z.ZodBoolean>;
1523
1528
  groups: z.ZodOptional<z.ZodUnknown>;
1529
+ breaking: z.ZodOptional<z.ZodUnknown>;
1524
1530
  }, z.core.$strip>;
1525
1531
  readonly fmt: z.ZodObject<{
1526
1532
  vscode: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
@@ -1,5 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ChangelogBreakingSetting } from "./changelog-breaking.js";
3
4
  import { ChangelogGroupsSetting } from "./changelog-groups.js";
4
5
  import { ToolchainLogger } from "./logger.js";
5
6
  import { TsConfigJson } from "type-fest";
@@ -126,6 +127,8 @@ export interface ChangelogConfig extends WorkflowOptions {
126
127
  vscode?: boolean;
127
128
  /** Conventional-Commits group order/titles/hiding (strings, records or callbacks). */
128
129
  groups?: ChangelogGroupsSetting;
130
+ /** How breaking changes are detected (default: Conventional Commits). */
131
+ breaking?: ChangelogBreakingSetting;
129
132
  }
130
133
  export interface ChangelogBranchesConfig {
131
134
  /** Branch glob(s) the CI + release workflows run on, and the release PR base (default `["main"]`). */
@@ -186,6 +189,8 @@ export interface ToolchainChangelogConfig {
186
189
  vscode?: boolean;
187
190
  /** Conventional-Commits group order/titles/hiding (strings, records or callbacks). */
188
191
  groups?: ChangelogGroupsSetting;
192
+ /** How breaking changes are detected (default: Conventional Commits). */
193
+ breaking?: ChangelogBreakingSetting;
189
194
  /** Enable/disable this section (default: enabled when defined). */
190
195
  enabled?: boolean;
191
196
  }
@@ -1,6 +1,7 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { TOOLCHAIN_PACKAGE, findOwnCliEntry, localToolchainVersion } from "./bin.js";
4
+ import { ChangelogBreakingCommit, ChangelogBreakingSetting } from "./changelog-breaking.js";
4
5
  import { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting } from "./changelog-groups.js";
5
6
  import { mergeJsonAt, readJsonAt, readJsonFile, toJson, writeJsonFile } from "./fs-utils.js";
6
7
  import { DEFAULT_IGNORE_PATTERNS, IgnoreOptions, collectGitignorePatterns, isIgnoredPath, resolveIgnorePatterns } from "./ignore.js";
@@ -35,7 +36,7 @@ import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadi
35
36
  import { DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, ToolchainOxfmtConfig, ToolchainOxlintConfig } from "./vite-defaults.js";
36
37
  import { YamlValue, toYaml } from "./yaml.js";
37
38
  declare namespace index_d_exports {
38
- export { Awaitable, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FormatterTool, GeneratedFile, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, ManagedFile, MessageId, PackageJson, ProjectType, RegistryPolicy, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, YamlValue, applyOverrides, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, catalogsConfigSchema, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, configSchema, configureLogger, constantCase, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findOwnCliEntry, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, lintConfigSchema, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectFromPackageJson, projectToPackageJson, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
39
+ export { Awaitable, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogBreakingCommit, ChangelogBreakingSetting, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FormatterTool, GeneratedFile, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, ManagedFile, MessageId, PackageJson, ProjectType, RegistryPolicy, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, YamlValue, applyOverrides, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, catalogsConfigSchema, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, configSchema, configureLogger, constantCase, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findOwnCliEntry, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, lintConfigSchema, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectFromPackageJson, projectToPackageJson, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
39
40
  }
40
41
  //#endregion
41
- export { Awaitable, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FormatterTool, GeneratedFile, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, ManagedFile, MessageId, PackageJson, ProjectType, RegistryPolicy, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyOverrides, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, catalogsConfigSchema, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, configSchema, configureLogger, constantCase, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findOwnCliEntry, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, index_d_exports, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, lintConfigSchema, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectFromPackageJson, projectToPackageJson, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
42
+ export { Awaitable, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogBreakingCommit, ChangelogBreakingSetting, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FormatterTool, GeneratedFile, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, ManagedFile, MessageId, PackageJson, ProjectType, RegistryPolicy, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyOverrides, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, catalogsConfigSchema, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, configSchema, configureLogger, constantCase, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findOwnCliEntry, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, index_d_exports, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, lintConfigSchema, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectFromPackageJson, projectToPackageJson, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
package/dist/shared.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { TOOLCHAIN_PACKAGE, findOwnCliEntry, localToolchainVersion } from "./packages/shared/src/bin.js";
4
+ import { ChangelogBreakingCommit, ChangelogBreakingSetting } from "./packages/shared/src/changelog-breaking.js";
4
5
  import { ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting } from "./packages/shared/src/changelog-groups.js";
5
6
  import { mergeJsonAt, readJsonAt, readJsonFile, toJson, writeJsonFile } from "./packages/shared/src/fs-utils.js";
6
7
  import { DEFAULT_IGNORE_PATTERNS, IgnoreOptions, collectGitignorePatterns, isIgnoredPath, resolveIgnorePatterns } from "./packages/shared/src/ignore.js";
@@ -35,4 +36,4 @@ import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadi
35
36
  import { DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, ToolchainOxfmtConfig, ToolchainOxlintConfig } from "./packages/shared/src/vite-defaults.js";
36
37
  import { YamlValue, toYaml } from "./packages/shared/src/yaml.js";
37
38
  import "./packages/shared/src/index.js";
38
- export { Awaitable, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FormatterTool, GeneratedFile, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, ManagedFile, MessageId, PackageJson, ProjectType, RegistryPolicy, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyOverrides, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, catalogsConfigSchema, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, configSchema, configureLogger, constantCase, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findOwnCliEntry, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, lintConfigSchema, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectFromPackageJson, projectToPackageJson, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
39
+ export { Awaitable, CONFIG_FILE_NAMES, ChangelogBranchesConfig, ChangelogBreakingCommit, ChangelogBreakingSetting, ChangelogCommitlintConfig, ChangelogConfig, ChangelogGroupConfig, ChangelogGroupContext, ChangelogGroupEntry, ChangelogGroupHidden, ChangelogGroupItem, ChangelogGroupOrder, ChangelogGroupTitle, ChangelogGroupsContext, ChangelogGroupsSetting, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, Colors, CustomWorkflowSettings, DEFAULT_FMT_IGNORE_PATTERNS, DEFAULT_FMT_RULES, DEFAULT_IGNORE_PATTERNS, DEFAULT_LINT_IGNORE_PATTERNS, DEFAULT_LINT_RULES, DEFAULT_PACKAGE_MANAGER_VERSIONS, DbxConfig, DbxConfigFunction, DbxConfigInput, DbxConfigSections, ENABLED_DESCRIPTION, ERROR_MAP, ErrorId, FORMATTER_PRECEDENCE, FormatterTool, GeneratedFile, IgnoreOptions, JsonValue, LINTER_PRECEDENCE, LOG_LEVELS, LinterTool, LogChannel, LogLevel, LogSuppression, Logger, LoggerConfig, LoggerOptions, ManagedFile, MessageId, PackageJson, ProjectType, RegistryPolicy, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainChangelogConfig, ToolchainCiConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainHooks, ToolchainLintConfig, ToolchainLogger, ToolchainLoggerConfig, ToolchainOption, ToolchainOxfmtConfig, ToolchainOxlintConfig, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WARNING_MAP, WarningId, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyOverrides, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, catalogsConfigSchema, changelogBranchesConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogSectionEnabled, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciConfigSchema, collectGitignorePatterns, configSchema, configureLogger, constantCase, createLogger, createReplacer, customWorkflowSettingsSchema, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, errorMessage, extractTokens, findOwnCliEntry, fmtConfigSchema, formatCliFlag, formatMessage, formatMessageId, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isIgnoredPath, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, legacyChangelogConfigSchema, lintConfigSchema, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectFromPackageJson, projectToPackageJson, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, registryConfigSchema, registryPolicySchema, registrySourceAllowed, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveChangelogBranches, resolveChangelogConfig, resolveCiConfig, resolveCommitlintEnabled, resolveFmtTool, resolveFmtTools, resolveIgnorePatterns, resolveLintTool, resolveLintTools, resolveOxcFmtConfig, resolveOxcLintConfig, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, section, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, splitPackageName, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, warningMessage, watchConfigSchema, withEnabled, workflowConfigSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deltabox/toolchain",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "All-in-one development toolchain that let's you scaffold projects, generate and manage configs, tsconfigs, custom templates, syncing, changelogs, CI, Vite+, migrations, and more.",
5
5
  "homepage": "https://toolchain.deltabox.studio",
6
6
  "author": "Victor Sango <victor@deltabox.studio>",
@@ -84,17 +84,17 @@
84
84
  "@commitlint/cli": "^21.2.2",
85
85
  "@commitlint/config-conventional": "^21.2.2",
86
86
  "@deltabox/toolchain": "portal:.",
87
- "@deltabox/toolchain-biome": "2.0.0",
88
- "@deltabox/toolchain-changelog": "2.0.0",
89
- "@deltabox/toolchain-config": "2.0.0",
90
- "@deltabox/toolchain-core": "2.0.0",
91
- "@deltabox/toolchain-migrate": "2.0.0",
92
- "@deltabox/toolchain-project": "2.0.0",
93
- "@deltabox/toolchain-shared": "2.0.0",
94
- "@deltabox/toolchain-template": "2.0.0",
95
- "@deltabox/toolchain-tsconfig": "2.0.0",
96
- "@deltabox/toolchain-tsdown": "2.0.0",
97
- "@deltabox/toolchain-vite": "2.0.0",
87
+ "@deltabox/toolchain-biome": "2.1.0",
88
+ "@deltabox/toolchain-changelog": "2.1.0",
89
+ "@deltabox/toolchain-config": "2.1.0",
90
+ "@deltabox/toolchain-core": "2.1.0",
91
+ "@deltabox/toolchain-migrate": "2.1.0",
92
+ "@deltabox/toolchain-project": "2.1.0",
93
+ "@deltabox/toolchain-shared": "2.1.0",
94
+ "@deltabox/toolchain-template": "2.1.0",
95
+ "@deltabox/toolchain-tsconfig": "2.1.0",
96
+ "@deltabox/toolchain-tsdown": "2.1.0",
97
+ "@deltabox/toolchain-vite": "2.1.0",
98
98
  "@types/node": "^22.10.2",
99
99
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
100
100
  "cross-env": "^10.1.0",