@deltabox/toolchain 1.3.1 → 1.6.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 (119) hide show
  1. package/CHANGELOG.md +117 -4
  2. package/README.md +32 -39
  3. package/dist/changelog.d.ts +3 -2
  4. package/dist/changelog.js +1 -1
  5. package/dist/cli/commands/providers.js +1 -1
  6. package/dist/cli/commands/sync.js +1 -1
  7. package/dist/cli/context.js +1 -1
  8. package/dist/cli/index.d.ts +4 -4
  9. package/dist/cli/index.js +1 -1
  10. package/dist/cli/register.d.ts +3 -3
  11. package/dist/cli/register.js +1 -1
  12. package/dist/config.d.ts +2 -2
  13. package/dist/config.js +1 -1
  14. package/dist/core.d.ts +4 -3
  15. package/dist/core.js +1 -1
  16. package/dist/index.d.ts +11 -9
  17. package/dist/index.js +1 -1
  18. package/dist/migrate.d.ts +3 -2
  19. package/dist/migrate.js +1 -1
  20. package/dist/package.js +1 -1
  21. package/dist/packages/changelog/src/cli/index.d.ts +2 -2
  22. package/dist/packages/changelog/src/cli/index.js +1 -1
  23. package/dist/packages/changelog/src/index.d.ts +4 -3
  24. package/dist/packages/changelog/src/index.js +1 -1
  25. package/dist/packages/changelog/src/run-workflows.d.ts +2 -2
  26. package/dist/packages/changelog/src/run.d.ts +8 -2
  27. package/dist/packages/changelog/src/run.js +1 -1
  28. package/dist/packages/changelog/src/sync.d.ts +13 -5
  29. package/dist/packages/changelog/src/sync.js +1 -1
  30. package/dist/packages/changelog/src/utils/versioning.d.ts +78 -0
  31. package/dist/packages/changelog/src/utils/versioning.js +1 -0
  32. package/dist/packages/changelog/src/utils/write.js +1 -1
  33. package/dist/packages/changelog/src/workflows.js +1 -1
  34. package/dist/packages/config/src/cli/index.d.ts +2 -2
  35. package/dist/packages/config/src/generators/index.d.ts +2 -2
  36. package/dist/packages/config/src/generators/index.js +1 -1
  37. package/dist/packages/config/src/generators/types.d.ts +16 -0
  38. package/dist/packages/config/src/generators/types.js +2 -1
  39. package/dist/packages/config/src/index.d.ts +3 -3
  40. package/dist/packages/config/src/index.js +1 -1
  41. package/dist/packages/config/src/schema.d.ts +1 -1
  42. package/dist/packages/config/src/schema.js +1 -1
  43. package/dist/packages/core/src/index.d.ts +5 -4
  44. package/dist/packages/core/src/index.js +1 -1
  45. package/dist/packages/core/src/loader.d.ts +3 -3
  46. package/dist/packages/core/src/loader.js +1 -1
  47. package/dist/packages/core/src/project-type.d.ts +2 -2
  48. package/dist/packages/core/src/provider-registry.d.ts +12 -0
  49. package/dist/packages/core/src/provider-registry.js +1 -0
  50. package/dist/packages/core/src/reset.d.ts +3 -3
  51. package/dist/packages/core/src/reset.js +1 -1
  52. package/dist/packages/core/src/sync.d.ts +2 -2
  53. package/dist/packages/core/src/vscode.d.ts +3 -3
  54. package/dist/packages/migrate/src/biome.d.ts +3 -3
  55. package/dist/packages/migrate/src/biome.js +1 -1
  56. package/dist/packages/migrate/src/cli/index.d.ts +5 -4
  57. package/dist/packages/migrate/src/cli/index.js +1 -1
  58. package/dist/packages/migrate/src/dprint.d.ts +2 -2
  59. package/dist/packages/migrate/src/dprint.js +1 -1
  60. package/dist/packages/migrate/src/eslint.d.ts +2 -2
  61. package/dist/packages/migrate/src/eslint.js +1 -1
  62. package/dist/packages/migrate/src/index.d.ts +3 -2
  63. package/dist/packages/migrate/src/index.js +1 -1
  64. package/dist/packages/migrate/src/prettier.d.ts +2 -2
  65. package/dist/packages/migrate/src/prettier.js +1 -1
  66. package/dist/packages/migrate/src/registry.d.ts +4 -4
  67. package/dist/packages/migrate/src/registry.js +1 -1
  68. package/dist/packages/migrate/src/types.d.ts +4 -4
  69. package/dist/packages/migrate/src/vite.d.ts +52 -0
  70. package/dist/packages/migrate/src/vite.js +5 -0
  71. package/dist/packages/project/src/cli/index.d.ts +2 -2
  72. package/dist/packages/project/src/config.js +1 -1
  73. package/dist/packages/project/src/index.d.ts +3 -3
  74. package/dist/packages/project/src/index.js +1 -1
  75. package/dist/packages/project/src/typescript.d.ts +1 -1
  76. package/dist/packages/project/src/typescript.js +1 -1
  77. package/dist/packages/shared/src/bin.d.ts +32 -0
  78. package/dist/packages/shared/src/bin.js +1 -0
  79. package/dist/packages/shared/src/config-schema.d.ts +131 -57
  80. package/dist/packages/shared/src/config-schema.js +1 -1
  81. package/dist/packages/shared/src/config-types.d.ts +42 -39
  82. package/dist/packages/shared/src/index.d.ts +9 -8
  83. package/dist/packages/shared/src/index.js +1 -1
  84. package/dist/packages/shared/src/logger.d.ts +7 -4
  85. package/dist/packages/shared/src/logger.js +1 -1
  86. package/dist/packages/shared/src/provider.d.ts +6 -6
  87. package/dist/packages/shared/src/run.d.ts +22 -2
  88. package/dist/packages/shared/src/run.js +1 -1
  89. package/dist/packages/shared/src/toolchain.d.ts +17 -19
  90. package/dist/packages/shared/src/toolchain.js +1 -1
  91. package/dist/packages/shared/src/types.d.ts +9 -9
  92. package/dist/packages/template/src/cli/index.d.ts +2 -2
  93. package/dist/packages/template/src/cli/index.js +1 -1
  94. package/dist/packages/template/src/online.d.ts +3 -3
  95. package/dist/packages/template/src/registry.d.ts +8 -8
  96. package/dist/packages/template/src/types.d.ts +3 -3
  97. package/dist/packages/tsconfig/src/cli/index.d.ts +2 -2
  98. package/dist/packages/tsdown/src/cli/index.d.ts +2 -2
  99. package/dist/packages/vite/src/cli/index.d.ts +2 -2
  100. package/dist/packages/vite/src/index.d.ts +4 -3
  101. package/dist/packages/vite/src/index.js +1 -1
  102. package/dist/packages/vite/src/plugin.d.ts +32 -19
  103. package/dist/packages/vite/src/plugin.js +1 -1
  104. package/dist/packages/vite/src/provider.d.ts +2 -2
  105. package/dist/packages/vite/src/resolve.d.ts +19 -0
  106. package/dist/packages/vite/src/resolve.js +1 -0
  107. package/dist/packages/vite/src/sync.d.ts +10 -14
  108. package/dist/packages/vite/src/sync.js +2 -2
  109. package/dist/packages/vite/src/vp.d.ts +5 -0
  110. package/dist/packages/vite/src/vp.js +1 -1
  111. package/dist/project.d.ts +2 -2
  112. package/dist/project.js +1 -1
  113. package/dist/providers.d.ts +8 -4
  114. package/dist/providers.js +1 -1
  115. package/dist/shared.d.ts +8 -7
  116. package/dist/shared.js +1 -1
  117. package/dist/vite.d.ts +4 -3
  118. package/dist/vite.js +1 -1
  119. package/package.json +25 -16
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{deepMerge as e,isPlainObject as t,mapValues as n,resolveSort as r,sort as i}from"./packages/shared/src/object-utils.js";import{mergeJsonAt as a,readJsonAt as o,readJsonFile as s,toJson as c,writeJsonFile as l}from"./packages/shared/src/fs-utils.js";import{LOG_LEVELS as u,configureLogger as d,createLogger as f,getLogOverrides as p,getLogger as m,isLogLevel as h,logger as g,normalizeLogLevel as _,setLogConfig as v,setLogOverrides as y,stripAnsi as b}from"./packages/shared/src/logger.js";import{providerActions as x}from"./packages/shared/src/provider.js";import{run as S,spawnCross as C}from"./packages/shared/src/run.js";import{asString as w,camelCase as T,camelCaseId as E,capitalize as D,constantCase as O,ensureLeadingSlash as k,ensureSlashes as A,ensureTrailingSlash as j,formatCliFlag as M,hasText as N,indent as P,isLocalhost as F,kebabCase as I,pascalCase as L,removeDoubleSlashes as R,removeLeadingSlash as z,removeTrailingSlash as B,sanitizeSlashes as V,snakeCase as H,str as U,titleCase as W}from"./packages/shared/src/string-utils.js";import{applyReplacements as G,applyReplacementsDeep as K,createReplacer as q,defineReplacements as J,extractTokens as Y,hasUnresolvedTokens as X,tokenPattern as Z}from"./packages/shared/src/template.js";import{CONFIG_SECTION_DESCRIPTIONS as Q,CONFIG_SECTION_SCHEMAS as $,CONFIG_TYPE_SCHEMAS as ee,biomeConfigSchema as te,changelogConfigSchema as ne,changelogWorkflowsConfigSchema as re,dbxConfigSchema as ie,loggerConfigSchema as ae,projectConfigSchema as oe,projectTypeSchema as se,providersConfigSchema as ce,templateKindSchema as le,templateSourceSchema as ue,templateSourceTypeSchema as de,templatesConfigSchema as fe,toolingConfigSchema as pe,tsconfigConfigSchema as me,viteConfigSchema as he,watchConfigSchema as ge,workflowConfigSchema as _e,workflowSettingSchema as ve,workflowStepSchema as ye,workflowStepsConfigSchema as be}from"./packages/shared/src/config-schema.js";import{CONFIG_FILE_NAMES as xe,defineConfig as Se,repoSlugFromUrl as Ce,resolveTokens as we,sectionConfig as Te,sectionEnabled as Ee}from"./packages/shared/src/toolchain.js";import{toYaml as De}from"./packages/shared/src/yaml.js";import{src_exports as Oe}from"./packages/shared/src/index.js";import{src_exports as ke}from"./packages/biome/src/index.js";import{src_exports as Ae}from"./packages/changelog/src/index.js";import{src_exports as je}from"./packages/config/src/index.js";import{DBX_GITIGNORE_BLOCK as Me,ensureDbxGitignore as Ne}from"./packages/core/src/gitignore.js";import{detectProjectType as Pe,resolveProjectType as Fe}from"./packages/core/src/project-type.js";import{findConfigFile as Ie,loadToolingConfig as Le}from"./packages/core/src/loader.js";import{IGNORED_DIRS as Re,buildProjectGraph as ze,detectPackageManager as Be,orderProjects as Ve,projectGraphPath as He,readProjectGraph as Ue,writeProjectGraph as We}from"./packages/core/src/graph.js";import{MANIFEST_DIR as Ge,MANIFEST_FILE as Ke,readManifest as qe,writeManifest as Je}from"./packages/core/src/manifest.js";import{selectProjects as Ye}from"./packages/core/src/select.js";import{resetProjects as Xe,resetTooling as Ze}from"./packages/core/src/reset.js";import{runSync as Qe}from"./packages/core/src/sync.js";import{vscodeSyncTask as $e}from"./packages/core/src/vscode.js";import{runWatch as et}from"./packages/core/src/watch.js";import{src_exports as tt}from"./packages/core/src/index.js";import{src_exports as nt}from"./packages/tsconfig/src/index.js";import{src_exports as rt}from"./packages/project/src/index.js";import{src_exports as it}from"./packages/tsdown/src/index.js";import{defaultSyncTasks as at}from"./sync.js";export{xe as CONFIG_FILE_NAMES,Q as CONFIG_SECTION_DESCRIPTIONS,$ as CONFIG_SECTION_SCHEMAS,ee as CONFIG_TYPE_SCHEMAS,Me as DBX_GITIGNORE_BLOCK,Re as IGNORED_DIRS,u as LOG_LEVELS,Ge as MANIFEST_DIR,Ke as MANIFEST_FILE,G as applyReplacements,K as applyReplacementsDeep,w as asString,ke as biome,te as biomeConfigSchema,ze as buildProjectGraph,T as camelCase,E as camelCaseId,D as capitalize,Ae as changelog,ne as changelogConfigSchema,re as changelogWorkflowsConfigSchema,je as config,d as configureLogger,O as constantCase,tt as core,f as createLogger,q as createReplacer,ie as dbxConfigSchema,e as deepMerge,at as defaultSyncTasks,Se as defineConfig,J as defineReplacements,Be as detectPackageManager,Pe as detectProjectType,Ne as ensureDbxGitignore,k as ensureLeadingSlash,A as ensureSlashes,j as ensureTrailingSlash,Y as extractTokens,Ie as findConfigFile,M as formatCliFlag,p as getLogOverrides,m as getLogger,N as hasText,X as hasUnresolvedTokens,P as indent,F as isLocalhost,h as isLogLevel,t as isPlainObject,I as kebabCase,Le as loadToolingConfig,g as logger,ae as loggerConfigSchema,n as mapValues,a as mergeJsonAt,_ as normalizeLogLevel,Ve as orderProjects,L as pascalCase,rt as project,oe as projectConfigSchema,He as projectGraphPath,se as projectTypeSchema,x as providerActions,ce as providersConfigSchema,o as readJsonAt,s as readJsonFile,qe as readManifest,Ue as readProjectGraph,R as removeDoubleSlashes,z as removeLeadingSlash,B as removeTrailingSlash,Ce as repoSlugFromUrl,Xe as resetProjects,Ze as resetTooling,Fe as resolveProjectType,r as resolveSort,we as resolveTokens,S as run,Qe as runSync,et as runWatch,V as sanitizeSlashes,Te as sectionConfig,Ee as sectionEnabled,Ye as selectProjects,v as setLogConfig,y as setLogOverrides,Oe as shared,H as snakeCase,i as sort,C as spawnCross,U as str,b as stripAnsi,le as templateKindSchema,ue as templateSourceSchema,de as templateSourceTypeSchema,fe as templatesConfigSchema,W as titleCase,c as toJson,De as toYaml,Z as tokenPattern,pe as toolingConfigSchema,nt as tsconfig,me as tsconfigConfigSchema,it as tsdown,he as viteConfigSchema,$e as vscodeSyncTask,ge as watchConfigSchema,_e as workflowConfigSchema,ve as workflowSettingSchema,ye as workflowStepSchema,be as workflowStepsConfigSchema,l as writeJsonFile,Je as writeManifest,We as writeProjectGraph};
1
+ import"node:path";import"node:url";import.meta.url;import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./packages/shared/src/bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./packages/shared/src/object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./packages/shared/src/fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./packages/shared/src/logger.js";import{providerActions as w}from"./packages/shared/src/provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./packages/shared/src/run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,snakeCase as K,str as q,titleCase as J}from"./packages/shared/src/string-utils.js";import{applyReplacements as Y,applyReplacementsDeep as X,createReplacer as Z,defineReplacements as Q,extractTokens as $,hasUnresolvedTokens as ee,tokenPattern as te}from"./packages/shared/src/template.js";import{CONFIG_SECTION_DESCRIPTIONS as ne,CONFIG_SECTION_SCHEMAS as re,CONFIG_TYPE_SCHEMAS as ie,biomeConfigSchema as ae,changelogConfigSchema as oe,changelogVersioningConfigSchema as se,changelogVersioningSchema as ce,changelogVersioningTargetSchema as le,changelogWorkflowsConfigSchema as ue,dbxConfigSchema as de,loggerConfigSchema as fe,projectConfigSchema as pe,projectTypeSchema as me,providersConfigSchema as he,templateKindSchema as ge,templateSourceSchema as _e,templateSourceTypeSchema as ve,templatesConfigSchema as ye,toolchainConfigSchema as be,tsconfigConfigSchema as xe,viteConfigSchema as Se,watchConfigSchema as Ce,workflowConfigSchema as we,workflowSettingSchema as Te,workflowStepSchema as Ee,workflowStepsConfigSchema as De}from"./packages/shared/src/config-schema.js";import{CONFIG_FILE_NAMES as Oe,defineConfig as ke,repoSlugFromUrl as Ae,resolveTokens as je,sectionConfig as Me,sectionEnabled as Ne}from"./packages/shared/src/toolchain.js";import{toYaml as Pe}from"./packages/shared/src/yaml.js";import{src_exports as Fe}from"./packages/shared/src/index.js";import{src_exports as Ie}from"./packages/biome/src/index.js";import{src_exports as Le}from"./packages/changelog/src/index.js";import{src_exports as Re}from"./packages/config/src/index.js";import{DBX_GITIGNORE_BLOCK as ze,ensureDbxGitignore as Be}from"./packages/core/src/gitignore.js";import{detectProjectType as Ve,resolveProjectType as He}from"./packages/core/src/project-type.js";import{findConfigFile as Ue,loadToolchainConfig as We}from"./packages/core/src/loader.js";import{IGNORED_DIRS as Ge,buildProjectGraph as Ke,detectPackageManager as qe,orderProjects as Je,projectGraphPath as Ye,readProjectGraph as Xe,writeProjectGraph as Ze}from"./packages/core/src/graph.js";import{MANIFEST_DIR as Qe,MANIFEST_FILE as $e,readManifest as et,writeManifest as tt}from"./packages/core/src/manifest.js";import{providerRegistryPath as nt,readProviderRegistry as rt,writeProviderRegistry as it}from"./packages/core/src/provider-registry.js";import{selectProjects as at}from"./packages/core/src/select.js";import{resetProjects as ot,resetToolchain as st}from"./packages/core/src/reset.js";import{runSync as ct}from"./packages/core/src/sync.js";import{vscodeSyncTask as lt}from"./packages/core/src/vscode.js";import{runWatch as ut}from"./packages/core/src/watch.js";import{src_exports as dt}from"./packages/core/src/index.js";import{src_exports as ft}from"./packages/tsconfig/src/index.js";import{src_exports as pt}from"./packages/project/src/index.js";import{src_exports as mt}from"./packages/tsdown/src/index.js";import{defaultSyncTasks as ht}from"./sync.js";export{Oe as CONFIG_FILE_NAMES,ne as CONFIG_SECTION_DESCRIPTIONS,re as CONFIG_SECTION_SCHEMAS,ie as CONFIG_TYPE_SCHEMAS,ze as DBX_GITIGNORE_BLOCK,Ge as IGNORED_DIRS,p as LOG_LEVELS,Qe as MANIFEST_DIR,$e as MANIFEST_FILE,e as TOOLCHAIN_PACKAGE,Y as applyReplacements,X as applyReplacementsDeep,O as asString,Ie as biome,ae as biomeConfigSchema,Ke as buildProjectGraph,k as camelCase,A as camelCaseId,j as capitalize,Le as changelog,oe as changelogConfigSchema,se as changelogVersioningConfigSchema,ce as changelogVersioningSchema,le as changelogVersioningTargetSchema,ue as changelogWorkflowsConfigSchema,Re as config,m as configureLogger,M as constantCase,dt as core,h as createLogger,Z as createReplacer,de as dbxConfigSchema,r as deepMerge,ht as defaultSyncTasks,ke as defineConfig,Q as defineReplacements,qe as detectPackageManager,Ve as detectProjectType,Be as ensureDbxGitignore,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,$ as extractTokens,Ue as findConfigFile,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,ee as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,We as loadToolchainConfig,n as localToolchainVersion,y as logger,fe as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,Je as orderProjects,V as pascalCase,pt as project,pe as projectConfigSchema,Ye as projectGraphPath,me as projectTypeSchema,w as providerActions,nt as providerRegistryPath,he as providersConfigSchema,l as readJsonAt,u as readJsonFile,et as readManifest,Xe as readProjectGraph,rt as readProviderRegistry,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,Ae as repoSlugFromUrl,ot as resetProjects,st as resetToolchain,He as resolveProjectType,o as resolveSort,je as resolveTokens,E as run,ct as runSync,ut as runWatch,G as sanitizeSlashes,Me as sectionConfig,Ne as sectionEnabled,at as selectProjects,x as setLogConfig,S as setLogOverrides,Fe as shared,K as snakeCase,s as sort,D as spawnCross,q as str,C as stripAnsi,ge as templateKindSchema,_e as templateSourceSchema,ve as templateSourceTypeSchema,ye as templatesConfigSchema,J as titleCase,d as toJson,Pe as toYaml,te as tokenPattern,be as toolchainConfigSchema,ft as tsconfig,xe as tsconfigConfigSchema,mt as tsdown,Se as viteConfigSchema,lt as vscodeSyncTask,Ce as watchConfigSchema,we as workflowConfigSchema,Te as workflowSettingSchema,Ee as workflowStepSchema,De as workflowStepsConfigSchema,f as writeJsonFile,tt as writeManifest,Ze as writeProjectGraph,it as writeProviderRegistry};
package/dist/migrate.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationResult, ToolingMigration, UnmappedItem } from "./packages/migrate/src/types.js";
3
+ import { MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationResult, ToolchainMigration, UnmappedItem } from "./packages/migrate/src/types.js";
4
4
  import { BIOME_CONFIG_FILES, biomeToOx, findBiomeConfig, readJsonc, stripJsonc } from "./packages/migrate/src/biome.js";
