@deltabox/toolchain 2.4.0 → 2.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 (104) hide show
  1. package/CHANGELOG.md +106 -4
  2. package/dist/biome.d.ts +2 -2
  3. package/dist/biome.js +1 -1
  4. package/dist/cli/commands/sync.js +1 -1
  5. package/dist/cli/commands/watch.js +1 -1
  6. package/dist/cli/index.js +1 -1
  7. package/dist/cli/register.js +1 -1
  8. package/dist/cli/tooling-commands.js +1 -0
  9. package/dist/config.d.ts +2 -1
  10. package/dist/config.js +1 -1
  11. package/dist/core.d.ts +3 -3
  12. package/dist/core.js +1 -1
  13. package/dist/index.d.ts +10 -7
  14. package/dist/index.js +1 -1
  15. package/dist/package.js +1 -1
  16. package/dist/packages/biome/src/index.d.ts +142 -7
  17. package/dist/packages/biome/src/index.js +1 -1
  18. package/dist/packages/changelog/src/workflows.d.ts +19 -5
  19. package/dist/packages/changelog/src/workflows.js +5 -4
  20. package/dist/packages/config/src/generators/commands.d.ts +22 -0
  21. package/dist/packages/config/src/generators/commands.js +2 -0
  22. package/dist/packages/config/src/generators/index.d.ts +2 -1
  23. package/dist/packages/config/src/generators/index.js +1 -1
  24. package/dist/packages/config/src/generators/types.js +1 -1
  25. package/dist/packages/config/src/index.d.ts +3 -2
  26. package/dist/packages/config/src/index.js +1 -1
  27. package/dist/packages/config/src/schema.js +1 -1
  28. package/dist/packages/core/src/editor-config.js +1 -1
  29. package/dist/packages/core/src/index.d.ts +4 -4
  30. package/dist/packages/core/src/index.js +1 -1
  31. package/dist/packages/core/src/loader.js +1 -1
  32. package/dist/packages/core/src/sync.d.ts +6 -0
  33. package/dist/packages/core/src/sync.js +1 -1
  34. package/dist/packages/core/src/watch.d.ts +41 -0
  35. package/dist/packages/core/src/watch.js +1 -1
  36. package/dist/packages/migrate/src/oxlint-map.d.ts +34 -1
  37. package/dist/packages/migrate/src/oxlint-map.js +1 -1
  38. package/dist/packages/project/src/cli/index.js +1 -1
  39. package/dist/packages/project/src/index.d.ts +3 -3
  40. package/dist/packages/project/src/index.js +1 -1
  41. package/dist/packages/project/src/sync.js +1 -1
  42. package/dist/packages/project/src/typescript.d.ts +12 -4
  43. package/dist/packages/project/src/typescript.js +12 -11
  44. package/dist/packages/shared/src/config-schema/alias-rewrite.d.ts +32 -0
  45. package/dist/packages/shared/src/config-schema/biome.js +1 -1
  46. package/dist/packages/shared/src/config-schema/changelog.d.ts +293 -288
  47. package/dist/packages/shared/src/config-schema/ci.d.ts +888 -864
  48. package/dist/packages/shared/src/config-schema/format.d.ts +4 -6
  49. package/dist/packages/shared/src/config-schema/format.js +1 -1
  50. package/dist/packages/shared/src/config-schema/generated/gitlab-ci.d.ts +1 -1
  51. package/dist/packages/shared/src/config-schema/generated/oxfmt-config.d.ts +1 -1
  52. package/dist/packages/shared/src/config-schema/index.d.ts +2739 -2602
  53. package/dist/packages/shared/src/config-schema/json.d.ts +1 -1
  54. package/dist/packages/shared/src/config-schema/tsconfig.d.ts +21 -0
  55. package/dist/packages/shared/src/config-schema/tsconfig.js +1 -1
  56. package/dist/packages/shared/src/config-schema/vendor-types.d.ts +156 -0
  57. package/dist/packages/shared/src/config-schema/workflow.d.ts +1741 -1704
  58. package/dist/packages/shared/src/config-schema/workflow.js +1 -1
  59. package/dist/packages/shared/src/config-types.d.ts +102 -28
  60. package/dist/packages/shared/src/ignore.d.ts +5 -5
  61. package/dist/packages/shared/src/ignore.js +1 -1
  62. package/dist/packages/shared/src/index.d.ts +8 -5
  63. package/dist/packages/shared/src/index.js +1 -1
  64. package/dist/packages/shared/src/template.d.ts +1 -1
  65. package/dist/packages/shared/src/toolchain.d.ts +12 -3
  66. package/dist/packages/shared/src/toolchain.js +1 -1
  67. package/dist/packages/shared/src/tsconfig-files.d.ts +14 -0
  68. package/dist/packages/shared/src/tsconfig-files.js +1 -0
  69. package/dist/packages/shared/src/types.d.ts +4 -2
  70. package/dist/packages/shared/src/vite-defaults.d.ts +71 -4
  71. package/dist/packages/shared/src/vite-defaults.js +1 -1
  72. package/dist/packages/shared/src/yaml.d.ts +1 -1
  73. package/dist/packages/tsconfig/src/auto.d.ts +11 -0
  74. package/dist/packages/tsconfig/src/auto.js +1 -0
  75. package/dist/packages/tsconfig/src/cli/generate/index.d.ts +58 -0
  76. package/dist/packages/tsconfig/src/cli/generate/index.js +1 -1
  77. package/dist/packages/tsconfig/src/cli/generate/utils.d.ts +12 -0
  78. package/dist/packages/tsconfig/src/cli/generate/utils.js +1 -1
  79. package/dist/packages/tsconfig/src/cli/index.js +1 -1
  80. package/dist/packages/tsconfig/src/files.d.ts +5 -0
  81. package/dist/packages/tsconfig/src/files.js +1 -0
  82. package/dist/packages/tsconfig/src/index.d.ts +6 -5
  83. package/dist/packages/tsconfig/src/index.js +1 -1
  84. package/dist/packages/tsconfig/src/overrides.d.ts +3 -3
  85. package/dist/packages/tsconfig/src/resolve.d.ts +15 -3
  86. package/dist/packages/tsconfig/src/resolve.js +1 -1
  87. package/dist/packages/tsconfig/src/sync.d.ts +5 -11
  88. package/dist/packages/tsconfig/src/sync.js +1 -1
  89. package/dist/packages/tsconfig/src/templates.d.ts +38 -4
  90. package/dist/packages/tsconfig/src/workspaces.d.ts +36 -0
  91. package/dist/packages/tsconfig/src/workspaces.js +1 -0
  92. package/dist/packages/tsdown/src/config/node.js +1 -1
  93. package/dist/packages/vite/src/commands.js +1 -1
  94. package/dist/project.d.ts +2 -2
  95. package/dist/project.js +1 -1
  96. package/dist/shared.d.ts +7 -4
  97. package/dist/shared.js +1 -1
  98. package/dist/sync.d.ts +2 -0
  99. package/dist/sync.js +1 -1
  100. package/dist/tooling.d.ts +18 -1
  101. package/dist/tooling.js +1 -1
  102. package/dist/tsconfig.d.ts +5 -4
  103. package/dist/tsconfig.js +1 -1
  104. package/package.json +15 -14
@@ -1,12 +1,14 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainTsconfigAliasRewrite, ToolchainTsconfigAliasRewriteKey, ToolchainTsconfigAliasRewriteRule } from "./config-schema/alias-rewrite.js";
3
4
  import { AzurePipelines } from "./config-schema/generated/azure-pipelines.js";
4
5
  import { BiomeConfig } from "./config-schema/generated/biome-config.js";
5
6
  import { GitHubWorkflow } from "./config-schema/generated/github-workflow.js";
6
7
  import { GitLabCi } from "./config-schema/generated/gitlab-ci.js";
7
8
  import { OxfmtConfig } from "./config-schema/generated/oxfmt-config.js";
8
9
  import { OxlintConfig } from "./config-schema/generated/oxlint-config.js";
9
- import { AzureWorkflowSetting, ChangelogBranchesConfig, ChangelogBumpRule, ChangelogBumpRuleMatch, ChangelogCommitFormatConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogProviderConfig, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, CiChangelogConfig, ConfigJsonValue, CustomWorkflowSettings, DbxConfigSections, GitHubWorkflowSetting, GitLabWorkflowSetting, ProjectType, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainCiConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainLintConfig, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WorkflowExtra, WorkflowJob, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, WorkflowTokens, WorkflowTriggers } from "./config-types.js";
10
+ import { DprintConfig, EslintConfig, EslintLanguageOptions, EslintLinterOptions, PrettierConfig } from "./config-schema/vendor-types.js";
11
+ import { AzureWorkflowSetting, ChangelogBranchesConfig, ChangelogBumpRule, ChangelogBumpRuleMatch, ChangelogCommitFormatConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogProviderConfig, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, CiChangelogConfig, ConfigJsonValue, CustomWorkflowSettings, DbxConfigSections, GitHubWorkflowSetting, GitLabWorkflowSetting, ProjectType, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainCiConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainLintConfig, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigAliasAutoSetting, ToolchainTsconfigAutoSetting, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, WorkflowExtra, WorkflowJob, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, WorkflowTokens, WorkflowTriggers } from "./config-types.js";
10
12
  import { Replacements } from "./template.js";
11
13
  import { biomeConfigOptionsSchema, biomeConfigSchema } from "./config-schema/biome.js";
12
14
  import { catalogsConfigSchema } from "./config-schema/catalogs.js";
@@ -140,7 +142,14 @@ export declare function resolveCiConfig(config?: ToolchainConfig): ToolchainCiCo
140
142
  */
141
143
  export declare function resolveChangelogConfig(config?: ToolchainConfig): CiChangelogConfig | undefined;
142
144
  /** Default package-manager versions used when a config omits `packageManagerVersion`. */
143
- export declare const DEFAULT_PACKAGE_MANAGER_VERSIONS: Record<string, string>;
145
+ export declare const DEFAULT_PACKAGE_MANAGER_VERSIONS: {
146
+ readonly yarn: '4.17.1';
147
+ readonly pnpm: '10.11.1';
148
+ readonly npm: '11.19.0';
149
+ readonly bun: '1.3.0';
150
+ };
151
+ /** The default version for a package manager, when known. */
152
+ export declare function defaultPackageManagerVersion(packageManager: string): string | undefined;
144
153
  /** Formatter tools, highest priority first. */
145
154
  export declare const FORMATTER_PRECEDENCE: readonly ['oxc', 'biome', 'prettier', 'dprint'];
146
155
  /** Linter tools, highest priority first. */
@@ -254,4 +263,4 @@ export interface SyncTask {
254
263
  run: (ctx: SyncContext) => Awaitable<ManagedFile[] | void>;
255
264
  }
256
265
  //#endregion
257
- export { type AzurePipelines, AzureWorkflowSetting, type BiomeConfig, ChangelogBranchesConfig, ChangelogBumpRule, ChangelogBumpRuleMatch, ChangelogCommitFormatConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogProviderConfig, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, CiChangelogConfig, ConfigJsonValue, CustomWorkflowSettings, DbxConfigSections, ENABLED_DESCRIPTION, type GitHubWorkflow, GitHubWorkflowSetting, type GitLabCi, GitLabWorkflowSetting, type OxfmtConfig, type OxlintConfig, ProjectType, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainCiConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainLintConfig, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, VendorWorkflowConfig, WorkflowExtra, WorkflowJob, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, WorkflowTokens, WorkflowTriggers, azureWorkflowSettingSchema, biomeConfigOptionsSchema, biomeConfigSchema, catalogsConfigSchema, changelogBranchesConfigSchema, changelogBreakingCallbackSchema, changelogBreakingSettingSchema, changelogBumpRuleMatchSchema, changelogBumpRuleSchema, changelogCommitFormatConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogGroupConfigSchema, changelogGroupsSettingSchema, changelogProviderConfigSchema, changelogProviderSettingSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciChangelogConfigSchema, ciConfigSchema, configJsonValueSchema, configSchema, customWorkflowSettingsSchema, dbxConfigSchema, fmtConfigSchema, githubWorkflowSettingSchema, gitlabWorkflowSettingSchema, isVendorWorkflowConfig, lintConfigSchema, loggerConfigSchema, projectConfigSchema, projectTypeSchema, providersConfigSchema, registryConfigSchema, registryPolicySchema, section, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, watchConfigSchema, withEnabled, workflowConfigSchema, workflowExtraSchema, workflowJobSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, workflowTokensSchema, workflowTriggersSchema };
266
+ export { type AzurePipelines, AzureWorkflowSetting, type BiomeConfig, ChangelogBranchesConfig, ChangelogBumpRule, ChangelogBumpRuleMatch, ChangelogCommitFormatConfig, ChangelogCommitlintConfig, ChangelogConfig, ChangelogProviderConfig, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowSetting, CiChangelogConfig, ConfigJsonValue, CustomWorkflowSettings, DbxConfigSections, DprintConfig, ENABLED_DESCRIPTION, EslintConfig, EslintLanguageOptions, EslintLinterOptions, type GitHubWorkflow, GitHubWorkflowSetting, type GitLabCi, GitLabWorkflowSetting, type OxfmtConfig, type OxlintConfig, PrettierConfig, ProjectType, ToolchainBiomeConfig, ToolchainCatalogsConfig, ToolchainCiConfig, ToolchainConfigSections, ToolchainFmtConfig, ToolchainLintConfig, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainRegistryConfig, ToolchainRegistryPolicy, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigAliasAutoSetting, ToolchainTsconfigAliasRewrite, ToolchainTsconfigAliasRewriteKey, ToolchainTsconfigAliasRewriteRule, ToolchainTsconfigAutoSetting, ToolchainTsconfigConfig, ToolchainTsconfigOverrides, ToolchainViteConfig, ToolchainVscodeSettings, ToolchainWatchConfig, VendorWorkflowConfig, WorkflowExtra, WorkflowJob, WorkflowOptions, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, WorkflowTokens, WorkflowTriggers, azureWorkflowSettingSchema, biomeConfigOptionsSchema, biomeConfigSchema, catalogsConfigSchema, changelogBranchesConfigSchema, changelogBreakingCallbackSchema, changelogBreakingSettingSchema, changelogBumpRuleMatchSchema, changelogBumpRuleSchema, changelogCommitFormatConfigSchema, changelogCommitlintConfigSchema, changelogConfigSchema, changelogGroupConfigSchema, changelogGroupsSettingSchema, changelogProviderConfigSchema, changelogProviderSettingSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowSettingSchema, ciChangelogConfigSchema, ciConfigSchema, configJsonValueSchema, configSchema, customWorkflowSettingsSchema, dbxConfigSchema, fmtConfigSchema, githubWorkflowSettingSchema, gitlabWorkflowSettingSchema, isVendorWorkflowConfig, lintConfigSchema, loggerConfigSchema, projectConfigSchema, projectTypeSchema, providersConfigSchema, registryConfigSchema, registryPolicySchema, section, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, vscodeSettingsSchema, watchConfigSchema, withEnabled, workflowConfigSchema, workflowExtraSchema, workflowJobSchema, workflowOptionsSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, workflowTokensSchema, workflowTriggersSchema };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{deepMerge as e,isPlainObject as t}from"./object-utils.js";import{configJsonValueSchema as n}from"./config-schema/json.js";import{ENABLED_DESCRIPTION as r,section as i,withEnabled as a}from"./config-schema/meta.js";import{azureWorkflowSettingSchema as ee,customWorkflowSettingsSchema as te,githubWorkflowSettingSchema as ne,gitlabWorkflowSettingSchema as re,isVendorWorkflowConfig as o,workflowConfigSchema as ie,workflowExtraSchema as ae,workflowJobSchema as oe,workflowOptionsSchema as se,workflowSettingSchema as ce,workflowStepSchema as le,workflowStepsConfigSchema as ue,workflowTokensSchema as de,workflowTriggersSchema as fe}from"./config-schema/workflow.js";import{biomeConfigOptionsSchema as pe,biomeConfigSchema as s}from"./config-schema/biome.js";import{catalogsConfigSchema as c}from"./config-schema/catalogs.js";import{changelogBranchesConfigSchema as l,changelogBreakingCallbackSchema as u,changelogBreakingSettingSchema as d,changelogBumpRuleMatchSchema as f,changelogBumpRuleSchema as p,changelogCommitFormatConfigSchema as m,changelogCommitlintConfigSchema as h,changelogConfigSchema as g,changelogGroupConfigSchema as _,changelogGroupsSettingSchema as v,changelogProviderConfigSchema as y,changelogProviderSettingSchema as b,changelogVersioningConfigSchema as x,changelogVersioningSchema as S,changelogVersioningTargetSchema as C,changelogWorkflowSettingSchema as w,ciChangelogConfigSchema as T}from"./config-schema/changelog.js";import{ciConfigSchema as E}from"./config-schema/ci.js";import{fmtConfigSchema as D,lintConfigSchema as O,vscodeSettingsSchema as k}from"./config-schema/format.js";import{loggerConfigSchema as A}from"./config-schema/logger.js";import{projectConfigSchema as j,projectTypeSchema as M}from"./config-schema/project.js";import{providersConfigSchema as N}from"./config-schema/providers.js";import{registryConfigSchema as P,registryPolicySchema as me}from"./config-schema/registry.js";import{templateKindSchema as F,templateSourceSchema as I,templateSourceTypeSchema as L,templatesConfigSchema as R}from"./config-schema/templates.js";import{tsconfigConfigSchema as z}from"./config-schema/tsconfig.js";import{viteConfigSchema as he}from"./config-schema/vite.js";import{watchConfigSchema as ge}from"./config-schema/watch.js";import{configSchema as _e,dbxConfigSchema as ve,toolchainConfigSchema as ye}from"./config-schema/index.js";function be(e){return e}function B(e){return e===void 0?!1:typeof e==`boolean`?e:e.enabled!==!1}function V(e){return e!==void 0&&typeof e==`object`?e:void 0}const xe=[`dbx.config.ts`,`dbx.config.mts`,`dbx.config.js`,`dbx.config.mjs`,`dbx.config.cjs`,`dbx.config.json`];function H(e){if(!e)return;let t=e.match(/github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/);return t?.[1]&&t[2]?`${t[1]}/${t[2]}`:void 0}function U(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function W(e={}){return B(e.ci)?V(e.ci):void 0}function G(t={}){let n=V(t.changelog),r=n&&B(n)?n:void 0,i=W(t)?.changelog;if(i===!1)return;if(i===void 0||i===!0||typeof i==`string`||o(i))return r;let a=i;if(B(a))return r?e(r,a):a}const K={yarn:`4.17.1`,pnpm:`10.11.1`,npm:`11.19.0`,bun:`1.3.0`},q=[`oxc`,`biome`,`prettier`,`dprint`],J=[`oxc`,`biome`,`eslint`];function Y(e){return B(e)?V(e):void 0}function X(e={}){let t=Y(e.fmt)??{},n=Y(e.vite),r=/* @__PURE__ */ new Set;return n?.fmt!==void 0&&n.fmt!==!1&&r.add(`oxc`),t.oxc!==void 0&&t.oxc!==!1&&r.add(`oxc`),t.biome!==void 0&&t.biome!==!1&&r.add(`biome`),t.prettier!==void 0&&t.prettier!==!1&&r.add(`prettier`),t.dprint!==void 0&&t.dprint!==!1&&r.add(`dprint`),q.filter(e=>r.has(e))}function Z(e={}){let t=Y(e.lint)??{},n=Y(e.vite),r=/* @__PURE__ */ new Set;return n?.lint!==void 0&&n.lint!==!1&&r.add(`oxc`),t.oxc!==void 0&&t.oxc!==!1&&r.add(`oxc`),t.biome!==void 0&&t.biome!==!1&&r.add(`biome`),t.eslint!==void 0&&t.eslint!==!1&&r.add(`eslint`),J.filter(e=>r.has(e))}function Se(e={}){return X(e)[0]}function Ce(e={}){return Z(e)[0]}function we(n={}){let r=Y(n.fmt)?.oxc,i=Y(n.vite)?.fmt;return i===void 0?r:i===!1?!1:i===!0?r??!0:r===void 0?i:t(r)&&t(i)?e(r,i):i}function Q(n={}){let r=Y(n.lint)?.oxc,i=Y(n.vite)?.lint;return i===void 0?r:i===!1?!1:i===!0?r??!0:r===void 0?i:t(r)&&t(i)?e(r,i):i}function Te(e={}){let t=W(e)?.changelog;return t===void 0?!1:typeof t==`boolean`?t:typeof t==`string`?t.trim().length>0:B(t)}function Ee(e){let t=e?.commitlint;return t===void 0?!0:typeof t==`boolean`?t:t.enabled!==!1}function $(e){let t=e?.branches??{},n=U(t.main);n.length===0&&n.push(`main`);let r=U(t.dev);return{main:n,dev:r.length>0?r:n}}function De(e={}){let t=e.project??{},n=$(G(e)??{}),r=t.name??`app`,i=t.packageManager??`yarn`,a=t.packageManagerVersion??K[i]??`4.17.1`;return{name:r,scope:t.scope??``,author:t.author??``,license:t.license??`MIT`,homepage:t.homepage??``,repo:t.repo??``,repoSlug:H(t.repo)??``,description:t.description??``,nodeVersion:t.nodeVersion??`22`,packageManager:i,yarnVersion:a,packageManagerVersion:a,mainBranch:n.main[0]??`main`,devBranch:n.dev[0]??`main`}}export{xe as CONFIG_FILE_NAMES,K as DEFAULT_PACKAGE_MANAGER_VERSIONS,r as ENABLED_DESCRIPTION,q as FORMATTER_PRECEDENCE,J as LINTER_PRECEDENCE,ee as azureWorkflowSettingSchema,pe as biomeConfigOptionsSchema,s as biomeConfigSchema,c as catalogsConfigSchema,l as changelogBranchesConfigSchema,u as changelogBreakingCallbackSchema,d as changelogBreakingSettingSchema,f as changelogBumpRuleMatchSchema,p as changelogBumpRuleSchema,m as changelogCommitFormatConfigSchema,h as changelogCommitlintConfigSchema,g as changelogConfigSchema,_ as changelogGroupConfigSchema,v as changelogGroupsSettingSchema,y as changelogProviderConfigSchema,b as changelogProviderSettingSchema,Te as changelogSectionEnabled,x as changelogVersioningConfigSchema,S as changelogVersioningSchema,C as changelogVersioningTargetSchema,w as changelogWorkflowSettingSchema,T as ciChangelogConfigSchema,E as ciConfigSchema,n as configJsonValueSchema,_e as configSchema,te as customWorkflowSettingsSchema,ve as dbxConfigSchema,be as defineConfig,D as fmtConfigSchema,ne as githubWorkflowSettingSchema,re as gitlabWorkflowSettingSchema,o as isVendorWorkflowConfig,O as lintConfigSchema,A as loggerConfigSchema,j as projectConfigSchema,M as projectTypeSchema,N as providersConfigSchema,P as registryConfigSchema,me as registryPolicySchema,H as repoSlugFromUrl,$ as resolveChangelogBranches,G as resolveChangelogConfig,W as resolveCiConfig,Ee as resolveCommitlintEnabled,Se as resolveFmtTool,X as resolveFmtTools,Ce as resolveLintTool,Z as resolveLintTools,we as resolveOxcFmtConfig,Q as resolveOxcLintConfig,De as resolveTokens,i as section,V as sectionConfig,B as sectionEnabled,F as templateKindSchema,I as templateSourceSchema,L as templateSourceTypeSchema,R as templatesConfigSchema,ye as toolchainConfigSchema,z as tsconfigConfigSchema,he as viteConfigSchema,k as vscodeSettingsSchema,ge as watchConfigSchema,a as withEnabled,ie as workflowConfigSchema,ae as workflowExtraSchema,oe as workflowJobSchema,se as workflowOptionsSchema,ce as workflowSettingSchema,le as workflowStepSchema,ue as workflowStepsConfigSchema,de as workflowTokensSchema,fe as workflowTriggersSchema};
1
+ import"node:path";import"node:url";import.meta.url;import{deepMerge as e,isPlainObject as t}from"./object-utils.js";import{configJsonValueSchema as n}from"./config-schema/json.js";import{ENABLED_DESCRIPTION as r,section as i,withEnabled as a}from"./config-schema/meta.js";import{azureWorkflowSettingSchema as ee,customWorkflowSettingsSchema as te,githubWorkflowSettingSchema as ne,gitlabWorkflowSettingSchema as re,isVendorWorkflowConfig as o,workflowConfigSchema as s,workflowExtraSchema as c,workflowJobSchema as ie,workflowOptionsSchema as ae,workflowSettingSchema as oe,workflowStepSchema as se,workflowStepsConfigSchema as ce,workflowTokensSchema as le,workflowTriggersSchema as ue}from"./config-schema/workflow.js";import{biomeConfigOptionsSchema as de,biomeConfigSchema as fe}from"./config-schema/biome.js";import{catalogsConfigSchema as pe}from"./config-schema/catalogs.js";import{changelogBranchesConfigSchema as l,changelogBreakingCallbackSchema as u,changelogBreakingSettingSchema as d,changelogBumpRuleMatchSchema as f,changelogBumpRuleSchema as p,changelogCommitFormatConfigSchema as m,changelogCommitlintConfigSchema as h,changelogConfigSchema as g,changelogGroupConfigSchema as _,changelogGroupsSettingSchema as v,changelogProviderConfigSchema as y,changelogProviderSettingSchema as b,changelogVersioningConfigSchema as x,changelogVersioningSchema as S,changelogVersioningTargetSchema as C,changelogWorkflowSettingSchema as w,ciChangelogConfigSchema as T}from"./config-schema/changelog.js";import{ciConfigSchema as E}from"./config-schema/ci.js";import{fmtConfigSchema as D,lintConfigSchema as O,vscodeSettingsSchema as k}from"./config-schema/format.js";import{loggerConfigSchema as A}from"./config-schema/logger.js";import{projectConfigSchema as j,projectTypeSchema as M}from"./config-schema/project.js";import{providersConfigSchema as N}from"./config-schema/providers.js";import{registryConfigSchema as P,registryPolicySchema as F}from"./config-schema/registry.js";import{templateKindSchema as me,templateSourceSchema as I,templateSourceTypeSchema as L,templatesConfigSchema as R}from"./config-schema/templates.js";import{tsconfigConfigSchema as z}from"./config-schema/tsconfig.js";import{viteConfigSchema as he}from"./config-schema/vite.js";import{watchConfigSchema as ge}from"./config-schema/watch.js";import{configSchema as _e,dbxConfigSchema as ve,toolchainConfigSchema as ye}from"./config-schema/index.js";function be(e){return e}function B(e){return e===void 0?!1:typeof e==`boolean`?e:e.enabled!==!1}function V(e){return e!==void 0&&typeof e==`object`?e:void 0}const xe=[`dbx.config.ts`,`dbx.config.mts`,`dbx.config.js`,`dbx.config.mjs`,`dbx.config.cjs`,`dbx.config.json`];function H(e){if(!e)return;let t=e.match(/github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/);return t?.[1]&&t[2]?`${t[1]}/${t[2]}`:void 0}function U(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function W(e={}){return B(e.ci)?V(e.ci):void 0}function G(t={}){let n=V(t.changelog),r=n&&B(n)?n:void 0,i=W(t)?.changelog;if(i===!1)return;if(i===void 0||i===!0||typeof i==`string`||o(i))return r;let a=i;if(B(a))return r?e(r,a):a}const K={yarn:`4.17.1`,pnpm:`10.11.1`,npm:`11.19.0`,bun:`1.3.0`};function q(e){return K[e]}const J=[`oxc`,`biome`,`prettier`,`dprint`],Y=[`oxc`,`biome`,`eslint`];function X(e){return B(e)?V(e):void 0}function Z(e={}){let t=X(e.fmt)??{},n=X(e.vite),r=/* @__PURE__ */ new Set;return n?.fmt!==void 0&&n.fmt!==!1&&r.add(`oxc`),t.oxc!==void 0&&t.oxc!==!1&&r.add(`oxc`),t.biome!==void 0&&t.biome!==!1&&r.add(`biome`),t.prettier!==void 0&&t.prettier!==!1&&r.add(`prettier`),t.dprint!==void 0&&t.dprint!==!1&&r.add(`dprint`),J.filter(e=>r.has(e))}function Q(e={}){let t=X(e.lint)??{},n=X(e.vite),r=/* @__PURE__ */ new Set;return n?.lint!==void 0&&n.lint!==!1&&r.add(`oxc`),t.oxc!==void 0&&t.oxc!==!1&&r.add(`oxc`),t.biome!==void 0&&t.biome!==!1&&r.add(`biome`),t.eslint!==void 0&&t.eslint!==!1&&r.add(`eslint`),Y.filter(e=>r.has(e))}function Se(e={}){return Z(e)[0]}function Ce(e={}){return Q(e)[0]}function we(n={}){let r=X(n.fmt)?.oxc,i=X(n.vite)?.fmt;return i===void 0?r:i===!1?!1:i===!0?r??!0:r===void 0?i:t(r)&&t(i)?e(r,i):i}function Te(n={}){let r=X(n.lint)?.oxc,i=X(n.vite)?.lint;return i===void 0?r:i===!1?!1:i===!0?r??!0:r===void 0?i:t(r)&&t(i)?e(r,i):i}function Ee(e={}){let t=W(e)?.changelog;return t===void 0?!1:typeof t==`boolean`?t:typeof t==`string`?t.trim().length>0:B(t)}function De(e){let t=e?.commitlint;return t===void 0?!0:typeof t==`boolean`?t:t.enabled!==!1}function $(e){let t=e?.branches??{},n=U(t.main);n.length===0&&n.push(`main`);let r=U(t.dev);return{main:n,dev:r.length>0?r:n}}function Oe(e={}){let t=e.project??{},n=$(G(e)??{}),r=t.name??`app`,i=t.packageManager??`yarn`,a=t.packageManagerVersion??q(i)??`4.17.1`;return{name:r,scope:t.scope??``,author:t.author??``,license:t.license??`MIT`,homepage:t.homepage??``,repo:t.repo??``,repoSlug:H(t.repo)??``,description:t.description??``,nodeVersion:t.nodeVersion??`22`,packageManager:i,yarnVersion:a,packageManagerVersion:a,mainBranch:n.main[0]??`main`,devBranch:n.dev[0]??`main`}}export{xe as CONFIG_FILE_NAMES,K as DEFAULT_PACKAGE_MANAGER_VERSIONS,r as ENABLED_DESCRIPTION,J as FORMATTER_PRECEDENCE,Y as LINTER_PRECEDENCE,ee as azureWorkflowSettingSchema,de as biomeConfigOptionsSchema,fe as biomeConfigSchema,pe as catalogsConfigSchema,l as changelogBranchesConfigSchema,u as changelogBreakingCallbackSchema,d as changelogBreakingSettingSchema,f as changelogBumpRuleMatchSchema,p as changelogBumpRuleSchema,m as changelogCommitFormatConfigSchema,h as changelogCommitlintConfigSchema,g as changelogConfigSchema,_ as changelogGroupConfigSchema,v as changelogGroupsSettingSchema,y as changelogProviderConfigSchema,b as changelogProviderSettingSchema,Ee as changelogSectionEnabled,x as changelogVersioningConfigSchema,S as changelogVersioningSchema,C as changelogVersioningTargetSchema,w as changelogWorkflowSettingSchema,T as ciChangelogConfigSchema,E as ciConfigSchema,n as configJsonValueSchema,_e as configSchema,te as customWorkflowSettingsSchema,ve as dbxConfigSchema,q as defaultPackageManagerVersion,be as defineConfig,D as fmtConfigSchema,ne as githubWorkflowSettingSchema,re as gitlabWorkflowSettingSchema,o as isVendorWorkflowConfig,O as lintConfigSchema,A as loggerConfigSchema,j as projectConfigSchema,M as projectTypeSchema,N as providersConfigSchema,P as registryConfigSchema,F as registryPolicySchema,H as repoSlugFromUrl,$ as resolveChangelogBranches,G as resolveChangelogConfig,W as resolveCiConfig,De as resolveCommitlintEnabled,Se as resolveFmtTool,Z as resolveFmtTools,Ce as resolveLintTool,Q as resolveLintTools,we as resolveOxcFmtConfig,Te as resolveOxcLintConfig,Oe as resolveTokens,i as section,V as sectionConfig,B as sectionEnabled,me as templateKindSchema,I as templateSourceSchema,L as templateSourceTypeSchema,R as templatesConfigSchema,ye as toolchainConfigSchema,z as tsconfigConfigSchema,he as viteConfigSchema,k as vscodeSettingsSchema,ge as watchConfigSchema,a as withEnabled,s as workflowConfigSchema,c as workflowExtraSchema,ie as workflowJobSchema,ae as workflowOptionsSchema,oe as workflowSettingSchema,se as workflowStepSchema,ce as workflowStepsConfigSchema,le as workflowTokensSchema,ue as workflowTriggersSchema};
@@ -0,0 +1,14 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainConfig } from "./toolchain.js";
4
+ //#region packages/shared/src/tsconfig-files.d.ts
5
+ /** The tsconfig file names a project reads and patches (custom names honoured). */
6
+ export interface TsconfigFileNameSet {
7
+ baseFile: string;
8
+ rootFile: string;
9
+ defaultFile: string;
10
+ buildFile: string;
11
+ }
12
+ /** Resolve the configured tsconfig file names (defaults for the unset ones). */
13
+ export declare function tsconfigFileNames(config: ToolchainConfig): TsconfigFileNameSet;
14
+ //#endregion
@@ -0,0 +1 @@
1
+ import"node:path";import"node:url";import.meta.url;import{sectionConfig as e}from"./toolchain.js";function t(t){let n=e(t.tsconfig)??{};return{baseFile:n.baseFile??`tsconfig.base.json`,rootFile:n.rootFile??`tsconfig.workspaces.json`,defaultFile:n.defaultFile??`tsconfig.default.json`,buildFile:n.buildFile??`tsconfig.build.json`}}export{t as tsconfigFileNames};
@@ -13,7 +13,7 @@ export interface GeneratedFile {
13
13
  }
14
14
  /** Any JSON-serializable value. */
15
15
  export type JsonValue = string | number | boolean | null | JsonValue[] | {
16
- [key: string]: JsonValue;
16
+ [key: string & {}]: JsonValue;
17
17
  };
18
18
  /** A CLI option a tooling command exposes (framework-agnostic). */
19
19
  export interface ToolchainOption {
@@ -44,6 +44,8 @@ export interface ToolchainCommandContext {
44
44
  tokens: Replacements;
45
45
  /** The config file that was loaded, if any. */
46
46
  configPath?: string;
47
+ /** The inherited ancestor config file, when this project has no config of its own. */
48
+ parentPath?: string;
47
49
  /** Whether config discovery was disabled (`dbx --no-config`). */
48
50
  noConfig?: boolean;
49
51
  /**
@@ -119,6 +121,6 @@ export interface PackageJson {
119
121
  };
120
122
  exports?: Record<string, unknown> | string;
121
123
  files?: string[];
122
- [key: string]: unknown;
124
+ [key: string & {}]: unknown;
123
125
  }
124
126
  //#endregion
@@ -3,6 +3,8 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { OxfmtConfig } from "./config-schema/generated/oxfmt-config.js";
4
4
  import { OxlintConfig } from "./config-schema/generated/oxlint-config.js";
5
5
  //#region packages/shared/src/vite-defaults.d.ts
6
+ /** A deeply readonly view of a config object (for the literal default values). */
7
+ export type DeepReadonly<T> = T extends readonly (infer U)[] ? readonly DeepReadonly<U>[] : T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]>; } : T;
6
8
  /** The Oxfmt options accepted by Vite+ (`toolchain.vite.fmt`). */
7
9
  export type ToolchainOxfmtConfig = OxfmtConfig;
8
10
  /** The Oxlint options accepted by Vite+ (`toolchain.vite.lint`). */
@@ -20,7 +22,7 @@ export declare const DEFAULT_FMT_SORT_GROUP = "workspace";
20
22
  * aliases, relatives, styles and unknowns. The `workspace` group is inserted
21
23
  * after `external` by {@link applyFmtCustomGroups}.
22
24
  */
23
- export declare const DEFAULT_FMT_SORT_GROUPS: FmtSortGroup[];
25
+ export declare const DEFAULT_FMT_SORT_GROUPS: readonly ['builtin', 'external', readonly ['internal', 'subpath'], readonly ['parent', 'sibling', 'index'], 'style', 'unknown'];
24
26
  /** The default Oxfmt `sortImports` options (without resolved custom groups). */
25
27
  export declare const DEFAULT_FMT_SORT_IMPORTS: FmtSortImports;
26
28
  /**
@@ -28,7 +30,42 @@ export declare const DEFAULT_FMT_SORT_IMPORTS: FmtSortImports;
28
30
  * object is merged over. Import sorting is enabled by default; the workspace
29
31
  * custom group is filled in from the project graph by `resolveFmtCustomGroups`.
30
32
  */
31
- export declare const DEFAULT_FMT_RULES: ToolchainOxfmtConfig;
33
+ export declare const DEFAULT_FMT_RULES: {
34
+ readonly useTabs: false;
35
+ readonly tabWidth: 4;
36
+ readonly printWidth: 100;
37
+ readonly endOfLine: 'lf';
38
+ readonly insertFinalNewline: true;
39
+ readonly singleQuote: true;
40
+ readonly jsxSingleQuote: false;
41
+ readonly quoteProps: 'as-needed';
42
+ readonly trailingComma: 'es5';
43
+ readonly semi: true;
44
+ readonly arrowParens: 'avoid';
45
+ readonly bracketSpacing: true;
46
+ readonly bracketSameLine: false;
47
+ readonly singleAttributePerLine: false;
48
+ readonly objectWrap: 'preserve';
49
+ readonly proseWrap: 'preserve';
50
+ readonly embeddedLanguageFormatting: 'auto';
51
+ readonly htmlWhitespaceSensitivity: 'css';
52
+ readonly vueIndentScriptAndStyle: false;
53
+ readonly sortPackageJson: false;
54
+ readonly sortImports: {
55
+ readonly ignoreCase?: boolean;
56
+ readonly internalPattern?: Array<string>;
57
+ readonly newlinesBetween?: boolean;
58
+ readonly order?: 'asc' | 'desc';
59
+ readonly partitionByComment?: boolean;
60
+ readonly partitionByNewline?: boolean;
61
+ readonly sortSideEffects?: boolean;
62
+ readonly groups: (string | string[] | {
63
+ newlinesBetween: boolean;
64
+ })[];
65
+ readonly customGroups: readonly [];
66
+ };
67
+ readonly ignorePatterns: readonly ["**/node_modules/**", "**/.git/**", "**/.dbx/**", "**/dist/**", "**/build/**", "**/out/**", "**/coverage/**", "**/.turbo/**", "**/.yarn/**", "**/.next/**", "**/.cache/**", "**/.output/**", "**/.vite/**", "**/.vscode/**", "**/.nyc_output/**", "**/*.tsbuildinfo", "**/.nuxt/**", "**/.svelte-kit/**", "**/.generated/**", "**/generated/**", "**/*.json", "**/*.yml", "**/*.yaml", "**/*.lock", "**/*.min.*", "**/*.gen.*", "**/CHANGELOG.md", "CHANGELOG.proposed.md", "**/vite.config.ts"];
68
+ };
32
69
  /** The `name`/`scope` fields needed to build a workspace custom group. */
33
70
  export interface FmtProjectIdentity {
34
71
  name?: string;
@@ -45,11 +82,41 @@ export declare function fmtCustomGroupsForProjects(projects: Iterable<FmtProject
45
82
  * groups the consumer already defined. `sortImports: false` is respected; when
46
83
  * `sortImports` is absent the config is left alone.
47
84
  */
48
- export declare function applyFmtCustomGroups(fmt: ToolchainOxfmtConfig, customGroups: FmtCustomGroup[]): ToolchainOxfmtConfig;
85
+ export declare function applyFmtCustomGroups(fmt: ToolchainOxfmtConfig | DeepReadonly<ToolchainOxfmtConfig>, customGroups: FmtCustomGroup[]): ToolchainOxfmtConfig;
49
86
  /**
50
87
  * The Oxlint options used when `vite.lint` is `true`, and the base an options
51
88
  * object is merged over. Framework/a11y rules are disabled by default (opt in
52
89
  * per project); the remaining rules are non-blocking warnings.
53
90
  */
54
- export declare const DEFAULT_LINT_RULES: ToolchainOxlintConfig;
91
+ export declare const DEFAULT_LINT_RULES: {
92
+ readonly ignorePatterns: readonly ["**/node_modules/**", "**/.git/**", "**/.dbx/**", "**/dist/**", "**/build/**", "**/out/**", "**/coverage/**", "**/.turbo/**", "**/.yarn/**", "**/.next/**", "**/.cache/**", "**/.output/**", "**/.vite/**", "**/.vscode/**", "**/.nyc_output/**", "**/*.tsbuildinfo", "**/.nuxt/**", "**/.svelte-kit/**", "**/.generated/**", "**/generated/**", "**/*.gen.*", "**/*.min.*", "**/vendor/**"];
93
+ readonly rules: {
94
+ readonly 'jsx-a11y/alt-text': 'off';
95
+ readonly 'jsx-a11y/aria-props': 'off';
96
+ readonly 'jsx-a11y/click-events-have-key-events': 'off';
97
+ readonly 'react/button-has-type': 'off';
98
+ readonly 'react/react-in-jsx-scope': 'off';
99
+ readonly 'react/exhaustive-deps': 'off';
100
+ readonly 'typescript/no-empty-object-type': 'off';
101
+ readonly 'typescript/no-explicit-any': 'off';
102
+ readonly 'typescript/no-non-null-assertion': 'off';
103
+ readonly 'typescript/no-useless-empty-export': 'off';
104
+ readonly eqeqeq: 'warn';
105
+ readonly 'import/no-duplicates': 'warn';
106
+ readonly 'no-alert': 'warn';
107
+ readonly 'no-case-declarations': 'off';
108
+ readonly 'no-console': 'off';
109
+ readonly 'no-constant-condition': 'off';
110
+ readonly 'no-control-regex': 'off';
111
+ readonly 'no-debugger': 'warn';
112
+ readonly 'no-inner-declarations': 'off';
113
+ readonly 'no-return-assign': 'off';
114
+ readonly 'no-unused-vars': 'warn';
115
+ readonly 'no-useless-escape': 'off';
116
+ readonly 'no-var': 'warn';
117
+ readonly 'prefer-const': 'warn';
118
+ readonly 'prefer-exponentiation-operator': 'off';
119
+ readonly 'prefer-template': 'off';
120
+ };
121
+ };
55
122
  //#endregion
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{isPlainObject as e}from"./object-utils.js";import{DEFAULT_FMT_IGNORE_PATTERNS as t,DEFAULT_LINT_IGNORE_PATTERNS as n}from"./ignore.js";const r=`workspace`,i=[`builtin`,`external`,[`internal`,`subpath`],[`parent`,`sibling`,`index`],`style`,`unknown`],a={groups:[...i],customGroups:[],internalPattern:[`~/`,`@/`],newlinesBetween:!0},o={useTabs:!1,tabWidth:4,printWidth:100,endOfLine:`lf`,insertFinalNewline:!0,singleQuote:!0,jsxSingleQuote:!1,quoteProps:`as-needed`,trailingComma:`es5`,semi:!0,arrowParens:`avoid`,bracketSpacing:!0,bracketSameLine:!1,singleAttributePerLine:!1,objectWrap:`preserve`,proseWrap:`preserve`,embeddedLanguageFormatting:`auto`,htmlWhitespaceSensitivity:`css`,vueIndentScriptAndStyle:!1,sortPackageJson:!1,sortImports:{...a,groups:[...i],customGroups:[]},ignorePatterns:[...t]};function s(e){let t=/* @__PURE__ */ new Set,n=/* @__PURE__ */ new Set;for(let r of e)r&&(r.scope&&t.add(r.scope),r.name&&n.add(r.name));let i=[...[...t].sort().map(e=>`${e}/**`),...[...n].sort().flatMap(e=>[e,`${e}/**`])],a=[...new Set(i)];return a.length>0?[{groupName:r,elementNamePattern:a}]:[]}function c(e){return typeof e==`string`?[e]:Array.isArray(e)?e:[]}function l(e,t){if(e.some(e=>c(e).includes(t)))return;let n=e.findIndex(e=>c(e).includes(`external`));e.splice(n===-1?e.length:n+1,0,t)}function u(t,n){if(n.length===0||t.sortImports===void 0||t.sortImports===!1)return t;let r=t.sortImports===!0||!e(t.sortImports)?{...a,groups:[...i],customGroups:[]}:{...t.sortImports},o=Array.isArray(r.groups)?[...r.groups]:[...i],s=Array.isArray(r.customGroups)?r.customGroups.map(e=>({...e})):[];for(let e of n){let t=s.findIndex(t=>t.groupName===e.groupName);if(t===-1)s.push({...e});else{let n=s[t];s[t]={...n,elementNamePattern:[.../* @__PURE__ */ new Set([...n?.elementNamePattern??[],...e.elementNamePattern??[]])]}}e.groupName&&l(o,e.groupName)}return{...t,sortImports:{...r,groups:o,customGroups:s}}}const d={ignorePatterns:[...n],rules:{"jsx-a11y/alt-text":`off`,"jsx-a11y/aria-props":`off`,"jsx-a11y/click-events-have-key-events":`off`,"react/button-has-type":`off`,"react/react-in-jsx-scope":`off`,"react/exhaustive-deps":`off`,"typescript/no-empty-object-type":`off`,"typescript/no-explicit-any":`off`,"typescript/no-non-null-assertion":`off`,"typescript/no-useless-empty-export":`off`,eqeqeq:`warn`,"import/no-duplicates":`warn`,"no-alert":`warn`,"no-case-declarations":`off`,"no-console":`off`,"no-constant-condition":`off`,"no-control-regex":`off`,"no-debugger":`warn`,"no-inner-declarations":`off`,"no-return-assign":`off`,"no-unused-vars":`warn`,"no-useless-escape":`off`,"no-var":`warn`,"prefer-const":`warn`,"prefer-exponentiation-operator":`off`,"prefer-template":`off`}};export{o as DEFAULT_FMT_RULES,r as DEFAULT_FMT_SORT_GROUP,i as DEFAULT_FMT_SORT_GROUPS,a as DEFAULT_FMT_SORT_IMPORTS,d as DEFAULT_LINT_RULES,u as applyFmtCustomGroups,s as fmtCustomGroupsForProjects};
1
+ import"node:path";import"node:url";import.meta.url;import{isPlainObject as e}from"./object-utils.js";import{DEFAULT_FMT_IGNORE_PATTERNS as t,DEFAULT_LINT_IGNORE_PATTERNS as n}from"./ignore.js";const r=`workspace`,i=[`builtin`,`external`,[`internal`,`subpath`],[`parent`,`sibling`,`index`],`style`,`unknown`];function a(){return i.map(e=>Array.isArray(e)?[...e]:e)}const o={groups:a(),customGroups:[],internalPattern:[`~/`,`@/`],newlinesBetween:!0},s={useTabs:!1,tabWidth:4,printWidth:100,endOfLine:`lf`,insertFinalNewline:!0,singleQuote:!0,jsxSingleQuote:!1,quoteProps:`as-needed`,trailingComma:`es5`,semi:!0,arrowParens:`avoid`,bracketSpacing:!0,bracketSameLine:!1,singleAttributePerLine:!1,objectWrap:`preserve`,proseWrap:`preserve`,embeddedLanguageFormatting:`auto`,htmlWhitespaceSensitivity:`css`,vueIndentScriptAndStyle:!1,sortPackageJson:!1,sortImports:{...o,groups:a(),customGroups:[]},ignorePatterns:[...t]};function c(e){let t=/* @__PURE__ */ new Set,n=/* @__PURE__ */ new Set;for(let r of e)r&&(r.scope&&t.add(r.scope),r.name&&n.add(r.name));let i=[...[...t].sort().map(e=>`${e}/**`),...[...n].sort().flatMap(e=>[e,`${e}/**`])],a=[...new Set(i)];return a.length>0?[{groupName:r,elementNamePattern:a}]:[]}function l(e){return typeof e==`string`?[e]:Array.isArray(e)?e:[]}function u(e,t){if(e.some(e=>l(e).includes(t)))return;let n=e.findIndex(e=>l(e).includes(`external`));e.splice(n===-1?e.length:n+1,0,t)}function d(t,n){let r=t;if(n.length===0||r.sortImports===void 0||r.sortImports===!1)return r;let i=r.sortImports===!0||!e(r.sortImports)?{...o,groups:a(),customGroups:[]}:{...r.sortImports},s=Array.isArray(i.groups)?[...i.groups]:a(),c=Array.isArray(i.customGroups)?i.customGroups.map(e=>({...e})):[];for(let e of n){let t=c.findIndex(t=>t.groupName===e.groupName);if(t===-1)c.push({...e});else{let n=c[t];c[t]={...n,elementNamePattern:[.../* @__PURE__ */ new Set([...n?.elementNamePattern??[],...e.elementNamePattern??[]])]}}e.groupName&&u(s,e.groupName)}return{...r,sortImports:{...i,groups:s,customGroups:c}}}const f={ignorePatterns:[...n],rules:{"jsx-a11y/alt-text":`off`,"jsx-a11y/aria-props":`off`,"jsx-a11y/click-events-have-key-events":`off`,"react/button-has-type":`off`,"react/react-in-jsx-scope":`off`,"react/exhaustive-deps":`off`,"typescript/no-empty-object-type":`off`,"typescript/no-explicit-any":`off`,"typescript/no-non-null-assertion":`off`,"typescript/no-useless-empty-export":`off`,eqeqeq:`warn`,"import/no-duplicates":`warn`,"no-alert":`warn`,"no-case-declarations":`off`,"no-console":`off`,"no-constant-condition":`off`,"no-control-regex":`off`,"no-debugger":`warn`,"no-inner-declarations":`off`,"no-return-assign":`off`,"no-unused-vars":`warn`,"no-useless-escape":`off`,"no-var":`warn`,"prefer-const":`warn`,"prefer-exponentiation-operator":`off`,"prefer-template":`off`}};export{s as DEFAULT_FMT_RULES,r as DEFAULT_FMT_SORT_GROUP,i as DEFAULT_FMT_SORT_GROUPS,o as DEFAULT_FMT_SORT_IMPORTS,f as DEFAULT_LINT_RULES,d as applyFmtCustomGroups,c as fmtCustomGroupsForProjects};
@@ -9,7 +9,7 @@ import __tsdown_shims_url from 'node:url';
9
9
  * double-quoted.
10
10
  */
11
11
  type YamlValue = string | number | boolean | null | YamlValue[] | {
12
- [key: string]: YamlValue;
12
+ [key: string & {}]: YamlValue;
13
13
  };
14
14
  /** Serialize a value (expected to be a map) to a YAML document. */
15
15
  export declare function toYaml(value: Record<string, YamlValue>): string;
@@ -0,0 +1,11 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import "./workspaces.js";
4
+ import { TsConfigJson } from "type-fest";
5
+ //#region packages/tsconfig/src/auto.d.ts
6
+ /** The keys auto-wiring owns in the root workspaces tsconfig. */
7
+ export interface TsconfigAutoState {
8
+ paths: string[];
9
+ references: string[];
10
+ }
11
+ //#endregion
@@ -0,0 +1 @@
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{resolveTsconfigCompilerOption as t}from"./resolve.js";import{matchesAutoFilter as n,resolveAutoSwitches as r}from"./workspaces.js";import i from"node:fs";import{globSync as a}from"glob";const o=[`ts`,`tsx`,`js`,`jsx`];function s(e){return e.replace(/\\/g,`/`)}function c(t,n){let r=s(e.relative(t,n));return r.startsWith(`.`)?r:`./${r}`}function l(e){let t=s(e).replace(/^\.\//,``).replace(/\/+$/,``);return t===``?`.`:t}function u(e,n=`src`){let r=e.options.autoSrcDir;if(typeof r==`string`&&r.trim())return l(r);let i=t(e.defaultTsconfigPath,`rootDir`);if(i)return l(c(e.dir,i));let a=t(e.defaultTsconfigPath,`baseUrl`);return l(a?c(e.dir,a):n)}function d(e){if(typeof e==`string`)return e;if(Array.isArray(e)){for(let t of e){let e=d(t);if(e)return e}return}if(!e||typeof e!=`object`)return;let t=e;for(let e of[`types`,`import`,`default`,`require`,`node`,`browser`]){let n=d(t[e]);if(n)return n}for(let e of Object.values(t)){let t=d(e);if(t)return t}}function f(e){if(typeof e==`string`)return[{key:``,target:e}];if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e;if(Object.keys(t).every(e=>!e.startsWith(`.`))){let e=d(t);return e?[{key:``,target:e}]:[]}let n=[];for(let[e,r]of Object.entries(t)){let t=d(r);t&&(e===`.`?n.push({key:``,target:t}):e.startsWith(`./`)&&n.push({key:e.slice(2),target:t}))}return n}function p(t,n,r){return c(t,e.resolve(n,r))}function m(e,t,n,r){let i={};for(let a of e){let e=a.key?`${t}/${a.key}`:t;i[e]=[p(n,r,a.target)]}return i}function h(e){let t=e.replace(/\\/g,`/`);return!(/(^|\/)(dist|build|out|lib|coverage)\//.test(t)||/\.d\.[cm]?ts$/.test(t))}function g(e){if(!e)return[];let t=Array.isArray(e)?e.flatMap(e=>(Array.isArray(e.pattern)?e.pattern:[e.pattern]).map(t=>({pattern:t,replacement:e.replacement}))):Object.entries(e).map(([e,t])=>({pattern:e,replacement:t})),n=[];for(let e of t)try{let t=e.pattern instanceof RegExp?new RegExp(e.pattern.source,e.pattern.flags.replace(/[gy]/g,``)):new RegExp(e.pattern);n.push({regex:t,replacement:e.replacement})}catch{}return n}function _(e,t){let n=g(t);if(n.length===0)return e;let r={};for(let[t,i]of Object.entries(e)){let e=n.find(e=>e.regex.test(t)),a=e?t.replace(e.regex,e.replacement):t;r[a]=i}return r}function v(t,n,r,a){let s=n.types,l=typeof s==`string`?s:n.main;if(typeof l==`string`&&h(l))return p(a,t.dir,l);let u=e.resolve(t.dir,r),d=o.map(t=>e.join(u,`index.${t}`)).find(e=>i.existsSync(e));return d?c(a,d):void 0}function y(t,n){let r=t.packageName;if(!r)return{};let l=t.packageJson??{},d=u(t),p={},g=f(l.exports).filter(e=>h(e.target));if(g.length>0){if(Object.assign(p,m(g,r,n,t.dir)),!p[r]){let e=v(t,l,d,n);e&&(p[r]=[e])}return!p[`${r}/*`]&&d&&(p[`${r}/*`]=[c(n,e.resolve(t.dir,d,`*`))]),p}let _=v(t,l,d,n);if(_)return p[r]=[_],d&&(p[`${r}/*`]=[c(n,e.resolve(t.dir,d,`*`))]),p;let y=e.resolve(t.dir,d),b=o.map(t=>e.join(y,`index.${t}`)).find(e=>i.existsSync(e));b&&(p[r]=[c(n,b)]);let x=i.existsSync(y)?a(`**/index.{${o.join(`,`)}}`,{cwd:y,nodir:!0,ignore:[`**/node_modules/**`]}):[];for(let t of x){let i=s(t),a=e.posix.dirname(i);a!==`.`&&(p[`${r}/${a}`]=[c(n,e.join(y,i))])}return d===`.`?p[`${r}/*`]=[c(n,e.resolve(t.dir,`*`))]:p[`${r}/*`]=[c(n,e.resolve(y,`*`))],p}function b(e,t){let a=structuredClone(t.existing??{}),o={...a.compilerOptions},s={...o.paths},l=[...a.references??[]],u=t.previous??{paths:[],references:[]},d=/* @__PURE__ */ new Set,f=/* @__PURE__ */ new Set,p=new Map(e.map(e=>[c(t.cwd,e.targetTsconfigPath),e]));l=l.filter(e=>{let t=e.path.replace(/\\/g,`/`).replace(/^\.\//,`./`),a=p.get(t);if(!a)return!0;let o=r(a.options);return!o.refsAuto.enabled||!n(t,o.refsAuto)?!0:!i.existsSync(a.defaultTsconfigPath)||!(a.enabled&&a.options.refs!==!1&&a.options.composite===!0)?!1:(f.add(t),!0)});for(let a of e){if(!a.enabled)continue;let e=r(a.options);if(!n(a.relativeDir,e.auto))continue;if(a.options.aliases!==!1&&e.aliasAuto.enabled&&a.packageName){let r=e.aliasAuto.rewriteAlias??e.auto.rewriteAlias,i=_(y(a,t.cwd),r);for(let[t,r]of Object.entries(i))n(t,e.aliasAuto)&&(t in s&&!u.paths.includes(t)||(s[t]=r,d.add(t)))}let o=a.options.refs!==!1&&e.refsAuto.enabled,p=a.options.composite===!0,m={path:c(t.cwd,a.targetTsconfigPath)};if(o&&p&&!a.isRoot&&i.existsSync(a.defaultTsconfigPath)&&n(m.path,e.refsAuto)){let e=l.find(e=>e.path===m.path);(!e||u.references.includes(m.path))&&(l=l.filter(e=>e.path!==m.path),l.push(e?{...e,...m}:m),f.add(m.path))}}for(let e of u.paths)d.has(e)||delete s[e];for(let e of u.references)f.has(e)||(l=l.filter(t=>t.path!==e));Object.keys(s).length>0?o.paths=s:delete o.paths;let m={...a,compilerOptions:o};return l.length>0?m.references=l:delete m.references,{config:m,state:{paths:[...d].sort(),references:[...f].sort()}}}function x(e){try{let t=JSON.parse(i.readFileSync(e,`utf-8`));return{paths:Array.isArray(t.paths)?t.paths:[],references:Array.isArray(t.references)?t.references:[]}}catch{return}}function S(t){return e.join(t,`.dbx`,`toolchain`,`tsconfig-auto.json`)}export{S as autoStatePath,b as buildAutoTsconfig,x as readAutoState,y as resolveWorkspaceAliases,u as resolveWorkspaceSrcDir};
@@ -1,7 +1,13 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainTsconfigConfig } from "../../../../shared/src/config-types.js";
4
+ import { TsconfigWorkspace } from "../../workspaces.js";
5
+ import { TsconfigAutoState } from "../../auto.js";
3
6
  import { TsconfigOverrides } from "../../overrides.js";
4
7
  import { GeneratedTsconfigResult } from "./utils.js";
8
+ import { ToolchainConfig } from "../../../../shared/src/toolchain.js";
9
+ import "../../../../shared/src/index.js";
10
+ import { TsConfigJson } from "type-fest";
5
11
  //#region packages/tsconfig/src/cli/generate/index.d.ts
6
12
  export interface GenerateTsconfigsOptions {
7
13
  /** The repo root to scan (default `process.cwd()`). */
@@ -32,6 +38,10 @@ export interface GenerateTsconfigsOptions {
32
38
  write?: boolean;
33
39
  /** Managed file overrides applied before generating each workspace. */
34
40
  overrides?: TsconfigOverrides;
41
+ /** Pre-resolved workspaces (project-graph + nested config aware). */
42
+ workspaces?: TsconfigWorkspace[];
43
+ /** In-memory root workspaces tsconfig (auto-wired before generation). */
44
+ monorepoConfig?: TsConfigJson;
35
45
  }
36
46
  /**
37
47
  * Extend every workspace default tsconfig (`tsconfig.default.json`) into a
@@ -40,6 +50,54 @@ export interface GenerateTsconfigsOptions {
40
50
  * tsconfig and each workspace's `tsconfig.build.json` are optional.
41
51
  */
42
52
  export declare function generateTsconfigs(options?: GenerateTsconfigsOptions): GeneratedTsconfigResult[];
53
+ export interface GenerateWorkspaceTsconfigsOptions {
54
+ /** Repo root (default `process.cwd()`). */
55
+ cwd?: string;
56
+ /** The merged root config. */
57
+ config: ToolchainConfig;
58
+ /** CLI overrides for the `tsconfig` section. */
59
+ overrides?: Partial<ToolchainTsconfigConfig>;
60
+ /** Write the outputs to disk (default true). */
61
+ write?: boolean;
62
+ /** Previous auto state (from the sync manifest); otherwise the sidecar is read. */
63
+ previousAuto?: TsconfigAutoState;
64
+ /** Override the auto sidecar path. */
65
+ autoStateFile?: string;
66
+ /** Write the auto-state sidecar (default true; sync stores it in the manifest instead). */
67
+ writeSidecar?: boolean;
68
+ }
69
+ export interface GenerateWorkspaceTsconfigsResult {
70
+ results: GeneratedTsconfigResult[];
71
+ workspaces: TsconfigWorkspace[];
72
+ /** The resolved root workspaces tsconfig (auto-wired + root overrides). */
73
+ autoConfig: TsConfigJson;
74
+ /** The auto-wired config before root overrides (the sync base). */
75
+ baseAutoConfig: TsConfigJson;
76
+ /** The keys auto-wiring owns, persisted in the sidecar. */
77
+ autoState: TsconfigAutoState;
78
+ /** Absolute root workspaces tsconfig path. */
79
+ rootTsconfigPath: string;
80
+ /** JSON text for the root workspaces tsconfig. */
81
+ rootContent: string;
82
+ /** JSON text before root overrides. */
83
+ baseRootContent: string;
84
+ /** Absolute auto-state sidecar path. */
85
+ autoStatePath: string;
86
+ /** JSON text for the auto-state sidecar. */
87
+ autoStateContent: string;
88
+ /** Whether the root workspaces tsconfig should be written. */
89
+ writeRoot: boolean;
90
+ /** Whether the auto-state sidecar should be written. */
91
+ writeState: boolean;
92
+ /** True when the `tsconfig` section is disabled/undefined. */
93
+ skipped?: boolean;
94
+ }
95
+ /**
96
+ * The high-level generator used by `dbx sync` and `dbx tsconfig`: resolves the
97
+ * project graph + nested configs, auto-wires the root workspaces tsconfig, then
98
+ * generates every enabled workspace tsconfig with its own effective switches.
99
+ */
100
+ export declare function generateWorkspaceTsconfigs(options: GenerateWorkspaceTsconfigsOptions): Promise<GenerateWorkspaceTsconfigsResult>;
43
101
  /** CLI entry (used by the `tsconfig` command). */
44
102
  export declare function runTsconfigCli(argv?: string[]): void;
45
103
  //#endregion
@@ -1 +1 @@
1
- import{default as e}from"node:path";import{fileURLToPath as t,pathToFileURL as n}from"node:url";import.meta.url;import{resolveIgnorePatterns as r}from"../../../../shared/src/ignore.js";import{logger as i}from"../../../../shared/src/logger.js";import"../../../../shared/src/index.js";import{readTsconfig as a}from"../../resolve.js";import{generateTsconfig as o}from"./utils.js";import s from"node:fs";import{parseArgs as c}from"node:util";import{Glob as l}from"glob";function u(t={}){let{aliases:n=!0,composite:c=!1,refs:u=!1,indent:d=4,gitignore:f=!0,defaultFile:p=`tsconfig.default.json`,buildFile:m=`tsconfig.build.json`,monorepoTsconfigFilename:h=`tsconfig.workspaces.json`,log:g=!0,write:_=!0}=t,v=t.glob??`**/${p}`,y=t.cwd??process.cwd(),b=e=>{g&&i.info(e)};n||b(`Ignoring path aliases for all tsconfigs...`),c||b(`Disabling compilerOptions.composite for all tsconfigs...`),u||b(`Ignoring project references for all tsconfigs...`);let x=e.resolve(y,h),S=e.relative(y,x),C=s.existsSync(x),w=Array.isArray(v)?v:[v],T=w.filter(e=>!e.startsWith(`!`)),E=[...w.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1)),...r(y,{...t.exclude===void 0?{}:{exclude:t.exclude},gitignore:f})],D=new l(T.length?T:[`**/${p}`],{cwd:y,withFileTypes:!0,ignore:E}).walkSync();b(C?`Extending ${D.length} tsconfigs with ${S}...`:`Extending ${D.length} tsconfigs (no ${S})...`);let O=[];for(let r of D){let i=r.fullpath(),a=e.dirname(i);O.push(o({cwd:y,dirname:a,tsconfigPath:i,monorepoTsconfigPath:x,tsconfigBuildPath:e.resolve(a,m),targetTsconfigPath:e.resolve(a,`tsconfig.json`),targetTsconfigBuildPath:e.resolve(a,m),indent:d,disableComposite:!c,ignoreAliases:!n,ignoreReferences:!u,write:_,log:b,...t.overrides?{overrides:t.overrides}:{}}))}if(!u)return O;b(`Checking for additional tsconfig changes...`);let k=new Map(O.map(t=>[e.resolve(t.targetTsconfigPath),t]));for(let t of O){let{dirname:n,dirnameRelative:r,targetTsconfigPath:i,config:o}=t;b(` - ${r}`),o.references?.length&&(o.references=o.references.filter(t=>{let r=e.resolve(n,t.path),i=k.get(r),o;if(i)o=i.config.compilerOptions?.composite;else if(s.existsSync(r))o=a(r).compilerOptions?.composite;else return b(` tsconfig not found for ${t.path}, skipping.`),!1;return o!=null&&o!==!1})),_&&s.writeFileSync(i,`${JSON.stringify(o,null,d)}\n`)}return O}function d(e=process.argv.slice(2)){let{values:t}=c({args:e,options:{aliases:{type:`boolean`,short:`a`,default:!0},composite:{type:`boolean`,short:`c`,default:!1},refs:{type:`boolean`,short:`r`,default:!1},indent:{type:`string`,short:`i`,default:`4`},glob:{type:`string`,multiple:!0},exclude:{type:`string`,multiple:!0},gitignore:{type:`boolean`,default:!0},"default-file":{type:`string`},"build-file":{type:`string`},"root-file":{type:`string`}}});u({aliases:t.aliases,composite:t.composite,refs:t.refs,indent:Number.parseInt(t.indent,10),...t.glob?{glob:t.glob}:{},...t.exclude?{exclude:t.exclude}:{},gitignore:t.gitignore,...t[`default-file`]?{defaultFile:t[`default-file`]}:{},...t[`build-file`]?{buildFile:t[`build-file`]}:{},...t[`root-file`]?{monorepoTsconfigFilename:t[`root-file`]}:{}})}if(/[\\/]generate[\\/]index\.[cm]?[jt]s$/.test(t(import.meta.url))&&import.meta.url===n(process.argv[1]??``).href)try{d()}catch(e){i.error(`Failed to generate tsconfigs due to: ${e}`),process.exit(1)}export{u as generateTsconfigs,d as runTsconfigCli};
1
+ import{default as e}from"node:path";import{fileURLToPath as t,pathToFileURL as n}from"node:url";import.meta.url;import{deepMerge as r}from"../../../../shared/src/object-utils.js";import{resolveIgnorePatterns as i}from"../../../../shared/src/ignore.js";import{logger as a}from"../../../../shared/src/logger.js";import{sectionConfig as o,sectionEnabled as s}from"../../../../shared/src/toolchain.js";import{tsconfigFileNames as c}from"../../../../shared/src/tsconfig-files.js";import"../../../../shared/src/index.js";import{mergeOverride as l}from"../../overrides.js";import{readTsconfig as u}from"../../resolve.js";import"../../files.js";import{resolveTsconfigWorkspaces as d}from"../../workspaces.js";import{autoStatePath as f,buildAutoTsconfig as p,readAutoState as m}from"../../auto.js";import{generateTsconfig as h}from"./utils.js";import g from"node:fs";import{isDeepStrictEqual as _,parseArgs as v}from"node:util";import{Glob as y}from"glob";function b(t={}){let{aliases:n=!0,composite:r=!1,refs:o=!1,indent:s=4,gitignore:c=!0,defaultFile:l=`tsconfig.default.json`,buildFile:d=`tsconfig.build.json`,monorepoTsconfigFilename:f=`tsconfig.workspaces.json`,log:p=!0,write:m=!0}=t,_=t.glob??`**/${l}`,v=t.cwd??process.cwd(),b=e=>{p&&a.info(e)};n||b(`Ignoring path aliases for all tsconfigs...`),r||b(`Disabling compilerOptions.composite for all tsconfigs...`),o||b(`Ignoring project references for all tsconfigs...`);let x=e.resolve(v,f),S=e.relative(v,x),C=t.monorepoConfig!==void 0||g.existsSync(x),w=[];if(t.workspaces){let e=t.workspaces.filter(e=>e.enabled&&g.existsSync(e.defaultTsconfigPath));b(C?`Extending ${e.length} tsconfigs with ${S}...`:`Extending ${e.length} tsconfigs (no ${S})...`);for(let n of e){let e=n.options;w.push(h({cwd:v,dirname:n.dir,tsconfigPath:n.defaultTsconfigPath,monorepoTsconfigPath:x,tsconfigBuildPath:n.buildTsconfigPath,targetTsconfigPath:n.targetTsconfigPath,targetTsconfigBuildPath:n.buildTsconfigPath,indent:s,aliases:e.aliases!==!1,refs:e.refs===!0,composite:e.composite===!0,...t.monorepoConfig?{monorepoConfig:t.monorepoConfig}:{},write:m,log:b,...t.overrides?{overrides:t.overrides}:{}}))}}else{let a=Array.isArray(_)?_:[_],u=a.filter(e=>!e.startsWith(`!`)),f=[...a.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1)),...i(v,{...t.exclude===void 0?{}:{exclude:t.exclude},gitignore:c})],p=new y(u.length?u:[`**/${l}`],{cwd:v,withFileTypes:!0,ignore:f}).walkSync();b(C?`Extending ${p.length} tsconfigs with ${S}...`:`Extending ${p.length} tsconfigs (no ${S})...`);for(let i of p){let a=i.fullpath(),c=e.dirname(a);w.push(h({cwd:v,dirname:c,tsconfigPath:a,monorepoTsconfigPath:x,tsconfigBuildPath:e.resolve(c,d),targetTsconfigPath:e.resolve(c,`tsconfig.json`),targetTsconfigBuildPath:e.resolve(c,d),indent:s,disableComposite:!r,ignoreAliases:!n,ignoreReferences:!o,...t.monorepoConfig?{monorepoConfig:t.monorepoConfig}:{},write:m,log:b,...t.overrides?{overrides:t.overrides}:{}}))}}if(!o&&!w.some(e=>e.config.references!==void 0))return w;b(`Checking for additional tsconfig changes...`);let T=new Map(w.map(t=>[e.resolve(t.targetTsconfigPath),t]));for(let t of w){let{dirname:n,dirnameRelative:r,targetTsconfigPath:i,config:a}=t;b(` - ${r}`),a.references?.length&&(a.references=a.references.filter(t=>{let r=e.resolve(n,t.path),i=T.get(r),a;if(i)a=i.config.compilerOptions?.composite;else if(g.existsSync(r))a=u(r).compilerOptions?.composite;else return b(` tsconfig not found for ${t.path}, skipping.`),!1;return a!=null&&a!==!1})),m&&g.writeFileSync(i,`${JSON.stringify(a,null,s)}\n`)}return w}async function x(t){let n=e.resolve(t.cwd??process.cwd()),i=r(o(t.config.tsconfig)??{},t.overrides??{}),a={...t.config,tsconfig:i},h=c(a),v=e.resolve(n,h.rootFile),y=t.autoStateFile??f(n);if(!s(t.config.tsconfig))return{results:[],workspaces:[],autoConfig:{},baseAutoConfig:{},autoState:{paths:[],references:[]},rootTsconfigPath:v,rootContent:``,baseRootContent:``,autoStatePath:y,autoStateContent:`{}`,writeRoot:!1,writeState:!1,skipped:!0};let x=await d({cwd:n,rootConfig:a,...i.glob===void 0?{}:{glob:i.glob},...i.exclude===void 0?{}:{exclude:i.exclude},...i.gitignore===void 0?{}:{gitignore:i.gitignore}}),S=g.existsSync(v)?u(v):void 0,C=t.previousAuto??m(y),w=p(x,{cwd:n,existing:S,previous:C}),T=w.config,E=i.overrides?.root?l(T,i.overrides.root):T,D=i.indent??4,O=`${JSON.stringify(T,null,D)}\n`,k=`${JSON.stringify(E,null,D)}\n`,A=`${JSON.stringify(w.state,null,D)}\n`,j=w.state.paths.length>0||w.state.references.length>0||g.existsSync(v)||!!i.overrides?.root,M=!_(S??{},T),N=t.writeSidecar!==!1&&(g.existsSync(y)||w.state.paths.length>0||w.state.references.length>0),P=b({cwd:n,workspaces:x.filter(e=>e.isRoot||!e.ownTsconfig),monorepoConfig:E,monorepoTsconfigFilename:h.rootFile,indent:D,write:t.write??!0,log:!1,...i.overrides?{overrides:{...i.overrides,root:void 0}}:{}});return t.write!==!1&&(j&&M&&(g.mkdirSync(e.dirname(v),{recursive:!0}),g.writeFileSync(v,k,`utf-8`)),N&&(g.mkdirSync(e.dirname(y),{recursive:!0}),g.writeFileSync(y,A,`utf-8`))),{results:P,workspaces:x,autoConfig:E,baseAutoConfig:T,autoState:w.state,rootTsconfigPath:v,rootContent:k,baseRootContent:O,autoStatePath:y,autoStateContent:A,writeRoot:j&&M,writeState:N}}function S(e=process.argv.slice(2)){let{values:t}=v({args:e,options:{aliases:{type:`boolean`,short:`a`,default:!0},composite:{type:`boolean`,short:`c`,default:!1},refs:{type:`boolean`,short:`r`,default:!1},indent:{type:`string`,short:`i`,default:`4`},glob:{type:`string`,multiple:!0},exclude:{type:`string`,multiple:!0},gitignore:{type:`boolean`,default:!0},"default-file":{type:`string`},"build-file":{type:`string`},"root-file":{type:`string`}}});b({aliases:t.aliases,composite:t.composite,refs:t.refs,indent:Number.parseInt(t.indent,10),...t.glob?{glob:t.glob}:{},...t.exclude?{exclude:t.exclude}:{},gitignore:t.gitignore,...t[`default-file`]?{defaultFile:t[`default-file`]}:{},...t[`build-file`]?{buildFile:t[`build-file`]}:{},...t[`root-file`]?{monorepoTsconfigFilename:t[`root-file`]}:{}})}if(/[\\/]generate[\\/]index\.[cm]?[jt]s$/.test(t(import.meta.url))&&import.meta.url===n(process.argv[1]??``).href)try{S()}catch(e){a.error(`Failed to generate tsconfigs due to: ${e}`),process.exit(1)}export{b as generateTsconfigs,x as generateWorkspaceTsconfigs,S as runTsconfigCli};
@@ -16,6 +16,12 @@ export declare function generateTsconfig(options: {
16
16
  ignoreAliases?: boolean;
17
17
  ignoreReferences?: boolean;
18
18
  disableComposite?: boolean;
19
+ /** Effective per-workspace switches (they override the legacy ignore flags). */
20
+ aliases?: boolean;
21
+ refs?: boolean;
22
+ composite?: boolean;
23
+ /** In-memory workspaces tsconfig (the auto-generated object). */
24
+ monorepoConfig?: TsConfigJson;
19
25
  /** Write the generated files to disk (default true). */
20
26
  write?: boolean;
21
27
  /** Log sink (default: the shared info logger). Pass a no-op to stay quiet. */
@@ -34,6 +40,12 @@ export declare function generateTsconfig(options: {
34
40
  ignoreAliases?: boolean;
35
41
  ignoreReferences?: boolean;
36
42
  disableComposite?: boolean;
43
+ /** Effective per-workspace switches (they override the legacy ignore flags). */
44
+ aliases?: boolean;
45
+ refs?: boolean;
46
+ composite?: boolean;
47
+ /** In-memory workspaces tsconfig (the auto-generated object). */
48
+ monorepoConfig?: TsConfigJson;
37
49
  /** Write the generated files to disk (default true). */
38
50
  write?: boolean;
39
51
  /** Log sink (default: the shared info logger). Pass a no-op to stay quiet. */
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../../shared/src/logger.js";import"../../../../shared/src/index.js";import{mergeOverride as n}from"../../overrides.js";import{readTsconfig as r,resolveTsconfig as i}from"../../resolve.js";import a from"node:fs";function o(o){let{cwd:c,dirname:l,tsconfigPath:u,monorepoTsconfigPath:d,tsconfigBuildPath:f,targetTsconfigPath:p,targetTsconfigBuildPath:m,indent:h=4,disableComposite:g,ignoreAliases:_,ignoreReferences:v,write:y=!0,log:b=e=>t.info(e),overrides:x}=o,S=e.relative(c,l).replace(/\\/g,`/`)||`.`;try{if(!a.existsSync(u))throw Error(`Source tsconfig not found: ${u}`);if(!d)throw Error(`options.monorepoTsconfigPath not set for ${u}`);b(` - ${S}`);let t=e.basename(u),m=a.existsSync(f),C=a.existsSync(d),w=C?r(d):{},T=n(w,x?.root),E=C?i({tsconfig:d,root:c,cwd:c,...x?.root?{overrides:x.root}:{}}):{alias:[],paths:{},references:[]},D=r(u),O=n(D,x?.default),k=m?r(f):void 0,A=k?n(k,x?.build):void 0,j=g?[]:[.../* @__PURE__ */ new Set([...O.compilerOptions?.types??[],...g?[]:T.compilerOptions?.types??[]])],M={};if(!_)for(let[e,t]of Object.entries(E.paths)){let n=t.map(e=>s(e,l,S)).filter(e=>e!==void 0);n.length>0&&(M[e]=n)}let N=[];if(!v){let t=/* @__PURE__ */ new Set,n=(e,n)=>{let r=s(e,l,S);r===void 0||t.has(r)||(t.add(r),N.push({...n,path:r}))};for(let t of O.references??[])n(e.resolve(c,t.path),t);for(let e of E.references)n(e.path,e)}let P={...g?{}:T,extends:`./${t}`,compilerOptions:{...g?{composite:!1}:T.compilerOptions,...j.length?{types:j}:{},..._?{}:{paths:{...O.compilerOptions?.paths,...M}}},...v?{}:{references:N}},F=m?{...A,extends:`./${t}`}:void 0;return y&&a.writeFileSync(p,`${JSON.stringify(P,null,h)}\n`),{...o,dirnameRelative:S,tsconfigFilename:t,config:P,newTsconfig:P,newTsconfigBuild:F,originalConfig:D,tsconfigMonorepo:T,tsconfigBuild:A}}catch(e){throw Error(`Failed to extend tsconfig for ${S}: ${e instanceof Error?e.message:String(e)}`)}}function s(t,n,r){let i=e.resolve(t),a=e.resolve(n),o=e.dirname(i);if((o===a||o.startsWith(`${a}${e.sep}`))&&r!==`.`)return;let s=e.relative(a,i).replace(/\\/g,`/`);return s.startsWith(`.`)||(s=`./${s}`),s}export{o as generateTsconfig};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{logger as t}from"../../../../shared/src/logger.js";import"../../../../shared/src/index.js";import{mergeOverride as n}from"../../overrides.js";import{readTsconfig as r,resolveTsconfig as i,resolveTsconfigConfig as a}from"../../resolve.js";import o from"node:fs";function s(s){let{cwd:l,dirname:u,tsconfigPath:d,monorepoTsconfigPath:f,tsconfigBuildPath:p,targetTsconfigPath:m,targetTsconfigBuildPath:h,indent:g=4,disableComposite:_,ignoreAliases:v,ignoreReferences:y,aliases:b,refs:x,composite:S,monorepoConfig:C,write:w=!0,log:T=e=>t.info(e),overrides:E}=s,D=b??!v,O=x??!y,k=S??!_,A=e.relative(l,u).replace(/\\/g,`/`)||`.`;try{if(!o.existsSync(d))throw Error(`Source tsconfig not found: ${d}`);if(!f)throw Error(`options.monorepoTsconfigPath not set for ${d}`);T(` - ${A}`);let t=e.basename(d),h=o.existsSync(p),_=C!==void 0||o.existsSync(f),v=C??(_?r(f):{}),y=n(v,E?.root),b=_?C===void 0?i({tsconfig:f,root:l,cwd:l,...E?.root?{overrides:E.root}:{}}):a(C,l,E?.root?{overrides:E.root}:{}):{alias:[],paths:{},references:[]},x=r(d),S=n(x,E?.default),j=h?r(p):void 0,M=j?n(j,E?.build):void 0,N=k?[.../* @__PURE__ */ new Set([...S.compilerOptions?.types??[],...y.compilerOptions?.types??[]])]:[],P={};if(D)for(let[e,t]of Object.entries(b.paths)){let n=t.map(e=>c(e,u,A)).filter(e=>e!==void 0);n.length>0&&(P[e]=n)}let F=[];if(O){let t=/* @__PURE__ */ new Set,n=(e,n)=>{let r=c(e,u,A);r===void 0||t.has(r)||(t.add(r),F.push({...n,path:r}))};for(let t of S.references??[])n(e.resolve(l,t.path),t);for(let e of b.references)n(e.path,e)}let I={...y.compilerOptions};delete I.paths;let L={...y};delete L.references;let R={...k?L:{},extends:`./${t}`,compilerOptions:{...k?I:{},composite:k,...N.length?{types:N}:{},...D&&Object.keys({...S.compilerOptions?.paths,...P}).length>0?{paths:{...S.compilerOptions?.paths,...P}}:{}},...O?{references:F}:{}},z=h?{...M,extends:`./${t}`}:void 0;return w&&o.writeFileSync(m,`${JSON.stringify(R,null,g)}\n`),{...s,dirnameRelative:A,tsconfigFilename:t,config:R,newTsconfig:R,newTsconfigBuild:z,originalConfig:x,tsconfigMonorepo:y,tsconfigBuild:M}}catch(e){throw Error(`Failed to extend tsconfig for ${A}: ${e instanceof Error?e.message:String(e)}`)}}function c(t,n,r){let i=e.resolve(t),a=e.resolve(n),o=e.dirname(i);if((o===a||o.startsWith(`${a}${e.sep}`))&&r!==`.`)return;let s=e.relative(a,i).replace(/\\/g,`/`);return s.startsWith(`.`)||(s=`./${s}`),s}export{s as generateTsconfig};
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{warningMessage as e}from"../../../shared/src/messages.js";import{logger as t}from"../../../shared/src/logger.js";import{sectionConfig as n}from"../../../shared/src/toolchain.js";import"../../../shared/src/index.js";import{TSCONFIG_OVERRIDE_KINDS as r,hasOverrideKeys as i}from"../overrides.js";import{resolveTsconfig as a}from"../resolve.js";import{generateTsconfigs as o}from"./generate/index.js";import{restoreTsconfigOverrides as s}from"../snapshots.js";function c(){return[{name:`tsconfig`,description:`Generate workspace tsconfig.json files from the default tsconfig (aliases + references).`,options:[{flags:`--cwd <dir>`,description:`Repo root to scan (default: cwd).`},{flags:`--no-aliases`,description:`Skip path aliases.`},{flags:`--composite`,description:`Emit composite + references.`},{flags:`--refs`,description:`Wire project references.`},{flags:`-i, --indent <n>`,description:`JSON indentation.`},{flags:`--glob <glob...>`,description:`Glob(s) for the default tsconfig files.`},{flags:`--exclude <glob...>`,description:`Glob(s) to exclude (on top of the common ignored paths).`},{flags:`--no-gitignore`,description:`Do not respect .gitignore files.`},{flags:`--default-file <file>`,description:`Default tsconfig file name.`},{flags:`--build-file <file>`,description:`Build tsconfig file name.`},{flags:`--root-file <file>`,description:`Workspaces tsconfig file name.`},{flags:`--tsconfig <file>`,description:`Resolve this tsconfig instead of <root>/tsconfig.json.`},{flags:`--root <dir>`,description:`Root used to detect/resolve the tsconfig (default: cwd).`},{flags:`--json`,description:`Print the resolved { alias, paths, references } object.`},{flags:`--alias`,description:`Print only the resolved Vite/Vitest aliases.`},{flags:`--paths`,description:`Print only the resolved compilerOptions.paths.`},{flags:`--references`,description:`Print only the resolved project references.`},{flags:`--no-extends`,description:`Do not follow the tsconfig extends chain.`},{flags:`--restore [kind]`,description:`Remove the applied tsconfig overrides (all, or base|root|default|build) using the manifest snapshots.`}],run:(c,l)=>{let u=c.cwd??l.cwd,d=c.root??u,f=n(l.config.tsconfig)??{},p=c.defaultFile??f.defaultFile??`tsconfig.default.json`,m=c.buildFile??f.buildFile??`tsconfig.build.json`,h=c.rootFile??f.rootFile??`tsconfig.workspaces.json`,g=[`alias`,`paths`,`references`].filter(e=>c[e]===!0),_=c.restore;if(_!==void 0&&_!==!1){let n=typeof _==`string`?_:void 0;if(n!==void 0&&!r.includes(n))throw Error(`invalid --restore kind "${n}" (expected ${r.join(`|`)}).`);let a=s({cwd:u,...n?{kind:n}:{},warn:(e,n)=>t.warn(e,n)});t.info(a.restored.length>0?`Restored ${a.restored.length} tsconfig file(s): ${a.restored.join(`, `)}.`:`No tsconfig overrides to restore.`);let o=f.overrides??{},c=a.kinds.filter(e=>i(o[e]));c.length>0&&t.warn(e(`tsconfig.restore-reapply`,{kinds:c.join(`, `)}),`tsconfig.restore-reapply`);return}if(c.json===!0||g.length>0){let e=a({cwd:u,root:d,...c.tsconfig?{tsconfig:c.tsconfig}:{},...c.extends===!1?{extends:!1}:{}}),n=g.length===0?e:g.length===1?e[g[0]]:Object.fromEntries(g.map(t=>[t,e[t]]));t.raw(JSON.stringify(n,(e,t)=>t instanceof RegExp?String(t):t,4));return}let v=c.glob;o({cwd:l.cwd,aliases:c.aliases??f.aliases??!0,composite:c.composite??f.composite??!1,refs:c.refs??f.refs??!1,indent:c.indent===void 0?f.indent:Number.parseInt(String(c.indent),10),glob:v??f.glob??`**/${p}`,exclude:c.exclude??f.exclude,gitignore:c.gitignore??f.gitignore,defaultFile:p,buildFile:m,monorepoTsconfigFilename:h,...f.overrides?{overrides:f.overrides}:{}})}}]}export{c as tsconfigCommands};
1
+ import"node:path";import"node:url";import.meta.url;import{warningMessage as e}from"../../../shared/src/messages.js";import{logger as t}from"../../../shared/src/logger.js";import{sectionConfig as n}from"../../../shared/src/toolchain.js";import"../../../shared/src/index.js";import{TSCONFIG_OVERRIDE_KINDS as r,hasOverrideKeys as i}from"../overrides.js";import{resolveTsconfig as a}from"../resolve.js";import{generateWorkspaceTsconfigs as o}from"./generate/index.js";import{restoreTsconfigOverrides as s}from"../snapshots.js";function c(){return[{name:`tsconfig`,description:`Generate workspace tsconfig.json files from the default tsconfig (aliases + references).`,options:[{flags:`--cwd <dir>`,description:`Repo root to scan (default: cwd).`},{flags:`--no-aliases`,description:`Skip path aliases.`},{flags:`--composite`,description:`Emit composite + references.`},{flags:`--refs`,description:`Wire project references.`},{flags:`--auto`,description:`Auto-wire the root workspaces tsconfig paths/references from the project graph (default false).`},{flags:`--no-auto`,description:`Only use the paths/references already in the root workspaces tsconfig.`},{flags:`--auto-aliases`,description:`Auto-wire path aliases (defaults to --auto).`},{flags:`--no-auto-aliases`,description:`Do not auto-wire path aliases.`},{flags:`--auto-refs`,description:`Auto-wire project references (defaults to --auto).`},{flags:`--no-auto-refs`,description:`Do not auto-wire project references.`},{flags:`--auto-src-dir <dir>`,description:`Source directory for auto entry points (default: the workspace tsconfig rootDir/baseUrl, then src).`},{flags:`-i, --indent <n>`,description:`JSON indentation.`},{flags:`--glob <glob...>`,description:`Glob(s) for the default tsconfig files.`},{flags:`--exclude <glob...>`,description:`Glob(s) to exclude (on top of the common ignored paths).`},{flags:`--no-gitignore`,description:`Do not respect .gitignore files.`},{flags:`--default-file <file>`,description:`Default tsconfig file name.`},{flags:`--build-file <file>`,description:`Build tsconfig file name.`},{flags:`--root-file <file>`,description:`Workspaces tsconfig file name.`},{flags:`--tsconfig <file>`,description:`Resolve this tsconfig instead of <root>/tsconfig.json.`},{flags:`--root <dir>`,description:`Root used to detect/resolve the tsconfig (default: cwd).`},{flags:`--json`,description:`Print the resolved { alias, paths, references } object.`},{flags:`--alias`,description:`Print only the resolved Vite/Vitest aliases.`},{flags:`--paths`,description:`Print only the resolved compilerOptions.paths.`},{flags:`--references`,description:`Print only the resolved project references.`},{flags:`--no-extends`,description:`Do not follow the tsconfig extends chain.`},{flags:`--restore [kind]`,description:`Remove the applied tsconfig overrides (all, or base|root|default|build) using the manifest snapshots.`}],run:async(c,l)=>{let u=c.cwd??l.cwd,d=c.root??u,f=n(l.config.tsconfig)??{},p=c.defaultFile??f.defaultFile??`tsconfig.default.json`,m=c.buildFile??f.buildFile??`tsconfig.build.json`,h=c.rootFile??f.rootFile??`tsconfig.workspaces.json`,g=[`alias`,`paths`,`references`].filter(e=>c[e]===!0),_=c.restore;if(_!==void 0&&_!==!1){let n=typeof _==`string`?_:void 0;if(n!==void 0&&!r.includes(n))throw Error(`invalid --restore kind "${n}" (expected ${r.join(`|`)}).`);let a=s({cwd:u,...n?{kind:n}:{},warn:(e,n)=>t.warn(e,n)});t.info(a.restored.length>0?`Restored ${a.restored.length} tsconfig file(s): ${a.restored.join(`, `)}.`:`No tsconfig overrides to restore.`);let o=f.overrides??{},c=a.kinds.filter(e=>i(o[e]));c.length>0&&t.warn(e(`tsconfig.restore-reapply`,{kinds:c.join(`, `)}),`tsconfig.restore-reapply`);return}if(c.json===!0||g.length>0){let e=a({cwd:u,root:d,...c.tsconfig?{tsconfig:c.tsconfig}:{},...c.extends===!1?{extends:!1}:{}}),n=g.length===0?e:g.length===1?e[g[0]]:Object.fromEntries(g.map(t=>[t,e[t]]));t.raw(JSON.stringify(n,(e,t)=>t instanceof RegExp?String(t):t,4));return}let v={};c.aliases!==void 0&&(v.aliases=!!c.aliases),c.composite!==void 0&&(v.composite=!!c.composite),c.refs!==void 0&&(v.refs=!!c.refs),c.auto!==void 0&&(v.auto=!!c.auto),c.autoAliases!==void 0&&(v.aliasAuto=!!c.autoAliases),c.autoRefs!==void 0&&(v.refsAuto=!!c.autoRefs),c.autoSrcDir!==void 0&&(v.autoSrcDir=String(c.autoSrcDir)),c.indent!==void 0&&(v.indent=Number.parseInt(String(c.indent),10)),c.glob!==void 0&&(v.glob=c.glob),c.exclude!==void 0&&(v.exclude=c.exclude),c.gitignore!==void 0&&(v.gitignore=!!c.gitignore),v.defaultFile=p,v.buildFile=m,v.rootFile=h,(await o({cwd:u,config:l.config,overrides:v})).skipped&&t.warn(`toolchain.tsconfig is not enabled in dbx.config; skipping the tsconfig task.`)}}]}export{c as tsconfigCommands};
@@ -0,0 +1,5 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { TsconfigFileNameSet, tsconfigFileNames } from "../../shared/src/tsconfig-files.js";
4
+ import "../../shared/src/index.js";
5
+ export { type TsconfigFileNameSet as TsconfigFileNames, tsconfigFileNames };
@@ -0,0 +1 @@
1
+ import"node:path";import"node:url";import.meta.url;export{tsconfigFileNames}from"../../shared/src/tsconfig-files.js";import"../../shared/src/index.js";
@@ -1,13 +1,14 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { AppliedOverride, OverrideLeaf, OverridesState, RevertOverrideResult, TSCONFIG_OVERRIDE_KINDS, TsconfigOverrideKind, TsconfigOverrides, addedOverrideLeaves, applyOverride, getPath, hasOverrideKeys, hasPath, isAppliedOverride, mergeOverride, overrideLeaves, recordOverrideSnapshot, removedOverrideLeaves, revertOverride } from "./overrides.js";
4
- import { GenerateTsconfigsOptions, generateTsconfigs, runTsconfigCli } from "./cli/generate/index.js";
5
- import { ResolveTsconfigOptions, ResolvedTsconfig, TsconfigAlias, TsconfigJson, TsconfigReference, parseTsconfig, readTsconfig, resolveTsconfig } from "./resolve.js";
4
+ import { GenerateTsconfigsOptions, GenerateWorkspaceTsconfigsOptions, GenerateWorkspaceTsconfigsResult, generateTsconfigs, generateWorkspaceTsconfigs, runTsconfigCli } from "./cli/generate/index.js";
5
+ import { ResolveTsconfigOptions, ResolvedTsconfig, TsconfigAlias, TsconfigJson, TsconfigReference, parseTsconfig, readTsconfig, resolveTsconfig, resolveTsconfigCompilerOption, resolveTsconfigConfig } from "./resolve.js";
6
6
  import { RestoreTsconfigOverridesOptions, RestoreTsconfigOverridesResult, SnapshotTree, TSCONFIG_MANIFEST_PATH, deleteSnapshot, detectIndent, getSnapshot, restoreTsconfigOverrides, setSnapshot, stringifyTsconfig, toRepoRelative } from "./snapshots.js";
7
- import { TsconfigFileNames, tsconfigFileNames, tsconfigSyncTask } from "./sync.js";
7
+ import { tsconfigSyncTask } from "./sync.js";
8
8
  import { DEFAULT_TSCONFIG_REPLACEMENTS, MonorepoTsconfigOptions, MonorepoWorkspace, TsconfigExtends, TsconfigExtendsOptions, buildMonorepoTsconfig, renderMonorepoTsconfig, renderTsconfigBase, renderTsconfigBuild, renderTsconfigDefault, renderTsconfigTemplates, tsconfigBaseTemplate, tsconfigBuildTemplate, tsconfigDefaultTemplate } from "./templates.js";
9
+ import { TsconfigFileNameSet, tsconfigFileNames } from "../../shared/src/tsconfig-files.js";
9
10
  declare namespace index_d_exports {
10
- export { AppliedOverride, DEFAULT_TSCONFIG_REPLACEMENTS, GenerateTsconfigsOptions, MonorepoTsconfigOptions, MonorepoWorkspace, OverrideLeaf, OverridesState, ResolveTsconfigOptions, ResolvedTsconfig, RestoreTsconfigOverridesOptions, RestoreTsconfigOverridesResult, RevertOverrideResult, SnapshotTree, TSCONFIG_MANIFEST_PATH, TSCONFIG_OVERRIDE_KINDS, TsconfigAlias, TsconfigExtends, TsconfigExtendsOptions, TsconfigFileNames, TsconfigJson, TsconfigOverrideKind, TsconfigOverrides, TsconfigReference, addedOverrideLeaves, applyOverride, buildMonorepoTsconfig, deleteSnapshot, detectIndent, generateTsconfigs, getPath, getSnapshot, hasOverrideKeys, hasPath, isAppliedOverride, mergeOverride, overrideLeaves, parseTsconfig, readTsconfig, recordOverrideSnapshot, removedOverrideLeaves, renderMonorepoTsconfig, renderTsconfigBase, renderTsconfigBuild, renderTsconfigDefault, renderTsconfigTemplates, resolveTsconfig, restoreTsconfigOverrides, revertOverride, runTsconfigCli, setSnapshot, stringifyTsconfig, toRepoRelative, tsconfigBaseTemplate, tsconfigBuildTemplate, tsconfigDefaultTemplate, tsconfigFileNames, tsconfigSyncTask };
11
+ export { AppliedOverride, DEFAULT_TSCONFIG_REPLACEMENTS, GenerateTsconfigsOptions, GenerateWorkspaceTsconfigsOptions, GenerateWorkspaceTsconfigsResult, MonorepoTsconfigOptions, MonorepoWorkspace, OverrideLeaf, OverridesState, ResolveTsconfigOptions, ResolvedTsconfig, RestoreTsconfigOverridesOptions, RestoreTsconfigOverridesResult, RevertOverrideResult, SnapshotTree, TSCONFIG_MANIFEST_PATH, TSCONFIG_OVERRIDE_KINDS, TsconfigAlias, TsconfigExtends, TsconfigExtendsOptions, TsconfigFileNameSet as TsconfigFileNames, TsconfigJson, TsconfigOverrideKind, TsconfigOverrides, TsconfigReference, addedOverrideLeaves, applyOverride, buildMonorepoTsconfig, deleteSnapshot, detectIndent, generateTsconfigs, generateWorkspaceTsconfigs, getPath, getSnapshot, hasOverrideKeys, hasPath, isAppliedOverride, mergeOverride, overrideLeaves, parseTsconfig, readTsconfig, recordOverrideSnapshot, removedOverrideLeaves, renderMonorepoTsconfig, renderTsconfigBase, renderTsconfigBuild, renderTsconfigDefault, renderTsconfigTemplates, resolveTsconfig, resolveTsconfigCompilerOption, resolveTsconfigConfig, restoreTsconfigOverrides, revertOverride, runTsconfigCli, setSnapshot, stringifyTsconfig, toRepoRelative, tsconfigBaseTemplate, tsconfigBuildTemplate, tsconfigDefaultTemplate, tsconfigFileNames, tsconfigSyncTask };
11
12
  }
12
13
  //#endregion
13
- export { AppliedOverride, DEFAULT_TSCONFIG_REPLACEMENTS, GenerateTsconfigsOptions, MonorepoTsconfigOptions, MonorepoWorkspace, OverrideLeaf, OverridesState, ResolveTsconfigOptions, ResolvedTsconfig, RestoreTsconfigOverridesOptions, RestoreTsconfigOverridesResult, RevertOverrideResult, SnapshotTree, TSCONFIG_MANIFEST_PATH, TSCONFIG_OVERRIDE_KINDS, TsconfigAlias, TsconfigExtends, TsconfigExtendsOptions, TsconfigFileNames, TsconfigJson, TsconfigOverrideKind, TsconfigOverrides, TsconfigReference, addedOverrideLeaves, applyOverride, buildMonorepoTsconfig, deleteSnapshot, detectIndent, generateTsconfigs, getPath, getSnapshot, hasOverrideKeys, hasPath, index_d_exports, isAppliedOverride, mergeOverride, overrideLeaves, parseTsconfig, readTsconfig, recordOverrideSnapshot, removedOverrideLeaves, renderMonorepoTsconfig, renderTsconfigBase, renderTsconfigBuild, renderTsconfigDefault, renderTsconfigTemplates, resolveTsconfig, restoreTsconfigOverrides, revertOverride, runTsconfigCli, setSnapshot, stringifyTsconfig, toRepoRelative, tsconfigBaseTemplate, tsconfigBuildTemplate, tsconfigDefaultTemplate, tsconfigFileNames, tsconfigSyncTask };
14
+ export { AppliedOverride, DEFAULT_TSCONFIG_REPLACEMENTS, GenerateTsconfigsOptions, GenerateWorkspaceTsconfigsOptions, GenerateWorkspaceTsconfigsResult, MonorepoTsconfigOptions, MonorepoWorkspace, OverrideLeaf, OverridesState, ResolveTsconfigOptions, ResolvedTsconfig, RestoreTsconfigOverridesOptions, RestoreTsconfigOverridesResult, RevertOverrideResult, SnapshotTree, TSCONFIG_MANIFEST_PATH, TSCONFIG_OVERRIDE_KINDS, TsconfigAlias, TsconfigExtends, TsconfigExtendsOptions, type TsconfigFileNameSet as TsconfigFileNames, TsconfigJson, TsconfigOverrideKind, TsconfigOverrides, TsconfigReference, addedOverrideLeaves, applyOverride, buildMonorepoTsconfig, deleteSnapshot, detectIndent, generateTsconfigs, generateWorkspaceTsconfigs, getPath, getSnapshot, hasOverrideKeys, hasPath, index_d_exports, isAppliedOverride, mergeOverride, overrideLeaves, parseTsconfig, readTsconfig, recordOverrideSnapshot, removedOverrideLeaves, renderMonorepoTsconfig, renderTsconfigBase, renderTsconfigBuild, renderTsconfigDefault, renderTsconfigTemplates, resolveTsconfig, resolveTsconfigCompilerOption, resolveTsconfigConfig, restoreTsconfigOverrides, revertOverride, runTsconfigCli, setSnapshot, stringifyTsconfig, toRepoRelative, tsconfigBaseTemplate, tsconfigBuildTemplate, tsconfigDefaultTemplate, tsconfigFileNames, tsconfigSyncTask };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{TSCONFIG_OVERRIDE_KINDS as t,addedOverrideLeaves as n,applyOverride as r,getPath as i,hasOverrideKeys as a,hasPath as o,isAppliedOverride as s,mergeOverride as c,overrideLeaves as l,recordOverrideSnapshot as u,removedOverrideLeaves as d,revertOverride as f}from"./overrides.js";import{parseTsconfig as p,readTsconfig as m,resolveTsconfig as h}from"./resolve.js";import{generateTsconfigs as g,runTsconfigCli as _}from"./cli/generate/index.js";import{TSCONFIG_MANIFEST_PATH as v,deleteSnapshot as y,detectIndent as b,getSnapshot as x,restoreTsconfigOverrides as S,setSnapshot as C,stringifyTsconfig as w,toRepoRelative as T}from"./snapshots.js";import{tsconfigFileNames as E,tsconfigSyncTask as D}from"./sync.js";import{DEFAULT_TSCONFIG_REPLACEMENTS as O,buildMonorepoTsconfig as k,renderMonorepoTsconfig as A,renderTsconfigBase as j,renderTsconfigBuild as M,renderTsconfigDefault as N,renderTsconfigTemplates as P,tsconfigBaseTemplate as F,tsconfigBuildTemplate as I,tsconfigDefaultTemplate as L}from"./templates.js";var R=/* @__PURE__ */ e({DEFAULT_TSCONFIG_REPLACEMENTS:()=>O,TSCONFIG_MANIFEST_PATH:()=>v,TSCONFIG_OVERRIDE_KINDS:()=>t,addedOverrideLeaves:()=>n,applyOverride:()=>r,buildMonorepoTsconfig:()=>k,deleteSnapshot:()=>y,detectIndent:()=>b,generateTsconfigs:()=>g,getPath:()=>i,getSnapshot:()=>x,hasOverrideKeys:()=>a,hasPath:()=>o,isAppliedOverride:()=>s,mergeOverride:()=>c,overrideLeaves:()=>l,parseTsconfig:()=>p,readTsconfig:()=>m,recordOverrideSnapshot:()=>u,removedOverrideLeaves:()=>d,renderMonorepoTsconfig:()=>A,renderTsconfigBase:()=>j,renderTsconfigBuild:()=>M,renderTsconfigDefault:()=>N,renderTsconfigTemplates:()=>P,resolveTsconfig:()=>h,restoreTsconfigOverrides:()=>S,revertOverride:()=>f,runTsconfigCli:()=>_,setSnapshot:()=>C,stringifyTsconfig:()=>w,toRepoRelative:()=>T,tsconfigBaseTemplate:()=>F,tsconfigBuildTemplate:()=>I,tsconfigDefaultTemplate:()=>L,tsconfigFileNames:()=>E,tsconfigSyncTask:()=>D});export{O as DEFAULT_TSCONFIG_REPLACEMENTS,v as TSCONFIG_MANIFEST_PATH,t as TSCONFIG_OVERRIDE_KINDS,n as addedOverrideLeaves,r as applyOverride,k as buildMonorepoTsconfig,y as deleteSnapshot,b as detectIndent,g as generateTsconfigs,i as getPath,x as getSnapshot,a as hasOverrideKeys,o as hasPath,s as isAppliedOverride,c as mergeOverride,l as overrideLeaves,p as parseTsconfig,m as readTsconfig,u as recordOverrideSnapshot,d as removedOverrideLeaves,A as renderMonorepoTsconfig,j as renderTsconfigBase,M as renderTsconfigBuild,N as renderTsconfigDefault,P as renderTsconfigTemplates,h as resolveTsconfig,S as restoreTsconfigOverrides,f as revertOverride,_ as runTsconfigCli,C as setSnapshot,R as src_exports,w as stringifyTsconfig,T as toRepoRelative,F as tsconfigBaseTemplate,I as tsconfigBuildTemplate,L as tsconfigDefaultTemplate,E as tsconfigFileNames,D as tsconfigSyncTask};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{tsconfigFileNames as t}from"../../shared/src/tsconfig-files.js";import{TSCONFIG_OVERRIDE_KINDS as n,addedOverrideLeaves as r,applyOverride as i,getPath as a,hasOverrideKeys as o,hasPath as s,isAppliedOverride as c,mergeOverride as l,overrideLeaves as u,recordOverrideSnapshot as d,removedOverrideLeaves as f,revertOverride as p}from"./overrides.js";import{parseTsconfig as m,readTsconfig as h,resolveTsconfig as g,resolveTsconfigCompilerOption as _,resolveTsconfigConfig as v}from"./resolve.js";import{generateTsconfigs as y,generateWorkspaceTsconfigs as b,runTsconfigCli as x}from"./cli/generate/index.js";import{TSCONFIG_MANIFEST_PATH as S,deleteSnapshot as C,detectIndent as w,getSnapshot as T,restoreTsconfigOverrides as E,setSnapshot as D,stringifyTsconfig as O,toRepoRelative as k}from"./snapshots.js";import{tsconfigSyncTask as A}from"./sync.js";import{DEFAULT_TSCONFIG_REPLACEMENTS as j,buildMonorepoTsconfig as M,renderMonorepoTsconfig as N,renderTsconfigBase as P,renderTsconfigBuild as F,renderTsconfigDefault as I,renderTsconfigTemplates as L,tsconfigBaseTemplate as R,tsconfigBuildTemplate as z,tsconfigDefaultTemplate as B}from"./templates.js";var V=/* @__PURE__ */ e({DEFAULT_TSCONFIG_REPLACEMENTS:()=>j,TSCONFIG_MANIFEST_PATH:()=>S,TSCONFIG_OVERRIDE_KINDS:()=>n,addedOverrideLeaves:()=>r,applyOverride:()=>i,buildMonorepoTsconfig:()=>M,deleteSnapshot:()=>C,detectIndent:()=>w,generateTsconfigs:()=>y,generateWorkspaceTsconfigs:()=>b,getPath:()=>a,getSnapshot:()=>T,hasOverrideKeys:()=>o,hasPath:()=>s,isAppliedOverride:()=>c,mergeOverride:()=>l,overrideLeaves:()=>u,parseTsconfig:()=>m,readTsconfig:()=>h,recordOverrideSnapshot:()=>d,removedOverrideLeaves:()=>f,renderMonorepoTsconfig:()=>N,renderTsconfigBase:()=>P,renderTsconfigBuild:()=>F,renderTsconfigDefault:()=>I,renderTsconfigTemplates:()=>L,resolveTsconfig:()=>g,resolveTsconfigCompilerOption:()=>_,resolveTsconfigConfig:()=>v,restoreTsconfigOverrides:()=>E,revertOverride:()=>p,runTsconfigCli:()=>x,setSnapshot:()=>D,stringifyTsconfig:()=>O,toRepoRelative:()=>k,tsconfigBaseTemplate:()=>R,tsconfigBuildTemplate:()=>z,tsconfigDefaultTemplate:()=>B,tsconfigFileNames:()=>t,tsconfigSyncTask:()=>A});export{j as DEFAULT_TSCONFIG_REPLACEMENTS,S as TSCONFIG_MANIFEST_PATH,n as TSCONFIG_OVERRIDE_KINDS,r as addedOverrideLeaves,i as applyOverride,M as buildMonorepoTsconfig,C as deleteSnapshot,w as detectIndent,y as generateTsconfigs,b as generateWorkspaceTsconfigs,a as getPath,T as getSnapshot,o as hasOverrideKeys,s as hasPath,c as isAppliedOverride,l as mergeOverride,u as overrideLeaves,m as parseTsconfig,h as readTsconfig,d as recordOverrideSnapshot,f as removedOverrideLeaves,N as renderMonorepoTsconfig,P as renderTsconfigBase,F as renderTsconfigBuild,I as renderTsconfigDefault,L as renderTsconfigTemplates,g as resolveTsconfig,_ as resolveTsconfigCompilerOption,v as resolveTsconfigConfig,E as restoreTsconfigOverrides,p as revertOverride,x as runTsconfigCli,D as setSnapshot,V as src_exports,O as stringifyTsconfig,k as toRepoRelative,R as tsconfigBaseTemplate,z as tsconfigBuildTemplate,B as tsconfigDefaultTemplate,t as tsconfigFileNames,A as tsconfigSyncTask};
@@ -4,10 +4,10 @@ import { ToolchainTsconfigOverrides } from "../../shared/src/config-types.js";
4
4
  import "../../shared/src/index.js";
5
5
  import { TsConfigJson } from "type-fest";
6
6
  //#region packages/tsconfig/src/overrides.d.ts
7
- /** The file an override targets. */
8
- export type TsconfigOverrideKind = 'base' | 'root' | 'default' | 'build';
9
7
  /** Every override kind, in the order the sync task applies them. */
10
- export declare const TSCONFIG_OVERRIDE_KINDS: readonly TsconfigOverrideKind[];
8
+ export declare const TSCONFIG_OVERRIDE_KINDS: readonly ['base', 'root', 'default', 'build'];
9
+ /** The file an override targets. */
10
+ export type TsconfigOverrideKind = (typeof TSCONFIG_OVERRIDE_KINDS)[number];
11
11
  /** The `tsconfig.overrides` config section. */
12
12
  export type TsconfigOverrides = ToolchainTsconfigOverrides;
13
13
  /** One applied override, as recorded in the manifest. */
@@ -17,7 +17,7 @@ export interface TsconfigAlias {
17
17
  export interface TsconfigReference {
18
18
  /** Absolute path to the referenced tsconfig file. */
19
19
  path: string;
20
- [key: string]: unknown;
20
+ [key: string & {}]: unknown;
21
21
  }
22
22
  /** The result of {@link resolveTsconfig}. */
23
23
  export interface ResolvedTsconfig {
@@ -44,17 +44,29 @@ export interface TsconfigJson {
44
44
  extends?: string | string[];
45
45
  compilerOptions?: {
46
46
  baseUrl?: string;
47
- paths?: Record<string, string[] | string>;
47
+ rootDir?: string;
48
+ paths?: Record<string, string[]>;
48
49
  };
49
50
  references?: {
50
51
  path: string;
51
- [key: string]: unknown;
52
+ [key: string & {}]: unknown;
52
53
  }[];
53
54
  }
54
55
  /** Read a tsconfig file (JSONC: comments + trailing commas are allowed). */
55
56
  export declare function readTsconfig(file: string): TsconfigJson;
56
57
  /** Parse JSONC tsconfig text (comments, trailing commas and a BOM are allowed). */
57
58
  export declare function parseTsconfig(text: string): TsconfigJson;
59
+ /**
60
+ * Resolve an in-memory tsconfig object (eg. the auto-generated workspaces config)
61
+ * exactly like {@link resolveTsconfig}, but without requiring it to be on disk.
62
+ */
63
+ export declare function resolveTsconfigConfig(config: TsconfigJson, dir: string, options?: Pick<ResolveTsconfigOptions, 'extends' | 'overrides'>): ResolvedTsconfig;
64
+ /**
65
+ * The nearest `compilerOptions.rootDir`/`baseUrl` in a tsconfig's `extends`
66
+ * chain, resolved to an absolute path. Used by auto alias wiring to infer the
67
+ * workspace source directory.
68
+ */
69
+ export declare function resolveTsconfigCompilerOption(file: string, key: 'rootDir' | 'baseUrl'): string | undefined;
58
70
  /**
59
71
  * Resolve a tsconfig's `paths` and `references`, following `extends` per field.
60
72
  */