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 • 11.6 kB
JavaScript
import {e,c}from'./chunk-C3URDYFJ.mjs';import {a}from'./chunk-XEHBQAFR.mjs';import Ye from'json5';import Se from'picocolors';var Me,F,Be,_e,qe,He,te,oe=a(()=>{Me="https://www.wsdot.wa.gov",F={apiKey:process.env.WSDOT_ACCESS_TOKEN||"",domain:process.env.WSDOT_BASE_URL||Me},Be=()=>F.apiKey,_e=()=>F.domain,qe=e=>{F.apiKey=e;},He=e=>{F.domain=e;},te={getApiKey:Be,getDomain:_e,setApiKey:qe,setBaseUrl:He};});var m,se=a(()=>{m=class extends Error{constructor(r,n){super(`${r} at position ${n}`),this.position=n;}};});function ie(e){return /^[0-9A-Fa-f]$/.test(e)}function b(e){return e>="0"&&e<="9"}function ae(e){return e>=" "}function v(e){return `,:[]/{}()
+`.includes(e)}function J(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_"||e==="$"}function V(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_"||e==="$"||e>="0"&&e<="9"}function M(e){return `,[]/{}
+`.includes(e)}function B(e){return D(e)||ze.test(e)}function ce(e){return e===`
`||e==="\r"||e===" "||e==="\b"||e==="\f"}function y(e,r){let n=e.charCodeAt(r);return n===32||n===10||n===9||n===13}function ue(e,r){let n=e.charCodeAt(r);return n===32||n===9||n===13}function le(e,r){let n=e.charCodeAt(r);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function D(e){return _(e)||W(e)}function _(e){return e==='"'||e==="\u201C"||e==="\u201D"}function q(e){return e==='"'}function W(e){return e==="'"||e==="\u2018"||e==="\u2019"||e==="`"||e==="\xB4"}function H(e){return e==="'"}function O(e,r){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:false,s=e.lastIndexOf(r);return s!==-1?e.substring(0,s)+(n?"":e.substring(s+1)):e}function g(e,r){let n=e.length;if(!y(e,n-1))return e+r;for(;y(e,n-1);)n--;return e.substring(0,n)+r+e.substring(n)}function pe(e,r,n){return e.substring(0,r)+e.substring(r+n)}function fe(e){return /[,\n][ \t\r]*$/.test(e)}var Q,K,ze,de=a(()=>{Q=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,K=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;ze=/^[[{\w-]$/;});function z(e){let r=0,n="";k(["```","[```","{```"]),o()||Je(),k(["```","```]","```}"]);let c=C(",");for(c&&i(),B(e[r])&&fe(n)?(c||(n=g(n,",")),Fe()):c&&(n=O(n,","));e[r]==="}"||e[r]==="]";)r++,i();if(r>=e.length)return n;Le();function o(){i();let t=Te()||Ue()||$()||We()||Re()||Y(false)||Ie();return i(),t}function i(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:true,a=r,u=f(t);do u=h(),u&&(u=f(t));while(u);return r>a}function f(t){let a=t?y:ue,u="";for(;;)if(a(e,r))u+=e[r],r++;else if(le(e,r))u+=" ",r++;else break;return u.length>0?(n+=u,true):false}function h(){if(e[r]==="/"&&e[r+1]==="*"){for(;r<e.length&&!Xe(e,r);)r++;return r+=2,true}if(e[r]==="/"&&e[r+1]==="/"){for(;r<e.length&&e[r]!==`
`;)r++;return true}return false}function k(t){if(P(t)){if(J(e[r]))for(;r<e.length&&V(e[r]);)r++;return i(),true}return false}function P(t){f(true);for(let a of t){let u=r+a.length;if(e.slice(r,u)===a)return r=u,true}return false}function C(t){return e[r]===t?(n+=e[r],r++,true):false}function w(t){return e[r]===t?(r++,true):false}function Pe(){return w("\\")}function G(){return i(),e[r]==="."&&e[r+1]==="."&&e[r+2]==="."?(r+=3,i(),w(","),true):false}function Te(){if(e[r]==="{"){n+="{",r++,i(),w(",")&&i();let t=true;for(;r<e.length&&e[r]!=="}";){let a;if(t?(a=true,t=false):(a=C(","),a||(n=g(n,",")),i()),G(),!($()||Y(true))){e[r]==="}"||e[r]==="{"||e[r]==="]"||e[r]==="["||e[r]===void 0?n=O(n,","):Ve();break}i();let U=C(":"),E=r>=e.length;U||(B(e[r])||E?n=g(n,":"):ee()),o()||(U||E?n+="null":ee());}return e[r]==="}"?(n+="}",r++):n=g(n,"}"),true}return false}function Ue(){if(e[r]==="["){n+="[",r++,i(),w(",")&&i();let t=true;for(;r<e.length&&e[r]!=="]";)if(t?t=false:C(",")||(n=g(n,",")),G(),!o()){n=O(n,",");break}return e[r]==="]"?(n+="]",r++):n=g(n,"]"),true}return false}function Fe(){let t=true,a=true;for(;a;)t?t=false:C(",")||(n=g(n,",")),a=o();a||(n=O(n,",")),n=`[
${n}
]`;}function $(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,u=e[r]==="\\";if(u&&(r++,u=true),D(e[r])){let U=q(e[r])?q:H(e[r])?H:W(e[r])?W:_,E=r,A=n.length,l='"';for(r++;;){if(r>=e.length){let p=x(r-1);return !t&&v(e.charAt(p))?(r=E,n=n.substring(0,A),$(true)):(l=g(l,'"'),n+=l,true)}if(r===a)return l=g(l,'"'),n+=l,true;if(U(e[r])){let p=r,L=l.length;if(l+='"',r++,n+=l,i(false),t||r>=e.length||v(e[r])||D(e[r])||b(e[r]))return X(),true;let S=x(p-1),re=e.charAt(S);if(re===",")return r=E,n=n.substring(0,A),$(false,S);if(v(re))return r=E,n=n.substring(0,A),$(true);n=n.substring(0,A),r=p+1,l=`${l.substring(0,L)}\\${l.substring(L)}`;}else if(t&&M(e[r])){if(e[r-1]===":"&&Q.test(e.substring(E+1,r+2)))for(;r<e.length&&K.test(e[r]);)l+=e[r],r++;return l=g(l,'"'),n+=l,X(),true}else if(e[r]==="\\"){let p=e.charAt(r+1);if(Ge[p]!==void 0)l+=e.slice(r,r+2),r+=2;else if(p==="u"){let S=2;for(;S<6&&ie(e[r+S]);)S++;S===6?(l+=e.slice(r,r+6),r+=6):r+S>=e.length?r=e.length:Qe();}else l+=p,r+=2;}else {let p=e.charAt(r);p==='"'&&e[r-1]!=="\\"?(l+=`\\${p}`,r++):ce(p)?(l+=Ze[p],r++):(ae(p)||je(p),l+=p,r++);}u&&Pe();}}return false}function X(){let t=false;for(i();e[r]==="+";){t=true,r++,i(),n=O(n,'"',true);let a=n.length;$()?n=pe(n,a,1):n=g(n,'"');}return t}function We(){let t=r;if(e[r]==="-"){if(r++,T())return j(t),true;if(!b(e[r]))return r=t,false}for(;b(e[r]);)r++;if(e[r]==="."){if(r++,T())return j(t),true;if(!b(e[r]))return r=t,false;for(;b(e[r]);)r++;}if(e[r]==="e"||e[r]==="E"){if(r++,(e[r]==="-"||e[r]==="+")&&r++,T())return j(t),true;if(!b(e[r]))return r=t,false;for(;b(e[r]);)r++;}if(!T())return r=t,false;if(r>t){let a=e.slice(t,r),u=/^0\d/.test(a);return n+=u?`"${a}"`:a,true}return false}function Re(){return N("true","true")||N("false","false")||N("null","null")||N("True","true")||N("False","false")||N("None","null")}function N(t,a){return e.slice(r,r+t.length)===t?(n+=a,r+=t.length,true):false}function Y(t){let a=r;if(J(e[r])){for(;r<e.length&&V(e[r]);)r++;let u=r;for(;y(e,u);)u++;if(e[u]==="(")return r=u+1,o(),e[r]===")"&&(r++,e[r]===";"&&r++),true}for(;r<e.length&&!M(e[r])&&!D(e[r])&&(!t||e[r]!==":");)r++;if(e[r-1]===":"&&Q.test(e.substring(a,r+2)))for(;r<e.length&&K.test(e[r]);)r++;if(r>a){for(;y(e,r-1)&&r>0;)r--;let u=e.slice(a,r);return n+=u==="undefined"?"null":JSON.stringify(u),e[r]==='"'&&r++,true}}function Ie(){if(e[r]==="/"){let t=r;for(r++;r<e.length&&(e[r]!=="/"||e[r-1]==="\\");)r++;return r++,n+=`"${e.substring(t,r)}"`,true}}function x(t){let a=t;for(;a>0&&y(e,a);)a--;return a}function T(){return r>=e.length||v(e[r])||y(e,r)}function j(t){n+=`${e.slice(t,r)}0`;}function je(t){throw new m(`Invalid character ${JSON.stringify(t)}`,r)}function Le(){throw new m(`Unexpected character ${JSON.stringify(e[r])}`,r)}function Je(){throw new m("Unexpected end of json string",e.length)}function Ve(){throw new m("Object key expected",r)}function ee(){throw new m("Colon expected",r)}function Qe(){let t=e.slice(r,r+6);throw new m(`Invalid unicode character "${t}"`,r)}}function Xe(e,r){return e[r]==="*"&&e[r+1]==="/"}var Ze,Ge,ge=a(()=>{se();de();Ze={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},Ge={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
`,r:"\r",t:" "};});var he=a(()=>{ge();});var me,we=a(()=>{he();me=e=>{try{return JSON.parse(e)}catch(r){try{let n=Ye.parse(e);if(typeof n=="string"&&n===e)throw r;return n}catch{try{let s=z(e),c=JSON.parse(s);if(typeof c=="string"&&c===e)throw r;return c}catch{throw r}}}};});var ye,be,Ce=a(()=>{ye=(e,r)=>{let n=e.split("/").pop()||e,s=r?JSON.stringify(r):"none",c=Se.blue(`Calling ${n} with parameters ${s}...`);console.log(c);},be=(e,r,n)=>{let s=Date.now()-r,c=Array.isArray(e)?e.length:1,o=(s/1e3).toFixed(1),i=(n/1024).toFixed(1),f=Se.green(` Retrieved ${c} objects in ${o} sec (${i} kb).`);console.log(f);};});var Ee,xe,er,rr,nr,tr,Z,ke=a(()=>{oe();Ee=(e,r)=>{if(!r){let[C]=e.split("?"),w=C.match(/\{[^}]+\}/g);if(w&&w.length>0)throw new Error(`Missing required URL parameters: ${w.join(", ")} in URL template: ${e}`);return e}let n=r,{path:s,query:c}=xe(e),o=er(s,n),i=rr(c,n),f=i?`${o}?${i}`:o,[h]=f.split("?"),k=h.match(/\{[^}]+\}/g);if(k&&k.length>0)throw new Error(`Missing required URL parameters: ${k.join(", ")} in URL: ${f}`);let P=new URL(f);return nr(P),P.toString()},xe=e=>{let[r,n=""]=e.split("?");return {path:r,query:n}},er=(e,r)=>{let n=e;for(let[s,c]of Object.entries(r)){let o=Z(c);n=n.replace(`{${s}}`,o);}return n},rr=(e,r)=>{let n=e;for(let[o,i]of Object.entries(r))if(i!=null){let f=Z(i);n=n.replace(new RegExp(`\\{${o}\\}`,"g"),f);}let s=n.match(/\{[^}]+\}/g);if(s&&s.length>0){for(let o of s){let i=o.slice(1,-1);n=n.replace(new RegExp(`[&?]${i}=${o}`,"g"),""),n=n.replace(new RegExp(`${o}=[^&]*&?`,"g"),""),n=n.replace(new RegExp(`&${o}=[^&]*`,"g"),"");}n=n.replace(/\{[^}]+\}/g,""),n=n.replace(/&&/g,"&"),n=n.replace(/[&?]$/,""),n=n.replace(/\?&/,"?");}let c=new URLSearchParams(n);for(let[o,i]of Object.entries(r))i!=null&&!c.has(o)&&c.set(o,Z(i));return c.toString()},nr=e=>{let r=tr(e.toString()),n=te.getApiKey(),s=r==="wsdot"?"AccessCode":"apiaccesscode";e.searchParams.set(s,n);},tr=e=>e.toLowerCase().includes("/traffic/")?"wsdot":"wsf",Z=e=>e instanceof Date?e.toISOString():String(e);});var R,or,sr,I=a(()=>{R=(e,r)=>{let{message:n,status:s}=sr(e);return {name:"ApiError",message:n,status:s,context:{timestamp:new Date,endpoint:r,url:r}}},or=e=>e!==null&&typeof e=="object"&&"name"in e&&e.name==="ApiError",sr=e=>{if(e instanceof Error&&e.name==="ZodError")return {message:`Validation failed:
${e.issues.map(s=>{let c=s.path.join(".");return `${c?`${c}: `:""}${s.message}`}).join(`
`)}`};if(e instanceof Error){let r=e.message.match(/HTTP (\d+)/),n=r?parseInt(r[1],10):void 0;return {message:e.message,status:n}}return {message:"An unexpected error occurred"}};});var $e,Ne,Oe=a(()=>{$e=async e=>{let r=await fetch(e);if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);return r.text()},Ne=async e=>new Promise((r,n)=>{if(!document?.head){n(new Error("DOM environment not available"));return}let s=document.createElement("script"),c=`jsonp_${Date.now()}_${Math.random().toString(36).substring(2,11)}`,o=false,i=()=>{if(!o){o=true;try{s.parentNode?.removeChild(s);}catch{}window[c]&&delete window[c];}};setTimeout(()=>{i(),n(new Error("JSONP request timed out after 30 seconds"));},3e4);window[c]=h=>{i(),r(JSON.stringify(h));},s.onerror=()=>{i(),n(new Error("JSONP script failed to load"));},s.src=`${e}${e.includes("?")?"&":"?"}callback=${encodeURIComponent(c)}`,document.head.appendChild(s);});});var Ae,ve=a(()=>{we();Ce();ke();I();Oe();Ae=async(e,r,n="none",s="native")=>{let c=Date.now();n!=="none"&&ye(e.endpoint,r);try{let o=Ee(e.urlTemplate,r);n!=="none"&&console.log(`Fetching: ${o}`);let f=await(s==="jsonp"?Ne:$e)(o),h=me(f);return n!=="none"&&be(h,c,f.length),h}catch(o){throw R(o,e.endpoint)}};});var ir,De=a(()=>{e();ve();I();ir=async({endpoint:e,params:r,fetchMode:n="native",logMode:s="none",validate:c$1=false})=>{try{if(c$1&&r){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(r);}let o=await Ae(e,r,s,n);if(c$1){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 c(o)}catch(o){throw o&&typeof o=="object"&&"name"in o&&o.name==="ApiError"?o:R(o,e.endpoint)}};});var ar=a(()=>{De();I();});export{te as a,oe as b,or as c,ir as d,ar as e};//# sourceMappingURL=chunk-5LLDELJD.mjs.map
//# sourceMappingURL=chunk-5LLDELJD.mjs.map