Skip to content

feat(build-tsdoc)!: pivot to api-extractor (0.2.0)#22

Merged
amery merged 6 commits into
mainfrom
pr-amery-api-extractor
Jun 10, 2026
Merged

feat(build-tsdoc)!: pivot to api-extractor (0.2.0)#22
amery merged 6 commits into
mainfrom
pr-amery-api-extractor

Conversation

@amery

@amery amery commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

@kagal/build-tsdoc 0.2.0 replaces the tsdoc-markdown engine
with @microsoft/api-extractor. The package becomes a thin,
bundler-agnostic adapter over api-extractor: it runs the
extractor against one rolled declaration file per entry and
writes <entryName>.api.json in @microsoft/api-extractor-model's
wire format, loadable directly with ApiPackage.loadFromJsonFile().

This is a breaking release. The previous newDocumentsHook() /
DocumentsManifest surface and the custom _docs/ JSON wrapper
are gone, and the package no longer couples to a bundler.

Breaking changes & migration

  • Engine swap. Output is api-extractor's wire format, not the
    old DocumentsManifest. Load it with ApiPackage.loadFromJsonFile()
    from @microsoft/api-extractor-model instead of parsing a custom
    wrapper.
  • Output location. _docs/dist/, so manifests ship with
    the package via the existing files: ["dist"].
  • Removed exports. newDocumentsHook(), DocumentsManifest,
    ExportManifest, DocumentsHookOptions, DocEntry,
    DuplicateExportPathError, DuplicateOutputFileError,
    DEFAULT_OUTPUT_DIRECTORY. Collision detection now belongs to the
    caller (only it knows the entry-name → output-file mapping).
  • Dependencies. tsdoc-markdown runtime dependency dropped; no
    more unbuild peer dependency.

New surface

  • extractEntryManifest(options) — single-entry adapter.
    Options: projectFolder (required), then entryName?,
    entryFile?, outDir?, outputPath?, tsconfigPath?,
    packageFullPath?, each slotting in independently for
    non-standard layouts. Defaults derive from projectFolder /
    entryName (dist/<entryName>.d.mts in, dist/<entryName>.api.json
    out, root tsconfig.json + package.json). Returns undefined
    when the entry file is missing, so a build hook can call it
    unconditionally — stub builds skip. Runtime dependencies are
    passed as api-extractor bundledPackages, so a symbol re-exported
    from a dependency is inlined into the model as part of this
    package rather than dropped as foreign.
  • Per-entry canonical-reference disambiguation. api-extractor
    emits every entry point with an empty import path, so per-entry
    manifests would all collide on @scope/pkg! when a consumer
    merges them. Non-index entries graft their name onto the entry
    point's import path, rebuilding member references as
    @scope/pkg/<entry>! (the stored excerpt-token links are
    rewritten to match). The package name is untouched — consumers
    key by the entry point.
  • Bundler hook factories. Neither bundler is imported at type
    or runtime; each shim declares only the fields its hooks read,
    with a boundary discriminator (asUnbuildContext /
    asOBuildContext) so a misroute surfaces as
    UnrecognisedBuildContextError rather than a deeper TypeError.
    • newUnbuildHooks() — hook map keyed by build:done; spreads
      straight into unbuild's hooks.
    • newOBuildHooks() — hook pair (entries + end) for obuild,
      whose end context carries no resolved entries; entries
      captures them in a closure, and end throws HooksNotWiredError
      if entries never fired.
    • Both honour per-entry outDir, skip stub / 'transform'
      entries, reject hand-written name lists with
      InvalidBuildEntryError, and raise DuplicateEntryNameError
      when two entries resolve to the same name. Single-entry
      extractEntryManifest keeps no list-level checks.

Tooling & CI

  • Publish only the tagged package. Drops the v[0-9]* umbrella
    tag, filters publish to the package whose tag fired the workflow
    (pnpm --fail-if-no-match --filter "${TAG%@*}" publish:maybe), and
    switches to publish-${ github.ref_name } concurrency so
    independent package releases run in parallel.
  • ESLint. Bump @poupe/eslint-config to ^0.9.2 and whitelist
    dir / doc / docs through its new first-class
    withAbbreviations helper, replacing a temporary local re-emit of
    the poupe/unicorn block.

