@deltabox/toolchain 1.3.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/CHANGELOG.md +117 -4
  2. package/README.md +32 -39
  3. package/dist/changelog.d.ts +3 -2
  4. package/dist/changelog.js +1 -1
  5. package/dist/cli/commands/providers.js +1 -1
  6. package/dist/cli/commands/sync.js +1 -1
  7. package/dist/cli/context.js +1 -1
  8. package/dist/cli/index.d.ts +4 -4
  9. package/dist/cli/index.js +1 -1
  10. package/dist/cli/register.d.ts +3 -3
  11. package/dist/cli/register.js +1 -1
  12. package/dist/config.d.ts +2 -2
  13. package/dist/config.js +1 -1
  14. package/dist/core.d.ts +4 -3
  15. package/dist/core.js +1 -1
  16. package/dist/index.d.ts +11 -9
  17. package/dist/index.js +1 -1
  18. package/dist/migrate.d.ts +3 -2
  19. package/dist/migrate.js +1 -1
  20. package/dist/package.js +1 -1
  21. package/dist/packages/changelog/src/cli/index.d.ts +2 -2
  22. package/dist/packages/changelog/src/cli/index.js +1 -1
  23. package/dist/packages/changelog/src/index.d.ts +4 -3
  24. package/dist/packages/changelog/src/index.js +1 -1
  25. package/dist/packages/changelog/src/run-workflows.d.ts +2 -2
  26. package/dist/packages/changelog/src/run.d.ts +8 -2
  27. package/dist/packages/changelog/src/run.js +1 -1
  28. package/dist/packages/changelog/src/sync.d.ts +13 -5
  29. package/dist/packages/changelog/src/sync.js +1 -1
  30. package/dist/packages/changelog/src/utils/versioning.d.ts +78 -0
  31. package/dist/packages/changelog/src/utils/versioning.js +1 -0
  32. package/dist/packages/changelog/src/utils/write.js +1 -1
  33. package/dist/packages/changelog/src/workflows.js +1 -1
  34. package/dist/packages/config/src/cli/index.d.ts +2 -2
  35. package/dist/packages/config/src/generators/index.d.ts +2 -2
  36. package/dist/packages/config/src/generators/index.js +1 -1
  37. package/dist/packages/config/src/generators/types.d.ts +16 -0
  38. package/dist/packages/config/src/generators/types.js +2 -1
  39. package/dist/packages/config/src/index.d.ts +3 -3
  40. package/dist/packages/config/src/index.js +1 -1
  41. package/dist/packages/config/src/schema.d.ts +1 -1
  42. package/dist/packages/config/src/schema.js +1 -1
  43. package/dist/packages/core/src/index.d.ts +5 -4
  44. package/dist/packages/core/src/index.js +1 -1
  45. package/dist/packages/core/src/loader.d.ts +3 -3
  46. package/dist/packages/core/src/loader.js +1 -1
  47. package/dist/packages/core/src/project-type.d.ts +2 -2
  48. package/dist/packages/core/src/provider-registry.d.ts +12 -0
  49. package/dist/packages/core/src/provider-registry.js +1 -0
  50. package/dist/packages/core/src/reset.d.ts +3 -3
  51. package/dist/packages/core/src/reset.js +1 -1
  52. package/dist/packages/core/src/sync.d.ts +2 -2
  53. package/dist/packages/core/src/vscode.d.ts +3 -3
  54. package/dist/packages/migrate/src/biome.d.ts +3 -3
  55. package/dist/packages/migrate/src/biome.js +1 -1
  56. package/dist/packages/migrate/src/cli/index.d.ts +5 -4
  57. package/dist/packages/migrate/src/cli/index.js +1 -1
  58. package/dist/packages/migrate/src/dprint.d.ts +2 -2
  59. package/dist/packages/migrate/src/dprint.js +1 -1
  60. package/dist/packages/migrate/src/eslint.d.ts +2 -2
  61. package/dist/packages/migrate/src/eslint.js +1 -1
  62. package/dist/packages/migrate/src/index.d.ts +3 -2
  63. package/dist/packages/migrate/src/index.js +1 -1
  64. package/dist/packages/migrate/src/prettier.d.ts +2 -2
  65. package/dist/packages/migrate/src/prettier.js +1 -1
  66. package/dist/packages/migrate/src/registry.d.ts +4 -4
  67. package/dist/packages/migrate/src/registry.js +1 -1
  68. package/dist/packages/migrate/src/types.d.ts +4 -4
  69. package/dist/packages/migrate/src/vite.d.ts +52 -0
  70. package/dist/packages/migrate/src/vite.js +5 -0
  71. package/dist/packages/project/src/cli/index.d.ts +2 -2
  72. package/dist/packages/project/src/config.js +1 -1
  73. package/dist/packages/project/src/index.d.ts +3 -3
  74. package/dist/packages/project/src/index.js +1 -1
  75. package/dist/packages/project/src/typescript.d.ts +1 -1
  76. package/dist/packages/project/src/typescript.js +1 -1
  77. package/dist/packages/shared/src/bin.d.ts +32 -0
  78. package/dist/packages/shared/src/bin.js +1 -0
  79. package/dist/packages/shared/src/config-schema.d.ts +131 -57
  80. package/dist/packages/shared/src/config-schema.js +1 -1
  81. package/dist/packages/shared/src/config-types.d.ts +42 -39
  82. package/dist/packages/shared/src/index.d.ts +9 -8
  83. package/dist/packages/shared/src/index.js +1 -1
  84. package/dist/packages/shared/src/logger.d.ts +7 -4
  85. package/dist/packages/shared/src/logger.js +1 -1
  86. package/dist/packages/shared/src/provider.d.ts +6 -6
  87. package/dist/packages/shared/src/run.d.ts +22 -2
  88. package/dist/packages/shared/src/run.js +1 -1
  89. package/dist/packages/shared/src/toolchain.d.ts +17 -19
  90. package/dist/packages/shared/src/toolchain.js +1 -1
  91. package/dist/packages/shared/src/types.d.ts +9 -9
  92. package/dist/packages/template/src/cli/index.d.ts +2 -2
  93. package/dist/packages/template/src/cli/index.js +1 -1
  94. package/dist/packages/template/src/online.d.ts +3 -3
  95. package/dist/packages/template/src/registry.d.ts +8 -8
  96. package/dist/packages/template/src/types.d.ts +3 -3
  97. package/dist/packages/tsconfig/src/cli/index.d.ts +2 -2
  98. package/dist/packages/tsdown/src/cli/index.d.ts +2 -2
  99. package/dist/packages/vite/src/cli/index.d.ts +2 -2
  100. package/dist/packages/vite/src/index.d.ts +4 -3
  101. package/dist/packages/vite/src/index.js +1 -1
  102. package/dist/packages/vite/src/plugin.d.ts +32 -19
  103. package/dist/packages/vite/src/plugin.js +1 -1
  104. package/dist/packages/vite/src/provider.d.ts +2 -2
  105. package/dist/packages/vite/src/resolve.d.ts +19 -0
  106. package/dist/packages/vite/src/resolve.js +1 -0
  107. package/dist/packages/vite/src/sync.d.ts +10 -14
  108. package/dist/packages/vite/src/sync.js +2 -2
  109. package/dist/packages/vite/src/vp.d.ts +5 -0
  110. package/dist/packages/vite/src/vp.js +1 -1
  111. package/dist/project.d.ts +2 -2
  112. package/dist/project.js +1 -1
  113. package/dist/providers.d.ts +8 -4
  114. package/dist/providers.js +1 -1
  115. package/dist/shared.d.ts +8 -7
  116. package/dist/shared.js +1 -1
  117. package/dist/vite.d.ts +4 -3
  118. package/dist/vite.js +1 -1
  119. package/package.json +25 -16
@@ -2,16 +2,17 @@ import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { DBX_GITIGNORE_BLOCK, ensureDbxGitignore } from "./gitignore.js";
4
4
  import { BuildProjectGraphOptions, IGNORED_DIRS, PackageManager, ProjectGraph, ProjectNode, buildProjectGraph, detectPackageManager, orderProjects, projectGraphPath, readProjectGraph, writeProjectGraph } from "./graph.js";
5
- import { LoadedConfig, findConfigFile, loadToolingConfig } from "./loader.js";
5
+ import { LoadedConfig, findConfigFile, loadToolchainConfig } from "./loader.js";
6
6
  import { MANIFEST_DIR, MANIFEST_FILE, Manifest, readManifest, writeManifest } from "./manifest.js";
7
7
  import { detectProjectType, resolveProjectType } from "./project-type.js";
8
+ import { providerRegistryPath, readProviderRegistry, writeProviderRegistry } from "./provider-registry.js";
8
9
  import { SelectProjectsOptions, SelectedProject, selectProjects } from "./select.js";
9
- import { ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolingOptions, ResetToolingResult, resetProjects, resetTooling } from "./reset.js";
10
+ import { ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, resetProjects, resetToolchain } from "./reset.js";
10
11
  import { RunSyncOptions, SyncResult, runSync } from "./sync.js";
11
12
  import { VscodeSyncOptions, vscodeSyncTask } from "./vscode.js";
12
13
  import { RunWatchOptions, runWatch } from "./watch.js";
13
14
  declare namespace index_d_exports {
14
- export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, IGNORED_DIRS, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolingOptions, ResetToolingResult, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, VscodeSyncOptions, buildProjectGraph, detectPackageManager, detectProjectType, ensureDbxGitignore, findConfigFile, loadToolingConfig, orderProjects, projectGraphPath, readManifest, readProjectGraph, resetProjects, resetTooling, resolveProjectType, runSync, runWatch, selectProjects, vscodeSyncTask, writeManifest, writeProjectGraph };
15
+ export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, IGNORED_DIRS, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, VscodeSyncOptions, buildProjectGraph, detectPackageManager, detectProjectType, ensureDbxGitignore, findConfigFile, loadToolchainConfig, orderProjects, projectGraphPath, providerRegistryPath, readManifest, readProjectGraph, readProviderRegistry, resetProjects, resetToolchain, resolveProjectType, runSync, runWatch, selectProjects, vscodeSyncTask, writeManifest, writeProjectGraph, writeProviderRegistry };
15
16
  }
16
17
  //#endregion
