Files
SLA_SEPARACAO/patches/@tanstack+start-server-core+1.169.17.patch
joao.herculano 8c26c93732 corrige CSRF quebrando toda request via patch em start-server-core
@tanstack/start-server-core cria o defaultCsrfMiddleware de forma
incondicional assim que o módulo carrega. Isso caía numa corrida de
inicialização com o import circular que o nitro gera nos chunks de
SSR (server-D-dARpA7.mjs <-> server-D-dARpA72.mjs), fazendo toda
requisição no build de produção falhar com "createCsrfMiddleware is
not a function".

Reproduzido de forma determinística tanto com preset node-server
quanto cloudflare-module, e com múltiplas versões do nitro — não é
regressão de versão, é a inicialização eager em si colidindo com a
ordem de avaliação do ciclo.

Patch (via patch-package, reaplicado no postinstall) adia a criação
do defaultCsrfMiddleware para dentro de uma função, eliminando a
corrida sem mudar nenhum comportamento. Validado com reinstalação
limpa de node_modules + build + smoke test em /healthz, / e /auth.
2026-08-06 13:52:13 -03:00

27 lines
1.5 KiB
Diff

diff --git a/node_modules/@tanstack/start-server-core/dist/esm/createStartHandler.js b/node_modules/@tanstack/start-server-core/dist/esm/createStartHandler.js
index 34a1602..24ad3c6 100644
--- a/node_modules/@tanstack/start-server-core/dist/esm/createStartHandler.js
+++ b/node_modules/@tanstack/start-server-core/dist/esm/createStartHandler.js
@@ -18,7 +18,11 @@ function getStartResponseHeaders(opts) {
}
var entriesPromise;
var hasWarnedMissingCsrfMiddleware = false;
-var defaultCsrfMiddleware = createCsrfMiddleware({ filter: (ctx) => ctx.handlerType === "serverFn" });
+var _defaultCsrfMiddleware;
+function getDefaultCsrfMiddleware() {
+ if (!_defaultCsrfMiddleware) _defaultCsrfMiddleware = createCsrfMiddleware({ filter: (ctx) => ctx.handlerType === "serverFn" });
+ return _defaultCsrfMiddleware;
+}
var getCachedBaseManifest = createCachedBaseManifestLoader(() => getStartManifest());
var getProdBaseManifest = () => getCachedBaseManifest();
var getBaseManifest = process.env.TSS_DEV_SERVER === "true" ? getStartManifest : getProdBaseManifest;
@@ -235,7 +239,7 @@ function createStartHandler(cbOrOptions) {
];
const requestStartOptions = {
...startOptions,
- requestMiddleware: hasStartInstance ? startOptions.requestMiddleware : [defaultCsrfMiddleware],
+ requestMiddleware: hasStartInstance ? startOptions.requestMiddleware : [getDefaultCsrfMiddleware()],
serializationAdapters
};
const flattenedRequestMiddlewares = requestStartOptions.requestMiddleware ? flattenMiddlewares(requestStartOptions.requestMiddleware) : [];