5
5
  import { FileDiff, FileStatus, diffFiles, hasPending } from "./packages/migrate/src/check.js";
6
6
  import { migrateCommands } from "./packages/migrate/src/cli/index.js";
@@ -10,6 +10,7 @@ import { DEFAULT_IGNORE, OxfmtMapping, mapBiomeFormatter, mapBiomeIncludes, mapB
10
10
  import { OxlintMapping, RULE_MAP, mapBiomeToOxlint } from "./packages/migrate/src/oxlint-map.js";
11
11
  import { findPrettierConfig, mapPrettierToOxfmt, prettierToOx, readPrettierIgnore } from "./packages/migrate/src/prettier.js";
12
12
  import { MigrationInfo, detectMigrations, findMigration, listMigrations, migrations, runDetectedMigrations, runMigration } from "./packages/migrate/src/registry.js";
13
+ import { VITE_CONFIG_FILES, ensureViteFmtIgnore, extractViteObject, findDbxConfig, findViteConfig, foldViteIntoConfig, scanLiteralObject, viteToToolchain } from "./packages/migrate/src/vite.js";
13
14
  import { findTopLevelValue, matchBracket, mergeViteConfig, renderViteTarget, serializeTs, writeViteTarget } from "./packages/migrate/src/vite-target.js";
14
15
  import "./packages/migrate/src/index.js";
15
- export { BIOME_CONFIG_FILES, DEFAULT_IGNORE, FileDiff, FileStatus, MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationInfo, MigrationResult, OxfmtMapping, OxlintMapping, RULE_MAP, ToolingMigration, UnmappedItem, biomeToOx, detectMigrations, diffFiles, dprintToOx, eslintToOx, findBiomeConfig, findDprintConfig, findEslintConfig, findMigration, findPrettierConfig, findTopLevelValue, hasPending, listMigrations, mapBiomeFormatter, mapBiomeIncludes, mapBiomeToOxfmt, mapBiomeToOxlint, mapDprintToOxfmt, mapOrganizeImports, mapPrettierToOxfmt, mapRuleName, matchBracket, mergeViteConfig, migrateCommands, migrations, prettierToOx, readJsonc, readPrettierIgnore, renderViteTarget, runDetectedMigrations, runMigration, runOxlintMigrate, serializeTs, stripJsonc, writeViteTarget };
16
+ export { BIOME_CONFIG_FILES, DEFAULT_IGNORE, FileDiff, FileStatus, MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationInfo, MigrationResult, OxfmtMapping, OxlintMapping, RULE_MAP, ToolchainMigration, UnmappedItem, VITE_CONFIG_FILES, biomeToOx, detectMigrations, diffFiles, dprintToOx, ensureViteFmtIgnore, eslintToOx, extractViteObject, findBiomeConfig, findDbxConfig, findDprintConfig, findEslintConfig, findMigration, findPrettierConfig, findTopLevelValue, findViteConfig, foldViteIntoConfig, hasPending, listMigrations, mapBiomeFormatter, mapBiomeIncludes, mapBiomeToOxfmt, mapBiomeToOxlint, mapDprintToOxfmt, mapOrganizeImports, mapPrettierToOxfmt, mapRuleName, matchBracket, mergeViteConfig, migrateCommands, migrations, prettierToOx, readJsonc, readPrettierIgnore, renderViteTarget, runDetectedMigrations, runMigration, runOxlintMigrate, scanLiteralObject, serializeTs, stripJsonc, viteToToolchain, writeViteTarget };
package/dist/migrate.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{diffFiles as e,hasPending as t}from"./packages/migrate/src/check.js";import{DEFAULT_IGNORE as n,mapBiomeFormatter as r,mapBiomeIncludes as i,mapBiomeToOxfmt as a,mapOrganizeImports as o}from"./packages/migrate/src/oxfmt-map.js";import{RULE_MAP as s,mapBiomeToOxlint as c}from"./packages/migrate/src/oxlint-map.js";import{findTopLevelValue as l,matchBracket as u,mergeViteConfig as d,renderViteTarget as f,serializeTs as p,writeViteTarget as m}from"./packages/migrate/src/vite-target.js";import{BIOME_CONFIG_FILES as h,biomeToOx as g,findBiomeConfig as _,readJsonc as v,stripJsonc as y}from"./packages/migrate/src/biome.js";import{dprintToOx as b,findDprintConfig as x,mapDprintToOxfmt as S}from"./packages/migrate/src/dprint.js";import{eslintToOx as C,findEslintConfig as w,mapRuleName as T,runOxlintMigrate as E}from"./packages/migrate/src/eslint.js";import{findPrettierConfig as D,mapPrettierToOxfmt as O,prettierToOx as k,readPrettierIgnore as A}from"./packages/migrate/src/prettier.js";import{detectMigrations as j,findMigration as M,listMigrations as N,migrations as P,runDetectedMigrations as F,runMigration as I}from"./packages/migrate/src/registry.js";import{migrateCommands as L}from"./packages/migrate/src/cli/index.js";import"./packages/migrate/src/index.js";export{h as BIOME_CONFIG_FILES,n as DEFAULT_IGNORE,s as RULE_MAP,g as biomeToOx,j as detectMigrations,e as diffFiles,b as dprintToOx,C as eslintToOx,_ as findBiomeConfig,x as findDprintConfig,w as findEslintConfig,M as findMigration,D as findPrettierConfig,l as findTopLevelValue,t as hasPending,N as listMigrations,r as mapBiomeFormatter,i as mapBiomeIncludes,a as mapBiomeToOxfmt,c as mapBiomeToOxlint,S as mapDprintToOxfmt,o as mapOrganizeImports,O as mapPrettierToOxfmt,T as mapRuleName,u as matchBracket,d as mergeViteConfig,L as migrateCommands,P as migrations,k as prettierToOx,v as readJsonc,A as readPrettierIgnore,f as renderViteTarget,F as runDetectedMigrations,I as runMigration,E as runOxlintMigrate,p as serializeTs,y as stripJsonc,m as writeViteTarget};
1
+ import"node:path";import"node:url";import.meta.url;import{diffFiles as e,hasPending as t}from"./packages/migrate/src/check.js";import{DEFAULT_IGNORE as n,mapBiomeFormatter as r,mapBiomeIncludes as i,mapBiomeToOxfmt as a,mapOrganizeImports as o}from"./packages/migrate/src/oxfmt-map.js";import{RULE_MAP as s,mapBiomeToOxlint as c}from"./packages/migrate/src/oxlint-map.js";import{findTopLevelValue as l,matchBracket as u,mergeViteConfig as d,renderViteTarget as f,serializeTs as p,writeViteTarget as m}from"./packages/migrate/src/vite-target.js";import{BIOME_CONFIG_FILES as h,biomeToOx as g,findBiomeConfig as _,readJsonc as v,stripJsonc as y}from"./packages/migrate/src/biome.js";import{dprintToOx as b,findDprintConfig as x,mapDprintToOxfmt as S}from"./packages/migrate/src/dprint.js";import{eslintToOx as C,findEslintConfig as w,mapRuleName as T,runOxlintMigrate as E}from"./packages/migrate/src/eslint.js";import{findPrettierConfig as D,mapPrettierToOxfmt as O,prettierToOx as k,readPrettierIgnore as A}from"./packages/migrate/src/prettier.js";import{VITE_CONFIG_FILES as j,ensureViteFmtIgnore as M,extractViteObject as N,findDbxConfig as P,findViteConfig as F,foldViteIntoConfig as I,scanLiteralObject as L,viteToToolchain as R}from"./packages/migrate/src/vite.js";import{detectMigrations as z,findMigration as B,listMigrations as V,migrations as H,runDetectedMigrations as U,runMigration as W}from"./packages/migrate/src/registry.js";import{migrateCommands as G}from"./packages/migrate/src/cli/index.js";import"./packages/migrate/src/index.js";export{h as BIOME_CONFIG_FILES,n as DEFAULT_IGNORE,s as RULE_MAP,j as VITE_CONFIG_FILES,g as biomeToOx,z as detectMigrations,e as diffFiles,b as dprintToOx,M as ensureViteFmtIgnore,C as eslintToOx,N as extractViteObject,_ as findBiomeConfig,P as findDbxConfig,x as findDprintConfig,w as findEslintConfig,B as findMigration,D as findPrettierConfig,l as findTopLevelValue,F as findViteConfig,I as foldViteIntoConfig,t as hasPending,V as listMigrations,r as mapBiomeFormatter,i as mapBiomeIncludes,a as mapBiomeToOxfmt,c as mapBiomeToOxlint,S as mapDprintToOxfmt,o as mapOrganizeImports,O as mapPrettierToOxfmt,T as mapRuleName,u as matchBracket,d as mergeViteConfig,G as migrateCommands,H as migrations,k as prettierToOx,v as readJsonc,A as readPrettierIgnore,f as renderViteTarget,U as runDetectedMigrations,W as runMigration,E as runOxlintMigrate,L as scanLiteralObject,p as serializeTs,y as stripJsonc,R as viteToToolchain,m as writeViteTarget};
package/dist/package.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;var e=`1.3.1`;export{e as version};
1
+ import"node:path";import"node:url";import.meta.url;var e=`1.6.0`;export{e as version};
@@ -1,8 +1,8 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingCommand } from "../../../shared/src/types.js";
3
+ import { ToolchainCommand } from "../../../shared/src/types.js";
4
4
  import "../../../shared/src/index.js";
