Skip to content

v7 is for Tortuguita - #808

Open
RobinTail wants to merge 18 commits into
mainfrom
make-v7
Open

v7 is for Tortuguita#808
RobinTail wants to merge 18 commits into
mainfrom
make-v7

Conversation

@RobinTail

@RobinTail RobinTail commented Jul 22, 2026

Copy link
Copy Markdown
Owner
image

https://www.hrc.org/news/remembering-tortuguita-indigenous-queer-and-non-binary-environmental-activist-and-forest-defender

Manuel Esteban Páez Terán, affectionately known as "Tortuguita" ("Little Turtle"), was a Venezuelan-American non-binary environmental activist who identified as non-binary. Friends remembered Tortuguita as a gentle, thoughtful person who believed that protecting forests and caring for communities went hand in hand. They became involved in the movement opposing the construction of Atlanta's planned Public Safety Training Center, known by critics as "Cop City," arguing that the project would destroy valuable forest land and harm nearby neighborhoods.

On January 18, 2023, Tortuguita was shot and killed during a police operation to clear the protest encampment. Authorities stated that an activist fired first, prompting officers to return fire. Family members, supporters, and independent experts have disputed that account, citing forensic evidence and calling for further investigation. The circumstances of Tortuguita's death remain the subject of public debate and legal proceedings.

To many environmental and social justice advocates, Tortuguita's legacy lives on through their commitment to peaceful activism, ecological stewardship, and the belief that ordinary people can work together to protect the places they call home.


