@singcl/ad-execute-manager 1.0.11 → 1.0.13
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/dist/ad/ExbAnalyticsJS.d.ts +3 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/ad/AdUnlock/RewardAdNovelUnlock.d.ts +0 -114
- package/dist/ad/AdUnlock/UnlockSettings.d.ts +0 -42
- package/dist/ad/CommonSettings.d.ts +0 -179
- package/dist/ad/RewardAdLaunch.d.ts +0 -91
- package/dist/ad/RewardAdLaunchAlone.d.ts +0 -63
- package/dist/ad/RewardAdNovel.d.ts +0 -384
- package/dist/ad/RewardAdReadingLoad.d.ts +0 -83
- package/dist/ad/RewardAdReadingUnload.d.ts +0 -44
|
@@ -98,9 +98,10 @@ declare class ExbAnalyticsJS {
|
|
|
98
98
|
/**
|
|
99
99
|
* 识别用户身份
|
|
100
100
|
* 用户登录后,关联用户信息
|
|
101
|
-
* @
|
|
101
|
+
* @param {ICommonUserInfo} userInfo - 用户信息
|
|
102
|
+
* @returns {ExbAnalyticsJS} 返回实例本身,支持链式调用
|
|
102
103
|
*/
|
|
103
|
-
identify():
|
|
104
|
+
identify(userInfo: ICommonUserInfo): ExbAnalyticsJS;
|
|
104
105
|
/**
|
|
105
106
|
* 合并用户身份
|
|
106
107
|
* 匿名用户转为登录用户
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,r)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{default:()=>src,Storage:()=>ad_Storage,RewardAdGlobalRecorder:()=>ad_RewardAdGlobalRecorder,CountRecorder:()=>CountRecorder,RewardAdSceneTriggerManager:()=>ad_RewardAdSceneTriggerManager,RewardAdFather:()=>ad_RewardAdFather,Logger:()=>Logger,ExbAnalyticsJS:()=>ad_ExbAnalyticsJS,AdExecuteManager:()=>ad_AdExecuteManager,SerializableError:()=>SerializableError});const compose=e=>e.map(e=>(r,t)=>async a=>await e(Object.assign({},r,a),t)).reduce((e,r)=>(t,a)=>e(t,r(t,a))),ad_compose=compose;class Logger{constructor(e={}){const{prefix:r="Logger",level:t="info",enabled:a=!0}=e;this.prefix=r,this.enabled=a,this.levels={error:0,warn:1,info:2,debug:3},this.currentLevel=this.levels[t]||this.levels.info}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}setLevel(e){Object.prototype.hasOwnProperty.call(this.levels,e)&&(this.currentLevel=this.levels[e])}formatMessage(e,r){let t=new Date,a=`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}`;return`[${a}] [${e.toUpperCase()}] [${this.prefix}] ${r}`}_log(e,r,...t){if(!this.enabled)return;let a=this.levels[e];if(void 0!==a&&this.currentLevel>=a){let a=this.formatMessage(e,r);switch(e){case"error":console.error(a,...t);break;case"warn":console.warn(a,...t);break;case"info":console.info(a,...t);break;case"debug":console.debug(a,...t);break;default:console.log(a,...t)}}}error(e,...r){this._log("error",e,...r)}warn(e,...r){this._log("warn",e,...r)}info(e,...r){this._log("info",e,...r)}debug(e,...r){this._log("debug",e,...r)}log(e,r,...t){this._log(e,r,...t)}}class AdExecuteManager{static _instance=null;_taskStack=[];_currentBatchTasks=[];_isRunning=!1;_currentTask=null;constructor(e){if(this.logger=new Logger({prefix:"AdExecuteManager",enabled:!!e?.log}),AdExecuteManager._instance)return AdExecuteManager._instance;AdExecuteManager._instance=this}static getInstance(e){return AdExecuteManager._instance||(AdExecuteManager._instance=new AdExecuteManager(e)),AdExecuteManager._instance}addTask(e,r){return e&&"function"==typeof e.ad?new Promise((t,a)=>{let s={adInstance:e,options:r.options??{},callbackCollection:r.collection??{},resolve:t,reject:a,id:`ad_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,_isResolved:!1,_isRejected:!1};this._taskStack.push(s),this._isRunning||this._compose()}):(this.logger.error("无效的广告实例 请正确实现.ad方法"),Promise.reject(Error("无效的广告实例")))}_compose(){if(0===this._taskStack.length){this._isRunning=!1,this._currentTask=null;return}this._isRunning=!0;let e=[...this._taskStack];this._taskStack=[],this._currentBatchTasks=e;let r=e.map(e=>async(r,t)=>{let{adInstance:a,options:s,callbackCollection:n,resolve:i,id:o}=e;if(e._isResolved||e._isRejected)return void await t(r);this._currentTask=e;try{let c=async e=>{await t(Object.assign({},r,e))},l=await a.initialize(s).ad({options:s,collection:n},c),d=Object.assign({id:o},l);this.logger.info(`任务执行成功,成功信息:${JSON.stringify(d)}`),e._isResolved=!0,i(d)}catch(n){let s=Object.assign({id:o,apiError:n});this.logger.error(`任务执行失败, 继续下一个任务,错误信息:${JSON.stringify(s)}`),e._isRejected=!0;try{a?.clear()}catch(e){this.logger.error("clear error: ",JSON.stringify(Object.assign({id:o,apiError:e})))}i(s),await t(r)}}),t={roundTasks:r.length};compose(r)(t,async e=>{this.logger.info("本轮活动队列已经清空",e),this._taskStack.length>0?Promise.resolve().then(()=>{this._compose()}):(this._isRunning=!1,this._currentTask=null,this._currentBatchTasks=[])})()}clearTasks(){if(this._currentTask){if(this._currentTask._isResolved||this._currentTask._isRejected){this._currentTask=null;return}try{this._currentTask.callbackCollection&&this._currentTask.callbackCollection.onCancel&&this._currentTask.callbackCollection.onCancel(),this._currentTask._isResolved=!0,this._currentTask.resolve()}catch(e){this.logger.error("clear current task error: ",e)}this._currentTask=null}this._currentBatchTasks.length>0&&(this._currentBatchTasks.forEach(e=>{if(e!==this._currentTask&&!e._isResolved&&!e._isRejected)try{e.callbackCollection&&e.callbackCollection.onCancel&&e.callbackCollection.onCancel(),e._isResolved=!0,e.resolve()}catch(e){this.logger.error("clear current batch task error: ",e)}}),this._currentBatchTasks=[]),this._taskStack.forEach(e=>{if(!e._isResolved&&!e._isRejected&&(e._isResolved=!0,e.resolve(),e.callbackCollection&&e.callbackCollection.onCancel))try{e.callbackCollection.onCancel()}catch(e){this.logger.error("clear task error: ",e)}}),this._taskStack=[],this._isRunning=!1}getTaskCount(){return this._taskStack.filter(e=>!e._isResolved&&!e._isRejected).length+this._currentBatchTasks.filter(e=>e!==this._currentTask&&!e._isResolved&&!e._isRejected).length+(!this._currentTask||this._currentTask._isResolved||this._currentTask._isRejected?0:1)}isRunning(){return this._isRunning}getCurrentTaskId(){return this._currentTask?.id||null}}const ad_AdExecuteManager=AdExecuteManager;class SerializableError extends Error{constructor(e){super(e),this.name=this.constructor.name,this.stack=Error(e).stack,Object.defineProperty(this,"message",{enumerable:!0}),Object.defineProperty(this,"name",{enumerable:!0}),Object.defineProperty(this,"stack",{enumerable:!0})}toJSON(){return{name:this.name,message:this.message,stack:this.stack}}}class RewardAdFather{static args=null;_initSign="";_preserveOnEnd=!1;_rewardAd=null;_ttErrorMsgs=["The adUnitId is closed","The adUnitId is prohibit","The adUnitId is invalid","The adUnitId is empty","feature is not supported in app"];_ttErrorCodes=[139902,123302];constructor(e){this._initSign=e?.sign??"",this._adConfig=e?.adConfig??{},this._preserveOnEnd=e?.preserveOnEnd??!1}initialize(e,r){if(this._rewardAd)return console.warn("RewardAdFather: rewardAd has been initialized"),r?.(this._rewardAd),this;let t=Object.assign({},RewardAdFather.args,this._adConfig,e);if(!t.adUnitId)throw console.error("[RewardAdFather] reward args adUnitId is required",t),new SerializableError("[RewardAdFather] reward args adUnitId is required");return this._rewardAd=tt.createRewardedVideoAd(t),r?.(this._rewardAd),this}initialized(){return!!this._rewardAd}async ad(e,r=null){throw Error("子类必须实现ad方法")}async addExecuteManager(e){let r=Object.assign({},this._adConfig,e?.options??{});return RewardAdFather.executeWithManager(this,Object.assign({},e,{options:r}))}destroy(){this._rewardAd&&!this._preserveOnEnd&&(this._rewardAd.destroy(),this._rewardAd=null)}clear(){throw Error("子类必须实现clear方法")}onClose(e){this._rewardAd&&this._rewardAd.onClose(e)}offClose(e){this._rewardAd&&this._rewardAd.offClose(e)}show(){return this._rewardAd?this._rewardAd.show():Promise.reject({errMsg:"rewardAd is null"})}load(){if(this._rewardAd)return this._rewardAd.load()}onError(e){this._rewardAd&&this._rewardAd.onError(e)}offError(e){this._rewardAd&&this._rewardAd.offError(e)}onLoad(e){this._rewardAd&&this._rewardAd.onLoad(e)}offLoad(e){this._rewardAd&&this._rewardAd.offLoad(e)}placeholder(){return null}static buildArgs(e){e?.adUnitId||console.error("[RewardAdFather] RewardParams.adUnitId is required"),RewardAdFather.args=e}static async executeWithManager(e,r){return e&&e instanceof RewardAdFather?ad_AdExecuteManager.getInstance({log:r?.options?.log??!0}).addTask(e,r):(console.error("RewardAdFather: executeWithManager - 无效的广告实例"),Promise.reject(Error("无效的广告实例")))}}const ad_RewardAdFather=RewardAdFather;class Storage{constructor(e={}){this.config={prefix:"storage_",expire:null,...e},this.logger=new Logger({prefix:"Storage"})}getTodayEndTimestamp(){let e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59,59,999).getTime()}_setItem(e,r,t){let a=void 0!==t?t:this.config.expire;"today"===a&&(a=this.getTodayEndTimestamp()-Date.now());let s={value:r,expire:a,timestamp:Date.now()};try{tt.setStorageSync(e,JSON.stringify(s))}catch(e){console.error("Storage setItem error:",e)}}_getItem(e){try{let r=tt.getStorageSync(e);if(!r)return null;let t=JSON.parse(r);if(t.expire&&Date.now()-t.timestamp>t.expire)return this.removeItem(e),null;return t.value}catch(e){return console.error("Storage getItem error:",e),null}}setItem(e,r,t){let a=this.config.prefix+e;return this._setItem(a,r,t)}getItem(e){let r=this.config.prefix+e;return this._getItem(r)}getUserItem(e){let r=this.config.userId??"null";if("null"===r)return this.logger.error("userId is required"),null;let t=`${this.config.prefix}_${r}_${e}`;return this._getItem(t)}setUserItem(e,r,t){let a=this.config.userId??"null";if("null"===a)return void this.logger.error("userId is required");let s=`${this.config.prefix}_${a}_${e}`;return this._setItem(s,r,t)}removeItem(e){try{tt.removeStorageSync(e)}catch(e){console.error("Storage removeItem error:",e)}}clear(){try{tt.clearStorageSync()}catch(e){console.error("Storage clear error:",e)}}keys(){try{let e=[];return(tt.getStorageInfoSync().keys??[]).forEach(r=>{if(r.startsWith(this.config.prefix)){let t=JSON.parse(tt.getStorageSync(r));(!t.expire||Date.now()-t.timestamp<=t.expire)&&e.push(r.replace(this.config.prefix,""))}}),e}catch(e){return console.error("Storage keys error:",e),[]}}static new(e){return new Storage(e)}}const ad_Storage=Storage;class CountRecorder{_total=0;_local_sign="";_expire="today";constructor(e){if(this.storage=ad_Storage.new({userId:e.userId}),!e.local_sign)throw Error("local_sign is required");this._local_sign=e.local_sign,this._total=e.total??0,this._expire=e.expire??"today",this._init()}_init(){this._initLocalTimes()}_adTimes(){return this._total}_safeLocalValue(e){return"object"!=typeof e||null===e?{}:e}_initLocalTimes(){let e=this._adTimes(),r=this.storage.getUserItem(this._local_sign),t=this._safeLocalValue(r);t&&t?.total==e||this.storage.setUserItem(this._local_sign,{total:e,today:t?.today??0},this._expire)}updateToday(){let e=this._adTimes(),r=this.storage.getUserItem(this._local_sign),t=this._safeLocalValue(r),a=t?.today??0;this.storage.setUserItem(this._local_sign,{total:e,today:a+1},this._expire)}remain(){let e=this.storage.getUserItem(this._local_sign),r=this._safeLocalValue(e),t=r?.today??0;return Number(r?.total??0)-Number(t)}static new(e){return new CountRecorder(e)}}const SCENT_TYPE_OBJ={0:"launch_ad",1:"novel_plugin_strong_ad",2:"novel_plugin_unlock_btn",3:"novel_plugin_free_benefit_btn",4:"home_free_welfare_btn",5:"home_free_popup",6:"other",7:"home_back_show",8:"novel_plugin_free_time_btn",9:"launch_ad_alone"},SCENT_TEXT_OBJ=Object.entries(SCENT_TYPE_OBJ).reduce((e,[r,t])=>(e[t]=Number(r),e),{});class RewardAdGlobalRecorder{static instance=null;_initSign="";_halfway=[{scene:SCENT_TEXT_OBJ.other,count:0}];_finished=[{scene:SCENT_TEXT_OBJ.other,count:0}];constructor(e){if(RewardAdGlobalRecorder.instance)return RewardAdGlobalRecorder.instance;this._initSign=e?.sign??"",RewardAdGlobalRecorder.instance=this}initialize(e){}_halfwayUpdate(e){let r=this._halfway.find(r=>r.scene===e.scene);r?r.count+=1:this._halfway.push({scene:e.scene,count:1})}_halfwayGet(e){let r=e?.scenes??[];return(r.length>0?this._halfway.filter(e=>r.includes(e.scene)):this._halfway).reduce((e,r)=>e+r.count,0)}_halfwayReset(){this._halfway=[{scene:SCENT_TEXT_OBJ.other,count:0}]}_finishedUpdate(e){let r=this._finished.find(r=>r.scene===e.scene);r?r.count+=1:this._finished.push({scene:e.scene,count:1})}_finishedGet(e){let r=e?.scenes??[];return(r.length>0?this._finished.filter(e=>r.includes(e.scene)):this._finished).reduce((e,r)=>e+r.count,0)}_finishedReset(){this._finished=[{scene:SCENT_TEXT_OBJ.other,count:0}]}record(e){switch(e.type){case"halfway":this._halfwayUpdate(e);break;case"finished":this._finishedUpdate(e)}}rest(e){switch(e){case"halfway":this._halfwayReset();break;case"finished":this._finishedReset()}}get(e){switch(e.type){case"halfway":return this._halfwayGet(e);case"finished":return this._finishedGet(e);default:return null}}placeholder(){return null}static build(e){return RewardAdGlobalRecorder.instance||(RewardAdGlobalRecorder.instance=new RewardAdGlobalRecorder(e)),RewardAdGlobalRecorder.instance}static getInstance(){if(!RewardAdGlobalRecorder.instance)throw Error("RewardAdGlobalRecorder instance is not init");return RewardAdGlobalRecorder.instance}}const ad_RewardAdGlobalRecorder=RewardAdGlobalRecorder;class RewardAdSceneTriggerManager{static instance=null;_initSign="";_currScene=null;constructor(e){if(RewardAdSceneTriggerManager.instance)return RewardAdSceneTriggerManager.instance;this._initSign=e?.sign??"",RewardAdSceneTriggerManager.instance=this}initialize(e){}addScene(e){return console.log("----------------------AD触发场景:--------------------",e),this._currScene=e,this}addSceneType(e=1){return this.addScene(SCENT_TYPE_OBJ[e]),this}getCurrentScene(){return this._currScene}placeholder(){return null}static build(e){return RewardAdSceneTriggerManager.instance||(RewardAdSceneTriggerManager.instance=new RewardAdSceneTriggerManager(e)),RewardAdSceneTriggerManager.instance}static getInstance(){if(!RewardAdSceneTriggerManager.instance)throw Error("RewardAdSceneTriggerManager instance is not init");return RewardAdSceneTriggerManager.instance}}const ad_RewardAdSceneTriggerManager=RewardAdSceneTriggerManager;class ExbAnalyticsJS{static instance=null;_initSign="";_needReport=!1;constructor(e){if(ExbAnalyticsJS.instance)return ExbAnalyticsJS.instance;this._initSign=e?.sign??"",this._needReport=e?.needReport??!1,this._userConfig=e?.userConfig??null,ExbAnalyticsJS.instance=this}initialize(e){return this._needReport?e:void console.warn("ExbAnalyticsJS needReport is false, do not report")}track(e,r,t){if(!this._needReport)return;if(!e)throw Error("eventName is required");let a=Object.assign({},this._getCommonUserInfo(),r),s=t?.sign??"track";console.log(`-------------${s}-----------------------:`,e,a),tt.reportAnalytics(e,a)}_getCommonUserInfo(){let{user_id:e,user_type:r,user_group:t}=this._userConfig??{};return{user_id:e,user_type:r,user_group:t}}identify(){return null}alias(){return null}pages(){return null}page(e,r){this.track(e,r,{sign:"page"})}cpage(e){return this.page("cpage",e)}placeholder(){return null}static build(e){return ExbAnalyticsJS.instance||(ExbAnalyticsJS.instance=new ExbAnalyticsJS(e)),ExbAnalyticsJS.instance}static getInstance(){if(!ExbAnalyticsJS.instance)throw Error("ExbAnalyticsJS instance is not init");return ExbAnalyticsJS.instance}static new(e){return new ExbAnalyticsJS(e)}}const ad_ExbAnalyticsJS=ExbAnalyticsJS,src=ad_AdExecuteManager;for(var __rspack_i in exports.AdExecuteManager=__webpack_exports__.AdExecuteManager,exports.CountRecorder=__webpack_exports__.CountRecorder,exports.ExbAnalyticsJS=__webpack_exports__.ExbAnalyticsJS,exports.Logger=__webpack_exports__.Logger,exports.RewardAdFather=__webpack_exports__.RewardAdFather,exports.RewardAdGlobalRecorder=__webpack_exports__.RewardAdGlobalRecorder,exports.RewardAdSceneTriggerManager=__webpack_exports__.RewardAdSceneTriggerManager,exports.SerializableError=__webpack_exports__.SerializableError,exports.Storage=__webpack_exports__.Storage,exports.default=__webpack_exports__.default,__webpack_exports__)-1===["AdExecuteManager","CountRecorder","ExbAnalyticsJS","Logger","RewardAdFather","RewardAdGlobalRecorder","RewardAdSceneTriggerManager","SerializableError","Storage","default"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,r)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{default:()=>src,Storage:()=>ad_Storage,RewardAdGlobalRecorder:()=>ad_RewardAdGlobalRecorder,CountRecorder:()=>CountRecorder,RewardAdSceneTriggerManager:()=>ad_RewardAdSceneTriggerManager,RewardAdFather:()=>ad_RewardAdFather,Logger:()=>Logger,ExbAnalyticsJS:()=>ad_ExbAnalyticsJS,AdExecuteManager:()=>ad_AdExecuteManager,SerializableError:()=>SerializableError});const compose=e=>e.map(e=>(r,t)=>async a=>await e(Object.assign({},r,a),t)).reduce((e,r)=>(t,a)=>e(t,r(t,a))),ad_compose=compose;class Logger{constructor(e={}){const{prefix:r="Logger",level:t="info",enabled:a=!0}=e;this.prefix=r,this.enabled=a,this.levels={error:0,warn:1,info:2,debug:3},this.currentLevel=this.levels[t]||this.levels.info}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}setLevel(e){Object.prototype.hasOwnProperty.call(this.levels,e)&&(this.currentLevel=this.levels[e])}formatMessage(e,r){let t=new Date,a=`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}`;return`[${a}] [${e.toUpperCase()}] [${this.prefix}] ${r}`}_log(e,r,...t){if(!this.enabled)return;let a=this.levels[e];if(void 0!==a&&this.currentLevel>=a){let a=this.formatMessage(e,r);switch(e){case"error":console.error(a,...t);break;case"warn":console.warn(a,...t);break;case"info":console.info(a,...t);break;case"debug":console.debug(a,...t);break;default:console.log(a,...t)}}}error(e,...r){this._log("error",e,...r)}warn(e,...r){this._log("warn",e,...r)}info(e,...r){this._log("info",e,...r)}debug(e,...r){this._log("debug",e,...r)}log(e,r,...t){this._log(e,r,...t)}}class AdExecuteManager{static _instance=null;_taskStack=[];_currentBatchTasks=[];_isRunning=!1;_currentTask=null;constructor(e){if(this.logger=new Logger({prefix:"AdExecuteManager",enabled:!!e?.log}),AdExecuteManager._instance)return AdExecuteManager._instance;AdExecuteManager._instance=this}static getInstance(e){return AdExecuteManager._instance||(AdExecuteManager._instance=new AdExecuteManager(e)),AdExecuteManager._instance}addTask(e,r){return e&&"function"==typeof e.ad?new Promise((t,a)=>{let s={adInstance:e,options:r.options??{},callbackCollection:r.collection??{},resolve:t,reject:a,id:`ad_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,_isResolved:!1,_isRejected:!1};this._taskStack.push(s),this._isRunning||this._compose()}):(this.logger.error("无效的广告实例 请正确实现.ad方法"),Promise.reject(Error("无效的广告实例")))}_compose(){if(0===this._taskStack.length){this._isRunning=!1,this._currentTask=null;return}this._isRunning=!0;let e=[...this._taskStack];this._taskStack=[],this._currentBatchTasks=e;let r=e.map(e=>async(r,t)=>{let{adInstance:a,options:s,callbackCollection:i,resolve:n,id:o}=e;if(e._isResolved||e._isRejected)return void await t(r);this._currentTask=e;try{let c=async e=>{await t(Object.assign({},r,e))},l=await a.initialize(s).ad({options:s,collection:i},c),d=Object.assign({id:o},l);this.logger.info(`任务执行成功,成功信息:${JSON.stringify(d)}`),e._isResolved=!0,n(d)}catch(i){let s=Object.assign({id:o,apiError:i});this.logger.error(`任务执行失败, 继续下一个任务,错误信息:${JSON.stringify(s)}`),e._isRejected=!0;try{a?.clear()}catch(e){this.logger.error("clear error: ",JSON.stringify(Object.assign({id:o,apiError:e})))}n(s),await t(r)}}),t={roundTasks:r.length};compose(r)(t,async e=>{this.logger.info("本轮活动队列已经清空",e),this._taskStack.length>0?Promise.resolve().then(()=>{this._compose()}):(this._isRunning=!1,this._currentTask=null,this._currentBatchTasks=[])})()}clearTasks(){if(this._currentTask){if(this._currentTask._isResolved||this._currentTask._isRejected){this._currentTask=null;return}try{this._currentTask.callbackCollection&&this._currentTask.callbackCollection.onCancel&&this._currentTask.callbackCollection.onCancel(),this._currentTask._isResolved=!0,this._currentTask.resolve()}catch(e){this.logger.error("clear current task error: ",e)}this._currentTask=null}this._currentBatchTasks.length>0&&(this._currentBatchTasks.forEach(e=>{if(e!==this._currentTask&&!e._isResolved&&!e._isRejected)try{e.callbackCollection&&e.callbackCollection.onCancel&&e.callbackCollection.onCancel(),e._isResolved=!0,e.resolve()}catch(e){this.logger.error("clear current batch task error: ",e)}}),this._currentBatchTasks=[]),this._taskStack.forEach(e=>{if(!e._isResolved&&!e._isRejected&&(e._isResolved=!0,e.resolve(),e.callbackCollection&&e.callbackCollection.onCancel))try{e.callbackCollection.onCancel()}catch(e){this.logger.error("clear task error: ",e)}}),this._taskStack=[],this._isRunning=!1}getTaskCount(){return this._taskStack.filter(e=>!e._isResolved&&!e._isRejected).length+this._currentBatchTasks.filter(e=>e!==this._currentTask&&!e._isResolved&&!e._isRejected).length+(!this._currentTask||this._currentTask._isResolved||this._currentTask._isRejected?0:1)}isRunning(){return this._isRunning}getCurrentTaskId(){return this._currentTask?.id||null}}const ad_AdExecuteManager=AdExecuteManager;class SerializableError extends Error{constructor(e){super(e),this.name=this.constructor.name,this.stack=Error(e).stack,Object.defineProperty(this,"message",{enumerable:!0}),Object.defineProperty(this,"name",{enumerable:!0}),Object.defineProperty(this,"stack",{enumerable:!0})}toJSON(){return{name:this.name,message:this.message,stack:this.stack}}}class RewardAdFather{static args=null;_initSign="";_preserveOnEnd=!1;_rewardAd=null;_ttErrorMsgs=["The adUnitId is closed","The adUnitId is prohibit","The adUnitId is invalid","The adUnitId is empty","feature is not supported in app"];_ttErrorCodes=[139902,123302];constructor(e){this._initSign=e?.sign??"",this._adConfig=e?.adConfig??{},this._preserveOnEnd=e?.preserveOnEnd??!1}initialize(e,r){if(this._rewardAd)return console.warn("RewardAdFather: rewardAd has been initialized"),r?.(this._rewardAd),this;let t=Object.assign({},RewardAdFather.args,this._adConfig,e);if(!t.adUnitId)throw console.error("[RewardAdFather] reward args adUnitId is required",t),new SerializableError("[RewardAdFather] reward args adUnitId is required");return this._rewardAd=tt.createRewardedVideoAd(t),r?.(this._rewardAd),this}initialized(){return!!this._rewardAd}async ad(e,r=null){throw Error("子类必须实现ad方法")}async addExecuteManager(e){let r=Object.assign({},this._adConfig,e?.options??{});return RewardAdFather.executeWithManager(this,Object.assign({},e,{options:r}))}destroy(){this._rewardAd&&!this._preserveOnEnd&&(this._rewardAd.destroy(),this._rewardAd=null)}clear(){throw Error("子类必须实现clear方法")}onClose(e){this._rewardAd&&this._rewardAd.onClose(e)}offClose(e){this._rewardAd&&this._rewardAd.offClose(e)}show(){return this._rewardAd?this._rewardAd.show():Promise.reject({errMsg:"rewardAd is null"})}load(){if(this._rewardAd)return this._rewardAd.load()}onError(e){this._rewardAd&&this._rewardAd.onError(e)}offError(e){this._rewardAd&&this._rewardAd.offError(e)}onLoad(e){this._rewardAd&&this._rewardAd.onLoad(e)}offLoad(e){this._rewardAd&&this._rewardAd.offLoad(e)}placeholder(){return null}static buildArgs(e){e?.adUnitId||console.error("[RewardAdFather] RewardParams.adUnitId is required"),RewardAdFather.args=e}static async executeWithManager(e,r){return e&&e instanceof RewardAdFather?ad_AdExecuteManager.getInstance({log:r?.options?.log??!0}).addTask(e,r):(console.error("RewardAdFather: executeWithManager - 无效的广告实例"),Promise.reject(Error("无效的广告实例")))}}const ad_RewardAdFather=RewardAdFather;class Storage{constructor(e={}){this.config={prefix:"storage_",expire:null,...e},this.logger=new Logger({prefix:"Storage"})}getTodayEndTimestamp(){let e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59,59,999).getTime()}_setItem(e,r,t){let a=void 0!==t?t:this.config.expire;"today"===a&&(a=this.getTodayEndTimestamp()-Date.now());let s={value:r,expire:a,timestamp:Date.now()};try{tt.setStorageSync(e,JSON.stringify(s))}catch(e){console.error("Storage setItem error:",e)}}_getItem(e){try{let r=tt.getStorageSync(e);if(!r)return null;let t=JSON.parse(r);if(t.expire&&Date.now()-t.timestamp>t.expire)return this.removeItem(e),null;return t.value}catch(e){return console.error("Storage getItem error:",e),null}}setItem(e,r,t){let a=this.config.prefix+e;return this._setItem(a,r,t)}getItem(e){let r=this.config.prefix+e;return this._getItem(r)}getUserItem(e){let r=this.config.userId??"null";if("null"===r)return this.logger.error("userId is required"),null;let t=`${this.config.prefix}_${r}_${e}`;return this._getItem(t)}setUserItem(e,r,t){let a=this.config.userId??"null";if("null"===a)return void this.logger.error("userId is required");let s=`${this.config.prefix}_${a}_${e}`;return this._setItem(s,r,t)}removeItem(e){try{tt.removeStorageSync(e)}catch(e){console.error("Storage removeItem error:",e)}}clear(){try{tt.clearStorageSync()}catch(e){console.error("Storage clear error:",e)}}keys(){try{let e=[];return(tt.getStorageInfoSync().keys??[]).forEach(r=>{if(r.startsWith(this.config.prefix)){let t=JSON.parse(tt.getStorageSync(r));(!t.expire||Date.now()-t.timestamp<=t.expire)&&e.push(r.replace(this.config.prefix,""))}}),e}catch(e){return console.error("Storage keys error:",e),[]}}static new(e){return new Storage(e)}}const ad_Storage=Storage;class CountRecorder{_total=0;_local_sign="";_expire="today";constructor(e){if(this.storage=ad_Storage.new({userId:e.userId}),!e.local_sign)throw Error("local_sign is required");this._local_sign=e.local_sign,this._total=e.total??0,this._expire=e.expire??"today",this._init()}_init(){this._initLocalTimes()}_adTimes(){return this._total}_safeLocalValue(e){return"object"!=typeof e||null===e?{}:e}_initLocalTimes(){let e=this._adTimes(),r=this.storage.getUserItem(this._local_sign),t=this._safeLocalValue(r);t&&t?.total==e||this.storage.setUserItem(this._local_sign,{total:e,today:t?.today??0},this._expire)}updateToday(){let e=this._adTimes(),r=this.storage.getUserItem(this._local_sign),t=this._safeLocalValue(r),a=t?.today??0;this.storage.setUserItem(this._local_sign,{total:e,today:a+1},this._expire)}remain(){let e=this.storage.getUserItem(this._local_sign),r=this._safeLocalValue(e),t=r?.today??0;return Number(r?.total??0)-Number(t)}static new(e){return new CountRecorder(e)}}const SCENT_TYPE_OBJ={0:"launch_ad",1:"novel_plugin_strong_ad",2:"novel_plugin_unlock_btn",3:"novel_plugin_free_benefit_btn",4:"home_free_welfare_btn",5:"home_free_popup",6:"other",7:"home_back_show",8:"novel_plugin_free_time_btn",9:"launch_ad_alone"},SCENT_TEXT_OBJ=Object.entries(SCENT_TYPE_OBJ).reduce((e,[r,t])=>(e[t]=Number(r),e),{});class RewardAdGlobalRecorder{static instance=null;_initSign="";_halfway=[{scene:SCENT_TEXT_OBJ.other,count:0}];_finished=[{scene:SCENT_TEXT_OBJ.other,count:0}];constructor(e){if(RewardAdGlobalRecorder.instance)return RewardAdGlobalRecorder.instance;this._initSign=e?.sign??"",RewardAdGlobalRecorder.instance=this}initialize(e){}_halfwayUpdate(e){let r=this._halfway.find(r=>r.scene===e.scene);r?r.count+=1:this._halfway.push({scene:e.scene,count:1})}_halfwayGet(e){let r=e?.scenes??[];return(r.length>0?this._halfway.filter(e=>r.includes(e.scene)):this._halfway).reduce((e,r)=>e+r.count,0)}_halfwayReset(){this._halfway=[{scene:SCENT_TEXT_OBJ.other,count:0}]}_finishedUpdate(e){let r=this._finished.find(r=>r.scene===e.scene);r?r.count+=1:this._finished.push({scene:e.scene,count:1})}_finishedGet(e){let r=e?.scenes??[];return(r.length>0?this._finished.filter(e=>r.includes(e.scene)):this._finished).reduce((e,r)=>e+r.count,0)}_finishedReset(){this._finished=[{scene:SCENT_TEXT_OBJ.other,count:0}]}record(e){switch(e.type){case"halfway":this._halfwayUpdate(e);break;case"finished":this._finishedUpdate(e)}}rest(e){switch(e){case"halfway":this._halfwayReset();break;case"finished":this._finishedReset()}}get(e){switch(e.type){case"halfway":return this._halfwayGet(e);case"finished":return this._finishedGet(e);default:return null}}placeholder(){return null}static build(e){return RewardAdGlobalRecorder.instance||(RewardAdGlobalRecorder.instance=new RewardAdGlobalRecorder(e)),RewardAdGlobalRecorder.instance}static getInstance(){if(!RewardAdGlobalRecorder.instance)throw Error("RewardAdGlobalRecorder instance is not init");return RewardAdGlobalRecorder.instance}}const ad_RewardAdGlobalRecorder=RewardAdGlobalRecorder;class RewardAdSceneTriggerManager{static instance=null;_initSign="";_currScene=null;constructor(e){if(RewardAdSceneTriggerManager.instance)return RewardAdSceneTriggerManager.instance;this._initSign=e?.sign??"",RewardAdSceneTriggerManager.instance=this}initialize(e){}addScene(e){return console.log("----------------------AD触发场景:--------------------",e),this._currScene=e,this}addSceneType(e=1){return this.addScene(SCENT_TYPE_OBJ[e]),this}getCurrentScene(){return this._currScene}placeholder(){return null}static build(e){return RewardAdSceneTriggerManager.instance||(RewardAdSceneTriggerManager.instance=new RewardAdSceneTriggerManager(e)),RewardAdSceneTriggerManager.instance}static getInstance(){if(!RewardAdSceneTriggerManager.instance)throw Error("RewardAdSceneTriggerManager instance is not init");return RewardAdSceneTriggerManager.instance}}const ad_RewardAdSceneTriggerManager=RewardAdSceneTriggerManager;class ExbAnalyticsJS{static instance=null;_initSign="";_needReport=!1;constructor(e){if(ExbAnalyticsJS.instance)return ExbAnalyticsJS.instance;this._initSign=e?.sign??"",this._needReport=e?.needReport??!1,this._userConfig=e?.userConfig??null,ExbAnalyticsJS.instance=this}initialize(e){return this._needReport?e:void console.warn("ExbAnalyticsJS needReport is false, do not report")}track(e,r,t){if(!this._needReport)return;if(!e)throw Error("eventName is required");let a=Object.assign({},this._getCommonUserInfo(),r),s=t?.sign??"track";console.log(`-------------${s}-----------------------:`,e,a),tt.reportAnalytics(e,a)}_getCommonUserInfo(){let{user_id:e,user_type:r,user_group:t}=this._userConfig??{};return{user_id:e,user_type:r,user_group:t}}identify(e){if(!e)throw Error("userInfo is required");if(!e.user_id)throw Error("user_id is required");return this._userConfig={user_id:e.user_id,user_type:e.user_type??0,user_group:e.user_group??0},this}alias(){return null}pages(){return null}page(e,r){this.track(e,r,{sign:"page"})}cpage(e){return this.page("cpage",e)}placeholder(){return null}static build(e){return ExbAnalyticsJS.instance||(ExbAnalyticsJS.instance=new ExbAnalyticsJS(e)),ExbAnalyticsJS.instance}static getInstance(){if(!ExbAnalyticsJS.instance)throw Error("ExbAnalyticsJS instance is not init");return ExbAnalyticsJS.instance}static new(e){return new ExbAnalyticsJS(e)}}const ad_ExbAnalyticsJS=ExbAnalyticsJS,src=ad_AdExecuteManager;for(var __rspack_i in exports.AdExecuteManager=__webpack_exports__.AdExecuteManager,exports.CountRecorder=__webpack_exports__.CountRecorder,exports.ExbAnalyticsJS=__webpack_exports__.ExbAnalyticsJS,exports.Logger=__webpack_exports__.Logger,exports.RewardAdFather=__webpack_exports__.RewardAdFather,exports.RewardAdGlobalRecorder=__webpack_exports__.RewardAdGlobalRecorder,exports.RewardAdSceneTriggerManager=__webpack_exports__.RewardAdSceneTriggerManager,exports.SerializableError=__webpack_exports__.SerializableError,exports.Storage=__webpack_exports__.Storage,exports.default=__webpack_exports__.default,__webpack_exports__)-1===["AdExecuteManager","CountRecorder","ExbAnalyticsJS","Logger","RewardAdFather","RewardAdGlobalRecorder","RewardAdSceneTriggerManager","SerializableError","Storage","default"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
class e{constructor(e={}){let{prefix:t="Logger",level:r="info",enabled:s=!0}=e;this.prefix=t,this.enabled=s,this.levels={error:0,warn:1,info:2,debug:3},this.currentLevel=this.levels[r]||this.levels.info}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}setLevel(e){Object.prototype.hasOwnProperty.call(this.levels,e)&&(this.currentLevel=this.levels[e])}formatMessage(e,t){let r=new Date,s=`${r.getFullYear()}/${r.getMonth()+1}/${r.getDate()} ${r.getHours()}:${r.getMinutes()}:${r.getSeconds()}`;return`[${s}] [${e.toUpperCase()}] [${this.prefix}] ${t}`}_log(e,t,...r){if(!this.enabled)return;let s=this.levels[e];if(void 0!==s&&this.currentLevel>=s){let s=this.formatMessage(e,t);switch(e){case"error":console.error(s,...r);break;case"warn":console.warn(s,...r);break;case"info":console.info(s,...r);break;case"debug":console.debug(s,...r);break;default:console.log(s,...r)}}}error(e,...t){this._log("error",e,...t)}warn(e,...t){this._log("warn",e,...t)}info(e,...t){this._log("info",e,...t)}debug(e,...t){this._log("debug",e,...t)}log(e,t,...r){this._log(e,t,...r)}}class t{static _instance=null;_taskStack=[];_currentBatchTasks=[];_isRunning=!1;_currentTask=null;constructor(r){if(this.logger=new e({prefix:"AdExecuteManager",enabled:!!r?.log}),t._instance)return t._instance;t._instance=this}static getInstance(e){return t._instance||(t._instance=new t(e)),t._instance}addTask(e,t){return e&&"function"==typeof e.ad?new Promise((r,s)=>{let i={adInstance:e,options:t.options??{},callbackCollection:t.collection??{},resolve:r,reject:s,id:`ad_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,_isResolved:!1,_isRejected:!1};this._taskStack.push(i),this._isRunning||this._compose()}):(this.logger.error("无效的广告实例 请正确实现.ad方法"),Promise.reject(Error("无效的广告实例")))}_compose(){if(0===this._taskStack.length){this._isRunning=!1,this._currentTask=null;return}this._isRunning=!0;let e=[...this._taskStack];this._taskStack=[],this._currentBatchTasks=e;let t=e.map(e=>async(t,r)=>{let{adInstance:s,options:i,callbackCollection:n,resolve:a,id:o}=e;if(e._isResolved||e._isRejected)return void await r(t);this._currentTask=e;try{let l=async e=>{await r(Object.assign({},t,e))},c=await s.initialize(i).ad({options:i,collection:n},l),h=Object.assign({id:o},c);this.logger.info(`任务执行成功,成功信息:${JSON.stringify(h)}`),e._isResolved=!0,a(h)}catch(n){let i=Object.assign({id:o,apiError:n});this.logger.error(`任务执行失败, 继续下一个任务,错误信息:${JSON.stringify(i)}`),e._isRejected=!0;try{s?.clear()}catch(e){this.logger.error("clear error: ",JSON.stringify(Object.assign({id:o,apiError:e})))}a(i),await r(t)}}),r={roundTasks:t.length};t.map(e=>(t,r)=>async s=>await e(Object.assign({},t,s),r)).reduce((e,t)=>(r,s)=>e(r,t(r,s)))(r,async e=>{this.logger.info("本轮活动队列已经清空",e),this._taskStack.length>0?Promise.resolve().then(()=>{this._compose()}):(this._isRunning=!1,this._currentTask=null,this._currentBatchTasks=[])})()}clearTasks(){if(this._currentTask){if(this._currentTask._isResolved||this._currentTask._isRejected){this._currentTask=null;return}try{this._currentTask.callbackCollection&&this._currentTask.callbackCollection.onCancel&&this._currentTask.callbackCollection.onCancel(),this._currentTask._isResolved=!0,this._currentTask.resolve()}catch(e){this.logger.error("clear current task error: ",e)}this._currentTask=null}this._currentBatchTasks.length>0&&(this._currentBatchTasks.forEach(e=>{if(e!==this._currentTask&&!e._isResolved&&!e._isRejected)try{e.callbackCollection&&e.callbackCollection.onCancel&&e.callbackCollection.onCancel(),e._isResolved=!0,e.resolve()}catch(e){this.logger.error("clear current batch task error: ",e)}}),this._currentBatchTasks=[]),this._taskStack.forEach(e=>{if(!e._isResolved&&!e._isRejected&&(e._isResolved=!0,e.resolve(),e.callbackCollection&&e.callbackCollection.onCancel))try{e.callbackCollection.onCancel()}catch(e){this.logger.error("clear task error: ",e)}}),this._taskStack=[],this._isRunning=!1}getTaskCount(){return this._taskStack.filter(e=>!e._isResolved&&!e._isRejected).length+this._currentBatchTasks.filter(e=>e!==this._currentTask&&!e._isResolved&&!e._isRejected).length+(!this._currentTask||this._currentTask._isResolved||this._currentTask._isRejected?0:1)}isRunning(){return this._isRunning}getCurrentTaskId(){return this._currentTask?.id||null}}let r=t;class s extends Error{constructor(e){super(e),this.name=this.constructor.name,this.stack=Error(e).stack,Object.defineProperty(this,"message",{enumerable:!0}),Object.defineProperty(this,"name",{enumerable:!0}),Object.defineProperty(this,"stack",{enumerable:!0})}toJSON(){return{name:this.name,message:this.message,stack:this.stack}}}class i{static args=null;_initSign="";_preserveOnEnd=!1;_rewardAd=null;_ttErrorMsgs=["The adUnitId is closed","The adUnitId is prohibit","The adUnitId is invalid","The adUnitId is empty","feature is not supported in app"];_ttErrorCodes=[139902,123302];constructor(e){this._initSign=e?.sign??"",this._adConfig=e?.adConfig??{},this._preserveOnEnd=e?.preserveOnEnd??!1}initialize(e,t){if(this._rewardAd)return console.warn("RewardAdFather: rewardAd has been initialized"),t?.(this._rewardAd),this;let r=Object.assign({},i.args,this._adConfig,e);if(!r.adUnitId)throw console.error("[RewardAdFather] reward args adUnitId is required",r),new s("[RewardAdFather] reward args adUnitId is required");return this._rewardAd=tt.createRewardedVideoAd(r),t?.(this._rewardAd),this}initialized(){return!!this._rewardAd}async ad(e,t=null){throw Error("子类必须实现ad方法")}async addExecuteManager(e){let t=Object.assign({},this._adConfig,e?.options??{});return i.executeWithManager(this,Object.assign({},e,{options:t}))}destroy(){this._rewardAd&&!this._preserveOnEnd&&(this._rewardAd.destroy(),this._rewardAd=null)}clear(){throw Error("子类必须实现clear方法")}onClose(e){this._rewardAd&&this._rewardAd.onClose(e)}offClose(e){this._rewardAd&&this._rewardAd.offClose(e)}show(){return this._rewardAd?this._rewardAd.show():Promise.reject({errMsg:"rewardAd is null"})}load(){if(this._rewardAd)return this._rewardAd.load()}onError(e){this._rewardAd&&this._rewardAd.onError(e)}offError(e){this._rewardAd&&this._rewardAd.offError(e)}onLoad(e){this._rewardAd&&this._rewardAd.onLoad(e)}offLoad(e){this._rewardAd&&this._rewardAd.offLoad(e)}placeholder(){return null}static buildArgs(e){e?.adUnitId||console.error("[RewardAdFather] RewardParams.adUnitId is required"),i.args=e}static async executeWithManager(e,t){return e&&e instanceof i?r.getInstance({log:t?.options?.log??!0}).addTask(e,t):(console.error("RewardAdFather: executeWithManager - 无效的广告实例"),Promise.reject(Error("无效的广告实例")))}}let n=i;class a{constructor(t={}){this.config={prefix:"storage_",expire:null,...t},this.logger=new e({prefix:"Storage"})}getTodayEndTimestamp(){let e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59,59,999).getTime()}_setItem(e,t,r){let s=void 0!==r?r:this.config.expire;"today"===s&&(s=this.getTodayEndTimestamp()-Date.now());let i={value:t,expire:s,timestamp:Date.now()};try{tt.setStorageSync(e,JSON.stringify(i))}catch(e){console.error("Storage setItem error:",e)}}_getItem(e){try{let t=tt.getStorageSync(e);if(!t)return null;let r=JSON.parse(t);if(r.expire&&Date.now()-r.timestamp>r.expire)return this.removeItem(e),null;return r.value}catch(e){return console.error("Storage getItem error:",e),null}}setItem(e,t,r){let s=this.config.prefix+e;return this._setItem(s,t,r)}getItem(e){let t=this.config.prefix+e;return this._getItem(t)}getUserItem(e){let t=this.config.userId??"null";if("null"===t)return this.logger.error("userId is required"),null;let r=`${this.config.prefix}_${t}_${e}`;return this._getItem(r)}setUserItem(e,t,r){let s=this.config.userId??"null";if("null"===s)return void this.logger.error("userId is required");let i=`${this.config.prefix}_${s}_${e}`;return this._setItem(i,t,r)}removeItem(e){try{tt.removeStorageSync(e)}catch(e){console.error("Storage removeItem error:",e)}}clear(){try{tt.clearStorageSync()}catch(e){console.error("Storage clear error:",e)}}keys(){try{let e=[];return(tt.getStorageInfoSync().keys??[]).forEach(t=>{if(t.startsWith(this.config.prefix)){let r=JSON.parse(tt.getStorageSync(t));(!r.expire||Date.now()-r.timestamp<=r.expire)&&e.push(t.replace(this.config.prefix,""))}}),e}catch(e){return console.error("Storage keys error:",e),[]}}static new(e){return new a(e)}}let o=a;class l{_total=0;_local_sign="";_expire="today";constructor(e){if(this.storage=o.new({userId:e.userId}),!e.local_sign)throw Error("local_sign is required");this._local_sign=e.local_sign,this._total=e.total??0,this._expire=e.expire??"today",this._init()}_init(){this._initLocalTimes()}_adTimes(){return this._total}_safeLocalValue(e){return"object"!=typeof e||null===e?{}:e}_initLocalTimes(){let e=this._adTimes(),t=this.storage.getUserItem(this._local_sign),r=this._safeLocalValue(t);r&&r?.total==e||this.storage.setUserItem(this._local_sign,{total:e,today:r?.today??0},this._expire)}updateToday(){let e=this._adTimes(),t=this.storage.getUserItem(this._local_sign),r=this._safeLocalValue(t),s=r?.today??0;this.storage.setUserItem(this._local_sign,{total:e,today:s+1},this._expire)}remain(){let e=this.storage.getUserItem(this._local_sign),t=this._safeLocalValue(e),r=t?.today??0;return Number(t?.total??0)-Number(r)}static new(e){return new l(e)}}let c={0:"launch_ad",1:"novel_plugin_strong_ad",2:"novel_plugin_unlock_btn",3:"novel_plugin_free_benefit_btn",4:"home_free_welfare_btn",5:"home_free_popup",6:"other",7:"home_back_show",8:"novel_plugin_free_time_btn",9:"launch_ad_alone"},h=Object.entries(c).reduce((e,[t,r])=>(e[r]=Number(t),e),{});class d{static instance=null;_initSign="";_halfway=[{scene:h.other,count:0}];_finished=[{scene:h.other,count:0}];constructor(e){if(d.instance)return d.instance;this._initSign=e?.sign??"",d.instance=this}initialize(e){}_halfwayUpdate(e){let t=this._halfway.find(t=>t.scene===e.scene);t?t.count+=1:this._halfway.push({scene:e.scene,count:1})}_halfwayGet(e){let t=e?.scenes??[];return(t.length>0?this._halfway.filter(e=>t.includes(e.scene)):this._halfway).reduce((e,t)=>e+t.count,0)}_halfwayReset(){this._halfway=[{scene:h.other,count:0}]}_finishedUpdate(e){let t=this._finished.find(t=>t.scene===e.scene);t?t.count+=1:this._finished.push({scene:e.scene,count:1})}_finishedGet(e){let t=e?.scenes??[];return(t.length>0?this._finished.filter(e=>t.includes(e.scene)):this._finished).reduce((e,t)=>e+t.count,0)}_finishedReset(){this._finished=[{scene:h.other,count:0}]}record(e){switch(e.type){case"halfway":this._halfwayUpdate(e);break;case"finished":this._finishedUpdate(e)}}rest(e){switch(e){case"halfway":this._halfwayReset();break;case"finished":this._finishedReset()}}get(e){switch(e.type){case"halfway":return this._halfwayGet(e);case"finished":return this._finishedGet(e);default:return null}}placeholder(){return null}static build(e){return d.instance||(d.instance=new d(e)),d.instance}static getInstance(){if(!d.instance)throw Error("RewardAdGlobalRecorder instance is not init");return d.instance}}let u=d;class _{static instance=null;_initSign="";_currScene=null;constructor(e){if(_.instance)return _.instance;this._initSign=e?.sign??"",_.instance=this}initialize(e){}addScene(e){return console.log("----------------------AD触发场景:--------------------",e),this._currScene=e,this}addSceneType(e=1){return this.addScene(c[e]),this}getCurrentScene(){return this._currScene}placeholder(){return null}static build(e){return _.instance||(_.instance=new _(e)),_.instance}static getInstance(){if(!_.instance)throw Error("RewardAdSceneTriggerManager instance is not init");return _.instance}}let g=_;class f{static instance=null;_initSign="";_needReport=!1;constructor(e){if(f.instance)return f.instance;this._initSign=e?.sign??"",this._needReport=e?.needReport??!1,this._userConfig=e?.userConfig??null,f.instance=this}initialize(e){return this._needReport?e:void console.warn("ExbAnalyticsJS needReport is false, do not report")}track(e,t,r){if(!this._needReport)return;if(!e)throw Error("eventName is required");let s=Object.assign({},this._getCommonUserInfo(),t),i=r?.sign??"track";console.log(`-------------${i}-----------------------:`,e,s),tt.reportAnalytics(e,s)}_getCommonUserInfo(){let{user_id:e,user_type:t,user_group:r}=this._userConfig??{};return{user_id:e,user_type:t,user_group:r}}identify(){return null}alias(){return null}pages(){return null}page(e,t){this.track(e,t,{sign:"page"})}cpage(e){return this.page("cpage",e)}placeholder(){return null}static build(e){return f.instance||(f.instance=new f(e)),f.instance}static getInstance(){if(!f.instance)throw Error("ExbAnalyticsJS instance is not init");return f.instance}static new(e){return new f(e)}}let w=f,p=r;export{r as AdExecuteManager,l as CountRecorder,w as ExbAnalyticsJS,e as Logger,n as RewardAdFather,u as RewardAdGlobalRecorder,g as RewardAdSceneTriggerManager,s as SerializableError,o as Storage,p as default};
|
|
1
|
+
class e{constructor(e={}){let{prefix:t="Logger",level:r="info",enabled:s=!0}=e;this.prefix=t,this.enabled=s,this.levels={error:0,warn:1,info:2,debug:3},this.currentLevel=this.levels[r]||this.levels.info}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}setLevel(e){Object.prototype.hasOwnProperty.call(this.levels,e)&&(this.currentLevel=this.levels[e])}formatMessage(e,t){let r=new Date,s=`${r.getFullYear()}/${r.getMonth()+1}/${r.getDate()} ${r.getHours()}:${r.getMinutes()}:${r.getSeconds()}`;return`[${s}] [${e.toUpperCase()}] [${this.prefix}] ${t}`}_log(e,t,...r){if(!this.enabled)return;let s=this.levels[e];if(void 0!==s&&this.currentLevel>=s){let s=this.formatMessage(e,t);switch(e){case"error":console.error(s,...r);break;case"warn":console.warn(s,...r);break;case"info":console.info(s,...r);break;case"debug":console.debug(s,...r);break;default:console.log(s,...r)}}}error(e,...t){this._log("error",e,...t)}warn(e,...t){this._log("warn",e,...t)}info(e,...t){this._log("info",e,...t)}debug(e,...t){this._log("debug",e,...t)}log(e,t,...r){this._log(e,t,...r)}}class t{static _instance=null;_taskStack=[];_currentBatchTasks=[];_isRunning=!1;_currentTask=null;constructor(r){if(this.logger=new e({prefix:"AdExecuteManager",enabled:!!r?.log}),t._instance)return t._instance;t._instance=this}static getInstance(e){return t._instance||(t._instance=new t(e)),t._instance}addTask(e,t){return e&&"function"==typeof e.ad?new Promise((r,s)=>{let i={adInstance:e,options:t.options??{},callbackCollection:t.collection??{},resolve:r,reject:s,id:`ad_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,_isResolved:!1,_isRejected:!1};this._taskStack.push(i),this._isRunning||this._compose()}):(this.logger.error("无效的广告实例 请正确实现.ad方法"),Promise.reject(Error("无效的广告实例")))}_compose(){if(0===this._taskStack.length){this._isRunning=!1,this._currentTask=null;return}this._isRunning=!0;let e=[...this._taskStack];this._taskStack=[],this._currentBatchTasks=e;let t=e.map(e=>async(t,r)=>{let{adInstance:s,options:i,callbackCollection:n,resolve:a,id:o}=e;if(e._isResolved||e._isRejected)return void await r(t);this._currentTask=e;try{let c=async e=>{await r(Object.assign({},t,e))},l=await s.initialize(i).ad({options:i,collection:n},c),h=Object.assign({id:o},l);this.logger.info(`任务执行成功,成功信息:${JSON.stringify(h)}`),e._isResolved=!0,a(h)}catch(n){let i=Object.assign({id:o,apiError:n});this.logger.error(`任务执行失败, 继续下一个任务,错误信息:${JSON.stringify(i)}`),e._isRejected=!0;try{s?.clear()}catch(e){this.logger.error("clear error: ",JSON.stringify(Object.assign({id:o,apiError:e})))}a(i),await r(t)}}),r={roundTasks:t.length};t.map(e=>(t,r)=>async s=>await e(Object.assign({},t,s),r)).reduce((e,t)=>(r,s)=>e(r,t(r,s)))(r,async e=>{this.logger.info("本轮活动队列已经清空",e),this._taskStack.length>0?Promise.resolve().then(()=>{this._compose()}):(this._isRunning=!1,this._currentTask=null,this._currentBatchTasks=[])})()}clearTasks(){if(this._currentTask){if(this._currentTask._isResolved||this._currentTask._isRejected){this._currentTask=null;return}try{this._currentTask.callbackCollection&&this._currentTask.callbackCollection.onCancel&&this._currentTask.callbackCollection.onCancel(),this._currentTask._isResolved=!0,this._currentTask.resolve()}catch(e){this.logger.error("clear current task error: ",e)}this._currentTask=null}this._currentBatchTasks.length>0&&(this._currentBatchTasks.forEach(e=>{if(e!==this._currentTask&&!e._isResolved&&!e._isRejected)try{e.callbackCollection&&e.callbackCollection.onCancel&&e.callbackCollection.onCancel(),e._isResolved=!0,e.resolve()}catch(e){this.logger.error("clear current batch task error: ",e)}}),this._currentBatchTasks=[]),this._taskStack.forEach(e=>{if(!e._isResolved&&!e._isRejected&&(e._isResolved=!0,e.resolve(),e.callbackCollection&&e.callbackCollection.onCancel))try{e.callbackCollection.onCancel()}catch(e){this.logger.error("clear task error: ",e)}}),this._taskStack=[],this._isRunning=!1}getTaskCount(){return this._taskStack.filter(e=>!e._isResolved&&!e._isRejected).length+this._currentBatchTasks.filter(e=>e!==this._currentTask&&!e._isResolved&&!e._isRejected).length+(!this._currentTask||this._currentTask._isResolved||this._currentTask._isRejected?0:1)}isRunning(){return this._isRunning}getCurrentTaskId(){return this._currentTask?.id||null}}let r=t;class s extends Error{constructor(e){super(e),this.name=this.constructor.name,this.stack=Error(e).stack,Object.defineProperty(this,"message",{enumerable:!0}),Object.defineProperty(this,"name",{enumerable:!0}),Object.defineProperty(this,"stack",{enumerable:!0})}toJSON(){return{name:this.name,message:this.message,stack:this.stack}}}class i{static args=null;_initSign="";_preserveOnEnd=!1;_rewardAd=null;_ttErrorMsgs=["The adUnitId is closed","The adUnitId is prohibit","The adUnitId is invalid","The adUnitId is empty","feature is not supported in app"];_ttErrorCodes=[139902,123302];constructor(e){this._initSign=e?.sign??"",this._adConfig=e?.adConfig??{},this._preserveOnEnd=e?.preserveOnEnd??!1}initialize(e,t){if(this._rewardAd)return console.warn("RewardAdFather: rewardAd has been initialized"),t?.(this._rewardAd),this;let r=Object.assign({},i.args,this._adConfig,e);if(!r.adUnitId)throw console.error("[RewardAdFather] reward args adUnitId is required",r),new s("[RewardAdFather] reward args adUnitId is required");return this._rewardAd=tt.createRewardedVideoAd(r),t?.(this._rewardAd),this}initialized(){return!!this._rewardAd}async ad(e,t=null){throw Error("子类必须实现ad方法")}async addExecuteManager(e){let t=Object.assign({},this._adConfig,e?.options??{});return i.executeWithManager(this,Object.assign({},e,{options:t}))}destroy(){this._rewardAd&&!this._preserveOnEnd&&(this._rewardAd.destroy(),this._rewardAd=null)}clear(){throw Error("子类必须实现clear方法")}onClose(e){this._rewardAd&&this._rewardAd.onClose(e)}offClose(e){this._rewardAd&&this._rewardAd.offClose(e)}show(){return this._rewardAd?this._rewardAd.show():Promise.reject({errMsg:"rewardAd is null"})}load(){if(this._rewardAd)return this._rewardAd.load()}onError(e){this._rewardAd&&this._rewardAd.onError(e)}offError(e){this._rewardAd&&this._rewardAd.offError(e)}onLoad(e){this._rewardAd&&this._rewardAd.onLoad(e)}offLoad(e){this._rewardAd&&this._rewardAd.offLoad(e)}placeholder(){return null}static buildArgs(e){e?.adUnitId||console.error("[RewardAdFather] RewardParams.adUnitId is required"),i.args=e}static async executeWithManager(e,t){return e&&e instanceof i?r.getInstance({log:t?.options?.log??!0}).addTask(e,t):(console.error("RewardAdFather: executeWithManager - 无效的广告实例"),Promise.reject(Error("无效的广告实例")))}}let n=i;class a{constructor(t={}){this.config={prefix:"storage_",expire:null,...t},this.logger=new e({prefix:"Storage"})}getTodayEndTimestamp(){let e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59,59,999).getTime()}_setItem(e,t,r){let s=void 0!==r?r:this.config.expire;"today"===s&&(s=this.getTodayEndTimestamp()-Date.now());let i={value:t,expire:s,timestamp:Date.now()};try{tt.setStorageSync(e,JSON.stringify(i))}catch(e){console.error("Storage setItem error:",e)}}_getItem(e){try{let t=tt.getStorageSync(e);if(!t)return null;let r=JSON.parse(t);if(r.expire&&Date.now()-r.timestamp>r.expire)return this.removeItem(e),null;return r.value}catch(e){return console.error("Storage getItem error:",e),null}}setItem(e,t,r){let s=this.config.prefix+e;return this._setItem(s,t,r)}getItem(e){let t=this.config.prefix+e;return this._getItem(t)}getUserItem(e){let t=this.config.userId??"null";if("null"===t)return this.logger.error("userId is required"),null;let r=`${this.config.prefix}_${t}_${e}`;return this._getItem(r)}setUserItem(e,t,r){let s=this.config.userId??"null";if("null"===s)return void this.logger.error("userId is required");let i=`${this.config.prefix}_${s}_${e}`;return this._setItem(i,t,r)}removeItem(e){try{tt.removeStorageSync(e)}catch(e){console.error("Storage removeItem error:",e)}}clear(){try{tt.clearStorageSync()}catch(e){console.error("Storage clear error:",e)}}keys(){try{let e=[];return(tt.getStorageInfoSync().keys??[]).forEach(t=>{if(t.startsWith(this.config.prefix)){let r=JSON.parse(tt.getStorageSync(t));(!r.expire||Date.now()-r.timestamp<=r.expire)&&e.push(t.replace(this.config.prefix,""))}}),e}catch(e){return console.error("Storage keys error:",e),[]}}static new(e){return new a(e)}}let o=a;class c{_total=0;_local_sign="";_expire="today";constructor(e){if(this.storage=o.new({userId:e.userId}),!e.local_sign)throw Error("local_sign is required");this._local_sign=e.local_sign,this._total=e.total??0,this._expire=e.expire??"today",this._init()}_init(){this._initLocalTimes()}_adTimes(){return this._total}_safeLocalValue(e){return"object"!=typeof e||null===e?{}:e}_initLocalTimes(){let e=this._adTimes(),t=this.storage.getUserItem(this._local_sign),r=this._safeLocalValue(t);r&&r?.total==e||this.storage.setUserItem(this._local_sign,{total:e,today:r?.today??0},this._expire)}updateToday(){let e=this._adTimes(),t=this.storage.getUserItem(this._local_sign),r=this._safeLocalValue(t),s=r?.today??0;this.storage.setUserItem(this._local_sign,{total:e,today:s+1},this._expire)}remain(){let e=this.storage.getUserItem(this._local_sign),t=this._safeLocalValue(e),r=t?.today??0;return Number(t?.total??0)-Number(r)}static new(e){return new c(e)}}let l={0:"launch_ad",1:"novel_plugin_strong_ad",2:"novel_plugin_unlock_btn",3:"novel_plugin_free_benefit_btn",4:"home_free_welfare_btn",5:"home_free_popup",6:"other",7:"home_back_show",8:"novel_plugin_free_time_btn",9:"launch_ad_alone"},h=Object.entries(l).reduce((e,[t,r])=>(e[r]=Number(t),e),{});class d{static instance=null;_initSign="";_halfway=[{scene:h.other,count:0}];_finished=[{scene:h.other,count:0}];constructor(e){if(d.instance)return d.instance;this._initSign=e?.sign??"",d.instance=this}initialize(e){}_halfwayUpdate(e){let t=this._halfway.find(t=>t.scene===e.scene);t?t.count+=1:this._halfway.push({scene:e.scene,count:1})}_halfwayGet(e){let t=e?.scenes??[];return(t.length>0?this._halfway.filter(e=>t.includes(e.scene)):this._halfway).reduce((e,t)=>e+t.count,0)}_halfwayReset(){this._halfway=[{scene:h.other,count:0}]}_finishedUpdate(e){let t=this._finished.find(t=>t.scene===e.scene);t?t.count+=1:this._finished.push({scene:e.scene,count:1})}_finishedGet(e){let t=e?.scenes??[];return(t.length>0?this._finished.filter(e=>t.includes(e.scene)):this._finished).reduce((e,t)=>e+t.count,0)}_finishedReset(){this._finished=[{scene:h.other,count:0}]}record(e){switch(e.type){case"halfway":this._halfwayUpdate(e);break;case"finished":this._finishedUpdate(e)}}rest(e){switch(e){case"halfway":this._halfwayReset();break;case"finished":this._finishedReset()}}get(e){switch(e.type){case"halfway":return this._halfwayGet(e);case"finished":return this._finishedGet(e);default:return null}}placeholder(){return null}static build(e){return d.instance||(d.instance=new d(e)),d.instance}static getInstance(){if(!d.instance)throw Error("RewardAdGlobalRecorder instance is not init");return d.instance}}let u=d;class _{static instance=null;_initSign="";_currScene=null;constructor(e){if(_.instance)return _.instance;this._initSign=e?.sign??"",_.instance=this}initialize(e){}addScene(e){return console.log("----------------------AD触发场景:--------------------",e),this._currScene=e,this}addSceneType(e=1){return this.addScene(l[e]),this}getCurrentScene(){return this._currScene}placeholder(){return null}static build(e){return _.instance||(_.instance=new _(e)),_.instance}static getInstance(){if(!_.instance)throw Error("RewardAdSceneTriggerManager instance is not init");return _.instance}}let g=_;class f{static instance=null;_initSign="";_needReport=!1;constructor(e){if(f.instance)return f.instance;this._initSign=e?.sign??"",this._needReport=e?.needReport??!1,this._userConfig=e?.userConfig??null,f.instance=this}initialize(e){return this._needReport?e:void console.warn("ExbAnalyticsJS needReport is false, do not report")}track(e,t,r){if(!this._needReport)return;if(!e)throw Error("eventName is required");let s=Object.assign({},this._getCommonUserInfo(),t),i=r?.sign??"track";console.log(`-------------${i}-----------------------:`,e,s),tt.reportAnalytics(e,s)}_getCommonUserInfo(){let{user_id:e,user_type:t,user_group:r}=this._userConfig??{};return{user_id:e,user_type:t,user_group:r}}identify(e){if(!e)throw Error("userInfo is required");if(!e.user_id)throw Error("user_id is required");return this._userConfig={user_id:e.user_id,user_type:e.user_type??0,user_group:e.user_group??0},this}alias(){return null}pages(){return null}page(e,t){this.track(e,t,{sign:"page"})}cpage(e){return this.page("cpage",e)}placeholder(){return null}static build(e){return f.instance||(f.instance=new f(e)),f.instance}static getInstance(){if(!f.instance)throw Error("ExbAnalyticsJS instance is not init");return f.instance}static new(e){return new f(e)}}let w=f,p=r;export{r as AdExecuteManager,c as CountRecorder,w as ExbAnalyticsJS,e as Logger,n as RewardAdFather,u as RewardAdGlobalRecorder,g as RewardAdSceneTriggerManager,s as SerializableError,o as Storage,p as default};
|
package/package.json
CHANGED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
export default RewardAdNovelUnlock;
|
|
2
|
-
export type IRewordAdConfig = import("../../typings/ad.js").IRewordAdConfig;
|
|
3
|
-
export type ICallbackArgs = import("../../typings/ad.js").ICallbackArgs;
|
|
4
|
-
export type IConnection = {
|
|
5
|
-
/**
|
|
6
|
-
* 广告中途退出回调
|
|
7
|
-
*/
|
|
8
|
-
onHalfway?: (args: ICallbackArgs) => void;
|
|
9
|
-
/**
|
|
10
|
-
* 广告展示回调
|
|
11
|
-
*/
|
|
12
|
-
onShow?: (args: ICallbackArgs) => void;
|
|
13
|
-
/**
|
|
14
|
-
* 广告执行成功回调
|
|
15
|
-
*/
|
|
16
|
-
onFinish?: (args: ICallbackArgs) => void;
|
|
17
|
-
/**
|
|
18
|
-
* 广告执行成功或失败回调
|
|
19
|
-
*/
|
|
20
|
-
onAlways?: (args: ICallbackArgs) => void;
|
|
21
|
-
/**
|
|
22
|
-
* 广告执行失败回调
|
|
23
|
-
*/
|
|
24
|
-
onError?: (e: unknown) => void;
|
|
25
|
-
};
|
|
26
|
-
export type ICloseArgs = {
|
|
27
|
-
/**
|
|
28
|
-
* 是否看完
|
|
29
|
-
*/
|
|
30
|
-
isEnded: boolean;
|
|
31
|
-
/**
|
|
32
|
-
* 完整观看次数
|
|
33
|
-
*/
|
|
34
|
-
count: number;
|
|
35
|
-
};
|
|
36
|
-
export type IConstructArgs = {
|
|
37
|
-
/**
|
|
38
|
-
* 初始化标识
|
|
39
|
-
*/
|
|
40
|
-
sign: string;
|
|
41
|
-
/**
|
|
42
|
-
* 解锁设置
|
|
43
|
-
*/
|
|
44
|
-
unlockSettings: import("./UnlockSettings").default;
|
|
45
|
-
/**
|
|
46
|
-
* 激励视频参数 (可选)
|
|
47
|
-
*/
|
|
48
|
-
adConfig?: IRewordAdConfig | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* 回调集合
|
|
51
|
-
*/
|
|
52
|
-
collection?: IConnection | undefined;
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* @typedef {import('../../typings/ad.js').IRewordAdConfig} IRewordAdConfig
|
|
56
|
-
*/
|
|
57
|
-
/**
|
|
58
|
-
* @typedef {import('../../typings/ad.js').ICallbackArgs} ICallbackArgs
|
|
59
|
-
*/
|
|
60
|
-
/**
|
|
61
|
-
* @typedef IConnection
|
|
62
|
-
* @property {(args: ICallbackArgs) => void} [onHalfway] 广告中途退出回调
|
|
63
|
-
* @property {(args: ICallbackArgs) => void} [onShow] 广告展示回调
|
|
64
|
-
* @property {(args: ICallbackArgs) => void} [onFinish] 广告执行成功回调
|
|
65
|
-
* @property {(args: ICallbackArgs) => void} [onAlways] 广告执行成功或失败回调
|
|
66
|
-
* @property {(e:unknown) => void} [onError] 广告执行失败回调
|
|
67
|
-
*/
|
|
68
|
-
/**
|
|
69
|
-
* @typedef ICloseArgs
|
|
70
|
-
* @property {boolean} isEnded 是否看完
|
|
71
|
-
* @property {number} count 完整观看次数
|
|
72
|
-
*/
|
|
73
|
-
/**
|
|
74
|
-
* @typedef IConstructArgs
|
|
75
|
-
* @property {string} sign 初始化标识
|
|
76
|
-
* @property {import('./UnlockSettings').default} unlockSettings 解锁设置
|
|
77
|
-
* @property {IRewordAdConfig=} adConfig 激励视频参数 (可选)
|
|
78
|
-
* @property {IConnection=} collection 回调集合
|
|
79
|
-
*/
|
|
80
|
-
declare class RewardAdNovelUnlock extends RewardAdNovel {
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
* @param {IConstructArgs} args
|
|
84
|
-
* @returns {RewardAdNovelUnlock}
|
|
85
|
-
*/
|
|
86
|
-
static build(args: IConstructArgs): RewardAdNovelUnlock;
|
|
87
|
-
static unshift(): typeof RewardAdNovelUnlock;
|
|
88
|
-
/**
|
|
89
|
-
*
|
|
90
|
-
* @returns {RewardAdNovelUnlock}
|
|
91
|
-
*/
|
|
92
|
-
static getInstance(): RewardAdNovelUnlock;
|
|
93
|
-
/**
|
|
94
|
-
*
|
|
95
|
-
* @returns {RewardAdNovelUnlock | null}
|
|
96
|
-
*/
|
|
97
|
-
static getNovelInstance(): RewardAdNovelUnlock | null;
|
|
98
|
-
/**
|
|
99
|
-
*
|
|
100
|
-
* @param {IConstructArgs} args
|
|
101
|
-
* @returns {RewardAdNovelUnlock}
|
|
102
|
-
*/
|
|
103
|
-
static "new"(args: IConstructArgs): RewardAdNovelUnlock;
|
|
104
|
-
/**
|
|
105
|
-
* @param {IConstructArgs} args
|
|
106
|
-
*/
|
|
107
|
-
constructor(args: IConstructArgs);
|
|
108
|
-
_scene: 2;
|
|
109
|
-
/**
|
|
110
|
-
* @type {import('./UnlockSettings').default}
|
|
111
|
-
*/
|
|
112
|
-
unlockSettings: import("./UnlockSettings").default;
|
|
113
|
-
}
|
|
114
|
-
import RewardAdNovel from '../RewardAdNovel';
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export default UnlockSettings;
|
|
2
|
-
declare class UnlockSettings {
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* @param {object} args
|
|
6
|
-
* @param {string} args.sign 初始化标识
|
|
7
|
-
* @returns {UnlockSettings}
|
|
8
|
-
*/
|
|
9
|
-
static "new"(args: {
|
|
10
|
-
sign: string;
|
|
11
|
-
}): UnlockSettings;
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @param {object} [args]
|
|
15
|
-
*/
|
|
16
|
-
constructor(args?: object);
|
|
17
|
-
max_tan_ad: {
|
|
18
|
-
total: number;
|
|
19
|
-
current: number;
|
|
20
|
-
};
|
|
21
|
-
look_jls_p: {
|
|
22
|
-
is_look_complete: number;
|
|
23
|
-
total: number;
|
|
24
|
-
current: number;
|
|
25
|
-
};
|
|
26
|
-
commonSettings: CommonSettings;
|
|
27
|
-
_init(): void;
|
|
28
|
-
_adTimes(): void;
|
|
29
|
-
reset(): void;
|
|
30
|
-
updateMaxTan(): void;
|
|
31
|
-
updateLookJlsP(): void;
|
|
32
|
-
remainMaxTan(): number;
|
|
33
|
-
remainLook(): number;
|
|
34
|
-
/**
|
|
35
|
-
* 看广告的次数和弹框的次数不一致
|
|
36
|
-
* 并且需要完整的看完广告,并且弹框次数小于最大弹框次数
|
|
37
|
-
* @returns
|
|
38
|
-
*/
|
|
39
|
-
end(): boolean;
|
|
40
|
-
ok(): boolean;
|
|
41
|
-
}
|
|
42
|
-
import CommonSettings from '../CommonSettings';
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
export default CommonSettings;
|
|
2
|
-
export type ISysConfig = {
|
|
3
|
-
/**
|
|
4
|
-
* 再看一次配置
|
|
5
|
-
*/
|
|
6
|
-
free_incentive_frequency?: number | undefined;
|
|
7
|
-
/**
|
|
8
|
-
* 自定义解锁弹窗配置
|
|
9
|
-
*/
|
|
10
|
-
c_unlock_pop_enable?: number | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* 是否进入简介页
|
|
13
|
-
*/
|
|
14
|
-
launch_go_jianjieye?: number | undefined;
|
|
15
|
-
/**
|
|
16
|
-
* 是否可以返回首页
|
|
17
|
-
*/
|
|
18
|
-
launch_can_back_home?: number | undefined;
|
|
19
|
-
/**
|
|
20
|
-
* 返回书城激励视频每日展示次数 0 不展示 具体数量展示几次
|
|
21
|
-
*/
|
|
22
|
-
back_book_store_ad?: number | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* 是否开启启动激励
|
|
25
|
-
*/
|
|
26
|
-
inter_site_pop_ups?: number | undefined;
|
|
27
|
-
/**
|
|
28
|
-
* 启动激励次数
|
|
29
|
-
*/
|
|
30
|
-
inter_site_pop_ups_num?: number | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* 阅读强激励循环次数
|
|
33
|
-
*/
|
|
34
|
-
strong_incentive_frequency?: number | undefined;
|
|
35
|
-
/**
|
|
36
|
-
* 阅读页返回广告
|
|
37
|
-
*/
|
|
38
|
-
read_page_back_ad?: number | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* 进入阅读页每日自动展示激励次数
|
|
41
|
-
*/
|
|
42
|
-
first_user_day?: number | undefined;
|
|
43
|
-
};
|
|
44
|
-
export type IUserConfig = {
|
|
45
|
-
/**
|
|
46
|
-
* 解锁章节中配置的观看解锁章节数
|
|
47
|
-
*/
|
|
48
|
-
ad_unlock_chapter_num?: number | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* 解锁章节中配置的观看奖励视频次数
|
|
51
|
-
*/
|
|
52
|
-
look_jlsp_num?: number | undefined;
|
|
53
|
-
/**
|
|
54
|
-
* 解锁章节中配置的弹窗广告次数
|
|
55
|
-
*/
|
|
56
|
-
max_tan_ad_num?: number | undefined;
|
|
57
|
-
/**
|
|
58
|
-
* 奖励视频是否观看完成
|
|
59
|
-
*/
|
|
60
|
-
jlsp_is_look_complete?: number | undefined;
|
|
61
|
-
/**
|
|
62
|
-
* 书籍ID
|
|
63
|
-
*/
|
|
64
|
-
dy_book_id?: number | undefined;
|
|
65
|
-
/**
|
|
66
|
-
* 默认书籍ID
|
|
67
|
-
*/
|
|
68
|
-
default_book_id?: number | undefined;
|
|
69
|
-
/**
|
|
70
|
-
* 章节ID
|
|
71
|
-
*/
|
|
72
|
-
index?: number | undefined;
|
|
73
|
-
/**
|
|
74
|
-
* 2 表示跳转至速度页面 1 不处理
|
|
75
|
-
*/
|
|
76
|
-
open_page: string;
|
|
77
|
-
/**
|
|
78
|
-
* 是否解锁全部章节 0 未解锁 1 解锁
|
|
79
|
-
*/
|
|
80
|
-
is_unlock_all: number;
|
|
81
|
-
};
|
|
82
|
-
export type IUserInfo = {
|
|
83
|
-
/**
|
|
84
|
-
* 用户ID
|
|
85
|
-
*/
|
|
86
|
-
id: string;
|
|
87
|
-
/**
|
|
88
|
-
* 用户归因类型 1:信息流;2:工具版;3:新用户;4:老用户;5:未归因用户
|
|
89
|
-
*/
|
|
90
|
-
user_type: 1 | 2 | 3 | 4 | 5;
|
|
91
|
-
/**
|
|
92
|
-
* 用户组 - 0:对照组A;1:测试组B
|
|
93
|
-
*/
|
|
94
|
-
user_ab: 0 | 1;
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* 投放渠道参数
|
|
98
|
-
*/
|
|
99
|
-
export type IDeliverOption = {
|
|
100
|
-
/**
|
|
101
|
-
* 书籍ID
|
|
102
|
-
*/
|
|
103
|
-
book_id: string;
|
|
104
|
-
/**
|
|
105
|
-
* 章节ID
|
|
106
|
-
*/
|
|
107
|
-
chapter_id: string;
|
|
108
|
-
/**
|
|
109
|
-
* 过去的书籍ID
|
|
110
|
-
*/
|
|
111
|
-
past_book_id: string;
|
|
112
|
-
};
|
|
113
|
-
declare class CommonSettings {
|
|
114
|
-
static instance: any;
|
|
115
|
-
/**
|
|
116
|
-
*
|
|
117
|
-
* @param {object} args
|
|
118
|
-
* @param {string} args.sign 初始化标识
|
|
119
|
-
* @returns {CommonSettings}
|
|
120
|
-
*/
|
|
121
|
-
static build(args: {
|
|
122
|
-
sign: string;
|
|
123
|
-
}): CommonSettings;
|
|
124
|
-
/**
|
|
125
|
-
*
|
|
126
|
-
* @returns {CommonSettings}
|
|
127
|
-
*/
|
|
128
|
-
static getInstance(): CommonSettings;
|
|
129
|
-
/**
|
|
130
|
-
*
|
|
131
|
-
* @param {object} args
|
|
132
|
-
* @param {string} args.sign 初始化标识
|
|
133
|
-
* @returns {CommonSettings}
|
|
134
|
-
*/
|
|
135
|
-
static "new"(args: {
|
|
136
|
-
sign: string;
|
|
137
|
-
}): CommonSettings;
|
|
138
|
-
/**
|
|
139
|
-
* @param {object} args
|
|
140
|
-
* @param {string} args.sign 初始化标识
|
|
141
|
-
* @param {string} args.loginInfo 登录信息
|
|
142
|
-
*/
|
|
143
|
-
constructor(args: {
|
|
144
|
-
sign: string;
|
|
145
|
-
loginInfo: string;
|
|
146
|
-
});
|
|
147
|
-
_initSign: string;
|
|
148
|
-
_loginInfo: {};
|
|
149
|
-
/**
|
|
150
|
-
* 获取用户配置
|
|
151
|
-
* @returns {IUserConfig}
|
|
152
|
-
*/
|
|
153
|
-
getUserConfig(): IUserConfig;
|
|
154
|
-
/**
|
|
155
|
-
* 获取用户信息
|
|
156
|
-
* @returns {IUserInfo}
|
|
157
|
-
*/
|
|
158
|
-
getUserInfo(): IUserInfo;
|
|
159
|
-
/**
|
|
160
|
-
* 获取APP配置
|
|
161
|
-
* @returns {ISysConfig}
|
|
162
|
-
*/
|
|
163
|
-
getSysConfig(): ISysConfig;
|
|
164
|
-
/**
|
|
165
|
-
* 获取用户ID
|
|
166
|
-
* @returns
|
|
167
|
-
*/
|
|
168
|
-
getUserId(): string;
|
|
169
|
-
/**
|
|
170
|
-
* 1:测试组A 一般指全部功能都开启; 0:对照组B一般会有一个或者几个功能关闭
|
|
171
|
-
* @returns
|
|
172
|
-
*/
|
|
173
|
-
getUserAB(): number;
|
|
174
|
-
/**
|
|
175
|
-
* 站位方法,没有任何左右
|
|
176
|
-
* @returns
|
|
177
|
-
*/
|
|
178
|
-
placeholder(): any;
|
|
179
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
export default RewardAdLaunch;
|
|
2
|
-
export type IRewordAdConfig = import("../typings/ad.js").IRewordAdConfig;
|
|
3
|
-
export type IConstructArgs = import("../typings/ad.js").IConstructArgs;
|
|
4
|
-
/**
|
|
5
|
-
* @typedef {import('../typings/ad.js').IRewordAdConfig} IRewordAdConfig
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* @typedef {import('../typings/ad.js').IConstructArgs} IConstructArgs
|
|
9
|
-
*/
|
|
10
|
-
declare class RewardAdLaunch extends RewardAdNovel {
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @param {IConstructArgs} args
|
|
14
|
-
* @returns {RewardAdLaunch}
|
|
15
|
-
*/
|
|
16
|
-
static build(args: IConstructArgs): RewardAdLaunch;
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @returns {RewardAdLaunch}
|
|
20
|
-
*/
|
|
21
|
-
static getInstance(): RewardAdLaunch;
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
* @param {IConstructArgs} args
|
|
25
|
-
* @returns {RewardAdLaunch}
|
|
26
|
-
*/
|
|
27
|
-
static "new"(args: IConstructArgs): RewardAdLaunch;
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* @type {Promise.<unknown>}
|
|
31
|
-
*/
|
|
32
|
-
static ad: Promise<unknown>;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* @param {object} options 启动参数
|
|
36
|
-
* @param {string} options.path 启动路径
|
|
37
|
-
* @param {object} options.query 启动参数
|
|
38
|
-
* @param {string} options.query.promotionid 推广参数
|
|
39
|
-
* @param {(args: { options: object } | null) => Promise.<void>} callback 回调
|
|
40
|
-
* @returns
|
|
41
|
-
*/
|
|
42
|
-
static satisfy(options: {
|
|
43
|
-
path: string;
|
|
44
|
-
query: {
|
|
45
|
-
promotionid: string;
|
|
46
|
-
};
|
|
47
|
-
}, callback: (args: {
|
|
48
|
-
options: object;
|
|
49
|
-
} | null) => Promise<void>): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* @param {object} args
|
|
52
|
-
* @param {string} args.sign 初始化标识
|
|
53
|
-
*/
|
|
54
|
-
constructor(args: {
|
|
55
|
-
sign: string;
|
|
56
|
-
});
|
|
57
|
-
_scene: 0;
|
|
58
|
-
launchSettings: RewardAdLaunchSettings;
|
|
59
|
-
}
|
|
60
|
-
import RewardAdNovel from './RewardAdNovel';
|
|
61
|
-
declare class RewardAdLaunchSettings {
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
64
|
-
* @param {object} args
|
|
65
|
-
* @param {string} args.sign 初始化标识
|
|
66
|
-
* @returns {RewardAdLaunchSettings}
|
|
67
|
-
*/
|
|
68
|
-
static "new"(args: {
|
|
69
|
-
sign: string;
|
|
70
|
-
}): RewardAdLaunchSettings;
|
|
71
|
-
_fixedFrequency: any;
|
|
72
|
-
frequency: {
|
|
73
|
-
total: number;
|
|
74
|
-
current: number;
|
|
75
|
-
};
|
|
76
|
-
commonSettings: CommonSettings;
|
|
77
|
-
countRecorder: CountRecorder;
|
|
78
|
-
/**
|
|
79
|
-
* 获取启动广告的展示次数
|
|
80
|
-
* @returns {number} 启动广告的展示次数配置,如果没有配置则返回0
|
|
81
|
-
*/
|
|
82
|
-
_adTimes(): number;
|
|
83
|
-
updateToday(): void;
|
|
84
|
-
updateFrequency(): void;
|
|
85
|
-
remainFrequency(): number;
|
|
86
|
-
timesPerFrequency(): number;
|
|
87
|
-
_remain(): number;
|
|
88
|
-
condition(): boolean;
|
|
89
|
-
}
|
|
90
|
-
import CommonSettings from './CommonSettings';
|
|
91
|
-
import { CountRecorder } from './CountRecorder';
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
export default RewardAdLaunchAlone;
|
|
2
|
-
export type IRewordAdConfig = import("../typings/ad.js").IRewordAdConfig;
|
|
3
|
-
export type IConstructArgs = import("../typings/ad.js").IConstructArgs;
|
|
4
|
-
export type CallbackCollection = import("../typings/ad.js").CallbackCollection;
|
|
5
|
-
/**
|
|
6
|
-
* @typedef {import('../typings/ad.js').IRewordAdConfig} IRewordAdConfig
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* @typedef {import('../typings/ad.js').IConstructArgs} IConstructArgs
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* @typedef {import('../typings/ad.js').CallbackCollection} CallbackCollection
|
|
13
|
-
*/
|
|
14
|
-
declare class RewardAdLaunchAlone extends RewardAdNovel {
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* @param {IConstructArgs} args
|
|
18
|
-
* @returns {RewardAdLaunchAlone}
|
|
19
|
-
*/
|
|
20
|
-
static build(args: IConstructArgs): RewardAdLaunchAlone;
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* @returns {RewardAdLaunchAlone}
|
|
24
|
-
*/
|
|
25
|
-
static getInstance(): RewardAdLaunchAlone;
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* @param {IConstructArgs} args
|
|
29
|
-
* @returns {RewardAdLaunchAlone}
|
|
30
|
-
*/
|
|
31
|
-
static "new"(args: IConstructArgs): RewardAdLaunchAlone;
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* @type {Promise.<unknown>}
|
|
35
|
-
*/
|
|
36
|
-
static ad: Promise<unknown>;
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
* @param {object} options 启动参数
|
|
40
|
-
* @param {string} options.path 启动路径
|
|
41
|
-
* @param {object} options.query 启动参数
|
|
42
|
-
* @param {string} options.query.promotionid 推广参数
|
|
43
|
-
* @param {() => Promise.<void>} callback 回调
|
|
44
|
-
* @returns
|
|
45
|
-
*/
|
|
46
|
-
static satisfy(options: {
|
|
47
|
-
path: string;
|
|
48
|
-
query: {
|
|
49
|
-
promotionid: string;
|
|
50
|
-
};
|
|
51
|
-
}, callback: () => Promise<void>): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* @param {object} args
|
|
54
|
-
* @param {string} args.sign 初始化标识
|
|
55
|
-
* @param {IRewordAdConfig=} args.adConfig 激励视频参数 (可选)
|
|
56
|
-
*/
|
|
57
|
-
constructor(args: {
|
|
58
|
-
sign: string;
|
|
59
|
-
adConfig?: IRewordAdConfig | undefined;
|
|
60
|
-
});
|
|
61
|
-
_scene: 9;
|
|
62
|
-
}
|
|
63
|
-
import RewardAdNovel from './RewardAdNovel';
|
|
@@ -1,384 +0,0 @@
|
|
|
1
|
-
export default RewardAdNovel;
|
|
2
|
-
export type IRewordAdConfig = import("../typings/ad.js").IRewordAdConfig;
|
|
3
|
-
export type ICallbackArgs = {
|
|
4
|
-
/**
|
|
5
|
-
* 广告执行场景
|
|
6
|
-
*/
|
|
7
|
-
scene: number;
|
|
8
|
-
/**
|
|
9
|
-
* 是否看完
|
|
10
|
-
*/
|
|
11
|
-
isEnded: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* 完整观看次数
|
|
14
|
-
*/
|
|
15
|
-
count: number;
|
|
16
|
-
/**
|
|
17
|
-
* 执行下一个任务的回调函数,手动调用以继续执行流程[end]
|
|
18
|
-
*/
|
|
19
|
-
end?: () => void;
|
|
20
|
-
/**
|
|
21
|
-
* 执行下一个任务的回调函数, 手动调用以继续执行流程[circle]
|
|
22
|
-
*/
|
|
23
|
-
circle?: (args: {
|
|
24
|
-
ignoreRemain: boolean;
|
|
25
|
-
scene: number;
|
|
26
|
-
}) => void;
|
|
27
|
-
};
|
|
28
|
-
export type IConnection = {
|
|
29
|
-
/**
|
|
30
|
-
* 广告中途退出回调
|
|
31
|
-
*/
|
|
32
|
-
onHalfway?: (args: ICallbackArgs) => void;
|
|
33
|
-
/**
|
|
34
|
-
* 广告展示回调
|
|
35
|
-
*/
|
|
36
|
-
onShow?: (args: ICallbackArgs) => void;
|
|
37
|
-
/**
|
|
38
|
-
* 广告执行成功回调
|
|
39
|
-
*/
|
|
40
|
-
onFinish?: (args: ICallbackArgs) => void;
|
|
41
|
-
/**
|
|
42
|
-
* 广告执行成功回调
|
|
43
|
-
*/
|
|
44
|
-
onAlways?: (args: ICallbackArgs) => void;
|
|
45
|
-
/**
|
|
46
|
-
* 广告执行失败回调
|
|
47
|
-
*/
|
|
48
|
-
onError?: (e: unknown) => void;
|
|
49
|
-
};
|
|
50
|
-
export type IConstructArgs = {
|
|
51
|
-
/**
|
|
52
|
-
* 初始化标识
|
|
53
|
-
*/
|
|
54
|
-
sign?: string;
|
|
55
|
-
/**
|
|
56
|
-
* 是否保留tt激励视频广告实例
|
|
57
|
-
*/
|
|
58
|
-
preserveOnEnd?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* 是否需要在超时情况下结束广告
|
|
61
|
-
*/
|
|
62
|
-
needEndOnTimeout?: boolean;
|
|
63
|
-
/**
|
|
64
|
-
* 激励视频参数 (可选)
|
|
65
|
-
*/
|
|
66
|
-
adConfig?: IRewordAdConfig | undefined;
|
|
67
|
-
/**
|
|
68
|
-
* 回调集合
|
|
69
|
-
*/
|
|
70
|
-
collection?: IConnection | undefined;
|
|
71
|
-
};
|
|
72
|
-
export type ICloseArgs = {
|
|
73
|
-
/**
|
|
74
|
-
* 是否看完
|
|
75
|
-
*/
|
|
76
|
-
isEnded: boolean;
|
|
77
|
-
/**
|
|
78
|
-
* 完整观看次数
|
|
79
|
-
*/
|
|
80
|
-
count: number;
|
|
81
|
-
};
|
|
82
|
-
export type IEndArgs = {
|
|
83
|
-
/**
|
|
84
|
-
* 是否解锁全部
|
|
85
|
-
*/
|
|
86
|
-
can_unlock_all?: boolean;
|
|
87
|
-
/**
|
|
88
|
-
* 是否解锁小说
|
|
89
|
-
*/
|
|
90
|
-
can_unlock_novel?: boolean;
|
|
91
|
-
/**
|
|
92
|
-
* 剩余次数
|
|
93
|
-
*/
|
|
94
|
-
remain?: number;
|
|
95
|
-
/**
|
|
96
|
-
* 结束类型
|
|
97
|
-
*/
|
|
98
|
-
end_type?: "halfway" | "finished";
|
|
99
|
-
};
|
|
100
|
-
export type IRewardedVideoAd = {
|
|
101
|
-
/**
|
|
102
|
-
* 显示激励视频广告
|
|
103
|
-
*/
|
|
104
|
-
show: () => Promise<void>;
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* @typedef {import('../typings/ad.js').IRewordAdConfig} IRewordAdConfig
|
|
108
|
-
*/
|
|
109
|
-
/**
|
|
110
|
-
* @typedef ICallbackArgs
|
|
111
|
-
* @property {number} scene 广告执行场景
|
|
112
|
-
* @property {boolean} isEnded 是否看完
|
|
113
|
-
* @property {number} count 完整观看次数
|
|
114
|
-
* @property {() => void} [end] 执行下一个任务的回调函数,手动调用以继续执行流程[end]
|
|
115
|
-
* @property {(args: {ignoreRemain: boolean, scene: number}) => void} [circle] 执行下一个任务的回调函数, 手动调用以继续执行流程[circle]
|
|
116
|
-
*
|
|
117
|
-
*/
|
|
118
|
-
/**
|
|
119
|
-
* @typedef IConnection
|
|
120
|
-
* @property {(args: ICallbackArgs) => void} [onHalfway] 广告中途退出回调
|
|
121
|
-
* @property {(args: ICallbackArgs) => void} [onShow] 广告展示回调
|
|
122
|
-
* @property {(args: ICallbackArgs) => void} [onFinish] 广告执行成功回调
|
|
123
|
-
* @property {(args: ICallbackArgs) => void} [onAlways] 广告执行成功回调
|
|
124
|
-
* @property {(e:unknown) => void} [onError] 广告执行失败回调
|
|
125
|
-
*/
|
|
126
|
-
/**
|
|
127
|
-
* @typedef IConstructArgs
|
|
128
|
-
* @property {string} [sign] 初始化标识
|
|
129
|
-
* @property {boolean} [preserveOnEnd] 是否保留tt激励视频广告实例
|
|
130
|
-
* @property {boolean} [needEndOnTimeout] 是否需要在超时情况下结束广告
|
|
131
|
-
* @property {IRewordAdConfig=} [adConfig] 激励视频参数 (可选)
|
|
132
|
-
* @property {IConnection=} [collection] 回调集合
|
|
133
|
-
*/
|
|
134
|
-
/**
|
|
135
|
-
* @typedef ICloseArgs
|
|
136
|
-
* @property {boolean} isEnded 是否看完
|
|
137
|
-
* @property {number} count 完整观看次数
|
|
138
|
-
*/
|
|
139
|
-
/**
|
|
140
|
-
* @typedef IEndArgs
|
|
141
|
-
* @property {boolean} [can_unlock_all] 是否解锁全部
|
|
142
|
-
* @property {boolean} [can_unlock_novel] 是否解锁小说
|
|
143
|
-
* @property {number} [remain] 剩余次数
|
|
144
|
-
* @property {'halfway' | 'finished'} [end_type] 结束类型
|
|
145
|
-
*
|
|
146
|
-
*/
|
|
147
|
-
/**
|
|
148
|
-
* @typedef IRewardedVideoAd
|
|
149
|
-
* @property {() => Promise.<void>} show 显示激励视频广告
|
|
150
|
-
*/
|
|
151
|
-
declare class RewardAdNovel extends RewardAdFather {
|
|
152
|
-
/**
|
|
153
|
-
*
|
|
154
|
-
* @param {IConstructArgs} args
|
|
155
|
-
* @returns {RewardAdNovel}
|
|
156
|
-
*/
|
|
157
|
-
static build(args: IConstructArgs): RewardAdNovel;
|
|
158
|
-
/**
|
|
159
|
-
*
|
|
160
|
-
* @returns {RewardAdNovel}
|
|
161
|
-
*/
|
|
162
|
-
static getInstance(): RewardAdNovel;
|
|
163
|
-
/**
|
|
164
|
-
*
|
|
165
|
-
* @param {IConstructArgs} args
|
|
166
|
-
* @returns {RewardAdNovel}
|
|
167
|
-
*/
|
|
168
|
-
static "new"(args: IConstructArgs): RewardAdNovel;
|
|
169
|
-
/**
|
|
170
|
-
* @param {IConstructArgs} args
|
|
171
|
-
*
|
|
172
|
-
*/
|
|
173
|
-
constructor(args: IConstructArgs);
|
|
174
|
-
_onHalfway: any;
|
|
175
|
-
_onShow: any;
|
|
176
|
-
_onFinish: any;
|
|
177
|
-
_onAlways: any;
|
|
178
|
-
_onError: any;
|
|
179
|
-
_alwaysCallback: any;
|
|
180
|
-
_halfwayCallback: any;
|
|
181
|
-
_finishedCallback: any;
|
|
182
|
-
_resolve: any;
|
|
183
|
-
_next: any;
|
|
184
|
-
/** @type {number} 广告执行场景 */
|
|
185
|
-
_scene: number;
|
|
186
|
-
_adTimeout: any;
|
|
187
|
-
_adTimeoutTime: number;
|
|
188
|
-
_adBeforeShowTimer: any;
|
|
189
|
-
_adBeforeShowTime: number;
|
|
190
|
-
_adSpeedCloseTimer: any;
|
|
191
|
-
_adSpeedCloseTime: number;
|
|
192
|
-
_needEndOnTimeout: boolean;
|
|
193
|
-
/** @deprecated TODO 移除 */
|
|
194
|
-
_needSpeedEndOnTimeout: boolean;
|
|
195
|
-
bindAdCloseLister: any;
|
|
196
|
-
bindAdErrorLister: any;
|
|
197
|
-
bindAdLoadLister: any;
|
|
198
|
-
bindApiAdErrorLister: any;
|
|
199
|
-
_bindShiftCloseLister: any;
|
|
200
|
-
_bindShiftErrorLister: any;
|
|
201
|
-
/**
|
|
202
|
-
* 初始化
|
|
203
|
-
* 子类可以选择覆盖此方法,或使用默认实现
|
|
204
|
-
* @param {IRewordAdConfig} params
|
|
205
|
-
* @param {(v: IRewardedVideoAd) => void} [callback] 初始化成功回调
|
|
206
|
-
* @returns {this} 当前实例
|
|
207
|
-
*/
|
|
208
|
-
initialize(args: any, callback?: (v: IRewardedVideoAd) => void): this;
|
|
209
|
-
_initAdLister(): void;
|
|
210
|
-
/**
|
|
211
|
-
* @param {object} args
|
|
212
|
-
* @param {number} [args.retry] 重试次数
|
|
213
|
-
*/
|
|
214
|
-
_initNovelConfig(args: {
|
|
215
|
-
retry?: number;
|
|
216
|
-
}): void;
|
|
217
|
-
novelConfig: RewardAdNovelConfig;
|
|
218
|
-
_onInnerExecuteBefore(): any;
|
|
219
|
-
_onInnerAdShowSuccess(): any;
|
|
220
|
-
/**
|
|
221
|
-
* 广告展示超时设置
|
|
222
|
-
* @param {object} args
|
|
223
|
-
* @param {string} args.scene 广告执行场景 必填
|
|
224
|
-
* @param {Function} args.end 结束当前广告任务的回调函数 必填
|
|
225
|
-
*/
|
|
226
|
-
_setAdTimeout(args: {
|
|
227
|
-
scene: string;
|
|
228
|
-
end: Function;
|
|
229
|
-
}): void;
|
|
230
|
-
/**
|
|
231
|
-
* 广告展示前定时器
|
|
232
|
-
* @param {object} args
|
|
233
|
-
* @param {string} args.scene 广告执行场景 必填
|
|
234
|
-
* @param {Function} args.prelude 广告展示前回调函数 可选
|
|
235
|
-
*/
|
|
236
|
-
_adPreludeInterval(args: {
|
|
237
|
-
scene: string;
|
|
238
|
-
prelude: Function;
|
|
239
|
-
}): void;
|
|
240
|
-
_clearAdTimeout(): void;
|
|
241
|
-
get rewardAd(): any;
|
|
242
|
-
/**
|
|
243
|
-
* 确保广告按顺序执行
|
|
244
|
-
* @param {Object} [ctx] 上下文对象,用于传递数据和状态
|
|
245
|
-
* @param {IRewordAdConfig} [ctx.options] 广告执行选项
|
|
246
|
-
* @param {import('../typings/ad.js').CallbackCollection} [ctx.collection] 回调集合
|
|
247
|
-
*
|
|
248
|
-
* @returns {Promise.<IEndArgs & ICloseArgs | Undefined>}
|
|
249
|
-
*/
|
|
250
|
-
addExecuteManager(ctx?: {
|
|
251
|
-
options?: IRewordAdConfig;
|
|
252
|
-
collection?: import("../typings/ad.js").CallbackCollection;
|
|
253
|
-
}): Promise<(IEndArgs & ICloseArgs) | undefined>;
|
|
254
|
-
/**
|
|
255
|
-
* @param {object} [ctx] 广告执行上下文
|
|
256
|
-
* @param {import('../typings/ad.js').IRewordAdConfig} [ctx.options] 广告执行选项
|
|
257
|
-
* @param {import('../typings/ad.js').CallbackCollection} [ctx.collection] 回调集合
|
|
258
|
-
* @param {Function} next 执行下一个任务的回调函数,手动调用以继续执行流程
|
|
259
|
-
*
|
|
260
|
-
* @returns {Promise.<IEndArgs & ICloseArgs | Undefined>}
|
|
261
|
-
*/
|
|
262
|
-
ad(ctx?: {
|
|
263
|
-
options?: import("../typings/ad.js").IRewordAdConfig;
|
|
264
|
-
collection?: import("../typings/ad.js").CallbackCollection;
|
|
265
|
-
}, next?: Function): Promise<(IEndArgs & ICloseArgs) | undefined>;
|
|
266
|
-
/**
|
|
267
|
-
* @param {object} [ctx] 广告执行上下文
|
|
268
|
-
* @param {object} [ctx.options] 广告执行选项
|
|
269
|
-
* @param {number} [ctx.options.scene] 广告执行场景
|
|
270
|
-
* @param {object} ctx.collection 回调集合
|
|
271
|
-
* @param {(v?: unknown) => void} ctx.collection.resolve 广告执行成功的回调函数
|
|
272
|
-
* @param {(v?: unknown) => void} [ctx.collection.reject] 广告执行失败的回调函数
|
|
273
|
-
* @param {(v?: unknown) => void} [ctx.collection.before] 广告执行前的回调函数
|
|
274
|
-
* @param {(v?: unknown) => void} [ctx.collection.success] 广告执行成功的回调函数
|
|
275
|
-
* @param {(v?: unknown) => void} [ctx.collection.prelude] 拉起广告前计时的回调函数
|
|
276
|
-
* @param {Function} next 执行下一个任务的回调函数,手动调用以继续执行流程
|
|
277
|
-
*/
|
|
278
|
-
_adInner(ctx?: {
|
|
279
|
-
options?: {
|
|
280
|
-
scene?: number;
|
|
281
|
-
};
|
|
282
|
-
collection: {
|
|
283
|
-
resolve: (v?: unknown) => void;
|
|
284
|
-
reject?: (v?: unknown) => void;
|
|
285
|
-
before?: (v?: unknown) => void;
|
|
286
|
-
success?: (v?: unknown) => void;
|
|
287
|
-
prelude?: (v?: unknown) => void;
|
|
288
|
-
};
|
|
289
|
-
}, next?: Function): void;
|
|
290
|
-
_before: (v?: unknown) => void;
|
|
291
|
-
_success: (v?: unknown) => void;
|
|
292
|
-
/**
|
|
293
|
-
* 广告加载
|
|
294
|
-
* @returns
|
|
295
|
-
*/
|
|
296
|
-
adLoad(): Promise<void>;
|
|
297
|
-
/**
|
|
298
|
-
* 广告展示
|
|
299
|
-
* @returns
|
|
300
|
-
*/
|
|
301
|
-
adShow(): Promise<void>;
|
|
302
|
-
_outerCloseCallback(args: any): void;
|
|
303
|
-
_outerHalfwayCallback(args: any): void;
|
|
304
|
-
_outerFinishedCallback(args: any): void;
|
|
305
|
-
/**
|
|
306
|
-
* 关闭激励视频
|
|
307
|
-
* @param {ICloseArgs} args
|
|
308
|
-
*/
|
|
309
|
-
adCloseLister(args: ICloseArgs): void;
|
|
310
|
-
adErrorLister(e: any): void;
|
|
311
|
-
apiAdErrorLister(e: any): void;
|
|
312
|
-
/**
|
|
313
|
-
* 激励视频广告组件**成功**拉取广告素材时会触发
|
|
314
|
-
* 创建激励时候后会自动拉取广告素材,如果广告拉取成功,也会触发此事件,不管是否调用show方法
|
|
315
|
-
* @param {unknown} e
|
|
316
|
-
*/
|
|
317
|
-
adLoadLister(e: unknown): void;
|
|
318
|
-
adDestroy(): void;
|
|
319
|
-
_shiftCloseLister(args: any): void;
|
|
320
|
-
_shiftErrorLister(args: any): void;
|
|
321
|
-
/**
|
|
322
|
-
* 手动出栈
|
|
323
|
-
*/
|
|
324
|
-
shift(): void;
|
|
325
|
-
}
|
|
326
|
-
import RewardAdFather from './RewardAdFather';
|
|
327
|
-
declare class RewardAdNovelConfig {
|
|
328
|
-
/**
|
|
329
|
-
*
|
|
330
|
-
* @param {object} args
|
|
331
|
-
* @param {string} args.sign 初始化标识
|
|
332
|
-
* @param {number} [args.retry] 重试次数
|
|
333
|
-
* @returns {RewardAdNovelConfig}
|
|
334
|
-
*/
|
|
335
|
-
static "new"(args: {
|
|
336
|
-
sign: string;
|
|
337
|
-
retry?: number;
|
|
338
|
-
}): RewardAdNovelConfig;
|
|
339
|
-
/**
|
|
340
|
-
*
|
|
341
|
-
* @param {object} [args]
|
|
342
|
-
* @param {number} [args.retry]
|
|
343
|
-
*/
|
|
344
|
-
constructor(args?: {
|
|
345
|
-
retry?: number;
|
|
346
|
-
});
|
|
347
|
-
free_incentive_frequency: number;
|
|
348
|
-
frequency: {
|
|
349
|
-
total: number;
|
|
350
|
-
current: number;
|
|
351
|
-
};
|
|
352
|
-
commonSettings: CommonSettings;
|
|
353
|
-
/**
|
|
354
|
-
*
|
|
355
|
-
* @param {object} [args]
|
|
356
|
-
* @param {number} [args.retry]
|
|
357
|
-
*/
|
|
358
|
-
_init(args?: {
|
|
359
|
-
retry?: number;
|
|
360
|
-
}): void;
|
|
361
|
-
/**
|
|
362
|
-
*
|
|
363
|
-
* @param {object} [args]
|
|
364
|
-
* @param {number} [args.retry]
|
|
365
|
-
*/
|
|
366
|
-
_adTimes(args?: {
|
|
367
|
-
retry?: number;
|
|
368
|
-
}): void;
|
|
369
|
-
reset(): void;
|
|
370
|
-
updateRetry(): void;
|
|
371
|
-
remain(): number;
|
|
372
|
-
options(): {
|
|
373
|
-
multiton: boolean;
|
|
374
|
-
multitonRewardTimes: number;
|
|
375
|
-
multitonRewardMsg: string[];
|
|
376
|
-
progressTip: boolean;
|
|
377
|
-
} | {
|
|
378
|
-
multiton?: undefined;
|
|
379
|
-
multitonRewardTimes?: undefined;
|
|
380
|
-
multitonRewardMsg?: undefined;
|
|
381
|
-
progressTip?: undefined;
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
import CommonSettings from './CommonSettings';
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
export default RewardAdReadingLoad;
|
|
2
|
-
export type ISysConfig = {
|
|
3
|
-
/**
|
|
4
|
-
* 再看一次配置
|
|
5
|
-
*/
|
|
6
|
-
free_incentive_frequency?: number | undefined;
|
|
7
|
-
/**
|
|
8
|
-
* 自定义解锁弹窗配置
|
|
9
|
-
*/
|
|
10
|
-
c_unlock_pop_enable?: number | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* 返回书城激励视频每日展示次数 0 不展示 具体数量展示几次
|
|
13
|
-
*/
|
|
14
|
-
read_load_times?: number | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type IRewordAdConfig = import("../typings/ad.js").IRewordAdConfig;
|
|
17
|
-
export type IConstructArgs = import("../typings/ad.js").IConstructArgs;
|
|
18
|
-
/**
|
|
19
|
-
* @typedef {import('../typings/ad.js').IRewordAdConfig} IRewordAdConfig
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* @typedef {import('../typings/ad.js').IConstructArgs} IConstructArgs
|
|
23
|
-
*/
|
|
24
|
-
declare class RewardAdReadingLoad extends RewardAdNovel {
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* @param {IConstructArgs} args
|
|
28
|
-
* @returns {RewardAdReadingLoad}
|
|
29
|
-
*/
|
|
30
|
-
static build(args: IConstructArgs): RewardAdReadingLoad;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* @returns {RewardAdReadingLoad}
|
|
34
|
-
*/
|
|
35
|
-
static getInstance(): RewardAdReadingLoad;
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* @param {IConstructArgs} args
|
|
39
|
-
* @returns {RewardAdReadingLoad}
|
|
40
|
-
*/
|
|
41
|
-
static "new"(args: IConstructArgs): RewardAdReadingLoad;
|
|
42
|
-
constructor(args: any);
|
|
43
|
-
loadSettings: RewardAdReadingLoadSettings;
|
|
44
|
-
/**
|
|
45
|
-
* @param {object} options
|
|
46
|
-
* @param {(con:boolean, options:object) => void} [callback]
|
|
47
|
-
*/
|
|
48
|
-
satisfy(options: object, callback?: (con: boolean, options: object) => void): void | Promise<void>;
|
|
49
|
-
}
|
|
50
|
-
import RewardAdNovel from './RewardAdNovel';
|
|
51
|
-
declare class RewardAdReadingLoadSettings {
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
* @param {object} args
|
|
55
|
-
* @param {string} args.sign 初始化标识
|
|
56
|
-
* @returns {RewardAdReadingLoadSettings}
|
|
57
|
-
*/
|
|
58
|
-
static "new"(args: {
|
|
59
|
-
sign: string;
|
|
60
|
-
}): RewardAdReadingLoadSettings;
|
|
61
|
-
frequency: {
|
|
62
|
-
total: number;
|
|
63
|
-
current: number;
|
|
64
|
-
};
|
|
65
|
-
commonSettings: CommonSettings;
|
|
66
|
-
storage: Storage;
|
|
67
|
-
_init(): void;
|
|
68
|
-
/**
|
|
69
|
-
* 获取返回广告的展示次数
|
|
70
|
-
* @returns {number} 返回广告的展示次数配置,如果没有配置则返回0
|
|
71
|
-
*/
|
|
72
|
-
_adTimes(): number;
|
|
73
|
-
_safeLocalValue(v: any): any;
|
|
74
|
-
_initLocalTimes(): void;
|
|
75
|
-
_initFrequency(): void;
|
|
76
|
-
updateFrequency(): void;
|
|
77
|
-
remainFrequency(): number;
|
|
78
|
-
updateToday(): void;
|
|
79
|
-
_remain(): number;
|
|
80
|
-
condition(): boolean;
|
|
81
|
-
}
|
|
82
|
-
import CommonSettings from './CommonSettings';
|
|
83
|
-
import Storage from './Storage';
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export default RewardAdReadingUnload;
|
|
2
|
-
export type ISysConfig = {
|
|
3
|
-
/**
|
|
4
|
-
* 再看一次配置
|
|
5
|
-
*/
|
|
6
|
-
free_incentive_frequency?: number | undefined;
|
|
7
|
-
/**
|
|
8
|
-
* 自定义解锁弹窗配置
|
|
9
|
-
*/
|
|
10
|
-
c_unlock_pop_enable?: number | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* 返回书城激励视频每日展示次数 0 不展示 具体数量展示几次
|
|
13
|
-
*/
|
|
14
|
-
read_page_back_ad?: number | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type IRewordAdConfig = import("../typings/ad.js").IRewordAdConfig;
|
|
17
|
-
export type IConstructArgs = import("../typings/ad.js").IConstructArgs;
|
|
18
|
-
/**
|
|
19
|
-
* @typedef {import('../typings/ad.js').IRewordAdConfig} IRewordAdConfig
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* @typedef {import('../typings/ad.js').IConstructArgs} IConstructArgs
|
|
23
|
-
*/
|
|
24
|
-
declare class RewardAdReadingUnload extends RewardAdNovel {
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* @param {IConstructArgs} args
|
|
28
|
-
* @returns {RewardAdReadingUnload}
|
|
29
|
-
*/
|
|
30
|
-
static build(args: IConstructArgs): RewardAdReadingUnload;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* @param {IConstructArgs} args
|
|
34
|
-
* @returns {RewardAdReadingUnload}
|
|
35
|
-
*/
|
|
36
|
-
static "new"(args: IConstructArgs): RewardAdReadingUnload;
|
|
37
|
-
/**
|
|
38
|
-
* @param {object} options
|
|
39
|
-
* @param {(con:boolean, options:object) => void} [callback]
|
|
40
|
-
*/
|
|
41
|
-
static satisfy(options: object, callback?: (con: boolean, options: object) => void): void | Promise<void>;
|
|
42
|
-
constructor(args: any);
|
|
43
|
-
}
|
|
44
|
-
import RewardAdNovel from './RewardAdNovel';
|