17
- export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, IGNORED_DIRS, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolingOptions, ResetToolingResult, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, VscodeSyncOptions, buildProjectGraph, detectPackageManager, detectProjectType, ensureDbxGitignore, findConfigFile, index_d_exports, loadToolingConfig, orderProjects, projectGraphPath, readManifest, readProjectGraph, resetProjects, resetTooling, resolveProjectType, runSync, runWatch, selectProjects, vscodeSyncTask, writeManifest, writeProjectGraph };
18
+ export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, IGNORED_DIRS, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, VscodeSyncOptions, buildProjectGraph, detectPackageManager, detectProjectType, ensureDbxGitignore, findConfigFile, index_d_exports, loadToolchainConfig, orderProjects, projectGraphPath, providerRegistryPath, readManifest, readProjectGraph, readProviderRegistry, resetProjects, resetToolchain, resolveProjectType, runSync, runWatch, selectProjects, vscodeSyncTask, writeManifest, writeProjectGraph, writeProviderRegistry };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{DBX_GITIGNORE_BLOCK as t,ensureDbxGitignore as n}from"./gitignore.js";import{detectProjectType as r,resolveProjectType as i}from"./project-type.js";import{findConfigFile as a,loadToolingConfig as o}from"./loader.js";import{IGNORED_DIRS as s,buildProjectGraph as c,detectPackageManager as l,orderProjects as u,projectGraphPath as d,readProjectGraph as f,writeProjectGraph as p}from"./graph.js";import{MANIFEST_DIR as m,MANIFEST_FILE as h,readManifest as g,writeManifest as _}from"./manifest.js";import{selectProjects as v}from"./select.js";import{resetProjects as y,resetTooling as b}from"./reset.js";import{runSync as x}from"./sync.js";import{vscodeSyncTask as S}from"./vscode.js";import{runWatch as C}from"./watch.js";var w=/* @__PURE__ */ e({DBX_GITIGNORE_BLOCK:()=>t,IGNORED_DIRS:()=>s,MANIFEST_DIR:()=>m,MANIFEST_FILE:()=>h,buildProjectGraph:()=>c,detectPackageManager:()=>l,detectProjectType:()=>r,ensureDbxGitignore:()=>n,findConfigFile:()=>a,loadToolingConfig:()=>o,orderProjects:()=>u,projectGraphPath:()=>d,readManifest:()=>g,readProjectGraph:()=>f,resetProjects:()=>y,resetTooling:()=>b,resolveProjectType:()=>i,runSync:()=>x,runWatch:()=>C,selectProjects:()=>v,vscodeSyncTask:()=>S,writeManifest:()=>_,writeProjectGraph:()=>p});export{t as DBX_GITIGNORE_BLOCK,s as IGNORED_DIRS,m as MANIFEST_DIR,h as MANIFEST_FILE,c as buildProjectGraph,l as detectPackageManager,r as detectProjectType,n as ensureDbxGitignore,a as findConfigFile,o as loadToolingConfig,u as orderProjects,d as projectGraphPath,g as readManifest,f as readProjectGraph,y as resetProjects,b as resetTooling,i as resolveProjectType,x as runSync,C as runWatch,v as selectProjects,w as src_exports,S as vscodeSyncTask,_ as writeManifest,p as writeProjectGraph};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{DBX_GITIGNORE_BLOCK as t,ensureDbxGitignore as n}from"./gitignore.js";import{detectProjectType as r,resolveProjectType as i}from"./project-type.js";import{findConfigFile as a,loadToolchainConfig as o}from"./loader.js";import{IGNORED_DIRS as s,buildProjectGraph as c,detectPackageManager as l,orderProjects as u,projectGraphPath as d,readProjectGraph as f,writeProjectGraph as p}from"./graph.js";import{MANIFEST_DIR as m,MANIFEST_FILE as h,readManifest as g,writeManifest as _}from"./manifest.js";import{providerRegistryPath as v,readProviderRegistry as y,writeProviderRegistry as b}from"./provider-registry.js";import{selectProjects as x}from"./select.js";import{resetProjects as S,resetToolchain as C}from"./reset.js";import{runSync as w}from"./sync.js";import{vscodeSyncTask as T}from"./vscode.js";import{runWatch as E}from"./watch.js";var D=/* @__PURE__ */ e({DBX_GITIGNORE_BLOCK:()=>t,IGNORED_DIRS:()=>s,MANIFEST_DIR:()=>m,MANIFEST_FILE:()=>h,buildProjectGraph:()=>c,detectPackageManager:()=>l,detectProjectType:()=>r,ensureDbxGitignore:()=>n,findConfigFile:()=>a,loadToolchainConfig:()=>o,orderProjects:()=>u,projectGraphPath:()=>d,providerRegistryPath:()=>v,readManifest:()=>g,readProjectGraph:()=>f,readProviderRegistry:()=>y,resetProjects:()=>S,resetToolchain:()=>C,resolveProjectType:()=>i,runSync:()=>w,runWatch:()=>E,selectProjects:()=>x,vscodeSyncTask:()=>T,writeManifest:()=>_,writeProjectGraph:()=>p,writeProviderRegistry:()=>b});export{t as DBX_GITIGNORE_BLOCK,s as IGNORED_DIRS,m as MANIFEST_DIR,h as MANIFEST_FILE,c as buildProjectGraph,l as detectPackageManager,r as detectProjectType,n as ensureDbxGitignore,a as findConfigFile,o as loadToolchainConfig,u as orderProjects,d as projectGraphPath,v as providerRegistryPath,g as readManifest,f as readProjectGraph,y as readProviderRegistry,S as resetProjects,C as resetToolchain,i as resolveProjectType,w as runSync,E as runWatch,x as selectProjects,D as src_exports,T as vscodeSyncTask,_ as writeManifest,p as writeProjectGraph,b as writeProviderRegistry};
@@ -2,12 +2,12 @@ import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { Replacements } from "../../shared/src/template.js";
4
4
  import { ProjectType } from "../../shared/src/config-types.js";
5
- import { ToolingConfig } from "../../shared/src/toolchain.js";
5
+ import { ToolchainConfig } from "../../shared/src/toolchain.js";
6
6
  import "../../shared/src/index.js";
7
7
  //#region packages/core/src/loader.d.ts
8
8
  /** A loaded tooling config plus its resolved path + replacement tokens. */
9
9
  export interface LoadedConfig {
10
- config: ToolingConfig;
10
+ config: ToolchainConfig;
11
11
  /** The config file that was loaded (undefined when none was found). */
12
12
  path?: string;
13
13
  tokens: Replacements;
@@ -23,5 +23,5 @@ export declare function findConfigFile(cwd?: string): string | undefined;
23
23
  * `toolchain` key) exists an empty config is returned (so every task falls back
24
24
  * to its defaults).
25
25
  */
26
- export declare function loadToolingConfig(cwd?: string): Promise<LoadedConfig>;
26
+ export declare function loadToolchainConfig(cwd?: string): Promise<LoadedConfig>;
27
27
  //#endregion
@@ -1 +1 @@
1
- import{default as e}from"node:path";import{pathToFileURL as t}from"node:url";import.meta.url;import{CONFIG_FILE_NAMES as n,resolveTokens as r}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{resolveProjectType as i}from"./project-type.js";import a from"node:fs";function o(t=process.cwd()){for(let r of n){let n=e.resolve(t,r);if(a.existsSync(n))return n}}async function s(e){if(e.endsWith(`.json`))return JSON.parse(a.readFileSync(e,`utf-8`).replace(/^\uFEFF/,``));let n=t(e).href;try{let e=await import(n);return e.default??e}catch(e){try{let{tsImport:e}=await import(`/home/runner/work/toolchain/toolchain/node_modules/tsx/dist/esm/api/index.mjs`),t=await e(n,import.meta.url);return t.default??t}catch{throw e}}}async function c(e=process.cwd()){let t=o(e),n={};if(t){let e=await s(t),r=e&&typeof e==`object`?e.toolchain:void 0;r&&typeof r==`object`&&(n=r)}let a=r(n);return await n.hooks?.afterLoad?.({cwd:e,config:n,tokens:a,...t?{path:t}:{}}),{config:n,...t?{path:t}:{},tokens:a,projectType:i(e,n)}}export{o as findConfigFile,c as loadToolingConfig};
1
+ import{default as e}from"node:path";import{pathToFileURL as t}from"node:url";import.meta.url;import{CONFIG_FILE_NAMES as n,resolveTokens as r}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{resolveProjectType as i}from"./project-type.js";import a from"node:fs";function o(t=process.cwd()){for(let r of n){let n=e.resolve(t,r);if(a.existsSync(n))return n}}async function s(e){if(e.endsWith(`.json`))return JSON.parse(a.readFileSync(e,`utf-8`).replace(/^\uFEFF/,``));let n=t(e).href;try{let e=await import(n);return e.default??e}catch(e){try{let{tsImport:e}=await import(`/home/runner/work/toolchain/toolchain/node_modules/tsx/dist/esm/api/index.mjs`),t=await e(n,import.meta.url);return t.default??t}catch{throw e}}}async function c(e=process.cwd()){let t=o(e),n={};if(t){let e=await s(t),r=e&&typeof e==`object`?e.toolchain:void 0;r&&typeof r==`object`&&(n=r)}let a=r(n);return await n.hooks?.afterLoad?.({cwd:e,config:n,tokens:a,...t?{path:t}:{}}),{config:n,...t?{path:t}:{},tokens:a,projectType:i(e,n)}}export{o as findConfigFile,c as loadToolchainConfig};
@@ -1,14 +1,14 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { ProjectType } from "../../shared/src/config-types.js";
4
- import { ToolingConfig } from "../../shared/src/toolchain.js";
4
+ import { ToolchainConfig } from "../../shared/src/toolchain.js";
5
5
  import "../../shared/src/index.js";
6
6
  //#region packages/core/src/project-type.d.ts
7
7
  /**
8
8
  * Resolve the project kind: an explicit `project.type` in the config wins,
9
9
  * otherwise it is detected from the filesystem.
10
10
  */
11
- export declare function resolveProjectType(cwd: string, config?: ToolingConfig): ProjectType;
11
+ export declare function resolveProjectType(cwd: string, config?: ToolchainConfig): ProjectType;
12
12
  /** Detect the project kind from `cwd` (workspaces / monorepo file heuristics). */
13
13
  export declare function detectProjectType(cwd: string): ProjectType;
14
14
  //#endregion
@@ -0,0 +1,12 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainProvider } from "../../shared/src/provider.js";
4
+ import "../../shared/src/index.js";
5
+ //#region packages/core/src/provider-registry.d.ts
6
+ /** The absolute path of a project's provider registry file. */
7
+ export declare function providerRegistryPath(cwd?: string): string;
8
+ /** Read a project's custom providers (empty when the registry is absent/invalid). */
9
+ export declare function readProviderRegistry(cwd?: string): ToolchainProvider[];
10
+ /** Write a project's custom providers (removing the file when the list is empty). */
11
+ export declare function writeProviderRegistry(cwd: string, providers: ToolchainProvider[]): void;
12
+ //#endregion
@@ -0,0 +1 @@
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import t from"node:fs";const n=e.join(`.dbx`,`toolchain`);function r(t=process.cwd()){return e.join(t,n,`providers.json`)}function i(e=process.cwd()){try{let n=JSON.parse(t.readFileSync(r(e),`utf-8`));return Array.isArray(n)?n:[]}catch{return[]}}function a(n,i){let a=r(n);i.length===0?t.rmSync(a,{force:!0}):(t.mkdirSync(e.dirname(a),{recursive:!0}),t.writeFileSync(a,`${JSON.stringify(i,null,4)}\n`,`utf-8`))}export{r as providerRegistryPath,i as readProviderRegistry,a as writeProviderRegistry};
@@ -11,13 +11,13 @@ export interface ResetSelectors {
11
11
  /** Remove the `dbx.config.*` file(s). */
12
12
  config?: boolean;
13
13
  }
14
- export interface ResetToolingOptions extends ResetSelectors {
14
+ export interface ResetToolchainOptions extends ResetSelectors {
15
15
  /** The project directory to reset. */
16
16
  cwd: string;
17
17
  /** Report what would be removed without deleting anything. */
18
18
  dryRun?: boolean;
19
19
  }
20
- export interface ResetToolingResult {
20
+ export interface ResetToolchainResult {
21
21
  /** Repo-relative paths removed (or that would be removed). */
22
22
  removed: string[];
23
23
  /** Whether this was a dry run. */
@@ -29,7 +29,7 @@ export interface ResetToolingResult {
29
29
  * the `dbx.config.*` file. With no selectors the generated files + the
30
30
  * manifest directory are removed (the config is kept).
31
31
  */
32
- export declare function resetTooling(options: ResetToolingOptions): ResetToolingResult;
32
+ export declare function resetToolchain(options: ResetToolchainOptions): ResetToolchainResult;
33
33
  export interface ResetProjectsOptions extends ResetSelectors, Omit<SelectProjectsOptions, 'kind'> {
34
34
  /** Apply to every discovered project under `root` (not just `root`). */
35
35
  recursive?: boolean;
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{findConfigFile as t}from"./loader.js";import{MANIFEST_DIR as n,readManifest as r}from"./manifest.js";import{selectProjects as i}from"./select.js";import a from"node:fs";function o(e){return e.replace(/\\/g,`/`)}function s(e){let t=e.generated!==void 0||e.manifest!==void 0||e.config!==void 0;return{generated:e.generated??!t,manifest:e.manifest??!t,config:e.config??!1}}function c(i){let{cwd:c}=i,l=i.dryRun??!1,u=s(i),d=[],f=(e,t)=>{a.existsSync(e)&&(l||a.rmSync(e,{force:!0}),d.push(t))};if(u.generated)for(let t of r(c).files)f(e.resolve(c,t),t);if(u.config){let n=t(c);n&&f(n,o(e.relative(c,n)))}if(u.manifest){let t=e.resolve(c,n);a.existsSync(t)&&(l||a.rmSync(t,{recursive:!0,force:!0}),d.push(`${n}/`))}return{removed:d,dryRun:l}}function l(e){let n=e.dryRun??!1;return{results:(e.recursive?i({root:e.root,...e.include?{include:e.include}:{},...e.exclude?{exclude:e.exclude}:{},...e.maxDepth===void 0?{}:{maxDepth:e.maxDepth}}):[{dir:e.root,rel:`.`,hasConfig:!!t(e.root)}]).map(t=>({dir:t.dir,rel:t.rel,removed:c({cwd:t.dir,...e.generated===void 0?{}:{generated:e.generated},...e.manifest===void 0?{}:{manifest:e.manifest},...e.config===void 0?{}:{config:e.config},dryRun:n}).removed})),dryRun:n}}export{l as resetProjects,c as resetTooling};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{findConfigFile as t}from"./loader.js";import{MANIFEST_DIR as n,readManifest as r}from"./manifest.js";import{selectProjects as i}from"./select.js";import a from"node:fs";function o(e){return e.replace(/\\/g,`/`)}function s(e){let t=e.generated!==void 0||e.manifest!==void 0||e.config!==void 0;return{generated:e.generated??!t,manifest:e.manifest??!t,config:e.config??!1}}function c(i){let{cwd:c}=i,l=i.dryRun??!1,u=s(i),d=[],f=(e,t)=>{a.existsSync(e)&&(l||a.rmSync(e,{force:!0}),d.push(t))};if(u.generated)for(let t of r(c).files)f(e.resolve(c,t),t);if(u.config){let n=t(c);n&&f(n,o(e.relative(c,n)))}if(u.manifest){let t=e.resolve(c,n);a.existsSync(t)&&(l||a.rmSync(t,{recursive:!0,force:!0}),d.push(`${n}/`))}return{removed:d,dryRun:l}}function l(e){let n=e.dryRun??!1;return{results:(e.recursive?i({root:e.root,...e.include?{include:e.include}:{},...e.exclude?{exclude:e.exclude}:{},...e.maxDepth===void 0?{}:{maxDepth:e.maxDepth}}):[{dir:e.root,rel:`.`,hasConfig:!!t(e.root)}]).map(t=>({dir:t.dir,rel:t.rel,removed:c({cwd:t.dir,...e.generated===void 0?{}:{generated:e.generated},...e.manifest===void 0?{}:{manifest:e.manifest},...e.config===void 0?{}:{config:e.config},dryRun:n}).removed})),dryRun:n}}export{l as resetProjects,c as resetToolchain};
@@ -2,7 +2,7 @@ import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { Replacements } from "../../shared/src/template.js";
4
4
  import { ProjectType } from "../../shared/src/config-types.js";
5
- import { SyncTask, ToolingConfig } from "../../shared/src/toolchain.js";
5
+ import { SyncTask, ToolchainConfig } from "../../shared/src/toolchain.js";
6
6
  import "../../shared/src/index.js";
7
7
  //#region packages/core/src/sync.d.ts
8
8
  export interface RunSyncOptions {
@@ -11,7 +11,7 @@ export interface RunSyncOptions {
11
11
  /** The project root. */
12
12
  cwd: string;
13
13
  /** The loaded config. */
14
- config: ToolingConfig;
14
+ config: ToolchainConfig;
15
15
  /** The resolved replacement tokens. */
16
16
  tokens: Replacements;
17
17
  /** The project kind (resolved from the config/cwd when omitted). */
@@ -1,7 +1,7 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { ProjectType } from "../../shared/src/config-types.js";
4
- import { SyncTask, ToolingConfig } from "../../shared/src/toolchain.js";
4
+ import { SyncTask, ToolchainConfig } from "../../shared/src/toolchain.js";
5
5
  import "../../shared/src/index.js";
6
6
  //#region packages/core/src/vscode.d.ts
7
7
  export interface VscodeSyncOptions {
@@ -10,11 +10,11 @@ export interface VscodeSyncOptions {
10
10
  * A function lets the patches depend on the config (eg. only inject Biome
11
11
  * settings when the `biome` section is enabled).
12
12
  */
13
- settings?: Record<string, unknown>[] | ((config: ToolingConfig) => Record<string, unknown>[]);
13
+ settings?: Record<string, unknown>[] | ((config: ToolchainConfig) => Record<string, unknown>[]);
14
14
  /** Recommended extensions (unioned with the consumer's existing list). */
15
15
  extensions?: string[];
16
16
  /** Whether the task runs (default: always). */
17
- enabled?: (config: ToolingConfig) => boolean;
17
+ enabled?: (config: ToolchainConfig) => boolean;
18
18
  /** The project kinds the task applies to (default root + single project). */
19
19
  projectTypes?: ProjectType[];
20
20
  }
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingMigration } from "./types.js";
3
+ import { ToolchainMigration } from "./types.js";
4
4
  //#region packages/migrate/src/biome.d.ts
5
5
  /** The Biome config file names, in priority order. */
6
6
  export declare const BIOME_CONFIG_FILES: readonly ['biome.json', 'biome.jsonc'];
@@ -13,6 +13,6 @@ export declare function findBiomeConfig(cwd: string): string | undefined;
13
13
  export declare function stripJsonc(input: string): string;
14
14
  /** Read and parse a JSON/JSONC file (BOM-tolerant). */
15
15
  export declare function readJsonc(file: string): Record<string, any>;
16
- /** Build the Biome -> ox migration. */
17
- export declare const biomeToOx: ToolingMigration;
16
+ /** Build the Biome -> oxc migration. */
17
+ export declare const biomeToOx: ToolchainMigration;
18
18
  //#endregion
@@ -1,2 +1,2 @@
1
1
  import{default as e}from"node:path";import"node:url";import.meta.url;import{mapBiomeToOxfmt as t}from"./oxfmt-map.js";import{mapBiomeToOxlint as n}from"./oxlint-map.js";import{renderViteTarget as r}from"./vite-target.js";import i from"node:fs";const a=[`biome.json`,`biome.jsonc`];function o(t){for(let n of a){let r=e.join(t,n);if(i.existsSync(r))return r}}function s(e){let t=``,n=!1,r=``;for(let i=0;i<e.length;i++){let a=e[i];if(n)t+=a,a===`\\`?(t+=e[i+1]??``,i++):a===r&&(n=!1);else if(a===`"`||a===`'`)n=!0,r=a,t+=a;else if(a===`/`&&e[i+1]===`/`)for(;i<e.length&&e[i]!==`
2
- `;)i++;else if(a===`/`&&e[i+1]===`*`){for(i+=2;i<e.length&&(e[i]!==`*`||e[i+1]!==`/`);)i++;i++}else t+=a}return t.replace(/,(\s*[}\]])/g,`$1`)}function c(e){let t=i.readFileSync(e,`utf-8`).replace(/^\uFEFF/,``);return JSON.parse(s(t))}const l={id:`biome-to-ox`,from:`biome`,to:`ox`,description:`Migrate Biome (formatter + organizeImports + linter) to Oxfmt/Oxlint.`,detect:e=>!!o(e),run:async a=>{let s=o(a.cwd);if(!s)throw Error(`biome-to-ox: no biome.json/biome.jsonc found.`);let u=c(s),d=t(u),f=n(u,d.oxfmt.ignorePatterns??[]),p=[...d.unmapped,...f.unmapped],m=[`Source: ${e.basename(s)}.`,`Formatter + organizeImports + linter rules mapped.`];if((a.target??`files`)===`vite`){let e=r(a.cwd,{fmt:d.oxfmt,lint:f.oxlint});return a.write&&i.writeFileSync(e.path,e.content,`utf-8`),{id:l.id,from:`biome`,to:`ox`,written:[e.path],files:[e],oxfmt:d.oxfmt,oxlint:f.oxlint,unmapped:p,notes:[...m,"Folded into vite.config.ts (`fmt` + `lint`)."]}}let h=[[`.oxfmtrc.json`,d.oxfmt],[`.oxlintrc.json`,f.oxlint]].map(([t,n])=>({path:e.join(a.cwd,t),content:`${JSON.stringify(n,null,4)}\n`}));if(a.write)for(let e of h)i.writeFileSync(e.path,e.content,`utf-8`);return{id:l.id,from:`biome`,to:`ox`,written:h.map(e=>e.path),files:h,oxfmt:d.oxfmt,oxlint:f.oxlint,unmapped:p,notes:[...m,"Next: run `oxfmt` to reformat, then drop Biome.","Tip: `--target vite` folds this into vite.config.ts instead."]}}};export{a as BIOME_CONFIG_FILES,l as biomeToOx,o as findBiomeConfig,c as readJsonc,s as stripJsonc};
2
+ `;)i++;else if(a===`/`&&e[i+1]===`*`){for(i+=2;i<e.length&&(e[i]!==`*`||e[i+1]!==`/`);)i++;i++}else t+=a}return t.replace(/,(\s*[}\]])/g,`$1`)}function c(e){let t=i.readFileSync(e,`utf-8`).replace(/^\uFEFF/,``);return JSON.parse(s(t))}const l={id:`biome-to-oxc`,from:`biome`,to:`oxc`,description:`Migrate Biome (formatter + organizeImports + linter) to Oxfmt/Oxlint.`,detect:e=>!!o(e),run:async a=>{let s=o(a.cwd);if(!s)throw Error(`biome-to-oxc: no biome.json/biome.jsonc found.`);let u=c(s),d=t(u),f=n(u,d.oxfmt.ignorePatterns??[]),p=[...d.unmapped,...f.unmapped],m=[`Source: ${e.basename(s)}.`,`Formatter + organizeImports + linter rules mapped.`];if((a.target??`files`)===`vite`){let e=r(a.cwd,{fmt:d.oxfmt,lint:f.oxlint});return a.write&&i.writeFileSync(e.path,e.content,`utf-8`),{id:l.id,from:`biome`,to:`oxc`,written:[e.path],files:[e],oxfmt:d.oxfmt,oxlint:f.oxlint,unmapped:p,notes:[...m,"Folded into vite.config.ts (`fmt` + `lint`)."]}}let h=[[`.oxfmtrc.json`,d.oxfmt],[`.oxlintrc.json`,f.oxlint]].map(([t,n])=>({path:e.join(a.cwd,t),content:`${JSON.stringify(n,null,4)}\n`}));if(a.write)for(let e of h)i.writeFileSync(e.path,e.content,`utf-8`);return{id:l.id,from:`biome`,to:`oxc`,written:h.map(e=>e.path),files:h,oxfmt:d.oxfmt,oxlint:f.oxlint,unmapped:p,notes:[...m,"Next: run `oxfmt` to reformat, then drop Biome.","Tip: `--target vite` folds this into vite.config.ts instead."]}}};export{a as BIOME_CONFIG_FILES,l as biomeToOx,o as findBiomeConfig,c as readJsonc,s as stripJsonc};
@@ -1,12 +1,13 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingCommand } from "../../../shared/src/types.js";
3
+ import { ToolchainCommand } from "../../../shared/src/types.js";
4
4
  import "../../../shared/src/index.js";
5
5
  //#region packages/migrate/src/cli/index.d.ts
6
6
  /**
7
7
  * `dbx migrate` — convert a project's tooling config from another
8
- * tool (Biome / ESLint / Prettier / Dprint) to Ox (Oxfmt / Oxlint). Dry-run by
9
- * default; pass `--write` to apply, or `--check` for a CI gate.
8
+ * tool (Biome / ESLint / Prettier / Dprint) to Oxc (Oxfmt / Oxlint), or fold a
9
+ * hand-written `vite.config.*` into `dbx.config.*`. Dry-run by default; pass
10
+ * `--write` to apply, or `--check` for a CI gate.
10
11
  */
11
- export declare function migrateCommands(): ToolingCommand[];
12
+ export declare function migrateCommands(): ToolchainCommand[];
12
13
  //#endregion
@@ -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{diffFiles as n,hasPending as r}from"../check.js";import{detectMigrations as i,listMigrations as a,migrations as o}from"../registry.js";function s(){return[{name:`migrate`,description:`Migrate Biome / ESLint / Prettier / Dprint config to Ox (oxlint + oxfmt).`,options:[{flags:`--from <tool>`,description:`Source tool: biome | eslint | prettier | dprint | all.`},{flags:`--to <tool>`,description:`Target tool (default: ox).`,default:`ox`},{flags:`--cwd <dir>`,description:`Project root (default: cwd).`},{flags:`--write`,description:`Write the files (default: dry-run).`},{flags:`--dry-run`,description:`Do not write anything (default).`},{flags:`--check`,description:`CI: exit non-zero when the ox config is stale.`},{flags:`--target <target>`,description:`files (default) | vite.`},{flags:`--online`,description:`Allow network (e.g. @oxlint/migrate).`},{flags:`--json`,description:`Print the result as JSON.`}],run:async(a,s)=>{let c=a.cwd??s.cwd,l=!!a.check,u=!!a.write&&!a.dryRun&&!l,d=!!a.online,f=a.from,p=a.target??`files`,m=!f||f===`all`?i(c):o().filter(e=>e.from===f);if(m.length===0){t.info(f&&f!==`all`?`no "${f}" migration is registered.`:`nothing to migrate (no Biome/ESLint/Prettier/Dprint config detected).`);return}let h=[];for(let e of m)h.push(await e.run({cwd:c,write:u,online:d,target:p}));if(l){let i=h.flatMap(e=>n(e.files??[])),o=i.filter(e=>e.status!==`same`);if(a.json)t.raw(JSON.stringify(h,null,4));else if(o.length){for(let n of o)t.info(`${n.status} ${e.relative(c,n.path)||n.path}`);t.info(`${o.length} file(s) out of date — run \`migrate --write\` to apply.`)}else t.info(`up to date.`);r(i)&&(process.exitCode=1)}else if(a.json)t.raw(JSON.stringify(h,null,4));else{for(let e of h){t.info(`${e.from} -> ${e.to} ${u?`wrote`:`would write`}`);for(let n of e.written)t.info(` ${u?`+`:`?`} ${n}`);for(let n of e.notes??[])t.info(` ${n}`);if(e.unmapped?.length){t.info(` unmapped (${e.unmapped.length}):`);for(let n of e.unmapped.slice(0,25))t.info(` - ${n.source}: ${n.reason}`)}}u||t.info(`dry-run — re-run with --write to apply.`)}}},{name:`migrate:list`,description:`List the registered migrations and whether each is detected.`,options:[{flags:`--cwd <dir>`,description:`Project root (default: cwd).`},{flags:`--json`,description:`Print as JSON.`}],run:(e,n)=>{let r=e.cwd??n.cwd,i=a(r);if(e.json)t.raw(JSON.stringify(i,null,4));else for(let e of i)t.info(` ${e.id.padEnd(16)} ${e.from} -> ${e.to} [${e.detected?`detected`:`not found`}]`),t.info(` ${e.description}`)}}]}export{s as migrateCommands};
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{diffFiles as n,hasPending as r}from"../check.js";import{detectMigrations as i,listMigrations as a,migrations as o}from"../registry.js";function s(){return[{name:`migrate`,description:`Migrate Biome / ESLint / Prettier / Dprint config to Oxc, or fold vite.config.* into dbx.config.`,options:[{flags:`--from <tool>`,description:`Source tool: biome | eslint | prettier | dprint | vite | all.`},{flags:`--to <tool>`,description:`Target tool (default: oxc).`,default:`oxc`},{flags:`--cwd <dir>`,description:`Project root (default: cwd).`},{flags:`--write`,description:`Write the files (default: dry-run).`},{flags:`--dry-run`,description:`Do not write anything (default).`},{flags:`--check`,description:`CI: exit non-zero when the oxc config is stale.`},{flags:`--target <target>`,description:`files (default) | vite.`},{flags:`--online`,description:`Allow network (e.g. @oxlint/migrate).`},{flags:`--json`,description:`Print the result as JSON.`}],run:async(a,s)=>{let c=a.cwd??s.cwd,l=!!a.check,u=!!a.write&&!a.dryRun&&!l,d=!!a.online,f=a.from,p=a.target??`files`,m=!f||f===`all`?i(c):o().filter(e=>e.from===f);if(m.length===0){t.info(f&&f!==`all`?`no "${f}" migration is registered.`:`nothing to migrate (no Biome/ESLint/Prettier/Dprint/vite config detected).`);return}let h=[];for(let e of m)h.push(await e.run({cwd:c,write:u,online:d,target:p}));if(l){let i=h.flatMap(e=>n(e.files??[])),o=i.filter(e=>e.status!==`same`);if(a.json)t.raw(JSON.stringify(h,null,4));else if(o.length){for(let n of o)t.info(`${n.status} ${e.relative(c,n.path)||n.path}`);t.info(`${o.length} file(s) out of date — run \`migrate --write\` to apply.`)}else t.info(`up to date.`);r(i)&&(process.exitCode=1)}else if(a.json)t.raw(JSON.stringify(h,null,4));else{for(let e of h){t.info(`${e.from} -> ${e.to} ${u?`wrote`:`would write`}`);for(let n of e.written)t.info(` ${u?`+`:`?`} ${n}`);for(let n of e.notes??[])t.info(` ${n}`);if(e.unmapped?.length){t.info(` unmapped (${e.unmapped.length}):`);for(let n of e.unmapped.slice(0,25))t.info(` - ${n.source}: ${n.reason}`)}}u||t.info(`dry-run — re-run with --write to apply.`)}}},{name:`migrate:list`,description:`List the registered migrations and whether each is detected.`,options:[{flags:`--cwd <dir>`,description:`Project root (default: cwd).`},{flags:`--json`,description:`Print as JSON.`}],run:(e,n)=>{let r=e.cwd??n.cwd,i=a(r);if(e.json)t.raw(JSON.stringify(i,null,4));else for(let e of i)t.info(` ${e.id.padEnd(16)} ${e.from} -> ${e.to} [${e.detected?`detected`:`not found`}]`),t.info(` ${e.description}`)}}]}export{s as migrateCommands};
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingMigration } from "./types.js";
3
+ import { ToolchainMigration } from "./types.js";
4
4
  //#region packages/migrate/src/dprint.d.ts
5
5
  type Json = Record<string, any>;
6
6
  /** Locate a dprint config. */
@@ -13,6 +13,6 @@ export declare function mapDprintToOxfmt(dprint: Json): {
13
13
  oxfmt: Json;
14
14
  unmapped: string[];
15
15
  };
16
- export declare const dprintToOx: ToolingMigration;
16
+ export declare const dprintToOx: ToolchainMigration;
17
17
  //#endregion
18
18
  export {};
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{renderViteTarget as t}from"./vite-target.js";import n from"node:fs";const r=[`dprint.json`,`dprint.jsonc`,`.dprint.json`];function i(t){for(let i of r){let r=e.join(t,i);if(!n.existsSync(r))continue;let a=n.readFileSync(r,`utf-8`).replace(/^\uFEFF/,``).replace(/\/\*[\s\S]*?\*\//g,``).replace(/(^|[^:])\/\/.*$/gm,`$1`).replace(/,(\s*[}\]])/g,`$1`);try{return{file:r,config:JSON.parse(a)}}catch{}}}function a(e){let t={},n=e.typescript??{};typeof e.lineWidth==`number`&&(t.printWidth=e.lineWidth),typeof e.indentWidth==`number`&&(t.tabWidth=e.indentWidth),typeof e.useTabs==`boolean`&&(t.useTabs=e.useTabs),(e.newLineKind===`lf`||e.newLineKind===`crlf`)&&(t.endOfLine=e.newLineKind),n.quoteStyle&&(t.singleQuote=String(n.quoteStyle).includes(`Single`)||n.quoteStyle===`alwaysSingle`),n.semiColons&&(t.semi=n.semiColons!==`asi`),n.trailingCommas&&(t.trailingComma=n.trailingCommas===`always`?`all`:n.trailingCommas===`never`?`none`:`es5`);let r=[],i=[`lineWidth`,`indentWidth`,`useTabs`,`newLineKind`,`typescript`,`plugins`];for(let t of Object.keys(e))i.includes(t)||r.push(`dprint section: ${t}`);return Array.isArray(e.plugins)&&e.plugins.length&&r.push(`plugins (Oxfmt has built-in equivalents for common cases)`),{oxfmt:t,unmapped:r}}const o={id:`dprint-to-ox`,from:`dprint`,to:`oxfmt`,description:`Migrate a dprint.json (formatter) to Oxfmt.`,detect:e=>!!i(e),run:async r=>{let o=i(r.cwd);if(!o)throw Error(`dprint-to-ox: no dprint.json found.`);let s=a(o.config),c=s.unmapped.map(e=>({source:e,reason:`no Oxfmt equivalent`})),l=[`Source: ${e.basename(o.file)}.`];if((r.target??`files`)===`vite`){let e=t(r.cwd,{fmt:s.oxfmt});return r.write&&n.writeFileSync(e.path,e.content,`utf-8`),{id:`dprint-to-ox`,from:`dprint`,to:`oxfmt`,written:[e.path],files:[e],oxfmt:s.oxfmt,unmapped:c,notes:[...l,"Folded into vite.config.ts (`fmt`)."]}}let u={path:e.join(r.cwd,`.oxfmtrc.json`),content:`${JSON.stringify(s.oxfmt,null,4)}\n`};return r.write&&n.writeFileSync(u.path,u.content,`utf-8`),{id:`dprint-to-ox`,from:`dprint`,to:`oxfmt`,written:[u.path],files:[u],oxfmt:s.oxfmt,unmapped:c,notes:l}}};export{o as dprintToOx,i as findDprintConfig,a as mapDprintToOxfmt};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{renderViteTarget as t}from"./vite-target.js";import n from"node:fs";const r=[`dprint.json`,`dprint.jsonc`,`.dprint.json`];function i(t){for(let i of r){let r=e.join(t,i);if(!n.existsSync(r))continue;let a=n.readFileSync(r,`utf-8`).replace(/^\uFEFF/,``).replace(/\/\*[\s\S]*?\*\//g,``).replace(/(^|[^:])\/\/.*$/gm,`$1`).replace(/,(\s*[}\]])/g,`$1`);try{return{file:r,config:JSON.parse(a)}}catch{}}}function a(e){let t={},n=e.typescript??{};typeof e.lineWidth==`number`&&(t.printWidth=e.lineWidth),typeof e.indentWidth==`number`&&(t.tabWidth=e.indentWidth),typeof e.useTabs==`boolean`&&(t.useTabs=e.useTabs),(e.newLineKind===`lf`||e.newLineKind===`crlf`)&&(t.endOfLine=e.newLineKind),n.quoteStyle&&(t.singleQuote=String(n.quoteStyle).includes(`Single`)||n.quoteStyle===`alwaysSingle`),n.semiColons&&(t.semi=n.semiColons!==`asi`),n.trailingCommas&&(t.trailingComma=n.trailingCommas===`always`?`all`:n.trailingCommas===`never`?`none`:`es5`);let r=[],i=[`lineWidth`,`indentWidth`,`useTabs`,`newLineKind`,`typescript`,`plugins`];for(let t of Object.keys(e))i.includes(t)||r.push(`dprint section: ${t}`);return Array.isArray(e.plugins)&&e.plugins.length&&r.push(`plugins (Oxfmt has built-in equivalents for common cases)`),{oxfmt:t,unmapped:r}}const o={id:`dprint-to-oxc`,from:`dprint`,to:`oxfmt`,description:`Migrate a dprint.json (formatter) to Oxfmt.`,detect:e=>!!i(e),run:async r=>{let o=i(r.cwd);if(!o)throw Error(`dprint-to-oxc: no dprint.json found.`);let s=a(o.config),c=s.unmapped.map(e=>({source:e,reason:`no Oxfmt equivalent`})),l=[`Source: ${e.basename(o.file)}.`];if((r.target??`files`)===`vite`){let e=t(r.cwd,{fmt:s.oxfmt});return r.write&&n.writeFileSync(e.path,e.content,`utf-8`),{id:`dprint-to-oxc`,from:`dprint`,to:`oxfmt`,written:[e.path],files:[e],oxfmt:s.oxfmt,unmapped:c,notes:[...l,"Folded into vite.config.ts (`fmt`)."]}}let u={path:e.join(r.cwd,`.oxfmtrc.json`),content:`${JSON.stringify(s.oxfmt,null,4)}\n`};return r.write&&n.writeFileSync(u.path,u.content,`utf-8`),{id:`dprint-to-oxc`,from:`dprint`,to:`oxfmt`,written:[u.path],files:[u],oxfmt:s.oxfmt,unmapped:c,notes:l}}};export{o as dprintToOx,i as findDprintConfig,a as mapDprintToOxfmt};
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingMigration } from "./types.js";
3
+ import { ToolchainMigration } from "./types.js";
4
4
  //#region packages/migrate/src/eslint.d.ts
5
5
  type Json = Record<string, any>;
6
6
  /** The ESLint config in `cwd`, preferring JSON (parseable) then JS. */
@@ -19,6 +19,6 @@ export declare function mapRuleName(name: string): {
19
19
  * migrator writes to disk, so callers only run it when writing.
20
20
  */
21
21
  export declare function runOxlintMigrate(cwd: string): Promise<Json | undefined>;
22
- export declare const eslintToOx: ToolingMigration;
22
+ export declare const eslintToOx: ToolchainMigration;
23
23
  //#endregion
24
24
  export {};
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{spawnCross as t}from"../../shared/src/run.js";import"../../shared/src/index.js";import{renderViteTarget as n}from"./vite-target.js";import r from"node:fs";const i=[`.eslintrc.json`,`.eslintrc`],a=[`eslint.config.js`,`eslint.config.mjs`,`eslint.config.cjs`,`eslint.config.ts`,`.eslintrc.js`,`.eslintrc.cjs`];function o(t){for(let n of i){let i=e.join(t,n);if(r.existsSync(i))return{file:i,json:!0}}for(let n of a){let i=e.join(t,n);if(r.existsSync(i))return{file:i,json:!1}}}function s(e){let t=Array.isArray(e)?e[0]:e;return t===2||t===`error`?`error`:t===1||t===`warn`?`warn`:`off`}function c(e){return e.startsWith(`@typescript-eslint/`)?{name:`typescript/${e.slice(19)}`,mapped:!0}:{name:e,mapped:!0}}function l(e,t,n){for(let[r,i]of Object.entries(e??{})){let e=c(r);t[e.name]=s(i),e.mapped||n.push({source:r,reason:`unknown plugin prefix`})}}function u(e,n,r){return new Promise(i=>{let a=t(e,n,{cwd:r,stdio:`inherit`});a.on(`error`,()=>i(1)),a.on(`exit`,e=>i(e??0))})}async function d(t){let n=e.join(t,`.oxlintrc.json`);if(await u(`npx`,[`--yes`,`@oxlint/migrate`],t)===0&&r.existsSync(n))try{return JSON.parse(r.readFileSync(n,`utf-8`).replace(/^\uFEFF/,``))}catch{return}}const f={id:`eslint-to-ox`,from:`eslint`,to:`oxlint`,description:`Migrate ESLint to Oxlint (JSON configs; flat configs via @oxlint/migrate --online).`,detect:e=>!!o(e),run:async t=>{let i=o(t.cwd);if(!i)throw Error(`eslint-to-ox: no ESLint config found.`);let a={},s=[],c=[`Source: ${e.basename(i.file)}.`];if(i.json)l(JSON.parse(r.readFileSync(i.file,`utf-8`).replace(/^\uFEFF/,``)).rules,a,s);else if(t.online&&t.write){let e=await d(t.cwd);e?(l(e.rules,a,s),c.push("Rules evaluated with `@oxlint/migrate` (online).")):c.push("`@oxlint/migrate` did not produce `.oxlintrc.json`; hand-map the rules.")}else t.online?c.push("Flat config: online evaluation runs `@oxlint/migrate`, which writes `.oxlintrc.json` — re-run with `--write`."):c.push("Flat config detected — re-run with `--online --write` to use `@oxlint/migrate`, or hand-map the rules.");let u={$schema:`./node_modules/oxlint/configuration_schema.json`,rules:a};if((t.target??`files`)===`vite`){let e=n(t.cwd,{lint:u});return t.write&&r.writeFileSync(e.path,e.content,`utf-8`),{id:f.id,from:`eslint`,to:`oxlint`,written:[e.path],files:[e],oxlint:u,unmapped:s,notes:[...c,"Folded into vite.config.ts (`lint`)."]}}let p={path:e.join(t.cwd,`.oxlintrc.json`),content:`${JSON.stringify(u,null,4)}\n`};return t.write&&r.writeFileSync(p.path,p.content,`utf-8`),{id:f.id,from:`eslint`,to:`oxlint`,written:[p.path],files:[p],oxlint:u,unmapped:s,notes:c}}};export{f as eslintToOx,o as findEslintConfig,c as mapRuleName,d as runOxlintMigrate};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{spawnCross as t}from"../../shared/src/run.js";import"../../shared/src/index.js";import{renderViteTarget as n}from"./vite-target.js";import r from"node:fs";const i=[`.eslintrc.json`,`.eslintrc`],a=[`eslint.config.js`,`eslint.config.mjs`,`eslint.config.cjs`,`eslint.config.ts`,`.eslintrc.js`,`.eslintrc.cjs`];function o(t){for(let n of i){let i=e.join(t,n);if(r.existsSync(i))return{file:i,json:!0}}for(let n of a){let i=e.join(t,n);if(r.existsSync(i))return{file:i,json:!1}}}function s(e){let t=Array.isArray(e)?e[0]:e;return t===2||t===`error`?`error`:t===1||t===`warn`?`warn`:`off`}function c(e){return e.startsWith(`@typescript-eslint/`)?{name:`typescript/${e.slice(19)}`,mapped:!0}:{name:e,mapped:!0}}function l(e,t,n){for(let[r,i]of Object.entries(e??{})){let e=c(r);t[e.name]=s(i),e.mapped||n.push({source:r,reason:`unknown plugin prefix`})}}function u(e,n,r){return new Promise(i=>{let a=t(e,n,{cwd:r,stdio:`inherit`});a.on(`error`,()=>i(1)),a.on(`exit`,e=>i(e??0))})}async function d(t){let n=e.join(t,`.oxlintrc.json`);if(await u(`npx`,[`--yes`,`@oxlint/migrate`],t)===0&&r.existsSync(n))try{return JSON.parse(r.readFileSync(n,`utf-8`).replace(/^\uFEFF/,``))}catch{return}}const f={id:`eslint-to-oxc`,from:`eslint`,to:`oxlint`,description:`Migrate ESLint to Oxlint (JSON configs; flat configs via @oxlint/migrate --online).`,detect:e=>!!o(e),run:async t=>{let i=o(t.cwd);if(!i)throw Error(`eslint-to-oxc: no ESLint config found.`);let a={},s=[],c=[`Source: ${e.basename(i.file)}.`];if(i.json)l(JSON.parse(r.readFileSync(i.file,`utf-8`).replace(/^\uFEFF/,``)).rules,a,s);else if(t.online&&t.write){let e=await d(t.cwd);e?(l(e.rules,a,s),c.push("Rules evaluated with `@oxlint/migrate` (online).")):c.push("`@oxlint/migrate` did not produce `.oxlintrc.json`; hand-map the rules.")}else t.online?c.push("Flat config: online evaluation runs `@oxlint/migrate`, which writes `.oxlintrc.json` — re-run with `--write`."):c.push("Flat config detected — re-run with `--online --write` to use `@oxlint/migrate`, or hand-map the rules.");let u={$schema:`./node_modules/oxlint/configuration_schema.json`,rules:a};if((t.target??`files`)===`vite`){let e=n(t.cwd,{lint:u});return t.write&&r.writeFileSync(e.path,e.content,`utf-8`),{id:f.id,from:`eslint`,to:`oxlint`,written:[e.path],files:[e],oxlint:u,unmapped:s,notes:[...c,"Folded into vite.config.ts (`lint`)."]}}let p={path:e.join(t.cwd,`.oxlintrc.json`),content:`${JSON.stringify(u,null,4)}\n`};return t.write&&r.writeFileSync(p.path,p.content,`utf-8`),{id:f.id,from:`eslint`,to:`oxlint`,written:[p.path],files:[p],oxlint:u,unmapped:s,notes:c}}};export{f as eslintToOx,o as findEslintConfig,c as mapRuleName,d as runOxlintMigrate};
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationResult, ToolingMigration, UnmappedItem } from "./types.js";
3
+ import { MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationResult, ToolchainMigration, UnmappedItem } from "./types.js";
4
4
  import { BIOME_CONFIG_FILES, biomeToOx, findBiomeConfig, readJsonc, stripJsonc } from "./biome.js";
5
5
  import { FileDiff, FileStatus, diffFiles, hasPending } from "./check.js";
6
6
  import { migrateCommands } from "./cli/index.js";
@@ -10,5 +10,6 @@ import { DEFAULT_IGNORE, OxfmtMapping, mapBiomeFormatter, mapBiomeIncludes, mapB
10
10
  import { OxlintMapping, RULE_MAP, mapBiomeToOxlint } from "./oxlint-map.js";
11
11
  import { findPrettierConfig, mapPrettierToOxfmt, prettierToOx, readPrettierIgnore } from "./prettier.js";
12
12
  import { MigrationInfo, detectMigrations, findMigration, listMigrations, migrations, runDetectedMigrations, runMigration } from "./registry.js";
13
+ import { VITE_CONFIG_FILES, ensureViteFmtIgnore, extractViteObject, findDbxConfig, findViteConfig, foldViteIntoConfig, scanLiteralObject, viteToToolchain } from "./vite.js";
13
14
  import { findTopLevelValue, matchBracket, mergeViteConfig, renderViteTarget, serializeTs, writeViteTarget } from "./vite-target.js";
14
- export { BIOME_CONFIG_FILES, DEFAULT_IGNORE, FileDiff, FileStatus, MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationInfo, MigrationResult, OxfmtMapping, OxlintMapping, RULE_MAP, ToolingMigration, UnmappedItem, biomeToOx, detectMigrations, diffFiles, dprintToOx, eslintToOx, findBiomeConfig, findDprintConfig, findEslintConfig, findMigration, findPrettierConfig, findTopLevelValue, hasPending, listMigrations, mapBiomeFormatter, mapBiomeIncludes, mapBiomeToOxfmt, mapBiomeToOxlint, mapDprintToOxfmt, mapOrganizeImports, mapPrettierToOxfmt, mapRuleName, matchBracket, mergeViteConfig, migrateCommands, migrations, prettierToOx, readJsonc, readPrettierIgnore, renderViteTarget, runDetectedMigrations, runMigration, runOxlintMigrate, serializeTs, stripJsonc, writeViteTarget };
15
+ export { BIOME_CONFIG_FILES, DEFAULT_IGNORE, FileDiff, FileStatus, MigrateTarget, MigrateTool, MigrationContext, MigrationFile, MigrationInfo, MigrationResult, OxfmtMapping, OxlintMapping, RULE_MAP, ToolchainMigration, UnmappedItem, VITE_CONFIG_FILES, biomeToOx, detectMigrations, diffFiles, dprintToOx, ensureViteFmtIgnore, eslintToOx, extractViteObject, findBiomeConfig, findDbxConfig, findDprintConfig, findEslintConfig, findMigration, findPrettierConfig, findTopLevelValue, findViteConfig, foldViteIntoConfig, hasPending, listMigrations, mapBiomeFormatter, mapBiomeIncludes, mapBiomeToOxfmt, mapBiomeToOxlint, mapDprintToOxfmt, mapOrganizeImports, mapPrettierToOxfmt, mapRuleName, matchBracket, mergeViteConfig, migrateCommands, migrations, prettierToOx, readJsonc, readPrettierIgnore, renderViteTarget, runDetectedMigrations, runMigration, runOxlintMigrate, scanLiteralObject, serializeTs, stripJsonc, viteToToolchain, writeViteTarget };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{diffFiles as e,hasPending as t}from"./check.js";import{DEFAULT_IGNORE as n,mapBiomeFormatter as r,mapBiomeIncludes as i,mapBiomeToOxfmt as a,mapOrganizeImports as o}from"./oxfmt-map.js";import{RULE_MAP as s,mapBiomeToOxlint as c}from"./oxlint-map.js";import{findTopLevelValue as l,matchBracket as u,mergeViteConfig as d,renderViteTarget as f,serializeTs as p,writeViteTarget as m}from"./vite-target.js";import{BIOME_CONFIG_FILES as h,biomeToOx as g,findBiomeConfig as _,readJsonc as v,stripJsonc as y}from"./biome.js";import{dprintToOx as b,findDprintConfig as x,mapDprintToOxfmt as S}from"./dprint.js";import{eslintToOx as C,findEslintConfig as w,mapRuleName as T,runOxlintMigrate as E}from"./eslint.js";import{findPrettierConfig as D,mapPrettierToOxfmt as O,prettierToOx as k,readPrettierIgnore as A}from"./prettier.js";import{detectMigrations as j,findMigration as M,listMigrations as N,migrations as P,runDetectedMigrations as F,runMigration as I}from"./registry.js";import{migrateCommands as L}from"./cli/index.js";export{h as BIOME_CONFIG_FILES,n as DEFAULT_IGNORE,s as RULE_MAP,g as biomeToOx,j as detectMigrations,e as diffFiles,b as dprintToOx,C as eslintToOx,_ as findBiomeConfig,x as findDprintConfig,w as findEslintConfig,M as findMigration,D as findPrettierConfig,l as findTopLevelValue,t as hasPending,N as listMigrations,r as mapBiomeFormatter,i as mapBiomeIncludes,a as mapBiomeToOxfmt,c as mapBiomeToOxlint,S as mapDprintToOxfmt,o as mapOrganizeImports,O as mapPrettierToOxfmt,T as mapRuleName,u as matchBracket,d as mergeViteConfig,L as migrateCommands,P as migrations,k as prettierToOx,v as readJsonc,A as readPrettierIgnore,f as renderViteTarget,F as runDetectedMigrations,I as runMigration,E as runOxlintMigrate,p as serializeTs,y as stripJsonc,m as writeViteTarget};
1
+ import"node:path";import"node:url";import.meta.url;import{diffFiles as e,hasPending as t}from"./check.js";import{DEFAULT_IGNORE as n,mapBiomeFormatter as r,mapBiomeIncludes as i,mapBiomeToOxfmt as a,mapOrganizeImports as o}from"./oxfmt-map.js";import{RULE_MAP as s,mapBiomeToOxlint as c}from"./oxlint-map.js";import{findTopLevelValue as l,matchBracket as u,mergeViteConfig as d,renderViteTarget as f,serializeTs as p,writeViteTarget as m}from"./vite-target.js";import{BIOME_CONFIG_FILES as h,biomeToOx as g,findBiomeConfig as _,readJsonc as v,stripJsonc as y}from"./biome.js";import{dprintToOx as b,findDprintConfig as x,mapDprintToOxfmt as S}from"./dprint.js";import{eslintToOx as C,findEslintConfig as w,mapRuleName as T,runOxlintMigrate as E}from"./eslint.js";import{findPrettierConfig as D,mapPrettierToOxfmt as O,prettierToOx as k,readPrettierIgnore as A}from"./prettier.js";import{VITE_CONFIG_FILES as j,ensureViteFmtIgnore as M,extractViteObject as N,findDbxConfig as P,findViteConfig as F,foldViteIntoConfig as I,scanLiteralObject as L,viteToToolchain as R}from"./vite.js";import{detectMigrations as z,findMigration as B,listMigrations as V,migrations as H,runDetectedMigrations as U,runMigration as W}from"./registry.js";import{migrateCommands as G}from"./cli/index.js";export{h as BIOME_CONFIG_FILES,n as DEFAULT_IGNORE,s as RULE_MAP,j as VITE_CONFIG_FILES,g as biomeToOx,z as detectMigrations,e as diffFiles,b as dprintToOx,M as ensureViteFmtIgnore,C as eslintToOx,N as extractViteObject,_ as findBiomeConfig,P as findDbxConfig,x as findDprintConfig,w as findEslintConfig,B as findMigration,D as findPrettierConfig,l as findTopLevelValue,F as findViteConfig,I as foldViteIntoConfig,t as hasPending,V as listMigrations,r as mapBiomeFormatter,i as mapBiomeIncludes,a as mapBiomeToOxfmt,c as mapBiomeToOxlint,S as mapDprintToOxfmt,o as mapOrganizeImports,O as mapPrettierToOxfmt,T as mapRuleName,u as matchBracket,d as mergeViteConfig,G as migrateCommands,H as migrations,k as prettierToOx,v as readJsonc,A as readPrettierIgnore,f as renderViteTarget,U as runDetectedMigrations,W as runMigration,E as runOxlintMigrate,L as scanLiteralObject,p as serializeTs,y as stripJsonc,R as viteToToolchain,m as writeViteTarget};
@@ -1,6 +1,6 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingMigration } from "./types.js";
3
+ import { ToolchainMigration } from "./types.js";
4
4
  //#region packages/migrate/src/prettier.d.ts
5
5
  type Json = Record<string, any>;
6
6
  /** Locate a Prettier config (JSON files or the `prettier` package.json field). */
@@ -15,6 +15,6 @@ export declare function mapPrettierToOxfmt(prettier: Json): {
15
15
  oxfmt: Json;
16
16
  unmapped: string[];
17
17
  };
18
- export declare const prettierToOx: ToolingMigration;
18
+ export declare const prettierToOx: ToolchainMigration;
19
19
  //#endregion
20
20
  export {};
@@ -1,2 +1,2 @@
1
1
  import{default as e}from"node:path";import"node:url";import.meta.url;import{renderViteTarget as t}from"./vite-target.js";import n from"node:fs";const r=[`.prettierrc`,`.prettierrc.json`,`.prettierrc.jsonc`,`prettier.config.json`],i=[`printWidth`,`tabWidth`,`useTabs`,`semi`,`singleQuote`,`jsxSingleQuote`,`quoteProps`,`trailingComma`,`bracketSpacing`,`bracketSameLine`,`arrowParens`,`endOfLine`,`singleAttributePerLine`,`htmlWhitespaceSensitivity`,`vueIndentScriptAndStyle`];function a(t){for(let i of r){let r=e.join(t,i);if(n.existsSync(r)){let e=n.readFileSync(r,`utf-8`).replace(/^\uFEFF/,``);try{return{file:r,config:JSON.parse(e)}}catch{}}}let i=e.join(t,`package.json`);if(n.existsSync(i))try{let e=JSON.parse(n.readFileSync(i,`utf-8`));if(e.prettier&&typeof e.prettier==`object`)return{file:i,config:e.prettier}}catch{}}function o(t){let r=e.join(t,`.prettierignore`);return n.existsSync(r)?n.readFileSync(r,`utf-8`).split(`
2
- `).map(e=>e.trim()).filter(e=>e&&!e.startsWith(`#`)):[]}function s(e){let t={},n=[];for(let n of i)n in e&&(t[n]=e[n]);let r=Array.isArray(e.plugins)?e.plugins:[];for(let e of r)e.includes(`tailwindcss`)?t.sortTailwindcss=!0:e.includes(`packagejson`)?t.sortPackageJson=!0:n.push(`plugin: ${e}`);for(let t of Object.keys(e))!i.includes(t)&&t!==`plugins`&&t!==`overrides`&&n.push(`option: ${t}`),t===`overrides`&&n.push("option: overrides (convert to Oxfmt `overrides` manually)");return{oxfmt:t,unmapped:n}}const c={id:`prettier-to-ox`,from:`prettier`,to:`oxfmt`,description:`Migrate a Prettier config to Oxfmt (.oxfmtrc.json).`,detect:e=>!!a(e),run:async r=>{let i=a(r.cwd);if(!i)throw Error(`prettier-to-ox: no Prettier config found.`);let l=s(i.config),u=o(r.cwd);u.length&&(l.oxfmt.ignorePatterns=u);let d=l.unmapped.map(e=>({source:e,reason:`no Oxfmt equivalent`}));if((r.target??`files`)===`vite`){let a=t(r.cwd,{fmt:l.oxfmt});return r.write&&n.writeFileSync(a.path,a.content,`utf-8`),{id:c.id,from:`prettier`,to:`oxfmt`,written:[a.path],files:[a],oxfmt:l.oxfmt,unmapped:d,notes:[`Source: ${e.basename(i.file)}.`,"Folded into vite.config.ts (`fmt`)."]}}let f={path:e.join(r.cwd,`.oxfmtrc.json`),content:`${JSON.stringify(l.oxfmt,null,4)}\n`};return r.write&&n.writeFileSync(f.path,f.content,`utf-8`),{id:c.id,from:`prettier`,to:`oxfmt`,written:[f.path],files:[f],oxfmt:l.oxfmt,unmapped:d,notes:[`Source: ${e.basename(i.file)}.`]}}};export{a as findPrettierConfig,s as mapPrettierToOxfmt,c as prettierToOx,o as readPrettierIgnore};
2
+ `).map(e=>e.trim()).filter(e=>e&&!e.startsWith(`#`)):[]}function s(e){let t={},n=[];for(let n of i)n in e&&(t[n]=e[n]);let r=Array.isArray(e.plugins)?e.plugins:[];for(let e of r)e.includes(`tailwindcss`)?t.sortTailwindcss=!0:e.includes(`packagejson`)?t.sortPackageJson=!0:n.push(`plugin: ${e}`);for(let t of Object.keys(e))!i.includes(t)&&t!==`plugins`&&t!==`overrides`&&n.push(`option: ${t}`),t===`overrides`&&n.push("option: overrides (convert to Oxfmt `overrides` manually)");return{oxfmt:t,unmapped:n}}const c={id:`prettier-to-oxc`,from:`prettier`,to:`oxfmt`,description:`Migrate a Prettier config to Oxfmt (.oxfmtrc.json).`,detect:e=>!!a(e),run:async r=>{let i=a(r.cwd);if(!i)throw Error(`prettier-to-oxc: no Prettier config found.`);let l=s(i.config),u=o(r.cwd);u.length&&(l.oxfmt.ignorePatterns=u);let d=l.unmapped.map(e=>({source:e,reason:`no Oxfmt equivalent`}));if((r.target??`files`)===`vite`){let a=t(r.cwd,{fmt:l.oxfmt});return r.write&&n.writeFileSync(a.path,a.content,`utf-8`),{id:c.id,from:`prettier`,to:`oxfmt`,written:[a.path],files:[a],oxfmt:l.oxfmt,unmapped:d,notes:[`Source: ${e.basename(i.file)}.`,"Folded into vite.config.ts (`fmt`)."]}}let f={path:e.join(r.cwd,`.oxfmtrc.json`),content:`${JSON.stringify(l.oxfmt,null,4)}\n`};return r.write&&n.writeFileSync(f.path,f.content,`utf-8`),{id:c.id,from:`prettier`,to:`oxfmt`,written:[f.path],files:[f],oxfmt:l.oxfmt,unmapped:d,notes:[`Source: ${e.basename(i.file)}.`]}}};export{a as findPrettierConfig,s as mapPrettierToOxfmt,c as prettierToOx,o as readPrettierIgnore};
@@ -1,9 +1,9 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { MigrateTool, MigrationContext, MigrationResult, ToolingMigration } from "./types.js";
3
+ import { MigrateTool, MigrationContext, MigrationResult, ToolchainMigration } from "./types.js";
4
4
  //#region packages/migrate/src/registry.d.ts
5
5
  /** Every registered migration. */
6
- export declare function migrations(): ToolingMigration[];
6
+ export declare function migrations(): ToolchainMigration[];
7
7
  /** A migration summary for listings. */
8
8
  export interface MigrationInfo {
9
9
  id: string;
@@ -16,9 +16,9 @@ export interface MigrationInfo {
16
16
  /** Describe every migration, flagging which are detected in `cwd`. */
17
17
  export declare function listMigrations(cwd: string): MigrationInfo[];
18
18
  /** The migrations whose source config is present in `cwd`. */
19
- export declare function detectMigrations(cwd: string): ToolingMigration[];
19
+ export declare function detectMigrations(cwd: string): ToolchainMigration[];
20
20
  /** Find a migration by id, or by source tool. */
21
- export declare function findMigration(idOrFrom: string): ToolingMigration | undefined;
21
+ export declare function findMigration(idOrFrom: string): ToolchainMigration | undefined;
22
22
  /** Run one migration by id (or source tool name). */
23
23
  export declare function runMigration(idOrFrom: string, ctx: MigrationContext): Promise<MigrationResult>;
24
24
  /** Run every migration detected in `ctx.cwd`. */
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{biomeToOx as e}from"./biome.js";import{dprintToOx as t}from"./dprint.js";import{eslintToOx as n}from"./eslint.js";import{prettierToOx as r}from"./prettier.js";function i(){return[e,r,t,n]}function a(e){return i().map(t=>({id:t.id,from:t.from,to:t.to,description:t.description,detected:t.detect(e)}))}function o(e){return i().filter(t=>t.detect(e))}function s(e){return i().find(t=>t.id===e||t.from===e)}async function c(e,t){let n=s(e);if(!n)throw Error(`Unknown migration "${e}".`);return n.run(t)}async function l(e){let t=[];for(let n of o(e.cwd))t.push(await n.run(e));return t}export{o as detectMigrations,s as findMigration,a as listMigrations,i as migrations,l as runDetectedMigrations,c as runMigration};
1
+ import"node:path";import"node:url";import.meta.url;import{biomeToOx as e}from"./biome.js";import{dprintToOx as t}from"./dprint.js";import{eslintToOx as n}from"./eslint.js";import{prettierToOx as r}from"./prettier.js";import{viteToToolchain as i}from"./vite.js";function a(){return[e,r,t,n,i]}function o(e){return a().map(t=>({id:t.id,from:t.from,to:t.to,description:t.description,detected:t.detect(e)}))}function s(e){return a().filter(t=>t.detect(e))}function c(e){return a().find(t=>t.id===e||t.from===e)}async function l(e,t){let n=c(e);if(!n)throw Error(`Unknown migration "${e}".`);return n.run(t)}async function u(e){let t=[];for(let n of s(e.cwd))t.push(await n.run(e));return t}export{s as detectMigrations,c as findMigration,o as listMigrations,a as migrations,u as runDetectedMigrations,l as runMigration};
@@ -5,12 +5,12 @@ import __tsdown_shims_url from 'node:url';
5
5
  * The migration model.
6
6
  *
7
7
  * A *migration* converts a project's tooling config from a source tool (Biome,
8
- * ESLint, Prettier, ...) to a target tool (Oxfmt / Oxlint, ie. "ox"). Migrations
8
+ * ESLint, Prettier, ...) to a target tool (Oxfmt / Oxlint, ie. "oxc"). Migrations
9
9
  * are pluggable: registering one here exposes it through the `dbx
10
10
  * migrate` CLI, the programmatic API and (over JSON) the VS Code extension.
11
11
  */
12
12
  /** A tool a migration can read from or write to. */
13
- export type MigrateTool = 'biome' | 'eslint' | 'prettier' | 'dprint' | 'oxfmt' | 'oxlint' | 'ox';
13
+ export type MigrateTool = 'biome' | 'eslint' | 'prettier' | 'dprint' | 'oxfmt' | 'oxlint' | 'oxc' | 'vite' | 'toolchain';
14
14
  /** Where a migration writes its result. */
15
15
  export type MigrateTarget = 'files' | 'vite';
16
16
  export interface MigrationContext {
@@ -58,8 +58,8 @@ export interface MigrationResult {
58
58
  notes?: string[];
59
59
  }
60
60
  /** A pluggable config migration. */
61
- export interface ToolingMigration {
62
- /** Stable id, eg. `biome-to-ox`. */
61
+ export interface ToolchainMigration {
62
+ /** Stable id, eg. `biome-to-oxc`. */
63
63
  id: string;
64
64
  /** The source tool. */
65
65
  from: MigrateTool;
@@ -0,0 +1,52 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainMigration } from "./types.js";
4
+ //#region packages/migrate/src/vite.d.ts
5
+ /** The root Vite config file names, in priority order. */
6
+ export declare const VITE_CONFIG_FILES: readonly ['vite.config.ts', 'vite.config.mts', 'vite.config.js', 'vite.config.mjs'];
7
+ /** The Vite config in `cwd`, if present. */
8
+ export declare function findViteConfig(cwd: string): string | undefined;
9
+ /** The nearest `dbx.config.*` in `cwd`, if present. */
10
+ export declare function findDbxConfig(cwd: string): string | undefined;
11
+ /**
12
+ * Extract the object literal passed to `defineConfig(...)`, or the
13
+ * default-exported object when there is no `defineConfig`.
14
+ */
15
+ export declare function extractViteObject(source: string): {
16
+ text: string;
17
+ } | {
18
+ error: string;
19
+ };
20
+ /**
21
+ * Whether `text` (an object literal, braces included) is made only of literals:
22
+ * objects, arrays, strings, numbers, booleans, `null`/`undefined` and bare keys.
23
+ * Any other identifier (a variable, import, plugin call), spread or template
24
+ * literal makes it non-foldable.
25
+ */
26
+ export declare function scanLiteralObject(text: string): {
27
+ ok: true;
28
+ } | {
29
+ ok: false;
30
+ reason: string;
31
+ };
32
+ /**
33
+ * Fold `objectText` into the `toolchain.vite` of a `dbx.config.*` source by
34
+ * text-splicing (inserting or replacing the `vite` value), never rewriting the
35
+ * whole file. Returns the new source, or an error when the `toolchain` object
36
+ * cannot be located.
37
+ */
38
+ export declare function foldViteIntoConfig(source: string, objectText: string): {
39
+ content: string;
40
+ } | {
41
+ error: string;
42
+ };
43
+ /**
44
+ * Ensure `fmt.ignorePatterns` contains `'/vite.config.ts'` in a folded Vite
45
+ * object literal, so Oxfmt does not reformat the generated root `vite.config.ts`
46
+ * shim (which would make `dbx sync --check` drift). Works on the object text
47
+ * (braces included) with the same balanced scanner used to fold it in.
48
+ */
49
+ export declare function ensureViteFmtIgnore(objectText: string): string;
50
+ /** Fold a hand-written root `vite.config.*` into `dbx.config.*`. */
51
+ export declare const viteToToolchain: ToolchainMigration;
52
+ //#endregion
@@ -0,0 +1,5 @@
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{CONFIG_FILE_NAMES as t}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{findTopLevelValue as n,matchBracket as r}from"./vite-target.js";import i from"node:fs";const a=[`vite.config.ts`,`vite.config.mts`,`vite.config.js`,`vite.config.mjs`];function o(t){for(let n of a){let r=e.join(t,n);if(i.existsSync(r))return r}}function s(n){for(let r of t){let t=e.join(n,r);if(i.existsSync(t))return t}}function c(e,t){let n=e[t],r=e[t+1];if(n===`/`&&r===`/`){for(;t<e.length&&e[t]!==`
2
+ `;)t++;return t}if(n===`/`&&r===`*`){for(t+=2;t<e.length&&(e[t]!==`*`||e[t+1]!==`/`);)t++;return t+2}if(n===`"`||n===`'`){let r=n;for(t++;t<e.length&&e[t]!==r;)e[t]===`\\`&&t++,t++;return t+1}return t}function l(e,t){let n=e.lastIndexOf(`
3
+ `,t-1)+1;return e.slice(n).match(/^[ \t]*/)?.[0]??``}function u(e,t){return e.split(`
4
+ `).map((e,n)=>n===0?e:`${t}${e}`).join(`
5
+ `)}function d(e){let t=e.match(/\bdefineConfig\s*\(/),n=0;if(t&&t.index!==void 0)n=t.index+t[0].length;else{let t=e.match(/export\s+default\s*/);if(!t||t.index===void 0)return;n=t.index+t[0].length}let i=n;for(;i<e.length&&e[i]!==`{`;)i++;if(i>=e.length)return;let a=r(e,i);return a===-1?void 0:[i,a]}function f(e){let t=e.match(/\bdefineConfig\s*\(/),n=-1;if(t&&t.index!==void 0)n=t.index+t[0].length;else{let t=e.match(/export\s+default\s*/);t&&t.index!==void 0&&(n=t.index+t[0].length)}if(n===-1)return{error:"no `defineConfig(...)` call or default-exported object found"};for(;n<e.length&&/\s/.test(e[n]);)n++;if(e[n]!==`{`)return{error:`the config value is not an object literal (it is a variable or an expression)`};let i=r(e,n);return i===-1?{error:`unbalanced braces in the config object`}:{text:e.slice(n,i)}}function p(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="`")return{ok:!1,reason:`template literal`};let r=c(e,t);if(r!==t)t=r;else{if(n===`.`&&e[t+1]===`.`&&e[t+2]===`.`)return{ok:!1,reason:"spread (`...`)"};if(/[A-Za-z_$]/.test(n)){let n=t;for(;n<e.length&&/[\w$]/.test(e[n]);)n++;let r=e.slice(t,n),i=n;for(;i<e.length&&/\s/.test(e[i]);)i++;if(e[i]!==`:`&&![`true`,`false`,`null`,`undefined`].includes(r))return{ok:!1,reason:`non-literal value \`${r}\``};t=n}else t++}}return{ok:!0}}function m(e,t){let r=d(e);if(!r)return{error:`could not locate the config root object`};let[i,a]=r,o=n(e,i,a,`toolchain`);if(!o)return{error:"the config has no `toolchain` object to add `vite` to"};let[s,c]=o,f=n(e,s,c,`vite`);if(f){let[n,r]=f,i=u(t,l(e,n));return{content:`${e.slice(0,n)}${i}${e.slice(r)}`}}let p=`${l(e,s)} `,m=u(t,p);return{content:`${e.slice(0,s+1)}\n${p}vite: ${m},${e.slice(s+1)}`}}const h=`/vite.config.ts`;function g(e){let t=e.indexOf(`{`);if(t===-1)return e;let i=r(e,t);if(i===-1)return e;let a=`'${h}'`,o=n(e,t,i,`fmt`);if(o&&e[o[0]]===`{`&&e[o[1]-1]===`}`){let[t,r]=o,i=n(e,t,r,`ignorePatterns`);if(i){let[t,n]=i;return e.slice(t,n).includes(h)?e:e[t]===`[`?`${e.slice(0,t+1)}${a}, ${e.slice(t+1)}`:`${e.slice(0,t)}[${a}]${e.slice(n)}`}return`${e.slice(0,t+1)} ignorePatterns: [${a}],${e.slice(t+1)}`}return o?`${e.slice(0,o[0])}{ ignorePatterns: [${a}] }${e.slice(o[1])}`:`${e.slice(0,t+1)} fmt: { ignorePatterns: [${a}] },${e.slice(t+1)}`}const _={id:`vite-to-toolchain`,from:`vite`,to:`toolchain`,description:"Fold a hand-written root vite.config.* into dbx.config.* (`toolchain.vite`).",detect:e=>!!o(e),run:async t=>{let n=o(t.cwd);if(!n)throw Error(`vite-to-toolchain: no vite.config.* found.`);let r=i.readFileSync(n,`utf-8`).replace(/^\uFEFF/,``),a=[`Source: ${e.basename(n)}.`],c=[],l=()=>({id:_.id,from:`vite`,to:`toolchain`,written:[],files:[],unmapped:c,notes:a}),u=s(t.cwd);if(!u)return c.push({source:e.basename(n),reason:`no dbx.config.* found to fold into`}),a.push(`Create a dbx.config.* first, then re-run this migration.`),l();if(u.endsWith(`.json`))return c.push({source:e.basename(u),reason:`JSON configs cannot hold the extracted object by text-splice`}),a.push(`Fold into the JSON config by hand.`),l();let d=f(r);if(`error`in d)return c.push({source:e.basename(n),reason:d.error}),a.push(`Left vite.config.* unchanged; fold it by hand.`),l();let v=p(d.text);if(!v.ok)return c.push({source:e.basename(n),reason:`cannot fold faithfully (${v.reason})`}),a.push(`The config references helpers/imports or non-literal expressions; fold it by hand.`),l();let y=m(i.readFileSync(u,`utf-8`).replace(/^\uFEFF/,``),g(d.text));if(`error`in y)return c.push({source:e.basename(u),reason:y.error}),a.push("Left dbx.config.* unchanged; fold `toolchain.vite` in by hand."),l();let b={path:u,content:y.content};return t.write&&i.writeFileSync(u,b.content,`utf-8`),a.push(`Folded into \`toolchain.vite\` (${e.basename(u)}); added \`${h}\` to \`fmt.ignorePatterns\`; run \`dbx sync\` to regenerate vite.config.ts.`),{id:_.id,from:`vite`,to:`toolchain`,written:[u],files:[b],notes:a}}};export{a as VITE_CONFIG_FILES,g as ensureViteFmtIgnore,f as extractViteObject,s as findDbxConfig,o as findViteConfig,m as foldViteIntoConfig,p as scanLiteralObject,_ as viteToToolchain};
@@ -1,8 +1,8 @@
1
1
  import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
- import { ToolingCommand } from "../../../shared/src/types.js";
3
+ import { ToolchainCommand } from "../../../shared/src/types.js";
4
4
  import "../../../shared/src/index.js";
5
5
  //#region packages/project/src/cli/index.d.ts
6
6
  /** Build the project scaffolding commands. */
7
- export declare function projectCommands(): ToolingCommand[];
7
+ export declare function projectCommands(): ToolchainCommand[];
8
8
  //#endregion
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{readJsonAt as t}from"../../shared/src/fs-utils.js";import"../../shared/src/index.js";import{detectProjectType as n}from"../../core/src/project-type.js";import{selectProjects as r}from"../../core/src/select.js";import"../../core/src/index.js";import{renderToolingConfig as i}from"./typescript.js";import a from"node:fs";const o=`dbx.config.ts`;function s(t,n){if(!t)return{name:e.basename(n)};let r=t.match(/^(@[^/]+)\/(.+)$/);return r?.[1]&&r[2]?{name:r[2],scope:r[1]}:{name:t}}function c(c){let l=c.dryRun??!1,u=c.force??!1,d=r({root:c.root,...c.include?{include:c.include}:{},...c.exclude?{exclude:c.exclude}:{},...c.maxDepth===void 0?{}:{maxDepth:c.maxDepth}}),f=[],p=[],m=[];for(let r of d){let d=e.join(r.dir,o);if((r.hasConfig||a.existsSync(d))&&!u){m.push(r.rel),f.push({dir:r.dir,rel:r.rel,...r.name?{name:r.name}:{},type:c.type??n(r.dir),configPath:d,created:!1,skipped:`has config`});continue}let h=c.type??n(r.dir),g=t(r.dir,`package.json`),{name:_,scope:v}=s(r.name??g?.name,r.dir),y=i({name:_,...v?{scope:v}:{},type:h});l||a.writeFileSync(d,y,`utf-8`),p.push(r.rel),f.push({dir:r.dir,rel:r.rel,...r.name?{name:r.name}:{},type:h,configPath:d,created:!0})}return{configs:f,created:p,skipped:m,dryRun:l}}export{o as GENERATED_CONFIG_FILENAME,c as generateProjectConfigs};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{readJsonAt as t}from"../../shared/src/fs-utils.js";import"../../shared/src/index.js";import{detectProjectType as n}from"../../core/src/project-type.js";import{selectProjects as r}from"../../core/src/select.js";import"../../core/src/index.js";import{renderToolchainConfig as i}from"./typescript.js";import a from"node:fs";const o=`dbx.config.ts`;function s(t,n){if(!t)return{name:e.basename(n)};let r=t.match(/^(@[^/]+)\/(.+)$/);return r?.[1]&&r[2]?{name:r[2],scope:r[1]}:{name:t}}function c(c){let l=c.dryRun??!1,u=c.force??!1,d=r({root:c.root,...c.include?{include:c.include}:{},...c.exclude?{exclude:c.exclude}:{},...c.maxDepth===void 0?{}:{maxDepth:c.maxDepth}}),f=[],p=[],m=[];for(let r of d){let d=e.join(r.dir,o);if((r.hasConfig||a.existsSync(d))&&!u){m.push(r.rel),f.push({dir:r.dir,rel:r.rel,...r.name?{name:r.name}:{},type:c.type??n(r.dir),configPath:d,created:!1,skipped:`has config`});continue}let h=c.type??n(r.dir),g=t(r.dir,`package.json`),{name:_,scope:v}=s(r.name??g?.name,r.dir),y=i({name:_,...v?{scope:v}:{},type:h});l||a.writeFileSync(d,y,`utf-8`),p.push(r.rel),f.push({dir:r.dir,rel:r.rel,...r.name?{name:r.name}:{},type:h,configPath:d,created:!0})}return{configs:f,created:p,skipped:m,dryRun:l}}export{o as GENERATED_CONFIG_FILENAME,c as generateProjectConfigs};
@@ -2,9 +2,9 @@ import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { projectCommands } from "./cli/index.js";
4
4
  import { GENERATED_CONFIG_FILENAME, GenerateProjectConfigsOptions, GenerateProjectConfigsResult, GeneratedProjectConfig, generateProjectConfigs } from "./config.js";
5
- import { MonorepoRootContext, ProjectContext, WorkspaceContext, createMonorepoRootFiles, createRootProjectFiles, createWorkspaceFiles, renderGitignore, renderToolingConfig, renderTurboJson, renderWorkspaceTsconfig, writeGeneratedFiles } from "./typescript.js";
5
+ import { MonorepoRootContext, ProjectContext, WorkspaceContext, createMonorepoRootFiles, createRootProjectFiles, createWorkspaceFiles, renderGitignore, renderToolchainConfig, renderTurboJson, renderWorkspaceTsconfig, writeGeneratedFiles } from "./typescript.js";
6
6
  declare namespace index_d_exports {
7
- export { GENERATED_CONFIG_FILENAME, GenerateProjectConfigsOptions, GenerateProjectConfigsResult, GeneratedProjectConfig, MonorepoRootContext, ProjectContext, WorkspaceContext, createMonorepoRootFiles, createRootProjectFiles, createWorkspaceFiles, generateProjectConfigs, projectCommands, renderGitignore, renderToolingConfig, renderTurboJson, renderWorkspaceTsconfig, writeGeneratedFiles };
7
+ export { GENERATED_CONFIG_FILENAME, GenerateProjectConfigsOptions, GenerateProjectConfigsResult, GeneratedProjectConfig, MonorepoRootContext, ProjectContext, WorkspaceContext, createMonorepoRootFiles, createRootProjectFiles, createWorkspaceFiles, generateProjectConfigs, projectCommands, renderGitignore, renderToolchainConfig, renderTurboJson, renderWorkspaceTsconfig, writeGeneratedFiles };
8
8
  }
9
9
  //#endregion
10
- export { GENERATED_CONFIG_FILENAME, GenerateProjectConfigsOptions, GenerateProjectConfigsResult, GeneratedProjectConfig, MonorepoRootContext, ProjectContext, WorkspaceContext, createMonorepoRootFiles, createRootProjectFiles, createWorkspaceFiles, generateProjectConfigs, index_d_exports, projectCommands, renderGitignore, renderToolingConfig, renderTurboJson, renderWorkspaceTsconfig, writeGeneratedFiles };
10
+ export { GENERATED_CONFIG_FILENAME, GenerateProjectConfigsOptions, GenerateProjectConfigsResult, GeneratedProjectConfig, MonorepoRootContext, ProjectContext, WorkspaceContext, createMonorepoRootFiles, createRootProjectFiles, createWorkspaceFiles, generateProjectConfigs, index_d_exports, projectCommands, renderGitignore, renderToolchainConfig, renderTurboJson, renderWorkspaceTsconfig, writeGeneratedFiles };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{createMonorepoRootFiles as t,createRootProjectFiles as n,createWorkspaceFiles as r,renderGitignore as i,renderToolingConfig as a,renderTurboJson as o,renderWorkspaceTsconfig as s,writeGeneratedFiles as c}from"./typescript.js";import{GENERATED_CONFIG_FILENAME as l,generateProjectConfigs as u}from"./config.js";import{projectCommands as d}from"./cli/index.js";var f=/* @__PURE__ */ e({GENERATED_CONFIG_FILENAME:()=>l,createMonorepoRootFiles:()=>t,createRootProjectFiles:()=>n,createWorkspaceFiles:()=>r,generateProjectConfigs:()=>u,projectCommands:()=>d,renderGitignore:()=>i,renderToolingConfig:()=>a,renderTurboJson:()=>o,renderWorkspaceTsconfig:()=>s,writeGeneratedFiles:()=>c});export{l as GENERATED_CONFIG_FILENAME,t as createMonorepoRootFiles,n as createRootProjectFiles,r as createWorkspaceFiles,u as generateProjectConfigs,d as projectCommands,i as renderGitignore,a as renderToolingConfig,o as renderTurboJson,s as renderWorkspaceTsconfig,f as src_exports,c as writeGeneratedFiles};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{createMonorepoRootFiles as t,createRootProjectFiles as n,createWorkspaceFiles as r,renderGitignore as i,renderToolchainConfig as a,renderTurboJson as o,renderWorkspaceTsconfig as s,writeGeneratedFiles as c}from"./typescript.js";import{GENERATED_CONFIG_FILENAME as l,generateProjectConfigs as u}from"./config.js";import{projectCommands as d}from"./cli/index.js";var f=/* @__PURE__ */ e({GENERATED_CONFIG_FILENAME:()=>l,createMonorepoRootFiles:()=>t,createRootProjectFiles:()=>n,createWorkspaceFiles:()=>r,generateProjectConfigs:()=>u,projectCommands:()=>d,renderGitignore:()=>i,renderToolchainConfig:()=>a,renderTurboJson:()=>o,renderWorkspaceTsconfig:()=>s,writeGeneratedFiles:()=>c});export{l as GENERATED_CONFIG_FILENAME,t as createMonorepoRootFiles,n as createRootProjectFiles,r as createWorkspaceFiles,u as generateProjectConfigs,d as projectCommands,i as renderGitignore,a as renderToolchainConfig,o as renderTurboJson,s as renderWorkspaceTsconfig,f as src_exports,c as writeGeneratedFiles};
@@ -34,7 +34,7 @@ export interface ProjectContext {
34
34
  * `project.type` lets the sync know whether the folder is a monorepo root, a
35
35
  * workspace, or a single project.
36
36
  */
37
- export declare function renderToolingConfig(ctx: ProjectContext & {
37
+ export declare function renderToolchainConfig(ctx: ProjectContext & {
38
38
  type: ProjectType;
39
39
  }): string;
40
40
  /** A minimal tsconfig.json that extends the default template. */
@@ -19,4 +19,4 @@ export default defineConfig({
19
19
  entry: { index: 'src/index.ts' },
20
20
  });
21
21
  `}]}function m(){return c({$schema:`https://turborepo.dev/schema.json`,ui:`stream-with-experimental-timestamps`,globalDependencies:[`tsconfig.json`,`tsconfig.base.json`,`tsdown.config.ts`,`yarn.lock`],globalPassThroughEnv:[`NODE_ENV`,`VITE_*`],tasks:{build:{inputs:[`$TURBO_DEFAULT$`,`.env*`],outputs:[`dist/**`],dependsOn:[`^lint`,`^typecheck`,`^test`,`^build`]},format:{dependsOn:[`^format`]},lint:{dependsOn:[`^lint`]},typecheck:{dependsOn:[`^typecheck`]},test:{dependsOn:[`^test`]}}})}function h(){return[`node_modules/`,`dist/`,`coverage/`,`.turbo/`,`*.tsbuildinfo`,``,`.env`,`.env.*`,`!.env.example`,`!.env.example.*`,``,`.DS_Store`,``,`# Yarn 4`,`.pnp.*`,`.yarn/*`,`!.yarn/patches`,`!.yarn/plugins`,`!.yarn/releases`,`!.yarn/sdks`,`!.yarn/versions`,``].join(`
22
- `)}function g(t,n=process.cwd()){let r=[];for(let i of t){let t=e.resolve(n,i.path);o.mkdirSync(e.dirname(t),{recursive:!0}),o.writeFileSync(t,i.content,`utf-8`),r.push(t)}return r}export{f as createMonorepoRootFiles,d as createRootProjectFiles,p as createWorkspaceFiles,h as renderGitignore,l as renderToolingConfig,m as renderTurboJson,u as renderWorkspaceTsconfig,g as writeGeneratedFiles};
22
+ `)}function g(t,n=process.cwd()){let r=[];for(let i of t){let t=e.resolve(n,i.path);o.mkdirSync(e.dirname(t),{recursive:!0}),o.writeFileSync(t,i.content,`utf-8`),r.push(t)}return r}export{f as createMonorepoRootFiles,d as createRootProjectFiles,p as createWorkspaceFiles,h as renderGitignore,l as renderToolchainConfig,m as renderTurboJson,u as renderWorkspaceTsconfig,g as writeGeneratedFiles};