@tomtom-org/maps-sdk 0.54.0 → 0.55.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/core/dist/core.es.js +1 -1
- package/core/dist/core.es.js.map +1 -1
- package/core/dist/index.d.ts +7 -7
- package/map/dist/index.d.ts +1349 -133
- package/map/dist/map.es.js +1 -1
- package/map/dist/map.es.js.map +1 -1
- package/map/package.json +1 -0
- package/package.json +1 -1
- package/services/dist/index.d.ts +79 -167
- package/services/dist/services.es.js +1 -1
- package/services/dist/services.es.js.map +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TomTomConfig as e,areaAnalyticsMetricKeys as t,avoidableTypes as n,bboxFromCoordsArray as r,bboxFromGeoJSON as a,bboxOnlyIfWithArea as o,currentTypes as i,generateId as s,generateTomTomHeaders as c,geographyTypes as l,getPosition as u,getPositionStrict as d,getRoutePlanningLocationType as p,iconToTrafficIncidentCategory as m,indexedMagnitudes as g,inputSectionTypesWithGuidance as h,isProxyCredentialsMode as y,mergeFromGlobal as f,plugTypes as T,poiCategories as R,poiCategoriesToID as b,poiIDsToCategories as S,toPointGeometry as I,trafficIncidentRequestCategories as C,trafficIncidentToIconCategory as A,views as v}from"@tomtom-org/maps-sdk/core";import{z as P}from"zod";import{isNil as L,omit as M}from"lodash-es";var E=/* @__PURE__ */function(e){return e[e.TOO_MANY_REQUESTS=429]="TOO_MANY_REQUESTS",e[e.FORBIDDEN=403]="FORBIDDEN",e}({}),D=class e extends Error{constructor(t,n,r){super(t),this.service=n,this.issues=r,Error.captureStackTrace&&Error.captureStackTrace(this,e)}},w={[E.TOO_MANY_REQUESTS]:"Too Many Requests: The API Key is over QPS (Queries per second)",[E.FORBIDDEN]:"Request failed with status code 403"},x=class extends D{constructor(e,t,n){super(e,t),this.status=n,this.status&&w[this.status]&&(this.message=w[this.status])}},N=class extends D{constructor(e,t){super("The operation was aborted.",e),this.name="AbortError",this.cause=t}},O=(e,t)=>{const{data:n,message:r,status:a}=e;return new x(n?.error||n?.errorText||r,t,a)},_=(e,t,n,r)=>{if(r?.aborted&&e===r.reason)return new N(t,r.reason);if(r?.aborted&&"AbortError"===e?.name)return new N(t,r.reason);if(e.status){const r=e;return n?n(r,t):O(r,t)}return new D(e.message,t)},B=(e,t)=>new D(e.message,t,e.issues),H=P.object({apiKey:P.string().optional(),commonBaseURL:P.string().optional(),customServiceBaseURL:P.string().optional(),language:P.string().optional()}),F=(e,t=0)=>{const n=e.path.length>0?`${e.path.join(".")}: `:"";if("invalid_union"===e.code){const r=e.unionErrors;if(r?.length)return`${n}no matching union member (${r.map((e,n)=>`option[${n}]: { ${e.issues.map(e=>F(e,t+1)).join(", ")} }`).join(" | ")})`}return`${n}${e.message}`},G=class extends Error{constructor(e){super(`${e.issues.map(e=>F(e)).join("; ")}\nIssues: ${JSON.stringify(e.issues,null,2)}`),this.issues=e.issues}},U=async(e,t,n)=>{if(e.signal?.aborted)throw new N(n,e.signal.reason);const r=t.getAPIVersion?.(e),a=f({...e,...r&&{apiVersion:r}});if(void 0===e.validateRequest||e.validateRequest)try{((e,t)=>{const n=(t?.schema?H.extend(t.schema.shape):H).superRefine((e,n)=>{if("commonBaseURL"in e||"customServiceBaseURL"in e||n.addIssue({code:"custom",message:"commonBaseURL or customServiceBaseURL is required"}),t?.refinements?.length)for(const r of t.refinements)r.check(e)||n.addIssue({code:"custom",message:r.message})}).safeParse(e);if(!n.success)throw new G(n.error)})(a,t.requestValidation)}catch(s){throw B(s,n)}const o=t.buildRequest(a),i=c(a);e.onAPIRequest?.(o);try{const n=await t.sendRequest(o,i,{signal:e.signal});return e.onAPIResponse?.(o,n),t.parseResponse(await n.data,a)}catch(s){throw e.onAPIResponse?.(o,s),_(s,n,t.parseResponseError,e.signal)}},k=class e extends Error{constructor(t,n,r){super(n??`HTTP Error ${t}`),this.name="FetchError",this.status=t,this.data=r,Error.captureStackTrace&&Error.captureStackTrace(this,e)}},W=async e=>{if(e.ok)return{data:await e.json(),status:e.status};let t,n;const r=e.headers.get("content-type");throw e.bodyUsed?t=e.statusText:r?.includes("application/json")?(n=await e.json(),t=n?.errorText??n?.message??n?.detailedError?.message):r?.includes("text/xml")&&(n=await e.text(),t=e.statusText),new k(e.status,t,n)},K=(e,t)=>new Promise((n,r)=>{if(t?.aborted)return void r(t.reason);const a=()=>{clearTimeout(o),r(t?.reason)},o=setTimeout(()=>{t?.removeEventListener("abort",a),n()},e);t?.addEventListener("abort",a,{once:!0})}),V=async(t,n)=>{const r=e.instance.get().retry;if(!r)return t();const{initialWaitMs:a,backoffFactor:o,timeoutMs:i}=r,s=Date.now();let c=a,l=await t();for(;429===l.status;){const e=Number.parseInt(l.headers.get("retry-after")??"",10),r=Number.isFinite(e)?1e3*e:c;if(Date.now()-s+r>i)break;await l.text().catch(()=>{}),await K(r,n),c*=o,l=await t()}return l},j=()=>y()?"include":void 0,q=async(e,t,n)=>W(await V(()=>{const r=j(),{url:a,headers:o}=e instanceof URL?{url:e,headers:void 0}:e,i={headers:{...t,...o}};return r&&(i.credentials=r),n?.signal&&(i.signal=n.signal),fetch(a,i)},n?.signal)),Y=async(e,t,n)=>W(await V(()=>{const r=j(),a={method:"POST",body:JSON.stringify(e.data),headers:{...t,...e.headers,"Content-Type":"application/json"}};return r&&(a.credentials=r),n?.signal&&(a.signal=n.signal),fetch(e.url,a)},n?.signal)),$=async(e,t,n)=>{if("GET"===e.method)return q(e,t,n);if("POST"===e.method)return Y(e,t,n);throw new Error(`Unsupported HTTP method received: ${e.method}`)},Z=P.array(P.array(P.number())),z=P.object({type:P.enum(["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","Circle"]),coordinates:P.union([P.array(P.number()),Z,P.array(P.array(P.array(P.number()))),P.array(P.array(P.array(P.array(P.number()))))]),radius:P.optional(P.number()),radiusMeters:P.optional(P.number()),bbox:P.optional(P.array(P.number()))}).check(P.refine(e=>"Circle"!==e.type||Boolean(e.radius),'type: "Circle" must have radius property')),J=P.object({type:P.literal("Feature"),geometry:z,id:P.optional(P.union([P.string(),P.number()])),properties:P.unknown().optional(),bbox:P.optional(P.array(P.number()))}),Q=P.object({type:P.literal("FeatureCollection"),features:P.array(J),id:P.optional(P.union([P.string(),P.number()])),properties:P.unknown().optional(),bbox:P.optional(P.array(P.number()))}),X=P.union([P.tuple([P.number().min(-180).max(180),P.number().min(-90).max(90)]),P.tuple([P.number().min(-180).max(180),P.number().min(-90).max(90),P.number()]),P.object({type:P.literal("Point"),coordinates:P.array(P.number())}),J]),ee=P.union([P.array(P.number()).refine(e=>4===e.length,{message:"BBox must have 4 elements"}),P.array(P.number()).refine(e=>6===e.length,{message:"BBox must have 6 elements"})]),te=P.union([z,J,Q]),ne=P.union([ee,te,P.array(te)]),re=P.object({query:P.string().optional(),position:X.optional(),limit:P.number().max(100).optional(),extendedPostalCodesFor:P.array(P.string()).optional(),mapcodes:P.array(P.string()).optional(),view:P.enum(v).optional(),geographyTypes:P.array(P.string()).optional()}),ae=P.object({indexes:P.array(P.string()).optional(),poiCategories:P.array(P.enum(R)).optional(),poiBrands:P.array(P.string()).optional(),connectors:P.array(P.string()).optional(),fuelTypes:P.array(P.string()).optional(),openingHours:P.string().optional(),timeZone:P.string().optional(),relatedPois:P.string().optional(),minPowerKW:P.number().optional(),maxPowerKW:P.number().optional(),minFuzzyLevel:P.number().optional(),maxFuzzyLevel:P.number().optional()}),oe=re.extend(ae.shape),ie=P.object({type:P.literal("LineString"),coordinates:Z}),se=P.object({type:P.literal("Feature"),geometry:ie}),ce=Z,le=P.union([ie,se,ce]),ue=P.object({route:le,maxDetourTimeSeconds:P.number().int().positive()}),de=P.object({sortBy:P.enum(["detourTime","detourOffset"]).optional()}),pe=oe.extend({...ue.shape,...de.shape}),me=e=>({...e.apiKey&&{"TomTom-Api-Key":e.apiKey},...!L(e.apiVersion)&&{"TomTom-Api-Version":String(e.apiVersion)},...e.language&&{"Accept-Language":e.language}}),ge=(e,t)=>{e.append("apiVersion",String(t.apiVersion)),t.apiKey&&e.append("key",t.apiKey),t.language&&e.append("language",t.language)},he=(e,t,n)=>{Array.isArray(n)&&n.length>0&&e.append(t,n.join(","))},ye=(e,t,n)=>{!L(n)&&e.append(t,String(n))},fe=(e,t)=>{const n=u(t);n&&(e.append("lat",String(n[1])),e.append("lon",String(n[0])))},Te=(e,t)=>{const n=e.searchParams;ge(n,t),ye(n,"limit",t.limit),fe(n,"position"in t?t.position:void 0),he(n,"fuelSet",t.fuelTypes),he(n,"idxSet",t.indexes),he(n,"brandSet",t.poiBrands),t.poiCategories&&he(n,"categorySet",t.poiCategories.map(e=>b[e])),he(n,"connectorSet",t.connectors),he(n,"mapcodes",t.mapcodes),he(n,"extendedPostalCodesFor",t.extendedPostalCodesFor),ye(n,"minPowerKW",t.minPowerKW),ye(n,"maxPowerKW",t.maxPowerKW),ye(n,"view",t.view),ye(n,"openingHours",t.openingHours),ye(n,"timeZone",t.timeZone),ye(n,"relatedPois",t.relatedPois),he(n,"entityTypeSet",t.geographyTypes)},Re=e=>{const t=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/searchAlongRoute/${e.query??""}.json`)(e));Te(t,e);const n=t.searchParams;return n.append("maxDetourTime",String(e.maxDetourTimeSeconds)),ye(n,"sortBy",e.sortBy),ye(n,"spreadingMode","plan"),{url:t,data:{route:{points:(r=e.route,Array.isArray(r)?{type:"LineString",coordinates:r}:"Feature"===r.type?r.geometry:r).coordinates.map(e=>({lat:e[1],lon:e[0]}))}}};var r},be=e=>{const t={count:0,statusCounts:{}};for(const n of e)for(const e of n.chargingPoints)t.count++,t.statusCounts[e.status]=(t.statusCounts[e.status]||0)+1;return t},Se=(e,t)=>e.type===t.type&&e.ratedPowerKW===t.ratedPowerKW,Ie=(e,t,n)=>{if(e)for(const r of e){const e=n.find(e=>Se(r,e.connector));if(e){if(e.count++,t){const n=e.statusCounts;e.statusCounts[t]=(n[t]||0)+1}}else n.push({connector:r,count:1,statusCounts:t?{[t]:1}:{}})}},Ce=e=>{const t=[];return((e,t)=>{if(e)for(const n of e){const e=t.find(e=>Se(n,e.connector));e?e.count++:t.push({connector:n,count:1})}})(e,t),t},Ae=e=>{const t=[];for(const n of e)for(const e of n.chargingPoints)Ie(e.connectors,e.status,t);return t},ve=e=>e<12?"slow":e<50?"regular":e<150?"fast":"ultra-fast",Pe=e=>{const t=e.split(",");return[Number(t[1]),Number(t[0])]},Le=e=>`${e[1]},${e[0]}`,Me=e=>{let t,n;return void 0!==e.topLeftPoint?(t=[e.topLeftPoint.lon,e.btmRightPoint.lat],n=[e.btmRightPoint.lon,e.topLeftPoint.lat]):(t=Pe(e.southWest),n=Pe(e.northEast)),[t[0],t[1],n[0],n[1]]},Ee=e=>[e.lon,e.lat],De=e=>{const{year:t,month:n,day:r}=(e=>{const t=e.split("-");return{year:Number.parseInt(t[0]),month:Number.parseInt(t[1]),day:Number.parseInt(t[2])}})(e.date);return{dateYYYYMMDD:e.date,year:t,month:n,day:r,hour:e.hour,minute:e.minute,date:new Date(t,n-1,r,e.hour,e.minute)}},we=e=>1===e.length&&0===e[0].start.hour&&0===e[0].end.hour,xe=e=>{const t=e.timeRanges.map(e=>({start:De(e.startTime),end:De(e.endTime)}));return{mode:e.mode,timeRanges:t,alwaysOpenThisPeriod:we(t)}},Ne=e=>{const{position:t,entryPoints:n,poi:r,id:a,dist:o,boundingBox:i,chargingPark:s,...c}=e,l=s?.connectors?.map(e=>({...M(e,"connectorType"),type:e.connectorType,chargingSpeed:ve(e.ratedPowerKW)}));return{type:"Feature",geometry:I(Ee(t)),...i&&{bbox:Me(i)},id:a,properties:{...M(c,"viewport"),...o&&{distance:o},...n?.length&&{entryPoints:n.map(e=>({...e,position:Ee(e.position)}))},...l?.length&&{chargingPark:{...s,connectors:Ce(l)}},...r&&{poi:{name:r.name,categories:(r.categorySet?.map(e=>S[e.id])??[]).filter(e=>!!e),localizedCategories:r.categories??[],...r.phone&&{phone:r.phone},...r.brands&&{brands:r.brands.map(e=>e.name)},...r.url&&{url:r.url},...r.openingHours&&{openingHours:xe(r.openingHours)},...r.timeZone&&{timeZone:r.timeZone}}}}}},Oe=e=>{const{geoBias:t,...n}=e;return{...t&&{geoBias:Ee(t)},...n}},_e=e=>{const t=e.results.map(Ne),n=o(a(t));return{type:"FeatureCollection",properties:{...Oe(e.summary)},features:t,...n&&{bbox:n}}},Be={requestValidation:{schema:pe},buildRequest:Re,sendRequest:Y,parseResponse:_e},He=async(e,t)=>U(e,{...Be,...t},"AlongRouteSearch"),Fe=P.object({query:P.string()}),Ge=P.object({position:X.optional(),limit:P.number().max(100).optional(),radiusMeters:P.number().optional(),countries:P.array(P.string()).optional(),resultType:P.array(P.string()).optional()}),Ue=Fe.extend(Ge.shape),ke=e=>{const t=new URL(`${n=e,n.customServiceBaseURL||`${n.commonBaseURL}/maps/orbis/places/autocomplete/${n.query}.json`}`);var n;const r=t.searchParams;return e.language=e.language??"en-GB",ge(r,e),ye(r,"limit",e.limit),fe(r,e.position),he(r,"countrySet",e.countries),ye(r,"radius",e.radiusMeters),he(r,"resultSet",e.resultType),t},We=e=>{const{position:t,...n}=e.context.geoBias||{};return{context:{...e.context,geoBias:{...t&&{position:Ee(t)},radiusMeters:n.radius}},results:(r=e.results,r.map(e=>({segments:e.segments.map(e=>{if((e=>"category"===e.type)(e)){const{id:t,...n}=e;return{...n,category:S[Number(t)]}}return e})})))};var r},Ke={requestValidation:{schema:Ue},buildRequest:ke,sendRequest:q,parseResponse:We},Ve=async(e,t)=>U(e,{...Ke,...t},"Autocomplete"),je={alongRouteSearch:He,buildAlongRouteSearchRequest:Re,parseAlongRouteSearchResponse:_e,alongRouteSearchTemplate:Be},qe={autocompleteSearch:Ve,buildAutocompleteSearchRequest:ke,parseAutocompleteSearchResponse:We,autocompleteSearchTemplate:Ke},Ye=H.extend({id:P.string()}),$e=["fast","short","efficient","thrilling"],Ze=["all","unknown","none"],ze=e=>{const t=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/ev/id`)(e)),n=t.searchParams;return ge(n,e),n.append("id",e.id),t},Je=e=>{const t=e.results?.[0];return t?{id:t.id,accessType:t.accessType,chargingStations:(n=t.chargingStations,n.map(e=>({...e,chargingPoints:e.chargingPoints.map(e=>({...e,connectors:e.connectors?.map(e=>({...e,chargingSpeed:ve(e.ratedPowerKW)}))}))}))),chargingPointAvailability:be(t.chargingStations),connectorAvailabilities:Ae(t.chargingStations),...t.openingHours&&{openingHours:xe(t.openingHours)}}:void 0;var n},Qe={requestValidation:{schema:Ye},buildRequest:ze,sendRequest:q,parseResponse:Je,parseResponseError:(e,t)=>{const n=e.data?.detailedError?.message??e.message;return new x(n,t,e.status)}},Xe={buildEVChargingStationsAvailabilityRequest:ze,parseEVChargingStationsAvailabilityResponse:Je,evChargingStationsAvailabilityTemplate:Qe},et=P.object({typeahead:P.boolean().optional(),offset:P.number().max(1900).optional(),radiusMeters:P.number().optional(),boundingBox:ne.optional(),countries:P.array(P.string()).optional()}),tt=H.extend(re.shape).extend(et.shape).extend({query:P.string()}),nt=e=>e?Array.isArray(e)?e.join(","):"string"==typeof e?e:String(e):"",rt=(e,t)=>{const n=e.length;if(n<=t)return e;const r=[];let a;const o=Math.ceil(n/t);for(a=0;a<n;a+=o)r.push(e[a]);return t>1&&a>=n-o&&(r.length<t?r.push(e[n-1]):r[r.length-1]=e[n-1]),r},at=e=>{const t=new URL(`${(e=>e.customServiceBaseURL||`${e.commonBaseURL}/maps/orbis/places/geocode`)(e)}/${e.query}.json`),n=t.searchParams;ge(n,e),e.typeahead&&n.append("typeahead",String(e.typeahead)),!L(e.limit)&&n.append("limit",String(e.limit)),!L(e.offset)&&n.append("ofs",String(e.offset)),fe(n,e.position),e.countries&&n.append("countrySet",nt(e.countries)),!L(e.radiusMeters)&&n.append("radius",String(e.radiusMeters));const r=e.boundingBox&&a(e.boundingBox);return r&&(n.append("topLeft",nt([r[3],r[0]])),n.append("btmRight",nt([r[1],r[2]]))),e.extendedPostalCodesFor&&n.append("extendedPostalCodesFor",nt(e.extendedPostalCodesFor)),e.mapcodes&&n.append("mapcodes",nt(e.mapcodes)),e.view&&n.append("view",e.view),e.geographyTypes&&n.append("entityTypeSet",nt(e.geographyTypes)),t},ot=e=>{const{position:t,boundingBox:n,dist:r,entryPoints:a,addressRanges:o,entityType:i,id:s,...c}=e;return{type:"Feature",geometry:I(Ee(t)),...n&&{bbox:Me(n)},id:s,properties:{...M(c,"viewport"),...r&&{distance:r},...i&&{geographyType:i.split(",")},...a&&{entryPoints:a.map(e=>({...e,position:Ee(e.position)}))},...o&&{addressRanges:{...o,from:Ee(o.from),to:Ee(o.to)}}}}},it=e=>{const t=e.results.map(ot),n=o(a(t));return{type:"FeatureCollection",features:t,...n&&{bbox:n}}},st={requestValidation:{schema:tt},buildRequest:at,sendRequest:q,parseResponse:it},ct={buildGeocodingRequest:at,parseGeocodingResponse:it,geocodingTemplate:st},lt=P.object({geometries:P.union([Q,P.array(P.union([P.string(),J])).min(1).max(20)])}),ut=P.object({zoom:P.number().min(0).max(22).optional()}),dt=lt.extend(ut.shape),pt=e=>e.map(e=>e.properties.dataSources?.geometry?.id).filter(e=>e),mt=e=>{const t=new URL((e=>e.customServiceBaseURL||`${e.commonBaseURL}/maps/orbis/places/additionalData.json`)(e)),n=t.searchParams;return n.append("apiVersion",String(e.apiVersion)),e.apiKey&&n.append("key",e.apiKey),((e,t)=>{let n;n=Array.isArray(t)?"string"==typeof t[0]?t:pt(t):pt(t.features),e.append("geometries",nt(n))})(n,e.geometries),ye(n,"geometriesZoom",e.zoom),t},gt=e=>{const t=e.additionalData.flatMap(e=>e.geometryData?.features.map(e=>({...e,id:e.id??s(),bbox:a(e.geometry)}))).filter(e=>e);return{type:"FeatureCollection",bbox:a(t),features:t}},ht={requestValidation:{schema:dt},buildRequest:mt,sendRequest:q,parseResponse:gt},yt={buildGeometryDataRequest:mt,parseGeometryDataResponse:gt,geometryDataTemplate:ht},ft=P.object({geometries:P.array(P.union([Q,z]))}),Tt=oe.extend(ft.shape),Rt=e=>{switch(e.type){case"Circle":return[{type:"CIRCLE",radius:e.radius,position:Le(e.coordinates)}];case"Polygon":return[{type:"POLYGON",vertices:rt(e.coordinates[0],50).map(e=>Le(e))}];case"MultiPolygon":return e.coordinates.length>50?(e=>{let t=/* @__PURE__ */new Map;return e.coordinates.forEach(e=>{const n=r(e[0]);if(n){const r=Math.abs((n[2]-n[0])*(n[3]-n[1]));t.set(e,r)}}),t=new Map([...t.entries()].sort((e,t)=>t[1]-e[1]).splice(0,50)),[...t.keys()]})(e).flatMap(e=>Rt({type:"Polygon",coordinates:e})):e.coordinates.flatMap(e=>Rt({type:"Polygon",coordinates:e}));case"FeatureCollection":return e.features.flatMap(e=>Rt(e.geometry));default:throw new Error(`Type ${e.type} is not supported`)}},bt=e=>{const t=new URL(`${n=e,n.customServiceBaseURL??`${n.commonBaseURL}/maps/orbis/places/geometrySearch/${n.query??""}.json`}`);var n;return Te(t,e),{url:t,data:{geometryList:e.geometries.flatMap(Rt)}}},St=e=>{const t=e.results.map(Ne),n=o(a(t));return{type:"FeatureCollection",properties:{...Oe(e.summary)},features:t,...n&&{bbox:n}}},It={requestValidation:{schema:Tt},buildRequest:bt,sendRequest:Y,parseResponse:St},Ct=async(e,t)=>U(e,{...It,...t},"GeometrySearch"),At={geometrySearch:Ct,buildGeometrySearchRequest:bt,parseGeometrySearchResponse:St,geometrySearchTemplate:It},vt=P.object({entityId:P.string()}),Pt=P.object({mapcodes:P.array(P.string()).optional(),view:P.enum(v).optional(),openingHours:P.string().optional(),timeZone:P.string().optional(),relatedPois:P.string().optional()}),Lt=vt.extend(Pt.shape),Mt=e=>{const t=new URL(`${(e=>e.customServiceBaseURL||`${e.commonBaseURL}/maps/orbis/places/place.json`)(e)}`),n=t.searchParams;return ge(n,e),ye(n,"entityId",e.entityId),he(n,"mapcodes",e.mapcodes),ye(n,"view",e.view),ye(n,"openingHours",e.openingHours),ye(n,"timeZone",e.timeZone),ye(n,"relatedPois",e.relatedPois),t},Et=e=>e.results?.length?Ne(e.results[0]):void 0,Dt={requestValidation:{schema:Lt},buildRequest:Mt,sendRequest:q,parseResponse:Et},wt={buildPlaceByIdRequest:Mt,parsePlaceByIdResponse:Et,placeByIdTemplate:Dt},xt=(e,t)=>{const{data:n,message:r,status:a}=e;return new x(n?.error?.description??n?.detailedError?.message??r,t,a)},Nt=P.number().positive(),Ot=P.number().min(0),_t=P.number().min(0).max(100),Bt=Nt.optional(),Ht=Ot.optional(),Ft=P.number().min(0).max(1).optional(),Gt=P.object({speedKMH:P.number(),consumptionUnitsPer100KM:P.number()}),Ut={efficiency:P.object({acceleration:Ft,deceleration:Ft,uphill:Ft,downhill:Ft}).optional()},kt=P.array(Gt).min(1).max(25),Wt=P.object({...Ut,speedsToConsumptionsLiters:kt,auxiliaryPowerInLitersPerHour:Ht,fuelEnergyDensityInMJoulesPerLiter:P.number().min(1).optional()}),Kt=P.object({...Ut,speedsToConsumptionsKWH:kt,auxiliaryPowerInkW:Ht,consumptionInKWHPerKMAltitudeGain:P.number().max(500).optional(),recuperationInKWHPerKMAltitudeLoss:Ht}),Vt=P.object({currentType:P.enum(i),plugTypes:P.array(P.enum(T)).min(1),efficiency:Ft,baseLoadInkW:Ht,maxPowerInkW:Ht,maxVoltageInV:Ht,maxCurrentInA:Ht,voltageRange:P.object({minVoltageInV:Ht,maxVoltageInV:P.number().optional()}).optional()}),jt=P.object({stateOfChargeInkWh:Ot,maxPowerInkW:Nt}),qt=P.object({maxChargeKWH:Nt,batteryCurve:P.array(jt).max(20).optional(),chargingConnectors:P.array(Vt).min(1).optional(),chargingTimeOffsetInSec:Ht}),Yt=P.object({consumption:Wt}),$t=P.object({consumption:Kt,charging:qt.optional()}),Zt=P.object({weightKG:Bt}).optional(),zt=P.object({variantId:P.string()}),Jt=P.object({dimensions:Zt,engine:P.union([Yt,$t]).optional()}),Qt=P.union([zt,Jt]).optional(),Xt=P.object({heading:P.number().min(0).max(360).optional()}),en=Xt.extend({currentFuelInLiters:Ot}),tn=Xt.extend({currentChargePCT:_t}),nn=Xt.extend({currentChargeInkWh:Ot}),rn=P.union([tn,nn]),an=P.object({minChargeAtDestinationPCT:_t,minChargeAtChargingStopsPCT:P.number().min(0).max(50)}),on=P.object({minChargeAtDestinationInkWh:Ot,minChargeAtChargingStopsInkWh:Ot}),sn=P.union([an,on]),cn=P.object({chargingPreferences:sn.optional()}),ln={model:Qt,restrictions:P.object({maxSpeedKMH:P.number().min(0).max(250).optional(),tollTransponder:P.enum(Ze).optional()}).optional()},un=P.object({...ln,engineType:P.undefined().optional(),state:Xt.optional(),preferences:P.object({}).optional()}),dn=P.object({...ln,engineType:P.literal("combustion"),state:en.optional(),preferences:P.object({}).optional()}),pn=P.object({...ln,engineType:P.literal("electric"),state:rn.optional(),preferences:cn.optional()}),mn=P.union([P.discriminatedUnion("engineType",[dn,pn]),un]),gn=P.object({costModel:P.object({avoid:P.array(P.enum(n)).optional(),traffic:P.enum(["live","historical"]).optional(),routeType:P.enum($e).optional(),avoidAreas:P.array(ne).max(10).optional()}).optional(),travelMode:P.string().optional(),vehicle:mn.optional(),when:P.object({option:P.enum(["departAt","arriveBy"]),date:P.date()}).optional()}),hn=["timeMinutes","remainingChargeCPT","spentChargePCT","spentFuelLiters","distanceKM"],yn=P.object({origin:X,budget:P.object({type:P.enum(hn),value:P.number().min(0)})}),fn=P.enum(n).exclude(["alreadyUsedRoads"]),Tn=mn.check(P.refine(e=>!(e.state&&"heading"in e.state),"vehicle.state.heading: calculateReachableRange has no vehicle heading parameter")),Rn=P.object({vehicle:Tn.optional(),costModel:P.object({avoid:P.array(fn).optional(),traffic:P.enum(["live","historical"]).optional(),routeType:P.enum($e).optional()}).optional(),maxFerryLengthMeters:P.number().min(0).optional(),smoothing:P.enum(["none","weak","strong"]).optional()}),bn=gn.extend(yn.extend(Rn.shape).shape),Sn=e=>e.map(e=>`${e.speedKMH},${e.consumptionUnitsPer100KM}`).join(":"),In=(e,t,n)=>{((e,t)=>{t&&(!L(t.acceleration)&&e.append("accelerationEfficiency",String(t.acceleration)),!L(t.deceleration)&&e.append("decelerationEfficiency",String(t.deceleration)),!L(t.uphill)&&e.append("uphillEfficiency",String(t.uphill)),!L(t.downhill)&&e.append("downhillEfficiency",String(t.downhill)))})(e,n.consumption.efficiency),"electric"===t?(((e,t)=>{t.speedsToConsumptionsKWH&&e.append("constantSpeedConsumptionInkWhPerHundredkm",Sn(t.speedsToConsumptionsKWH)),!L(t.auxiliaryPowerInkW)&&e.append("auxiliaryPowerInkW",String(t.auxiliaryPowerInkW)),!L(t.consumptionInKWHPerKMAltitudeGain)&&e.append("consumptionInkWhPerkmAltitudeGain",String(t.consumptionInKWHPerKMAltitudeGain)),!L(t.recuperationInKWHPerKMAltitudeLoss)&&e.append("recuperationInkWhPerkmAltitudeLoss",String(t.recuperationInKWHPerKMAltitudeLoss))})(e,n.consumption),((e,t)=>{const n=t.charging;n?.maxChargeKWH&&e.append("maxChargeInkWh",String(n.maxChargeKWH))})(e,n)):((e,t)=>{const n=t.consumption;n.speedsToConsumptionsLiters&&e.append("constantSpeedConsumptionInLitersPerHundredkm",Sn(n.speedsToConsumptionsLiters)),!L(n.auxiliaryPowerInLitersPerHour)&&e.append("auxiliaryPowerInLitersPerHour",String(n.auxiliaryPowerInLitersPerHour)),!L(n.fuelEnergyDensityInMJoulesPerLiter)&&e.append("fuelEnergyDensityInMJoulesPerLiter",String(n.fuelEnergyDensityInMJoulesPerLiter))})(e,n)},Cn=(e,t)=>{t.model&&("variantId"in t.model?e.append("vehicleModelId",t.model.variantId):(((e,t)=>{t?.weightKG&&e.append("vehicleWeight",String(t.weightKG))})(e,t.model.dimensions),t.model.engine&&In(e,"engineType"in t?t.engineType:void 0,t.model.engine)))},An=(e,t)=>{t&&("electric"===t.engineType&&e.append("vehicleEngineType","electric"),Cn(e,t),((e,t)=>{if(t.state&&"engineType"in t)if("combustion"===t.engineType){const n=t.state;n.currentFuelInLiters&&e.append("currentFuelInLiters",String(n.currentFuelInLiters))}else if("electric"===t.engineType){const n=t.state,r=n,a=n;if(r.currentChargeInkWh)e.append("currentChargeInkWh",String(r.currentChargeInkWh));else if(a.currentChargePCT&&t.model&&"engine"in t.model&&t.model.engine){const n=t.model.engine.charging?.maxChargeKWH;n&&e.append("currentChargeInkWh",String(n*a.currentChargePCT/100))}}})(e,t),((e,t)=>{if(t.preferences&&"engineType"in t&&"electric"===t.engineType){const n=t.preferences;if(n.chargingPreferences){const r=n.chargingPreferences,a=r,o=r;if(a.minChargeAtChargingStopsInkWh||a.minChargeAtDestinationInkWh)e.append("minChargeAtDestinationInkWh",String(a.minChargeAtDestinationInkWh)),e.append("minChargeAtChargingStopsInkWh",String(a.minChargeAtChargingStopsInkWh));else if((o.minChargeAtChargingStopsPCT||o.minChargeAtDestinationPCT)&&t.model&&"engine"in t.model&&t.model.engine){const n=t.model.engine.charging?.maxChargeKWH;n&&(e.append("minChargeAtDestinationInkWh",String(n*o.minChargeAtDestinationPCT/100)),e.append("minChargeAtChargingStopsInkWh",String(n*o.minChargeAtChargingStopsPCT/100)))}}}})(e,t),((e,t)=>{const n=t.restrictions?.maxSpeedKMH;n&&e.append("vehicleMaxSpeed",String(n));const r=t.restrictions?.tollTransponder;r&&e.append("vehicleHasElectricTollCollectionTransponder",r)})(e,t))},vn=e=>{const t=e.vehicle;if(t?.model&&"engine"in t.model)return t.model.engine?.charging?.maxChargeKWH},Pn=(e,t)=>{const n=t.budget;switch(n.type){case"timeMinutes":e.append("timeBudgetInSec",(60*n.value).toString());break;case"distanceKM":e.append("distanceBudgetInMeters",(1e3*n.value).toString());break;case"spentFuelLiters":e.append("fuelBudgetInLiters",n.value.toString());break;case"spentChargePCT":{const r=vn(t);null!=r&&e.append("energyBudgetInkWh",(r*n.value/100).toString());break}case"remainingChargeCPT":{const r=(e=>{const t=e.vehicle;if(!t?.state)return;const n=t.state;if(null!=n.currentChargePCT){const t=vn(e);if(null!=t)return t*n.currentChargePCT/100}})(t),a=vn(t);if(null!=a&&null!=r){const t=a*n.value/100;e.append("energyBudgetInkWh",Math.max(0,r-t).toString())}break}default:e.append(n.type,n.value.toString())}},Ln=e=>{const t=(e=>{const t=d(e.origin);return`${t[1]},${t[0]}`})(e),n=new URL(((e,t)=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/routing/calculateReachableRange/${t}/json`)(e,t)),r=n.searchParams;return ge(r,e),r.delete("language"),((e,t)=>{const n=t.costModel;((e,t,n)=>{for(const r of n||[])e.append(t,r)})(e,"avoid",n?.avoid),ye(e,"traffic",n?.traffic),((e,t)=>{if(t?.date){const n=t.date.toISOString();"departAt"===t.option?e.append("departAt",n):"arriveBy"===t.option&&e.append("arriveAt",n)}})(e,t.when),ye(e,"routeType",n?.routeType),ye(e,"travelMode",t.travelMode),An(e,t.vehicle)})(r,e),Pn(r,e),ye(r,"maxFerryLengthInMeters",e.maxFerryLengthMeters),ye(r,"smoothing",e.smoothing??"strong"),{method:"GET",url:n}},Mn=(e,t)=>{const n={type:"Polygon",coordinates:[e.reachableRange.boundary.map(e=>[e.longitude,e.latitude])]};return{type:"Feature",geometry:n,bbox:a(n),properties:t}},En={requestValidation:{schema:bn},buildRequest:Ln,sendRequest:$,parseResponse:Mn,parseResponseError:xt,getAPIVersion:()=>2},Dn={buildReachableRangeRequest:Ln,parseReachableRangeResponse:Mn,reachableRangeTemplate:En},wn={Country:"country",CountrySubdivision:"countrySubdivision",CountrySecondarySubdivision:"countrySecondarySubdivision",CountryTertiarySubdivision:"countryTertiarySubdivision",Municipality:"municipality",MunicipalitySubdivision:"municipalitySubdivision",MunicipalitySecondarySubdivision:"municipalitySecondarySubdivision",Neighbourhood:"neighborhood",PostalCodeArea:"postalCode"},xn=e=>{const[t,n]=d(e.position),r=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/reverseGeocode`)(e)),a=r.searchParams;return a.append("position",`${t},${n}`),!L(e.radiusMeters)&&a.append("radiusInMeters",String(e.radiusMeters)),e.geographyType&&a.append("areaTypes",e.geographyType.map(e=>wn[e]).join(",")),!L(e.heading)&&a.append("vehicleHeadingInDegrees",String(e.heading)),e.view&&a.append("geopoliticalView",e.view),{url:r,headers:{...me(e),Attributes:"results(*)"}}},Nn={AF:"AFG",AX:"ALA",AL:"ALB",DZ:"DZA",AS:"ASM",AD:"AND",AO:"AGO",AI:"AIA",AQ:"ATA",AG:"ATG",AR:"ARG",AM:"ARM",AW:"ABW",AU:"AUS",AT:"AUT",AZ:"AZE",BS:"BHS",BH:"BHR",BD:"BGD",BB:"BRB",BY:"BLR",BE:"BEL",BZ:"BLZ",BJ:"BEN",BM:"BMU",BT:"BTN",BO:"BOL",BQ:"BES",BA:"BIH",BW:"BWA",BV:"BVT",BR:"BRA",IO:"IOT",BN:"BRN",BG:"BGR",BF:"BFA",BI:"BDI",CV:"CPV",KH:"KHM",CM:"CMR",CA:"CAN",KY:"CYM",CF:"CAF",TD:"TCD",CL:"CHL",CN:"CHN",CX:"CXR",CC:"CCK",CO:"COL",KM:"COM",CG:"COG",CD:"COD",CK:"COK",CR:"CRI",CI:"CIV",HR:"HRV",CU:"CUB",CW:"CUW",CY:"CYP",CZ:"CZE",DK:"DNK",DJ:"DJI",DM:"DMA",DO:"DOM",EC:"ECU",EG:"EGY",SV:"SLV",GQ:"GNQ",ER:"ERI",EE:"EST",SZ:"SWZ",ET:"ETH",FK:"FLK",FO:"FRO",FJ:"FJI",FI:"FIN",FR:"FRA",GF:"GUF",PF:"PYF",TF:"ATF",GA:"GAB",GM:"GMB",GE:"GEO",DE:"DEU",GH:"GHA",GI:"GIB",GR:"GRC",GL:"GRL",GD:"GRD",GP:"GLP",GU:"GUM",GT:"GTM",GG:"GGY",GN:"GIN",GW:"GNB",GY:"GUY",HT:"HTI",HM:"HMD",VA:"VAT",HN:"HND",HK:"HKG",HU:"HUN",IS:"ISL",IN:"IND",ID:"IDN",IR:"IRN",IQ:"IRQ",IE:"IRL",IM:"IMN",IL:"ISR",IT:"ITA",JM:"JAM",JP:"JPN",JE:"JEY",JO:"JOR",KZ:"KAZ",KE:"KEN",KI:"KIR",KP:"PRK",KR:"KOR",KW:"KWT",KG:"KGZ",LA:"LAO",LV:"LVA",LB:"LBN",LS:"LSO",LR:"LBR",LY:"LBY",LI:"LIE",LT:"LTU",LU:"LUX",MO:"MAC",MG:"MDG",MW:"MWI",MY:"MYS",MV:"MDV",ML:"MLI",MT:"MLT",MH:"MHL",MQ:"MTQ",MR:"MRT",MU:"MUS",YT:"MYT",MX:"MEX",FM:"FSM",MD:"MDA",MC:"MCO",MN:"MNG",ME:"MNE",MS:"MSR",MA:"MAR",MZ:"MOZ",MM:"MMR",NA:"NAM",NR:"NRU",NP:"NPL",NL:"NLD",NC:"NCL",NZ:"NZL",NI:"NIC",NE:"NER",NG:"NGA",NU:"NIU",NF:"NFK",MK:"MKD",MP:"MNP",NO:"NOR",OM:"OMN",PK:"PAK",PW:"PLW",PS:"PSE",PA:"PAN",PG:"PNG",PY:"PRY",PE:"PER",PH:"PHL",PN:"PCN",PL:"POL",PT:"PRT",PR:"PRI",QA:"QAT",RE:"REU",RO:"ROU",RU:"RUS",RW:"RWA",BL:"BLM",SH:"SHN",KN:"KNA",LC:"LCA",MF:"MAF",PM:"SPM",VC:"VCT",WS:"WSM",SM:"SMR",ST:"STP",SA:"SAU",SN:"SEN",RS:"SRB",SC:"SYC",SL:"SLE",SG:"SGP",SX:"SXM",SK:"SVK",SI:"SVN",SB:"SLB",SO:"SOM",ZA:"ZAF",GS:"SGS",SS:"SSD",ES:"ESP",LK:"LKA",SD:"SDN",SR:"SUR",SJ:"SJM",SE:"SWE",CH:"CHE",SY:"SYR",TW:"TWN",TJ:"TJK",TZ:"TZA",TH:"THA",TL:"TLS",TG:"TGO",TK:"TKL",TO:"TON",TT:"TTO",TN:"TUN",TR:"TUR",TM:"TKM",TC:"TCA",TV:"TUV",UG:"UGA",UA:"UKR",AE:"ARE",GB:"GBR",US:"USA",UM:"UMI",UY:"URY",UZ:"UZB",VU:"VUT",VE:"VEN",VN:"VNM",VG:"VGB",VI:"VIR",WF:"WLF",EH:"ESH",YE:"YEM",ZM:"ZMB",ZW:"ZWE"},On=e=>Nn[e]??e,_n={street:"Street",area:"Geography",address:"Point Address"},Bn=Object.fromEntries(Object.entries(wn).map(([e,t])=>[t,e])),Hn=e=>{const{street:t,houseNumber:n,countryCodeIso2:r,...a}=e;return{...a,...t&&{streetName:t},...n&&{streetNumber:n},...r&&{countryCode:r,countryCodeISO3:On(r)}}},Fn=(e,t)=>{const n=e.results[0];return{type:"Feature",geometry:I(d(t.position)),id:n?.id??s(),...n&&{properties:{type:_n[n.type],address:{freeformAddress:n.title,...Hn(n.address)},...n.areaType&&{geographyType:[Bn[n.areaType]],dataSources:{geometry:{id:n.id}}},...n.accessPoints?.length&&{accessPoints:n.accessPoints.map(e=>e.position.coordinates)},originalPosition:n.position.coordinates}}}},Gn=P.object({position:X}),Un=P.object({geographyType:P.array(P.enum(l)).optional(),heading:P.number().min(-360).max(360).optional(),radiusMeters:P.number().positive().max(5e6).optional(),view:P.enum(v).optional()}),kn={requestValidation:{schema:Gn.extend(Un.shape)},buildRequest:xn,getAPIVersion:()=>2,sendRequest:q,parseResponse:Fn},Wn={buildRevGeoRequest:xn,parseRevGeoResponse:Fn,reverseGeocodingTemplate:kn},Kn=e=>e.map(e=>`${e.speedKMH},${e.consumptionUnitsPer100KM}`).join(":"),Vn=["tollVignette","tollRoad","roadShields","importantRoadStretch"],jn=e=>{const t=["summary","legs(summary,path)"],n=e.sectionTypes;if(!n||n.length>0){t.push("sections");const r=!n;for(const e of Vn)(r||n.includes(e))&&t.push(`sections.${e}`);e.guidance&&(r||n.includes("lanes"))&&t.push("sections.lanes")}0!==e.extendedRouteRepresentations?.length&&t.push("progressPoints"),e.guidance&&t.push("instructions(*,nextRoadInformation.roadShields.iconReference,previousRoadInformation.roadShields.iconReference,signpost.exitIconReference,distanceToPreviousTrafficLightInMeters)");const r=`routes(${t.join(",")})`;return e.guidance?`roadShieldAtlasReference,${r}`:r},qn=e=>{const t={};if("electric"===e.engineType&&(t.vehicleEngineType="electric"),e.model&&!("variantId"in e.model)){const n=e.model;n.dimensions?.weightKG&&(t.vehicleWeightInKilograms=n.dimensions.weightKG)}return e.state?.heading&&(t.vehicleHeadingInDegrees=e.state.heading),e.restrictions?.maxSpeedKMH&&(t.vehicleMaxSpeedInKilometersPerHour=e.restrictions.maxSpeedKMH),e.restrictions?.tollTransponder&&(t.vehicleHasElectronicTollCollectionTransponder=e.restrictions.tollTransponder),t},Yn=(e,t)=>{L(t.acceleration)||e.searchParams.set("accelerationEfficiency",String(t.acceleration)),L(t.deceleration)||e.searchParams.set("decelerationEfficiency",String(t.deceleration)),L(t.uphill)||e.searchParams.set("uphillEfficiency",String(t.uphill)),L(t.downhill)||e.searchParams.set("downhillEfficiency",String(t.downhill))},$n=(e,t)=>{const n=t.consumption;n.speedsToConsumptionsKWH?.length&&e.searchParams.set("constantSpeedConsumptionInkWhPerHundredkm",Kn(n.speedsToConsumptionsKWH)),L(n.auxiliaryPowerInkW)||e.searchParams.set("auxiliaryPowerInkW",String(n.auxiliaryPowerInkW)),L(n.consumptionInKWHPerKMAltitudeGain)||e.searchParams.set("consumptionInkWhPerkmAltitudeGain",String(n.consumptionInKWHPerKMAltitudeGain)),L(n.recuperationInKWHPerKMAltitudeLoss)||e.searchParams.set("recuperationInkWhPerkmAltitudeLoss",String(n.recuperationInKWHPerKMAltitudeLoss)),n.efficiency&&Yn(e,n.efficiency),t.charging?.maxChargeKWH&&e.searchParams.set("maxChargeInkWh",String(t.charging.maxChargeKWH))},Zn=(e,t)=>{if(!t.model||"variantId"in t.model)return;const n=t.model;n.engine&&("electric"===t.engineType?((e,t,n)=>{$n(e,t);const r=n.state,a=n.state;r?.currentChargeInkWh?e.searchParams.set("currentChargeInkWh",String(r.currentChargeInkWh)):a?.currentChargePCT&&t.charging?.maxChargeKWH&&e.searchParams.set("currentChargeInkWh",String(t.charging.maxChargeKWH*a.currentChargePCT/100))})(e,n.engine,t):((e,t,n)=>{const r=t.consumption;r.speedsToConsumptionsLiters?.length&&e.searchParams.set("constantSpeedConsumptionInLitersPerHundredkm",Kn(r.speedsToConsumptionsLiters)),L(r.auxiliaryPowerInLitersPerHour)||e.searchParams.set("auxiliaryPowerInLitersPerHour",String(r.auxiliaryPowerInLitersPerHour)),L(r.fuelEnergyDensityInMJoulesPerLiter)||e.searchParams.set("fuelEnergyDensityInMJoulesPerLiter",String(r.fuelEnergyDensityInMJoulesPerLiter)),r.efficiency&&Yn(e,r.efficiency);const a=n.state;a?.currentFuelInLiters&&e.searchParams.set("currentFuelInLiters",String(a.currentFuelInLiters))})(e,n.engine,t))},zn=e=>{if(e.model&&!("variantId"in e.model))return e.model.engine?.charging?.maxChargeKWH},Jn=(e,t)=>{if(t&&t.model){if("variantId"in t.model)e.searchParams.set("vehicleModelId",t.model.variantId);else{const n=t.model;n.engine&&$n(e,n.engine)}((e,t)=>{if(!t.state)return;const n=t.state,r=t.state;if(n.currentChargeInkWh)return void e.searchParams.set("currentChargeInkWh",String(n.currentChargeInkWh));if(!r.currentChargePCT)return;const a=zn(t);a&&e.searchParams.set("currentChargeInkWh",String(a*r.currentChargePCT/100))})(e,t),((e,t)=>{const n=t.preferences?.chargingPreferences;if(!n)return;const r=n,a=n;if(!L(r.minChargeAtDestinationInkWh)||!L(r.minChargeAtChargingStopsInkWh))return L(r.minChargeAtDestinationInkWh)||e.searchParams.set("minChargeAtDestinationInkWh",String(r.minChargeAtDestinationInkWh)),void(L(r.minChargeAtChargingStopsInkWh)||e.searchParams.set("minChargeAtChargingStopsInkWh",String(r.minChargeAtChargingStopsInkWh)));const o=zn(t);o&&(L(a.minChargeAtDestinationPCT)||e.searchParams.set("minChargeAtDestinationInkWh",String(o*a.minChargeAtDestinationPCT/100)),L(a.minChargeAtChargingStopsPCT)||e.searchParams.set("minChargeAtChargingStopsInkWh",String(o*a.minChargeAtChargingStopsPCT/100)))})(e,t)}},Qn=e=>!!e.vehicle?.preferences?.chargingPreferences,Xn=e=>{const t=(e=>Array.isArray(e)?e:e.geometry.coordinates)(e),n=(e=>{if(!Array.isArray(e))return e.properties?.sections?.leg})(e);if(n&&n.length>1&&n.every(e=>null!=e.startPointIndex&&null!=e.endPointIndex)){const e=n.map(e=>{const n=e.startPointIndex??0,r=e.endPointIndex??0;return{coordinate:t[n],legToNext:{path:{type:"LineString",coordinates:t.slice(n,r+1)}}}});return e.push({coordinate:t[n.at(-1)?.endPointIndex??t.length-1]}),e}return[{coordinate:t[0],legToNext:{path:{type:"LineString",coordinates:t}}},{coordinate:t.at(-1)??t[0]}]},er=e=>{if(!Array.isArray(e)&&"properties"in e)return e.properties??void 0},tr=(e,t)=>{const n=e.options;if(!n)return{};if(t&&n.pauseDurationSeconds)throw new Error("pauseDurationSeconds is not supported on the destination: the routing API requires the pause on the last leg to be 0.");const r={...n.pauseDurationSeconds&&{pauseDurationInSeconds:n.pauseDurationSeconds},...n.candidateEntryPoints?.length&&{entryPoints:(a=n.candidateEntryPoints,{type:"MultiPoint",coordinates:a.map(e=>d(e))}),...!L(n.preferredEntryPointIndex)&&{preferredEntryPointIndex:n.preferredEntryPointIndex}}};var a;return{...n.legCostModel?.routeType&&{routeType:n.legCostModel.routeType},...n.legCostModel?.avoid?.length&&{avoids:n.legCostModel.avoid.map(e=>({name:e}))},...Object.keys(r).length>0&&{routeStop:r}}},nr=(e,t)=>{t.computeTravelTimeFor&&e.searchParams.set("computeTravelTimeFor",t.computeTravelTimeFor)},rr=e=>{const t=e.locations.map(p).includes("path"),n=((e,t)=>{const n=[];for(const r of e)if("waypoint"===p(r)){const e=er(r),a=e?.candidateEntryPoints?.length?"ignore":t,[o,i]=d(r,{useEntryPoint:a});n.push({coordinate:[o,i],...e&&{options:e}})}else n.push(...Xn(r));return n})(e.locations,e.useEntryPoints),r=(e=>{const t={type:"Point",coordinates:e[0].coordinate},n={type:"Point",coordinates:(e.at(-1)??e[0]).coordinate},r=e.slice(1,-1);return{origin:t,destination:n,...r.length&&{waypoints:{type:"MultiPoint",coordinates:r.map(e=>e.coordinate)}}}})(n),o=(e=>{return{...e.costModel?.routeType&&{routeType:e.costModel.routeType},...e.costModel?.traffic&&{traffic:e.costModel.traffic},...e.costModel?.avoid?.length&&{avoids:e.costModel.avoid},...e.travelMode&&{travelMode:e.travelMode},...e.maxAlternatives&&{maxPathAlternativeRoutes:e.maxAlternatives},..."departAt"===e.when?.option&&e.when.date&&{departureDateTime:e.when.date.toISOString()},..."arriveBy"===e.when?.option&&e.when.date&&{arrivalDateTime:e.when.date.toISOString()},...e.guidance&&(n=e.guidance,{guidance:"instructions",instructionPhonetics:n.phonetics?n.phonetics.toLowerCase():"ipa"}),...e.costModel?.avoidAreas?.length&&{avoidAreas:(t=e.costModel.avoidAreas,{rectangles:t.map(e=>{const t=a(e);if(!t)throw new Error("Could not derive a bounding box from an avoidAreas rectangle");const[n,r,o,i]=t;return{type:"Feature",bbox:[n,r,o,i],geometry:null}})})},...e.arrivalSide&&{arrivalSidePreference:"curb"===e.arrivalSide?"curbSide":"anySide"}};var t,n})(e),i=(e=>({...me(e),Attributes:jn(e)}))(e),s=((e,t)=>{const n=e.slice(1),r=n.map((t,r)=>({...e[r].legToNext,...tr(t,r===n.length-1)}));if(t||!r.every(e=>0===Object.keys(e).length))return r})(n,t),c={routePlanningLocations:r,...o,...s&&{legs:s},...e.vehicle&&qn(e.vehicle)};if(Qn(e)){const t=((e,t,n)=>{const r=e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/routing/calculateLongDistanceEVRoute`,a=new URL(r);Jn(a,e.vehicle),e.chargingStopsStrategy&&a.searchParams.set("chargingStopsStrategy",e.chargingStopsStrategy);const o=(e=>e.vehicle?.model&&!("variantId"in e.vehicle.model)?e.vehicle.model.engine?.charging:void 0)(e);if(!(e.vehicle?.model&&"variantId"in e.vehicle.model||o?.chargingConnectors?.length))throw new Error("Charging preferences require a charging model: set vehicle.model.engine.charging.chargingConnectors (or a predefined vehicle.model.variantId) to plan charging stops.");return{method:"POST",url:a,data:{...t,...o&&{chargingParameters:{...o.batteryCurve?.length&&{batteryCurve:o.batteryCurve},...o.chargingConnectors?.length&&{chargingConnectors:[...o.chargingConnectors]},...!L(o.chargingTimeOffsetInSec)&&{chargingTimeOffsetInSec:o.chargingTimeOffsetInSec}}},vehicleEngineType:"electric"},headers:n}})(e,c,i);return nr(t.url,e),t}if(e.vehicle?.model&&"variantId"in e.vehicle.model)throw new Error("vehicle.model.variantId is only supported for EV routes with charging stops: set vehicle.preferences.chargingPreferences, or describe the vehicle with vehicle.model.dimensions and vehicle.model.engine instead.");const l=e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/routing/routes/calculate`,u=new URL(l);return e.vehicle&&Zn(u,e.vehicle),nr(u,e),{method:"POST",url:u,data:c,headers:i}},ar=P.union([X,z]),or=P.union([Z,J]),ir=P.object({locations:P.array(P.union([ar,or])).min(1)}),sr=P.object({arrivalSide:P.enum(["any","curb"]).optional(),chargingStopsStrategy:P.enum(["automaticFastest","manualFastest","automaticFastestWithFallbackToManual"]).optional(),computeTravelTimeFor:P.enum(["none","all"]).optional(),maxAlternatives:P.number().min(0).max(5).optional(),sectionTypes:P.array(P.enum(h)).optional()}),cr=gn.extend(ir.extend(sr.shape).shape),lr=e=>{switch(e){case"Direct_Current":return"DC";case"Alternating_Current_1_Phase":return"AC1";case"Alternating_Current_3_Phase":return"AC3";default:return}},ur=(e,t)=>{const n=e.chargingConnectionInfo,r=e.chargingParkLocation,a=[r.coordinate.longitude,r.coordinate.latitude],o=[r.street,r.houseNumber].filter(Boolean),i=o.length>0?o.join(", "):"";return{type:"Feature",id:e.chargingParkId,geometry:{type:"Point",coordinates:a},properties:{...M(e,["chargingConnectionInfo","chargingParkLocation"]),type:"POI",address:{freeformAddress:i,...r.street&&{streetName:r.street},...r.houseNumber&&{streetNumber:r.houseNumber},...r.city&&{municipality:r.city},...r.region&&{countrySubdivision:r.region},...r.postalCode&&{postalCode:r.postalCode},...r.country&&{country:r.country}},...n&&{chargingConnectionInfo:{plugType:n.chargingPlugType,currentInA:n.chargingCurrentInA,voltageInV:n.chargingVoltageInV,chargingPowerInkW:n.chargingPowerInkW,currentType:lr(n.chargingCurrentType),chargingSpeed:ve(n.chargingPowerInkW)}},...t&&{targetChargeInPCT:100*e.targetChargeInkWh/t},...e.chargingParkPowerInkW&&{chargingParkSpeed:ve(e.chargingParkPowerInkW)}}}},dr=(e,t)=>{const n=(t?.vehicle?.model)?.engine?.charging?.maxChargeKWH;return{lengthInMeters:e.lengthInMeters,travelTimeInSeconds:e.travelDurationInSeconds,trafficDelayInSeconds:e.trafficDelayDurationInSeconds??0,trafficLengthInMeters:e.trafficLengthInMeters??0,historicTrafficTravelTimeInSeconds:e.historicTrafficTravelTimeInSeconds,liveTrafficIncidentsTravelTimeInSeconds:e.liveTrafficIncidentsTravelTimeInSeconds,noTrafficTravelTimeInSeconds:e.noTrafficTravelTimeInSeconds,departureTime:new Date(e.departureDateTime),arrivalTime:new Date(e.arrivalDateTime),deviationDistanceInMeters:e.deviationDistanceInMeters,deviationTimeInSeconds:e.deviationDurationInSeconds,...e.deviationPoint&&{deviationPoint:e.deviationPoint.coordinates},fuelConsumptionInLiters:e.fuelConsumptionInLiters,totalChargingTimeInSeconds:e.totalChargingTimeInSeconds,batteryConsumptionInkWh:e.batteryConsumptionInKilowattHours??e.batteryConsumptionInkWh,...n&&(()=>{const t=e.batteryConsumptionInKilowattHours??e.batteryConsumptionInkWh;return t?{batteryConsumptionInPCT:100*t/n}:void 0})(),remainingChargeAtArrivalInkWh:e.remainingChargeAtArrivalInkWh,...n&&e.remainingChargeAtArrivalInkWh&&{remainingChargeAtArrivalInPCT:100*e.remainingChargeAtArrivalInkWh/n},...e.chargingInformationAtEndOfLeg&&{chargingInformationAtEndOfLeg:ur(e.chargingInformationAtEndOfLeg,n)}}},pr=(e,t)=>e.reduce((n,r,a)=>{const o=r.path.coordinates.length,i=0===a?0:n[a-1]?.endPointIndex;let c;L(i)||(c=0===i?Math.max(o-1,0):i+o);const l=((e,t)=>{if(!t)return;const n=new Date(e.summary.arrivalDateTime).getTime(),r=new Date(t.summary.departureDateTime).getTime();if(Number.isNaN(n)||Number.isNaN(r))return;const a=Math.round((r-n)/1e3);return a>0?a:void 0})(r,e[a+1]),{originalWaypointIndexAtEndOfLeg:u}=r.summary;return n.push({...!L(i)&&{startPointIndex:i},...void 0!==c&&{endPointIndex:c},...!L(u)&&{originalWaypointIndex:u},summary:{...dr(r.summary,t),...void 0!==l&&{stopTimeInSeconds:l}},id:s()}),n},[]),mr=e=>({id:s(),startPointIndex:e.startPathIndex,endPointIndex:e.endPathIndex}),gr=e=>{if(e.tec?.causes?.length)return e.tec.causes.map(e=>{switch(e.mainCauseCode){case 1:return"jam";case 2:return"accident";case 3:return"roadworks";case 4:return"narrow-lanes";case 5:return"road-closed";case 9:return"danger";case 11:return"animals-on-road";case 13:return"broken-down-vehicle";case 16:return"lane-closed";case 17:return"wind";case 18:return"fog";case 19:return"rain";case 22:return"frost";case 23:return"flooding";default:return"other"}});switch(e.iconCategory){case"jam":return["jam"];case"accident":return["accident"];case"brokenDownVehicle":return["broken-down-vehicle"];case"dangerousConditions":return["danger"];case"flooding":return["flooding"];case"fog":return["fog"];case"ice":return["frost"];case"laneClosed":return["lane-closed"];case"rain":return["rain"];case"roadClosed":return["road-closed"];case"roadWorks":return["roadworks"];case"wind":return["wind"];default:return["other"]}},hr=(e,t)=>{const n={leg:pr(e.legs,t)},r=e.sections;if(!r)return n;const a=(e,t)=>{t?.length&&(n[e]=t.map(mr))};return a("carTrain",r.carTrain),a("ferry",r.ferry),a("tunnel",r.tunnel),a("motorway",r.motorway),a("pedestrian",r.pedestrian),a("toll",r.toll),a("tollRoad",r.tollRoad),a("carpool",r.carpool),a("urban",r.urban),a("unpaved",r.unpaved),a("lowEmissionZone",r.lowEmissionZone),r.country?.length&&(n.country=r.country.map(e=>({...mr(e),countryCodeISO3:On(e.countryCodeIso2??"")}))),r.travelMode?.length&&(n.vehicleRestricted=r.travelMode.filter(e=>"other"===e.travelMode).map(mr)),r.traffic?.length&&(n.traffic=r.traffic.map(e=>({...mr(e),delayInSeconds:e.delayDurationInSeconds,effectiveSpeedInKmh:e.effectiveSpeedInKilometersPerHour,categories:gr(e),magnitudeOfDelay:"undefined"===e.delayMagnitude?"indefinite":e.delayMagnitude,tec:e.tec,...e.eventId&&{eventId:e.eventId}}))),r.speedLimit?.length&&(n.speedLimit=r.speedLimit.map(e=>{const t=e.speedRestrictions?.find(e=>"maximum"===e.type)?.inKilometersPerHour;return L(t)?void 0:{...mr(e),maxSpeedLimitInKmh:t}}).filter(e=>!!e)),r.lanes?.length&&(n.lanes=r.lanes.map(e=>({...mr(e),lanes:(e.lanes??[]).map(e=>({directions:e.directions.map(e=>Ir[e]??e),...e.follow&&{follow:Ir[e.follow]??e.follow}})),laneSeparators:(e.laneSeparators??[]).map(e=>Cr[e]??e),properties:e.properties}))),r.roadShields?.length&&(n.roadShields=r.roadShields.map(e=>({...mr(e),roadShieldReferences:e.roadShieldReferences}))),r.tollVignette?.length&&(n.tollVignette=r.tollVignette.map(e=>({...mr(e),countryCodeISO3:On(e.countryCodeIso2??"")}))),r.importantRoadStretch?.length&&(n.importantRoadStretch=r.importantRoadStretch.map(e=>({...mr(e),index:e.importantRoadStretchIndex,...e.streetName&&{streetName:e.streetName.text},...e.roadNumbers?.length&&{roadNumbers:e.roadNumbers.map(e=>e.text)}}))),((e,t)=>{if(!t)return;const n=new Set(t);for(const r of Object.keys(e))"leg"===r||n.has(r)||delete e[r]})(n,t.sectionTypes),n},yr=1e-4,fr=(e,t)=>Math.abs(e[0]-t[0])<yr&&Math.abs(e[1]-t[1])<yr,Tr={depart:"DEPART",waypointLeft:"WAYPOINT_LEFT",waypointRight:"WAYPOINT_RIGHT",waypointReached:"WAYPOINT_REACHED",waypointAhead:"WAYPOINT_AHEAD",arrive:"ARRIVE",arriveLeft:"ARRIVE_LEFT",arriveRight:"ARRIVE_RIGHT",arriveAhead:"ARRIVE_AHEAD",continueStraight:"STRAIGHT",keepLeft:"KEEP_LEFT",keepRight:"KEEP_RIGHT",turnSlightRight:"SLIGHT_RIGHT",turnRight:"TURN_RIGHT",turnSharpRight:"SHARP_RIGHT",turnSlightLeft:"SLIGHT_LEFT",turnLeft:"TURN_LEFT",turnSharpLeft:"SHARP_LEFT",makeUTurn:"MAKE_UTURN",roundaboutStraight:"ROUNDABOUT_STRAIGHT",roundaboutSharpRight:"ROUNDABOUT_SHARP_RIGHT",roundaboutRight:"ROUNDABOUT_RIGHT",roundaboutSlightRight:"ROUNDABOUT_SLIGHT_RIGHT",roundaboutSlightLeft:"ROUNDABOUT_SLIGHT_LEFT",roundaboutLeft:"ROUNDABOUT_LEFT",roundaboutSharpLeft:"ROUNDABOUT_SHARP_LEFT",roundaboutBack:"ROUNDABOUT_BACK",exitRoundabout:"EXIT_ROUNDABOUT",exitMotorwayLeft:"EXIT_MOTORWAY_LEFT",exitMotorwayRight:"EXIT_MOTORWAY_RIGHT",switchMotorwayLeft:"SWITCH_MOTORWAY_LEFT",switchMotorwayRight:"SWITCH_MOTORWAY_RIGHT",enterCarpoolLaneLeft:"ENTER_CARPOOL_LANE_LEFT",enterCarpoolLaneRight:"ENTER_CARPOOL_LANE_RIGHT",exitCarpoolLaneLeft:"EXIT_CARPOOL_LANE_LEFT",exitCarpoolLaneRight:"EXIT_CARPOOL_LANE_RIGHT",mergeLeftLane:"MERGE_LEFT_LANE",mergeRightLane:"MERGE_RIGHT_LANE",takeShipFerry:"TAKE_SHIP_FERRY",takeCarTrain:"TAKE_CAR_TRAIN",leaveShipFerry:"LEAVE_SHIP_FERRY",leaveCarTrain:"LEAVE_CAR_TRAIN",crossBorder:"CROSS_BORDER",passTollgate:"TOLLGATE"},Rr={urban:"URBAN",motorway:"MOTORWAY",controlledAccess:"CONTROLLED_ACCESS"},br={endOfRoad:"END_OF_ROAD",atTrafficLight:"AT_TRAFFIC_LIGHT",onToBridge:"ON_TO_BRIDGE",onBridge:"ON_BRIDGE",afterBridge:"AFTER_BRIDGE",intoTunnel:"INTO_TUNNEL",insideTunnel:"INSIDE_TUNNEL",afterTunnel:"AFTER_TUNNEL"},Sr={cashCoinsAndBills:"CASH_COINS_AND_BILLS",cashBillsOnly:"CASH_BILLS_ONLY",cashCoinsOnly:"CASH_COINS_ONLY",cashExactChange:"CASH_EXACT_CHANGE",creditCard:"CREDIT_CARD",debitCard:"DEBIT_CARD",travelCard:"TRAVEL_CARD",etc:"ETC",etcTransponder:"ETC_TRANSPONDER",etcVideoCamera:"ETC_VIDEO_CAMERA",subscription:"SUBSCRIPTION"},Ir={straight:"STRAIGHT",slightRight:"SLIGHT_RIGHT",right:"RIGHT",sharpRight:"SHARP_RIGHT",rightUTurn:"RIGHT_U_TURN",slightLeft:"SLIGHT_LEFT",left:"LEFT",sharpLeft:"SHARP_LEFT",leftUTurn:"LEFT_U_TURN"},Cr={unknown:"UNKNOWN",noMarking:"NO_MARKING",longDashed:"LONG_DASHED",doubleSolid:"DOUBLE_SOLID",singleSolid:"SINGLE_SOLID",solidDashed:"SOLID_DASHED",dashedSolid:"DASHED_SOLID",shortDashed:"SHORT_DASHED",shadedAreaMarking:"SHADED_AREA_MARKING",dashedBlocks:"DASHED_BLOCKS",doubleDashed:"DOUBLE_DASHED",crossingAlert:"CROSSING_ALERT",physicalDivider:"PHYSICAL_DIVIDER",physicalDividerLessThan3m:"PHYSICAL_DIVIDER_LESS_THAN_3M",physicalDividerGuardrail:"PHYSICAL_DIVIDER_GUARDRAIL",curb:"CURB"},Ar={straight:"STRAIGHT",slightRight:"SLIGHT_RIGHT",right:"RIGHT",sharpRight:"SHARP_RIGHT",slightLeft:"SLIGHT_LEFT",left:"LEFT",sharpLeft:"SHARP_LEFT",back:"BACK"},vr={regular:"REGULAR",small:"SMALL"},Pr={left:"LEFT",right:"RIGHT",leftAndRight:"LEFT_AND_RIGHT"},Lr={properties:[]},Mr=e=>{const t=e.phonetic;return{text:e.text,...t&&{phonetic:t},...e.phoneticLanguageCode&&{phoneticLanguageCode:e.phoneticLanguageCode}}},Er=e=>({properties:(e.properties??[]).map(e=>Rr[e]??e.toUpperCase()),...e.roadNames?.length&&{streetName:Mr(e.roadNames[0].identifier)},...e.countryCodeIso2&&{countryCode:On(e.countryCodeIso2)},...e.roadShields?.length&&{roadShields:e.roadShields.map(e=>({roadNumber:e.roadNumber?Mr(e.roadNumber):{text:""},countryCode:On(e.countryCodeIso2??""),...e.countrySubdivisionCodeIso&&{stateCode:e.countrySubdivisionCodeIso},...e.iconReference&&{roadShieldReference:e.iconReference}}))}}),Dr=e=>({...e.tollgateName&&{tollgateName:Mr(e.tollgateName)},...e.tollPaymentTypes?.length&&{tollPaymentTypes:e.tollPaymentTypes.map(e=>Sr[e]??e)},...e.countryCrossingFromName&&{countryCrossingFromName:Mr(e.countryCrossingFromName)},...e.countryCrossingFromCodeIso2&&{countryCrossingFromCode:On(e.countryCrossingFromCodeIso2)},...e.countryCrossingToName&&{countryCrossingToName:Mr(e.countryCrossingToName)},...e.countryCrossingToCodeIso2&&{countryCrossingToCode:On(e.countryCrossingToCodeIso2)}}),wr=e=>Ar[e]??e,xr=e=>{return{...e.message&&{message:e.message},...e.intersectionName&&{intersectionName:Mr(e.intersectionName)},...e.drivingSide&&{drivingSide:e.drivingSide.toUpperCase()},...e.landmark&&{landmark:br[e.landmark]??e.landmark},...!L(e.distanceToPreviousTrafficLightInMeters)&&{trafficLightOffsetInMeters:e.distanceToPreviousTrafficLightInMeters},...e.sideRoads&&{sideRoads:(n=e.sideRoads,n.map(e=>({side:Pr[e.side]??e.side,offsetFromManeuverInMeters:e.offsetFromManeuverInMeters,...!L(e.isDrivable)&&{isDrivable:e.isDrivable}})))},...e.maneuverView&&{maneuverView:(t=e.maneuverView,{...t.onRouteAngle&&{onRouteAngle:wr(t.onRouteAngle)},offRouteAngles:(t.offRouteAngles??[]).map(wr)})},...e.roundaboutType&&{roundaboutType:vr[e.roundaboutType]??e.roundaboutType},...!L(e.isManeuverObligatory)&&{isManeuverObligatory:e.isManeuverObligatory},...!L(e.changeOfAngleInDegrees)&&{changeOfAngleInDegrees:e.changeOfAngleInDegrees},...!L(e.ambiguousExitOffsetFromManeuverInMeters)&&{offsetOfAmbiguousExitFromManeuverInMeters:e.ambiguousExitOffsetFromManeuverInMeters},...!L(e.roundaboutExitNumber)&&{roundaboutExitNumber:e.roundaboutExitNumber}};var t,n},Nr=(e,t)=>{const n=e.signpost?(e=>{if(e.exitName||e.exitNumber||e.towardName)return{...e.exitName&&{exitName:Mr(e.exitName)},...e.exitNumber&&{exitNumber:Mr(e.exitNumber)},towardName:e.towardName?Mr(e.towardName):{text:""}}})(e.signpost):void 0,r=(e.nextRoadInformation?.roadShields??[]).map(e=>e.iconReference).filter(e=>!!e);return{...n&&{signpost:n},...t&&{roadShieldAtlasReference:t},...r.length&&{roadShieldReferences:r},...e.signpost?.exitIconReference&&{signpostRoadShieldReferences:[e.signpost.exitIconReference]}}},Or=(e,t,n,r)=>({maneuverPoint:t,pathPointIndex:n,routeOffsetInMeters:e.routeOffsetInMeters,maneuver:e.maneuver?Tr[e.maneuver]??e.maneuver:e.maneuver,routePath:(e.routePath??[]).map(e=>({point:[e.point.longitude,e.point.latitude],distanceInMeters:e.distanceFromRouteStartInMeters,travelTimeInSeconds:e.travelTimeFromRouteStartInSeconds})),nextRoadInfo:e.nextRoadInformation?Er(e.nextRoadInformation):Lr,previousRoadInfo:e.previousRoadInformation?Er(e.previousRoadInformation):Lr,...xr(e),...Nr(e,r),...Dr(e)}),_r=(e,t,n)=>{const r=[];let a=0;for(const o of e){const e=[o.maneuverPoint.longitude,o.maneuverPoint.latitude];for(let n=a;n<t.length;n++)if(fr(t[n],e)){a=n;break}r.push(Or(o,e,a,n))}return{instructions:r}},Br=(e,t)=>{const n=e.routes.map((n,r)=>((e,t,n,r)=>{const o={type:"LineString",coordinates:e.legs.flatMap(e=>e.path.coordinates)};return{type:"Feature",geometry:o,id:s(),bbox:a(o),properties:{index:t,summary:dr(e.summary,n),sections:hr(e,n),...e.instructions?.length&&{guidance:_r(e.instructions,o.coordinates,r)},...e.progressPoints&&{progress:e.progressPoints.map(e=>({pointIndex:e.pathIndex,distanceInMeters:e.distanceInMeters,travelTimeInSeconds:e.travelDurationInSeconds}))}}}})(n,r,t,e.roadShieldAtlasReference)),r=a(n);return{type:"FeatureCollection",...r&&{bbox:r},features:n}},Hr={requestValidation:{schema:cr,refinements:[{check:e=>{const t=e.locations.map(p),n=t.filter(e=>"waypoint"===e).length,r=t.filter(e=>"path"===e).length;return n>=2||r>=1},message:"At least 2 waypoints or 1 path (route reconstruction) is required."},{check:e=>!e.chargingStopsStrategy||Qn(e),message:"chargingStopsStrategy: set vehicle.preferences.chargingPreferences as well — an EV route needs a minimum charge at the destination, which only the charging preferences provide."}]},buildRequest:rr,sendRequest:$,parseResponse:Br,parseResponseError:xt,getAPIVersion:()=>3},Fr={buildCalculateRouteRequest:rr,parseCalculateRouteResponse:Br,calculateRouteTemplate:Hr},Gr=["MOTORWAY","MAJOR_ROAD","OTHER_MAJOR_ROAD","SECONDARY_ROAD","LOCAL_CONNECTING_ROAD","LOCAL_ROAD_HIGH_IMPORTANCE","LOCAL_ROAD","LOCAL_ROAD_MINOR_IMPORTANCE","OTHER_ROAD"],Ur={speed:"SPEED",freeFlowSpeed:"FREE_FLOW_SPEED",congestionLevel:"CONGESTION_LEVEL",travelTime:"TRAVEL_TIME",networkLength:"NETWORK_LENGTH"},kr=e=>e instanceof Date?e.toISOString().slice(0,10):e,Wr=Array.from({length:24},(e,t)=>t),Kr=e=>Gr.indexOf(e),Vr=e=>{const n=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/areaanalytics/reports/lite`)(e));ge(n.searchParams,e);const r=e=>{const t=/* @__PURE__ */new Date;return t.setDate(t.getDate()-e),t},a=Array.isArray(e.days)?{days:e.days.map(kr)}:{startDate:kr(e.startDate??r(3)),endDate:kr(e.endDate??r(2))};return{method:"POST",url:n,data:{name:e.name??`Maps SDK JS Area Analytics Report ${/* @__PURE__ */(new Date).toISOString()}`,...a,dataTypes:"all"===e.metrics?t.map(e=>Ur[e]):e.metrics.map(e=>Ur[e]),frcs:"all"===e.functionalRoadClasses?Gr.map((e,t)=>t):e.functionalRoadClasses.map(Kr),hours:"all"===e.hours?Wr:e.hours,features:[{type:"Feature",geometry:e.geometry}]}}},jr=e=>({...void 0!==e.v&&{speed:e.v},...void 0!==e.fv&&{freeFlowSpeed:e.fv},...void 0!==e.c&&{congestionLevel:e.c},...void 0!==e.t&&{travelTime:e.t},...void 0!==e.l&&{networkLength:e.l}}),qr=e=>({...void 0!==e.date&&{date:new Date(e.date)},...void 0!==e.year&&{year:e.year},...void 0!==e.month&&{month:e.month},...void 0!==e.week&&{week:e.week},...void 0!==e.hour&&{hour:e.hour},...void 0!==e.day&&{day:e.day},...jr(e)}),Yr=(e,t)=>{const n=new Date(e);return n.setDate(n.getDate()+t),n},$r=(e,t)=>e.map((e,n)=>{const r=qr(e);return void 0===r.date&&(r.date=Yr(t,Math.floor(n/24))),void 0===r.hour&&(r.hour=n%24),r}),Zr=(e,t)=>e.map((e,n)=>{const r=qr(e);return void 0===r.date&&(r.date=Yr(t,n)),r}),zr=e=>({tileCentre:[e.lon,e.lat],...jr(e)}),Jr=e=>({startDate:new Date(e.startDate),endDate:new Date(e.endDate),labels:e.labels}),Qr=(e,t)=>{return{...e.yearly&&{yearly:e.yearly.map(qr)},...e.monthly&&{monthly:e.monthly.map(qr)},...e.weekly&&{weekly:e.weekly.map(qr)},...e.daily&&{daily:Zr(e.daily,t)},...e.hourly&&{hourly:$r(e.hourly,t)},...e.average&&{average:(n=e.average,n.map((e,t)=>{const n=qr(e);return void 0===n.day&&(n.day=Math.floor(t/24)+1),void 0===n.hour&&(n.hour=t%24),n}))}};var n},Xr={SPEED:"speed",FREE_FLOW_SPEED:"freeFlowSpeed",CONGESTION_LEVEL:"congestionLevel",TRAVEL_TIME:"travelTime",NETWORK_LENGTH:"networkLength"},ea=e=>{const t={};for(const[n,r]of Object.entries(e)){const e=Xr[n];e&&(t[e]=r.map(Jr))}return t},ta=(e,t)=>({name:e.name,timezone:e.timezone,level:e.level,baseData:jr(e.baseData),timedData:Qr(e.timedData,t),...e.tiledData&&{tiledData:{tiles:e.tiledData.tiles.map(zr)}},...e.anomalies&&{anomalies:ea(e.anomalies)}}),na=e=>{const n=e.flatMap(e=>e.properties.tiledData?.tiles??[]),r={};for(const a of t){const e=n.map(e=>e[a]).filter(e=>null!=e);e.length>0&&(r[a]={min:Math.min(...e),max:Math.max(...e)})}return r},ra=e=>{const t=new Date(e.properties.startDate),n=e.features.map(e=>((e,t)=>({type:e.type,id:e.id,geometry:e.geometry,properties:ta(e.properties,t),bbox:a(e.geometry)}))(e,t));return{type:"FeatureCollection",properties:{startDate:t,endDate:new Date(e.properties.endDate),metrics:e.properties.dataTypes.map(e=>Xr[e]).filter(e=>void 0!==e),heatmap:e.properties.heatmap,frcs:e.properties.frcs,ranges:na(n)},features:n}},aa=P.union([P.date(),P.string().regex(/^\d{4}-\d{2}-\d{2}$/,"Date must be in 'YYYY-MM-DD' format")]),oa=P.union([P.object({type:P.literal("Polygon"),coordinates:P.array(P.array(P.array(P.number()))).min(1)}),P.object({type:P.literal("MultiPolygon"),coordinates:P.array(P.array(P.array(P.array(P.number())))).min(1)})]),ia=e=>e instanceof Date?e:new Date(e),sa=e=>{const t=/* @__PURE__ */new Date,n=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return(e=>{const t=ia(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())})(e)<=n-1728e5},ca={requestValidation:{schema:H.extend({name:P.string().optional(),startDate:aa.optional(),endDate:aa.optional(),days:P.array(aa).min(1).optional(),metrics:P.union([P.array(P.enum(t)).min(1),P.literal("all")]),functionalRoadClasses:P.union([P.array(P.enum(Gr)).min(1),P.literal("all")]),hours:P.union([P.array(P.number().int().min(0).max(23)).min(1),P.literal("all")]),geometry:oa}).refine(e=>{const t=void 0!==e.days,n=void 0!==e.startDate;if(t&&n)return!1;if(!t&&!n)return!1;if(void 0!==e.startDate){const t=((void 0!==e.endDate?ia(e.endDate):/* @__PURE__ */new Date).getTime()-ia(e.startDate).getTime())/864e5;return t>=1&&t<=31}return!0},{message:"Provide either startDate (with optional endDate, at least 1 day apart and within 31 days) or days — but not both"}).refine(e=>{if(void 0!==e.days)return e.days.every(sa);const t=e.endDate??/* @__PURE__ */new Date;return sa(t)},{message:"Dates must be at least 2 days before today"})},buildRequest:Vr,sendRequest:$,parseResponse:ra},la={buildTrafficAreaAnalyticsRequest:Vr,parseTrafficAreaAnalyticsResponse:ra,trafficAreaAnalyticsTemplate:ca},ua=e=>{const t=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/traffic/incidentDetails`)(e)),n=t.searchParams;if(ge(n,e),((e,t)=>{ye(e,"fields","{incidents{type,geometry{type,coordinates},properties{id,iconCategory,magnitudeOfDelay,events{description,code,iconCategory},startTime,endTime,from,to,length,delay,roadNumbers,timeValidity,probabilityOfOccurrence,numberOfReports,lastReportTime,tmc{countryCode,tableNumber,tableVersion,direction,points{location,offset}}}}}"),ye(e,"t",t.trafficModelId),he(e,"categoryFilter",t.categoryFilter?.map(A)),he(e,"timeValidityFilter",t.timeValidityFilter)})(n,e),"bbox"in e&&e.bbox){const r=a(e.bbox);return r&&n.append("bbox",r.join(",")),{method:"GET",url:t}}const{ids:r}=e;return r.length>5?{method:"POST",url:t,data:{ids:r}}:(n.append("ids",r.join(",")),{method:"GET",url:t})},da=e=>({description:e.description,code:e.code,category:m(e.iconCategory)}),pa=e=>{const t=e.properties;return{type:"Feature",id:t.id,geometry:e.geometry,properties:{id:t.id,category:m(t.iconCategory),magnitudeOfDelay:g[t.magnitudeOfDelay]??"unknown",events:(t.events??[]).map(da),...t.startTime&&{startTime:new Date(t.startTime)},...t.endTime&&{endTime:new Date(t.endTime)},...t.from&&{from:t.from},...t.to&&{to:t.to},...null!=t.length&&{lengthInMeters:t.length},...null!=t.delay&&{delayInSeconds:t.delay},...t.roadNumbers&&{roadNumbers:t.roadNumbers},timeValidity:t.timeValidity,...t.probabilityOfOccurrence&&{probabilityOfOccurrence:t.probabilityOfOccurrence},...null!=t.numberOfReports&&{numberOfReports:t.numberOfReports},...t.lastReportTime&&{lastReportTime:new Date(t.lastReportTime)},...t.tmc&&{tmc:(n=t.tmc,{countryCode:n.countryCode,tableNumber:n.tableNumber,tableVersion:n.tableVersion,direction:n.direction,points:(n.points??[]).map(e=>({location:e.location,...null!=e.offset&&{offset:e.offset}}))})}}};var n},ma=e=>({type:"FeatureCollection",features:(e.incidents??[]).filter(e=>null!==e).map(pa)}),ga={requestValidation:{schema:H.extend({bbox:ne.optional(),ids:P.array(P.string()).optional(),trafficModelId:P.string().optional(),categoryFilter:P.array(P.enum(C)).optional(),timeValidityFilter:P.array(P.enum(["present","future"])).optional()}).refine(e=>!(e.bbox&&e.ids),{message:"Provide either bbox or ids, not both"})},buildRequest:ua,sendRequest:$,parseResponse:ma},ha={alongRouteSearch:je,reverseGeocode:Wn,geocode:ct,geometryData:yt,geometrySearch:At,calculateRoute:Fr,reachableRange:Dn,evChargingStationsAvailability:Xe,trafficAreaAnalytics:la,trafficIncidentDetails:{buildTrafficIncidentDetailsRequest:ua,parseTrafficIncidentDetailsResponse:ma,trafficIncidentDetailsTemplate:ga},placeByID:wt,autocompleteSearch:qe},ya=async(e,t)=>U(e,{...Qe,...t},"EVChargingStationsAvailability"),fa=async(e,t)=>{const n=e.properties.dataSources?.chargingAvailability?.id;if(n)try{const r=await ya({...t,id:n}),a=e.properties.poi;return r?{...e,properties:{...e.properties,...a&&{poi:{...a,openingHours:r.openingHours}},chargingPark:{...e.properties.chargingPark,availability:r}}}:void 0}catch(r){return void console.error(r)}};async function Ta(e,t){const{excludeIfAvailabilityUnknown:n,...r}=t??{},o=[];for(const a of e.features){const e=await fa(a,r);e?o.push(e):n||o.push(a)}return{...e,features:o,bbox:a(o)}}var Ra=e=>Boolean(e&&"availability"in e&&e.availability),ba=P.array(P.number()).min(2),Sa=P.object({type:P.literal("Polygon"),coordinates:P.array(P.array(P.array(P.number()))),bbox:P.array(P.number()).optional()}),Ia=P.object({type:P.literal("MultiPolygon"),coordinates:P.array(P.array(P.array(P.array(P.number())))),bbox:P.array(P.number()).optional()}),Ca=P.object({type:P.literal("Circle"),coordinates:ba,radius:P.number().positive()}),Aa=P.object({type:P.literal("FeatureCollection"),features:P.array(P.object({type:P.literal("Feature"),geometry:P.union([Sa,Ia]),properties:P.any().optional()}))}),va=P.union([Sa,Ia,Ca,Aa]),Pa=P.tuple([P.number(),P.number(),P.number(),P.number()]),La=P.object({bbox:Pa}),Ma=P.union([Pa,La]),Ea=1e4,Da=P.enum(["POI","PointAddress","Street"]),wa=P.object({municipalities:P.array(P.string()).optional(),boundingBoxes:P.array(Ma).optional(),geometries:P.array(va).optional(),placeTypes:P.array(Da).min(1).optional(),areaId:P.string().min(1).optional(),areaTags:P.array(P.string().min(1)).min(1).optional(),offset:P.number().int().min(0).max(Ea).optional(),limit:P.number().int().min(1).max(Ea).optional()}),xa=oe.extend(et.extend(wa.shape).shape),Na=e=>{const[t,n]=e.coordinates,r=e.radius/6371e3*(180/Math.PI),a=r/Math.cos(n*Math.PI/180),o=[];for(let i=0;i<64;i++){const e=2*Math.PI*i/64;o.push([t+a*Math.cos(e),n+r*Math.sin(e)])}return o.push(o[0]),{type:"Polygon",coordinates:[o]}},Oa=e=>{switch(e.type){case"Polygon":case"MultiPolygon":return[e];case"Circle":return[Na(e)];case"FeatureCollection":return e.features.map(e=>e.geometry)}},_a=e=>(e=>{if(e.length<2)return e;const[t,n]=[e[0],e[e.length-1]];return t[0]===n[0]&&t[1]===n[1]?e:[...e,[...t]]})((e=>e.filter((t,n)=>0===n||t[0]!==e[n-1][0]||t[1]!==e[n-1][1]))(e)),Ba=e=>"Polygon"===e.type?{...e,coordinates:e.coordinates.map(_a)}:{...e,coordinates:e.coordinates.map(e=>e.map(_a))},Ha={POI:"POI",PointAddress:"Point Address",Street:"Street"},Fa=e=>{const t=(e=>{const t=/* @__PURE__ */new Set;for(const n of e.categorySet??[])t.add(Number(n));return e.preferredCategoryId&&t.add(Number(e.preferredCategoryId)),[...t].filter(e=>Number.isFinite(e))})(e);t.sort((e,t)=>t-e);const n=/* @__PURE__ */new Set,r=[];for(const a of t){const e=S[a];e&&!n.has(e)&&(n.add(e),r.push(e))}return r},Ga=e=>{const{id:t,position:n,address:r,score:a,distance_m:o,type:i,viewport:s}=e,c=Ha[i??"POI"],l=(e=>{if(e?.name)return{name:e.name,categories:Fa(e),localizedCategories:e.classifications?.map(e=>e.name)??[],...e.phone&&{phone:e.phone},...e.url&&{url:e.url},...e.brands?.length&&{brands:e.brands.map(e=>e.name)},...e.timeZone?.ianaId&&{timeZone:e.timeZone}}})(e.poi),u=(e=>{if(!e)return;const[[t,n],[r,a]]=e.coordinates;return[t,n,r,a]})(s);return{type:"Feature",id:t,geometry:I(n),...u&&{bbox:u},properties:{type:c,...r&&{address:r},...l&&{poi:l},...void 0!==a&&{score:a},...void 0!==o&&{distance:o},...e.area_id&&{areaId:e.area_id},...e.area_country&&{areaCountry:e.area_country},...e.area_tags?.length&&{areaTags:e.area_tags}}}},Ua=(e,t)=>{const n=!!u(t.position),r=n?u(t.position):null;return{query:t.query??"",queryType:n?"NEARBY":"NON_NEAR",queryTime:0,numResults:e.hits.length,offset:t.offset??0,totalResults:e.total,fuzzyLevel:0,...r&&{geoBias:r}}},ka={requestValidation:{schema:xa,refinements:[{check:e=>!!(e.position||e.boundingBox||e.boundingBoxes?.length||e.geometries?.length||e.municipalities?.length||e.areaId),message:"A geographic bias is required: provide one of position, boundingBox(es), geometries, municipalities, or areaId."},{check:e=>(e.offset??0)+(e.limit??10)<=Ea,message:"offset + limit must not exceed 10000 (the places-api pagination window; when limit is omitted the backend defaults to 10)."}]},buildRequest:e=>{const t=new URL("/places",(e=>e.customServiceBaseURL??"https://search-places-poc.whitebush-bbe9c5f7.westeurope.azurecontainerapps.io")(e)),n=(e=>{const t=u(e.position);if(t)return{coordinates:t,radius_km:e.radiusMeters&&e.radiusMeters>0?e.radiusMeters/1e3:2}})(e),r=(e=>e.poiCategories?.length?e.poiCategories.map(e=>String(b[e])):void 0)(e),o=(e=>{const t=[...e.boundingBox?[e.boundingBox]:[],...e.boundingBoxes??[]].map(e=>a(e)).filter(e=>void 0!==e);return t.length?t:void 0})(e),i=(e=>{if(!e.geometries?.length)return;const t=e.geometries.flatMap(Oa).map(Ba);return t.length?t:void 0})(e),s=(e=>e.municipalities?.length?e.municipalities:void 0)(e);return{url:t,data:{...e.query&&{q:e.query},...e.countries?.[0]&&{country:e.countries[0]},...s&&{municipalities:s},...e.poiBrands?.[0]&&{brand:e.poiBrands[0]},...r&&{categories:r},...e.placeTypes?.length&&{types:e.placeTypes},...e.areaId&&{area_id:e.areaId},...e.areaTags?.length&&{area_tags:e.areaTags},...n&&{near:n},...o&&{bboxes:o},...i&&{geometries:i},...void 0!==e.offset&&{from:e.offset},...void 0!==e.limit&&{size:e.limit}}}},sendRequest:Y,parseResponse:(e,t)=>{const n=e.hits.map(Ga),r=o(a(n));return{type:"FeatureCollection",properties:Ua(e,t),features:n,...r&&{bbox:r}}}},Wa=async(e,t)=>U(e,{...ka,...t},"ExplorationSearch"),Ka=["village","small_town","mid_town","suburban","rural","semi_rural","residential","inland","coastal","atlantic_coast","alpine","mountain","foothills","forest","plains","farmland","agricultural","no_tourism","low_tourism","moderate_tourism","tourism_economy","eco_tourism","heritage_tourism","watersports","hiking","cycling","industrial","logistics_hub","retail_hub","shopping_district","hospital_town","dining_scene","car_oriented","walkable","transit_connected","transit_sparse","highway_corridor","commuter_town","low_traffic","moderate_traffic","sparse_commercial","western_europe","central_europe","southern_europe","north_american","iberian"],Va=["lakefront","riverine","wetland","marina","harbor","beach","mediterranean","ski_destination","beach_destination","wine_tourism","vineyard","university_town","medieval_old_town","unesco_site","midwest_us","rust_belt"],ja=async(e,t)=>U(e,{...st,...t},"Geocode"),qa=async e=>{const t=await ja({query:e,limit:1});if(!t.features[0])throw new Error(`geocodeOne: no results found for "${e}"`);return t.features[0]};async function Ya(e,t){const n=await U(e,{...ht,...t},"GeometryData");return Array.isArray(e.geometries)||"FeatureCollection"!==e.geometries.type?n:((e,t)=>{const n=e.features.reduce((e,t)=>{const n=t.properties.dataSources?.geometry?.id;return n&&(e[n]={...t.properties,placeCoordinates:t.geometry.coordinates}),e},{}),r=t.features.map(e=>e.id&&n[e.id]?{...e,properties:n[e.id]}:e);return{type:"FeatureCollection",bbox:t.bbox,features:r}})(e.geometries,n)}var $a=async(e,t)=>U(e,{...Dt,...t},"PlaceById"),Za=/* @__PURE__ */new Map,za=/* @__PURE__ */new Map,Ja="en-GB",Qa=e=>e??Ja,Xa=e=>e.toLowerCase().replaceAll(/[\s\-_,]+/g,""),eo=e=>{const t={};for(const n of e){const e=[n.name,...n.synonyms].map(Xa);for(const r of e)t[r]=n}return t},to=H.extend({filters:P.array(P.string()).optional()}),no=e=>{const t=S[e.id];return t?{code:t,name:e.name,childCategoryCodes:e.childCategoryIds.map(e=>S[e]).filter(e=>!!e),synonyms:e.synonyms}:(console.error(`Received unknown POI category ID ${e.id} (${e.name}). This category will be skipped and unavailable for filtering.`),null)},ro={requestValidation:{schema:to},buildRequest:e=>{const t=e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/poiCategories.json`,n=new URL(t);return ge(n.searchParams,e),n},getAPIVersion:()=>1,sendRequest:q,parseResponse:e=>({poiCategories:e.poiCategories.map(no).filter(e=>null!==e)})},ao=(e,t)=>{const n=(e=>za.get(e??Ja)??{})(e),r=/* @__PURE__ */new Map;for(const a of t){const e=Xa(a);for(const[t,a]of Object.entries(n))t.includes(e)&&a&&r.set(a.code,a)}for(const a of r.values())for(const e of a.childCategoryCodes)r.delete(e);return[...r.values()]},oo=async(e={})=>{const{language:t}=f(e);let n=(e=>Za.get(Qa(e)))(t);return n||(n=(await U(e,ro,"POICategories")).poiCategories,((e,t)=>{const n=Qa(e);Za.set(n,t),za.set(n,eo(t))})(t,n)),e.filters?.length?{poiCategories:ao(t,e.filters)}:{poiCategories:n}},io=async(e={})=>{const{poiCategories:t}=await oo(e);return t.map(e=>e.code)},so=async(e,t)=>U(e,{...En,...t},"Reachable Range"),co=(...e)=>{const t=e.filter(e=>!!e);return t.length<2?t[0]:AbortSignal.any(t)},lo=async(e,t,n)=>{const r=[];for(const a of e){const e=co(a.signal,t?.signal);try{r.push(await so({...a,...e&&{signal:e}},n))}catch(i){if(!(i instanceof x)||403===i.status||429===i.status)throw i}}const o=a(r);return{type:"FeatureCollection",...o&&{bbox:o},features:r}},uo=async(e,t)=>U(e,{...kn,...t},"ReverseGeocode"),po=async(e,t)=>U(e,{...Hr,...t},"Routing"),mo=P.object({minFuzzyLevel:P.number().min(1).max(4).optional(),maxFuzzyLevel:P.number().min(1).max(4).optional()}),go=oe.extend(et.extend(mo.shape).shape),ho=e=>{let t;switch(e.type){case"COORDINATE":t={...e,details:{position:Ee(e.details)}};break;case"NEARBY":t={...e,details:{position:Ee({lon:e.details.lon,lat:e.details.lat}),text:e.details.text,query:e.details.query}};break;case"BOOKMARK":case"W3W":t=e}return t},yo={requestValidation:{schema:go},buildRequest:e=>{const t=new URL(`${(e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/search/${e.query??""}.json`)(e)}`);Te(t,e);const n=t.searchParams;ye(n,"typeahead",e.typeahead),ye(n,"ofs",e.offset),he(n,"countrySet",e.countries),ye(n,"radius",e.radiusMeters);const r=e.boundingBox&&a(e.boundingBox);return r&&(n.append("topLeft",nt([r[3],r[0]])),n.append("btmRight",nt([r[1],r[2]]))),ye(n,"minFuzzyLevel",e.minFuzzyLevel),ye(n,"maxFuzzyLevel",e.maxFuzzyLevel),t},sendRequest:q,parseResponse:e=>{const t=e.results.map(Ne),n=o(a(t));return{type:"FeatureCollection",properties:{...Oe(e.summary),queryIntent:e.summary.queryIntent.map(ho)},features:t,...n&&{bbox:n}}}},fo=async(e,t)=>"route"in e?He(e,t):"geometries"in e?Ct(e,t):(async(e,t)=>U(e,{...yo,...t},"FuzzySearch"))(e,t),To=async e=>{const t=await fo({query:e,limit:1});if(!t.features[0])throw new Error(`searchOne: no results found for "${e}"`);return t.features[0]},Ro=async(e,t)=>U(e,{...ca,...t},"TrafficAreaAnalytics"),bo=async(e,t)=>U(e,{...ga,...t},"TrafficIncidentDetails");export{w as APIErrorCode,Ka as POPULATED_AREA_TAGS,Va as RESERVED_AREA_TAGS,N as SDKAbortError,D as SDKError,x as SDKServiceError,He as alongRouteSearch,Ve as autocompleteSearch,hn as budgetTypes,_ as buildResponseError,B as buildValidationError,so as calculateReachableRange,lo as calculateReachableRanges,po as calculateRoute,ha as customizeService,ya as evChargingStationsAvailability,Wa as explorationSearch,ja as geocode,qa as geocodeOne,Ya as geometryData,oo as getPOICategories,io as getPOICategoryCodes,fa as getPlaceWithEVAvailability,Ta as getPlacesWithEVAvailability,Ra as hasChargingAvailability,O as parseDefaultResponseError,$a as placeById,uo as reverseGeocode,$e as routeTypes,fo as search,To as searchOne,Ze as tollTransponderOptions,Ro as trafficAreaAnalytics,bo as trafficIncidentDetails};
|
|
1
|
+
import{TomTomConfig as e,areaAnalyticsMetricKeys as t,avoidableTypes as n,bboxFromCoordsArray as r,bboxFromGeoJSON as a,bboxOnlyIfWithArea as o,currentTypes as i,generateId as s,generateTomTomHeaders as c,geographyTypes as l,getPosition as u,getPositionStrict as d,getRoutePlanningLocationType as p,iconToTrafficIncidentCategory as m,indexedMagnitudes as g,inputSectionTypesWithGuidance as h,isProxyCredentialsMode as y,mergeFromGlobal as f,plugTypes as T,poiCategories as R,poiCategoriesToID as b,poiIDsToCategories as I,toPointGeometry as S,trafficIncidentRequestCategories as C,trafficIncidentToIconCategory as A,views as v}from"@tomtom-org/maps-sdk/core";import{z as P}from"zod";import{isNil as L,omit as E}from"lodash-es";var M=/* @__PURE__ */function(e){return e[e.TOO_MANY_REQUESTS=429]="TOO_MANY_REQUESTS",e[e.FORBIDDEN=403]="FORBIDDEN",e}({}),D=class e extends Error{constructor(t,n,r){super(t),this.service=n,this.issues=r,Error.captureStackTrace&&Error.captureStackTrace(this,e)}},w={[M.TOO_MANY_REQUESTS]:"Too Many Requests: The API Key is over QPS (Queries per second)",[M.FORBIDDEN]:"Request failed with status code 403"},x=class extends D{constructor(e,t,n){super(e,t),this.status=n,this.status&&w[this.status]&&(this.message=w[this.status])}},N=class extends D{constructor(e,t){super("The operation was aborted.",e),this.name="AbortError",this.cause=t}},O=(e,t)=>{const{data:n,message:r,status:a}=e;return new x(n?.error||n?.errorText||r,t,a)},_=(e,t,n,r)=>{if(r?.aborted&&e===r.reason)return new N(t,r.reason);if(r?.aborted&&"AbortError"===e?.name)return new N(t,r.reason);if(e.status){const r=e;return n?n(r,t):O(r,t)}return new D(e.message,t)},B=(e,t)=>new D(e.message,t,e.issues),H=P.object({apiKey:P.string().optional(),commonBaseURL:P.string().optional(),customServiceBaseURL:P.string().optional(),language:P.string().optional()}),F=(e,t=0)=>{const n=e.path.length>0?`${e.path.join(".")}: `:"";if("invalid_union"===e.code){const r=e.unionErrors;if(r?.length)return`${n}no matching union member (${r.map((e,n)=>`option[${n}]: { ${e.issues.map(e=>F(e,t+1)).join(", ")} }`).join(" | ")})`}return`${n}${e.message}`},G=class extends Error{constructor(e){super(`${e.issues.map(e=>F(e)).join("; ")}\nIssues: ${JSON.stringify(e.issues,null,2)}`),this.issues=e.issues}},U=async(e,t,n)=>{if(e.signal?.aborted)throw new N(n,e.signal.reason);const r=t.getAPIVersion?.(e),a=f({...e,...r&&{apiVersion:r}});if(void 0===e.validateRequest||e.validateRequest)try{((e,t)=>{const n=(t?.schema?H.extend(t.schema.shape):H).superRefine((e,n)=>{if("commonBaseURL"in e||"customServiceBaseURL"in e||n.addIssue({code:"custom",message:"commonBaseURL or customServiceBaseURL is required"}),t?.refinements?.length)for(const r of t.refinements)r.check(e)||n.addIssue({code:"custom",message:r.message})}).safeParse(e);if(!n.success)throw new G(n.error)})(a,t.requestValidation)}catch(s){throw B(s,n)}const o=t.buildRequest(a),i=c(a);e.onAPIRequest?.(o);try{const n=await t.sendRequest(o,i,{signal:e.signal});return e.onAPIResponse?.(o,n),t.parseResponse(await n.data,a)}catch(s){throw e.onAPIResponse?.(o,s),_(s,n,t.parseResponseError,e.signal)}},k=class e extends Error{constructor(t,n,r){super(n??`HTTP Error ${t}`),this.name="FetchError",this.status=t,this.data=r,Error.captureStackTrace&&Error.captureStackTrace(this,e)}},W=async e=>{if(e.ok)return{data:await e.json(),status:e.status};let t,n;const r=e.headers.get("content-type");throw e.bodyUsed?t=e.statusText:r?.includes("application/json")?(n=await e.json(),t=n?.errorText??n?.message??n?.detailedError?.message):r?.includes("text/xml")&&(n=await e.text(),t=e.statusText),new k(e.status,t,n)},K=(e,t)=>new Promise((n,r)=>{if(t?.aborted)return void r(t.reason);const a=()=>{clearTimeout(o),r(t?.reason)},o=setTimeout(()=>{t?.removeEventListener("abort",a),n()},e);t?.addEventListener("abort",a,{once:!0})}),V=async(t,n)=>{const r=e.instance.get().retry;if(!r)return t();const{initialWaitMs:a,backoffFactor:o,timeoutMs:i}=r,s=Date.now();let c=a,l=await t();for(;429===l.status;){const e=Number.parseInt(l.headers.get("retry-after")??"",10),r=Number.isFinite(e)?1e3*e:c;if(Date.now()-s+r>i)break;await l.text().catch(()=>{}),await K(r,n),c*=o,l=await t()}return l},j=()=>y()?"include":void 0,q=async(e,t,n)=>W(await V(()=>{const r=j(),{url:a,headers:o}=e instanceof URL?{url:e,headers:void 0}:e,i={headers:{...t,...o}};return r&&(i.credentials=r),n?.signal&&(i.signal=n.signal),fetch(a,i)},n?.signal)),Y=async(e,t,n)=>W(await V(()=>{const r=j(),a={method:"POST",body:JSON.stringify(e.data),headers:{...t,...e.headers,"Content-Type":"application/json"}};return r&&(a.credentials=r),n?.signal&&(a.signal=n.signal),fetch(e.url,a)},n?.signal)),$=async(e,t,n)=>{if("GET"===e.method)return q(e,t,n);if("POST"===e.method)return Y(e,t,n);throw new Error(`Unsupported HTTP method received: ${e.method}`)},Z=P.array(P.array(P.number())),z=P.object({type:P.enum(["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","Circle"]),coordinates:P.union([P.array(P.number()),Z,P.array(P.array(P.array(P.number()))),P.array(P.array(P.array(P.array(P.number()))))]),radius:P.optional(P.number()),radiusMeters:P.optional(P.number()),bbox:P.optional(P.array(P.number()))}).check(P.refine(e=>"Circle"!==e.type||Boolean(e.radius),'type: "Circle" must have radius property')),J=P.object({type:P.literal("Feature"),geometry:z,id:P.optional(P.union([P.string(),P.number()])),properties:P.unknown().optional(),bbox:P.optional(P.array(P.number()))}),Q=P.object({type:P.literal("FeatureCollection"),features:P.array(J),id:P.optional(P.union([P.string(),P.number()])),properties:P.unknown().optional(),bbox:P.optional(P.array(P.number()))}),X=P.union([P.tuple([P.number().min(-180).max(180),P.number().min(-90).max(90)]),P.tuple([P.number().min(-180).max(180),P.number().min(-90).max(90),P.number()]),P.object({type:P.literal("Point"),coordinates:P.array(P.number())}),J]),ee=P.union([P.array(P.number()).refine(e=>4===e.length,{message:"BBox must have 4 elements"}),P.array(P.number()).refine(e=>6===e.length,{message:"BBox must have 6 elements"})]),te=P.union([z,J,Q]),ne=P.union([ee,te,P.array(te)]),re=P.object({query:P.string().optional(),position:X.optional(),limit:P.number().max(100).optional(),extendedPostalCodesFor:P.array(P.string()).optional(),mapcodes:P.array(P.string()).optional(),view:P.enum(v).optional(),geographyTypes:P.array(P.string()).optional()}),ae=P.object({indexes:P.array(P.string()).optional(),poiCategories:P.array(P.enum(R)).optional(),poiBrands:P.array(P.string()).optional(),connectors:P.array(P.string()).optional(),fuelTypes:P.array(P.string()).optional(),openingHours:P.string().optional(),timeZone:P.string().optional(),relatedPois:P.string().optional(),minPowerKW:P.number().optional(),maxPowerKW:P.number().optional(),minFuzzyLevel:P.number().optional(),maxFuzzyLevel:P.number().optional()}),oe=re.extend(ae.shape),ie=P.object({type:P.literal("LineString"),coordinates:Z}),se=P.object({type:P.literal("Feature"),geometry:ie}),ce=Z,le=P.union([ie,se,ce]),ue=P.object({route:le,maxDetourTimeSeconds:P.number().int().positive()}),de=P.object({sortBy:P.enum(["detourTime","detourOffset"]).optional()}),pe=oe.extend({...ue.shape,...de.shape}),me=e=>e?Array.isArray(e)?e.join(","):"string"==typeof e?e:String(e):"",ge=(e,t)=>{const n=e.length;if(n<=t)return e;const r=[];let a;const o=Math.ceil(n/t);for(a=0;a<n;a+=o)r.push(e[a]);return t>1&&a>=n-o&&(r.length<t?r.push(e[n-1]):r[r.length-1]=e[n-1]),r},he=e=>({...e.apiKey&&{"TomTom-Api-Key":e.apiKey},...!L(e.apiVersion)&&{"TomTom-Api-Version":String(e.apiVersion)},...e.language&&{"Accept-Language":e.language}}),ye=(e,t)=>{e.append("apiVersion",String(t.apiVersion)),t.apiKey&&e.append("key",t.apiKey),t.language&&e.append("language",t.language)},fe=(e,t,n)=>{Array.isArray(n)&&n.length>0&&e.append(t,n.join(","))},Te=(e,t,n)=>{!L(n)&&e.append(t,String(n))},Re=(e,t)=>{if(!t)return;if(void 0!==t.position)return((e,t)=>{const n=u(t);n&&(e.append("lat",String(n[1])),e.append("lon",String(n[0])))})(e,t.position),void Te(e,"radius",t.radiusMeters);const n=a(t.boundingBox);n&&(e.append("topLeft",me([n[3],n[0]])),e.append("btmRight",me([n[1],n[2]])))},be=(e,t)=>{const n=e.searchParams;ye(n,t),Te(n,"limit",t.limit),fe(n,"fuelSet",t.fuelTypes),fe(n,"idxSet",t.indexes),fe(n,"brandSet",t.poiBrands),t.poiCategories&&fe(n,"categorySet",t.poiCategories.map(e=>b[e])),fe(n,"connectorSet",t.connectors),fe(n,"mapcodes",t.mapcodes),fe(n,"extendedPostalCodesFor",t.extendedPostalCodesFor),Te(n,"minPowerKW",t.minPowerKW),Te(n,"maxPowerKW",t.maxPowerKW),Te(n,"view",t.view),Te(n,"openingHours",t.openingHours),Te(n,"timeZone",t.timeZone),Te(n,"relatedPois",t.relatedPois),fe(n,"entityTypeSet",t.geographyTypes)},Ie=e=>{const t=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/searchAlongRoute/${e.query??""}.json`)(e));be(t,e);const n=t.searchParams;return n.append("maxDetourTime",String(e.maxDetourTimeSeconds)),Te(n,"sortBy",e.sortBy),Te(n,"spreadingMode","plan"),{url:t,data:{route:{points:(r=e.route,Array.isArray(r)?{type:"LineString",coordinates:r}:"Feature"===r.type?r.geometry:r).coordinates.map(e=>({lat:e[1],lon:e[0]}))}}};var r},Se=e=>{const t={count:0,statusCounts:{}};for(const n of e)for(const e of n.chargingPoints)t.count++,t.statusCounts[e.status]=(t.statusCounts[e.status]||0)+1;return t},Ce=(e,t)=>e.type===t.type&&e.ratedPowerKW===t.ratedPowerKW,Ae=(e,t,n)=>{if(e)for(const r of e){const e=n.find(e=>Ce(r,e.connector));if(e){if(e.count++,t){const n=e.statusCounts;e.statusCounts[t]=(n[t]||0)+1}}else n.push({connector:r,count:1,statusCounts:t?{[t]:1}:{}})}},ve=e=>{const t=[];return((e,t)=>{if(e)for(const n of e){const e=t.find(e=>Ce(n,e.connector));e?e.count++:t.push({connector:n,count:1})}})(e,t),t},Pe=e=>{const t=[];for(const n of e)for(const e of n.chargingPoints)Ae(e.connectors,e.status,t);return t},Le=e=>e<12?"slow":e<50?"regular":e<150?"fast":"ultra-fast",Ee=e=>{const t=e.split(",");return[Number(t[1]),Number(t[0])]},Me=e=>`${e[1]},${e[0]}`,De=e=>{let t,n;return void 0!==e.topLeftPoint?(t=[e.topLeftPoint.lon,e.btmRightPoint.lat],n=[e.btmRightPoint.lon,e.topLeftPoint.lat]):(t=Ee(e.southWest),n=Ee(e.northEast)),[t[0],t[1],n[0],n[1]]},we=e=>[e.lon,e.lat],xe=e=>{const{year:t,month:n,day:r}=(e=>{const t=e.split("-");return{year:Number.parseInt(t[0]),month:Number.parseInt(t[1]),day:Number.parseInt(t[2])}})(e.date);return{dateYYYYMMDD:e.date,year:t,month:n,day:r,hour:e.hour,minute:e.minute,date:new Date(t,n-1,r,e.hour,e.minute)}},Ne=e=>1===e.length&&0===e[0].start.hour&&0===e[0].end.hour,Oe=e=>{const t=e.timeRanges.map(e=>({start:xe(e.startTime),end:xe(e.endTime)}));return{mode:e.mode,timeRanges:t,alwaysOpenThisPeriod:Ne(t)}},_e=e=>{const{position:t,entryPoints:n,poi:r,id:a,dist:o,boundingBox:i,chargingPark:s,...c}=e,l=s?.connectors?.map(e=>({...E(e,"connectorType"),type:e.connectorType,chargingSpeed:Le(e.ratedPowerKW)}));return{type:"Feature",geometry:S(we(t)),...i&&{bbox:De(i)},id:a,properties:{...E(c,"viewport"),...o&&{distance:o},...n?.length&&{entryPoints:n.map(e=>({...e,position:we(e.position)}))},...l?.length&&{chargingPark:{...s,connectors:ve(l)}},...r&&{poi:{name:r.name,categories:(r.categorySet?.map(e=>I[e.id])??[]).filter(e=>!!e),localizedCategories:r.categories??[],...r.phone&&{phone:r.phone},...r.brands&&{brands:r.brands.map(e=>e.name)},...r.url&&{url:r.url},...r.openingHours&&{openingHours:Oe(r.openingHours)},...r.timeZone&&{timeZone:r.timeZone}}}}}},Be=e=>{const{geoBias:t,...n}=e;return{...t&&{geoBias:we(t)},...n}},He=e=>{const t=e.results.map(_e),n=o(a(t));return{type:"FeatureCollection",properties:{...Be(e.summary)},features:t,...n&&{bbox:n}}},Fe={requestValidation:{schema:pe},buildRequest:Ie,sendRequest:Y,parseResponse:He},Ge=async(e,t)=>U(e,{...Fe,...t},"AlongRouteSearch"),Ue=P.object({position:X,radiusMeters:P.number().optional()}),ke=P.union([Ue,P.object({boundingBox:ne})]),We=P.object({query:P.string()}),Ke=P.object({geoBias:Ue.optional(),limit:P.number().max(100).optional(),countries:P.array(P.string()).optional(),resultType:P.array(P.string()).optional()}),Ve=We.extend(Ke.shape),je=e=>{const t=new URL(`${n=e,n.customServiceBaseURL||`${n.commonBaseURL}/maps/orbis/places/autocomplete/${n.query}.json`}`);var n;const r=t.searchParams;return e.language=e.language??"en-GB",ye(r,e),Te(r,"limit",e.limit),Re(r,e.geoBias),fe(r,"countrySet",e.countries),fe(r,"resultSet",e.resultType),t},qe=e=>{const{position:t,...n}=e.context.geoBias||{};return{context:{...e.context,geoBias:{...t&&{position:we(t)},radiusMeters:n.radius}},results:(r=e.results,r.map(e=>({segments:e.segments.map(e=>{if((e=>"category"===e.type)(e)){const{id:t,...n}=e;return{...n,category:I[Number(t)]}}return e})})))};var r},Ye={requestValidation:{schema:Ve},buildRequest:je,sendRequest:q,parseResponse:qe},$e=async(e,t)=>U(e,{...Ye,...t},"Autocomplete"),Ze={alongRouteSearch:Ge,buildAlongRouteSearchRequest:Ie,parseAlongRouteSearchResponse:He,alongRouteSearchTemplate:Fe},ze={autocompleteSearch:$e,buildAutocompleteSearchRequest:je,parseAutocompleteSearchResponse:qe,autocompleteSearchTemplate:Ye},Je=H.extend({id:P.string()}),Qe=["fast","short","efficient","thrilling"],Xe=["all","unknown","none"],et=e=>{const t=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/ev/id`)(e)),n=t.searchParams;return ye(n,e),n.append("id",e.id),t},tt=e=>{const t=e.results?.[0];return t?{id:t.id,accessType:t.accessType,chargingStations:(n=t.chargingStations,n.map(e=>({...e,chargingPoints:e.chargingPoints.map(e=>({...e,connectors:e.connectors?.map(e=>({...e,chargingSpeed:Le(e.ratedPowerKW)}))}))}))),chargingPointAvailability:Se(t.chargingStations),connectorAvailabilities:Pe(t.chargingStations),...t.openingHours&&{openingHours:Oe(t.openingHours)}}:void 0;var n},nt={requestValidation:{schema:Je},buildRequest:et,sendRequest:q,parseResponse:tt,parseResponseError:(e,t)=>{const n=e.data?.detailedError?.message??e.message;return new x(n,t,e.status)}},rt={buildEVChargingStationsAvailabilityRequest:et,parseEVChargingStationsAvailabilityResponse:tt,evChargingStationsAvailabilityTemplate:nt},at=P.object({typeahead:P.boolean().optional(),offset:P.number().max(1900).optional(),geoBias:ke.optional(),countries:P.array(P.string()).optional()}),ot=H.extend(re.shape).extend(at.shape).extend({query:P.string()}),it=e=>{const t=new URL(`${(e=>e.customServiceBaseURL||`${e.commonBaseURL}/maps/orbis/places/geocode`)(e)}/${e.query}.json`),n=t.searchParams;return ye(n,e),e.typeahead&&n.append("typeahead",String(e.typeahead)),!L(e.limit)&&n.append("limit",String(e.limit)),!L(e.offset)&&n.append("ofs",String(e.offset)),Re(n,e.geoBias),e.countries&&n.append("countrySet",me(e.countries)),e.extendedPostalCodesFor&&n.append("extendedPostalCodesFor",me(e.extendedPostalCodesFor)),e.mapcodes&&n.append("mapcodes",me(e.mapcodes)),e.view&&n.append("view",e.view),e.geographyTypes&&n.append("entityTypeSet",me(e.geographyTypes)),t},st=e=>{const{position:t,boundingBox:n,dist:r,entryPoints:a,addressRanges:o,entityType:i,id:s,...c}=e;return{type:"Feature",geometry:S(we(t)),...n&&{bbox:De(n)},id:s,properties:{...E(c,"viewport"),...r&&{distance:r},...i&&{geographyType:i.split(",")},...a&&{entryPoints:a.map(e=>({...e,position:we(e.position)}))},...o&&{addressRanges:{...o,from:we(o.from),to:we(o.to)}}}}},ct=e=>{const t=e.results.map(st),n=o(a(t));return{type:"FeatureCollection",features:t,...n&&{bbox:n}}},lt={requestValidation:{schema:ot},buildRequest:it,sendRequest:q,parseResponse:ct},ut={buildGeocodingRequest:it,parseGeocodingResponse:ct,geocodingTemplate:lt},dt=P.object({geometries:P.union([Q,P.array(P.union([P.string(),J])).min(1).max(20)])}),pt=P.object({zoom:P.number().min(0).max(22).optional()}),mt=dt.extend(pt.shape),gt=e=>e.map(e=>e.properties.dataSources?.geometry?.id).filter(e=>e),ht=e=>{const t=new URL((e=>e.customServiceBaseURL||`${e.commonBaseURL}/maps/orbis/places/additionalData.json`)(e)),n=t.searchParams;return n.append("apiVersion",String(e.apiVersion)),e.apiKey&&n.append("key",e.apiKey),((e,t)=>{let n;n=Array.isArray(t)?"string"==typeof t[0]?t:gt(t):gt(t.features),e.append("geometries",me(n))})(n,e.geometries),Te(n,"geometriesZoom",e.zoom),t},yt=e=>{const t=e.additionalData.flatMap(e=>e.geometryData?.features.map(e=>({...e,id:e.id??s(),bbox:a(e.geometry)}))).filter(e=>e);return{type:"FeatureCollection",bbox:a(t),features:t}},ft={requestValidation:{schema:mt},buildRequest:ht,sendRequest:q,parseResponse:yt},Tt={buildGeometryDataRequest:ht,parseGeometryDataResponse:yt,geometryDataTemplate:ft},Rt=P.object({geometries:P.array(P.union([Q,z]))}),bt=oe.extend(Rt.shape),It=e=>{switch(e.type){case"Circle":return[{type:"CIRCLE",radius:e.radius,position:Me(e.coordinates)}];case"Polygon":return[{type:"POLYGON",vertices:ge(e.coordinates[0],50).map(e=>Me(e))}];case"MultiPolygon":return e.coordinates.length>50?(e=>{let t=/* @__PURE__ */new Map;return e.coordinates.forEach(e=>{const n=r(e[0]);if(n){const r=Math.abs((n[2]-n[0])*(n[3]-n[1]));t.set(e,r)}}),t=new Map([...t.entries()].sort((e,t)=>t[1]-e[1]).splice(0,50)),[...t.keys()]})(e).flatMap(e=>It({type:"Polygon",coordinates:e})):e.coordinates.flatMap(e=>It({type:"Polygon",coordinates:e}));case"FeatureCollection":return e.features.flatMap(e=>It(e.geometry));default:throw new Error(`Type ${e.type} is not supported`)}},St=e=>{const t=new URL(`${n=e,n.customServiceBaseURL??`${n.commonBaseURL}/maps/orbis/places/geometrySearch/${n.query??""}.json`}`);var n;return be(t,e),{url:t,data:{geometryList:e.geometries.flatMap(It)}}},Ct=e=>{const t=e.results.map(_e),n=o(a(t));return{type:"FeatureCollection",properties:{...Be(e.summary)},features:t,...n&&{bbox:n}}},At={requestValidation:{schema:bt},buildRequest:St,sendRequest:Y,parseResponse:Ct},vt=async(e,t)=>U(e,{...At,...t},"GeometrySearch"),Pt={geometrySearch:vt,buildGeometrySearchRequest:St,parseGeometrySearchResponse:Ct,geometrySearchTemplate:At},Lt=P.object({entityId:P.string()}),Et=P.object({mapcodes:P.array(P.string()).optional(),view:P.enum(v).optional(),openingHours:P.string().optional(),timeZone:P.string().optional(),relatedPois:P.string().optional()}),Mt=Lt.extend(Et.shape),Dt=e=>{const t=new URL(`${(e=>e.customServiceBaseURL||`${e.commonBaseURL}/maps/orbis/places/place.json`)(e)}`),n=t.searchParams;return ye(n,e),Te(n,"entityId",e.entityId),fe(n,"mapcodes",e.mapcodes),Te(n,"view",e.view),Te(n,"openingHours",e.openingHours),Te(n,"timeZone",e.timeZone),Te(n,"relatedPois",e.relatedPois),t},wt=e=>e.results?.length?_e(e.results[0]):void 0,xt={requestValidation:{schema:Mt},buildRequest:Dt,sendRequest:q,parseResponse:wt},Nt={buildPlaceByIdRequest:Dt,parsePlaceByIdResponse:wt,placeByIdTemplate:xt},Ot=(e,t)=>{const{data:n,message:r,status:a}=e;return new x(n?.error?.description??n?.detailedError?.message??r,t,a)},_t=P.number().positive(),Bt=P.number().min(0),Ht=P.number().min(0).max(100),Ft=_t.optional(),Gt=Bt.optional(),Ut=P.number().min(0).max(1).optional(),kt=P.object({speedKMH:P.number(),consumptionUnitsPer100KM:P.number()}),Wt={efficiency:P.object({acceleration:Ut,deceleration:Ut,uphill:Ut,downhill:Ut}).optional()},Kt=P.array(kt).min(1).max(25),Vt=P.object({...Wt,speedsToConsumptionsLiters:Kt,auxiliaryPowerInLitersPerHour:Gt,fuelEnergyDensityInMJoulesPerLiter:P.number().min(1).optional()}),jt=P.object({...Wt,speedsToConsumptionsKWH:Kt,auxiliaryPowerInkW:Gt,consumptionInKWHPerKMAltitudeGain:P.number().max(500).optional(),recuperationInKWHPerKMAltitudeLoss:Gt}),qt=P.object({currentType:P.enum(i),plugTypes:P.array(P.enum(T)).min(1),efficiency:Ut,baseLoadInkW:Gt,maxPowerInkW:Gt,maxVoltageInV:Gt,maxCurrentInA:Gt,voltageRange:P.object({minVoltageInV:Gt,maxVoltageInV:P.number().optional()}).optional()}),Yt=P.object({stateOfChargeInkWh:Bt,maxPowerInkW:_t}),$t=P.object({maxChargeKWH:_t,batteryCurve:P.array(Yt).max(20).optional(),chargingConnectors:P.array(qt).min(1).optional(),chargingTimeOffsetInSec:Gt}),Zt=P.object({consumption:Vt}),zt=P.object({consumption:jt,charging:$t.optional()}),Jt=P.object({weightKG:Ft}).optional(),Qt=P.object({variantId:P.string()}),Xt=P.object({dimensions:Jt,engine:P.union([Zt,zt]).optional()}),en=P.union([Qt,Xt]).optional(),tn=P.object({heading:P.number().min(0).max(360).optional()}),nn=tn.extend({currentFuelInLiters:Bt}),rn=tn.extend({currentChargePCT:Ht}),an=tn.extend({currentChargeInkWh:Bt}),on=P.union([rn,an]),sn=P.object({minChargeAtDestinationPCT:Ht,minChargeAtChargingStopsPCT:P.number().min(0).max(50)}),cn=P.object({minChargeAtDestinationInkWh:Bt,minChargeAtChargingStopsInkWh:Bt}),ln=P.union([sn,cn]),un=P.object({chargingPreferences:ln.optional()}),dn={model:en,restrictions:P.object({maxSpeedKMH:P.number().min(0).max(250).optional(),tollTransponder:P.enum(Xe).optional()}).optional()},pn=P.object({...dn,engineType:P.undefined().optional(),state:tn.optional(),preferences:P.object({}).optional()}),mn=P.object({...dn,engineType:P.literal("combustion"),state:nn.optional(),preferences:P.object({}).optional()}),gn=P.object({...dn,engineType:P.literal("electric"),state:on.optional(),preferences:un.optional()}),hn=P.union([P.discriminatedUnion("engineType",[mn,gn]),pn]),yn=P.object({costModel:P.object({avoid:P.array(P.enum(n)).optional(),traffic:P.enum(["live","historical"]).optional(),routeType:P.enum(Qe).optional(),avoidAreas:P.array(ne).max(10).optional()}).optional(),travelMode:P.string().optional(),vehicle:hn.optional(),when:P.object({option:P.enum(["departAt","arriveBy"]),date:P.date()}).optional()}),fn=["timeMinutes","remainingChargeCPT","spentChargePCT","spentFuelLiters","distanceKM"],Tn=P.object({origin:X,budget:P.object({type:P.enum(fn),value:P.number().min(0)})}),Rn=P.enum(n).exclude(["alreadyUsedRoads"]),bn=hn.check(P.refine(e=>!(e.state&&"heading"in e.state),"vehicle.state.heading: calculateReachableRange has no vehicle heading parameter")),In=P.object({vehicle:bn.optional(),costModel:P.object({avoid:P.array(Rn).optional(),traffic:P.enum(["live","historical"]).optional(),routeType:P.enum(Qe).optional()}).optional(),maxFerryLengthMeters:P.number().min(0).optional(),smoothing:P.enum(["none","weak","strong"]).optional()}),Sn=yn.extend(Tn.extend(In.shape).shape),Cn=e=>e.map(e=>`${e.speedKMH},${e.consumptionUnitsPer100KM}`).join(":"),An=(e,t,n)=>{((e,t)=>{t&&(!L(t.acceleration)&&e.append("accelerationEfficiency",String(t.acceleration)),!L(t.deceleration)&&e.append("decelerationEfficiency",String(t.deceleration)),!L(t.uphill)&&e.append("uphillEfficiency",String(t.uphill)),!L(t.downhill)&&e.append("downhillEfficiency",String(t.downhill)))})(e,n.consumption.efficiency),"electric"===t?(((e,t)=>{t.speedsToConsumptionsKWH&&e.append("constantSpeedConsumptionInkWhPerHundredkm",Cn(t.speedsToConsumptionsKWH)),!L(t.auxiliaryPowerInkW)&&e.append("auxiliaryPowerInkW",String(t.auxiliaryPowerInkW)),!L(t.consumptionInKWHPerKMAltitudeGain)&&e.append("consumptionInkWhPerkmAltitudeGain",String(t.consumptionInKWHPerKMAltitudeGain)),!L(t.recuperationInKWHPerKMAltitudeLoss)&&e.append("recuperationInkWhPerkmAltitudeLoss",String(t.recuperationInKWHPerKMAltitudeLoss))})(e,n.consumption),((e,t)=>{const n=t.charging;n?.maxChargeKWH&&e.append("maxChargeInkWh",String(n.maxChargeKWH))})(e,n)):((e,t)=>{const n=t.consumption;n.speedsToConsumptionsLiters&&e.append("constantSpeedConsumptionInLitersPerHundredkm",Cn(n.speedsToConsumptionsLiters)),!L(n.auxiliaryPowerInLitersPerHour)&&e.append("auxiliaryPowerInLitersPerHour",String(n.auxiliaryPowerInLitersPerHour)),!L(n.fuelEnergyDensityInMJoulesPerLiter)&&e.append("fuelEnergyDensityInMJoulesPerLiter",String(n.fuelEnergyDensityInMJoulesPerLiter))})(e,n)},vn=(e,t)=>{t.model&&("variantId"in t.model?e.append("vehicleModelId",t.model.variantId):(((e,t)=>{t?.weightKG&&e.append("vehicleWeight",String(t.weightKG))})(e,t.model.dimensions),t.model.engine&&An(e,"engineType"in t?t.engineType:void 0,t.model.engine)))},Pn=(e,t)=>{t&&("electric"===t.engineType&&e.append("vehicleEngineType","electric"),vn(e,t),((e,t)=>{if(t.state&&"engineType"in t)if("combustion"===t.engineType){const n=t.state;n.currentFuelInLiters&&e.append("currentFuelInLiters",String(n.currentFuelInLiters))}else if("electric"===t.engineType){const n=t.state,r=n,a=n;if(r.currentChargeInkWh)e.append("currentChargeInkWh",String(r.currentChargeInkWh));else if(a.currentChargePCT&&t.model&&"engine"in t.model&&t.model.engine){const n=t.model.engine.charging?.maxChargeKWH;n&&e.append("currentChargeInkWh",String(n*a.currentChargePCT/100))}}})(e,t),((e,t)=>{if(t.preferences&&"engineType"in t&&"electric"===t.engineType){const n=t.preferences;if(n.chargingPreferences){const r=n.chargingPreferences,a=r,o=r;if(a.minChargeAtChargingStopsInkWh||a.minChargeAtDestinationInkWh)e.append("minChargeAtDestinationInkWh",String(a.minChargeAtDestinationInkWh)),e.append("minChargeAtChargingStopsInkWh",String(a.minChargeAtChargingStopsInkWh));else if((o.minChargeAtChargingStopsPCT||o.minChargeAtDestinationPCT)&&t.model&&"engine"in t.model&&t.model.engine){const n=t.model.engine.charging?.maxChargeKWH;n&&(e.append("minChargeAtDestinationInkWh",String(n*o.minChargeAtDestinationPCT/100)),e.append("minChargeAtChargingStopsInkWh",String(n*o.minChargeAtChargingStopsPCT/100)))}}}})(e,t),((e,t)=>{const n=t.restrictions?.maxSpeedKMH;n&&e.append("vehicleMaxSpeed",String(n));const r=t.restrictions?.tollTransponder;r&&e.append("vehicleHasElectricTollCollectionTransponder",r)})(e,t))},Ln=e=>{const t=e.vehicle;if(t?.model&&"engine"in t.model)return t.model.engine?.charging?.maxChargeKWH},En=(e,t)=>{const n=t.budget;switch(n.type){case"timeMinutes":e.append("timeBudgetInSec",(60*n.value).toString());break;case"distanceKM":e.append("distanceBudgetInMeters",(1e3*n.value).toString());break;case"spentFuelLiters":e.append("fuelBudgetInLiters",n.value.toString());break;case"spentChargePCT":{const r=Ln(t);null!=r&&e.append("energyBudgetInkWh",(r*n.value/100).toString());break}case"remainingChargeCPT":{const r=(e=>{const t=e.vehicle;if(!t?.state)return;const n=t.state;if(null!=n.currentChargePCT){const t=Ln(e);if(null!=t)return t*n.currentChargePCT/100}})(t),a=Ln(t);if(null!=a&&null!=r){const t=a*n.value/100;e.append("energyBudgetInkWh",Math.max(0,r-t).toString())}break}default:e.append(n.type,n.value.toString())}},Mn=e=>{const t=(e=>{const t=d(e.origin);return`${t[1]},${t[0]}`})(e),n=new URL(((e,t)=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/routing/calculateReachableRange/${t}/json`)(e,t)),r=n.searchParams;return ye(r,e),r.delete("language"),((e,t)=>{const n=t.costModel;((e,t,n)=>{for(const r of n||[])e.append(t,r)})(e,"avoid",n?.avoid),Te(e,"traffic",n?.traffic),((e,t)=>{if(t?.date){const n=t.date.toISOString();"departAt"===t.option?e.append("departAt",n):"arriveBy"===t.option&&e.append("arriveAt",n)}})(e,t.when),Te(e,"routeType",n?.routeType),Te(e,"travelMode",t.travelMode),Pn(e,t.vehicle)})(r,e),En(r,e),Te(r,"maxFerryLengthInMeters",e.maxFerryLengthMeters),Te(r,"smoothing",e.smoothing??"strong"),{method:"GET",url:n}},Dn=(e,t)=>{const n={type:"Polygon",coordinates:[e.reachableRange.boundary.map(e=>[e.longitude,e.latitude])]};return{type:"Feature",geometry:n,bbox:a(n),properties:t}},wn={requestValidation:{schema:Sn},buildRequest:Mn,sendRequest:$,parseResponse:Dn,parseResponseError:Ot,getAPIVersion:()=>2},xn={buildReachableRangeRequest:Mn,parseReachableRangeResponse:Dn,reachableRangeTemplate:wn},Nn={Country:"country",CountrySubdivision:"countrySubdivision",CountrySecondarySubdivision:"countrySecondarySubdivision",CountryTertiarySubdivision:"countryTertiarySubdivision",Municipality:"municipality",MunicipalitySubdivision:"municipalitySubdivision",MunicipalitySecondarySubdivision:"municipalitySecondarySubdivision",Neighbourhood:"neighborhood",PostalCodeArea:"postalCode"},On=e=>{const[t,n]=d(e.position),r=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/reverseGeocode`)(e)),a=r.searchParams;return a.append("position",`${t},${n}`),!L(e.radiusMeters)&&a.append("radiusInMeters",String(e.radiusMeters)),e.geographyType&&a.append("areaTypes",e.geographyType.map(e=>Nn[e]).join(",")),!L(e.heading)&&a.append("vehicleHeadingInDegrees",String(e.heading)),e.view&&a.append("geopoliticalView",e.view),{url:r,headers:{...he(e),Attributes:"results(*)"}}},_n={AF:"AFG",AX:"ALA",AL:"ALB",DZ:"DZA",AS:"ASM",AD:"AND",AO:"AGO",AI:"AIA",AQ:"ATA",AG:"ATG",AR:"ARG",AM:"ARM",AW:"ABW",AU:"AUS",AT:"AUT",AZ:"AZE",BS:"BHS",BH:"BHR",BD:"BGD",BB:"BRB",BY:"BLR",BE:"BEL",BZ:"BLZ",BJ:"BEN",BM:"BMU",BT:"BTN",BO:"BOL",BQ:"BES",BA:"BIH",BW:"BWA",BV:"BVT",BR:"BRA",IO:"IOT",BN:"BRN",BG:"BGR",BF:"BFA",BI:"BDI",CV:"CPV",KH:"KHM",CM:"CMR",CA:"CAN",KY:"CYM",CF:"CAF",TD:"TCD",CL:"CHL",CN:"CHN",CX:"CXR",CC:"CCK",CO:"COL",KM:"COM",CG:"COG",CD:"COD",CK:"COK",CR:"CRI",CI:"CIV",HR:"HRV",CU:"CUB",CW:"CUW",CY:"CYP",CZ:"CZE",DK:"DNK",DJ:"DJI",DM:"DMA",DO:"DOM",EC:"ECU",EG:"EGY",SV:"SLV",GQ:"GNQ",ER:"ERI",EE:"EST",SZ:"SWZ",ET:"ETH",FK:"FLK",FO:"FRO",FJ:"FJI",FI:"FIN",FR:"FRA",GF:"GUF",PF:"PYF",TF:"ATF",GA:"GAB",GM:"GMB",GE:"GEO",DE:"DEU",GH:"GHA",GI:"GIB",GR:"GRC",GL:"GRL",GD:"GRD",GP:"GLP",GU:"GUM",GT:"GTM",GG:"GGY",GN:"GIN",GW:"GNB",GY:"GUY",HT:"HTI",HM:"HMD",VA:"VAT",HN:"HND",HK:"HKG",HU:"HUN",IS:"ISL",IN:"IND",ID:"IDN",IR:"IRN",IQ:"IRQ",IE:"IRL",IM:"IMN",IL:"ISR",IT:"ITA",JM:"JAM",JP:"JPN",JE:"JEY",JO:"JOR",KZ:"KAZ",KE:"KEN",KI:"KIR",KP:"PRK",KR:"KOR",KW:"KWT",KG:"KGZ",LA:"LAO",LV:"LVA",LB:"LBN",LS:"LSO",LR:"LBR",LY:"LBY",LI:"LIE",LT:"LTU",LU:"LUX",MO:"MAC",MG:"MDG",MW:"MWI",MY:"MYS",MV:"MDV",ML:"MLI",MT:"MLT",MH:"MHL",MQ:"MTQ",MR:"MRT",MU:"MUS",YT:"MYT",MX:"MEX",FM:"FSM",MD:"MDA",MC:"MCO",MN:"MNG",ME:"MNE",MS:"MSR",MA:"MAR",MZ:"MOZ",MM:"MMR",NA:"NAM",NR:"NRU",NP:"NPL",NL:"NLD",NC:"NCL",NZ:"NZL",NI:"NIC",NE:"NER",NG:"NGA",NU:"NIU",NF:"NFK",MK:"MKD",MP:"MNP",NO:"NOR",OM:"OMN",PK:"PAK",PW:"PLW",PS:"PSE",PA:"PAN",PG:"PNG",PY:"PRY",PE:"PER",PH:"PHL",PN:"PCN",PL:"POL",PT:"PRT",PR:"PRI",QA:"QAT",RE:"REU",RO:"ROU",RU:"RUS",RW:"RWA",BL:"BLM",SH:"SHN",KN:"KNA",LC:"LCA",MF:"MAF",PM:"SPM",VC:"VCT",WS:"WSM",SM:"SMR",ST:"STP",SA:"SAU",SN:"SEN",RS:"SRB",SC:"SYC",SL:"SLE",SG:"SGP",SX:"SXM",SK:"SVK",SI:"SVN",SB:"SLB",SO:"SOM",ZA:"ZAF",GS:"SGS",SS:"SSD",ES:"ESP",LK:"LKA",SD:"SDN",SR:"SUR",SJ:"SJM",SE:"SWE",CH:"CHE",SY:"SYR",TW:"TWN",TJ:"TJK",TZ:"TZA",TH:"THA",TL:"TLS",TG:"TGO",TK:"TKL",TO:"TON",TT:"TTO",TN:"TUN",TR:"TUR",TM:"TKM",TC:"TCA",TV:"TUV",UG:"UGA",UA:"UKR",AE:"ARE",GB:"GBR",US:"USA",UM:"UMI",UY:"URY",UZ:"UZB",VU:"VUT",VE:"VEN",VN:"VNM",VG:"VGB",VI:"VIR",WF:"WLF",EH:"ESH",YE:"YEM",ZM:"ZMB",ZW:"ZWE"},Bn=e=>_n[e]??e,Hn={street:"Street",area:"Geography",address:"Point Address"},Fn=Object.fromEntries(Object.entries(Nn).map(([e,t])=>[t,e])),Gn=e=>{const{street:t,houseNumber:n,countryCodeIso2:r,...a}=e;return{...a,...t&&{streetName:t},...n&&{streetNumber:n},...r&&{countryCode:r,countryCodeISO3:Bn(r)}}},Un=(e,t)=>{const n=e.results[0];return{type:"Feature",geometry:S(d(t.position)),id:n?.id??s(),...n&&{properties:{type:Hn[n.type],address:{freeformAddress:n.title,...Gn(n.address)},...n.areaType&&{geographyType:[Fn[n.areaType]],dataSources:{geometry:{id:n.id}}},...n.accessPoints?.length&&{entryPoints:n.accessPoints.map(e=>({position:e.position.coordinates}))},originalPosition:n.position.coordinates}}}},kn=P.object({position:X}),Wn=P.object({geographyType:P.array(P.enum(l)).optional(),heading:P.number().min(-360).max(360).optional(),radiusMeters:P.number().positive().max(5e6).optional(),view:P.enum(v).optional()}),Kn={requestValidation:{schema:kn.extend(Wn.shape)},buildRequest:On,getAPIVersion:()=>2,sendRequest:q,parseResponse:Un},Vn={buildRevGeoRequest:On,parseRevGeoResponse:Un,reverseGeocodingTemplate:Kn},jn=e=>e.map(e=>`${e.speedKMH},${e.consumptionUnitsPer100KM}`).join(":"),qn=["tollVignette","tollRoad","roadShields","importantRoadStretch"],Yn=e=>{const t=["summary","legs(summary,path)"],n=e.sectionTypes;if(!n||n.length>0){t.push("sections");const r=!n;for(const e of qn)(r||n.includes(e))&&t.push(`sections.${e}`);e.guidance&&(r||n.includes("lanes"))&&t.push("sections.lanes")}0!==e.extendedRouteRepresentations?.length&&t.push("progressPoints"),e.guidance&&t.push("instructions(*,nextRoadInformation.roadShields.iconReference,previousRoadInformation.roadShields.iconReference,signpost.exitIconReference,distanceToPreviousTrafficLightInMeters)");const r=`routes(${t.join(",")})`;return e.guidance?`roadShieldAtlasReference,${r}`:r},$n=e=>{const t={};if("electric"===e.engineType&&(t.vehicleEngineType="electric"),e.model&&!("variantId"in e.model)){const n=e.model;n.dimensions?.weightKG&&(t.vehicleWeightInKilograms=n.dimensions.weightKG)}return e.state?.heading&&(t.vehicleHeadingInDegrees=e.state.heading),e.restrictions?.maxSpeedKMH&&(t.vehicleMaxSpeedInKilometersPerHour=e.restrictions.maxSpeedKMH),e.restrictions?.tollTransponder&&(t.vehicleHasElectronicTollCollectionTransponder=e.restrictions.tollTransponder),t},Zn=(e,t)=>{L(t.acceleration)||e.searchParams.set("accelerationEfficiency",String(t.acceleration)),L(t.deceleration)||e.searchParams.set("decelerationEfficiency",String(t.deceleration)),L(t.uphill)||e.searchParams.set("uphillEfficiency",String(t.uphill)),L(t.downhill)||e.searchParams.set("downhillEfficiency",String(t.downhill))},zn=(e,t)=>{const n=t.consumption;n.speedsToConsumptionsKWH?.length&&e.searchParams.set("constantSpeedConsumptionInkWhPerHundredkm",jn(n.speedsToConsumptionsKWH)),L(n.auxiliaryPowerInkW)||e.searchParams.set("auxiliaryPowerInkW",String(n.auxiliaryPowerInkW)),L(n.consumptionInKWHPerKMAltitudeGain)||e.searchParams.set("consumptionInkWhPerkmAltitudeGain",String(n.consumptionInKWHPerKMAltitudeGain)),L(n.recuperationInKWHPerKMAltitudeLoss)||e.searchParams.set("recuperationInkWhPerkmAltitudeLoss",String(n.recuperationInKWHPerKMAltitudeLoss)),n.efficiency&&Zn(e,n.efficiency),t.charging?.maxChargeKWH&&e.searchParams.set("maxChargeInkWh",String(t.charging.maxChargeKWH))},Jn=(e,t)=>{if(!t.model||"variantId"in t.model)return;const n=t.model;n.engine&&("electric"===t.engineType?((e,t,n)=>{zn(e,t);const r=n.state,a=n.state;r?.currentChargeInkWh?e.searchParams.set("currentChargeInkWh",String(r.currentChargeInkWh)):a?.currentChargePCT&&t.charging?.maxChargeKWH&&e.searchParams.set("currentChargeInkWh",String(t.charging.maxChargeKWH*a.currentChargePCT/100))})(e,n.engine,t):((e,t,n)=>{const r=t.consumption;r.speedsToConsumptionsLiters?.length&&e.searchParams.set("constantSpeedConsumptionInLitersPerHundredkm",jn(r.speedsToConsumptionsLiters)),L(r.auxiliaryPowerInLitersPerHour)||e.searchParams.set("auxiliaryPowerInLitersPerHour",String(r.auxiliaryPowerInLitersPerHour)),L(r.fuelEnergyDensityInMJoulesPerLiter)||e.searchParams.set("fuelEnergyDensityInMJoulesPerLiter",String(r.fuelEnergyDensityInMJoulesPerLiter)),r.efficiency&&Zn(e,r.efficiency);const a=n.state;a?.currentFuelInLiters&&e.searchParams.set("currentFuelInLiters",String(a.currentFuelInLiters))})(e,n.engine,t))},Qn=e=>{if(e.model&&!("variantId"in e.model))return e.model.engine?.charging?.maxChargeKWH},Xn=(e,t)=>{if(t&&t.model){if("variantId"in t.model)e.searchParams.set("vehicleModelId",t.model.variantId);else{const n=t.model;n.engine&&zn(e,n.engine)}((e,t)=>{if(!t.state)return;const n=t.state,r=t.state;if(n.currentChargeInkWh)return void e.searchParams.set("currentChargeInkWh",String(n.currentChargeInkWh));if(!r.currentChargePCT)return;const a=Qn(t);a&&e.searchParams.set("currentChargeInkWh",String(a*r.currentChargePCT/100))})(e,t),((e,t)=>{const n=t.preferences?.chargingPreferences;if(!n)return;const r=n,a=n;if(!L(r.minChargeAtDestinationInkWh)||!L(r.minChargeAtChargingStopsInkWh))return L(r.minChargeAtDestinationInkWh)||e.searchParams.set("minChargeAtDestinationInkWh",String(r.minChargeAtDestinationInkWh)),void(L(r.minChargeAtChargingStopsInkWh)||e.searchParams.set("minChargeAtChargingStopsInkWh",String(r.minChargeAtChargingStopsInkWh)));const o=Qn(t);o&&(L(a.minChargeAtDestinationPCT)||e.searchParams.set("minChargeAtDestinationInkWh",String(o*a.minChargeAtDestinationPCT/100)),L(a.minChargeAtChargingStopsPCT)||e.searchParams.set("minChargeAtChargingStopsInkWh",String(o*a.minChargeAtChargingStopsPCT/100)))})(e,t)}},er=e=>!!e.vehicle?.preferences?.chargingPreferences,tr=e=>{const t=(e=>Array.isArray(e)?e:e.geometry.coordinates)(e),n=(e=>{if(!Array.isArray(e))return e.properties?.sections?.leg})(e);if(n&&n.length>1&&n.every(e=>null!=e.startPointIndex&&null!=e.endPointIndex)){const e=n.map(e=>{const n=e.startPointIndex??0,r=e.endPointIndex??0;return{coordinate:t[n],legToNext:{path:{type:"LineString",coordinates:t.slice(n,r+1)}}}});return e.push({coordinate:t[n.at(-1)?.endPointIndex??t.length-1]}),e}return[{coordinate:t[0],legToNext:{path:{type:"LineString",coordinates:t}}},{coordinate:t.at(-1)??t[0]}]},nr=e=>{if(!Array.isArray(e)&&"properties"in e)return e.properties??void 0},rr=(e,t)=>{const n=e.options;if(!n)return{};if(t&&n.pauseDurationSeconds)throw new Error("pauseDurationSeconds is not supported on the destination: the routing API requires the pause on the last leg to be 0.");const r={...n.pauseDurationSeconds&&{pauseDurationInSeconds:n.pauseDurationSeconds},...n.candidateEntryPoints?.length&&{entryPoints:(a=n.candidateEntryPoints,{type:"MultiPoint",coordinates:a.map(e=>d(e))}),...!L(n.preferredEntryPointIndex)&&{preferredEntryPointIndex:n.preferredEntryPointIndex}}};var a;return{...n.legCostModel?.routeType&&{routeType:n.legCostModel.routeType},...n.legCostModel?.avoid?.length&&{avoids:n.legCostModel.avoid.map(e=>({name:e}))},...Object.keys(r).length>0&&{routeStop:r}}},ar=(e,t)=>{t.computeTravelTimeFor&&e.searchParams.set("computeTravelTimeFor",t.computeTravelTimeFor)},or=e=>{const t=e.locations.map(p).includes("path"),n=((e,t)=>{const n=[];for(const r of e)if("waypoint"===p(r)){const e=nr(r),a=e?.candidateEntryPoints?.length?"ignore":t,[o,i]=d(r,{useEntryPoint:a});n.push({coordinate:[o,i],...e&&{options:e}})}else n.push(...tr(r));return n})(e.locations,e.useEntryPoints),r=(e=>{const t={type:"Point",coordinates:e[0].coordinate},n={type:"Point",coordinates:(e.at(-1)??e[0]).coordinate},r=e.slice(1,-1);return{origin:t,destination:n,...r.length&&{waypoints:{type:"MultiPoint",coordinates:r.map(e=>e.coordinate)}}}})(n),o=(e=>{return{...e.costModel?.routeType&&{routeType:e.costModel.routeType},...e.costModel?.traffic&&{traffic:e.costModel.traffic},...e.costModel?.avoid?.length&&{avoids:e.costModel.avoid},...e.travelMode&&{travelMode:e.travelMode},...e.maxAlternatives&&{maxPathAlternativeRoutes:e.maxAlternatives},..."departAt"===e.when?.option&&e.when.date&&{departureDateTime:e.when.date.toISOString()},..."arriveBy"===e.when?.option&&e.when.date&&{arrivalDateTime:e.when.date.toISOString()},...e.guidance&&(n=e.guidance,{guidance:"instructions",instructionPhonetics:n.phonetics?n.phonetics.toLowerCase():"ipa"}),...e.costModel?.avoidAreas?.length&&{avoidAreas:(t=e.costModel.avoidAreas,{rectangles:t.map(e=>{const t=a(e);if(!t)throw new Error("Could not derive a bounding box from an avoidAreas rectangle");const[n,r,o,i]=t;return{type:"Feature",bbox:[n,r,o,i],geometry:null}})})},...e.arrivalSide&&{arrivalSidePreference:"curb"===e.arrivalSide?"curbSide":"anySide"}};var t,n})(e),i=(e=>({...he(e),Attributes:Yn(e)}))(e),s=((e,t)=>{const n=e.slice(1),r=n.map((t,r)=>({...e[r].legToNext,...rr(t,r===n.length-1)}));if(t||!r.every(e=>0===Object.keys(e).length))return r})(n,t),c={routePlanningLocations:r,...o,...s&&{legs:s},...e.vehicle&&$n(e.vehicle)};if(er(e)){const t=((e,t,n)=>{const r=e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/routing/calculateLongDistanceEVRoute`,a=new URL(r);Xn(a,e.vehicle),e.chargingStopsStrategy&&a.searchParams.set("chargingStopsStrategy",e.chargingStopsStrategy);const o=(e=>e.vehicle?.model&&!("variantId"in e.vehicle.model)?e.vehicle.model.engine?.charging:void 0)(e);if(!(e.vehicle?.model&&"variantId"in e.vehicle.model||o?.chargingConnectors?.length))throw new Error("Charging preferences require a charging model: set vehicle.model.engine.charging.chargingConnectors (or a predefined vehicle.model.variantId) to plan charging stops.");return{method:"POST",url:a,data:{...t,...o&&{chargingParameters:{...o.batteryCurve?.length&&{batteryCurve:o.batteryCurve},...o.chargingConnectors?.length&&{chargingConnectors:[...o.chargingConnectors]},...!L(o.chargingTimeOffsetInSec)&&{chargingTimeOffsetInSec:o.chargingTimeOffsetInSec}}},vehicleEngineType:"electric"},headers:n}})(e,c,i);return ar(t.url,e),t}if(e.vehicle?.model&&"variantId"in e.vehicle.model)throw new Error("vehicle.model.variantId is only supported for EV routes with charging stops: set vehicle.preferences.chargingPreferences, or describe the vehicle with vehicle.model.dimensions and vehicle.model.engine instead.");const l=e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/routing/routes/calculate`,u=new URL(l);return e.vehicle&&Jn(u,e.vehicle),ar(u,e),{method:"POST",url:u,data:c,headers:i}},ir=P.union([X,z]),sr=P.union([Z,J]),cr=P.object({locations:P.array(P.union([ir,sr])).min(1)}),lr=P.object({arrivalSide:P.enum(["any","curb"]).optional(),chargingStopsStrategy:P.enum(["automaticFastest","manualFastest","automaticFastestWithFallbackToManual"]).optional(),computeTravelTimeFor:P.enum(["none","all"]).optional(),maxAlternatives:P.number().min(0).max(5).optional(),sectionTypes:P.array(P.enum(h)).optional()}),ur=yn.extend(cr.extend(lr.shape).shape),dr=e=>{switch(e){case"Direct_Current":return"DC";case"Alternating_Current_1_Phase":return"AC1";case"Alternating_Current_3_Phase":return"AC3";default:return}},pr=(e,t)=>{const n=e.chargingConnectionInfo,r=e.chargingParkLocation,a=[r.coordinate.longitude,r.coordinate.latitude],o=[r.street,r.houseNumber].filter(Boolean),i=o.length>0?o.join(", "):"";return{type:"Feature",id:e.chargingParkId,geometry:{type:"Point",coordinates:a},properties:{...E(e,["chargingConnectionInfo","chargingParkLocation"]),type:"POI",address:{freeformAddress:i,...r.street&&{streetName:r.street},...r.houseNumber&&{streetNumber:r.houseNumber},...r.city&&{municipality:r.city},...r.region&&{countrySubdivision:r.region},...r.postalCode&&{postalCode:r.postalCode},...r.country&&{country:r.country}},...n&&{chargingConnectionInfo:{plugType:n.chargingPlugType,currentInA:n.chargingCurrentInA,voltageInV:n.chargingVoltageInV,chargingPowerInkW:n.chargingPowerInkW,currentType:dr(n.chargingCurrentType),chargingSpeed:Le(n.chargingPowerInkW)}},...t&&{targetChargeInPCT:100*e.targetChargeInkWh/t},...e.chargingParkPowerInkW&&{chargingParkSpeed:Le(e.chargingParkPowerInkW)}}}},mr=(e,t)=>{const n=(t?.vehicle?.model)?.engine?.charging?.maxChargeKWH;return{lengthInMeters:e.lengthInMeters,travelTimeInSeconds:e.travelDurationInSeconds,trafficDelayInSeconds:e.trafficDelayDurationInSeconds??0,trafficLengthInMeters:e.trafficLengthInMeters??0,historicTrafficTravelTimeInSeconds:e.historicTrafficTravelTimeInSeconds,liveTrafficIncidentsTravelTimeInSeconds:e.liveTrafficIncidentsTravelTimeInSeconds,noTrafficTravelTimeInSeconds:e.noTrafficTravelTimeInSeconds,departureTime:new Date(e.departureDateTime),arrivalTime:new Date(e.arrivalDateTime),deviationDistanceInMeters:e.deviationDistanceInMeters,deviationTimeInSeconds:e.deviationDurationInSeconds,...e.deviationPoint&&{deviationPoint:e.deviationPoint.coordinates},fuelConsumptionInLiters:e.fuelConsumptionInLiters,totalChargingTimeInSeconds:e.totalChargingTimeInSeconds,batteryConsumptionInkWh:e.batteryConsumptionInKilowattHours??e.batteryConsumptionInkWh,...n&&(()=>{const t=e.batteryConsumptionInKilowattHours??e.batteryConsumptionInkWh;return t?{batteryConsumptionInPCT:100*t/n}:void 0})(),remainingChargeAtArrivalInkWh:e.remainingChargeAtArrivalInkWh,...n&&e.remainingChargeAtArrivalInkWh&&{remainingChargeAtArrivalInPCT:100*e.remainingChargeAtArrivalInkWh/n},...e.chargingInformationAtEndOfLeg&&{chargingInformationAtEndOfLeg:pr(e.chargingInformationAtEndOfLeg,n)}}},gr=(e,t)=>e.reduce((n,r,a)=>{const o=r.path.coordinates.length,i=0===a?0:n[a-1]?.endPointIndex;let c;L(i)||(c=0===i?Math.max(o-1,0):i+o);const l=((e,t)=>{if(!t)return;const n=new Date(e.summary.arrivalDateTime).getTime(),r=new Date(t.summary.departureDateTime).getTime();if(Number.isNaN(n)||Number.isNaN(r))return;const a=Math.round((r-n)/1e3);return a>0?a:void 0})(r,e[a+1]),{originalWaypointIndexAtEndOfLeg:u}=r.summary;return n.push({...!L(i)&&{startPointIndex:i},...void 0!==c&&{endPointIndex:c},...!L(u)&&{originalWaypointIndex:u},summary:{...mr(r.summary,t),...void 0!==l&&{stopTimeInSeconds:l}},id:s()}),n},[]),hr=e=>({id:s(),startPointIndex:e.startPathIndex,endPointIndex:e.endPathIndex}),yr=e=>{if(e.tec?.causes?.length)return e.tec.causes.map(e=>{switch(e.mainCauseCode){case 1:return"jam";case 2:return"accident";case 3:return"roadworks";case 4:return"narrow-lanes";case 5:return"road-closed";case 9:return"danger";case 11:return"animals-on-road";case 13:return"broken-down-vehicle";case 16:return"lane-closed";case 17:return"wind";case 18:return"fog";case 19:return"rain";case 22:return"frost";case 23:return"flooding";default:return"other"}});switch(e.iconCategory){case"jam":return["jam"];case"accident":return["accident"];case"brokenDownVehicle":return["broken-down-vehicle"];case"dangerousConditions":return["danger"];case"flooding":return["flooding"];case"fog":return["fog"];case"ice":return["frost"];case"laneClosed":return["lane-closed"];case"rain":return["rain"];case"roadClosed":return["road-closed"];case"roadWorks":return["roadworks"];case"wind":return["wind"];default:return["other"]}},fr=(e,t)=>{const n={leg:gr(e.legs,t)},r=e.sections;if(!r)return n;const a=(e,t)=>{t?.length&&(n[e]=t.map(hr))};return a("carTrain",r.carTrain),a("ferry",r.ferry),a("tunnel",r.tunnel),a("motorway",r.motorway),a("pedestrian",r.pedestrian),a("toll",r.toll),a("tollRoad",r.tollRoad),a("carpool",r.carpool),a("urban",r.urban),a("unpaved",r.unpaved),a("lowEmissionZone",r.lowEmissionZone),r.country?.length&&(n.country=r.country.map(e=>({...hr(e),countryCodeISO3:Bn(e.countryCodeIso2??"")}))),r.travelMode?.length&&(n.vehicleRestricted=r.travelMode.filter(e=>"other"===e.travelMode).map(hr)),r.traffic?.length&&(n.traffic=r.traffic.map(e=>({...hr(e),delayInSeconds:e.delayDurationInSeconds,effectiveSpeedInKmh:e.effectiveSpeedInKilometersPerHour,categories:yr(e),magnitudeOfDelay:"undefined"===e.delayMagnitude?"indefinite":e.delayMagnitude,tec:e.tec,...e.eventId&&{eventId:e.eventId}}))),r.speedLimit?.length&&(n.speedLimit=r.speedLimit.map(e=>{const t=e.speedRestrictions?.find(e=>"maximum"===e.type)?.inKilometersPerHour;return L(t)?void 0:{...hr(e),maxSpeedLimitInKmh:t}}).filter(e=>!!e)),r.lanes?.length&&(n.lanes=r.lanes.map(e=>({...hr(e),lanes:(e.lanes??[]).map(e=>({directions:e.directions.map(e=>Ar[e]??e),...e.follow&&{follow:Ar[e.follow]??e.follow}})),laneSeparators:(e.laneSeparators??[]).map(e=>vr[e]??e),properties:e.properties}))),r.roadShields?.length&&(n.roadShields=r.roadShields.map(e=>({...hr(e),roadShieldReferences:e.roadShieldReferences}))),r.tollVignette?.length&&(n.tollVignette=r.tollVignette.map(e=>({...hr(e),countryCodeISO3:Bn(e.countryCodeIso2??"")}))),r.importantRoadStretch?.length&&(n.importantRoadStretch=r.importantRoadStretch.map(e=>({...hr(e),index:e.importantRoadStretchIndex,...e.streetName&&{streetName:e.streetName.text},...e.roadNumbers?.length&&{roadNumbers:e.roadNumbers.map(e=>e.text)}}))),((e,t)=>{if(!t)return;const n=new Set(t);for(const r of Object.keys(e))"leg"===r||n.has(r)||delete e[r]})(n,t.sectionTypes),n},Tr=1e-4,Rr=(e,t)=>Math.abs(e[0]-t[0])<Tr&&Math.abs(e[1]-t[1])<Tr,br={depart:"DEPART",waypointLeft:"WAYPOINT_LEFT",waypointRight:"WAYPOINT_RIGHT",waypointReached:"WAYPOINT_REACHED",waypointAhead:"WAYPOINT_AHEAD",arrive:"ARRIVE",arriveLeft:"ARRIVE_LEFT",arriveRight:"ARRIVE_RIGHT",arriveAhead:"ARRIVE_AHEAD",continueStraight:"STRAIGHT",keepLeft:"KEEP_LEFT",keepRight:"KEEP_RIGHT",turnSlightRight:"SLIGHT_RIGHT",turnRight:"TURN_RIGHT",turnSharpRight:"SHARP_RIGHT",turnSlightLeft:"SLIGHT_LEFT",turnLeft:"TURN_LEFT",turnSharpLeft:"SHARP_LEFT",makeUTurn:"MAKE_UTURN",roundaboutStraight:"ROUNDABOUT_STRAIGHT",roundaboutSharpRight:"ROUNDABOUT_SHARP_RIGHT",roundaboutRight:"ROUNDABOUT_RIGHT",roundaboutSlightRight:"ROUNDABOUT_SLIGHT_RIGHT",roundaboutSlightLeft:"ROUNDABOUT_SLIGHT_LEFT",roundaboutLeft:"ROUNDABOUT_LEFT",roundaboutSharpLeft:"ROUNDABOUT_SHARP_LEFT",roundaboutBack:"ROUNDABOUT_BACK",exitRoundabout:"EXIT_ROUNDABOUT",exitMotorwayLeft:"EXIT_MOTORWAY_LEFT",exitMotorwayRight:"EXIT_MOTORWAY_RIGHT",switchMotorwayLeft:"SWITCH_MOTORWAY_LEFT",switchMotorwayRight:"SWITCH_MOTORWAY_RIGHT",enterCarpoolLaneLeft:"ENTER_CARPOOL_LANE_LEFT",enterCarpoolLaneRight:"ENTER_CARPOOL_LANE_RIGHT",exitCarpoolLaneLeft:"EXIT_CARPOOL_LANE_LEFT",exitCarpoolLaneRight:"EXIT_CARPOOL_LANE_RIGHT",mergeLeftLane:"MERGE_LEFT_LANE",mergeRightLane:"MERGE_RIGHT_LANE",takeShipFerry:"TAKE_SHIP_FERRY",takeCarTrain:"TAKE_CAR_TRAIN",leaveShipFerry:"LEAVE_SHIP_FERRY",leaveCarTrain:"LEAVE_CAR_TRAIN",crossBorder:"CROSS_BORDER",passTollgate:"TOLLGATE"},Ir={urban:"URBAN",motorway:"MOTORWAY",controlledAccess:"CONTROLLED_ACCESS"},Sr={endOfRoad:"END_OF_ROAD",atTrafficLight:"AT_TRAFFIC_LIGHT",onToBridge:"ON_TO_BRIDGE",onBridge:"ON_BRIDGE",afterBridge:"AFTER_BRIDGE",intoTunnel:"INTO_TUNNEL",insideTunnel:"INSIDE_TUNNEL",afterTunnel:"AFTER_TUNNEL"},Cr={cashCoinsAndBills:"CASH_COINS_AND_BILLS",cashBillsOnly:"CASH_BILLS_ONLY",cashCoinsOnly:"CASH_COINS_ONLY",cashExactChange:"CASH_EXACT_CHANGE",creditCard:"CREDIT_CARD",debitCard:"DEBIT_CARD",travelCard:"TRAVEL_CARD",etc:"ETC",etcTransponder:"ETC_TRANSPONDER",etcVideoCamera:"ETC_VIDEO_CAMERA",subscription:"SUBSCRIPTION"},Ar={straight:"STRAIGHT",slightRight:"SLIGHT_RIGHT",right:"RIGHT",sharpRight:"SHARP_RIGHT",rightUTurn:"RIGHT_U_TURN",slightLeft:"SLIGHT_LEFT",left:"LEFT",sharpLeft:"SHARP_LEFT",leftUTurn:"LEFT_U_TURN"},vr={unknown:"UNKNOWN",noMarking:"NO_MARKING",longDashed:"LONG_DASHED",doubleSolid:"DOUBLE_SOLID",singleSolid:"SINGLE_SOLID",solidDashed:"SOLID_DASHED",dashedSolid:"DASHED_SOLID",shortDashed:"SHORT_DASHED",shadedAreaMarking:"SHADED_AREA_MARKING",dashedBlocks:"DASHED_BLOCKS",doubleDashed:"DOUBLE_DASHED",crossingAlert:"CROSSING_ALERT",physicalDivider:"PHYSICAL_DIVIDER",physicalDividerLessThan3m:"PHYSICAL_DIVIDER_LESS_THAN_3M",physicalDividerGuardrail:"PHYSICAL_DIVIDER_GUARDRAIL",curb:"CURB"},Pr={straight:"STRAIGHT",slightRight:"SLIGHT_RIGHT",right:"RIGHT",sharpRight:"SHARP_RIGHT",slightLeft:"SLIGHT_LEFT",left:"LEFT",sharpLeft:"SHARP_LEFT",back:"BACK"},Lr={regular:"REGULAR",small:"SMALL"},Er={left:"LEFT",right:"RIGHT",leftAndRight:"LEFT_AND_RIGHT"},Mr={properties:[]},Dr=e=>{const t=e.phonetic;return{text:e.text,...t&&{phonetic:t},...e.phoneticLanguageCode&&{phoneticLanguageCode:e.phoneticLanguageCode}}},wr=e=>({properties:(e.properties??[]).map(e=>Ir[e]??e.toUpperCase()),...e.roadNames?.length&&{streetName:Dr(e.roadNames[0].identifier)},...e.countryCodeIso2&&{countryCode:Bn(e.countryCodeIso2)},...e.roadShields?.length&&{roadShields:e.roadShields.map(e=>({roadNumber:e.roadNumber?Dr(e.roadNumber):{text:""},countryCode:Bn(e.countryCodeIso2??""),...e.countrySubdivisionCodeIso&&{stateCode:e.countrySubdivisionCodeIso},...e.iconReference&&{roadShieldReference:e.iconReference}}))}}),xr=e=>({...e.tollgateName&&{tollgateName:Dr(e.tollgateName)},...e.tollPaymentTypes?.length&&{tollPaymentTypes:e.tollPaymentTypes.map(e=>Cr[e]??e)},...e.countryCrossingFromName&&{countryCrossingFromName:Dr(e.countryCrossingFromName)},...e.countryCrossingFromCodeIso2&&{countryCrossingFromCode:Bn(e.countryCrossingFromCodeIso2)},...e.countryCrossingToName&&{countryCrossingToName:Dr(e.countryCrossingToName)},...e.countryCrossingToCodeIso2&&{countryCrossingToCode:Bn(e.countryCrossingToCodeIso2)}}),Nr=e=>Pr[e]??e,Or=e=>{return{...e.message&&{message:e.message},...e.intersectionName&&{intersectionName:Dr(e.intersectionName)},...e.drivingSide&&{drivingSide:e.drivingSide.toUpperCase()},...e.landmark&&{landmark:Sr[e.landmark]??e.landmark},...!L(e.distanceToPreviousTrafficLightInMeters)&&{trafficLightOffsetInMeters:e.distanceToPreviousTrafficLightInMeters},...e.sideRoads&&{sideRoads:(n=e.sideRoads,n.map(e=>({side:Er[e.side]??e.side,offsetFromManeuverInMeters:e.offsetFromManeuverInMeters,...!L(e.isDrivable)&&{isDrivable:e.isDrivable}})))},...e.maneuverView&&{maneuverView:(t=e.maneuverView,{...t.onRouteAngle&&{onRouteAngle:Nr(t.onRouteAngle)},offRouteAngles:(t.offRouteAngles??[]).map(Nr)})},...e.roundaboutType&&{roundaboutType:Lr[e.roundaboutType]??e.roundaboutType},...!L(e.isManeuverObligatory)&&{isManeuverObligatory:e.isManeuverObligatory},...!L(e.changeOfAngleInDegrees)&&{changeOfAngleInDegrees:e.changeOfAngleInDegrees},...!L(e.ambiguousExitOffsetFromManeuverInMeters)&&{offsetOfAmbiguousExitFromManeuverInMeters:e.ambiguousExitOffsetFromManeuverInMeters},...!L(e.roundaboutExitNumber)&&{roundaboutExitNumber:e.roundaboutExitNumber}};var t,n},_r=(e,t)=>{const n=e.signpost?(e=>{if(e.exitName||e.exitNumber||e.towardName)return{...e.exitName&&{exitName:Dr(e.exitName)},...e.exitNumber&&{exitNumber:Dr(e.exitNumber)},towardName:e.towardName?Dr(e.towardName):{text:""}}})(e.signpost):void 0,r=(e.nextRoadInformation?.roadShields??[]).map(e=>e.iconReference).filter(e=>!!e);return{...n&&{signpost:n},...t&&{roadShieldAtlasReference:t},...r.length&&{roadShieldReferences:r},...e.signpost?.exitIconReference&&{signpostRoadShieldReferences:[e.signpost.exitIconReference]}}},Br=(e,t,n,r)=>({maneuverPoint:t,pathPointIndex:n,routeOffsetInMeters:e.routeOffsetInMeters,maneuver:e.maneuver?br[e.maneuver]??e.maneuver:e.maneuver,routePath:(e.routePath??[]).map(e=>({point:[e.point.longitude,e.point.latitude],distanceInMeters:e.distanceFromRouteStartInMeters,travelTimeInSeconds:e.travelTimeFromRouteStartInSeconds})),nextRoadInfo:e.nextRoadInformation?wr(e.nextRoadInformation):Mr,previousRoadInfo:e.previousRoadInformation?wr(e.previousRoadInformation):Mr,...Or(e),..._r(e,r),...xr(e)}),Hr=(e,t,n)=>{const r=[];let a=0;for(const o of e){const e=[o.maneuverPoint.longitude,o.maneuverPoint.latitude];for(let n=a;n<t.length;n++)if(Rr(t[n],e)){a=n;break}r.push(Br(o,e,a,n))}return{instructions:r}},Fr=(e,t)=>{const n=e.routes.map((n,r)=>((e,t,n,r)=>{const o={type:"LineString",coordinates:e.legs.flatMap(e=>e.path.coordinates)};return{type:"Feature",geometry:o,id:s(),bbox:a(o),properties:{index:t,summary:mr(e.summary,n),sections:fr(e,n),...e.instructions?.length&&{guidance:Hr(e.instructions,o.coordinates,r)},...e.progressPoints&&{progress:e.progressPoints.map(e=>({pointIndex:e.pathIndex,distanceInMeters:e.distanceInMeters,travelTimeInSeconds:e.travelDurationInSeconds}))}}}})(n,r,t,e.roadShieldAtlasReference)),r=a(n);return{type:"FeatureCollection",...r&&{bbox:r},features:n}},Gr={requestValidation:{schema:ur,refinements:[{check:e=>{const t=e.locations.map(p),n=t.filter(e=>"waypoint"===e).length,r=t.filter(e=>"path"===e).length;return n>=2||r>=1},message:"At least 2 waypoints or 1 path (route reconstruction) is required."},{check:e=>!e.chargingStopsStrategy||er(e),message:"chargingStopsStrategy: set vehicle.preferences.chargingPreferences as well — an EV route needs a minimum charge at the destination, which only the charging preferences provide."}]},buildRequest:or,sendRequest:$,parseResponse:Fr,parseResponseError:Ot,getAPIVersion:()=>3},Ur={buildCalculateRouteRequest:or,parseCalculateRouteResponse:Fr,calculateRouteTemplate:Gr},kr=["MOTORWAY","MAJOR_ROAD","OTHER_MAJOR_ROAD","SECONDARY_ROAD","LOCAL_CONNECTING_ROAD","LOCAL_ROAD_HIGH_IMPORTANCE","LOCAL_ROAD","LOCAL_ROAD_MINOR_IMPORTANCE","OTHER_ROAD"],Wr={speed:"SPEED",freeFlowSpeed:"FREE_FLOW_SPEED",congestionLevel:"CONGESTION_LEVEL",travelTime:"TRAVEL_TIME",networkLength:"NETWORK_LENGTH"},Kr=e=>e instanceof Date?e.toISOString().slice(0,10):e,Vr=Array.from({length:24},(e,t)=>t),jr=e=>kr.indexOf(e),qr=e=>{const n=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/areaanalytics/reports/lite`)(e));ye(n.searchParams,e);const r=e=>{const t=/* @__PURE__ */new Date;return t.setDate(t.getDate()-e),t},a=Array.isArray(e.days)?{days:e.days.map(Kr)}:{startDate:Kr(e.startDate??r(3)),endDate:Kr(e.endDate??r(2))};return{method:"POST",url:n,data:{name:e.name??`Maps SDK JS Area Analytics Report ${/* @__PURE__ */(new Date).toISOString()}`,...a,dataTypes:"all"===e.metrics?t.map(e=>Wr[e]):e.metrics.map(e=>Wr[e]),frcs:"all"===e.functionalRoadClasses?kr.map((e,t)=>t):e.functionalRoadClasses.map(jr),hours:"all"===e.hours?Vr:e.hours,features:[{type:"Feature",geometry:e.geometry}]}}},Yr=e=>({...void 0!==e.v&&{speed:e.v},...void 0!==e.fv&&{freeFlowSpeed:e.fv},...void 0!==e.c&&{congestionLevel:e.c},...void 0!==e.t&&{travelTime:e.t},...void 0!==e.l&&{networkLength:e.l}}),$r=e=>({...void 0!==e.date&&{date:new Date(e.date)},...void 0!==e.year&&{year:e.year},...void 0!==e.month&&{month:e.month},...void 0!==e.week&&{week:e.week},...void 0!==e.hour&&{hour:e.hour},...void 0!==e.day&&{day:e.day},...Yr(e)}),Zr=(e,t)=>{const n=new Date(e);return n.setDate(n.getDate()+t),n},zr=(e,t)=>e.map((e,n)=>{const r=$r(e);return void 0===r.date&&(r.date=Zr(t,Math.floor(n/24))),void 0===r.hour&&(r.hour=n%24),r}),Jr=(e,t)=>e.map((e,n)=>{const r=$r(e);return void 0===r.date&&(r.date=Zr(t,n)),r}),Qr=e=>({tileCentre:[e.lon,e.lat],...Yr(e)}),Xr=e=>({startDate:new Date(e.startDate),endDate:new Date(e.endDate),labels:e.labels}),ea=(e,t)=>{return{...e.yearly&&{yearly:e.yearly.map($r)},...e.monthly&&{monthly:e.monthly.map($r)},...e.weekly&&{weekly:e.weekly.map($r)},...e.daily&&{daily:Jr(e.daily,t)},...e.hourly&&{hourly:zr(e.hourly,t)},...e.average&&{average:(n=e.average,n.map((e,t)=>{const n=$r(e);return void 0===n.day&&(n.day=Math.floor(t/24)+1),void 0===n.hour&&(n.hour=t%24),n}))}};var n},ta={SPEED:"speed",FREE_FLOW_SPEED:"freeFlowSpeed",CONGESTION_LEVEL:"congestionLevel",TRAVEL_TIME:"travelTime",NETWORK_LENGTH:"networkLength"},na=e=>{const t={};for(const[n,r]of Object.entries(e)){const e=ta[n];e&&(t[e]=r.map(Xr))}return t},ra=(e,t)=>({name:e.name,timezone:e.timezone,level:e.level,baseData:Yr(e.baseData),timedData:ea(e.timedData,t),...e.tiledData&&{tiledData:{tiles:e.tiledData.tiles.map(Qr)}},...e.anomalies&&{anomalies:na(e.anomalies)}}),aa=e=>{const n=e.flatMap(e=>e.properties.tiledData?.tiles??[]),r={};for(const a of t){const e=n.map(e=>e[a]).filter(e=>null!=e);e.length>0&&(r[a]={min:Math.min(...e),max:Math.max(...e)})}return r},oa=e=>{const t=new Date(e.properties.startDate),n=e.features.map(e=>((e,t)=>({type:e.type,id:e.id,geometry:e.geometry,properties:ra(e.properties,t),bbox:a(e.geometry)}))(e,t));return{type:"FeatureCollection",properties:{startDate:t,endDate:new Date(e.properties.endDate),metrics:e.properties.dataTypes.map(e=>ta[e]).filter(e=>void 0!==e),heatmap:e.properties.heatmap,frcs:e.properties.frcs,ranges:aa(n)},features:n}},ia=P.union([P.date(),P.string().regex(/^\d{4}-\d{2}-\d{2}$/,"Date must be in 'YYYY-MM-DD' format")]),sa=P.union([P.object({type:P.literal("Polygon"),coordinates:P.array(P.array(P.array(P.number()))).min(1)}),P.object({type:P.literal("MultiPolygon"),coordinates:P.array(P.array(P.array(P.array(P.number())))).min(1)})]),ca=e=>e instanceof Date?e:new Date(e),la=e=>{const t=/* @__PURE__ */new Date,n=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return(e=>{const t=ca(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())})(e)<=n-1728e5},ua={requestValidation:{schema:H.extend({name:P.string().optional(),startDate:ia.optional(),endDate:ia.optional(),days:P.array(ia).min(1).optional(),metrics:P.union([P.array(P.enum(t)).min(1),P.literal("all")]),functionalRoadClasses:P.union([P.array(P.enum(kr)).min(1),P.literal("all")]),hours:P.union([P.array(P.number().int().min(0).max(23)).min(1),P.literal("all")]),geometry:sa}).refine(e=>{const t=void 0!==e.days,n=void 0!==e.startDate;if(t&&n)return!1;if(!t&&!n)return!1;if(void 0!==e.startDate){const t=((void 0!==e.endDate?ca(e.endDate):/* @__PURE__ */new Date).getTime()-ca(e.startDate).getTime())/864e5;return t>=1&&t<=31}return!0},{message:"Provide either startDate (with optional endDate, at least 1 day apart and within 31 days) or days — but not both"}).refine(e=>{if(void 0!==e.days)return e.days.every(la);const t=e.endDate??/* @__PURE__ */new Date;return la(t)},{message:"Dates must be at least 2 days before today"})},buildRequest:qr,sendRequest:$,parseResponse:oa},da={buildTrafficAreaAnalyticsRequest:qr,parseTrafficAreaAnalyticsResponse:oa,trafficAreaAnalyticsTemplate:ua},pa=e=>{const t=new URL((e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/traffic/incidentDetails`)(e)),n=t.searchParams;if(ye(n,e),((e,t)=>{Te(e,"fields","{incidents{type,geometry{type,coordinates},properties{id,iconCategory,magnitudeOfDelay,events{description,code,iconCategory},startTime,endTime,from,to,length,delay,roadNumbers,timeValidity,probabilityOfOccurrence,numberOfReports,lastReportTime,tmc{countryCode,tableNumber,tableVersion,direction,points{location,offset}}}}}"),Te(e,"t",t.trafficModelId),fe(e,"categoryFilter",t.categoryFilter?.map(A)),fe(e,"timeValidityFilter",t.timeValidityFilter)})(n,e),"bbox"in e&&e.bbox){const r=a(e.bbox);return r&&n.append("bbox",r.join(",")),{method:"GET",url:t}}const{ids:r}=e;return r.length>5?{method:"POST",url:t,data:{ids:r}}:(n.append("ids",r.join(",")),{method:"GET",url:t})},ma=e=>({description:e.description,code:e.code,category:m(e.iconCategory)}),ga=e=>{const t=e.properties;return{type:"Feature",id:t.id,geometry:e.geometry,properties:{id:t.id,category:m(t.iconCategory),magnitudeOfDelay:g[t.magnitudeOfDelay]??"unknown",events:(t.events??[]).map(ma),...t.startTime&&{startTime:new Date(t.startTime)},...t.endTime&&{endTime:new Date(t.endTime)},...t.from&&{from:t.from},...t.to&&{to:t.to},...null!=t.length&&{lengthInMeters:t.length},...null!=t.delay&&{delayInSeconds:t.delay},...t.roadNumbers&&{roadNumbers:t.roadNumbers},timeValidity:t.timeValidity,...t.probabilityOfOccurrence&&{probabilityOfOccurrence:t.probabilityOfOccurrence},...null!=t.numberOfReports&&{numberOfReports:t.numberOfReports},...t.lastReportTime&&{lastReportTime:new Date(t.lastReportTime)},...t.tmc&&{tmc:(n=t.tmc,{countryCode:n.countryCode,tableNumber:n.tableNumber,tableVersion:n.tableVersion,direction:n.direction,points:(n.points??[]).map(e=>({location:e.location,...null!=e.offset&&{offset:e.offset}}))})}}};var n},ha=e=>({type:"FeatureCollection",features:(e.incidents??[]).filter(e=>null!==e).map(ga)}),ya={requestValidation:{schema:H.extend({bbox:ne.optional(),ids:P.array(P.string()).optional(),trafficModelId:P.string().optional(),categoryFilter:P.array(P.enum(C)).optional(),timeValidityFilter:P.array(P.enum(["present","future"])).optional()}).refine(e=>!(e.bbox&&e.ids),{message:"Provide either bbox or ids, not both"})},buildRequest:pa,sendRequest:$,parseResponse:ha},fa={alongRouteSearch:Ze,reverseGeocode:Vn,geocode:ut,geometryData:Tt,geometrySearch:Pt,calculateRoute:Ur,reachableRange:xn,evChargingStationsAvailability:rt,trafficAreaAnalytics:da,trafficIncidentDetails:{buildTrafficIncidentDetailsRequest:pa,parseTrafficIncidentDetailsResponse:ha,trafficIncidentDetailsTemplate:ya},placeByID:Nt,autocompleteSearch:ze},Ta=async(e,t)=>U(e,{...nt,...t},"EVChargingStationsAvailability"),Ra=async(e,t)=>{const n=e.properties.dataSources?.chargingAvailability?.id;if(n)try{const r=await Ta({...t,id:n}),a=e.properties.poi;return r?{...e,properties:{...e.properties,...a&&{poi:{...a,openingHours:r.openingHours}},chargingPark:{...e.properties.chargingPark,availability:r}}}:void 0}catch(r){return void console.error(r)}};async function ba(e,t){const{excludeIfAvailabilityUnknown:n,...r}=t??{},o=[];for(const a of e.features){const e=await Ra(a,r);e?o.push(e):n||o.push(a)}return{...e,features:o,bbox:a(o)}}var Ia=e=>Boolean(e&&"availability"in e&&e.availability),Sa=P.array(P.number()).min(2),Ca=P.object({type:P.literal("Polygon"),coordinates:P.array(P.array(P.array(P.number()))),bbox:P.array(P.number()).optional()}),Aa=P.object({type:P.literal("MultiPolygon"),coordinates:P.array(P.array(P.array(P.array(P.number())))),bbox:P.array(P.number()).optional()}),va=P.object({type:P.literal("Circle"),coordinates:Sa,radius:P.number().positive()}),Pa=P.object({type:P.literal("FeatureCollection"),features:P.array(P.object({type:P.literal("Feature"),geometry:P.union([Ca,Aa]),properties:P.any().optional()}))}),La=P.union([Ca,Aa,va,Pa]),Ea=P.tuple([P.number(),P.number(),P.number(),P.number()]),Ma=P.object({bbox:Ea}),Da=P.union([Ea,Ma]),wa=1e4,xa=P.enum(["POI","PointAddress","Street"]),Na=P.object({geoBias:Ue.optional(),municipalities:P.array(P.string()).optional(),boundingBoxes:P.array(Da).optional(),geometries:P.array(La).optional(),placeTypes:P.array(xa).min(1).optional(),areaId:P.string().min(1).optional(),areaTags:P.array(P.string().min(1)).min(1).optional(),offset:P.number().int().min(0).max(wa).optional(),limit:P.number().int().min(1).max(wa).optional()}),Oa=oe.extend(at.extend(Na.shape).shape),_a=e=>{const[t,n]=e.coordinates,r=e.radius/6371e3*(180/Math.PI),a=r/Math.cos(n*Math.PI/180),o=[];for(let i=0;i<64;i++){const e=2*Math.PI*i/64;o.push([t+a*Math.cos(e),n+r*Math.sin(e)])}return o.push(o[0]),{type:"Polygon",coordinates:[o]}},Ba=e=>{switch(e.type){case"Polygon":case"MultiPolygon":return[e];case"Circle":return[_a(e)];case"FeatureCollection":return e.features.map(e=>e.geometry)}},Ha=e=>(e=>{if(e.length<2)return e;const[t,n]=[e[0],e[e.length-1]];return t[0]===n[0]&&t[1]===n[1]?e:[...e,[...t]]})((e=>e.filter((t,n)=>0===n||t[0]!==e[n-1][0]||t[1]!==e[n-1][1]))(e)),Fa=e=>"Polygon"===e.type?{...e,coordinates:e.coordinates.map(Ha)}:{...e,coordinates:e.coordinates.map(e=>e.map(Ha))},Ga={POI:"POI",PointAddress:"Point Address",Street:"Street"},Ua=e=>{const t=(e=>{const t=/* @__PURE__ */new Set;for(const n of e.categorySet??[])t.add(Number(n));return e.preferredCategoryId&&t.add(Number(e.preferredCategoryId)),[...t].filter(e=>Number.isFinite(e))})(e);t.sort((e,t)=>t-e);const n=/* @__PURE__ */new Set,r=[];for(const a of t){const e=I[a];e&&!n.has(e)&&(n.add(e),r.push(e))}return r},ka=e=>{const{id:t,position:n,address:r,score:a,distance_m:o,type:i,viewport:s}=e,c=Ga[i??"POI"],l=(e=>{if(e?.name)return{name:e.name,categories:Ua(e),localizedCategories:e.classifications?.map(e=>e.name)??[],...e.phone&&{phone:e.phone},...e.url&&{url:e.url},...e.brands?.length&&{brands:e.brands.map(e=>e.name)},...e.timeZone?.ianaId&&{timeZone:e.timeZone}}})(e.poi),u=(e=>{if(!e)return;const[[t,n],[r,a]]=e.coordinates;return[t,n,r,a]})(s);return{type:"Feature",id:t,geometry:S(n),...u&&{bbox:u},properties:{type:c,...r&&{address:r},...l&&{poi:l},...void 0!==a&&{score:a},...void 0!==o&&{distance:o},...e.area_id&&{areaId:e.area_id},...e.area_country&&{areaCountry:e.area_country},...e.area_tags?.length&&{areaTags:e.area_tags}}}},Wa=(e,t)=>{const n=u(t.geoBias?.position);return{query:t.query??"",queryType:n?"NEARBY":"NON_NEAR",queryTime:0,numResults:e.hits.length,offset:t.offset??0,totalResults:e.total,fuzzyLevel:0,...n&&{geoBias:n}}},Ka={requestValidation:{schema:Oa,refinements:[{check:e=>!!(e.geoBias||e.boundingBoxes?.length||e.geometries?.length||e.municipalities?.length||e.areaId),message:"A geographic bias is required: provide one of geoBias, boundingBoxes, geometries, municipalities, or areaId."},{check:e=>(e.offset??0)+(e.limit??10)<=wa,message:"offset + limit must not exceed 10000 (the places-api pagination window; when limit is omitted the backend defaults to 10)."}]},buildRequest:e=>{const t=new URL("/places",(e=>e.customServiceBaseURL??"https://search-places-poc.whitebush-bbe9c5f7.westeurope.azurecontainerapps.io")(e)),n=(e=>{const t=u(e.geoBias?.position);if(!t)return;const n=e.geoBias?.radiusMeters;return{coordinates:t,radius_km:n&&n>0?n/1e3:2}})(e),r=(e=>e.poiCategories?.length?e.poiCategories.map(e=>String(b[e])):void 0)(e),o=(e=>{const t=(e.boundingBoxes??[]).map(e=>a(e)).filter(e=>void 0!==e);return t.length?t:void 0})(e),i=(e=>{if(!e.geometries?.length)return;const t=e.geometries.flatMap(Ba).map(Fa);return t.length?t:void 0})(e),s=(e=>e.municipalities?.length?e.municipalities:void 0)(e);return{url:t,data:{...e.query&&{q:e.query},...e.countries?.[0]&&{country:e.countries[0]},...s&&{municipalities:s},...e.poiBrands?.[0]&&{brand:e.poiBrands[0]},...r&&{categories:r},...e.placeTypes?.length&&{types:e.placeTypes},...e.areaId&&{area_id:e.areaId},...e.areaTags?.length&&{area_tags:e.areaTags},...n&&{near:n},...o&&{bboxes:o},...i&&{geometries:i},...void 0!==e.offset&&{from:e.offset},...void 0!==e.limit&&{size:e.limit}}}},sendRequest:Y,parseResponse:(e,t)=>{const n=e.hits.map(ka),r=o(a(n));return{type:"FeatureCollection",properties:Wa(e,t),features:n,...r&&{bbox:r}}}},Va=async(e,t)=>U(e,{...Ka,...t},"ExplorationSearch"),ja=["village","small_town","mid_town","suburban","rural","semi_rural","residential","inland","coastal","atlantic_coast","alpine","mountain","foothills","forest","plains","farmland","agricultural","no_tourism","low_tourism","moderate_tourism","tourism_economy","eco_tourism","heritage_tourism","watersports","hiking","cycling","industrial","logistics_hub","retail_hub","shopping_district","hospital_town","dining_scene","car_oriented","walkable","transit_connected","transit_sparse","highway_corridor","commuter_town","low_traffic","moderate_traffic","sparse_commercial","western_europe","central_europe","southern_europe","north_american","iberian"],qa=["lakefront","riverine","wetland","marina","harbor","beach","mediterranean","ski_destination","beach_destination","wine_tourism","vineyard","university_town","medieval_old_town","unesco_site","midwest_us","rust_belt"],Ya=async(e,t)=>U(e,{...lt,...t},"Geocode"),$a=async e=>{const t=await Ya({query:e,limit:1});if(!t.features[0])throw new Error(`geocodeOne: no results found for "${e}"`);return t.features[0]};async function Za(e,t){const n=await U(e,{...ft,...t},"GeometryData");return Array.isArray(e.geometries)||"FeatureCollection"!==e.geometries.type?n:((e,t)=>{const n=e.features.reduce((e,t)=>{const n=t.properties.dataSources?.geometry?.id;return n&&(e[n]={...t.properties,placeCoordinates:t.geometry.coordinates}),e},{}),r=t.features.map(e=>e.id&&n[e.id]?{...e,properties:n[e.id]}:e);return{type:"FeatureCollection",bbox:t.bbox,features:r}})(e.geometries,n)}var za=async(e,t)=>U(e,{...xt,...t},"PlaceById"),Ja=/* @__PURE__ */new Map,Qa=/* @__PURE__ */new Map,Xa="en-GB",eo=e=>e??Xa,to=e=>e.toLowerCase().replaceAll(/[\s\-_,]+/g,""),no=e=>{const t={};for(const n of e){const e=[n.name,...n.synonyms].map(to);for(const r of e)t[r]=n}return t},ro=H.extend({filters:P.array(P.string()).optional()}),ao=e=>{const t=I[e.id];return t?{code:t,name:e.name,childCategoryCodes:e.childCategoryIds.map(e=>I[e]).filter(e=>!!e),synonyms:e.synonyms}:(console.error(`Received unknown POI category ID ${e.id} (${e.name}). This category will be skipped and unavailable for filtering.`),null)},oo={requestValidation:{schema:ro},buildRequest:e=>{const t=e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/poiCategories.json`,n=new URL(t);return ye(n.searchParams,e),n},getAPIVersion:()=>1,sendRequest:q,parseResponse:e=>({poiCategories:e.poiCategories.map(ao).filter(e=>null!==e)})},io=(e,t)=>{const n=(e=>Qa.get(e??Xa)??{})(e),r=/* @__PURE__ */new Map;for(const a of t){const e=to(a);for(const[t,a]of Object.entries(n))t.includes(e)&&a&&r.set(a.code,a)}for(const a of r.values())for(const e of a.childCategoryCodes)r.delete(e);return[...r.values()]},so=async(e={})=>{const{language:t}=f(e);let n=(e=>Ja.get(eo(e)))(t);return n||(n=(await U(e,oo,"POICategories")).poiCategories,((e,t)=>{const n=eo(e);Ja.set(n,t),Qa.set(n,no(t))})(t,n)),e.filters?.length?{poiCategories:io(t,e.filters)}:{poiCategories:n}},co=async(e={})=>{const{poiCategories:t}=await so(e);return t.map(e=>e.code)},lo=async(e,t)=>U(e,{...wn,...t},"Reachable Range"),uo=(...e)=>{const t=e.filter(e=>!!e);return t.length<2?t[0]:AbortSignal.any(t)},po=async(e,t,n)=>{const r=[];for(const a of e){const e=uo(a.signal,t?.signal);try{r.push(await lo({...a,...e&&{signal:e}},n))}catch(i){if(!(i instanceof x)||403===i.status||429===i.status)throw i}}const o=a(r);return{type:"FeatureCollection",...o&&{bbox:o},features:r}},mo=async(e,t)=>U(e,{...Kn,...t},"ReverseGeocode"),go=async(e,t)=>U(e,{...Gr,...t},"Routing"),ho=P.object({minFuzzyLevel:P.number().min(1).max(4).optional(),maxFuzzyLevel:P.number().min(1).max(4).optional()}),yo=oe.extend(at.extend(ho.shape).shape),fo=e=>{let t;switch(e.type){case"COORDINATE":t={...e,details:{position:we(e.details)}};break;case"NEARBY":t={...e,details:{position:we({lon:e.details.lon,lat:e.details.lat}),text:e.details.text,query:e.details.query}};break;case"BOOKMARK":case"W3W":t=e}return t},To={requestValidation:{schema:yo},buildRequest:e=>{const t=new URL(`${(e=>e.customServiceBaseURL??`${e.commonBaseURL}/maps/orbis/places/search/${e.query??""}.json`)(e)}`);be(t,e);const n=t.searchParams;return Te(n,"typeahead",e.typeahead),Te(n,"ofs",e.offset),fe(n,"countrySet",e.countries),Re(n,e.geoBias),Te(n,"minFuzzyLevel",e.minFuzzyLevel),Te(n,"maxFuzzyLevel",e.maxFuzzyLevel),t},sendRequest:q,parseResponse:e=>{const t=e.results.map(_e),n=o(a(t));return{type:"FeatureCollection",properties:{...Be(e.summary),queryIntent:e.summary.queryIntent.map(fo)},features:t,...n&&{bbox:n}}}},Ro=async(e,t)=>"route"in e?Ge(e,t):"geometries"in e?vt(e,t):(async(e,t)=>U(e,{...To,...t},"FuzzySearch"))(e,t),bo=async e=>{const t=await Ro({query:e,limit:1});if(!t.features[0])throw new Error(`searchOne: no results found for "${e}"`);return t.features[0]},Io=async(e,t)=>U(e,{...ua,...t},"TrafficAreaAnalytics"),So=async(e,t)=>U(e,{...ya,...t},"TrafficIncidentDetails");export{w as APIErrorCode,ja as POPULATED_AREA_TAGS,qa as RESERVED_AREA_TAGS,N as SDKAbortError,D as SDKError,x as SDKServiceError,Ge as alongRouteSearch,$e as autocompleteSearch,fn as budgetTypes,_ as buildResponseError,B as buildValidationError,lo as calculateReachableRange,po as calculateReachableRanges,go as calculateRoute,fa as customizeService,Ta as evChargingStationsAvailability,Va as explorationSearch,Ya as geocode,$a as geocodeOne,Za as geometryData,so as getPOICategories,co as getPOICategoryCodes,Ra as getPlaceWithEVAvailability,ba as getPlacesWithEVAvailability,Ia as hasChargingAvailability,O as parseDefaultResponseError,za as placeById,mo as reverseGeocode,Qe as routeTypes,Ro as search,bo as searchOne,Xe as tollTransponderOptions,Io as trafficAreaAnalytics,So as trafficIncidentDetails};
|
|
2
2
|
//# sourceMappingURL=services.es.js.map
|