5
5
  //#region packages/changelog/src/cli/index.d.ts
6
6
  /** Build the changelog commands (`changelog`, `workflow`). */
7
- export declare function changelogCommands(): ToolingCommand[];
7
+ export declare function changelogCommands(): ToolchainCommand[];
8
8
  //#endregion
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{runChangelog as t}from"../run.js";import{runWorkflows as n}from"../run-workflows.js";function r(){return[{name:`workflow`,description:"Trigger one or more generated GitHub workflows (via `gh workflow run`).",args:[{name:`workflows`,description:`Workflow 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).`}],run:async(t,r)=>{let i=t.workflows,a=Array.isArray(i)?i:i?[String(i)]:void 0,o=await n({cwd:t.cwd??r.cwd,config:r.config,...a?{workflows:a}:{},...t.ref?{ref:t.ref}:{},...t.gh?{gh:t.gh}:{}}),s=!1;for(let t of o.ran)t.code===0?e.info(`triggered ${t.file}`):(s=!0,e.error(`${t.file} exited ${t.code}`));s&&(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=>{let n=[];e.range&&n.push(`--range`,String(e.range)),e.dryRun&&n.push(`--dry-run`),e.version&&n.push(`--version`,String(e.version)),e.baseVersion&&n.push(`--base-version`,String(e.baseVersion)),e.processingMethod&&n.push(`--processing-method`,String(e.processingMethod)),e.formatOnly&&n.push(`--format-only`),e.packageChangesSection===!1&&n.push(`--no-package-changes-section`),t(n)}}]}export{r as changelogCommands};
1
+ import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import{sectionConfig as t}from"../../../shared/src/toolchain.js";import"../../../shared/src/index.js";import{runChangelog as n}from"../run.js";import{runWorkflows as r}from"../run-workflows.js";function i(){return[{name:`workflow`,description:"Trigger one or more generated GitHub workflows (via `gh workflow run`).",args:[{name:`workflows`,description:`Workflow 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).`}],run:async(t,n)=>{let i=t.workflows,a=Array.isArray(i)?i:i?[String(i)]:void 0,o=await r({cwd:t.cwd??n.cwd,config:n.config,...a?{workflows:a}:{},...t.ref?{ref:t.ref}:{},...t.gh?{gh:t.gh}:{}}),s=!1;for(let t of o.ran)t.code===0?e.info(`triggered ${t.file}`):(s=!0,e.error(`${t.file} exited ${t.code}`));s&&(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.changelog))}}]}export{i as changelogCommands};
@@ -10,10 +10,11 @@ import { renderChangelogEntry } from "./utils/version.js";
10
10
  import { main, runChangelog } from "./run.js";
11
11
  import { DEFAULT_WORKFLOW_TOKENS, RenderWorkflowOptions, WORKFLOW_FILENAMES, Workflow, WorkflowId, WorkflowJob, applyWorkflowConfig, defaultWorkflows, isEnabled, renderWorkflow, renderWorkflows } from "./workflows.js";
12
12
  import { RanWorkflow, RunWorkflowsOptions, RunWorkflowsResult, resolveWorkflowId, runWorkflows } from "./run-workflows.js";
13
- import { COMMITLINT_HEADER, WORKFLOW_HEADER, changelogSyncTask, workflowFilenames } from "./sync.js";
13
+ import { COMMITLINT_HEADER, COMMIT_MSG_HOOK, HOOK_HEADER, WORKFLOW_HEADER, changelogSyncTask, workflowFilenames } from "./sync.js";
14
14
  import { CommitlintOptions, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, renderCommitlintConfig } from "./templates.js";
15
+ import { PlanVersionsOptions, ResolvedVersioning, VersionPackages, VersionPlan, VersioningTarget, discoverVersionPackages, planVersions, readPackageVersion, resolveVersioning, writePackageVersion } from "./utils/versioning.js";
15
16
  declare namespace index_d_exports {
16
- export { AuthorInfo, BumpType, COMMITLINT_HEADER, CliOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_TOKENS, ExistingEntry, GroupedItem, GroupedRule, IssueInfo, ParsedCommit, ProcessingMethod, RanWorkflow, RenderWorkflowOptions, RunWorkflowsOptions, RunWorkflowsResult, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, applyWorkflowConfig, buildSummary, changelogSyncTask, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, formatBody, groupItems, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, readCommits, reformatChangelogContent, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderGroups, renderWorkflow, renderWorkflows, resolveWorkflowId, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilenames };
17
+ export { AuthorInfo, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, CliOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_TOKENS, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, applyWorkflowConfig, buildSummary, changelogSyncTask, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, discoverVersionPackages, formatBody, groupItems, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, reformatChangelogContent, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilenames, writePackageVersion };
17
18
  }
18
19
  //#endregion
19
- export { AuthorInfo, BumpType, COMMITLINT_HEADER, CliOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_TOKENS, ExistingEntry, GroupedItem, GroupedRule, IssueInfo, ParsedCommit, ProcessingMethod, RanWorkflow, RenderWorkflowOptions, RunWorkflowsOptions, RunWorkflowsResult, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, applyWorkflowConfig, buildSummary, changelogSyncTask, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, formatBody, groupItems, index_d_exports, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, readCommits, reformatChangelogContent, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderGroups, renderWorkflow, renderWorkflows, resolveWorkflowId, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilenames };
20
+ export { AuthorInfo, BumpType, COMMITLINT_HEADER, COMMIT_MSG_HOOK, CliOptions, CommitRecord, CommitlintOptions, DEFAULT_WORKFLOW_TOKENS, ExistingEntry, GroupedItem, GroupedRule, HOOK_HEADER, IssueInfo, ParsedCommit, PlanVersionsOptions, ProcessingMethod, RanWorkflow, RenderWorkflowOptions, ResolvedVersioning, RunWorkflowsOptions, RunWorkflowsResult, VersionPackages, VersionPlan, VersioningTarget, WORKFLOW_FILENAMES, WORKFLOW_HEADER, Workflow, WorkflowId, WorkflowJob, applyWorkflowConfig, buildSummary, changelogSyncTask, conventionalCommitsVscodeExtensions, conventionalCommitsVscodeSettings, defaultWorkflows, deriveBump, discoverVersionPackages, formatBody, groupItems, index_d_exports, isEnabled, main, parseArgsCli, parseCcSubject, parseExistingChangelog, planVersions, readCommits, readPackageVersion, reformatChangelogContent, renderChangelogEntry, renderCommitRef, renderCommitlintConfig, renderGroups, renderWorkflow, renderWorkflows, resolveVersioning, resolveWorkflowId, ruleTitle, runChangelog, runWorkflows, splitInlineDescription, workflowFilenames, 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{main as h,runChangelog as g}from"./run.js";import{DEFAULT_WORKFLOW_TOKENS as _,WORKFLOW_FILENAMES as v,applyWorkflowConfig as y,defaultWorkflows as b,isEnabled as x,renderWorkflow as S,renderWorkflows as C}from"./workflows.js";import{resolveWorkflowId as w,runWorkflows as T}from"./run-workflows.js";import{conventionalCommitsVscodeExtensions as E,conventionalCommitsVscodeSettings as D,renderCommitlintConfig as O}from"./templates.js";import{COMMITLINT_HEADER as k,WORKFLOW_HEADER as A,changelogSyncTask as j,workflowFilenames as M}from"./sync.js";var N=/* @__PURE__ */ e({COMMITLINT_HEADER:()=>k,DEFAULT_WORKFLOW_TOKENS:()=>_,WORKFLOW_FILENAMES:()=>v,WORKFLOW_HEADER:()=>A,applyWorkflowConfig:()=>y,buildSummary:()=>p,changelogSyncTask:()=>j,conventionalCommitsVscodeExtensions:()=>E,conventionalCommitsVscodeSettings:()=>D,defaultWorkflows:()=>b,deriveBump:()=>n,formatBody:()=>i,groupItems:()=>a,isEnabled:()=>x,main:()=>h,parseArgsCli:()=>t,parseCcSubject:()=>o,parseExistingChangelog:()=>d,readCommits:()=>r,reformatChangelogContent:()=>f,renderChangelogEntry:()=>u,renderCommitRef:()=>m,renderCommitlintConfig:()=>O,renderGroups:()=>s,renderWorkflow:()=>S,renderWorkflows:()=>C,resolveWorkflowId:()=>w,ruleTitle:()=>c,runChangelog:()=>g,runWorkflows:()=>T,splitInlineDescription:()=>l,workflowFilenames:()=>M});export{k as COMMITLINT_HEADER,_ as DEFAULT_WORKFLOW_TOKENS,v as WORKFLOW_FILENAMES,A as WORKFLOW_HEADER,y as applyWorkflowConfig,p as buildSummary,j as changelogSyncTask,E as conventionalCommitsVscodeExtensions,D as conventionalCommitsVscodeSettings,b as defaultWorkflows,n as deriveBump,i as formatBody,a as groupItems,x as isEnabled,h as main,t as parseArgsCli,o as parseCcSubject,d as parseExistingChangelog,r as readCommits,f as reformatChangelogContent,u as renderChangelogEntry,m as renderCommitRef,O as renderCommitlintConfig,s as renderGroups,S as renderWorkflow,C as renderWorkflows,w as resolveWorkflowId,c as ruleTitle,g as runChangelog,T as runWorkflows,l as splitInlineDescription,N as src_exports,M as workflowFilenames};
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{discoverVersionPackages as h,planVersions as g,readPackageVersion as _,resolveVersioning as v,writePackageVersion as y}from"./utils/versioning.js";import{main as b,runChangelog as x}from"./run.js";import{DEFAULT_WORKFLOW_TOKENS as S,WORKFLOW_FILENAMES as C,applyWorkflowConfig as w,defaultWorkflows as T,isEnabled as E,renderWorkflow as D,renderWorkflows as O}from"./workflows.js";import{resolveWorkflowId as k,runWorkflows as A}from"./run-workflows.js";import{conventionalCommitsVscodeExtensions as j,conventionalCommitsVscodeSettings as M,renderCommitlintConfig as N}from"./templates.js";import{COMMITLINT_HEADER as P,COMMIT_MSG_HOOK as F,HOOK_HEADER as I,WORKFLOW_HEADER as L,changelogSyncTask as R,workflowFilenames as z}from"./sync.js";var B=/* @__PURE__ */ e({COMMITLINT_HEADER:()=>P,COMMIT_MSG_HOOK:()=>F,DEFAULT_WORKFLOW_TOKENS:()=>S,HOOK_HEADER:()=>I,WORKFLOW_FILENAMES:()=>C,WORKFLOW_HEADER:()=>L,applyWorkflowConfig:()=>w,buildSummary:()=>p,changelogSyncTask:()=>R,conventionalCommitsVscodeExtensions:()=>j,conventionalCommitsVscodeSettings:()=>M,defaultWorkflows:()=>T,deriveBump:()=>n,discoverVersionPackages:()=>h,formatBody:()=>i,groupItems:()=>a,isEnabled:()=>E,main:()=>b,parseArgsCli:()=>t,parseCcSubject:()=>o,parseExistingChangelog:()=>d,planVersions:()=>g,readCommits:()=>r,readPackageVersion:()=>_,reformatChangelogContent:()=>f,renderChangelogEntry:()=>u,renderCommitRef:()=>m,renderCommitlintConfig:()=>N,renderGroups:()=>s,renderWorkflow:()=>D,renderWorkflows:()=>O,resolveVersioning:()=>v,resolveWorkflowId:()=>k,ruleTitle:()=>c,runChangelog:()=>x,runWorkflows:()=>A,splitInlineDescription:()=>l,workflowFilenames:()=>z,writePackageVersion:()=>y});export{P as COMMITLINT_HEADER,F as COMMIT_MSG_HOOK,S as DEFAULT_WORKFLOW_TOKENS,I as HOOK_HEADER,C as WORKFLOW_FILENAMES,L as WORKFLOW_HEADER,w as applyWorkflowConfig,p as buildSummary,R as changelogSyncTask,j as conventionalCommitsVscodeExtensions,M as conventionalCommitsVscodeSettings,T as defaultWorkflows,n as deriveBump,h as discoverVersionPackages,i as formatBody,a as groupItems,E as isEnabled,b as main,t as parseArgsCli,o as parseCcSubject,d as parseExistingChangelog,g as planVersions,r as readCommits,_ as readPackageVersion,f as reformatChangelogContent,u as renderChangelogEntry,m as renderCommitRef,N as renderCommitlintConfig,s as renderGroups,D as renderWorkflow,O as renderWorkflows,v as resolveVersioning,k as resolveWorkflowId,c as ruleTitle,x as runChangelog,A as runWorkflows,l as splitInlineDescription,B as src_exports,z as workflowFilenames,y as writePackageVersion};
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingConfig } from "../../shared/src/toolchain.js";
3
+ import { ToolchainConfig } from "../../shared/src/toolchain.js";
4
4
  import "../../shared/src/index.js";
5
5
  import { WorkflowId } from "./workflows.js";
6
6
  //#region packages/changelog/src/run-workflows.d.ts
@@ -12,7 +12,7 @@ export interface RunWorkflowsOptions {
12
12
  /** Git ref to run the workflow on (eg. `main`). */
13
13
  ref?: string;
14
14
  /** The loaded tooling config, used to check `changelog.workflows`. */
15
- config?: ToolingConfig;
15
+ config?: ToolchainConfig;
16
16
  /** The `gh` executable (default `gh`). */
17
17
  gh?: string;
18
18
  }
@@ -1,5 +1,7 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainChangelogConfig } from "../../shared/src/config-types.js";
4
+ import "../../shared/src/index.js";
3
5
  import { parseArgsCli } from "./utils/args.js";
