@williamthorsen/release-kit 1.0.1 → 2.1.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 +15 -86
- package/README.md +56 -43
- package/dist/esm/.cache +1 -1
- package/dist/esm/bin/release-kit.js +10 -5
- package/dist/esm/bumpAllVersions.js +1 -1
- package/dist/esm/defaults.js +1 -1
- package/dist/esm/discoverWorkspaces.js +1 -3
- package/dist/esm/generateChangelogs.js +4 -3
- package/dist/esm/init/checks.d.ts +0 -2
- package/dist/esm/init/checks.js +4 -24
- package/dist/esm/init/initCommand.d.ts +3 -1
- package/dist/esm/init/initCommand.js +33 -39
- package/dist/esm/init/parseJsonRecord.js +1 -3
- package/dist/esm/init/prompt.d.ts +0 -1
- package/dist/esm/init/prompt.js +3 -14
- package/dist/esm/init/scaffold.d.ts +3 -2
- package/dist/esm/init/scaffold.js +7 -9
- package/dist/esm/init/templates.js +11 -12
- package/dist/esm/loadConfig.js +1 -3
- package/dist/esm/prepareCommand.js +7 -3
- package/dist/esm/releasePrepare.d.ts +1 -0
- package/dist/esm/releasePrepare.js +6 -4
- package/dist/esm/releasePrepareMono.js +9 -6
- package/dist/esm/resolveCliffConfigPath.d.ts +1 -0
- package/dist/esm/resolveCliffConfigPath.js +25 -0
- package/dist/esm/runReleasePrepare.d.ts +2 -1
- package/dist/esm/runReleasePrepare.js +16 -4
- package/dist/esm/typeGuards.d.ts +1 -0
- package/dist/esm/typeGuards.js +6 -0
- package/dist/esm/validateConfig.js +1 -3
- package/package.json +4 -4
- package/dist/tsconfig.generate-typings.tsbuildinfo +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,109 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## [release-kit-
|
|
6
|
-
|
|
7
|
-
### Bug fixes
|
|
8
|
-
|
|
9
|
-
- #34 release-kit|fix: Fix failure to find consumer's config (#35)
|
|
10
|
-
|
|
11
|
-
Resolves the config file path to an absolute path using `process.cwd()` before passing it to both `existsSync` and `jiti.import()`. Previously, `jiti.import()` received a bare relative path which it resolved against `import.meta.url` (the package's install location), making it impossible for consumers to load their config files. Also fixes root tsconfig includes to cover `.config/` and removes a stale duplicate comment.
|
|
12
|
-
|
|
13
|
-
## [release-kit-v1.0.0] - 2026-03-12
|
|
14
|
-
|
|
15
|
-
### Features
|
|
16
|
-
|
|
17
|
-
- #28 release-kit|feat!: Migrate to CLI-driven release preparation with auto-discovery (#31)
|
|
18
|
-
|
|
19
|
-
Replaces release-kit's script-based release preparation with a self-contained CLI (`npx @williamthorsen/release-kit prepare`) that auto-discovers workspaces from `pnpm-workspace.yaml`. Adds workspace auto-discovery, TypeScript config loading via jiti, config validation, and a `component()` factory that accepts full workspace-relative paths. Refactors the type system: `WorkTypeConfig` becomes a record keyed by type name, version-bump rules move to a separate `VersionPatterns` structure, and `ComponentConfig` gains a `dir` field for canonical directory identity.
|
|
20
|
-
|
|
21
|
-
### Refactoring
|
|
22
|
-
|
|
23
|
-
- #28 release-kit|refactor: Adjust location of config & tags file
|
|
24
|
-
|
|
25
|
-
### Tooling
|
|
26
|
-
|
|
27
|
-
- #28 release-kit|tooling: Remove legacy release-kit scripts
|
|
28
|
-
|
|
29
|
-
## [release-kit-v0.3.0] - 2026-03-11
|
|
5
|
+
## [release-kit-v2.1.0] - 2026-03-17
|
|
30
6
|
|
|
31
7
|
### Features
|
|
32
8
|
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
Move release script logic (arg parsing, validation, component filtering) into a reusable `runReleasePrepare` function in the release-kit package. Consuming repos now provide only their config and call `runReleasePrepare(config)`.
|
|
36
|
-
|
|
37
|
-
Relocate release-prepare.ts and release.config.ts from scripts/ to .github/scripts/ so they live alongside the workflow they serve.
|
|
38
|
-
|
|
39
|
-
- #20 release-kit|feat: Add release-kit init CLI command for automated repo setup (#22)
|
|
40
|
-
|
|
41
|
-
Add an interactive `npx release-kit init` CLI command that checks repo eligibility, detects monorepo vs single-package layout, scaffolds workflow/scripts/config files, and updates `package.json` with release scripts.
|
|
42
|
-
|
|
43
|
-
Also expand `runReleasePrepare` to polymorphically handle both `MonorepoReleaseConfig` and `ReleaseConfig`, and update the esbuild plugin to preserve shebangs during compilation.
|
|
44
|
-
|
|
45
|
-
- #24 release-kit|feat: Return computed tags from release prepare and write .release-tags (#27)
|
|
9
|
+
- #7 release-kit|feat!: Slim down release workflow by removing unnecessary pnpm install (#21)
|
|
46
10
|
|
|
47
|
-
|
|
11
|
+
Make release-kit self-contained by invoking git-cliff via `npx --yes` instead of requiring it on PATH, and by appending modified file paths to the format command so lightweight formatters like `npx prettier --write` work without a full `pnpm install`. Update init templates, README, and consuming repo config/workflow to reference workflow v3.
|
|
48
12
|
|
|
49
|
-
|
|
13
|
+
- #22 release-kit|feat: Add --force flag to release-kit prepare (#25)
|
|
50
14
|
|
|
51
|
-
|
|
15
|
+
Add a `--force` flag to `release-kit prepare` that bypasses the "no commits since last tag" check in monorepo mode, allowing version bumping and changelog generation to proceed even when no new commits are found since the last release tag. The flag requires `--bump` since there are no commits to infer bump type from. The local release workflow gains a `force` boolean input for future use.
|
|
52
16
|
|
|
53
|
-
-
|
|
17
|
+
- #20 release-kit|feat!: Move reusable release workflow into repo (#26)
|
|
54
18
|
|
|
55
|
-
|
|
19
|
+
Moves the reusable release workflow from `williamthorsen/.github` into this repo as `release-workflow.yaml`, stripping all pnpm-related steps since release-kit now runs git-cliff and prettier via `npx` internally. Updates this repo's caller workflow to use a relative path and update init templates to reference the new location. Establishes a naming convention (`{name}-workflow.yaml` for reusable, `{name}.yaml` for callers) and independent versioning strategy (`{name}-workflow-v{major}` tags), documented in `.github/workflows/README.md`.
|
|
56
20
|
|
|
57
|
-
|
|
21
|
+
- #30 release-kit|feat: Allow git-cliff to be used without config (#31)
|
|
58
22
|
|
|
59
|
-
-
|
|
23
|
+
Adds a `resolveCliffConfigPath()` function that searches for a git-cliff config in a 4-step cascade (explicit path → `.config/git-cliff.toml` → `cliff.toml` → bundled `cliff.toml.template`), eliminating the requirement for consuming repos to maintain a cliff config copy. Restructures the `init` command to scaffold only the workflow file by default, with new `--with-config` and `--force` flags. Moves `.release-tags` from `/tmp/release-kit/` to project-local `tmp/` for predictable behavior in local runs.
|
|
60
24
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
### Tooling
|
|
64
|
-
|
|
65
|
-
- Root|tooling: Make release-kit public
|
|
66
|
-
|
|
67
|
-
## [release-kit-v0.2.0] - 2026-03-09
|
|
68
|
-
|
|
69
|
-
### Documentation
|
|
70
|
-
|
|
71
|
-
- Release-kit|docs: Rewrite README as adoption guide
|
|
72
|
-
|
|
73
|
-
Replace minimal API docs with end-to-end adoption guide covering single-package and monorepo configurations, release scripts, GitHub Actions workflows that commit directly to `main`.
|
|
74
|
-
|
|
75
|
-
### Tooling
|
|
76
|
-
|
|
77
|
-
- #13 root|tooling: Migrate from changesets to release-kit (#16)
|
|
78
|
-
|
|
79
|
-
Replaces the `@changesets/cli`-based release workflow with the in-house `release-kit` package, adding `git-cliff` for changelog generation, a monorepo release config for all 13 packages, and a CLI wrapper script. Removes all changeset infrastructure and creates per-package baseline version tags.
|
|
80
|
-
|
|
81
|
-
- #10 root|tooling: Publish release-kit to GitHub Package Registry (#17)
|
|
25
|
+
### Refactoring
|
|
82
26
|
|
|
83
|
-
|
|
27
|
+
- #6 release-kit|refactor: Clean up release-kit post-migration issues (#19)
|
|
84
28
|
|
|
85
|
-
|
|
29
|
+
Addresses five code quality issues and a test coverage gap identified during the release-kit migration (#5). Extracts a duplicated `isRecord` type guard into a shared module, eliminates a double-read in `bumpAllVersions`, improves error handling in `usesPnpm` by replacing a silent catch with a structured error boundary, removes an unreachable `'feature'` pattern from version defaults, and adds an integration test for scaffold template path resolution.
|
|
86
30
|
|
|
87
|
-
## [
|
|
31
|
+
## [release-kit-v1.0.1] - 2026-03-14
|
|
88
32
|
|
|
89
33
|
### Features
|
|
90
34
|
|
|
91
|
-
- #
|
|
92
|
-
|
|
93
|
-
Creates the `@williamthorsen/release-kit` package in the `toolbelt` monorepo, extracting version-bumping and changelog-generation logic from `skypilot-site` and `devtools/afg` into a reusable library. The package provides functions for parsing conventional commits, determining semver bump types, updating `package.json` versions across workspaces, and generating changelogs via `git-cliff`.
|
|
94
|
-
|
|
95
|
-
Add contextual error messages to all I/O operations: file reads/writes in bumpAllVersions, execSync calls in generateChangelogs and releasePrepare, and git commands in getCommitsSinceTarget.
|
|
96
|
-
|
|
97
|
-
Differentiate expected "no tag" errors from real failures in git describe. Replace string-based commit separator with null-byte to prevent collisions with commit message content. Log git log failures before returning empty results.
|
|
98
|
-
|
|
99
|
-
Add tests for uppercase/mixed-case type resolution, workspace+breaking combo parsing, breaking-on-first-commit early return, and empty workTypes. Strengthen alias tests to use toStrictEqual for full shape
|
|
100
|
-
verification.
|
|
101
|
-
|
|
102
|
-
Simplify determineBumpType by replacing the redundant isKeyOf guard on RELEASE_PRIORITY with a direct lookup, since bump is already typed as ReleaseType. Simplify parseCommitMessage by replacing mutable object construction with a conditional spread for the optional workspace field.
|
|
103
|
-
|
|
104
|
-
Add workspaceAliases field to ReleaseConfig and integrate into parseCommitMessage for resolving workspace shorthand names to canonical names. Replace execSync with execFileSync using argument arrays in generateChangelogs and getCommitsSinceTarget to prevent shell injection from paths with special characters. Remove redundant length-check guard in bumpAllVersions, keeping the undefined guard that also narrows the type.
|
|
105
|
-
|
|
106
|
-
### Refactoring
|
|
35
|
+
- #5 release-kit|feat: Migrate release-kit from toolbelt (#18)
|
|
107
36
|
|
|
108
|
-
-
|
|
37
|
+
Migrates the complete `@williamthorsen/release-kit` package (v1.0.1) from `williamthorsen/toolbelt` into `packages/release-kit/`, adds shebang preservation to the shared esbuild plugin for CLI binaries, and sets up dogfooding infrastructure so this monorepo uses release-kit for its own releases.
|
|
109
38
|
|
|
110
39
|
<!-- generated by git-cliff -->
|
package/README.md
CHANGED
|
@@ -7,23 +7,20 @@ Provides a self-contained CLI that auto-discovers workspaces from `pnpm-workspac
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
pnpm add -D @williamthorsen/release-kit
|
|
10
|
+
pnpm add -D @williamthorsen/release-kit
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## Quick start
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
# 1. Set up release-kit in your repo (scaffolds
|
|
16
|
+
# 1. Set up release-kit in your repo (scaffolds the release workflow)
|
|
17
17
|
npx @williamthorsen/release-kit init
|
|
18
18
|
|
|
19
19
|
# 2. Preview what a release would do
|
|
20
20
|
npx @williamthorsen/release-kit prepare --dry-run
|
|
21
|
-
|
|
22
|
-
# 3. Copy cliff.toml.template to your repo root (if init didn't create one)
|
|
23
|
-
cp node_modules/@williamthorsen/release-kit/cliff.toml.template cliff.toml
|
|
24
21
|
```
|
|
25
22
|
|
|
26
|
-
That's it for most repos. The CLI auto-discovers workspaces and applies sensible defaults. Customize only what you need via `.config/release-kit.config.ts`.
|
|
23
|
+
That's it for most repos. The CLI auto-discovers workspaces and applies sensible defaults. The bundled `cliff.toml.template` is used automatically — no need to copy it. Customize only what you need via `.config/release-kit.config.ts`.
|
|
27
24
|
|
|
28
25
|
## How it works
|
|
29
26
|
|
|
@@ -31,7 +28,7 @@ That's it for most repos. The CLI auto-discovers workspaces and applies sensible
|
|
|
31
28
|
2. **Config loading**: loads `.config/release-kit.config.ts` (if present) via [jiti](https://github.com/unjs/jiti) and merges it with discovered defaults.
|
|
32
29
|
3. **Commit analysis**: for each component, finds commits since the last version tag, parses them for type and scope, and determines the appropriate version bump.
|
|
33
30
|
4. **Version bump + changelog**: bumps `package.json` versions and generates changelogs via `git-cliff`.
|
|
34
|
-
5. **Release tags file**: writes computed tags to
|
|
31
|
+
5. **Release tags file**: writes computed tags to `tmp/.release-tags` for the release workflow to read when tagging and pushing.
|
|
35
32
|
|
|
36
33
|
## CLI reference
|
|
37
34
|
|
|
@@ -59,21 +56,23 @@ node packages/release-kit/dist/esm/bin/release-kit.js prepare --dry-run
|
|
|
59
56
|
|
|
60
57
|
### `release-kit init`
|
|
61
58
|
|
|
62
|
-
Initialize release-kit in the current repository.
|
|
59
|
+
Initialize release-kit in the current repository. By default, scaffolds only the GitHub Actions workflow file. Use `--with-config` to also scaffold configuration files.
|
|
63
60
|
|
|
64
61
|
```
|
|
65
62
|
Usage: release-kit init [options]
|
|
66
63
|
|
|
67
64
|
Options:
|
|
68
|
-
--
|
|
69
|
-
--
|
|
65
|
+
--with-config Also scaffold .config/release-kit.config.ts and .config/git-cliff.toml
|
|
66
|
+
--force Overwrite existing files instead of skipping them
|
|
67
|
+
--dry-run Preview changes without writing files
|
|
68
|
+
--help, -h Show help
|
|
70
69
|
```
|
|
71
70
|
|
|
72
71
|
Scaffolded files:
|
|
73
72
|
|
|
74
|
-
- `.config/release-kit.config.ts` — starter config with commented-out customization examples
|
|
75
73
|
- `.github/workflows/release.yaml` — workflow that delegates to a reusable release workflow
|
|
76
|
-
-
|
|
74
|
+
- `.config/release-kit.config.ts` — starter config with commented-out customization examples (with `--with-config`)
|
|
75
|
+
- `.config/git-cliff.toml` — copied from the bundled template (with `--with-config`)
|
|
77
76
|
|
|
78
77
|
## Configuration
|
|
79
78
|
|
|
@@ -88,8 +87,8 @@ const config: ReleaseKitConfig = {
|
|
|
88
87
|
// Exclude a component from release processing
|
|
89
88
|
components: [{ dir: 'internal-tools', shouldExclude: true }],
|
|
90
89
|
|
|
91
|
-
// Run a formatter after changelog generation
|
|
92
|
-
formatCommand: '
|
|
90
|
+
// Run a formatter after changelog generation (modified file paths are appended as arguments)
|
|
91
|
+
formatCommand: 'npx prettier --write',
|
|
93
92
|
|
|
94
93
|
// Override the default version patterns
|
|
95
94
|
versionPatterns: { major: ['!'], minor: ['feat', 'feature'] },
|
|
@@ -105,14 +104,14 @@ The config file supports both `export default config` and `export const config =
|
|
|
105
104
|
|
|
106
105
|
### `ReleaseKitConfig` reference
|
|
107
106
|
|
|
108
|
-
| Field | Type | Description
|
|
109
|
-
| ------------------ | -------------------------------- |
|
|
110
|
-
| `cliffConfigPath` | `string` |
|
|
111
|
-
| `components` | `ComponentOverride[]` | Override or exclude discovered components (matched by `dir`)
|
|
112
|
-
| `formatCommand` | `string` | Shell command to run after changelog generation
|
|
113
|
-
| `versionPatterns` | `VersionPatterns` | Rules for which commit types trigger major/minor bumps
|
|
114
|
-
| `workspaceAliases` | `Record<string, string>` | Maps shorthand workspace names to canonical names in commits
|
|
115
|
-
| `workTypes` | `Record<string, WorkTypeConfig>` | Work type definitions, merged with defaults by key
|
|
107
|
+
| Field | Type | Description |
|
|
108
|
+
| ------------------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
109
|
+
| `cliffConfigPath` | `string` | Explicit path to cliff config. If omitted, resolved automatically: `.config/git-cliff.toml` → `cliff.toml` → bundled template |
|
|
110
|
+
| `components` | `ComponentOverride[]` | Override or exclude discovered components (matched by `dir`) |
|
|
111
|
+
| `formatCommand` | `string` | Shell command to run after changelog generation; modified file paths are appended as arguments |
|
|
112
|
+
| `versionPatterns` | `VersionPatterns` | Rules for which commit types trigger major/minor bumps |
|
|
113
|
+
| `workspaceAliases` | `Record<string, string>` | Maps shorthand workspace names to canonical names in commits |
|
|
114
|
+
| `workTypes` | `Record<string, WorkTypeConfig>` | Work type definitions, merged with defaults by key |
|
|
116
115
|
|
|
117
116
|
All fields are optional.
|
|
118
117
|
|
|
@@ -230,14 +229,9 @@ jobs:
|
|
|
230
229
|
fetch-depth: 0
|
|
231
230
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
232
231
|
|
|
233
|
-
- uses: pnpm/action-setup@v4
|
|
234
|
-
|
|
235
232
|
- uses: actions/setup-node@v4
|
|
236
233
|
with:
|
|
237
|
-
node-version: '
|
|
238
|
-
cache: 'pnpm'
|
|
239
|
-
|
|
240
|
-
- run: pnpm install
|
|
234
|
+
node-version: '24'
|
|
241
235
|
|
|
242
236
|
- name: Run release preparation
|
|
243
237
|
run: |
|
|
@@ -264,7 +258,7 @@ jobs:
|
|
|
264
258
|
if: steps.check.outputs.changed == 'true'
|
|
265
259
|
id: tags
|
|
266
260
|
run: |
|
|
267
|
-
TAGS=$(cat
|
|
261
|
+
TAGS=$(cat tmp/.release-tags | tr '\n' ' ')
|
|
268
262
|
echo "tags=$TAGS" >> "$GITHUB_OUTPUT"
|
|
269
263
|
echo "Releasing: $TAGS"
|
|
270
264
|
|
|
@@ -302,7 +296,7 @@ And the tag step with:
|
|
|
302
296
|
if: steps.check.outputs.changed == 'true'
|
|
303
297
|
id: tags
|
|
304
298
|
run: |
|
|
305
|
-
TAG=$(cat
|
|
299
|
+
TAG=$(cat tmp/.release-tags)
|
|
306
300
|
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
|
|
307
301
|
```
|
|
308
302
|
|
|
@@ -321,26 +315,27 @@ Or use the GitHub UI: Actions > Release > Run workflow.
|
|
|
321
315
|
|
|
322
316
|
## cliff.toml setup
|
|
323
317
|
|
|
324
|
-
The package includes a `cliff.toml.template`
|
|
318
|
+
The package includes a bundled `cliff.toml.template` that is used automatically when no custom config is found. The resolution order is:
|
|
319
|
+
|
|
320
|
+
1. Explicit `cliffConfigPath` in `.config/release-kit.config.ts`
|
|
321
|
+
2. `.config/git-cliff.toml`
|
|
322
|
+
3. `cliff.toml` (repo root)
|
|
323
|
+
4. Bundled `cliff.toml.template` (automatic fallback)
|
|
324
|
+
|
|
325
|
+
The bundled template provides a generic git-cliff configuration that:
|
|
325
326
|
|
|
326
327
|
- Strips issue-ticket prefixes matching `^[A-Z]+-\d+\s+` (e.g., `TOOL-123 `, `AFG-456 `)
|
|
327
328
|
- Handles both `type: description` and `workspace|type: description` commit formats
|
|
328
329
|
- Groups commits by work type into changelog sections
|
|
329
330
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
```bash
|
|
333
|
-
cp node_modules/@williamthorsen/release-kit/cliff.toml.template cliff.toml
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
Then customize as needed for your project.
|
|
331
|
+
To customize, scaffold a local copy with `release-kit init --with-config` and edit `.config/git-cliff.toml`.
|
|
337
332
|
|
|
338
333
|
## External dependencies
|
|
339
334
|
|
|
340
335
|
This package shells out to two external tools:
|
|
341
336
|
|
|
342
337
|
- **`git`** — must be available on `PATH`. Used to find tags and retrieve commit history.
|
|
343
|
-
- **`git-cliff`** —
|
|
338
|
+
- **`git-cliff`** — automatically downloaded and cached via `npx` on first invocation. No need to install it as a dev dependency.
|
|
344
339
|
|
|
345
340
|
## Legacy script-based approach
|
|
346
341
|
|
|
@@ -353,7 +348,7 @@ import { component } from '@williamthorsen/release-kit';
|
|
|
353
348
|
|
|
354
349
|
export const config: MonorepoReleaseConfig = {
|
|
355
350
|
components: [component('packages/arrays'), component('packages/strings')],
|
|
356
|
-
formatCommand: '
|
|
351
|
+
formatCommand: 'npx prettier --write',
|
|
357
352
|
};
|
|
358
353
|
```
|
|
359
354
|
|
|
@@ -367,12 +362,30 @@ runReleasePrepare(config);
|
|
|
367
362
|
|
|
368
363
|
The key difference: the script-based approach requires manually listing every component, while the CLI auto-discovers them from `pnpm-workspace.yaml`.
|
|
369
364
|
|
|
365
|
+
## Breaking changes
|
|
366
|
+
|
|
367
|
+
### v1.1.0: `formatCommand` receives file paths as trailing arguments
|
|
368
|
+
|
|
369
|
+
Previously, `formatCommand` was executed as-is (e.g., `pnpm run fmt` would run without arguments). Now, the paths of all modified files (package.json files and changelogs) are appended as trailing arguments.
|
|
370
|
+
|
|
371
|
+
If your format command does not accept file arguments, update it to one that does:
|
|
372
|
+
|
|
373
|
+
```diff
|
|
374
|
+
-formatCommand: 'pnpm run fmt',
|
|
375
|
+
+formatCommand: 'npx prettier --write',
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### v1.1.0: `git-cliff` is no longer a required dev dependency
|
|
379
|
+
|
|
380
|
+
`git-cliff` is now invoked via `npx --yes git-cliff` instead of requiring it as a dev dependency. You can remove it from your `devDependencies`. The version is not pinned, so `npx` downloads and caches the latest version on first invocation. To pin a specific version, use `npx --yes git-cliff@2.12.0` by wrapping the call in a custom script.
|
|
381
|
+
|
|
370
382
|
## Migration from changesets
|
|
371
383
|
|
|
372
|
-
1. Add `@williamthorsen/release-kit`
|
|
384
|
+
1. Add `@williamthorsen/release-kit` as a dev dependency.
|
|
373
385
|
2. Remove `@changesets/cli` from dev dependencies.
|
|
374
386
|
3. Delete the `.changeset/` directory.
|
|
375
387
|
4. Run `npx @williamthorsen/release-kit init` to scaffold workflow and config files.
|
|
376
388
|
5. Remove `changeset:*` scripts from `package.json` (no replacement needed — the CLI handles everything).
|
|
377
|
-
6.
|
|
378
|
-
|
|
389
|
+
6. Create an initial version tag for each package (e.g., `git tag v1.0.0` or `git tag arrays-v1.0.0`).
|
|
390
|
+
|
|
391
|
+
No cliff config copy is needed — the bundled template is used automatically. To customize, run `release-kit init --with-config`.
|
package/dist/esm/.cache
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
c3020d624e72bb577d60cb16ff223c951d26227fa82aec1c15894f2b2429603f
|
|
@@ -19,11 +19,13 @@ function showInitHelp() {
|
|
|
19
19
|
Usage: release-kit init [options]
|
|
20
20
|
|
|
21
21
|
Initialize release-kit in the current repository.
|
|
22
|
-
|
|
22
|
+
By default, scaffolds only the GitHub Actions workflow file.
|
|
23
23
|
|
|
24
24
|
Options:
|
|
25
|
-
--
|
|
26
|
-
--
|
|
25
|
+
--with-config Also scaffold .config/release-kit.config.ts and .config/git-cliff.toml
|
|
26
|
+
--force Overwrite existing files instead of skipping them
|
|
27
|
+
--dry-run Preview changes without writing files
|
|
28
|
+
--help, -h Show this help message
|
|
27
29
|
`);
|
|
28
30
|
}
|
|
29
31
|
function showPrepareHelp() {
|
|
@@ -59,13 +61,16 @@ if (command === "init") {
|
|
|
59
61
|
showInitHelp();
|
|
60
62
|
process.exit(0);
|
|
61
63
|
}
|
|
62
|
-
const
|
|
64
|
+
const knownInitFlags = /* @__PURE__ */ new Set(["--dry-run", "--force", "--with-config", "--help", "-h"]);
|
|
65
|
+
const unknownFlags = flags.filter((f) => !knownInitFlags.has(f));
|
|
63
66
|
if (unknownFlags.length > 0) {
|
|
64
67
|
console.error(`Error: Unknown option: ${unknownFlags[0]}`);
|
|
65
68
|
process.exit(1);
|
|
66
69
|
}
|
|
67
70
|
const dryRun = flags.includes("--dry-run");
|
|
68
|
-
const
|
|
71
|
+
const force = flags.includes("--force");
|
|
72
|
+
const withConfig = flags.includes("--with-config");
|
|
73
|
+
const exitCode = initCommand({ dryRun, force, withConfig });
|
|
69
74
|
process.exit(exitCode);
|
|
70
75
|
}
|
|
71
76
|
console.error(`Error: Unknown command: ${command}`);
|
|
@@ -17,7 +17,7 @@ function bumpAllVersions(packageFiles, releaseType, dryRun) {
|
|
|
17
17
|
console.info(` [dry-run] Would bump ${filePath}`);
|
|
18
18
|
continue;
|
|
19
19
|
}
|
|
20
|
-
const pkg = readPackageJson(filePath);
|
|
20
|
+
const pkg = filePath === firstFile ? firstPkg : readPackageJson(filePath);
|
|
21
21
|
pkg.version = newVersion;
|
|
22
22
|
try {
|
|
23
23
|
writeFileSync(filePath, JSON.stringify(pkg, null, 2) + "\n", "utf8");
|
package/dist/esm/defaults.js
CHANGED
|
@@ -2,6 +2,7 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { glob } from "glob";
|
|
4
4
|
import { load } from "js-yaml";
|
|
5
|
+
import { isRecord } from "./typeGuards.js";
|
|
5
6
|
async function discoverWorkspaces() {
|
|
6
7
|
const workspaceFile = "pnpm-workspace.yaml";
|
|
7
8
|
if (!existsSync(workspaceFile)) {
|
|
@@ -37,9 +38,6 @@ async function discoverWorkspaces() {
|
|
|
37
38
|
}
|
|
38
39
|
return directories.length > 0 ? [...directories].sort() : void 0;
|
|
39
40
|
}
|
|
40
|
-
function isRecord(value) {
|
|
41
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
42
|
-
}
|
|
43
41
|
export {
|
|
44
42
|
discoverWorkspaces
|
|
45
43
|
};
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { resolveCliffConfigPath } from "./resolveCliffConfigPath.js";
|
|
2
3
|
function generateChangelog(config, changelogPath, tag, dryRun, options) {
|
|
3
|
-
const cliffConfigPath = config.cliffConfigPath
|
|
4
|
+
const cliffConfigPath = resolveCliffConfigPath(config.cliffConfigPath, import.meta.url);
|
|
4
5
|
const outputFile = `${changelogPath}/CHANGELOG.md`;
|
|
5
6
|
const args = ["--config", cliffConfigPath, "--output", outputFile, "--tag", tag];
|
|
6
7
|
for (const includePath of options?.includePaths ?? []) {
|
|
7
8
|
args.push("--include-path", includePath);
|
|
8
9
|
}
|
|
9
10
|
if (dryRun) {
|
|
10
|
-
console.info(` [dry-run] Would run: git-cliff ${args.join(" ")}`);
|
|
11
|
+
console.info(` [dry-run] Would run: npx --yes git-cliff ${args.join(" ")}`);
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
14
|
console.info(` Generating changelog: ${outputFile}`);
|
|
14
15
|
try {
|
|
15
|
-
execFileSync("git-cliff", args, { stdio: "inherit" });
|
|
16
|
+
execFileSync("npx", ["--yes", "git-cliff", ...args], { stdio: "inherit" });
|
|
16
17
|
} catch (error) {
|
|
17
18
|
throw new Error(
|
|
18
19
|
`Failed to generate changelog for ${outputFile}: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -5,5 +5,3 @@ export interface CheckResult {
|
|
|
5
5
|
export declare function isGitRepo(): CheckResult;
|
|
6
6
|
export declare function hasPackageJson(): CheckResult;
|
|
7
7
|
export declare function usesPnpm(): CheckResult;
|
|
8
|
-
export declare function hasCliffToml(): CheckResult;
|
|
9
|
-
export declare function notAlreadyInitialized(): CheckResult;
|
package/dist/esm/init/checks.js
CHANGED
|
@@ -19,38 +19,18 @@ function usesPnpm() {
|
|
|
19
19
|
if (existsSync("pnpm-lock.yaml")) {
|
|
20
20
|
return { ok: true };
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (pkg !== void 0 && typeof pkg.packageManager === "string" && pkg.packageManager.startsWith("pnpm")) {
|
|
26
|
-
return { ok: true };
|
|
27
|
-
}
|
|
28
|
-
} catch {
|
|
29
|
-
}
|
|
30
|
-
return {
|
|
31
|
-
ok: false,
|
|
32
|
-
message: "This project does not appear to use pnpm. A pnpm-lock.yaml or packageManager field is required."
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function hasCliffToml() {
|
|
36
|
-
if (existsSync("cliff.toml")) {
|
|
37
|
-
return { ok: true };
|
|
38
|
-
}
|
|
39
|
-
return { ok: false, message: "No cliff.toml found. This file is required for changelog generation." };
|
|
40
|
-
}
|
|
41
|
-
function notAlreadyInitialized() {
|
|
42
|
-
if (!existsSync(".config/release-kit.config.ts") && !existsSync(".github/scripts/release.config.ts")) {
|
|
22
|
+
const raw = readFileSync("package.json", "utf8");
|
|
23
|
+
const pkg = parseJsonRecord(raw);
|
|
24
|
+
if (pkg !== void 0 && typeof pkg.packageManager === "string" && pkg.packageManager.startsWith("pnpm")) {
|
|
43
25
|
return { ok: true };
|
|
44
26
|
}
|
|
45
27
|
return {
|
|
46
28
|
ok: false,
|
|
47
|
-
message: "
|
|
29
|
+
message: "This project does not appear to use pnpm. A pnpm-lock.yaml or packageManager field is required."
|
|
48
30
|
};
|
|
49
31
|
}
|
|
50
32
|
export {
|
|
51
|
-
hasCliffToml,
|
|
52
33
|
hasPackageJson,
|
|
53
34
|
isGitRepo,
|
|
54
|
-
notAlreadyInitialized,
|
|
55
35
|
usesPnpm
|
|
56
36
|
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
interface InitOptions {
|
|
2
2
|
dryRun: boolean;
|
|
3
|
+
force: boolean;
|
|
4
|
+
withConfig: boolean;
|
|
3
5
|
}
|
|
4
|
-
export declare function initCommand({ dryRun }: InitOptions):
|
|
6
|
+
export declare function initCommand({ dryRun, force, withConfig }: InitOptions): number;
|
|
5
7
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hasPackageJson, isGitRepo, usesPnpm } from "./checks.js";
|
|
2
2
|
import { detectRepoType } from "./detectRepoType.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { printError, printStep, printSuccess } from "./prompt.js";
|
|
4
|
+
import { scaffoldFiles } from "./scaffold.js";
|
|
5
5
|
function runRequiredCheck(label, result) {
|
|
6
6
|
if (result.ok) {
|
|
7
7
|
printSuccess(label);
|
|
@@ -10,53 +10,47 @@ function runRequiredCheck(label, result) {
|
|
|
10
10
|
printError(result.message ?? `${label} failed`);
|
|
11
11
|
return false;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
function checkEligibility() {
|
|
14
14
|
printStep("Checking eligibility");
|
|
15
|
-
if (!runRequiredCheck("Git repository detected", isGitRepo())) return
|
|
16
|
-
if (!runRequiredCheck("package.json found", hasPackageJson())) return
|
|
17
|
-
if (!runRequiredCheck("pnpm detected", usesPnpm())) return
|
|
18
|
-
|
|
19
|
-
if (cliffCheck.ok) {
|
|
20
|
-
printSuccess("cliff.toml found");
|
|
21
|
-
} else {
|
|
22
|
-
console.info("");
|
|
23
|
-
const shouldCreate = await confirm("No cliff.toml found. Create one from the bundled template?");
|
|
24
|
-
if (shouldCreate) {
|
|
25
|
-
copyCliffTemplate(dryRun);
|
|
26
|
-
} else {
|
|
27
|
-
printError("cliff.toml is required for changelog generation. Aborting.");
|
|
28
|
-
return { status: "fail", overwrite: false };
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const initCheck = notAlreadyInitialized();
|
|
32
|
-
if (!initCheck.ok) {
|
|
33
|
-
console.info("");
|
|
34
|
-
const shouldOverwrite = await confirm("release-kit appears to be already initialized. Overwrite existing files?");
|
|
35
|
-
if (!shouldOverwrite) {
|
|
36
|
-
console.info("Aborting.");
|
|
37
|
-
return { status: "abort", overwrite: false };
|
|
38
|
-
}
|
|
39
|
-
return { status: "pass", overwrite: true };
|
|
40
|
-
}
|
|
41
|
-
return { status: "pass", overwrite: false };
|
|
15
|
+
if (!runRequiredCheck("Git repository detected", isGitRepo())) return false;
|
|
16
|
+
if (!runRequiredCheck("package.json found", hasPackageJson())) return false;
|
|
17
|
+
if (!runRequiredCheck("pnpm detected", usesPnpm())) return false;
|
|
18
|
+
return true;
|
|
42
19
|
}
|
|
43
|
-
|
|
20
|
+
function initCommand({ dryRun, force, withConfig }) {
|
|
44
21
|
if (dryRun) {
|
|
45
22
|
console.info("[dry-run mode]");
|
|
46
23
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
let eligible;
|
|
25
|
+
try {
|
|
26
|
+
eligible = checkEligibility();
|
|
27
|
+
} catch (error) {
|
|
28
|
+
printError(`Eligibility check failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
if (!eligible) return 1;
|
|
50
32
|
printStep("Detecting repo type");
|
|
51
|
-
|
|
33
|
+
let repoType;
|
|
34
|
+
try {
|
|
35
|
+
repoType = detectRepoType();
|
|
36
|
+
} catch (error) {
|
|
37
|
+
printError(`Failed to detect repo type: ${error instanceof Error ? error.message : String(error)}`);
|
|
38
|
+
return 1;
|
|
39
|
+
}
|
|
52
40
|
printSuccess(`Detected: ${repoType}`);
|
|
53
41
|
printStep("Scaffolding files");
|
|
54
|
-
|
|
42
|
+
try {
|
|
43
|
+
scaffoldFiles({ repoType, dryRun, overwrite: force, withConfig });
|
|
44
|
+
} catch (error) {
|
|
45
|
+
printError(`Failed to scaffold files: ${error instanceof Error ? error.message : String(error)}`);
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
55
48
|
printStep("Next steps");
|
|
49
|
+
const configHint = withConfig ? "1. (Optional) Customize .config/release-kit.config.ts and .config/git-cliff.toml." : "1. (Optional) Run again with --with-config to scaffold config files.";
|
|
56
50
|
console.info(`
|
|
57
|
-
|
|
51
|
+
${configHint}
|
|
58
52
|
2. Test by running: npx @williamthorsen/release-kit prepare --dry-run
|
|
59
|
-
3. Commit the generated
|
|
53
|
+
3. Commit the generated files.
|
|
60
54
|
`);
|
|
61
55
|
return 0;
|
|
62
56
|
}
|
package/dist/esm/init/prompt.js
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
1
|
-
import { createInterface } from "node:readline/promises";
|
|
2
|
-
async function confirm(question) {
|
|
3
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
4
|
-
try {
|
|
5
|
-
const answer = await rl.question(`${question} (y/n) `);
|
|
6
|
-
return answer.trim().toLowerCase().startsWith("y");
|
|
7
|
-
} finally {
|
|
8
|
-
rl.close();
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
1
|
function printStep(message) {
|
|
12
2
|
console.info(`
|
|
13
3
|
> ${message}`);
|
|
14
4
|
}
|
|
15
5
|
function printSuccess(message) {
|
|
16
|
-
console.info(`
|
|
6
|
+
console.info(` \u2705 ${message}`);
|
|
17
7
|
}
|
|
18
8
|
function printSkip(message) {
|
|
19
|
-
console.info(`
|
|
9
|
+
console.info(` \u26A0\uFE0F ${message}`);
|
|
20
10
|
}
|
|
21
11
|
function printError(message) {
|
|
22
|
-
console.error(`
|
|
12
|
+
console.error(` \u274C ${message}`);
|
|
23
13
|
}
|
|
24
14
|
export {
|
|
25
|
-
confirm,
|
|
26
15
|
printError,
|
|
27
16
|
printSkip,
|
|
28
17
|
printStep,
|
|
@@ -3,7 +3,8 @@ interface ScaffoldOptions {
|
|
|
3
3
|
repoType: RepoType;
|
|
4
4
|
dryRun: boolean;
|
|
5
5
|
overwrite: boolean;
|
|
6
|
+
withConfig: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function copyCliffTemplate(dryRun: boolean): void;
|
|
8
|
-
export declare function scaffoldFiles({ repoType, dryRun, overwrite }: ScaffoldOptions): void;
|
|
8
|
+
export declare function copyCliffTemplate(dryRun: boolean, overwrite: boolean): void;
|
|
9
|
+
export declare function scaffoldFiles({ repoType, dryRun, overwrite, withConfig }: ScaffoldOptions): void;
|
|
9
10
|
export {};
|
|
@@ -33,7 +33,7 @@ function writeIfAbsent(filePath, content, dryRun, overwrite) {
|
|
|
33
33
|
printSuccess(`Created ${filePath}`);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
function copyCliffTemplate(dryRun) {
|
|
36
|
+
function copyCliffTemplate(dryRun, overwrite) {
|
|
37
37
|
const thisDir = dirname(fileURLToPath(import.meta.url));
|
|
38
38
|
const templatePath = resolve(thisDir, "..", "..", "..", "cliff.toml.template");
|
|
39
39
|
if (!existsSync(templatePath)) {
|
|
@@ -48,15 +48,13 @@ function copyCliffTemplate(dryRun) {
|
|
|
48
48
|
printError(`Failed to read cliff.toml.template: ${message}`);
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
-
writeIfAbsent("cliff.toml", content, dryRun,
|
|
51
|
+
writeIfAbsent(".config/git-cliff.toml", content, dryRun, overwrite);
|
|
52
52
|
}
|
|
53
|
-
function scaffoldFiles({ repoType, dryRun, overwrite }) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
for (const file of files) {
|
|
59
|
-
writeIfAbsent(file.path, file.content, dryRun, overwrite);
|
|
53
|
+
function scaffoldFiles({ repoType, dryRun, overwrite, withConfig }) {
|
|
54
|
+
writeIfAbsent(".github/workflows/release.yaml", releaseWorkflow(repoType), dryRun, overwrite);
|
|
55
|
+
if (withConfig) {
|
|
56
|
+
writeIfAbsent(".config/release-kit.config.ts", releaseConfigScript(repoType), dryRun, overwrite);
|
|
57
|
+
copyCliffTemplate(dryRun, overwrite);
|
|
60
58
|
}
|
|
61
59
|
}
|
|
62
60
|
export {
|
|
@@ -7,12 +7,15 @@ const config: ReleaseKitConfig = {
|
|
|
7
7
|
// components: [
|
|
8
8
|
// { dir: 'my-package', shouldExclude: true },
|
|
9
9
|
// ],
|
|
10
|
+
|
|
11
|
+
// TODO: Uncomment and adjust if you have a format command
|
|
12
|
+
// formatCommand: 'npx prettier --write',
|
|
13
|
+
|
|
10
14
|
// Uncomment to override the default version patterns:
|
|
11
15
|
// versionPatterns: { major: ['!'], minor: ['feat', 'feature'] },
|
|
16
|
+
|
|
12
17
|
// Uncomment to add custom work types (merged with defaults):
|
|
13
18
|
// workTypes: { perf: { header: 'Performance' } },
|
|
14
|
-
// TODO: Uncomment and adjust if you have a format command
|
|
15
|
-
// formatCommand: 'pnpm run fmt',
|
|
16
19
|
};
|
|
17
20
|
|
|
18
21
|
export default config;
|
|
@@ -21,12 +24,14 @@ export default config;
|
|
|
21
24
|
return `import type { ReleaseKitConfig } from '@williamthorsen/release-kit';
|
|
22
25
|
|
|
23
26
|
const config: ReleaseKitConfig = {
|
|
27
|
+
// TODO: Uncomment and adjust if you have a format command
|
|
28
|
+
// formatCommand: 'npx prettier --write',
|
|
29
|
+
|
|
24
30
|
// Uncomment to override the default version patterns:
|
|
25
31
|
// versionPatterns: { major: ['!'], minor: ['feat', 'feature'] },
|
|
32
|
+
|
|
26
33
|
// Uncomment to add custom work types (merged with defaults):
|
|
27
34
|
// workTypes: { perf: { header: 'Performance' } },
|
|
28
|
-
// TODO: Uncomment and adjust if you have a format command
|
|
29
|
-
// formatCommand: 'pnpm run fmt',
|
|
30
35
|
};
|
|
31
36
|
|
|
32
37
|
export default config;
|
|
@@ -60,11 +65,8 @@ permissions:
|
|
|
60
65
|
|
|
61
66
|
jobs:
|
|
62
67
|
release:
|
|
63
|
-
uses: williamthorsen/.github
|
|
68
|
+
uses: williamthorsen/node-monorepo-tools/.github/workflows/release-workflow.yaml@release-workflow-v1
|
|
64
69
|
with:
|
|
65
|
-
# TODO: Set the Node.js and pnpm versions for your project
|
|
66
|
-
node-version: '24'
|
|
67
|
-
pnpm-version: '10.32.1'
|
|
68
70
|
only: \${{ inputs.only }}
|
|
69
71
|
bump: \${{ inputs.bump }}
|
|
70
72
|
`;
|
|
@@ -91,11 +93,8 @@ permissions:
|
|
|
91
93
|
|
|
92
94
|
jobs:
|
|
93
95
|
release:
|
|
94
|
-
uses: williamthorsen/.github
|
|
96
|
+
uses: williamthorsen/node-monorepo-tools/.github/workflows/release-workflow.yaml@release-workflow-v1
|
|
95
97
|
with:
|
|
96
|
-
# TODO: Set the Node.js and pnpm versions for your project
|
|
97
|
-
node-version: '24'
|
|
98
|
-
pnpm-version: '10.32.1'
|
|
99
98
|
bump: \${{ inputs.bump }}
|
|
100
99
|
`;
|
|
101
100
|
}
|
package/dist/esm/loadConfig.js
CHANGED
|
@@ -2,6 +2,7 @@ import { existsSync } from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { component } from "./component.js";
|
|
4
4
|
import { DEFAULT_VERSION_PATTERNS, DEFAULT_WORK_TYPES } from "./defaults.js";
|
|
5
|
+
import { isRecord } from "./typeGuards.js";
|
|
5
6
|
const CONFIG_FILE_PATH = ".config/release-kit.config.ts";
|
|
6
7
|
async function loadConfig() {
|
|
7
8
|
const absoluteConfigPath = path.resolve(process.cwd(), CONFIG_FILE_PATH);
|
|
@@ -22,9 +23,6 @@ async function loadConfig() {
|
|
|
22
23
|
}
|
|
23
24
|
return resolved;
|
|
24
25
|
}
|
|
25
|
-
function isRecord(value) {
|
|
26
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27
|
-
}
|
|
28
26
|
function mergeMonorepoConfig(discoveredPaths, userConfig) {
|
|
29
27
|
let components = discoveredPaths.map((workspacePath) => component(workspacePath));
|
|
30
28
|
if (userConfig?.components !== void 0) {
|
|
@@ -5,8 +5,12 @@ import { releasePrepareMono } from "./releasePrepareMono.js";
|
|
|
5
5
|
import { parseArgs, RELEASE_TAGS_FILE, writeReleaseTags } from "./runReleasePrepare.js";
|
|
6
6
|
import { validateConfig } from "./validateConfig.js";
|
|
7
7
|
async function prepareCommand(argv) {
|
|
8
|
-
const { dryRun, bumpOverride, only } = parseArgs(argv);
|
|
9
|
-
const options = {
|
|
8
|
+
const { dryRun, force, bumpOverride, only } = parseArgs(argv);
|
|
9
|
+
const options = {
|
|
10
|
+
dryRun,
|
|
11
|
+
force,
|
|
12
|
+
...bumpOverride === void 0 ? {} : { bumpOverride }
|
|
13
|
+
};
|
|
10
14
|
let rawConfig;
|
|
11
15
|
try {
|
|
12
16
|
rawConfig = await loadConfig();
|
|
@@ -20,7 +24,7 @@ async function prepareCommand(argv) {
|
|
|
20
24
|
if (errors.length > 0) {
|
|
21
25
|
console.error("Invalid config:");
|
|
22
26
|
for (const err of errors) {
|
|
23
|
-
console.error(`
|
|
27
|
+
console.error(` \u274C ${err}`);
|
|
24
28
|
}
|
|
25
29
|
process.exit(1);
|
|
26
30
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ReleaseConfig, ReleaseType } from './types.ts';
|
|
2
2
|
export interface ReleasePrepareOptions {
|
|
3
3
|
dryRun: boolean;
|
|
4
|
+
force?: boolean;
|
|
4
5
|
bumpOverride?: ReleaseType;
|
|
5
6
|
}
|
|
6
7
|
export declare function releasePrepare(config: ReleaseConfig, options: ReleasePrepareOptions): string[];
|
|
@@ -31,15 +31,17 @@ function releasePrepare(config, options) {
|
|
|
31
31
|
console.info("Generating changelogs...");
|
|
32
32
|
generateChangelogs(config, newTag, dryRun);
|
|
33
33
|
if (config.formatCommand !== void 0) {
|
|
34
|
+
const modifiedFiles = [...config.packageFiles, ...config.changelogPaths.map((p) => `${p}/CHANGELOG.md`)];
|
|
35
|
+
const fullCommand = `${config.formatCommand} ${modifiedFiles.join(" ")}`;
|
|
34
36
|
if (dryRun) {
|
|
35
|
-
console.info(` [dry-run] Would run format command: ${
|
|
37
|
+
console.info(` [dry-run] Would run format command: ${fullCommand}`);
|
|
36
38
|
} else {
|
|
37
|
-
console.info(` Running format command: ${
|
|
39
|
+
console.info(` Running format command: ${fullCommand}`);
|
|
38
40
|
try {
|
|
39
|
-
execSync(
|
|
41
|
+
execSync(fullCommand, { stdio: "inherit" });
|
|
40
42
|
} catch (error) {
|
|
41
43
|
throw new Error(
|
|
42
|
-
`Format command failed ('${
|
|
44
|
+
`Format command failed ('${fullCommand}'): ${error instanceof Error ? error.message : String(error)}`
|
|
43
45
|
);
|
|
44
46
|
}
|
|
45
47
|
}
|
|
@@ -6,10 +6,11 @@ import { generateChangelog } from "./generateChangelogs.js";
|
|
|
6
6
|
import { getCommitsSinceTarget } from "./getCommitsSinceTarget.js";
|
|
7
7
|
import { parseCommitMessage } from "./parseCommitMessage.js";
|
|
8
8
|
function releasePrepareMono(config, options) {
|
|
9
|
-
const { dryRun, bumpOverride } = options;
|
|
9
|
+
const { dryRun, force, bumpOverride } = options;
|
|
10
10
|
const workTypes = config.workTypes ?? { ...DEFAULT_WORK_TYPES };
|
|
11
11
|
const versionPatterns = config.versionPatterns ?? { ...DEFAULT_VERSION_PATTERNS };
|
|
12
12
|
const tags = [];
|
|
13
|
+
const modifiedFiles = [];
|
|
13
14
|
for (const component of config.components) {
|
|
14
15
|
const name = component.dir;
|
|
15
16
|
console.info(`
|
|
@@ -18,7 +19,7 @@ Processing component: ${name}`);
|
|
|
18
19
|
const { tag, commits } = getCommitsSinceTarget(component.tagPrefix, component.paths);
|
|
19
20
|
const since = tag === void 0 ? "(no previous release found)" : `since ${tag}`;
|
|
20
21
|
console.info(` Found ${commits.length} commits ${since}`);
|
|
21
|
-
if (commits.length === 0) {
|
|
22
|
+
if (commits.length === 0 && !force) {
|
|
22
23
|
console.info(` No changes for ${name} ${since}. Skipping.`);
|
|
23
24
|
continue;
|
|
24
25
|
}
|
|
@@ -39,6 +40,7 @@ Processing component: ${name}`);
|
|
|
39
40
|
const newVersion = bumpAllVersions(component.packageFiles, releaseType, dryRun);
|
|
40
41
|
const newTag = `${component.tagPrefix}${newVersion}`;
|
|
41
42
|
tags.push(newTag);
|
|
43
|
+
modifiedFiles.push(...component.packageFiles, ...component.changelogPaths.map((p) => `${p}/CHANGELOG.md`));
|
|
42
44
|
console.info(" Generating changelogs...");
|
|
43
45
|
for (const changelogPath of component.changelogPaths) {
|
|
44
46
|
generateChangelog(config, changelogPath, newTag, dryRun, { includePaths: component.paths });
|
|
@@ -46,17 +48,18 @@ Processing component: ${name}`);
|
|
|
46
48
|
console.info(` Component release prepared: ${newTag}`);
|
|
47
49
|
}
|
|
48
50
|
if (tags.length > 0 && config.formatCommand !== void 0) {
|
|
51
|
+
const fullCommand = `${config.formatCommand} ${modifiedFiles.join(" ")}`;
|
|
49
52
|
if (dryRun) {
|
|
50
53
|
console.info(`
|
|
51
|
-
[dry-run] Would run format command: ${
|
|
54
|
+
[dry-run] Would run format command: ${fullCommand}`);
|
|
52
55
|
} else {
|
|
53
56
|
console.info(`
|
|
54
|
-
Running format command: ${
|
|
57
|
+
Running format command: ${fullCommand}`);
|
|
55
58
|
try {
|
|
56
|
-
execSync(
|
|
59
|
+
execSync(fullCommand, { stdio: "inherit" });
|
|
57
60
|
} catch (error) {
|
|
58
61
|
throw new Error(
|
|
59
|
-
`Format command failed ('${
|
|
62
|
+
`Format command failed ('${fullCommand}'): ${error instanceof Error ? error.message : String(error)}`
|
|
60
63
|
);
|
|
61
64
|
}
|
|
62
65
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resolveCliffConfigPath(cliffConfigPath: string | undefined, metaUrl: string): string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
function resolveCliffConfigPath(cliffConfigPath, metaUrl) {
|
|
5
|
+
if (cliffConfigPath !== void 0) {
|
|
6
|
+
return cliffConfigPath;
|
|
7
|
+
}
|
|
8
|
+
const candidates = [".config/git-cliff.toml", "cliff.toml"];
|
|
9
|
+
for (const candidate of candidates) {
|
|
10
|
+
if (existsSync(candidate)) {
|
|
11
|
+
return candidate;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const thisDir = dirname(fileURLToPath(metaUrl));
|
|
15
|
+
const bundledPath = resolve(thisDir, "..", "..", "cliff.toml.template");
|
|
16
|
+
if (existsSync(bundledPath)) {
|
|
17
|
+
return bundledPath;
|
|
18
|
+
}
|
|
19
|
+
throw new Error(
|
|
20
|
+
`Could not resolve a git-cliff config file. Searched: ${candidates.join(", ")}, and bundled template at ${bundledPath}`
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
resolveCliffConfigPath
|
|
25
|
+
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { MonorepoReleaseConfig, ReleaseConfig, ReleaseType } from './types.ts';
|
|
2
|
-
export declare const RELEASE_TAGS_FILE = "
|
|
2
|
+
export declare const RELEASE_TAGS_FILE = "tmp/.release-tags";
|
|
3
3
|
export declare function parseArgs(argv: string[]): {
|
|
4
4
|
dryRun: boolean;
|
|
5
|
+
force: boolean;
|
|
5
6
|
bumpOverride: ReleaseType | undefined;
|
|
6
7
|
only: string[] | undefined;
|
|
7
8
|
};
|
|
@@ -2,7 +2,7 @@ import { mkdirSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
3
|
import { releasePrepare } from "./releasePrepare.js";
|
|
4
4
|
import { releasePrepareMono } from "./releasePrepareMono.js";
|
|
5
|
-
const RELEASE_TAGS_FILE = "
|
|
5
|
+
const RELEASE_TAGS_FILE = "tmp/.release-tags";
|
|
6
6
|
const VALID_BUMP_TYPES = ["major", "minor", "patch"];
|
|
7
7
|
function isReleaseType(value) {
|
|
8
8
|
return VALID_BUMP_TYPES.includes(value);
|
|
@@ -20,17 +20,21 @@ Legacy entry point for release preparation. Prefer the CLI:
|
|
|
20
20
|
Options:
|
|
21
21
|
--dry-run Run without modifying any files
|
|
22
22
|
--bump=major|minor|patch Override the bump type for all components
|
|
23
|
+
--force Bypass the "no commits since last tag" check (monorepo only, requires --bump)
|
|
23
24
|
--only=name1,name2 Only process the named components (comma-separated, monorepo only)
|
|
24
25
|
--help Show this help message
|
|
25
26
|
`);
|
|
26
27
|
}
|
|
27
28
|
function parseArgs(argv) {
|
|
28
29
|
let dryRun = false;
|
|
30
|
+
let force = false;
|
|
29
31
|
let bumpOverride;
|
|
30
32
|
let only;
|
|
31
33
|
for (const arg of argv) {
|
|
32
34
|
if (arg === "--dry-run") {
|
|
33
35
|
dryRun = true;
|
|
36
|
+
} else if (arg === "--force") {
|
|
37
|
+
force = true;
|
|
34
38
|
} else if (arg.startsWith("--bump=")) {
|
|
35
39
|
const value = arg.slice("--bump=".length);
|
|
36
40
|
if (!isReleaseType(value)) {
|
|
@@ -53,11 +57,19 @@ function parseArgs(argv) {
|
|
|
53
57
|
process.exit(1);
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
|
-
|
|
60
|
+
if (force && bumpOverride === void 0) {
|
|
61
|
+
console.error("Error: --force requires --bump to specify the version bump type");
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
return { dryRun, force, bumpOverride, only };
|
|
57
65
|
}
|
|
58
66
|
function runReleasePrepare(config) {
|
|
59
|
-
const { dryRun, bumpOverride, only } = parseArgs(process.argv.slice(2));
|
|
60
|
-
const options = {
|
|
67
|
+
const { dryRun, force, bumpOverride, only } = parseArgs(process.argv.slice(2));
|
|
68
|
+
const options = {
|
|
69
|
+
dryRun,
|
|
70
|
+
force,
|
|
71
|
+
...bumpOverride === void 0 ? {} : { bumpOverride }
|
|
72
|
+
};
|
|
61
73
|
if (!isMonorepoConfig(config)) {
|
|
62
74
|
if (only !== void 0) {
|
|
63
75
|
console.error("Error: --only is only supported for monorepo configurations");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRecord } from "./typeGuards.js";
|
|
1
2
|
function validateConfig(raw) {
|
|
2
3
|
const errors = [];
|
|
3
4
|
if (!isRecord(raw)) {
|
|
@@ -25,9 +26,6 @@ function validateConfig(raw) {
|
|
|
25
26
|
validateWorkspaceAliases(raw.workspaceAliases, config, errors);
|
|
26
27
|
return { config, errors };
|
|
27
28
|
}
|
|
28
|
-
function isRecord(value) {
|
|
29
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
30
|
-
}
|
|
31
29
|
function isStringArray(value) {
|
|
32
30
|
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
33
31
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@williamthorsen/release-kit",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Version-bumping and changelog-generation toolkit for release workflows",
|
|
5
5
|
"keywords": [],
|
|
6
|
-
"homepage": "https://github.com/williamthorsen/
|
|
6
|
+
"homepage": "https://github.com/williamthorsen/node-monorepo-tools/tree/main/packages/release-kit#readme",
|
|
7
7
|
"bugs": {
|
|
8
|
-
"url": "https://github.com/williamthorsen/
|
|
8
|
+
"url": "https://github.com/williamthorsen/node-monorepo-tools/issues"
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/williamthorsen/
|
|
12
|
+
"url": "https://github.com/williamthorsen/node-monorepo-tools.git",
|
|
13
13
|
"directory": "packages/release-kit"
|
|
14
14
|
},
|
|
15
15
|
"license": "UNLICENSED",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/types.ts","../src/bumpversion.ts","../src/bumpallversions.ts","../src/component.ts","../src/defaults.ts","../src/determinebumptype.ts","../../../node_modules/.pnpm/minipass@7.1.3/node_modules/minipass/dist/esm/index.d.ts","../../../node_modules/.pnpm/lru-cache@11.1.0/node_modules/lru-cache/dist/esm/index.d.ts","../../../node_modules/.pnpm/path-scurry@2.0.2/node_modules/path-scurry/dist/esm/index.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/ast.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/escape.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/unescape.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/index.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/pattern.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/processor.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/walker.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/ignore.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/glob.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/has-magic.d.ts","../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/index.d.ts","../../../node_modules/.pnpm/@types+js-yaml@4.0.9/node_modules/@types/js-yaml/index.d.ts","../../../node_modules/.pnpm/@types+js-yaml@4.0.9/node_modules/@types/js-yaml/index.d.mts","../src/discoverworkspaces.ts","../src/generatechangelogs.ts","../src/getcommitssincetarget.ts","../src/parsecommitmessage.ts","../src/releaseprepare.ts","../src/releasepreparemono.ts","../src/runreleaseprepare.ts","../src/index.ts","../../../node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/types.d.ts","../../../node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/jiti.d.mts","../src/loadconfig.ts","../src/validateconfig.ts","../src/preparecommand.ts","../src/init/parsejsonrecord.ts","../src/init/checks.ts","../src/init/detectrepotype.ts","../src/init/prompt.ts","../src/init/templates.ts","../src/init/scaffold.ts","../src/init/initcommand.ts","../src/bin/release-kit.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@24.12.0/node_modules/@types/node/index.d.ts"],"fileIdsList":[[101,126,180,197,198],[126,180,197,198],[126,177,178,180,197,198],[126,179,180,197,198],[180,197,198],[126,180,185,197,198,215],[126,180,181,186,191,197,198,200,212,223],[126,180,181,182,191,197,198,200],[126,180,183,197,198,224],[126,180,184,185,192,197,198,201],[126,180,185,197,198,212,220],[126,180,186,188,191,197,198,200],[126,179,180,187,197,198],[126,180,188,189,197,198],[126,180,190,191,197,198],[126,179,180,191,197,198],[126,180,191,192,193,197,198,212,223],[126,180,191,192,193,197,198,207,212,215],[126,172,180,188,191,194,197,198,200,212,223],[126,180,191,192,194,195,197,198,200,212,220,223],[126,180,194,196,197,198,212,220,223],[124,125,126,127,128,129,130,131,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],[126,180,191,197,198],[126,180,197,198,199,223],[126,180,188,191,197,198,200,212],[126,180,197,198,201],[126,180,197,198,202],[126,179,180,197,198,203],[126,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],[126,180,197,198,205],[126,180,197,198,206],[126,180,191,197,198,207,208],[126,180,197,198,207,209,224,226],[126,180,192,197,198],[126,180,191,197,198,212,213,215],[126,180,197,198,214,215],[126,180,197,198,212,213],[126,180,197,198,215],[126,180,197,198,216],[126,177,180,197,198,212,217,223],[126,180,191,197,198,218,219],[126,180,197,198,218,219],[126,180,185,197,198,200,212,220],[126,180,197,198,221],[126,180,197,198,200,222],[126,180,194,197,198,206,223],[126,180,185,197,198,224],[126,180,197,198,212,225],[126,180,197,198,199,226],[126,180,197,198,227],[126,180,185,197,198],[126,172,180,197,198],[126,180,197,198,228],[126,172,180,191,193,197,198,203,212,215,223,225,226,228],[126,180,197,198,212,229],[87,89,93,94,97,126,180,197,198],[98,126,180,197,198],[89,93,96,126,180,197,198],[87,89,93,96,97,98,99,126,180,197,198],[93,126,180,197,198],[89,93,94,96,126,180,197,198],[87,89,94,95,97,126,180,197,198],[111,126,180,197,198],[90,91,92,126,180,197,198],[126,180,191,197,198,216],[87,88,126,180,192,197,198,202],[126,138,141,144,145,180,197,198,223],[126,141,180,197,198,212,223],[126,141,145,180,197,198,223],[126,180,197,198,212],[126,135,180,197,198],[126,139,180,197,198],[126,137,138,141,180,197,198,223],[126,180,197,198,200,220],[126,180,197,198,230],[126,135,180,197,198,230],[126,137,141,180,197,198,200,223],[126,132,133,134,136,140,180,191,197,198,212,223],[126,141,149,157,180,197,198],[126,133,139,180,197,198],[126,141,166,167,180,197,198],[126,133,136,141,180,197,198,215,223,230],[126,141,180,197,198],[126,137,141,180,197,198,223],[126,132,180,197,198],[126,135,136,137,139,140,141,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,180,197,198],[126,141,159,162,180,188,197,198],[126,141,149,150,151,180,197,198],[126,139,141,150,152,180,197,198],[126,140,180,197,198],[126,133,135,141,180,197,198],[126,141,145,150,152,180,197,198],[126,145,180,197,198],[126,139,141,144,180,197,198,223],[126,133,137,141,149,180,197,198],[126,141,159,180,197,198],[126,152,180,197,198],[126,135,141,166,180,197,198,215,228,230],[115,122,126,180,197,198],[81,82,126,180,192,197,198],[81,126,180,197,198],[81,126,180,197,198,202],[100,102,126,180,192,197,198,202],[81,126,180,181,197,198],[81,82,83,84,85,86,103,104,105,106,107,108,109,126,180,197,198],[116,126,180,181,192,197,198],[116,126,180,192,197,198],[117,118,119,121,126,180,197,198],[126,180,197,198,208],[118,119,120,126,180,192,197,198,202,223],[118,126,180,197,198],[81,84,85,112,126,180,192,197,198,202],[81,103,107,108,109,113,114,126,180,197,198],[81,83,85,86,104,105,106,126,180,181,197,198],[81,83,85,86,104,105,106,107,126,180,181,197,198],[81,107,108,126,180,192,197,198,202]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"6214ed750212cf332973054a0002f9c766a19cb5992e2c42913f6f92acc0e36b","signature":"e9f2fe73ff22837cd6715f191c12642a7861a1dc01e1950b7bddb6579ca3c754","impliedFormat":99},{"version":"8fa9d8a01b5f23351e74bb5ed27056f2dc61f3be784e2b40ac5c6769d5b5c857","signature":"4addc77f22adb312bacc79b2d60daf7f22d038021c9eacff9acb4c12d26b50dd","impliedFormat":99},{"version":"5cb7020711b38f8e28df92ac824f8f6ebcb877948c187b00f5f2b3d67af5c220","signature":"36eb11bac75359679c935842c23b13247a4137cae851f623ae4a04424df8e336","impliedFormat":99},{"version":"e053f222e8058bb3d352a360aafb517f0d988b0786464a505269bfd982fd6c5e","signature":"d56ad72cd08b80c5da64050dbeb4cdfe430ef21a56330093f71bdb04e05bb5b2","impliedFormat":99},{"version":"0e477ebc0de7d5cbb589203bb54d98a171e007bc9d7dfad53753ef7903c58c28","signature":"ef276620114fe084a05e1411f22ac821a5ced585178dfedb6c2f5edbb095369f","impliedFormat":99},{"version":"7c647f3de4bdc7c88d85151e169aaabd7295a14ead66e2d531f1604f64957436","signature":"a83163320f055c50cc4114279a7526cbec9762e5e89b2c0d4c3d18f980d45d81","impliedFormat":99},{"version":"894bd2a64bfce5b28d1f4b6760f2eb75f07ce64dd1c272bbf7ceb6fec3f27912","impliedFormat":99},{"version":"599b42c2c7227d59788f9239a30b16e465e15127c7c4541d30b801c23ca681e6","impliedFormat":99},{"version":"072f583571d6e3d30cd9760ee3485d29484fb7b54ba772ac135c747a380096a1","impliedFormat":99},{"version":"ba2b8858ace0b631b318392c75c167fc3b2f819b0afb6706da4635346db92451","impliedFormat":99},{"version":"d8a6b3f899917210f00ddf13b564a2a4fdcf1e50c5a22e8d3abcfd4f1c4f9ae1","impliedFormat":99},{"version":"fd5eab954b31e761a72234031dadc3aab768763942a9637e380aed441cc94f59","impliedFormat":99},{"version":"6d719ee5051d87a0f5c94d9481d86221cfbe350f3f80c12bb3fe6ab7ea30f1ab","impliedFormat":99},{"version":"a0846c150c0960c2a1ab7582d9b4c351afa4923e0f767d4ef7d8c26ed893f685","impliedFormat":99},{"version":"6ff702721d87c0ba8e7f8950e7b0a3b009dfd912fab3997e0b63fab8d83919c3","impliedFormat":99},{"version":"9dce9fc12e9a79d1135699d525aa6b44b71a45e32e3fa0cf331060b980b16317","impliedFormat":99},{"version":"586b2fd8a7d582329658aaceec22f8a5399e05013deb49bcfde28f95f093c8ee","impliedFormat":99},{"version":"add2e396a8d10be760e447464be5861e12ecc215489f87910afeaa26a6a54c88","impliedFormat":99},{"version":"ef1f3eadd7bed282de45bafd7c2c00105cf1db93e22f6cd763bec8a9c2cf6df1","impliedFormat":99},{"version":"2b90463c902dbe4f5bbb9eae084c05de37477c17a5de1e342eb7cbc9410dc6a1","impliedFormat":99},{"version":"7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","impliedFormat":1},{"version":"95bf7c19205d7a4c92f1699dae58e217bb18f324276dfe06b1c2e312c7c75cf2","impliedFormat":99},{"version":"e6d7df71fc7bee6e11b43c3ee6b37fe6b3a29cfcc6056c7344c24db80eb76ade","signature":"daf330f8405a25b73e8f9f3bef13f9afe38c0ce7531885862c2c625b26b326ae","impliedFormat":99},{"version":"c5bfb6f5c5cb1a45c480e6aa993eb632b619eeb16d93e2f0c7b83869a4a1ff33","signature":"b2c36e251fe4ccf17ee130f0f287416961138db58cf27efd4fb63d347b0fce6c","impliedFormat":99},{"version":"483f19266cbc2534d7c3fa1ef66f98847e90d3a35112f58c22cdc0ef270d64c5","signature":"a33a4b1c537925114d141aa19ec342fc3c942f1725a7467d6741350cddd356f1","impliedFormat":99},{"version":"da045c2b64ad363e4d005320c699280425995be4758fd2829eee8df2e80a7c81","signature":"d1a5d2a3a384b1170b7da9715c370173ca2aba6a9896abf59fb4e50d9fd2aded","impliedFormat":99},{"version":"d890d8c6e8ab3c862e934c4cb97bb99019780f23908998eef652ea0abfd2123c","signature":"b732c0706a0886605ff08600b18cd4545e49b65d19c826d3c95d56b690c313f9","impliedFormat":99},{"version":"89b16662b6e33d02e8646a9a2cdca31811105bd3ae8b1ebfdef3d8c8f6a90804","signature":"dc09d9ce0c2abaf212e009b937280bcb65b91b01ed3ac43e402871ac909373a4","impliedFormat":99},{"version":"5986e89d60dc59f932aa8277e73ad924ccfcb2ef54fe83d1506bb8ee089a5c02","signature":"e3bee88e2437cb73a9b00c741ecae8f19f0b92bb0b65b3aee69684ff2fb5c865","impliedFormat":99},{"version":"df1e6177460f63c4fabbbabf6aa67711cb3836ade449956e60d3acc5f0cf0bbb","signature":"4c7d80bbd5ac218cb94bb208cca508871458004705eef8e2ce01f61e7f4370ce","impliedFormat":99},{"version":"1e2587f9989eb52993aba54a2e4aee663d392e7b7555dbf63c0e621eeec4549c","impliedFormat":99},{"version":"c6c2f7ca8e09b0020387e38962dcafba007738506197c0098c58db9f365eeb84","impliedFormat":99},{"version":"9ea3955f7733c658a55dd6f3e8a838cfb36fd926def711dd7abd530db9fbe20b","signature":"ae3db8a96d91881a2a860609ff311e4e7a980879a007b7a952bec3a5049886a3","impliedFormat":99},{"version":"b5355756d87508d8dc65029825f3cdb6c99cb7681e3c35f5b6bde6a94824049a","signature":"4a4dec799112754e6b05197068fbfff0a3401a5d2a1c42a3297f49154d98ea22","impliedFormat":99},{"version":"be84719627119e466f501414c7ecb041f62b8ff08ea83abce87efd0d1d335773","signature":"6650bb5e5a9f553b9f96d23eca5d1db16e275aa2eb7164c990ed9de0fa68ef94","impliedFormat":99},{"version":"8310a270c448fa3f93c4dfeff4363c7a52f5dfc90b4901d7d5d2f2975e7381de","signature":"033a272715611b5683218497b3f90916c1f78c5d1b03ce4db663cf2bdd51c710","impliedFormat":99},{"version":"75522dfb81a8477c531cd5455dbf7ecd2f3c6518cafa1ab3bc0cf7de9b487333","signature":"c4c5035a5211f9c03b125dbe514757c3038eef766b3a17f019a43580a7cd5f2d","impliedFormat":99},{"version":"864cd3cac0e49ca7ab6af80a3608596ef3d251dc52d66f1afe7a5ca1c0eebf2b","signature":"dd43f86fca716ef3c1a2fd574d00a61a05e6d334eab5fdd1bfb53c6201477fe0","impliedFormat":99},{"version":"6431efa08dc23e97b642b9f97122a12e0571c1e0e05b814556db0e0b33339193","signature":"be15beb2ecb736061a2af65fbb6551f0b5206eec60b69205a1f0e69c57065b98","impliedFormat":99},{"version":"8d50269506b77c5741751e29bb6c2b65813f2a451440c81364242f30edc4106d","signature":"886ac28bf70841b4a258d928334a2c52ffb7f73cba31a1528f81f15c11ade0d0","impliedFormat":99},{"version":"8f699f649d31e5dc83a7953182d122ed3fb6832df619a7d5ef99ee757bc6e74e","signature":"bd0aca2cd8b4f4a985cd1932cf97720e63c0653440673ce6394c173537e44f49","impliedFormat":99},{"version":"8cca355e9e8c5a98f05810098652b26ed62a544bd7b090eb1438e1e5a78440b2","signature":"22c55f433266d1aa96849fe4207851c9f682926b236bbb2c9fb2d681ebc3862e","impliedFormat":99},{"version":"11c1361be4c0a59f7d7fff1d9bed94a1eedb933a3300d947ddf7d4d78dcf78e4","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1}],"root":[[81,86],[103,110],[113,123]],"options":{"allowImportingTsExtensions":true,"allowJs":false,"allowUnreachableCode":false,"allowUnusedLabels":false,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"outDir":"./esm","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.generate-typings.tsbuildinfo"},"referencedMap":[[102,1],[101,2],[177,3],[178,3],[179,4],[126,5],[180,6],[181,7],[182,8],[124,2],[183,9],[184,10],[185,11],[186,12],[187,13],[188,14],[189,14],[190,15],[191,16],[192,17],[193,18],[127,2],[125,2],[194,19],[195,20],[196,21],[230,22],[197,23],[198,2],[199,24],[200,25],[201,26],[202,27],[203,28],[204,29],[205,30],[206,31],[207,32],[208,32],[209,33],[210,2],[211,34],[212,35],[214,36],[213,37],[215,38],[216,39],[217,40],[218,41],[219,42],[220,43],[221,44],[222,45],[223,46],[224,47],[225,48],[226,49],[227,50],[128,2],[129,51],[130,2],[131,2],[173,52],[174,53],[175,2],[176,38],[228,54],[229,55],[98,56],[99,57],[97,58],[100,59],[94,60],[95,61],[96,62],[112,63],[111,2],[88,2],[90,60],[91,60],[93,64],[92,60],[87,65],[89,66],[79,2],[80,2],[14,2],[13,2],[2,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[3,2],[23,2],[24,2],[4,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[5,2],[33,2],[34,2],[35,2],[36,2],[6,2],[40,2],[37,2],[38,2],[39,2],[41,2],[7,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[8,2],[52,2],[49,2],[50,2],[51,2],[53,2],[9,2],[54,2],[55,2],[56,2],[58,2],[57,2],[59,2],[60,2],[10,2],[61,2],[62,2],[63,2],[11,2],[64,2],[65,2],[66,2],[67,2],[68,2],[1,2],[69,2],[70,2],[12,2],[74,2],[72,2],[77,2],[76,2],[71,2],[75,2],[73,2],[78,2],[149,67],[161,68],[147,69],[162,70],[171,71],[138,72],[139,73],[137,74],[170,75],[165,76],[169,77],[141,78],[158,79],[140,80],[168,81],[135,82],[136,76],[142,83],[143,2],[148,84],[146,83],[133,85],[172,86],[163,87],[152,88],[151,83],[153,89],[156,90],[150,91],[154,92],[166,75],[144,93],[145,94],[157,95],[134,70],[160,96],[159,83],[155,97],[164,2],[132,2],[167,98],[123,99],[83,100],[82,101],[84,102],[85,101],[86,101],[103,103],[104,104],[105,104],[110,105],[117,106],[118,107],[122,108],[116,2],[119,109],[121,110],[120,111],[113,112],[106,101],[115,113],[107,114],[108,115],[109,116],[81,2],[114,101]],"version":"5.9.3"}
|