@deltabox/toolchain 1.6.1 → 1.7.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.
package/CHANGELOG.md CHANGED
@@ -1,122 +1,134 @@
1
1
  # Changelog
2
2
 
3
- ## 1.6.1 (October 2026)
3
+ ## 1.7.0 (October 2026)
4
4
 
5
5
  <!-- release:start -->
6
6
 
7
- ### Documentation
8
- #### Config
9
- - Inline nested sub-schemas in the generated reference ([#5a9a9e3](https://github.com/deltabox-studio/toolchain/commit/5a9a9e3) by [T0chi](https://github.com/T0chi))
10
- - \
7
+ ### New features
8
+ #### Vscode
9
+ - Let users choose the project or bundled dbx ([#6cdd686](https://github.com/deltabox-studio/toolchain/commit/6cdd686) by [T0chi](https://github.com/T0chi))
10
+ - The extension had no awareness of a workspace's own @deltabox/toolchain, so its auto-sync ran the bundled (possibly older) dbx. On activation it now detects the workspace dbx, shows a notification with action buttons (project vs bundled), remembers the choice per workspace (workspaceState) and falls back to the bundled CLI. Adds the deltabox.toolchain.chooseDbxSource command + a getDbxSource/setDbxSource API.
11
+ #### Shared
12
+ - Sanitize shell-escape artifacts in generated markdown ([#fcac95e](https://github.com/deltabox-studio/toolchain/commit/fcac95e) by [T0chi](https://github.com/T0chi))
13
+ - Add stripControlChars/stripEscapeArtifacts/sanitizeText to the shared string utils: they strip the predictable shell-escape artifacts (a backslash before a control character) and any remaining bare control characters, while leaving ordinary backslashes and normal whitespace alone. Apply them to the config markdown generator's descriptions and the changelog commit reader/formatter, and cap generated headings at h6 (VitePress dropped the literal #######).
14
+ ### Chores
15
+ #### Changelog
16
+ - Repair escaped commit text and label code refs ([#1425419](https://github.com/deltabox-studio/toolchain/issues/1425419) by [T0chi](https://github.com/T0chi))
17
+ - PowerShell interpreted the escaped backticks in the commit bodies as control-character escapes, so the changelog carried backslash+control artifacts (TAB/CR/LF/BS/FF/VT) and mojibake. Repair the affected 1.4.1-1.6.1 entries and add backticks around commands, paths, flags, types and identifiers throughout the file.
11
18
 
12
19
  <!-- release:end -->
13
20
 
14
21
 
22
+ ## 1.6.1 (October 2026)
23
+
24
+ ### Documentation
25
+ #### Config
26
+ - Inline nested sub-schemas in the generated reference ([#5a9a9e3](https://github.com/deltabox-studio/toolchain/commit/5a9a9e3) by [T0chi](https://github.com/T0chi))
27
+ - `renderConfigFileMarkdown` only recursed into inline objects, so named sub-schemas (`changelog.workflows`, `changelog.versioning.target/workspaces`, `templates.sources[]`, `project.type`) rendered as a bare type name. It now resolves the JSON Schema `$defs` and expands objects, object unions and array items inline (each named type once per section), so the reference documents every option with types, required markers, defaults and descriptions.
28
+
15
29
  ## 1.6.0 (October 2026)
16
30
 
17
31
  ### New features
18
32
  #### Changelog
19
33
  - Add a configurable versioning option ([#e5cbefc](https://github.com/deltabox-studio/toolchain/commit/e5cbefc) by [T0chi](https://github.com/T0chi))
20
- - Add \ oolchain.changelog.versioning\ (boolean | { target, workspaces }) to the shared Zod model, defaulting to true/uniform. \ arget\ selects uniform (root + all workspaces), root-only, or individual (each changed workspace bumps on its own); \workspaces\ globs select which workspaces to version (defaulting to the root workspaces field, else the root package.json alone). The CLI now threads the changelog config into the generator and writeChangelogs takes per-workspace versions. Documented in the new 'Changelog & versioning' guide.
34
+ - Add `toolchain.changelog.versioning` (boolean | { target, workspaces }) to the shared Zod model, defaulting to `true`/uniform. `target` selects `uniform` (root + all workspaces), `root-only`, or `individual` (each changed workspace bumps on its own); `workspaces` globs select which workspaces to version (defaulting to the root `workspaces` field, else the root `package.json` alone). The CLI now threads the changelog config into the generator and `writeChangelogs` takes per-workspace versions. Documented in the new 'Changelog & versioning' guide.
21
35
  ### Bug fixes
22
36
  #### Shared
23
37
  - Add spawn timeouts so a stalled child can't hang the tool ([#e7fdf96](https://github.com/deltabox-studio/toolchain/commit/e7fdf96) by [T0chi](https://github.com/T0chi))
24
- - spawnCross/run gain \ imeoutMs\ (kills the child's whole tree — \ askkill /t\ on Windows — with a warning); runVp forwards it; the plugin's one-shot \
38
+ - `spawnCross`/`run` gain `timeoutMs` (kills the child's whole tree — `taskkill /t` on Windows — with a warning); `runVp` forwards it; the plugin's one-shot `runDbx` sync/check defaults to 5 min; the VS Code extension's captured `dbx` commands default to 5 min. Dev servers/watchers stay unbounded. Adds `killProcessTree()` + a timeout test.
25
39
  #### Vite
26
- - Build DBX_TASKS from a resolved binary and warn on fallbacks ([#c1a29db](https://github.com/deltabox-studio/toolchain/commit/c1a29db) by [T0chi](https://github.com/T0chi))
27
- - Vite Task runs a task's command through a shell, so a bare \dbx sync\ depended on PATH/environment and could miss or pick a stale binary. DBX_TASKS now bakes in the \
28
- - Warn and fall back on missing DBX_BIN/PATH/ComSpec ([#f91ad12](https://github.com/deltabox-studio/toolchain/commit/f91ad12) by [T0chi](https://github.com/T0chi))
29
- - resolveDbx now ignores a DBX_BIN that points at a missing file (warn + fall through) instead of wedging every dbx call; \which\ warns once when PATH is empty; the Windows spawner warns once when ComSpec is unset before falling back to cmd.exe.
30
- - Never run a stale global dbx from a pinned project ([#d441427](https://github.com/deltabox-studio/toolchain/commit/d441427) by [T0chi](https://github.com/T0chi))
31
- - resolveDbx fell back to a global \dbx\ on PATH whenever the project's own binary wasn't resolvable — which happens in the toolchain repo itself (Yarn doesn't link the root's own bin, and findOwnCliEntry needs a built dist). A stale global dbx would then run \dbx sync\ and rewrite generated files in an older format. Now a project that pins @deltabox/toolchain (node_modules or the repo itself) never uses a global dbx: it warns and uses \
32
- px @deltabox/toolchain@<pinned>\; the global is only used when the project pins nothing. Adds localToolchainVersion() + tests, and documents the resolution.
40
+ - Build `DBX_TASKS` from a resolved binary and warn on fallbacks ([#c1a29db](https://github.com/deltabox-studio/toolchain/commit/c1a29db) by [T0chi](https://github.com/T0chi))
41
+ - Vite Task runs a task's command through a shell, so a bare `dbx sync` depended on `PATH`/environment and could miss or pick a stale binary. `DBX_TASKS` now bakes in the `resolveDbx` result (project's own, or pinned `npx`) at config load; `dbxTaskCommand(sub)` builds one for any subcommand. `resolveDbx` also warns (once) when it ignores an invalid `DBX_BIN`, skips a global for a pinned project, or falls back to `npx`.
42
+ - Warn and fall back on missing `DBX_BIN`/`PATH`/`ComSpec` ([#f91ad12](https://github.com/deltabox-studio/toolchain/commit/f91ad12) by [T0chi](https://github.com/T0chi))
43
+ - `resolveDbx` now ignores a `DBX_BIN` that points at a missing file (warn + fall through) instead of wedging every `dbx` call; `which` warns once when `PATH` is empty; the Windows spawner warns once when `ComSpec` is unset before falling back to `cmd.exe`.
44
+ - Never run a stale global `dbx` from a pinned project ([#d441427](https://github.com/deltabox-studio/toolchain/commit/d441427) by [T0chi](https://github.com/T0chi))
45
+ - `resolveDbx` fell back to a global `dbx` on `PATH` whenever the project's own binary wasn't resolvable — which happens in the toolchain repo itself (Yarn doesn't link the root's own bin, and `findOwnCliEntry` needs a built `dist`). A stale global `dbx` would then run `dbx sync` and rewrite generated files in an older format. Now a project that pins `@deltabox/toolchain` (`node_modules` or the repo itself) never uses a global `dbx`: it warns and uses `npx @deltabox/toolchain@<pinned>`; the global is only used when the project pins nothing. Adds `localToolchainVersion()` + tests, and documents the resolution.
33
46
  #### Vscode
34
- - Pin the npx fallback to the extension's version ([#57d27fa](https://github.com/deltabox-studio/toolchain/commit/57d27fa) by [T0chi](https://github.com/T0chi))
35
- - The extension's last-resort \
36
- px --yes @deltabox/toolchain\ resolved \@latest\, which could drift from the workspace's generated files. It now pins its own version (\@deltabox/toolchain@<extension version>\), since the extension is versioned in lockstep with the toolchain.
47
+ - Pin the `npx` fallback to the extension's version ([#57d27fa](https://github.com/deltabox-studio/toolchain/commit/57d27fa) by [T0chi](https://github.com/T0chi))
48
+ - The extension's last-resort `npx --yes @deltabox/toolchain` resolved `@latest`, which could drift from the workspace's generated files. It now pins its own version (`@deltabox/toolchain@<extension version>`), since the extension is versioned in lockstep with the toolchain.
37
49
  #### Tsdown
38
- - Let Yarn own the single-entry bin field ([#d6198b5](https://github.com/deltabox-studio/toolchain/commit/d6198b5) by [T0chi](https://github.com/T0chi))
39
- - Reproduced (and minimised) the 'unexplained' bin revert: Yarn 4 normalises a single-entry \in\ object to a plain string on every \yarn install\, so an explicit tsdown \in\ object could never persist — install and build fought over package.json. Set tsdown's \exports.bin\ to \ alse\ so tsdown leaves the field alone, and commit the string form Yarn writes. install + build are now idempotent.
50
+ - Let Yarn own the single-entry `bin` field ([#d6198b5](https://github.com/deltabox-studio/toolchain/commit/d6198b5) by [T0chi](https://github.com/T0chi))
51
+ - Reproduced (and minimised) the 'unexplained' `bin` revert: Yarn 4 normalises a single-entry `bin` object to a plain string on every `yarn install`, so an explicit tsdown `bin` object could never persist — install and build fought over `package.json`. Set tsdown's `exports.bin` to `false` so tsdown leaves the field alone, and commit the string form Yarn writes. install + build are now idempotent.
40
52
  - Re-apply the explicit changelog and tsconfig bins ([#192a2d3](https://github.com/deltabox-studio/toolchain/commit/192a2d3) by [T0chi](https://github.com/T0chi))
41
- - The generated version bump commit dropped the explicit \in\ mapping (object form) from both package.jsons; regenerate it from the pinned tsdown \exports.bin\ so \yarn build\ stays idempotent.
53
+ - The generated version bump commit dropped the explicit `bin` mapping (object form) from both `package.json`s; regenerate it from the pinned tsdown `exports.bin` so `yarn build` stays idempotent.
42
54
 
43
55
  ## 1.5.0 (October 2026)
44
56
 
45
57
  ### New features
46
58
  #### Changelog
47
- - Emit the husky commit-msg hook for consumers ([#6898386](https://github.com/deltabox-studio/toolchain/issues/6898386) by [T0chi](https://github.com/T0chi))
48
- - \dbx sync\ now writes .husky/commit-msg (running commitlint) alongside the workflows and commitlint.config.mjs, so consumers using the Conventional-Commits CI lint commits locally too. The docs recommend \postinstall: husky\ (Yarn Berry never runs \prepare\) and \.husky/* text eol=lf\ (a trailing CR breaks the hook).
59
+ - Emit the husky `commit-msg` hook for consumers ([#6898386](https://github.com/deltabox-studio/toolchain/issues/6898386) by [T0chi](https://github.com/T0chi))
60
+ - `dbx sync` now writes `.husky/commit-msg` (running `commitlint`) alongside the workflows and `commitlint.config.mjs`, so consumers using the Conventional-Commits CI lint commits locally too. The docs recommend `postinstall: husky` (Yarn Berry never runs `prepare`) and `.husky/* text eol=lf` (a trailing CR breaks the hook).
49
61
 
50
62
  ## 1.4.1 (October 2026)
51
63
 
52
64
  ### Bug fixes
53
65
  #### Tsdown
54
66
  - Pin the changelog and tsconfig bins explicitly ([#f616626](https://github.com/deltabox-studio/toolchain/commit/f616626) by [T0chi](https://github.com/T0chi))
55
- - With \exports: true\ and no \in\, tsdown soft auto-detects the shebang entry and derives the command name from the package name, rewriting the committed \in\ on every build. Map the command names explicitly so the field is stable and the build is idempotent.
67
+ - With `exports: true` and no `bin`, tsdown soft auto-detects the shebang entry and derives the command name from the package name, rewriting the committed `bin` on every build. Map the command names explicitly so the field is stable and the build is idempotent.
56
68
  #### Ci
57
- - Bootstrap the dist the vite shim needs before build ([#b96b89a](https://github.com/deltabox-studio/toolchain/commit/b96b89a) by [T0chi](https://github.com/T0chi))
58
- - \prepare\ never runs on \yarn install\ under Yarn Berry, so scripts/bootstrap.mjs never built dist/vite.js and \yarn build\ failed to load the generated vite.config.ts shim on a fresh CI checkout. Run the bootstrap from a root \postinstall\ and at the start of build/typecheck/test (all begin with \ p run\, which loads the shim); it is a no-op once dist/vite.js exists.
69
+ - Bootstrap the `dist` the vite shim needs before build ([#b96b89a](https://github.com/deltabox-studio/toolchain/commit/b96b89a) by [T0chi](https://github.com/T0chi))
70
+ - `prepare` never runs on `yarn install` under Yarn Berry, so `scripts/bootstrap.mjs` never built `dist/vite.js` and `yarn build` failed to load the generated `vite.config.ts` shim on a fresh CI checkout. Run the bootstrap from a root `postinstall` and at the start of `build`/`typecheck`/`test` (all begin with `vp run`, which loads the shim); it is a no-op once `dist/vite.js` exists.
59
71
 
60
72
  ## 1.4.0 (October 2026)
61
73
 
62
74
  ### New features
63
- - Render the dbx CLI with clack, author the Vite+ config in dbx.config ([#fb8b9ef](https://github.com/deltabox-studio/toolchain/commit/fb8b9ef) by [T0chi](https://github.com/T0chi))
64
- - vite.config.ts in and adds the fmt ignore; dbx resolves its own binary first
65
- and colour Commander's help
75
+ - Render the `dbx` CLI with `clack`, author the Vite+ config in `dbx.config` ([#fb8b9ef](https://github.com/deltabox-studio/toolchain/commit/fb8b9ef) by [T0chi](https://github.com/T0chi))
76
+ - `vite.config.ts` in and adds the `fmt` ignore; `dbx` resolves its own binary first
77
+ and colour `Commander`'s help
66
78
  #### Vscode
67
79
  - Add Providers and Templates views ([#9aa6d12](https://github.com/deltabox-studio/toolchain/commit/9aa6d12) by [T0chi](https://github.com/T0chi))
68
- - add/remove/run-command/open-homepage/copy-id actions
69
- toolchainProviders(), so a registered provider's commands become dbx commands
80
+ - `add`/`remove`/`run-command`/`open-homepage`/`copy-id` actions
81
+ `toolchainProviders()`, so a registered provider's commands become `dbx` commands
70
82
  Templates -> Managed Files
71
83
  #### Vite
72
- - Drive dbx from the dbx plugin, drop defineDbxConfig ([#8d11557](https://github.com/deltabox-studio/toolchain/commit/8d11557) by [T0chi](https://github.com/T0chi))
73
- - The Vite/Vite+ integration is now the dbx() plugin plus spreading DBX_TASKS into
74
- run.tasks, so the consumer's own vite config stays the config:
75
- - export default defineConfig({
76
- plugins: [dbx()],
77
- run: { tasks: { ...DBX_TASKS } },
78
- });
79
- - Remove the defineDbxConfig wrapper (and DbxViteConfig) and update the README, the
84
+ - Drive `dbx` from the `dbx()` plugin, drop `defineDbxConfig` ([#8d11557](https://github.com/deltabox-studio/toolchain/commit/8d11557) by [T0chi](https://github.com/T0chi))
85
+ - The Vite/Vite+ integration is now the `dbx()` plugin plus spreading `DBX_TASKS` into
86
+ `run.tasks`, so the consumer's own `vite` config stays the config:
87
+ - `export default defineConfig({`
88
+ `plugins: [dbx()],`
89
+ `run: { tasks: { ...DBX_TASKS } },`
90
+ `});`
91
+ - Remove the `defineDbxConfig` wrapper (and `DbxViteConfig`) and update the README, the
80
92
  Providers guide and the API reference.
81
- - Author the Vite+ config in dbx.config, generate vite.config.ts ([#9885225](https://github.com/deltabox-studio/toolchain/issues/9885225) by [T0chi](https://github.com/T0chi))
82
- - toolchain.vite now holds the whole Vite+ config (a loose object) with a
83
- config: false opt-out, and dbx sync generates the managed root
84
- vite.config.ts from it, so dbx.config.* is the only hand-authored root config.
85
- - Add dbx migrate --from vite (auto-detected): it extracts the object passed to
86
- defineConfig in an existing root vite.config.ts and folds it into dbx.config.*'s
87
- toolchain.vite, refusing configs it cannot migrate faithfully.
88
- - The config-types generator now honors .catchall, emitting an index signature.
93
+ - Author the Vite+ config in `dbx.config`, generate `vite.config.ts` ([#9885225](https://github.com/deltabox-studio/toolchain/issues/9885225) by [T0chi](https://github.com/T0chi))
94
+ - `toolchain.vite` now holds the whole Vite+ config (a loose object) with a
95
+ `config: false` opt-out, and `dbx sync` generates the managed root
96
+ `vite.config.ts` from it, so `dbx.config.*` is the only hand-authored root config.
97
+ - Add `dbx migrate --from vite` (auto-detected): it extracts the object passed to
98
+ `defineConfig` in an existing root `vite.config.ts` and folds it into `dbx.config.*`'s
99
+ `toolchain.vite`, refusing configs it cannot migrate faithfully.
100
+ - The config-types generator now honors `.catchall`, emitting an index signature.
89
101
  #### Config
90
- - Expose the Vite+ config type, rename Tooling* to Toolchain* ([#088de56](https://github.com/deltabox-studio/toolchain/commit/088de56) by [T0chi](https://github.com/T0chi))
91
- - ToolchainViteConfig is now Vite+ ViteUserConfig intersected with the managed
92
- config?: boolean opt-out, instead of a generated loose object. The config-types
102
+ - Expose the Vite+ config type, rename `Tooling*` to `Toolchain*` ([#088de56](https://github.com/deltabox-studio/toolchain/commit/088de56) by [T0chi](https://github.com/T0chi))
103
+ - `ToolchainViteConfig` is now Vite+ `ViteUserConfig` intersected with the managed
104
+ `config?: boolean` opt-out, instead of a generated loose object. The config-types
93
105
  generator gains a hand-written type override plus an imports block, used for the
94
- vite type, and vite-plus becomes an optional peer dependency.
95
- - Rename every Tooling* type, schema id and identifier to Toolchain*. That covers
96
- the config schema ids, CONFIG_TYPE_SCHEMAS keys, the provider/migration models
97
- and the CLI helpers (toolchainConfigSchema, loadToolchainConfig,
98
- toolchainProviders, registerToolchainCommands). Regenerated types/schema/docs.
106
+ vite type, and `vite-plus` becomes an optional peer dependency.
107
+ - Rename every `Tooling*` type, schema id and identifier to `Toolchain*`. That covers
108
+ the config schema ids, `CONFIG_TYPE_SCHEMAS` keys, the provider/migration models
109
+ and the CLI helpers (`toolchainConfigSchema`, `loadToolchainConfig`,
110
+ `toolchainProviders`, `registerToolchainCommands`). Regenerated types/schema/docs.
99
111
  ### Bug fixes
100
112
  #### Deps
101
- - Sync the lockfile for @clack/prompts ([#568a7c6](https://github.com/deltabox-studio/toolchain/commit/568a7c6) by [T0chi](https://github.com/T0chi))
102
- - The lockfile was missing the @clack/prompts entry for packages/shared and
103
- packages/template, so 'yarn install --immutable' failed in CI (YN0028).
113
+ - Sync the lockfile for `@clack/prompts` ([#568a7c6](https://github.com/deltabox-studio/toolchain/commit/568a7c6) by [T0chi](https://github.com/T0chi))
114
+ - The lockfile was missing the `@clack/prompts` entry for `packages/shared` and
115
+ `packages/template`, so `yarn install --immutable` failed in CI (YN0028).
104
116
  ### Refactors
105
117
  - Rename Ox to Oxc across the project ([#39b37d3](https://github.com/deltabox-studio/toolchain/commit/39b37d3) by [T0chi](https://github.com/T0chi))
106
- - (Oxfmt/Oxlint and .oxlintrc/.oxfmtrc are unchanged)
118
+ - (`Oxfmt`/`Oxlint` and `.oxlintrc`/`.oxfmtrc` are unchanged)
107
119
  ### Documentation
108
- - Cover the clack CLI output, prompts and dbx binary resolution ([#f45ed3f](https://github.com/deltabox-studio/toolchain/commit/f45ed3f) by [T0chi](https://github.com/T0chi))
109
- - Document the Vite+ config type and the Toolchain* names ([#1e70950](https://github.com/deltabox-studio/toolchain/commit/1e70950) by [T0chi](https://github.com/T0chi))
110
- - Note that toolchain.vite is typed as Vite's UserConfig as augmented by Vite+
111
- (ToolchainViteConfig), and list ToolchainViteConfig among the shared config
120
+ - Cover the clack CLI output, prompts and `dbx` binary resolution ([#f45ed3f](https://github.com/deltabox-studio/toolchain/commit/f45ed3f) by [T0chi](https://github.com/T0chi))
121
+ - Document the Vite+ config type and the `Toolchain*` names ([#1e70950](https://github.com/deltabox-studio/toolchain/commit/1e70950) by [T0chi](https://github.com/T0chi))
122
+ - Note that `toolchain.vite` is typed as Vite's `UserConfig` as augmented by Vite+
123
+ (`ToolchainViteConfig`), and list `ToolchainViteConfig` among the shared config
112
124
  types. Covers the unreleased changes since v1.3.1 together with the sections the
113
- feature commits already added (the Vite+ config in dbx.config, the generated
114
- vite.config.ts, the vite migration and the dbx plugin).
125
+ feature commits already added (the Vite+ config in `dbx.config`, the generated
126
+ `vite.config.ts`, the vite migration and the `dbx` plugin).
115
127
  #### Vscode
116
- - Refresh the extension screenshot and add its LICENSE ([#49d4510](https://github.com/deltabox-studio/toolchain/commit/49d4510) by [T0chi](https://github.com/T0chi))
128
+ - Refresh the extension screenshot and add its `LICENSE` ([#49d4510](https://github.com/deltabox-studio/toolchain/commit/49d4510) by [T0chi](https://github.com/T0chi))
117
129
  ### Build system
118
- - Package the VS Code extension in yarn build ([#1dd14a1](https://github.com/deltabox-studio/toolchain/commit/1dd14a1) by [T0chi](https://github.com/T0chi))
119
- - yarn build now also runs the vscode package:vsix, so deltabox-toolchain.vsix
130
+ - Package the VS Code extension in `yarn build` ([#1dd14a1](https://github.com/deltabox-studio/toolchain/commit/1dd14a1) by [T0chi](https://github.com/T0chi))
131
+ - `yarn build` now also runs the vscode `package:vsix`, so `deltabox-toolchain.vsix`
120
132
  is always produced.
121
133
 
122
134
  ### Package changes
@@ -136,24 +148,24 @@
136
148
 
137
149
  ### New features
138
150
  #### Core
139
- - Keep the generated .dbx directory out of git ([#9fc1434](https://github.com/deltabox-studio/toolchain/commit/9fc1434) by [T0chi](https://github.com/T0chi))
140
- - dbx sync now appends the .dbx ignore block (everything under .dbx/ except the
141
- manifest, which holds no absolute paths) to an existing .gitignore, and the
151
+ - Keep the generated `.dbx` directory out of git ([#9fc1434](https://github.com/deltabox-studio/toolchain/commit/9fc1434) by [T0chi](https://github.com/T0chi))
152
+ - `dbx sync` now appends the `.dbx` ignore block (everything under `.dbx/` except the
153
+ manifest, which holds no absolute paths) to an existing `.gitignore`, and the
142
154
  installation guide documents the pattern and the automatic step.
143
155
  #### Cli
144
156
  - Route CLI output through the logger, add a providers colour option ([#ce76a4d](https://github.com/deltabox-studio/toolchain/commit/ce76a4d) by [T0chi](https://github.com/T0chi))
145
- - Commander's help and errors now go through the shared logger (help to stdout,
157
+ - `Commander`'s help and errors now go through the shared logger (help to stdout,
146
158
  errors to stderr, colour-aware, ANSI stripped when colour is off). Vite+
147
- passthrough commands keep commander's defaults so the spawned vp keeps its own
159
+ passthrough commands keep `commander`'s defaults so the spawned `vp` keeps its own
148
160
  coloured logging.
149
- - Add a providers config section (color?: boolean): color: false forces plain
150
- provider output, the global --no-color still turns it off, and runVp sets
151
- NO_COLOR / FORCE_COLOR on the child when colour is disabled.
152
- - Check for a newer dbx version ([#772aae2](https://github.com/deltabox-studio/toolchain/commit/772aae2) by [T0chi](https://github.com/T0chi))
161
+ - Add a `providers` config section (`color?: boolean`): `color: false` forces plain
162
+ provider output, the global `--no-color` still turns it off, and `runVp` sets
163
+ `NO_COLOR` / `FORCE_COLOR` on the child when colour is disabled.
164
+ - Check for a newer `dbx` version ([#772aae2](https://github.com/deltabox-studio/toolchain/commit/772aae2) by [T0chi](https://github.com/T0chi))
153
165
  - On each run, check the npm registry in the background (cached for a day, never
154
166
  blocking) and print a short notice with a link to the release when a newer
155
- @deltabox/toolchain exists. Skipped in CI and by NO_UPDATE_NOTIFIER or
156
- DBX_NO_UPDATE_CHECK, and can be turned off with the new --no-update-check flag.
167
+ `@deltabox/toolchain` exists. Skipped in CI and by `NO_UPDATE_NOTIFIER` or
168
+ `DBX_NO_UPDATE_CHECK`, and can be turned off with the new `--no-update-check` flag.
157
169
  - Default a bare Vite+ command to the `vite` passthrough ([#75770e4](https://github.com/deltabox-studio/toolchain/commit/75770e4) by [T0chi](https://github.com/T0chi))
158
170
  - `dbx fmt` / `dbx lint` / `dbx run` / `dbx dev` now work: when the first operand
159
171
  is not a built-in command but names a Vite+ subcommand (or one of its aliases),
@@ -163,51 +175,51 @@
163
175
  - The Package scripts, Migrations, Monorepo, CLI and Providers guides now show the
164
176
  bare form, and the consumers' root scripts were updated to match.
165
177
  #### Vscode
166
- - Bundle the dbx CLI into the extension ([#bf12403](https://github.com/deltabox-studio/toolchain/commit/bf12403) by [T0chi](https://github.com/T0chi))
167
- - Ship a self-contained dbx.cjs inside the VSIX (built by the new
168
- tsdown.bin.config.ts) and prefer it in the extension, so a consumer no longer
169
- needs to install @deltabox/toolchain. It falls back to a workspace-local
170
- install and then npx.
178
+ - Bundle the `dbx` CLI into the extension ([#bf12403](https://github.com/deltabox-studio/toolchain/commit/bf12403) by [T0chi](https://github.com/T0chi))
179
+ - Ship a self-contained `dbx.cjs` inside the VSIX (built by the new
180
+ `tsdown.bin.config.ts`) and prefer it in the extension, so a consumer no longer
181
+ needs to install `@deltabox/toolchain`. It falls back to a workspace-local
182
+ install and then `npx`.
171
183
  - Make the changelog and tsconfig direct-run guards basename-aware so they do not
172
184
  fire when the module is inlined into the single-file bundle.
173
185
  #### Shared
174
186
  - Add a configurable shared logger ([#54b51fa](https://github.com/deltabox-studio/toolchain/commit/54b51fa) by [T0chi](https://github.com/T0chi))
175
- - Add packages/shared/src/logger.ts: one level-aware, colour-aware sink (colours
176
- via picocolors, the same package Vite uses) with debug, info, success, warn,
177
- error and raw (unprefixed machine output). It is configurable from dbx.config's
178
- new logger section and from the CLI (--log-level, --no-color), with the CLI
187
+ - Add `packages/shared/src/logger.ts`: one level-aware, colour-aware sink (colours
188
+ via `picocolors`, the same package Vite uses) with `debug`, `info`, `success`, `warn`,
189
+ `error` and `raw` (unprefixed machine output). It is configurable from `dbx.config`'s
190
+ new `logger` section and from the CLI (`--log-level`, `--no-color`), with the CLI
179
191
  taking precedence.
180
- - Every console call in the toolchain now goes through the logger (JSON output
181
- through raw), including the sync/watch log callback and the run helper's
192
+ - Every `console` call in the toolchain now goes through the logger (JSON output
193
+ through `raw`), including the sync/watch log callback and the `run` helper's
182
194
  verbose line. The generated config types, the JSON schema, the docs reference
183
- and the Configuration/CLI guides document the new logger section.
195
+ and the Configuration/CLI guides document the new `logger` section.
184
196
  ### Bug fixes
185
- - Correct tsconfig aliases under --cwd, prune self-referential task runs ([#40e0c34](https://github.com/deltabox-studio/toolchain/commit/40e0c34) by [T0chi](https://github.com/T0chi))
197
+ - Correct tsconfig aliases under `--cwd`, prune self-referential task runs ([#40e0c34](https://github.com/deltabox-studio/toolchain/commit/40e0c34) by [T0chi](https://github.com/T0chi))
186
198
  - Two bugs found by exercising the CLI against the local consumer projects:
187
- - instead of process.cwd(), so `dbx sync --cwd <dir>` (run from elsewhere)
199
+ - instead of `process.cwd()`, so `dbx sync --cwd <dir>` (run from elsewhere)
188
200
  writes correct relative paths rather than paths pointing at the caller.
189
201
  spawning the task runner, and prunes itself when the same command runs again
190
202
  from the same root. A root task whose script calls `run -r <task>` can no
191
203
  longer recurse.
192
204
  - Changelog links, oxfmt map, build idempotency, watch timer, vscode spawn ([#2389c98](https://github.com/deltabox-studio/toolchain/commit/2389c98) by [T0chi](https://github.com/T0chi))
193
- - render commits as a plain short hash instead of a github.com/undefined link
205
+ - render commits as a plain short hash instead of a `github.com/undefined` link
194
206
  `yarn build` no longer rewrites it and the working tree stays idempotent
195
- spawnCli and cliInvocation
196
- - Sync --check writes, quiet level, log flags and template tokens ([#7f5690f](https://github.com/deltabox-studio/toolchain/commit/7f5690f) by [T0chi](https://github.com/T0chi))
207
+ `spawnCli` and `cliInvocation`
208
+ - Sync `--check` writes, quiet level, log flags and template tokens ([#7f5690f](https://github.com/deltabox-studio/toolchain/commit/7f5690f) by [T0chi](https://github.com/T0chi))
197
209
  - Audit pass over the toolchain source:
198
- - actually generated by dbx sync
210
+ - actually generated by `dbx sync`
199
211
  ### Documentation
200
212
  - Document the full public API surface ([#6f78245](https://github.com/deltabox-studio/toolchain/commit/6f78245) by [T0chi](https://github.com/T0chi))
201
- - Expand guide/api.md to cover the umbrella plus every subpath export, grouped by
202
- package. Add the logging API (logger, createLogger, setLogConfig,
203
- setLogOverrides, levels, colours, raw) to the API and Configuration guides, and
204
- document the config generator's formatGenerated helper and the Vite and CLI
213
+ - Expand `guide/api.md` to cover the umbrella plus every subpath export, grouped by
214
+ package. Add the logging API (`logger`, `createLogger`, `setLogConfig`,
215
+ `setLogOverrides`, levels, colours, `raw`) to the API and Configuration guides, and
216
+ document the config generator's `formatGenerated` helper and the Vite and CLI
205
217
  programmatic helpers.
206
218
  ### Chores
207
- - Track only the .dbx manifest ([#a254062](https://github.com/deltabox-studio/toolchain/commit/a254062) by [T0chi](https://github.com/T0chi))
208
- - Ignore everything under .dbx/ except .dbx/toolchain/manifest.json, which records the managed files and holds no absolute paths. The project graph (which embeds the absolute root) stays ignored.
209
- - Stop tracking the generated .dbx directory ([#b7c53f0](https://github.com/deltabox-studio/toolchain/commit/b7c53f0) by [T0chi](https://github.com/T0chi))
210
- - The managed-file manifest and project graph under .dbx/ are generated state, so ignore them and untrack the two committed files.
219
+ - Track only the `.dbx` manifest ([#a254062](https://github.com/deltabox-studio/toolchain/commit/a254062) by [T0chi](https://github.com/T0chi))
220
+ - Ignore everything under `.dbx/` except `.dbx/toolchain/manifest.json`, which records the managed files and holds no absolute paths. The project graph (which embeds the absolute root) stays ignored.
221
+ - Stop tracking the generated `.dbx` directory ([#b7c53f0](https://github.com/deltabox-studio/toolchain/commit/b7c53f0) by [T0chi](https://github.com/T0chi))
222
+ - The managed-file manifest and project graph under `.dbx/` are generated state, so ignore them and untrack the two committed files.
211
223
 
212
224
  ### Package changes
213
225
  #### Added
@@ -233,14 +245,14 @@
233
245
  ### Bug fixes
234
246
  #### Config
235
247
  - Tidy generated types and format them with Oxfmt ([#6fef440](https://github.com/deltabox-studio/toolchain/commit/6fef440) by [T0chi](https://github.com/T0chi))
236
- - untyped's type generator emits a blank line between every member and verbose
248
+ - `untyped`'s type generator emits a blank line between every member and verbose
237
249
  multi-line JSDoc. Strip the member blank lines in the generator, then run the
238
250
  generated output through Oxfmt's programmatic `format()` (with `jsdoc: true`)
239
251
  at generation time instead of shelling out to the repo-root `vp`, so the file
240
252
  is written already formatted and resembles the hand-written `types.ts`.
241
253
  - Also drop the toolchain-specific `yarn config:types` hint from the generated
242
254
  header: the types ship through `@deltabox/toolchain-shared`, so a script name
243
- that only exists in this repo's package.json is misleading to consumers (a
255
+ that only exists in this repo's `package.json` is misleading to consumers (a
244
256
  consumer supplies its own header via the `header` option).
245
257
  ### Documentation
246
258
  - Add Package scripts guide and a navbar version ([#b279739](https://github.com/deltabox-studio/toolchain/commit/b279739) by [T0chi](https://github.com/T0chi))
@@ -292,7 +304,7 @@
292
304
  #### Config
293
305
  - Generate the shared config types via the config generator ([#a063a2d](https://github.com/deltabox-studio/toolchain/commit/a063a2d) by [T0chi](https://github.com/T0chi))
294
306
  - Teach the config engine's Zod->untyped bridge and types generator to handle
295
- unions (anyOf/oneOf), `const`, and unknown records, and to render a schema's
307
+ unions (`anyOf`/`oneOf`), `const`, and unknown records, and to render a schema's
296
308
  fields on the main interface when it has no `base` group (plus type aliases for
297
309
  non-object roots). Named `$ref`s (via `.meta({ id })`) render as the type name,
298
310
  so the generated config types reference each other instead of inlining.
@@ -326,9 +338,9 @@
326
338
 
327
339
  ### Bug fixes
328
340
  #### Ci
329
- - Skip the Marketplace publish when VSCE_PAT is unset ([#fe4b3ad](https://github.com/deltabox-studio/toolchain/commit/fe4b3ad) by [T0chi](https://github.com/T0chi))
341
+ - Skip the Marketplace publish when `VSCE_PAT` is unset ([#fe4b3ad](https://github.com/deltabox-studio/toolchain/commit/fe4b3ad) by [T0chi](https://github.com/T0chi))
330
342
  - The VS Code Marketplace publish was the only failing release step (no
331
- VSCE_PAT set). Make it a no-op while the secret is unset and publish
343
+ `VSCE_PAT` set). Make it a no-op while the secret is unset and publish
332
344
  automatically once it is added to the `toolchain / release` environment.
333
345
  - Also remove the temporary OIDC diagnostic step now that the release publishes.
334
346
 
@@ -377,20 +389,20 @@
377
389
  environment claim therefore did not match, the token exchange failed, and npm
378
390
  silently fell back to the placeholder token (the misleading E404).
379
391
  - Declare `environment: 'toolchain / release'` on the job and add an optional
380
- NODE_AUTH_TOKEN fallback (the environment's NPM_TOKEN) to the publish step.
392
+ `NODE_AUTH_TOKEN` fallback (the environment's `NPM_TOKEN`) to the publish step.
381
393
  OIDC is still tried first, so the token is never relied on.
382
394
  #### Vscode
383
395
  - Spawn the CLI safely on Windows ([#99e3ad1](https://github.com/deltabox-studio/toolchain/commit/99e3ad1) by [T0chi](https://github.com/T0chi))
384
396
  - `spawn('npx.cmd', ...)` throws EINVAL synchronously on Windows, and
385
397
  `captureCli`/`runCli` call spawn inside a Promise executor, so the throw
386
398
  rejected the promise and the command aborted with no UI ("nothing happens").
387
- This fired whenever the CLI resolved to the npx.cmd fallback (a workspace
388
- without a local @deltabox/toolchain), e.g. "From template..." which round-trips
389
- template:list --json through captureCli.
390
- - Add a pure win-spawn module (ported from the shared spawnCross) that escapes
391
- the command + args and runs a .cmd shim through cmd.exe; use it from spawnCli.
392
- captureCli/runCli no longer reject on a spawn failure. Also fix cliInvocation
393
- for the integrated terminal: process.execPath is the VS Code binary in the
399
+ This fired whenever the CLI resolved to the `npx.cmd` fallback (a workspace
400
+ without a local `@deltabox/toolchain`), e.g. "From template..." which round-trips
401
+ `template:list --json` through `captureCli`.
402
+ - Add a pure `win-spawn` module (ported from the shared `spawnCross`) that escapes
403
+ the command + args and runs a `.cmd` shim through `cmd.exe`; use it from `spawnCli`.
404
+ `captureCli`/`runCli` no longer reject on a spawn failure. Also fix `cliInvocation`
405
+ for the integrated terminal: `process.execPath` is the VS Code binary in the
394
406
  extension host, so it now uses `npx dbx` / `npx --yes @deltabox/toolchain`.
395
407
 
396
408
  ## 1.1.17 (October 2026)
@@ -413,7 +425,7 @@
413
425
  ## 1.1.15 (October 2026)
414
426
 
415
427
  ### Chores
416
- - Formatted README.md ([#4485c48](https://github.com/deltabox-studio/toolchain/commit/4485c48) by [T0chi](https://github.com/T0chi))
428
+ - Formatted `README.md` ([#4485c48](https://github.com/deltabox-studio/toolchain/commit/4485c48) by [T0chi](https://github.com/T0chi))
417
429
 
418
430
  ## 1.1.14 (October 2026)
419
431
 
@@ -434,7 +446,7 @@
434
446
 
435
447
  ### Documentation
436
448
  - Drop backticks from the landing feature cards ([#9d6ed28](https://github.com/deltabox-studio/toolchain/commit/9d6ed28) by [T0chi](https://github.com/T0chi))
437
- - Use currentColor for the logo so it shows on light mode ([#907a07e](https://github.com/deltabox-studio/toolchain/commit/907a07e) by [T0chi](https://github.com/T0chi))
449
+ - Use `currentColor` for the logo so it shows on light mode ([#907a07e](https://github.com/deltabox-studio/toolchain/commit/907a07e) by [T0chi](https://github.com/T0chi))
438
450
  - Fix README formatting ([#2dc01d4](https://github.com/deltabox-studio/toolchain/commit/2dc01d4) by [T0chi](https://github.com/T0chi))
439
451
  - Make the logo black in light mode (white in dark) ([#c6d9410](https://github.com/deltabox-studio/toolchain/commit/c6d9410) by [T0chi](https://github.com/T0chi))
440
452
  ### CI
@@ -451,7 +463,7 @@
451
463
  - Reindent the README lists ([#1d41d68](https://github.com/deltabox-studio/toolchain/commit/1d41d68) by [T0chi](https://github.com/T0chi))
452
464
  - Mirror the VS Code extension installation guide from the README ([#1889832](https://github.com/deltabox-studio/toolchain/issues/1889832) by [T0chi](https://github.com/T0chi))
453
465
  ### Chores
454
- - Update VS Code extension installation guide in README.md ([#aab06d5](https://github.com/deltabox-studio/toolchain/commit/aab06d5) by [T0chi](https://github.com/T0chi))
466
+ - Update VS Code extension installation guide in `README.md` ([#aab06d5](https://github.com/deltabox-studio/toolchain/commit/aab06d5) by [T0chi](https://github.com/T0chi))
455
467
 
456
468
  ## 1.1.8 (October 2026)
457
469
 
@@ -466,7 +478,7 @@
466
478
  ## 1.1.6 (October 2026)
467
479
 
468
480
  ### Documentation
469
- - Use box2d.svg for the navbar/hero logo and box2d_bg.svg for the favicon ([#2c7a094](https://github.com/deltabox-studio/toolchain/commit/2c7a094) by [T0chi](https://github.com/T0chi))
481
+ - Use `box2d.svg` for the navbar/hero logo and `box2d_bg.svg` for the favicon ([#2c7a094](https://github.com/deltabox-studio/toolchain/commit/2c7a094) by [T0chi](https://github.com/T0chi))
470
482
 
471
483
  ## 1.1.5 (October 2026)
472
484
 
@@ -491,14 +503,14 @@
491
503
 
492
504
  ### Documentation
493
505
  - Add a tests badge to the README ([#01513ee](https://github.com/deltabox-studio/toolchain/commit/01513ee) by [T0chi](https://github.com/T0chi))
494
- - Fix CHANGELOG.md mojibake and add backticks to code refs ([#6b721eb](https://github.com/deltabox-studio/toolchain/commit/6b721eb) by [T0chi](https://github.com/T0chi))
506
+ - Fix `CHANGELOG.md` mojibake and add backticks to code refs ([#6b721eb](https://github.com/deltabox-studio/toolchain/commit/6b721eb) by [T0chi](https://github.com/T0chi))
495
507
 
496
508
  ## 1.1.1 (October 2026)
497
509
 
498
510
  ### Documentation
499
511
 
500
512
  - Publish `config.schema.json` at the docs site root ([#b7680cb](https://github.com/deltabox-studio/toolchain/commit/b7680cb) by [T0chi](https://github.com/T0chi))
501
- - The VitePress build now copies the generated dbx JSON schema into the dist
513
+ - The VitePress build now copies the generated `dbx` JSON schema into the dist
502
514
  root, so it is served at https://toolchain.deltabox.studio/config.schema.json.
503
515
 
504
516
  ### CI
@@ -518,7 +530,7 @@
518
530
  #### Vite
519
531
 
520
532
  - Add a `dbx()` Vite+ plugin and `defineDbxConfig` wrapper ([#a1edaf9](https://github.com/deltabox-studio/toolchain/commit/a1edaf9) by [T0chi](https://github.com/T0chi))
521
- - Lets Vite+-only consumers drive dbx from `vite.config.ts`: `dbx()` runs
533
+ - Lets Vite+-only consumers drive `dbx` from `vite.config.ts`: `dbx()` runs
522
534
  `dbx sync` before dev/build (or `dbx sync --check` in CI) and re-syncs on
523
535
  input changes; `defineDbxConfig()` also registers the `vp run dbx:*` tasks
524
536
  (Vite+ reads `run.tasks` from the static config, not a plugin hook).
@@ -599,7 +611,7 @@
599
611
  ### Chores
600
612
 
601
613
  - Exclude `CHANGELOG.md` from Oxfmt (the changelog pipeline owns its format) ([#f6ad3c0](https://github.com/deltabox-studio/toolchain/commit/f6ad3c0) by [T0chi](https://github.com/T0chi))
602
- - Add MPL-2.0 `LICENSE` and the project homepage ([#cea0fb5](https://github.com/deltabox-studio/toolchain/commit/cea0fb5) by [T0chi](https://github.com/T0chi))
614
+ - Add `MPL-2.0` `LICENSE` and the project homepage ([#cea0fb5](https://github.com/deltabox-studio/toolchain/commit/cea0fb5) by [T0chi](https://github.com/T0chi))
603
615
 
604
616
  ## 1.0.2 (October 2026)
605
617
 
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { Colors, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerO
6
6
  import { Sortable, deepMerge, isPlainObject, mapValues, resolveSort, sort } from "./packages/shared/src/object-utils.js";
7
7
  import { ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, providerActions } from "./packages/shared/src/provider.js";
8
8
  import { RunOptions, SpawnCrossOptions, killProcessTree, run, spawnCross } from "./packages/shared/src/run.js";
9
- import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, formatCliFlag, hasText, indent, isLocalhost, kebabCase, pascalCase, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, sanitizeSlashes, snakeCase, str, titleCase } from "./packages/shared/src/string-utils.js";
9
+ import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, formatCliFlag, hasText, indent, isLocalhost, kebabCase, pascalCase, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, sanitizeSlashes, sanitizeText, snakeCase, str, stripControlChars, stripEscapeArtifacts, titleCase } from "./packages/shared/src/string-utils.js";
10
10
  import { ReplacementOptions, ReplacementValue, Replacements, Replacer, applyReplacements, applyReplacementsDeep, createReplacer, defineReplacements, extractTokens, hasUnresolvedTokens, tokenPattern } from "./packages/shared/src/template.js";
11
11
  import { ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, DbxConfigSections, ProjectType, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainConfigSections, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig } from "./packages/shared/src/config-types.js";
12
12
  import { Awaitable, GeneratedFile, JsonValue, PackageJson, ToolchainArgument, ToolchainCommand, ToolchainCommandContext, ToolchainOption } from "./packages/shared/src/types.js";
@@ -33,4 +33,4 @@ import { index_d_exports as index_d_exports$6 } from "./packages/tsconfig/src/in
33
33
  import { index_d_exports as index_d_exports$4 } from "./packages/project/src/index.js";
34
34
  import { index_d_exports as index_d_exports$7 } from "./packages/tsdown/src/index.js";
35
35
  import { defaultSyncTasks } from "./sync.js";
36
- export { Awaitable, BuildProjectGraphOptions, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DBX_GITIGNORE_BLOCK, DbxConfig, DbxConfigSections, GeneratedFile, IGNORED_DIRS, JsonValue, LOG_LEVELS, LoadedConfig, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, MANIFEST_DIR, MANIFEST_FILE, ManagedFile, Manifest, PackageJson, PackageManager, ProjectGraph, ProjectNode, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, RunOptions, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, Sortable, SpawnCrossOptions, SyncContext, SyncResult, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, VscodeSyncOptions, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyReplacements, applyReplacementsDeep, asString, index_d_exports as biome, biomeConfigSchema, buildProjectGraph, camelCase, camelCaseId, capitalize, index_d_exports$1 as changelog, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, index_d_exports$2 as config, configureLogger, constantCase, index_d_exports$3 as core, createLogger, createReplacer, dbxConfigSchema, deepMerge, defaultSyncTasks, defineConfig, defineReplacements, detectPackageManager, detectProjectType, ensureDbxGitignore, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findConfigFile, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, loadToolchainConfig, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, orderProjects, pascalCase, index_d_exports$4 as project, projectConfigSchema, projectGraphPath, projectTypeSchema, providerActions, providerRegistryPath, providersConfigSchema, readJsonAt, readJsonFile, readManifest, readProjectGraph, readProviderRegistry, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resetProjects, resetToolchain, resolveProjectType, resolveSort, resolveTokens, run, runSync, runWatch, sanitizeSlashes, sectionConfig, sectionEnabled, selectProjects, setLogConfig, setLogOverrides, index_d_exports$5 as shared, snakeCase, sort, spawnCross, str, stripAnsi, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, index_d_exports$6 as tsconfig, tsconfigConfigSchema, index_d_exports$7 as tsdown, viteConfigSchema, vscodeSyncTask, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile, writeManifest, writeProjectGraph, writeProviderRegistry };
36
+ export { Awaitable, BuildProjectGraphOptions, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DBX_GITIGNORE_BLOCK, DbxConfig, DbxConfigSections, GeneratedFile, IGNORED_DIRS, JsonValue, LOG_LEVELS, LoadedConfig, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, MANIFEST_DIR, MANIFEST_FILE, ManagedFile, Manifest, PackageJson, PackageManager, ProjectGraph, ProjectNode, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, ResetProjectsOptions, ResetProjectsResult, ResetSelectors, ResetToolchainOptions, ResetToolchainResult, RunOptions, RunSyncOptions, RunWatchOptions, SelectProjectsOptions, SelectedProject, Sortable, SpawnCrossOptions, SyncContext, SyncResult, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, VscodeSyncOptions, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyReplacements, applyReplacementsDeep, asString, index_d_exports as biome, biomeConfigSchema, buildProjectGraph, camelCase, camelCaseId, capitalize, index_d_exports$1 as changelog, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, index_d_exports$2 as config, configureLogger, constantCase, index_d_exports$3 as core, createLogger, createReplacer, dbxConfigSchema, deepMerge, defaultSyncTasks, defineConfig, defineReplacements, detectPackageManager, detectProjectType, ensureDbxGitignore, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findConfigFile, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, loadToolchainConfig, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, orderProjects, pascalCase, index_d_exports$4 as project, projectConfigSchema, projectGraphPath, projectTypeSchema, providerActions, providerRegistryPath, providersConfigSchema, readJsonAt, readJsonFile, readManifest, readProjectGraph, readProviderRegistry, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resetProjects, resetToolchain, resolveProjectType, resolveSort, resolveTokens, run, runSync, runWatch, sanitizeSlashes, sanitizeText, sectionConfig, sectionEnabled, selectProjects, setLogConfig, setLogOverrides, index_d_exports$5 as shared, snakeCase, sort, spawnCross, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, index_d_exports$6 as tsconfig, tsconfigConfigSchema, index_d_exports$7 as tsdown, viteConfigSchema, vscodeSyncTask, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile, writeManifest, writeProjectGraph, writeProviderRegistry };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./packages/shared/src/bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./packages/shared/src/object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./packages/shared/src/fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./packages/shared/src/logger.js";import{providerActions as w}from"./packages/shared/src/provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./packages/shared/src/run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,snakeCase as K,str as q,titleCase as J}from"./packages/shared/src/string-utils.js";import{applyReplacements as Y,applyReplacementsDeep as X,createReplacer as Z,defineReplacements as Q,extractTokens as $,hasUnresolvedTokens as ee,tokenPattern as te}from"./packages/shared/src/template.js";import{CONFIG_SECTION_DESCRIPTIONS as ne,CONFIG_SECTION_SCHEMAS as re,CONFIG_TYPE_SCHEMAS as ie,biomeConfigSchema as ae,changelogConfigSchema as oe,changelogVersioningConfigSchema as se,changelogVersioningSchema as ce,changelogVersioningTargetSchema as le,changelogWorkflowsConfigSchema as ue,dbxConfigSchema as de,loggerConfigSchema as fe,projectConfigSchema as pe,projectTypeSchema as me,providersConfigSchema as he,templateKindSchema as ge,templateSourceSchema as _e,templateSourceTypeSchema as ve,templatesConfigSchema as ye,toolchainConfigSchema as be,tsconfigConfigSchema as xe,viteConfigSchema as Se,watchConfigSchema as Ce,workflowConfigSchema as we,workflowSettingSchema as Te,workflowStepSchema as Ee,workflowStepsConfigSchema as De}from"./packages/shared/src/config-schema.js";import{CONFIG_FILE_NAMES as Oe,defineConfig as ke,repoSlugFromUrl as Ae,resolveTokens as je,sectionConfig as Me,sectionEnabled as Ne}from"./packages/shared/src/toolchain.js";import{toYaml as Pe}from"./packages/shared/src/yaml.js";import{src_exports as Fe}from"./packages/shared/src/index.js";import{src_exports as Ie}from"./packages/biome/src/index.js";import{src_exports as Le}from"./packages/changelog/src/index.js";import{src_exports as Re}from"./packages/config/src/index.js";import{DBX_GITIGNORE_BLOCK as ze,ensureDbxGitignore as Be}from"./packages/core/src/gitignore.js";import{detectProjectType as Ve,resolveProjectType as He}from"./packages/core/src/project-type.js";import{findConfigFile as Ue,loadToolchainConfig as We}from"./packages/core/src/loader.js";import{IGNORED_DIRS as Ge,buildProjectGraph as Ke,detectPackageManager as qe,orderProjects as Je,projectGraphPath as Ye,readProjectGraph as Xe,writeProjectGraph as Ze}from"./packages/core/src/graph.js";import{MANIFEST_DIR as Qe,MANIFEST_FILE as $e,readManifest as et,writeManifest as tt}from"./packages/core/src/manifest.js";import{providerRegistryPath as nt,readProviderRegistry as rt,writeProviderRegistry as it}from"./packages/core/src/provider-registry.js";import{selectProjects as at}from"./packages/core/src/select.js";import{resetProjects as ot,resetToolchain as st}from"./packages/core/src/reset.js";import{runSync as ct}from"./packages/core/src/sync.js";import{vscodeSyncTask as lt}from"./packages/core/src/vscode.js";import{runWatch as ut}from"./packages/core/src/watch.js";import{src_exports as dt}from"./packages/core/src/index.js";import{src_exports as ft}from"./packages/tsconfig/src/index.js";import{src_exports as pt}from"./packages/project/src/index.js";import{src_exports as mt}from"./packages/tsdown/src/index.js";import{defaultSyncTasks as ht}from"./sync.js";export{Oe as CONFIG_FILE_NAMES,ne as CONFIG_SECTION_DESCRIPTIONS,re as CONFIG_SECTION_SCHEMAS,ie as CONFIG_TYPE_SCHEMAS,ze as DBX_GITIGNORE_BLOCK,Ge as IGNORED_DIRS,p as LOG_LEVELS,Qe as MANIFEST_DIR,$e as MANIFEST_FILE,e as TOOLCHAIN_PACKAGE,Y as applyReplacements,X as applyReplacementsDeep,O as asString,Ie as biome,ae as biomeConfigSchema,Ke as buildProjectGraph,k as camelCase,A as camelCaseId,j as capitalize,Le as changelog,oe as changelogConfigSchema,se as changelogVersioningConfigSchema,ce as changelogVersioningSchema,le as changelogVersioningTargetSchema,ue as changelogWorkflowsConfigSchema,Re as config,m as configureLogger,M as constantCase,dt as core,h as createLogger,Z as createReplacer,de as dbxConfigSchema,r as deepMerge,ht as defaultSyncTasks,ke as defineConfig,Q as defineReplacements,qe as detectPackageManager,Ve as detectProjectType,Be as ensureDbxGitignore,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,$ as extractTokens,Ue as findConfigFile,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,ee as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,We as loadToolchainConfig,n as localToolchainVersion,y as logger,fe as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,Je as orderProjects,V as pascalCase,pt as project,pe as projectConfigSchema,Ye as projectGraphPath,me as projectTypeSchema,w as providerActions,nt as providerRegistryPath,he as providersConfigSchema,l as readJsonAt,u as readJsonFile,et as readManifest,Xe as readProjectGraph,rt as readProviderRegistry,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,Ae as repoSlugFromUrl,ot as resetProjects,st as resetToolchain,He as resolveProjectType,o as resolveSort,je as resolveTokens,E as run,ct as runSync,ut as runWatch,G as sanitizeSlashes,Me as sectionConfig,Ne as sectionEnabled,at as selectProjects,x as setLogConfig,S as setLogOverrides,Fe as shared,K as snakeCase,s as sort,D as spawnCross,q as str,C as stripAnsi,ge as templateKindSchema,_e as templateSourceSchema,ve as templateSourceTypeSchema,ye as templatesConfigSchema,J as titleCase,d as toJson,Pe as toYaml,te as tokenPattern,be as toolchainConfigSchema,ft as tsconfig,xe as tsconfigConfigSchema,mt as tsdown,Se as viteConfigSchema,lt as vscodeSyncTask,Ce as watchConfigSchema,we as workflowConfigSchema,Te as workflowSettingSchema,Ee as workflowStepSchema,De as workflowStepsConfigSchema,f as writeJsonFile,tt as writeManifest,Ze as writeProjectGraph,it as writeProviderRegistry};
1
+ import"node:path";import"node:url";import.meta.url;import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./packages/shared/src/bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./packages/shared/src/object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./packages/shared/src/fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./packages/shared/src/logger.js";import{providerActions as w}from"./packages/shared/src/provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./packages/shared/src/run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,sanitizeText as K,snakeCase as q,str as J,stripControlChars as Y,stripEscapeArtifacts as X,titleCase as Z}from"./packages/shared/src/string-utils.js";import{applyReplacements as Q,applyReplacementsDeep as $,createReplacer as ee,defineReplacements as te,extractTokens as ne,hasUnresolvedTokens as re,tokenPattern as ie}from"./packages/shared/src/template.js";import{CONFIG_SECTION_DESCRIPTIONS as ae,CONFIG_SECTION_SCHEMAS as oe,CONFIG_TYPE_SCHEMAS as se,biomeConfigSchema as ce,changelogConfigSchema as le,changelogVersioningConfigSchema as ue,changelogVersioningSchema as de,changelogVersioningTargetSchema as fe,changelogWorkflowsConfigSchema as pe,dbxConfigSchema as me,loggerConfigSchema as he,projectConfigSchema as ge,projectTypeSchema as _e,providersConfigSchema as ve,templateKindSchema as ye,templateSourceSchema as be,templateSourceTypeSchema as xe,templatesConfigSchema as Se,toolchainConfigSchema as Ce,tsconfigConfigSchema as we,viteConfigSchema as Te,watchConfigSchema as Ee,workflowConfigSchema as De,workflowSettingSchema as Oe,workflowStepSchema as ke,workflowStepsConfigSchema as Ae}from"./packages/shared/src/config-schema.js";import{CONFIG_FILE_NAMES as je,defineConfig as Me,repoSlugFromUrl as Ne,resolveTokens as Pe,sectionConfig as Fe,sectionEnabled as Ie}from"./packages/shared/src/toolchain.js";import{toYaml as Le}from"./packages/shared/src/yaml.js";import{src_exports as Re}from"./packages/shared/src/index.js";import{src_exports as ze}from"./packages/biome/src/index.js";import{src_exports as Be}from"./packages/changelog/src/index.js";import{src_exports as Ve}from"./packages/config/src/index.js";import{DBX_GITIGNORE_BLOCK as He,ensureDbxGitignore as Ue}from"./packages/core/src/gitignore.js";import{detectProjectType as We,resolveProjectType as Ge}from"./packages/core/src/project-type.js";import{findConfigFile as Ke,loadToolchainConfig as qe}from"./packages/core/src/loader.js";import{IGNORED_DIRS as Je,buildProjectGraph as Ye,detectPackageManager as Xe,orderProjects as Ze,projectGraphPath as Qe,readProjectGraph as $e,writeProjectGraph as et}from"./packages/core/src/graph.js";import{MANIFEST_DIR as tt,MANIFEST_FILE as nt,readManifest as rt,writeManifest as it}from"./packages/core/src/manifest.js";import{providerRegistryPath as at,readProviderRegistry as ot,writeProviderRegistry as st}from"./packages/core/src/provider-registry.js";import{selectProjects as ct}from"./packages/core/src/select.js";import{resetProjects as lt,resetToolchain as ut}from"./packages/core/src/reset.js";import{runSync as dt}from"./packages/core/src/sync.js";import{vscodeSyncTask as ft}from"./packages/core/src/vscode.js";import{runWatch as pt}from"./packages/core/src/watch.js";import{src_exports as mt}from"./packages/core/src/index.js";import{src_exports as ht}from"./packages/tsconfig/src/index.js";import{src_exports as gt}from"./packages/project/src/index.js";import{src_exports as _t}from"./packages/tsdown/src/index.js";import{defaultSyncTasks as vt}from"./sync.js";export{je as CONFIG_FILE_NAMES,ae as CONFIG_SECTION_DESCRIPTIONS,oe as CONFIG_SECTION_SCHEMAS,se as CONFIG_TYPE_SCHEMAS,He as DBX_GITIGNORE_BLOCK,Je as IGNORED_DIRS,p as LOG_LEVELS,tt as MANIFEST_DIR,nt as MANIFEST_FILE,e as TOOLCHAIN_PACKAGE,Q as applyReplacements,$ as applyReplacementsDeep,O as asString,ze as biome,ce as biomeConfigSchema,Ye as buildProjectGraph,k as camelCase,A as camelCaseId,j as capitalize,Be as changelog,le as changelogConfigSchema,ue as changelogVersioningConfigSchema,de as changelogVersioningSchema,fe as changelogVersioningTargetSchema,pe as changelogWorkflowsConfigSchema,Ve as config,m as configureLogger,M as constantCase,mt as core,h as createLogger,ee as createReplacer,me as dbxConfigSchema,r as deepMerge,vt as defaultSyncTasks,Me as defineConfig,te as defineReplacements,Xe as detectPackageManager,We as detectProjectType,Ue as ensureDbxGitignore,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,ne as extractTokens,Ke as findConfigFile,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,re as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,qe as loadToolchainConfig,n as localToolchainVersion,y as logger,he as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,Ze as orderProjects,V as pascalCase,gt as project,ge as projectConfigSchema,Qe as projectGraphPath,_e as projectTypeSchema,w as providerActions,at as providerRegistryPath,ve as providersConfigSchema,l as readJsonAt,u as readJsonFile,rt as readManifest,$e as readProjectGraph,ot as readProviderRegistry,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,Ne as repoSlugFromUrl,lt as resetProjects,ut as resetToolchain,Ge as resolveProjectType,o as resolveSort,Pe as resolveTokens,E as run,dt as runSync,pt as runWatch,G as sanitizeSlashes,K as sanitizeText,Fe as sectionConfig,Ie as sectionEnabled,ct as selectProjects,x as setLogConfig,S as setLogOverrides,Re as shared,q as snakeCase,s as sort,D as spawnCross,J as str,C as stripAnsi,Y as stripControlChars,X as stripEscapeArtifacts,ye as templateKindSchema,be as templateSourceSchema,xe as templateSourceTypeSchema,Se as templatesConfigSchema,Z as titleCase,d as toJson,Le as toYaml,ie as tokenPattern,Ce as toolchainConfigSchema,ht as tsconfig,we as tsconfigConfigSchema,_t as tsdown,Te as viteConfigSchema,ft as vscodeSyncTask,Ee as watchConfigSchema,De as workflowConfigSchema,Oe as workflowSettingSchema,ke as workflowStepSchema,Ae as workflowStepsConfigSchema,f as writeJsonFile,it as writeManifest,et as writeProjectGraph,st as writeProviderRegistry};
package/dist/package.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;var e=`1.6.1`;export{e as version};
1
+ import"node:path";import"node:url";import.meta.url;var e=`1.7.0`;export{e as version};
@@ -1,5 +1,5 @@
1
- import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import"../../../shared/src/index.js";import{readFileSync as t,writeFileSync as n}from"node:fs";const r={feat:`New features`,fix:`Bug fixes`,refactor:`Refactors`,docs:`Documentation`,style:`Styles`,chore:`Chores`,test:`Tests`,perf:`Performance`,build:`Build system`,ci:`CI`,revert:`Reverts`,breaking:`Breaking changes`},i=[`breaking`,`feat`,`fix`,`perf`,`refactor`,`docs`,`style`,`test`,`build`,`ci`,`chore`,`revert`];function a(e){return r[e]??r[e.toLowerCase()]??`Other changes`}function o(e){let t=/^([a-zA-Z][a-zA-Z0-9]*)(\(([^)]*)\))?(!)?:\s*(.*)$/.exec(e);return t?{type:t[1].toLowerCase(),scope:t[3]?.trim()||void 0,breaking:!!t[4],rest:t[5]??``}:{type:`chore`,breaking:!1,rest:e}}function s(e){let t=/* @__PURE__ */ new Map;for(let n of e){let{parsed:e}=n,r=t.get(e.type)??{title:a(e.type),ungrouped:[],scopes:/* @__PURE__ */ new Map};if(e.scope){let t=r.scopes.get(e.scope)??[];t.push(n),r.scopes.set(e.scope,t)}else r.ungrouped.push(n);t.set(e.type,r)}return[...t.entries()].sort((e,t)=>{let n=i.indexOf(e[0]),r=i.indexOf(t[0]);return(n===-1?i.length:n)-(r===-1?i.length:r)}).map(([,e])=>e)}function c(e){if(e.length===0)return`- No description provided.`;let t=[];for(let n of e){t.push(`### ${n.title}`);for(let e of n.ungrouped)t.push(e.text),t.push(...l(e.bodyParagraphs));for(let[e,r]of n.scopes){t.push(`#### ${u(e)}`);for(let e of r)t.push(e.text),t.push(...l(e.bodyParagraphs))}}return t.join(`
2
- `)}function l(e){let t=[];for(let n of e){let[e,...r]=n;e&&(t.push(` - ${e}`),t.push(...r.map(e=>` ${e}`)))}return t}function u(e){return e.charAt(0).toUpperCase()+e.slice(1)}function d(e){return e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e}function f(e){let t=e.lastIndexOf(`([#`);if(t===-1)return{main:e,inline:``};let n=e.slice(t),r=/^(\(\[#[^\]]+\]\([^)]*\) by [^)]*\)\)?)(?:\(fixes [^)]*\)\)?)?/.exec(n);if(!r)return{main:e,inline:``};let i=r[0]??``;return{main:e.slice(0,t)+i,inline:e.slice(t+i.length).trim()}}function p(e){let t=[],n=[];for(let r of e.split(`
3
- `)){let e=r.trim();if(!e){n.length>0&&(t.push(n),n=[]);continue}if(e.startsWith(`-`)||e.startsWith(`*`)||/^[0-9]+[.)]/.test(e)||!e.replace(/(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#\d+\s*[,;]?\s*/gi,``).trim())continue;let i=/^(BREAKING CHANGE|Reviewed-by|Signed-off-by|Co-authored-by|Acked-by|Co-developed-by|Helped-by|Reported-by|Suggested-by|Tested-by|Cc):\s+(.+)$/i.exec(e);i&&!/^(http|https)\b/.test(e)?(n.length>0&&(t.push(n),n=[]),t.push([`**${(i[1]??``).trim()}:** ${(i[2]??``).trim()}`])):n.push(e)}return n.length>0&&t.push(n),t}function m(e,t){return`https://github.com/${e}/commit/${t}`}function h(e,t){return`https://github.com/${e}/issues/${t}`}function g(e,t){return e.replace(/\[(#[0-9a-fA-F]{6,40})\]\(([^)]*)\)/g,(e,n)=>{let r=n.replace(`#`,``).slice(0,7);return`[#${r}](${m(t,r)})`}).replace(/(^|[^\w[])#([0-9a-fA-F]{7,40})(?![0-9a-fA-F])(?=[)\].,;:\s]|$)/g,(e,n,r)=>{let i=r.slice(0,7);return`${n}[#${i}](${m(t,i)})`})}function _(e,t){return e.replace(/\[#(\d+)(?=[ \]])(?:[^\]]*)\]\([^)]*\)/g,(e,n)=>`[#${n}](${h(t,n)})`).replace(/(^|[^\w[])#(\d+)(?=[)\].,;:\s]|$)/g,(e,n,r)=>`${n}[#${r}](${h(t,r)})`)}function v(e,t){if(!t)return e;let n=g(e,t);return n=_(n,t),n}function y(r,i){if(!i)return;let a=t(r,`utf8`),o=a.split(`
4
- `).map(e=>v(e,i)).join(`
5
- `);o!==a&&(n(r,o,`utf8`),e.info(` formatted ${r}`))}export{d as capitalize,p as formatBody,y as formatChangelogFile,v as formatLine,s as groupItems,o as parseCcSubject,c as renderGroups,a as ruleTitle,f as splitInlineDescription};
1
+ import"node:path";import"node:url";import.meta.url;import{logger as e}from"../../../shared/src/logger.js";import{sanitizeText as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{readFileSync as n,writeFileSync as r}from"node:fs";const i={feat:`New features`,fix:`Bug fixes`,refactor:`Refactors`,docs:`Documentation`,style:`Styles`,chore:`Chores`,test:`Tests`,perf:`Performance`,build:`Build system`,ci:`CI`,revert:`Reverts`,breaking:`Breaking changes`},a=[`breaking`,`feat`,`fix`,`perf`,`refactor`,`docs`,`style`,`test`,`build`,`ci`,`chore`,`revert`];function o(e){return i[e]??i[e.toLowerCase()]??`Other changes`}function s(e){let t=/^([a-zA-Z][a-zA-Z0-9]*)(\(([^)]*)\))?(!)?:\s*(.*)$/.exec(e);return t?{type:t[1].toLowerCase(),scope:t[3]?.trim()||void 0,breaking:!!t[4],rest:t[5]??``}:{type:`chore`,breaking:!1,rest:e}}function c(e){let t=/* @__PURE__ */ new Map;for(let n of e){let{parsed:e}=n,r=t.get(e.type)??{title:o(e.type),ungrouped:[],scopes:/* @__PURE__ */ new Map};if(e.scope){let t=r.scopes.get(e.scope)??[];t.push(n),r.scopes.set(e.scope,t)}else r.ungrouped.push(n);t.set(e.type,r)}return[...t.entries()].sort((e,t)=>{let n=a.indexOf(e[0]),r=a.indexOf(t[0]);return(n===-1?a.length:n)-(r===-1?a.length:r)}).map(([,e])=>e)}function l(e){if(e.length===0)return`- No description provided.`;let t=[];for(let n of e){t.push(`### ${n.title}`);for(let e of n.ungrouped)t.push(e.text),t.push(...u(e.bodyParagraphs));for(let[e,r]of n.scopes){t.push(`#### ${d(e)}`);for(let e of r)t.push(e.text),t.push(...u(e.bodyParagraphs))}}return t.join(`
2
+ `)}function u(e){let t=[];for(let n of e){let[e,...r]=n;e&&(t.push(` - ${e}`),t.push(...r.map(e=>` ${e}`)))}return t}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}function f(e){return e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e}function p(e){let t=e.lastIndexOf(`([#`);if(t===-1)return{main:e,inline:``};let n=e.slice(t),r=/^(\(\[#[^\]]+\]\([^)]*\) by [^)]*\)\)?)(?:\(fixes [^)]*\)\)?)?/.exec(n);if(!r)return{main:e,inline:``};let i=r[0]??``;return{main:e.slice(0,t)+i,inline:e.slice(t+i.length).trim()}}function m(e){let n=[],r=[];for(let i of e.split(`
3
+ `)){let e=t(i.trim());if(!e){r.length>0&&(n.push(r),r=[]);continue}if(e.startsWith(`-`)||e.startsWith(`*`)||/^[0-9]+[.)]/.test(e)||!e.replace(/(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#\d+\s*[,;]?\s*/gi,``).trim())continue;let a=/^(BREAKING CHANGE|Reviewed-by|Signed-off-by|Co-authored-by|Acked-by|Co-developed-by|Helped-by|Reported-by|Suggested-by|Tested-by|Cc):\s+(.+)$/i.exec(e);a&&!/^(http|https)\b/.test(e)?(r.length>0&&(n.push(r),r=[]),n.push([`**${(a[1]??``).trim()}:** ${(a[2]??``).trim()}`])):r.push(e)}return r.length>0&&n.push(r),n}function h(e,t){return`https://github.com/${e}/commit/${t}`}function g(e,t){return`https://github.com/${e}/issues/${t}`}function _(e,t){return e.replace(/\[(#[0-9a-fA-F]{6,40})\]\(([^)]*)\)/g,(e,n)=>{let r=n.replace(`#`,``).slice(0,7);return`[#${r}](${h(t,r)})`}).replace(/(^|[^\w[])#([0-9a-fA-F]{7,40})(?![0-9a-fA-F])(?=[)\].,;:\s]|$)/g,(e,n,r)=>{let i=r.slice(0,7);return`${n}[#${i}](${h(t,i)})`})}function v(e,t){return e.replace(/\[#(\d+)(?=[ \]])(?:[^\]]*)\]\([^)]*\)/g,(e,n)=>`[#${n}](${g(t,n)})`).replace(/(^|[^\w[])#(\d+)(?=[)\].,;:\s]|$)/g,(e,n,r)=>`${n}[#${r}](${g(t,r)})`)}function y(e,t){if(!t)return e;let n=_(e,t);return n=v(n,t),n}function b(t,i){if(!i)return;let a=n(t,`utf8`),o=a.split(`
4
+ `).map(e=>y(e,i)).join(`
5
+ `);o!==a&&(r(t,o,`utf8`),e.info(` formatted ${t}`))}export{f as capitalize,m as formatBody,b as formatChangelogFile,y as formatLine,c as groupItems,s as parseCcSubject,l as renderGroups,o as ruleTitle,p as splitInlineDescription};
@@ -1 +1 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import t from"node:fs";import{execFileSync as n}from"node:child_process";function r(e,t){let r=[`log`,`--no-merges`,`--pretty=format:%H%x1f%s%x1f%b%x1f%an%x1f%ae%x1e`,e];return t&&r.push(`--`,t),n(`git`,r,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).split(``).filter(e=>e.length>0).map(e=>{let[t,n,r,i,a]=e.split(``);return{hash:t.trim(),subject:(n??``).trim(),body:(r??``).trim(),author:(i??``).trim(),authorEmail:(a??``).trim()}}).filter(e=>e.subject.length>0)}function i(e){let t=e.match(/(?:github\.com[/:])([^/]+)\/([^/.]+?)(?:\.git)?$/);if(t?.[1]&&t[2])return`${t[1]}/${t[2]}`}function a(){try{let e=i(n(`git`,[`remote`,`get-url`,`origin`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim());if(e)return e}catch{}try{let n=t.readFileSync(e.join(process.cwd(),`package.json`),`utf8`),r=JSON.parse(n),a=typeof r.repository==`string`?r.repository:r.repository?.url;if(a)return i(a)}catch{}}let o;function s(){if(o!==void 0)return o;try{n(`gh`,[`auth`,`status`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}),o=!0}catch{o=!1}return o}const c=/* @__PURE__ */ new Map;function l(e,t,r){if(!s())return;let i=`repos/${e}${t}::${r}`;if(c.has(i))return c.get(i);let a;try{let i=n(`gh`,[`api`,`repos/${e}${t}`,`--jq`,r],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).trim();a=i&&i!==`null`?i:void 0}catch{a=void 0}return c.set(i,a),a}function u(e){return/^(\d+)\+([^@]+)@users\.noreply\.github\.com$/.exec(e.trim())?.[2]}function d(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function f(e,t){let n;t&&(n=l(t,`/commits/${e.hash}/pulls`,`.[0].user.login`),n||=l(t,`/commits/${e.hash}`,`.author.login`)),n||=u(e.authorEmail);let r=n??e.author;return d(r)&&(r=u(r)??r.split(`@`)[0]??r),{name:r,url:n?`https://github.com/${n}`:void 0}}function p(e){return e.url?`[${e.name}](${e.url})`:e.name}function m(e){let t=/* @__PURE__ */ new Set;for(let n of e.matchAll(/\b(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#(\d+)/gi)){let e=Number(n[1]);Number.isInteger(e)&&t.add(e)}return[...t]}function h(e,t){let n={number:t},r=l(e,`/issues/${t}`,`[.title,.html_url]`);if(r)try{let e=JSON.parse(r);n.title=e[0]||void 0,n.url=e[1]||void 0}catch{}return n}function g(e,t){let n=m(`${e.subject}\n${e.body}`);return n.length===0?[]:t?n.map(e=>h(t,e)):n.map(e=>({number:e}))}function _(e){return e.length===0?``:` (fixes ${e.map(e=>e.url&&e.title?`[#${e.number} ${e.title}](${e.url})`:e.url?`[#${e.number}](${e.url})`:`#${e.number}`).join(`, `)})`}function v(e){return/\[(#[0-9a-fA-F]{6,40})\]\([^)]*\)/.exec(e)?.[1]?.replace(`#`,``)}function y(e){try{return n(`git`,[`log`,`-1`,`--format=%aI`,e],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return}}function b(e){for(let t of[`v${e}`,e])try{let e=n(`git`,[`log`,`-1`,`--format=%aI`,t],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim();if(e)return e}catch{}}function x(e,t){let n=b(e);if(n)return new Date(n);for(let e of t){let t=v(e);if(t){let e=y(t);if(e)return new Date(e)}}}let S;function C(){if(S)return S;let e=/* @__PURE__ */ new Map;try{let t=n(`git`,[`log`,`--no-merges`,`--all`,`--format=%H%x1f%s%x1f%b%x1e`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],maxBuffer:134217728});for(let n of t.split(``)){if(!n.trim())continue;let[t=``,r=``,i=``]=n.split(``);if(!t)continue;let a={subject:r.trim(),body:i.trim()};e.set(t.trim(),a),e.set(t.trim().slice(0,7),a)}}catch{}return S=e,e}function w(e){return C().get(e)}function T(e){let t=`patch`;for(let n of e){let e=`${n.subject}\n${n.body}`;/\bBREAKING CHANGE\b/.test(e)||/^[a-zA-Z]+(\([^)]*\))?!:/.test(n.subject)?t=`major`:t!==`major`&&/^feat(\([^)]*\))?:/i.test(n.subject)&&(t=`minor`)}return t}export{v as bulletHash,T as deriveBump,x as deriveVersionDate,w as readCommit,r as readCommits,g as recordIssues,p as renderAuthor,_ as renderIssues,a as repoSlug,f as resolveAuthorInfo};
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{sanitizeText as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import n from"node:fs";import{execFileSync as r}from"node:child_process";function i(e,n){let i=[`log`,`--no-merges`,`--pretty=format:%H%x1f%s%x1f%b%x1f%an%x1f%ae%x1e`,e];return n&&i.push(`--`,n),r(`git`,i,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).split(``).filter(e=>e.length>0).map(e=>{let[n,r,i,a,o]=e.split(``);return{hash:n.trim(),subject:t((r??``).trim()),body:t((i??``).trim()),author:(a??``).trim(),authorEmail:(o??``).trim()}}).filter(e=>e.subject.length>0)}function a(e){let t=e.match(/(?:github\.com[/:])([^/]+)\/([^/.]+?)(?:\.git)?$/);if(t?.[1]&&t[2])return`${t[1]}/${t[2]}`}function o(){try{let e=a(r(`git`,[`remote`,`get-url`,`origin`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim());if(e)return e}catch{}try{let t=n.readFileSync(e.join(process.cwd(),`package.json`),`utf8`),r=JSON.parse(t),i=typeof r.repository==`string`?r.repository:r.repository?.url;if(i)return a(i)}catch{}}let s;function c(){if(s!==void 0)return s;try{r(`gh`,[`auth`,`status`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}),s=!0}catch{s=!1}return s}const l=/* @__PURE__ */ new Map;function u(e,t,n){if(!c())return;let i=`repos/${e}${t}::${n}`;if(l.has(i))return l.get(i);let a;try{let i=r(`gh`,[`api`,`repos/${e}${t}`,`--jq`,n],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).trim();a=i&&i!==`null`?i:void 0}catch{a=void 0}return l.set(i,a),a}function d(e){return/^(\d+)\+([^@]+)@users\.noreply\.github\.com$/.exec(e.trim())?.[2]}function f(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function p(e,t){let n;t&&(n=u(t,`/commits/${e.hash}/pulls`,`.[0].user.login`),n||=u(t,`/commits/${e.hash}`,`.author.login`)),n||=d(e.authorEmail);let r=n??e.author;return f(r)&&(r=d(r)??r.split(`@`)[0]??r),{name:r,url:n?`https://github.com/${n}`:void 0}}function m(e){return e.url?`[${e.name}](${e.url})`:e.name}function h(e){let t=/* @__PURE__ */ new Set;for(let n of e.matchAll(/\b(?:close[sd]?|fixe?s|fixed|resolves?|resolved)\b\s*:?\s*#(\d+)/gi)){let e=Number(n[1]);Number.isInteger(e)&&t.add(e)}return[...t]}function g(e,t){let n={number:t},r=u(e,`/issues/${t}`,`[.title,.html_url]`);if(r)try{let e=JSON.parse(r);n.title=e[0]||void 0,n.url=e[1]||void 0}catch{}return n}function _(e,t){let n=h(`${e.subject}\n${e.body}`);return n.length===0?[]:t?n.map(e=>g(t,e)):n.map(e=>({number:e}))}function v(e){return e.length===0?``:` (fixes ${e.map(e=>e.url&&e.title?`[#${e.number} ${e.title}](${e.url})`:e.url?`[#${e.number}](${e.url})`:`#${e.number}`).join(`, `)})`}function y(e){return/\[(#[0-9a-fA-F]{6,40})\]\([^)]*\)/.exec(e)?.[1]?.replace(`#`,``)}function b(e){try{return r(`git`,[`log`,`-1`,`--format=%aI`,e],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return}}function x(e){for(let t of[`v${e}`,e])try{let e=r(`git`,[`log`,`-1`,`--format=%aI`,t],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim();if(e)return e}catch{}}function S(e,t){let n=x(e);if(n)return new Date(n);for(let e of t){let t=y(e);if(t){let e=b(t);if(e)return new Date(e)}}}let C;function w(){if(C)return C;let e=/* @__PURE__ */ new Map;try{let t=r(`git`,[`log`,`--no-merges`,`--all`,`--format=%H%x1f%s%x1f%b%x1e`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],maxBuffer:134217728});for(let n of t.split(``)){if(!n.trim())continue;let[t=``,r=``,i=``]=n.split(``);if(!t)continue;let a={subject:r.trim(),body:i.trim()};e.set(t.trim(),a),e.set(t.trim().slice(0,7),a)}}catch{}return C=e,e}function T(e){return w().get(e)}function E(e){let t=`patch`;for(let n of e){let e=`${n.subject}\n${n.body}`;/\bBREAKING CHANGE\b/.test(e)||/^[a-zA-Z]+(\([^)]*\))?!:/.test(n.subject)?t=`major`:t!==`major`&&/^feat(\([^)]*\))?:/i.test(n.subject)&&(t=`minor`)}return t}export{y as bulletHash,E as deriveBump,S as deriveVersionDate,T as readCommit,i as readCommits,_ as recordIssues,m as renderAuthor,v as renderIssues,o as repoSlug,p as resolveAuthorInfo};
@@ -1,14 +1,14 @@
1
- import{default as e}from"node:path";import"node:url";import.meta.url;import{titleCase as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{splitBaseSchema as n,zodToJsonSchema as r}from"../schema.js";import{collectEnvVars as i}from"../collect.js";import{cliFlagLabel as a}from"./cli.js";import o from"node:fs";import{z as s}from"zod";function c(e,t,n,r){let i=[`${n} ${t}`];return e.type===`object`&&e.properties?(i.push(...l(e,`${n}#`,r)),i):(e.env&&i.push(`- **Env**: \`${e.env}\``),i.push(`- **Type**: \`${e.tsType??(Array.isArray(e.type)?e.type.join(` | `):e.type)??`any`}\``),e.default!==void 0&&i.push(`- **Default**: \`${JSON.stringify(e.default)}\``),e.description&&i.push(``,e.description),i)}function l(e,t,n){let r=[];for(let[i,o]of Object.entries(e.properties??{})){let e=n.useFlags&&o.env?a(o.env,n):`\`${i}\``;r.push(``,...c(o,e,t,n))}return r}function u(e,r,i={}){let a=i.outline??[2,3,4],o={useFlags:e===(i.cliScope??`cli`),baseGroup:i.baseGroup??`base`,...i.envPrefix?{envPrefix:i.envPrefix}:{},...i.shortFlags?{shortFlags:i.shortFlags}:{}},{base:s,groups:c}=n(r,o.baseGroup),u=[`---`,`title: ${t(e)} Configuration`,`outline: ${JSON.stringify(a)}`,`---`,``,`# ${t(e)} Configuration`,``,`Every setting below is configured through an environment variable.`,``,`## Base`,``,...l(s,`###`,o)];for(let[e,n]of Object.entries(c.properties??{}))u.push(``,`## ${t(e)}`,``,...l(n,`###`,o));return`${u.join(`
2
- `).trim()}\n`}function d(e){return e===void 0?`—`:Array.isArray(e)?`\`${e.join(`,`)}\``:typeof e==`object`?`\`${JSON.stringify(e)}\``:`\`${String(e)}\``}function f(e,t,n){for(let r of Object.values(e.properties??{})){let e=r;if(e.type===`object`&&e.properties)f(r,t,n);else if(e.env){let r=e.envDefault??e.default;n.push({name:e.env,scope:t,...e.description?{description:e.description}:{},...r===void 0?{}:{default:r},...e.required===!0?{required:!0}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{}})}}}function p(e,t={}){let a=t.outline??[2,3,4],o=t.baseGroup??`base`,s=t.labels??{},c=[],l=[];for(let[t,i]of Object.entries(e)){let e=i.jsonSchema??r(i.zodSchema);f(n(e,o).base,t,l)}for(let n of i(e,t.envPrefix??`APP_`,{envPathOf:t.envPathOf}))n.required&&c.push({name:n.name,scope:n.scope,...n.description?{description:n.description}:{},...n.default===void 0?{}:{default:n.default}});let u=e=>[`| Variable | Default | Description |`,`| -------- | ------- | ----------- |`,...e.map(e=>`| \`${e.name}\` | ${d(e.default)} | ${(e.description??``).replace(/\n/g,` `).replace(/\|/g,`\\|`)} |`)].join(`
3
- `),p=s.title??`Environment variables`,m=t.intro??`Environment variables are prefixed with \`${t.envPrefix??`APP_`}\`.
1
+ import{default as e}from"node:path";import"node:url";import.meta.url;import{sanitizeText as t,titleCase as n}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{splitBaseSchema as r,zodToJsonSchema as i}from"../schema.js";import{collectEnvVars as a}from"../collect.js";import{cliFlagLabel as o}from"./cli.js";import s from"node:fs";import{z as c}from"zod";function l(e,n,r,i){let a=[`${r} ${n}`];return e.type===`object`&&e.properties?(a.push(...u(e,`${r}#`,i)),a):(e.env&&a.push(`- **Env**: \`${e.env}\``),a.push(`- **Type**: \`${e.tsType??(Array.isArray(e.type)?e.type.join(` | `):e.type)??`any`}\``),e.default!==void 0&&a.push(`- **Default**: \`${JSON.stringify(e.default)}\``),e.description&&a.push(``,t(e.description)),a)}function u(e,t,n){let r=[];for(let[i,a]of Object.entries(e.properties??{})){let e=n.useFlags&&a.env?o(a.env,n):`\`${i}\``;r.push(``,...l(a,e,t,n))}return r}function d(e,t,i={}){let a=i.outline??[2,3,4],o={useFlags:e===(i.cliScope??`cli`),baseGroup:i.baseGroup??`base`,...i.envPrefix?{envPrefix:i.envPrefix}:{},...i.shortFlags?{shortFlags:i.shortFlags}:{}},{base:s,groups:c}=r(t,o.baseGroup),l=[`---`,`title: ${n(e)} Configuration`,`outline: ${JSON.stringify(a)}`,`---`,``,`# ${n(e)} Configuration`,``,`Every setting below is configured through an environment variable.`,``,`## Base`,``,...u(s,`###`,o)];for(let[e,t]of Object.entries(c.properties??{}))l.push(``,`## ${n(e)}`,``,...u(t,`###`,o));return`${l.join(`
2
+ `).trim()}\n`}function f(e){return e===void 0?`—`:Array.isArray(e)?`\`${e.join(`,`)}\``:typeof e==`object`?`\`${JSON.stringify(e)}\``:`\`${String(e)}\``}function p(e,t,n){for(let r of Object.values(e.properties??{})){let e=r;if(e.type===`object`&&e.properties)p(r,t,n);else if(e.env){let r=e.envDefault??e.default;n.push({name:e.env,scope:t,...e.description?{description:e.description}:{},...r===void 0?{}:{default:r},...e.required===!0?{required:!0}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{}})}}}function m(e,t={}){let n=t.outline??[2,3,4],o=t.baseGroup??`base`,s=t.labels??{},c=[],l=[];for(let[t,n]of Object.entries(e)){let e=n.jsonSchema??i(n.zodSchema);p(r(e,o).base,t,l)}for(let n of a(e,t.envPrefix??`APP_`,{envPathOf:t.envPathOf}))n.required&&c.push({name:n.name,scope:n.scope,...n.description?{description:n.description}:{},...n.default===void 0?{}:{default:n.default}});let u=e=>[`| Variable | Default | Description |`,`| -------- | ------- | ----------- |`,...e.map(e=>`| \`${e.name}\` | ${f(e.default)} | ${(e.description??``).replace(/\n/g,` `).replace(/\|/g,`\\|`)} |`)].join(`
3
+ `),d=s.title??`Environment variables`,m=t.intro??`Environment variables are prefixed with \`${t.envPrefix??`APP_`}\`.
4
4
  The underscore is a path separator, so every config value has an environment
5
5
  variable equivalent.`,h=t.requiredNote??`These variables have no safe default and **must** be set:`,g=t.coreNote??`The core (base) config values:`,_=t.references&&t.references.length?`\n## References\n\n${t.references.map(e=>`- [${e.label}](${e.href})`).join(`
6
6
  `)}\n`:``;return`---
7
- title: ${p}
8
- outline: ${JSON.stringify(a)}
7
+ title: ${d}
8
+ outline: ${JSON.stringify(n)}
9
9
  ---
10
10
 
11
- # ${p}
11
+ # ${d}
12
12
 
13
13
  ${m}
14
14
 
@@ -23,5 +23,5 @@ ${u(c)}
23
23
  ${g}
24
24
 
25
25
  ${u(l)}
26
- ${_}`}function m(t,n){let i=n.outline??[2,3,4],a=Object.entries(t).map(([t,a])=>[e.resolve(n.outDir,`${t}.md`),u(t,a.jsonSchema??r(a.zodSchema),{...n,outline:i})]);a.push([e.resolve(n.outDir,n.indexFilename??`index.md`),p(t,{...n,outline:i})]);for(let[t,n]of a)o.mkdirSync(e.dirname(t),{recursive:!0}),o.writeFileSync(t,n,`utf-8`);return a.map(([e])=>e)}function h(e){return e.$ref?e.$ref.split(`/`).pop()??void 0:void 0}function g(e,t){let n=h(e);return n&&t[n]?t[n]:e}function _(e){return typeof e==`string`?`'${e}'`:String(e)}function v(e,t){if(e.$ref){let n=g(e,t);return n.properties||n.anyOf||n.oneOf?h(e):v(n,t)}if(e.const!==void 0)return _(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(_).join(` | `);let n=e.anyOf??e.oneOf;if(n&&n.length>0)return n.map(e=>v(e,t)).join(` | `);if(e.properties)return`object`;let r=Array.isArray(e.type)?e.type:e.type?[e.type]:[];return r.includes(`array`)?`Array<${v(e.items??{},t)}>`:r.includes(`object`)?`Record<string, unknown>`:r.length===0?`unknown`:r.map(e=>e===`integer`?`number`:e).join(` | `)}function y(e,t,n){let r=h(e);if(r){if(n.has(r))return{properties:{},required:[]};n.add(r)}let i=g(e,t);if(i.properties)return{properties:i.properties,required:i.required??[]};let a=i.anyOf??i.oneOf;if(a){let e={},r=/* @__PURE__ */ new Set;for(let i of a){let a=y(i,t,n);Object.assign(e,a.properties);for(let e of a.required)r.add(e)}return{properties:e,required:[...r]}}return(Array.isArray(i.type)?i.type:i.type?[i.type]:[]).includes(`array`)&&i.items?y(i.items,t,n):{properties:{},required:[]}}function b(e,t,n,r,i,a){let o=g(t,r),s=[`${n} \`${e}\``];s.push(`- **Type**: \`${v(t,r)}\``),a&&s.push(`- **Required**`);let c=t.default??o.default;c!==void 0&&s.push(`- **Default**: \`${JSON.stringify(c)}\``);let l=t.description??o.description;l&&s.push(``,l);let u=y(t,r,i);for(let[e,t]of Object.entries(u.properties))s.push(``,...b(e,t,`${n}#`,r,i,u.required.includes(e)));return s}function x(e,t,n,r){let i=[],a=e.required??[];for(let[o,s]of Object.entries(e.properties??{}))i.push(``,...b(o,s,t,n,r,a.includes(o)));return i}function S(e,t={}){let n=t.title??`Configuration`,r=[`---`,`title: ${n}`,`outline: ${JSON.stringify(t.outline??[2,3,4])}`,`---`,``,`# ${n}`,``];t.intro&&r.push(t.intro,``);for(let t of e){r.push(`## \`${t.key}\``,``),t.description&&r.push(t.description,``);let e=s.toJSONSchema(t.schema,{target:`draft-2020-12`}),n=e.$defs??{},i=e.$ref?g(e,n):e;r.push(...x(i,`###`,n,/* @__PURE__ */ new Set),``)}return`${r.join(`
27
- `).trim()}\n`}export{m as generateConfigMarkdown,S as renderConfigFileMarkdown,p as renderConfigIndex,u as renderScopeMarkdown};
26
+ ${_}`}function h(t,n){let r=n.outline??[2,3,4],a=Object.entries(t).map(([t,a])=>[e.resolve(n.outDir,`${t}.md`),d(t,a.jsonSchema??i(a.zodSchema),{...n,outline:r})]);a.push([e.resolve(n.outDir,n.indexFilename??`index.md`),m(t,{...n,outline:r})]);for(let[t,n]of a)s.mkdirSync(e.dirname(t),{recursive:!0}),s.writeFileSync(t,n,`utf-8`);return a.map(([e])=>e)}function g(e){return e.$ref?e.$ref.split(`/`).pop()??void 0:void 0}function _(e,t){let n=g(e);return n&&t[n]?t[n]:e}function v(e){return typeof e==`string`?`'${e}'`:String(e)}function y(e,t){if(e.$ref){let n=_(e,t);return n.properties||n.anyOf||n.oneOf?g(e):y(n,t)}if(e.const!==void 0)return v(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(v).join(` | `);let n=e.anyOf??e.oneOf;if(n&&n.length>0)return n.map(e=>y(e,t)).join(` | `);if(e.properties)return`object`;let r=Array.isArray(e.type)?e.type:e.type?[e.type]:[];return r.includes(`array`)?`Array<${y(e.items??{},t)}>`:r.includes(`object`)?`Record<string, unknown>`:r.length===0?`unknown`:r.map(e=>e===`integer`?`number`:e).join(` | `)}function b(e,t,n){let r=g(e);if(r){if(n.has(r))return{properties:{},required:[]};n.add(r)}let i=_(e,t);if(i.properties)return{properties:i.properties,required:i.required??[]};let a=i.anyOf??i.oneOf;if(a){let e={},r=/* @__PURE__ */ new Set;for(let i of a){let a=b(i,t,n);Object.assign(e,a.properties);for(let e of a.required)r.add(e)}return{properties:e,required:[...r]}}return(Array.isArray(i.type)?i.type:i.type?[i.type]:[]).includes(`array`)&&i.items?b(i.items,t,n):{properties:{},required:[]}}function x(e,n,r,i,a,o){let s=_(n,i),c=[`${r} \`${e}\``];c.push(`- **Type**: \`${y(n,i)}\``),o&&c.push(`- **Required**`);let l=n.default??s.default;l!==void 0&&c.push(`- **Default**: \`${JSON.stringify(l)}\``);let u=t(n.description??s.description??``);u&&c.push(``,u);let d=b(n,i,a),f=r.length<6?`${r}#`:r;for(let[e,t]of Object.entries(d.properties))c.push(``,...x(e,t,f,i,a,d.required.includes(e)));return c}function S(e,t,n,r){let i=[],a=e.required??[];for(let[o,s]of Object.entries(e.properties??{}))i.push(``,...x(o,s,t,n,r,a.includes(o)));return i}function C(e,t={}){let n=t.title??`Configuration`,r=[`---`,`title: ${n}`,`outline: ${JSON.stringify(t.outline??[2,3,4])}`,`---`,``,`# ${n}`,``];t.intro&&r.push(t.intro,``);for(let t of e){r.push(`## \`${t.key}\``,``),t.description&&r.push(t.description,``);let e=c.toJSONSchema(t.schema,{target:`draft-2020-12`}),n=e.$defs??{},i=e.$ref?_(e,n):e;r.push(...S(i,`###`,n,/* @__PURE__ */ new Set),``)}return`${r.join(`
27
+ `).trim()}\n`}export{h as generateConfigMarkdown,C as renderConfigFileMarkdown,m as renderConfigIndex,d as renderScopeMarkdown};
@@ -6,7 +6,7 @@ import { Colors, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerO
6
6
  import { Sortable, deepMerge, isPlainObject, mapValues, resolveSort, sort } from "./object-utils.js";
7
7
  import { ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, providerActions } from "./provider.js";
8
8
  import { RunOptions, SpawnCrossOptions, killProcessTree, run, spawnCross } from "./run.js";
9
- import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, formatCliFlag, hasText, indent, isLocalhost, kebabCase, pascalCase, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, sanitizeSlashes, snakeCase, str, titleCase } from "./string-utils.js";
9
+ import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, formatCliFlag, hasText, indent, isLocalhost, kebabCase, pascalCase, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, sanitizeSlashes, sanitizeText, snakeCase, str, stripControlChars, stripEscapeArtifacts, titleCase } from "./string-utils.js";
10
10
  import { ReplacementOptions, ReplacementValue, Replacements, Replacer, applyReplacements, applyReplacementsDeep, createReplacer, defineReplacements, extractTokens, hasUnresolvedTokens, tokenPattern } from "./template.js";
11
11
  import { ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, DbxConfigSections, ProjectType, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainConfigSections, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig } from "./config-types.js";
12
12
  import { Awaitable, GeneratedFile, JsonValue, PackageJson, ToolchainArgument, ToolchainCommand, ToolchainCommandContext, ToolchainOption } from "./types.js";
@@ -14,7 +14,7 @@ import { CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMA
14
14
  import { CONFIG_FILE_NAMES, DbxConfig, ManagedFile, SyncContext, SyncSummary, SyncTask, ToolchainConfig, ToolchainHooks, ToolchainSection, defineConfig, repoSlugFromUrl, resolveTokens, sectionConfig, sectionEnabled } from "./toolchain.js";
15
15
  import { YamlValue, toYaml } from "./yaml.js";
16
16
  declare namespace index_d_exports {
17
- export { Awaitable, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DbxConfig, DbxConfigSections, GeneratedFile, JsonValue, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, ManagedFile, PackageJson, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, YamlValue, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, configureLogger, constantCase, createLogger, createReplacer, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveSort, resolveTokens, run, sanitizeSlashes, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, str, stripAnsi, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
17
+ export { Awaitable, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DbxConfig, DbxConfigSections, GeneratedFile, JsonValue, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, ManagedFile, PackageJson, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, YamlValue, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, configureLogger, constantCase, createLogger, createReplacer, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
18
18
  }
19
19
  //#endregion
20
- export { Awaitable, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DbxConfig, DbxConfigSections, GeneratedFile, JsonValue, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, ManagedFile, PackageJson, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, configureLogger, constantCase, createLogger, createReplacer, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, index_d_exports, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveSort, resolveTokens, run, sanitizeSlashes, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, str, stripAnsi, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
20
+ export { Awaitable, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DbxConfig, DbxConfigSections, GeneratedFile, JsonValue, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, ManagedFile, PackageJson, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, configureLogger, constantCase, createLogger, createReplacer, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, index_d_exports, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{__exportAll as ee}from"../../../_virtual/_rolldown/runtime.js";import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./logger.js";import{providerActions as w}from"./provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,snakeCase as K,str as q,titleCase as te}from"./string-utils.js";import{applyReplacements as J,applyReplacementsDeep as Y,createReplacer as X,defineReplacements as Z,extractTokens as Q,hasUnresolvedTokens as $,tokenPattern as ne}from"./template.js";import{CONFIG_SECTION_DESCRIPTIONS as re,CONFIG_SECTION_SCHEMAS as ie,CONFIG_TYPE_SCHEMAS as ae,biomeConfigSchema as oe,changelogConfigSchema as se,changelogVersioningConfigSchema as ce,changelogVersioningSchema as le,changelogVersioningTargetSchema as ue,changelogWorkflowsConfigSchema as de,dbxConfigSchema as fe,loggerConfigSchema as pe,projectConfigSchema as me,projectTypeSchema as he,providersConfigSchema as ge,templateKindSchema as _e,templateSourceSchema as ve,templateSourceTypeSchema as ye,templatesConfigSchema as be,toolchainConfigSchema as xe,tsconfigConfigSchema as Se,viteConfigSchema as Ce,watchConfigSchema as we,workflowConfigSchema as Te,workflowSettingSchema as Ee,workflowStepSchema as De,workflowStepsConfigSchema as Oe}from"./config-schema.js";import{CONFIG_FILE_NAMES as ke,defineConfig as Ae,repoSlugFromUrl as je,resolveTokens as Me,sectionConfig as Ne,sectionEnabled as Pe}from"./toolchain.js";import{toYaml as Fe}from"./yaml.js";var Ie=/* @__PURE__ */ ee({CONFIG_FILE_NAMES:()=>ke,CONFIG_SECTION_DESCRIPTIONS:()=>re,CONFIG_SECTION_SCHEMAS:()=>ie,CONFIG_TYPE_SCHEMAS:()=>ae,LOG_LEVELS:()=>p,TOOLCHAIN_PACKAGE:()=>e,applyReplacements:()=>J,applyReplacementsDeep:()=>Y,asString:()=>O,biomeConfigSchema:()=>oe,camelCase:()=>k,camelCaseId:()=>A,capitalize:()=>j,changelogConfigSchema:()=>se,changelogVersioningConfigSchema:()=>ce,changelogVersioningSchema:()=>le,changelogVersioningTargetSchema:()=>ue,changelogWorkflowsConfigSchema:()=>de,configureLogger:()=>m,constantCase:()=>M,createLogger:()=>h,createReplacer:()=>X,dbxConfigSchema:()=>fe,deepMerge:()=>r,defineConfig:()=>Ae,defineReplacements:()=>Z,ensureLeadingSlash:()=>N,ensureSlashes:()=>P,ensureTrailingSlash:()=>F,extractTokens:()=>Q,findOwnCliEntry:()=>t,formatCliFlag:()=>I,getLogOverrides:()=>g,getLogger:()=>_,hasText:()=>L,hasUnresolvedTokens:()=>$,indent:()=>R,isLocalhost:()=>z,isLogLevel:()=>v,isPlainObject:()=>i,kebabCase:()=>B,killProcessTree:()=>T,localToolchainVersion:()=>n,logger:()=>y,loggerConfigSchema:()=>pe,mapValues:()=>a,mergeJsonAt:()=>c,normalizeLogLevel:()=>b,pascalCase:()=>V,projectConfigSchema:()=>me,projectTypeSchema:()=>he,providerActions:()=>w,providersConfigSchema:()=>ge,readJsonAt:()=>l,readJsonFile:()=>u,removeDoubleSlashes:()=>H,removeLeadingSlash:()=>U,removeTrailingSlash:()=>W,repoSlugFromUrl:()=>je,resolveSort:()=>o,resolveTokens:()=>Me,run:()=>E,sanitizeSlashes:()=>G,sectionConfig:()=>Ne,sectionEnabled:()=>Pe,setLogConfig:()=>x,setLogOverrides:()=>S,snakeCase:()=>K,sort:()=>s,spawnCross:()=>D,str:()=>q,stripAnsi:()=>C,templateKindSchema:()=>_e,templateSourceSchema:()=>ve,templateSourceTypeSchema:()=>ye,templatesConfigSchema:()=>be,titleCase:()=>te,toJson:()=>d,toYaml:()=>Fe,tokenPattern:()=>ne,toolchainConfigSchema:()=>xe,tsconfigConfigSchema:()=>Se,viteConfigSchema:()=>Ce,watchConfigSchema:()=>we,workflowConfigSchema:()=>Te,workflowSettingSchema:()=>Ee,workflowStepSchema:()=>De,workflowStepsConfigSchema:()=>Oe,writeJsonFile:()=>f});export{ke as CONFIG_FILE_NAMES,re as CONFIG_SECTION_DESCRIPTIONS,ie as CONFIG_SECTION_SCHEMAS,ae as CONFIG_TYPE_SCHEMAS,p as LOG_LEVELS,e as TOOLCHAIN_PACKAGE,J as applyReplacements,Y as applyReplacementsDeep,O as asString,oe as biomeConfigSchema,k as camelCase,A as camelCaseId,j as capitalize,se as changelogConfigSchema,ce as changelogVersioningConfigSchema,le as changelogVersioningSchema,ue as changelogVersioningTargetSchema,de as changelogWorkflowsConfigSchema,m as configureLogger,M as constantCase,h as createLogger,X as createReplacer,fe as dbxConfigSchema,r as deepMerge,Ae as defineConfig,Z as defineReplacements,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,Q as extractTokens,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,$ as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,n as localToolchainVersion,y as logger,pe as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,V as pascalCase,me as projectConfigSchema,he as projectTypeSchema,w as providerActions,ge as providersConfigSchema,l as readJsonAt,u as readJsonFile,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,je as repoSlugFromUrl,o as resolveSort,Me as resolveTokens,E as run,G as sanitizeSlashes,Ne as sectionConfig,Pe as sectionEnabled,x as setLogConfig,S as setLogOverrides,K as snakeCase,s as sort,D as spawnCross,Ie as src_exports,q as str,C as stripAnsi,_e as templateKindSchema,ve as templateSourceSchema,ye as templateSourceTypeSchema,be as templatesConfigSchema,te as titleCase,d as toJson,Fe as toYaml,ne as tokenPattern,xe as toolchainConfigSchema,Se as tsconfigConfigSchema,Ce as viteConfigSchema,we as watchConfigSchema,Te as workflowConfigSchema,Ee as workflowSettingSchema,De as workflowStepSchema,Oe as workflowStepsConfigSchema,f as writeJsonFile};
1
+ import"node:path";import"node:url";import.meta.url;import{__exportAll as ee}from"../../../_virtual/_rolldown/runtime.js";import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./logger.js";import{providerActions as w}from"./provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,sanitizeText as K,snakeCase as q,str as te,stripControlChars as J,stripEscapeArtifacts as Y,titleCase as X}from"./string-utils.js";import{applyReplacements as Z,applyReplacementsDeep as Q,createReplacer as $,defineReplacements as ne,extractTokens as re,hasUnresolvedTokens as ie,tokenPattern as ae}from"./template.js";import{CONFIG_SECTION_DESCRIPTIONS as oe,CONFIG_SECTION_SCHEMAS as se,CONFIG_TYPE_SCHEMAS as ce,biomeConfigSchema as le,changelogConfigSchema as ue,changelogVersioningConfigSchema as de,changelogVersioningSchema as fe,changelogVersioningTargetSchema as pe,changelogWorkflowsConfigSchema as me,dbxConfigSchema as he,loggerConfigSchema as ge,projectConfigSchema as _e,projectTypeSchema as ve,providersConfigSchema as ye,templateKindSchema as be,templateSourceSchema as xe,templateSourceTypeSchema as Se,templatesConfigSchema as Ce,toolchainConfigSchema as we,tsconfigConfigSchema as Te,viteConfigSchema as Ee,watchConfigSchema as De,workflowConfigSchema as Oe,workflowSettingSchema as ke,workflowStepSchema as Ae,workflowStepsConfigSchema as je}from"./config-schema.js";import{CONFIG_FILE_NAMES as Me,defineConfig as Ne,repoSlugFromUrl as Pe,resolveTokens as Fe,sectionConfig as Ie,sectionEnabled as Le}from"./toolchain.js";import{toYaml as Re}from"./yaml.js";var ze=/* @__PURE__ */ ee({CONFIG_FILE_NAMES:()=>Me,CONFIG_SECTION_DESCRIPTIONS:()=>oe,CONFIG_SECTION_SCHEMAS:()=>se,CONFIG_TYPE_SCHEMAS:()=>ce,LOG_LEVELS:()=>p,TOOLCHAIN_PACKAGE:()=>e,applyReplacements:()=>Z,applyReplacementsDeep:()=>Q,asString:()=>O,biomeConfigSchema:()=>le,camelCase:()=>k,camelCaseId:()=>A,capitalize:()=>j,changelogConfigSchema:()=>ue,changelogVersioningConfigSchema:()=>de,changelogVersioningSchema:()=>fe,changelogVersioningTargetSchema:()=>pe,changelogWorkflowsConfigSchema:()=>me,configureLogger:()=>m,constantCase:()=>M,createLogger:()=>h,createReplacer:()=>$,dbxConfigSchema:()=>he,deepMerge:()=>r,defineConfig:()=>Ne,defineReplacements:()=>ne,ensureLeadingSlash:()=>N,ensureSlashes:()=>P,ensureTrailingSlash:()=>F,extractTokens:()=>re,findOwnCliEntry:()=>t,formatCliFlag:()=>I,getLogOverrides:()=>g,getLogger:()=>_,hasText:()=>L,hasUnresolvedTokens:()=>ie,indent:()=>R,isLocalhost:()=>z,isLogLevel:()=>v,isPlainObject:()=>i,kebabCase:()=>B,killProcessTree:()=>T,localToolchainVersion:()=>n,logger:()=>y,loggerConfigSchema:()=>ge,mapValues:()=>a,mergeJsonAt:()=>c,normalizeLogLevel:()=>b,pascalCase:()=>V,projectConfigSchema:()=>_e,projectTypeSchema:()=>ve,providerActions:()=>w,providersConfigSchema:()=>ye,readJsonAt:()=>l,readJsonFile:()=>u,removeDoubleSlashes:()=>H,removeLeadingSlash:()=>U,removeTrailingSlash:()=>W,repoSlugFromUrl:()=>Pe,resolveSort:()=>o,resolveTokens:()=>Fe,run:()=>E,sanitizeSlashes:()=>G,sanitizeText:()=>K,sectionConfig:()=>Ie,sectionEnabled:()=>Le,setLogConfig:()=>x,setLogOverrides:()=>S,snakeCase:()=>q,sort:()=>s,spawnCross:()=>D,str:()=>te,stripAnsi:()=>C,stripControlChars:()=>J,stripEscapeArtifacts:()=>Y,templateKindSchema:()=>be,templateSourceSchema:()=>xe,templateSourceTypeSchema:()=>Se,templatesConfigSchema:()=>Ce,titleCase:()=>X,toJson:()=>d,toYaml:()=>Re,tokenPattern:()=>ae,toolchainConfigSchema:()=>we,tsconfigConfigSchema:()=>Te,viteConfigSchema:()=>Ee,watchConfigSchema:()=>De,workflowConfigSchema:()=>Oe,workflowSettingSchema:()=>ke,workflowStepSchema:()=>Ae,workflowStepsConfigSchema:()=>je,writeJsonFile:()=>f});export{Me as CONFIG_FILE_NAMES,oe as CONFIG_SECTION_DESCRIPTIONS,se as CONFIG_SECTION_SCHEMAS,ce as CONFIG_TYPE_SCHEMAS,p as LOG_LEVELS,e as TOOLCHAIN_PACKAGE,Z as applyReplacements,Q as applyReplacementsDeep,O as asString,le as biomeConfigSchema,k as camelCase,A as camelCaseId,j as capitalize,ue as changelogConfigSchema,de as changelogVersioningConfigSchema,fe as changelogVersioningSchema,pe as changelogVersioningTargetSchema,me as changelogWorkflowsConfigSchema,m as configureLogger,M as constantCase,h as createLogger,$ as createReplacer,he as dbxConfigSchema,r as deepMerge,Ne as defineConfig,ne as defineReplacements,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,re as extractTokens,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,ie as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,n as localToolchainVersion,y as logger,ge as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,V as pascalCase,_e as projectConfigSchema,ve as projectTypeSchema,w as providerActions,ye as providersConfigSchema,l as readJsonAt,u as readJsonFile,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,Pe as repoSlugFromUrl,o as resolveSort,Fe as resolveTokens,E as run,G as sanitizeSlashes,K as sanitizeText,Ie as sectionConfig,Le as sectionEnabled,x as setLogConfig,S as setLogOverrides,q as snakeCase,s as sort,D as spawnCross,ze as src_exports,te as str,C as stripAnsi,J as stripControlChars,Y as stripEscapeArtifacts,be as templateKindSchema,xe as templateSourceSchema,Se as templateSourceTypeSchema,Ce as templatesConfigSchema,X as titleCase,d as toJson,Re as toYaml,ae as tokenPattern,we as toolchainConfigSchema,Te as tsconfigConfigSchema,Ee as viteConfigSchema,De as watchConfigSchema,Oe as workflowConfigSchema,ke as workflowSettingSchema,Ae as workflowStepSchema,je as workflowStepsConfigSchema,f as writeJsonFile};
@@ -49,4 +49,20 @@ export declare function removeDoubleSlashes(value: string, slash?: string): stri
49
49
  export declare function sanitizeSlashes(value: string, operations?: ('leading' | 'trailing' | 'double')[], slash?: string): string;
50
50
  /** Ensure slashes at the requested positions. */
51
51
  export declare function ensureSlashes(value: string, operations: ('leading' | 'trailing')[], slash?: string): string;
52
+ /** Strip bare control characters, keeping `\t`, `\n` and `\r`. */
53
+ export declare function stripControlChars(text: string): string;
54
+ /**
55
+ * Strip the predictable shell-escape artifacts: a backslash that precedes a
56
+ * control character. Ordinary backslashes (Windows paths, regular expressions,
57
+ * Markdown hard breaks that use two trailing spaces) are left untouched — only
58
+ * a backslash directly before a control character is removed.
59
+ */
60
+ export declare function stripEscapeArtifacts(text: string): string;
61
+ /**
62
+ * Sanitize text that may have passed through a shell (commit bodies, generated
63
+ * descriptions) before it is rendered to markdown: normalize CRLF to LF, then
64
+ * strip shell-escape artifacts followed by any remaining bare control
65
+ * characters. Conservative by design — it never removes an ordinary backslash.
66
+ */
67
+ export declare function sanitizeText(text: string): string;
52
68
  //#endregion
@@ -1,3 +1,4 @@
1
1
  import"node:path";import"node:url";import.meta.url;function e(e){return typeof e==`string`?e.trim():``}function t(e){return typeof e==`string`?e:``}function n(e){return typeof e==`string`&&e.trim().length>0}function r(e){return e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e}function i(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[^a-zA-Z0-9]+/).filter(Boolean)}function a(e){return i(e).map((e,t)=>t===0?e.toLowerCase():r(e.toLowerCase())).join(``)}function o(e){return i(e).map(e=>r(e.toLowerCase())).join(``)}function s(e){return i(e).map(e=>e.toLowerCase()).join(`-`)}function c(e){return i(e).map(e=>e.toLowerCase()).join(`_`)}function l(e){return i(e).map(e=>e.toUpperCase()).join(`_`)}function u(e){return i(e).map(e=>r(e.toLowerCase())).join(` `)}function d(e){return a(e)}function f(e,t=``){return s(t&&e.startsWith(t)?e.slice(t.length):e)}function p(e,t=2){let n=` `.repeat(t);return e.split(`
2
2
  `).map(e=>e.trim()?n+e:e).join(`
3
- `)}function m(e){return/localhost|127\.0\.0\.1|0\.0\.0\.0|::/.test(e)}function h(e,t=`/`){return e.startsWith(t)?e:`${t}${e}`}function g(e,t=`/`){return e.endsWith(t)?e:`${e}${t}`}function _(e,t=`/`){return e.replace(RegExp(`^${S(t)}+`),``)}function v(e,t=`/`){return e.replace(RegExp(`${S(t)}+$`),``)}function y(e,t=`/`){return e.replace(RegExp(`${S(t)}+`,`g`),t)}function b(e,t=[`leading`,`trailing`,`double`],n=`/`){let r=e;for(let e of t)e===`leading`&&(r=_(r,n)),e===`trailing`&&(r=v(r,n)),e===`double`&&(r=y(r,n));return r}function x(e,t,n=`/`){if(!t.length)throw Error(`ensureSlashes: operations array cannot be empty.`);let r=e;for(let e of t)if(e===`leading`)r=h(r,n);else if(e===`trailing`)r=g(r,n);else throw Error(`ensureSlashes: invalid operation: ${e}`);return r}function S(e){return e===`/`?`\\/`:e}export{t as asString,a as camelCase,d as camelCaseId,r as capitalize,l as constantCase,h as ensureLeadingSlash,x as ensureSlashes,g as ensureTrailingSlash,f as formatCliFlag,n as hasText,p as indent,m as isLocalhost,s as kebabCase,o as pascalCase,y as removeDoubleSlashes,_ as removeLeadingSlash,v as removeTrailingSlash,b as sanitizeSlashes,c as snakeCase,e as str,u as titleCase};
3
+ `)}function m(e){return/localhost|127\.0\.0\.1|0\.0\.0\.0|::/.test(e)}function h(e,t=`/`){return e.startsWith(t)?e:`${t}${e}`}function g(e,t=`/`){return e.endsWith(t)?e:`${e}${t}`}function _(e,t=`/`){return e.replace(RegExp(`^${S(t)}+`),``)}function v(e,t=`/`){return e.replace(RegExp(`${S(t)}+$`),``)}function y(e,t=`/`){return e.replace(RegExp(`${S(t)}+`,`g`),t)}function b(e,t=[`leading`,`trailing`,`double`],n=`/`){let r=e;for(let e of t)e===`leading`&&(r=_(r,n)),e===`trailing`&&(r=v(r,n)),e===`double`&&(r=y(r,n));return r}function x(e,t,n=`/`){if(!t.length)throw Error(`ensureSlashes: operations array cannot be empty.`);let r=e;for(let e of t)if(e===`leading`)r=h(r,n);else if(e===`trailing`)r=g(r,n);else throw Error(`ensureSlashes: invalid operation: ${e}`);return r}function S(e){return e===`/`?`\\/`:e}const C=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g,w=/\\[\u0000-\u001f]/g;function T(e){return e.replace(C,``)}function E(e){return e.replace(w,``)}function D(e){return T(E(e.replace(/\r\n?/g,`
4
+ `)))}export{t as asString,a as camelCase,d as camelCaseId,r as capitalize,l as constantCase,h as ensureLeadingSlash,x as ensureSlashes,g as ensureTrailingSlash,f as formatCliFlag,n as hasText,p as indent,m as isLocalhost,s as kebabCase,o as pascalCase,y as removeDoubleSlashes,_ as removeLeadingSlash,v as removeTrailingSlash,b as sanitizeSlashes,D as sanitizeText,c as snakeCase,e as str,T as stripControlChars,E as stripEscapeArtifacts,u as titleCase};
package/dist/shared.d.ts CHANGED
@@ -6,7 +6,7 @@ import { Colors, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerO
6
6
  import { Sortable, deepMerge, isPlainObject, mapValues, resolveSort, sort } from "./packages/shared/src/object-utils.js";
7
7
  import { ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, providerActions } from "./packages/shared/src/provider.js";
8
8
  import { RunOptions, SpawnCrossOptions, killProcessTree, run, spawnCross } from "./packages/shared/src/run.js";
9
- import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, formatCliFlag, hasText, indent, isLocalhost, kebabCase, pascalCase, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, sanitizeSlashes, snakeCase, str, titleCase } from "./packages/shared/src/string-utils.js";
9
+ import { asString, camelCase, camelCaseId, capitalize, constantCase, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, formatCliFlag, hasText, indent, isLocalhost, kebabCase, pascalCase, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, sanitizeSlashes, sanitizeText, snakeCase, str, stripControlChars, stripEscapeArtifacts, titleCase } from "./packages/shared/src/string-utils.js";
10
10
  import { ReplacementOptions, ReplacementValue, Replacements, Replacer, applyReplacements, applyReplacementsDeep, createReplacer, defineReplacements, extractTokens, hasUnresolvedTokens, tokenPattern } from "./packages/shared/src/template.js";
11
11
  import { ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, DbxConfigSections, ProjectType, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainConfigSections, ToolchainLoggerConfig, ToolchainProjectConfig, ToolchainProvidersConfig, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig } from "./packages/shared/src/config-types.js";
12
12
  import { Awaitable, GeneratedFile, JsonValue, PackageJson, ToolchainArgument, ToolchainCommand, ToolchainCommandContext, ToolchainOption } from "./packages/shared/src/types.js";
@@ -14,4 +14,4 @@ import { CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMA
14
14
  import { CONFIG_FILE_NAMES, DbxConfig, ManagedFile, SyncContext, SyncSummary, SyncTask, ToolchainConfig, ToolchainHooks, ToolchainSection, defineConfig, repoSlugFromUrl, resolveTokens, sectionConfig, sectionEnabled } from "./packages/shared/src/toolchain.js";
15
15
  import { YamlValue, toYaml } from "./packages/shared/src/yaml.js";
16
16
  import "./packages/shared/src/index.js";
17
- export { Awaitable, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DbxConfig, DbxConfigSections, GeneratedFile, JsonValue, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, ManagedFile, PackageJson, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, configureLogger, constantCase, createLogger, createReplacer, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveSort, resolveTokens, run, sanitizeSlashes, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, str, stripAnsi, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
17
+ export { Awaitable, CONFIG_FILE_NAMES, CONFIG_SECTION_DESCRIPTIONS, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS, ChangelogVersioning, ChangelogVersioningConfig, ChangelogVersioningTarget, ChangelogWorkflowsConfig, Colors, DbxConfig, DbxConfigSections, GeneratedFile, JsonValue, LOG_LEVELS, LogChannel, LogLevel, Logger, LoggerConfig, LoggerOptions, ManagedFile, PackageJson, ProjectType, ReplacementOptions, ReplacementValue, Replacements, Replacer, RunOptions, Sortable, SpawnCrossOptions, SyncContext, SyncSummary, SyncTask, TOOLCHAIN_PACKAGE, ToolchainArgument, ToolchainBiomeConfig, ToolchainChangelogConfig, ToolchainCommand, ToolchainCommandContext, ToolchainConfig, ToolchainConfigSections, ToolchainHooks, ToolchainLoggerConfig, ToolchainOption, ToolchainProjectConfig, ToolchainProvider, ToolchainProviderAction, ToolchainProviderCommand, ToolchainProvidersConfig, ToolchainSection, ToolchainTemplateKind, ToolchainTemplateSource, ToolchainTemplateSourceType, ToolchainTemplatesConfig, ToolchainTsconfigConfig, ToolchainViteConfig, ToolchainWatchConfig, WorkflowConfig, WorkflowSetting, WorkflowStep, WorkflowStepsConfig, type YamlValue, applyReplacements, applyReplacementsDeep, asString, biomeConfigSchema, camelCase, camelCaseId, capitalize, changelogConfigSchema, changelogVersioningConfigSchema, changelogVersioningSchema, changelogVersioningTargetSchema, changelogWorkflowsConfigSchema, configureLogger, constantCase, createLogger, createReplacer, dbxConfigSchema, deepMerge, defineConfig, defineReplacements, ensureLeadingSlash, ensureSlashes, ensureTrailingSlash, extractTokens, findOwnCliEntry, formatCliFlag, getLogOverrides, getLogger, hasText, hasUnresolvedTokens, indent, isLocalhost, isLogLevel, isPlainObject, kebabCase, killProcessTree, localToolchainVersion, logger, loggerConfigSchema, mapValues, mergeJsonAt, normalizeLogLevel, pascalCase, projectConfigSchema, projectTypeSchema, providerActions, providersConfigSchema, readJsonAt, readJsonFile, removeDoubleSlashes, removeLeadingSlash, removeTrailingSlash, repoSlugFromUrl, resolveSort, resolveTokens, run, sanitizeSlashes, sanitizeText, sectionConfig, sectionEnabled, setLogConfig, setLogOverrides, snakeCase, sort, spawnCross, str, stripAnsi, stripControlChars, stripEscapeArtifacts, templateKindSchema, templateSourceSchema, templateSourceTypeSchema, templatesConfigSchema, titleCase, toJson, toYaml, tokenPattern, toolchainConfigSchema, tsconfigConfigSchema, viteConfigSchema, watchConfigSchema, workflowConfigSchema, workflowSettingSchema, workflowStepSchema, workflowStepsConfigSchema, writeJsonFile };
package/dist/shared.js CHANGED
@@ -1 +1 @@
1
- import"node:path";import"node:url";import.meta.url;import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./packages/shared/src/bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./packages/shared/src/object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./packages/shared/src/fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./packages/shared/src/logger.js";import{providerActions as w}from"./packages/shared/src/provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./packages/shared/src/run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,snakeCase as K,str as q,titleCase as J}from"./packages/shared/src/string-utils.js";import{applyReplacements as Y,applyReplacementsDeep as X,createReplacer as Z,defineReplacements as Q,extractTokens as $,hasUnresolvedTokens as ee,tokenPattern as te}from"./packages/shared/src/template.js";import{CONFIG_SECTION_DESCRIPTIONS as ne,CONFIG_SECTION_SCHEMAS as re,CONFIG_TYPE_SCHEMAS as ie,biomeConfigSchema as ae,changelogConfigSchema as oe,changelogVersioningConfigSchema as se,changelogVersioningSchema as ce,changelogVersioningTargetSchema as le,changelogWorkflowsConfigSchema as ue,dbxConfigSchema as de,loggerConfigSchema as fe,projectConfigSchema as pe,projectTypeSchema as me,providersConfigSchema as he,templateKindSchema as ge,templateSourceSchema as _e,templateSourceTypeSchema as ve,templatesConfigSchema as ye,toolchainConfigSchema as be,tsconfigConfigSchema as xe,viteConfigSchema as Se,watchConfigSchema as Ce,workflowConfigSchema as we,workflowSettingSchema as Te,workflowStepSchema as Ee,workflowStepsConfigSchema as De}from"./packages/shared/src/config-schema.js";import{CONFIG_FILE_NAMES as Oe,defineConfig as ke,repoSlugFromUrl as Ae,resolveTokens as je,sectionConfig as Me,sectionEnabled as Ne}from"./packages/shared/src/toolchain.js";import{toYaml as Pe}from"./packages/shared/src/yaml.js";import"./packages/shared/src/index.js";export{Oe as CONFIG_FILE_NAMES,ne as CONFIG_SECTION_DESCRIPTIONS,re as CONFIG_SECTION_SCHEMAS,ie as CONFIG_TYPE_SCHEMAS,p as LOG_LEVELS,e as TOOLCHAIN_PACKAGE,Y as applyReplacements,X as applyReplacementsDeep,O as asString,ae as biomeConfigSchema,k as camelCase,A as camelCaseId,j as capitalize,oe as changelogConfigSchema,se as changelogVersioningConfigSchema,ce as changelogVersioningSchema,le as changelogVersioningTargetSchema,ue as changelogWorkflowsConfigSchema,m as configureLogger,M as constantCase,h as createLogger,Z as createReplacer,de as dbxConfigSchema,r as deepMerge,ke as defineConfig,Q as defineReplacements,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,$ as extractTokens,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,ee as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,n as localToolchainVersion,y as logger,fe as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,V as pascalCase,pe as projectConfigSchema,me as projectTypeSchema,w as providerActions,he as providersConfigSchema,l as readJsonAt,u as readJsonFile,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,Ae as repoSlugFromUrl,o as resolveSort,je as resolveTokens,E as run,G as sanitizeSlashes,Me as sectionConfig,Ne as sectionEnabled,x as setLogConfig,S as setLogOverrides,K as snakeCase,s as sort,D as spawnCross,q as str,C as stripAnsi,ge as templateKindSchema,_e as templateSourceSchema,ve as templateSourceTypeSchema,ye as templatesConfigSchema,J as titleCase,d as toJson,Pe as toYaml,te as tokenPattern,be as toolchainConfigSchema,xe as tsconfigConfigSchema,Se as viteConfigSchema,Ce as watchConfigSchema,we as workflowConfigSchema,Te as workflowSettingSchema,Ee as workflowStepSchema,De as workflowStepsConfigSchema,f as writeJsonFile};
1
+ import"node:path";import"node:url";import.meta.url;import{TOOLCHAIN_PACKAGE as e,findOwnCliEntry as t,localToolchainVersion as n}from"./packages/shared/src/bin.js";import{deepMerge as r,isPlainObject as i,mapValues as a,resolveSort as o,sort as s}from"./packages/shared/src/object-utils.js";import{mergeJsonAt as c,readJsonAt as l,readJsonFile as u,toJson as d,writeJsonFile as f}from"./packages/shared/src/fs-utils.js";import{LOG_LEVELS as p,configureLogger as m,createLogger as h,getLogOverrides as g,getLogger as _,isLogLevel as v,logger as y,normalizeLogLevel as b,setLogConfig as x,setLogOverrides as S,stripAnsi as C}from"./packages/shared/src/logger.js";import{providerActions as w}from"./packages/shared/src/provider.js";import{killProcessTree as T,run as E,spawnCross as D}from"./packages/shared/src/run.js";import{asString as O,camelCase as k,camelCaseId as A,capitalize as j,constantCase as M,ensureLeadingSlash as N,ensureSlashes as P,ensureTrailingSlash as F,formatCliFlag as I,hasText as L,indent as R,isLocalhost as z,kebabCase as B,pascalCase as V,removeDoubleSlashes as H,removeLeadingSlash as U,removeTrailingSlash as W,sanitizeSlashes as G,sanitizeText as K,snakeCase as q,str as J,stripControlChars as Y,stripEscapeArtifacts as X,titleCase as Z}from"./packages/shared/src/string-utils.js";import{applyReplacements as Q,applyReplacementsDeep as $,createReplacer as ee,defineReplacements as te,extractTokens as ne,hasUnresolvedTokens as re,tokenPattern as ie}from"./packages/shared/src/template.js";import{CONFIG_SECTION_DESCRIPTIONS as ae,CONFIG_SECTION_SCHEMAS as oe,CONFIG_TYPE_SCHEMAS as se,biomeConfigSchema as ce,changelogConfigSchema as le,changelogVersioningConfigSchema as ue,changelogVersioningSchema as de,changelogVersioningTargetSchema as fe,changelogWorkflowsConfigSchema as pe,dbxConfigSchema as me,loggerConfigSchema as he,projectConfigSchema as ge,projectTypeSchema as _e,providersConfigSchema as ve,templateKindSchema as ye,templateSourceSchema as be,templateSourceTypeSchema as xe,templatesConfigSchema as Se,toolchainConfigSchema as Ce,tsconfigConfigSchema as we,viteConfigSchema as Te,watchConfigSchema as Ee,workflowConfigSchema as De,workflowSettingSchema as Oe,workflowStepSchema as ke,workflowStepsConfigSchema as Ae}from"./packages/shared/src/config-schema.js";import{CONFIG_FILE_NAMES as je,defineConfig as Me,repoSlugFromUrl as Ne,resolveTokens as Pe,sectionConfig as Fe,sectionEnabled as Ie}from"./packages/shared/src/toolchain.js";import{toYaml as Le}from"./packages/shared/src/yaml.js";import"./packages/shared/src/index.js";export{je as CONFIG_FILE_NAMES,ae as CONFIG_SECTION_DESCRIPTIONS,oe as CONFIG_SECTION_SCHEMAS,se as CONFIG_TYPE_SCHEMAS,p as LOG_LEVELS,e as TOOLCHAIN_PACKAGE,Q as applyReplacements,$ as applyReplacementsDeep,O as asString,ce as biomeConfigSchema,k as camelCase,A as camelCaseId,j as capitalize,le as changelogConfigSchema,ue as changelogVersioningConfigSchema,de as changelogVersioningSchema,fe as changelogVersioningTargetSchema,pe as changelogWorkflowsConfigSchema,m as configureLogger,M as constantCase,h as createLogger,ee as createReplacer,me as dbxConfigSchema,r as deepMerge,Me as defineConfig,te as defineReplacements,N as ensureLeadingSlash,P as ensureSlashes,F as ensureTrailingSlash,ne as extractTokens,t as findOwnCliEntry,I as formatCliFlag,g as getLogOverrides,_ as getLogger,L as hasText,re as hasUnresolvedTokens,R as indent,z as isLocalhost,v as isLogLevel,i as isPlainObject,B as kebabCase,T as killProcessTree,n as localToolchainVersion,y as logger,he as loggerConfigSchema,a as mapValues,c as mergeJsonAt,b as normalizeLogLevel,V as pascalCase,ge as projectConfigSchema,_e as projectTypeSchema,w as providerActions,ve as providersConfigSchema,l as readJsonAt,u as readJsonFile,H as removeDoubleSlashes,U as removeLeadingSlash,W as removeTrailingSlash,Ne as repoSlugFromUrl,o as resolveSort,Pe as resolveTokens,E as run,G as sanitizeSlashes,K as sanitizeText,Fe as sectionConfig,Ie as sectionEnabled,x as setLogConfig,S as setLogOverrides,q as snakeCase,s as sort,D as spawnCross,J as str,C as stripAnsi,Y as stripControlChars,X as stripEscapeArtifacts,ye as templateKindSchema,be as templateSourceSchema,xe as templateSourceTypeSchema,Se as templatesConfigSchema,Z as titleCase,d as toJson,Le as toYaml,ie as tokenPattern,Ce as toolchainConfigSchema,we as tsconfigConfigSchema,Te as viteConfigSchema,Ee as watchConfigSchema,De as workflowConfigSchema,Oe as workflowSettingSchema,ke as workflowStepSchema,Ae as workflowStepsConfigSchema,f as writeJsonFile};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deltabox/toolchain",
3
- "version": "1.6.1",
3
+ "version": "1.7.0",
4
4
  "description": "All-in-one toolchain: scaffold projects, manage templates, configs, tsconfigs, changelogs and builds.",
5
5
  "homepage": "https://toolchain.deltabox.studio",
6
6
  "author": "Victor Sango <victor@deltabox.studio>",
@@ -76,17 +76,17 @@
76
76
  "devDependencies": {
77
77
  "@commitlint/cli": "^21.2.2",
78
78
  "@commitlint/config-conventional": "^21.2.2",
79
- "@deltabox/toolchain-biome": "1.6.1",
80
- "@deltabox/toolchain-changelog": "1.6.1",
81
- "@deltabox/toolchain-config": "1.6.1",
82
- "@deltabox/toolchain-core": "1.6.1",
83
- "@deltabox/toolchain-migrate": "1.6.1",
84
- "@deltabox/toolchain-project": "1.6.1",
85
- "@deltabox/toolchain-shared": "1.6.1",
86
- "@deltabox/toolchain-template": "1.6.1",
87
- "@deltabox/toolchain-tsconfig": "1.6.1",
88
- "@deltabox/toolchain-tsdown": "1.6.1",
89
- "@deltabox/toolchain-vite": "1.6.1",
79
+ "@deltabox/toolchain-biome": "1.7.0",
80
+ "@deltabox/toolchain-changelog": "1.7.0",
81
+ "@deltabox/toolchain-config": "1.7.0",
82
+ "@deltabox/toolchain-core": "1.7.0",
83
+ "@deltabox/toolchain-migrate": "1.7.0",
84
+ "@deltabox/toolchain-project": "1.7.0",
85
+ "@deltabox/toolchain-shared": "1.7.0",
86
+ "@deltabox/toolchain-template": "1.7.0",
87
+ "@deltabox/toolchain-tsconfig": "1.7.0",
88
+ "@deltabox/toolchain-tsdown": "1.7.0",
89
+ "@deltabox/toolchain-vite": "1.7.0",
90
90
  "@types/node": "^22.10.2",
91
91
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
92
92
  "cross-env": "^10.1.0",