"use strict";Object.defineProperty(exports,"__esModule",{value:!0});varsdkLib_1=require("./sdkLib");exports.APP_TYPE=sdkLib_1.APP_TYPE,exports.LogLevel=sdkLib_1.LogLevel,exports.isFunction=sdkLib_1.isFunction,exports.compareVersion=sdkLib_1.compareVersion,exports.ENV_ENUM=sdkLib_1.ENV_ENUM;varSdk=function(){functione(e,o){vari=this;this.configJsApiList=[],this.hadConfig=!1,this.p={},this.config$=newPromise(function(e,o){i.p.reject=o,i.p.resolve=e}),this.logQueue=[],this.devConfig={debug:!1},this.platformConfigMap={},this.invokeAPIConfigMapByMethod={},this.isBridgeDrity=!0,this.getExportSdk=function(){returni.exportSdk},this.setAPI=function(e,o){i.invokeAPIConfigMapByMethod[e]=o},this.setPlatform=function(e){i.isBridgeDrity=!0,i.platformConfigMap[e.platform]=e,e.platform===i.env.platform&&e.bridgeInit().catch(function(e){i.customLog(sdkLib_1.LogLevel.WARNING,["auto bridgeInit error",e||""])})},this.getPlatformConfigMap=function(){returni.platformConfigMap},this.deleteApiConfig=function(e,o){varn=i.invokeAPIConfigMapByMethod[e];n&&deleten[o]},this.invokeAPI=function(e,o,n){void0===o&&(o={}),void0===n&&(n=!0),i.customLog(sdkLib_1.LogLevel.INFO,['==> "'+e+'" params: ',o]);vart=+newDate,r=t+"_"+Math.floor(1e3*Math.random());returni.devConfig.onBeforeInvokeAPI&&i.devConfig.onBeforeInvokeAPI({invokeId:r,method:e,params:o,startTime:t}),!1===i.devConfig.isAuthApi&&(n=!1),i.bridgeInitFn().then(function(s){vara=i.invokeAPIConfigMapByMethod[e],d=!0===i.devConfig.isDisableDeal||i.devConfig.disbaleDealApiWhiteList&&-1!==i.devConfig.disbaleDealApiWhiteList.indexOf(e);if(a||!n){varf;if(a&&(f=a[i.env.platform]),f||!n){varc={};c=!d&&f&&f.paramsDeal&&sdkLib_1.isFunction(f.paramsDeal)?f.paramsDeal(o):Object.assign({},o);varu=function(e){return!d&&f&&f.resultDeal&&sdkLib_1.isFunction(f.resultDeal)?f.resultDeal(e):e};if(sdkLib_1.isFunction(c.onSuccess)){varg=c.onSuccess;c.onSuccess=function(e){g(u(e))}}returns(e,c).then(u,function(o){vart=i.hadConfig&&void0===i.isReady&&-1!==i.configJsApiList.indexOf(e),r="object"==typeofo&&"string"==typeofo.errorCode&&o.errorCode===sdkLib_1.ERROR_CODE.no_permission,a="object"==typeofo&&"string"==typeofo.errorCode&&o.errorCode===sdkLib_1.ERROR_CODE.cancel,d=f&&f.vs&&i.env.version&&sdkLib_1.compareVersion(i.env.version,f.vs),g=(i.env.platform===sdkLib_1.ENV_ENUM.ios||i.env.platform===sdkLib_1.ENV_ENUM.android)&&t&&r,v=i.env.platform===sdkLib_1.ENV_ENUM.pc&&t&&(d&&!a&&n||r);returng||v?i.config$.then(function(){returns(e,c).then(u)}):Promise.reject(o)}).then(function(n){returni.devConfig.onAfterInvokeAPI&&i.devConfig.onAfterInvokeAPI({invokeId:r,method:e,params:o,payload:n,isSuccess:!0,startTime:t,duration:+newDate-t}),i.customLog(sdkLib_1.LogLevel.INFO,['<== "'+e+'" success result: ',n]),n},function(n){returni.devConfig.onAfterInvokeAPI&&i.devConfig.onAfterInvokeAPI({invokeId:r,method:e,params:o,payload:n,startTime:t,duration:+newDate-t,isSuccess:!1}),i.customLog(sdkLib_1.LogLevel.WARNING,['<== "'+e+'" fail result: ',n]),Promise.reject(n)})}varv='"'+e+'" do not support the current platform ('+i.env.platform+")";returni.customLog(sdkLib_1.LogLevel.ERROR,[v]),Promise.reject({errorCode:sdkLib_1.ERROR_CODE.jsapi_internal_error,errorMessage:v})}varv="This API method is not configured for the platform ("+i.env.platform+")";returni.customLog(sdkLib_1.LogLevel.ERROR,[v]),Promise.reject({errorCode:sdkLib_1.ERROR_CODE.jsapi_internal_error,errorMessage:v})})},this.customLog=function(e,o){varn={level:e,text:o,time:newDate};!0===i.devConfig.debug?i.customLogInstance(n):i.logQueue.push(n)},this.clearLogQueue=function(){i.logQueue.forEach(function(e){i.customLogInstance(e)}),i.logQueue=[]},this.customLogInstance=o,this.env=e,this.bridgeInitFn=function(){if(i.bridgeInitFnPromise&&!i.isBridgeDrity)returni.bridgeInitFnPromise;i.isBridgeDrity=!1;varo=i.platformConfigMap[e.platform];if(o)i.bridgeInitFnPromise=o.bridgeInit().catch(function(e){returni.customLog(sdkLib_1.LogLevel.ERROR,["\b\b\b\b\bJsBridge initialization fails, jsapi will not work"]),Promise.reject(e)});else{varn="Do not support the current environment:"+e.platform;i.customLog(sdkLib_1.LogLevel.WARNING,[n]),i.bridgeInitFnPromise=Promise.reject(newError(n))}returni.bridgeInitFnPromise};varn=function(e){void0===e&&(e={}),i.devConfig=Object.assign(i.devConfig,e),!0===e.debug&&i.clearLogQueue(),e.extraPlatform&&i.setPlatform(e.extraPlatform)};this.exportSdk={config:function(o){void0===o&&(o={});vart=!0;Object.keys(o).forEach(function(e){-1===["debug","usePromise"].indexOf(e)&&(t=!1)}),t?(i.customLog(sdkLib_1.LogLevel.WARNING,["This is a deprecated feature, recommend use dd.devConfig"]),n(o)):i.hadConfig?i.customLog(sdkLib_1.LogLevel.WARNING,["Config has been executed"]):(o.jsApiList&&(i.configJsApiList=o.jsApiList),i.hadConfig=!0,i.bridgeInitFn().then(function(n){vart=i.platformConfigMap[e.platform],r=o;t.authParamsDeal&&(r=t.authParamsDeal(r)),n(t.authMethod,r).then(function(e){i.isReady=!0,i.p.resolve(e)}).catch(function(e){i.isReady=!1,i.p.reject(e)})},function(){i.customLog(sdkLib_1.LogLevel.ERROR,['\b\b\b\b\bJsBridge initialization failed and "dd.config" failed to call'])}))},devConfig:n,ready:function(e){!1===i.hadConfig?(i.customLog(sdkLib_1.LogLevel.WARNING,["You don 't use a dd.config, so you don't need to wrap dd.ready, recommend remove dd.ready"]),i.bridgeInitFn().then(function(){e()})):i.config$.then(function(o){e()})},error:function(e){i.config$.catch(function(o){e(o)})},on:function(o,n){i.bridgeInitFn().then(function(){i.platformConfigMap[e.platform].event.on(o,n)})},off:function(o,n){i.bridgeInitFn().then(function(){i.platformConfigMap[e.platform].event.off(o,n)})},env:e,checkJsApi:function(o){void0===o&&(o={});varn={};returno.jsApiList&&o.jsApiList.forEach(function(o){vart=i.invokeAPIConfigMapByMethod[o];if(t){varr=t[e.platform];r&&r.vs&&e.version&&sdkLib_1.compareVersion(e.version,r.vs)&&(n[o]=!0)}n[o]||(n[o]=!1)}),Promise.resolve(n)},_invoke:function(e,o){returnvoid0===o&&(o={}),i.invokeAPI(e,o,!1)}}}returne}();exports.Sdk=Sdk;