file-transporter

Fifteen majors of googleapis, seven dead dependencies, one green build

file-transporter jumps googleapis 158 → 173 without touching a line of code, sheds seven never-imported dependencies, and lands the TypeScript 6 / ESLint 10 toolchain.

Why Care?

file-transporter's job is moving documents between Google Docs and your vault, so googleapis is its load-bearing dependency — and it was fifteen major versions behind. The good news our release-notes research surfaced: every one of those fifteen majors is an API-schema regeneration, not a client or auth change. google.auth and google.docs({version: 'v1'}) work identically at both ends. The upgrade compiled clean, zero code changes.

Meanwhile the dependency list was carrying seven passengers that never board: fastify, @modelcontextprotocol/sdk, zod, the accidental dev package, open (never imported — the plugin uses Obsidian's own APIs to open things), and the deprecated @types/dotenv / @types/open stubs (both libraries ship their own types). All removed. What remains is what's real: googleapis and dotenv.

What's New?

  • googleapis 158 → 173 — zero code changes; typed params on the Docs v1 surface verified by tsc.

  • Removed: fastify, @modelcontextprotocol/sdk, zod, dev, open, @types/dotenv, @types/open — all verified import-free before removal.

  • dotenv 17.2 → 17.4 — the one live utility dep, bumped in place.

  • TypeScript 5.8.3 → 6.0.3, tsconfig migrated off deprecated options (moduleResolution"bundler", baseUrl/paths removed).

  • ESLint 9.31 → 10.7 + plugin-kit 0.7.2, typescript-eslint 8.65, esbuild 0.25.6 → 0.28.1, builtin-modules 5.3, @types/node pinned down 24 → 22 (Obsidian = Electron 39 = Node 22).

Verified: tsc -noEmit clean on TS 6, esbuild production bundle green.

Follow-up worth knowing

The production bundle is 12.9 MB — not from this upgrade, but because importing { google } from the googleapis meta-package bundles every Google API ever shipped. Switching to the per-API subpath import (googleapis/build/src/apis/docs) would cut the bundle by an order of magnitude. Logged for a future pass; out of scope for a no-functionality-change campaign.

Campaign plan: content-farm/context-v/plans/Dependency-Upgrades-Across-Plugin-Family.md.