Summary by CodeRabbit

  • New Features

    • Added dedicated package entry points for integration and documentation utilities (plus dist/* exports).
    • attachSockets now returns per-namespace typed contexts.
    • Added support for Node.js 24.11.0.
  • Breaking Changes

    • Integration no longer requires a TypeScript instance or the async factory; it’s constructed directly.
    • Integration and Documentation are no longer exported from the main package entry point.
    • attachSockets return value changed from the attached server to the contexts map.
  • Documentation

    • Updated README examples and the security supported-versions table.
  • Style

    • Refreshed the startup logo presentation.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9d2c5cec-e337-4f5b-8507-6969c8693ef8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The package now publishes dedicated Integration and Documentation subpaths, removes the injected TypeScript API, returns namespace contexts from attachSockets, updates compatibility and generated examples, and refreshes release and Node.js configuration.

Changes

Code-generation pipeline

Layer / File(s) Summary
Direct TypeScript generation helpers
zod-sockets/src/typescript-api.ts, zod-sockets/src/zts.ts, zod-sockets/src/zts-helpers.ts, zod-sockets/src/*spec.ts
The class-based TypeScript API is replaced by module-level helpers, and schema generation tests use the new exports.
Integration generation and package entry points
zod-sockets/src/integration.ts, zod-sockets/package.json, zod-sockets/tsdown.config.ts, zod-sockets/src/index.ts, example/*, README.md, compat-test/*
Integration is constructed synchronously without a TypeScript argument or factory method, with dedicated package subpaths and build entries for updated imports.
Namespace context return contract
zod-sockets/src/attach.ts, zod-sockets/src/attach.spec.ts
attachSockets returns typed per-namespace contexts after attaching Socket.IO, with runtime and type-level assertions.
Release and generated-artifact maintenance
.github/workflows/node.js.yml, SECURITY.md, zod-sockets/src/startup-logo.ts, example/example-client.ts, example/example-documentation.yaml
Node.js versions, supported releases, startup-logo rendering, and generated examples are updated.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested labels: CI/CD, release

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is too cryptic to convey the PR's actual v7 refactor and breaking changes. Use a concise, descriptive title such as "Prepare v7 with new entrypoints and refactored TypeScript generation".
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ 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 make-v7

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.

@RobinTail RobinTail added dependencies Pull requests that update a dependency file breaking labels Jul 22, 2026
@coveralls-official

coveralls-official Bot commented Jul 22, 2026

Copy link
Copy Markdown

Coverage Status

coverage: 100.0% (+1.0%) from 99.042% — make-v7 into main

@RobinTail RobinTail added the enhancement New feature or request label Jul 22, 2026
* Moving Documentation and Integration to dedicated entrypoints.

* Readme: fix imports.
* feat: composite generator for Integration.

* fix spacing.

* Updating tests.

* fix: indentation.

* fix: mv ids.
@RobinTail
RobinTail marked this pull request as ready for review July 27, 2026 12:45

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
zod-sockets/src/typescript-api.ts (1)

54-58: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Stale @internal tag on a now-public export.

makeUnion is exported and consumed by zts.ts; the @internal marker will mislead docs/API-extraction tooling that strips internal symbols.

♻️ Proposed tweak
 /**
- * `@internal`
  * ensures distinct union (unique primitives)
  * */
 export const makeUnion = (entries: ts.TypeNode[]) => {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@zod-sockets/src/typescript-api.ts` around lines 54 - 58, The JSDoc for the
public makeUnion export incorrectly marks it as internal. Remove the `@internal`
tag from makeUnion while preserving its existing description and implementation.
zod-sockets/package.json (1)

39-42: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

"./dist/*" exposes the whole build output as public API.

With dedicated ./integration and ./documentation subpaths added, the wildcard makes every internal chunk deep-importable and semver-relevant. Consider dropping it unless deep imports are intentionally supported.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@zod-sockets/package.json` around lines 39 - 42, Remove the "./dist/*"
wildcard export from the package exports configuration, while preserving the
explicit "./integration" and "./documentation" subpaths. Do not expose internal
build chunks as public deep-importable API unless they have dedicated export
entries.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/node.js.yml:
- Line 21: Update the Node.js version matrix to remove the 22.19.0 and 22.x
entries, leaving Node 24.11.0, 24.x, 26.0.0, and 26.x as the supported CI
versions; do not retain Node 22 as a gating check.

---

Nitpick comments:
In `@zod-sockets/package.json`:
- Around line 39-42: Remove the "./dist/*" wildcard export from the package
exports configuration, while preserving the explicit "./integration" and
"./documentation" subpaths. Do not expose internal build chunks as public
deep-importable API unless they have dedicated export entries.

In `@zod-sockets/src/typescript-api.ts`:
- Around line 54-58: The JSDoc for the public makeUnion export incorrectly marks
it as internal. Remove the `@internal` tag from makeUnion while preserving its
existing description and implementation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b456b22-c9d4-4b94-b370-a36176957b13

📥 Commits

Reviewing files that changed from the base of the PR and between c45dffc and d45b6e9.

⛔ Files ignored due to path filters (3)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • zod-sockets/src/__snapshots__/index.spec.ts.snap is excluded by !**/*.snap
  • zod-sockets/src/__snapshots__/integration.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (21)
  • .github/workflows/node.js.yml
  • .pnpmfile.mjs
  • README.md
  • SECURITY.md
  • compat-test/express-zod-api.ts
  • compat-test/package.json
  • example/example-client.ts
  • example/generate-client.ts
  • example/generate-documentation.ts
  • zod-sockets/package.json
  • zod-sockets/src/attach.spec.ts
  • zod-sockets/src/attach.ts
  • zod-sockets/src/index.ts
  • zod-sockets/src/integration.spec.ts
  • zod-sockets/src/integration.ts
  • zod-sockets/src/startup-logo.ts
  • zod-sockets/src/typescript-api.ts
  • zod-sockets/src/zts-helpers.ts
  • zod-sockets/src/zts.spec.ts
  • zod-sockets/src/zts.ts
  • zod-sockets/tsdown.config.ts
💤 Files with no reviewable changes (3)
  • zod-sockets/src/index.ts
  • .pnpmfile.mjs
  • zod-sockets/src/zts-helpers.ts

Comment thread .github/workflows/node.js.yml

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed changes — a v7 major version bump spanning 15 commits: entrypoint splitting, typescript import consolidation, composite code generation in Integration, and attachSockets return type change.

  • Dedicated entrypointsIntegration and Documentation are now imported from zod-sockets/integration and zod-sockets/documentation respectively, removed from the barrel export. tsdown config updated to produce separate bundles.
  • Static typescript importTypescriptAPI class removed; ts, f, and helper functions exported directly from typescript-api.ts with a static import ts from "typescript". Integration constructor no longer accepts a typescript parameter, and Integration.create() is removed.
  • Composite generatorIntegration now generates TypeScript code by mixing raw template strings with ts.factory AST nodes, stored as Array<string | function> instead of ts.Node[].
  • attachSockets returns contexts — returns Record<namespace, IndependentContext> instead of Server, fulfilling discussion #801.
  • Infrastructure — Node 24 minimum bumped to 24.11.0; .pnpmfile.mjs removed (obsolete engine hack); startup logo simplified (coloring hardcoded, ramda dependency removed from logo); express-zod-api compat test updated to beta 5; v5 marked unsupported in SECURITY.md; lockfile bumped rolldown-plugin-dts and tsdown engines to >=24.11.0.

ℹ️ typescript is now a hard transitive dependency of the integration entrypoint

typescript-api.ts does import ts from "typescript", which is bundled into zod-sockets/integration. The peerDependenciesMeta still marks typescript as optional: true. Any user who imports zod-sockets/integration without typescript installed will hit a runtime crash with no install-time warning.

The main entrypoint (zod-sockets) does not transitively import typescript, so removing the optional flag would cause a harmless peer-dep warning for users who only use the core — which is the standard npm pattern for packages with optional feature-based entrypoints.

Technical details
# `typescript` peerDependenciesMeta is stale

## Affected sites
- `zod-sockets/package.json`:62-64 — `"peerDependenciesMeta": { "typescript": { "optional": true } }` should be removed or `typescript` should be moved to `dependencies`.

## Required outcome
- Remove `"typescript"` from `peerDependenciesMeta` so `typescript` becomes a non-optional peer dependency, or move `typescript` to `dependencies`.

## Suggested approach
Remove the `peerDependenciesMeta.typescript` entry:

```json
"peerDependenciesMeta": {
-   "typescript": {
-     "optional": true
-   }
}
```

This is the minimal change — the peer warning on the main entrypoint is tolerable and standard practice.

Pullfrog  | Fix it ➔View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@RobinTail RobinTail changed the title Next: v7 v7 is for Tortuguita Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking dependencies Pull requests that update a dependency file enhancement New feature or request refactoring release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant