/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/mango-client@0.4.0/src/mangoClient.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const http=require("http"),https=require("https"),fs=require("fs"),path=require("path"),querystring=require("querystring"),uuidV4=require("uuid/v4"),FormData=require("form-data"),DataSourceFactory=require("./dataSource"),DataPointFactory=require("./dataPoint"),UserFactory=require("./user"),MangoObjectFactory=require("./mangoObject"),pointValuesFactory=require("./pointValue.js");class MangoClient{constructor(e){if((null==(e=e||{}).enableCookies||e.enableCookies)&&(this.cookies={"XSRF-TOKEN":uuidV4()}),this.defaultHeaders=e.defaultHeaders||{},e.agent)return void(this.agent=e.agent);const t={host:e.host||"localhost",port:e.port||("https"===e.protocol?8443:8080),rejectUnauthorized:null==e.rejectUnauthorized||!!e.rejectUnauthorized,keepAlive:!0};"https"===e.protocol?this.agent=new https.Agent(t):this.agent=new http.Agent(t),this.MangoObject=MangoObjectFactory(this),this.DataSource=DataSourceFactory(this),this.DataPoint=DataPointFactory(this),this.User=UserFactory(this);const a=pointValuesFactory(this);this.pointValues=new a}setBearerAuthentication(e){this.defaultHeaders.Authorization=`Bearer ${e}`}setBasicAuthentication(e,t){const a=new Buffer(`${e}:${t}`).toString("base64");this.defaultHeaders.Authorization=`Basic ${a}`}restRequest(e){let t=new Promise(((t,s)=>{const o={path:e.path,agent:this.agent,method:e.method||"GET",headers:{Accept:"application/json"}};if(e.params){const t=Object.keys(e.params);if(t.length){const a={};t.forEach((t=>{const s=e.params[t];s instanceof Date?a[t]=s.toISOString():a[t]=s})),o.path+="?"+querystring.stringify(a)}}let r,i;if(e.data?(r=JSON.stringify(e.data),o.headers["Content-Type"]="application/json",o.headers["Content-Length"]=Buffer.byteLength(r)):e.uploadFiles&&(i=new FormData,e.uploadFiles.forEach((e=>{i.append(path.basename(e),fs.createReadStream(e))})),o.headers["Content-Type"]="multipart/form-data; boundary="+i.getBoundary()),this.cookies){this.cookies["XSRF-TOKEN"]&&(o.headers["X-XSRF-TOKEN"]=this.cookies["XSRF-TOKEN"]);const e=[];Object.keys(this.cookies).forEach((t=>{const a=encodeURIComponent(this.cookies[t]);null!=a&&e.push(`${t}=${a}`)})),e.length&&(o.headers.Cookie=e.join("; "))}Object.assign(o.headers,this.defaultHeaders,e.headers);const n=("https:"===this.agent.protocol?https.request:http.request)(o,(o=>{const r={status:o.statusCode,data:null,headers:o.headers};if(this.cookies){const e=o.headers["set-cookie"];e&&e.map(a).forEach((e=>{"0"===e["Max-Age"]?delete this.cookies[e.name]:this.cookies[e.name]=e.value}))}const i=[];if(e.writeToFile){const t=fs.createWriteStream(e.writeToFile);o.pipe(t)}else o.on("data",(e=>i.push(e)));o.on("end",(()=>{if(i.length){const t=Buffer.concat(i);if("buffer"===e.dataType)r.data=t;else{const a=t.toString("utf8");if("string"===e.dataType)r.data=a;else try{r.data=JSON.parse(a)}catch(e){s(e)}}}if(o.statusCode<400)t(r);else{const e=new Error(`Mango HTTP error - ${o.statusCode} ${o.statusMessage}`);e.status=o.statusCode,e.headers=o.headers,e.response=o,e.data=r.data,s(e)}}))}));n.on("error",(e=>s(e))),i?i.pipe(n):(r&&n.write(r),n.end())}));return e.retries>0&&(e.retries--,t=t.catch((t=>{return(a=e.retryDelay||5e3,new Promise((e=>{setTimeout(e,a)}))).then(this.restRequest.bind(this,e));var a}))),t;function a(e){const t=e.split(/\s*;\s*/),a={};return t.forEach(((e,t)=>{const s=e.split("=");if(!(s.length<=0))if(0===t){a.name=s[0];const e=/^"(.*)"$/.exec(s[1]);a.value=decodeURIComponent(e?e[1]:s[1])}else a[s[0]]=s[1]})),a}}}module.exports=MangoClient;
//# sourceMappingURL=/sm/fa5777be374e0f3871677700430a198115ea0d756285c88e33b5409707df164d.map