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.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
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) : [];
|
||||
Reference in New Issue
Block a user