@williamthorsen/release-kit 0.2.1

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 ADDED
@@ -0,0 +1,54 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [release-kit-v0.2.1] - 2026-03-09
6
+
7
+ ### Tooling
8
+
9
+ - Root|tooling: Make release-kit public
10
+
11
+ ## [release-kit-v0.2.0] - 2026-03-09
12
+
13
+ ### Documentation
14
+
15
+ - Release-kit|docs: Rewrite README as adoption guide
16
+
17
+ 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`.
18
+
19
+ ### Tooling
20
+
21
+ - #13 root|tooling: Migrate from changesets to release-kit (#16)
22
+
23
+ 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.
24
+
25
+ - #10 root|tooling: Publish release-kit to GitHub Package Registry (#17)
26
+
27
+ Adds release infrastructure for the toolbelt monorepo: a GitHub Actions `workflow_dispatch` workflow that automates the full release cycle (prepare, commit, tag, push) on `main`, convenience `release:prepare` scripts in the release-kit package, and a `RELEASING.md` documenting the workflow-based release process.
28
+
29
+ - #10 root|tooling: Streamline release-kit adoption
30
+
31
+ ## [tools-v3.0.0] - 2026-03-08
32
+
33
+ ### Features
34
+
35
+ - #7 release|feat: Create release-kit package (#9)
36
+
37
+ 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`.
38
+
39
+ 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.
40
+
41
+ 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.
42
+
43
+ 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
44
+ verification.
45
+
46
+ 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.
47
+
48
+ 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.
49
+
50
+ ### Refactoring
51
+
52
+ - Release-kit|refactor: Inline isKeyOf and remove toolbelt.objects dependency
53
+
54
+ <!-- generated by git-cliff -->
package/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ UNLICENSED SOFTWARE
2
+
3
+ Copyright (c) 2023-2025 William Thorsen
4
+
5
+ All rights reserved.
6
+
7
+ This software is provided 'as-is', without any express or implied warranty. No rights are granted to use, copy, modify, or distribute this software for any purpose. For full legal details, consult a legal expert. This notice may not be removed or altered from any distribution.
package/README.md ADDED
@@ -0,0 +1,395 @@
1
+ # @williamthorsen/release-kit
2
+
3
+ Version-bumping and changelog-generation toolkit for release workflows.
4
+
5
+ This package extracts the shared release-preparation logic from the `skypilot-site` and `devtools/afg` repositories into a reusable library. It provides functions for parsing commits, determining version bumps, updating `package.json` files, and generating changelogs with `git-cliff`.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ pnpm add -D @williamthorsen/release-kit git-cliff
11
+ ```
12
+
13
+ Since this package is published to GitHub Packages, configure your `.npmrc`:
14
+
15
+ ```ini
16
+ @williamthorsen:registry=https://npm.pkg.github.com
17
+ ```
18
+
19
+ ## Quick start
20
+
21
+ 1. Install `@williamthorsen/release-kit` and `git-cliff` as dev dependencies
22
+ 2. Create `scripts/release-prepare.ts` and `scripts/release.config.ts` (see examples below)
23
+ 3. Add `release:prepare` scripts to `package.json`
24
+ 4. Copy `cliff.toml.template` to your repo root as `cliff.toml`
25
+ 5. Add the GitHub Actions release workflow
26
+
27
+ ## Configuration
28
+
29
+ ### Single-package repo
30
+
31
+ Create `scripts/release.config.ts`:
32
+
33
+ ```typescript
34
+ import { DEFAULT_WORK_TYPES } from '@williamthorsen/release-kit';
35
+ import type { ReleaseConfig } from '@williamthorsen/release-kit';
36
+
37
+ export const config: ReleaseConfig = {
38
+ tagPrefix: 'v',
39
+ packageFiles: ['package.json'],
40
+ changelogPaths: ['.'],
41
+ workTypes: [...DEFAULT_WORK_TYPES],
42
+ formatCommand: 'pnpm run fmt',
43
+ };
44
+ ```
45
+
46
+ ### Monorepo
47
+
48
+ Create `scripts/release.config.ts`:
49
+
50
+ ```typescript
51
+ import { DEFAULT_WORK_TYPES } from '@williamthorsen/release-kit';
52
+ import type { MonorepoReleaseConfig } from '@williamthorsen/release-kit';
53
+
54
+ function component(dir: string) {
55
+ return {
56
+ tagPrefix: `${dir}-v`,
57
+ packageFiles: [`packages/${dir}/package.json`],
58
+ changelogPaths: [`packages/${dir}`],
59
+ paths: [`packages/${dir}/**`],
60
+ };
61
+ }
62
+
63
+ export const config: MonorepoReleaseConfig = {
64
+ components: [component('my-lib'), component('my-cli')],
65
+ workTypes: [...DEFAULT_WORK_TYPES],
66
+ formatCommand: 'pnpm run fmt',
67
+ };
68
+ ```
69
+
70
+ ### ReleaseConfig reference
71
+
72
+ | Field | Type | Required | Description |
73
+ | ----------------- | ------------------ | -------- | ------------------------------------------------------------------ |
74
+ | `tagPrefix` | `string` | Yes | Git tag prefix for version tags (e.g., `'v'`) |
75
+ | `packageFiles` | `string[]` | Yes | Paths to `package.json` files to bump |
76
+ | `changelogPaths` | `string[]` | Yes | Directories in which to generate changelogs |
77
+ | `workTypes` | `WorkTypeConfig[]` | Yes | Ordered list of work type configurations for commit categorization |
78
+ | `formatCommand` | `string` | No | Shell command to run after changelog generation |
79
+ | `cliffConfigPath` | `string` | No | Path to `cliff.toml` (defaults to `'cliff.toml'`) |
80
+
81
+ ### MonorepoReleaseConfig reference
82
+
83
+ | Field | Type | Required | Description |
84
+ | --------------- | ------------------- | -------- | ----------------------------------------------------- |
85
+ | `components` | `ComponentConfig[]` | Yes | Per-component config (tagPrefix, packageFiles, paths) |
86
+ | `workTypes` | `WorkTypeConfig[]` | Yes | Shared work type configurations |
87
+ | `formatCommand` | `string` | No | Shell command to run after changelog generation |
88
+
89
+ ## Release script
90
+
91
+ Create `scripts/release-prepare.ts`:
92
+
93
+ ### Single-package version
94
+
95
+ ```typescript
96
+ import { releasePrepare } from '@williamthorsen/release-kit';
97
+ import type { ReleaseType } from '@williamthorsen/release-kit';
98
+ import { config } from './release.config.ts';
99
+
100
+ const VALID_BUMP_TYPES: readonly string[] = ['major', 'minor', 'patch'];
101
+
102
+ function parseArgs(): { dryRun: boolean; bumpOverride?: ReleaseType } {
103
+ const args = process.argv.slice(2);
104
+ let dryRun = false;
105
+ let bumpOverride: ReleaseType | undefined;
106
+
107
+ for (const arg of args) {
108
+ if (arg === '--dry-run') dryRun = true;
109
+ else if (arg.startsWith('--bump=')) {
110
+ const value = arg.slice('--bump='.length);
111
+ if (!VALID_BUMP_TYPES.includes(value)) {
112
+ console.error(`Invalid bump type "${value}". Must be: ${VALID_BUMP_TYPES.join(', ')}`);
113
+ process.exit(1);
114
+ }
115
+ bumpOverride = value as ReleaseType;
116
+ }
117
+ }
118
+
119
+ return { dryRun, bumpOverride };
120
+ }
121
+
122
+ const { dryRun, bumpOverride } = parseArgs();
123
+ releasePrepare(config, { dryRun, ...(bumpOverride ? { bumpOverride } : {}) });
124
+ ```
125
+
126
+ ### Monorepo version
127
+
128
+ ```typescript
129
+ import { releasePrepareMono } from '@williamthorsen/release-kit';
130
+ import type { ReleaseType } from '@williamthorsen/release-kit';
131
+ import { config } from './release.config.ts';
132
+
133
+ const VALID_BUMP_TYPES: readonly string[] = ['major', 'minor', 'patch'];
134
+
135
+ function parseArgs(): { dryRun: boolean; bumpOverride?: ReleaseType; only?: string[] } {
136
+ const args = process.argv.slice(2);
137
+ let dryRun = false;
138
+ let bumpOverride: ReleaseType | undefined;
139
+ let only: string[] | undefined;
140
+
141
+ for (const arg of args) {
142
+ if (arg === '--dry-run') dryRun = true;
143
+ else if (arg.startsWith('--bump=')) {
144
+ const value = arg.slice('--bump='.length);
145
+ if (!VALID_BUMP_TYPES.includes(value)) {
146
+ console.error(`Invalid bump type "${value}". Must be: ${VALID_BUMP_TYPES.join(', ')}`);
147
+ process.exit(1);
148
+ }
149
+ bumpOverride = value as ReleaseType;
150
+ } else if (arg.startsWith('--only=')) {
151
+ only = arg.slice('--only='.length).split(',');
152
+ }
153
+ }
154
+
155
+ return { dryRun, bumpOverride, only };
156
+ }
157
+
158
+ const { dryRun, bumpOverride, only } = parseArgs();
159
+
160
+ let effectiveConfig = config;
161
+ if (only) {
162
+ const filtered = config.components.filter((c) => {
163
+ const name = c.tagPrefix.replace(/-v$/, '');
164
+ return only.includes(name);
165
+ });
166
+ effectiveConfig = { ...config, components: filtered };
167
+ }
168
+
169
+ releasePrepareMono(effectiveConfig, { dryRun, ...(bumpOverride ? { bumpOverride } : {}) });
170
+ ```
171
+
172
+ ### package.json scripts
173
+
174
+ ```json
175
+ {
176
+ "scripts": {
177
+ "release:prepare": "tsx scripts/release-prepare.ts",
178
+ "release:prepare:dry": "tsx scripts/release-prepare.ts --dry-run"
179
+ }
180
+ }
181
+ ```
182
+
183
+ ## GitHub Actions workflow
184
+
185
+ ### Single-package repo
186
+
187
+ ```yaml
188
+ # .github/workflows/release.yaml
189
+ name: Release
190
+
191
+ on:
192
+ workflow_dispatch:
193
+ inputs:
194
+ bump:
195
+ description: 'Override bump type (leave empty to auto-detect)'
196
+ required: false
197
+ type: choice
198
+ options:
199
+ - ''
200
+ - patch
201
+ - minor
202
+ - major
203
+
204
+ permissions:
205
+ contents: write
206
+
207
+ jobs:
208
+ release:
209
+ runs-on: ubuntu-latest
210
+ steps:
211
+ - uses: actions/checkout@v4
212
+ with:
213
+ fetch-depth: 0
214
+ token: ${{ secrets.GITHUB_TOKEN }}
215
+
216
+ - uses: pnpm/action-setup@v4
217
+
218
+ - uses: actions/setup-node@v4
219
+ with:
220
+ node-version: '24'
221
+ cache: 'pnpm'
222
+
223
+ - run: pnpm install
224
+
225
+ - name: Run release preparation
226
+ id: prepare
227
+ run: |
228
+ ARGS=""
229
+ if [ -n "${{ inputs.bump }}" ]; then
230
+ ARGS="--bump=${{ inputs.bump }}"
231
+ fi
232
+ pnpm run release:prepare $ARGS
233
+ VERSION=$(node -p "require('./package.json').version")
234
+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
235
+
236
+ - name: Check for changes
237
+ id: check
238
+ run: |
239
+ if git diff --quiet; then
240
+ echo "changed=false" >> "$GITHUB_OUTPUT"
241
+ echo "No release-worthy changes found."
242
+ else
243
+ echo "changed=true" >> "$GITHUB_OUTPUT"
244
+ fi
245
+
246
+ - name: Commit, tag, and push
247
+ if: steps.check.outputs.changed == 'true'
248
+ run: |
249
+ git config user.name "github-actions[bot]"
250
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
251
+ git add -A
252
+ git commit -m "release: v${{ steps.prepare.outputs.version }}"
253
+ git tag "v${{ steps.prepare.outputs.version }}"
254
+ git push origin main "v${{ steps.prepare.outputs.version }}"
255
+ ```
256
+
257
+ ### Monorepo
258
+
259
+ ```yaml
260
+ # .github/workflows/release.yaml
261
+ name: Release
262
+
263
+ on:
264
+ workflow_dispatch:
265
+ inputs:
266
+ only:
267
+ description: 'Components to release (comma-separated, leave empty for all)'
268
+ required: false
269
+ type: string
270
+ bump:
271
+ description: 'Override bump type (leave empty to auto-detect)'
272
+ required: false
273
+ type: choice
274
+ options:
275
+ - ''
276
+ - patch
277
+ - minor
278
+ - major
279
+
280
+ permissions:
281
+ contents: write
282
+
283
+ jobs:
284
+ release:
285
+ runs-on: ubuntu-latest
286
+ steps:
287
+ - uses: actions/checkout@v4
288
+ with:
289
+ fetch-depth: 0
290
+ token: ${{ secrets.GITHUB_TOKEN }}
291
+
292
+ - uses: pnpm/action-setup@v4
293
+
294
+ - uses: actions/setup-node@v4
295
+ with:
296
+ node-version: '24'
297
+ cache: 'pnpm'
298
+
299
+ - run: pnpm install
300
+
301
+ - name: Run release preparation
302
+ run: |
303
+ ARGS=""
304
+ if [ -n "${{ inputs.only }}" ]; then
305
+ ARGS="$ARGS --only=${{ inputs.only }}"
306
+ fi
307
+ if [ -n "${{ inputs.bump }}" ]; then
308
+ ARGS="$ARGS --bump=${{ inputs.bump }}"
309
+ fi
310
+ pnpm run release:prepare $ARGS
311
+
312
+ - name: Check for changes
313
+ id: check
314
+ run: |
315
+ if git diff --quiet; then
316
+ echo "changed=false" >> "$GITHUB_OUTPUT"
317
+ echo "No release-worthy changes found."
318
+ else
319
+ echo "changed=true" >> "$GITHUB_OUTPUT"
320
+ fi
321
+
322
+ - name: Determine release tags
323
+ if: steps.check.outputs.changed == 'true'
324
+ id: tags
325
+ run: |
326
+ TAGS=""
327
+ for pkg in $(git diff --name-only -- 'packages/*/package.json'); do
328
+ DIR=$(echo "$pkg" | cut -d/ -f2)
329
+ VERSION=$(node -p "require('./$pkg').version")
330
+ TAGS="$TAGS ${DIR}-v${VERSION}"
331
+ done
332
+ echo "tags=$TAGS" >> "$GITHUB_OUTPUT"
333
+ echo "Releasing:$TAGS"
334
+
335
+ - name: Commit, tag, and push
336
+ if: steps.check.outputs.changed == 'true'
337
+ run: |
338
+ git config user.name "github-actions[bot]"
339
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
340
+ git add -A
341
+ git commit -m "release: ${{ steps.tags.outputs.tags }}"
342
+ for TAG in ${{ steps.tags.outputs.tags }}; do
343
+ git tag "$TAG"
344
+ done
345
+ git push origin main ${{ steps.tags.outputs.tags }}
346
+ ```
347
+
348
+ ## Triggering a release
349
+
350
+ ```sh
351
+ # Single-package repo
352
+ gh workflow run release.yaml
353
+ gh workflow run release.yaml -f bump=minor
354
+
355
+ # Monorepo: all components
356
+ gh workflow run release.yaml
357
+
358
+ # Monorepo: specific component(s)
359
+ gh workflow run release.yaml -f only=my-lib
360
+ gh workflow run release.yaml -f only=my-lib,my-cli -f bump=minor
361
+ ```
362
+
363
+ ## cliff.toml setup
364
+
365
+ The package includes a `cliff.toml.template` with a generic git-cliff configuration that:
366
+
367
+ - Strips issue-ticket prefixes matching `^[A-Z]+-\d+\s+` (e.g., `TOOL-123 `, `AFG-456 `)
368
+ - Handles both `type: description` and `workspace|type: description` commit formats
369
+ - Groups commits by work type into changelog sections
370
+
371
+ Copy it to your repo root:
372
+
373
+ ```bash
374
+ cp node_modules/@williamthorsen/release-kit/cliff.toml.template cliff.toml
375
+ ```
376
+
377
+ Then customize as needed for your project.
378
+
379
+ ## External dependencies
380
+
381
+ This package shells out to two external tools:
382
+
383
+ - **`git`** — must be available on `PATH`. Used to find tags and retrieve commit history.
384
+ - **`git-cliff`** — must be available on `PATH`. Add `git-cliff` as a dev dependency to make it available in CI.
385
+
386
+ ## Migration from changesets
387
+
388
+ 1. Add `@williamthorsen/release-kit` and `git-cliff` as dev dependencies.
389
+ 2. Remove `@changesets/cli` from dev dependencies.
390
+ 3. Delete the `.changeset/` directory.
391
+ 4. Create `scripts/release-prepare.ts` and `scripts/release.config.ts` (see examples above).
392
+ 5. Replace `changeset:*` scripts in `package.json` with `release:prepare` scripts.
393
+ 6. Copy `cliff.toml.template` to your repo root as `cliff.toml`.
394
+ 7. Add the GitHub Actions release workflow.
395
+ 8. Create an initial version tag for each package (e.g., `git tag v1.0.0` or `git tag my-lib-v1.0.0`).
@@ -0,0 +1,73 @@
1
+ # git-cliff configuration
2
+ # See https://git-cliff.org/docs/configuration
3
+
4
+ [changelog]
5
+ # changelog header
6
+ header = """
7
+ # Changelog\n
8
+ All notable changes to this project will be documented in this file.\n
9
+ """
10
+ # template for the changelog body
11
+ body = """
12
+ {% if version %}\
13
+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
14
+ {% else %}\
15
+ ## [unreleased]
16
+ {% endif %}\
17
+ {% for group, commits in commits | group_by(attribute="group") %}
18
+ ### {{ group | striptags | trim | upper_first }}
19
+ {% for commit in commits %}
20
+ - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
21
+ {% if commit.breaking %}[**breaking**] {% endif %}\
22
+ {{ commit.message | upper_first }}\
23
+ {% endfor %}
24
+ {% endfor %}\n
25
+ """
26
+ # template for the changelog footer
27
+ footer = """
28
+ <!-- generated by git-cliff -->
29
+ """
30
+ # remove the leading and trailing whitespace from the templates
31
+ trim = true
32
+
33
+ [git]
34
+ # parse the commits based on https://www.conventionalcommits.org
35
+ conventional_commits = false
36
+ # filter out the commits that are not conventional
37
+ filter_unconventional = false
38
+ # process each line of a commit as an individual commit
39
+ split_commits = false
40
+ # regex for preprocessing the commit messages
41
+ commit_preprocessors = [
42
+ # Strip issue-ticket prefixes like "TOOL-123 " or "AFG-456 "
43
+ { pattern = '^[A-Z]+-\d+\s+', replace = "" },
44
+ ]
45
+ # regex for parsing and grouping commits
46
+ # Supports both "type: description" and "workspace|type: description" formats
47
+ commit_parsers = [
48
+ { message = "^.*\\|?fix(!)?:", group = "Bug fixes" },
49
+ { message = "^.*\\|?feat(!)?:", group = "Features" },
50
+ { message = "^.*\\|?feature(!)?:", group = "Features" },
51
+ { message = "^.*\\|?internal(!)?:", group = "Internal" },
52
+ { message = "^.*\\|?refactor(!)?:", group = "Refactoring" },
53
+ { message = "^.*\\|?tests?(!)?:", group = "Tests" },
54
+ { message = "^.*\\|?tooling(!)?:", group = "Tooling" },
55
+ { message = "^.*\\|?ci(!)?:", group = "CI" },
56
+ { message = "^.*\\|?deps?(!)?:", group = "Dependencies" },
57
+ { message = "^.*\\|?docs?(!)?:", group = "Documentation" },
58
+ { message = "^.*\\|?fmt(!)?:", group = "Formatting" },
59
+ ]
60
+ # protect breaking changes from being skipped due to matching a skipping commit_parser
61
+ protect_breaking_commits = false
62
+ # filter out the commits that are not matched by commit parsers
63
+ filter_commits = true
64
+ # regex for matching git tags
65
+ tag_pattern = "v[0-9].*"
66
+ # regex for skipping tags
67
+ skip_tags = ""
68
+ # regex for ignoring tags
69
+ ignore_tags = ""
70
+ # sort the tags topologically
71
+ topo_order = false
72
+ # sort the commits inside sections by oldest/newest order
73
+ sort_commits = "oldest"
@@ -0,0 +1 @@
1
+ 8a18e5e0175c0a255102ec4b295d04d399b7b59bad01debc291efd33e7abf5c2
@@ -0,0 +1,2 @@
1
+ import type { ReleaseType } from './types.ts';
2
+ export declare function bumpAllVersions(packageFiles: readonly string[], releaseType: ReleaseType, dryRun: boolean): string;
@@ -0,0 +1,51 @@
1
+ import { readFileSync, writeFileSync } from "node:fs";
2
+ import { bumpVersion } from "./bumpVersion.js";
3
+ function isPackageJson(value) {
4
+ return typeof value === "object" && value !== null && "version" in value && typeof value.version === "string";
5
+ }
6
+ function bumpAllVersions(packageFiles, releaseType, dryRun) {
7
+ const firstFile = packageFiles[0];
8
+ if (firstFile === void 0) {
9
+ throw new Error("No package files specified");
10
+ }
11
+ const firstPkg = readPackageJson(firstFile);
12
+ const currentVersion = firstPkg.version;
13
+ const newVersion = bumpVersion(currentVersion, releaseType);
14
+ console.info(`Bumping version: ${currentVersion} -> ${newVersion} (${releaseType})`);
15
+ for (const filePath of packageFiles) {
16
+ if (dryRun) {
17
+ console.info(` [dry-run] Would bump ${filePath}`);
18
+ continue;
19
+ }
20
+ const pkg = readPackageJson(filePath);
21
+ pkg.version = newVersion;
22
+ try {
23
+ writeFileSync(filePath, JSON.stringify(pkg, null, 2) + "\n", "utf8");
24
+ } catch (error) {
25
+ throw new Error(`Failed to write ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
26
+ }
27
+ console.info(` Bumped ${filePath}`);
28
+ }
29
+ return newVersion;
30
+ }
31
+ function readPackageJson(filePath) {
32
+ let content;
33
+ try {
34
+ content = readFileSync(filePath, "utf8");
35
+ } catch (error) {
36
+ throw new Error(`Failed to read ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
37
+ }
38
+ let parsed;
39
+ try {
40
+ parsed = JSON.parse(content);
41
+ } catch (error) {
42
+ throw new Error(`Failed to parse JSON in ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
43
+ }
44
+ if (!isPackageJson(parsed)) {
45
+ throw new Error(`No valid 'version' field found in ${filePath}`);
46
+ }
47
+ return parsed;
48
+ }
49
+ export {
50
+ bumpAllVersions
51
+ };
@@ -0,0 +1,2 @@
1
+ import type { ReleaseType } from './types.ts';
2
+ export declare function bumpVersion(version: string, releaseType: ReleaseType): string;
@@ -0,0 +1,26 @@
1
+ function bumpVersion(version, releaseType) {
2
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)$/);
3
+ if (!match) {
4
+ throw new Error(`Invalid semver version: '${version}'`);
5
+ }
6
+ const major = match[1];
7
+ const minor = match[2];
8
+ const patch = match[3];
9
+ if (major === void 0 || minor === void 0 || patch === void 0) {
10
+ throw new Error(`Invalid semver version: '${version}'`);
11
+ }
12
+ const majorNum = Number.parseInt(major, 10);
13
+ const minorNum = Number.parseInt(minor, 10);
14
+ const patchNum = Number.parseInt(patch, 10);
15
+ switch (releaseType) {
16
+ case "major":
17
+ return `${majorNum + 1}.0.0`;
18
+ case "minor":
19
+ return `${majorNum}.${minorNum + 1}.0`;
20
+ case "patch":
21
+ return `${majorNum}.${minorNum}.${patchNum + 1}`;
22
+ }
23
+ }
24
+ export {
25
+ bumpVersion
26
+ };
@@ -0,0 +1,2 @@
1
+ import type { WorkTypeConfig } from './types.ts';
2
+ export declare const DEFAULT_WORK_TYPES: readonly WorkTypeConfig[];
@@ -0,0 +1,15 @@
1
+ const DEFAULT_WORK_TYPES = [
2
+ { type: "fix", header: "Bug fixes", bump: "patch", aliases: ["bugfix"] },
3
+ { type: "feat", header: "Features", bump: "minor", aliases: ["feature"] },
4
+ { type: "internal", header: "Internal", bump: "patch" },
5
+ { type: "refactor", header: "Refactoring", bump: "patch" },
6
+ { type: "tests", header: "Tests", bump: "patch", aliases: ["test"] },
7
+ { type: "tooling", header: "Tooling", bump: "patch" },
8
+ { type: "ci", header: "CI", bump: "patch" },
9
+ { type: "deps", header: "Dependencies", bump: "patch", aliases: ["dep"] },
10
+ { type: "docs", header: "Documentation", bump: "patch", aliases: ["doc"] },
11
+ { type: "fmt", header: "Formatting", bump: "patch" }
12
+ ];
13
+ export {
14
+ DEFAULT_WORK_TYPES
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ParsedCommit, ReleaseType, WorkTypeConfig } from './types.ts';
2
+ export declare function determineBumpType(commits: readonly ParsedCommit[], workTypes: readonly WorkTypeConfig[]): ReleaseType | undefined;
@@ -0,0 +1,38 @@
1
+ const RELEASE_PRIORITY = {
2
+ major: 3,
3
+ minor: 2,
4
+ patch: 1
5
+ };
6
+ function determineBumpType(commits, workTypes) {
7
+ const typeToBump = {};
8
+ for (const config of workTypes) {
9
+ typeToBump[config.type] = config.bump;
10
+ }
11
+ let highestPriority = 0;
12
+ let result;
13
+ for (const commit of commits) {
14
+ if (commit.breaking) {
15
+ return "major";
16
+ }
17
+ const commitType = commit.type;
18
+ if (!isKeyOf(commitType, typeToBump)) {
19
+ continue;
20
+ }
21
+ const bump = typeToBump[commitType];
22
+ if (bump === void 0) {
23
+ continue;
24
+ }
25
+ const priority = RELEASE_PRIORITY[bump];
26
+ if (priority > highestPriority) {
27
+ highestPriority = priority;
28
+ result = bump;
29
+ }
30
+ }
31
+ return result;
32
+ }
33
+ function isKeyOf(key, obj) {
34
+ return Object.hasOwn(obj, key);
35
+ }
36
+ export {
37
+ determineBumpType
38
+ };
@@ -0,0 +1,6 @@
1
+ import type { ReleaseConfig } from './types.ts';
2
+ export interface GenerateChangelogOptions {
3
+ includePaths?: string[];
4
+ }
5
+ export declare function generateChangelog(config: Pick<ReleaseConfig, 'cliffConfigPath'>, changelogPath: string, tag: string, dryRun: boolean, options?: GenerateChangelogOptions): void;
6
+ export declare function generateChangelogs(config: ReleaseConfig, tag: string, dryRun: boolean): void;
@@ -0,0 +1,30 @@
1
+ import { execFileSync } from "node:child_process";
2
+ function generateChangelog(config, changelogPath, tag, dryRun, options) {
3
+ const cliffConfigPath = config.cliffConfigPath ?? "cliff.toml";
4
+ const outputFile = `${changelogPath}/CHANGELOG.md`;
5
+ const args = ["--config", cliffConfigPath, "--output", outputFile, "--tag", tag];
6
+ for (const includePath of options?.includePaths ?? []) {
7
+ args.push("--include-path", includePath);
8
+ }
9
+ if (dryRun) {
10
+ console.info(` [dry-run] Would run: git-cliff ${args.join(" ")}`);
11
+ return;
12
+ }
13
+ console.info(` Generating changelog: ${outputFile}`);
14
+ try {
15
+ execFileSync("git-cliff", args, { stdio: "inherit" });
16
+ } catch (error) {
17
+ throw new Error(
18
+ `Failed to generate changelog for ${outputFile}: ${error instanceof Error ? error.message : String(error)}`
19
+ );
20
+ }
21
+ }
22
+ function generateChangelogs(config, tag, dryRun) {
23
+ for (const changelogPath of config.changelogPaths) {
24
+ generateChangelog(config, changelogPath, tag, dryRun);
25
+ }
26
+ }
27
+ export {
28
+ generateChangelog,
29
+ generateChangelogs
30
+ };
@@ -0,0 +1,5 @@
1
+ import type { Commit } from './types.ts';
2
+ export declare function getCommitsSinceTarget(tagPrefix: string, paths?: string[]): {
3
+ tag: string | undefined;
4
+ commits: Commit[];
5
+ };
@@ -0,0 +1,61 @@
1
+ import { execFileSync } from "node:child_process";
2
+ const FIELD_SEPARATOR = "";
3
+ function isNoTagError(err) {
4
+ return typeof err === "object" && err !== null && "status" in err && err.status === 128;
5
+ }
6
+ function errorMessage(err) {
7
+ return err instanceof Error ? err.message : String(err);
8
+ }
9
+ function findLatestTag(tagPrefix) {
10
+ try {
11
+ const tagResult = execFileSync("git", ["describe", "--tags", "--abbrev=0", `--match=${tagPrefix}*`], {
12
+ encoding: "utf8",
13
+ stdio: ["pipe", "pipe", "pipe"]
14
+ }).trim();
15
+ return tagResult || void 0;
16
+ } catch (error) {
17
+ if (isNoTagError(error)) {
18
+ return void 0;
19
+ }
20
+ throw new Error(`Failed to run 'git describe': ${errorMessage(error)}`);
21
+ }
22
+ }
23
+ function parseLogOutput(logOutput) {
24
+ const commits = [];
25
+ for (const line of logOutput.split("\n")) {
26
+ const trimmedLine = line.trim();
27
+ if (trimmedLine === "") {
28
+ continue;
29
+ }
30
+ const [message, hash] = trimmedLine.split(FIELD_SEPARATOR);
31
+ if (message !== void 0 && hash !== void 0) {
32
+ commits.push({ message, hash });
33
+ }
34
+ }
35
+ return commits;
36
+ }
37
+ function getCommitsSinceTarget(tagPrefix, paths) {
38
+ const tag = findLatestTag(tagPrefix);
39
+ const range = tag === void 0 ? "HEAD" : `${tag}..HEAD`;
40
+ const format = `%s${FIELD_SEPARATOR}%H`;
41
+ const args = ["log", range, `--pretty=format:${format}`];
42
+ if (paths !== void 0 && paths.length > 0) {
43
+ args.push("--", ...paths);
44
+ }
45
+ let logOutput;
46
+ try {
47
+ logOutput = execFileSync("git", args, {
48
+ encoding: "utf8",
49
+ stdio: ["pipe", "pipe", "pipe"]
50
+ }).trim();
51
+ } catch (error) {
52
+ throw new Error(`Failed to run 'git log' for range '${range}': ${errorMessage(error)}`);
53
+ }
54
+ if (logOutput === "") {
55
+ return { tag, commits: [] };
56
+ }
57
+ return { tag, commits: parseLogOutput(logOutput) };
58
+ }
59
+ export {
60
+ getCommitsSinceTarget
61
+ };
@@ -0,0 +1,12 @@
1
+ export type { GenerateChangelogOptions } from './generateChangelogs.ts';
2
+ export type { ReleasePrepareOptions } from './releasePrepare.ts';
3
+ export type { Commit, ComponentConfig, MonorepoReleaseConfig, ParsedCommit, ReleaseConfig, ReleaseType, WorkTypeConfig, } from './types.ts';
4
+ export { DEFAULT_WORK_TYPES } from './defaults.ts';
5
+ export { bumpAllVersions } from './bumpAllVersions.ts';
6
+ export { bumpVersion } from './bumpVersion.ts';
7
+ export { determineBumpType } from './determineBumpType.ts';
8
+ export { generateChangelog, generateChangelogs } from './generateChangelogs.ts';
9
+ export { getCommitsSinceTarget } from './getCommitsSinceTarget.ts';
10
+ export { parseCommitMessage } from './parseCommitMessage.ts';
11
+ export { releasePrepare } from './releasePrepare.ts';
12
+ export { releasePrepareMono } from './releasePrepareMono.ts';
@@ -0,0 +1,21 @@
1
+ import { DEFAULT_WORK_TYPES } from "./defaults.js";
2
+ import { bumpAllVersions } from "./bumpAllVersions.js";
3
+ import { bumpVersion } from "./bumpVersion.js";
4
+ import { determineBumpType } from "./determineBumpType.js";
5
+ import { generateChangelog, generateChangelogs } from "./generateChangelogs.js";
6
+ import { getCommitsSinceTarget } from "./getCommitsSinceTarget.js";
7
+ import { parseCommitMessage } from "./parseCommitMessage.js";
8
+ import { releasePrepare } from "./releasePrepare.js";
9
+ import { releasePrepareMono } from "./releasePrepareMono.js";
10
+ export {
11
+ DEFAULT_WORK_TYPES,
12
+ bumpAllVersions,
13
+ bumpVersion,
14
+ determineBumpType,
15
+ generateChangelog,
16
+ generateChangelogs,
17
+ getCommitsSinceTarget,
18
+ parseCommitMessage,
19
+ releasePrepare,
20
+ releasePrepareMono
21
+ };
@@ -0,0 +1,2 @@
1
+ import type { ParsedCommit, WorkTypeConfig } from './types.ts';
2
+ export declare function parseCommitMessage(message: string, hash: string, workTypes: readonly WorkTypeConfig[], workspaceAliases?: Record<string, string>): ParsedCommit | undefined;
@@ -0,0 +1,46 @@
1
+ function parseCommitMessage(message, hash, workTypes, workspaceAliases) {
2
+ const match = message.match(/^(?:([^|]+)\|)?(\w+)(!)?:\s*(.*)$/);
3
+ if (!match) {
4
+ return void 0;
5
+ }
6
+ const workspace = match[1];
7
+ const rawType = match[2];
8
+ const breakingMarker = match[3];
9
+ const description = match[4];
10
+ if (rawType === void 0 || description === void 0) {
11
+ return void 0;
12
+ }
13
+ const resolvedType = resolveType(rawType, workTypes);
14
+ if (resolvedType === void 0) {
15
+ return void 0;
16
+ }
17
+ const breaking = breakingMarker === "!" || message.includes("BREAKING CHANGE:");
18
+ const resolvedWorkspace = workspace !== void 0 && workspaceAliases !== void 0 ? workspaceAliases[workspace] ?? workspace : workspace;
19
+ return {
20
+ message,
21
+ hash,
22
+ type: resolvedType,
23
+ description,
24
+ breaking,
25
+ ...resolvedWorkspace !== void 0 && { workspace: resolvedWorkspace }
26
+ };
27
+ }
28
+ function resolveType(rawType, workTypes) {
29
+ const lowered = rawType.toLowerCase();
30
+ for (const config of workTypes) {
31
+ if (config.type === lowered) {
32
+ return config.type;
33
+ }
34
+ if (config.aliases !== void 0) {
35
+ for (const alias of config.aliases) {
36
+ if (alias === lowered) {
37
+ return config.type;
38
+ }
39
+ }
40
+ }
41
+ }
42
+ return void 0;
43
+ }
44
+ export {
45
+ parseCommitMessage
46
+ };
@@ -0,0 +1,6 @@
1
+ import type { ReleaseConfig, ReleaseType } from './types.ts';
2
+ export interface ReleasePrepareOptions {
3
+ dryRun: boolean;
4
+ bumpOverride?: ReleaseType;
5
+ }
6
+ export declare function releasePrepare(config: ReleaseConfig, options: ReleasePrepareOptions): void;
@@ -0,0 +1,48 @@
1
+ import { execSync } from "node:child_process";
2
+ import { bumpAllVersions } from "./bumpAllVersions.js";
3
+ import { determineBumpType } from "./determineBumpType.js";
4
+ import { generateChangelogs } from "./generateChangelogs.js";
5
+ import { getCommitsSinceTarget } from "./getCommitsSinceTarget.js";
6
+ import { parseCommitMessage } from "./parseCommitMessage.js";
7
+ function releasePrepare(config, options) {
8
+ const { dryRun, bumpOverride } = options;
9
+ console.info("Finding commits since last release...");
10
+ const { tag, commits } = getCommitsSinceTarget(config.tagPrefix);
11
+ console.info(` Found ${commits.length} commits since ${tag ?? "the beginning"}`);
12
+ let releaseType;
13
+ if (bumpOverride === void 0) {
14
+ const parsedCommits = commits.map((c) => parseCommitMessage(c.message, c.hash, config.workTypes, config.workspaceAliases)).filter((c) => c !== void 0);
15
+ console.info(` Parsed ${parsedCommits.length} typed commits`);
16
+ releaseType = determineBumpType(parsedCommits, config.workTypes);
17
+ } else {
18
+ releaseType = bumpOverride;
19
+ console.info(` Using bump override: ${releaseType}`);
20
+ }
21
+ if (releaseType === void 0) {
22
+ console.info("No release-worthy changes found. Skipping.");
23
+ return;
24
+ }
25
+ console.info(`Bumping versions (${releaseType})...`);
26
+ const newVersion = bumpAllVersions(config.packageFiles, releaseType, dryRun);
27
+ const newTag = `${config.tagPrefix}${newVersion}`;
28
+ console.info("Generating changelogs...");
29
+ generateChangelogs(config, newTag, dryRun);
30
+ if (config.formatCommand !== void 0) {
31
+ if (dryRun) {
32
+ console.info(` [dry-run] Would run format command: ${config.formatCommand}`);
33
+ } else {
34
+ console.info(` Running format command: ${config.formatCommand}`);
35
+ try {
36
+ execSync(config.formatCommand, { stdio: "inherit" });
37
+ } catch (error) {
38
+ throw new Error(
39
+ `Format command failed ('${config.formatCommand}'): ${error instanceof Error ? error.message : String(error)}`
40
+ );
41
+ }
42
+ }
43
+ }
44
+ console.info(`Release preparation complete: ${newTag}`);
45
+ }
46
+ export {
47
+ releasePrepare
48
+ };
@@ -0,0 +1,3 @@
1
+ import type { ReleasePrepareOptions } from './releasePrepare.ts';
2
+ import type { MonorepoReleaseConfig } from './types.ts';
3
+ export declare function releasePrepareMono(config: MonorepoReleaseConfig, options: ReleasePrepareOptions): void;
@@ -0,0 +1,65 @@
1
+ import { execSync } from "node:child_process";
2
+ import { bumpAllVersions } from "./bumpAllVersions.js";
3
+ import { determineBumpType } from "./determineBumpType.js";
4
+ import { generateChangelog } from "./generateChangelogs.js";
5
+ import { getCommitsSinceTarget } from "./getCommitsSinceTarget.js";
6
+ import { parseCommitMessage } from "./parseCommitMessage.js";
7
+ function releasePrepareMono(config, options) {
8
+ const { dryRun, bumpOverride } = options;
9
+ let anyComponentProcessed = false;
10
+ for (const component of config.components) {
11
+ console.info(`
12
+ Processing component: ${component.tagPrefix}`);
13
+ console.info(" Finding commits since last release...");
14
+ const { tag, commits } = getCommitsSinceTarget(component.tagPrefix, component.paths);
15
+ console.info(` Found ${commits.length} commits since ${tag ?? "the beginning"}`);
16
+ if (commits.length === 0) {
17
+ console.info(` No changes for ${component.tagPrefix}. Skipping.`);
18
+ continue;
19
+ }
20
+ let releaseType;
21
+ if (bumpOverride === void 0) {
22
+ const parsedCommits = commits.map((c) => parseCommitMessage(c.message, c.hash, config.workTypes, config.workspaceAliases)).filter((c) => c !== void 0);
23
+ console.info(` Parsed ${parsedCommits.length} typed commits`);
24
+ releaseType = determineBumpType(parsedCommits, config.workTypes);
25
+ } else {
26
+ releaseType = bumpOverride;
27
+ console.info(` Using bump override: ${releaseType}`);
28
+ }
29
+ if (releaseType === void 0) {
30
+ console.info(` No release-worthy changes for ${component.tagPrefix}. Skipping.`);
31
+ continue;
32
+ }
33
+ console.info(` Bumping versions (${releaseType})...`);
34
+ const newVersion = bumpAllVersions(component.packageFiles, releaseType, dryRun);
35
+ const newTag = `${component.tagPrefix}${newVersion}`;
36
+ anyComponentProcessed = true;
37
+ console.info(" Generating changelogs...");
38
+ for (const changelogPath of component.changelogPaths) {
39
+ generateChangelog(config, changelogPath, newTag, dryRun, { includePaths: component.paths });
40
+ }
41
+ console.info(` Component release prepared: ${newTag}`);
42
+ }
43
+ if (anyComponentProcessed && config.formatCommand !== void 0) {
44
+ if (dryRun) {
45
+ console.info(`
46
+ [dry-run] Would run format command: ${config.formatCommand}`);
47
+ } else {
48
+ console.info(`
49
+ Running format command: ${config.formatCommand}`);
50
+ try {
51
+ execSync(config.formatCommand, { stdio: "inherit" });
52
+ } catch (error) {
53
+ throw new Error(
54
+ `Format command failed ('${config.formatCommand}'): ${error instanceof Error ? error.message : String(error)}`
55
+ );
56
+ }
57
+ }
58
+ }
59
+ const summary = anyComponentProcessed ? "Monorepo release preparation complete." : "No components had release-worthy changes.";
60
+ console.info(`
61
+ ${summary}`);
62
+ }
63
+ export {
64
+ releasePrepareMono
65
+ };
@@ -0,0 +1,41 @@
1
+ export type ReleaseType = 'major' | 'minor' | 'patch';
2
+ export interface WorkTypeConfig {
3
+ type: string;
4
+ header: string;
5
+ bump: ReleaseType;
6
+ aliases?: string[];
7
+ }
8
+ export interface Commit {
9
+ message: string;
10
+ hash: string;
11
+ }
12
+ export interface ParsedCommit {
13
+ message: string;
14
+ hash: string;
15
+ type: string;
16
+ description: string;
17
+ workspace?: string;
18
+ breaking: boolean;
19
+ }
20
+ export interface ComponentConfig {
21
+ tagPrefix: string;
22
+ packageFiles: string[];
23
+ changelogPaths: string[];
24
+ paths: string[];
25
+ }
26
+ export interface MonorepoReleaseConfig {
27
+ components: ComponentConfig[];
28
+ workTypes: WorkTypeConfig[];
29
+ formatCommand?: string;
30
+ cliffConfigPath?: string;
31
+ workspaceAliases?: Record<string, string>;
32
+ }
33
+ export interface ReleaseConfig {
34
+ tagPrefix: string;
35
+ packageFiles: string[];
36
+ changelogPaths: string[];
37
+ workTypes: WorkTypeConfig[];
38
+ formatCommand?: string;
39
+ cliffConfigPath?: string;
40
+ workspaceAliases?: Record<string, string>;
41
+ }
File without changes
@@ -0,0 +1 @@
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/defaults.ts","../src/determinebumptype.ts","../src/generatechangelogs.ts","../src/getcommitssincetarget.ts","../src/parsecommitmessage.ts","../src/releaseprepare.ts","../src/releasepreparemono.ts","../src/index.ts","../../../node_modules/.pnpm/@types+js-yaml@4.0.9/node_modules/@types/js-yaml/index.d.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":[[95,149,166,167],[95,146,147,149,166,167],[95,148,149,166,167],[149,166,167],[95,149,154,166,167,184],[95,149,150,155,160,166,167,169,181,192],[95,149,150,151,160,166,167,169],[95,149,152,166,167,193],[95,149,153,154,161,166,167,170],[95,149,154,166,167,181,189],[95,149,155,157,160,166,167,169],[95,148,149,156,166,167],[95,149,157,158,166,167],[95,149,159,160,166,167],[95,148,149,160,166,167],[95,149,160,161,162,166,167,181,192],[95,149,160,161,162,166,167,176,181,184],[95,141,149,157,160,163,166,167,169,181,192],[95,149,160,161,163,164,166,167,169,181,189,192],[95,149,163,165,166,167,181,189,192],[93,94,95,96,97,98,99,100,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,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],[95,149,160,166,167],[95,149,166,167,168,192],[95,149,157,160,166,167,169,181],[95,149,166,167,170],[95,149,166,167,171],[95,148,149,166,167,172],[95,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,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],[95,149,166,167,174],[95,149,166,167,175],[95,149,160,166,167,176,177],[95,149,166,167,176,178,193,195],[95,149,161,166,167],[95,149,160,166,167,181,182,184],[95,149,166,167,183,184],[95,149,166,167,181,182],[95,149,166,167,184],[95,149,166,167,185],[95,146,149,166,167,181,186,192],[95,149,160,166,167,187,188],[95,149,166,167,187,188],[95,149,154,166,167,169,181,189],[95,149,166,167,190],[95,149,166,167,169,191],[95,149,163,166,167,175,192],[95,149,154,166,167,193],[95,149,166,167,181,194],[95,149,166,167,168,195],[95,149,166,167,196],[95,149,154,166,167],[95,141,149,166,167],[95,149,166,167,197],[95,141,149,160,162,166,167,172,181,184,192,194,195,197],[95,149,166,167,181,198],[95,107,110,113,114,149,166,167,192],[95,110,149,166,167,181,192],[95,110,114,149,166,167,192],[95,149,166,167,181],[95,104,149,166,167],[95,108,149,166,167],[95,106,107,110,149,166,167,192],[95,149,166,167,169,189],[95,149,166,167,199],[95,104,149,166,167,199],[95,106,110,149,166,167,169,192],[95,101,102,103,105,109,149,160,166,167,181,192],[95,110,118,126,149,166,167],[95,102,108,149,166,167],[95,110,135,136,149,166,167],[95,102,105,110,149,166,167,184,192,199],[95,110,149,166,167],[95,106,110,149,166,167,192],[95,101,149,166,167],[95,104,105,106,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,149,166,167],[95,110,128,131,149,157,166,167],[95,110,118,119,120,149,166,167],[95,108,110,119,121,149,166,167],[95,109,149,166,167],[95,102,104,110,149,166,167],[95,110,114,119,121,149,166,167],[95,114,149,166,167],[95,108,110,113,149,166,167,192],[95,102,106,110,118,149,166,167],[95,110,128,149,166,167],[95,121,149,166,167],[95,104,110,135,149,166,167,184,197,199],[81,82,95,149,161,166,167],[81,95,149,166,167],[81,95,149,150,166,167],[81,82,83,84,85,86,87,88,89,90,95,149,166,167],[81,83,85,86,87,88,95,149,150,166,167],[81,83,85,86,87,88,89,95,149,150,166,167]],"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":"41e3598a62c74b23976b62c70a604ac16717634f364e0709959592d1a658541a","signature":"71003211beb0a0425cd45c9902370917d09a788b577660532825b3a305d7b6a4","impliedFormat":99},{"version":"8fa9d8a01b5f23351e74bb5ed27056f2dc61f3be784e2b40ac5c6769d5b5c857","signature":"4addc77f22adb312bacc79b2d60daf7f22d038021c9eacff9acb4c12d26b50dd","impliedFormat":99},{"version":"5cb7020711b38f8e28df92ac824f8f6ebcb877948c187b00f5f2b3d67af5c220","signature":"36eb11bac75359679c935842c23b13247a4137cae851f623ae4a04424df8e336","impliedFormat":99},{"version":"60a64a5edcc3e1d19bed76a6cdf90acb02b4c6e5390b3a5aa702250d7fdd2a91","signature":"7199d7b10d107d8545fd8082056943713d29fe91270e03cc7eefa650af399895","impliedFormat":99},{"version":"b6a8d91cf62e400d8aea2a3a9e41dbaba8bbd874473f25601b4a6931423ef7f0","signature":"a84162b33353010221019fe7cfb01ad603f0be288693a5f543f76fce0693f049","impliedFormat":99},{"version":"c5bfb6f5c5cb1a45c480e6aa993eb632b619eeb16d93e2f0c7b83869a4a1ff33","signature":"b2c36e251fe4ccf17ee130f0f287416961138db58cf27efd4fb63d347b0fce6c","impliedFormat":99},{"version":"9b100f6d522fafc7853fb4f6a20094f302f57d563c9841c74971b245f909f81d","signature":"a33a4b1c537925114d141aa19ec342fc3c942f1725a7467d6741350cddd356f1","impliedFormat":99},{"version":"18ea07de1202564ac49ff845e582f3c6a7f31f654b78c9f3f0c60f96217d11a8","signature":"648dd82248554fca9b6a7f1f9d5789dea8c7d83a6362d6a6295e195242b2e679","impliedFormat":99},{"version":"e970d23e4c7637ff5af1bf050cc50a02c1132df9ab367f989eb395a70aa3af8e","signature":"136caf05c4682e6d667ba89ed4059960bc79a6f686bda722047d1754dbe6a77a","impliedFormat":99},{"version":"fd0248e439a513eb92c1fcba0f5c0fc953104468a7c782106a71f6b94f897005","signature":"2b7a06d3327ce7c76258d0dd3d90ee6f27a2085888e0b8f2c28ff53f78dfa807","impliedFormat":99},{"version":"eb44974253e39a08236ceb37fd93f0af7fd2238b6b8ac62b692a5018631ae9df","signature":"4b52acee151767ac812dc7cb9e348455b84f564fbfc26b8f9a494d9d4e2ee6a4","impliedFormat":99},{"version":"7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","impliedFormat":1},{"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,91]],"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":[[92,1],[146,2],[147,2],[148,3],[95,4],[149,5],[150,6],[151,7],[93,1],[152,8],[153,9],[154,10],[155,11],[156,12],[157,13],[158,13],[159,14],[160,15],[161,16],[162,17],[96,1],[94,1],[163,18],[164,19],[165,20],[199,21],[166,22],[167,1],[168,23],[169,24],[170,25],[171,26],[172,27],[173,28],[174,29],[175,30],[176,31],[177,31],[178,32],[179,1],[180,33],[181,34],[183,35],[182,36],[184,37],[185,38],[186,39],[187,40],[188,41],[189,42],[190,43],[191,44],[192,45],[193,46],[194,47],[195,48],[196,49],[97,1],[98,50],[99,1],[100,1],[142,51],[143,52],[144,1],[145,37],[197,53],[198,54],[79,1],[80,1],[14,1],[13,1],[2,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[3,1],[23,1],[24,1],[4,1],[25,1],[29,1],[26,1],[27,1],[28,1],[30,1],[31,1],[32,1],[5,1],[33,1],[34,1],[35,1],[36,1],[6,1],[40,1],[37,1],[38,1],[39,1],[41,1],[7,1],[42,1],[47,1],[48,1],[43,1],[44,1],[45,1],[46,1],[8,1],[52,1],[49,1],[50,1],[51,1],[53,1],[9,1],[54,1],[55,1],[56,1],[58,1],[57,1],[59,1],[60,1],[10,1],[61,1],[62,1],[63,1],[11,1],[64,1],[65,1],[66,1],[67,1],[68,1],[1,1],[69,1],[70,1],[12,1],[74,1],[72,1],[77,1],[76,1],[71,1],[75,1],[73,1],[78,1],[118,55],[130,56],[116,57],[131,58],[140,59],[107,60],[108,61],[106,62],[139,63],[134,64],[138,65],[110,66],[127,67],[109,68],[137,69],[104,70],[105,64],[111,71],[112,1],[117,72],[115,71],[102,73],[141,74],[132,75],[121,76],[120,71],[122,77],[125,78],[119,79],[123,80],[135,63],[113,81],[114,82],[126,83],[103,58],[129,84],[128,71],[124,85],[133,1],[101,1],[136,86],[83,87],[82,88],[84,88],[85,88],[86,89],[87,89],[91,90],[88,88],[89,91],[90,92],[81,1]],"version":"5.9.3"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@williamthorsen/release-kit",
3
+ "version": "0.2.1",
4
+ "description": "Version-bumping and changelog-generation toolkit for release workflows",
5
+ "keywords": [],
6
+ "homepage": "https://github.com/williamthorsen/toolbelt/tree/main/packages/release-kit#readme",
7
+ "bugs": {
8
+ "url": "https://github.com/williamthorsen/toolbelt/issues"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/williamthorsen/toolbelt.git",
13
+ "directory": "packages/release-kit"
14
+ },
15
+ "license": "UNLICENSED",
16
+ "author": "William Thorsen <william@thorsen.dev> (https://github.com/williamthorsen)",
17
+ "type": "module",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/esm/index.js"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist/*",
25
+ "cliff.toml.template",
26
+ "CHANGELOG.md"
27
+ ],
28
+ "engines": {
29
+ "node": ">=18.17.0"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public",
33
+ "registry": "https://registry.npmjs.org"
34
+ },
35
+ "scripts": {
36
+ "publish:github": "pnpm publish",
37
+ "release:prepare": "tsx ../../scripts/release-prepare.ts --only=release-kit",
38
+ "release:prepare:dry": "tsx ../../scripts/release-prepare.ts --only=release-kit --dry-run",
39
+ "ws": "node --import tsx ../../scripts/run-workspace-script.ts --int-test"
40
+ }
41
+ }