UNPKG

ws-dottie

Version:

Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration

3 lines 3.22 kB
import {e,d as d$1}from'./chunk-5LLDELJD.mjs';import {e as e$1,d as d$2,c}from'./chunk-FKVJZJHV.mjs';import {a}from'./chunk-XEHBQAFR.mjs';import {useQuery,useQueryClient}from'@tanstack/react-query';import W,{useEffect}from'react';var S,C=a(()=>{S={name:"wsf-fares",baseUrl:"https://www.wsdot.wa.gov/ferries/api/fares/rest"};});var I,M=a(()=>{I={name:"wsf-schedule",baseUrl:"https://www.wsdot.wa.gov/ferries/api/schedule/rest"};});var O,E=a(()=>{O={name:"wsf-terminals",baseUrl:"https://www.wsdot.wa.gov/ferries/api/terminals/rest"};});var v,T=a(()=>{v={name:"wsf-vessels",baseUrl:"https://www.wsdot.wa.gov/ferries/api/vessels/rest"};});function k(e,t){return {urlTemplate:`${e.baseUrl}${t.endpoint}`,endpoint:t.endpoint,inputSchema:t.inputSchema,outputSchema:t.outputSchema}}var D=a(()=>{});function u(e){let t=k(e.api,e.endpoint);return r=>d$1({endpoint:t,...r})}var m=a(()=>{e();D();});var $,_,L,G,K,j,f,l,H=a(()=>{e$1();C();M();E();T();e();$=new Set(["wsf-fares","wsf-schedule","wsf-terminals","wsf-vessels"]),_={"wsf-fares":S.baseUrl,"wsf-schedule":I.baseUrl,"wsf-terminals":O.baseUrl,"wsf-vessels":v.baseUrl},L=e=>({urlTemplate:`${e}/cacheflushdate`,endpoint:"/cacheflushdate",inputSchema:c,outputSchema:d$2}),G=async(e,t="native")=>{let r=_[e];if(!r)throw new Error(`No base URL found for API: ${e}`);let o=await d$1({endpoint:L(r),fetchMode:t,validate:false,logMode:"none"});return j(o)},K=e=>{let t=`fetchCacheFlushDate${e.replace("wsf-","").split("-").map(r=>r[0].toUpperCase()+r.slice(1)).join("")}`;return `${e}:${t}`},j=e=>e?e instanceof Date?e.toISOString():String(e):"",f=(e,t="native")=>{let r=$.has(e),o=r?K(e):"no-cache-flush";return useQuery({queryKey:[o,t],queryFn:r?()=>G(e,t):()=>Promise.resolve(""),refetchInterval:r?300*1e3:void 0,staleTime:r?300*1e3:void 0,refetchOnWindowFocus:false})},l=(e,t)=>{let r=useQueryClient(),o=W.useRef(null);useEffect(()=>{if(!t?.data)return;let a=t.data;o.current!==null&&o.current!==a&&r.invalidateQueries({queryKey:[e]}),o.current=a;},[t?.data,r,e]);};});var U=a(()=>{H();});var p,F=a(()=>{p={REALTIME:{staleTime:5e3,gcTime:36e5,refetchInterval:5e3,retry:2,retryDelay:5e3},FREQUENT:{staleTime:3e5,gcTime:36e5,refetchInterval:3e5,retry:3,retryDelay:5e3},MODERATE:{staleTime:36e5,gcTime:1728e5,refetchInterval:36e5,retry:3,retryDelay:6e4},STATIC:{staleTime:864e5,gcTime:1728e5,refetchInterval:864e5,retry:2,retryDelay:5e3}};});function y(e){let{apiName:t,endpointName:r,fetchFn:o,cacheStrategy:a}=e;return t.startsWith("wsf-")&&a==="STATIC"?(n,i)=>{let h=f(t,n?.fetchMode);return l(r,h),useQuery({queryKey:[r,n?.params??null],queryFn:()=>o(n),...p.STATIC,refetchOnWindowFocus:false,...i})}:(n,i)=>useQuery({queryKey:[r,n?.params??null],queryFn:()=>o(n),...p[a],refetchOnWindowFocus:false,...i})}var d=a(()=>{U();F();});function V(e){let{api:t,endpoint:r,getEndpointGroup:o}=e,a=u({api:t,endpoint:r});return {fetch:a,hook:(n,i)=>{let h=o().cacheStrategy;return y({apiName:t.name,endpointName:r.functionName,fetchFn:a,cacheStrategy:h})(n,i)}}}var N=a(()=>{m();d();});var z=a(()=>{N();m();d();F();}); export{S as a,C as b,I as c,M as d,O as e,E as f,v as g,T as h,V as i,z as j};//# sourceMappingURL=chunk-S7QEFA3B.mjs.map //# sourceMappingURL=chunk-S7QEFA3B.mjs.map