UNPKG

@nec-baas/jssdk

Version:

NEC Mobile Backend Platform JavaScript SDK

18 lines 117 kB
/*! * NEC Mobile Backend Platform JavaScript SDK version 7.5.0 * * Copyright 2014-2018, NEC Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ "use strict";var XMLHttpRequest,localStorage;!function(e,t){var r={exports:{}},o=r.exports;t.call(e,r,o),"undefined"!=typeof module&&void 0!==module.exports&&"undefined"!=typeof process&&"undefined"!=typeof require?module.exports=o:e.Nebula=o.Nebula}(this,function(module,exports){var __extends=this&&this.__extends||(e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(t,r)},function(t,r){function o(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(o.prototype=r.prototype,new o)}),e;Object.defineProperty(exports,"__esModule",{value:!0}),exports.root=this,exports.nbError=function(e){"undefined"!=typeof console&&console.log("[BAAS ERROR] : "+e)},exports.nbLogger=function(e){"debug"===exports.Nebula.getDebugMode()&&"undefined"!=typeof console&&console.log("[BAAS] : "+e)},exports._doBadRequestCallback=function(e,t){exports.nbLogger(t+"#invalid parameter.");var r=exports._createError(400,"Invalid Arguments","Invalid Arguments");return e&&e.error?void e.error(r):Promise.reject(r)},exports._promisify=function(e,t){return t?void e.then(function(e){t.success&&t.success(e)}).catch(function(e){t.error&&t.error(e)}):e},exports._createError=function(e,t,r,o){var s=new Error(t+"("+e+")");return s.status=e,s.statusText=t,s.responseText=r,o&&(s.data=o),s},exports._errorText=function(e){return e&&e.message?e.message:e},exports._isObject=function(e){var t=typeof e;return e&&"object"==t||"function"==t},exports._compareObject=function(e,t){var r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return!1;for(var s=0,n=r;s<n.length;s++){var i=n[s];if(exports._isObject(e[i])&&exports._isObject(t[i])){if(!exports._compareObject(e[i],t[i]))return!1}else if(e[i]!==t[i])return!1}return!0},exports.nbAssert=function(e,t){if(!e){if("debug"===exports.Nebula.getDebugMode())throw new Error("Assertion failed. "+t);exports.nbError("Assertion failed. "+t)}},exports.isNodeJs=function(){return"undefined"!=typeof require&&"undefined"!=typeof process},exports._node_require=function(module){try{return exports.isNodeJs()?eval("require")(module):null}catch(e){return null}},exports.URL=exports._node_require("url"),exports.https=exports._node_require("https"),exports.http=exports._node_require("http"),exports.tls=exports._node_require("tls"),exports.fs=exports._node_require("fs"),exports.util=exports._node_require("util");var __http2=null;try{__http2=exports._node_require("http2")}catch(e){}exports.http2=__http2,exports._hasXhr=function(){return void 0!==XMLHttpRequest};var HttpRequestExecutor=(R.closeHttp2Session=function(e){exports._hasXhr()?HttpXhr.closeHttp2Session(e):HttpNode.closeHttp2Session(e)},R.create=function(e){return exports._hasXhr()?this._xhrFactory(e):this._nodeFactory(e)},R.setXhrFactory=function(e){this._xhrFactory=e},R.setNodeFactory=function(e){this._nodeFactory=e},R);function R(e){this._req=e,this._resolve=e._resolve,this._reject=e._reject}exports.HttpRequestExecutor=HttpRequestExecutor;var HttpRequest=(X.getProxy=function(){return X._proxy},X.setProxy=function(e){X._proxy=e},X.setHttpAgent=function(e){X._httpAgent=e},X.setHttpsAgent=function(e,t){X._httpsAgent=e,X._httpsAgentOptions=t},Object.defineProperty(X.prototype,"service",{get:function(){return this._service},enumerable:!0,configurable:!0}),Object.defineProperty(X.prototype,"responseHeaders",{get:function(){return this._responseHeaders},set:function(e){this._responseHeaders=e},enumerable:!0,configurable:!0}),X.setDefaultTimeout=function(e){this._defaultTimeout=e},X.getDefaultTimeout=function(){return this._defaultTimeout},Object.defineProperty(X.prototype,"rawMessage",{get:function(){return this._rawMessage},set:function(e){this._rawMessage=e},enumerable:!0,configurable:!0}),Object.defineProperty(X.prototype,"useHttp2",{get:function(){return this._useHttp2},set:function(e){if(e&&null==exports.http2)throw new Error("No http2 support.");this._useHttp2=e},enumerable:!0,configurable:!0}),X.prototype.setReceiveResponseHeaders=function(e){return this._receiveResponseHeaders=e,this},X.prototype.execute=function(){var c=this;return new Promise(function(e,t){c._resolve=e,c._reject=t,c._headers["X-Application-Id"]=c._service.getAppID(),c._headers["X-Application-Key"]=c._service.getAppKey(),null!==c._contentType&&(c._headers["Content-Type"]=c._contentType),null!==c._sessionToken&&(c._headers["X-Session-Token"]=c._sessionToken);var r,o=c._url;if(c._queryParams){for(var s=[],n=0,i=Object.keys(c._queryParams);n<i.length;n++){var u=i[n];c._queryParams.hasOwnProperty(u)&&s.push(encodeURIComponent(u)+"="+encodeURIComponent(c._queryParams[u]))}0<s.length&&(o+="?"+s.join("&"))}r=null==c._data?null:"string"==typeof c._data||"undefined"!=typeof Blob&&null!==Blob&&c._data instanceof Blob||"undefined"!=typeof Buffer&&null!==Buffer&&Buffer.isBuffer(c._data)?c._data:JSON.stringify(c._data);var a=HttpRequestExecutor.create(c);c._rawMessage&&a.setReturnRawMessage(c._rawMessage),a.execute(c._method,o,c._headers,r,c._timeout,c._responseType,c._receiveResponseHeaders,c._useHttp2)})},X.closeHttp2Session=function(e){HttpRequestExecutor.closeHttp2Session(e)},X.prototype.setMethod=function(e){return this._method=e,this},X.prototype.setContentType=function(e){return this._contentType=e,this},X.prototype.setQueryParams=function(e){return this._queryParams=e,this},X.prototype.addQueryParams=function(e){if(e)for(var t=0,r=Object.keys(e);t<r.length;t++){var o=r[t];this.setQueryParam(o,e[o])}return this},X.prototype.setQueryParam=function(e,t){return this._queryParams||(this._queryParams={}),this._queryParams[e]=t,this},X.prototype.setData=function(e){return this._data=e,this},X.prototype.setSessionToken=function(e){return this._sessionToken=e,this},X.prototype.setResponseType=function(e){return this._responseType=e,this},X.prototype.addRequestHeader=function(e,t){return void 0!==this._headers[e]&&exports.nbLogger("HTTP Request Warning : This header already exists."),this._headers[e]=t,this},X._defaultTimeout=0,X);function X(e,t,r){this._rawMessage=!1,this._useHttp2=!1,exports.nbLogger("HttpRequest#start:path = "+t),this._service=e,this._url=this._service.getBaseUri(),r&&r.noprefix||(this._url+="/"+this._service.getRestApiVersion()+"/"+this._service.getTenantID()),this._url=encodeURI(this._url)+t,this._headers={},this._contentType=null,this._responseType=null,this._queryParams=null,this._data=null,this._receiveResponseHeaders=!1,this._timeout=X.getDefaultTimeout(),this._useHttp2=this._service.getHttp2();var o=this._service.getCurrentUser();this._sessionToken=null===o?null:o.sessionToken}exports.HttpRequest=HttpRequest,exports.initHttpXhr=function(){HttpRequestExecutor.setXhrFactory(function(e){return new HttpXhr(e)})};var HttpXhr=(Ja=HttpRequestExecutor,__extends(Ka,Ja),Ka.prototype.setReturnRawMessage=function(e){throw new Error("Not supported")},Ka.prototype.execute=function(e,t,r,o,s,n,i,u){var a=this;this._receiveResponseHeaders=i,this._xhr=this._createXhr(),this._xhr.open(e,t,!0),this._xhr.onreadystatechange=this._onReadyStateChange;for(var c=0,l=Object.keys(r);c<l.length;c++){var p=l[c],g=r[p];this._xhr.setRequestHeader(p,g)}this._xhr.timeout=s,this._xhr.ontimeout=function(e){a._onXhrTimeout(e)};try{var h=exports.root.navigator.userAgent.toLowerCase();(h.match(/msie/)||h.match(/trident/))&&(this._xhr.setRequestHeader("Pragma","no-cache"),this._xhr.setRequestHeader("Cache-Control","no-cache"),this._xhr.setRequestHeader("If-Modified-Since","Thu, 01 Jun 1970 00:00:00 GMT"))}catch(e){}null!=n&&(this._xhr.responseType=n),this._xhr.send(o)},Ka.closeHttp2Session=function(e){throw new Error("not support")},Ka.prototype._createXhr=function(){if(!exports._hasXhr())throw new Error("No XMLHttpRequest");return new XMLHttpRequest},Ka.prototype._onReadyStateChange=function(){var e=this._xhr;if(4===e.readyState){if(200<=e.status&&e.status<300){var t=null!=e.response?e.response:e.responseText;return this._receiveResponseHeaders?this._resolve({body:t,headers:e.getAllResponseHeaders(),status:e.status}):this._resolve(t)}var r=exports._createError(e.status,e.statusText,"");return"blob"!==e.responseType&&(r.responseText=e.responseText),0===e.status&&(r.statusText="Not Found",r.responseText="Not found anything that matches the request URI."),exports.nbError("HTTP Request Error: "+r.message+" "+r.responseText),this._reject(r)}},Ka.prototype._onXhrTimeout=function(e){var t=exports._createError(0,"Timeout error",e.toString());exports.nbError("HTTP Response Error: Timeout Error: "+e.toString()),this._reject(t)},Ka),Ja;function Ka(e){var t=Ja.call(this,e)||this;return t._onReadyStateChange=t._onReadyStateChange.bind(t),t}exports.HttpXhr=HttpXhr,HttpRequestExecutor.setXhrFactory(function(e){return new HttpXhr(e)}),exports.initHttpNode=function(){HttpRequestExecutor.setNodeFactory(function(e){return new HttpNode(e)})};var HttpNode=(kb=HttpRequestExecutor,__extends(lb,kb),lb.prototype.setReturnRawMessage=function(e){this._rawMessage=e},lb.prototype.execute=function(e,t,r,o,s,n,i,u){var a;this._responseType=n,this._receiveResponseHeaders=i;try{a=exports.URL.parse(t)}catch(e){return exports.nbError("Bad URL: "+t),void this._reject(exports._createError(0,"Bad URL: "+t,""))}var c=lb._isHttps(a),l={method:e,hostname:a.hostname,port:a.port,path:a.path,headers:r,agent:c?HttpRequest._httpsAgent:HttpRequest._httpAgent,timeout:s,pfx:null,passphrase:null,key:null,cert:null,ca:null,privateKeyEngine:null,privateKeyIdentifier:null,rejectUnauthorized:!0};if(c){var p=["pfx","passphrase","key","cert","ca","privateKeyEngine","privateKeyIdentifier"],g=this._req.service._config.clientCertOptions;if(null!=g)for(var h in g){if(!(0<=p.indexOf(h)))return exports.nbError("invalid parameter "+h+" detected. value: "+JSON.stringify(g[h])),void this._reject(exports._createError(0,"invalid parameter: "+h," value: "+JSON.stringify(g[h])));l[h]=g[h]}this._req.service._config.allowSelfSignedCert?(l.rejectUnauthorized=!1,exports.nbLogger("HTTPS Request Warning : accept self-signed certificate. make sure the risk of this setting.")):l.rejectUnauthorized=!0}if(c&&null!=l.agent&&null!=HttpRequest._httpsAgentOptions)try{exports.tls.createSecureContext(HttpRequest._httpsAgentOptions)}catch(e){exports.nbError("HttpsAgentOptions invalid. check proxy options "+e.toString());var f=exports._createError(0,"Client Error",e.toString());return void this._reject(f)}null!=l.privateKeyEngine&&null!=l.privateKeyIdentifier||(delete l.privateKeyEngine,delete l.privateKeyIdentifier),null!=exports.http2&&u?this._sendHttp2Request(a,l,o):this._sendHttpRequest(a,l,o)},lb.prototype._sendHttp2Request=function(e,t,r){var o=e.protocol+"//"+e.hostname;null!=e.port&&(o+=":"+e.port);var s=lb.getHttp2Sessions();for(var n in s){var i=s[n];1!=i.destroyed&&1!=i.closed||(exports.nbLogger("http2 session "+o+" is destroyed or closed state"),lb.closeHttp2Session(n))}var u=lb.getHttp2Session(o);if(null==u){exports.nbLogger("create http2 session: ["+o+"]");var a={allowHTTP1:!0,pfx:t.pfx,passphrase:t.passphrase,key:t.key,cert:t.cert,ca:t.ca,rejectUnauthorized:t.rejectUnauthorized};u=exports.http2.connect(o,lb._isHttps(e)?a:void 0),lb.setHttp2Session(o,u)}var c=t.headers;c[":method"]=t.method,c[":path"]=e.path;var l=u.request(c);0<t.timeout&&l.setTimeout(t.timeout,function(){lb._closeStream(l);var e=exports._createError(0,"HTTP/2 Request timeout: "+t.timeout+"[msec]","");exports.nbError("Timeout detected: "+e)}),this._rawMessage?this._resolve(l):this._setHttp2ResponseHandlers(l),null!=r&&("string"==typeof r||r instanceof String||r instanceof Buffer?l.write(r):l.write(JSON.stringify(r))),l.end()},lb.prototype._sendHttpRequest=function(e,t,r){function o(e){if(s._rawMessage)s._resolve(e);else{var t=e.statusCode;s._req.responseHeaders=e.headers,s._setResponseHandlers(t,e)}}var s=this,n=lb._isHttps(e)?exports.https.request(t,o):exports.http.request(t,o);0<t.timeout&&n.setTimeout(t.timeout,function(){return n.abort()}),n.on("error",function(e){var t=exports._createError(0,"HTTP request error",e.toString());exports.nbError("HTTP Request Error: "+e.toString()),s._reject(t)}),null!=r&&("string"==typeof r||r instanceof String||r instanceof Buffer?n.write(r):n.write(JSON.stringify(r))),n.end()},lb._isHttps=function(e){return"https:"===e.protocol},lb.prototype._setResponseHandlers=function(s,n){var i=this,u=[];n.on("data",function(e){u.push(e)}),n.on("end",function(){var e=Buffer.concat(u),t=i._parseNodeResponse(e);if(200<=s&&s<300)i._receiveResponseHeaders?i._resolve({body:t,headers:n.headers,status:s}):i._resolve(t);else{var r="buffer"!==i._responseType&&null!=t?t.toString():"",o=exports._createError(s,n.statusMessage,r,t);exports.nbError("HTTP Response Error: status="+s+" - "+n.statusMessage),i._reject(o)}}),n.on("error",function(e){var t=exports._createError(0,"Client Error",e.toString());exports.nbError("HTTP Response Error: Client Error: "+e.toString()),i._reject(t)})},lb.prototype._setHttp2ResponseHandlers=function(n){var i=this,u=[],a={},c=0;n.on("response",function(e,t){c=Number((a=e)[exports.http2.constants.HTTP2_HEADER_STATUS])}).on("data",function(e){u.push(e)}).on("end",function(){var e=Buffer.concat(u),t=i._parseNodeResponse(e);if(lb._closeStream(n),200<=c&&c<300)i._receiveResponseHeaders?i._resolve({body:t,headers:a,status:c}):i._resolve(t);else{var r=0==c?"Unable to get proper response":"",o="buffer"!==i._responseType&&null!=t?t.toString():"",s=exports._createError(c,r,o,t);exports.nbError("HTTP/2 Response Error: status="+c),i._reject(s)}}).on("error",function(e){lb._closeStream(n);var t=exports._createError(0,"HTTP/2 Stream Error",e.toString());exports.nbError("HTTP/2 Stream Error: "+e.toString()),i._reject(t)}).on("push",function(e,t){exports.nbLogger("HTTP/2 Stream push")}).on("finish",function(){exports.nbLogger("HTTP/2 Stream finish")}).on("altsvc",function(e,t,r){exports.nbLogger("HTTP/2 Stream altsvc")}).on("aborted",function(){exports.nbLogger("HTTP/2 Stream aborted")})},lb.prototype._parseNodeResponse=function(e){try{switch(this._responseType){default:case"text":return e.toString("utf-8");case"json":var t=e.toString("utf-8");try{return JSON.parse(t)}catch(e){return t}case"buffer":return e}}catch(e){return exports.nbError("bad response: e="+e.toString()),null}},lb._closeSession=function(e,t){"close"in e?e.close(t):"shutdown"in e?e.shutdown({graceful:!0},t):(e.destroy(),e.removeAllListeners())},lb._closeStream=function(e){"close"in e?e.close():e.destroy()},lb.getHttp2Sessions=function(){return lb._http2Sessions},lb.getHttp2Session=function(e){var t=null;return e in lb._http2Sessions&&(t=lb._http2Sessions[e]),t},lb.setHttp2Session=function(e,t){lb._http2Sessions[e]=t},lb.closeHttp2Session=function(e){if(void 0!==e){var t=lb._http2Sessions[e];null!=t&&(t.destroyed?(t.removeAllListeners(),exports.nbLogger("HTTP/2 session ["+e+"] is already destroyed")):(exports.nbLogger("HTTP/2 session ["+e+"] is going to close"),lb._closeSession(t,function(){t.removeAllListeners(),exports.nbLogger("HTTP/2 session ["+e+"] has been closed")})),delete lb._http2Sessions[e])}else for(var r in lb._http2Sessions)lb.closeHttp2Session(r)},lb._http2Sessions={},lb),kb;function lb(e){var t=kb.call(this,e)||this;return t._rawMessage=!1,t}exports.HttpNode=HttpNode,HttpRequestExecutor.setNodeFactory(function(e){return new HttpNode(e)});var _SdeRequest=(Wc.prototype.setData=function(e){return this._data=e},Wc.prototype.execute=function(){var r={},e=new Promise(function(e,t){return r.success=e,r.error=t}),t=Wc._createRequestId();Wc._callbacks[t]=r,exports.nbLogger("_SdeRequest.execute(), reqId="+t),null==this._data&&(this._data={});var o={data:this._data},s={action:this._className+"."+this._methodName,request_id:t,params:JSON.stringify(o),callback:"Nebula._SdeRequest.sdeCallback"};return exports.nbLogger("_SdeRequest.execute(), sdeParams="+JSON.stringify(s)),sde.smt.common.exIfExecute("NebulaSdePlugin","execute",s),e},Wc._createRequestId=function(){for(var e=0;e<1e3;e++){var t="id_"+this._requestId;if(this._requestId++,1e3<=this._requestId&&(this._requestId=0),!this._callbacks[t])return exports.nbLogger("_SdeRequest._createRequestId(), requestId="+t),t}throw exports.nbLogger("FATAL Error: Nebula._SdeRequest._createRequestId(), callback slot full!"),new Error("Could not create request ID, callback slot full!")},Wc.sdeCallback=function(e){try{exports.nbLogger("_SdeRequest.sdeCallback()"),exports.nbLogger(" params="+JSON.stringify(e)),exports.nbLogger(" requestId="+e.requestId),exports.nbLogger(" status="+e.status),exports.nbLogger(" statusText="+e.statusText),exports.nbLogger(" responseText="+e.responseText),exports.nbLogger(" response="+e.response);var t=e.requestId;if(null!=t&&null!=Wc._callbacks[t]){var r=Wc._callbacks[t];exports.nbLogger(" requestId="+t),exports.nbLogger(" _callbacks[requestId]="+r);var o=e.status;if(o||(exports.nbLogger("_SdeRequest.sdeCallback(), warning:: not found status property"),o=0),200<=o&&o<300)exports.nbLogger("_SdeRequest.sdeCallback(), call success callback"),r.success(JSON.stringify(e.response));else{var s=exports._createError(e.status,e.statusText,e.responseText);exports.nbLogger("Nebula._SdeRequest.sdeCallback(), call error callback: "+s.message+" "+s.responseText),r.error(s)}delete Wc._callbacks[t],exports.nbLogger("_SdeRequest.sdeCallback(), _callbacks : "+JSON.stringify(Wc._callbacks))}else exports.nbError("_SdeRequest.sdeCallback(), not found requestId="+t)}catch(e){exports.nbError("_SdeRequest.sdeCallback(), e="+e)}},Wc._callbacks={},Wc._requestId=0,Wc);function Wc(e,t){exports.nbLogger("_SdeRequest(), className="+e+", methodName="+t),this._className=e,this._methodName=t,this._data=null}exports._SdeRequest=_SdeRequest;var _SdeNetworkEventListener=(nd.setCallback=function(e){this._callback=e,exports.nbLogger("_SdeNetworkEventListener.setCallback(), callback="+e);var t={};t.set=!!e;var r={action:"NebulaNetworkEventManager.setNetworkEventListener",params:JSON.stringify(t),callback:""};return exports.nbLogger("_SdeNetworkEventListener.setCallback(), sdeParams="+JSON.stringify(r)),sde.smt.common.exIfExecute("NebulaSdePlugin","execute",r)},nd.onNetworkStateChanged=function(e){try{exports.nbLogger("_SdeNetworkEventListener.onNetworkStateChanged(), params="+JSON.stringify(e)),null!=this._callback&&null!=this._callback.onNetworkStateChanged?null!=e.isOnline?this._callback.onNetworkStateChanged(e.isOnline):exports.nbError("_SdeNetworkEventListener.onNetworkStateChanged(), invalid parameters"):exports.nbLogger("_SdeNetworkEventListener.onNetworkStateChanged(), no callback")}catch(e){exports.nbError("_SdeNetworkEventListener.onNetworkStateChanged(), exception="+e)}},nd);function nd(){}exports._SdeNetworkEventListener=_SdeNetworkEventListener;var _SdeSyncEventListener=(td.setListener=function(e,t){if(null!=e){exports.nbLogger("_SdeSyncEventListener.setCallback(), before : _listeners="+JSON.stringify(this._listeners));var r=e.getBucketName(),o=e.getBucketMode();null!=t?(this._listeners[r]=t,this._bucketMode[r]=o):(null!=this._listeners[r]&&delete this._listeners[r],null!=this._bucketMode[r]&&delete this._bucketMode[r]),exports.nbLogger("_SdeSyncEventListener.setCallback(), after : _listeners="+JSON.stringify(this._listeners));var s={};s.bucketName=r,s.bucketMode=o,s.set=!!t;var n={action:"NebulaSyncEventManager.setSyncEventListener",params:JSON.stringify(s),callback:""};return exports.nbLogger("_SyncEventListener.setCallback(), sdeParams="+JSON.stringify(n)),sde.smt.common.exIfExecute("NebulaSdePlugin","execute",n)}exports.nbError("_SdeSyncEventListener.setCallback(), no bucket")},td.resolveConflict=function(e){exports.nbLogger("_SyncEventListener.resolveConflict(), data="+e);var t={action:"NebulaSyncEventManager.resolveConflict",params:JSON.stringify(e),callback:""};return exports.nbLogger("_SyncEventListener.resolveConflict(), sdeParams="+JSON.stringify(t)),sde.smt.common.exIfExecute("NebulaSdePlugin","execute",t)},td.onSyncStart=function(e){try{if(exports.nbLogger("_SdeSyncEventListener.onSyncStart(), params="+JSON.stringify(e)),null!=e.bucketName){var t=e.bucketName,r=td._listeners[t];r&&r.onSyncStart?r.onSyncStart(t):exports.nbLogger("_SdeSyncEventListener.onSyncStart(), no callback or onSyncStart")}else exports.nbLogger("_SdeSyncEventListener.onSyncStart(), no bucketName")}catch(e){exports.nbLogger("_SdeSyncEventListener.onSyncStart(), exception="+e)}},td.onSyncCompleted=function(e){try{if(exports.nbLogger("_SdeSyncEventListener.onSyncCompleted(), params="+JSON.stringify(e)),exports.nbLogger("_SdeSyncEventListener.onSyncCompleted(), bucketName="+e.bucketName),exports.nbLogger("_SdeSyncEventListener.onSyncCompleted(), objectIds="+e.objectIds),null!=e.bucketName&&null!=e.objectIds){var t=e.bucketName,r=td._listeners[t];r&&r.onSyncCompleted?r.onSyncCompleted(t,e.objectIds):exports.nbLogger("_SdeSyncEventListener.onSyncCompleted(), no callback or onSyncCompleted")}else exports.nbLogger("_SdeSyncEventListener.onSyncCompleted(), no bucketName or objectIds")}catch(e){exports.nbLogger("_SdeSyncEventListener.onSyncCompleted(), exception="+e)}},td.onSyncConflicted=function(e){try{if(exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), params="+JSON.stringify(e)),exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), bucketName="+e.bucketName),exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), resolveId="+e.resolveId),exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), client="+e.client),exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), server="+e.server),null!=e.bucketName&&null!=e.resolveId&&null!=e.client&&null!=e.server){var t=e.bucketName,r=this._bucketMode[t];null==r&&(r=exports.Nebula.BUCKET_MODE_REPLICA);var o=this._listeners[t];if(o&&o.onSyncConflicted){var s=new exports.Nebula.ObjectBucket(t,r);s._setResolveId(e.resolveId),o.onSyncConflicted(s,e.client,e.server)}else exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), no callback or onSyncCompleted")}else exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), invalid parameters")}catch(e){exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), exception="+e)}},td.onResolveConflict=function(e){try{if(exports.nbLogger("_SdeSyncEventListener.onResolveConflict(), params="+JSON.stringify(e)),exports.nbLogger("_SdeSyncEventListener.onResolveConflict(), resolve="+e.resolve),exports.nbLogger("_SdeSyncEventListener.onResolveConflict(), object="+e.object),null!=e.bucketName&&null!=e.resolve&&null!=e.object){var t=e.bucketName,r=td._listeners[t];r&&r.onResolveConflict?r.onResolveConflict(e.object,e.resolve):exports.nbLogger("Nebula._SdeSyncEventListener.onResolveConflict(), no callback or onResolveConflict")}else exports.nbLogger("_SdeSyncEventListener.onSyncConflicted(), invalid parameters")}catch(e){exports.nbLogger("_SdeSyncEventListener.onResolveConflict(), exception="+e)}},td.onSyncError=function(e){try{if(exports.nbLogger("_SdeSyncEventListener.onSyncError(), params="+JSON.stringify(e)),exports.nbLogger("_SdeSyncEventListener.onSyncError(), errorCode="+e.errorCode),exports.nbLogger("_SdeSyncEventListener.onSyncError(), object="+e.object),null!=e.bucketName&&null!=e.errorCode&&null!=e.object){var t=e.bucketName,r=td._listeners[t];null!=r&&null!=r.onSyncError?r.onSyncError(e.errorCode,e.object):exports.nbLogger("_SdeSyncEventListener.onSyncError(), no callback or onSyncError")}else exports.nbLogger("_SdeSyncEventListener.onSyncError(), invalid parameters")}catch(e){exports.nbLogger("_SdeSyncEventListener.onSyncError(), exception="+e)}},td._listeners={},td._bucketMode={},td);function td(){}exports._SdeSyncEventListener=_SdeSyncEventListener;var AccountLink=(Object.defineProperty(Yd.prototype,"_id",{get:function(){return this.__id},set:function(e){this.__id=e},enumerable:!0,configurable:!0}),Object.defineProperty(Yd.prototype,"iss",{get:function(){return this._iss},set:function(e){this._iss=e},enumerable:!0,configurable:!0}),Object.defineProperty(Yd.prototype,"sub",{get:function(){return this._sub},set:function(e){this._sub=e},enumerable:!0,configurable:!0}),Object.defineProperty(Yd.prototype,"op",{get:function(){return this._op},set:function(e){this._op=e},enumerable:!0,configurable:!0}),Yd.prototype._setAccountLink=function(e){return null!=e._id&&(this.__id=e._id),null!=e.iss&&(this._iss=e.iss),null!=e.sub&&(this._sub=e.sub),null!=e.op&&(this._op=e.op),this},Yd);function Yd(){}exports.AccountLink=AccountLink,exports.AclPermission={READ:"r",WRITE:"w",CREATE:"c",UPDATE:"u",DELETE:"d",ADMIN:"admin",OWNER:"owner"},exports.AclGroup={AUTHENTICATED:"g:authenticated",ANONYMOUS:"g:anonymous"};var Acl=(ce.prototype.addEntry=function(e,t){var r=this._acl[e];if(!r)return!1;if(!t)return!1;var o=null;o=t instanceof User?t._id:t instanceof Group?"g:"+t.groupname:t;for(var s=!1,n=0,i=r;n<i.length;n++)if(i[n]===o){s=!0;break}return!s&&(r.push(o),exports.nbLogger("Acl.addEntry(), added entry="+o),!0)},ce.prototype.removeEntry=function(e,t){var r=this._acl[e];if(!r)return!1;if(!t)return!1;var o=null;o=t instanceof User?t._id:t instanceof Group?"g:"+t.groupname:t;for(var s=0;s<r.length;s++)if(r[s]===o){r.splice(s,1),exports.nbLogger("Acl.removeEntry(), removed entry="+o);break}},ce.prototype._setOwner=function(e){this._acl[ce.OWNER]=e},ce.prototype.getOwner=function(){return this._acl.owner?this._acl.owner:null},ce.prototype.getEntries=function(e){var t=this._acl[e];return t||null},ce.prototype._set=function(e){this._acl=e},ce.prototype._hasEntry=function(e,t){var r=this._acl[e];if(r)for(var o=0,s=r;o<s.length;o++)if(s[o]===t)return!0;return!1},ce.prototype._toString=function(e){return JSON.stringify(this._toJsonObject(e))},ce.prototype._toJsonObject=function(e){if("ACL"!==e&&"contentACL"!==e)return this._acl;var t={};return t[e]=this._acl,t},ce.READ="r",ce.WRITE="w",ce.CREATE="c",ce.UPDATE="u",ce.DELETE="d",ce.ADMIN="admin",ce.OWNER="owner",ce.AUTHENTICATED="g:authenticated",ce.ANONYMOUS="g:anonymous",ce);function ce(e){if(exports.nbLogger("Acl(), json="+e),this._acl={r:[],w:[],c:[],u:[],d:[],admin:[]},e)for(var t=0,r=[ce.OWNER,ce.READ,ce.WRITE,ce.CREATE,ce.UPDATE,ce.DELETE,ce.ADMIN];t<r.length;t++){var o=r[t];e[o]&&(this._acl[o]=e[o])}}exports.Acl=Acl,exports.RegexOption={CASE_INSENSITIVITY:"i"};var Clause=(Ie.prototype._setParams=function(e,t,r,o){if(null===t)this._clause[e]=r;else{var s={};exports._isObject(this._clause[e])&&(s=this._clause[e]),s[t]=r,o&&(s.$options=o),this._clause[e]=s}return this},Ie.prototype.json=function(){return this._clause},Ie.equals=function(e,t){return(new Ie).equals(e,t)},Ie.prototype.equals=function(e,t){var r=null;return null!=t&&exports._isObject(t)&&(r="$eq"),this._setParams(e,r,t)},Ie.notEquals=function(e,t){return(new Ie).notEquals(e,t)},Ie.prototype.notEquals=function(e,t){return this._setParams(e,"$ne",t)},Ie.lessThan=function(e,t){return(new Ie).lessThan(e,t)},Ie.prototype.lessThan=function(e,t){return this._setParams(e,"$lt",t)},Ie.lessThanOrEqual=function(e,t){return(new Ie).lessThanOrEqual(e,t)},Ie.prototype.lessThanOrEqual=function(e,t){return this._setParams(e,"$lte",t)},Ie.greaterThan=function(e,t){return(new Ie).greaterThan(e,t)},Ie.prototype.greaterThan=function(e,t){return this._setParams(e,"$gt",t)},Ie.greaterThanOrEqual=function(e,t){return(new Ie).greaterThanOrEqual(e,t)},Ie.prototype.greaterThanOrEqual=function(e,t){return this._setParams(e,"$gte",t)},Ie.in=function(e,t){return(new Ie).in(e,t)},Ie.prototype.in=function(e,t){return this._setParams(e,"$in",t)},Ie.all=function(e,t){return(new Ie).all(e,t)},Ie.prototype.all=function(e,t){return this._setParams(e,"$all",t)},Ie.exist=function(e,t){return(new Ie).exist(e,t)},Ie.prototype.exist=function(e,t){if("boolean"==typeof t)return this._setParams(e,"$exists",t);throw new Error("exist: value is not boolean")},Ie.regex=function(e,t,r){return(new Ie).regex(e,t,r)},Ie.prototype.regex=function(e,t,r){return this._setParams(e,"$regex",t,r)},Ie.prototype.not=function(e){var t;return null===this._clause||null==this._clause[e]?null:(t=exports._isObject(this._clause[e])?{$not:this._clause[e]}:{$not:{$eq:this._clause[e]}},this._clause[e]=t,this)},Ie.and=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Ie._convertClauseArray(e);return(new Ie)._setParams("$and",null,r)},Ie.or=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Ie._convertClauseArray(e);return(new Ie)._setParams("$or",null,r)},Ie._convertClauseArray=function(e){for(var t=[],r=0,o=e;r<o.length;r++){var s=o[r].json();null!=s&&t.push(s)}return t},Ie);function Ie(e){this._clause=null!=e?e:{}}exports.Clause=Clause;var ObjectQuery=(Tf.prototype.getClause=function(){return this._clause},Tf.prototype.getLimit=function(){return this._limit},Tf.prototype.getSkipCount=function(){return this._skip},Tf.prototype.getSort=function(){return this._sort},Tf.prototype.getSortOrder=function(){for(var e=[],t=0;t<this._sort.length;t++){var r=this._sort[t],o={};r.match(/^-/)?o[r.substr(1)]=!1:o[r]=!0,e.push(o)}return e},Tf.prototype._getDeleteMark=function(){return this._deleteMark},Tf.prototype.getProjection=function(){return this._projection},Tf.prototype._setDeleteMark=function(e){if("boolean"!=typeof e)throw new Error("deleteMark must be boolean");exports.nbLogger("ObjectQuery._setDeleteMark(), mark="+e+", cur="+this._deleteMark),this._deleteMark=e},Tf.prototype._toParam=function(){var e=this._toParamJson();return e.where&&(e.where=JSON.stringify(e.where)),e.projection&&(e.projection=JSON.stringify(e.projection)),e},Tf.prototype._toParamJson=function(){var e={};return this._clause&&(e.where=this._clause.json()),0<this._sort.length&&(e.order=this._sort.join(",")),e.skip=this._skip,e.limit=this._limit,this._countQuery&&(e.count=1),this._deleteMark&&(e.deleteMark=1),this._projection&&(e.projection=this._projection),e},Tf._toObjectQuery=function(e){var t=new Tf;exports.nbLogger("ObjectQuery._toObjectQuery(), queryJson="+JSON.stringify(e)),null!=e.limit&&t.setLimit(e.limit),null!=e.skip&&t.setSkipCount(e.skip);var r=e.sort;if(null!=r)for(var o=0,s=Object.keys(r);o<s.length;o++){var n=s[o];t.setSortOrder(n,r[n])}var i=e.clause;return null!=i&&0!==Object.keys(i).length&&t.setClause(new Clause(i)),null!=e.deleteMark&&t._setDeleteMark(e.deleteMark),null!=e.countQuery&&t._setCountQuery(e.countQuery),t},Tf.prototype._equals=function(e){if(this._limit!==e.getLimit())return!1;if(this._skip!==e.getSkipCount())return!1;if(this._deleteMark!==e._getDeleteMark())return!1;if(this._countQuery!==e._isCountQuery())return!1;if(this._projection){if(!e.getProjection())return!1;if(!exports._compareObject(this._projection,e.getProjection()))return!1}else if(e.getProjection())return!1;if(this._clause){if(!e.getClause())return!1;if(!exports._compareObject(this._clause.json(),e.getClause().json()))return!1}else if(e.getClause())return!1;return exports._compareObject(this._sort,e.getSortOrder())},Tf.prototype.setClause=function(e){if(!(null===e||e instanceof Clause))throw new Error("clause must be instanceof Nebula.Clause or null");return this._clause=e,this},Tf.prototype.setLimit=function(e){if(!(-1<=e))throw new Error("Invalid limit range");return this._limit=e,this},Tf.prototype.setSkipCount=function(e){if(!(0<=e))throw new Error("Invalid skip range");return this._skip=e,this},Tf.prototype.setSort=function(e){return this._sort=e,this},Tf.prototype.setSortOrder=function(e,t){if(!e)throw new Error("No key");if("boolean"!=typeof t)throw new Error("isAsc must be boolean");return t?this._sort.push(e):this._sort.push("-"+e),this},Tf.prototype.clearSortOrder=function(e){if(void 0===e&&(e=null),e)for(var t=0;t<this._sort.length;t++){var r=this._sort[t];if(r===e||r==="-"+e){this._sort.splice(t,1);break}}else this._sort=[];return this},Tf.prototype._setCountQuery=function(e){if("boolean"!=typeof e)throw new Error("countQuery must be boolean");return this._countQuery=e,this},Tf.prototype._isCountQuery=function(){return this._countQuery},Tf.prototype.setProjection=function(e){if(e&&exports._isObject(e))this._projection=e;else{if(null!==e)throw new Error("projection must be object or null");this._projection=null}return this},Tf);function Tf(){this._clause=null,this._limit=-1,this._skip=0,this._sort=[],this._deleteMark=!1,this._countQuery=!1,this._projection=null}exports.ObjectQuery=ObjectQuery;var User=(Object.defineProperty(sg.prototype,"_id",{get:function(){return this.__id},set:function(e){this.__id=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"username",{get:function(){return this._username},set:function(e){this._username=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"email",{get:function(){return this._email},set:function(e){this._email=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"password",{get:function(){return this._password},set:function(e){this._password=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"options",{get:function(){return this._options},set:function(e){this._options=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"groups",{get:function(){return this._groups},set:function(e){this._groups=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"createdAt",{get:function(){return this._createdAt},set:function(e){this._createdAt=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"updatedAt",{get:function(){return this._updatedAt},set:function(e){this._updatedAt=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"lastLoginAt",{get:function(){return this._lastLoginAt},set:function(e){this._lastLoginAt=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"etag",{get:function(){return this._etag},set:function(e){this._etag=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"sessionToken",{get:function(){return this._sessionToken},set:function(e){this._sessionToken=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"expire",{get:function(){return this._expire},set:function(e){this._expire=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"clientCertUser",{get:function(){return this._clientCertUser},set:function(e){this._clientCertUser=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"federated",{get:function(){return this._federated},set:function(e){this._federated=e},enumerable:!0,configurable:!0}),Object.defineProperty(sg.prototype,"primaryLinkedUserId",{get:function(){return this._primaryLinkedUserId},set:function(e){this._primaryLinkedUserId=e},enumerable:!0,configurable:!0}),sg.prototype._setUserInfo=function(e){var t;exports.nbLogger("User._setUserInfo#start");try{t=JSON.parse(e)}catch(e){exports.nbError("User._setUserInfo#json error."),t=null}null!==t&&(void 0!==t._id&&(this._id=t._id),void 0!==t.username&&(this.username=t.username),void 0!==t.email&&(this.email=t.email),void 0!==t.password&&(this.password=t.password),void 0!==t.options&&(this.options=t.options),void 0!==t.groups&&(this.groups=t.groups),void 0!==t.createdAt&&(this.createdAt=t.createdAt),void 0!==t.updatedAt&&(this.updatedAt=t.updatedAt),void 0!==t.lastLoginAt&&(this.lastLoginAt=t.lastLoginAt),void 0!==t.etag&&(this.etag=t.etag),void 0!==t.sessionToken&&(this.sessionToken=t.sessionToken),void 0!==t.expire&&(this.expire=t.expire),void 0!==t.clientCertUser&&(this.clientCertUser=t.clientCertUser),void 0!==t.federated&&(this.federated=t.federated),void 0!==t.primaryLinkedUserId&&(this.primaryLinkedUserId=t.primaryLinkedUserId))},sg.prototype.set=function(e,t){switch(e){case"_id":this._id=t;break;case"username":this.username=t;break;case"email":this.email=t;break;case"password":this.password=t;break;case"options":this.options=t;break;case"createdAt":this.createdAt=t;break;case"updatedAt":this._updatedAt=t;break;case"sessionToken":this.sessionToken=t;break;case"expire":this.expire=t;break;case"clientCertUser":this.clientCertUser=t;break;case"federated":this.federated=t;break;case"primaryLinkedUserId":this.primaryLinkedUserId=t;break;default:throw exports.nbError("Invalid property: "+e),new Error("Invalid property: "+e)}},sg.prototype.get=function(e){switch(e){case"_id":return this._id;case"username":return this.username;case"email":return this.email;case"password":return this.password;case"options":return this.options;case"groups":return this.groups;case"createdAt":return this.createdAt;case"updatedAt":return this.updatedAt;case"sessionToken":return this.sessionToken;case"expire":return this.expire;case"clientCertUser":return this.clientCertUser;case"federated":return this.federated;case"primaryLinkedUserId":return this.primaryLinkedUserId;default:throw exports.nbError("Invalid property"),new Error("Invalid property name")}},sg.prototype.register=function(e){var t,r,o=this;exports.nbLogger("User.register#start"),this._service.isOffline()?t=new _SdeRequest("NebulaUser","register"):(exports.nbLogger("User.register#REST API Request path = /users"),(t=new HttpRequest(this._service,"/users")).setMethod("POST"),t.setContentType("application/json")),!0===this.clientCertUser?r={clientCertUser:!0,username:this.username}:(r={email:this.email,password:this.password},null!=this.username&&(r.username=this.username)),null!==this.options&&(r.options=this.options),t.setData(r);var s=t.execute().then(function(e){return exports.nbLogger("User.register#success callback start"),exports.nbLogger("User.register#response = "+e),o._setUserInfo(e),o}).catch(function(e){return exports.nbLogger("User.register#error callback start"),exports.nbLogger("User.register#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.register#end"),exports._promisify(s,e)},sg.login=function(e,t){return null},sg._login=function(t,e,r){if(exports.nbLogger("User.login#start"),null==e||null==e.email&&null==e.username&&null==e.token)throw new Error("User.login: No username nor email nor token");if(null==e.password&&null==e.token)throw new Error("User.login: No password nor token");var o;t.isOffline()?o=new _SdeRequest("NebulaUser","login"):(exports.nbLogger("User.login#REST API Request path = /login"),(o=new HttpRequest(t,"/login")).setSessionToken(null),o.setMethod("POST"),o.setContentType("application/json")),o.setData(e);var s=new t.User;s.email=e.email,s.username=e.username;var n=o.execute().then(function(e){return exports.nbLogger("User.login#success callback start"),exports.nbLogger("User.login#response = "+e),s._setUserInfo(e),t.setCurrentUser(s),s}).catch(function(e){return exports.nbLogger("User.login#error callback start"),exports.nbLogger("User.login#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.login#end"),exports._promisify(n,r)},sg.logout=function(e){return null},sg._logout=function(t,e){var r;exports.nbLogger("User.logout#start"),t.isOffline()?r=new _SdeRequest("NebulaUser","logout"):(exports.nbLogger("User.logout#REST API Request path = /login"),(r=new HttpRequest(t,"/login")).setMethod("DELETE"),r.setContentType("application/json"));var o=r.execute().then(function(e){exports.nbLogger("User.logout#success callback start"),exports.nbLogger("User.logout#response = "+e),t.removeCurrentUser()}).catch(function(e){return exports.nbLogger("User.logout#error callback start"),exports.nbLogger("User.logout#error = "+exports._errorText(e)),t.removeCurrentUser(),Promise.reject(e)});return exports.nbLogger("User.logout#end"),exports._promisify(o,e)},sg.current=function(e){return null},sg._current=function(e,t){var r=null,o=e.getCurrentUser();return null!==o&&(r=new e.User)._setUserInfo(JSON.stringify(o)),t&&t.success&&t.success(r),r},sg.saveCurrent=function(e){},sg._saveCurrent=function(e,t){if(e.isOffline())throw new Error("Not supported in offline mode");if(null===t)e.removeCurrentUser();else{var r=e.getCurrentUser()||{};for(var o in t)t.hasOwnProperty(o)&&(r[o]=t[o]);var s=new e.User;s._setUserInfo(JSON.stringify(r)),e.setCurrentUser(s)}},sg.queryCurrent=function(e){return null},sg._queryCurrent=function(r,e){var t;if(exports.nbLogger("User.queryCurrent#start"),r.isOffline()){if(null===r.getCurrentUser())return exports._promisify(Promise.resolve(null),e);t=new _SdeRequest("NebulaUser","current")}else{var o="/users/current";exports.nbLogger("User.queryCurrent#REST API Request path = "+o),(t=new HttpRequest(r,o)).setMethod("GET"),t.setContentType("application/json")}var s=t.execute().then(function(e){exports.nbLogger("User.queryCurrent#success callback start"),exports.nbLogger("User.queryCurrent#response = "+e);var t=new r.User;return t._setUserInfo(e),t}).catch(function(e){return exports.nbLogger("User.queryCurrent#error callback start"),exports.nbLogger("User.queryCurrent#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.queryCurrent#end"),exports._promisify(s,e)},sg.query=function(e,t){return null},sg._query=function(i,u,e){var t;if(exports.nbLogger("User.query#start"),i.isOffline())t=new _SdeRequest("NebulaUser","query"),null!==u&&t.setData(u);else{var r="/users",o={};u&&(u._id?r="/users/"+encodeURIComponent(u._id):u.email?o.email=u.email:u.username&&(o.username=u.username),null!=u.skip&&(o.skip=u.skip),null!=u.limit&&(o.limit=u.limit)),exports.nbLogger("User.query#REST API Request path = "+r),(t=new HttpRequest(i,r)).setMethod("GET"),t.setQueryParams(o),t.setContentType("application/json")}var s=t.execute().then(function(e){exports.nbLogger("User.query#success callback start"),exports.nbLogger("User.query#response = "+e);var t=JSON.parse(e),r=[],o=[],s=0;for(void 0===t.results?r.push(t):r=t.results;s<r.length;){var n=new i.User;n._setUserInfo(JSON.stringify(r[s])),o.push(n),s++}return null!=u&&u.countQuery?{users:o,count:t.count}:o}).catch(function(e){return exports.nbLogger("User.query#error callback start"),exports.nbLogger("User.query#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.query#end"),exports._promisify(s,e)},sg.update=function(e,t){return null},sg._update=function(e,t,r){if(!(t instanceof sg))throw new Error("User.update: not User instance");if(t._service!==e)throw new Error("Service does not match");return t._update(r)},sg.prototype._update=function(e){var t,r,o,s=this;if(exports.nbLogger("User.update#start"),null===this._id)return exports.nbLogger("User.update: no user id"),o=exports._createError(400,"Bad Request (local)","no user id."),exports._promisify(Promise.reject(o),e);var n={};this._service.isOffline()?(r=new _SdeRequest("NebulaUser","update"),n._id=this._id):(t="/users/"+this._id,exports.nbLogger("User.update#REST API Request path = "+t),(r=new HttpRequest(this._service,t)).setMethod("PUT"),r.setContentType("application/json"),delete n._id),null!==this.email&&(n.email=this.email),null!==this.username&&(n.username=this.username),null!==this.password&&(n.password=this.password),null!==this.options&&(n.options=this.options),r.setData(n);var i=r.execute().then(function(e){return exports.nbLogger("User.update#success callback start"),exports.nbLogger("User.update#response = "+e),s._setUserInfo(e),s}).catch(function(e){return exports.nbLogger("User.update#error callback start"),exports.nbLogger("User.update#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.update#end"),exports._promisify(i,e)},sg.remove=function(e,t){return null},sg._remove=function(e,t,r){if(!(t instanceof sg))throw new Error("User.remove: not User instance");if(t._service!==e)throw new Error("User.remove: service does not match");return t._remove(r)},sg.prototype._remove=function(e){var t,r=this;if(exports.nbLogger("User.remove#start"),null===this._id){exports.nbLogger("User.remove: no user id.");var o=exports._createError(400,"Bad argument (local)","no user id.");return exports._promisify(Promise.reject(o),e)}if(this._service.isOffline())(t=new _SdeRequest("NebulaUser","delete")).setData({_id:this._id});else{var s="/users/"+this._id;exports.nbLogger("User.remove#REST API Request path = "+s),(t=new HttpRequest(this._service,s)).setMethod("DELETE")}var n=t.execute().then(function(e){exports.nbLogger("User.remove#success callback start"),exports.nbLogger("User.remove#response = "+e);var t=r._service.getCurrentUser();null!==t&&r._id===t._id&&(exports.nbLogger("User.remove#delete user is current user"),r._service.removeCurrentUser())}).catch(function(e){return exports.nbLogger("User.remove#error callback start"),exports.nbLogger("User.remove#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.remove#end"),exports._promisify(n,e)},sg.resetPassword=function(e,t){return null},sg._resetPassword=function(e,t,r){if(exports.nbLogger("User.resetPassword#start"),null==t||null==t.email&&null==t.username)throw new Error("User.resetPassword: bad arguments");var o,s;if(e.isOffline())o=new _SdeRequest("NebulaUser","resetPassword");else{var n="/request_password_reset";exports.nbLogger("User.resetPassword#REST API Request path = "+n),(o=new HttpRequest(e,n)).setSessionToken(null),o.setMethod("POST"),o.setContentType("application/json")}void 0!==t.email&&void 0!==t.username?s={email:t.email,username:t.username}:void 0!==t.email&&void 0===t.username?s={email:t.email}:void 0===t.email&&void 0!==t.username&&(s={username:t.username}),o.setData(s);var i=o.execute().then(function(e){exports.nbLogger("User.resetPassword#success callback start"),exports.nbLogger("User.resetPassword#response = "+e)}).catch(function(e){return exports.nbLogger("User.resetPassword#error callback start"),exports.nbLogger("User.resetPassword#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.delete#end"),exports._promisify(i,r)},sg.getAccountLinks=function(e,t){return null},sg._getAccountLinks=function(e,t,r){if(!(t instanceof sg))throw new Error("User.getAccountLinks: not User instance");if(t._service!==e)throw new Error("User.getAccountLinks: Service does not match");return t._getAccountLinks(r)},sg.prototype._getAccountLinks=function(e){if(exports.nbLogger("User.getAccountLinks#start"),this._service.isOffline())throw new Error("User.getAccountLinks: offline mode is not supported");if(null===this._id)throw new Error("User.getAccountLinks: no user id");var t="/users/"+this._id+"/links";exports.nbLogger("User.getAccountLinks#REST API Request path = "+t);var r=new HttpRequest(this._service,t);r.setMethod("GET");var o=r.execute().then(function(e){exports.nbLogger("User.getAccountLinks#response = "+e);var t=JSON.parse(e).results,r=[];if(null!=t)for(var o=0,s=t;o<s.length;o++){var n=s[o],i=new AccountLink;i._setAccountLink(n),r.push(i)}return r}).catch(function(e){return exports.nbLogger("User.getAccountLinks#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.getAccountLinks#end"),exports._promisify(o,e)},sg.deleteAccountLink=function(e,t,r){return null},sg._deleteAccountLink=function(e,t,r,o){if(!(t instanceof sg))throw new Error("User.deleteAccountLink: not User instance");if(t._service!==e)throw new Error("User.deleteAccountLink: Service does not match");if(null==r)throw new Error("User.deleteAccountLink: no linkedUserId");return t._deleteAccountLink(r,o)},sg.prototype._deleteAccountLink=function(e,t){if(exports.nbLogger("User.deleteAccountLink#start"),this._service.isOffline())throw new Error("User.deleteAccountLink: offline mode is not supported");if(null===this._id)throw new Error("User.deleteAccountLink: no user id");if(null!==this.primaryLinkedUserId&&this.primaryLinkedUserId===e)throw new Error("User.deleteAccountLink: linkedUserId is primaryLinkedUserId");var r="/users/"+this._id+"/links/"+e;exports.nbLogger("User.deleteAccountLink#REST API Request path = "+r);var o=new HttpRequest(this._service,r);o.setMethod("DELETE");var s=o.execute().then(function(e){exports.nbLogger("User.deleteAccountLink#response = "+e)}).catch(function(e){return exports.nbLogger("User.deleteAccountLink#error = "+exports._errorText(e)),Promise.reject(e)});return exports.nbLogger("User.deleteAccountLink#end"),exports._promisify(s,t)},sg);function sg(e){void 0===e&&(e=exports.Nebula),this._service=e,this.__id=null,this._username=null,this._email=null,this._password=null,this._options=null,this._groups=null,this._createdAt=null,this._updatedAt=null,this._lastLoginAt=null,this._etag=null,this._sessionToken=null,this._expire=null,this._clientCertUser=null,this._federated=!1,this._primaryLinkedUserId=null}exports.User=User,exports.declareUser=function(o){var e,s;function t(){var e=s.call(this,o)||this;return exports.nbLogger("User.constructor"),e}o.User=(__extends(t,s=User),t.login=function(e,t){return s._login.call(this,o,e,t)},t.logout=function(e){return s._logout.call(this,o,e)},t.current=function(e){return s._current.call(this,o,e)},t.saveCurrent=function(e){s._saveCurrent.call(this,o,e)},t.queryCurrent=function(e){return s._queryCurrent.call(this,o,e)},t.query=function(e,t){return s._query.call(this,o,e,t)},t.update=function(e,t){return s._update.call(this,o,e,t)},t.remove=function(e,t){return s._remove.call(this,o,e,t)},t.resetPassword=function(e,t){return s._resetPassword.call(this,o,e,t)},t.getAccountLinks=function(e,t){return s._getAccountLinks.call(this,o,e,t)},t.deleteAccountLink=function(e,t,r){return s._deleteAccountLink.call(this,o,e,t,r)},(e=t).delete=e.remove,e)};var Group=(Object.defineProperty(Mj.prototype,"_id",{