ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
10 lines • 12.1 kB
JavaScript
;var chunkEAVYUQDY_js=require('./chunk-EAVYUQDY.js'),chunkXD2OIZAB_js=require('./chunk-XD2OIZAB.js'),Ye=require('json5'),Se=require('picocolors'),zod=require('zod');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Ye__default=/*#__PURE__*/_interopDefault(Ye);var Se__default=/*#__PURE__*/_interopDefault(Se);var Be,F,Me,_e,qe,He;exports.a=void 0;var oe=chunkXD2OIZAB_js.a(()=>{Be="https://www.wsdot.wa.gov",F={apiKey:process.env.WSDOT_ACCESS_TOKEN||"",domain:process.env.WSDOT_BASE_URL||Be},Me=()=>F.apiKey,_e=()=>F.domain,qe=e=>{F.apiKey=e;},He=e=>{F.domain=e;},exports.a={getApiKey:Me,getDomain:_e,setApiKey:qe,setBaseUrl:He};});var m,se=chunkXD2OIZAB_js.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 B(e){return `,[]/{}
+`.includes(e)}function M(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,a=e.lastIndexOf(r);return a!==-1?e.substring(0,a)+(n?"":e.substring(a+1)):e}function h(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=chunkXD2OIZAB_js.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 u=E(",");for(u&&s(),M(e[r])&&fe(n)?(u||(n=h(n,",")),Fe()):u&&(n=O(n,","));e[r]==="}"||e[r]==="]";)r++,s();if(r>=e.length)return n;Je();function o(){s();let t=Te()||Ue()||N()||We()||Re()||Y(false)||Ie();return s(),t}function s(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:true,i=r,c=f(t);do c=g(),c&&(c=f(t));while(c);return r>i}function f(t){let i=t?y:ue,c="";for(;;)if(i(e,r))c+=e[r],r++;else if(le(e,r))c+=" ",r++;else break;return c.length>0?(n+=c,true):false}function g(){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 s(),true}return false}function P(t){f(true);for(let i of t){let c=r+i.length;if(e.slice(r,c)===i)return r=c,true}return false}function E(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 s(),e[r]==="."&&e[r+1]==="."&&e[r+2]==="."?(r+=3,s(),w(","),true):false}function Te(){if(e[r]==="{"){n+="{",r++,s(),w(",")&&s();let t=true;for(;r<e.length&&e[r]!=="}";){let i;if(t?(i=true,t=false):(i=E(","),i||(n=h(n,",")),s()),G(),!(N()||Y(true))){e[r]==="}"||e[r]==="{"||e[r]==="]"||e[r]==="["||e[r]===void 0?n=O(n,","):Ve();break}s();let U=E(":"),C=r>=e.length;U||(M(e[r])||C?n=h(n,":"):ee()),o()||(U||C?n+="null":ee());}return e[r]==="}"?(n+="}",r++):n=h(n,"}"),true}return false}function Ue(){if(e[r]==="["){n+="[",r++,s(),w(",")&&s();let t=true;for(;r<e.length&&e[r]!=="]";)if(t?t=false:E(",")||(n=h(n,",")),G(),!o()){n=O(n,",");break}return e[r]==="]"?(n+="]",r++):n=h(n,"]"),true}return false}function Fe(){let t=true,i=true;for(;i;)t?t=false:E(",")||(n=h(n,",")),i=o();i||(n=O(n,",")),n=`[
${n}
]`;}function N(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,c=e[r]==="\\";if(c&&(r++,c=true),D(e[r])){let U=q(e[r])?q:H(e[r])?H:W(e[r])?W:_,C=r,A=n.length,l='"';for(r++;;){if(r>=e.length){let p=x(r-1);return !t&&v(e.charAt(p))?(r=C,n=n.substring(0,A),N(true)):(l=h(l,'"'),n+=l,true)}if(r===i)return l=h(l,'"'),n+=l,true;if(U(e[r])){let p=r,J=l.length;if(l+='"',r++,n+=l,s(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=C,n=n.substring(0,A),N(false,S);if(v(re))return r=C,n=n.substring(0,A),N(true);n=n.substring(0,A),r=p+1,l=`${l.substring(0,J)}\\${l.substring(J)}`;}else if(t&&B(e[r])){if(e[r-1]===":"&&Q.test(e.substring(C+1,r+2)))for(;r<e.length&&K.test(e[r]);)l+=e[r],r++;return l=h(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)||Le(p),l+=p,r++);}c&&Pe();}}return false}function X(){let t=false;for(s();e[r]==="+";){t=true,r++,s(),n=O(n,'"',true);let i=n.length;N()?n=pe(n,i,1):n=h(n,'"');}return t}function We(){let t=r;if(e[r]==="-"){if(r++,T())return L(t),true;if(!b(e[r]))return r=t,false}for(;b(e[r]);)r++;if(e[r]==="."){if(r++,T())return L(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 L(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 i=e.slice(t,r),c=/^0\d/.test(i);return n+=c?`"${i}"`:i,true}return false}function Re(){return $("true","true")||$("false","false")||$("null","null")||$("True","true")||$("False","false")||$("None","null")}function $(t,i){return e.slice(r,r+t.length)===t?(n+=i,r+=t.length,true):false}function Y(t){let i=r;if(j(e[r])){for(;r<e.length&&V(e[r]);)r++;let c=r;for(;y(e,c);)c++;if(e[c]==="(")return r=c+1,o(),e[r]===")"&&(r++,e[r]===";"&&r++),true}for(;r<e.length&&!B(e[r])&&!D(e[r])&&(!t||e[r]!==":");)r++;if(e[r-1]===":"&&Q.test(e.substring(i,r+2)))for(;r<e.length&&K.test(e[r]);)r++;if(r>i){for(;y(e,r-1)&&r>0;)r--;let c=e.slice(i,r);return n+=c==="undefined"?"null":JSON.stringify(c),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 i=t;for(;i>0&&y(e,i);)i--;return i}function T(){return r>=e.length||v(e[r])||y(e,r)}function L(t){n+=`${e.slice(t,r)}0`;}function Le(t){throw new m(`Invalid character ${JSON.stringify(t)}`,r)}function Je(){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,he=chunkXD2OIZAB_js.a(()=>{se();de();Ze={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},Ge={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
`,r:"\r",t:" "};});var ge=chunkXD2OIZAB_js.a(()=>{he();});var me,we=chunkXD2OIZAB_js.a(()=>{ge();me=e=>{try{return JSON.parse(e)}catch(r){try{let n=Ye__default.default.parse(e);if(typeof n=="string"&&n===e)throw r;return n}catch{try{let a=z(e),u=JSON.parse(a);if(typeof u=="string"&&u===e)throw r;return u}catch{throw r}}}};});var ye,be,Ee=chunkXD2OIZAB_js.a(()=>{ye=(e,r)=>{let n=e.split("/").pop()||e,a=r?JSON.stringify(r):"none",u=Se__default.default.blue(`Calling ${n} with parameters ${a}...`);console.log(u);},be=(e,r,n)=>{let a=Date.now()-r,u=Array.isArray(e)?e.length:1,o=(a/1e3).toFixed(1),s=(n/1024).toFixed(1),f=Se__default.default.green(` Retrieved ${u} objects in ${o} sec (${s} kb).`);console.log(f);};});var Ce,xe,er,rr,nr,tr,Z,ke=chunkXD2OIZAB_js.a(()=>{oe();Ce=(e,r)=>{if(!r){let[E]=e.split("?"),w=E.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:a,query:u}=xe(e),o=er(a,n),s=rr(u,n),f=s?`${o}?${s}`:o,[g]=f.split("?"),k=g.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[a,u]of Object.entries(r)){let o=Z(u);n=n.replace(`{${a}}`,o);}return n},rr=(e,r)=>{let n=e;for(let[o,s]of Object.entries(r))if(s!=null){let f=Z(s);n=n.replace(new RegExp(`\\{${o}\\}`,"g"),f);}let a=n.match(/\{[^}]+\}/g);if(a&&a.length>0){for(let o of a){let s=o.slice(1,-1);n=n.replace(new RegExp(`[&?]${s}=${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 u=new URLSearchParams(n);for(let[o,s]of Object.entries(r))s!=null&&!u.has(o)&&u.set(o,Z(s));return u.toString()},nr=e=>{let r=tr(e.toString()),n=exports.a.getApiKey(),a=r==="wsdot"?"AccessCode":"apiaccesscode";e.searchParams.set(a,n);},tr=e=>e.toLowerCase().includes("/traffic/")?"wsdot":"wsf",Z=e=>e instanceof Date?e.toISOString():String(e);});var R;exports.c=void 0;var ir,I=chunkXD2OIZAB_js.a(()=>{R=(e,r)=>{let{message:n,status:a}=ir(e);return {name:"ApiError",message:n,status:a,context:{timestamp:new Date,endpoint:r,url:r}}},exports.c=e=>e!==null&&typeof e=="object"&&"name"in e&&e.name==="ApiError",ir=e=>{if(e instanceof Error&&e.name==="ZodError"){let r=e;return {message:`Validation failed:
${zod.z.prettifyError(r)}`}}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 Ne,$e,Oe=chunkXD2OIZAB_js.a(()=>{Ne=async e=>{let r=await fetch(e);if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);return r.text()},$e=async e=>new Promise((r,n)=>{if(!document?.head){n(new Error("DOM environment not available"));return}let a=document.createElement("script"),u=`jsonp_${Date.now()}_${Math.random().toString(36).substring(2,11)}`,o=false,s=()=>{if(!o){o=true;try{a.parentNode?.removeChild(a);}catch{}window[u]&&delete window[u];}};setTimeout(()=>{s(),n(new Error("JSONP request timed out after 30 seconds"));},3e4);window[u]=g=>{s(),r(JSON.stringify(g));},a.onerror=()=>{s(),n(new Error("JSONP script failed to load"));},a.src=`${e}${e.includes("?")?"&":"?"}callback=${encodeURIComponent(u)}`,document.head.appendChild(a);});});var Ae,ve=chunkXD2OIZAB_js.a(()=>{we();Ee();ke();I();Oe();Ae=async(e,r,n="none",a="native")=>{let u=Date.now();n!=="none"&&ye(e.endpoint,r);try{let o=Ce(e.urlTemplate,r);n!=="none"&&console.log(`Fetching: ${o}`);let f=await(a==="jsonp"?$e:Ne)(o),g=me(f);return n!=="none"&&be(g,u,f.length),g}catch(o){throw R(o,e.endpoint)}};});exports.d=void 0;var De=chunkXD2OIZAB_js.a(()=>{chunkEAVYUQDY_js.e();ve();I();exports.d=async({endpoint:e,params:r,fetchMode:n="native",logMode:a="none",validate:u=false})=>{try{if(u&&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,a,n);if(u){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 chunkEAVYUQDY_js.c(o)}catch(o){throw o&&typeof o=="object"&&"name"in o&&o.name==="ApiError"?o:R(o,e.endpoint)}};});var cr=chunkXD2OIZAB_js.a(()=>{De();I();});exports.b=oe;exports.e=cr;//# sourceMappingURL=chunk-FGRPKAJW.js.map
//# sourceMappingURL=chunk-FGRPKAJW.js.map