Skip to content

feat(lib)!: v6.1.0 — consolidate spawn/events/cache directories + drop doubled-segment leaves#195

Merged
John-David Dalton (jdalton) merged 1 commit into
mainfrom
chore/v6.1-renames
May 21, 2026
Merged

feat(lib)!: v6.1.0 — consolidate spawn/events/cache directories + drop doubled-segment leaves#195
John-David Dalton (jdalton) merged 1 commit into
mainfrom
chore/v6.1-renames

Conversation

@jdalton

Copy link
Copy Markdown
Collaborator

Summary

v6.0 shipped a per-leaf-module split that produced doubled segments (/spawn/spawn, /ttl-cache/cache) and incoherent groupings — signal-exit/, warnings/, and process/abort are all process-event surfaces but lived in three different top-level directories. v6.1 fixes both shapes in one breaking pass:

  • consolidate process-event surfaces under events/ and process/
  • drop doubled segments (/spawn/spawn/process/spawn/child, etc.)
  • align default-getter leaves (getDefaultLoggerlogger/default, getDefaultSpinnerspinner/default)
  • fold promise-queue/ into the existing promises/ directory; merge its 11-line types.ts into the 219-line promises/types.ts (combined ~230, well under the 500-line soft cap)

This is pre-user: socket-lib has no external consumers yet, only the fleet repos which cascade after v6.1.0 publishes. No backcompat aliases — the v6.0 paths are gone.

Renames

v6.0 path v6.1 path
`src/spawn/spawn.ts` `src/process/spawn/child.ts`
`src/spawn/errors.ts` `src/process/spawn/errors.ts`
`src/spawn/stdio.ts` `src/process/spawn/stdio.ts`
`src/spawn/types.ts` `src/process/spawn/types.ts`
`src/spawn/_internal.ts` `src/process/spawn/_internal.ts`
`src/warnings/event-target.ts` `src/events/warning/handler.ts`
`src/warnings/suppress.ts` `src/events/warning/suppress.ts`
`src/signal-exit/register.ts` `src/events/exit/handler.ts`
`src/signal-exit/intercept.ts` `src/events/exit/intercept.ts`
`src/signal-exit/lifecycle.ts` `src/events/exit/lifecycle.ts`
`src/signal-exit/signals.ts` `src/events/exit/signals.ts`
`src/signal-exit/types.ts` `src/events/exit/types.ts`
`src/signal-exit/_internal.ts` `src/events/exit/_internal.ts`
`src/ttl-cache/cache.ts` `src/cache/ttl/store.ts`
`src/ttl-cache/types.ts` `src/cache/ttl/types.ts`
`src/spinner/registry.ts` `src/spinner/default.ts`
`src/logger/logger.ts` `src/logger/default.ts`
`src/promise-queue/queue.ts` `src/promises/queue.ts`
`src/promise-queue/types.ts` merged into `src/promises/types.ts`
`src/globs/glob.ts` `src/globs/match.ts`
`src/links/link.ts` `src/links/create.ts`

Removed directories: `src/spawn/`, `src/warnings/`, `src/signal-exit/`, `src/ttl-cache/`, `src/promise-queue/`.

Consumer migration

For a representative downstream `eco/npm/exec.ts`-style file, the v6.0 → v6.1 import diff:

```diff
-import { spawn } from '@socketsecurity/lib/spawn/spawn'
-import { isSpawnError } from '@socketsecurity/lib/spawn/errors'
-import type { SpawnOptions } from '@socketsecurity/lib/spawn/types'
-import { getDefaultLogger } from '@socketsecurity/lib/logger/logger'
-import { getDefaultSpinner } from '@socketsecurity/lib/spinner/registry'
-import { createTtlCache } from '@socketsecurity/lib/ttl-cache/cache'
-import type { TtlCache } from '@socketsecurity/lib/ttl-cache/types'
-import { onExit } from '@socketsecurity/lib/signal-exit/register'
-import { suppressWarnings } from '@socketsecurity/lib/warnings/suppress'
-import { PromiseQueue } from '@socketsecurity/lib/promise-queue/queue'
-import type { QueuedTask } from '@socketsecurity/lib/promise-queue/types'
-import { glob } from '@socketsecurity/lib/globs/glob'
-import { link } from '@socketsecurity/lib/links/link'
+import { spawn } from '@socketsecurity/lib/process/spawn/child'
+import { isSpawnError } from '@socketsecurity/lib/process/spawn/errors'
+import type { SpawnOptions } from '@socketsecurity/lib/process/spawn/types'
+import { getDefaultLogger } from '@socketsecurity/lib/logger/default'
+import { getDefaultSpinner } from '@socketsecurity/lib/spinner/default'
+import { createTtlCache } from '@socketsecurity/lib/cache/ttl/store'
+import type { TtlCache } from '@socketsecurity/lib/cache/ttl/types'
+import { onExit } from '@socketsecurity/lib/events/exit/handler'
+import { suppressWarnings } from '@socketsecurity/lib/events/warning/suppress'
+import { PromiseQueue } from '@socketsecurity/lib/promises/queue'
+import type { QueuedTask } from '@socketsecurity/lib/promises/types'
+import { glob } from '@socketsecurity/lib/globs/match'
+import { link } from '@socketsecurity/lib/links/create'
```

Verification

  • `pnpm install` clean
  • `pnpm run check --all` — code checks, lint (oxlint), format (oxfmt), types (tsgo) all green
  • `pnpm run test` — full unit + integration + isolated suites pass
  • No fleet-canonical files edited (`.claude/`, `.config/oxlint-plugin/*`, etc.)
  • `docs/api-index.md` regenerated to match the new exports map
  • `package.json` `exports` map regenerated via `scripts/fix/generate-package-exports.mts` — 19 old entries removed, 18 new entries added (one fewer because `promise-queue/types` folded into the pre-existing `promises/types` entry)

Notes for review

  • The `./logger` and `./errors` fleet-compat aliases in `scripts/fix/generate-package-exports.mts` were updated: `./logger` now points at `./logger/default` (was `./logger/logger`).
  • A single hardcoded test fixture path in `test/unit/git.test.mts` (the "files in subdirectories" case) was updated from `src/logger/logger.ts` → `src/logger/default.ts`.
  • `DEFAULT_PREFIX = 'ttl-cache'` in `src/cache/ttl/store.ts` is intentionally unchanged — it's a runtime cacache namespace prefix; changing it would invalidate existing on-disk caches.

Test plan

  • Reviewer pulls the branch and runs `pnpm install && pnpm run check --all && pnpm run test`
  • Reviewer spot-checks 2–3 import sites to confirm new paths resolve
  • After merge + v6.1.0 publish: fleet cascade updates each downstream consumer

… into events/, ttl-cache into cache/, rename leaves to drop doubled segments

BREAKING CHANGE: Consolidates v6.0 per-leaf directory split. No backcompat aliases — socket-lib has no external users yet; the fleet cascade after publish updates all consumers.

Directory moves:
- src/spawn/{spawn,errors,stdio,types,_internal}.ts → src/process/spawn/{child,errors,stdio,types,_internal}.ts
- src/warnings/{event-target,suppress}.ts → src/events/warning/{handler,suppress}.ts
- src/signal-exit/{register,intercept,lifecycle,signals,types,_internal}.ts → src/events/exit/{handler,intercept,lifecycle,signals,types,_internal}.ts
- src/ttl-cache/{cache,types}.ts → src/cache/ttl/{store,types}.ts
- src/promise-queue/queue.ts → src/promises/queue.ts (types merged into existing src/promises/types.ts)

Leaf renames (drop doubled segments, align with default-getter naming):
- src/spinner/registry.ts → src/spinner/default.ts (matches getDefaultSpinner)
- src/logger/logger.ts → src/logger/default.ts (matches getDefaultLogger)
- src/globs/glob.ts → src/globs/match.ts
- src/links/link.ts → src/links/create.ts

The src/spawn/, src/warnings/, src/signal-exit/, src/ttl-cache/, and src/promise-queue/ directories are removed entirely.
@jdalton John-David Dalton (jdalton) merged commit 9b369ef into main May 21, 2026
11 checks passed
@jdalton John-David Dalton (jdalton) deleted the chore/v6.1-renames branch May 21, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant