Repository navigation
Release: timeout queue fix, pnpm and rman - #23
Merged
Merged
Conversation
doc/API.md now carries a doc-sync-marker HTML comment recording the version/commit/source-paths it was last verified against, so a future session can cheaply check whether it has drifted (git log <marker commit>..HEAD -- <source_paths>) instead of re-diffing the whole doc against the whole source every time. CLAUDE.md documents the convention and the update procedure for future hand-written docs.
Public API surface (PoolFactory/PoolConfiguration in types.ts, PoolOptions' 11 get/set pairs, Pool's methods/constructor/emit override, AbortError's retry-bypass behavior, the PoolState/ResourceState enums, createPool()) had little to no TSDoc - most of it only existed separately in doc/API.md. Every public member now has an inline doc comment (@param/@returns/@throws/ @DefaultValue where relevant); private Pool methods get a short one-liner each for maintainers. Also fixes close()'s zero-argument overload type from `void` to the `Promise<void>` it actually returns at runtime (matches what doc/API.md already documented) - a type-only correction, no behavior change. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Every job now declares contents: read; the shared workflows act through PERSONAL_ACCESS_TOKEN, so GITHUB_TOKEN needs nothing more. main-from-dev.yml fails any pull request into main whose head is not this repository's dev.
SECURITY.md points reporters to GitHub private vulnerability reporting. .claude/settings.json enables the panates plugin from panates/ai-harness, turns off the commit attribution trailer and keeps the graphify hooks. .gitignore now ignores .claude/ except settings.json.
The release action publishes from build/, where support/postbuild.cjs drops private; publishConfig keeps the package detected as an npm package.
Updates the links in README.md, CLAUDE.md and benchmark/README.md, and the output path of the benchmark report renderer.
pnpm installs from pnpm-lock.yaml; pnpm-workspace.yaml sets minimumReleaseAge: 0 and allowBuilds. .rmanrc.yml extends @panates/rman-preset, so rman builds, lints, checks for circular imports, cleans, versions and writes the changelog. The root scripts follow the standard set and engines.node is >=22. rman build output matches the old tsc + postbuild output, except that build/ no longer carries CHANGELOG.md. Removed: support/, .auto-changelog, changelog-template, .madgerc, qc.yml (test.yml lints every branch) and the auto-changelog, madge, prettier, rimraf and ts-cleanup dev dependencies.
eslint uses mocha globals instead of jest; tsconfig-build.json sets rootDir and takes module and declaration settings from @panates/tsconfig. The ignore files follow the templates and keep /benchmark/results ignored. The build output is unchanged.
test.yml sets up Node.js and pnpm with panates/gh-setup-node@v2, runs rman lint, rman check and the tests on Node.js 22, 24 and 26, and runs on every push except to main. release.yml uses pr-source.yaml@v3 and node-release.yaml@v3; npm publishing moves to Trusted Publishing (OIDC), so NPM_TOKEN is no longer passed.
rman deps -u: TypeScript 6 and dotenv 18 (majors), the rest minor and patch. TypeScript 7 is held back: @panates/eslint-config-ts needs <7. test/ and benchmark/ tsconfig files drop baseUrl, which TypeScript 6 deprecates; test/tsconfig.json now holds the template exactly. The emitted build output is unchanged.
pnpm run hands a literal -- to the script, and yargs then ignores the flags after it, so the example ran the full matrix.
test/tsconfig.json sets rootDir to the repository root, since it inherits rootDir: src from tsconfig-base.json and the specs live outside src/. TestFactory imports PoolFactory as a type, as verbatimModuleSyntax needs. tsc --noEmit now passes for src/, test/ and benchmark/.
README's compatibility note now matches engines.node (>=22), and package.json lists the current contributors.
A request whose acquireTimeoutMillis elapsed was rejected but stayed in the request queue, so pool.pending kept counting it until a resource freed up, and the dispatcher then served the abandoned request. PoolRequest now calls an onTimeout hook before emitting request-timeout; the pool uses it to drop the request from the queue. A request that times out while its idle resource fails validation is no longer put back in the queue either.
panates/gh-setup-node@v2 installs the pnpm named in package.json's packageManager field and fails without it. pnpm records the pinned version in pnpm-lock.yaml.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release: a timed-out
acquire()request now leaves the queue at once, sopool.pendingdrops immediately; the repository moves to pnpm and rman under the Panates standards.Effect:
pendingno longer counts timed-out requests; Node.js >=22 is required; npm publishing uses Trusted Publishing (OIDC).Review:
src/pool.ts,src/pool-request.ts; permission changes in.github/workflows/test.yml,release.yml(contents: write,id-token: write),main-from-dev.yml;qc.ymlremoved;NPM_TOKENno longer passed.Tests: 70 passed before, 72 passed after; lint, circular check, tsc and build clean; CI green on Node.js 22, 24 and 26.
🤖 Generated with Claude Code