Small, typed, low-dependency Node.js wrappers for Google APIs — each one hides the boilerplate (auth plumbing, pagination cursors, quota errors) behind a tiny surface you can actually remember. Organized as an npm-workspaces monorepo: every wrapper ships to npm under its own name, but they evolve, test and release together here.
| Package | Version | What it does | Why reach for it |
|---|---|---|---|
youtube-fast-api |
YouTube Data API v3 client: comments, channel videos/playlists, video metadata, search. | Zero runtime dependencies. Stateless async-iterator pagination, typed error hierarchy (QuotaExceededError / RateLimitError), automatic backoff honoring Retry-After. |
|
google-sheets-wizard |
Read Google Sheets ranges as arrays — or map them straight to objects. | One call (getRange) instead of the full googleapis Sheets ceremony, with clearer errors for the usual traps (permissions, missing sheet). |
- Low / zero dependency (ADR).
youtube-fast-apipulls in nothing at runtime;google-sheets-wizardonly expectsgoogleapisas a peer. No transitive surprise in yournode_modules. - Typed, and verified typed. Each package ships
.d.tsand CI checks them againstnode10,node16(CJS + ESM) and bundlers witharethetypeswrong+publinton the real tarball — so the types resolve for your setup, not just the author's. - Tested behavior, not just happy paths. The tricky real-world cases — quota exhaustion, rate-limit retry, pagination of two resources at once — are covered by
node --test/ Jest suites. - Quality-gated on every PR. CI runs lint, tests, type-tests, package checks (
publint+arethetypeswrongon the real tarball), circular-import checks (dpdm), a bundle-size budget (size-limit), and monorepo consistency (sherif, blocking). Dead-code (knip) also runs in CI but is not yet blocking: it currently reports some internal exports that look unused to static analysis but may be part of the intended public surface of a CJS package — pending manual triage before promoting it to a hard gate.
Install only the package you need:
npm i youtube-fast-api
# or
npm i google-sheets-wizard googleapis # googleapis is a peer dependency// youtube-fast-api — every comment on a video, no manual pagination
const YoutubeClient = require("youtube-fast-api");
const yt = new YoutubeClient(process.env.YT_API_KEY);
for await (const comment of yt.comments("dQw4w9WgXcQ", { pageSize: 100 })) {
console.log(comment.textDisplay);
}Full API, auth setup and error handling live in each package's README: youtube-fast-api → · google-sheets-wizard →
npm install # installs every workspace
npm test # run all package test suites
npm run test:types # type-tests (tsd) across workspaces
npm run lint # eslint across workspacesReleases are automated with Changesets: a changeset per user-facing change, and release.yml publishes the affected packages to npm and tags them. Add one with npm run changeset. Current registry-vs-local version drift and the pending "Version Packages" PR: docs/release-status.md.