Commits

  • chore(eslint): whitelist dir/doc/docs abbreviations
  • chore(ci): publish only the tagged package
  • refactor(build-tsdoc)!: pivot to api-extractor, drop bundler coupling
  • feat(build-tsdoc): add newUnbuildHooks hook-map factory
  • feat(build-tsdoc): add newOBuildHooks hook-pair factory
  • chore(build-tsdoc): release 0.2.0

Verification

Full-repo pnpm precommit green: eslint + cspell, type-check
(source / tools / tests), build, and 53 Vitest tests across 4
files. The suite shifts to the new surface — extract.test.ts
rewritten, new unbuild.test.ts and obuild.test.ts covering the
discriminators, hook dispatch, skip/throw paths, and collision
detection; the legacy directory-walking fixture tree is removed.

Summary by CodeRabbit

Release Notes

  • New Features

    • Version 0.2.0 of @kagal/build-tsdoc introduces support for both Unbuild and OBuild bundlers.
    • Integrated API Extractor for generating per-entry API manifests in JSON format.
  • Breaking Changes

    • Replaced single newDocumentsHook with newUnbuildHooks and newOBuildHooks factories.
    • Output format changed from Markdown documentation to JSON API manifests.
  • Documentation

    • Updated package documentation and guides to reflect new API Extractor-based workflow.
    • Updated publishing workflow to support scoped package tags.

amery added 6 commits June 9, 2026 18:07
This repo is TSDoc tooling, so identifiers carry "doc" or
"docs" throughout, and "dir" has a single meaning here
(directory). unicorn/prevent-abbreviations rewrites all three
by default (doc→document, docs→documents, dir→directory) —
whitelist them so the short forms pass unchanged.

@poupe/eslint-config 0.9.2 exposes withAbbreviations(tokens),
which re-emits its poupe/unicorn block with the given tokens
added to allowList and pinned to false in replacements. The
root eslint.config.ts calls it with ['dir', 'doc', 'docs'].

ESLint flat config is nearest-wins, not merged, so a
per-package config shadows the root rather than extending it.
The package config therefore repeats the whitelist:
packages/@kagal-build-tsdoc/eslint.config.mjs becomes
eslint.config.ts so it can import withAbbreviations and apply
the same tokens.

Signed-off-by: Alejandro Mery <amery@apptly.co>
Drop the `v[0-9]*` umbrella tag pattern. The repo-wide
release model from "chore(ci): use npm-style per-package
release tags" is no longer used — each package now ships
on its own cadence under `@scope/name@version`, so there
is no scenario where a single tag should publish more
than one package.

Switch the concurrency group from a single global
`publish` to `publish-${{ github.ref_name }}`. With a
shared group, two simultaneous package tag pushes
serialised against each other; per-ref grouping lets
independent packages release in parallel while still
preventing a duplicate run on the same tag.

Replace `pnpm -r publish:maybe` with
`pnpm --fail-if-no-match --filter "${TAG%@*}"
publish:maybe`, where `${TAG%@*}` strips the trailing
`@<version>` from the tag (`@kagal/build-tsdoc@0.1.0`
→ `@kagal/build-tsdoc`). The runner now publishes
exactly the package whose tag fired the workflow,
instead of walking every package; `--fail-if-no-match`
turns a tag that resolves to no package into a failed
run rather than a silent no-op. The republish guard is
unchanged — each package's `publish:maybe` skips when
`npm view $name@$version` already lists the version.

Reflow AGENTS.md §Publishing to describe the
per-package tag form as the only pattern, the per-ref
concurrency behaviour, and the filtered publish step.

Signed-off-by: Alejandro Mery <amery@apptly.co>
Replace the `tsdoc-markdown` engine and the unbuild-shaped
hook with `@microsoft/api-extractor` and a single adapter
function on top of it.

`extractEntryManifest({ projectFolder, entryName?,
entryFile?, outDir?, outputPath?, tsconfigPath?,
packageFullPath? })`
runs api-extractor against one rolled declaration file and
writes `<entryName>.api.json` in `@microsoft/api-extractor-model`'s
wire format. Defaults derive from `projectFolder` and
`entryName` (`dist/<entryName>.d.mts` in,
`dist/<entryName>.api.json` out, root `tsconfig.json`,
root `package.json`); each override slots in independently
for non-standard layouts. Missing `entryFile` returns
`undefined` so callers can invoke unconditionally from a
build hook — stub builds skip it. api-extractor errors throw;
warnings come back in `warningCount`.

Runtime dependencies from the manifest are passed as
api-extractor's `bundledPackages`, so a symbol re-exported
from a dependency is inlined into the doc model as part of
this package instead of dropped as a foreign reference.

Output moves from `_docs/` to `dist/`, so manifests ship with
the package via the existing `files: ["dist"]`. Consumers load
with `ApiPackage.loadFromJsonFile()` instead of parsing a
custom wrapper.

Bundler coupling is gone. No `BuildContext` parameter, no
`unbuild` peer dep, no per-entry iteration inside the helper —
the caller wires its own post-build hook and loops over its
own entries. The package's own `build.config.ts` demonstrates
the pattern against unbuild and dogfoods the new export.

Knock-on removals:

- `newDocumentsHook()`, `DocumentsManifest`, `ExportManifest`,
  `DocumentsHookOptions`, `DocEntry` types — superseded by
  api-extractor's wire format.
- `DuplicateExportPathError`, `DuplicateOutputFileError` —
  collision detection now belongs to the caller (only it
  knows the entry-name to output-filename mapping).
- `DEFAULT_OUTPUT_DIRECTORY` — output is always under `dist/`.
- `_docs/` directory, unified `api.json` index, `api_<name>.json`
  prefix scheme — replaced by per-entry `<entryName>.api.json`.
- `tsdoc-markdown` runtime dep; `unbuild` peer dep.
- `src/types.ts`, `src/write.ts`, `src/errors.ts` — folded
  into a single `src/extract.ts` exporting the helper plus
  `ExtractEntryOptions` / `ExtractEntryResult`.
- The legacy directory-walking fixture tree
  (`src/__tests__/fixtures/sample.ts` and `sample-dir/`) — no
  longer wired up.

Compat smoke test (`src/__tests__/compat.mjs`) and Vitest
suite shrink to the new surface: `extractEntryManifest` is
callable, `VERSION` matches `package.json`, removed exports
are absent. A fixture-driven api-extractor invocation belongs
in a follow-up — the current suite covers the public-surface
shape only.

CHANGELOG `[Unreleased]` documents the breaking pivot under
Changed / Removed / Added; `package.json` description,
keywords (`api-extractor`, `api-extractor-model`,
`build-hook`), and dependency block update to match.
`AGENTS.md`, the root `README.md`, and the package
`README.md` reflow the package summary, pipeline diagram,
source layout, and the build-time dogfood note.

Signed-off-by: Alejandro Mery <amery@apptly.co>
Loop unbuild's bundler-resolved entries and call
`extractEntryManifest` per entry from a factory-built hook map.
The map is keyed by hook name (`build:done`) so it spreads
straight into `defineBuildConfig`'s `hooks`; to combine
extraction with other post-build steps, callers keep the map in
a variable and wrap its hook.

Entries must be the bundler's own — they carry the data the
hook detects from. unbuild resolves `name` and `outDir` before
hooks fire, so the hook requires `name` and rejects
hand-written name lists with `InvalidBuildEntryError`. Stub
builds are skipped via `options.stub`; per-entry `outDir` is
honoured.

The shim lives in `unbuild.ts` with structural interfaces
declaring only the fields the hook reads — unbuild is not
imported at type or runtime. The discriminator cast
(`asUnbuildContext`) verifies those reads at the boundary so a
misroute surfaces as `UnrecognisedBuildContextError` instead of
a cryptic `TypeError` deeper in the loop. Error classes sit in
`errors.ts`, a leaf module. `DuplicateEntryNameError` fires
when two entries resolve to the same entry name; single-entry
`extractEntryManifest` retains no list-level checks — callers
iterating directly own that path.

The package's own `build.config.ts` dogfoods the factory via
the spread. A vitest suite covers the discriminator, the hook's
dispatch and skip/throw paths, and collision detection; the
compat smoke test gains rows for the new exports.

CHANGELOG `[Unreleased]`, README, and AGENTS.md reflect the new
surface.

Signed-off-by: Alejandro Mery <amery@apptly.co>
obuild's `end` hook context is only `{ pkg, pkgDir }` and the
resolved entries (absolute paths, effective `stub` flags) are
visible only to the `entries` hook, so extraction needs both:
`newOBuildHooks()` returns a pair keyed by hook name —
`entries` captures them in a closure, `end` extracts the
capture and throws `HooksNotWiredError` when `entries` never
fired. Like the unbuild map, the pair spreads straight into
`hooks`; wrapping `end` combines extraction with other
post-build steps.

obuild entries carry no `name`, so one derives per `input` the
way rolldown names chunks: basename minus the final extension.
Stub and `'transform'` entries are skipped (per-file
declarations, no rollup); per-entry `outDir` is honoured;
hand-written name lists and raw string entries are rejected
with `InvalidBuildEntryError`.

The shim mirrors `unbuild.ts`: structural interfaces in
`obuild.ts` declaring only the fields the hooks read — obuild
is not imported at type or runtime — with the `asOBuildContext`
discriminator verifying those reads at the boundary.

A vitest suite covers the discriminator, the hook pair's
capture/extract cycle, skip/throw paths, and collision
detection; the compat smoke test gains rows for the new
exports.

Adds `obuild` to package keywords. CHANGELOG `[Unreleased]`,
README, and AGENTS.md gain the obuild surface, including the
wrapped-`end` extended-use example.

Signed-off-by: Alejandro Mery <amery@apptly.co>
Bump @kagal/build-tsdoc to 0.2.0 and promote the existing
[Unreleased] changelog entries under the new version with a
2026-06-09 release date, keeping an empty [Unreleased]
placeholder on top.

0.2.0 is a breaking release: it replaces the tsdoc-markdown
engine with @microsoft/api-extractor, drops the unbuild peer
coupling, and ships api manifests in dist/ rather than _docs/.
Runtime dependencies are bundled, so symbols re-exported from
a dependency are documented as part of the package itself.

After this PR merges, tagging the merge commit v0.2.0 triggers
publish.yml, which authenticates to npm via OIDC and publishes
with Sigstore provenance.

Signed-off-by: Alejandro Mery <amery@apptly.co>
@amery amery added enhancement New feature or request build-tsdoc @kagal/build-tsdoc package dependencies Pull requests that update a dependency file release Version bump and release prep labels Jun 10, 2026
@amery amery self-assigned this Jun 10, 2026
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​poupe/​eslint-config@​0.9.27610010092100
Added@​microsoft/​api-extractor@​7.58.7991008997100
Added@​microsoft/​api-extractor-model@​7.33.81001009392100

View full report

@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 98050caf-2dda-41c5-93a4-998ff78cd892

📥 Commits

