router-query/examples/run_preload.mjs
Version 663282b0ebbc.bb1 · MIT. This preview displays packaged text and does not execute code. Treat the contents as untrusted instructions.
← Return to resource and package checksum
import './deny_network.mjs';
import { networkAttempts } from './deny_network.mjs';
import { writeFile } from 'node:fs/promises';
import assert from 'node:assert/strict';
import { createRootRoute, createRoute, createMemoryHistory } from '@tanstack/react-router';
import { isServer } from '@tanstack/router-core/isServer';
import { QueryClient } from '@tanstack/react-query';
const observations=[],cases=[],clients=[],routers=[];
const tick=()=>new Promise(r=>setTimeout(r,0));
const check=(id,condition,evidence={})=>{assert.ok(condition,id);observations.push({id,passed:true,evidence});};
const bounded=async(p,label)=>{let timer;try{return await Promise.race([p,new Promise((_,reject)=>{timer=setTimeout(()=>reject(Error('Guard timeout: '+label)),4000);})]);}finally{clearTimeout(timer);}};
let failure;
try{
check('development-condition-allows-native-client-mode',isServer===undefined,{runtime:'Node',real_browser:false});
for(const [name,module,staleTime] of [['default-stale','preload-default',0],['zero-stale','preload-zero',0],['zero-fresh','preload-zero',Infinity]]){
const {router}=await import(`../output/modules/${module}.mjs?case=${name}`);routers.push(router);
const queryClient=new QueryClient({defaultOptions:{queries:{retry:false,gcTime:Infinity}}});clients.push(queryClient);
let loaderCalls=0,queryCalls=0;
const root=createRootRoute();
// Independent route and Query options: original block 10 has no loader.
const route=createRoute({getParentRoute:()=>root,path:'/preload',preloadGcTime:Infinity,loader:()=>{
loaderCalls++;
return queryClient.query({queryKey:['synthetic-preload'],staleTime,retry:false,gcTime:Infinity,queryFn:async()=>({sequence:++queryCalls})});
}});
router.update({routeTree:root.addChildren([route]),history:createMemoryHistory({initialEntries:['/']}),isServer:false,origin:'http://fixture.invalid',defaultPreloadGcTime:Infinity});
check(name+'-uses-real-native-client-mode',router.isServer===false);
await bounded(router.preloadRoute({to:'/preload'}),name+' first preload');await tick();
await bounded(router.preloadRoute({to:'/preload'}),name+' repeated preload');
cases.push({name,loader_calls:loaderCalls,query_function_calls:queryCalls,query_stale_time:staleTime===Infinity?'Infinity':staleTime,configured_default_preload_stale_time:router.options.defaultPreloadStaleTime??'unset (native fallback)',data:queryClient.getQueryData(['synthetic-preload'])});
}
const defaultCase=cases.find(x=>x.name==='default-stale'),zero=cases.find(x=>x.name==='zero-stale'),fresh=cases.find(x=>x.name==='zero-fresh');
check('default-router-preload-skips-repeated-loader',defaultCase.loader_calls===1&&defaultCase.query_function_calls===1,defaultCase);
check('zero-preload-reenters-loader-and-stale-query',zero.loader_calls===2&&zero.query_function_calls===2,zero);
check('zero-preload-does-not-force-fresh-query-to-refetch',fresh.loader_calls===2&&fresh.query_function_calls===1,fresh);
check('zero-js-network-attempts',networkAttempts.length===0,{os_level_network_audit:false});
}catch(error){failure={name:error.name,message:error.message,stack:error.stack};}
finally{for(const client of clients)client.clear();}
const result={checked_at:new Date().toISOString(),node:process.version,required_node_condition:'development',passed:!failure,observations,observation_count:observations.length,cases,network_attempts:networkAttempts,failure,scope:'Real native router preloader under Node with isServer:false; independent route and query options; no browser DOM, hover, network, or authentication',real_browser:false};
await writeFile('native-preload-results.json',JSON.stringify(result,null,2)+'\n');
console.log(JSON.stringify({passed:result.passed,observations:observations.length,cases,failure:failure?.message}));
if(failure)process.exitCode=1;