@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
@@ -4,25 +4,160 @@ import { Replacements } from "../../shared/src/template.js";
4
4
  import { SyncTask } from "../../shared/src/toolchain.js";
5
5
  import "../../shared/src/index.js";
6
6
  declare namespace index_d_exports {
7
- export { biomeConfig, biomeSyncTask, biomeVscodeSettings, mergeBiomeConfig, renderBiomeConfig, renderBiomeJson, renderVscodeSettings };
7
+ export { BIOME_REMOVE_PREFIX, BIOME_RESET, biomeConfig, biomeSyncTask, biomeVscodeSettings, mergeBiomeConfig, removeBiomeEntry, renderBiomeConfig, renderBiomeJson, renderVscodeSettings, resolveBiomeArray };
8
8
  }
9
9
  /** The generic Biome configuration (with `{{name}}` / `{{scope}}` tokens). */
10
- export declare const biomeConfig: Record<string, unknown>;
10
+ export declare const biomeConfig: {
11
+ $schema: string;
12
+ vcs: {
13
+ enabled: boolean;
14
+ clientKind: string;
15
+ useIgnoreFile: boolean;
16
+ };
17
+ files: {
18
+ includes: string[];
19
+ };
20
+ formatter: {
21
+ enabled: boolean;
22
+ formatWithErrors: boolean;
23
+ indentStyle: string;
24
+ indentWidth: number;
25
+ lineEnding: string;
26
+ lineWidth: number;
27
+ attributePosition: string;
28
+ bracketSameLine: boolean;
29
+ bracketSpacing: boolean;
30
+ expand: string;
31
+ useEditorconfig: boolean;
32
+ includes: string[];
33
+ };
34
+ linter: {
35
+ enabled: boolean;
36
+ rules: {
37
+ a11y: {
38
+ useAltText: string;
39
+ useAriaPropsForRole: string;
40
+ useButtonType: string;
41
+ useFocusableInteractive: string;
42
+ useKeyWithClickEvents: string;
43
+ useSemanticElements: string;
44
+ noStaticElementInteractions: string;
45
+ noSvgWithoutTitle: string;
46
+ noLabelWithoutControl: string;
47
+ };
48
+ complexity: {
49
+ noBannedTypes: string;
50
+ noImportantStyles: string;
51
+ noUselessEscapeInRegex: string;
52
+ noUselessEmptyExport: string;
53
+ noStaticOnlyClass: string;
54
+ };
55
+ correctness: {
56
+ noConstantCondition: string;
57
+ noInnerDeclarations: string;
58
+ noUnusedFunctionParameters: string;
59
+ noUnusedImports: string;
60
+ noUnusedVariables: string;
61
+ noSwitchDeclarations: string;
62
+ useExhaustiveDependencies: string;
63
+ };
64
+ performance: {
65
+ noAccumulatingSpread: string;
66
+ };
67
+ style: {
68
+ useExponentiationOperator: string;
69
+ noNonNullAssertion: string;
70
+ useNodejsImportProtocol: string;
71
+ useTemplate: string;
72
+ };
73
+ suspicious: {
74
+ noAssignInExpressions: string;
75
+ noDoubleEquals: string;
76
+ noExplicitAny: string;
77
+ noImplicitAnyLet: string;
78
+ noUnknownAtRules: {
79
+ level: string;
80
+ options: {
81
+ ignore: string[];
82
+ };
83
+ };
84
+ noUselessEscapeInString: string;
85
+ };
86
+ };
87
+ };
88
+ javascript: {
89
+ formatter: {
90
+ jsxQuoteStyle: string;
91
+ quoteProperties: string;
92
+ trailingCommas: string;
93
+ semicolons: string;
94
+ arrowParentheses: string;
95
+ bracketSameLine: boolean;
96
+ quoteStyle: string;
97
+ attributePosition: string;
98
+ bracketSpacing: boolean;
99
+ };
100
+ };
101
+ css: {
102
+ parser: {
103
+ tailwindDirectives: boolean;
104
+ };
105
+ };
106
+ html: {
107
+ formatter: {
108
+ indentScriptAndStyle: boolean;
109
+ selfCloseVoidElements: string;
110
+ };
111
+ };
112
+ assist: {
113
+ enabled: boolean;
114
+ actions: {
115
+ source: {
116
+ organizeImports: {
117
+ level: string;
118
+ options: {
119
+ groups: (string | string[])[];
120
+ };
121
+ };
122
+ };
123
+ };
124
+ };
125
+ };
11
126
  /** The recommended Biome VS Code settings. */
12
- export declare const biomeVscodeSettings: Record<string, unknown>;
127
+ export declare const biomeVscodeSettings: {
128
+ "biome.lsp.watcher.kind": string;
129
+ };
130
+ /**
131
+ * Array directive that removes an entry from the base array during the merge.
132
+ * The value after the prefix is JSON (or a raw string when it is not valid
133
+ * JSON), so nested groups can be targeted with `$remove:["a","b"]`.
134
+ */
135
+ export declare const BIOME_REMOVE_PREFIX = "$remove:";
136
+ /** Array directive that drops the base array before the patch entries are added. */
137
+ export declare const BIOME_RESET = "$reset";
138
+ /** Build the directive that removes `entry` from the default array. */
139
+ export declare function removeBiomeEntry(entry: unknown): string;
140
+ /**
141
+ * Resolve the array directives in `patch` against `base`: `$remove:` entries
142
+ * prune matching base entries, `$reset` drops the base array, and the remaining
143
+ * entries are unioned on top. Directives never appear in the result.
144
+ */
145
+ export declare function resolveBiomeArray(base: readonly unknown[], patch: readonly unknown[]): unknown[];
13
146
  /**
14
147
  * Merge an override over a base config: object keys merge recursively and
15
- * arrays are unioned (so `files.includes` can be extended, not replaced).
148
+ * arrays are unioned, with `$remove:` / `$reset` directives resolved first so
149
+ * defaults can be pruned or replaced (see {@link resolveBiomeArray}).
16
150
  */
17
151
  export declare function mergeBiomeConfig(base: unknown, patch: unknown): unknown;
18
152
  /**
19
153
  * Render the Biome config for a project by resolving its replacement tokens
20
154
  * (`{{name}}` = unscoped project name, `{{scope}}` = npm scope, eg. `@acme`)
21
- * and merging the consumer's `overrides` over the defaults.
155
+ * and merging the consumer's `overrides` over the defaults. Pass several
156
+ * patches to apply them in order (later patches see earlier results).
22
157
  */
23
- export declare function renderBiomeConfig(replacements?: Replacements, overrides?: Record<string, unknown>): Record<string, unknown>;
158
+ export declare function renderBiomeConfig(replacements?: Replacements, overrides?: Record<string, unknown> | Record<string, unknown>[]): Record<string, unknown>;
24
159
  /** Serialize the rendered Biome config to JSON text. */
25
- export declare function renderBiomeJson(replacements?: Replacements, overrides?: Record<string, unknown>, indent?: number): string;
160
+ export declare function renderBiomeJson(replacements?: Replacements, overrides?: Record<string, unknown> | Record<string, unknown>[], indent?: number): string;
26
161
  /** Serialize the recommended VS Code settings to JSON text. */
27
162
  export declare function renderVscodeSettings(indent?: number): string;
28
163
  /**
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{isPlainObject as t}from"../../shared/src/object-utils.js";import{applyReplacementsDeep as n}from"../../shared/src/template.js";import{sectionConfig as r,sectionEnabled as i}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import a from"./config.js";import o from"./vscode-settings.js";var s=/* @__PURE__ */ e({biomeConfig:()=>c,biomeSyncTask:()=>g,biomeVscodeSettings:()=>l,mergeBiomeConfig:()=>u,renderBiomeConfig:()=>f,renderBiomeJson:()=>p,renderVscodeSettings:()=>m});const c=a,l=o;function u(e,n){if(Array.isArray(e)&&Array.isArray(n))return[.../* @__PURE__ */ new Set([...e,...n])];if(t(e)&&t(n)){let t={...e};for(let[e,r]of Object.entries(n))t[e]=e in t?u(t[e],r):r;return t}return n}function d(e,n){return n.scope?e:Array.isArray(e)?e.filter(e=>e!==`{{scope}}`&&e!==`{{scope}}/**`&&e!==`!{{scope}}/**`).map(e=>d(e,n)):t(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,d(t,n)])):e}function f(e={},t={}){return u(n(d(c,e),e),n(d(t,e),e))}function p(e={},t={},n=4){return`${JSON.stringify(f(e,t),null,n)}\n`}function m(e=4){return`${JSON.stringify(l,null,e)}\n`}function h(e){let n=(i(e.biome)?r(e.biome):void 0)?.overrides??{},a=i(e.fmt)?r(e.fmt)?.biome:void 0,o=i(e.lint)?r(e.lint)?.biome:void 0;return t(a)&&(n=u(n,a)),t(o)&&(n=u(n,o)),n}function g(){return{name:`biome`,projectTypes:[`monorepo-root`,`monorepo-workspace`,`project`],enabled:e=>{let t=i(e.fmt)?r(e.fmt):void 0,n=i(e.lint)?r(e.lint):void 0;return i(e.biome)||t?.biome!==void 0&&t.biome!==!1||n?.biome!==void 0&&n.biome!==!1},run:e=>{let t=i(e.config.fmt)?r(e.config.fmt):void 0,n=i(e.config.lint)?r(e.config.lint):void 0;return!i(e.config.biome)&&(t?.biome===void 0||t.biome===!1)&&(n?.biome===void 0||n.biome===!1)?[]:[{path:`biome.json`,content:p(e.tokens,h(e.config))}]}}}export{c as biomeConfig,g as biomeSyncTask,l as biomeVscodeSettings,u as mergeBiomeConfig,f as renderBiomeConfig,p as renderBiomeJson,m as renderVscodeSettings,s as src_exports};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{isPlainObject as t}from"../../shared/src/object-utils.js";import{applyReplacementsDeep as n}from"../../shared/src/template.js";import{sectionConfig as r,sectionEnabled as i}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import a from"./config.js";import o from"./vscode-settings.js";var s=/* @__PURE__ */ e({BIOME_REMOVE_PREFIX:()=>u,BIOME_RESET:()=>d,biomeConfig:()=>c,biomeSyncTask:()=>S,biomeVscodeSettings:()=>l,mergeBiomeConfig:()=>g,removeBiomeEntry:()=>f,renderBiomeConfig:()=>v,renderBiomeJson:()=>y,renderVscodeSettings:()=>b,resolveBiomeArray:()=>h});const c=a,l=o,u=`$remove:`,d=`$reset`;function f(e){return`${u}${JSON.stringify(e)}`}function p(e){try{return JSON.parse(e)}catch{return e}}function m(e,n){if(Object.is(e,n))return!0;if(Array.isArray(e)&&Array.isArray(n))return e.length===n.length&&e.every((e,t)=>m(e,n[t]));if(t(e)&&t(n)){let t=Object.keys(e),r=Object.keys(n);return t.length===r.length&&t.every(t=>t in n&&m(e[t],n[t]))}return!1}function h(e,t){let n=[],r=[],i=!1;for(let e of t)e===`$reset`?i=!0:typeof e==`string`&&e.startsWith(`$remove:`)?n.push(p(e.slice(8))):r.push(e);let a=(i?[]:e).filter(e=>!n.some(t=>m(e,t)));return[.../* @__PURE__ */ new Set([...a,...r])]}function g(e,n){if(Array.isArray(n))return h(Array.isArray(e)?e:[],n);if(t(n)){let r=t(e)?{...e}:{};for(let[e,t]of Object.entries(n))r[e]=g(r[e],t);return r}return n}function _(e,n){return n.scope?e:Array.isArray(e)?e.filter(e=>e!==`{{scope}}`&&e!==`{{scope}}/**`&&e!==`!{{scope}}/**`).map(e=>_(e,n)):t(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,_(t,n)])):e}function v(e={},t={}){let r=n(_(c,e),e),i=Array.isArray(t)?t:[t];for(let t of i){let i=n(_(t,e),e);r=g(r,i)}return r}function y(e={},t={},n=4){return`${JSON.stringify(v(e,t),null,n)}\n`}function b(e=4){return`${JSON.stringify(l,null,e)}\n`}function x(e){let n=[],a=i(e.biome)?r(e.biome):void 0,o=i(e.fmt)?r(e.fmt)?.biome:void 0,s=i(e.lint)?r(e.lint)?.biome:void 0;return t(a?.overrides)&&n.push(a.overrides),t(o)&&n.push(o),t(s)&&n.push(s),n}function S(){return{name:`biome`,projectTypes:[`monorepo-root`,`monorepo-workspace`,`project`],enabled:e=>{let t=i(e.fmt)?r(e.fmt):void 0,n=i(e.lint)?r(e.lint):void 0;return i(e.biome)||t?.biome!==void 0&&t.biome!==!1||n?.biome!==void 0&&n.biome!==!1},run:e=>{let t=i(e.config.fmt)?r(e.config.fmt):void 0,n=i(e.config.lint)?r(e.config.lint):void 0;return!i(e.config.biome)&&(t?.biome===void 0||t.biome===!1)&&(n?.biome===void 0||n.biome===!1)?[]:[{path:`biome.json`,content:y(e.tokens,x(e.config))}]}}}export{u as BIOME_REMOVE_PREFIX,d as BIOME_RESET,c as biomeConfig,S as biomeSyncTask,l as biomeVscodeSettings,g as mergeBiomeConfig,f as removeBiomeEntry,v as renderBiomeConfig,y as renderBiomeJson,b as renderVscodeSettings,h as resolveBiomeArray,s as src_exports};
@@ -24,14 +24,28 @@ export interface Workflow {
24
24
  concurrency?: unknown;
25
25
  env?: Record<string, string>;
26
26
  jobs: Record<string, WorkflowJob>;
27
- [key: string]: unknown;
27
+ [key: string & {}]: unknown;
28
28
  }
29
29
  /** The default replacement values for the workflow templates. */
30
- export declare const DEFAULT_WORKFLOW_TOKENS: Replacements;
31
- /** The workflow ids the builder knows about. */
32
- export type WorkflowId = 'ci' | 'changelog' | 'release' | 'sync' | 'issues';
30
+ export declare const DEFAULT_WORKFLOW_TOKENS: {
31
+ readonly nodeVersion: '22';
32
+ readonly yarnVersion: '4.17.1';
33
+ readonly packageManager: 'yarn';
34
+ readonly mainBranch: 'main';
35
+ readonly devBranch: 'main';
36
+ readonly tooling: 'dbx';
37
+ readonly commitlintConfig: 'commitlint.config.mjs';
38
+ };
33
39
  /** Default file name per workflow id. */
34
- export declare const WORKFLOW_FILENAMES: Record<WorkflowId, string>;
40
+ export declare const WORKFLOW_FILENAMES: {
41
+ readonly ci: 'ci.yml';
42
+ readonly changelog: 'changelog.yml';
43
+ readonly release: 'release.yml';
44
+ readonly sync: 'sync.yml';
45
+ readonly issues: 'issues.yml';
46
+ };
47
+ /** The workflow ids the builder knows about. */
48
+ export type WorkflowId = keyof typeof WORKFLOW_FILENAMES;
35
49
  /** The default directory for generated workflows. */
36
50
  export declare const DEFAULT_WORKFLOW_DIR = ".github/workflows";
37
51
  /** A complete vendor workflow (GitHub, GitLab or Azure), written as-is. */
@@ -1,5 +1,6 @@
1
- import"node:path";import"node:url";import.meta.url;import{applyReplacementsDeep as e}from"../../shared/src/template.js";import{isVendorWorkflowConfig as t}from"../../shared/src/config-schema/workflow.js";import{DEFAULT_PACKAGE_MANAGER_VERSIONS as n}from"../../shared/src/toolchain.js";import{toYaml as r}from"../../shared/src/yaml.js";import"../../shared/src/index.js";const i={nodeVersion:`22`,yarnVersion:`4.17.1`,packageManager:`yarn`,mainBranch:`main`,devBranch:`main`,tooling:`dbx`,commitlintConfig:`commitlint.config.mjs`},a={ci:`ci.yml`,changelog:`changelog.yml`,release:`release.yml`,sync:`sync.yml`,issues:`issues.yml`},o=`.github/workflows`,s=t;function c(e,t=o){let n=(e??t).replace(/\\/g,`/`).replace(/^\.?\//,``).replace(/\/+$/,``);if(/^[a-zA-Z]:/.test(n)||n.split(`/`).includes(`..`))throw Error(`invalid workflow directory "${e}" (must stay inside the project).`);return n}function l(e,t){let n=(e??t).trim();if(!n||/[\\/]/.test(n)||n===`.`||n===`..`)throw Error(`invalid workflow filename "${e}" (expected a file name).`);return n}function u(e,t,n){switch(e){case`gitlab`:return{dir:``,filename:`.gitlab-ci.yml`};case`azure`:return{dir:``,filename:`azure-pipelines.yml`};default:return{dir:o,filename:n??`${t}.yml`}}}function d(e,t,n=`${e}.yml`){let r=t&&typeof t==`object`?t:void 0,i=u(s(r)?r.provider:`github`,e,n),a=c(r?.dir,i.dir),o=l(r?.filename,i.filename);return a?`${a}/${o}`:o}function f(e){return e===void 0?!1:typeof e==`boolean`?e:typeof e==`string`?e.trim().length>0:e.enabled!==!1}function p(e){let t=String(e.packageManager??`yarn`);return String(e.packageManagerVersion??e.yarnVersion??n[t]??`4.17.1`)}function m(e){let t=e.config?.tokens??{},n={...i,...e.tokens,...t},r=t.packageManager;return r!==void 0&&r!==e.tokens.packageManager&&t.packageManagerVersion===void 0&&t.yarnVersion===void 0&&(delete n.packageManagerVersion,delete n.yarnVersion),t.packageManagerVersion===void 0&&t.yarnVersion!==void 0&&(n.packageManagerVersion=t.yarnVersion),n}function h(e,t){let n=t??String(e.tooling??`dbx`);switch(String(e.packageManager??`yarn`)){case`pnpm`:return`pnpm exec ${n}`;case`npm`:return`npx ${n}`;case`bun`:return`bunx ${n}`;default:return`${e.packageManager??`yarn`} ${n}`}}function g(e){let t=String(e.packageManager??`yarn`),n=p(e),r=[{name:`Checkout`,uses:`actions/checkout@v5`,with:{"fetch-depth":0,token:"${{ secrets.GITHUB_TOKEN }}"}},{name:`Setup Node`,uses:`actions/setup-node@v5`,with:{"node-version":String(e.nodeVersion),"package-manager-cache":!1}}];return t===`bun`?[...r,{name:`Setup Bun`,uses:`oven-sh/setup-bun@v2`,with:{"bun-version":n}},{name:`Install dependencies`,run:`bun install --frozen-lockfile`}]:t===`npm`?[...r,{name:`Install dependencies`,run:`npm install -g npm@${n}\nnpm ci`}]:[...r,{name:`Enable Corepack`,run:`corepack enable\ncorepack prepare ${t}@${n} --activate`},{name:`Install dependencies`,run:t===`pnpm`?`pnpm install --frozen-lockfile`:`yarn install --immutable`}]}function _(e,t={}){let n=h(e),r=String(e.mainBranch),i=String(e.devBranch),a=t.commitlint!==!1;return{ci:{name:`CI`,on:{push:{branches:[r]},pull_request:{branches:[`release/**`,`feat/**`,`feature/**`,`fix/**`,`chore/**`]}},jobs:{ci:{"runs-on":`ubuntu-latest`,steps:[...g(e),...a?[{name:`Commitlint (Conventional Commits)`,if:"${{ github.event_name == 'pull_request' || github.event.before != '0000000000000000000000000000000000000000' }}",run:`set -euo pipefail\nbase="\${{ github.event.pull_request.base.sha || github.event.before }}"\nhead="\${{ github.event.pull_request.head.sha || github.event.after }}"\n${h(e,`commitlint`)} --from "$base" --to "$head" --config "${e.commitlintConfig}"`}]:[],{name:`Verify generated files are in sync`,run:`${n} sync --check --recursive`},{name:`Build`,run:`${e.packageManager} build`}]}}},changelog:{name:`Changelog (dev)`,on:{push:{branches:[i]}},permissions:{contents:`write`},concurrency:{group:`changelog-dev`,"cancel-in-progress":!1},jobs:{"generate-changelog":{"runs-on":`ubuntu-latest`,if:`!startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[...g(e),{name:`Generate changelog + bump versions`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,'after="${{ github.event.after }}"; [ -n "$after" ] || after="HEAD"',`boundary="$(git log --format=%H --grep='^chore: version packages ' -1 || true)"`,`if [ -n "$boundary" ]; then range="$boundary..$after"; else range="$after"; fi`,`${n} changelog --range "$range"`].join(`
1
+ import"node:path";import"node:url";import.meta.url;import{isPlainObject as e}from"../../shared/src/object-utils.js";import{applyReplacementsDeep as t}from"../../shared/src/template.js";import{isVendorWorkflowConfig as n}from"../../shared/src/config-schema/workflow.js";import{defaultPackageManagerVersion as r}from"../../shared/src/toolchain.js";import{toYaml as i}from"../../shared/src/yaml.js";import"../../shared/src/index.js";const a={nodeVersion:`22`,yarnVersion:`4.17.1`,packageManager:`yarn`,mainBranch:`main`,devBranch:`main`,tooling:`dbx`,commitlintConfig:`commitlint.config.mjs`},o={ci:`ci.yml`,changelog:`changelog.yml`,release:`release.yml`,sync:`sync.yml`,issues:`issues.yml`},s=`.github/workflows`,c=n;function l(e,t=s){let n=(e??t).replace(/\\/g,`/`).replace(/^\.?\//,``).replace(/\/+$/,``);if(/^[a-zA-Z]:/.test(n)||n.split(`/`).includes(`..`))throw Error(`invalid workflow directory "${e}" (must stay inside the project).`);return n}function u(e,t){let n=(e??t).trim();if(!n||/[\\/]/.test(n)||n===`.`||n===`..`)throw Error(`invalid workflow filename "${e}" (expected a file name).`);return n}function d(e,t,n){switch(e){case`gitlab`:return{dir:``,filename:`.gitlab-ci.yml`};case`azure`:return{dir:``,filename:`azure-pipelines.yml`};default:return{dir:s,filename:n??`${t}.yml`}}}function f(e,t,n=`${e}.yml`){let r=t&&typeof t==`object`?t:void 0,i=d(c(r)?r.provider:`github`,e,n),a=l(r?.dir,i.dir),o=u(r?.filename,i.filename);return a?`${a}/${o}`:o}function p(e){return e===void 0?!1:typeof e==`boolean`?e:typeof e==`string`?e.trim().length>0:e.enabled!==!1}function m(e){let t=String(e.packageManager??`yarn`);return String(e.packageManagerVersion??e.yarnVersion??r(t)??`4.17.1`)}function h(e){let t=e.config?.tokens??{},n={...a,...e.tokens,...t},r=t.packageManager;return r!==void 0&&r!==e.tokens.packageManager&&t.packageManagerVersion===void 0&&t.yarnVersion===void 0&&(delete n.packageManagerVersion,delete n.yarnVersion),t.packageManagerVersion===void 0&&t.yarnVersion!==void 0&&(n.packageManagerVersion=t.yarnVersion),n}function g(e,t){let n=t??String(e.tooling??`dbx`);switch(String(e.packageManager??`yarn`)){case`pnpm`:return`pnpm exec ${n}`;case`npm`:return`npx ${n}`;case`bun`:return`bunx ${n}`;default:return`${e.packageManager??`yarn`} ${n}`}}function _(e){let t=String(e.packageManager??`yarn`),n=m(e),r=[{name:`Checkout`,uses:`actions/checkout@v5`,with:{"fetch-depth":0,token:"${{ secrets.GITHUB_TOKEN }}"}},{name:`Setup Node`,uses:`actions/setup-node@v5`,with:{"node-version":String(e.nodeVersion),"package-manager-cache":!1}}];return t===`bun`?[...r,{name:`Setup Bun`,uses:`oven-sh/setup-bun@v2`,with:{"bun-version":n}},{name:`Install dependencies`,run:`bun install --frozen-lockfile`}]:t===`npm`?[...r,{name:`Install dependencies`,run:`npm install -g npm@${n}\nnpm ci`}]:[...r,{name:`Enable Corepack`,run:`corepack enable\ncorepack prepare ${t}@${n} --activate`},{name:`Install dependencies`,run:t===`pnpm`?`pnpm install --frozen-lockfile`:`yarn install --immutable`}]}function v(t,n){return e(t)&&typeof t.uses==`string`&&t.uses.startsWith(n)}function y(t,n){return e(t)&&typeof t.run==`string`&&n.test(t.run)}function b(e,t){let n=e.some(e=>v(e,`actions/checkout`)),r=e.some(e=>v(e,`actions/setup-node`)),i=e.some(e=>v(e,`oven-sh/setup-bun`)),a=e.some(e=>v(e,`pnpm/action-setup`)),o=e.some(e=>y(e,/\b(?:corepack|npm\s+(?:ci|install)|yarn\s+install|pnpm\s+install|bun\s+install)\b/));return _(t).filter(e=>v(e,`actions/checkout`)?!n:v(e,`actions/setup-node`)?!r:v(e,`oven-sh/setup-bun`)?!i:e.name===`Enable Corepack`?!o&&!a:e.name!==`Install dependencies`||!o)}function x(t,n){let r=t.jobs;if(e(r))for(let t of Object.values(r)){if(!e(t)||!Array.isArray(t.steps))continue;let r=b(t.steps,n);r.length>0&&(t.steps=[...r,...t.steps])}}function S(e){let t=String(e.packageManager??`yarn`),n=m(e);return t===`bun`?[`npm install -g bun@${n}`,`bun install --frozen-lockfile`]:t===`npm`?[`npm install -g npm@${n}`,`npm ci`]:[`corepack enable`,`corepack prepare ${t}@${n} --activate`,t===`pnpm`?`pnpm install --frozen-lockfile`:`yarn install --immutable`]}function C(t,n){let r=e(t.default)?t.default:void 0;Array.isArray(t.before_script)||r!==void 0&&Array.isArray(r.before_script)||(t.before_script=S(n)),t.image===void 0&&r?.image===void 0&&(t.image=`node:${String(n.nodeVersion)}`)}function w(e){return[{task:`UseNode@1`,inputs:{version:String(e.nodeVersion)}},{script:S(e).join(`
2
+ `)}]}function T(t,n){let r=w(n),i=t.jobs;if(e(i))for(let t of Object.values(i))e(t)&&Array.isArray(t.steps)&&(t.steps=[...r,...t.steps]);else Array.isArray(t.steps)&&(t.steps=[...r,...t.steps])}function E(e,t,n){e===`github`?x(t,n):e===`gitlab`?C(t,n):T(t,n)}function D(e,t={}){let n=g(e),r=String(e.mainBranch),i=String(e.devBranch),a=t.commitlint!==!1;return{ci:{name:`CI`,on:{push:{branches:[r]},pull_request:{branches:[`release/**`,`feat/**`,`feature/**`,`fix/**`,`chore/**`]}},jobs:{ci:{"runs-on":`ubuntu-latest`,steps:[..._(e),...a?[{name:`Commitlint (Conventional Commits)`,if:"${{ github.event_name == 'pull_request' || github.event.before != '0000000000000000000000000000000000000000' }}",run:`set -euo pipefail\nbase="\${{ github.event.pull_request.base.sha || github.event.before }}"\nhead="\${{ github.event.pull_request.head.sha || github.event.after }}"\n${g(e,`commitlint`)} --from "$base" --to "$head" --config "${e.commitlintConfig}"`}]:[],{name:`Verify generated files are in sync`,run:`${n} sync --check --recursive`},{name:`Build`,run:`${e.packageManager} build`}]}}},changelog:{name:`Changelog (dev)`,on:{push:{branches:[i]}},permissions:{contents:`write`},concurrency:{group:`changelog-dev`,"cancel-in-progress":!1},jobs:{"generate-changelog":{"runs-on":`ubuntu-latest`,if:`!startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[..._(e),{name:`Generate changelog + bump versions`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,'after="${{ github.event.after }}"; [ -n "$after" ] || after="HEAD"',`boundary="$(git log --format=%H --grep='^chore: version packages ' -1 || true)"`,`if [ -n "$boundary" ]; then range="$boundary..$after"; else range="$after"; fi`,`${n} changelog --range "$range"`].join(`
2
3
  `)},{name:`Commit + push changelog updates`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,`git diff --quiet && { echo "No changelog changes."; exit 0; }`,`git config user.name "github-actions[bot]"`,`git config user.email "41898282+github-actions[bot]@users.noreply.github.com"`,`git add -- "*package.json" "*CHANGELOG.md"`,`git commit -m "chore: version packages ($(node -p "require('./package.json').version"))"`,`git push origin ${i}`].join(`
3
- `)}]}}},release:{name:`Release`,on:{push:{branches:[r]},workflow_dispatch:null},permissions:{contents:`write`,"pull-requests":`write`},concurrency:{group:`release`,"cancel-in-progress":!1},jobs:{"create-release-pr":{"runs-on":`ubuntu-latest`,if:`(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && !startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[...g(e),{name:`Open release PR`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,`version="$(node -p "require('./package.json').version")"`,`branch="release/$version"`,`if git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then`,` echo "Release PR already open for $version."; exit 0`,`fi`,`git config user.name "github-actions[bot]"`,`git config user.email "41898282+github-actions[bot]@users.noreply.github.com"`,`git checkout -b "$branch"`,`git add -A`,`git commit -m "chore: version packages ($version)" || true`,`git push origin "$branch"`,`notes="$(${n} changelog --release-notes "$version")"`,`[ -n "$notes" ] || notes="Release $version"`,`gh pr create --base ${r} --head "$branch" --title "release: $version" --body "$notes"`].join(`
4
- `)}]}}},sync:{name:`Toolchain sync`,on:{push:{branches:[.../* @__PURE__ */ new Set([r,i])]},pull_request:null},jobs:{sync:{"runs-on":`ubuntu-latest`,steps:[...g(e),{name:`Verify generated files are in sync`,run:`${n} sync --check --recursive`}]}}},issues:{name:`Issues`,on:{issues:{types:[`opened`]}},permissions:{issues:`write`},jobs:{"enforce-title":{"runs-on":`ubuntu-latest`,steps:[{name:`Check and rename issue title`,env:{GH_TOKEN:"${{ github.token }}",ISSUE_NUMBER:"${{ github.event.issue.number }}"},run:[`set -euo pipefail`,`labels=$(gh issue view "$ISSUE_NUMBER" --json labels -q '.labels[].name' || true)`,`title=$(gh issue view "$ISSUE_NUMBER" --json title -q '.title')`,`type=""`,`for label in $labels; do case "$label" in *bug*) type="bug" ;; esac; done`,`if [ -z "$type" ]; then for label in $labels; do case "$label" in *enhancement*|*feature*|*feat*) type="feat" ;; esac; done; fi`,`if [ -z "$type" ]; then echo "No bug/enhancement label on issue #$ISSUE_NUMBER; skipping."; exit 0; fi`,`prefix="[bug]"; [ "$type" = "feat" ] && prefix="[feat]"`,`stripped=$(printf '%s' "$title" | sed -E 's/^\\[(bug|feat)\\] *//i')`,`new_title="$prefix $stripped"`,`if [ "$new_title" = "$title" ]; then echo "Issue #$ISSUE_NUMBER title already conforms."; exit 0; fi`,`gh issue edit "$ISSUE_NUMBER" --title "$new_title"`].join(`
5
- `)}]}}}}}function v(e){return e.steps?Array.isArray(e.steps)?e.steps:[e.steps]:[]}function y(e,t={}){let n=structuredClone(e);if(t.pushBranches){let e=n.on.push??{};n.on.push={...e,branches:t.pushBranches}}if(t.pullRequestBranches){let e=n.on.pull_request??{};n.on.pull_request={...e,branches:t.pullRequestBranches}}t.triggers&&(n.on={...n.on,...t.triggers}),t.extra&&Object.assign(n,t.extra),t.jobs&&(n.jobs={...n.jobs,...t.jobs});let r=Object.keys(n.jobs)[0];for(let e of v(t)){let t=e.job??r;if(!t)continue;let i=n.jobs[t];i&&(i.steps=[...e.before??[],...i.steps,...e.after??[]])}return n}function b(t,n){let i=n.config??{};if(i.enabled===!1)return;let a=m(n),o=_(a,{commitlint:n.commitlint!==!1})[t],s=e(y(o,i),a);return r(s)}function x(t,n){let i=n.config??{};if(i.enabled===!1)return;let a=m(n),o=e(y({name:t,on:{},jobs:{}},i),a),s=o.on&&typeof o.on==`object`&&Object.keys(o.on).length>0,c=o.jobs&&typeof o.jobs==`object`&&Object.keys(o.jobs).length>0;if(!s||!c)throw Error(`custom workflow "${t}" must define at least one trigger and one job (use \`triggers\` and \`jobs\`, or \`extra\`).`);return r(o)}function S(t,n){let i=e(t.workflow,n);return r(i)}function C(e,t={},n={}){let r={};for(let i of Object.keys(a)){let o=t[i];if(!f(o))continue;let c=d(i,o,a[i]),l=c.split(`/`).pop()??c;if(typeof o==`string`){r[l]=o;continue}if(s(o)){r[l]=S(o,e);continue}let u=b(i,{tokens:e,config:typeof o==`object`?o:{},...n});u&&(r[l]=u)}for(let[t,i]of Object.entries(n.custom??{})){if(!f(i))continue;let a=d(t,i),o=a.split(`/`).pop()??a;if(typeof i==`string`){r[o]=i;continue}if(s(i)){r[o]=S(i,e);continue}let c=x(t,{tokens:e,config:i,...n});c&&(r[o]=c)}return r}export{o as DEFAULT_WORKFLOW_DIR,i as DEFAULT_WORKFLOW_TOKENS,a as WORKFLOW_FILENAMES,y as applyWorkflowConfig,_ as defaultWorkflows,f as isEnabled,s as isVendorWorkflowSetting,x as renderCustomWorkflow,S as renderVendorWorkflow,b as renderWorkflow,C as renderWorkflows,d as workflowFilePath};
4
+ `)}]}}},release:{name:`Release`,on:{push:{branches:[r]},workflow_dispatch:null},permissions:{contents:`write`,"pull-requests":`write`},concurrency:{group:`release`,"cancel-in-progress":!1},jobs:{"create-release-pr":{"runs-on":`ubuntu-latest`,if:`(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && !startsWith(github.event.head_commit.message, 'chore: version packages ') && !startsWith(github.event.head_commit.message, 'release: ')`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},steps:[..._(e),{name:`Open release PR`,env:{GITHUB_TOKEN:"${{ secrets.GITHUB_TOKEN }}"},run:[`set -euo pipefail`,`version="$(node -p "require('./package.json').version")"`,`branch="release/$version"`,`if git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then`,` echo "Release PR already open for $version."; exit 0`,`fi`,`git config user.name "github-actions[bot]"`,`git config user.email "41898282+github-actions[bot]@users.noreply.github.com"`,`git checkout -b "$branch"`,`git add -A`,`git commit -m "chore: version packages ($version)" || true`,`git push origin "$branch"`,`notes="$(${n} changelog --release-notes "$version")"`,`[ -n "$notes" ] || notes="Release $version"`,`gh pr create --base ${r} --head "$branch" --title "release: $version" --body "$notes"`].join(`
5
+ `)}]}}},sync:{name:`Toolchain sync`,on:{push:{branches:[.../* @__PURE__ */ new Set([r,i])]},pull_request:null},jobs:{sync:{"runs-on":`ubuntu-latest`,steps:[..._(e),{name:`Verify generated files are in sync`,run:`${n} sync --check --recursive`}]}}},issues:{name:`Issues`,on:{issues:{types:[`opened`]}},permissions:{issues:`write`},jobs:{"enforce-title":{"runs-on":`ubuntu-latest`,steps:[{name:`Check and rename issue title`,env:{GH_TOKEN:"${{ github.token }}",ISSUE_NUMBER:"${{ github.event.issue.number }}"},run:[`set -euo pipefail`,`labels=$(gh issue view "$ISSUE_NUMBER" --json labels -q '.labels[].name' || true)`,`title=$(gh issue view "$ISSUE_NUMBER" --json title -q '.title')`,`type=""`,`for label in $labels; do case "$label" in *bug*) type="bug" ;; esac; done`,`if [ -z "$type" ]; then for label in $labels; do case "$label" in *enhancement*|*feature*|*feat*) type="feat" ;; esac; done; fi`,`if [ -z "$type" ]; then echo "No bug/enhancement label on issue #$ISSUE_NUMBER; skipping."; exit 0; fi`,`prefix="[bug]"; [ "$type" = "feat" ] && prefix="[feat]"`,`stripped=$(printf '%s' "$title" | sed -E 's/^\\[(bug|feat)\\] *//i')`,`new_title="$prefix $stripped"`,`if [ "$new_title" = "$title" ]; then echo "Issue #$ISSUE_NUMBER title already conforms."; exit 0; fi`,`gh issue edit "$ISSUE_NUMBER" --title "$new_title"`].join(`
6
+ `)}]}}}}}function O(e){return e.steps?Array.isArray(e.steps)?e.steps:[e.steps]:[]}function k(e,t={}){let n=structuredClone(e);if(t.pushBranches){let e=n.on.push??{};n.on.push={...e,branches:t.pushBranches}}if(t.pullRequestBranches){let e=n.on.pull_request??{};n.on.pull_request={...e,branches:t.pullRequestBranches}}t.triggers&&(n.on={...n.on,...t.triggers}),t.extra&&Object.assign(n,t.extra),t.jobs&&(n.jobs={...n.jobs,...t.jobs});let r=Object.keys(n.jobs)[0];for(let e of O(t)){let t=e.job??r;if(!t)continue;let i=n.jobs[t];i&&(i.steps=[...e.before??[],...i.steps,...e.after??[]])}return n}function A(e,n){let r=n.config??{};if(r.enabled===!1)return;let a=h(n),o=D(a,{commitlint:n.commitlint!==!1})[e],s=t(k(o,r),a);return i(s)}function j(e,n){let r=n.config??{};if(r.enabled===!1)return;let a=h(n),o=k({name:e,on:{},jobs:{}},r);r.setup===!0&&x(o,a);let s=t(o,a),c=s.on&&typeof s.on==`object`&&Object.keys(s.on).length>0,l=s.jobs&&typeof s.jobs==`object`&&Object.keys(s.jobs).length>0;if(!c||!l)throw Error(`custom workflow "${e}" must define at least one trigger and one job (use \`triggers\` and \`jobs\`, or \`extra\`).`);return i(s)}function M(e,n){let r=h({tokens:n}),a=t(e.workflow,r);return e.setup===!0&&E(e.provider,a,r),i(a)}function N(e,t={},n={}){let r={};for(let i of Object.keys(o)){let a=t[i];if(!p(a))continue;let s=f(i,a,o[i]),l=s.split(`/`).pop()??s;if(typeof a==`string`){r[l]=a;continue}if(c(a)){r[l]=M(a,e);continue}let u=A(i,{tokens:e,config:typeof a==`object`?a:{},...n});u&&(r[l]=u)}for(let[t,i]of Object.entries(n.custom??{})){if(!p(i))continue;let a=f(t,i),o=a.split(`/`).pop()??a;if(typeof i==`string`){r[o]=i;continue}if(c(i)){r[o]=M(i,e);continue}let s=j(t,{tokens:e,config:i,...n});s&&(r[o]=s)}return r}export{s as DEFAULT_WORKFLOW_DIR,a as DEFAULT_WORKFLOW_TOKENS,o as WORKFLOW_FILENAMES,k as applyWorkflowConfig,D as defaultWorkflows,p as isEnabled,c as isVendorWorkflowSetting,j as renderCustomWorkflow,M as renderVendorWorkflow,A as renderWorkflow,N as renderWorkflows,f as workflowFilePath};
@@ -0,0 +1,22 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { ToolchainCommand } from "../../../shared/src/types.js";
4
+ import "../../../shared/src/index.js";
5
+ //#region packages/config/src/generators/commands.d.ts
6
+ /** Options for {@link generateCliDocs}. */
7
+ export interface GenerateCliDocsOptions {
8
+ /** Page title (default `CLI reference`). */
9
+ title?: string;
10
+ /** Frontmatter outline levels (default `[2, 3]`). */
11
+ outline?: number[];
12
+ /** Intro markdown rendered before the command table. */
13
+ intro?: string;
14
+ /** Command prefix used in headings and links (default `dbx`). */
15
+ prefix?: string;
16
+ }
17
+ /**
18
+ * Render a CLI reference from command descriptors. Hidden commands are omitted
19
+ * and duplicate names keep the first descriptor.
20
+ */
21
+ export declare function generateCliDocs(commands: readonly ToolchainCommand[], options?: GenerateCliDocsOptions): string;
22
+ //#endregion
@@ -0,0 +1,2 @@
1
+ import"node:path";import"node:url";import.meta.url;function e(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/\|/g,`\\|`)}function t(e){return e.replace(/</g,`‹`).replace(/>/g,`›`)}function n(e){return e.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}function r(r,i={}){let a=i.title??`CLI reference`,o=i.outline??[2,3],s=i.prefix??`dbx`,c=i.intro??"Generated from the `ToolchainCommand` descriptors the CLI registers.",l=/* @__PURE__ */ new Set,u=r.filter(e=>e.hidden||l.has(e.name)?!1:(l.add(e.name),!0)),d=[`---`,`title: ${a}`,`outline: [${o.join(`, `)}]`,`---`,``,`# ${a}`,``,c,``,`| Command | Description |`,`| ------- | ----------- |`];for(let t of u)d.push(`| [\`${s} ${t.name}\`](#${n(t.name)}) | ${e(t.description)} |`);for(let n of u){d.push(``,`## \`${s} ${n.name}\``,``,e(n.description));for(let r of n.args??[]){let n=r.required===!1?`[${r.name}]`:`<${r.name}>`;d.push(`- \`${t(n)}\` — ${e(r.description)}`)}for(let r of n.options??[]){let n=r.default===void 0?``:` (default: \`${String(r.default)}\`)`;d.push(`- \`${t(r.flags)}\` — ${e(r.description)}${n}`)}}return`${d.join(`
2
+ `).trimEnd()}\n`}export{r as generateCliDocs};
@@ -5,4 +5,5 @@ import { GenerateEnvTypesOptions, generateConfigEnv, generateEnv, generateEnvDts
5
5
  import { GenerateJsonSchemaOptions, generateConfigJsonSchema, generateJsonSchemaFile } from "./json.js";
6
6
  import { GenerateMarkdownOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, generateConfigMarkdown } from "./markdown.js";
7
7
  import { GenerateTypesOptions, generateConfigTypes } from "./types.js";
8
- export { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, cliFlagLabel, cliFlagOf, cliShortOf, createCliArgsParser, flagOf, generateCliArgsOptions, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvTypes, generateJsonSchemaFile };
8
+ import { GenerateCliDocsOptions, generateCliDocs } from "./commands.js";
9
+ export { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, GenerateCliDocsOptions, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, cliFlagLabel, cliFlagOf, cliShortOf, createCliArgsParser, flagOf, generateCliArgsOptions, generateCliDocs, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvTypes, generateJsonSchemaFile };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{cliFlagLabel as e,cliFlagOf as t,cliShortOf as n,createCliArgsParser as r,flagOf as i,generateCliArgsOptions as a,generateCliOptions as o}from"./cli.js";import{generateConfigEnv as s,generateEnv as c,generateEnvDts as l,generateEnvTypes as u}from"./env.js";import{generateConfigJsonSchema as d,generateJsonSchemaFile as f}from"./json.js";import{generateConfigMarkdown as p}from"./markdown.js";import{generateConfigTypes as m}from"./types.js";export{e as cliFlagLabel,t as cliFlagOf,n as cliShortOf,r as createCliArgsParser,i as flagOf,a as generateCliArgsOptions,o as generateCliOptions,s as generateConfigEnv,d as generateConfigJsonSchema,p as generateConfigMarkdown,m as generateConfigTypes,c as generateEnv,l as generateEnvDts,u as generateEnvTypes,f as generateJsonSchemaFile};
1
+ import"node:path";import"node:url";import.meta.url;import{cliFlagLabel as e,cliFlagOf as t,cliShortOf as n,createCliArgsParser as r,flagOf as i,generateCliArgsOptions as a,generateCliOptions as o}from"./cli.js";import{generateConfigEnv as s,generateEnv as c,generateEnvDts as l,generateEnvTypes as u}from"./env.js";import{generateConfigJsonSchema as d,generateJsonSchemaFile as f}from"./json.js";import{generateConfigMarkdown as p}from"./markdown.js";import{generateConfigTypes as m}from"./types.js";import{generateCliDocs as h}from"./commands.js";export{e as cliFlagLabel,t as cliFlagOf,n as cliShortOf,r as createCliArgsParser,i as flagOf,a as generateCliArgsOptions,h as generateCliDocs,o as generateCliOptions,s as generateConfigEnv,d as generateConfigJsonSchema,p as generateConfigMarkdown,m as generateConfigTypes,c as generateEnv,l as generateEnvDts,u as generateEnvTypes,f as generateJsonSchemaFile};
@@ -1,4 +1,4 @@
1
1
  import{default as e}from"node:path";import"node:url";import.meta.url;import{pascalCase as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{isZodSchema as n,metaOf as r,normalizeConfigSchema as i,splitBaseSchema as a,zodToSchemaMap as o}from"../schema.js";import{resolveGeneratedFile as s}from"./output.js";import c from"node:fs";import{generateTypes as l}from"untyped";const u={addExport:!0,partial:!0};function d(e){let t=[],n=0,r=!1;for(let i of e.split(`
2
2
  `)){let e=i.trim();if(r)t.push(i),e.endsWith(`*/`)&&(r=!1);else if(e.startsWith(`/*`))t.push(i),e.endsWith(`*/`)||(r=!0);else if(!(e===``&&n>0)){t.push(i);for(let e of i)e===`{`||e===`(`||e===`[`?n++:(e===`}`||e===`)`||e===`]`)&&n>0&&n--}}return t.join(`
3
- `)}function f(e,t){return d(l(e,{...u,interfaceName:t}))}function p(e){let t=e.lastIndexOf(`}`);return t===-1?e:`${e.slice(0,t)} [key: string]: unknown;\n${e.slice(t)}`}function m(e){return e==null?[]:(Array.isArray(e)?e:[e]).map(e=>String(e)).filter(Boolean)}function h(e,t){let n=[];if(t.includeRequired!==!1&&e.required===!0&&n.push(`@required`),t.includeDeprecated!==!1&&e.deprecated!==void 0&&e.deprecated!==!1){let t=typeof e.deprecationMessage==`string`?e.deprecationMessage.trim():``;n.push(t?`@deprecated ${t}`:`@deprecated`)}if(t.includeExamples!==!1)for(let t of m(e.example))n.push(`@example ${t}`);if(t.includeSince!==!1&&typeof e.since==`string`&&e.since.trim()&&n.push(`@since ${e.since.trim()}`),t.includeSee!==!1)for(let t of m(e.see))n.push(`@see ${t}`);return t.includeRemarks!==!1&&typeof e.remarks==`string`&&e.remarks.trim()&&n.push(`@remarks ${e.remarks.trim()}`),t.includeExperimental!==!1&&e.experimental===!0&&n.push(`@experimental`),t.includeAlpha!==!1&&e.alpha===!0&&n.push(`@alpha`),t.includeBeta!==!1&&e.beta===!0&&n.push(`@beta`),n}function g(e,t){let n=e,{deprecated:r,deprecationMessage:i,example:a,since:o,see:s,remarks:c,experimental:l,alpha:u,beta:d,tags:f,...p}=n,m=n.required===!0,_=(Array.isArray(f)?f:[]).filter(e=>!(t.includeRequired===!1&&e===`@required`||t.includeDeprecated===!1&&e.startsWith(`@deprecated`)||t.includeExamples===!1&&e.startsWith(`@example`)||t.includeSince===!1&&e.startsWith(`@since`)||t.includeSee===!1&&e.startsWith(`@see`)||t.includeRemarks===!1&&e.startsWith(`@remarks`)||t.includeExperimental===!1&&e.startsWith(`@experimental`)||t.includeAlpha===!1&&e.startsWith(`@alpha`)||t.includeBeta===!1&&e.startsWith(`@beta`))),v=[.../* @__PURE__ */ new Set([..._,...h({required:m,deprecated:r,deprecationMessage:i,example:a,since:o,see:s,remarks:c,experimental:l,alpha:u,beta:d},t)])],y=typeof n.envName==`string`?n.envName:typeof n.env==`string`?n.env:``;t.includeEnv!==!1&&y&&v.push(`@env ${y}`),t.includeCli!==!1&&typeof n.cliFlag==`string`&&v.push(`@cli ${n.cliFlag}`);let b={...p};return m&&delete b.required,v.length>0&&(b.tags=v),b.properties&&typeof b.properties==`object`&&(b.properties=Object.fromEntries(Object.entries(b.properties).map(([e,n])=>[e,g(n,t)]))),b.items&&typeof b.items==`object`&&(b.items=g(b.items,t)),b}function _(e,t,n){let r=t,i=h({required:r.required,deprecated:r.deprecated,deprecationMessage:r.deprecationMessage,example:r.example,since:r.since,see:r.see,remarks:r.remarks,experimental:r.experimental,alpha:r.alpha,beta:r.beta},n);return i.length===0?e:`${[`/**`,...i.map(e=>` * ${e}`),` */`].join(`
3
+ `)}function f(e,t){return d(l(e,{...u,interfaceName:t}))}function p(e){let t=e.lastIndexOf(`}`);return t===-1?e:`${e.slice(0,t)} [key: string & {}]: unknown;\n${e.slice(t)}`}function m(e){return e==null?[]:(Array.isArray(e)?e:[e]).map(e=>String(e)).filter(Boolean)}function h(e,t){let n=[];if(t.includeRequired!==!1&&e.required===!0&&n.push(`@required`),t.includeDeprecated!==!1&&e.deprecated!==void 0&&e.deprecated!==!1){let t=typeof e.deprecationMessage==`string`?e.deprecationMessage.trim():``;n.push(t?`@deprecated ${t}`:`@deprecated`)}if(t.includeExamples!==!1)for(let t of m(e.example))n.push(`@example ${t}`);if(t.includeSince!==!1&&typeof e.since==`string`&&e.since.trim()&&n.push(`@since ${e.since.trim()}`),t.includeSee!==!1)for(let t of m(e.see))n.push(`@see ${t}`);return t.includeRemarks!==!1&&typeof e.remarks==`string`&&e.remarks.trim()&&n.push(`@remarks ${e.remarks.trim()}`),t.includeExperimental!==!1&&e.experimental===!0&&n.push(`@experimental`),t.includeAlpha!==!1&&e.alpha===!0&&n.push(`@alpha`),t.includeBeta!==!1&&e.beta===!0&&n.push(`@beta`),n}function g(e,t){let n=e,{deprecated:r,deprecationMessage:i,example:a,since:o,see:s,remarks:c,experimental:l,alpha:u,beta:d,tags:f,...p}=n,m=n.required===!0,_=(Array.isArray(f)?f:[]).filter(e=>!(t.includeRequired===!1&&e===`@required`||t.includeDeprecated===!1&&e.startsWith(`@deprecated`)||t.includeExamples===!1&&e.startsWith(`@example`)||t.includeSince===!1&&e.startsWith(`@since`)||t.includeSee===!1&&e.startsWith(`@see`)||t.includeRemarks===!1&&e.startsWith(`@remarks`)||t.includeExperimental===!1&&e.startsWith(`@experimental`)||t.includeAlpha===!1&&e.startsWith(`@alpha`)||t.includeBeta===!1&&e.startsWith(`@beta`))),v=[.../* @__PURE__ */ new Set([..._,...h({required:m,deprecated:r,deprecationMessage:i,example:a,since:o,see:s,remarks:c,experimental:l,alpha:u,beta:d},t)])],y=typeof n.envName==`string`?n.envName:typeof n.env==`string`?n.env:``;t.includeEnv!==!1&&y&&v.push(`@env ${y}`),t.includeCli!==!1&&typeof n.cliFlag==`string`&&v.push(`@cli ${n.cliFlag}`);let b={...p};return m&&delete b.required,v.length>0&&(b.tags=v),b.properties&&typeof b.properties==`object`&&(b.properties=Object.fromEntries(Object.entries(b.properties).map(([e,n])=>[e,g(n,t)]))),b.items&&typeof b.items==`object`&&(b.items=g(b.items,t)),b}function _(e,t,n){let r=t,i=h({required:r.required,deprecated:r.deprecated,deprecationMessage:r.deprecationMessage,example:r.example,since:r.since,see:r.see,remarks:r.remarks,experimental:r.experimental,alpha:r.alpha,beta:r.beta},n);return i.length===0?e:`${[`/**`,...i.map(e=>` * ${e}`),` */`].join(`
4
4
  `)}\n${e}`}function v(e,n,i={}){let o=Array.isArray(i.baseGroup)?String(i.baseGroup[0]??`base`):String(i.baseGroup??`base`),s=r(n),c=i.interfaceNames?.[e]??s?.typeName??s?.id??`${t(e)}Config`,l=i.aliases?.[e]??``,u=e=>i.header?`${i.header}\n\n${e}`:e,d=i.overrides?.[e];if(d!==void 0)return u(`${d.trimEnd()}\n${l}`.trimEnd());let m=n.allowExtraKeys===!0;if(!n.properties)return u(`${_(`export type ${c} = ${n.tsType??`unknown`};`,n,i)}\n${l}`);let h=g(n,i),{base:v,groups:y,hasBase:b}=a(h,o),x=Object.keys(y.properties??{});if(!b){let e=_(f(h,c),n,i);return m&&(e=p(e)),u(`${e}\n${l}`)}let S=f(v,`${c}Base`),C;return C=x.length>0?f(y,c).replace(`export interface ${c} {`,`export interface ${c} extends ${c}Base {`):`export interface ${c} extends ${c}Base {}\n`,C=_(C,n,i),m&&(C=p(C)),u(`${S}\n${C}\n${l}`)}function y(e,t={}){return n(e)?Object.fromEntries(Object.entries(o(e)).map(([e,n])=>[e,v(e,n,{...t,interfaceNames:{[e]:e,...t.interfaceNames}})])):Object.fromEntries(Object.entries(i(e)).map(([e,n])=>[e,v(e,n,t)]))}function b(t,n={}){let r=n.extension??`ts`,i=y(t,n);if(typeof n.outputDir==`string`)for(let[t,a]of Object.entries(i)){let i=s(n.outputDir,`${t}.${r}`);c.mkdirSync(e.dirname(i),{recursive:!0}),c.writeFileSync(i,a,`utf-8`)}return i}export{b as generateConfigTypes};
@@ -12,11 +12,12 @@ import { GenerateTypesOptions, generateConfigTypes } from "./generators/types.js
12
12
  import { ConfigEngine, createConfigEngine } from "./engine.js";
13
13
  import { EnvSource, EnvTree, envBool, envInt, envList, envMap, envPathOf, envString, parseEnvTree, readEnvPath } from "./env.js";
14
14
  import { FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, formatGenerated } from "./generated-format.js";
15
+ import { GenerateCliDocsOptions, generateCliDocs } from "./generators/commands.js";
15
16
  import "./generators/index.js";
16
17
  import { findProjectRoot, monorepoRoot } from "./root.js";
17
18
  import { SplitSchema, ToJsonSchemaSafeOptions, compileZodSchema, flattenBaseSchema, isSchemaType, isZodFunctionSchema, isZodSchema, metaOf, normalizeConfigSchema, normalizeJsonSchemaMetadata, renderTsType, resolveUntypedSchema, splitBaseSchema, toJsonSchemaSafe, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition } from "./schema.js";
18
19
  declare namespace index_d_exports {
19
- export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectVarsOptions, ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngine, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigJsonDoc, ConfigJsonEntry, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, SplitSchema, ToJsonSchemaSafeOptions, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectRequired, collectVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, isSchemaType, isZodFunctionSchema, isZodSchema, metaOf, monorepoRoot, normalizeConfigSchema, normalizeJsonSchemaMetadata, parseEnvTree, pathOf, readEnvPath, renderTsType, resolveUntypedSchema, splitBaseSchema, toJsonSchemaSafe, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition };
20
+ export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectVarsOptions, ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngine, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigJsonDoc, ConfigJsonEntry, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliDocsOptions, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, SplitSchema, ToJsonSchemaSafeOptions, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectRequired, collectVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliDocs, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, isSchemaType, isZodFunctionSchema, isZodSchema, metaOf, monorepoRoot, normalizeConfigSchema, normalizeJsonSchemaMetadata, parseEnvTree, pathOf, readEnvPath, renderTsType, resolveUntypedSchema, splitBaseSchema, toJsonSchemaSafe, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition };
20
21
  }
21
22
  //#endregion
22
- export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectVarsOptions, ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngine, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigJsonDoc, ConfigJsonEntry, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, SplitSchema, ToJsonSchemaSafeOptions, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectRequired, collectVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, index_d_exports, isSchemaType, isZodFunctionSchema, isZodSchema, metaOf, monorepoRoot, normalizeConfigSchema, normalizeJsonSchemaMetadata, parseEnvTree, pathOf, readEnvPath, renderTsType, resolveUntypedSchema, splitBaseSchema, toJsonSchemaSafe, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition };
23
+ export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectVarsOptions, ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngine, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigJsonDoc, ConfigJsonEntry, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliDocsOptions, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, SplitSchema, ToJsonSchemaSafeOptions, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectRequired, collectVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliDocs, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, index_d_exports, isSchemaType, isZodFunctionSchema, isZodSchema, metaOf, monorepoRoot, normalizeConfigSchema, normalizeJsonSchemaMetadata, parseEnvTree, pathOf, readEnvPath, renderTsType, resolveUntypedSchema, splitBaseSchema, toJsonSchemaSafe, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{compileZodSchema as t,flattenBaseSchema as n,isSchemaType as r,isZodFunctionSchema as i,isZodSchema as a,metaOf as o,normalizeConfigSchema as s,normalizeJsonSchemaMetadata as c,renderTsType as l,resolveUntypedSchema as u,splitBaseSchema as d,toJsonSchemaSafe as f,toSchemaType as p,zodToJsonSchema as m,zodToSchemaMap as h,zodToUntypedDefinition as g}from"./schema.js";import{DEFAULT_ENV_PREFIX as _,collectRequired as v,collectVars as y,pathOf as b}from"./collect.js";import{buildConfigJson as x}from"./config-json.js";import{generateEnvFile as S}from"./env-file.js";import{cliFlagLabel as C,cliFlagOf as w,cliShortOf as T,createCliArgsParser as E,flagOf as D,generateCliArgsOptions as O,generateCliOptions as k}from"./generators/cli.js";import{generateConfigEnv as A,generateEnv as j,generateEnvDts as M,generateEnvTypes as N}from"./generators/env.js";import{generateConfigJsonSchema as P,generateJsonSchemaFile as F}from"./generators/json.js";import{generateConfigMarkdown as I}from"./generators/markdown.js";import{generateConfigTypes as L}from"./generators/types.js";import{findProjectRoot as R,monorepoRoot as z}from"./root.js";import{createConfigEngine as B}from"./engine.js";import{envBool as V,envInt as H,envList as U,envMap as W,envPathOf as G,envString as K,parseEnvTree as q,readEnvPath as J}from"./env.js";import{GENERATED_FORMAT_OPTIONS as Y,formatGenerated as X}from"./generated-format.js";import"./generators/index.js";var Z=/* @__PURE__ */ e({DEFAULT_ENV_PREFIX:()=>_,GENERATED_FORMAT_OPTIONS:()=>Y,buildConfigJson:()=>x,cliFlagLabel:()=>C,cliFlagOf:()=>w,cliShortOf:()=>T,collectRequired:()=>v,collectVars:()=>y,compileZodSchema:()=>t,createCliArgsParser:()=>E,createConfigEngine:()=>B,envBool:()=>V,envInt:()=>H,envList:()=>U,envMap:()=>W,envPathOf:()=>G,envString:()=>K,findProjectRoot:()=>R,flagOf:()=>D,flattenBaseSchema:()=>n,formatGenerated:()=>X,generateCliArgsOptions:()=>O,generateCliOptions:()=>k,generateConfigEnv:()=>A,generateConfigJsonSchema:()=>P,generateConfigMarkdown:()=>I,generateConfigTypes:()=>L,generateEnv:()=>j,generateEnvDts:()=>M,generateEnvFile:()=>S,generateEnvTypes:()=>N,generateJsonSchemaFile:()=>F,isSchemaType:()=>r,isZodFunctionSchema:()=>i,isZodSchema:()=>a,metaOf:()=>o,monorepoRoot:()=>z,normalizeConfigSchema:()=>s,normalizeJsonSchemaMetadata:()=>c,parseEnvTree:()=>q,pathOf:()=>b,readEnvPath:()=>J,renderTsType:()=>l,resolveUntypedSchema:()=>u,splitBaseSchema:()=>d,toJsonSchemaSafe:()=>f,toSchemaType:()=>p,zodToJsonSchema:()=>m,zodToSchemaMap:()=>h,zodToUntypedDefinition:()=>g});export{_ as DEFAULT_ENV_PREFIX,Y as GENERATED_FORMAT_OPTIONS,x as buildConfigJson,C as cliFlagLabel,w as cliFlagOf,T as cliShortOf,v as collectRequired,y as collectVars,t as compileZodSchema,E as createCliArgsParser,B as createConfigEngine,V as envBool,H as envInt,U as envList,W as envMap,G as envPathOf,K as envString,R as findProjectRoot,D as flagOf,n as flattenBaseSchema,X as formatGenerated,O as generateCliArgsOptions,k as generateCliOptions,A as generateConfigEnv,P as generateConfigJsonSchema,I as generateConfigMarkdown,L as generateConfigTypes,j as generateEnv,M as generateEnvDts,S as generateEnvFile,N as generateEnvTypes,F as generateJsonSchemaFile,r as isSchemaType,i as isZodFunctionSchema,a as isZodSchema,o as metaOf,z as monorepoRoot,s as normalizeConfigSchema,c as normalizeJsonSchemaMetadata,q as parseEnvTree,b as pathOf,J as readEnvPath,l as renderTsType,u as resolveUntypedSchema,d as splitBaseSchema,Z as src_exports,f as toJsonSchemaSafe,p as toSchemaType,m as zodToJsonSchema,h as zodToSchemaMap,g as zodToUntypedDefinition};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{compileZodSchema as t,flattenBaseSchema as n,isSchemaType as r,isZodFunctionSchema as i,isZodSchema as a,metaOf as o,normalizeConfigSchema as s,normalizeJsonSchemaMetadata as c,renderTsType as l,resolveUntypedSchema as u,splitBaseSchema as d,toJsonSchemaSafe as f,toSchemaType as p,zodToJsonSchema as m,zodToSchemaMap as h,zodToUntypedDefinition as g}from"./schema.js";import{DEFAULT_ENV_PREFIX as _,collectRequired as v,collectVars as y,pathOf as b}from"./collect.js";import{buildConfigJson as x}from"./config-json.js";import{generateEnvFile as S}from"./env-file.js";import{cliFlagLabel as C,cliFlagOf as w,cliShortOf as T,createCliArgsParser as E,flagOf as D,generateCliArgsOptions as O,generateCliOptions as k}from"./generators/cli.js";import{generateConfigEnv as A,generateEnv as j,generateEnvDts as M,generateEnvTypes as N}from"./generators/env.js";import{generateConfigJsonSchema as P,generateJsonSchemaFile as F}from"./generators/json.js";import{generateConfigMarkdown as I}from"./generators/markdown.js";import{generateConfigTypes as L}from"./generators/types.js";import{findProjectRoot as R,monorepoRoot as z}from"./root.js";import{createConfigEngine as B}from"./engine.js";import{envBool as V,envInt as H,envList as U,envMap as W,envPathOf as G,envString as K,parseEnvTree as q,readEnvPath as J}from"./env.js";import{GENERATED_FORMAT_OPTIONS as Y,formatGenerated as X}from"./generated-format.js";import{generateCliDocs as Z}from"./generators/commands.js";import"./generators/index.js";var Q=/* @__PURE__ */ e({DEFAULT_ENV_PREFIX:()=>_,GENERATED_FORMAT_OPTIONS:()=>Y,buildConfigJson:()=>x,cliFlagLabel:()=>C,cliFlagOf:()=>w,cliShortOf:()=>T,collectRequired:()=>v,collectVars:()=>y,compileZodSchema:()=>t,createCliArgsParser:()=>E,createConfigEngine:()=>B,envBool:()=>V,envInt:()=>H,envList:()=>U,envMap:()=>W,envPathOf:()=>G,envString:()=>K,findProjectRoot:()=>R,flagOf:()=>D,flattenBaseSchema:()=>n,formatGenerated:()=>X,generateCliArgsOptions:()=>O,generateCliDocs:()=>Z,generateCliOptions:()=>k,generateConfigEnv:()=>A,generateConfigJsonSchema:()=>P,generateConfigMarkdown:()=>I,generateConfigTypes:()=>L,generateEnv:()=>j,generateEnvDts:()=>M,generateEnvFile:()=>S,generateEnvTypes:()=>N,generateJsonSchemaFile:()=>F,isSchemaType:()=>r,isZodFunctionSchema:()=>i,isZodSchema:()=>a,metaOf:()=>o,monorepoRoot:()=>z,normalizeConfigSchema:()=>s,normalizeJsonSchemaMetadata:()=>c,parseEnvTree:()=>q,pathOf:()=>b,readEnvPath:()=>J,renderTsType:()=>l,resolveUntypedSchema:()=>u,splitBaseSchema:()=>d,toJsonSchemaSafe:()=>f,toSchemaType:()=>p,zodToJsonSchema:()=>m,zodToSchemaMap:()=>h,zodToUntypedDefinition:()=>g});export{_ as DEFAULT_ENV_PREFIX,Y as GENERATED_FORMAT_OPTIONS,x as buildConfigJson,C as cliFlagLabel,w as cliFlagOf,T as cliShortOf,v as collectRequired,y as collectVars,t as compileZodSchema,E as createCliArgsParser,B as createConfigEngine,V as envBool,H as envInt,U as envList,W as envMap,G as envPathOf,K as envString,R as findProjectRoot,D as flagOf,n as flattenBaseSchema,X as formatGenerated,O as generateCliArgsOptions,Z as generateCliDocs,k as generateCliOptions,A as generateConfigEnv,P as generateConfigJsonSchema,I as generateConfigMarkdown,L as generateConfigTypes,j as generateEnv,M as generateEnvDts,S as generateEnvFile,N as generateEnvTypes,F as generateJsonSchemaFile,r as isSchemaType,i as isZodFunctionSchema,a as isZodSchema,o as metaOf,z as monorepoRoot,s as normalizeConfigSchema,c as normalizeJsonSchemaMetadata,q as parseEnvTree,b as pathOf,J as readEnvPath,l as renderTsType,u as resolveUntypedSchema,d as splitBaseSchema,Q as src_exports,f as toJsonSchemaSafe,p as toSchemaType,m as zodToJsonSchema,h as zodToSchemaMap,g as zodToUntypedDefinition};
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{z as e}from"zod";const t={string:`string`,number:`number`,integer:`number`,boolean:`boolean`,null:`null`};function n(e){return typeof e==`object`&&!!e&&`safeParse`in e}function r(e){return typeof e!=`object`||!e||Array.isArray(e)||n(e)?!1:`type`in e||`properties`in e||`tsType`in e||`id`in e}const i=[`id`,`description`,`required`,`deprecated`,`deprecationMessage`,`example`,`since`,`see`,`remarks`,`experimental`,`alpha`,`beta`,`secret`,`scope`,`public`,`defaultValue`,`envName`,`env`,`envPath`,`path`,`typeName`,`cliFlag`,`cliFlagShort`,`tsType`];function a(e){return n(e)&&e._zod?.def?.type===`function`}function o(e){if(a(e.zodSchema)){let t=c(e.zodSchema);if(typeof t?.tsType==`string`&&t.tsType.trim())return{tsType:t.tsType,...typeof t.description==`string`?{description:t.description}:{}}}return`any`}function s(t,n={}){let r={target:`draft-2020-12`,...n,...n.unrepresentable?{unrepresentable:n.unrepresentable}:{unrepresentable:o}};return e.toJSONSchema(t,r)}function c(e){if(n(e)){let t=e.meta?.();return t&&typeof t==`object`?t:void 0}let t=e,r={};for(let e of i)e===`id`&&typeof t.id==`string`&&t.id.startsWith(`#`)||t[e]!==void 0&&(r[e]=t[e]);return Object.keys(r).length>0?r:void 0}function l(e){return n(e)?k(e):e}function u(e){let t={},n=/* @__PURE__ */ new Set,r={type:`object`,properties:t};for(let i of e){let a=i;if(a.properties&&Object.assign(t,a.properties),Array.isArray(a.required))for(let e of a.required)n.add(e);e.length===1&&(r=i)}return{...r,type:`object`,properties:t,...n.size>0?{required:[...n]}:{}}}function d(e){if(Array.isArray(e)){let t=u(e.map(l));return{[c(t)?.id??`config`]:t}}if(n(e)||r(e)){let t=l(e);return{[c(t)?.id??`config`]:t}}let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?u(r.map(l)):l(r);return t}function f(e){return!e||Object.keys(e).length===0}function p(e){return`'${String(e).replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function m(e,n={}){if(!e||f(e))return`unknown`;if(typeof e.tsType==`string`&&e.tsType.trim())return e.tsType;if(e.$ref){let t=e.$ref.split(`/`).pop()??`unknown`;return n[t]?t:`unknown`}if(e.const!==void 0)return typeof e.const==`string`?p(e.const):String(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(p).join(` | `);let r=e.anyOf??e.oneOf;if(Array.isArray(r)&&r.length>0)return r.map(e=>m(e,n)).join(` | `);if(e.properties){let t=Array.isArray(e.required)?e.required:[];return`{ ${Object.entries(e.properties).map(([e,r])=>`${/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)?e:JSON.stringify(e)}${t.includes(e)?``:`?`}: ${m(r,n)}`).join(`; `)} }`}let i=Array.isArray(e.type)?e.type:e.type?[e.type]:[];if(i.includes(`array`))return`Array<${m(e.items,n)}>`;if(i.includes(`object`)){let t=e.additionalProperties;return t===void 0||t===!1?`Record<string, unknown>`:`Record<string, ${t===!0||f(t)?`unknown`:m(t,n)}>`}return i.length===0?`unknown`:i.map(e=>t[e]??`unknown`).join(` | `)}function h(e){return e.$ref?`any`:e.const===void 0?e.anyOf||e.oneOf?`any`:e.enum?`string`:Array.isArray(e.type)?e.type.find(e=>e!==`null`)??`string`:e.type??`string`:typeof e.const==`string`?`string`:typeof e.const}function g(e,t={}){if(!e)return{};let n=e.$ref?.split(`/`).pop(),r=n?t[n]:void 0,i=e.required===!0||r?.required===!0||void 0,a=e.env??r?.env,o=e.envName??r?.envName,s=e.envPath??r?.envPath,c=e.path??r?.path,l=e.cliFlag??r?.cliFlag,u=e.cliFlagShort??r?.cliFlagShort,d=e.typeName??r?.typeName,f=e.id??r?.id,p=e.deprecated??r?.deprecated,m=e.deprecationMessage??r?.deprecationMessage,h=e.example??r?.example,g=e.since??r?.since,_=e.see??r?.see,v=e.remarks??r?.remarks,y=e.experimental??r?.experimental,b=e.alpha??r?.alpha,x=e.beta??r?.beta;for(let n of[...e.anyOf??[],...e.oneOf??[]]){let e=n.$ref?.split(`/`).pop(),r=e?t[e]:void 0;i??=n.required===!0||r?.required===!0||void 0,a??=n.env??r?.env,o??=n.envName??r?.envName,s??=n.envPath??r?.envPath,c??=n.path??r?.path,l??=n.cliFlag??r?.cliFlag,u??=n.cliFlagShort??r?.cliFlagShort,d??=n.typeName??r?.typeName,f??=n.id??r?.id,p??=n.deprecated??r?.deprecated,m??=n.deprecationMessage??r?.deprecationMessage,h??=n.example??r?.example,g??=n.since??r?.since,_??=n.see??r?.see,v??=n.remarks??r?.remarks,y??=n.experimental??r?.experimental,b??=n.alpha??r?.alpha,x??=n.beta??r?.beta}return{...a===void 0?{}:{env:a},...o===void 0?{}:{envName:o},...s===void 0?{}:{envPath:s},...c===void 0?{}:{path:c},...l===void 0?{}:{cliFlag:l},...u===void 0?{}:{cliFlagShort:u},...d===void 0?{}:{typeName:d},...f===void 0?{}:{id:f},...i===void 0?{}:{required:i},...p===void 0?{}:{deprecated:p},...m===void 0?{}:{deprecationMessage:m},...h===void 0?{}:{example:h},...g===void 0?{}:{since:g},..._===void 0?{}:{see:_},...v===void 0?{}:{remarks:v},...y===void 0?{}:{experimental:y},...b===void 0?{}:{alpha:b},...x===void 0?{}:{beta:x}}}function _(e,t=!1,n={}){if(e.$ref){let r=e.$ref.split(`/`).pop()??`unknown`,i=n[r],a=e.description??i?.description;if(i?.properties){let o=_(i,t,n);return o.$schema={...o.$schema,type:`object`,tsType:typeof i.tsType==`string`&&i.tsType.trim()?i.tsType:r,...t?{tags:[`@required`]}:{},...a?{description:a}:{},...g(e,n)},o}return{$schema:{type:`any`,tsType:typeof i?.tsType==`string`&&i.tsType.trim()?i.tsType:r,...t?{tags:[`@required`]}:{},...a?{description:a}:{},...g(e,n)}}}if(typeof e.tsType==`string`&&e.tsType.trim()&&(!e.properties||Object.keys(e.properties).length===0))return{$schema:{type:`any`,tsType:e.tsType,...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...g(e,n)}};if(e.properties){let r=t?{$schema:{tags:[`@required`]}}:{};e.description&&(r.$schema={...r.$schema,description:e.description});let i=g(e,n);(i.deprecated!==void 0||i.example!==void 0)&&(r.$schema={...r.$schema,...i});for(let[t,i]of Object.entries(e.properties))r[t]=_(i,e.required?.includes(t)??!1,n);return e.additionalProperties!==void 0&&e.additionalProperties!==!1&&(r.$schema={...r.$schema,allowExtraKeys:!0}),r}let r=h(e),i={};return e.defaultValue===void 0?e.default!==void 0&&(i.$default=e.default):i.$default=e.defaultValue,i.$schema={type:r,tsType:m(e,n),...r===`array`?{items:{type:h(e.items??{})}}:{},...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...e.env?{env:e.env}:{},...e.scope?{scope:e.scope}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{},...g(e,n),...e.defaultValue!==void 0&&e.default!==void 0?{envDefault:e.default}:{}},i}function v(e){let t=s(e);if(!t)return{};let n=t.$defs??{},r=t.$ref?.split(`/`).pop();return _(r&&n[r]?n[r]:t,!1,n)}function y(t){try{return e.compile(t)}catch{return t}}function b(e){return e!==null&&!Array.isArray(e)&&typeof e==`object`}function x(e){let t=typeof e;if(t!==`undefined`&&e!==null)return Array.isArray(e)?`array`:t}function S(e,t,n=`.`){return e?`${e}${n}${t}`:t}function C(e){return[...new Set(e.filter(e=>!!e))]}function w(e){if(e.type===`array`&&!(`items`in e)){let t=C((e.default??[]).map(e=>x(e)));e.items={type:t.length===0?`any`:t.length===1?t[0]:t}}if(e.default===void 0&&(`properties`in e||e.type===`object`||e.type===`any`)){let t=e.properties??{};e.default=Object.fromEntries(Object.entries(t).filter(([,e])=>`default`in e).map(([e,t])=>[e,t.default]))}}function T(e,t,n){if(n.cache.has(t))return n.cache.get(t);let r=`#${t.replace(/\./g,`/`)}`;if(!b(e)){let i=Array.isArray(e)?[...e]:e,a={type:x(e),id:r,default:i};return w(a),n.cache.set(t,a),a}let i={...e.$schema,id:r};n.cache.set(t,i);let a=Object.keys(e).filter(e=>e!==`$resolve`&&e!==`$schema`&&e!==`$default`);if(a.length>0){let r={};i.properties=r;for(let o of a)if(!r[o]){let a=r[o]=T(e[o],S(t,o),n);Array.isArray(a.tags)&&a.tags.includes(`@required`)&&(i.required=i.required||[],i.required.includes(o)||i.required.push(o))}}return i.default===void 0&&`$default`in e&&(i.default=e.$default),i.type||=x(i.default)||(i.properties?`object`:`any`),w(i),i}function E(e){return T(e,``,{root:e,cache:/* @__PURE__ */ new Map})}function D(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e;if(delete t.tsType,typeof t.deprecated==`string`&&(t.deprecationMessage=t.deprecated,t.deprecated=!0),`example`in t){let e=t.example;delete t.example,t.examples=Array.isArray(e)?e:[e]}for(let e of[`properties`,`$defs`]){let n=t[e];if(n&&typeof n==`object`&&!Array.isArray(n))for(let e of Object.values(n))D(e)}for(let e of[`items`,`additionalProperties`])D(t[e]);for(let e of[`anyOf`,`oneOf`,`allOf`]){let n=t[e];if(Array.isArray(n))for(let e of n)D(e)}}function O(e){let t=s(e);if(!t)return{};let n=t.$defs??{},r={};for(let[e,t]of Object.entries(n))r[e]=E(_(t,!1,n));let i=t.$ref?.split(`/`).pop()??t.id??c(e)?.id??`config`;return r[i]||(r[i]=E(_(t,!1,n))),r}function k(e){return E(v(e))}function A(e,t=`base`){let n=e.properties??{},r=n[t];if(r&&r.type===`object`&&r.properties){let{[t]:i,...a}=n,o=(e.required??[]).filter(e=>e!==t);return{base:r,groups:{...e,properties:a,...o.length>0?{required:o}:{}},hasBase:!0}}return{base:e,groups:{...e,properties:{}},hasBase:!1}}function j(e,t=`base`){let n=e.properties??{},r=n[t];if(r?.type!==`object`)return e;let i=r.properties;if(!i)return e;let{[t]:a,...o}=n;return{...e,properties:{...i,...o},required:[...(e.required??[]).filter(e=>e!==t),...r.required??[]]}}export{y as compileZodSchema,j as flattenBaseSchema,r as isSchemaType,a as isZodFunctionSchema,n as isZodSchema,c as metaOf,d as normalizeConfigSchema,D as normalizeJsonSchemaMetadata,m as renderTsType,E as resolveUntypedSchema,A as splitBaseSchema,s as toJsonSchemaSafe,l as toSchemaType,k as zodToJsonSchema,O as zodToSchemaMap,v as zodToUntypedDefinition};
1
+ import"node:path";import"node:url";import.meta.url;import{z as e}from"zod";const t={string:`string`,number:`number`,integer:`number`,boolean:`boolean`,null:`null`};function n(e){return typeof e==`object`&&!!e&&`safeParse`in e}function r(e){return typeof e!=`object`||!e||Array.isArray(e)||n(e)?!1:`type`in e||`properties`in e||`tsType`in e||`id`in e}const i=[`id`,`description`,`required`,`deprecated`,`deprecationMessage`,`example`,`since`,`see`,`remarks`,`experimental`,`alpha`,`beta`,`secret`,`scope`,`public`,`defaultValue`,`envName`,`env`,`envPath`,`path`,`typeName`,`cliFlag`,`cliFlagShort`,`tsType`];function a(e){return n(e)&&e._zod?.def?.type===`function`}function o(e){if(a(e.zodSchema)){let t=c(e.zodSchema);if(typeof t?.tsType==`string`&&t.tsType.trim())return{tsType:t.tsType,...typeof t.description==`string`?{description:t.description}:{}}}return`any`}function s(t,n={}){let r={target:`draft-2020-12`,...n,...n.unrepresentable?{unrepresentable:n.unrepresentable}:{unrepresentable:o}};return e.toJSONSchema(t,r)}function c(e){if(n(e)){let t=e.meta?.();return t&&typeof t==`object`?t:void 0}let t=e,r={};for(let e of i)e===`id`&&typeof t.id==`string`&&t.id.startsWith(`#`)||t[e]!==void 0&&(r[e]=t[e]);return Object.keys(r).length>0?r:void 0}function l(e){return n(e)?k(e):e}function u(e){let t={},n=/* @__PURE__ */ new Set,r={type:`object`,properties:t};for(let i of e){let a=i;if(a.properties&&Object.assign(t,a.properties),Array.isArray(a.required))for(let e of a.required)n.add(e);e.length===1&&(r=i)}return{...r,type:`object`,properties:t,...n.size>0?{required:[...n]}:{}}}function d(e){if(Array.isArray(e)){let t=u(e.map(l));return{[c(t)?.id??`config`]:t}}if(n(e)||r(e)){let t=l(e);return{[c(t)?.id??`config`]:t}}let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?u(r.map(l)):l(r);return t}function f(e){return!e||Object.keys(e).length===0}function p(e){return`'${String(e).replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function m(e,n={}){if(!e||f(e))return`unknown`;if(typeof e.tsType==`string`&&e.tsType.trim())return e.tsType;if(e.$ref){let t=e.$ref.split(`/`).pop()??`unknown`;return n[t]?t:`unknown`}if(e.const!==void 0)return typeof e.const==`string`?p(e.const):String(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(p).join(` | `);let r=e.anyOf??e.oneOf;if(Array.isArray(r)&&r.length>0)return r.map(e=>m(e,n)).join(` | `);if(e.properties){let t=Array.isArray(e.required)?e.required:[];return`{ ${Object.entries(e.properties).map(([e,r])=>`${/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)?e:JSON.stringify(e)}${t.includes(e)?``:`?`}: ${m(r,n)}`).join(`; `)} }`}let i=Array.isArray(e.type)?e.type:e.type?[e.type]:[];if(i.includes(`array`))return`Array<${m(e.items,n)}>`;if(i.includes(`object`)){let t=e.additionalProperties;return t===void 0||t===!1?`Record<string & {}, unknown>`:`Record<string & {}, ${t===!0||f(t)?`unknown`:m(t,n)}>`}return i.length===0?`unknown`:i.map(e=>t[e]??`unknown`).join(` | `)}function h(e){return e.$ref?`any`:e.const===void 0?e.anyOf||e.oneOf?`any`:e.enum?`string`:Array.isArray(e.type)?e.type.find(e=>e!==`null`)??`string`:e.type??`string`:typeof e.const==`string`?`string`:typeof e.const}function g(e,t={}){if(!e)return{};let n=e.$ref?.split(`/`).pop(),r=n?t[n]:void 0,i=e.required===!0||r?.required===!0||void 0,a=e.env??r?.env,o=e.envName??r?.envName,s=e.envPath??r?.envPath,c=e.path??r?.path,l=e.cliFlag??r?.cliFlag,u=e.cliFlagShort??r?.cliFlagShort,d=e.typeName??r?.typeName,f=e.id??r?.id,p=e.deprecated??r?.deprecated,m=e.deprecationMessage??r?.deprecationMessage,h=e.example??r?.example,g=e.since??r?.since,_=e.see??r?.see,v=e.remarks??r?.remarks,y=e.experimental??r?.experimental,b=e.alpha??r?.alpha,x=e.beta??r?.beta;for(let n of[...e.anyOf??[],...e.oneOf??[]]){let e=n.$ref?.split(`/`).pop(),r=e?t[e]:void 0;i??=n.required===!0||r?.required===!0||void 0,a??=n.env??r?.env,o??=n.envName??r?.envName,s??=n.envPath??r?.envPath,c??=n.path??r?.path,l??=n.cliFlag??r?.cliFlag,u??=n.cliFlagShort??r?.cliFlagShort,d??=n.typeName??r?.typeName,f??=n.id??r?.id,p??=n.deprecated??r?.deprecated,m??=n.deprecationMessage??r?.deprecationMessage,h??=n.example??r?.example,g??=n.since??r?.since,_??=n.see??r?.see,v??=n.remarks??r?.remarks,y??=n.experimental??r?.experimental,b??=n.alpha??r?.alpha,x??=n.beta??r?.beta}return{...a===void 0?{}:{env:a},...o===void 0?{}:{envName:o},...s===void 0?{}:{envPath:s},...c===void 0?{}:{path:c},...l===void 0?{}:{cliFlag:l},...u===void 0?{}:{cliFlagShort:u},...d===void 0?{}:{typeName:d},...f===void 0?{}:{id:f},...i===void 0?{}:{required:i},...p===void 0?{}:{deprecated:p},...m===void 0?{}:{deprecationMessage:m},...h===void 0?{}:{example:h},...g===void 0?{}:{since:g},..._===void 0?{}:{see:_},...v===void 0?{}:{remarks:v},...y===void 0?{}:{experimental:y},...b===void 0?{}:{alpha:b},...x===void 0?{}:{beta:x}}}function _(e,t=!1,n={}){if(e.$ref){let r=e.$ref.split(`/`).pop()??`unknown`,i=n[r],a=e.description??i?.description;if(i?.properties){let o=_(i,t,n);return o.$schema={...o.$schema,type:`object`,tsType:typeof i.tsType==`string`&&i.tsType.trim()?i.tsType:r,...t?{tags:[`@required`]}:{},...a?{description:a}:{},...g(e,n)},o}return{$schema:{type:`any`,tsType:typeof i?.tsType==`string`&&i.tsType.trim()?i.tsType:r,...t?{tags:[`@required`]}:{},...a?{description:a}:{},...g(e,n)}}}if(typeof e.tsType==`string`&&e.tsType.trim()&&(!e.properties||Object.keys(e.properties).length===0))return{$schema:{type:`any`,tsType:e.tsType,...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...g(e,n)}};if(e.properties){let r=t?{$schema:{tags:[`@required`]}}:{};e.description&&(r.$schema={...r.$schema,description:e.description});let i=g(e,n);(i.deprecated!==void 0||i.example!==void 0)&&(r.$schema={...r.$schema,...i});for(let[t,i]of Object.entries(e.properties))r[t]=_(i,e.required?.includes(t)??!1,n);return e.additionalProperties!==void 0&&e.additionalProperties!==!1&&(r.$schema={...r.$schema,allowExtraKeys:!0}),r}let r=h(e),i={};return e.defaultValue===void 0?e.default!==void 0&&(i.$default=e.default):i.$default=e.defaultValue,i.$schema={type:r,tsType:m(e,n),...r===`array`?{items:{type:h(e.items??{})}}:{},...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...e.env?{env:e.env}:{},...e.scope?{scope:e.scope}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{},...g(e,n),...e.defaultValue!==void 0&&e.default!==void 0?{envDefault:e.default}:{}},i}function v(e){let t=s(e);if(!t)return{};let n=t.$defs??{},r=t.$ref?.split(`/`).pop();return _(r&&n[r]?n[r]:t,!1,n)}function y(t){try{return e.compile(t)}catch{return t}}function b(e){return e!==null&&!Array.isArray(e)&&typeof e==`object`}function x(e){let t=typeof e;if(t!==`undefined`&&e!==null)return Array.isArray(e)?`array`:t}function S(e,t,n=`.`){return e?`${e}${n}${t}`:t}function C(e){return[...new Set(e.filter(e=>!!e))]}function w(e){if(e.type===`array`&&!(`items`in e)){let t=C((e.default??[]).map(e=>x(e)));e.items={type:t.length===0?`any`:t.length===1?t[0]:t}}if(e.default===void 0&&(`properties`in e||e.type===`object`||e.type===`any`)){let t=e.properties??{};e.default=Object.fromEntries(Object.entries(t).filter(([,e])=>`default`in e).map(([e,t])=>[e,t.default]))}}function T(e,t,n){if(n.cache.has(t))return n.cache.get(t);let r=`#${t.replace(/\./g,`/`)}`;if(!b(e)){let i=Array.isArray(e)?[...e]:e,a={type:x(e),id:r,default:i};return w(a),n.cache.set(t,a),a}let i={...e.$schema,id:r};n.cache.set(t,i);let a=Object.keys(e).filter(e=>e!==`$resolve`&&e!==`$schema`&&e!==`$default`);if(a.length>0){let r={};i.properties=r;for(let o of a)if(!r[o]){let a=r[o]=T(e[o],S(t,o),n);Array.isArray(a.tags)&&a.tags.includes(`@required`)&&(i.required=i.required||[],i.required.includes(o)||i.required.push(o))}}return i.default===void 0&&`$default`in e&&(i.default=e.$default),i.type||=x(i.default)||(i.properties?`object`:`any`),w(i),i}function E(e){return T(e,``,{root:e,cache:/* @__PURE__ */ new Map})}function D(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e;if(delete t.tsType,typeof t.deprecated==`string`&&(t.deprecationMessage=t.deprecated,t.deprecated=!0),`example`in t){let e=t.example;delete t.example,t.examples=Array.isArray(e)?e:[e]}for(let e of[`properties`,`$defs`]){let n=t[e];if(n&&typeof n==`object`&&!Array.isArray(n))for(let e of Object.values(n))D(e)}for(let e of[`items`,`additionalProperties`])D(t[e]);for(let e of[`anyOf`,`oneOf`,`allOf`]){let n=t[e];if(Array.isArray(n))for(let e of n)D(e)}}function O(e){let t=s(e);if(!t)return{};let n=t.$defs??{},r={};for(let[e,t]of Object.entries(n))r[e]=E(_(t,!1,n));let i=t.$ref?.split(`/`).pop()??t.id??c(e)?.id??`config`;return r[i]||(r[i]=E(_(t,!1,n))),r}function k(e){return E(v(e))}function A(e,t=`base`){let n=e.properties??{},r=n[t];if(r&&r.type===`object`&&r.properties){let{[t]:i,...a}=n,o=(e.required??[]).filter(e=>e!==t);return{base:r,groups:{...e,properties:a,...o.length>0?{required:o}:{}},hasBase:!0}}return{base:e,groups:{...e,properties:{}},hasBase:!1}}function j(e,t=`base`){let n=e.properties??{},r=n[t];if(r?.type!==`object`)return e;let i=r.properties;if(!i)return e;let{[t]:a,...o}=n;return{...e,properties:{...i,...o},required:[...(e.required??[]).filter(e=>e!==t),...r.required??[]]}}export{y as compileZodSchema,j as flattenBaseSchema,r as isSchemaType,a as isZodFunctionSchema,n as isZodSchema,c as metaOf,d as normalizeConfigSchema,D as normalizeJsonSchemaMetadata,m as renderTsType,E as resolveUntypedSchema,A as splitBaseSchema,s as toJsonSchemaSafe,l as toSchemaType,k as zodToJsonSchema,O as zodToSchemaMap,v as zodToUntypedDefinition};
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{deepMerge as t,isPlainObject as n}from"../../shared/src/object-utils.js";import{insertMissingJsonc as r,readJsoncFile as i}from"../../shared/src/fs-utils.js";import{errorMessage as a,warningMessage as o}from"../../shared/src/messages.js";import{FORMATTER_PRECEDENCE as s,LINTER_PRECEDENCE as c,resolveFmtTool as l,resolveFmtTools as u,resolveLintTool as d,resolveLintTools as f,sectionConfig as p,sectionEnabled as m}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import h from"node:fs";const g={oxc:`oxc.oxc-vscode`,biome:`biomejs.biome`,prettier:`esbenp.prettier-vscode`,dprint:`dprint.dprint`},_={oxc:{"source.fixAll.oxc":`explicit`},biome:{"quickfix.biome":`explicit`,"source.organizeImports.biome":`explicit`},eslint:{"source.fixAll.eslint":`explicit`}},v=[`javascript`,`javascriptreact`,`typescript`,`typescriptreact`];function y(e){let t=g[e];return t?{"editor.defaultFormatter":t,...Object.fromEntries(v.map(e=>[`[${e}]`,{"editor.defaultFormatter":t}]))}:{}}function b(e,t){for(let[r,i]of Object.entries(t)){let t=e[r];t===void 0?e[r]=i:n(t)&&n(i)&&b(t,i)}}function x(e){return e===!0||n(e)}function S(e,r){if(!n(r))return e;let i=r,a=i.overrides?t(e,i.overrides):e;for(let e of i.exclude??[]){let{[e]:t,...n}=a;a=n}return a}function C(){return{name:`tooling`,enabled:e=>m(e.fmt)||m(e.lint)||m(e.biome),run:e=>{let t=m(e.config.biome),n=u(e.config),r=f(e.config),i=t?s.filter(e=>e===`biome`||n.includes(e)):n,l=t?c.filter(e=>e===`biome`||r.includes(e)):r;return i.length>1&&e.warn(o(`fmt.conflict`,{tools:i.join(`, `),winner:i[0]}),`fmt.conflict`),l.length>1&&e.warn(o(`lint.conflict`,{tools:l.join(`, `),winner:l[0]}),`lint.conflict`),t&&e.warn(a(`deprecated.section.biome`),`deprecated.section.biome`),[]}}}function w(){return{name:`editor-config`,projectTypes:[`monorepo-root`,`project`],enabled:e=>x(m(e.fmt)?p(e.fmt)?.vscode:void 0)||x(m(e.lint)?p(e.lint)?.vscode:void 0),run:t=>{let a=l(t.config),o=d(t.config),s=m(t.config.fmt)?p(t.config.fmt)?.vscode:void 0,c=m(t.config.lint)?p(t.config.lint)?.vscode:void 0,u={};if(x(s)&&a&&Object.assign(u,S(y(a),s)),x(c)&&o&&Object.assign(u,S({"editor.codeActionsOnSave":_[o]??{}},c)),Object.keys(u).length===0)return[];let f=e.join(t.cwd,`.vscode`,`settings.json`),g,v={};if(h.existsSync(f)){g=h.readFileSync(f,`utf-8`);let e=i(f);if(!n(e))return t.warn(`cannot add editor defaults: ${f} is not a JSON object.`,`vscode.settings-invalid`),[];v=e}if(t.check)return[];let C=g===void 0?void 0:r(g,v,u,{ignoreExisting:!0});if(C===void 0){let e=JSON.stringify(v);if(b(v,u),JSON.stringify(v)===e)return[];C=`${JSON.stringify(v,null,4)}\n`}return C!==g&&(h.mkdirSync(e.dirname(f),{recursive:!0}),h.writeFileSync(f,C,`utf-8`)),[]}}}export{w as editorConfigSyncTask,C as toolingConfigTask};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{deepMerge as t,isPlainObject as n}from"../../shared/src/object-utils.js";import{insertMissingJsonc as r,readJsoncFile as i}from"../../shared/src/fs-utils.js";import{errorMessage as a,warningMessage as o}from"../../shared/src/messages.js";import{FORMATTER_PRECEDENCE as s,LINTER_PRECEDENCE as c,resolveFmtTool as l,resolveFmtTools as u,resolveLintTool as d,resolveLintTools as f,sectionConfig as p,sectionEnabled as m}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import h from"node:fs";const g={oxc:`oxc.oxc-vscode`,biome:`biomejs.biome`,prettier:`esbenp.prettier-vscode`,dprint:`dprint.dprint`},_={oxc:{"source.fixAll.oxc":`explicit`},biome:{"source.fixAll.biome":`explicit`,"source.organizeImports.biome":`explicit`},eslint:{"source.fixAll.eslint":`explicit`}},v={oxc:[`javascript`,`javascriptreact`,`typescript`,`typescriptreact`,`json`,`jsonc`,`json5`,`css`,`scss`,`less`,`vue`,`svelte`,`markdown`,`mdx`,`yaml`,`graphql`,`handlebars`,`html`],biome:[`javascript`,`javascriptreact`,`typescript`,`typescriptreact`,`json`,`jsonc`,`css`,`graphql`],prettier:[`javascript`,`javascriptreact`,`typescript`,`typescriptreact`,`json`,`jsonc`,`json5`,`css`,`scss`,`less`,`vue`,`svelte`,`markdown`,`mdx`,`yaml`,`graphql`,`handlebars`,`html`],dprint:[`javascript`,`javascriptreact`,`typescript`,`typescriptreact`,`json`,`jsonc`,`markdown`,`toml`]};function y(e){let t=g[e];if(!t)return{};let n=v[e]??v.prettier??[];return{"editor.defaultFormatter":t,"editor.formatOnSave":!0,...e===`oxc`?{"editor.formatOnSaveMode":`file`}:{},...Object.fromEntries(n.map(e=>[`[${e}]`,{"editor.defaultFormatter":t,"editor.formatOnSave":!0}]))}}function b(e,t){for(let[r,i]of Object.entries(t)){let t=e[r];t===void 0?e[r]=i:n(t)&&n(i)&&b(t,i)}}function x(e){return e===!0||n(e)}function S(e,r){if(!n(r))return e;let i=r,a=i.overrides?t(e,i.overrides):e;for(let e of i.exclude??[]){let{[e]:t,...n}=a;a=n}return a}function C(){return{name:`tooling`,enabled:e=>m(e.fmt)||m(e.lint)||m(e.biome),run:e=>{let t=m(e.config.biome),n=u(e.config),r=f(e.config),i=t?s.filter(e=>e===`biome`||n.includes(e)):n,l=t?c.filter(e=>e===`biome`||r.includes(e)):r;return i.length>1&&e.warn(o(`fmt.conflict`,{tools:i.join(`, `),winner:i[0]}),`fmt.conflict`),l.length>1&&e.warn(o(`lint.conflict`,{tools:l.join(`, `),winner:l[0]}),`lint.conflict`),t&&e.warn(a(`deprecated.section.biome`),`deprecated.section.biome`),[]}}}function w(){return{name:`editor-config`,projectTypes:[`monorepo-root`,`project`],enabled:e=>x(m(e.fmt)?p(e.fmt)?.vscode:void 0)||x(m(e.lint)?p(e.lint)?.vscode:void 0),run:t=>{let a=l(t.config),o=d(t.config),s=m(t.config.fmt)?p(t.config.fmt)?.vscode:void 0,c=m(t.config.lint)?p(t.config.lint)?.vscode:void 0,u={};if(x(s)&&a&&Object.assign(u,S(y(a),s)),x(c)&&o&&Object.assign(u,S({"editor.codeActionsOnSave":_[o]??{}},c)),Object.keys(u).length===0)return[];let f=e.join(t.cwd,`.vscode`,`settings.json`),g,v={};if(h.existsSync(f)){g=h.readFileSync(f,`utf-8`);let e=i(f);if(!n(e))return t.warn(`cannot add editor defaults: ${f} is not a JSON object.`,`vscode.settings-invalid`),[];v=e}if(t.check)return[];let C=g===void 0?void 0:r(g,v,u,{ignoreExisting:!0});if(C===void 0){let e=JSON.stringify(v);if(b(v,u),JSON.stringify(v)===e)return[];C=`${JSON.stringify(v,null,4)}\n`}return C!==g&&(h.mkdirSync(e.dirname(f),{recursive:!0}),h.writeFileSync(f,C,`utf-8`)),[]}}}export{w as editorConfigSyncTask,C as toolingConfigTask};
@@ -10,11 +10,11 @@ import { TsconfigFileNames, detectProjectType, resolveProjectType } from "./proj
10
10
  import { ProviderRegistryPath, addGlobalProviderRegistry, addProjectProviderRegistry, defaultGlobalProvidersDir, globalProviderRegistryPath, legacyProviderRegistryPath, providerRegistryPath, providerRegistryPaths, readAllProviders, readAllProvidersSync, readGlobalProviders, readProviderRegistry, removeGlobalProviderRegistry, removeProjectProviderRegistry, setGlobalProviderRegistries, setProjectProviderRegistries, writeGlobalProviders, writeProviderRegistry } from "./provider-registry.js";
11
11
  import { SelectProjectsOptions, SelectedProject, selectProjects } from "./select.js";
12
12
  import { ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, resetProjects, resetToolchain } from "./reset.js";
13
- import { RemovedFile, RunSyncOptions, SyncResult, runSync } from "./sync.js";
13
+ import { RemovedFile, RunSyncOptions, SyncResult, runSync, selectSyncTasks } from "./sync.js";
14
14
  import { VscodeSyncOptions, vscodeSyncTask } from "./vscode.js";
15
- import { RunWatchOptions, resolveWatchGlobs, runWatch } from "./watch.js";
15
+ import { DEFAULT_WATCH_GLOBS, ResolveWatchInputFilesOptions, ResolvedWatchInputFiles, RunWatchOptions, resolveWatchGlobs, resolveWatchInputFiles, runWatch } from "./watch.js";
16
16
  declare namespace index_d_exports {
17
- export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, FORMAT_IMPORT_GROUP_DEFAULTS_ENV, FORMAT_IMPORT_GROUP_DEFAULTS_SETTING, FileOrigin, IGNORED_DIRS, LoadToolchainConfigOptions, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ProviderRegistryPath, RemovedFile, ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, ResolveFmtCustomGroupsInput, ResolveFmtCustomGroupsOptions, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, TIMESTAMPS_FILE, TsconfigFileNames, VscodeSyncOptions, addGlobalProviderRegistry, addProjectProviderRegistry, buildProjectGraph, defaultGlobalProvidersDir, detectPackageManager, detectProjectType, editorConfigSyncTask, ensureDbxGitignore, findConfigFile, findParentConfigFile, globalProviderRegistryPath, legacyProviderRegistryPath, loadToolchainConfig, mergeToolchainConfig, orderProjects, projectGraphPath, providerRegistryPath, providerRegistryPaths, readAllProviders, readAllProvidersSync, readGlobalProviders, readManifest, readProjectGraph, readProviderRegistry, readSyncedAt, removeGlobalProviderRegistry, removeProjectProviderRegistry, resetProjects, resetToolchain, resolveFmtCustomGroups, resolveProjectType, resolveWatchGlobs, runSync, runWatch, selectProjects, setGlobalProviderRegistries, setProjectProviderRegistries, toolingConfigTask, vscodeSyncTask, writeGlobalProviders, writeManifest, writeProjectGraph, writeProviderRegistry };
17
+ export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, DEFAULT_WATCH_GLOBS, FORMAT_IMPORT_GROUP_DEFAULTS_ENV, FORMAT_IMPORT_GROUP_DEFAULTS_SETTING, FileOrigin, IGNORED_DIRS, LoadToolchainConfigOptions, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ProviderRegistryPath, RemovedFile, ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, ResolveFmtCustomGroupsInput, ResolveFmtCustomGroupsOptions, ResolveWatchInputFilesOptions, ResolvedWatchInputFiles, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, TIMESTAMPS_FILE, TsconfigFileNames, VscodeSyncOptions, addGlobalProviderRegistry, addProjectProviderRegistry, buildProjectGraph, defaultGlobalProvidersDir, detectPackageManager, detectProjectType, editorConfigSyncTask, ensureDbxGitignore, findConfigFile, findParentConfigFile, globalProviderRegistryPath, legacyProviderRegistryPath, loadToolchainConfig, mergeToolchainConfig, orderProjects, projectGraphPath, providerRegistryPath, providerRegistryPaths, readAllProviders, readAllProvidersSync, readGlobalProviders, readManifest, readProjectGraph, readProviderRegistry, readSyncedAt, removeGlobalProviderRegistry, removeProjectProviderRegistry, resetProjects, resetToolchain, resolveFmtCustomGroups, resolveProjectType, resolveWatchGlobs, resolveWatchInputFiles, runSync, runWatch, selectProjects, selectSyncTasks, setGlobalProviderRegistries, setProjectProviderRegistries, toolingConfigTask, vscodeSyncTask, writeGlobalProviders, writeManifest, writeProjectGraph, writeProviderRegistry };
18
18
  }
19
19
  //#endregion
20
- export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, FORMAT_IMPORT_GROUP_DEFAULTS_ENV, FORMAT_IMPORT_GROUP_DEFAULTS_SETTING, FileOrigin, IGNORED_DIRS, LoadToolchainConfigOptions, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ProviderRegistryPath, RemovedFile, ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, ResolveFmtCustomGroupsInput, ResolveFmtCustomGroupsOptions, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, TIMESTAMPS_FILE, TsconfigFileNames, VscodeSyncOptions, addGlobalProviderRegistry, addProjectProviderRegistry, buildProjectGraph, defaultGlobalProvidersDir, detectPackageManager, detectProjectType, editorConfigSyncTask, ensureDbxGitignore, findConfigFile, findParentConfigFile, globalProviderRegistryPath, index_d_exports, legacyProviderRegistryPath, loadToolchainConfig, mergeToolchainConfig, orderProjects, projectGraphPath, providerRegistryPath, providerRegistryPaths, readAllProviders, readAllProvidersSync, readGlobalProviders, readManifest, readProjectGraph, readProviderRegistry, readSyncedAt, removeGlobalProviderRegistry, removeProjectProviderRegistry, resetProjects, resetToolchain, resolveFmtCustomGroups, resolveProjectType, resolveWatchGlobs, runSync, runWatch, selectProjects, setGlobalProviderRegistries, setProjectProviderRegistries, toolingConfigTask, vscodeSyncTask, writeGlobalProviders, writeManifest, writeProjectGraph, writeProviderRegistry };
20
+ export { BuildProjectGraphOptions, DBX_GITIGNORE_BLOCK, DEFAULT_WATCH_GLOBS, FORMAT_IMPORT_GROUP_DEFAULTS_ENV, FORMAT_IMPORT_GROUP_DEFAULTS_SETTING, FileOrigin, IGNORED_DIRS, LoadToolchainConfigOptions, LoadedConfig, MANIFEST_DIR, MANIFEST_FILE, Manifest, PackageManager, ProjectGraph, ProjectNode, ProviderRegistryPath, RemovedFile, ResetProjectsOptions, ResetProjectsResult, ResetRestore, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, ResolveFmtCustomGroupsInput, ResolveFmtCustomGroupsOptions, ResolveWatchInputFilesOptions, ResolvedWatchInputFiles, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, SyncResult, TIMESTAMPS_FILE, TsconfigFileNames, VscodeSyncOptions, addGlobalProviderRegistry, addProjectProviderRegistry, buildProjectGraph, defaultGlobalProvidersDir, detectPackageManager, detectProjectType, editorConfigSyncTask, ensureDbxGitignore, findConfigFile, findParentConfigFile, globalProviderRegistryPath, index_d_exports, legacyProviderRegistryPath, loadToolchainConfig, mergeToolchainConfig, orderProjects, projectGraphPath, providerRegistryPath, providerRegistryPaths, readAllProviders, readAllProvidersSync, readGlobalProviders, readManifest, readProjectGraph, readProviderRegistry, readSyncedAt, removeGlobalProviderRegistry, removeProjectProviderRegistry, resetProjects, resetToolchain, resolveFmtCustomGroups, resolveProjectType, resolveWatchGlobs, resolveWatchInputFiles, runSync, runWatch, selectProjects, selectSyncTasks, setGlobalProviderRegistries, setProjectProviderRegistries, toolingConfigTask, vscodeSyncTask, writeGlobalProviders, 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{editorConfigSyncTask as t,toolingConfigTask as n}from"./editor-config.js";import{detectProjectType as r,resolveProjectType as i}from"./project-type.js";import{findConfigFile as a,findParentConfigFile as o,loadToolchainConfig as s,mergeToolchainConfig as c}from"./loader.js";import{IGNORED_DIRS as l,buildProjectGraph as u,detectPackageManager as d,orderProjects as f,projectGraphPath as p,readProjectGraph as m,writeProjectGraph as h}from"./graph.js";import{FORMAT_IMPORT_GROUP_DEFAULTS_ENV as g,FORMAT_IMPORT_GROUP_DEFAULTS_SETTING as _,resolveFmtCustomGroups as v}from"./fmt-groups.js";import{DBX_GITIGNORE_BLOCK as y,ensureDbxGitignore as b}from"./gitignore.js";import{MANIFEST_DIR as x,MANIFEST_FILE as S,TIMESTAMPS_FILE as C,readManifest as w,readSyncedAt as T,writeManifest as E}from"./manifest.js";import{addGlobalProviderRegistry as D,addProjectProviderRegistry as O,defaultGlobalProvidersDir as k,globalProviderRegistryPath as A,legacyProviderRegistryPath as j,providerRegistryPath as M,providerRegistryPaths as N,readAllProviders as P,readAllProvidersSync as F,readGlobalProviders as I,readProviderRegistry as L,removeGlobalProviderRegistry as R,removeProjectProviderRegistry as z,setGlobalProviderRegistries as B,setProjectProviderRegistries as V,writeGlobalProviders as H,writeProviderRegistry as U}from"./provider-registry.js";import{selectProjects as W}from"./select.js";import{resetProjects as G,resetToolchain as K}from"./reset.js";import{runSync as q}from"./sync.js";import{vscodeSyncTask as J}from"./vscode.js";import{resolveWatchGlobs as Y,runWatch as X}from"./watch.js";var Z=/* @__PURE__ */ e({DBX_GITIGNORE_BLOCK:()=>y,FORMAT_IMPORT_GROUP_DEFAULTS_ENV:()=>g,FORMAT_IMPORT_GROUP_DEFAULTS_SETTING:()=>_,IGNORED_DIRS:()=>l,MANIFEST_DIR:()=>x,MANIFEST_FILE:()=>S,TIMESTAMPS_FILE:()=>C,addGlobalProviderRegistry:()=>D,addProjectProviderRegistry:()=>O,buildProjectGraph:()=>u,defaultGlobalProvidersDir:()=>k,detectPackageManager:()=>d,detectProjectType:()=>r,editorConfigSyncTask:()=>t,ensureDbxGitignore:()=>b,findConfigFile:()=>a,findParentConfigFile:()=>o,globalProviderRegistryPath:()=>A,legacyProviderRegistryPath:()=>j,loadToolchainConfig:()=>s,mergeToolchainConfig:()=>c,orderProjects:()=>f,projectGraphPath:()=>p,providerRegistryPath:()=>M,providerRegistryPaths:()=>N,readAllProviders:()=>P,readAllProvidersSync:()=>F,readGlobalProviders:()=>I,readManifest:()=>w,readProjectGraph:()=>m,readProviderRegistry:()=>L,readSyncedAt:()=>T,removeGlobalProviderRegistry:()=>R,removeProjectProviderRegistry:()=>z,resetProjects:()=>G,resetToolchain:()=>K,resolveFmtCustomGroups:()=>v,resolveProjectType:()=>i,resolveWatchGlobs:()=>Y,runSync:()=>q,runWatch:()=>X,selectProjects:()=>W,setGlobalProviderRegistries:()=>B,setProjectProviderRegistries:()=>V,toolingConfigTask:()=>n,vscodeSyncTask:()=>J,writeGlobalProviders:()=>H,writeManifest:()=>E,writeProjectGraph:()=>h,writeProviderRegistry:()=>U});export{y as DBX_GITIGNORE_BLOCK,g as FORMAT_IMPORT_GROUP_DEFAULTS_ENV,_ as FORMAT_IMPORT_GROUP_DEFAULTS_SETTING,l as IGNORED_DIRS,x as MANIFEST_DIR,S as MANIFEST_FILE,C as TIMESTAMPS_FILE,D as addGlobalProviderRegistry,O as addProjectProviderRegistry,u as buildProjectGraph,k as defaultGlobalProvidersDir,d as detectPackageManager,r as detectProjectType,t as editorConfigSyncTask,b as ensureDbxGitignore,a as findConfigFile,o as findParentConfigFile,A as globalProviderRegistryPath,j as legacyProviderRegistryPath,s as loadToolchainConfig,c as mergeToolchainConfig,f as orderProjects,p as projectGraphPath,M as providerRegistryPath,N as providerRegistryPaths,P as readAllProviders,F as readAllProvidersSync,I as readGlobalProviders,w as readManifest,m as readProjectGraph,L as readProviderRegistry,T as readSyncedAt,R as removeGlobalProviderRegistry,z as removeProjectProviderRegistry,G as resetProjects,K as resetToolchain,v as resolveFmtCustomGroups,i as resolveProjectType,Y as resolveWatchGlobs,q as runSync,X as runWatch,W as selectProjects,B as setGlobalProviderRegistries,V as setProjectProviderRegistries,Z as src_exports,n as toolingConfigTask,J as vscodeSyncTask,H as writeGlobalProviders,E as writeManifest,h as writeProjectGraph,U as writeProviderRegistry};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{editorConfigSyncTask as t,toolingConfigTask as n}from"./editor-config.js";import{detectProjectType as r,resolveProjectType as i}from"./project-type.js";import{findConfigFile as a,findParentConfigFile as o,loadToolchainConfig as s,mergeToolchainConfig as c}from"./loader.js";import{IGNORED_DIRS as l,buildProjectGraph as u,detectPackageManager as d,orderProjects as f,projectGraphPath as p,readProjectGraph as m,writeProjectGraph as h}from"./graph.js";import{FORMAT_IMPORT_GROUP_DEFAULTS_ENV as g,FORMAT_IMPORT_GROUP_DEFAULTS_SETTING as _,resolveFmtCustomGroups as v}from"./fmt-groups.js";import{DBX_GITIGNORE_BLOCK as y,ensureDbxGitignore as b}from"./gitignore.js";import{MANIFEST_DIR as x,MANIFEST_FILE as S,TIMESTAMPS_FILE as C,readManifest as w,readSyncedAt as T,writeManifest as E}from"./manifest.js";import{addGlobalProviderRegistry as D,addProjectProviderRegistry as O,defaultGlobalProvidersDir as k,globalProviderRegistryPath as A,legacyProviderRegistryPath as j,providerRegistryPath as M,providerRegistryPaths as N,readAllProviders as P,readAllProvidersSync as F,readGlobalProviders as I,readProviderRegistry as L,removeGlobalProviderRegistry as R,removeProjectProviderRegistry as z,setGlobalProviderRegistries as B,setProjectProviderRegistries as V,writeGlobalProviders as H,writeProviderRegistry as U}from"./provider-registry.js";import{selectProjects as W}from"./select.js";import{resetProjects as G,resetToolchain as K}from"./reset.js";import{runSync as q,selectSyncTasks as J}from"./sync.js";import{vscodeSyncTask as Y}from"./vscode.js";import{DEFAULT_WATCH_GLOBS as X,resolveWatchGlobs as Z,resolveWatchInputFiles as Q,runWatch as $}from"./watch.js";var ee=/* @__PURE__ */ e({DBX_GITIGNORE_BLOCK:()=>y,DEFAULT_WATCH_GLOBS:()=>X,FORMAT_IMPORT_GROUP_DEFAULTS_ENV:()=>g,FORMAT_IMPORT_GROUP_DEFAULTS_SETTING:()=>_,IGNORED_DIRS:()=>l,MANIFEST_DIR:()=>x,MANIFEST_FILE:()=>S,TIMESTAMPS_FILE:()=>C,addGlobalProviderRegistry:()=>D,addProjectProviderRegistry:()=>O,buildProjectGraph:()=>u,defaultGlobalProvidersDir:()=>k,detectPackageManager:()=>d,detectProjectType:()=>r,editorConfigSyncTask:()=>t,ensureDbxGitignore:()=>b,findConfigFile:()=>a,findParentConfigFile:()=>o,globalProviderRegistryPath:()=>A,legacyProviderRegistryPath:()=>j,loadToolchainConfig:()=>s,mergeToolchainConfig:()=>c,orderProjects:()=>f,projectGraphPath:()=>p,providerRegistryPath:()=>M,providerRegistryPaths:()=>N,readAllProviders:()=>P,readAllProvidersSync:()=>F,readGlobalProviders:()=>I,readManifest:()=>w,readProjectGraph:()=>m,readProviderRegistry:()=>L,readSyncedAt:()=>T,removeGlobalProviderRegistry:()=>R,removeProjectProviderRegistry:()=>z,resetProjects:()=>G,resetToolchain:()=>K,resolveFmtCustomGroups:()=>v,resolveProjectType:()=>i,resolveWatchGlobs:()=>Z,resolveWatchInputFiles:()=>Q,runSync:()=>q,runWatch:()=>$,selectProjects:()=>W,selectSyncTasks:()=>J,setGlobalProviderRegistries:()=>B,setProjectProviderRegistries:()=>V,toolingConfigTask:()=>n,vscodeSyncTask:()=>Y,writeGlobalProviders:()=>H,writeManifest:()=>E,writeProjectGraph:()=>h,writeProviderRegistry:()=>U});export{y as DBX_GITIGNORE_BLOCK,X as DEFAULT_WATCH_GLOBS,g as FORMAT_IMPORT_GROUP_DEFAULTS_ENV,_ as FORMAT_IMPORT_GROUP_DEFAULTS_SETTING,l as IGNORED_DIRS,x as MANIFEST_DIR,S as MANIFEST_FILE,C as TIMESTAMPS_FILE,D as addGlobalProviderRegistry,O as addProjectProviderRegistry,u as buildProjectGraph,k as defaultGlobalProvidersDir,d as detectPackageManager,r as detectProjectType,t as editorConfigSyncTask,b as ensureDbxGitignore,a as findConfigFile,o as findParentConfigFile,A as globalProviderRegistryPath,j as legacyProviderRegistryPath,s as loadToolchainConfig,c as mergeToolchainConfig,f as orderProjects,p as projectGraphPath,M as providerRegistryPath,N as providerRegistryPaths,P as readAllProviders,F as readAllProvidersSync,I as readGlobalProviders,w as readManifest,m as readProjectGraph,L as readProviderRegistry,T as readSyncedAt,R as removeGlobalProviderRegistry,z as removeProjectProviderRegistry,G as resetProjects,K as resetToolchain,v as resolveFmtCustomGroups,i as resolveProjectType,Z as resolveWatchGlobs,Q as resolveWatchInputFiles,q as runSync,$ as runWatch,W as selectProjects,J as selectSyncTasks,B as setGlobalProviderRegistries,V as setProjectProviderRegistries,ee as src_exports,n as toolingConfigTask,Y as vscodeSyncTask,H as writeGlobalProviders,E as writeManifest,h as writeProjectGraph,U as writeProviderRegistry};
@@ -1 +1 @@
1
- import{default as e}from"node:path";import{pathToFileURL as t}from"node:url";import.meta.url;import{deepMerge as n,isPlainObject as r}from"../../shared/src/object-utils.js";import{readJsonAt as i}from"../../shared/src/fs-utils.js";import{projectFromPackageJson as a}from"../../shared/src/project.js";import{CONFIG_FILE_NAMES as o,resolveTokens as s}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{resolveProjectType as c}from"./project-type.js";import{createRequire as l}from"node:module";import u from"node:fs";function d(e){return e instanceof Error?e.message:String(e)}function f(t=process.cwd()){for(let n of o){let r=e.resolve(t,n);if(u.existsSync(r))return r}}function p(t=process.cwd()){let n=e.resolve(t);if(u.existsSync(e.join(n,`.git`)))return;let r=e.dirname(n);for(;;){let t=f(r);if(t)return t;if(u.existsSync(e.join(r,`.git`)))return;let n=e.dirname(r);if(n===r)return;r=n}}function m(e){let t=e?.code;return t===`ERR_UNKNOWN_FILE_EXTENSION`||t===`ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`}function h(e){let t=e;for(let e=0;e<2&&t&&typeof t==`object`&&`default`in t&&Object.keys(t).every(e=>e==="default"||e==="__esModule");e++)t=t.default;return t}const g=l(import.meta.url);let _=0;async function v(e,n=!1){if(e.endsWith(`.json`))return JSON.parse(u.readFileSync(e,`utf-8`).replace(/^\uFEFF/,``));if(n)try{delete g.cache[e]}catch{}let r=t(e).href,i=n?`${r}?dbx=${Date.now()}-${++_}`:r;try{let e=await import(i);return e.default??e}catch(e){if(!m(e))throw e;let{tsImport:t}=await import(`tsx/esm/api`);return h(await t(i,import.meta.url))}}async function y(e,t=!1){let n=await b(await v(e,t)),r=n&&typeof n==`object`?n.toolchain:void 0;return r&&typeof r==`object`?r:{}}async function b(e){let t=await e;return typeof t==`function`&&(t=await t()),t}const x=/* @__PURE__ */ new Set([`name`,`scope`,`description`,`type`]),S=/* @__PURE__ */ new Set([`test`,`run`]);function C(e){if(!r(e))return e;let t=Object.fromEntries(Object.entries(e).filter(([e])=>!S.has(e)));return Object.keys(t).length>0?t:void 0}function w(e,t){let{hooks:r,project:i,ci:a,changelog:o,catalogs:s,tsconfig:c,vite:l,...u}=e,d=u,f=C(l);if(f!==void 0&&(d={...d,vite:f}),t.project?.inherit!==!1&&i){let e=Object.fromEntries(Object.entries(i).filter(([e])=>!x.has(e)));Object.keys(e).length>0&&(d={...d,project:e})}return n(d,t)}async function T(t=process.cwd(),n={}){if(n.config&&n.noConfig)throw Error("`--config` and `--no-config` cannot be used together.");let r=n.noConfig?void 0:n.config?e.isAbsolute(n.config)?n.config:e.resolve(t,n.config):f(t),o=n.noConfig?void 0:p(t),l=n.tolerant??!1,u=n.fresh??!1,m={},h={},g,_;if(o)try{g=await y(o,u),m=g}catch(e){if(!l)throw e;_=`failed to load ${o}: ${d(e)}`}if(r)try{let e=await y(r,u);h=e,m=o&&!_?w(m,e):e}catch(e){if(!l)throw e;_=`failed to load ${r}: ${d(e)}`}else if(g){let{hooks:e,...t}=m;m=t}let v=i(t,`package.json`),b={...v?a(v):void 0,...m.project??void 0},x=s({...m,project:b});n.skipHooks||await m.hooks?.afterLoad?.({cwd:t,config:m,tokens:x,...r?{path:r}:{}});let S=m.tsconfig===void 0&&g?.tsconfig!==void 0?{...m,tsconfig:g.tsconfig}:m;return{config:m,ownConfig:h,...r?{path:r}:{},...o?{parentPath:o}:{},..._?{error:_}:{},tokens:x,projectType:c(t,S)}}export{f as findConfigFile,p as findParentConfigFile,T as loadToolchainConfig,w as mergeToolchainConfig};
1
+ import{default as e}from"node:path";import{pathToFileURL as t}from"node:url";import.meta.url;import{deepMerge as n,isPlainObject as r}from"../../shared/src/object-utils.js";import{readJsonAt as i}from"../../shared/src/fs-utils.js";import{projectFromPackageJson as a}from"../../shared/src/project.js";import{CONFIG_FILE_NAMES as o,resolveTokens as s}from"../../shared/src/toolchain.js";import"../../shared/src/index.js";import{resolveProjectType as c}from"./project-type.js";import{createRequire as l}from"node:module";import u from"node:fs";function d(e){return e instanceof Error?e.message:String(e)}function f(t=process.cwd()){for(let n of o){let r=e.resolve(t,n);if(u.existsSync(r))return r}}function p(t=process.cwd()){let n=e.resolve(t);if(u.existsSync(e.join(n,`.git`)))return;let r=e.dirname(n);for(;;){let t=f(r);if(t)return t;if(u.existsSync(e.join(r,`.git`)))return;let n=e.dirname(r);if(n===r)return;r=n}}function m(e){let t=e?.code;return t===`ERR_UNKNOWN_FILE_EXTENSION`||t===`ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`}function h(e){let t=e;for(let e=0;e<2&&t&&typeof t==`object`&&`default`in t&&Object.keys(t).every(e=>e==="default"||e==="__esModule");e++)t=t.default;return t}const g=l(import.meta.url);let _=0;async function v(e,n=!1){if(e.endsWith(`.json`))return JSON.parse(u.readFileSync(e,`utf-8`).replace(/^\uFEFF/,``));if(n)try{delete g.cache[e]}catch{}let r=t(e).href,i=n?`${r}?dbx=${Date.now()}-${++_}`:r;try{let e=await import(i);return e.default??e}catch(e){if(!m(e))throw e;let{tsImport:t}=await import(`tsx/esm/api`);return h(await t(i,import.meta.url))}}async function y(e,t=!1){let n=await b(await v(e,t)),r=n&&typeof n==`object`?n.toolchain:void 0;return r&&typeof r==`object`?r:{}}async function b(e){let t=await e;return typeof t==`function`&&(t=await t()),t}const x=/* @__PURE__ */ new Set([`name`,`scope`,`description`,`type`]);function S(e){if(!e)return;let t=Object.fromEntries(Object.entries(e).filter(([e])=>!x.has(e)));return Object.keys(t).length>0?t:void 0}const C=/* @__PURE__ */ new Set([`test`,`run`]);function w(e){if(!r(e))return e;let t=Object.fromEntries(Object.entries(e).filter(([e])=>!C.has(e)));return Object.keys(t).length>0?t:void 0}function T(e,t){let{hooks:r,project:i,ci:a,changelog:o,catalogs:s,tsconfig:c,vite:l,...u}=e,d=u,f=w(l);if(f!==void 0&&(d={...d,vite:f}),t.project?.inherit!==!1){let e=S(i);e&&(d={...d,project:e})}return n(d,t)}async function E(t=process.cwd(),n={}){if(n.config&&n.noConfig)throw Error("`--config` and `--no-config` cannot be used together.");let r=n.noConfig?void 0:n.config?e.isAbsolute(n.config)?n.config:e.resolve(t,n.config):f(t),o=n.noConfig?void 0:p(t),l=n.tolerant??!1,u=n.fresh??!1,m={},h={},g,_;if(o)try{g=await y(o,u),m=g}catch(e){if(!l)throw e;_=`failed to load ${o}: ${d(e)}`}if(r)try{let e=await y(r,u);h=e,m=o&&!_?T(m,e):e}catch(e){if(!l)throw e;_=`failed to load ${r}: ${d(e)}`}else g&&(m=T(g,{}));let v=i(t,`package.json`),b={...v?a(v):void 0,...m.project??void 0},x=s({...m,project:b});n.skipHooks||await m.hooks?.afterLoad?.({cwd:t,config:m,tokens:x,...r?{path:r}:{}});let S=m.tsconfig===void 0&&g?.tsconfig!==void 0?{...m,tsconfig:g.tsconfig}:m;return{config:m,ownConfig:h,...r?{path:r}:{},...o?{parentPath:o}:{},..._?{error:_}:{},tokens:x,projectType:c(t,S)}}export{f as findConfigFile,p as findParentConfigFile,E as loadToolchainConfig,T as mergeToolchainConfig};
@@ -8,6 +8,8 @@ import "../../shared/src/index.js";
8
8
  export interface RunSyncOptions {
9
9
  /** The task list to run. */
10
10
  tasks: SyncTask[];
11
+ /** Only run the named task(s); implies `prune: false`. */
12
+ only?: string[];
11
13
  /** The project root. */
12
14
  cwd: string;
13
15
  /** The loaded config. */
@@ -20,6 +22,8 @@ export interface RunSyncOptions {
20
22
  projectType?: ProjectType;
21
23
  /** Dry-run: report drift and exit non-zero without writing. */
22
24
  check?: boolean;
25
+ /** Remove managed files no longer produced by the active tasks (default true). */
26
+ prune?: boolean;
23
27
  /** Suppress logging. */
24
28
  quiet?: boolean;
25
29
  /** Custom logger (default `logger.info`). */
@@ -43,6 +47,8 @@ export interface SyncResult {
43
47
  /** Whether disk already matched the generated output. */
44
48
  upToDate: boolean;
45
49
  }
50
+ /** Select sync tasks by name; throws when a name is unknown. */
51
+ export declare function selectSyncTasks(tasks: SyncTask[], only: string[]): SyncTask[];
46
52
  /**
47
53
  * Run every enabled sync task, writing the managed files and pruning files that
48
54
  * are no longer generated. With `check: true` nothing is written: drift is