Reviewing files that changed from the base of the PR and between 2901235 and e15634e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (31)
  • .github/workflows/publish.yml
  • .gitignore
  • AGENTS.md
  • README.md
  • eslint.config.ts
  • internal/build/cspell.json
  • package.json
  • packages/@kagal-build-tsdoc/CHANGELOG.md
  • packages/@kagal-build-tsdoc/README.md
  • packages/@kagal-build-tsdoc/build.config.ts
  • packages/@kagal-build-tsdoc/eslint.config.mjs
  • packages/@kagal-build-tsdoc/eslint.config.ts
  • packages/@kagal-build-tsdoc/package.json
  • packages/@kagal-build-tsdoc/src/__tests__/compat.mjs
  • packages/@kagal-build-tsdoc/src/__tests__/extract.test.ts
  • packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/__tests__/inner.ts
  • packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/alpha.test.ts
  • packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/alpha.ts
  • packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/nested/beta.ts
  • packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/types.d.ts
  • packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample.ts
  • packages/@kagal-build-tsdoc/src/__tests__/index.test.ts
  • packages/@kagal-build-tsdoc/src/__tests__/obuild.test.ts
  • packages/@kagal-build-tsdoc/src/__tests__/unbuild.test.ts
  • packages/@kagal-build-tsdoc/src/errors.ts
  • packages/@kagal-build-tsdoc/src/extract.ts
  • packages/@kagal-build-tsdoc/src/index.ts
  • packages/@kagal-build-tsdoc/src/obuild.ts
  • packages/@kagal-build-tsdoc/src/types.ts
  • packages/@kagal-build-tsdoc/src/unbuild.ts
  • packages/@kagal-build-tsdoc/src/write.ts
💤 Files with no reviewable changes (10)
  • packages/@kagal-build-tsdoc/src/tests/fixtures/sample-dir/types.d.ts
  • packages/@kagal-build-tsdoc/src/tests/fixtures/sample-dir/alpha.ts
  • packages/@kagal-build-tsdoc/src/tests/fixtures/sample-dir/nested/beta.ts
  • packages/@kagal-build-tsdoc/src/tests/fixtures/sample-dir/alpha.test.ts
  • packages/@kagal-build-tsdoc/src/tests/fixtures/sample-dir/tests/inner.ts
  • .gitignore
  • packages/@kagal-build-tsdoc/src/types.ts
  • packages/@kagal-build-tsdoc/src/tests/fixtures/sample.ts
  • packages/@kagal-build-tsdoc/src/write.ts
  • packages/@kagal-build-tsdoc/eslint.config.mjs

📝 Walkthrough

Walkthrough

This PR replaces @kagal/build-tsdoc's TSDoc-Markdown unbuild hook with an @microsoft/api-extractor adapter that generates per-entry API manifests for both unbuild and obuild. The refactoring introduces bundler validation shims, updates documentation and workflows to reflect scoped tag publishing, and includes comprehensive test coverage for the new extraction and hook-wiring logic.

Changes

API-Extractor Adapter Migration

