Skip to content

Conversation

@schiller-manuel
Copy link
Contributor

@schiller-manuel schiller-manuel commented Dec 20, 2025

fixes #6029

Summary by CodeRabbit

  • New Features

    • Added re-exported server function examples (named and wildcard) that surface middleware-applied context when invoked.
  • Compiler

    • Enhanced compiler resolution to support re-exported server functions (named and export * patterns).
  • Tests

    • Added end-to-end tests confirming middleware executes and context is propagated for re-exported server functions.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 20, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Adds test fixtures and e2e tests for re-exported server-function factories and extends the server-fn compiler to track and resolve export * / re-exported named exports so middleware attached to factories runs correctly when factories are re-exported.

Changes

Cohort / File(s) Summary
Re-export wrapper modules
e2e/react-start/server-functions/src/routes/factory/-functions/reexportWrapper.ts, e2e/react-start/server-functions/src/routes/factory/-functions/starReexportWrapper.ts
New wrapper modules that define middleware which logs execution and augments request context; each exports a server-fn factory with middleware applied.
Re-export index modules
e2e/react-start/server-functions/src/routes/factory/-functions/reexportIndex.ts, e2e/react-start/server-functions/src/routes/factory/-functions/starReexportIndex.ts
New small modules that re-export the wrapper factories using named (export { ... } from) and star (export * from) syntax to exercise re-export behavior.
Factory functions (tests target)
e2e/react-start/server-functions/src/routes/factory/-functions/functions.ts
Added reexportedFactoryFn and starReexportedFactoryFn that call the re-exported wrapper factories and return name + context for assertions.
Route test harness updates
e2e/react-start/server-functions/src/routes/factory/index.tsx
Imported the two new factory functions and included them in the route's test data so UI buttons trigger the re-exported factories.
E2E tests
e2e/react-start/server-functions/tests/server-functions.spec.ts
Added two end-to-end tests asserting middleware runs and context contains middleware markers for both named and star re-export styles.
Compiler — re-export resolution
packages/start-plugin-core/src/create-server-fn-plugin/compiler.ts
Module resolution extended: ModuleInfo gains reExportAllSources: string[]; ingestion collects export * sources and export { ... } from bindings; resolution now falls back to scanning re-export sources and resolving bindings recursively so re-exported factories retain middleware.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Pay close attention to packages/start-plugin-core/src/create-server-fn-plugin/compiler.ts (reExportAllSources propagation, caching, recursion, circular re-export edge cases).
  • Verify new ingestion logic correctly creates import bindings for named re-exports and that resolution paths preserve middleware metadata.
  • Review e2e tests and wrapper modules for timing/async reliability and accurate assertions.

Possibly related PRs

Suggested reviewers

  • chorobin

Poem

🐰 I hopped through re-exports wide and far,
Middleware lit my tiny star—
Named or starred, the path now true,
Context blooms and tunnels through. ✨

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: properly track re-exports of server function factories' directly and clearly describes the main change: fixing the tracking of re-exported server function factories to ensure middleware executes correctly.
Linked Issues check ✅ Passed The PR addresses all coding requirements from issue #6029: it implements proper middleware execution tracking for server function factories re-exported via both 'export { } from' and 'export * from' syntaxes through compiler enhancements and adds comprehensive E2E tests validating both re-export patterns.
Out of Scope Changes check ✅ Passed All changes are directly scoped to fixing re-export tracking: compiler enhancements to track reExportAllSources, test infrastructure files for validation, and no unrelated modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3844f82 and 0348283.

📒 Files selected for processing (8)
  • e2e/react-start/server-functions/src/routes/factory/-functions/functions.ts (2 hunks)
  • e2e/react-start/server-functions/src/routes/factory/-functions/reexportIndex.ts (1 hunks)
  • e2e/react-start/server-functions/src/routes/factory/-functions/reexportWrapper.ts (1 hunks)
  • e2e/react-start/server-functions/src/routes/factory/-functions/starReexportIndex.ts (1 hunks)
  • e2e/react-start/server-functions/src/routes/factory/-functions/starReexportWrapper.ts (1 hunks)
  • e2e/react-start/server-functions/src/routes/factory/index.tsx (2 hunks)
  • e2e/react-start/server-functions/tests/server-functions.spec.ts (1 hunks)
  • packages/start-plugin-core/src/create-server-fn-plugin/compiler.ts (6 hunks)

Comment @coderabbitai help to get the list of available commands and usage tips.

@nx-cloud
Copy link

nx-cloud bot commented Dec 20, 2025

View your CI Pipeline Execution ↗ for commit 0348283

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 9m 35s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 22s View ↗

☁️ Nx Cloud last updated this comment at 2025-12-20 23:14:33 UTC

@pkg-pr-new
Copy link

pkg-pr-new bot commented Dec 20, 2025

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/arktype-adapter@6164

@tanstack/directive-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/directive-functions-plugin@6164

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/TanStack/router/@tanstack/eslint-plugin-router@6164

@tanstack/history

npm i https://pkg.pr.new/TanStack/router/@tanstack/history@6164

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/nitro-v2-vite-plugin@6164

@tanstack/react-router

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router@6164

@tanstack/react-router-devtools

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router-devtools@6164

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router-ssr-query@6164

@tanstack/react-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start@6164

@tanstack/react-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-client@6164

@tanstack/react-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-server@6164

@tanstack/router-cli

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-cli@6164

@tanstack/router-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-core@6164

@tanstack/router-devtools

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-devtools@6164

@tanstack/router-devtools-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-devtools-core@6164

@tanstack/router-generator

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-generator@6164

@tanstack/router-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-plugin@6164

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-ssr-query-core@6164

@tanstack/router-utils

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-utils@6164

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/router-vite-plugin@6164

@tanstack/server-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/server-functions-plugin@6164

@tanstack/solid-router

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-router@6164

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-router-devtools@6164

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-router-ssr-query@6164

@tanstack/solid-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start@6164

@tanstack/solid-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-client@6164

@tanstack/solid-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-server@6164

@tanstack/start-client-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-client-core@6164

@tanstack/start-plugin-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-plugin-core@6164

@tanstack/start-server-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-core@6164

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-static-server-functions@6164

@tanstack/start-storage-context

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-storage-context@6164

@tanstack/valibot-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/valibot-adapter@6164

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/TanStack/router/@tanstack/virtual-file-routes@6164

@tanstack/vue-router

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-router@6164

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-router-devtools@6164

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-router-ssr-query@6164

@tanstack/vue-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-start@6164

@tanstack/vue-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-start-client@6164

@tanstack/vue-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-start-server@6164

@tanstack/zod-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/zod-adapter@6164

commit: 3844f82

@schiller-manuel schiller-manuel merged commit 92333c9 into main Dec 20, 2025
4 of 5 checks passed
@schiller-manuel schiller-manuel deleted the fix-6029 branch December 20, 2025 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Middleware doesn't run when server function factory is re-exported using export { } from or export * from syntax

2 participants