4
6
  import { formatBody, groupItems, parseCcSubject, renderGroups, ruleTitle, splitInlineDescription } from "./utils/format.js";
5
7
  import { deriveBump, readCommits } from "./utils/git.js";
@@ -7,8 +9,12 @@ import { parseExistingChangelog, reformatChangelogContent } from "./utils/reform
7
9
  import { buildSummary } from "./utils/summary.js";
8
10
  import { renderChangelogEntry } from "./utils/version.js";
9
11
  //#region packages/changelog/src/run.d.ts
10
- /** Run the changelog pipeline (bump versions + write changelogs). */
11
- export declare function runChangelog(argv?: string[]): void;
12
+ /**
13
+ * Run the changelog pipeline (bump versions + write changelogs). `changelog` is
14
+ * the consumer's `toolchain.changelog` section (threaded from `dbx changelog`);
15
+ * the standalone bin runs with the defaults (`versioning: true`, uniform).
16
+ */
17
+ export declare function runChangelog(argv?: string[], changelog?: ToolchainChangelogConfig): void;
12
18
  /** Alias kept for backwards compatibility. */
13
19
  export declare const main: typeof runChangelog;
14
20
  //#endregion
@@ -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"../../shared/src/index.js";import{parseArgsCli as r}from"./utils/args.js";import{deriveBump as i,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{bumpVersion as d,insertNewEntry as f,renderChangelogEntry as p,retagChangelogs as m}from"./utils/version.js";import{formatExistingChangelogs as h,parseExistingChangelog as g,reformatRootChangelog as _}from"./utils/reformat.js";import{buildSummary as v}from"./utils/summary.js";import{writeChangelogs as y}from"./utils/write.js";import{existsSync as b,readFileSync as x,realpathSync as S,writeFileSync as C}from"node:fs";function w(t=process.argv.slice(2)){let S=r(t);if(S.formatOnly){n.info(`[format-only] Reformatting ${o().length} changelog file(s)${S.dryRun?` (dry run)`:``}.`),h(S.dryRun,S.packageChanges);return}let w=s();if(S.version){let e=S.version.trim();if(!/^\d+\.\d+\.\d+$/.test(e))throw Error(`Invalid version: ${e}`);if(e===w){n.info(`Version is already ${e}; nothing to do.`);return}l(e),m(w,e),n.info(`Retagged versions ${w} -> ${e}.`);return}let T=w;if(S.baseVersion){if(!/^\d+\.\d+\.\d+$/.test(S.baseVersion.trim()))throw Error(`Invalid base version: ${S.baseVersion}`);T=S.baseVersion.trim()}let E=S.processingMethod,D=E===`all`,O=E!==`latest`&&E!==`all`?E:S.range,k=a(O),A=i(k),j=v(k),M=d(T,A);if(S.dryRun){let t=c(),r=e(t,`CHANGELOG.md`),i=b(r)?x(r,`utf8`):``,a=g(i)[0]?.version,o=S.packageChanges&&a?u(a):``,s=p(M,j,/* @__PURE__ */ new Date,!0,o);n.info(`[DRY-RUN] Range: ${O}`),n.info(`[DRY-RUN] Processing method: ${E}${D?` (backward reformat)`:``}`),n.info(`[DRY-RUN] Bump: ${A} (\`${T}\` -> \`${M}\`)`),n.info(`[DRY-RUN] ${k.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=D?_(S.packageChanges):i,d=f(l,s),m=e(t,`CHANGELOG.proposed.md`);C(m,d,`utf8`),n.info(`Wrote ${m}`)}else l(M),y(M,O,k,j,D,S.packageChanges),n.info(`Bumped ${T} -> ${M} (${A}) from ${k.length} commit(s).`)}const T=w,E=t(import.meta.url);process.argv[1]&&/[\\/]run\.[cm]?[jt]s$/.test(E)&&D(process.argv[1])===E&&w();function D(e){try{return S(e)}catch{return e}}export{T as main,w 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"../../shared/src/index.js";import{parseArgsCli as r}from"./utils/args.js";import{deriveBump as i,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{planVersions as v,resolveVersioning as y,writePackageVersion as b}from"./utils/versioning.js";import{writeChangelogs as x}from"./utils/write.js";import{existsSync as S,readFileSync as C,realpathSync as w,writeFileSync as T}from"node:fs";function E(t=process.argv.slice(2),w){let E=r(t);if(E.formatOnly){n.info(`[format-only] Reformatting ${o().length} changelog file(s)${E.dryRun?` (dry run)`:``}.`),m(E.dryRun,E.packageChanges);return}let D=s();if(E.version){let e=E.version.trim();if(!/^\d+\.\d+\.\d+$/.test(e))throw Error(`Invalid version: ${e}`);if(e===D){n.info(`Version is already ${e}; nothing to do.`);return}l(e),p(D,e),n.info(`Retagged versions ${D} -> ${e}.`);return}let O=D;if(E.baseVersion){if(!/^\d+\.\d+\.\d+$/.test(E.baseVersion.trim()))throw Error(`Invalid base version: ${E.baseVersion}`);O=E.baseVersion.trim()}let k=E.processingMethod,A=k===`all`,j=k!==`latest`&&k!==`all`?k:E.range,M=a(j),N=i(M),P=_(M),F=y(w),I=v({versioning:F,rootVersion:O,bump:N,range:j}),L=I.rootVersion;if(E.dryRun){let t=c(),r=e(t,`CHANGELOG.md`),i=S(r)?C(r,`utf8`):``,a=h(i)[0]?.version,o=E.packageChanges&&a?u(a):``,s=f(L,P,/* @__PURE__ */ new Date,!0,o);n.info(`[DRY-RUN] Range: ${j}`),n.info(`[DRY-RUN] Processing method: ${k}${A?` (backward reformat)`:``}`),n.info(`[DRY-RUN] Bump: ${N} (\`${O}\` -> \`${L}\`)`),n.info(`[DRY-RUN] Versioning: ${F.enabled?F.target:`disabled`}`),n.info(`[DRY-RUN] ${M.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=A?g(E.packageChanges):i,p=d(l,s),m=e(t,`CHANGELOG.proposed.md`);T(m,p,`utf8`),n.info(`Wrote ${m}`)}else{for(let[e,t]of I.writes)b(e,t);x(L,j,M,P,A,E.packageChanges,I.entries),F.enabled?n.info(`Bumped ${O} -> ${L} (${N}) from ${M.length} commit(s).`):n.info(`Wrote changelogs for ${L} (${N}) from ${M.length} commit(s); versioning disabled.`)}}const D=E,O=t(import.meta.url);process.argv[1]&&/[\\/]run\.[cm]?[jt]s$/.test(O)&&k(process.argv[1])===O&&E();function k(e){try{return w(e)}catch{return e}}export{D as main,E as runChangelog};
@@ -1,18 +1,26 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { SyncTask, ToolingConfig } from "../../shared/src/toolchain.js";
3
+ import { SyncTask, ToolchainConfig } from "../../shared/src/toolchain.js";
4
4
  import "../../shared/src/index.js";
5
5
  //#region packages/changelog/src/sync.d.ts
6
6
  /** The header prepended to every generated GitHub workflow. */
7
7
  export declare const WORKFLOW_HEADER = "# Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.";
8
8
  /** The header prepended to the generated commitlint config. */
9
9
  export declare const COMMITLINT_HEADER = "// Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.";
10
+ /** The header prepended to the generated husky `commit-msg` hook. */
11
+ export declare const HOOK_HEADER = "# Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.";
12
+ /**
13
+ * The husky `commit-msg` hook body. Husky runs it with `sh -e`, so a non-zero
14
+ * exit from commitlint aborts the commit. `npx --no` resolves the locally
15
+ * installed commitlint without falling back to a network install.
16
+ */
17
+ export declare const COMMIT_MSG_HOOK = "npx --no -- commitlint --edit \"$1\"";
10
18
  /** The workflow file names produced for a config. */
11
- export declare function workflowFilenames(config: ToolingConfig): string[];
19
+ export declare function workflowFilenames(config: ToolchainConfig): string[];
12
20
  /**
13
- * The changelog sync task: writes the GitHub workflows + the commitlint config
14
- * from the loaded `dbx.config.*`. Branches, triggers, steps, jobs and
15
- * per-workflow tokens are all taken from the config.
21
+ * The changelog sync task: writes the GitHub workflows, the commitlint config
22
+ * and the husky `commit-msg` hook from the loaded `dbx.config.*`. Branches,
23
+ * triggers, steps, jobs and per-workflow tokens are all taken from the config.
16
24
  */
17
25
  export declare function changelogSyncTask(): SyncTask;
18
26
  //#endregion
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{sectionConfig as e,sectionEnabled as t}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{renderWorkflows as n}from"./workflows.js";import{renderCommitlintConfig as r}from"./templates.js";const i="# Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.",a="// Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.";function o(t){return Object.keys(n({},e(t.changelog)?.workflows??{}))}function s(){return{name:`changelog`,projectTypes:[`monorepo-root`,`project`],enabled:e=>t(e.changelog),run:t=>{let o=e(t.config.changelog)??{},s=[];for(let[e,r]of Object.entries(n(t.tokens,o.workflows??{})))s.push({path:`.github/workflows/${e}`,content:`${i}\n${r}`});return s.push({path:`commitlint.config.mjs`,content:`${a}\n${r({...o.types?{types:o.types}:{},...o.scopes?{scopes:o.scopes}:{}})}`}),s}}}export{a as COMMITLINT_HEADER,i as WORKFLOW_HEADER,s as changelogSyncTask,o as workflowFilenames};
1
+ import"node:path";import"node:url";import.meta.url;import{sectionConfig as e,sectionEnabled as t}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{renderWorkflows as n}from"./workflows.js";import{renderCommitlintConfig as r}from"./templates.js";const i="# Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.",a="// Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.",o="# Generated by @deltabox/toolchain — edit dbx.config.* and run `dbx sync`.",s=`npx --no -- commitlint --edit "$1"`;function c(t){return Object.keys(n({},e(t.changelog)?.workflows??{}))}function l(){return{name:`changelog`,projectTypes:[`monorepo-root`,`project`],enabled:e=>t(e.changelog),run:t=>{let c=e(t.config.changelog)??{},l=[];for(let[e,r]of Object.entries(n(t.tokens,c.workflows??{})))l.push({path:`.github/workflows/${e}`,content:`${i}\n${r}`});return l.push({path:`commitlint.config.mjs`,content:`${a}\n${r({...c.types?{types:c.types}:{},...c.scopes?{scopes:c.scopes}:{}})}`}),l.push({path:`.husky/commit-msg`,content:`${o}\n${s}\n`}),l}}}export{a as COMMITLINT_HEADER,s as COMMIT_MSG_HOOK,o as HOOK_HEADER,i as WORKFLOW_HEADER,l as changelogSyncTask,c as workflowFilenames};
@@ -0,0 +1,78 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainChangelogConfig } from "../../../shared/src/config-types.js";
4
+ import "../../../shared/src/index.js";
5
+ import { BumpType, CommitRecord } from "./types.js";
6
+ //#region packages/changelog/src/utils/versioning.d.ts
7
+ /** How/where a changelog run applies its version bump. */
8
+ export type VersioningTarget = 'uniform' | 'root-only' | 'individual';
9
+ /** The normalized `changelog.versioning` config. */
10
+ export interface ResolvedVersioning {
11
+ /** Whether versions are written to `package.json` at all. */
12
+ enabled: boolean;
13
+ /** Where the bump is applied. */
14
+ target: VersioningTarget;
15
+ /** Explicit workspace globs (when configured). */
16
+ workspaces?: string[];
17
+ }
18
+ /**
19
+ * Normalize the `changelog.versioning` union (`boolean | { target, workspaces }`)
20
+ * into a concrete plan input. `true`/absent means uniform with defaults; `false`
21
+ * disables writing versions while still generating changelog entries.
22
+ */
23
+ export declare function resolveVersioning(changelog?: ToolchainChangelogConfig): ResolvedVersioning;
24
+ /** The packages a changelog run versions. */
25
+ export interface VersionPackages {
26
+ /** The repository root. */
27
+ root: string;
28
+ /** Whether the root has a `package.json`. */
29
+ rootHasPackage: boolean;
30
+ /** Workspace directories (root excluded) that have a `package.json`. */
31
+ workspaces: string[];
32
+ }
33
+ /** Read the `version` field of a directory's `package.json` (if any). */
34
+ export declare function readPackageVersion(dir: string): string | undefined;
35
+ /** Write `version` into a directory's `package.json` in place (minimal diff). */
36
+ export declare function writePackageVersion(dir: string, version: string): void;
37
+ /**
38
+ * Resolve the packages to version: the explicit `workspaces` globs, else the
39
+ * root `package.json` `workspaces` field, else the root `package.json` alone.
40
+ * Warns (never throws) when neither a root `package.json` nor a matching
41
+ * workspace is found, so a broken checkout can't wedge a release.
42
+ */
43
+ export declare function discoverVersionPackages(workspaces?: string[], root?: string): VersionPackages;
44
+ /** The version bump plan for a changelog run. */
45
+ export interface VersionPlan {
46
+ /** The version heading for the root changelog. */
47
+ rootVersion: string;
48
+ /** `package.json` writes to apply (empty when versioning is disabled). */
49
+ writes: Map<string, string>;
50
+ /** Workspace dirs to give a changelog entry, and the version to head it with. */
51
+ entries: Map<string, string>;
52
+ }
53
+ export interface PlanVersionsOptions {
54
+ versioning: ResolvedVersioning;
55
+ /** The starting root version (`--base-version` when provided). */
56
+ rootVersion: string;
57
+ /** The bump derived from all scanned commits. */
58
+ bump: BumpType;
59
+ /** The git revision range the commits were read from. */
60
+ range: string;
61
+ /** The repository root (default: resolved from cwd). */
62
+ root?: string;
63
+ /** Read the commits touching a workspace dir (injected for tests). */
64
+ commitsFor?: (dir: string) => CommitRecord[];
65
+ }
66
+ /**
67
+ * Compute which packages get which version, and which changelogs get an entry.
68
+ *
69
+ * - `uniform`: the root (when present) and every workspace share one version.
70
+ * - `root-only`: only the root is versioned; workspaces get no entry.
71
+ * - `individual`: the root tracks the overall bump; each workspace that has
72
+ * commits in the range is bumped on its own.
73
+ *
74
+ * A disabled `versioning` writes no `package.json` but still heads the
75
+ * changelogs as `uniform` would, so the entries stay complete.
76
+ */
77
+ export declare function planVersions(options: PlanVersionsOptions): VersionPlan;
78
+ //#endregion
@@ -0,0 +1 @@
1
+ import{relative as e,resolve as t}from"node:path";import"node:url";import.meta.url;import{logger as n}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{deriveBump as r,readCommits as i}from"./git.js";import{repoRoot as a}from"./repo.js";import{bumpVersion as o}from"./version.js";import{existsSync as s,globSync as c,readFileSync as l,writeFileSync as u}from"node:fs";function d(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}:{}}}function f(e){try{let n=JSON.parse(l(t(e,`package.json`),`utf8`));return typeof n.version==`string`?n.version:void 0}catch{return}}function p(e,r){let i=t(e,`package.json`),a=l(i,`utf8`),o=a.replace(/("version"\s*:\s*)"[^"]*"/,`$1"${r}"`);o!==a&&(u(i,o,`utf8`),n.info(` bumped ${i}`))}function m(e,r=a()){let i=s(t(r,`package.json`)),o=e;if(o===void 0&&i)try{o=JSON.parse(l(t(r,`package.json`),`utf8`)).workspaces}catch{o=void 0}let u=/* @__PURE__ */ new Set;for(let e of o??[])if(e===`.`)u.add(r);else for(let n of c(e,{cwd:r})){let e=t(r,n);s(t(e,`package.json`))&&u.add(e)}return u.delete(r),!i&&u.size===0&&n.warn(`[changelog] versioning: no root package.json and no matching workspaces — nothing to version.`),{root:r,rootHasPackage:i,workspaces:[...u]}}function h(t){let{versioning:n,bump:s,range:c}=t,l=t.root??a(),{rootHasPackage:u,workspaces:d}=m(n.workspaces,l),p=t.commitsFor??(t=>i(c,e(l,t).replace(/\\/g,`/`))),h=o(t.rootVersion,s),g=/* @__PURE__ */ new Map,_=/* @__PURE__ */ new Map,v=n.enabled?n.target:`uniform`;if(u&&n.enabled&&g.set(l,h),v===`individual`)for(let e of d){let t=p(e);if(t.length===0)continue;let i=o(f(e)??`0.0.0`,r(t));_.set(e,i),n.enabled&&g.set(e,i)}else if(v===`uniform`)for(let e of d)_.set(e,h),n.enabled&&g.set(e,h);return{rootVersion:h,writes:g,entries:_}}export{m as discoverVersionPackages,h as planVersions,f as readPackageVersion,d as resolveVersioning,p as writePackageVersion};
@@ -1 +1 @@
1
- import{relative as e,resolve as t}from"node:path";import"node:url";import.meta.url;import{logger as n}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{readCommits as r,repoSlug as i}from"./git.js";import{discoverWorkspaceDirs as a,repoRoot as o}from"./repo.js";import{packageChangesForCurrent as s}from"./packages.js";import{formatChangelogFile as c}from"./format.js";import{prependChangelogEntry as l,renderChangelogEntry as u}from"./version.js";import{parseExistingChangelog as d,reformatRootChangelog as f}from"./reformat.js";import{buildSummary as p}from"./summary.js";import{existsSync as m,readFileSync as h,writeFileSync as g}from"node:fs";function _(_,v,y,b,x,S=!1){let C=o(),w=i(),T=t(C,`CHANGELOG.md`),E=``;if(S&&m(T)){let e=d(h(T,`utf8`))[0];e&&(E=s(e.version))}if(x){let e=f(S);e&&(g(T,e,`utf8`),n.info(` reformatted ${T}`))}let D=u(_,b,/* @__PURE__ */ new Date,!0,E);l(T,D),n.info(` updated ${T}`);for(let i of a()){if(t(i)===t(C))continue;let a=t(i,`CHANGELOG.md`);if(!m(a))continue;let o=e(C,i).replace(/\\/g,`/`),s=r(v,o);if(s.length===0){n.info(` skipped ${a} (no commits in ${o})`);continue}let c=p(s);l(a,u(_,c,/* @__PURE__ */ new Date)),n.info(` updated ${a}`)}for(let e of[t(C,`CHANGELOG.md`),...a().filter(e=>t(e)!==t(C)).map(e=>t(e,`CHANGELOG.md`)).filter(e=>m(e))])c(e,w)}export{_ as writeChangelogs};
1
+ import{relative as e,resolve as t}from"node:path";import"node:url";import.meta.url;import{logger as n}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{readCommits as r,repoSlug as i}from"./git.js";import{discoverWorkspaceDirs as a,repoRoot as o}from"./repo.js";import{packageChangesForCurrent as s}from"./packages.js";import{formatChangelogFile as c}from"./format.js";import{prependChangelogEntry as l,renderChangelogEntry as u}from"./version.js";import{parseExistingChangelog as d,reformatRootChangelog as f}from"./reformat.js";import{buildSummary as p}from"./summary.js";import{existsSync as m,readFileSync as h,writeFileSync as g}from"node:fs";function _(_,v,y,b,x,S=!1,C){let w=o(),T=i(),E=t(w,`CHANGELOG.md`),D=``;if(S&&m(E)){let e=d(h(E,`utf8`))[0];e&&(D=s(e.version))}if(x){let e=f(S);e&&(g(E,e,`utf8`),n.info(` reformatted ${E}`))}let O=u(_,b,/* @__PURE__ */ new Date,!0,D);l(E,O),n.info(` updated ${E}`);let k=C??new Map(a().filter(e=>t(e)!==t(w)).map(e=>[e,_]));for(let[i,a]of k){let o=t(i,`CHANGELOG.md`);if(!m(o))continue;let s=e(w,i).replace(/\\/g,`/`),c=r(v,s);if(c.length===0){n.info(` skipped ${o} (no commits in ${s})`);continue}let d=p(c);l(o,u(a,d,/* @__PURE__ */ new Date)),n.info(` updated ${o}`)}let A=/* @__PURE__ */ new Set([...a(),...k.keys()]);for(let e of A){let n=t(e,`CHANGELOG.md`);m(n)&&c(n,T)}}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{toYaml as t}from"../../shared/src/yaml.js";import"../../shared/src/index.js";const n={nodeVersion:`22`,yarnVersion:`4.17.1`,packageManager:`yarn`,mainBranch:`main`,devBranch:`dev`,tooling:`dbx`},r={ci:`ci.yml`,changelog:`changelog.yml`,release:`release.yml`,sync:`sync.yml`,issues:`issues.yml`};function i(e){return e===void 0?!0:typeof e==`boolean`?e:e.enabled!==!1}function a(e){return`${e.packageManager} ${e.tooling}`}function o(e){return[{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)}},{name:`Enable Corepack`,run:`corepack enable\ncorepack prepare ${e.packageManager}@${e.yarnVersion} --activate`},{name:`Install dependencies`,run:`${e.packageManager} install --immutable`}]}function s(e){let t=a(e),n=String(e.mainBranch),r=String(e.devBranch);return{ci:{name:`CI`,on:{push:{branches:[n]},pull_request:{branches:[`release/**`,`feat/**`,`feature/**`,`fix/**`,`chore/**`]}},jobs:{ci:{"runs-on":`ubuntu-latest`,steps:[...o(e),{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"`},{name:`Verify generated files are in sync`,run:`${t} sync --check`},{name:`Build`,run:`${e.packageManager} build`}]}}},changelog:{name:`Changelog (dev)`,on:{push:{branches:[r]}},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:[...o(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`,`${t} 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 ${r}`].join(`
3
3
  `)}]}}},release:{name:`Release`,on:{push:{branches:[n]},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:[...o(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="$(awk '/<!-- release:start -->/{f=1;next} /<!-- release:end -->/{exit} f{print}' CHANGELOG.md 2>/dev/null || true)"`,`[ -n "$notes" ] || notes="Release $version"`,`gh pr create --base ${n} --head "$branch" --title "release: $version" --body "$notes"`].join(`
4
- `)}]}}},sync:{name:`Tooling sync`,on:{push:{branches:[n,r]},pull_request:null},jobs:{sync:{"runs-on":`ubuntu-latest`,steps:[...o(e),{name:`Verify generated files are in sync`,run:`${t} 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(`
4
+ `)}]}}},sync:{name:`Toolchain sync`,on:{push:{branches:[n,r]},pull_request:null},jobs:{sync:{"runs-on":`ubuntu-latest`,steps:[...o(e),{name:`Verify generated files are in sync`,run:`${t} 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 c(e){return e.steps?Array.isArray(e.steps)?e.steps:[e.steps]:[]}function l(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 c(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 u(r,i){let a=i.config??{};if(a.enabled===!1)return;let o={...n,...i.tokens,...a.tokens},c=s(o)[r],u=e(l(c,a),o);return t(u)}function d(e,t={}){let n={};for(let a of Object.keys(r)){let o=t[a];if(!i(o))continue;let s=u(a,{tokens:e,config:typeof o==`object`?o:{}});s&&(n[r[a]]=s)}return n}export{n as DEFAULT_WORKFLOW_TOKENS,r as WORKFLOW_FILENAMES,l as applyWorkflowConfig,s as defaultWorkflows,i as isEnabled,u as renderWorkflow,d as renderWorkflows};
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingCommand } from "../../../shared/src/types.js";
3
+ import { ToolchainCommand } from "../../../shared/src/types.js";
4
4
  import "../../../shared/src/index.js";
5
5
  import { ConfigEngine } from "../engine.js";
6
6
  //#region packages/config/src/cli/index.d.ts
@@ -24,5 +24,5 @@ export interface ConfigCommandContext {
24
24
  defaults?: ConfigCommandDefaults;
25
25
  }
26
26
  /** Build the config commands bound to a consumer's engine. */
27
- export declare function configCommands(ctx: ConfigCommandContext): ToolingCommand[];
27
+ export declare function configCommands(ctx: ConfigCommandContext): ToolchainCommand[];
28
28
  //#endregion
@@ -4,5 +4,5 @@ import { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFl
4
4
  import { GenerateEnvTypesOptions, generateEnv, generateEnvDts, generateEnvTypes } from "./env.js";
5
5
  import { GenerateJsonSchemaOptions, generateConfigJsonSchema, generateJsonSchemaFile } from "./json.js";
6
6
  import { ConfigFileSection, GenerateMarkdownOptions, RenderConfigFileOptions, RenderMarkdownOptions, generateConfigMarkdown, renderConfigFileMarkdown, renderConfigIndex, renderScopeMarkdown } from "./markdown.js";
7
- import { GenerateTypesOptions, generateConfigTypes, renderAllConfigTypes, renderConfigTypes, resolveScopeSchema } from "./types.js";
8
- export { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, ConfigFileSection, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownOptions, cliFlagLabel, cliFlagOf, cliShortOf, createCliArgsParser, flagOf, generateCliArgsOptions, generateCliOptions, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvTypes, generateJsonSchemaFile, renderAllConfigTypes, renderConfigFileMarkdown, renderConfigIndex, renderConfigTypes, renderScopeMarkdown, resolveScopeSchema };
7
+ import { GenerateTypesOptions, generateConfigTypes, renderAllConfigTypes, renderConfigImports, renderConfigTypes, resolveScopeSchema } from "./types.js";
8
+ export { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, ConfigFileSection, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownOptions, cliFlagLabel, cliFlagOf, cliShortOf, createCliArgsParser, flagOf, generateCliArgsOptions, generateCliOptions, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvTypes, generateJsonSchemaFile, renderAllConfigTypes, renderConfigFileMarkdown, renderConfigImports, renderConfigIndex, renderConfigTypes, renderScopeMarkdown, resolveScopeSchema };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{cliFlagLabel as e,cliFlagOf as t,cliShortOf as n,createCliArgsParser as r,flagOf as i,generateCliArgsOptions as a,generateCliOptions as o}from"./cli.js";import{generateEnv as s,generateEnvDts as c,generateEnvTypes as l}from"./env.js";import{generateConfigJsonSchema as u,generateJsonSchemaFile as d}from"./json.js";import{generateConfigMarkdown as f,renderConfigFileMarkdown as p,renderConfigIndex as m,renderScopeMarkdown as h}from"./markdown.js";import{generateConfigTypes as g,renderAllConfigTypes as _,renderConfigTypes as v,resolveScopeSchema as y}from"./types.js";export{e as cliFlagLabel,t as cliFlagOf,n as cliShortOf,r as createCliArgsParser,i as flagOf,a as generateCliArgsOptions,o as generateCliOptions,u as generateConfigJsonSchema,f as generateConfigMarkdown,g as generateConfigTypes,s as generateEnv,c as generateEnvDts,l as generateEnvTypes,d as generateJsonSchemaFile,_ as renderAllConfigTypes,p as renderConfigFileMarkdown,m as renderConfigIndex,v as renderConfigTypes,h as renderScopeMarkdown,y as resolveScopeSchema};
1
+ import"node:path";import"node:url";import.meta.url;import{cliFlagLabel as e,cliFlagOf as t,cliShortOf as n,createCliArgsParser as r,flagOf as i,generateCliArgsOptions as a,generateCliOptions as o}from"./cli.js";import{generateEnv as s,generateEnvDts as c,generateEnvTypes as l}from"./env.js";import{generateConfigJsonSchema as u,generateJsonSchemaFile as d}from"./json.js";import{generateConfigMarkdown as f,renderConfigFileMarkdown as p,renderConfigIndex as m,renderScopeMarkdown as h}from"./markdown.js";import{generateConfigTypes as g,renderAllConfigTypes as _,renderConfigImports as v,renderConfigTypes as y,resolveScopeSchema as b}from"./types.js";export{e as cliFlagLabel,t as cliFlagOf,n as cliShortOf,r as createCliArgsParser,i as flagOf,a as generateCliArgsOptions,o as generateCliOptions,u as generateConfigJsonSchema,f as generateConfigMarkdown,g as generateConfigTypes,s as generateEnv,c as generateEnvDts,l as generateEnvTypes,d as generateJsonSchemaFile,_ as renderAllConfigTypes,p as renderConfigFileMarkdown,v as renderConfigImports,m as renderConfigIndex,y as renderConfigTypes,h as renderScopeMarkdown,b as resolveScopeSchema};
@@ -14,6 +14,16 @@ export interface GenerateTypesOptions {
14
14
  interfaceNames?: Record<string, string>;
15
15
  /** Per-scope extra aliases appended after the generated interface. */
16
16
  aliases?: Record<string, string>;
17
+ /**
18
+ * Per-scope hand-written overrides: the full declaration text emitted
19
+ * verbatim instead of a generated interface. Keyed by type name.
20
+ */
21
+ overrides?: Record<string, string>;
22
+ /**
23
+ * Import lines emitted once at the top of the file (after the header) so a
24
+ * hand-written override can reference an imported type.
25
+ */
26
+ imports?: string[];
17
27
  /** File extension for generated files (default `ts`). */
18
28
  extension?: string;
19
29
  /** A raw (verbatim) header prepended to every generated file. */
@@ -23,6 +33,12 @@ export interface GenerateTypesOptions {
23
33
  export declare function resolveScopeSchema(schema: Schema | undefined, zodSchema: unknown): Schema;
24
34
  /** Render the generated type file content for one scope. */
25
35
  export declare function renderConfigTypes(scopeName: string, schema: Schema, options?: GenerateTypesOptions): string;
36
+ /**
37
+ * Render the import block for the generated file (empty when none are
38
+ * configured). Emitted once at the top of the file, after the header, so a
39
+ * hand-written override can reference imported types.
40
+ */
41
+ export declare function renderConfigImports(options?: GenerateTypesOptions): string;
26
42
  /** Render every config type file, keyed by scope name. */
27
43
  export declare function renderAllConfigTypes(scopes: ConfigScopes, options?: GenerateTypesOptions): Record<string, string>;
28
44
  /** Generate the config type files into `outputDir`. Returns the paths written. */
@@ -1,3 +1,4 @@
1
1
  import{default as e}from"node:path";import"node:url";import.meta.url;import{pascalCase as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{splitBaseSchema as n,zodToJsonSchema as r}from"../schema.js";import i from"node:fs";import{generateTypes as a}from"untyped";const o={addExport:!0,partial:!0};function s(e,t){return e??r(t)}function c(e){let t=[],n=0,r=!1;for(let i of e.split(`
2
2
  `)){let e=i.trim();if(r)t.push(i),e.endsWith(`*/`)&&(r=!1);else if(e.startsWith(`/*`))t.push(i),e.endsWith(`*/`)||(r=!0);else if(!(e===``&&n>0)){t.push(i);for(let e of i)e===`{`||e===`(`||e===`[`?n++:(e===`}`||e===`)`||e===`]`)&&n>0&&n--}}return t.join(`
3
- `)}function l(e,t){return c(a(e,{...o,interfaceName:t}))}function u(e,r,i={}){let a=i.baseGroup??`base`,o=i.interfaceNames?.[e]??`${t(e)}Config`,s=i.aliases?.[e]??``,c=e=>i.header?`${i.header}\n\n${e}`:e;if(!r.properties)return c(`export type ${o} = ${r.tsType??`unknown`};\n${s}`);let{base:u,groups:d,hasBase:f}=n(r,a),p=Object.keys(d.properties??{});if(!f)return c(`${l(r,o)}\n${s}`);let m=l(u,`${o}Base`),h;return h=p.length>0?l(d,o).replace(`export interface ${o} {`,`export interface ${o} extends ${o}Base {`):`export interface ${o} extends ${o}Base {}\n`,c(`${m}\n${h}\n${s}`)}function d(e,t={}){return Object.fromEntries(Object.entries(e).map(([e,n])=>[e,u(e,s(n.jsonSchema,n.zodSchema),t)]))}function f(t,n){let r=n.extension??`ts`,a=[];for(let[o,s]of Object.entries(d(t,n))){let t=e.join(n.outputDir,`${o}.${r}`);i.mkdirSync(e.dirname(t),{recursive:!0}),i.writeFileSync(t,s,`utf-8`),a.push(t)}return a}export{f as generateConfigTypes,d as renderAllConfigTypes,u as renderConfigTypes,s as resolveScopeSchema};
3
+ `)}function l(e,t){return c(a(e,{...o,interfaceName:t}))}function u(e){let t=e.lastIndexOf(`}`);return t===-1?e:`${e.slice(0,t)} [key: string]: unknown;\n${e.slice(t)}`}function d(e,r,i={}){let a=i.baseGroup??`base`,o=i.interfaceNames?.[e]??`${t(e)}Config`,s=i.aliases?.[e]??``,c=e=>i.header?`${i.header}\n\n${e}`:e,d=i.overrides?.[e];if(d!==void 0)return c(`${d.trimEnd()}\n${s}`.trimEnd());let f=r.allowExtraKeys===!0;if(!r.properties)return c(`export type ${o} = ${r.tsType??`unknown`};\n${s}`);let{base:p,groups:m,hasBase:h}=n(r,a),g=Object.keys(m.properties??{});if(!h){let e=l(r,o);return c(`${f?u(e):e}\n${s}`)}let _=l(p,`${o}Base`),v;return v=g.length>0?l(m,o).replace(`export interface ${o} {`,`export interface ${o} extends ${o}Base {`):`export interface ${o} extends ${o}Base {}\n`,f&&(v=u(v)),c(`${_}\n${v}\n${s}`)}function f(e={}){return(e.imports??[]).join(`
4
+ `)}function p(e,t={}){return Object.fromEntries(Object.entries(e).map(([e,n])=>[e,d(e,s(n.jsonSchema,n.zodSchema),t)]))}function m(t,n){let r=n.extension??`ts`,a=[];for(let[o,s]of Object.entries(p(t,n))){let t=e.join(n.outputDir,`${o}.${r}`);i.mkdirSync(e.dirname(t),{recursive:!0}),i.writeFileSync(t,s,`utf-8`),a.push(t)}return a}export{m as generateConfigTypes,p as renderAllConfigTypes,f as renderConfigImports,d as renderConfigTypes,s as resolveScopeSchema};
@@ -8,7 +8,7 @@ import { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFl
8
8
  import { GenerateEnvTypesOptions, generateEnv, generateEnvDts, generateEnvTypes } from "./generators/env.js";
9
9
  import { GenerateJsonSchemaOptions, generateConfigJsonSchema, generateJsonSchemaFile } from "./generators/json.js";
10
10
  import { ConfigFileSection, GenerateMarkdownOptions, RenderConfigFileOptions, RenderMarkdownOptions, generateConfigMarkdown, renderConfigFileMarkdown, renderConfigIndex, renderScopeMarkdown } from "./generators/markdown.js";
11
- import { GenerateTypesOptions, generateConfigTypes, renderAllConfigTypes, renderConfigTypes, resolveScopeSchema } from "./generators/types.js";
11
+ import { GenerateTypesOptions, generateConfigTypes, renderAllConfigTypes, renderConfigImports, renderConfigTypes, resolveScopeSchema } from "./generators/types.js";
12
12
  import { ConfigEngine, createConfigEngine } from "./engine.js";
13
13
  import { EnvSource, EnvTree, applyOverrides, envBool, envInt, envList, envMap, envString, parseEnvTree, readEnvPath, trimTrailingSlashes } from "./env.js";
14
14
  import { FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, formatGenerated } from "./generated-format.js";
@@ -16,7 +16,7 @@ import "./generators/index.js";
16
16
  import { findProjectRoot, monorepoRoot } from "./root.js";
17
17
  import { SplitSchema, compileZodSchema, envMetaOf, flattenBaseSchema, renderTsType, resolveUntypedSchema, splitBaseSchema, zodToJsonSchema, zodToUntypedDefinition } from "./schema.js";
18
18
  declare namespace index_d_exports {
19
- export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectEnvVarsOptions, ConfigEngine, ConfigEngineOptions, ConfigFileSection, ConfigJsonDoc, ConfigJsonEntry, ConfigScopeDef, ConfigScopes, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, EnvValueType, EnvVarDef, EnvVarMeta, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownOptions, SplitSchema, applyOverrides, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectEnvVars, collectRequiredEnvVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envMetaOf, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, monorepoRoot, parseEnvTree, readEnvPath, renderAllConfigTypes, renderConfigFileMarkdown, renderConfigIndex, renderConfigTypes, renderScopeMarkdown, renderTsType, resolveScopeSchema, resolveUntypedSchema, splitBaseSchema, trimTrailingSlashes, zodToJsonSchema, zodToUntypedDefinition };
19
+ export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectEnvVarsOptions, ConfigEngine, ConfigEngineOptions, ConfigFileSection, ConfigJsonDoc, ConfigJsonEntry, ConfigScopeDef, ConfigScopes, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, EnvValueType, EnvVarDef, EnvVarMeta, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownOptions, SplitSchema, applyOverrides, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectEnvVars, collectRequiredEnvVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envMetaOf, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, monorepoRoot, parseEnvTree, readEnvPath, renderAllConfigTypes, renderConfigFileMarkdown, renderConfigImports, renderConfigIndex, renderConfigTypes, renderScopeMarkdown, renderTsType, resolveScopeSchema, resolveUntypedSchema, splitBaseSchema, trimTrailingSlashes, zodToJsonSchema, zodToUntypedDefinition };
20
20
  }
21
21
  //#endregion
22
- export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectEnvVarsOptions, ConfigEngine, ConfigEngineOptions, ConfigFileSection, ConfigJsonDoc, ConfigJsonEntry, ConfigScopeDef, ConfigScopes, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, EnvValueType, EnvVarDef, EnvVarMeta, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownOptions, SplitSchema, applyOverrides, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectEnvVars, collectRequiredEnvVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envMetaOf, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, index_d_exports, monorepoRoot, parseEnvTree, readEnvPath, renderAllConfigTypes, renderConfigFileMarkdown, renderConfigIndex, renderConfigTypes, renderScopeMarkdown, renderTsType, resolveScopeSchema, resolveUntypedSchema, splitBaseSchema, trimTrailingSlashes, zodToJsonSchema, zodToUntypedDefinition };
22
+ export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectEnvVarsOptions, ConfigEngine, ConfigEngineOptions, ConfigFileSection, ConfigJsonDoc, ConfigJsonEntry, ConfigScopeDef, ConfigScopes, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, EnvValueType, EnvVarDef, EnvVarMeta, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownOptions, SplitSchema, applyOverrides, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectEnvVars, collectRequiredEnvVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envMetaOf, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, index_d_exports, monorepoRoot, parseEnvTree, readEnvPath, renderAllConfigTypes, renderConfigFileMarkdown, renderConfigImports, renderConfigIndex, renderConfigTypes, renderScopeMarkdown, renderTsType, resolveScopeSchema, resolveUntypedSchema, splitBaseSchema, trimTrailingSlashes, zodToJsonSchema, zodToUntypedDefinition };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{compileZodSchema as t,envMetaOf as n,flattenBaseSchema as r,renderTsType as i,resolveUntypedSchema as a,splitBaseSchema as o,zodToJsonSchema as s,zodToUntypedDefinition as c}from"./schema.js";import{envPathOf as l}from"./types.js";import{DEFAULT_ENV_PREFIX as u,collectEnvVars as d,collectRequiredEnvVars as f}from"./collect.js";import{buildConfigJson as p}from"./config-json.js";import{generateEnvFile as m}from"./env-file.js";import{cliFlagLabel as h,cliFlagOf as g,cliShortOf as _,createCliArgsParser as v,flagOf as y,generateCliArgsOptions as b,generateCliOptions as x}from"./generators/cli.js";import{generateEnv as S,generateEnvDts as C,generateEnvTypes as w}from"./generators/env.js";import{generateConfigJsonSchema as T,generateJsonSchemaFile as E}from"./generators/json.js";import{generateConfigMarkdown as D,renderConfigFileMarkdown as O,renderConfigIndex as k,renderScopeMarkdown as A}from"./generators/markdown.js";import{generateConfigTypes as j,renderAllConfigTypes as M,renderConfigTypes as N,resolveScopeSchema as P}from"./generators/types.js";import{findProjectRoot as F,monorepoRoot as I}from"./root.js";import{createConfigEngine as L}from"./engine.js";import{applyOverrides as R,envBool as z,envInt as B,envList as V,envMap as H,envString as U,parseEnvTree as W,readEnvPath as G,trimTrailingSlashes as K}from"./env.js";import{GENERATED_FORMAT_OPTIONS as q,formatGenerated as J}from"./generated-format.js";import"./generators/index.js";var Y=/* @__PURE__ */ e({DEFAULT_ENV_PREFIX:()=>u,GENERATED_FORMAT_OPTIONS:()=>q,applyOverrides:()=>R,buildConfigJson:()=>p,cliFlagLabel:()=>h,cliFlagOf:()=>g,cliShortOf:()=>_,collectEnvVars:()=>d,collectRequiredEnvVars:()=>f,compileZodSchema:()=>t,createCliArgsParser:()=>v,createConfigEngine:()=>L,envBool:()=>z,envInt:()=>B,envList:()=>V,envMap:()=>H,envMetaOf:()=>n,envPathOf:()=>l,envString:()=>U,findProjectRoot:()=>F,flagOf:()=>y,flattenBaseSchema:()=>r,formatGenerated:()=>J,generateCliArgsOptions:()=>b,generateCliOptions:()=>x,generateConfigJsonSchema:()=>T,generateConfigMarkdown:()=>D,generateConfigTypes:()=>j,generateEnv:()=>S,generateEnvDts:()=>C,generateEnvFile:()=>m,generateEnvTypes:()=>w,generateJsonSchemaFile:()=>E,monorepoRoot:()=>I,parseEnvTree:()=>W,readEnvPath:()=>G,renderAllConfigTypes:()=>M,renderConfigFileMarkdown:()=>O,renderConfigIndex:()=>k,renderConfigTypes:()=>N,renderScopeMarkdown:()=>A,renderTsType:()=>i,resolveScopeSchema:()=>P,resolveUntypedSchema:()=>a,splitBaseSchema:()=>o,trimTrailingSlashes:()=>K,zodToJsonSchema:()=>s,zodToUntypedDefinition:()=>c});export{u as DEFAULT_ENV_PREFIX,q as GENERATED_FORMAT_OPTIONS,R as applyOverrides,p as buildConfigJson,h as cliFlagLabel,g as cliFlagOf,_ as cliShortOf,d as collectEnvVars,f as collectRequiredEnvVars,t as compileZodSchema,v as createCliArgsParser,L as createConfigEngine,z as envBool,B as envInt,V as envList,H as envMap,n as envMetaOf,l as envPathOf,U as envString,F as findProjectRoot,y as flagOf,r as flattenBaseSchema,J as formatGenerated,b as generateCliArgsOptions,x as generateCliOptions,T as generateConfigJsonSchema,D as generateConfigMarkdown,j as generateConfigTypes,S as generateEnv,C as generateEnvDts,m as generateEnvFile,w as generateEnvTypes,E as generateJsonSchemaFile,I as monorepoRoot,W as parseEnvTree,G as readEnvPath,M as renderAllConfigTypes,O as renderConfigFileMarkdown,k as renderConfigIndex,N as renderConfigTypes,A as renderScopeMarkdown,i as renderTsType,P as resolveScopeSchema,a as resolveUntypedSchema,o as splitBaseSchema,Y as src_exports,K as trimTrailingSlashes,s as zodToJsonSchema,c as zodToUntypedDefinition};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{compileZodSchema as t,envMetaOf as n,flattenBaseSchema as r,renderTsType as i,resolveUntypedSchema as a,splitBaseSchema as o,zodToJsonSchema as s,zodToUntypedDefinition as c}from"./schema.js";import{envPathOf as l}from"./types.js";import{DEFAULT_ENV_PREFIX as u,collectEnvVars as d,collectRequiredEnvVars as f}from"./collect.js";import{buildConfigJson as p}from"./config-json.js";import{generateEnvFile as m}from"./env-file.js";import{cliFlagLabel as h,cliFlagOf as g,cliShortOf as _,createCliArgsParser as v,flagOf as y,generateCliArgsOptions as b,generateCliOptions as x}from"./generators/cli.js";import{generateEnv as S,generateEnvDts as C,generateEnvTypes as w}from"./generators/env.js";import{generateConfigJsonSchema as T,generateJsonSchemaFile as E}from"./generators/json.js";import{generateConfigMarkdown as D,renderConfigFileMarkdown as O,renderConfigIndex as k,renderScopeMarkdown as A}from"./generators/markdown.js";import{generateConfigTypes as j,renderAllConfigTypes as M,renderConfigImports as N,renderConfigTypes as P,resolveScopeSchema as F}from"./generators/types.js";import{findProjectRoot as I,monorepoRoot as L}from"./root.js";import{createConfigEngine as R}from"./engine.js";import{applyOverrides as z,envBool as B,envInt as V,envList as H,envMap as U,envString as W,parseEnvTree as G,readEnvPath as K,trimTrailingSlashes as q}from"./env.js";import{GENERATED_FORMAT_OPTIONS as J,formatGenerated as Y}from"./generated-format.js";import"./generators/index.js";var X=/* @__PURE__ */ e({DEFAULT_ENV_PREFIX:()=>u,GENERATED_FORMAT_OPTIONS:()=>J,applyOverrides:()=>z,buildConfigJson:()=>p,cliFlagLabel:()=>h,cliFlagOf:()=>g,cliShortOf:()=>_,collectEnvVars:()=>d,collectRequiredEnvVars:()=>f,compileZodSchema:()=>t,createCliArgsParser:()=>v,createConfigEngine:()=>R,envBool:()=>B,envInt:()=>V,envList:()=>H,envMap:()=>U,envMetaOf:()=>n,envPathOf:()=>l,envString:()=>W,findProjectRoot:()=>I,flagOf:()=>y,flattenBaseSchema:()=>r,formatGenerated:()=>Y,generateCliArgsOptions:()=>b,generateCliOptions:()=>x,generateConfigJsonSchema:()=>T,generateConfigMarkdown:()=>D,generateConfigTypes:()=>j,generateEnv:()=>S,generateEnvDts:()=>C,generateEnvFile:()=>m,generateEnvTypes:()=>w,generateJsonSchemaFile:()=>E,monorepoRoot:()=>L,parseEnvTree:()=>G,readEnvPath:()=>K,renderAllConfigTypes:()=>M,renderConfigFileMarkdown:()=>O,renderConfigImports:()=>N,renderConfigIndex:()=>k,renderConfigTypes:()=>P,renderScopeMarkdown:()=>A,renderTsType:()=>i,resolveScopeSchema:()=>F,resolveUntypedSchema:()=>a,splitBaseSchema:()=>o,trimTrailingSlashes:()=>q,zodToJsonSchema:()=>s,zodToUntypedDefinition:()=>c});export{u as DEFAULT_ENV_PREFIX,J as GENERATED_FORMAT_OPTIONS,z as applyOverrides,p as buildConfigJson,h as cliFlagLabel,g as cliFlagOf,_ as cliShortOf,d as collectEnvVars,f as collectRequiredEnvVars,t as compileZodSchema,v as createCliArgsParser,R as createConfigEngine,B as envBool,V as envInt,H as envList,U as envMap,n as envMetaOf,l as envPathOf,W as envString,I as findProjectRoot,y as flagOf,r as flattenBaseSchema,Y as formatGenerated,b as generateCliArgsOptions,x as generateCliOptions,T as generateConfigJsonSchema,D as generateConfigMarkdown,j as generateConfigTypes,S as generateEnv,C as generateEnvDts,m as generateEnvFile,w as generateEnvTypes,E as generateJsonSchemaFile,L as monorepoRoot,G as parseEnvTree,K as readEnvPath,M as renderAllConfigTypes,O as renderConfigFileMarkdown,N as renderConfigImports,k as renderConfigIndex,P as renderConfigTypes,A as renderScopeMarkdown,i as renderTsType,F as resolveScopeSchema,a as resolveUntypedSchema,o as splitBaseSchema,X as src_exports,q as trimTrailingSlashes,s as zodToJsonSchema,c as zodToUntypedDefinition};
@@ -19,7 +19,7 @@ interface JsonSchemaNode {
19
19
  $ref?: string;
20
20
  $defs?: Record<string, JsonSchemaNode>;
21
21
  items?: JsonSchemaNode;
22
- additionalProperties?: JsonSchemaNode;
22
+ additionalProperties?: JsonSchemaNode | boolean;
23
23
  propertyNames?: JsonSchemaNode;
24
24
  env?: string;
25
25
  scope?: string;
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{z as e}from"zod";const t={string:`string`,number:`number`,integer:`number`,boolean:`boolean`,null:`null`};function n(e){let t=e.meta?.();return t&&typeof t==`object`&&`env`in t?t:void 0}function r(e){return!e||Object.keys(e).length===0}function i(e){return`'${String(e).replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function a(e,n={}){if(!e||r(e))return`unknown`;if(e.$ref){let t=e.$ref.split(`/`).pop()??`unknown`;return n[t]?t:`unknown`}if(e.const!==void 0)return typeof e.const==`string`?i(e.const):String(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(i).join(` | `);let o=e.anyOf??e.oneOf;if(Array.isArray(o)&&o.length>0)return o.map(e=>a(e,n)).join(` | `);if(e.properties){let t=Array.isArray(e.required)?e.required:[];return`{ ${Object.entries(e.properties).map(([e,r])=>`${e}${t.includes(e)?``:`?`}: ${a(r,n)}`).join(`; `)} }`}let s=Array.isArray(e.type)?e.type:e.type?[e.type]:[];return s.includes(`array`)?`Array<${a(e.items,n)}>`:s.includes(`object`)?e.additionalProperties===void 0?`Record<string, unknown>`:`Record<string, ${r(e.additionalProperties)?`unknown`:a(e.additionalProperties,n)}>`:s.length===0?`unknown`:s.map(e=>t[e]??`unknown`).join(` | `)}function o(e){return e.$ref?`any`:e.const===void 0?e.anyOf||e.oneOf?`any`:e.enum?`string`:Array.isArray(e.type)?e.type.find(e=>e!==`null`)??`string`:e.type??`string`:typeof e.const==`string`?`string`:typeof e.const}function s(e,t=!1,n={}){if(e.$ref)return{$schema:{type:`any`,tsType:e.$ref.split(`/`).pop()??`unknown`,...t?{tags:[`@required`]}:{}}};if(e.properties){let r=t?{$schema:{tags:[`@required`]}}:{};for(let[t,i]of Object.entries(e.properties))r[t]=s(i,e.required?.includes(t)??!1,n);return r}let r=o(e),i={};return e.defaultValue===void 0?e.default!==void 0&&(i.$default=e.default):i.$default=e.defaultValue,i.$schema={type:r,tsType:a(e,n),...r===`array`?{items:{type:o(e.items??{})}}:{},...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...e.env?{env:e.env}:{},...e.scope?{scope:e.scope}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{},...e.required===!0?{required:!0}:{},...e.defaultValue!==void 0&&e.default!==void 0?{envDefault:e.default}:{}},i}function c(e){let t=e.toJSONSchema();if(!t)return{};let n=t.$defs??{},r=t.$ref?.split(`/`).pop();return s(r&&n[r]?n[r]:t,!1,n)}function l(t){try{return e.compile(t)}catch{return t}}function u(e){return e!==null&&!Array.isArray(e)&&typeof e==`object`}function d(e){let t=typeof e;if(t!==`undefined`&&e!==null)return Array.isArray(e)?`array`:t}function f(e,t,n=`.`){return e?`${e}${n}${t}`:t}function p(e){return[...new Set(e.filter(e=>!!e))]}function m(e){if(e.type===`array`&&!(`items`in e)){let t=p((e.default??[]).map(e=>d(e)));e.items={type:t.length===0?`any`:t.length===1?t[0]:t}}if(e.default===void 0&&(`properties`in e||e.type===`object`||e.type===`any`)){let t=e.properties??{};e.default=Object.fromEntries(Object.entries(t).filter(([,e])=>`default`in e).map(([e,t])=>[e,t.default]))}}function h(e,t,n){if(n.cache.has(t))return n.cache.get(t);let r=`#${t.replace(/\./g,`/`)}`;if(!u(e)){let i=Array.isArray(e)?[...e]:e,a={type:d(e),id:r,default:i};return m(a),n.cache.set(t,a),a}let i={...e.$schema??{},id:r};n.cache.set(t,i);let a=Object.keys(e).filter(e=>e!==`$resolve`&&e!==`$schema`&&e!==`$default`);if(a.length>0){let r={};i.properties=r;for(let o of a)if(!r[o]){let a=r[o]=h(e[o],f(t,o),n);Array.isArray(a.tags)&&a.tags.includes(`@required`)&&(i.required=i.required||[],i.required.includes(o)||i.required.push(o))}}return i.default===void 0&&`$default`in e&&(i.default=e.$default),i.type||=d(i.default)||(i.properties?`object`:`any`),m(i),i}function g(e){return h(e,``,{root:e,cache:/* @__PURE__ */ new Map})}function _(e){return g(c(e))}function v(e,t=`base`){let n=e.properties??{},r=n[t];if(r&&r.type===`object`&&r.properties){let{[t]:i,...a}=n,o=(e.required??[]).filter(e=>e!==t);return{base:r,groups:{...e,properties:a,...o.length>0?{required:o}:{}},hasBase:!0}}return{base:e,groups:{...e,properties:{}},hasBase:!1}}function y(e,t=`base`){let n=e.properties??{},r=n[t];if(r?.type!==`object`)return e;let i=r.properties;if(!i)return e;let{[t]:a,...o}=n;return{...e,properties:{...i,...o},required:[...(e.required??[]).filter(e=>e!==t),...r.required??[]]}}export{l as compileZodSchema,n as envMetaOf,y as flattenBaseSchema,a as renderTsType,g as resolveUntypedSchema,v as splitBaseSchema,_ as zodToJsonSchema,c as zodToUntypedDefinition};
1
+ import"node:path";import"node:url";import.meta.url;import{z as e}from"zod";const t={string:`string`,number:`number`,integer:`number`,boolean:`boolean`,null:`null`};function n(e){let t=e.meta?.();return t&&typeof t==`object`&&`env`in t?t:void 0}function r(e){return!e||Object.keys(e).length===0}function i(e){return`'${String(e).replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function a(e,n={}){if(!e||r(e))return`unknown`;if(e.$ref){let t=e.$ref.split(`/`).pop()??`unknown`;return n[t]?t:`unknown`}if(e.const!==void 0)return typeof e.const==`string`?i(e.const):String(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(i).join(` | `);let o=e.anyOf??e.oneOf;if(Array.isArray(o)&&o.length>0)return o.map(e=>a(e,n)).join(` | `);if(e.properties){let t=Array.isArray(e.required)?e.required:[];return`{ ${Object.entries(e.properties).map(([e,r])=>`${e}${t.includes(e)?``:`?`}: ${a(r,n)}`).join(`; `)} }`}let s=Array.isArray(e.type)?e.type:e.type?[e.type]:[];if(s.includes(`array`))return`Array<${a(e.items,n)}>`;if(s.includes(`object`)){let t=e.additionalProperties;return t===void 0||t===!1?`Record<string, unknown>`:`Record<string, ${t===!0||r(t)?`unknown`:a(t,n)}>`}return s.length===0?`unknown`:s.map(e=>t[e]??`unknown`).join(` | `)}function o(e){return e.$ref?`any`:e.const===void 0?e.anyOf||e.oneOf?`any`:e.enum?`string`:Array.isArray(e.type)?e.type.find(e=>e!==`null`)??`string`:e.type??`string`:typeof e.const==`string`?`string`:typeof e.const}function s(e,t=!1,n={}){if(e.$ref)return{$schema:{type:`any`,tsType:e.$ref.split(`/`).pop()??`unknown`,...t?{tags:[`@required`]}:{}}};if(e.properties){let r=t?{$schema:{tags:[`@required`]}}:{};for(let[t,i]of Object.entries(e.properties))r[t]=s(i,e.required?.includes(t)??!1,n);return e.additionalProperties!==void 0&&e.additionalProperties!==!1&&(r.$schema={...r.$schema??{},allowExtraKeys:!0}),r}let r=o(e),i={};return e.defaultValue===void 0?e.default!==void 0&&(i.$default=e.default):i.$default=e.defaultValue,i.$schema={type:r,tsType:a(e,n),...r===`array`?{items:{type:o(e.items??{})}}:{},...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...e.env?{env:e.env}:{},...e.scope?{scope:e.scope}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{},...e.required===!0?{required:!0}:{},...e.defaultValue!==void 0&&e.default!==void 0?{envDefault:e.default}:{}},i}function c(e){let t=e.toJSONSchema();if(!t)return{};let n=t.$defs??{},r=t.$ref?.split(`/`).pop();return s(r&&n[r]?n[r]:t,!1,n)}function l(t){try{return e.compile(t)}catch{return t}}function u(e){return e!==null&&!Array.isArray(e)&&typeof e==`object`}function d(e){let t=typeof e;if(t!==`undefined`&&e!==null)return Array.isArray(e)?`array`:t}function f(e,t,n=`.`){return e?`${e}${n}${t}`:t}function p(e){return[...new Set(e.filter(e=>!!e))]}function m(e){if(e.type===`array`&&!(`items`in e)){let t=p((e.default??[]).map(e=>d(e)));e.items={type:t.length===0?`any`:t.length===1?t[0]:t}}if(e.default===void 0&&(`properties`in e||e.type===`object`||e.type===`any`)){let t=e.properties??{};e.default=Object.fromEntries(Object.entries(t).filter(([,e])=>`default`in e).map(([e,t])=>[e,t.default]))}}function h(e,t,n){if(n.cache.has(t))return n.cache.get(t);let r=`#${t.replace(/\./g,`/`)}`;if(!u(e)){let i=Array.isArray(e)?[...e]:e,a={type:d(e),id:r,default:i};return m(a),n.cache.set(t,a),a}let i={...e.$schema??{},id:r};n.cache.set(t,i);let a=Object.keys(e).filter(e=>e!==`$resolve`&&e!==`$schema`&&e!==`$default`);if(a.length>0){let r={};i.properties=r;for(let o of a)if(!r[o]){let a=r[o]=h(e[o],f(t,o),n);Array.isArray(a.tags)&&a.tags.includes(`@required`)&&(i.required=i.required||[],i.required.includes(o)||i.required.push(o))}}return i.default===void 0&&`$default`in e&&(i.default=e.$default),i.type||=d(i.default)||(i.properties?`object`:`any`),m(i),i}function g(e){return h(e,``,{root:e,cache:/* @__PURE__ */ new Map})}function _(e){return g(c(e))}function v(e,t=`base`){let n=e.properties??{},r=n[t];if(r&&r.type===`object`&&r.properties){let{[t]:i,...a}=n,o=(e.required??[]).filter(e=>e!==t);return{base:r,groups:{...e,properties:a,...o.length>0?{required:o}:{}},hasBase:!0}}return{base:e,groups:{...e,properties:{}},hasBase:!1}}function y(e,t=`base`){let n=e.properties??{},r=n[t];if(r?.type!==`object`)return e;let i=r.properties;if(!i)return e;let{[t]:a,...o}=n;return{...e,properties:{...i,...o},required:[...(e.required??[]).filter(e=>e!==t),...r.required??[]]}}export{l as compileZodSchema,n as envMetaOf,y as flattenBaseSchema,a as renderTsType,g as resolveUntypedSchema,v as splitBaseSchema,_ as zodToJsonSchema,c as zodToUntypedDefinition};