UNPKG

solvice-js-client

Version:

A JavaScript client to access the Solvice api.

6 lines 15.1 kB
!function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";var n=r(1),i=r(6);window&&(window.Solvice={VrpClient:n.VrpClient,PdpClient:i.PdpClient})},function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},i=r(2),s=function(e){function t(){e.apply(this,arguments)}return n(t,e),t.prototype.getSolverType=function(){return"VRP"},t.prototype.verifyOrder=function(t){if(e.prototype.verifyOrder.call(this,t),this.verifyOptionalInArray(t.activity,"activity",["DROPOFF","PICKUP"]),this.verifyOptionalFieldType(t.windows,"windows","array"),t.windows)for(var r=0;r<t.windows.length;r++)this.verifyExist(t.windows[r].starttime,"starttime"),this.verifyExist(t.windows[r].endtime,"endtime")},t}(i.BaseClient);t.VrpClient=s},function(e,t,r){"use strict";var n=r(3),i=function(){function e(e){void 0===e&&(e={}),this.clientOptions={apiUrl:"https://api.solvice.io",version:1},this.locations=[],this.orders=[],this.fleet=[],this.options={},e.apiUrl&&(this.clientOptions.apiUrl=e.apiUrl),e.version&&(this.clientOptions.version=e.version)}return e.prototype.addLocation=function(e){this.verifyLocation(e),this.locations.push(e)},e.prototype.addOrder=function(e){this.verifyOrder(e),this.orders.push(e)},e.prototype.addFleetUnit=function(e){this.verifyFleetUnit(e),this.fleet.push(e)},e.prototype.setOption=function(e,t){this.verifyOptionalInArray(e,"option",["capacitySpread","minimizeDriverWaitTime","minimizeUseOfVehicles","vehicleSetupCost","minimumMinutesWorked"]),this.options[e]=t},e.prototype.getRoute=function(e,t){return n.HttpClient.post(this.getEndpointUrl(),this.getRouteRequestParams(),e,t)},e.prototype.getJobResult=function(e,t,r){return n.HttpClient.get(this.getJobsEndpointUrl(e),t,r)},e.prototype.getRouteRequestParams=function(){return{locations:this.locations,orders:this.orders,fleet:this.fleet,solverType:this.getSolverType(),options:this.options}},e.prototype.getSolverType=function(){return""},e.prototype.verifyLocation=function(e){this.verifyExist(e,"location"),this.verifyExist(e.latitude,"latitude"),this.verifyExist(e.longitude,"longitude"),this.verifyExist(e.name,"name")},e.prototype.verifyOrder=function(e){this.verifyExist(e,"order"),this.verifyExist(e.name,"name"),this.verifyExist(e.location,"location"),this.verifyOptionalFieldType(e.demand,"demand","number"),this.verifyOptionalFieldType(e.duration,"duration","number")},e.prototype.verifyFleetUnit=function(e){this.verifyExist(e,"fleetUnit"),this.verifyExist(e.name,"name"),this.verifyExist(e.startlocation,"startlocation"),this.verifyOptionalFieldType(e.endlocation,"endlocation","string"),this.verifyOptionalFieldType(e.capacity,"capacity","number"),this.verifyOptionalFieldType(e.shiftstart,"shiftstart","number"),this.verifyOptionalFieldType(e.shiftend,"shiftend","number"),this.verifyOptionalFieldType(e.breakstart,"breakstart","number"),this.verifyOptionalFieldType(e.breakend,"breakend","number"),this.verifyOptionalFieldType(e.breakduration,"breakduration","number"),this.verifyOptionalFieldType(e.maxminutes,"maxminutes","number"),this.verifyOptionalFieldType(e.category,"category","string"),this.verifyOptionalFieldType(e.type,"type","string")},e.prototype.verifyExist=function(e,t){if(!e)throw new TypeError("MISSING_FIELD: "+t)},e.prototype.verifyOptionalFieldType=function(e,t,r){if("array"===r){if(e&&("object"!=typeof e||!e.hasOwnProperty("length")))throw new TypeError(t+" should be an array")}else if(e&&typeof e!==r)throw new TypeError(t+" should be of type "+r)},e.prototype.verifyOptionalInArray=function(e,t,r){var n=new RegExp("("+r.join("|")+")","i");if(e&&!n.test(e))throw new TypeError("Invalid value for "+t+". Possible values are: "+r.join(", "))},e.prototype.getEndpointUrl=function(){return this.clientOptions.apiUrl+"/solve"},e.prototype.getJobsEndpointUrl=function(e){return this.clientOptions.apiUrl+"/jobs/"+e},e}();t.BaseClient=i},function(e,t,r){"use strict";var n=r(4),i=function(){function e(){}return e.get=function(e,t,r){n({url:e,success:t,error:r,type:"json",method:"get"})},e.post=function(e,t,r,i){void 0===t&&(t={}),n({url:e,data:JSON.stringify(t),type:"json",contentType:"application/json",method:"post",success:r,error:i})},e}();t.HttpClient=i},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__;/*! * Reqwest! A general purpose XHR connection manager * license MIT (c) Dustin Diaz 2015 * https://github.com/ded/reqwest */ !function(e,t,r){"undefined"!=typeof module&&module.exports?module.exports=r():(__WEBPACK_AMD_DEFINE_FACTORY__=r,__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof __WEBPACK_AMD_DEFINE_FACTORY__?__WEBPACK_AMD_DEFINE_FACTORY__.call(exports,__webpack_require__,exports,module):__WEBPACK_AMD_DEFINE_FACTORY__,!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))}("reqwest",this,function(){function succeed(e){var t=protocolRe.exec(e.url);return t=t&&t[1]||context.location.protocol,httpsRe.test(t)?twoHundo.test(e.request.status):!!e.request.response}function handleReadyState(e,t,r){return function(){return e._aborted?r(e.request):e._timedOut?r(e.request,"Request is aborted: timeout"):void(e.request&&4==e.request[readyState]&&(e.request.onreadystatechange=noop,succeed(e)?t(e.request):r(e.request)))}}function setHeaders(e,t){var r,n=t.headers||{};n.Accept=n.Accept||defaultHeaders.accept[t.type]||defaultHeaders.accept["*"];var i="undefined"!=typeof FormData&&t.data instanceof FormData;t.crossOrigin||n[requestedWith]||(n[requestedWith]=defaultHeaders.requestedWith),n[contentType]||i||(n[contentType]=t.contentType||defaultHeaders.contentType);for(r in n)n.hasOwnProperty(r)&&"setRequestHeader"in e&&e.setRequestHeader(r,n[r])}function setCredentials(e,t){"undefined"!=typeof t.withCredentials&&"undefined"!=typeof e.withCredentials&&(e.withCredentials=!!t.withCredentials)}function generalCallback(e){lastValue=e}function urlappend(e,t){return e+(/\?/.test(e)?"&":"?")+t}function handleJsonp(e,t,r,n){var i=uniqid++,s=e.jsonpCallback||"callback",o=e.jsonpCallbackName||reqwest.getcallbackPrefix(i),a=new RegExp("((^|\\?|&)"+s+")=([^&]+)"),l=n.match(a),p=doc.createElement("script"),u=0,c=navigator.userAgent.indexOf("MSIE 10.0")!==-1;return l?"?"===l[3]?n=n.replace(a,"$1="+o):o=l[3]:n=urlappend(n,s+"="+o),context[o]=generalCallback,p.type="text/javascript",p.src=n,p.async=!0,"undefined"==typeof p.onreadystatechange||c||(p.htmlFor=p.id="_reqwest_"+i),p.onload=p.onreadystatechange=function(){return!(p[readyState]&&"complete"!==p[readyState]&&"loaded"!==p[readyState]||u)&&(p.onload=p.onreadystatechange=null,p.onclick&&p.onclick(),t(lastValue),lastValue=void 0,head.removeChild(p),void(u=1))},head.appendChild(p),{abort:function(){p.onload=p.onreadystatechange=null,r({},"Request is aborted: timeout",{}),lastValue=void 0,head.removeChild(p),u=1}}}function getRequest(e,t){var r,n=this.o,i=(n.method||"GET").toUpperCase(),s="string"==typeof n?n:n.url,o=n.processData!==!1&&n.data&&"string"!=typeof n.data?reqwest.toQueryString(n.data):n.data||null,a=!1;return"jsonp"!=n.type&&"GET"!=i||!o||(s=urlappend(s,o),o=null),"jsonp"==n.type?handleJsonp(n,e,t,s):(r=n.xhr&&n.xhr(n)||xhr(n),r.open(i,s,n.async!==!1),setHeaders(r,n),setCredentials(r,n),context[xDomainRequest]&&r instanceof context[xDomainRequest]?(r.onload=e,r.onerror=t,r.onprogress=function(){},a=!0):r.onreadystatechange=handleReadyState(this,e,t),n.before&&n.before(r),a?setTimeout(function(){r.send(o)},200):r.send(o),r)}function Reqwest(e,t){this.o=e,this.fn=t,init.apply(this,arguments)}function setType(e){if(null!==e)return e.match("json")?"json":e.match("javascript")?"js":e.match("text")?"html":e.match("xml")?"xml":void 0}function init(o,fn){function complete(e){for(o.timeout&&clearTimeout(self.timeout),self.timeout=null;self._completeHandlers.length>0;)self._completeHandlers.shift()(e)}function success(resp){var type=o.type||resp&&setType(resp.getResponseHeader("Content-Type"));resp="jsonp"!==type?self.request:resp;var filteredResponse=globalSetupOptions.dataFilter(resp.responseText,type),r=filteredResponse;try{resp.responseText=r}catch(e){}if(r)switch(type){case"json":try{resp=context.JSON?context.JSON.parse(r):eval("("+r+")")}catch(err){return error(resp,"Could not parse JSON in response",err)}break;case"js":resp=eval(r);break;case"html":resp=r;break;case"xml":resp=resp.responseXML&&resp.responseXML.parseError&&resp.responseXML.parseError.errorCode&&resp.responseXML.parseError.reason?null:resp.responseXML}for(self._responseArgs.resp=resp,self._fulfilled=!0,fn(resp),self._successHandler(resp);self._fulfillmentHandlers.length>0;)resp=self._fulfillmentHandlers.shift()(resp);complete(resp)}function timedOut(){self._timedOut=!0,self.request.abort()}function error(e,t,r){for(e=self.request,self._responseArgs.resp=e,self._responseArgs.msg=t,self._responseArgs.t=r,self._erred=!0;self._errorHandlers.length>0;)self._errorHandlers.shift()(e,t,r);complete(e)}this.url="string"==typeof o?o:o.url,this.timeout=null,this._fulfilled=!1,this._successHandler=function(){},this._fulfillmentHandlers=[],this._errorHandlers=[],this._completeHandlers=[],this._erred=!1,this._responseArgs={};var self=this;fn=fn||function(){},o.timeout&&(this.timeout=setTimeout(function(){timedOut()},o.timeout)),o.success&&(this._successHandler=function(){o.success.apply(o,arguments)}),o.error&&this._errorHandlers.push(function(){o.error.apply(o,arguments)}),o.complete&&this._completeHandlers.push(function(){o.complete.apply(o,arguments)}),this.request=getRequest.call(this,success,error)}function reqwest(e,t){return new Reqwest(e,t)}function normalize(e){return e?e.replace(/\r?\n/g,"\r\n"):""}function serial(e,t){var r,n,i,s,o=e.name,a=e.tagName.toLowerCase(),l=function(e){e&&!e.disabled&&t(o,normalize(e.attributes.value&&e.attributes.value.specified?e.value:e.text))};if(!e.disabled&&o)switch(a){case"input":/reset|button|image|file/i.test(e.type)||(r=/checkbox/i.test(e.type),n=/radio/i.test(e.type),i=e.value,(!(r||n)||e.checked)&&t(o,normalize(r&&""===i?"on":i)));break;case"textarea":t(o,normalize(e.value));break;case"select":if("select-one"===e.type.toLowerCase())l(e.selectedIndex>=0?e.options[e.selectedIndex]:null);else for(s=0;e.length&&s<e.length;s++)e.options[s].selected&&l(e.options[s])}}function eachFormElement(){var e,t,r=this,n=function(e,t){var n,i,s;for(n=0;n<t.length;n++)for(s=e[byTag](t[n]),i=0;i<s.length;i++)serial(s[i],r)};for(t=0;t<arguments.length;t++)e=arguments[t],/input|select|textarea/i.test(e.tagName)&&serial(e,r),n(e,["input","select","textarea"])}function serializeQueryString(){return reqwest.toQueryString(reqwest.serializeArray.apply(null,arguments))}function serializeHash(){var e={};return eachFormElement.apply(function(t,r){t in e?(e[t]&&!isArray(e[t])&&(e[t]=[e[t]]),e[t].push(r)):e[t]=r},arguments),e}function buildParams(e,t,r,n){var i,s,o,a=/\[\]$/;if(isArray(t))for(s=0;t&&s<t.length;s++)o=t[s],r||a.test(e)?n(e,o):buildParams(e+"["+("object"==typeof o?s:"")+"]",o,r,n);else if(t&&"[object Object]"===t.toString())for(i in t)buildParams(e+"["+i+"]",t[i],r,n);else n(e,t)}var context=this;if("window"in context)var doc=document,byTag="getElementsByTagName",head=doc[byTag]("head")[0];else{var XHR2;try{XHR2=__webpack_require__(5)}catch(ex){throw new Error("Peer dependency `xhr2` required! Please npm install xhr2")}}var httpsRe=/^http/,protocolRe=/(^\w+):\/\//,twoHundo=/^(20\d|1223)$/,readyState="readyState",contentType="Content-Type",requestedWith="X-Requested-With",uniqid=0,callbackPrefix="reqwest_"+ +new Date,lastValue,xmlHttpRequest="XMLHttpRequest",xDomainRequest="XDomainRequest",noop=function(){},isArray="function"==typeof Array.isArray?Array.isArray:function(e){return e instanceof Array},defaultHeaders={contentType:"application/x-www-form-urlencoded",requestedWith:xmlHttpRequest,accept:{"*":"text/javascript, text/html, application/xml, text/xml, */*",xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript",js:"application/javascript, text/javascript"}},xhr=function(e){if(e.crossOrigin===!0){var t=context[xmlHttpRequest]?new XMLHttpRequest:null;if(t&&"withCredentials"in t)return t;if(context[xDomainRequest])return new XDomainRequest;throw new Error("Browser does not support cross-origin requests")}return context[xmlHttpRequest]?new XMLHttpRequest:XHR2?new XHR2:new ActiveXObject("Microsoft.XMLHTTP")},globalSetupOptions={dataFilter:function(e){return e}};return Reqwest.prototype={abort:function(){this._aborted=!0,this.request.abort()},retry:function(){init.call(this,this.o,this.fn)},then:function(e,t){return e=e||function(){},t=t||function(){},this._fulfilled?this._responseArgs.resp=e(this._responseArgs.resp):this._erred?t(this._responseArgs.resp,this._responseArgs.msg,this._responseArgs.t):(this._fulfillmentHandlers.push(e),this._errorHandlers.push(t)),this},always:function(e){return this._fulfilled||this._erred?e(this._responseArgs.resp):this._completeHandlers.push(e),this},fail:function(e){return this._erred?e(this._responseArgs.resp,this._responseArgs.msg,this._responseArgs.t):this._errorHandlers.push(e),this},"catch":function(e){return this.fail(e)}},reqwest.serializeArray=function(){var e=[];return eachFormElement.apply(function(t,r){e.push({name:t,value:r})},arguments),e},reqwest.serialize=function(){if(0===arguments.length)return"";var e,t,r=Array.prototype.slice.call(arguments,0);return e=r.pop(),e&&e.nodeType&&r.push(e)&&(e=null),e&&(e=e.type),t="map"==e?serializeHash:"array"==e?reqwest.serializeArray:serializeQueryString,t.apply(null,r)},reqwest.toQueryString=function(e,t){var r,n,i=t||!1,s=[],o=encodeURIComponent,a=function(e,t){t="function"==typeof t?t():null==t?"":t,s[s.length]=o(e)+"="+o(t)};if(isArray(e))for(n=0;e&&n<e.length;n++)a(e[n].name,e[n].value);else for(r in e)e.hasOwnProperty(r)&&buildParams(r,e[r],i,a);return s.join("&").replace(/%20/g,"+")},reqwest.getcallbackPrefix=function(){return callbackPrefix},reqwest.compat=function(e,t){return e&&(e.type&&(e.method=e.type)&&delete e.type,e.dataType&&(e.type=e.dataType),e.jsonpCallback&&(e.jsonpCallbackName=e.jsonpCallback)&&delete e.jsonpCallback,e.jsonp&&(e.jsonpCallback=e.jsonp)),new Reqwest(e,t)},reqwest.ajaxSetup=function(e){e=e||{};for(var t in e)globalSetupOptions[t]=e[t]},reqwest})},function(e,t){},function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},i=r(2),s=function(e){function t(){e.apply(this,arguments)}return n(t,e),t.prototype.getSolverType=function(){return"PDP"},t.prototype.verifyOrder=function(t){e.prototype.verifyOrder.call(this,t),this.verifyExist(t.window,"starttime"),this.verifyExist(t.window,"endtime")},t}(i.BaseClient);t.PdpClient=s}]);