Layer / File(s) Summary
Error types and validation helpers
packages/@kagal-build-tsdoc/src/errors.ts
Replaces DuplicateExportPathError and DuplicateOutputFileError with bundler-context errors: DuplicateEntryNameError, HooksNotWiredError, InvalidBuildEntryError, UnrecognisedBuildContextError; exports checkDuplicateName helper.
Entry manifest extraction core
packages/@kagal-build-tsdoc/src/extract.ts
Completely rewritten: reads package dependencies for api-extractor bundling, invokes extractor via ExtractorConfig.prepare + Extractor.invoke, returns undefined when input d.mts missing, rewrites non-index entries' canonical references via path grafting, exports extractEntryManifest entry point.
Unbuild hook integration
packages/@kagal-build-tsdoc/src/unbuild.ts
New shim layer: validates unbuild's build:done context shape via asUnbuildContext, iterates entries, skips stub builds, enforces duplicate names, and calls extractEntryManifest; exports newUnbuildHooks() factory.
OBuild hook integration
packages/@kagal-build-tsdoc/src/obuild.ts
New shim layer: validates obuild context via asOBuildContext, implements closure-based entries/end hook pair, normalizes bundle inputs, derives per-input entry names, enforces uniqueness, and calls extractEntryManifest; throws HooksNotWiredError if end fires before entries.
Module exports and public API
packages/@kagal-build-tsdoc/src/index.ts
Re-exports extractEntryManifest and hook factories (newUnbuildHooks, newOBuildHooks, asUnbuildContext, asOBuildContext) plus new error types; removes old newDocumentsHook and DEFAULT_OUTPUT_DIRECTORY; preserves VERSION export.
Build configuration and package metadata
packages/@kagal-build-tsdoc/build.config.ts, packages/@kagal-build-tsdoc/package.json
Updates build.config.ts to wire ...newUnbuildHooks() into hooks; bumps version to 0.2.0; upgrades @microsoft/api-extractor/@microsoft/api-extractor-model dependencies; removes tsdoc-markdown and unbuild peer dependency; updates keywords.
Extraction functionality tests
packages/@kagal-build-tsdoc/src/__tests__/extract.test.ts
Rewrites test suite to cover extractEntryManifest: self-extraction with symbol validation, undefined returns for missing inputs, relative/absolute outDir resolution, re-export detection in probe projects, multi-entry import-path grafting, and packageFullPath overrides.
Hook validation and integration tests
packages/@kagal-build-tsdoc/src/__tests__/unbuild.test.ts, packages/@kagal-build-tsdoc/src/__tests__/obuild.test.ts
New comprehensive Vitest suites validating context shape guards, hook lifecycle (entries before end, HooksNotWiredError), extractEntryManifest call counts/arguments, stub/transform skipping, multi-input expansion, entry validation (missing name, empty input), and duplicate-name detection with collision records.
Export validation and compatibility
packages/@kagal-build-tsdoc/src/__tests__/index.test.ts, packages/@kagal-build-tsdoc/src/__tests__/compat.mjs
Simplifies index.test.ts to validate VERSION and extractEntryManifest exports; updates compat.mjs smoke test to check context converters, hook factories, and error types instead of old document-write utilities.
Test fixture cleanup
packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/__tests__/inner.ts, packages/@kagal-build-tsdoc/src/__tests__/fixtures/sample-dir/types.d.ts
Removes test-excluded symbols (excludedTestDirectorySymbol, ExcludedDeclarationSymbol) from fixtures to align with simplified extraction test inputs.
Package README and changelog
packages/@kagal-build-tsdoc/README.md, packages/@kagal-build-tsdoc/CHANGELOG.md
Rewrites README to document @microsoft/api-extractor adapter, per-entry hook factories (newUnbuildHooks, newOBuildHooks), output manifests, bundled-packages handling, and error conditions; adds 0.2.0 release notes describing breaking changes and new APIs.
Project documentation and workflows
AGENTS.md, README.md, .github/workflows/publish.yml, eslint.config.ts, .gitignore, others
Updates AGENTS.md with per-package guidance on api-extractor integration; revises root README for <entry>.api.json pipeline; changes publish.yml tag trigger from v[0-9]* to @*/*@[0-9]* and implements per-package filtered publish; removes _docs from gitignore; adds obuild to spellcheck; upgrades @poupe/eslint-config with abbreviation support for dir/doc/docs.

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly Related PRs

  • kagal-dev/tsdoc#2: Core refactoring logic for @kagal/build-tsdoc from the documents hook pipeline to api-extractor adapter.
  • kagal-dev/tsdoc#3: Related publish workflow changes for scoped tag triggering and per-package publishing.

Suggested Labels

documentation, ci, breaking-change, refactor

Poem

🐰 Extracted manifests hop with care,
Two bundler shims dance hand in hand—
From markdown roots to API's air,
Per-entry JSON spans the land!
Unbuild, OBuild, both set free,
The tsdoc adapter now we see. 🌿

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(build-tsdoc)!: pivot to api-extractor (0.2.0)' clearly and concisely describes the main change: replacing tsdoc-markdown with api-extractor for the build-tsdoc package version 0.2.0.
Docstring Coverage ✅ Passed Docstring coverage is 90.48% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch pr-amery-api-extractor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@amery
amery merged commit f243b1d into main Jun 10, 2026
11 checks passed
@amery
amery deleted the pr-amery-api-extractor branch June 10, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build-tsdoc @kagal/build-tsdoc package dependencies Pull requests that update a dependency file enhancement New feature or request release Version bump and release prep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant