ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
11 lines • 48 kB
JavaScript
import {a,b as b$1}from'./chunk-SYOG2WDC.mjs';import {b,f,e}from'./chunk-BOH3LKTH.mjs';import yi from'json5';import Ve from'picocolors';import {z}from'zod';import {useQuery,useQueryClient}from'@tanstack/react-query';import Ai,{useEffect}from'react';var si="https://www.wsdot.wa.gov",q={apiKey:process.env.WSDOT_ACCESS_TOKEN||"",domain:process.env.WSDOT_BASE_URL||si},ci=()=>q.apiKey,pi=()=>q.domain,ui=e=>{q.apiKey=e;},di=e=>{q.domain=e;},Re={getApiKey:ci,getDomain:pi,setApiKey:ui,setBaseUrl:di};var h=class extends Error{constructor(t,i){super(`${t} at position ${i}`),this.position=i;}};function ke(e){return /^[0-9A-Fa-f]$/.test(e)}function v(e){return e>="0"&&e<="9"}function Ue(e){return e>=" "}function I(e){return `,:[]/{}()
+`.includes(e)}function J(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_"||e==="$"}function K(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_"||e==="$"||e>="0"&&e<="9"}var _=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,Z=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function X(e){return `,[]/{}
+`.includes(e)}function Y(e){return P(e)||li.test(e)}var li=/^[[{\w-]$/;function Oe(e){return e===`
`||e==="\r"||e===" "||e==="\b"||e==="\f"}function w(e,t){let i=e.charCodeAt(t);return i===32||i===10||i===9||i===13}function We(e,t){let i=e.charCodeAt(t);return i===32||i===9||i===13}function Ne(e,t){let i=e.charCodeAt(t);return i===160||i>=8192&&i<=8202||i===8239||i===8287||i===12288}function P(e){return ee(e)||x(e)}function ee(e){return e==='"'||e==="\u201C"||e==="\u201D"}function te(e){return e==='"'}function x(e){return e==="'"||e==="\u2018"||e==="\u2019"||e==="`"||e==="\xB4"}function ie(e){return e==="'"}function T(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:false,a=e.lastIndexOf(t);return a!==-1?e.substring(0,a)+(i?"":e.substring(a+1)):e}function m(e,t){let i=e.length;if(!w(e,i-1))return e+t;for(;w(e,i-1);)i--;return e.substring(0,i)+t+e.substring(i)}function qe(e,t,i){return e.substring(0,t)+e.substring(t+i)}function xe(e){return /[,\n][ \t\r]*$/.test(e)}var mi={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},fi={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
`,r:"\r",t:" "};function re(e){let t=0,i="";E(["```","[```","{```"]),o()||ai(),E(["```","```]","```}"]);let s=C(",");for(s&&n(),Y(e[t])&&xe(i)?(s||(i=m(i,",")),Xt()):s&&(i=T(i,","));e[t]==="}"||e[t]==="]";)t++,n();if(t>=e.length)return i;ri();function o(){n();let r=_t()||Zt()||D()||Yt()||ei()||be(false)||ti();return n(),r}function n(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:true,c=t,p=d(r);do p=f(),p&&(p=d(r));while(p);return t>c}function d(r){let c=r?w:We,p="";for(;;)if(c(e,t))p+=e[t],t++;else if(Ne(e,t))p+=" ",t++;else break;return p.length>0?(i+=p,true):false}function f(){if(e[t]==="/"&&e[t+1]==="*"){for(;t<e.length&&!hi(e,t);)t++;return t+=2,true}if(e[t]==="/"&&e[t+1]==="/"){for(;t<e.length&&e[t]!==`
`;)t++;return true}return false}function E(r){if(U(r)){if(J(e[t]))for(;t<e.length&&K(e[t]);)t++;return n(),true}return false}function U(r){d(true);for(let c of r){let p=t+c.length;if(e.slice(t,p)===c)return t=p,true}return false}function C(r){return e[t]===r?(i+=e[t],t++,true):false}function y(r){return e[t]===r?(t++,true):false}function Kt(){return y("\\")}function De(){return n(),e[t]==="."&&e[t+1]==="."&&e[t+2]==="."?(t+=3,n(),y(","),true):false}function _t(){if(e[t]==="{"){i+="{",t++,n(),y(",")&&n();let r=true;for(;t<e.length&&e[t]!=="}";){let c;if(r?(c=true,r=false):(c=C(","),c||(i=m(i,",")),n()),De(),!(D()||be(true))){e[t]==="}"||e[t]==="{"||e[t]==="]"||e[t]==="["||e[t]===void 0?i=T(i,","):ni();break}n();let W=C(":"),F=t>=e.length;W||(Y(e[t])||F?i=m(i,":"):Te()),o()||(W||F?i+="null":Te());}return e[t]==="}"?(i+="}",t++):i=m(i,"}"),true}return false}function Zt(){if(e[t]==="["){i+="[",t++,n(),y(",")&&n();let r=true;for(;t<e.length&&e[t]!=="]";)if(r?r=false:C(",")||(i=m(i,",")),De(),!o()){i=T(i,",");break}return e[t]==="]"?(i+="]",t++):i=m(i,"]"),true}return false}function Xt(){let r=true,c=true;for(;c;)r?r=false:C(",")||(i=m(i,",")),c=o();c||(i=T(i,",")),i=`[
${i}
]`;}function D(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,p=e[t]==="\\";if(p&&(t++,p=true),P(e[t])){let W=te(e[t])?te:ie(e[t])?ie:x(e[t])?x:ee,F=t,M=i.length,u='"';for(t++;;){if(t>=e.length){let l=Ae(t-1);return !r&&I(e.charAt(l))?(t=F,i=i.substring(0,M),D(true)):(u=m(u,'"'),i+=u,true)}if(t===c)return u=m(u,'"'),i+=u,true;if(W(e[t])){let l=t,z=u.length;if(u+='"',t++,i+=u,n(false),r||t>=e.length||I(e[t])||P(e[t])||v(e[t]))return Ge(),true;let g=Ae(l-1),Me=e.charAt(g);if(Me===",")return t=F,i=i.substring(0,M),D(false,g);if(I(Me))return t=F,i=i.substring(0,M),D(true);i=i.substring(0,M),t=l+1,u=`${u.substring(0,z)}\\${u.substring(z)}`;}else if(r&&X(e[t])){if(e[t-1]===":"&&_.test(e.substring(F+1,t+2)))for(;t<e.length&&Z.test(e[t]);)u+=e[t],t++;return u=m(u,'"'),i+=u,Ge(),true}else if(e[t]==="\\"){let l=e.charAt(t+1);if(fi[l]!==void 0)u+=e.slice(t,t+2),t+=2;else if(l==="u"){let g=2;for(;g<6&&ke(e[t+g]);)g++;g===6?(u+=e.slice(t,t+6),t+=6):t+g>=e.length?t=e.length:oi();}else u+=l,t+=2;}else {let l=e.charAt(t);l==='"'&&e[t-1]!=="\\"?(u+=`\\${l}`,t++):Oe(l)?(u+=mi[l],t++):(Ue(l)||ii(l),u+=l,t++);}p&&Kt();}}return false}function Ge(){let r=false;for(n();e[t]==="+";){r=true,t++,n(),i=T(i,'"',true);let c=i.length;D()?i=qe(i,c,1):i=m(i,'"');}return r}function Yt(){let r=t;if(e[t]==="-"){if(t++,O())return H(r),true;if(!v(e[t]))return t=r,false}for(;v(e[t]);)t++;if(e[t]==="."){if(t++,O())return H(r),true;if(!v(e[t]))return t=r,false;for(;v(e[t]);)t++;}if(e[t]==="e"||e[t]==="E"){if(t++,(e[t]==="-"||e[t]==="+")&&t++,O())return H(r),true;if(!v(e[t]))return t=r,false;for(;v(e[t]);)t++;}if(!O())return t=r,false;if(t>r){let c=e.slice(r,t),p=/^0\d/.test(c);return i+=p?`"${c}"`:c,true}return false}function ei(){return G("true","true")||G("false","false")||G("null","null")||G("True","true")||G("False","false")||G("None","null")}function G(r,c){return e.slice(t,t+r.length)===r?(i+=c,t+=r.length,true):false}function be(r){let c=t;if(J(e[t])){for(;t<e.length&&K(e[t]);)t++;let p=t;for(;w(e,p);)p++;if(e[p]==="(")return t=p+1,o(),e[t]===")"&&(t++,e[t]===";"&&t++),true}for(;t<e.length&&!X(e[t])&&!P(e[t])&&(!r||e[t]!==":");)t++;if(e[t-1]===":"&&_.test(e.substring(c,t+2)))for(;t<e.length&&Z.test(e[t]);)t++;if(t>c){for(;w(e,t-1)&&t>0;)t--;let p=e.slice(c,t);return i+=p==="undefined"?"null":JSON.stringify(p),e[t]==='"'&&t++,true}}function ti(){if(e[t]==="/"){let r=t;for(t++;t<e.length&&(e[t]!=="/"||e[t-1]==="\\");)t++;return t++,i+=`"${e.substring(r,t)}"`,true}}function Ae(r){let c=r;for(;c>0&&w(e,c);)c--;return c}function O(){return t>=e.length||I(e[t])||w(e,t)}function H(r){i+=`${e.slice(r,t)}0`;}function ii(r){throw new h(`Invalid character ${JSON.stringify(r)}`,t)}function ri(){throw new h(`Unexpected character ${JSON.stringify(e[t])}`,t)}function ai(){throw new h("Unexpected end of json string",e.length)}function ni(){throw new h("Object key expected",t)}function Te(){throw new h("Colon expected",t)}function oi(){let r=e.slice(t,t+6);throw new h(`Invalid unicode character "${r}"`,t)}}function hi(e,t){return e[t]==="*"&&e[t+1]==="/"}var $e=e=>{try{return JSON.parse(e)}catch(t){try{let i=yi.parse(e);if(typeof i=="string"&&i===e)throw t;return i}catch{try{let a=re(e),s=JSON.parse(a);if(typeof s=="string"&&s===e)throw t;return s}catch{throw t}}}};var Qe=(e,t)=>{let i=e.split("/").pop()||e,a=t?JSON.stringify(t):"none",s=Ve.blue(`Calling ${i} with parameters ${a}...`);console.log(s);},Be=(e,t,i)=>{let a=Date.now()-t,s=Array.isArray(e)?e.length:1,o=(a/1e3).toFixed(1),n=(i/1024).toFixed(1),d=Ve.green(` Retrieved ${s} objects in ${o} sec (${n} kb).`);console.log(d);};var Le=(e,t)=>{if(!t){let[C]=e.split("?"),y=C.match(/\{[^}]+\}/g);if(y&&y.length>0)throw new Error(`Missing required URL parameters: ${y.join(", ")} in URL template: ${e}`);return e}let i=t,{path:a,query:s}=gi(e),o=wi(a,i),n=vi(s,i),d=n?`${o}?${n}`:o,[f]=d.split("?"),E=f.match(/\{[^}]+\}/g);if(E&&E.length>0)throw new Error(`Missing required URL parameters: ${E.join(", ")} in URL: ${d}`);let U=new URL(d);return Si(U),U.toString()},gi=e=>{let[t,i=""]=e.split("?");return {path:t,query:i}},wi=(e,t)=>{let i=e;for(let[a,s]of Object.entries(t)){let o=ae(s);i=i.replace(`{${a}}`,o);}return i},vi=(e,t)=>{let i=e;for(let[o,n]of Object.entries(t))if(n!=null){let d=ae(n);i=i.replace(new RegExp(`\\{${o}\\}`,"g"),d);}let a=i.match(/\{[^}]+\}/g);if(a&&a.length>0){for(let o of a){let n=o.slice(1,-1);i=i.replace(new RegExp(`[&?]${n}=${o}`,"g"),""),i=i.replace(new RegExp(`${o}=[^&]*&?`,"g"),""),i=i.replace(new RegExp(`&${o}=[^&]*`,"g"),"");}i=i.replace(/\{[^}]+\}/g,""),i=i.replace(/&&/g,"&"),i=i.replace(/[&?]$/,""),i=i.replace(/\?&/,"?");}let s=new URLSearchParams(i);for(let[o,n]of Object.entries(t))n!=null&&!s.has(o)&&s.set(o,ae(n));return s.toString()},Si=e=>{let t=Ci(e.toString()),i=Re.getApiKey(),a=t==="wsdot"?"AccessCode":"apiaccesscode";e.searchParams.set(a,i);},Ci=e=>e.toLowerCase().includes("/traffic/")?"wsdot":"wsf",ae=e=>e instanceof Date?e.toISOString():String(e);var $=(e,t)=>{let{message:i,status:a}=Di(e);return {name:"ApiError",message:i,status:a,context:{timestamp:new Date,endpoint:t,url:t}}},Ei=e=>e!==null&&typeof e=="object"&&"name"in e&&e.name==="ApiError",Di=e=>{if(e instanceof Error&&e.name==="ZodError"){let t=e;return {message:`Validation failed:
${z.prettifyError(t)}`}}if(e instanceof Error){let t=e.message.match(/HTTP (\d+)/),i=t?parseInt(t[1],10):void 0;return {message:e.message,status:i}}return {message:"An unexpected error occurred"}};var je=async e=>{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return t.text()},He=async e=>new Promise((t,i)=>{if(!document?.head){i(new Error("DOM environment not available"));return}let a=document.createElement("script"),s=`jsonp_${Date.now()}_${Math.random().toString(36).substring(2,11)}`,o=false,n=()=>{if(!o){o=true;try{a.parentNode?.removeChild(a);}catch{}window[s]&&delete window[s];}};setTimeout(()=>{n(),i(new Error("JSONP request timed out after 30 seconds"));},3e4);window[s]=f=>{n(),t(JSON.stringify(f));},a.onerror=()=>{n(),i(new Error("JSONP script failed to load"));},a.src=`${e}${e.includes("?")?"&":"?"}callback=${encodeURIComponent(s)}`,document.head.appendChild(a);});var ze=async(e,t,i="none",a="native")=>{let s=Date.now();i!=="none"&&Qe(e.endpoint,t);try{let o=Le(e.urlTemplate,t);i!=="none"&&console.log(`Fetching: ${o}`);let d=await(a==="jsonp"?He:je)(o),f=$e(d);return i!=="none"&&Be(f,s,d.length),f}catch(o){throw $(o,e.endpoint)}};var ne=async({endpoint:e,params:t,fetchMode:i="native",logMode:a="none",validate:s=false})=>{try{if(s&&t){if(!e.inputSchema)throw new Error("Validation requires schemas. This endpoint was built without schemas. Use the full build or import schemas from the /schemas subpath.");e.inputSchema.parse(t);}let o=await ze(e,t,a,i);if(s){if(!e.outputSchema)throw new Error("Validation requires schemas. This endpoint was built without schemas. Use the full build or import schemas from the /schemas subpath.");return e.outputSchema.parse(o)}else return b(o)}catch(o){throw o&&typeof o=="object"&&"name"in o&&o.name==="ApiError"?o:$(o,e.endpoint)}};var Je={name:"border-crossing-data",cacheStrategy:"FREQUENT",documentation:{summary:"Current wait times for Washington border crossings into Canada by crossing and lane type.",description:"Snapshot wait-time data for I-5, SR-543, SR-539, and SR-9 crossings, covering general, Nexus, and truck lanes.",useCases:["Plan trips into Canada based on current border wait times.","Compare wait times across crossings and lane types.","Show live wait-time information in traveler or operations dashboards."],updateFrequency:"1m"}};var oe={api:{name:"wsdot-border-crossings",baseUrl:"https://wsdot.wa.gov/Traffic/api/BorderCrossings/BorderCrossingsREST.svc"},endpointGroups:[Je]};var Ke={name:"bridge-clearances",cacheStrategy:"STATIC",documentation:{summary:"Vertical clearance measurements for Washington State bridges.",description:"Bridge height restrictions including location data, route associations, and clearance measurements in both feet-inches and inches formats.",useCases:["Plan commercial vehicle routes with height restrictions.","Verify clearance requirements for oversize load permits.","Identify bridge height limitations for route planning."],updateFrequency:"daily"}};var se={api:{name:"wsdot-bridge-clearances",baseUrl:"https://www.wsdot.wa.gov/traffic/api/bridges/clearancerest.svc"},endpointGroups:[Ke]};var _e={name:"cv-restriction-data",cacheStrategy:"STATIC",documentation:{summary:"Commercial vehicle restrictions for Washington State highways.",description:"Weight limits, height clearances, axle restrictions, and location details for bridge and road restrictions statewide.",useCases:["Check vehicle restrictions for commercial route planning.","Determine route feasibility and permit requirements.","Identify weight and height limitations for trucking operations."],updateFrequency:"daily"}};var Ze={name:"cv-restriction-data-with-id",cacheStrategy:"STATIC",documentation:{summary:"Commercial vehicle restrictions with unique identifiers for Washington State highways.",description:"Weight limits, height clearances, axle restrictions, and location details with unique tracking IDs for bridge and road restrictions statewide.",useCases:["Track specific restrictions using unique identifiers.","Monitor restriction changes over time.","Manage permit requirements with ID-based lookups."],updateFrequency:"daily"}};var ce={api:{name:"wsdot-commercial-vehicle-restrictions",baseUrl:"https://www.wsdot.wa.gov/traffic/api/cvrestrictions/cvrestrictionsrest.svc"},endpointGroups:[_e,Ze]};var Xe={name:"alertAreas",cacheStrategy:"FREQUENT",documentation:{summary:"Geographic map areas for filtering highway alerts by region.",description:"Area codes and names used to organize and filter highway alerts across Washington State geographic regions.",useCases:["Filter highway alerts by geographic map area.","Obtain valid area codes for alert queries.","Display regional alert organization in user interfaces."],updateFrequency:"5m"}};var Ye={name:"event-categories",cacheStrategy:"FREQUENT",documentation:{summary:"Event category classifications for highway alerts.",description:"Standardized category names used to classify and filter highway alerts by incident type, such as construction, collisions, maintenance, and weather events.",useCases:["Filter highway alerts by event category type.","Obtain valid category names for alert searches.","Categorize alerts in user interfaces by incident type."],updateFrequency:"5m"}};var et={name:"highwayAlerts",cacheStrategy:"FREQUENT",documentation:{summary:"Real-time highway alerts for traffic incidents and road conditions.",description:"Traffic incidents, construction, maintenance, and other events affecting Washington State highways, including location details, impact levels, timestamps, and event classifications.",useCases:["Monitor real-time traffic incidents and road conditions.","Plan alternate routes based on current highway alerts.","Display active alerts filtered by location, region, or category.","Track alert status and estimated resolution times."],updateFrequency:"5m"}};var pe={api:{name:"wsdot-highway-alerts",baseUrl:"https://www.wsdot.wa.gov/traffic/api/highwayalerts/highwayalertsrest.svc"},endpointGroups:[et,Xe,Ye]};var tt={name:"cameras",cacheStrategy:"STATIC",documentation:{summary:"Traffic monitoring cameras on Washington state highways.",description:"Camera locations, image URLs, status, and metadata for real-time traffic condition visibility.",useCases:["Display live camera feeds in traffic monitoring applications.","Show road conditions and weather impacts for route planning.","Provide visual traffic status in traveler information systems."],updateFrequency:"5m"}};var ue={api:{name:"wsdot-highway-cameras",baseUrl:"https://www.wsdot.wa.gov/traffic/api/highwaycameras/highwaycamerasrest.svc"},endpointGroups:[tt]};var it={name:"pass-conditions",cacheStrategy:"FREQUENT",documentation:{summary:"Real-time mountain pass conditions including weather, road status, and travel restrictions.",description:"Current conditions for 15 monitored mountain passes statewide, including temperature, elevation, weather, road surface conditions, and direction-specific travel restrictions.",useCases:["Assess pass conditions for winter travel planning.","Monitor weather and road conditions for route decisions.","Check travel restrictions and advisories before mountain travel."],updateFrequency:"15m"}};var de={api:{name:"wsdot-mountain-pass-conditions",baseUrl:"https://www.wsdot.wa.gov/traffic/api/mountainpassconditions/mountainpassconditionsrest.svc"},endpointGroups:[it]};var rt={name:"toll-rates",cacheStrategy:"FREQUENT",documentation:{summary:"Current toll rates for high occupancy vehicle (HOV) toll lanes statewide.",description:"Real-time toll pricing data including trip locations, current toll amounts, route associations, and update timestamps for congestion management.",useCases:["Calculate travel costs for HOV toll lane usage.","Display current toll amounts in navigation apps.","Make informed routing decisions based on toll pricing."],updateFrequency:"5m"}};var at={name:"toll-trip-info",cacheStrategy:"FREQUENT",documentation:{summary:"Trip route information for HOV toll lanes including locations, mileposts, and geometry.",description:"Reference data for toll trip routes including start and end locations, coordinates, mileposts, travel direction, and optional geometry data for mapping.",useCases:["Display toll trip routes on maps.","Look up trip information by location or route.","Build trip selection interfaces for toll rate queries."],updateFrequency:"daily"}};var nt={name:"toll-trip-rates",cacheStrategy:"FREQUENT",documentation:{summary:"Comprehensive toll rate data for all trips including pricing, messages, and version tracking.",description:"Container for toll trip rates supporting current data, historical date ranges, and version-specific queries. Includes pricing details, informational messages, and version tracking for transportation planning.",useCases:["Retrieve current toll rates for all trips.","Analyze historical toll pricing trends.","Access version-specific rate data for change tracking."],updateFrequency:"5m"}};var ot={name:"toll-trip-version",cacheStrategy:"FREQUENT",documentation:{summary:"Version and timestamp information for toll trip data.",description:"Current version number and timestamp for toll trip rates data, enabling cache management and data freshness tracking.",useCases:["Check data freshness before fetching toll rates.","Determine when to invalidate cached toll rate data.","Track version changes for toll trip rates."],updateFrequency:"5m"}};var le={api:{name:"wsdot-toll-rates",baseUrl:"https://www.wsdot.wa.gov/traffic/api/tollrates/tollratesrest.svc"},endpointGroups:[rt,at,nt,ot]};var st={name:"flow-data",cacheStrategy:"FREQUENT",documentation:{summary:"Real-time traffic flow conditions from sensor stations across Washington state.",description:"Current traffic flow readings, station locations, and timestamps for traffic monitoring and congestion detection.",useCases:["Monitor real-time traffic flow conditions across Washington highways.","Detect congestion and traffic patterns for route planning.","Display current traffic status in traveler information systems."],updateFrequency:"90s"}};var me={api:{name:"wsdot-traffic-flow",baseUrl:"https://www.wsdot.wa.gov/traffic/api/trafficflow/trafficflowrest.svc"},endpointGroups:[st]};var ct={name:"travel-time-routes",cacheStrategy:"STATIC",documentation:{summary:"Current and average travel times for major Washington State highway routes.",description:"Travel time data for routes in Seattle, Tacoma, and Snoqualmie Pass areas, including distance, start/end points, and comparison of current vs. average times.",useCases:["Plan travel routes and estimate arrival times.","Compare current conditions against historical averages to identify delays.","Optimize departure times based on real-time traffic conditions."],updateFrequency:"5m"}};var fe={api:{name:"wsdot-travel-times",baseUrl:"https://www.wsdot.wa.gov/traffic/api/traveltimes/traveltimesrest.svc"},endpointGroups:[ct]};var pt={name:"weather-info",cacheStrategy:"FREQUENT",documentation:{summary:"Current atmospheric conditions from WSDOT Road Weather Information System stations.",description:"Real-time temperature, humidity, wind conditions, visibility, barometric pressure, and precipitation data for transportation operations.",useCases:["Assess road weather conditions for transportation management.","Monitor atmospheric data for traveler safety decisions.","Display current weather conditions at specific stations.","Query historical weather data by station and time range."],updateFrequency:"5m"}};var he={api:{name:"wsdot-weather-information",baseUrl:"https://wsdot.wa.gov/traffic/api/WeatherInformation/WeatherInformationREST.svc"},endpointGroups:[pt]};var ut={name:"sub-surface-measurements",cacheStrategy:"FREQUENT",documentation:{summary:"Subsurface temperature measurements from sensors embedded below road pavement.",description:"Ground temperature data from sensors embedded 12-18 inches below road pavement surfaces for monitoring ground temperature conditions.",useCases:["Monitor ground temperature conditions for winter maintenance operations.","Predict road surface conditions based on subsurface temperature trends.","Assess travel safety by understanding ground temperature patterns."],updateFrequency:"5m"}};var dt={name:"surface-measurements",cacheStrategy:"FREQUENT",documentation:{summary:"Surface sensor measurements from WSDOT weather stations statewide.",description:"Pavement surface temperature, road freezing temperature, and road surface condition codes from sensors embedded in or mounted on road surfaces.",useCases:["Monitor road surface conditions for winter maintenance operations.","Assess pavement temperature and freezing risk.","Evaluate travel safety based on surface condition codes."],updateFrequency:"5m"}};var lt={name:"weather-readings",cacheStrategy:"FREQUENT",documentation:{summary:"Comprehensive weather readings from all WSDOT weather stations statewide.",description:"Complete weather data including air temperature, humidity, wind conditions, visibility, precipitation across multiple time periods, barometric pressure, snow depth, and surface/subsurface sensor measurements.",useCases:["Access complete weather station data for comprehensive analysis.","Monitor atmospheric and surface conditions for transportation operations.","Track precipitation across multiple time periods (1h, 3h, 6h, 12h, 24h)."],updateFrequency:"5m"}};var ye={api:{name:"wsdot-weather-readings",baseUrl:"https://www.wsdot.wa.gov/traffic/api/api"},endpointGroups:[lt,dt,ut]};var mt={name:"weather-stations",cacheStrategy:"FREQUENT",documentation:{summary:"Weather station metadata and location information for WSDOT Road Weather Information System stations statewide.",description:"Station identifiers, names, and location coordinates for weather stations that collect atmospheric and pavement condition data.",useCases:["Discover weather stations by location for weather data queries.","Identify station identifiers and names for weather data lookups.","Support location-based weather station searches."],updateFrequency:"daily"}};var ge={api:{name:"wsdot-weather-stations",baseUrl:"https://wsdot.wa.gov/traffic/api/WeatherStations/WeatherStationsREST.svc"},endpointGroups:[mt]};var ft={name:"fare-line-items",cacheStrategy:"STATIC",documentation:{summary:"Individual fare components for WSF routes by passenger and vehicle types.",description:"Fare line items represent pricing components for different passenger categories, vehicle types, and route combinations. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display fare options for different passenger and vehicle types.","Calculate journey costs based on route and demographics.","Build fare selection interfaces for ticket purchasing."],updateFrequency:"daily"}};var ht={name:"fare-totals",cacheStrategy:"STATIC",documentation:{summary:"Calculated fare totals for WSF journeys by selected line items and quantities.",description:"Fare totals combine individual fare line items with quantities to provide complete pricing breakdowns including departing, return, direction-independent, and grand totals. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Calculate complete journey costs for ticket pricing.","Display fare breakdowns by leg and total amount.","Process payment amounts for ferry trips."],updateFrequency:"daily"}};var yt={name:"terminal-combo",cacheStrategy:"STATIC",documentation:{summary:"Valid terminal pairings with fare collection procedures for WSF routes.",description:"Terminal combinations define which terminals are connected and describe where and how fares are collected for each route. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Determine route availability between terminal pairs.","Understand fare collection procedures for specific routes.","Build journey planning interfaces with fare collection details."],updateFrequency:"daily"}};var gt={name:"terminals",cacheStrategy:"STATIC",documentation:{summary:"WSF terminal facilities serving as departure and arrival points for ferry routes.",description:"Terminals represent port facilities with unique identifiers and names. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display terminal options for trip planning interfaces.","Determine valid terminal pairs for route selection.","Build terminal lookup and navigation features."],updateFrequency:"daily"}};var wt={name:"valid-date-range",cacheStrategy:"STATIC",documentation:{summary:"Validity period for published WSF fare data.",description:"Returns the start and end dates between which fare information is accurate and available for all ferry routes. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Determine valid trip dates for fare queries.","Validate trip date inputs before calling other endpoints.","Display available date ranges in booking interfaces."],updateFrequency:"daily"}};var we={api:{name:"wsf-fares",baseUrl:"https://www.wsdot.wa.gov/ferries/api/fares/rest"},endpointGroups:[a,wt,gt,yt,ft,ht]};var vt={name:"active-seasons",cacheStrategy:"STATIC",documentation:{summary:"Active schedule seasons for WSF routes.",description:"Scheduling periods defining when specific ferry schedules are active, including season dates, names, and PDF URLs.",useCases:["Identify which schedule seasons are currently active.","Determine valid date ranges for schedule queries.","Access printable schedule PDF documents."],updateFrequency:"daily"}};var V={name:"cache-flush-date-schedule",cacheStrategy:"STATIC",documentation:{summary:"Cache invalidation timestamp for wsf-schedule static data.",description:"Timestamp indicating when static endpoint data for the wsf-schedule API was last updated. Use to determine when to invalidate cached schedule information.",useCases:["Poll periodically to detect when static schedule data has changed.","Invalidate application cache when timestamp changes.","Optimize cache refresh strategy for schedule endpoints."],updateFrequency:"on-change"}},St={functionName:"fetchCacheFlushDateSchedule",endpoint:"/cacheflushdate",inputSchema:e,outputSchema:f,sampleParams:{},endpointDescription:"Get cache flush timestamp for static schedule data."};var Ct={name:"route-details",cacheStrategy:"STATIC",documentation:{summary:"Detailed ferry route information with service details.",description:"Comprehensive route data including terminals, crossing times, vessel assignments, alerts, and route-specific notes for trip planning.",useCases:["Display detailed route information for trip planning.","Show route alerts and service disruptions.","Access route-specific notes and accessibility information."],updateFrequency:"daily"}};var Ft={name:"routes",cacheStrategy:"STATIC",documentation:{summary:"Basic ferry route information between terminals.",description:"Route identification including route IDs, abbreviations, descriptions, region associations, and service disruptions.",useCases:["Discover available routes for a trip date.","Identify routes by terminal combinations.","Check for active service disruptions on routes."],updateFrequency:"daily"}};var Et={name:"sailings",cacheStrategy:"FREQUENT",documentation:{summary:"Scheduled ferry sailings organized by route and direction.",description:"Departure times organized by direction, days of operation, and date ranges, mirroring printed PDF schedule groupings.",useCases:["Display schedule structure with sailing groups.","Show departure times by direction and day type.","Access journey details with vessel assignments and terminal stops."],updateFrequency:"daily"}};var Dt={name:"schedule-alerts",cacheStrategy:"STATIC",documentation:{summary:"Service alerts and notifications for ferry schedules.",description:"Important notifications about ferry service including delays, cancellations, terminal updates, and service-related announcements. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display service alerts and notifications in rider apps.","Monitor schedule changes and disruptions.","Show route-specific and system-wide announcements."]}};var Gt={name:"scheduled-routes",cacheStrategy:"STATIC",documentation:{summary:"Ferry routes active for specific schedule seasons.",description:"Predefined routes with schedule identifiers, contingency adjustments, and service disruptions. Routes must be scheduled to run during a season to be included. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Discover routes active for a specific schedule season.","Filter routes by season using schedule IDs.","Identify contingency routes and service disruptions."]}};var bt={name:"schedules",cacheStrategy:"STATIC",documentation:{summary:"Complete sailing timetables for ferry routes.",description:"Sailing schedules including departure times, arrival times, vessel assignments, and route-specific information. Accounts for contingencies, sailing date ranges, and time adjustments. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Plan ferry travel with complete sailing timetables.","Look up departure and arrival times for specific dates.","View vessel assignments and loading rules for sailings."]}};var At={name:"schedule-today",cacheStrategy:"STATIC",documentation:{summary:"Today's sailing schedule for ferry routes.",description:"Current day sailing information with option to show only remaining departures. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Show today's remaining sailings in real-time apps.","Display current day schedule with all departures.","Filter to only upcoming sailings for today."]}};var Tt={name:"service-disruptions",cacheStrategy:"STATIC",documentation:{summary:"Service disruptions affecting ferry routes.",description:"Planned or unplanned interruptions to normal ferry service including cancellations, delays, and route changes. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Identify routes with service disruptions for a specific date.","Plan alternative travel arrangements when disruptions occur.","Display disruption information to passengers."]}};var Mt={name:"schedule-terminal-mates",cacheStrategy:"STATIC",documentation:{summary:"Arriving terminals that can be reached from a given departing terminal.",description:"Terminal mates represent valid destination terminals for a specific origin terminal and trip date. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Find valid destination terminals for trip planning interfaces.","Build terminal selection workflows for route queries.","Determine available terminal pairs for schedule lookups."],updateFrequency:"daily"}};var It={name:"schedule-terminals",cacheStrategy:"STATIC",documentation:{summary:"Ferry terminal facilities serving as departure and arrival points.",description:"Terminals represent dock locations where passengers board and disembark. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display terminal options for trip planning interfaces.","Determine valid terminal pairs for route selection.","Build terminal lookup and navigation features."],updateFrequency:"daily"}};var Pt={name:"time-adjustments",cacheStrategy:"STATIC",documentation:{summary:"Modifications to scheduled sailing times for specific dates.",description:"Time adjustments include additions, cancellations, and timing changes that deviate from published schedules, such as tidal cancellations. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display schedule deviations and special date modifications.","Identify tidal adjustments and event-based cancellations.","Show accurate sailing times that differ from published schedules."],updateFrequency:"daily"}};var Rt={name:"schedule-valid-date-range",cacheStrategy:"STATIC",documentation:{summary:"Validity period for published WSF schedule data.",description:"Returns the start and end dates between which schedule information is accurate and available for all ferry routes. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Determine valid trip dates for schedule queries.","Validate trip date inputs before calling other endpoints.","Display available date ranges in booking interfaces."],updateFrequency:"daily"}};var ve={api:{name:"wsf-schedule",baseUrl:"https://www.wsdot.wa.gov/ferries/api/schedule/rest"},endpointGroups:[vt,Et,V,Ct,Ft,Tt,Dt,bt,Gt,At,Rt,Mt,It,Pt]};var Q={name:"cache-flush-date-terminals",cacheStrategy:"STATIC",documentation:{summary:"Cache invalidation timestamp for static wsf-terminals data.",description:"Timestamp indicating when static endpoint data for the wsf-terminals API was last updated. Use this endpoint to determine when to invalidate cached terminal information. When the returned date changes, refresh your cached data. Polled automatically by ws-dottie useQuery hooks.",useCases:["Detect when static terminal data has changed and invalidate caches.","Poll periodically to refresh cached terminal information.","Coordinate cache invalidation across multiple terminal endpoints."]}},kt={functionName:"fetchCacheFlushDateTerminals",endpoint:"/cacheflushdate",inputSchema:e,outputSchema:f,sampleParams:{},endpointDescription:"Get cache flush timestamp for static terminals data."};var Ut={name:"terminal-basics",cacheStrategy:"STATIC",documentation:{summary:"Essential terminal details including identification, amenities, and regional assignments.",description:"Basic terminal information for Washington State Ferry terminals including IDs, names, abbreviations, amenities (overhead passenger loading, elevator, waiting room, food service, restrooms), and sort order. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display terminal lists with basic identification and amenities.","Plan ferry trips with accessibility and facility information.","Filter terminals by region or amenities."]}};var Ot={name:"terminal-bulletins",cacheStrategy:"STATIC",documentation:{summary:"Service alerts and notifications for ferry terminals.",description:"Important notices and alerts associated with Washington State Ferry terminals including service updates, travel advisories, and critical announcements. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display terminal alerts and service notices in rider apps.","Show travel advisories and critical announcements.","Monitor terminal-specific and system-wide notifications."]}};var Wt={name:"terminal-locations",cacheStrategy:"STATIC",documentation:{summary:"Geographical location data for ferry terminals.",description:"Location information for Washington State Ferry terminals including coordinates, addresses, map links, driving directions, and GIS zoom-level coordinates. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display terminal locations on maps and navigation systems.","Provide driving directions and address information.","Integrate with GIS mapping applications."]}};var Nt={name:"terminal-sailing-space",cacheStrategy:"STATIC",documentation:{summary:"Real-time sailing space availability for upcoming departures.",description:"Terminal condition data including drive-up and reservation spaces available for select departures, vessel information, and cancellation status. Data changes frequently (potentially every 5 seconds). Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group. Do not cache results for extended periods.",useCases:["Display real-time space availability for upcoming sailings.","Show drive-up and reservation space counts with color indicators.","Monitor vessel assignments and departure cancellations."]}};var qt={name:"terminal-transports",cacheStrategy:"STATIC",documentation:{summary:"Transportation options and parking information for terminals.",description:"Commuter information for Washington State Ferry terminals including parking details, vehicle-specific tips (motorcycle, truck, bike), airport information, transit links, and HOV/carpool information. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display parking information and rates for terminal planning.","Provide vehicle-specific tips for motorcycles, trucks, and bicycles.","Show transit links and airport connection information."]}};var xt={name:"terminal-verbose",cacheStrategy:"STATIC",documentation:{summary:"Comprehensive terminal information combining all terminal data types.",description:"Complete terminal information combining data from terminalBasics, terminalBulletins, terminalLocations, terminalTransports, and terminalWaitTimes endpoints. Includes identification, amenities, bulletins, locations, transportation info, sailing space, wait times, and additional details. Use when you need to reduce API calls and don't mind larger payloads. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Retrieve all terminal information in a single API call.","Reduce application chattiness when comprehensive data is needed.","Build integrated terminal information displays."]}};var $t={name:"terminal-wait-times",cacheStrategy:"STATIC",documentation:{summary:"Wait time conditions and travel tips for vehicles and passengers.",description:"Current wait conditions and travel recommendations for both vehicles and walk-on passengers at Washington State Ferry terminals including wait time notes, IVR notes, route information, and update dates. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display wait time information and arrival recommendations.","Provide travel tips for optimal departure timing.","Show route-specific wait time conditions."]}};var Se={api:{name:"wsf-terminals",baseUrl:"https://www.wsdot.wa.gov/ferries/api/terminals/rest"},endpointGroups:[Q,Ut,Ot,Wt,Nt,qt,xt,$t]};var B={name:"cache-flush-date-vessels",cacheStrategy:"STATIC",documentation:{summary:"Cache invalidation timestamp for static wsf-vessels data.",description:"Timestamp indicating when any static endpoint data for the wsf-vessels API was last updated. Use this endpoint to determine when to invalidate cached vessel information. When the returned date changes, refresh cached data from static endpoints.",useCases:["Poll periodically to detect when static vessel data has changed.","Invalidate application cache when timestamp changes.","Coordinate cache refresh across multiple static endpoints."]}},Vt={functionName:"fetchCacheFlushDateVessels",endpoint:"/cacheflushdate",inputSchema:e,outputSchema:f,sampleParams:{},endpointDescription:"Get cache flush timestamp for static wsf-vessels data."};var Qt={name:"vessel-accommodations",cacheStrategy:"STATIC",documentation:{summary:"Passenger amenities and accessibility features for WSF vessels.",description:"Amenity and accessibility information including ADA compliance, restrooms, food service, elevators, and connectivity. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display vessel amenities in passenger information systems.","Plan accessible travel for passengers with disabilities.","Compare vessel features for trip planning."]}};var Bt={name:"vessel-basics",cacheStrategy:"STATIC",documentation:{summary:"Essential vessel identification and operational status.",description:"Basic vessel information including names, IDs, classifications, and operational status. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display vessel lists and status in passenger information systems.","Track fleet operational status and availability.","Provide foundation data for vessel selection."]}};var Lt={name:"vessel-histories",cacheStrategy:"STATIC",documentation:{summary:"Historical sailing records for WSF vessels.",description:"Historical voyage data including departure and arrival terminals, scheduled and actual departure times, and estimated arrival times. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Analyze on-time performance and voyage patterns.","Track historical vessel movements and routes.","Generate reports on operational history."]}};var jt={name:"vessel-locations",cacheStrategy:"REALTIME",documentation:{summary:"Real-time vessel positions and status for WSF fleet.",description:"Current GPS coordinates, speed, heading, terminal assignments, and ETAs. This endpoint is real-time; cacheFlushDate is not used for cache invalidation.",useCases:["Show live vessel positions and ETAs in rider apps.","Monitor fleet operations in internal dashboards.","Calculate arrival times and voyage progress."],updateFrequency:"5s"}};var Ht={name:"vessel-stats",cacheStrategy:"STATIC",documentation:{summary:"Technical specifications and capacity data for WSF vessels.",description:"Physical dimensions, engine details, passenger and vehicle capacity, and construction information. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Compare vessel capabilities and specifications.","Plan capacity and route assignments.","Support maintenance and technical reference."]}};var zt={name:"vessel-verbose",cacheStrategy:"STATIC",documentation:{summary:"Complete vessel information combining basics, stats, and accommodations.",description:"Comprehensive vessel profiles combining identification, operational status, technical specifications, and amenities in a single response. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.",useCases:["Display complete vessel profiles in passenger information systems.","Reduce API calls by fetching all vessel data at once.","Support comprehensive vessel comparison and selection."]}};var Ce={api:{name:"wsf-vessels",baseUrl:"https://www.wsdot.wa.gov/ferries/api/vessels/rest"},endpointGroups:[B,Qt,Bt,Lt,jt,Ht,zt]};var R={[oe.api.name]:oe,[se.api.name]:se,[ce.api.name]:ce,[pe.api.name]:pe,[ue.api.name]:ue,[de.api.name]:de,[le.api.name]:le,[me.api.name]:me,[fe.api.name]:fe,[he.api.name]:he,[ye.api.name]:ye,[ge.api.name]:ge,[we.api.name]:we,[ve.api.name]:ve,[Se.api.name]:Se,[Ce.api.name]:Ce};function k(e,t,i){let a=e.api;return {api:a,group:t,endpoint:i.endpoint,functionName:i.functionName,inputSchema:i.inputSchema,outputSchema:i.outputSchema,sampleParams:i.sampleParams,endpointDescription:i.endpointDescription,cacheStrategy:t.cacheStrategy,urlTemplate:`${a.baseUrl}${i.endpoint}`,id:`${a.name}:${i.functionName}`}}function S(e,t,i){let a=k(e,t,i);return s=>ne({endpoint:a,...s})}var Mi=S(R["wsf-fares"],a,b$1),Ii=S(R["wsf-schedule"],V,St),Pi=S(R["wsf-terminals"],Q,kt),Ri=S(R["wsf-vessels"],B,Vt),ki={"wsf-fares":(e="native")=>async()=>{let t=await Mi({fetchMode:e,validate:false,logMode:"none"});return L(t)},"wsf-schedule":(e="native")=>async()=>{let t=await Ii({fetchMode:e,validate:false,logMode:"none"});return L(t)},"wsf-terminals":(e="native")=>async()=>{let t=await Pi({fetchMode:e,validate:false,logMode:"none"});return L(t)},"wsf-vessels":(e="native")=>async()=>{let t=await Ri({fetchMode:e,validate:false,logMode:"none"});return L(t)}},Ui=(e,t)=>{let i=ki[e];if(!i)throw new Error(`No cache flush strategy found for API: ${e}`);return i(t)},Oi={"wsf-fares":"wsf-fares:fetchCacheFlushDateFares","wsf-schedule":"wsf-schedule:fetchCacheFlushDateSchedule","wsf-terminals":"wsf-terminals:fetchCacheFlushDateTerminals","wsf-vessels":"wsf-vessels:fetchCacheFlushDateVessels"},L=e=>e?e instanceof Date?e.toISOString():String(e):"",Fe=(e,t)=>{let i=e==="wsf-fares"||e==="wsf-schedule"||e==="wsf-terminals"||e==="wsf-vessels",a=i?Ui(e,t):void 0,s=Oi[e]||"no-cache-flush";return useQuery({queryKey:[s,t],queryFn:a??(()=>Promise.resolve("")),refetchInterval:i?300*1e3:void 0,staleTime:i?300*1e3:void 0,refetchOnWindowFocus:false})},Ee=(e,t)=>{let i=useQueryClient(),a=Ai.useRef(null);useEffect(()=>{if(!t?.data)return;let s=t.data;a.current!==null&&a.current!==s&&i.invalidateQueries({queryKey:[e]}),a.current=s;},[t?.data,i,e]);};var j={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 Wi(e,t){let i=e.api.name.startsWith("wsf-");return t.name==="cache-flush-date"||t.name==="schedule-cache-flush-date"?false:i&&t.cacheStrategy==="STATIC"}function Ni(e,t,i){let a=k(e,t,i),s=S(e,t,i);return Wi(e,t)?(n,d)=>{let f=Fe(e.api.name,n?.fetchMode);return Ee(a.id,f),useQuery({queryKey:[a.id,n?.params??null],queryFn:()=>s(n),...j.STATIC,refetchOnWindowFocus:false,...d})}:(n,d)=>useQuery({queryKey:[a.id,n?.params??null],queryFn:()=>s(n),...j[t.cacheStrategy],refetchOnWindowFocus:false,...d})}
export{It as $,fe as A,pt as B,he as C,ut as D,dt as E,lt as F,ye as G,mt as H,ge as I,ft as J,ht as K,yt as L,gt as M,wt as N,we as O,vt as P,V as Q,St as R,Ct as S,Ft as T,Et as U,Dt as V,Gt as W,bt as X,At as Y,Tt as Z,Mt as _,Re as a,Pt as aa,Ei as b,Rt as ba,ne as c,ve as ca,Je as d,Q as da,oe as e,kt as ea,Ke as f,Ut as fa,se as g,Ot as ga,_e as h,Wt as ha,Ze as i,Nt as ia,ce as j,qt as ja,Xe as k,xt as ka,Ye as l,$t as la,et as m,Se as ma,pe as n,B as na,tt as o,Vt as oa,ue as p,Qt as pa,it as q,Bt as qa,de as r,Lt as ra,rt as s,jt as sa,at as t,Ht as ta,nt as u,zt as ua,ot as v,Ce as va,le as w,R as wa,st as x,k as xa,me as y,S as ya,ct as z,Ni as za};//# sourceMappingURL=chunk-FUK6FFHJ.mjs.map
//# sourceMappingURL=chunk-FUK6FFHJ.mjs.map