utiller 1.0.405 → 1.0.407

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var ERRORs={2001:{message:"update item, id is required"},3001:{message:"get table error"},3002:{message:"show schema error"},3003:{message:"get object schema stmt error"},3004:{message:"lazy insert"},3005:{message:"drop all fail"},3006:{message:"delete record error"},3007:{message:"drop table error"},3008:{message:"orderBy,order SQLRules Error"},3009:{message:"createTableAndIndex, create table fail"},3010:{message:"alter columns fail"},3011:{message:"update record fail"},3012:{message:"create index fail"},3013:{message:"create table fail"},3014:{message:"insertRecord"},3015:{message:"fetch indexes error"},3016:{message:"more than 1 unique_index in table"},4001:{message:"priority state is wrong"},4002:{message:"task type isn't function"},4003:{message:"task type isn't array"},4004:{message:"task not exist when try to delete"},4005:{message:"state not valid"},4006:{message:"task param should be async function"},4007:{message:"\u9664\u4E86runByTask\u4EE5\u5916, getTaskInfoDependOnPriority() \u4E0D\u80FD\u8D70\u5230\u9019\u88E1, taskQueue\u88E1\u9762\u4E0D\u80FD\u6C92\u6709Task"},4008:{message:"\u5982\u679C\u8981\u7528runInBackground\u7684task\u767C\u751FError,\u5C31\u5FC5\u9808\u8A2D\u5B9A backgoundtasklistener,\u4E0D\u80FD\u8B93task\u767C\u751F\u932F\u8AA4\u800C\u6C92\u6709\u7D00\u9304"},4009:{message:"\u5982\u679C\u8D70\u5230\u4E86\u9019\u4E00\u5C64, \u4EE3\u8868 Pooller runInBackGround() \u5728\u7121\u9810\u671F\u7684\u72C0\u6CC1\u4E0B\u88AB\u505C\u6B62\u4E86, \u4EE3\u8868assign task throw ERROR, \u8ACB\u5584\u7528setTaskFailHandler()"},4010:{message:"assign task timeout happen"},4011:{message:"\u4E0D\u80FD\u8D70\u5230\u9019\u88E1, \u76EE\u524D\u88AB\u52D5\u5F0F\u7684\u6A5F\u5236\u53EA\u652F\u63F4runByEachTask, runByParams"},8001:{message:"append file fail"},8002:{message:"open dir fail"},8003:{message:"not file nor dictionary,should get it"},8004:{message:"package exist in current path"},8005:{message:"input name is not valid"},8006:{message:"file exists when trying to copy"},8007:{message:"alias exist in shell script"},8008:{message:"persist folder fail"},8009:{message:"copy folder should be exist"},8010:{message:"the key can't exceed the length of 22"},8011:{message:"beautify class fail,but let it pass"},8012:{message:"incest props should define view,type either"},8013:{message:"render view type is out of condition, check why"},8014:{message:"type is not supported"},8015:{message:"build firestore error"},8016:{message:"class generator is necessary!!!"},8017:{message:"className type is not valid!"},8018:{message:"this platform is not supported"},8019:{message:"find no source.js file"},8020:{message:"package.json has something wrong"},9999:{message:"super stupid error"},7001:{message:"state is wrong"},7002:{message:"initial should be override"},7003:{message:"css style duplicated defined"},7004:{message:"there's no ref target"},7005:{message:"can't happen this param type"},7006:{message:"view must instance of BaseComponent,otherwise found no root cause"},7007:{message:"result result should be either succeed or fail"},7008:{message:"in array can't be empty, otherwise it get abnormal next page"},6001:{message:"single page work fail"}};var _default=exports["default"]=ERRORs;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;const ERRORs={2001:{message:"update item, id is required"},3001:{message:`get table error`},3002:{message:`show schema error`},3003:{message:`get object schema stmt error`},3004:{message:`lazy insert`},3005:{message:`drop all fail`},3006:{message:`delete record error`},3007:{message:`drop table error`},3008:{message:`orderBy,order SQLRules Error`},3009:{message:`createTableAndIndex, create table fail`},3010:{message:`alter columns fail`},3011:{message:`update record fail`},3012:{message:`create index fail`},3013:{message:`create table fail`},3014:{message:`insertRecord`},3015:{message:`fetch indexes error`},3016:{message:`more than 1 unique_index in table`},4001:{message:`priority state is wrong`},4002:{message:`task type isn't function`},4003:{message:`task type isn't array`},4004:{message:`task not exist when try to delete`},4005:{message:`state not valid`},4006:{message:`task param should be async function`},4007:{message:`除了runByTask以外, getTaskInfoDependOnPriority() 不能走到這裡, taskQueue裡面不能沒有Task`},4008:{message:`如果要用runInBackground的task發生Error,就必須設定 backgoundtasklistener,不能讓task發生錯誤而沒有紀錄`},4009:{message:`如果走到了這一層, 代表 Pooller runInBackGround() 在無預期的狀況下被停止了, 代表assign task throw ERROR, 請善用setTaskFailHandler()`},4010:{message:`assign task timeout happen`},4011:{message:`不能走到這裡, 目前被動式的機制只支援runByEachTask, runByParams`},8001:{message:`append file fail`},8002:{message:`open dir fail`},8003:{message:`not file nor dictionary,should get it`},8004:{message:`package exist in current path`},8005:{message:`input name is not valid`},8006:{message:`file exists when trying to copy`},8007:{message:`alias exist in shell script`},8008:{message:`persist folder fail`},8009:{message:`copy folder should be exist`},8010:{message:`the key can't exceed the length of 22`},8011:{message:`beautify class fail,but let it pass`},8012:{message:`incest props should define view,type either`},8013:{message:`render view type is out of condition, check why`},8014:{message:`type is not supported`},8015:{message:`build firestore error`},8016:{message:`class generator is necessary!!!`},8017:{message:`className type is not valid!`},8018:{message:`this platform is not supported`},8019:{message:`find no source.js file`},8020:{message:`package.json has something wrong`},9999:{message:`super stupid error`},7001:{message:`state is wrong`},7002:{message:`initial should be override`},7003:{message:`css style duplicated defined`},7004:{message:`there's no ref target`},7005:{message:`can't happen this param type`},7006:{message:`view must instance of BaseComponent,otherwise found no root cause`},7007:{message:`result result should be either succeed or fail`},7008:{message:`in array can't be empty, otherwise it get abnormal next page`},6001:{message:`single page work fail`}};var _default=exports.default=ERRORs;
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _wrapNativeSuper2=_interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));var _configerer=require("configerer");var _ERRORs=_interopRequireDefault(require("./ERRORs"));var _index=require("../index.js");var _lodash=_interopRequireDefault(require("lodash"));function _callSuper(t,o,e){return o=(0,_getPrototypeOf2["default"])(o),(0,_possibleConstructorReturn2["default"])(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2["default"])(t).constructor):o.apply(t,e))}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}var MyException=function(_Error){function MyException(code){var _this;(0,_classCallCheck2["default"])(this,MyException);var error=_ERRORs["default"][code];if(error===undefined){throw new MyException(9999,"code ''".concat(code,"'' is not define in ERRORs.js"))}_this=_callSuper(this,MyException,["".concat(error.message)]);_this.uid=_index.utiller===undefined?"777Debug777":_index.utiller.getRandomValue(0,100000000000);_this.code=code;_this.infos="";_this._msg=error.message;for(var _len=arguments.length,infos=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){infos[_key-1]=arguments[_key]}for(var _i=0,_infos=infos;_i<_infos.length;_i++){var info=_infos[_i];if(info!==undefined)_this.infos+="##"+" "+"".concat(_index.utiller===undefined?"777Debug777-".concat(info):_index.utiller.getAttrValueInSequence(info,"message","msg"))}_this.message="UID:".concat(_this.uid," CODE:").concat(_this.code," REASON:").concat(_this._msg," INFO:").concat(_this.infos);if(_configerer.configerer.MODULE_MSG.SHOW_ERROR)_index.utiller.appendError(_this.message);return _this}(0,_inherits2["default"])(MyException,_Error);return(0,_createClass2["default"])(MyException,[{key:"getErrorCode",value:function getErrorCode(){return this.code}},{key:"isConstraintError",value:function isConstraintError(){return this.message&&this.message.indexOf("SQLITE_CONSTRAINT")>0}}],[{key:"msg",value:function msg(_msg){return JSON.stringify(_msg)}}])}((0,_wrapNativeSuper2["default"])(Error));var _default=exports["default"]=MyException;
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _configerer=require("configerer");var _ERRORs=_interopRequireDefault(require("./ERRORs"));var _index=require("../index.js");var _lodash=_interopRequireDefault(require("lodash"));class MyException extends Error{constructor(code,...infos){const error=_ERRORs.default[code];if(error===undefined){throw new MyException(9999,`code ''${code}'' is not define in ERRORs.js`)}super(`${error.message}`);this.uid=_index.utiller===undefined?"777Debug777":_index.utiller.getRandomValue(0,100000000000);this.code=code;this.infos="";this._msg=error.message;for(const info of infos){if(info!==undefined)this.infos+="##"+" "+`${_index.utiller===undefined?`777Debug777-${info}`:_index.utiller.getAttrValueInSequence(info,"message","msg")}`}this.message=`UID:${this.uid} CODE:${this.code} REASON:${this._msg} INFO:${this.infos}`;if(_configerer.configerer.MODULE_MSG.SHOW_ERROR)_index.utiller.appendError(this.message)}static msg(msg){return JSON.stringify(msg)}getErrorCode(){return this.code}isConstraintError(){return this.message&&this.message.indexOf(`SQLITE_CONSTRAINT`)>0}}var _default=exports.default=MyException;
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"exceptioner",{enumerable:true,get:function get(){return _exceptioner["default"]}});Object.defineProperty(exports,"pooller",{enumerable:true,get:function get(){return _pooller["default"]}});exports.utiller=void 0;var _exceptioner=_interopRequireDefault(require("./exceptioner"));var _pooller=_interopRequireDefault(require("./pooller"));var _lodash=_interopRequireDefault(require("lodash"));var instance=exports.utiller=undefined;if(process!==undefined&&!_lodash["default"].isUndefined(process.version)&&!_lodash["default"].isEmpty(process.version)){var self=require("./utiller/nodeutiller");exports.utiller=instance=new self["default"]}else{var _self=require("./utiller/index");exports.utiller=instance=new _self["default"]}
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"exceptioner",{enumerable:true,get:function(){return _exceptioner.default}});Object.defineProperty(exports,"pooller",{enumerable:true,get:function(){return _pooller.default}});exports.utiller=void 0;var _exceptioner=_interopRequireDefault(require("./exceptioner"));var _pooller=_interopRequireDefault(require("./pooller"));var _lodash=_interopRequireDefault(require("lodash"));let instance=exports.utiller=undefined;if(process!==undefined&&!_lodash.default.isUndefined(process.version)&&!_lodash.default.isEmpty(process.version)){const self=require("./utiller/nodeutiller");exports.utiller=instance=new self.default}else{const self=require("./utiller/index");exports.utiller=instance=new self.default}
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _lodash=_interopRequireDefault(require("lodash"));var _index2=require("../index.js");var _configerer=require("configerer");var _exceptioner=_interopRequireDefault(require("../exceptioner"));function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(s,a){return s.get(_assertClassBrand(s,a))}function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var SPECIFICITY_DEBUG=false;var _run=new WeakMap;var InfinitePool=function(){function InfinitePool(){var _this=this;var maxWorkers=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_configerer.configerer.POOLLER_WORKER_DEFAULT;var name=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_index2.utiller.getRandomValue(0,100000000000);(0,_classCallCheck2["default"])(this,InfinitePool);(0,_defineProperty2["default"])(this,"isRunInBackgroundMode",false);(0,_defineProperty2["default"])(this,"state",_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK);(0,_defineProperty2["default"])(this,"enableOfTaskSleepByInterval",_configerer.configerer.POOLLER_ENABLE_TASK_SLEEP_BY_INTERVAL);(0,_defineProperty2["default"])(this,"taskSleepInterval",_configerer.configerer.POOLLER_TASK_OF_INTERVAL_DEFAULT);(0,_defineProperty2["default"])(this,"enableOfTaskTimeout",_configerer.configerer.POOLLER_ENABLE_TIMEOUT);(0,_defineProperty2["default"])(this,"timeOfTaskTimeout",_configerer.configerer.POOLLER_TASK_TIMEOUT_DEFAULT);(0,_defineProperty2["default"])(this,"handlerOfAssignTaskFail",undefined);(0,_defineProperty2["default"])(this,"maximumOfWorker",void 0);(0,_defineProperty2["default"])(this,"disableFirstRun",false);(0,_defineProperty2["default"])(this,"queueOfWaitingParam",[]);(0,_defineProperty2["default"])(this,"countsOfRunByTimes",-1);(0,_defineProperty2["default"])(this,"queueOfAssignTask",{});(0,_defineProperty2["default"])(this,"queueOfExecutingTask",[]);(0,_defineProperty2["default"])(this,"isQueuePolling",false);(0,_defineProperty2["default"])(this,"initialTaskCompleted",false);(0,_defineProperty2["default"])(this,"mapOfHashNTask",{});(0,_defineProperty2["default"])(this,"mapOfHashNCallbackWrapper",{});(0,_defineProperty2["default"])(this,"nameOfCurrentPool","");(0,_defineProperty2["default"])(this,"setPoolId",function(){var id=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_this.nameOfCurrentPool;_this.nameOfCurrentPool=id});(0,_defineProperty2["default"])(this,"getPoolId",function(){return _this.nameOfCurrentPool});(0,_defineProperty2["default"])(this,"stopInBackground",(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var attempts,maxAttempts;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_this.terminate();attempts=0;maxAttempts=30;case 3:if(!(_lodash["default"].size(_this.queueOfExecutingTask)>0&&attempts<maxAttempts)){_context.next=11;break}_context.next=6;return _index2.utiller.syncDelay(500);case 6:_this.printLogMessage("784512, \u54AC\u5728 stopInBackground \u51FA\u4E0D\u4F86,".concat(_this.getLogMessageOfExecutingTaskQueueCount()));_this.showState();attempts++;_context.next=3;break;case 11:return _context.abrupt("return",true);case 12:case"end":return _context.stop()}},_callee)})));(0,_defineProperty2["default"])(this,"isRunning",function(){return _this.isQueuePolling});(0,_defineProperty2["default"])(this,"getCountOfAssignTaskInQueue",function(){var size=0;var _iterator=_createForOfIteratorHelper(_configerer.configerer.POOLLER_PRIORITY),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var prior=_step.value;size+=_this.queueOfAssignTask[prior].length}}catch(err){_iterator.e(err)}finally{_iterator.f()}return size});(0,_defineProperty2["default"])(this,"add",function(task){var priority=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"low";if(typeof task==="function"){if(_configerer.configerer.POOLLER_PRIORITY.indexOf(priority)<0){throw new _exceptioner["default"](4001,"priority can't be ".concat(priority))}var hash=_index2.utiller.getRandomHash();var taskInfo={task:task,hash:hash};_this.appendHashTaskMap(taskInfo);_this.queueOfAssignTask[priority].push(taskInfo);return hash}else{throw new _exceptioner["default"](4002,"task can't be ".concat((0,_typeof2["default"])(task)))}});(0,_defineProperty2["default"])(this,"updateExecuteTaskState",function(hash){var self=_this;var task=_lodash["default"].find(_this.queueOfExecutingTask,function(each){return _lodash["default"].isEqual(each.hash,hash)});if(task){_this.printLogMessage("847875153, \u5BA2\u7AEF\u59D4\u8A17\u7684\u4EFB\u52D9: ".concat(hash,",\u66F4\u6539\u72C0\u614B\u70BA 'ING'"));task.state="ING"}});(0,_defineProperty2["default"])(this,"taskWrapper",function(assignedTask,hashOfTask,param){return function(){var self=_this;var timeoutHash="";var assignedTaskResult;var assignedTaskError;var isAssignedTaskCompleted=true;return new Promise(function(resolve,reject){if(self.enableOfTaskTimeout){timeoutHash=setTimeout(function(){try{_this.printLogMessage("982532, taskWrapper\u57F7\u884C\u4E2D,\u767C\u751Ftimout: ".concat(self.timeOfTaskTimeout," ms"));throw new _exceptioner["default"](4010,self.getPoollerLogFormat("TASK HASH:".concat(hashOfTask," IS TIMEOUT ").concat(self.timeOfTaskTimeout," ms ").concat(param?",PARAMS IS ".concat(JSON.stringify(param)):"")))}catch(error){reject(error)}},self.timeOfTaskTimeout)}_this.printLogMessage("984135, \u5BA2\u7AEF\u59D4\u8A17\u7684task\u958B\u59CB\u57F7\u884C ".concat(hashOfTask));self.updateExecuteTaskState(hashOfTask);assignedTask(param).then(function(result){_this.printLogMessage("984545, \u5BA2\u7AEF\u59D4\u8A17\u7684\u4EFB\u52D9(TASK HASH:".concat(hashOfTask,"),resolve\u56DE\u61C9: ").concat(result));assignedTaskResult=result;isAssignedTaskCompleted=true})["catch"](function(error){_this.printLogMessage("989652, \u5BA2\u7AEF\u59D4\u8A17\u7684\u4EFB\u52D9,reject\u56DE\u61C9: ".concat(error.message),true,error);assignedTaskError=error;isAssignedTaskCompleted=false})["finally"](function(){clearTimeout(timeoutHash);resolve();_this.printLogMessage("98942,(TASK HASH:".concat(hashOfTask,") taskWrapper()\u88E1\u9762\u7B2C\u4E00\u500Bpromise(\u70BA\u4E86timeout\u8A2D\u8A08)\u5B8C\u6210\u4E86"))})}).then(function(result){if(!isAssignedTaskCompleted){throw assignedTaskError}else{_this.printLogMessage("9894841,(TASK HASH:".concat(hashOfTask,") taskWrapper()\u88E1\u9762\u7B2C\u4E8C\u500Bpromise(\u6574\u500B\u4EFB\u52D9)\u5B8C\u6210\u4E86"));return"".concat(_this.getLogMessageOfTaskHash(hashOfTask)," completed")}})["catch"](function(error){isAssignedTaskCompleted=false;assignedTaskError=error;if(!self.isWait4ResultTask(hashOfTask)){if(self.handlerOfAssignTaskFail!==undefined){self.handlerOfAssignTaskFail(assignedTaskError)}else throw assignedTaskError}})["finally"](function(){var result={assignedTaskCompleted:isAssignedTaskCompleted,resolve:assignedTaskResult,reject:assignedTaskError};self.removeResolveOrRejectPromiseByHash(hashOfTask,result);_this.printLogMessage("98943213, ".concat(_this.getLogMessageOfTaskHash(hashOfTask)," taskWrapper()\u88E1\u9762\u7B2C2\u500Bpromise\u5B8C\u6210\u4E86"),false,result)})}});(0,_defineProperty2["default"])(this,"adds",function(tasks){var priority=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"low";var hashes=[];if(_lodash["default"].isArray(tasks)){var _iterator2=_createForOfIteratorHelper(tasks),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var task=_step2.value;hashes.push(_this.add(task,priority))}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}}else{throw new _exceptioner["default"](4003,"should be async function array, not ".concat((0,_typeof2["default"])(tasks)))}return hashes});(0,_defineProperty2["default"])(this,"removeTaskMapByHash",function(hash){delete _this.mapOfHashNTask[hash]});(0,_defineProperty2["default"])(this,"beforeRun",function(){_this.isQueuePolling=true});(0,_defineProperty2["default"])(this,"afterRun",function(){_this.clearCache()});(0,_defineProperty2["default"])(this,"runInInfinite",(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(){var task,interval,_args2=arguments;return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:task=_args2.length>0&&_args2[0]!==undefined?_args2[0]:[];interval=_args2.length>1?_args2[1]:undefined;_this.beforeRun();if(!_lodash["default"].isFunction(task)){_context2.next=7;break}_this.add(task);_context2.next=12;break;case 7:if(!_lodash["default"].isArray(task)){_context2.next=11;break}_this.adds(task);_context2.next=12;break;case 11:throw new _exceptioner["default"](4006,"type of task is ===> ".concat((0,_typeof2["default"])(task)));case 12:_this.enableTaskSleepInterval(_lodash["default"].isNumber(interval),interval);_this.setState(_configerer.configerer.POOLLER_STATE.RUN_INFINITE);case 14:if(_this.ruleOfStopInfiniteRun()){_context2.next=20;break}_this.printLogMessage("415123, runInInfinite() \u6B63\u5728\u7121\u9650Loop\u4E2D, ".concat(_this.getLogMessageOfExecutingTaskQueueCount()));_context2.next=18;return _classPrivateFieldGet(_run,_this).call(_this);case 18:_context2.next=14;break;case 20:case"end":return _context2.stop()}},_callee2)})));(0,_defineProperty2["default"])(this,"ruleOfStopInfiniteRun",function(){return!_this.isRunning()&&_this.isExecutingTaskQueueEmpty()});(0,_defineProperty2["default"])(this,"isExecutingTaskQueueEmpty",function(){return _lodash["default"].size(_this.queueOfExecutingTask)===0});(0,_defineProperty2["default"])(this,"appendParamInToQueue",function(){var _this$queueOfWaitingP;_this.triggerBgInstance();(_this$queueOfWaitingP=_this.queueOfWaitingParam).push.apply(_this$queueOfWaitingP,arguments)});(0,_defineProperty2["default"])(this,"runByParams",function(){var _ref3=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(functionOfAsyncTask){var _len,params,_key,_args3=arguments;return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:for(_len=_args3.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){params[_key-1]=_args3[_key]}if(functionOfAsyncTask===undefined){functionOfAsyncTask=_this.queueOfAssignTask["low"].shift().task}if(_lodash["default"].isFunction(functionOfAsyncTask)){_context3.next=4;break}throw new _exceptioner["default"](4006,"runByParams error, typeof task can't be ".concat((0,_typeof2["default"])(functionOfAsyncTask)));case 4:if(_lodash["default"].isArray(params)){_context3.next=6;break}throw new _exceptioner["default"](4006,"runByParams error, typeof params can't be ".concat((0,_typeof2["default"])(params)));case 6:_this.beforeRun();_this.add(functionOfAsyncTask);_this.appendParamInToQueue.apply(_this,params);_this.setState(_configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS);case 10:if(!(!_this.ruleOfStopInfiniteRun()&&_lodash["default"].size(_this.queueOfWaitingParam)>0)){_context3.next=15;break}_context3.next=13;return _classPrivateFieldGet(_run,_this).call(_this);case 13:_context3.next=10;break;case 15:case"end":return _context3.stop()}},_callee3)}));return function(_x){return _ref3.apply(this,arguments)}}());(0,_defineProperty2["default"])(this,"runByEachTask",(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){var tasks,self,_args4=arguments;return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:tasks=_args4.length>0&&_args4[0]!==undefined?_args4[0]:[];self=_this;_this.id=_index2.utiller.getRandomHash(15);_this.beforeRun();_this.adds(tasks);_this.setState(_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK);case 6:if(_this.ruleOfStopInfiniteRun()){_context4.next=15;break}_context4.next=9;return _classPrivateFieldGet(_run,_this).call(_this,_this.id);case 9:if(_this.getCountOfAssignTaskInQueue()<=0){_this.terminate();_this.printLogMessage("788121, runByEachTask() \u56E0\u70BA taskOfWaitingQueue \u6E05\u7A7A\u800C\u505C\u6B62")}_context4.next=12;return _index2.utiller.syncDelay(10);case 12:_this.printLogMessage("788143, runByEachTask() \u70BA\u4E86\u8B93while\u4E0D\u8981\u505C\u6B62\u904B\u7B97");_context4.next=6;break;case 15:_this.printLogMessage("7881952, runByEachTask() \u7D50\u675F\u4E86while()");case 16:case"end":return _context4.stop()}},_callee4)})));(0,_defineProperty2["default"])(this,"runByTimes",function(){var _ref5=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(functionOfAsyncTask){var times,_args5=arguments;return _regenerator["default"].wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:times=_args5.length>1&&_args5[1]!==undefined?_args5[1]:1;_this.countsOfRunByTimes=times;_this.add(functionOfAsyncTask);_this.beforeRun();_this.setState(_configerer.configerer.POOLLER_STATE.RUN_BY_TIMES);case 5:if(!(!_this.ruleOfStopInfiniteRun()&&_this.countsOfRunByTimes>0)){_context5.next=10;break}_context5.next=8;return _classPrivateFieldGet(_run,_this).call(_this);case 8:_context5.next=5;break;case 10:case"end":return _context5.stop()}},_callee5)}));return function(_x2){return _ref5.apply(this,arguments)}}());(0,_defineProperty2["default"])(this,"runInBackGround",function(asyncfunc){for(var _len2=arguments.length,params=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){params[_key2-1]=arguments[_key2]}_this.isRunInBackgroundMode=true;if(!(typeof asyncfunc==="function")){throw new _exceptioner["default"](4002,"_asyncfunc can't be ".concat((0,_typeof2["default"])(asyncfunc)))}return setTimeout((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(){return _regenerator["default"].wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:_context6.prev=0;_context6.next=3;return asyncfunc.apply(_this,params);case 3:_context6.next=12;break;case 5:_context6.prev=5;_context6.t0=_context6["catch"](0);if(!(_context6.t0 instanceof _exceptioner["default"])){_context6.next=11;break}_this.printLogMessage("7812123, runInBackGround() \u57F7\u884C\u932F\u8AA4: ".concat(_context6.t0.message),true,_context6.t0);_context6.next=12;break;case 11:throw new _exceptioner["default"](4009,{message:"".concat(_this.getPoollerLogFormat(""))},_context6.t0);case 12:_context6.prev=12;_this.terminate();_this.printLogMessage("7812123, runInBackGround() \u8D70\u5230finally");return _context6.finish(12);case 16:case"end":return _context6.stop()}},_callee6,null,[[0,5,12,16]])})),1)});(0,_defineProperty2["default"])(this,"getPoollerLogFormat",function(msg){return"POOLLER NAME: ".concat(_this.getPoolId()).concat(_lodash["default"].isEmpty(msg)?"":" , ").concat(msg)});(0,_defineProperty2["default"])(this,"setTaskFailHandler",function(){var listener=arguments.length>0&&arguments[0]!==undefined?arguments[0]:function(error){return console.log(error.message)};_this.handlerOfAssignTaskFail=listener});(0,_defineProperty2["default"])(this,"rulesOfAppendToExecutingTask",function(){switch(_this.state){case _configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK:return _this.isRunning()&&!_this.isExecutingQueueFull()&&_this.getCountOfAssignTaskInQueue()>0;case _configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS:return _this.isRunning()&&!_this.isExecutingQueueFull()&&_lodash["default"].size(_this.queueOfWaitingParam)>0;case _configerer.configerer.POOLLER_STATE.RUN_BY_TIMES:case _configerer.configerer.POOLLER_STATE.RUN_INFINITE:return _this.isRunning()&&!_this.isExecutingQueueFull()&&_this.getCountOfAssignTaskInQueue()>0;default:throw new _exceptioner["default"](4005,"this.state ==> ".concat(_this.state))}});(0,_defineProperty2["default"])(this,"appendTaskToExecuteQueue",function(hash,promise){if(_lodash["default"].isEqual(_this.state,_configerer.configerer.POOLLER_STATE.RUN_BY_TIMES)){_this.countsOfRunByTimes=_this.countsOfRunByTimes-1}var task={state:"NOT",hash:hash,task:promise};_this.printLogMessage("4484451, \u589E\u52A0\u4E86\u4E00\u500BassignedTask ".concat(_this.getLogMessageOfTaskHash(hash)," \u5230 QueueOfExecutingTask ,").concat(_this.getLogMessageOfExecutingTaskQueueCount),false,task);_this.queueOfExecutingTask.push(task)});(0,_defineProperty2["default"])(this,"getLogMessageOfExecutingTaskQueueCount",function(){return"ExecutingTaskQueueCount: ".concat(_lodash["default"].size(_this.queueOfExecutingTask))});(0,_defineProperty2["default"])(this,"getLogMessageOfAssignTaskQueueCount",function(){return"AssignTaskQueueCount: ".concat(_this.getCountOfAssignTaskInQueue())});(0,_defineProperty2["default"])(this,"getLogMessageOfTaskHash",function(hash){return"TASK HASH: ".concat(hash)});(0,_defineProperty2["default"])(this,"showState",function(){_index2.utiller.appendInfo(_this.getPoollerLogFormat("workerCount: ".concat(_this.maximumOfWorker)));_index2.utiller.appendInfo(_this.getPoollerLogFormat("taskQueue(\u9084\u5728\u6392\u968A\u7684Task): ".concat(_this.getCountOfAssignTaskInQueue())));_index2.utiller.appendInfo(_this.getPoollerLogFormat("QueueOfExecutingTask(\u6B63\u5728\u57F7\u884C\u7684AsyncTask, \u8D85\u904EworkerCount\u5C31\u662Fbug): ".concat(_lodash["default"].size(_this.queueOfExecutingTask))));_index2.utiller.appendInfo(_this.getPoollerLogFormat("mapOfHashNTask(\u9084\u6C92\u57F7\u884C\u5230\u7684AsyncTask reference\u7684\u66AB\u5B58\u5340): ".concat(_lodash["default"].size(_this.mapOfHashNTask))))});_classPrivateFieldInitSpec(this,_run,(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(){var self,execute,_execute,emptyTask,_emptyTask,task;return _regenerator["default"].wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:_emptyTask=function _emptyTask3(){_emptyTask=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(){return _regenerator["default"].wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:self.printLogMessage("\u56E0\u70BAmax count of worker\u70BA0\uFF0C\u6240\u4EE5\u6307\u6D3E\u4E00\u500B\u7C21\u55AE\u7684\u4EFB\u52D9");_context8.next=3;return _index2.utiller.syncDelay(10);case 3:case"end":return _context8.stop()}},_callee8)}));return _emptyTask.apply(this,arguments)};emptyTask=function _emptyTask2(){return _emptyTask.apply(this,arguments)};_execute=function _execute3(){_execute=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(){var tasks,result;return _regenerator["default"].wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:tasks=_lodash["default"].filter(self.queueOfExecutingTask,function(each){return _lodash["default"].isEqual(each.state,"NOT")}).map(function(each){var taskWrapper=each.task;return taskWrapper()});self.printLogMessage("454652321, \u958B\u59CB\u4EFB\u52D9(taskWrapper): run() \u88E1\u9762\u7684execute\u958B\u59CB\u57F7\u884C, task(state = NOT)\u7684\u9577\u5EA6 ".concat(_lodash["default"].size(tasks)));if(!(_lodash["default"].size(tasks)>0)){_context7.next=8;break}_context7.next=5;return Promise.race(tasks);case 5:_context7.t0=_context7.sent;_context7.next=9;break;case 8:_context7.t0="4542131684, task is empty";case 9:result=_context7.t0;self.printLogMessage("54121445161, \u7D50\u675F\u4EFB\u52D9(taskWrapper): run() \u88E1\u9762\u7684execute\u7D50\u675F\u57F7\u884C");return _context7.abrupt("return",result);case 12:case"end":return _context7.stop()}},_callee7)}));return _execute.apply(this,arguments)};execute=function _execute2(){return _execute.apply(this,arguments)};self=_this;_context9.next=7;return _this.syncTaskDispatcher();case 7:if(!(_this.maximumOfWorker===0)){_context9.next=12;break}_context9.next=10;return emptyTask();case 10:_context9.next=21;break;case 12:if(_this.isExecutingTaskQueueEmpty()){_context9.next=20;break}_this.printLogMessage("4512211, \u958B\u59CB\u4EFB\u52D9(taskWrapper): ".concat(_this.getLogMessageOfExecutingTaskQueueCount()));_context9.next=16;return execute();case 16:task=_context9.sent;_this.printLogMessage("4512213 \u5B8C\u7562\u4EFB\u52D9(taskWrapper:".concat(task,"), ").concat(_this.getLogMessageOfExecutingTaskQueueCount(),", ").concat(_this.getLogMessageOfAssignTaskQueueCount()));_context9.next=21;break;case 20:_this.printLogMessage("4574152 \u4E0D\u61C9\u8A72\u8D70\u5230\u9019\u88CF,\u4F46\u662F minor issue",true);case 21:if(_this.queueOfExecutingTask.length>_this.maximumOfWorker)_this.printLogMessage("4512214 \u4E00\u5B9A\u662F\u6539\u58DE\u4E86!!!!!!!!!!, ".concat(_this.getLogMessageOfExecutingTaskQueueCount," "),true);self.printLogMessage("5478421212, \u96E2\u958B run()");case 23:case"end":return _context9.stop()}},_callee9)})));(0,_defineProperty2["default"])(this,"getTaskInfoForRepetitiveRun",function(originalTaskInfo){var newTaskInfo={task:originalTaskInfo.task,hash:_index2.utiller.getRandomHash()};_this.appendHashTaskMap(newTaskInfo);return newTaskInfo});(0,_defineProperty2["default"])(this,"getTaskInfoDependOnPriority",function(){var _iterator3=_createForOfIteratorHelper(_configerer.configerer.POOLLER_PRIORITY),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var prior=_step3.value;if(_this.queueOfAssignTask[prior].length>0){switch(_this.state){case _configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK:return _this.queueOfAssignTask[prior].shift();case _configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS:case _configerer.configerer.POOLLER_STATE.RUN_BY_TIMES:case _configerer.configerer.POOLLER_STATE.RUN_INFINITE:var originalTaskInfo=_this.queueOfAssignTask[prior][0];return _this.getTaskInfoForRepetitiveRun(originalTaskInfo);default:throw new _exceptioner["default"](4005,"this.state ==> ".concat(_this.state))}}}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}if(!_lodash["default"].isEqual(_this.state,_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK))throw new _exceptioner["default"](4007)});(0,_defineProperty2["default"])(this,"removeResolveOrRejectPromiseByHash",function(hash,result){var callbackWrapper=_this.mapOfHashNCallbackWrapper[hash];if(callbackWrapper!==undefined){_this.printLogMessage("5644153248, removeResolveOrRejectPromiseByHash \u62FF\u6389\u4E86\u5B8C\u6210\u7684\u4EFB\u52D9(".concat(_this.getLogMessageOfTaskHash(hash),")"));callbackWrapper(result);delete _this.mapOfHashNCallbackWrapper[hash]}_this.removePromiseFromExecutingQueue(hash)});(0,_defineProperty2["default"])(this,"removePromiseFromExecutingQueue",function(hash){_this.printLogMessage("56448412, QueueOfExecutingTask \u62FF\u6389\u4E86\u5B8C\u6210\u7684\u4EFB\u52D9 ".concat(_this.getLogMessageOfTaskHash(hash)));_lodash["default"].remove(_this.queueOfExecutingTask,function(each){return _lodash["default"].isEqual(hash,each.hash)})});(0,_defineProperty2["default"])(this,"runInfiniteInBackground",function(functionOfAsyncTask,interval){_this.invokeInstanceOfBackground(_this.runInInfinite,functionOfAsyncTask,interval)});(0,_defineProperty2["default"])(this,"runByParamInBackGround",function(functionOfAsyncTask){for(var _len3=arguments.length,params=new Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++){params[_key3-1]=arguments[_key3]}return _this.invokeInstanceOfBackground.apply(_this,[_this.runByParams,functionOfAsyncTask].concat(params))});(0,_defineProperty2["default"])(this,"runByTimesInBackGround",function(functionOfAsyncTask,times){_this.invokeInstanceOfBackground(_this.runByTimes,functionOfAsyncTask,times);return _this});(0,_defineProperty2["default"])(this,"runByEachTaskInBackGround",function(){for(var _len4=arguments.length,params=new Array(_len4),_key4=0;_key4<_len4;_key4++){params[_key4]=arguments[_key4]}return _this.invokeInstanceOfBackground.apply(_this,[_this.runByEachTask].concat(params))});(0,_defineProperty2["default"])(this,"invokeInstanceOfBackground",function(state){if(_this.atomicBgInstance!==undefined)clearTimeout(_this.atomicBgInstance);for(var _len5=arguments.length,params=new Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++){params[_key5-1]=arguments[_key5]}_this.atomicBgInstance=_this.runInBackGround.apply(_this,[state].concat(params));return _this});this.maximumOfWorker=maxWorkers;this.setPoolId(_lodash["default"].toString(name));var _iterator4=_createForOfIteratorHelper(_configerer.configerer.POOLLER_PRIORITY),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var prior=_step4.value;this.queueOfAssignTask[prior]=[]}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}}return(0,_createClass2["default"])(InfinitePool,[{key:"enableQueueTerminateBySleepCount",value:function enableQueueTerminateBySleepCount(){var enable=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var interval=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.POOLLER_QUEUE_TIME_OF_SLEEP_INTERVAL_DEFAULT;var times=arguments.length>2&&arguments[2]!==undefined?arguments[2]:_configerer.configerer.POOLLER_QUEUE_MAX_SLEEP_COUNTS_DEFAULT;this.enableOfQueueTerminateSleepCount=enable;this.queueMaxSleepCounts=times;this.intervalOfQueueSleep=interval}},{key:"clearCache",value:function clearCache(){this.queueOfExecutingTask.length=0;this.mapOfHashNTask={};this.queueOfAssignTask={}}},{key:"terminate",value:function terminate(){this.isQueuePolling=false}},{key:"printLogMessage",value:function printLogMessage(message){var error=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;for(var _len6=arguments.length,infos=new Array(_len6>2?_len6-2:0),_key6=2;_key6<_len6;_key6++){infos[_key6-2]=arguments[_key6]}if(SPECIFICITY_DEBUG)_index2.utiller.printLogMessage.apply(_index2.utiller,[this.getPoollerLogFormat(message),error].concat(infos))}},{key:"setWorker",value:function setWorker(counts){this.maximumOfWorker=counts}},{key:"cleanTaskInterval",value:function cleanTaskInterval(){this.taskSleepInterval={min:0,max:0}}},{key:"enableTaskSleepInterval",value:function enableTaskSleepInterval(){var enable=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var interval=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.POOLLER_TASK_OF_INTERVAL_DEFAULT;this.enableOfTaskSleepByInterval=enable;if(_lodash["default"].isNumber(interval)){interval={min:interval,max:interval}}this.taskSleepInterval=interval}},{key:"enableTaskTimeout",value:function enableTaskTimeout(){var enable=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var millionSec=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.POOLLER_TASK_TIMEOUT_DEFAULT;this.enableOfTaskTimeout=enable;this.timeOfTaskTimeout=millionSec}},{key:"addTaskAndWait4Result",value:function(){var _addTaskAndWait4Result=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee0(asyncTask){var _this2=this;var priority,taskName,_args0=arguments;return _regenerator["default"].wrap(function _callee0$(_context0){while(1)switch(_context0.prev=_context0.next){case 0:priority=_args0.length>1&&_args0[1]!==undefined?_args0[1]:"low";taskName=_args0.length>2&&_args0[2]!==undefined?_args0[2]:"noName";this.triggerBgInstance();return _context0.abrupt("return",new Promise(function(resolve,reject){var callbackWrapper=function callbackWrapper(result){if(result.assignedTaskCompleted){resolve(result.resolve)}else{reject(result.reject)}};var hash=_this2.add(asyncTask,priority);_this2.registerHash4Result(hash,callbackWrapper)}));case 4:case"end":return _context0.stop()}},_callee0,this)}));function addTaskAndWait4Result(_x3){return _addTaskAndWait4Result.apply(this,arguments)}return addTaskAndWait4Result}()},{key:"registerHash4Result",value:function registerHash4Result(hash,callback){this.mapOfHashNCallbackWrapper[hash]=callback}},{key:"appendHashTaskMap",value:function appendHashTaskMap(taskInfo){this.mapOfHashNTask[taskInfo.hash]=taskInfo}},{key:"getTaskInfoByHash",value:function getTaskInfoByHash(hash){return this.mapOfHashNTask[hash]}},{key:"remove",value:function remove(hash){var taskInfo=this.getTaskInfoByHash(hash);if(taskInfo){var _iterator5=_createForOfIteratorHelper(_configerer.configerer.POOLLER_PRIORITY),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var prior=_step5.value;var _index=_lodash["default"].indexOf(this.queueOfAssignTask[prior],taskInfo);if(_index>0){this.queueOfAssignTask[prior].splice(_index,1);this.removeTaskMapByHash(hash);return true}}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}return false}else{throw new _exceptioner["default"](4004,hash)}}},{key:"setState",value:function setState(_state){this.state=_state}},{key:"checkAndMarkInitialTaskStatus",value:function checkAndMarkInitialTaskStatus(){if(!this.initialTaskCompleted){this.initialTaskCompleted=true;return false}return this.initialTaskCompleted}},{key:"setDisableFirstRun",value:function setDisableFirstRun(){var disable=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this.disableFirstRun=disable}},{key:"triggerBgInstance",value:function triggerBgInstance(){if(!this.isRunInBackgroundMode||this.isQueuePolling){return}if(this.state===_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK){this.runByEachTaskInBackGround();return}else if(this.state===_configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS){this.runByParamInBackGround();return}throw new _exceptioner["default"](4011,"this.state is ==> ".concat(_index2.utiller.getItsKeyByValue(_configerer.configerer.POOLLER_STATE,this.state)))}},{key:"isExecutingQueueFull",value:function isExecutingQueueFull(){return _lodash["default"].size(this.queueOfExecutingTask)>=this.maximumOfWorker}},{key:"isTaskQueueEmpty",value:function isTaskQueueEmpty(){return this.getCountOfAssignTaskInQueue()===0}},{key:"syncTaskDispatcher",value:(function(){var _syncTaskDispatcher=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee1(){var initialTaskShouldNotRun,isExecutingTaskAlmostFull,comparison,restInInterval,taskInfo,promise;return _regenerator["default"].wrap(function _callee1$(_context1){while(1)switch(_context1.prev=_context1.next){case 0:this.printLogMessage("448984466, \u8D70\u9032\u4F86\u4E86 syncTaskDispatcher()");initialTaskShouldNotRun=this.disableFirstRun&&!this.checkAndMarkInitialTaskStatus();isExecutingTaskAlmostFull=this.queueOfExecutingTask.length>=this.maximumOfWorker-1;comparison=this.checkAndMarkInitialTaskStatus()&&isExecutingTaskAlmostFull&&this.enableOfTaskSleepByInterval;if(!(initialTaskShouldNotRun||comparison)){_context1.next=9;break}_context1.next=7;return _index2.utiller.syncDelayRandom(this.taskSleepInterval.min,this.taskSleepInterval.max);case 7:restInInterval=_context1.sent;this.printLogMessage("4484121, \u8D70\u5230\u7761\u89BA\u5340 enableOfTaskSleepByInterval:".concat(this.enableOfTaskSleepByInterval," || ").concat(restInInterval," ms"));case 9:if(!this.rulesOfAppendToExecutingTask()){_context1.next=21;break}taskInfo=this.getTaskInfoDependOnPriority();if(!taskInfo){_context1.next=17;break}promise=this.taskWrapper(taskInfo.task,taskInfo.hash,this.queueOfWaitingParam.shift());if(this.state===_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK){this.removeTaskMapByHash(taskInfo.hash)}else{}this.appendTaskToExecuteQueue(taskInfo.hash,promise);_context1.next=19;break;case 17:this.printLogMessage("848451 \u4E5F\u8A31\u6709\u672A\u77E5\u7684isssue,\u4FDD\u96AA\u8D77\u898Bbreak,\u662F\u4E0D\u662F\u5728\u9019\u88E1\u7121\u9650\u8FF4\u5708\u8DD1\u8DD1\u8DD1",true);return _context1.abrupt("break",21);case 19:_context1.next=9;break;case 21:this.printLogMessage("4489844821, \u96E2\u958B\u4E86 syncTaskDispatcher()");case 22:case"end":return _context1.stop()}},_callee1,this)}));function syncTaskDispatcher(){return _syncTaskDispatcher.apply(this,arguments)}return syncTaskDispatcher}())},{key:"isWait4ResultTask",value:function isWait4ResultTask(hash){return this.mapOfHashNCallbackWrapper[hash]!==undefined}}])}();var _default=exports["default"]=InfinitePool;
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _lodash=_interopRequireDefault(require("lodash"));var _index2=require("../index.js");var _configerer=require("configerer");var _exceptioner=_interopRequireDefault(require("../exceptioner"));function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(s,a){return s.get(_assertClassBrand(s,a))}function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}const SPECIFICITY_DEBUG=false;var _run=new WeakMap;class InfinitePool{constructor(maxWorkers=_configerer.configerer.POOLLER_WORKER_DEFAULT,name=_index2.utiller.getRandomValue(0,100000000000)){(0,_defineProperty2.default)(this,"isRunInBackgroundMode",false);(0,_defineProperty2.default)(this,"state",_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK);(0,_defineProperty2.default)(this,"enableOfTaskSleepByInterval",_configerer.configerer.POOLLER_ENABLE_TASK_SLEEP_BY_INTERVAL);(0,_defineProperty2.default)(this,"taskSleepInterval",_configerer.configerer.POOLLER_TASK_OF_INTERVAL_DEFAULT);(0,_defineProperty2.default)(this,"enableOfTaskTimeout",_configerer.configerer.POOLLER_ENABLE_TIMEOUT);(0,_defineProperty2.default)(this,"timeOfTaskTimeout",_configerer.configerer.POOLLER_TASK_TIMEOUT_DEFAULT);(0,_defineProperty2.default)(this,"handlerOfAssignTaskFail",undefined);(0,_defineProperty2.default)(this,"maximumOfWorker",void 0);(0,_defineProperty2.default)(this,"disableFirstRun",false);(0,_defineProperty2.default)(this,"queueOfWaitingParam",[]);(0,_defineProperty2.default)(this,"countsOfRunByTimes",-1);(0,_defineProperty2.default)(this,"queueOfAssignTask",{});(0,_defineProperty2.default)(this,"queueOfExecutingTask",[]);(0,_defineProperty2.default)(this,"isQueuePolling",false);(0,_defineProperty2.default)(this,"initialTaskCompleted",false);(0,_defineProperty2.default)(this,"mapOfHashNTask",{});(0,_defineProperty2.default)(this,"mapOfHashNCallbackWrapper",{});(0,_defineProperty2.default)(this,"nameOfCurrentPool",``);(0,_defineProperty2.default)(this,"atomicBgInstance",undefined);(0,_defineProperty2.default)(this,"setPoolId",(id=this.nameOfCurrentPool)=>{this.nameOfCurrentPool=id});(0,_defineProperty2.default)(this,"getPoolId",()=>{return this.nameOfCurrentPool});(0,_defineProperty2.default)(this,"stopInBackground",async()=>{this.terminate();let attempts=0;const maxAttempts=30;while(_lodash.default.size(this.queueOfExecutingTask)>0&&attempts<maxAttempts){await _index2.utiller.syncDelay(500);this.printLogMessage(`784512, 卡在 stopInBackground 出不來,${this.getLogMessageOfExecutingTaskQueueCount()}`);this.showState();attempts++}if(_lodash.default.size(this.queueOfExecutingTask)>0){this.printLogMessage(`stopInBackground 超時,仍有 ${_lodash.default.size(this.queueOfExecutingTask)} 個任務在執行`,true);return false}return true});(0,_defineProperty2.default)(this,"isRunning",()=>{return this.isQueuePolling});(0,_defineProperty2.default)(this,"getCountOfAssignTaskInQueue",()=>{let size=0;for(const prior of _configerer.configerer.POOLLER_PRIORITY){size+=this.queueOfAssignTask[prior].length}return size});(0,_defineProperty2.default)(this,"add",(task,priority="low")=>{if(typeof task==="function"){if(_configerer.configerer.POOLLER_PRIORITY.indexOf(priority)<0){throw new _exceptioner.default(4001,`priority can't be ${priority}`)}const hash=_index2.utiller.getRandomHash();const taskInfo={task,hash};this.appendHashTaskMap(taskInfo);this.queueOfAssignTask[priority].push(taskInfo);return hash}else{throw new _exceptioner.default(4002,`task can't be ${typeof task}`)}});(0,_defineProperty2.default)(this,"updateExecuteTaskState",hash=>{const task=_lodash.default.find(this.queueOfExecutingTask,each=>_lodash.default.isEqual(each.hash,hash));if(task){this.printLogMessage(`847875153, 客端委託的任務: ${hash},更改狀態為 'ING'`);task.state="ING"}});(0,_defineProperty2.default)(this,"taskWrapper",(assignedTask,hashOfTask,param)=>()=>{const self=this;let timeoutHash="";let assignedTaskResult;let assignedTaskError;let isAssignedTaskCompleted=true;return new Promise((resolve,reject)=>{if(self.enableOfTaskTimeout){timeoutHash=setTimeout(()=>{try{this.printLogMessage(`982532, taskWrapper執行中,發生timeout: ${self.timeOfTaskTimeout} ms`);throw new _exceptioner.default(4010,self.getPoollerLogFormat(`TASK HASH:${hashOfTask} IS TIMEOUT ${self.timeOfTaskTimeout} ms ${param?`,PARAMS IS ${JSON.stringify(param)}`:""}`))}catch(error){reject(error)}},self.timeOfTaskTimeout)}this.printLogMessage(`984135, 客端委託的task開始執行 ${hashOfTask}`);self.updateExecuteTaskState(hashOfTask);assignedTask(param).then(result=>{this.printLogMessage(`984545, 客端委託的任務(TASK HASH:${hashOfTask}),resolve回應: ${result}`);assignedTaskResult=result;isAssignedTaskCompleted=true}).catch(error=>{this.printLogMessage(`989652, 客端委託的任務,reject回應: ${error.message}`,true,error);assignedTaskError=error;isAssignedTaskCompleted=false}).finally(()=>{clearTimeout(timeoutHash);resolve();this.printLogMessage(`98942,(TASK HASH:${hashOfTask}) taskWrapper()裡面第一個promise(為了timeout設計)完成了`)})}).then(()=>{if(!isAssignedTaskCompleted){throw assignedTaskError}else{this.printLogMessage(`9894841,(TASK HASH:${hashOfTask}) taskWrapper()裡面第二個promise(整個任務)完成了`);return`${this.getLogMessageOfTaskHash(hashOfTask)} completed`}}).catch(error=>{isAssignedTaskCompleted=false;assignedTaskError=error;if(!self.isWait4ResultTask(hashOfTask)){if(self.handlerOfAssignTaskFail!==undefined){try{self.handlerOfAssignTaskFail(assignedTaskError)}catch(handlerError){this.printLogMessage(`錯誤處理器執行失敗: ${handlerError.message}`,true,handlerError)}}else{this.printLogMessage(`任務執行失敗但未設置錯誤處理器: ${assignedTaskError.message}`,true,assignedTaskError)}}}).finally(()=>{const result={assignedTaskCompleted:isAssignedTaskCompleted,resolve:assignedTaskResult,reject:assignedTaskError};self.removeResolveOrRejectPromiseByHash(hashOfTask,result);this.printLogMessage(`98943213, ${this.getLogMessageOfTaskHash(hashOfTask)} taskWrapper()裡面第2個promise完成了`,false,result)})});(0,_defineProperty2.default)(this,"adds",(tasks,priority="low")=>{const hashes=[];if(_lodash.default.isArray(tasks)){for(const task of tasks){hashes.push(this.add(task,priority))}}else{throw new _exceptioner.default(4003,`should be async function array, not ${typeof tasks}`)}return hashes});(0,_defineProperty2.default)(this,"removeTaskMapByHash",hash=>{delete this.mapOfHashNTask[hash]});(0,_defineProperty2.default)(this,"beforeRun",()=>{this.isQueuePolling=true});(0,_defineProperty2.default)(this,"afterRun",()=>{this.clearCache()});(0,_defineProperty2.default)(this,"runInInfinite",async(task=[],interval)=>{this.beforeRun();if(_lodash.default.isFunction(task))this.add(task);else if(_lodash.default.isArray(task))this.adds(task);else throw new _exceptioner.default(4006,`type of task is ===> ${typeof task}`);this.enableTaskSleepInterval(_lodash.default.isNumber(interval),interval);this.setState(_configerer.configerer.POOLLER_STATE.RUN_INFINITE);while(!this.ruleOfStopInfiniteRun()){this.printLogMessage(`415123, runInInfinite() 正在無限Loop中, ${this.getLogMessageOfExecutingTaskQueueCount()}`);await _classPrivateFieldGet(_run,this).call(this)}});(0,_defineProperty2.default)(this,"ruleOfStopInfiniteRun",()=>{return!this.isRunning()&&this.isExecutingTaskQueueEmpty()});(0,_defineProperty2.default)(this,"isExecutingTaskQueueEmpty",()=>{return _lodash.default.size(this.queueOfExecutingTask)===0});(0,_defineProperty2.default)(this,"appendParamInToQueue",(...params)=>{this.triggerBgInstance();this.queueOfWaitingParam.push(...params)});(0,_defineProperty2.default)(this,"runByParams",async(functionOfAsyncTask,...params)=>{if(functionOfAsyncTask===undefined){functionOfAsyncTask=this.queueOfAssignTask["low"].shift().task}if(!_lodash.default.isFunction(functionOfAsyncTask))throw new _exceptioner.default(4006,`runByParams error, typeof task can't be ${typeof functionOfAsyncTask}`);if(!_lodash.default.isArray(params))throw new _exceptioner.default(4006,`runByParams error, typeof params can't be ${typeof params}`);this.beforeRun();this.add(functionOfAsyncTask);this.appendParamInToQueue(...params);this.setState(_configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS);while(!this.ruleOfStopInfiniteRun()&&_lodash.default.size(this.queueOfWaitingParam)>0){await _classPrivateFieldGet(_run,this).call(this)}});(0,_defineProperty2.default)(this,"runByEachTask",async(tasks=[])=>{this.id=_index2.utiller.getRandomHash(15);this.beforeRun();this.adds(tasks);this.setState(_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK);while(!this.ruleOfStopInfiniteRun()){await _classPrivateFieldGet(_run,this).call(this,this.id);if(this.getCountOfAssignTaskInQueue()<=0){this.terminate();this.printLogMessage(`788121, runByEachTask() 因為 taskOfWaitingQueue 清空而停止`)}await _index2.utiller.syncDelay(10);this.printLogMessage(`788143, runByEachTask() 為了讓while不要停止運算`)}this.printLogMessage(`7881952, runByEachTask() 結束了while()`)});(0,_defineProperty2.default)(this,"runByTimes",async(functionOfAsyncTask,times=1)=>{if(this.maximumOfWorker!==1){this.printLogMessage(`警告: runByTimes 模式建議使用 1 個 worker,當前為 ${this.maximumOfWorker}`,true)}this.countsOfRunByTimes=times;this.add(functionOfAsyncTask);this.beforeRun();this.setState(_configerer.configerer.POOLLER_STATE.RUN_BY_TIMES);while(!this.ruleOfStopInfiniteRun()&&this.countsOfRunByTimes>0){await _classPrivateFieldGet(_run,this).call(this)}});(0,_defineProperty2.default)(this,"runInBackGround",(asyncfunc,...params)=>{this.isRunInBackgroundMode=true;if(!(typeof asyncfunc==="function")){throw new _exceptioner.default(4002,`_asyncfunc can't be ${typeof asyncfunc}`)}return setTimeout(async()=>{try{await asyncfunc.apply(this,params)}catch(error){if(error instanceof _exceptioner.default){this.printLogMessage(`7812123, runInBackGround() 執行錯誤: ${error.message}`,true,error)}else{throw new _exceptioner.default(4009,{message:`${this.getPoollerLogFormat("")}`},error)}}finally{this.terminate();this.printLogMessage(`7812123, runInBackGround() 走到finally`)}},1)});(0,_defineProperty2.default)(this,"getPoollerLogFormat",msg=>{return`POOLLER NAME: ${this.getPoolId()}${_lodash.default.isEmpty(msg)?"":" , "}${msg}`});(0,_defineProperty2.default)(this,"setTaskFailHandler",(listener=error=>console.log(error.message))=>{this.handlerOfAssignTaskFail=listener});(0,_defineProperty2.default)(this,"rulesOfAppendToExecutingTask",()=>{switch(this.state){case _configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK:return this.isRunning()&&!this.isExecutingQueueFull()&&this.getCountOfAssignTaskInQueue()>0;case _configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS:return this.isRunning()&&!this.isExecutingQueueFull()&&_lodash.default.size(this.queueOfWaitingParam)>0;case _configerer.configerer.POOLLER_STATE.RUN_BY_TIMES:case _configerer.configerer.POOLLER_STATE.RUN_INFINITE:return this.isRunning()&&!this.isExecutingQueueFull()&&this.getCountOfAssignTaskInQueue()>0;default:throw new _exceptioner.default(4005,`this.state ==> ${this.state}`)}});(0,_defineProperty2.default)(this,"appendTaskToExecuteQueue",(hash,promise)=>{if(_lodash.default.isEqual(this.state,_configerer.configerer.POOLLER_STATE.RUN_BY_TIMES)){this.countsOfRunByTimes=this.countsOfRunByTimes-1}const task={state:"NOT",hash:hash,task:promise};this.printLogMessage(`4484451, 增加了一個assignedTask ${this.getLogMessageOfTaskHash(hash)} 到 QueueOfExecutingTask ,${this.getLogMessageOfExecutingTaskQueueCount}`,false,task);this.queueOfExecutingTask.push(task)});(0,_defineProperty2.default)(this,"getLogMessageOfExecutingTaskQueueCount",()=>{return`ExecutingTaskQueueCount: ${_lodash.default.size(this.queueOfExecutingTask)}`});(0,_defineProperty2.default)(this,"getLogMessageOfAssignTaskQueueCount",()=>{return`AssignTaskQueueCount: ${this.getCountOfAssignTaskInQueue()}`});(0,_defineProperty2.default)(this,"getLogMessageOfTaskHash",hash=>{return`TASK HASH: ${hash}`});(0,_defineProperty2.default)(this,"showState",()=>{_index2.utiller.appendInfo(this.getPoollerLogFormat(`workerCount: ${this.maximumOfWorker}`));_index2.utiller.appendInfo(this.getPoollerLogFormat(`taskQueue(還在排隊的Task): ${this.getCountOfAssignTaskInQueue()}`));_index2.utiller.appendInfo(this.getPoollerLogFormat(`QueueOfExecutingTask(正在執行的AsyncTask, 超過workerCount就是bug): ${_lodash.default.size(this.queueOfExecutingTask)}`));_index2.utiller.appendInfo(this.getPoollerLogFormat(`mapOfHashNTask(還沒執行到的AsyncTask reference的暫存區): ${_lodash.default.size(this.mapOfHashNTask)}`))});_classPrivateFieldInitSpec(this,_run,async()=>{const self=this;async function execute(){const tasks=_lodash.default.filter(self.queueOfExecutingTask,each=>_lodash.default.isEqual(each.state,"NOT")).map(each=>{const taskWrapper=each.task;return taskWrapper()});self.printLogMessage(`454652321, 開始任務(taskWrapper): run() 裡面的execute開始執行, task(state = NOT)的長度 ${_lodash.default.size(tasks)}`);const result=_lodash.default.size(tasks)>0?await Promise.race(tasks):"4542131684, task is empty";self.printLogMessage(`54121445161, 結束任務(taskWrapper): run() 裡面的execute結束執行`);return result}async function emptyTask(){self.printLogMessage(`因為max count of worker為0,所以指派一個簡單的任務`);await _index2.utiller.syncDelay(10)}await this.syncTaskDispatcher();if(this.maximumOfWorker===0){await emptyTask()}else if(!this.isExecutingTaskQueueEmpty()){this.printLogMessage(`4512211, 開始任務(taskWrapper): ${this.getLogMessageOfExecutingTaskQueueCount()}`);const task=await execute();this.printLogMessage(`4512213 完畢任務(taskWrapper:${task}), ${this.getLogMessageOfExecutingTaskQueueCount()}, ${this.getLogMessageOfAssignTaskQueueCount()}`)}else{this.printLogMessage(`4574152 不應該走到這裏,但是 minor issue`,true)}if(this.queueOfExecutingTask.length>this.maximumOfWorker)this.printLogMessage(`4512214 一定是改壞了!!!!!!!!!!, ${this.getLogMessageOfExecutingTaskQueueCount} `,true);self.printLogMessage(`5478421212, 離開 run()`)});(0,_defineProperty2.default)(this,"getTaskInfoForRepetitiveRun",originalTaskInfo=>{const newTaskInfo={task:originalTaskInfo.task,hash:_index2.utiller.getRandomHash()};this.appendHashTaskMap(newTaskInfo);return newTaskInfo});(0,_defineProperty2.default)(this,"getTaskInfoDependOnPriority",()=>{for(const prior of _configerer.configerer.POOLLER_PRIORITY){if(this.queueOfAssignTask[prior].length>0){switch(this.state){case _configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK:return this.queueOfAssignTask[prior].shift();case _configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS:case _configerer.configerer.POOLLER_STATE.RUN_BY_TIMES:case _configerer.configerer.POOLLER_STATE.RUN_INFINITE:const originalTaskInfo=this.queueOfAssignTask[prior][0];return this.getTaskInfoForRepetitiveRun(originalTaskInfo);default:throw new _exceptioner.default(4005,`this.state ==> ${this.state}`)}}}if(!_lodash.default.isEqual(this.state,_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK))throw new _exceptioner.default(4007)});(0,_defineProperty2.default)(this,"removeResolveOrRejectPromiseByHash",(hash,result)=>{const callbackWrapper=this.mapOfHashNCallbackWrapper[hash];if(callbackWrapper!==undefined){this.printLogMessage(`5644153248, removeResolveOrRejectPromiseByHash 拿掉了完成的任務(${this.getLogMessageOfTaskHash(hash)})`);try{callbackWrapper(result)}catch(callbackError){this.printLogMessage(`回調執行失敗: ${callbackError.message}`,true,callbackError)}finally{delete this.mapOfHashNCallbackWrapper[hash]}}this.removePromiseFromExecutingQueue(hash)});(0,_defineProperty2.default)(this,"removePromiseFromExecutingQueue",hash=>{this.printLogMessage(`56448412, QueueOfExecutingTask 拿掉了完成的任務 ${this.getLogMessageOfTaskHash(hash)}`);_lodash.default.remove(this.queueOfExecutingTask,each=>_lodash.default.isEqual(hash,each.hash))});(0,_defineProperty2.default)(this,"runInfiniteInBackground",(functionOfAsyncTask,interval)=>{return this.invokeInstanceOfBackground(this.runInInfinite,functionOfAsyncTask,interval)});(0,_defineProperty2.default)(this,"runByParamInBackGround",(functionOfAsyncTask,...params)=>{return this.invokeInstanceOfBackground(this.runByParams,functionOfAsyncTask,...params)});(0,_defineProperty2.default)(this,"runByTimesInBackGround",(functionOfAsyncTask,times)=>{return this.invokeInstanceOfBackground(this.runByTimes,functionOfAsyncTask,times)});(0,_defineProperty2.default)(this,"runByEachTaskInBackGround",(...params)=>{return this.invokeInstanceOfBackground(this.runByEachTask,...params)});(0,_defineProperty2.default)(this,"invokeInstanceOfBackground",(state,...params)=>{if(this.atomicBgInstance!==undefined)clearTimeout(this.atomicBgInstance);this.atomicBgInstance=this.runInBackGround(state,...params);return this});this.maximumOfWorker=maxWorkers;this.setPoolId(_lodash.default.toString(name));for(const prior of _configerer.configerer.POOLLER_PRIORITY){this.queueOfAssignTask[prior]=[]}}enableQueueTerminateBySleepCount(enable=true,interval=_configerer.configerer.POOLLER_QUEUE_TIME_OF_SLEEP_INTERVAL_DEFAULT,times=_configerer.configerer.POOLLER_QUEUE_MAX_SLEEP_COUNTS_DEFAULT){this.enableOfQueueTerminateSleepCount=enable;this.queueMaxSleepCounts=times;this.intervalOfQueueSleep=interval}clearCache(){this.queueOfExecutingTask.length=0;this.mapOfHashNTask={};this.queueOfAssignTask={}}terminate(){this.isQueuePolling=false}printLogMessage(message,error=false,...infos){if(SPECIFICITY_DEBUG)_index2.utiller.printLogMessage(this.getPoollerLogFormat(message),error,...infos)}setWorker(counts){this.maximumOfWorker=counts}cleanTaskInterval(){this.taskSleepInterval={min:0,max:0}}enableTaskSleepInterval(enable=true,interval=_configerer.configerer.POOLLER_TASK_OF_INTERVAL_DEFAULT){this.enableOfTaskSleepByInterval=enable;if(_lodash.default.isNumber(interval)){interval={min:interval,max:interval}}this.taskSleepInterval=interval}enableTaskTimeout(enable=true,millionSec=_configerer.configerer.POOLLER_TASK_TIMEOUT_DEFAULT){this.enableOfTaskTimeout=enable;this.timeOfTaskTimeout=millionSec}async addTaskAndWait4Result(asyncTask,priority="low",taskName="noName"){this.triggerBgInstance();return new Promise((resolve,reject)=>{const callbackWrapper=result=>{if(result.assignedTaskCompleted){resolve(result.resolve)}else{reject(result.reject)}};const hash=this.add(asyncTask,priority);this.registerHash4Result(hash,callbackWrapper)})}registerHash4Result(hash,callback){this.mapOfHashNCallbackWrapper[hash]=callback}appendHashTaskMap(taskInfo){this.mapOfHashNTask[taskInfo.hash]=taskInfo}getTaskInfoByHash(hash){return this.mapOfHashNTask[hash]}remove(hash){let taskInfo=this.getTaskInfoByHash(hash);if(taskInfo){for(const prior of _configerer.configerer.POOLLER_PRIORITY){const _index=_lodash.default.indexOf(this.queueOfAssignTask[prior],taskInfo);if(_index>=0){this.queueOfAssignTask[prior].splice(_index,1);this.removeTaskMapByHash(hash);return true}}return false}else{throw new _exceptioner.default(4004,hash)}}setState(_state){this.state=_state}checkAndMarkInitialTaskStatus(){if(!this.initialTaskCompleted){this.initialTaskCompleted=true;return false}return this.initialTaskCompleted}setDisableFirstRun(disable=true){this.disableFirstRun=disable}triggerBgInstance(){if(!this.isRunInBackgroundMode||this.isQueuePolling){return}if(this.state===_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK){this.runByEachTaskInBackGround();return}else if(this.state===_configerer.configerer.POOLLER_STATE.RUN_BY_PARAMS){this.runByParamInBackGround();return}throw new _exceptioner.default(4011,`this.state is ==> ${_index2.utiller.getItsKeyByValue(_configerer.configerer.POOLLER_STATE,this.state)}`)}isExecutingQueueFull(){return _lodash.default.size(this.queueOfExecutingTask)>=this.maximumOfWorker}isTaskQueueEmpty(){return this.getCountOfAssignTaskInQueue()===0}async syncTaskDispatcher(){this.printLogMessage(`448984466, 走進來了 syncTaskDispatcher()`);const initialTaskShouldNotRun=this.disableFirstRun&&!this.checkAndMarkInitialTaskStatus();const isExecutingTaskAlmostFull=this.queueOfExecutingTask.length>=this.maximumOfWorker-1;const comparison=this.checkAndMarkInitialTaskStatus()&&isExecutingTaskAlmostFull&&this.enableOfTaskSleepByInterval;if(initialTaskShouldNotRun||comparison){const restInInterval=await _index2.utiller.syncDelayRandom(this.taskSleepInterval.min,this.taskSleepInterval.max);this.printLogMessage(`4484121, 走到睡覺區 enableOfTaskSleepByInterval:${this.enableOfTaskSleepByInterval} || ${restInInterval} ms`)}while(this.rulesOfAppendToExecutingTask()){const taskInfo=this.getTaskInfoDependOnPriority();if(taskInfo){const promise=this.taskWrapper(taskInfo.task,taskInfo.hash,this.queueOfWaitingParam.shift());if(this.state===_configerer.configerer.POOLLER_STATE.RUN_BY_EACH_TASK){this.removeTaskMapByHash(taskInfo.hash)}this.appendTaskToExecuteQueue(taskInfo.hash,promise)}else{this.printLogMessage(`848451 也許有未知的issue,保險起見break`,true);break}}this.printLogMessage(`4489844821, 離開了 syncTaskDispatcher()`)}isWait4ResultTask(hash){return this.mapOfHashNCallbackWrapper[hash]!==undefined}}var _default=exports.default=InfinitePool;
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _lodash=_interopRequireDefault(require("lodash"));var _cryptoJs=_interopRequireDefault(require("crypto-js"));var _configerer=require("configerer");var _exceptioner=_interopRequireDefault(require("../exceptioner"));var _momentTimezone=_interopRequireDefault(require("moment-timezone"));var _uuid=require("uuid");var _words=require("../words");var _nodeHtmlParser=require("node-html-parser");function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}String.format=function(){var param=[];for(var i=0,l=arguments.length;i<l;i++){param.push(arguments[i])}var statment=param[0];param.shift();return statment.replace(/\{(\d+)\}/g,function(m,n){return param[n]})};var Utiller=function(){function Utiller(){var _this=this;(0,_classCallCheck2["default"])(this,Utiller);(0,_defineProperty2["default"])(this,"mapOfIdNTimeoutId",{});(0,_defineProperty2["default"])(this,"getEnvironment",function(){return _this.env});(0,_defineProperty2["default"])(this,"isProductionEnvironment",function(){return _lodash["default"].isEqual(_this.getEnvironment(),"prod")});(0,_defineProperty2["default"])(this,"asyncUnitTaskFunction",function(){var millionSec=arguments.length>0&&arguments[0]!==undefined?arguments[0]:2000;var _funparam=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"\u9810\u8A2D\u7684param";var errorSimulator=arguments.length>2?arguments[2]:undefined;return(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var param,randomValue,symbol,_args=arguments;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:param=_args.length>0&&_args[0]!==undefined?_args[0]:_this.getRandomHash(10);randomValue=_this.getRandomValue(millionSec,millionSec*1.2);_context.prev=2;symbol=randomValue;_this.appendInfo("before executed ===> i'm symbol of ".concat(symbol,", ready to be executed, inner param = ").concat(_funparam));_context.next=7;return _this.syncDelay(randomValue);case 7:if(!(_lodash["default"].isFunction(errorSimulator)&&errorSimulator(param))){_context.next=9;break}throw Error("force to made error happen");case 9:_this.appendInfo("after executed ===> i'm symbol of ".concat(symbol,", the task cost ").concat(randomValue," million-seconds ").concat(param?"i hav params ===> ".concat(param):""));return _context.abrupt("return",{randomValue:randomValue,symbol:symbol,param:param});case 13:_context.prev=13;_context.t0=_context["catch"](2);_this.appendError(new Error("asyncUnitTask() catch error ".concat(_context.t0.message)));case 16:_context.prev=16;_this.appendInfo("wow.... finally got you");return _context.finish(16);case 19:case"end":return _context.stop()}},_callee,null,[[2,13,16,19]])}))});(0,_defineProperty2["default"])(this,"test",function(word){return(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(){return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return Util.syncDelay(3000);case 2:console.log("\u7D93\u904E\u4E86\u4E09\u79D2");_context2.next=5;return Util.syncDelay(4000);case 5:console.log("\u7D93\u904E\u4E86\u56DB\u79D2");_context2.next=8;return Util.syncDelay(5000);case 8:console.log("\u7D93\u904E\u4E86\u4E94\u79D2");_context2.next=11;return Util.syncDelay(6000);case 11:console.log("\u7D93\u904E\u4E86\u516D\u79D2");return _context2.abrupt("return","3423809432804 ".concat(word));case 13:case"end":return _context2.stop()}},_callee2)}))});(0,_defineProperty2["default"])(this,"findLowestValue",function(items){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"price";var minPrice=_lodash["default"].minBy(items,key)[key];return Math.floor(minPrice)});(0,_defineProperty2["default"])(this,"findHighestValue",function(items){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"price";var maxPrice=_lodash["default"].maxBy(items,key)[key];return Math.floor(maxPrice)});(0,_defineProperty2["default"])(this,"getStringOfValueRange",function(items){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"price";var sign=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"$";var minV=_lodash["default"].minBy(items,key)[key];var maxV=_lodash["default"].maxBy(items,key)[key];return maxV===minV?"$".concat(minV):"".concat(sign).concat(minV," - ").concat(sign).concat(maxV)});(0,_defineProperty2["default"])(this,"getCallersName",function(){var callerName;try{throw new Error}catch(e){var re=/(\w+)@|at (\w+) \(/g,st=e.stack,m;re.exec(st),m=re.exec(st);if(!_lodash["default"].isNull(m))callerName=m[1]||m[2]}if(_lodash["default"].startsWith("asyncGeneratorStep",callerName))callerName="";return callerName});(0,_defineProperty2["default"])(this,"getRandomValue",function(min,max){min=Math.ceil(min);max=Math.floor(max);return Math.floor(Math.random()*(max-min+1))+min});(0,_defineProperty2["default"])(this,"insertToArray",function(array,index){if(!Array.isArray(array)){throw new Error("First argument must be an array.")}var insertAt=Math.max(0,Math.min(index+1,array.length));for(var _len=arguments.length,items=new Array(_len>2?_len-2:0),_key2=2;_key2<_len;_key2++){items[_key2-2]=arguments[_key2]}array.splice.apply(array,[insertAt,0].concat(items))});(0,_defineProperty2["default"])(this,"getStringOfYearADConvertToMinguoYear",function(gregorianYear){var full=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var minguoYear=gregorianYear-1911;if(minguoYear>0){return"".concat(full?"\u6C11\u570B":"").concat(minguoYear).concat(full?"\u5E74":"")}else{return"".concat(full?"\u6C11\u570B":"","\u524D").concat(Math.abs(minguoYear)).concat(full?"\u5E74":"")}});(0,_defineProperty2["default"])(this,"convertDateToTimestamp",function(date){return(0,_momentTimezone["default"])(date).valueOf()});(0,_defineProperty2["default"])(this,"measureExecutionTime",function(){var _ref3=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(fn){var startTime,_len2,param,_key3,endTime,durationInMilliseconds,duration,hours,minutes,seconds,milliseconds,totalSeconds,_args3=arguments;return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:startTime=Date.now();for(_len2=_args3.length,param=new Array(_len2>1?_len2-1:0),_key3=1;_key3<_len2;_key3++){param[_key3-1]=_args3[_key3]}_context3.next=4;return fn.apply(void 0,param);case 4:endTime=Date.now();durationInMilliseconds=endTime-startTime;duration=_momentTimezone["default"].duration(durationInMilliseconds,"milliseconds");hours=Math.floor(duration.asHours());minutes=duration.minutes();seconds=duration.seconds();milliseconds=duration.milliseconds();totalSeconds=(durationInMilliseconds/1000).toFixed(3);_this.appendInfo("".concat(hours,"\u5C0F\u6642 ").concat(minutes,"\u5206 ").concat(seconds,".").concat(milliseconds.toString().padStart(3,"0"),"\u79D2 (\u5408\u8A08 ").concat(totalSeconds," \u79D2)"));case 13:case"end":return _context3.stop()}},_callee3)}));return function(_x){return _ref3.apply(this,arguments)}}());(0,_defineProperty2["default"])(this,"formatPriceWithCurrency",function(number,locale){if(typeof number!=="number"||typeof locale!=="string"){throw new TypeError("Invalid input: number must be a number and locale must be a string.")}return new Intl.NumberFormat(locale,{style:"currency",currency:new Intl.Locale(locale).maximize().currency||"USD",minimumFractionDigits:0}).format(number)});(0,_defineProperty2["default"])(this,"formatPrice",function(number,locale){if(typeof number!=="number"){throw new TypeError("Invalid input: number must be a number.")}if(!locale){return number.toLocaleString("en-US")}return new Intl.NumberFormat(locale,{style:"currency",currency:new Intl.Locale(locale).maximize().currency||"USD",minimumFractionDigits:0}).format(number)});(0,_defineProperty2["default"])(this,"generateUniversalKeywords",function(sentence){var maxLength=arguments.length>1&&arguments[1]!==undefined?arguments[1]:50;var maxNgramLength=arguments.length>2&&arguments[2]!==undefined?arguments[2]:4;if(!sentence||typeof sentence!=="string"){return[]}if(typeof _lodash["default"]==="undefined"){console.error("Lodash is not available. Please ensure it is imported.");return[]}var textToProcess=sentence.trim();var keywords=[];maxNgramLength=Math.max(2,maxNgramLength);if(textToProcess.length>maxLength){console.warn("\u8B66\u544A\uFF1A\u8F38\u5165\u5B57\u4E32\u9577\u5EA6\u70BA ".concat(textToProcess.length,"\uFF0C\u5DF2\u6839\u64DA maxLength: ").concat(maxLength," \u622A\u65B7\u3002"));textToProcess=textToProcess.substring(0,maxLength)}var englishWords=textToProcess.match(/[a-zA-Z]+/g)||[];englishWords.forEach(function(word){if(word.length>=2){keywords.push(word.toUpperCase());keywords.push(word.toLowerCase());var capitalized=word.charAt(0).toUpperCase()+word.slice(1).toLowerCase();keywords.push(capitalized)}});var specKeywordsRegex=/\b[0-9]+[a-zA-Z]{1,4}\b|\b[0-9]{1,3}(w|ml|g|oz|k)\b|[\u4e00-\u9fa5a-zA-Z0-9]{1,4}(色|號)[\u4e00-\u9fa5a-zA-Z0-9]{0,2}/gi;var specKeywords=(textToProcess.match(specKeywordsRegex)||[]).filter(function(k){return k.length>=2}).map(function(k){return k.toLowerCase()});keywords.push.apply(keywords,(0,_toConsumableArray2["default"])(specKeywords));var cleanText=textToProcess.toLowerCase();cleanText=cleanText.replace(/[0-9]+([\u4e00-\u9fa5a-z]{1,4}|[\/\-\~\\])/g," ").replace(/\b[a-z]{1,4}\b/g," ").replace(/\b[0-9]{1,3}\b/g," ");cleanText=cleanText.replace(/[!@#$%^&*()_+={}\[\]:;"'<>,.?\/\\|`~]/g," ").replace(/系列|一組|單色|多款|套組|全套|專用|迷你|頂級|高品質|超閃|奢華|最新|款式|新款|超亮|的|與|和|閃|美甲/g," ").replace(/\s+/g,"").trim();var minLength=2;for(var len=minLength;len<=maxNgramLength;len++){for(var i=0;i<=cleanText.length-len;i++){var keyword=cleanText.substring(i,i+len);keywords.push(keyword)}}var finalKeywords=_lodash["default"].chain(keywords).filter(function(k){return k.length>=2}).filter(function(k){return k.length>2||!/^[\u4e00-\u9fa5a-z0-9]$/.test(k)}).uniq().sortBy().value();return finalKeywords});(0,_defineProperty2["default"])(this,"mutateIndexOfArrayItem",function(array,object){var index=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;if(!Array.isArray(array)||!_lodash["default"].isObject(object))return array;var currentIndex=_lodash["default"].findIndex(array,function(item){return _lodash["default"].isEqual(item,object)});if(currentIndex===-1)return array;array.splice(currentIndex,1);var targetIndex=_lodash["default"].clamp(index,0,array.length);array.splice(targetIndex,0,object);return array});(0,_defineProperty2["default"])(this,"getArrayOfModifyObject2Index",function(array,object){var index=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;if(!Array.isArray(array)||!_lodash["default"].isObject(object))return array;var cloned=_lodash["default"].cloneDeep(array);var currentIndex=_lodash["default"].findIndex(cloned,function(item){return _lodash["default"].isEqual(item,object)});if(currentIndex===-1)return array;cloned.splice(currentIndex,1);var targetIndex=_lodash["default"].clamp(index,0,cloned.length);cloned.splice(targetIndex,0,object);return cloned});(0,_defineProperty2["default"])(this,"generateLabelValuePairsWithOrigin",function(){var origin=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[{label:"aa",value:1203},{label:"cc",value:1204},{label:"gg",value:2}];var latest=arguments.length>1&&arguments[1]!==undefined?arguments[1]:["aa","bb"];var usedValues=new Set(origin.map(function(o){return o.value}));return _lodash["default"].chain(latest).uniq().map(function(label){var originItem=_lodash["default"].find(origin,{label:label});if(originItem){return{label:label,value:originItem.value}}var value;do{value=_lodash["default"].random(2,999999999)}while(usedValues.has(value));usedValues.add(value);return{label:label,value:value}}).value()});(0,_defineProperty2["default"])(this,"getItemsOfMarkMatching",function(){var sourceArray=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var values=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var valueKey=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"value";var flagKey=arguments.length>3&&arguments[3]!==undefined?arguments[3]:"belong";var valuesSet=new Set(values);return _lodash["default"].map(sourceArray,function(item){return _objectSpread(_objectSpread({},item),{},(0,_defineProperty2["default"])({},flagKey,valuesSet.has(item[valueKey])))})});(0,_defineProperty2["default"])(this,"generateVariants",function(arrays){var labelSeparator=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"\uFF5C";var valueSeparator=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"-";var nonEmptyArrays=arrays.filter(function(arr){return arr.length>0});if(nonEmptyArrays.length===0)return[];if(nonEmptyArrays.length===1){return nonEmptyArrays[0].map(function(item){return{label:item.label,value:item.value}})}var combinations=_lodash["default"].reduce(nonEmptyArrays,function(acc,curr){return _lodash["default"].flatMap(acc,function(a){return curr.map(function(b){return[].concat((0,_toConsumableArray2["default"])(a),[b])})})},[[]]);return combinations.map(function(comb){return{label:comb.map(function(item){return item.label}).join(labelSeparator),value:comb.map(function(item){return item.value}).join(valueSeparator)}})});(0,_defineProperty2["default"])(this,"renameKeysInArray",function(arr){for(var _len3=arguments.length,keyMappings=new Array(_len3>1?_len3-1:0),_key4=1;_key4<_len3;_key4++){keyMappings[_key4-1]=arguments[_key4]}var mapping=Object.fromEntries(keyMappings);return arr.map(function(item){return _lodash["default"].mapKeys(item,function(value,key){return mapping[key]||key})})});(0,_defineProperty2["default"])(this,"getArrayOfMergeBySpecificId",function(array1,array2){var idKey=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"id";if(!Array.isArray(array2))return array1;var map2=_lodash["default"].keyBy(array2,function(item){return _lodash["default"].get(item,idKey)});return array1.map(function(item){var id=_lodash["default"].get(item,idKey);var match=map2[id];return match?_lodash["default"].merge({},item,match):item})});(0,_defineProperty2["default"])(this,"toPercentageDecimal",function(num){if(_lodash["default"].isNil(num))return 1;if(_lodash["default"].isString(num)){num=num.replace(/%/g,"").trim()}var parsed=_lodash["default"].toNumber(num);if(!_lodash["default"].isFinite(parsed))return 1;return _lodash["default"].round(parsed/100,10)});(0,_defineProperty2["default"])(this,"getNumberOfMultiplyCeil",function(a,b){var precision=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var factor=Math.pow(10,precision);return Math.ceil(a*b*factor)/factor});(0,_defineProperty2["default"])(this,"generateGoogleCalendarLink",function(_ref4){var title=_ref4.title,startDate=_ref4.startDate,startTime=_ref4.startTime,endDate=_ref4.endDate,endTime=_ref4.endTime,location=_ref4.location,details=_ref4.details;var startDateTime=(0,_momentTimezone["default"])("".concat(startDate," ").concat(startTime),"YYYY/MM/DD HH:mm").format("YYYYMMDDTHHmmss");var endDateTime=(0,_momentTimezone["default"])("".concat(endDate," ").concat(endTime),"YYYY/MM/DD HH:mm").format("YYYYMMDDTHHmmss");var params=new URLSearchParams;if(title)params.append("text",title);if(startDateTime&&endDateTime)params.append("dates","".concat(startDateTime,"/").concat(endDateTime));if(details)params.append("details",details);if(location)params.append("location",location);params.append("ctz","Asia/Taipei");params.append("trp","true");return"https://calendar.google.com/calendar/r/eventedit?".concat(params.toString())});(0,_defineProperty2["default"])(this,"generateTimeTreeLink",function(_ref5){var title=_ref5.title,startDate=_ref5.startDate,startTime=_ref5.startTime,endDate=_ref5.endDate,endTime=_ref5.endTime,location=_ref5.location,memo=_ref5.memo;var params=new URLSearchParams;if(title)params.append("title",title);if(startDate)params.append("start_date",startDate.replace(/\//g,"-"));if(startTime)params.append("start_time",startTime);if(endDate)params.append("end_date",endDate.replace(/\//g,"-"));if(endTime)params.append("end_time",endTime);if(location)params.append("location",location);if(memo)params.append("memo",memo);return"https://timetreeapp.com/plans/new?".concat(params.toString())});(0,_defineProperty2["default"])(this,"generateIcsContent",function(_ref6){var title=_ref6.title,startDate=_ref6.startDate,startTime=_ref6.startTime,endDate=_ref6.endDate,endTime=_ref6.endTime,location=_ref6.location,details=_ref6.details;var startDateTime=_momentTimezone["default"].tz("".concat(startDate," ").concat(startTime),"YYYY/MM/DD HH:mm","Asia/Taipei").format("YYYYMMDDTHHmmss");var endDateTime=_momentTimezone["default"].tz("".concat(endDate," ").concat(endTime),"YYYY/MM/DD HH:mm","Asia/Taipei").format("YYYYMMDDTHHmmss");var stamp=(0,_momentTimezone["default"])().utc().format("YYYYMMDDTHHmmss")+"Z";var uid=Date.now().toString(36)+Math.random().toString(36).substring(2,5)+"@gemini-app.com";var escapeIcs=function escapeIcs(text){return text.replace(/\\/g,"\\\\").replace(/,/g,"\\,").replace(/;/g,"\\;").replace(/\n/g,"\\n")};var lines=["BEGIN:VCALENDAR","VERSION:2.0","PRODID:-//Gemini AI//NONSGML v1.0//EN","BEGIN:VEVENT","UID:".concat(uid),"DTSTAMP:".concat(stamp)];if(startDateTime)lines.push("DTSTART;TZID=Asia/Taipei:".concat(startDateTime));if(endDateTime)lines.push("DTEND;TZID=Asia/Taipei:".concat(endDateTime));if(title)lines.push("SUMMARY:".concat(escapeIcs(title)));if(location)lines.push("LOCATION:".concat(escapeIcs(location)));if(details)lines.push("DESCRIPTION:".concat(escapeIcs(details)));lines.push("END:VEVENT","END:VCALENDAR");return lines.join("\r\n")});(0,_defineProperty2["default"])(this,"generateAllCalendarLinks",function(event){var googleLink=_this.generateGoogleCalendarLink(event);var timeTreeEvent=_objectSpread(_objectSpread({},event),{},{memo:event.details});var timeTreeLink=_this.generateTimeTreeLink(timeTreeEvent);var icsContent=_this.generateIcsContent(event);var icsLink="data:text/calendar;charset=utf8,".concat(encodeURIComponent(icsContent));return{google:googleLink,timeTree:timeTreeLink,ics:icsLink}});(0,_defineProperty2["default"])(this,"getArrayOfMappingRef",function(current,reference){return _lodash["default"].map(current,function(currentObj){var referenceObj=_lodash["default"].find(reference,{value:currentObj.value});return referenceObj?_lodash["default"].merge({},currentObj,referenceObj):currentObj})});(0,_defineProperty2["default"])(this,"areAllValuesTheSameOnKeys",function(array){for(var _len4=arguments.length,keys=new Array(_len4>1?_len4-1:0),_key5=1;_key5<_len4;_key5++){keys[_key5-1]=arguments[_key5]}if(!array||array.length<=1||keys.length===0){return true}var _loop=function _loop(){var _array$;var keyName=_keys[_i];var firstValue=(_array$=array[0])===null||_array$===void 0?void 0:_array$[keyName];var isCurrentKeySame=_lodash["default"].every(array,function(item){return item[keyName]===firstValue});if(!isCurrentKeySame){return{v:false}}},_ret;for(var _i=0,_keys=keys;_i<_keys.length;_i++){_ret=_loop();if(_ret)return _ret.v}return true});this.init();this.env="dev"}return(0,_createClass2["default"])(Utiller,[{key:"removeAttributeBy",value:function removeAttributeBy(object){var predicate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(value){return _lodash["default"].isUndefined(value)};for(var _key6 in object){if(predicate(object[_key6])){delete object[_key6]}}}},{key:"getNumberOfNormalize",value:function getNumberOfNormalize(value){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;if(_lodash["default"].isNumber(value))return value;try{var force=_lodash["default"].toNumber(value);return _lodash["default"].isNumber(force)&&!isNaN(force)?force:defaultValue}catch(error){Util.appendError("448561684561 ".concat(error.message))}return defaultValue}},{key:"getBooleanOfNormalize",value:function getBooleanOfNormalize(value){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(_lodash["default"].isBoolean(value))return value;if(_lodash["default"].isNumber(value)&&_lodash["default"].isEqual(value,1))return true;if(_lodash["default"].isNumber(value)&&_lodash["default"].isEqual(value,0))return true;try{var force=JSON.parse(_lodash["default"].toString(value).toLowerCase());return _lodash["default"].isBoolean(force)?force:defaultValue}catch(error){Util.appendError("448561684562 ".concat(error.message))}return defaultValue}},{key:"getStringOfNormalize",value:function getStringOfNormalize(value){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"";var trim=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(_lodash["default"].isString(value))return trim?_lodash["default"].trim(value):value;try{var force=_lodash["default"].toString(value);return this.isOrEquals(force,"","undefined")?defaultValue:trim?_lodash["default"].trim(force):force}catch(error){Util.appendError("448616845453 ".concat(error.message))}return defaultValue}},{key:"isValidVersionOfString",value:function isValidVersionOfString(versionName){if(this.isUndefinedNullEmpty(versionName)){return false}var numbers=versionName.split(".");var _iterator=_createForOfIteratorHelper(numbers),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var number=_step.value;var toNum=_lodash["default"].toNumber(number);if(!_lodash["default"].isNumber(toNum)||isNaN(toNum))return false}}catch(err){_iterator.e(err)}finally{_iterator.f()}return true}},{key:"getSeparatorOfUnique",value:function getSeparatorOfUnique(){return"\u0F0D\u0F0D"}},{key:"getStringOfVersionIncrement",value:function getStringOfVersionIncrement(stringOfVersion){var delta=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var numbers=stringOfVersion.split(".").map(function(each){return _lodash["default"].toNumber(each)});var last=numbers.length-1;numbers[last]=numbers[last]+delta;return numbers.join(".")}},{key:"setLocaleOfMoment",value:function setLocaleOfMoment(){var locale=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"en";_momentTimezone["default"].locale(locale)}},{key:"getUuidOfV4",value:function getUuidOfV4(){return(0,_uuid.v4)()}},{key:"performActionWithoutTimingIssue",value:function performActionWithoutTimingIssue(){var task=arguments.length>0&&arguments[0]!==undefined?arguments[0]:function(){return true};var wait=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;this.syncDelay(wait).then(function(){return task()})}},{key:"executeTimeoutTask",value:function executeTimeoutTask(functionOfAsyncTask){var ms=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1000;var id=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.getRandomHash();var self=this;var idOfCurrentTimeoutTask=this.mapOfIdNTimeoutId[id];if(idOfCurrentTimeoutTask)clearTimeout(idOfCurrentTimeoutTask);for(var _len5=arguments.length,params=new Array(_len5>3?_len5-3:0),_key7=3;_key7<_len5;_key7++){params[_key7-3]=arguments[_key7]}var idOfTimeoutTask=setTimeout.apply(void 0,[(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.next=2;return functionOfAsyncTask();case 2:delete self.mapOfIdNTimeoutId[id];case 3:case"end":return _context4.stop()}},_callee4)})),ms].concat(params));self.mapOfIdNTimeoutId[id]=idOfTimeoutTask}},{key:"printLogMessage",value:function printLogMessage(message){var error=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!this.isProductionEnvironment()){for(var _len6=arguments.length,infos=new Array(_len6>2?_len6-2:0),_key8=2;_key8<_len6;_key8++){infos[_key8-2]=arguments[_key8]}if(error){this.appendError.apply(this,[message].concat(infos))}else{this.appendInfo.apply(this,[message].concat(infos))}}}},{key:"init",value:function init(){}},{key:"setEnvironment",value:function setEnvironment(env){this.env=env}},{key:"appendInfo",value:function appendInfo(){var _console;if(this.isProductionEnvironment())return;(_console=console).log.apply(_console,arguments)}},{key:"appendError",value:function appendError(){var _console2;if(this.isProductionEnvironment())return;(_console2=console).error.apply(_console2,arguments)}},{key:"syncDelay",value:function(){var _syncDelay=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(){var delayInms,_args5=arguments;return _regenerator["default"].wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:delayInms=_args5.length>0&&_args5[0]!==undefined?_args5[0]:2000;return _context5.abrupt("return",new Promise(function(resolve){setTimeout(function(){resolve(delayInms)},delayInms)}));case 2:case"end":return _context5.stop()}},_callee5)}));function syncDelay(){return _syncDelay.apply(this,arguments)}return syncDelay}()},{key:"startWithRegex",value:function startWithRegex(){var string=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var rule=arguments.length>1&&arguments[1]!==undefined?arguments[1]:".";var pattern=new RegExp("^".concat(rule),"i");return pattern.test(string)}},{key:"accumulate",value:function accumulate(target,conditions){var beginning=target;var _iterator2=_createForOfIteratorHelper(conditions),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var condition=_step2.value;if(condition!==undefined&&_lodash["default"].isFunction(condition)){beginning=condition(beginning)}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return beginning}},{key:"isOrEquals",value:function isOrEquals(target){for(var _len7=arguments.length,several=new Array(_len7>1?_len7-1:0),_key9=1;_key9<_len7;_key9++){several[_key9-1]=arguments[_key9]}for(var _i2=0,_several=several;_i2<_several.length;_i2++){var each=_several[_i2];if(_lodash["default"].isEqual(target,each))return true}return false}},{key:"isAndEquals",value:function isAndEquals(){for(var _len8=arguments.length,predicates=new Array(_len8),_key0=0;_key0<_len8;_key0++){predicates[_key0]=arguments[_key0]}for(var _i3=0,_predicates=predicates;_i3<_predicates.length;_i3++){var predicate=_predicates[_i3];if(!predicate()){return false}}return true}},{key:"getStringOfHeadMatch",value:function getStringOfHeadMatch(string,regex){var flag=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"g";var result=string.match(new RegExp(regex,flag));return this.isUndefinedNullEmpty(result)?undefined:result[0]}},{key:"or",value:function or(){for(var _len9=arguments.length,booleans=new Array(_len9),_key1=0;_key1<_len9;_key1++){booleans[_key1]=arguments[_key1]}for(var _i4=0,_booleans=booleans;_i4<_booleans.length;_i4++){var boo=_booleans[_i4];if(_lodash["default"].isBoolean(boo)&&boo)return true}return false}},{key:"and",value:function and(){for(var _len0=arguments.length,booleans=new Array(_len0),_key10=0;_key10<_len0;_key10++){booleans[_key10]=arguments[_key10]}for(var _i5=0,_booleans2=booleans;_i5<_booleans2.length;_i5++){var boo=_booleans2[_i5];if(!!!boo)return false}return true}},{key:"nth",value:function nth(array){var index=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-1;return _lodash["default"].nth(array,index%_lodash["default"].size(array))}},{key:"getExistOne",value:function getExistOne(){for(var _len1=arguments.length,candidates=new Array(_len1),_key11=0;_key11<_len1;_key11++){candidates[_key11]=arguments[_key11]}for(var _i6=0,_candidates=candidates;_i6<_candidates.length;_i6++){var candidate=_candidates[_i6];if(candidate)return candidate}}},{key:"getStringOfDropHeadSign",value:function getStringOfDropHeadSign(string,sign){return _lodash["default"].dropWhile(Array.from(string),function(each){return _lodash["default"].isEqual(each,sign)}).join("")}},{key:"isAndWith",value:function isAndWith(self,predicate){for(var _len10=arguments.length,several=new Array(_len10>2?_len10-2:0),_key12=2;_key12<_len10;_key12++){several[_key12-2]=arguments[_key12]}for(var _i7=0,_several2=several;_i7<_several2.length;_i7++){var each=_several2[_i7];if(!predicate(self,each))return false}return true}},{key:"syncDelayRandom",value:function(){var _syncDelayRandom=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(){var min,max,random,_args6=arguments;return _regenerator["default"].wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:min=_args6.length>0&&_args6[0]!==undefined?_args6[0]:3000;max=_args6.length>1&&_args6[1]!==undefined?_args6[1]:5000;random=this.getRandomValue(min,max);_context6.next=5;return this.syncDelay(random);case 5:return _context6.abrupt("return",random);case 6:case"end":return _context6.stop()}},_callee6,this)}));function syncDelayRandom(){return _syncDelayRandom.apply(this,arguments)}return syncDelayRandom}()},{key:"has",value:function has(collection,item){var precisely=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(_lodash["default"].isArray(collection)){if(precisely)return _lodash["default"].findIndex(collection,function(each){return _lodash["default"].isEqual(item,each)})>-1;else return _lodash["default"].indexOf(collection,item)>-1}if(_lodash["default"].isObject(item)){return collection[item]}if(_lodash["default"].isString(collection)){return collection.indexOf(item)>-1}return false}},{key:"containsBy",value:function containsBy(array,item){return _lodash["default"].findIndex(array,function(each){return _lodash["default"].isEqual(each,item)})>=0}},{key:"getStringOfInsideParentheses",value:function getStringOfInsideParentheses(string){var rule=arguments.length>1&&arguments[1]!==undefined?arguments[1]:".";return this.getStringOfRule(string,rule,"(",")")}},{key:"getStringOfInsideBrackets",value:function getStringOfInsideBrackets(string){var rule=arguments.length>1&&arguments[1]!==undefined?arguments[1]:".";return this.getStringOfRule(string,rule,"[","]")}},{key:"getStringOfInsideBraces",value:function getStringOfInsideBraces(string){var rule=arguments.length>1&&arguments[1]!==undefined?arguments[1]:".";return this.getStringOfRule(string,rule,"{","}")}},{key:"getStringOfRule",value:function getStringOfRule(string){var rule=arguments.length>1&&arguments[1]!==undefined?arguments[1]:".";var left=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"{";var right=arguments.length>3&&arguments[3]!==undefined?arguments[3]:"}";return this.getStringOfHeadMatch(string,"(?<=\\".concat(left,")").concat(rule,"+?(?=\\").concat(right,")"))}},{key:"getRandomHash",value:function getRandomHash(){var length=arguments.length>0&&arguments[0]!==undefined?arguments[0]:20;var randomBytes=_cryptoJs["default"].lib.WordArray.random(length);var base64String=_cryptoJs["default"].enc.Base64.stringify(randomBytes);return base64String.substring(0,length)}},{key:"getRandomHashV2",value:function getRandomHashV2(length){var characters="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";var result="";for(var i=0;i<length;i++){var randomIndex=Math.floor(Math.random()*characters.length);result+=characters.charAt(randomIndex)}return result}},{key:"getEncryptString",value:function getEncryptString(texts){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.ENCRYPT_KEY;var alwaysTheSame=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner["default"](8010,_lodash["default"].size(key));var ivOfCrypto=_cryptoJs["default"].enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");var keyOfCrypto=alwaysTheSame?_cryptoJs["default"].enc.Base64.parse("".concat(key).concat(_lodash["default"].range(0,maxLengthOfKey-key.length).join(""))):key;return _cryptoJs["default"].AES.encrypt(texts,keyOfCrypto,{iv:ivOfCrypto}).toString()}},{key:"getEncryptStringV2",value:function getEncryptStringV2(texts){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.ENCRYPT_KEY;var alwaysTheSame=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner["default"](8010,_lodash["default"].size(key));var ivOfCrypto=_cryptoJs["default"].enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");var keyOfCrypto=alwaysTheSame?_cryptoJs["default"].enc.Base64.parse("".concat(key).concat(_lodash["default"].range(0,maxLengthOfKey-key.length).join(""))):key;return _cryptoJs["default"].AES.encrypt(JSON.stringify({content:texts}),keyOfCrypto,{iv:ivOfCrypto}).toString()}},{key:"getDecryptString",value:function getDecryptString(ciphertext){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.ENCRYPT_KEY;var maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner["default"](8010,_lodash["default"].size(key));var ivOfCrypto=_cryptoJs["default"].enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");try{var value=_cryptoJs["default"].AES.decrypt(ciphertext,key,{iv:ivOfCrypto}).toString(_cryptoJs["default"].enc.Utf8);if(!_lodash["default"].isEmpty(value.trim()))return value}catch(e){}return _cryptoJs["default"].AES.decrypt(ciphertext,_cryptoJs["default"].enc.Base64.parse("".concat(key).concat(_lodash["default"].range(0,maxLengthOfKey-key.length).join(""))),{iv:ivOfCrypto}).toString(_cryptoJs["default"].enc.Utf8)}},{key:"getDecryptStringV2",value:function getDecryptStringV2(ciphertext){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_configerer.configerer.ENCRYPT_KEY;var maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner["default"](8010,_lodash["default"].size(key));var ivOfCrypto=_cryptoJs["default"].enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");try{var _stringOfObj=_cryptoJs["default"].AES.decrypt(ciphertext,key,{iv:ivOfCrypto}).toString(_cryptoJs["default"].enc.Utf8);if(!_lodash["default"].isEmpty(_stringOfObj.trim())){var _obj2=JSON.parse(_stringOfObj);return _obj2.content}}catch(e){}var stringOfObj=_cryptoJs["default"].AES.decrypt(ciphertext,_cryptoJs["default"].enc.Base64.parse("".concat(key).concat(_lodash["default"].range(0,maxLengthOfKey-key.length).join(""))),{iv:ivOfCrypto}).toString(_cryptoJs["default"].enc.Utf8);var obj=JSON.parse(stringOfObj);return obj.content}},{key:"getFirebaseFormattedString",value:function getFirebaseFormattedString(texts){return _lodash["default"].replace(texts,/[\.\#\$\[\]]/g,"-").trim()}},{key:"formalizeNamesToArray",value:function formalizeNamesToArray(singerString){var normalize=singerString;normalize=normalize.split(_configerer.configerer.SEPARATE_TONE_SINGER)[0].trim();normalize=_lodash["default"].replace(normalize,/[,\/#!$%\^&\*;:{}=_`、~()()]/g,"_").trim();normalize=this.getFirebaseFormattedString(normalize);normalize=_lodash["default"].replace(normalize,/\_\_+/g,"_").trim();while(_lodash["default"].endsWith(normalize,"_")){normalize=normalize.slice(0,-1).trim()}var words=normalize.split("_");return _lodash["default"].map(words,function(word){return _lodash["default"].trim(word)})}},{key:"getShuffledArrayWithLimitCountHighPerformance",value:function getShuffledArrayWithLimitCountHighPerformance(arr,n){var result=new Array(n),len=arr.length,taken=new Array(len);if(n>len)n=len;while(n--){var x=Math.floor(Math.random()*len);result[n]=arr[x in taken?taken[x]:x];taken[x]=--len in taken?taken[len]:len}return result}},{key:"getFileNameFromPath",value:function getFileNameFromPath(path){var extension=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var segments=path.split("/");var target=segments.pop();return extension?target:target.split(".").shift()}},{key:"getFileNameExtensionFromPath",value:function getFileNameExtensionFromPath(path){var name=path.split("/").pop();return name}},{key:"getPathOfReplaceLastDir",value:function getPathOfReplaceLastDir(path,name){var split=path.split("/");split.pop();split.push(name);return split.join("/")}},{key:"getExtensionFromPath",value:function getExtensionFromPath(path){var name=path.split("/").pop();var segments=name.split(".");return _lodash["default"].size(segments)>1?segments.pop():""}},{key:"getFolderPathOfSpecificPath",value:function getFolderPathOfSpecificPath(path){var split=path.split("/");split.pop();return split.join("/")}},{key:"getFolderNameOfFilePath",value:function getFolderNameOfFilePath(path){if(this.isValidFilePath(path)){var splits=path.split("/");return _lodash["default"].nth(splits,-2)}else{throw new _exceptioner["default"](9999,"64255615 path is not valid '".concat(path,"'"))}}},{key:"isUnderTargetPath",value:function isUnderTargetPath(absolute,target){var segments=absolute.split("/");return this.has(segments,target)}},{key:"getFileDirPath",value:function getFileDirPath(path){var slash=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;return _lodash["default"].join(_lodash["default"].initial(_lodash["default"].split(path,"/")),"/")+(slash?"/":"")}},{key:"isPathEqualsFileType",value:function isPathEqualsFileType(path,type){var extension=path.split(".").pop();return _lodash["default"].isEqual(extension,type)}},{key:"isValidFilePath",value:function isValidFilePath(path){var extension=this.getExtensionFromPath(path);return _lodash["default"].size(extension)>0}},{key:"getArrayOfSize",value:function getArrayOfSize(array){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;return _lodash["default"].take(array,n)}},{key:"getShuffledArrayWithLimitCount",value:function getShuffledArrayWithLimitCount(arr,n){return this.getShuffledArrayWithLimitCountHighPerformance(arr,n)}},{key:"getRandomItemOfArray",value:function getRandomItemOfArray(array){if(!_lodash["default"].isArray(array))throw new _exceptioner["default"](9999,"why are you so stupid, typeof array should be array, not ==> ".concat(array," "));for(var _len11=arguments.length,ignores=new Array(_len11>1?_len11-1:0),_key13=1;_key13<_len11;_key13++){ignores[_key13-1]=arguments[_key13]}var filter=_lodash["default"].without.apply(_lodash["default"],[array].concat(ignores));var target=_lodash["default"].size(filter)>0?filter:array;var item=this.getShuffledArrayWithLimitCount(target,1);return item.length>0?item[0]:undefined}},{key:"appendMapOfKeyArray",value:function appendMapOfKeyArray(object,key){for(var _len12=arguments.length,value=new Array(_len12>2?_len12-2:0),_key14=2;_key14<_len12;_key14++){value[_key14-2]=arguments[_key14]}if(this.isUndefinedNullEmpty(object[key])){object[key]=[].concat(value)}else{var _object$key;(_object$key=object[key]).push.apply(_object$key,value)}}},{key:"getMergedArrayBy",value:function getMergedArrayBy(){var major=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var sub=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var key=arguments.length>2?arguments[2]:undefined;if(!key||major.length===0||sub.length===0){return(0,_toConsumableArray2["default"])(major)}var subMap=new Map(sub.map(function(item){return[item[key],item]}));return major.map(function(majorItem){var subItem=subMap.get(majorItem[key]);return _objectSpread(_objectSpread({},subItem||{}),majorItem)})}},{key:"getShuffledItemFromArray",value:function getShuffledItemFromArray(arr){var shuffled=_lodash["default"].shuffle(arr);return shuffled[0]}},{key:"getShuffledArray",value:function getShuffledArray(arr){var shuffled=_lodash["default"].shuffle(arr);return shuffled}},{key:"isJson",value:function isJson(item){item=typeof item!=="string"?JSON.stringify(item):item;try{item=JSON.parse(item)}catch(e){return false}if((0,_typeof2["default"])(item)==="object"&&item!==null){return true}return false}},{key:"getObjectValue",value:function getObjectValue(obj){if(_lodash["default"].isObject(obj)){return Object.values(obj)[0]}return""}},{key:"getObject",value:function getObject(key,value){var object={};object[key]=value;return object}},{key:"getStringOfCreditCardFormatted",value:function getStringOfCreditCardFormatted(){var string=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var inputValue=string.replace(/\D/g,"");var result=inputValue.replace(/(\d{4})(?=\d)/g,"$1-");return result.slice(0,19)}},{key:"getObjectKey",value:function getObjectKey(obj){if(_lodash["default"].isObject(obj)){return Object.keys(obj)[0]}return""}},{key:"printf",value:function printf(){this.appendInfo("i can use in web || react.js")}},{key:"isKeywordRule",value:function isKeywordRule(constraint){if(_lodash["default"].isUndefined(constraint)||_lodash["default"].isEmpty(constraint))throw new Error("PARAMS CAN NOT BE EMPTY");if(!_lodash["default"].isString(constraint))throw new Error("PARAMS SHOULD BE STRING");if(constraint.length>20)throw new Error("EXCEED 20 WORDS IS NOT ALLOWED")}},{key:"getItsKeyByValue",value:function getItsKeyByValue(object,value){return Object.keys(object).find(function(key){return object[key]===value})}},{key:"startWiths",value:function startWiths(string){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var _iterator3=_createForOfIteratorHelper(key),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var _key=_step3.value;if(_lodash["default"].startsWith(string,_key)){return true}}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}return false}},{key:"replaceAll",value:function replaceAll(string,patten,to){return _lodash["default"].replace(string,new RegExp("".concat(patten),"g"),to)}},{key:"replaceAllWithSets",value:function replaceAllWithSets(){var string=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var after=string;for(var _len13=arguments.length,patterns=new Array(_len13>1?_len13-1:0),_key15=1;_key15<_len13;_key15++){patterns[_key15-1]=arguments[_key15]}for(var _i8=0,_patterns=patterns;_i8<_patterns.length;_i8++){var pattern=_patterns[_i8];if(this.isOrEquals(undefined,pattern.from,pattern.to)){throw(0,_exceptioner["default"])(9999,"from or to can't be empty")}after=this.replaceAll(after,pattern.from,pattern.to)}return after}},{key:"replaceArrayByContentIndex",value:function replaceArrayByContentIndex(array,current,latest){var index=_lodash["default"].indexOf(array,current);array[index]=latest}},{key:"deepFlat",value:function deepFlat(collection){var sign=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"_";var result="";var stack=[[collection,""]];while(stack.length>0){var _stack$pop=stack.pop(),_stack$pop2=(0,_slicedToArray2["default"])(_stack$pop,2),current=_stack$pop2[0],prefix=_stack$pop2[1];if(_lodash["default"].isArray(current)){for(var i=current.length-1;i>=0;i--){stack.push([current[i],prefix])}}else if(_lodash["default"].isObject(current)){var keys=Object.keys(current);for(var _i9=keys.length-1;_i9>=0;_i9--){var _key16=keys[_i9];stack.push([current[_key16],prefix+_key16+sign])}}else{var valueString=_lodash["default"].trim(String(current));if(valueString.length>0){result+=(result.length>0?sign:"")+prefix+valueString}else if(prefix.length>0&&result.length>0){result+=sign}else if(prefix.length>0&&result.length===0){result+=prefix.endsWith(sign)?prefix.slice(0,-sign.length):prefix}}}if(result.endsWith(sign)){result=result.slice(0,-sign.length)}return result}},{key:"joinEscapeChar",value:function joinEscapeChar(str){return(str+"").replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0")}},{key:"getValueWithIntegerType",value:function getValueWithIntegerType(whatever){try{var value=parseInt(whatever);return isNaN(value)?0:value}catch(error){return 0}}},{key:"getValueOfPriority",value:function getValueOfPriority(){for(var _len14=arguments.length,compares=new Array(_len14),_key17=0;_key17<_len14;_key17++){compares[_key17]=arguments[_key17]}for(var _i0=0,_compares=compares;_i0<_compares.length;_i0++){var compare=_compares[_i0];if(!this.isUndefinedNullEmpty(compare))return compare}return undefined}},{key:"asyncPool",value:function(){var _asyncPool=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(poolLimit,array,iteratorFn){var ret,executing,_iterator4,_step4,_loop2;return _regenerator["default"].wrap(function _callee7$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:ret=[];executing=[];_iterator4=_createForOfIteratorHelper(array);_context8.prev=3;_loop2=_regenerator["default"].mark(function _loop2(){var item,p,e;return _regenerator["default"].wrap(function _loop2$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:item=_step4.value;p=Promise.resolve().then(function(){return iteratorFn(item,array)});ret.push(p);if(!(poolLimit<=array.length)){_context7.next=9;break}e=p.then(function(){return executing.splice(executing.indexOf(e),1)});executing.push(e);if(!(executing.length>=poolLimit)){_context7.next=9;break}_context7.next=9;return Promise.race(executing);case 9:case"end":return _context7.stop()}},_loop2)});_iterator4.s();case 6:if((_step4=_iterator4.n()).done){_context8.next=10;break}return _context8.delegateYield(_loop2(),"t0",8);case 8:_context8.next=6;break;case 10:_context8.next=15;break;case 12:_context8.prev=12;_context8.t1=_context8["catch"](3);_iterator4.e(_context8.t1);case 15:_context8.prev=15;_iterator4.f();return _context8.finish(15);case 18:return _context8.abrupt("return",Promise.all(ret));case 19:case"end":return _context8.stop()}},_callee7,null,[[3,12,15,18]])}));function asyncPool(_x2,_x3,_x4){return _asyncPool.apply(this,arguments)}return asyncPool}()},{key:"getAttrValueInSequence",value:function getAttrValueInSequence(info){for(var _len15=arguments.length,attrs=new Array(_len15>1?_len15-1:0),_key18=1;_key18<_len15;_key18++){attrs[_key18-1]=arguments[_key18]}for(var _i1=0,_attrs=attrs;_i1<_attrs.length;_i1++){var attr=_attrs[_i1];if(!_lodash["default"].isEmpty(info[attr])){return info[attr]}}return info}},{key:"toDBC",value:function toDBC(txtstring){var tmp="";for(var i=0;i<txtstring.length;i++){if(txtstring.charCodeAt(i)===32){tmp=tmp+String.fromCharCode(12288)}if(txtstring.charCodeAt(i)<127){tmp=tmp+String.fromCharCode(txtstring.charCodeAt(i)+65248)}}return tmp}},{key:"toCDB",value:function toCDB(str){var tmp="";for(var i=0;i<str.length;i++){if(str.charCodeAt(i)===12288){tmp+=String.fromCharCode(str.charCodeAt(i)-12256);continue}if(str.charCodeAt(i)>65280&&str.charCodeAt(i)<65375){tmp+=String.fromCharCode(str.charCodeAt(i)-65248)}else{tmp+=String.fromCharCode(str.charCodeAt(i))}}return tmp}},{key:"findIndexes",value:function findIndexes(array,predicate){var indexes=[];var hasIndex=true;var indexOfLatest=0;while(hasIndex){indexOfLatest=_lodash["default"].findIndex(array,predicate,indexOfLatest+1);if(indexOfLatest>-1){indexes.push(indexOfLatest)}else{hasIndex=false}}return indexes}},{key:"getSliceArrayOfSpecificIndexes",value:function getSliceArrayOfSpecificIndexes(array){var items=[];var size=_lodash["default"].size(array);for(var _len16=arguments.length,indexes=new Array(_len16>1?_len16-1:0),_key19=1;_key19<_len16;_key19++){indexes[_key19-1]=arguments[_key19]}for(var _i10=0,_indexes=indexes;_i10<_indexes.length;_i10++){var index=_indexes[_i10];if(!_lodash["default"].isNumber(index))throw new _exceptioner["default"](9999,"59941278 index should be number => ".concat(index,", ").concat(array));if(index>size-1)throw new _exceptioner["default"](9999,"5994123 index=>".concat(index," is not valid, exceed than array size=").concat(size,", ").concat(array));items.push(_lodash["default"].nth(array,index))}return items}},{key:"indexesOf",value:function indexesOf(arr,val){var indexes=[];var i=-1;while((i=arr.indexOf(val,i+1))!==-1){indexes.push(i)}return indexes}},{key:"getIndexOfContext",value:function getIndexOfContext(context,stmt){return _lodash["default"].findIndex(context,function(per){return _lodash["default"].isEqual(per.trim(),stmt)})}},{key:"toOneLineString",value:function toOneLineString(string){return _lodash["default"].join(_lodash["default"].split(string,"\n"),"")}},{key:"toSpaceLessString",value:function toSpaceLessString(string){return _lodash["default"].split(string,"").map(function(each){return _lodash["default"].trim(each)}).join("")}},{key:"toNewLineLessString",value:function toNewLineLessString(string){return _lodash["default"].split(string,"\n").map(function(each){return _lodash["default"].trim(each)}).join("")}},{key:"exist",value:function exist(obj){return!_lodash["default"].isNull(obj)&&!_lodash["default"].isUndefined(obj)}},{key:"isUndefinedNullEmpty",value:function isUndefinedNullEmpty(obj){var first=obj===undefined||obj===null;var second=_lodash["default"].isString(obj)||_lodash["default"].isArray(obj)||_lodash["default"].isObject(obj)?_lodash["default"].isEmpty(obj):false;return first||second}},{key:"isAndConditionOfUndefinedNullEmpty",value:function isAndConditionOfUndefinedNullEmpty(){for(var _len17=arguments.length,objs=new Array(_len17),_key20=0;_key20<_len17;_key20++){objs[_key20]=arguments[_key20]}for(var _i11=0,_objs=objs;_i11<_objs.length;_i11++){var obj=_objs[_i11];if(!this.isUndefinedNullEmpty(obj))return false}return true}},{key:"isOrConditionOfUndefinedNullEmpty",value:function isOrConditionOfUndefinedNullEmpty(){for(var _len18=arguments.length,objs=new Array(_len18),_key21=0;_key21<_len18;_key21++){objs[_key21]=arguments[_key21]}for(var _i12=0,_objs2=objs;_i12<_objs2.length;_i12++){var obj=_objs2[_i12];if(this.isUndefinedNullEmpty(obj))return true}return false}},{key:"getStringHandledByEachLine",value:function getStringHandledByEachLine(string){var predict=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(segment,index,segments){return true};var separator=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"\n";var segments=string.split(separator);var _iterator5=_createForOfIteratorHelper(segments),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var segment=_step5.value;predict(segment,_lodash["default"].indexOf(segments,segment),segments)}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}return segments.join(separator)}},{key:"getSegmentsOfEachLine",value:function getSegmentsOfEachLine(string){return string.split("\n")}},{key:"getNormalizedStringEndWith",value:function getNormalizedStringEndWith(string,predicate){string=this.toCDB(string);predicate=this.toCDB(predicate);var after=_lodash["default"].join(_lodash["default"].dropRightWhile(string,function(each){return!_lodash["default"].isEqual(each,predicate)}),"");return _lodash["default"].isEmpty(after)?string:after}},{key:"getNormalizedStringNotStartWith",value:function getNormalizedStringNotStartWith(string){var _this2=this;for(var _len19=arguments.length,predicate=new Array(_len19>1?_len19-1:0),_key22=1;_key22<_len19;_key22++){predicate[_key22-1]=arguments[_key22]}string=this.toCDB(string);var after=_lodash["default"].join(_lodash["default"].dropWhile(string,function(each){return _this2.has(predicate,each)}),"");return _lodash["default"].isEmpty(after)?string:after}},{key:"getNormalizedStringNotEndWith",value:function getNormalizedStringNotEndWith(string){var _this3=this;for(var _len20=arguments.length,predicate=new Array(_len20>1?_len20-1:0),_key23=1;_key23<_len20;_key23++){predicate[_key23-1]=arguments[_key23]}string=this.toCDB(string);var after=_lodash["default"].join(_lodash["default"].dropRightWhile(string,function(each){return _this3.has(predicate,each)}),"");return _lodash["default"].isEmpty(after)?string:after}},{key:"getTodayTimeFormat",value:function getTodayTimeFormat(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YYYY-MM-DD")}},{key:"getCustomFormatOfDatePresent",value:function getCustomFormatOfDatePresent(ts){var format=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"YY/MM";return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format(format)}},{key:"getSimpleDateYYMMDDFormat",value:function getSimpleDateYYMMDDFormat(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YY/MM/DD")}},{key:"getSimpleTimeYYMMDDHHmmFormat",value:function getSimpleTimeYYMMDDHHmmFormat(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YY/MM/DD HH:mm")}},{key:"getECPayCurrentTimeFormat",value:function getECPayCurrentTimeFormat(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss")}},{key:"getCurrentTimeFormatV2",value:function getCurrentTimeFormatV2(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss")}},{key:"getCurrentTimeFormatYMDHM",value:function getCurrentTimeFormatYMDHM(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm")}},{key:"getCurrentTimeFormatYMDHMS",value:function getCurrentTimeFormatYMDHMS(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss")}},{key:"getCurrentTimeFormat",value:function getCurrentTimeFormat(ts){return(0,_momentTimezone["default"])(ts?ts:this.getCurrentTimeStamp()).format("YYYY-MM-DD-HH-mm-ss")}},{key:"getCurrentMillionSecTimeFormat",value:function getCurrentMillionSecTimeFormat(ts){return(0,_momentTimezone["default"])(ts?ts:undefined).format("YYYY-MM-DD-HH-mm-ss-SSS")}},{key:"isBetweenTimeStamp",value:function isBetweenTimeStamp(){var target=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.getCurrentTimeStamp();var min=arguments.length>1?arguments[1]:undefined;var max=arguments.length>2?arguments[2]:undefined;return(0,_momentTimezone["default"])(target).isBetween(min,max)}},{key:"isBeforeTimeStamp",value:function isBeforeTimeStamp(){var target=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.getCurrentTimeStamp();var time=arguments.length>1?arguments[1]:undefined;return(0,_momentTimezone["default"])(target).isBefore(time)}},{key:"isAfterTimeStamp",value:function isAfterTimeStamp(){var target=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.getCurrentTimeStamp();var time=arguments.length>1?arguments[1]:undefined;return(0,_momentTimezone["default"])(target).isAfter(time)}},{key:"formatTimeByLocale",value:function formatTimeByLocale(ts){var location=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"zh-TW";var timezone=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"Asia/Taipei";var use24Hour=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;_momentTimezone["default"].locale(location);var m=(0,_momentTimezone["default"])(ts).tz(timezone);var formatStr=use24Hour?"YYYY/MM/DD HH:mm":"YYYY/MM/DD hh:mm A";return m.format(formatStr)}},{key:"getTimeStampWithConditions",value:function getTimeStampWithConditions(){var param=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{days:0,months:0,years:0,minutes:0,seconds:0,hours:0};var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.getCurrentTimeStamp();var base=(0,_momentTimezone["default"])(target);for(var each in param){var number=param[each];var unit=each;if(number>0){base=base.add(number,unit)}if(number<0){base=base.subtract(Math.abs(number),unit)}}return base.valueOf()}},{key:"getTimeStampByStringFormat",value:function getTimeStampByStringFormat(string){return this.getTimeStampFromSpecificFormat(string,"YYYY/MM/DD HH:mm:ss").valueOf()}},{key:"getTimeStampFromSpecificFormat",value:function getTimeStampFromSpecificFormat(string){var format=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"YYYY/MM/DD HH:mm:ss";return(0,_momentTimezone["default"])(string,format).valueOf()}},{key:"getTimeStampFromECPayStringFormat",value:function getTimeStampFromECPayStringFormat(string){return this.getTimeStampFromSpecificFormat(string,"YYYY/MM/DD HH:mm:ss").valueOf()}},{key:"getTimeFormatOfDurationToMillionSecond",value:function getTimeFormatOfDurationToMillionSecond(duration){return _momentTimezone["default"].utc(duration).format("HH\u5C0F\u6642mm\u5206\u9418ss\u79D2SSS")}},{key:"getTimeFormatOfDurationToSecond",value:function getTimeFormatOfDurationToSecond(duration){return _momentTimezone["default"].utc(duration).format("HH\u5C0F\u6642mm\u5206\u9418ss\u79D2")}},{key:"getTimeFormatOfDurationToDay",value:function getTimeFormatOfDurationToDay(duration){return _momentTimezone["default"].utc(duration).format("DD\u5929HH\u5C0F\u6642mm\u5206\u9418ss\u79D2")}},{key:"getChineseTimeFormat",value:function getChineseTimeFormat(ts){_momentTimezone["default"].locale("zh-TW");return(0,_momentTimezone["default"])(ts).format("LLLL")}},{key:"getMinuteFormatOfDuration",value:function getMinuteFormatOfDuration(ds){return _momentTimezone["default"].duration(ds).asMinutes()}},{key:"getSecondFormatOfDuration",value:function getSecondFormatOfDuration(ds){return _momentTimezone["default"].duration(ds).asSeconds()}},{key:"getDayFormatOfDuration",value:function getDayFormatOfDuration(ds){return _momentTimezone["default"].duration(ds).asDays()}},{key:"getDurationOfMillionSec",value:function getDurationOfMillionSec(dateOrTimeStamp){var currentTimestamp=this.getCurrentTimeStamp();var targetTimeStamp=(0,_momentTimezone["default"])(dateOrTimeStamp).valueOf();var queue=_lodash["default"].sortBy([{ts:currentTimestamp},{ts:targetTimeStamp}],function(each){return each.ts}).map(function(each){return each.ts});var after=(0,_momentTimezone["default"])(queue.pop());var before=(0,_momentTimezone["default"])(queue.shift());var duration=_momentTimezone["default"].duration(after.diff(before));var ms=duration.asMilliseconds();return ms}},{key:"getCurrentTimeStamp",value:function getCurrentTimeStamp(){return(0,_momentTimezone["default"])().valueOf()}},{key:"isStringContainInLines",value:function isStringContainInLines(context,key){var _iterator6=_createForOfIteratorHelper(_lodash["default"].split(context,"\n")),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var each=_step6.value;if(this.has(each,key))return true}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}return false}},{key:"camel",value:function camel(){for(var _len21=arguments.length,words=new Array(_len21),_key24=0;_key24<_len21;_key24++){words[_key24]=arguments[_key24]}return _lodash["default"].camelCase(words.join("_"))}},{key:"upperCamel",value:function upperCamel(){return _lodash["default"].upperFirst(this.camel.apply(this,arguments))}},{key:"array2Obj",value:function array2Obj(array){var obj={};var _iterator7=_createForOfIteratorHelper(array),_step7;try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var each=_step7.value;obj["".concat(this.getObjectKey(each))]=this.getObjectValue(each)}}catch(err){_iterator7.e(err)}finally{_iterator7.f()}return obj}},{key:"arrayToObjWith",value:function arrayToObjWith(array,predicate){var obj={};var _iterator8=_createForOfIteratorHelper(array),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var item=_step8.value;var _key25=predicate(item);var content=obj[_key25];if(content&&_lodash["default"].isArray(content)){content.push(item)}else{obj[_key25]=[item]}}}catch(err){_iterator8.e(err)}finally{_iterator8.f()}return obj}},{key:"isEmptyString",value:function isEmptyString(string){return _lodash["default"].isEqual(_lodash["default"].trim(string),"")}},{key:"mergeObject",value:function mergeObject(){return _lodash["default"].merge.apply(_lodash["default"],arguments)}},{key:"syncSetTimeout",value:function syncSetTimeout(func,ms){var callback=arguments.length>2&&arguments[2]!==undefined?arguments[2]:function(){};(function sync(done){if(!done){setTimeout(function(){func();sync(true)},ms);return}callback()})()}},{key:"mergeArrayBy",value:function mergeArrayBy(){var identifier=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"id";for(var _len22=arguments.length,array=new Array(_len22>1?_len22-1:0),_key26=1;_key26<_len22;_key26++){array[_key26-1]=arguments[_key26]}return Object.values(array.flat().reduce(function(acc,item){if(item[identifier])acc[item[identifier]]=_objectSpread(_objectSpread({},acc[item[identifier]]||{}),item);return acc},{}))}},{key:"getRelativePath",value:function getRelativePath(pathName,rootName){return _lodash["default"].dropWhile(pathName,function(each,index){return _lodash["default"].isEqual(each,rootName[index])}).join("")}},{key:"dropItemsByIndex",value:function dropItemsByIndex(array,from,end){_lodash["default"].remove(array,function(value,index,array){return end>=index&&index>=from})}},{key:"isEven",value:function isEven(n){return n%2===0}},{key:"isOdd",value:function isOdd(n){return Math.abs(n%2)===1}},{key:"enrichZhTw",value:function enrichZhTw(){_momentTimezone["default"].locale("zh-tw",{months:"\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"),weekdaysShort:"\u5468\u65E5_\u5468\u4E00_\u5468\u4E8C_\u5468\u4E09_\u5468\u56DB_\u5468\u4E94_\u5468\u516D".split("_"),weekdaysMin:"\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"),longDateFormat:{LT:"Ah\u9EDEmm\u5206",LTS:"Ah\u9EDEm\u5206s\u79D2",L:"YYYY-MM-DD",LL:"YYYY\u5E74MMMD\u65E5",LLL:"YYYY\u5E74MMMD\u65E5Ah\u9EDEmm\u5206",LLLL:"YYYY\u5E74MMMD\u65E5ddddAh\u9EDEmm\u5206",l:"YYYY-MM-DD",ll:"YYYY\u5E74MMMD\u65E5",lll:"YYYY\u5E74MMMD\u65E5Ah\u9EDEmm\u5206",llll:"YYYY\u5E74MMMD\u65E5ddddAh\u9EDEmm\u5206"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function meridiemHour(h,meridiem){var hour=h;if(hour===12){hour=0}if(meridiem==="\u51CC\u6668"||meridiem==="\u65E9\u4E0A"||meridiem==="\u4E0A\u5348"){return hour}else if(meridiem==="\u4E0B\u5348"||meridiem==="\u665A\u4E0A"){return hour+12}else{return hour>=11?hour:hour+12}},meridiem:function meridiem(hour,minute,isLower){var hm=hour*100+minute;if(hm<600){return"\u51CC\u6668"}else if(hm<900){return"\u65E9\u4E0A"}else if(hm<1130){return"\u4E0A\u5348"}else if(hm<1230){return"\u4E2D\u5348"}else if(hm<1800){return"\u4E0B\u5348"}else{return"\u665A\u4E0A"}},calendar:{sameDay:function sameDay(){return this.minutes()===0?"[\u4ECA\u5929]Ah[\u9EDE\u6574]":"[\u4ECA\u5929]LT"},nextDay:function nextDay(){return this.minutes()===0?"[\u660E\u5929]Ah[\u9EDE\u6574]":"[\u660E\u5929]LT"},lastDay:function lastDay(){return this.minutes()===0?"[\u6628\u5929]Ah[\u9EDE\u6574]":"[\u6628\u5929]LT"},nextWeek:function nextWeek(){var startOfWeek,prefix;startOfWeek=(0,_momentTimezone["default"])().startOf("week");prefix=this.diff(startOfWeek,"days")>=7?"[\u4E0B]":"[\u672C]";return this.minutes()===0?prefix+"dddA\u9EDE\u6574":prefix+"dddAh\u9EDEmm"},lastWeek:function lastWeek(){var startOfWeek,prefix;startOfWeek=(0,_momentTimezone["default"])().startOf("week");prefix=this.unix()<startOfWeek.unix()?"[\u4E0A]":"[\u672C]";return this.minutes()===0?prefix+"dddAh\u9EDE\u6574":prefix+"dddAh\u9EDEmm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function ordinal(number,period){switch(period){case"d":case"D":case"DDD":return number+"\u65E5";case"M":return number+"\u6708";case"w":case"W":return number+"\u5468";default:return number}},relativeTime:{future:"%s\u5185",past:"%s\u524D",s:"\u5E7E\u79D2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5C0F\u6642",hh:"%d \u5C0F\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500B\u6708",MM:"%d \u4E2A\u6708",y:"1 \u5E74",yy:"%d \u5E74"},week:{dow:1,doy:4}})}},{key:"getVisibleOrHidden",value:function getVisibleOrHidden(judgement){return{visibility:judgement?"visible":"hidden"}}},{key:"getNumberOfPercentageToFloat",value:function getNumberOfPercentageToFloat(percentage){var cleanedPercentage=percentage.replace("%","");var floatNumber=parseFloat(cleanedPercentage)/100;return floatNumber}},{key:"getVisibleOrNone",value:function getVisibleOrNone(judgement){var flex=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return{display:judgement?flex?"flex":"inherit":"none"}}},{key:"stringToInteger",value:function stringToInteger(string){string=_lodash["default"].toUpper(string);switch(string){case"A":return 0;case"B":return 1;case"C":return 2;case"D":return 3;case"E":return 4;case"F":return 5;case"G":return 6;case"H":return 7;case"I":return 8;case"J":return 9;case"K":return 10;case"L":return 11;case"M":return 12;case"N":return 13;default:return 101}}},{key:"integerToString",value:function integerToString(integer){switch(integer){case 0:return"A";case 1:return"B";case 2:return"C";case 3:return"D";case 4:return"E";case 5:return"F";case 6:return"G";case 7:return"H";case 8:return"I";case 9:return"J";case 10:return"K";case 11:return"L";case 12:return"M";case 13:return"N";default:return"Z"}}},{key:"toObjectMap",value:function toObjectMap(array){var newbies=[];for(var _len23=arguments.length,rules=new Array(_len23>1?_len23-1:0),_key27=1;_key27<_len23;_key27++){rules[_key27-1]=arguments[_key27]}var _iterator9=_createForOfIteratorHelper(array),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var each=_step9.value;var object={};var _iterator0=_createForOfIteratorHelper(rules),_step0;try{for(_iterator0.s();!(_step0=_iterator0.n()).done;){var rule=_step0.value;var func=rule.func?rule.func:function(stmt){return stmt};object[rule.to]=this.isUndefinedNullEmpty(rule.from)||!_lodash["default"].isObject(each)?func(each):func(each[rule.from])}}catch(err){_iterator0.e(err)}finally{_iterator0.f()}newbies.push(object)}}catch(err){_iterator9.e(err)}finally{_iterator9.f()}return newbies}},{key:"exeAll",value:function exeAll(collection){for(var _len24=arguments.length,funcs=new Array(_len24>1?_len24-1:0),_key28=1;_key28<_len24;_key28++){funcs[_key28-1]=arguments[_key28]}if(_lodash["default"].isArray(collection)){var _iterator1=_createForOfIteratorHelper(collection),_step1;try{for(_iterator1.s();!(_step1=_iterator1.n()).done;){var each=_step1.value;var _iterator10=_createForOfIteratorHelper(funcs),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var func=_step10.value;func(each)}}catch(err){_iterator10.e(err)}finally{_iterator10.f()}}}catch(err){_iterator1.e(err)}finally{_iterator1.f()}}else if(_lodash["default"].isObject(collection)){for(var _each in collection){var _iterator11=_createForOfIteratorHelper(funcs),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var _func=_step11.value;collection[_each]=_func(collection[_each])}}catch(err){_iterator11.e(err)}finally{_iterator11.f()}}}else{throw new _exceptioner["default"](9999,"7841212 type can't be array or object")}return collection}},{key:"getObjectWhile",value:function getObjectWhile(major,minor){var predicate=arguments.length>2&&arguments[2]!==undefined?arguments[2]:function(target){return true};var collection={};for(var _key29 in major){if(predicate(major,minor,_key29)){collection[_key29]=major[_key29]}}return collection}},{key:"getIntersectionObject",value:function getIntersectionObject(objOfMajor,objOfMinor){return this.getObjectWhile(objOfMajor,objOfMinor,function(major,minor,key){return minor[key]!==undefined})}},{key:"getDifferenceObject",value:function getDifferenceObject(objOfMajor,objOfMinor){return this.getObjectWhile(objOfMajor,objOfMinor,function(major,minor,key){return minor[key]===undefined})}},{key:"isObjectContainAndEqual",value:function isObjectContainAndEqual(targetObject,mainObject){var equal=true;for(var _key30 in targetObject){if(mainObject[_key30]===undefined||mainObject[_key30]!==targetObject[_key30]){equal=false;break}}return equal}},{key:"getStringOfPop",value:function getStringOfPop(string,separator){if(!_lodash["default"].isString(string)){throw new _exceptioner["default"](9999,"445115,type should be string but ==> ".concat((0,_typeof2["default"])(string)))}var segments=string.split(separator);segments.pop();return segments.join(separator)}},{key:"getStringOfShift",value:function getStringOfShift(string,separator){if(!_lodash["default"].isString(string)){throw new _exceptioner["default"](9999,"445116,type should be string but ==> ".concat((0,_typeof2["default"])(string)))}var segments=string.split(separator);segments.shift();return segments.join(separator)}},{key:"toObjectWithAttributeKey",value:function toObjectWithAttributeKey(array,attrKeyOfPK){var object={};var _iterator12=_createForOfIteratorHelper(array),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var each=_step12.value;var pk=each[attrKeyOfPK];if(this.isUndefinedNullEmpty(pk)){throw new _exceptioner["default"](9999,"48157232 pk can't be empty => '".concat(pk,"'"))}object[pk]=each}}catch(err){_iterator12.e(err)}finally{_iterator12.f()}return object}},{key:"getObjectOfArraySpecifyAttr",value:function getObjectOfArraySpecifyAttr(array,attr){return this.toObjectWithAttributeKey(array,attr)}},{key:"getStateOfStringContainsSign",value:function getStateOfStringContainsSign(string){for(var _len25=arguments.length,signs=new Array(_len25>1?_len25-1:0),_key31=1;_key31<_len25;_key31++){signs[_key31-1]=arguments[_key31]}for(var _i13=0,_signs=signs;_i13<_signs.length;_i13++){var sign=_signs[_i13];if(this.has(string,sign)){return{exists:true,sign:sign}}}return{exists:false}}},{key:"constraintOfParam",value:function constraintOfParam(collection,type){var result=false;for(var _len26=arguments.length,others=new Array(_len26>2?_len26-2:0),_key32=2;_key32<_len26;_key32++){others[_key32-2]=arguments[_key32]}var validOfOthersCondition=_lodash["default"].isEmpty(others)?true:this.and.apply(this,(0,_toConsumableArray2["default"])(others.map(function(each){return each.logic})));switch(type){case"array":if(_lodash["default"].isArray(collection)&&validOfOthersCondition)result=true;break;case"object":if(_lodash["default"].isObject(collection)&&validOfOthersCondition)result=true;break;case"string":if(_lodash["default"].isString(collection)&&validOfOthersCondition)result=true;break;case"number":if(_lodash["default"].isNumber(collection)&&validOfOthersCondition)result=true;break;case"other":if(validOfOthersCondition)return true}var stringOfRules=_lodash["default"].isEmpty(others)?"":", ".concat(others.map(function(each){return each.message}).join(" | "));if(result===false){throw new _exceptioner["default"](9999,"7474423 type should be ".concat(type," but get '").concat((0,_typeof2["default"])(type),"' ").concat(stringOfRules," "))}}},{key:"getSliceArrayWithMutate",value:function getSliceArrayWithMutate(array,n){var slice=_lodash["default"].remove(array,function(each,index){return index<n});return slice}},{key:"getArrayOfInteraction",value:function getArrayOfInteraction(one,two){return one.filter(function(element){return!two.includes(element)})}},{key:"getArrayOfMoveToSpecificIndex",value:function getArrayOfMoveToSpecificIndex(array,from,to){if(!Array.isArray(array)){throw new Error("First argument must be an array.")}var length=array.length;if(from<0||from>=length||to<0||to>=length){console.warn("Invalid 'from' or 'to' index for getArrayOfMoveToSpecificIndexOptimized.");return(0,_toConsumableArray2["default"])(array)}if(from===to){return(0,_toConsumableArray2["default"])(array)}var copy=(0,_toConsumableArray2["default"])(array);var _copy$splice=copy.splice(from,1),_copy$splice2=(0,_slicedToArray2["default"])(_copy$splice,1),item=_copy$splice2[0];copy.splice(to,0,item);return copy}},{key:"getArrayOfMoveItemToSpecificIndex",value:function getArrayOfMoveItemToSpecificIndex(array,item,indexOfDestination){var indexOfItem=_lodash["default"].indexOf(array,item);return this.getArrayOfMoveToSpecificIndex(array,indexOfItem,indexOfDestination)}},{key:"getArrayOfMoveSpecificItemToAside",value:function getArrayOfMoveSpecificItemToAside(array,item){var toTail=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var indexOfItem=_lodash["default"].indexOf(array,item);return this.getArrayOfMoveSpecificIndexToAside(array,indexOfItem,toTail)}},{key:"getArrayOfMoveSpecificIndexToAside",value:function getArrayOfMoveSpecificIndexToAside(array,index){var toTail=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var indexOfLast=_lodash["default"].size(array)-1;return this.getArrayOfMoveToSpecificIndex(array,index,toTail?indexOfLast:0)}},{key:"getECPayCheckMacValue",value:function getECPayCheckMacValue(data){var hashKey=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"5294y06JbISpM5x9";var hashIV=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"v77hoKGq4kWxNNIS";var clone=_lodash["default"].cloneDeep(data);delete clone.CheckMacValue;var keys=Object.keys(clone).sort(function(l,r){return l>r?1:-1});var checkValue="";var _iterator13=_createForOfIteratorHelper(keys),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var _key33=_step13.value;checkValue+="".concat(_key33,"=").concat(clone[_key33],"&")}}catch(err){_iterator13.e(err)}finally{_iterator13.f()}checkValue="HashKey=".concat(hashKey,"&").concat(checkValue,"HashIV=").concat(hashIV);checkValue=encodeURIComponent(checkValue).toLowerCase();checkValue=checkValue.replace(/%20/g,"+").replace(/%2d/g,"-").replace(/%5f/g,"_").replace(/%2e/g,".").replace(/%21/g,"!").replace(/%2a/g,"*").replace(/%28/g,"(").replace(/%29/g,")").replace(/%20/g,"+");return _lodash["default"].toUpper(_cryptoJs["default"].SHA256(checkValue).toString(_cryptoJs["default"].enc.Hex))}},{key:"getStringOfHandledHtml",value:function getStringOfHandledHtml(htmlString){var predicate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(document){console.log(document)};var document=(0,_nodeHtmlParser.parse)(htmlString);predicate(document);return document.toString()}},{key:"getSpecifyObjectBy",value:function getSpecifyObjectBy(array,predicate){var _iterator14=_createForOfIteratorHelper(array),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var item=_step14.value;if(predicate(item))return item}}catch(err){_iterator14.e(err)}finally{_iterator14.f()}}},{key:"validatePayloadObjectValid",value:function validatePayloadObjectValid(content){var rules=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var idOfError=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.getRandomHash(10);if(this.isUndefinedNullEmpty(content)){throw new _exceptioner["default"](9999,"".concat(idOfError," content(pay-load) is undefined || empty"))}var _iterator15=_createForOfIteratorHelper(rules),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var rule=_step15.value;if(_lodash["default"].isString(rule)){if(this.isUndefinedNullEmpty(content[rule])){throw new _exceptioner["default"](9999,"".concat(idOfError," ATTRIBUTE:'").concat(rule,"' is not Exist"))}}else if(_lodash["default"].isObject(rule)){var _key34=this.getObjectKey(rule);var predicate=this.getObjectValue(rule);if(!predicate(content[_key34])){throw new _exceptioner["default"](9999,"".concat(idOfError," ATTRIBUTE:'").concat(_key34,"' is not valid of custom rule"))}}}}catch(err){_iterator15.e(err)}finally{_iterator15.f()}return true}},{key:"getArrayOfSummarizeBy",value:function getArrayOfSummarizeBy(array,keyOfId,keyOfSum){var obj={};var _iterator16=_createForOfIteratorHelper(array),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var item=_step16.value;var _key36=item[keyOfId];if(obj[_key36]!==undefined){obj[_key36]=obj[_key36]+item[keyOfSum]}else{obj[_key36]=item[keyOfSum]}}}catch(err){_iterator16.e(err)}finally{_iterator16.f()}var items=[];for(var _key35 in obj){var _obj={};_obj[keyOfId]=_key35;_obj[keyOfSum]=obj[_key35];items.push(_obj)}return items}},{key:"getHeadStringSplitBy",value:function getHeadStringSplitBy(string){var sign=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.getSeparatorOfUnique();return _lodash["default"].split(string,sign).shift()}},{key:"getTailStringSplitBy",value:function getTailStringSplitBy(string){var sign=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.getSeparatorOfUnique();return _lodash["default"].split(string,sign).pop()}},{key:"getSlicesByIndexes",value:function getSlicesByIndexes(){var array=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var indexes=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var slices=[];_lodash["default"].each(indexes,function(each,index,arrayOfIndexes){if(_lodash["default"].isEqual(index,indexes.length-1))return false;var slice=_lodash["default"].slice(array,each,indexes[index+1]);slices.push(slice)});return slices}},{key:"getRandomName",value:function getRandomName(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:undefined;return(0,_words.generate)(options)}},{key:"getRandomCount",value:function getRandomCount(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:undefined;return(0,_words.count)(options)}},{key:"isOverSpecificAge",value:function isOverSpecificAge(birthDate){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:18;var age=(0,_momentTimezone["default"])().diff((0,_momentTimezone["default"])(birthDate,"YYYY-MM-DD"),"years");return age>=target}},{key:"isValidEmail",value:function isValidEmail(email){var emailRegex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return emailRegex.test(email)}},{key:"isValidTaiwaneseID",value:function isValidTaiwaneseID(idNumber){var idRegex=/^[A-Z][1-2]\d{8}$/;if(!idRegex.test(idNumber)){return false}var weight=[1,9,8,7,6,5,4,3,2,1];var firstChar=idNumber.charCodeAt(0)-65;var sum=firstChar*10+parseInt(idNumber.slice(1));for(var i=0;i<weight.length;i++){sum+=parseInt(idNumber.charAt(i+1))*weight[i]}return sum%10===0}},{key:"validatePersonalInfoInput",value:function validatePersonalInfoInput(name,email,idNumber,phoneNumber,birthday){var ageOfQualify=arguments.length>5&&arguments[5]!==undefined?arguments[5]:12;if(name.length<2){return{valid:false,message:"\u59D3\u540D\u81F3\u5C11\u8981\u5169\u500B\u5B57"}}var emailRegex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;if(!emailRegex.test(email)){return{valid:false,message:"\u96FB\u5B50\u90F5\u4EF6\u683C\u5F0F\u4E0D\u6B63\u78BA"}}var idRegex=/^[A-Z][1-2]\d{8}$/;if(!idRegex.test(idNumber)){return{valid:false,message:"\u8EAB\u5206\u8B49\u865F\u78BC\u683C\u5F0F\u4E0D\u6B63\u78BA"}}var phoneRegex=/^09\d{8}$/;if(!phoneRegex.test(phoneNumber)){return{valid:false,message:"\u624B\u6A5F\u865F\u78BC\u683C\u5F0F\u4E0D\u6B63\u78BA"}}if(this.isUndefinedNullEmpty(birthday))return{valid:false,message:"\u51FA\u751F\u65E5\u671F\u683C\u5F0F\u4E0D\u6B63\u78BA"};var now=(0,_momentTimezone["default"])();var age=now.diff(birthday,"years");if(age<ageOfQualify){return{valid:false,message:"\u5E74\u9F61\u4E0D\u5F97\u5C0F\u65BC ".concat(ageOfQualify," \u6B72")}}return{valid:true,message:"\u683C\u5F0F\u6AA2\u67E5\u901A\u904E"}}},{key:"getStringOfFormatTimestampRange",value:function getStringOfFormatTimestampRange(startTimestamp,endTimestamp){var startDate=(0,_momentTimezone["default"])(startTimestamp);var endDate=(0,_momentTimezone["default"])(endTimestamp);var formatDate=function formatDate(date){return date.format("YY/MM/DD")};var startYear=startDate.year();var endYear=endDate.year();if(startYear===endYear){return"".concat(formatDate(startDate)," - ").concat(endDate.format("MM/DD"))}else{return"".concat(formatDate(startDate)," - ").concat(formatDate(endDate))}}},{key:"getStringOfCalculateClassTime",value:function getStringOfCalculateClassTime(startTimestamp,endTimestamp,weeklyMinutes){var startDate=(0,_momentTimezone["default"])(startTimestamp);var endDate=(0,_momentTimezone["default"])(endTimestamp);var totalDays=endDate.diff(startDate,"days")+1;var totalWeeks=Math.ceil(totalDays/7);var totalMinutes=totalWeeks*weeklyMinutes;var hours=Math.floor(totalMinutes/60);var minutes=totalMinutes%60;if(minutes===0){return"".concat(hours,"\u5C0F\u6642")}else{return"".concat(hours,"\u5C0F\u6642").concat(minutes,"\u5206\u9418")}}},{key:"getNumberOfPeriodMinute",value:function getNumberOfPeriodMinute(startTimestamp,endTimestamp){var startTime=(0,_momentTimezone["default"])(startTimestamp).format("HH:mm");var endTime=(0,_momentTimezone["default"])(endTimestamp).format("HH:mm");var startDate=(0,_momentTimezone["default"])(startTime,"HH:mm");var endDate=(0,_momentTimezone["default"])(endTime,"HH:mm");var durationInMinutes=_momentTimezone["default"].duration(endDate.diff(startDate)).asMinutes();return durationInMinutes}},{key:"getStringOfWeekTime",value:function getStringOfWeekTime(day,startTimestamp,endTimestamp){var daysOfWeek={1:"\u9031\u4E00",2:"\u9031\u4E8C",3:"\u9031\u4E09",4:"\u9031\u56DB",5:"\u9031\u4E94",6:"\u9031\u516D",7:"\u9031\u65E5"};if(day<1||day>7){throw new Error("day \u5FC5\u9808\u5728 1 \u5230 7 \u4E4B\u9593")}var startTime=(0,_momentTimezone["default"])(startTimestamp).format("HH:mm");var endTime=(0,_momentTimezone["default"])(endTimestamp).format("HH:mm");return"".concat(daysOfWeek[day]," ").concat(startTime,"-").concat(endTime)}},{key:"extractNumber",value:function extractNumber(str){if(this.isUndefinedNullEmpty(str))return-1;var match=str.match(/\d+/);return match?Number(match[0]):-1}},{key:"fetchElementAttribute",value:(function(){var _fetchElementAttribute=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(dom){var attr,defaultValue,_args9=arguments;return _regenerator["default"].wrap(function _callee8$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:attr=_args9.length>1&&_args9[1]!==undefined?_args9[1]:"innerText";defaultValue=_args9.length>2&&_args9[2]!==undefined?_args9[2]:"";_context9.next=4;return dom.evaluate(function(el){return el[attr]});case 4:return _context9.abrupt("return",_context9.sent);case 5:case"end":return _context9.stop()}},_callee8)}));function fetchElementAttribute(_x5){return _fetchElementAttribute.apply(this,arguments)}return fetchElementAttribute}())},{key:"fetchElementAttributes",value:(function(){var _fetchElementAttributes=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(dom,stringOfTrait){var defaultValue,element,_len27,attributes,_key37,_args0=arguments;return _regenerator["default"].wrap(function _callee9$(_context0){while(1)switch(_context0.prev=_context0.next){case 0:defaultValue=_args0.length>2&&_args0[2]!==undefined?_args0[2]:"";_context0.next=3;return dom.$(stringOfTrait);case 3:element=_context0.sent;if(this.isUndefinedNullEmpty(element)){_context0.next=16;break}for(_len27=_args0.length,attributes=new Array(_len27>3?_len27-3:0),_key37=3;_key37<_len27;_key37++){attributes[_key37-3]=_args0[_key37]}_context0.prev=6;_context0.next=9;return element.evaluate(function(el,attributes){if(attributes.length===1)return el[attributes.shift()];return _objectSpread({},attributes.map(function(attr){return el[attr]}))},attributes);case 9:return _context0.abrupt("return",_context0.sent);case 12:_context0.prev=12;_context0.t0=_context0["catch"](6);this.appendError("1581532 ".concat(stringOfTrait," fetch ").concat(JSON.stringify(attributes)," fail, element is not found"));return _context0.abrupt("return",defaultValue);case 16:return _context0.abrupt("return",defaultValue);case 17:case"end":return _context0.stop()}},_callee9,this,[[6,12]])}));function fetchElementAttributes(_x6,_x7){return _fetchElementAttributes.apply(this,arguments)}return fetchElementAttributes}())},{key:"writeElementAttributes",value:(function(){var _writeElementAttributes=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee0(dom,stringOfTrait){var element,_len28,attributes,_key38,_args1=arguments;return _regenerator["default"].wrap(function _callee0$(_context1){while(1)switch(_context1.prev=_context1.next){case 0:_context1.next=2;return dom.$(stringOfTrait);case 2:element=_context1.sent;for(_len28=_args1.length,attributes=new Array(_len28>2?_len28-2:0),_key38=2;_key38<_len28;_key38++){attributes[_key38-2]=_args1[_key38]}if(this.isUndefinedNullEmpty(element)){_context1.next=9;break}_context1.next=7;return element.evaluate(function(element,attributes){attributes.map(function(attr){var entries=Object.entries(attr);var key=entries[0][0];var value=entries[0][1];element[key]=value})},attributes);case 7:_context1.next=10;break;case 9:this.appendError("1231232 ".concat(stringOfTrait," fetch ").concat(JSON.stringify(attributes)," fail, element is not found"));case 10:case"end":return _context1.stop()}},_callee0,this)}));function writeElementAttributes(_x8,_x9){return _writeElementAttributes.apply(this,arguments)}return writeElementAttributes}())},{key:"getSliceArrayOfUnique",value:function getSliceArrayOfUnique(array){if(!Array.isArray(array)||array.length===0){return[]}var firstElement=array[0];if(_lodash["default"].isObject(firstElement)&&key){var uniqueMap=new Map(array.map(function(item){return[item[key],item]}));return Array.from(uniqueMap.values())}else if(_lodash["default"].isObject(firstElement)){console.warn("getSliceArrayOfUniqueOptimized: No key provided for object array, using potentially slow deep comparison.");return _lodash["default"].uniqWith(array,_lodash["default"].isEqual)}else{return Array.from(new Set(array))}}},{key:"getUniqueValuesBy",value:function getUniqueValuesBy(array){var key=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"valueOfType";return _lodash["default"].uniq(array.map(function(item){return item[key]}))}},{key:"generateCombinations",value:function generateCombinations(){for(var _len29=arguments.length,attributes=new Array(_len29),_key39=0;_key39<_len29;_key39++){attributes[_key39]=arguments[_key39]}var keys=attributes.map(function(attr){return attr.key});var labelMap=_lodash["default"].keyBy(attributes,"key");var optionArrays=attributes.map(function(attr){return attr.options.map(function(option){return{key:attr.key,value:option.value,label:option.label}})});var cartesianProduct=_lodash["default"].reduce(optionArrays,function(acc,curr){return _lodash["default"].flatMap(acc,function(a){return curr.map(function(b){return[].concat((0,_toConsumableArray2["default"])(a),[b])})})},[[]]);var results=cartesianProduct.map(function(combination){var trait={};var idParts=[];var contentParts=[];var _iterator17=_createForOfIteratorHelper(combination),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var _step17$value=_step17.value,_key40=_step17$value.key,value=_step17$value.value,label=_step17$value.label;trait[_key40]=value;idParts.push("".concat(_key40,"_").concat(value));contentParts.push("".concat(label))}}catch(err){_iterator17.e(err)}finally{_iterator17.f()}return{trait:trait,id:idParts.join("_"),content:contentParts.join("\uFF5C")}});return _lodash["default"].sortBy(results,function(item){return keys.map(function(key){return item.trait[key]})})}},{key:"extractStaticSegments",value:function extractStaticSegments(path){var rules=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[":"];return path.trim().replace(/^\.?\/*|\/*$/g,"").split("/").filter(function(segment){return segment&&!rules.some(function(rule){return segment.startsWith(rule)})})}},{key:"mutateRemoveKeys",value:function mutateRemoveKeys(array,keysToRemove){_lodash["default"].forEach(array,function(obj,index){var filtered=Object.fromEntries(Object.entries(obj).filter(function(_ref8){var _ref9=(0,_slicedToArray2["default"])(_ref8,1),key=_ref9[0];return!keysToRemove.includes(key)}));Object.keys(obj).forEach(function(k){return delete obj[k]});Object.assign(obj,filtered)})}},{key:"removeKeysFromArrayObjects",value:function removeKeysFromArrayObjects(array,keysToRemove){return _lodash["default"].map(array,function(obj){return Object.fromEntries(Object.entries(obj).filter(function(_ref0){var _ref1=(0,_slicedToArray2["default"])(_ref0,1),key=_ref1[0];return!keysToRemove.includes(key)}))})}},{key:"formatTextWithEllipsis",value:function formatTextWithEllipsis(originalText,maxLength){var ellipsis="......";var ellipsisLength=ellipsis.length;if(_lodash["default"].size(originalText)<=maxLength)return originalText;if(maxLength<=ellipsisLength)return"";var remainingLength=maxLength-ellipsisLength;var frontLength=Math.floor(remainingLength/2);var backLength=remainingLength-frontLength;var front=_lodash["default"].truncate(originalText,{length:frontLength,omission:""});var back=_lodash["default"].takeRight(originalText,backLength).join("");return"".concat(front).concat(ellipsis).concat(back)}},{key:"getObjectBy",value:function getObjectBy(obj){var predict=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(attr){return attr.checked!==true};return _lodash["default"].fromPairs(_lodash["default"].toPairs(obj).filter(function(_ref10){var _ref11=(0,_slicedToArray2["default"])(_ref10,2),_=_ref11[0],value=_ref11[1];return predict(value)}))}},{key:"mutateBy",value:function mutateBy(array){var predict=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(item){return item};var sorted=_lodash["default"].sortBy(array,predict);array.splice.apply(array,[0,array.length].concat((0,_toConsumableArray2["default"])(sorted)))}},{key:"findUniqueStrings",value:function findUniqueStrings(){for(var _len30=arguments.length,arrays=new Array(_len30),_key41=0;_key41<_len30;_key41++){arrays[_key41]=arguments[_key41]}var allStrings=_lodash["default"].flatten(arrays);var grouped=_lodash["default"].countBy(allStrings);return _lodash["default"].chain(grouped).pickBy(function(count){return count===1}).keys().compact().value()}},{key:"getObjectOfSpecifyKey",value:function getObjectOfSpecifyKey(value,key){var object={};object[key]=value;return object}},{key:"findUniqueNonReferenceStrings",value:function findUniqueNonReferenceStrings(){for(var _len31=arguments.length,arrays=new Array(_len31),_key42=0;_key42<_len31;_key42++){arrays[_key42]=arguments[_key42]}if(arrays.length===0)return[];var reference=arrays[0],rest=arrays.slice(1);var allExceptRef=_lodash["default"].flatten(rest);var counted=_lodash["default"].countBy(allExceptRef);return _lodash["default"].chain(counted).pickBy(function(count,str){return count===1&&!reference.includes(str)}).keys().compact().value()}},{key:"getArrayOfFillMissingValues",value:function getArrayOfFillMissingValues(array){var charset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";var generateRandomValue=function generateRandomValue(){return _lodash["default"].times(8,function(){return _lodash["default"].sample(charset)}).join("")};var usedValues=new Set(array.map(function(item){return item.value}).filter(Boolean));return array.map(function(item){if(_lodash["default"].isEmpty(item.value)){var newValue;do{newValue=generateRandomValue()}while(usedValues.has(newValue));usedValues.add(newValue);return _objectSpread(_objectSpread({},item),{},{value:newValue})}return item})}},{key:"isFirestoreAutoId",value:function isFirestoreAutoId(id){return _lodash["default"].isString(id)&&id.length===20&&/^[A-Za-z0-9]{20}$/.test(id)}},{key:"getAutoIdOfFirestore",value:function getAutoIdOfFirestore(){return this.getRandomHashV2(20)}},{key:"getStringOfConvertTimeRange",value:function getStringOfConvertTimeRange(input){var _input$split=input.split("\uFF5C"),_input$split2=(0,_slicedToArray2["default"])(_input$split,2),datePart=_input$split2[0],timeRange=_input$split2[1];var dateStr=datePart.split("(")[0];var _timeRange$split=timeRange.split("-"),_timeRange$split2=(0,_slicedToArray2["default"])(_timeRange$split,2),start=_timeRange$split2[0],end=_timeRange$split2[1];var formatDate=function formatDate(time){return(0,_momentTimezone["default"])("".concat(dateStr," ").concat(time),"YYYY/MM/DD HH:mm").format("YYYYMMDDHHmm")};return"".concat(formatDate(start),"-").concat(formatDate(end))}},{key:"getTSOfSpecificDate",value:function getTSOfSpecificDate(dateStr){var _ref12=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},_ref12$end=_ref12.end,end=_ref12$end===void 0?false:_ref12$end;return Number((0,_lodash["default"])(dateStr).thru(function(str){return(0,_momentTimezone["default"])(str.split("(")[0],"YYYY/MM/DD")}).thru(function(m){return end?m.endOf("day"):m.startOf("day")}).value().format("YYYYMMDDHHmmss"))}},{key:"isHttpsURL",value:function isHttpsURL(url){if(!_lodash["default"].isString(url))return false;try{var decoded=decodeURIComponent(url.trim());var parsed=new URL(decoded);return parsed.protocol==="https:"}catch(e){return false}}},{key:"generateUniqueCodeMap",value:function generateUniqueCodeMap(array){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:3;if(length<2){throw new Error("\u4EE3\u78BC\u9577\u5EA6\u6700\u5C11\u5FC5\u9808\u70BA 2\u3002")}var usedCodes=new Set;var usedKeys=new Set;var generateRandomCode=function generateRandomCode(){var letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";var chars=letters+"0123456789";var code;do{code=letters[Math.floor(Math.random()*letters.length)];for(var i=1;i<length;i++){code+=chars[Math.floor(Math.random()*chars.length)]}}while(usedCodes.has(code));usedCodes.add(code);return code};return _lodash["default"].transform(array,function(result,key){if(usedKeys.has(key)){throw new Error("23125453 Duplicate key detected: \"".concat(key,"\""))}usedKeys.add(key);result[key]=generateRandomCode()},{})}},{key:"getPriceOfPercentageBehavior",value:function getPriceOfPercentageBehavior(price,percentage){var discount=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var decimal=this.toPercentageDecimal(percentage);return this.getNumberOfMultiplyCeil(price,discount?1-decimal:1+decimal)}},{key:"getFeeOfDiscount",value:function getFeeOfDiscount(origin,percentage){return Math.round(_lodash["default"].multiply(origin,this.toPercentageDecimal(percentage)))}},{key:"mergeArrayByKey",value:function mergeArrayByKey(array){if(!Array.isArray(array))return array;var resultMap={};var _iterator18=_createForOfIteratorHelper(array),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var obj=_step18.value;if(!_lodash["default"].isPlainObject(obj))continue;for(var _i14=0,_Object$entries=Object.entries(obj);_i14<_Object$entries.length;_i14++){var _Object$entries$_i=(0,_slicedToArray2["default"])(_Object$entries[_i14],2),_key43=_Object$entries$_i[0],value=_Object$entries$_i[1];if(!resultMap[_key43]){resultMap[_key43]=_lodash["default"].cloneDeep(value)}else{_lodash["default"].merge(resultMap[_key43],value)}}}}catch(err){_iterator18.e(err)}finally{_iterator18.f()}array.length=0;Object.entries(resultMap).forEach(function(_ref13){var _ref14=(0,_slicedToArray2["default"])(_ref13,2),key=_ref14[0],value=_ref14[1];array.push((0,_defineProperty2["default"])({},key,value))});return array}},{key:"getObjectOfStartEndDateTime",value:function getObjectOfStartEndDateTime(input){if(!input||typeof input!=="string"){return{startDate:"",startTime:"",endDate:"",endTime:""}}var cleaned=input.replace(/|/g," ").replace(/-/g,"-").replace(/\s+/g," ").trim();var crossDatePattern=/(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})\s*-\s*(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})/;var sameDatePattern=/(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})\s*-\s*(\d{2}:\d{2})/;var startDate,startTime,endDate,endTime;if(crossDatePattern.test(cleaned)){var _cleaned$match=cleaned.match(crossDatePattern);var _cleaned$match2=(0,_slicedToArray2["default"])(_cleaned$match,5);startDate=_cleaned$match2[1];startTime=_cleaned$match2[2];endDate=_cleaned$match2[3];endTime=_cleaned$match2[4]}else if(sameDatePattern.test(cleaned)){var _cleaned$match3=cleaned.match(sameDatePattern);var _cleaned$match4=(0,_slicedToArray2["default"])(_cleaned$match3,4);startDate=_cleaned$match4[1];startTime=_cleaned$match4[2];endTime=_cleaned$match4[3];endDate=startDate}else{return{startDate:"",startTime:"",endDate:"",endTime:""}}var start=new Date("".concat(startDate," ").concat(startTime));var end=new Date("".concat(endDate," ").concat(endTime));if(end<start){throw new Error("End time cannot be earlier than start time: ".concat(input))}return{startDate:startDate,startTime:startTime,endDate:endDate,endTime:endTime}}},{key:"getFilteredHeraPeriods",value:function getFilteredHeraPeriods(arr,idOfCurrentBooze){return _lodash["default"].chain(arr).filter(function(item){return item.idOfBooze!==idOfCurrentBooze}).uniqBy(function(item){return"".concat(item.idOfBooze,"_").concat(item.idOfVariant)}).value()}},{key:"checkPeriodConflict",value:function checkPeriodConflict(newTask,existingTasks){var resourceCount=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;var _newTask$content$spli=newTask.content.split("\uFF5C"),_newTask$content$spli2=(0,_slicedToArray2["default"])(_newTask$content$spli,2),datePart=_newTask$content$spli2[0],timePart=_newTask$content$spli2[1];var date=(0,_momentTimezone["default"])(datePart.split(" ")[0],"YYYY/MM/DD");var _timePart$split=timePart.split("-"),_timePart$split2=(0,_slicedToArray2["default"])(_timePart$split,2),startTimeStr=_timePart$split2[0],endTimeStr=_timePart$split2[1];var start=(0,_momentTimezone["default"])("".concat(date.format("YYYY/MM/DD")," ").concat(startTimeStr),"YYYY/MM/DD HH:mm");var end=(0,_momentTimezone["default"])("".concat(date.format("YYYY/MM/DD")," ").concat(endTimeStr),"YYYY/MM/DD HH:mm");var conflictItems=_lodash["default"].filter(existingTasks,function(task){var _task$period$split=task.period.split("-"),_task$period$split2=(0,_slicedToArray2["default"])(_task$period$split,2),pStartStr=_task$period$split2[0],pEndStr=_task$period$split2[1];var pStart=(0,_momentTimezone["default"])(pStartStr,"YYYYMMDDHHmm");var pEnd=(0,_momentTimezone["default"])(pEndStr,"YYYYMMDDHHmm");return start.isBefore(pEnd)&&end.isAfter(pStart)});var conflict=conflictItems.length>=resourceCount;return{conflict:conflict,items:conflictItems}}}])}();var _default=exports["default"]=Utiller;
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _lodash=_interopRequireDefault(require("lodash"));var _cryptoJs=_interopRequireDefault(require("crypto-js"));var _configerer=require("configerer");var _exceptioner=_interopRequireDefault(require("../exceptioner"));var _momentTimezone=_interopRequireDefault(require("moment-timezone"));var _uuid=require("uuid");var _nodeHtmlParser=require("node-html-parser");String.format=function(){let param=[];for(let i=0,l=arguments.length;i<l;i++){param.push(arguments[i])}let statement=param[0];param.shift();return statement.replace(/\{(\d+)\}/g,function(m,n){return param[n]})};class Utiller{removeAttributeBy(object,predicate=value=>_lodash.default.isUndefined(value)){for(const key in object){if(predicate(object[key])){delete object[key]}}}getNumberOfNormalize(value,defaultValue=0){if(_lodash.default.isNumber(value))return value;try{const force=_lodash.default.toNumber(value);return _lodash.default.isNumber(force)&&!isNaN(force)?force:defaultValue}catch(error){Util.appendError(`448561684561 ${error.message}`)}return defaultValue}getStringOfNormalize(value,defaultValue="",trim=false){if(_lodash.default.isString(value))return trim?_lodash.default.trim(value):value;try{const force=_lodash.default.toString(value);return this.isOrEquals(force,"","undefined")?defaultValue:trim?_lodash.default.trim(force):force}catch(error){Util.appendError(`448616845453 ${error.message}`)}return defaultValue}isValidVersionOfString(versionName){if(this.isUndefinedNullEmpty(versionName)){return false}const numbers=versionName.split(".");for(const number of numbers){const toNum=_lodash.default.toNumber(number);if(!_lodash.default.isNumber(toNum)||isNaN(toNum))return false}return true}getSeparatorOfUnique(){return"\u0F0D\u0F0D"}getStringOfVersionIncrement(stringOfVersion,delta=1){const numbers=stringOfVersion.split(".").map(each=>_lodash.default.toNumber(each));const last=numbers.length-1;numbers[last]=numbers[last]+delta;return numbers.join(".")}setLocaleOfMoment(locale="en"){_momentTimezone.default.locale(locale)}getUuidOfV4(){return(0,_uuid.v4)()}constructor(){(0,_defineProperty2.default)(this,"mapOfIdNTimeoutId",{});(0,_defineProperty2.default)(this,"getEnvironment",()=>{return this.env});(0,_defineProperty2.default)(this,"isProductionEnvironment",()=>{return _lodash.default.isEqual(this.getEnvironment(),"prod")});(0,_defineProperty2.default)(this,"asyncUnitTaskFunction",(millionSec=2000,_funparam="\u9810\u8A2D\u7684param",errorSimulator)=>async(param=this.getRandomHash(10))=>{const randomValue=this.getRandomValue(millionSec,millionSec*1.2);try{const symbol=randomValue;this.appendInfo(`before executed ===> i'm symbol of ${symbol}, ready to be executed, inner param = ${_funparam}`);await this.syncDelay(randomValue);if(_lodash.default.isFunction(errorSimulator)&&errorSimulator(param))throw Error("force to made error happen");this.appendInfo(`after executed ===> i'm symbol of ${symbol}, the task cost ${randomValue} million-seconds ${param?`i hav params ===> ${param}`:""}`);return{randomValue,symbol,param}}catch(error){this.appendError(new Error(`asyncUnitTask() catch error ${error.message}`))}finally{this.appendInfo(`wow.... finally got you`)}});(0,_defineProperty2.default)(this,"test",word=>{return async()=>{await Util.syncDelay(3000);console.log("\u7D93\u904E\u4E86\u4E09\u79D2");await Util.syncDelay(4000);console.log("\u7D93\u904E\u4E86\u56DB\u79D2");await Util.syncDelay(5000);console.log("\u7D93\u904E\u4E86\u4E94\u79D2");await Util.syncDelay(6000);console.log("\u7D93\u904E\u4E86\u516D\u79D2");return`3423809432804 ${word}`}});(0,_defineProperty2.default)(this,"findLowestValue",(items,key="price")=>{const minPrice=_lodash.default.minBy(items,key)[key];return Math.floor(minPrice)});(0,_defineProperty2.default)(this,"findHighestValue",(items,key="price")=>{const maxPrice=_lodash.default.maxBy(items,key)[key];return Math.floor(maxPrice)});(0,_defineProperty2.default)(this,"getStringOfValueRange",(items,key="price",sign="$")=>{const minV=_lodash.default.minBy(items,key)[key];const maxV=_lodash.default.maxBy(items,key)[key];return maxV===minV?`$${minV}`:`${sign}${minV} - ${sign}${maxV}`});(0,_defineProperty2.default)(this,"getCallersName",()=>{let callerName;try{throw new Error}catch(e){let re=/(\w+)@|at (\w+) \(/g,st=e.stack,m;re.exec(st),m=re.exec(st);if(!_lodash.default.isNull(m))callerName=m[1]||m[2]}if(_lodash.default.startsWith("asyncGeneratorStep",callerName))callerName="";return callerName});(0,_defineProperty2.default)(this,"getRandomValue",(min,max)=>{min=Math.ceil(min);max=Math.floor(max);return Math.floor(Math.random()*(max-min+1))+min});(0,_defineProperty2.default)(this,"insertToArray",(array,index,...items)=>{if(!Array.isArray(array)){throw new Error("First argument must be an array.")}const insertAt=Math.max(0,Math.min(index+1,array.length));array.splice(insertAt,0,...items)});(0,_defineProperty2.default)(this,"getStringOfYearADConvertToMinguoYear",(gregorianYear,full=false)=>{const minguoYear=gregorianYear-1911;if(minguoYear>0){return`${full?"\u6C11\u570B":""}${minguoYear}${full?"\u5E74":""}`}else{return`${full?"\u6C11\u570B":""}前${Math.abs(minguoYear)}${full?"\u5E74":""}`}});(0,_defineProperty2.default)(this,"convertDateToTimestamp",date=>{return(0,_momentTimezone.default)(date).valueOf()});(0,_defineProperty2.default)(this,"measureExecutionTime",async(fn,...param)=>{const startTime=Date.now();await fn(...param);const endTime=Date.now();const durationInMilliseconds=endTime-startTime;const duration=_momentTimezone.default.duration(durationInMilliseconds,"milliseconds");const hours=Math.floor(duration.asHours());const minutes=duration.minutes();const seconds=duration.seconds();const milliseconds=duration.milliseconds();const totalSeconds=(durationInMilliseconds/1000).toFixed(3);this.appendInfo(`${hours}小時 ${minutes}分 ${seconds}.${milliseconds.toString().padStart(3,"0")}秒 (合計 ${totalSeconds} 秒)`)});(0,_defineProperty2.default)(this,"formatPriceWithCurrency",(number,locale)=>{if(typeof number!=="number"||typeof locale!=="string"){throw new TypeError("Invalid input: number must be a number and locale must be a string.")}return new Intl.NumberFormat(locale,{style:"currency",currency:new Intl.Locale(locale).maximize().currency||"USD",minimumFractionDigits:0}).format(number)});(0,_defineProperty2.default)(this,"formatPrice",(number,locale)=>{if(typeof number!=="number"){throw new TypeError("Invalid input: number must be a number.")}if(!locale){return number.toLocaleString("en-US")}return new Intl.NumberFormat(locale,{style:"currency",currency:new Intl.Locale(locale).maximize().currency||"USD",minimumFractionDigits:0}).format(number)});(0,_defineProperty2.default)(this,"generateUniversalKeywords",(sentence,maxLength=50,maxNgramLength=4)=>{if(!sentence||typeof sentence!=="string"){return[]}if(typeof _lodash.default==="undefined"){console.error("Lodash is not available. Please ensure it is imported.");return[]}let textToProcess=sentence.trim();let keywords=[];maxNgramLength=Math.max(2,maxNgramLength);if(textToProcess.length>maxLength){console.warn(`警告:輸入字串長度為 ${textToProcess.length},已根據 maxLength: ${maxLength} 截斷。`);textToProcess=textToProcess.substring(0,maxLength)}const englishWords=textToProcess.match(/[a-zA-Z]+/g)||[];englishWords.forEach(word=>{if(word.length>=2){keywords.push(word.toUpperCase());keywords.push(word.toLowerCase());const capitalized=word.charAt(0).toUpperCase()+word.slice(1).toLowerCase();keywords.push(capitalized)}});const specKeywordsRegex=/\b[0-9]+[a-zA-Z]{1,4}\b|\b[0-9]{1,3}(w|ml|g|oz|k)\b|[\u4e00-\u9fa5a-zA-Z0-9]{1,4}(色|號)[\u4e00-\u9fa5a-zA-Z0-9]{0,2}/gi;const specKeywords=(textToProcess.match(specKeywordsRegex)||[]).filter(k=>k.length>=2).map(k=>k.toLowerCase());keywords.push(...specKeywords);let cleanText=textToProcess.toLowerCase();cleanText=cleanText.replace(/[0-9]+([\u4e00-\u9fa5a-z]{1,4}|[\/\-\~\\])/g," ").replace(/\b[a-z]{1,4}\b/g," ").replace(/\b[0-9]{1,3}\b/g," ");cleanText=cleanText.replace(/[!@#$%^&*()_+={}\[\]:;"'<>,.?\/\\|`~]/g," ").replace(/系列|一組|單色|多款|套組|全套|專用|迷你|頂級|高品質|超閃|奢華|最新|款式|新款|超亮|的|與|和|閃|美甲/g," ").replace(/\s+/g,"").trim();const minLength=2;for(let len=minLength;len<=maxNgramLength;len++){for(let i=0;i<=cleanText.length-len;i++){const keyword=cleanText.substring(i,i+len);keywords.push(keyword)}}const finalKeywords=_lodash.default.chain(keywords).filter(k=>k.length>=2).filter(k=>k.length>2||!/^[\u4e00-\u9fa5a-z0-9]$/.test(k)).uniq().sortBy().value();return finalKeywords});(0,_defineProperty2.default)(this,"mutateIndexOfArrayItem",(array,object,index=0)=>{if(!Array.isArray(array)||!_lodash.default.isObject(object))return array;const currentIndex=_lodash.default.findIndex(array,item=>_lodash.default.isEqual(item,object));if(currentIndex===-1)return array;array.splice(currentIndex,1);const targetIndex=_lodash.default.clamp(index,0,array.length);array.splice(targetIndex,0,object);return array});(0,_defineProperty2.default)(this,"getArrayOfModifyObject2Index",(array,object,index=0)=>{if(!Array.isArray(array)||!_lodash.default.isObject(object))return array;const cloned=_lodash.default.cloneDeep(array);const currentIndex=_lodash.default.findIndex(cloned,item=>_lodash.default.isEqual(item,object));if(currentIndex===-1)return array;cloned.splice(currentIndex,1);const targetIndex=_lodash.default.clamp(index,0,cloned.length);cloned.splice(targetIndex,0,object);return cloned});(0,_defineProperty2.default)(this,"generateLabelValuePairsWithOrigin",(origin=[{label:"aa",value:1203},{label:"cc",value:1204},{label:"gg",value:2}],latest=["aa","bb"])=>{const usedValues=new Set(origin.map(o=>o.value));return _lodash.default.chain(latest).uniq().map(label=>{const originItem=_lodash.default.find(origin,{label});if(originItem){return{label,value:originItem.value}}let value;do{value=_lodash.default.random(2,999999999)}while(usedValues.has(value));usedValues.add(value);return{label,value}}).value()});(0,_defineProperty2.default)(this,"getItemsOfMarkMatching",(sourceArray=[],values=[],valueKey="value",flagKey="belong")=>{const valuesSet=new Set(values);return _lodash.default.map(sourceArray,item=>({...item,[flagKey]:valuesSet.has(item[valueKey])}))});(0,_defineProperty2.default)(this,"generateVariants",(arrays,labelSeparator="\uFF5C",valueSeparator="-")=>{const nonEmptyArrays=arrays.filter(arr=>arr.length>0);if(nonEmptyArrays.length===0)return[];if(nonEmptyArrays.length===1){return nonEmptyArrays[0].map(item=>({label:item.label,value:item.value}))}const combinations=_lodash.default.reduce(nonEmptyArrays,(acc,curr)=>_lodash.default.flatMap(acc,a=>curr.map(b=>[...a,b])),[[]]);return combinations.map(comb=>({label:comb.map(item=>item.label).join(labelSeparator),value:comb.map(item=>item.value).join(valueSeparator)}))});(0,_defineProperty2.default)(this,"renameKeysInArray",(arr,...keyMappings)=>{const mapping=Object.fromEntries(keyMappings);return arr.map(item=>_lodash.default.mapKeys(item,(value,key)=>mapping[key]||key))});(0,_defineProperty2.default)(this,"getArrayOfMergeBySpecificId",(array1,array2,idKey="id")=>{if(!Array.isArray(array2))return array1;const map2=_lodash.default.keyBy(array2,item=>_lodash.default.get(item,idKey));return array1.map(item=>{const id=_lodash.default.get(item,idKey);const match=map2[id];return match?_lodash.default.merge({},item,match):item})});(0,_defineProperty2.default)(this,"toPercentageDecimal",num=>{if(_lodash.default.isNil(num))return 1;if(_lodash.default.isString(num)){num=num.replace(/%/g,"").trim()}const parsed=_lodash.default.toNumber(num);if(!_lodash.default.isFinite(parsed))return 1;return _lodash.default.round(parsed/100,10)});(0,_defineProperty2.default)(this,"getNumberOfMultiplyCeil",(a,b,precision=0)=>{const factor=Math.pow(10,precision);return Math.ceil(a*b*factor)/factor});(0,_defineProperty2.default)(this,"generateGoogleCalendarLink",({title,startDate,startTime,endDate,endTime,location,details})=>{const startDateTime=(0,_momentTimezone.default)(`${startDate} ${startTime}`,"YYYY/MM/DD HH:mm").format("YYYYMMDDTHHmmss");const endDateTime=(0,_momentTimezone.default)(`${endDate} ${endTime}`,"YYYY/MM/DD HH:mm").format("YYYYMMDDTHHmmss");const params=new URLSearchParams;if(title)params.append("text",title);if(startDateTime&&endDateTime)params.append("dates",`${startDateTime}/${endDateTime}`);if(details)params.append("details",details);if(location)params.append("location",location);params.append("ctz","Asia/Taipei");params.append("trp","true");return`https://calendar.google.com/calendar/r/eventedit?${params.toString()}`});(0,_defineProperty2.default)(this,"generateTimeTreeLink",({title,startDate,startTime,endDate,endTime,location,memo})=>{const params=new URLSearchParams;if(title)params.append("title",title);if(startDate)params.append("start_date",startDate.replace(/\//g,"-"));if(startTime)params.append("start_time",startTime);if(endDate)params.append("end_date",endDate.replace(/\//g,"-"));if(endTime)params.append("end_time",endTime);if(location)params.append("location",location);if(memo)params.append("memo",memo);return`https://timetreeapp.com/plans/new?${params.toString()}`});(0,_defineProperty2.default)(this,"generateIcsContent",({title,startDate,startTime,endDate,endTime,location,details})=>{const startDateTime=_momentTimezone.default.tz(`${startDate} ${startTime}`,"YYYY/MM/DD HH:mm","Asia/Taipei").format("YYYYMMDDTHHmmss");const endDateTime=_momentTimezone.default.tz(`${endDate} ${endTime}`,"YYYY/MM/DD HH:mm","Asia/Taipei").format("YYYYMMDDTHHmmss");const stamp=(0,_momentTimezone.default)().utc().format("YYYYMMDDTHHmmss")+"Z";const uid=Date.now().toString(36)+Math.random().toString(36).substring(2,5)+"@gemini-app.com";const escapeIcs=text=>text.replace(/\\/g,"\\\\").replace(/,/g,"\\,").replace(/;/g,"\\;").replace(/\n/g,"\\n");const lines=["BEGIN:VCALENDAR","VERSION:2.0","PRODID:-//Gemini AI//NONSGML v1.0//EN","BEGIN:VEVENT",`UID:${uid}`,`DTSTAMP:${stamp}`];if(startDateTime)lines.push(`DTSTART;TZID=Asia/Taipei:${startDateTime}`);if(endDateTime)lines.push(`DTEND;TZID=Asia/Taipei:${endDateTime}`);if(title)lines.push(`SUMMARY:${escapeIcs(title)}`);if(location)lines.push(`LOCATION:${escapeIcs(location)}`);if(details)lines.push(`DESCRIPTION:${escapeIcs(details)}`);lines.push("END:VEVENT","END:VCALENDAR");return lines.join("\r\n")});(0,_defineProperty2.default)(this,"generateAllCalendarLinks",event=>{const googleLink=this.generateGoogleCalendarLink(event);const timeTreeEvent={...event,memo:event.details};const timeTreeLink=this.generateTimeTreeLink(timeTreeEvent);const icsContent=this.generateIcsContent(event);const icsLink=`data:text/calendar;charset=utf8,${encodeURIComponent(icsContent)}`;return{google:googleLink,timeTree:timeTreeLink,ics:icsLink}});(0,_defineProperty2.default)(this,"getArrayOfMappingRef",(current,reference)=>{return _lodash.default.map(current,currentObj=>{const referenceObj=_lodash.default.find(reference,{value:currentObj.value});return referenceObj?_lodash.default.merge({},currentObj,referenceObj):currentObj})});(0,_defineProperty2.default)(this,"areAllValuesTheSameOnKeys",(array,...keys)=>{if(!array||array.length<=1||keys.length===0){return true}for(const keyName of keys){const firstValue=array[0]?.[keyName];const isCurrentKeySame=_lodash.default.every(array,item=>{return item[keyName]===firstValue});if(!isCurrentKeySame){return false}}return true});this.init();this.env="dev"}performActionWithoutTimingIssue(task=()=>true,wait=10){this.syncDelay(wait).then(()=>task())}executeTimeoutTask(functionOfAsyncTask,ms=1000,id=this.getRandomHash(),...params){const self=this;const idOfCurrentTimeoutTask=this.mapOfIdNTimeoutId[id];if(idOfCurrentTimeoutTask)clearTimeout(idOfCurrentTimeoutTask);const idOfTimeoutTask=setTimeout(async(...param)=>{await functionOfAsyncTask();delete self.mapOfIdNTimeoutId[id]},ms,...params);self.mapOfIdNTimeoutId[id]=idOfTimeoutTask}printLogMessage(message,error=false,...infos){if(!this.isProductionEnvironment()){if(error){this.appendError(message,...infos)}else{this.appendInfo(message,...infos)}}}init(){}setEnvironment(env){this.env=env}appendInfo(...logs){if(this.isProductionEnvironment())return;console.log(...logs)}appendError(...logs){if(this.isProductionEnvironment())return;console.error(...logs)}async syncDelay(delayInms=2000){return new Promise(resolve=>{setTimeout(()=>{resolve(delayInms)},delayInms)})}startWithRegex(string="",rule="."){let pattern=new RegExp(`^${rule}`,"i");return pattern.test(string)}accumulate(target,conditions){let beginning=target;for(const condition of conditions){if(condition!==undefined&&_lodash.default.isFunction(condition)){beginning=condition(beginning)}}return beginning}isOrEquals(target,...several){for(const each of several){if(_lodash.default.isEqual(target,each))return true}return false}isAndEquals(...predicates){for(const predicate of predicates){if(!predicate()){return false}}return true}getStringOfHeadMatch(string,regex,flag="g"){const result=string.match(new RegExp(regex,flag));return this.isUndefinedNullEmpty(result)?undefined:result[0]}or(...booleans){for(const boo of booleans){if(_lodash.default.isBoolean(boo)&&boo)return true}return false}and(...booleans){for(const boo of booleans){if(!!!boo)return false}return true}nth(array,index=-1){return _lodash.default.nth(array,index%_lodash.default.size(array))}getExistOne(...candidates){for(const candidate of candidates){if(candidate)return candidate}}getStringOfDropHeadSign(string,sign){return _lodash.default.dropWhile(Array.from(string),each=>_lodash.default.isEqual(each,sign)).join("")}isAndWith(self,predicate,...several){for(const each of several){if(!predicate(self,each))return false}return true}async syncDelayRandom(min=3000,max=5000){const random=this.getRandomValue(min,max);await this.syncDelay(random);return random}has(collection,item,precisely=false){if(_lodash.default.isArray(collection)){if(precisely)return _lodash.default.findIndex(collection,each=>_lodash.default.isEqual(item,each))>-1;else return _lodash.default.indexOf(collection,item)>-1}if(_lodash.default.isObject(item)){return collection[item]}if(_lodash.default.isString(collection)){return collection.indexOf(item)>-1}return false}containsBy(array,item){return _lodash.default.findIndex(array,each=>_lodash.default.isEqual(each,item))>=0}getStringOfInsideParentheses(string,rule=`.`){return this.getStringOfRule(string,rule,"(",")")}getStringOfInsideBrackets(string,rule=`.`){return this.getStringOfRule(string,rule,"[","]")}getStringOfInsideBraces(string,rule=`.`){return this.getStringOfRule(string,rule,"{","}")}getStringOfRule(string,rule=`.`,left="{",right="}"){return this.getStringOfHeadMatch(string,`(?<=\\${left})${rule}+?(?=\\${right})`)}getRandomHash(length=20){const randomBytes=_cryptoJs.default.lib.WordArray.random(length);const base64String=_cryptoJs.default.enc.Base64.stringify(randomBytes);return base64String.substring(0,length)}getRandomHashV2(length){const characters="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let result="";for(let i=0;i<length;i++){const randomIndex=Math.floor(Math.random()*characters.length);result+=characters.charAt(randomIndex)}return result}getEncryptString(texts,key=_configerer.configerer.ENCRYPT_KEY,alwaysTheSame=false){const maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner.default(8010,_lodash.default.size(key));const ivOfCrypto=_cryptoJs.default.enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");const keyOfCrypto=alwaysTheSame?_cryptoJs.default.enc.Base64.parse(`${key}${_lodash.default.range(0,maxLengthOfKey-key.length).join("")}`):key;return _cryptoJs.default.AES.encrypt(texts,keyOfCrypto,{iv:ivOfCrypto}).toString()}getEncryptStringV2(texts,key=_configerer.configerer.ENCRYPT_KEY,alwaysTheSame=false){const maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner.default(8010,_lodash.default.size(key));const ivOfCrypto=_cryptoJs.default.enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");const keyOfCrypto=alwaysTheSame?_cryptoJs.default.enc.Base64.parse(`${key}${_lodash.default.range(0,maxLengthOfKey-key.length).join("")}`):key;return _cryptoJs.default.AES.encrypt(JSON.stringify({content:texts}),keyOfCrypto,{iv:ivOfCrypto}).toString()}getDecryptString(ciphertext,key=_configerer.configerer.ENCRYPT_KEY){const maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner.default(8010,_lodash.default.size(key));const ivOfCrypto=_cryptoJs.default.enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");try{const value=_cryptoJs.default.AES.decrypt(ciphertext,key,{iv:ivOfCrypto}).toString(_cryptoJs.default.enc.Utf8);if(!_lodash.default.isEmpty(value.trim()))return value}catch(e){}return _cryptoJs.default.AES.decrypt(ciphertext,_cryptoJs.default.enc.Base64.parse(`${key}${_lodash.default.range(0,maxLengthOfKey-key.length).join("")}`),{iv:ivOfCrypto}).toString(_cryptoJs.default.enc.Utf8)}getDecryptStringV2(ciphertext,key=_configerer.configerer.ENCRYPT_KEY){const maxLengthOfKey=22;if(key.length>maxLengthOfKey)throw new _exceptioner.default(8010,_lodash.default.size(key));const ivOfCrypto=_cryptoJs.default.enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");try{const stringOfObj=_cryptoJs.default.AES.decrypt(ciphertext,key,{iv:ivOfCrypto}).toString(_cryptoJs.default.enc.Utf8);if(!_lodash.default.isEmpty(stringOfObj.trim())){const obj=JSON.parse(stringOfObj);return obj.content}}catch(e){}const stringOfObj=_cryptoJs.default.AES.decrypt(ciphertext,_cryptoJs.default.enc.Base64.parse(`${key}${_lodash.default.range(0,maxLengthOfKey-key.length).join("")}`),{iv:ivOfCrypto}).toString(_cryptoJs.default.enc.Utf8);const obj=JSON.parse(stringOfObj);return obj.content}getFirebaseFormattedString(texts){return _lodash.default.replace(texts,/[\.\#\$\[\]]/g,"-").trim()}formalizeNamesToArray(singerString){let normalize=singerString;normalize=normalize.split(_configerer.configerer.SEPARATE_TONE_SINGER)[0].trim();normalize=_lodash.default.replace(normalize,/[,\/#!$%\^&\*;:{}=_`、~()()]/g,"_").trim();normalize=this.getFirebaseFormattedString(normalize);normalize=_lodash.default.replace(normalize,/\_\_+/g,"_").trim();while(_lodash.default.endsWith(normalize,"_")){normalize=normalize.slice(0,-1).trim()}const words=normalize.split("_");return _lodash.default.map(words,word=>_lodash.default.trim(word))}getShuffledArrayWithLimitCountHighPerformance(arr,n){let result=new Array(n),len=arr.length,taken=new Array(len);if(n>len)n=len;while(n--){let x=Math.floor(Math.random()*len);result[n]=arr[x in taken?taken[x]:x];taken[x]=--len in taken?taken[len]:len}return result}getFileNameFromPath(path,extension=false){const segments=path.split("/");const target=segments.pop();return extension?target:target.split(".").shift()}getFileNameExtensionFromPath(path){const name=path.split("/").pop();return name}getPathOfReplaceLastDir(path,name){const split=path.split("/");split.pop();split.push(name);return split.join("/")}getExtensionFromPath(path){const name=path.split("/").pop();const segments=name.split(".");return _lodash.default.size(segments)>1?segments.pop():""}getFolderPathOfSpecificPath(path){const split=path.split("/");split.pop();return split.join("/")}getFolderNameOfFilePath(path){if(this.isValidFilePath(path)){const splits=path.split("/");return _lodash.default.nth(splits,-2)}else{throw new _exceptioner.default(9999,`64255615 path is not valid '${path}'`)}}isUnderTargetPath(absolute,target){const segments=absolute.split("/");return this.has(segments,target)}getFileDirPath(path,slash=true){return _lodash.default.join(_lodash.default.initial(_lodash.default.split(path,"/")),"/")+(slash?"/":"")}isPathEqualsFileType(path,type){const extension=path.split(".").pop();return _lodash.default.isEqual(extension,type)}isValidFilePath(path){const extension=this.getExtensionFromPath(path);return _lodash.default.size(extension)>0}getArrayOfSize(array,n=1){return _lodash.default.take(array,n)}getShuffledArrayWithLimitCount(arr,n){return this.getShuffledArrayWithLimitCountHighPerformance(arr,n)}getRandomItemOfArray(array,...ignores){if(!_lodash.default.isArray(array))throw new _exceptioner.default(9999,`why are you so stupid, typeof array should be array, not ==> ${array} `);const filter=_lodash.default.without(array,...ignores);const target=_lodash.default.size(filter)>0?filter:array;const item=this.getShuffledArrayWithLimitCount(target,1);return item.length>0?item[0]:undefined}appendMapOfKeyArray(object,key,...value){if(this.isUndefinedNullEmpty(object[key])){object[key]=[...value]}else{object[key].push(...value)}}getMergedArrayBy(major=[],sub=[],key){if(!key||major.length===0||sub.length===0){return[...major]}const subMap=new Map(sub.map(item=>[item[key],item]));return major.map(majorItem=>{const subItem=subMap.get(majorItem[key]);return{...(subItem||{}),...majorItem}})}getShuffledItemFromArray(arr){let shuffled=_lodash.default.shuffle(arr);return shuffled[0]}getShuffledArray(arr){let shuffled=_lodash.default.shuffle(arr);return shuffled}isJson(item){item=typeof item!=="string"?JSON.stringify(item):item;try{item=JSON.parse(item)}catch(e){return false}if(typeof item==="object"&&item!==null){return true}return false}getObjectValue(obj){if(_lodash.default.isObject(obj)){return Object.values(obj)[0]}return""}getObject(key,value){const object={};object[key]=value;return object}getStringOfCreditCardFormatted(string=0){const inputValue=string.replace(/\D/g,"");const result=inputValue.replace(/(\d{4})(?=\d)/g,"$1-");return result.slice(0,19)}getObjectKey(obj){if(_lodash.default.isObject(obj)){return Object.keys(obj)[0]}return""}printf(){this.appendInfo("i can use in web || react.js")}isKeywordRule(constraint){if(_lodash.default.isUndefined(constraint)||_lodash.default.isEmpty(constraint))throw new Error("PARAMS CAN NOT BE EMPTY");if(!_lodash.default.isString(constraint))throw new Error("PARAMS SHOULD BE STRING");if(constraint.length>20)throw new Error("EXCEED 20 WORDS IS NOT ALLOWED")}getItsKeyByValue(object,value){return Object.keys(object).find(key=>object[key]===value)}startWiths(string,key=[]){for(const _key of key){if(_lodash.default.startsWith(string,_key)){return true}}return false}replaceAll(string,patten,to){return _lodash.default.replace(string,new RegExp(`${patten}`,`g`),to)}replaceAllWithSets(string="",...patterns){let after=string;for(const pattern of patterns){if(this.isOrEquals(undefined,pattern.from,pattern.to)){throw(0,_exceptioner.default)(9999,`from or to can't be empty`)}after=this.replaceAll(after,pattern.from,pattern.to)}return after}replaceArrayByContentIndex(array,current,latest){const index=_lodash.default.indexOf(array,current);array[index]=latest}deepFlat(collection,sign="_"){let result="";const stack=[[collection,""]];while(stack.length>0){const[current,prefix]=stack.pop();if(_lodash.default.isArray(current)){for(let i=current.length-1;i>=0;i--){stack.push([current[i],prefix])}}else if(_lodash.default.isObject(current)){const keys=Object.keys(current);for(let i=keys.length-1;i>=0;i--){const key=keys[i];stack.push([current[key],prefix+key+sign])}}else{const valueString=_lodash.default.trim(String(current));if(valueString.length>0){result+=(result.length>0?sign:"")+prefix+valueString}else if(prefix.length>0&&result.length>0){result+=sign}else if(prefix.length>0&&result.length===0){result+=prefix.endsWith(sign)?prefix.slice(0,-sign.length):prefix}}}if(result.endsWith(sign)){result=result.slice(0,-sign.length)}return result}joinEscapeChar(str){return(str+"").replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0")}getValueWithIntegerType(whatever){try{const value=parseInt(whatever);return isNaN(value)?0:value}catch(error){return 0}}getValueOfPriority(...compares){for(const compare of compares){if(!this.isUndefinedNullEmpty(compare))return compare}return undefined}async asyncPool(poolLimit,array,iteratorFn){const ret=[];const executing=[];for(const item of array){const p=Promise.resolve().then(()=>{return iteratorFn(item,array)});ret.push(p);if(poolLimit<=array.length){const e=p.then(()=>{return executing.splice(executing.indexOf(e),1)});executing.push(e);if(executing.length>=poolLimit){await Promise.race(executing)}}}return Promise.all(ret)}getAttrValueInSequence(info,...attrs){for(const attr of attrs){if(!_lodash.default.isEmpty(info[attr])){return info[attr]}}return info}toDBC(txtstring){var tmp="";for(var i=0;i<txtstring.length;i++){if(txtstring.charCodeAt(i)===32){tmp=tmp+String.fromCharCode(12288)}if(txtstring.charCodeAt(i)<127){tmp=tmp+String.fromCharCode(txtstring.charCodeAt(i)+65248)}}return tmp}toCDB(str){var tmp="";for(var i=0;i<str.length;i++){if(str.charCodeAt(i)===12288){tmp+=String.fromCharCode(str.charCodeAt(i)-12256);continue}if(str.charCodeAt(i)>65280&&str.charCodeAt(i)<65375){tmp+=String.fromCharCode(str.charCodeAt(i)-65248)}else{tmp+=String.fromCharCode(str.charCodeAt(i))}}return tmp}findIndexes(array,predicate){const indexes=[];let hasIndex=true;let indexOfLatest=0;while(hasIndex){indexOfLatest=_lodash.default.findIndex(array,predicate,indexOfLatest+1);if(indexOfLatest>-1){indexes.push(indexOfLatest)}else{hasIndex=false}}return indexes}getSliceArrayOfSpecificIndexes(array,...indexes){const items=[];const size=_lodash.default.size(array);for(const index of indexes){if(!_lodash.default.isNumber(index))throw new _exceptioner.default(9999,`59941278 index should be number => ${index}, ${array}`);if(index>size-1)throw new _exceptioner.default(9999,`5994123 index=>${index} is not valid, exceed than array size=${size}, ${array}`);items.push(_lodash.default.nth(array,index))}return items}indexesOf(arr,val){const indexes=[];let i=-1;while((i=arr.indexOf(val,i+1))!==-1){indexes.push(i)}return indexes}getIndexOfContext(context,stmt){return _lodash.default.findIndex(context,per=>{return _lodash.default.isEqual(per.trim(),stmt)})}toOneLineString(string){return _lodash.default.join(_lodash.default.split(string,"\n"),"")}toSpaceLessString(string){return _lodash.default.split(string,"").map(each=>_lodash.default.trim(each)).join("")}toNewLineLessString(string){return _lodash.default.split(string,"\n").map(each=>_lodash.default.trim(each)).join("")}exist(obj){return!_lodash.default.isNull(obj)&&!_lodash.default.isUndefined(obj)}isUndefinedNullEmpty(obj){const first=obj===undefined||obj===null;const second=_lodash.default.isString(obj)||_lodash.default.isArray(obj)||_lodash.default.isObject(obj)?_lodash.default.isEmpty(obj):false;return first||second}isAndConditionOfUndefinedNullEmpty(...objs){for(const obj of objs){if(!this.isUndefinedNullEmpty(obj))return false}return true}isOrConditionOfUndefinedNullEmpty(...objs){for(const obj of objs){if(this.isUndefinedNullEmpty(obj))return true}return false}getStringHandledByEachLine(string,predict=(segment,index,segments)=>true,separator="\n"){const segments=string.split(separator);for(const segment of segments){predict(segment,_lodash.default.indexOf(segments,segment),segments)}return segments.join(separator)}getSegmentsOfEachLine(string){return string.split("\n")}getNormalizedStringEndWith(string,predicate){string=this.toCDB(string);predicate=this.toCDB(predicate);const after=_lodash.default.join(_lodash.default.dropRightWhile(string,each=>!_lodash.default.isEqual(each,predicate)),"");return _lodash.default.isEmpty(after)?string:after}getNormalizedStringNotStartWith(string,...predicate){string=this.toCDB(string);const after=_lodash.default.join(_lodash.default.dropWhile(string,each=>this.has(predicate,each)),"");return _lodash.default.isEmpty(after)?string:after}getNormalizedStringNotEndWith(string,...predicate){string=this.toCDB(string);const after=_lodash.default.join(_lodash.default.dropRightWhile(string,each=>this.has(predicate,each)),"");return _lodash.default.isEmpty(after)?string:after}getTodayTimeFormat(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YYYY-MM-DD")}getCustomFormatOfDatePresent(ts,format="YY/MM"){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format(format)}getSimpleDateYYMMDDFormat(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YY/MM/DD")}getSimpleTimeYYMMDDHHmmFormat(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YY/MM/DD HH:mm")}getECPayCurrentTimeFormat(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss")}getCurrentTimeFormatV2(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss")}getCurrentTimeFormatYMDHM(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm")}getCurrentTimeFormatYMDHMS(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss")}getCurrentTimeFormat(ts){return(0,_momentTimezone.default)(ts?ts:this.getCurrentTimeStamp()).format("YYYY-MM-DD-HH-mm-ss")}getCurrentMillionSecTimeFormat(ts){return(0,_momentTimezone.default)(ts?ts:undefined).format("YYYY-MM-DD-HH-mm-ss-SSS")}isBetweenTimeStamp(target=this.getCurrentTimeStamp(),min,max){return(0,_momentTimezone.default)(target).isBetween(min,max)}isBeforeTimeStamp(target=this.getCurrentTimeStamp(),time){return(0,_momentTimezone.default)(target).isBefore(time)}isAfterTimeStamp(target=this.getCurrentTimeStamp(),time){return(0,_momentTimezone.default)(target).isAfter(time)}formatTimeByLocale(ts,location="zh-TW",timezone="Asia/Taipei",use24Hour=true){_momentTimezone.default.locale(location);const m=(0,_momentTimezone.default)(ts).tz(timezone);const formatStr=use24Hour?"YYYY/MM/DD HH:mm":"YYYY/MM/DD hh:mm A";return m.format(formatStr)}getTimeStampWithConditions(param={days:0,months:0,years:0,minutes:0,seconds:0,hours:0},target=this.getCurrentTimeStamp()){let base=(0,_momentTimezone.default)(target);for(const each in param){const number=param[each];const unit=each;if(number>0){base=base.add(number,unit)}if(number<0){base=base.subtract(Math.abs(number),unit)}}return base.valueOf()}getTimeStampByStringFormat(string){return this.getTimeStampFromSpecificFormat(string,"YYYY/MM/DD HH:mm:ss").valueOf()}getTimeStampFromSpecificFormat(string,format="YYYY/MM/DD HH:mm:ss"){return(0,_momentTimezone.default)(string,format).valueOf()}getTimeStampFromECPayStringFormat(string){return this.getTimeStampFromSpecificFormat(string,"YYYY/MM/DD HH:mm:ss").valueOf()}getTimeFormatOfDurationToMillionSecond(duration){return _momentTimezone.default.utc(duration).format("HH\u5C0F\u6642mm\u5206\u9418ss\u79D2SSS")}getTimeFormatOfDurationToSecond(duration){return _momentTimezone.default.utc(duration).format("HH\u5C0F\u6642mm\u5206\u9418ss\u79D2")}getTimeFormatOfDurationToDay(duration){return _momentTimezone.default.utc(duration).format("DD\u5929HH\u5C0F\u6642mm\u5206\u9418ss\u79D2")}getChineseTimeFormat(ts){_momentTimezone.default.locale("zh-TW");return(0,_momentTimezone.default)(ts).format("LLLL")}getMinuteFormatOfDuration(ds){return _momentTimezone.default.duration(ds).asMinutes()}getSecondFormatOfDuration(ds){return _momentTimezone.default.duration(ds).asSeconds()}getDayFormatOfDuration(ds){return _momentTimezone.default.duration(ds).asDays()}getDurationOfMillionSec(dateOrTimeStamp){const currentTimestamp=this.getCurrentTimeStamp();const targetTimeStamp=(0,_momentTimezone.default)(dateOrTimeStamp).valueOf();const queue=_lodash.default.sortBy([{ts:currentTimestamp},{ts:targetTimeStamp}],each=>each.ts).map(each=>each.ts);let after=(0,_momentTimezone.default)(queue.pop());let before=(0,_momentTimezone.default)(queue.shift());let duration=_momentTimezone.default.duration(after.diff(before));let ms=duration.asMilliseconds();return ms}getCurrentTimeStamp(){return(0,_momentTimezone.default)().valueOf()}isStringContainInLines(context,key){for(let each of _lodash.default.split(context,"\n")){if(this.has(each,key))return true}return false}camel(...words){return _lodash.default.camelCase(words.join("_"))}upperCamel(...words){return _lodash.default.upperFirst(this.camel(...words))}array2Obj(array){const obj={};for(const each of array){obj[`${this.getObjectKey(each)}`]=this.getObjectValue(each)}return obj}arrayToObjWith(array,predicate){const obj={};for(const item of array){const key=predicate(item);const content=obj[key];if(content&&_lodash.default.isArray(content)){content.push(item)}else{obj[key]=[item]}}return obj}isEmptyString(string){return _lodash.default.isEqual(_lodash.default.trim(string),"")}mergeObject(...obj){return _lodash.default.merge(...obj)}syncSetTimeout(func,ms,callback=()=>{}){(function sync(done){if(!done){setTimeout(function(){func();sync(true)},ms);return}callback()})()}mergeArrayBy(identifier="id",...array){return Object.values(array.flat().reduce((acc,item)=>{if(item[identifier])acc[item[identifier]]={...(acc[item[identifier]]||{}),...item};return acc},{}))}getRelativePath(pathName,rootName){return _lodash.default.dropWhile(pathName,(each,index)=>{return _lodash.default.isEqual(each,rootName[index])}).join("")}dropItemsByIndex(array,from,end){_lodash.default.remove(array,(value,index,array)=>end>=index&&index>=from)}isEven(n){return n%2===0}isOdd(n){return Math.abs(n%2)===1}enrichZhTw(){_momentTimezone.default.locale("zh-tw",{months:"\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"),weekdaysShort:"\u5468\u65E5_\u5468\u4E00_\u5468\u4E8C_\u5468\u4E09_\u5468\u56DB_\u5468\u4E94_\u5468\u516D".split("_"),weekdaysMin:"\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"),longDateFormat:{LT:"Ah\u9EDEmm\u5206",LTS:"Ah\u9EDEm\u5206s\u79D2",L:"YYYY-MM-DD",LL:"YYYY\u5E74MMMD\u65E5",LLL:"YYYY\u5E74MMMD\u65E5Ah\u9EDEmm\u5206",LLLL:"YYYY\u5E74MMMD\u65E5ddddAh\u9EDEmm\u5206",l:"YYYY-MM-DD",ll:"YYYY\u5E74MMMD\u65E5",lll:"YYYY\u5E74MMMD\u65E5Ah\u9EDEmm\u5206",llll:"YYYY\u5E74MMMD\u65E5ddddAh\u9EDEmm\u5206"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(h,meridiem){let hour=h;if(hour===12){hour=0}if(meridiem==="\u51CC\u6668"||meridiem==="\u65E9\u4E0A"||meridiem==="\u4E0A\u5348"){return hour}else if(meridiem==="\u4E0B\u5348"||meridiem==="\u665A\u4E0A"){return hour+12}else{return hour>=11?hour:hour+12}},meridiem:function(hour,minute,isLower){const hm=hour*100+minute;if(hm<600){return"\u51CC\u6668"}else if(hm<900){return"\u65E9\u4E0A"}else if(hm<1130){return"\u4E0A\u5348"}else if(hm<1230){return"\u4E2D\u5348"}else if(hm<1800){return"\u4E0B\u5348"}else{return"\u665A\u4E0A"}},calendar:{sameDay:function(){return this.minutes()===0?"[\u4ECA\u5929]Ah[\u9EDE\u6574]":"[\u4ECA\u5929]LT"},nextDay:function(){return this.minutes()===0?"[\u660E\u5929]Ah[\u9EDE\u6574]":"[\u660E\u5929]LT"},lastDay:function(){return this.minutes()===0?"[\u6628\u5929]Ah[\u9EDE\u6574]":"[\u6628\u5929]LT"},nextWeek:function(){let startOfWeek,prefix;startOfWeek=(0,_momentTimezone.default)().startOf("week");prefix=this.diff(startOfWeek,"days")>=7?"[\u4E0B]":"[\u672C]";return this.minutes()===0?prefix+"dddA\u9EDE\u6574":prefix+"dddAh\u9EDEmm"},lastWeek:function(){let startOfWeek,prefix;startOfWeek=(0,_momentTimezone.default)().startOf("week");prefix=this.unix()<startOfWeek.unix()?"[\u4E0A]":"[\u672C]";return this.minutes()===0?prefix+"dddAh\u9EDE\u6574":prefix+"dddAh\u9EDEmm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(number,period){switch(period){case"d":case"D":case"DDD":return number+"\u65E5";case"M":return number+"\u6708";case"w":case"W":return number+"\u5468";default:return number}},relativeTime:{future:"%s\u5185",past:"%s\u524D",s:"\u5E7E\u79D2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5C0F\u6642",hh:"%d \u5C0F\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500B\u6708",MM:"%d \u4E2A\u6708",y:"1 \u5E74",yy:"%d \u5E74"},week:{dow:1,doy:4}})}getVisibleOrHidden(judgement){return{visibility:judgement?"visible":"hidden"}}getNumberOfPercentageToFloat(percentage){let cleanedPercentage=percentage.replace("%","");let floatNumber=parseFloat(cleanedPercentage)/100;return floatNumber}getVisibleOrNone(judgement,flex=false){return{display:judgement?flex?"flex":"inherit":"none"}}stringToInteger(string){string=_lodash.default.toUpper(string);switch(string){case"A":return 0;case"B":return 1;case"C":return 2;case"D":return 3;case"E":return 4;case"F":return 5;case"G":return 6;case"H":return 7;case"I":return 8;case"J":return 9;case"K":return 10;case"L":return 11;case"M":return 12;case"N":return 13;default:return 101}}integerToString(integer){switch(integer){case 0:return"A";case 1:return"B";case 2:return"C";case 3:return"D";case 4:return"E";case 5:return"F";case 6:return"G";case 7:return"H";case 8:return"I";case 9:return"J";case 10:return"K";case 11:return"L";case 12:return"M";case 13:return"N";default:return"Z"}}toObjectMap(array,...rules){const newbies=[];for(const each of array){const object={};for(const rule of rules){const func=rule.func?rule.func:stmt=>stmt;object[rule.to]=this.isUndefinedNullEmpty(rule.from)||!_lodash.default.isObject(each)?func(each):func(each[rule.from])}newbies.push(object)}return newbies}exeAll(collection,...funcs){if(_lodash.default.isArray(collection)){for(const each of collection){for(const func of funcs){func(each)}}}else if(_lodash.default.isObject(collection)){for(const each in collection){for(const func of funcs){collection[each]=func(collection[each])}}}else{throw new _exceptioner.default(9999,`7841212 type can't be array or object`)}return collection}getObjectWhile(major,minor,predicate=target=>true){const collection={};for(const key in major){if(predicate(major,minor,key)){collection[key]=major[key]}}return collection}getIntersectionObject(objOfMajor,objOfMinor){return this.getObjectWhile(objOfMajor,objOfMinor,(major,minor,key)=>minor[key]!==undefined)}getDifferenceObject(objOfMajor,objOfMinor){return this.getObjectWhile(objOfMajor,objOfMinor,(major,minor,key)=>minor[key]===undefined)}isObjectContainAndEqual(targetObject,mainObject){let equal=true;for(const key in targetObject){if(mainObject[key]===undefined||mainObject[key]!==targetObject[key]){equal=false;break}}return equal}getStringOfPop(string,separator){if(!_lodash.default.isString(string)){throw new _exceptioner.default(9999,`445115,type should be string but ==> ${typeof string}`)}const segments=string.split(separator);segments.pop();return segments.join(separator)}getStringOfShift(string,separator){if(!_lodash.default.isString(string)){throw new _exceptioner.default(9999,`445116,type should be string but ==> ${typeof string}`)}const segments=string.split(separator);segments.shift();return segments.join(separator)}toObjectWithAttributeKey(array,attrKeyOfPK){const object={};for(const each of array){const pk=each[attrKeyOfPK];if(this.isUndefinedNullEmpty(pk)){throw new _exceptioner.default(9999,`48157232 pk can't be empty => '${pk}'`)}object[pk]=each}return object}getObjectOfArraySpecifyAttr(array,attr){return this.toObjectWithAttributeKey(array,attr)}getStateOfStringContainsSign(string,...signs){for(const sign of signs){if(this.has(string,sign)){return{exists:true,sign}}}return{exists:false}}constraintOfParam(collection,type,...others){let result=false;const validOfOthersCondition=_lodash.default.isEmpty(others)?true:this.and(...others.map(each=>each.logic));switch(type){case"array":if(_lodash.default.isArray(collection)&&validOfOthersCondition)result=true;break;case"object":if(_lodash.default.isObject(collection)&&validOfOthersCondition)result=true;break;case"string":if(_lodash.default.isString(collection)&&validOfOthersCondition)result=true;break;case"number":if(_lodash.default.isNumber(collection)&&validOfOthersCondition)result=true;break;case"other":if(validOfOthersCondition)return true}const stringOfRules=_lodash.default.isEmpty(others)?"":`, ${others.map(each=>each.message).join(" | ")}`;if(result===false){throw new _exceptioner.default(9999,`7474423 type should be ${type} but get '${typeof type}' ${stringOfRules} `)}}getSliceArrayWithMutate(array,n){const slice=_lodash.default.remove(array,(each,index)=>index<n);return slice}getArrayOfInteraction(one,two){return one.filter(element=>!two.includes(element))}getArrayOfMoveToSpecificIndex(array,from,to){if(!Array.isArray(array)){throw new Error("First argument must be an array.")}const length=array.length;if(from<0||from>=length||to<0||to>=length){console.warn("Invalid 'from' or 'to' index for getArrayOfMoveToSpecificIndexOptimized.");return[...array]}if(from===to){return[...array]}const copy=[...array];const[item]=copy.splice(from,1);copy.splice(to,0,item);return copy}getArrayOfMoveItemToSpecificIndex(array,item,indexOfDestination){const indexOfItem=_lodash.default.indexOf(array,item);return this.getArrayOfMoveToSpecificIndex(array,indexOfItem,indexOfDestination)}getArrayOfMoveSpecificItemToAside(array,item,toTail=true){const indexOfItem=_lodash.default.indexOf(array,item);return this.getArrayOfMoveSpecificIndexToAside(array,indexOfItem,toTail)}getArrayOfMoveSpecificIndexToAside(array,index,toTail=true){const indexOfLast=_lodash.default.size(array)-1;return this.getArrayOfMoveToSpecificIndex(array,index,toTail?indexOfLast:0)}getECPayCheckMacValue(data,hashKey="5294y06JbISpM5x9",hashIV="v77hoKGq4kWxNNIS"){const clone=_lodash.default.cloneDeep(data);delete clone.CheckMacValue;const keys=Object.keys(clone).sort((l,r)=>l>r?1:-1);let checkValue="";for(const key of keys){checkValue+=`${key}=${clone[key]}&`}checkValue=`HashKey=${hashKey}&${checkValue}HashIV=${hashIV}`;checkValue=encodeURIComponent(checkValue).toLowerCase();checkValue=checkValue.replace(/%20/g,"+").replace(/%2d/g,"-").replace(/%5f/g,"_").replace(/%2e/g,".").replace(/%21/g,"!").replace(/%2a/g,"*").replace(/%28/g,"(").replace(/%29/g,")").replace(/%20/g,"+");return _lodash.default.toUpper(_cryptoJs.default.SHA256(checkValue).toString(_cryptoJs.default.enc.Hex))}getStringOfHandledHtml(htmlString,predicate=document=>{console.log(document)}){const document=(0,_nodeHtmlParser.parse)(htmlString);predicate(document);return document.toString()}getSpecifyObjectBy(array,predicate){for(const item of array){if(predicate(item))return item}}validatePayloadObjectValid(content,rules=[],idOfError=this.getRandomHash(10)){if(this.isUndefinedNullEmpty(content)){throw new _exceptioner.default(9999,`${idOfError} content(pay-load) is undefined || empty`)}for(const rule of rules){if(_lodash.default.isString(rule)){if(this.isUndefinedNullEmpty(content[rule])){throw new _exceptioner.default(9999,`${idOfError} ATTRIBUTE:'${rule}' is not Exist`)}}else if(_lodash.default.isObject(rule)){const key=this.getObjectKey(rule);const predicate=this.getObjectValue(rule);if(!predicate(content[key])){throw new _exceptioner.default(9999,`${idOfError} ATTRIBUTE:'${key}' is not valid of custom rule`)}}}return true}getArrayOfSummarizeBy(array,keyOfId,keyOfSum){const obj={};for(const item of array){const key=item[keyOfId];if(obj[key]!==undefined){obj[key]=obj[key]+item[keyOfSum]}else{obj[key]=item[keyOfSum]}}const items=[];for(const key in obj){const _obj={};_obj[keyOfId]=key;_obj[keyOfSum]=obj[key];items.push(_obj)}return items}getHeadStringSplitBy(string,sign=this.getSeparatorOfUnique()){return _lodash.default.split(string,sign).shift()}getTailStringSplitBy(string,sign=this.getSeparatorOfUnique()){return _lodash.default.split(string,sign).pop()}getSlicesByIndexes(array=[],indexes=[]){const slices=[];_lodash.default.each(indexes,(each,index,arrayOfIndexes)=>{if(_lodash.default.isEqual(index,indexes.length-1))return false;const slice=_lodash.default.slice(array,each,indexes[index+1]);slices.push(slice)});return slices}findIndexes(array,predicate){const indexes=[];let hasIndex=true;let indexOfLatest=0;while(hasIndex){indexOfLatest=_lodash.default.findIndex(array,predicate,indexOfLatest+1);if(indexOfLatest>-1){indexes.push(indexOfLatest)}else{hasIndex=false}}return indexes}isOverSpecificAge(birthDate,target=18){const age=(0,_momentTimezone.default)().diff((0,_momentTimezone.default)(birthDate,"YYYY-MM-DD"),"years");return age>=target}isValidEmail(email){const emailRegex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return emailRegex.test(email)}isValidTaiwaneseID(idNumber){const idRegex=/^[A-Z][1-2]\d{8}$/;if(!idRegex.test(idNumber)){return false}const weight=[1,9,8,7,6,5,4,3,2,1];const firstChar=idNumber.charCodeAt(0)-65;let sum=firstChar*10+parseInt(idNumber.slice(1));for(let i=0;i<weight.length;i++){sum+=parseInt(idNumber.charAt(i+1))*weight[i]}return sum%10===0}validatePersonalInfoInput(name,email,idNumber,phoneNumber,birthday,ageOfQualify=12){if(name.length<2){return{valid:false,message:"\u59D3\u540D\u81F3\u5C11\u8981\u5169\u500B\u5B57"}}const emailRegex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;if(!emailRegex.test(email)){return{valid:false,message:"\u96FB\u5B50\u90F5\u4EF6\u683C\u5F0F\u4E0D\u6B63\u78BA"}}const idRegex=/^[A-Z][1-2]\d{8}$/;if(!idRegex.test(idNumber)){return{valid:false,message:"\u8EAB\u5206\u8B49\u865F\u78BC\u683C\u5F0F\u4E0D\u6B63\u78BA"}}const phoneRegex=/^09\d{8}$/;if(!phoneRegex.test(phoneNumber)){return{valid:false,message:"\u624B\u6A5F\u865F\u78BC\u683C\u5F0F\u4E0D\u6B63\u78BA"}}if(this.isUndefinedNullEmpty(birthday))return{valid:false,message:`出生日期格式不正確`};const now=(0,_momentTimezone.default)();const age=now.diff(birthday,"years");if(age<ageOfQualify){return{valid:false,message:`年齡不得小於 ${ageOfQualify} 歲`}}return{valid:true,message:"\u683C\u5F0F\u6AA2\u67E5\u901A\u904E"}}getStringOfFormatTimestampRange(startTimestamp,endTimestamp){const startDate=(0,_momentTimezone.default)(startTimestamp);const endDate=(0,_momentTimezone.default)(endTimestamp);const formatDate=date=>date.format("YY/MM/DD");const startYear=startDate.year();const endYear=endDate.year();if(startYear===endYear){return`${formatDate(startDate)} - ${endDate.format("MM/DD")}`}else{return`${formatDate(startDate)} - ${formatDate(endDate)}`}}getStringOfCalculateClassTime(startTimestamp,endTimestamp,weeklyMinutes){const startDate=(0,_momentTimezone.default)(startTimestamp);const endDate=(0,_momentTimezone.default)(endTimestamp);const totalDays=endDate.diff(startDate,"days")+1;const totalWeeks=Math.ceil(totalDays/7);const totalMinutes=totalWeeks*weeklyMinutes;const hours=Math.floor(totalMinutes/60);const minutes=totalMinutes%60;if(minutes===0){return`${hours}小時`}else{return`${hours}小時${minutes}分鐘`}}getNumberOfPeriodMinute(startTimestamp,endTimestamp){const startTime=(0,_momentTimezone.default)(startTimestamp).format("HH:mm");const endTime=(0,_momentTimezone.default)(endTimestamp).format("HH:mm");const startDate=(0,_momentTimezone.default)(startTime,"HH:mm");const endDate=(0,_momentTimezone.default)(endTime,"HH:mm");const durationInMinutes=_momentTimezone.default.duration(endDate.diff(startDate)).asMinutes();return durationInMinutes}getStringOfWeekTime(day,startTimestamp,endTimestamp){const daysOfWeek={1:"\u9031\u4E00",2:"\u9031\u4E8C",3:"\u9031\u4E09",4:"\u9031\u56DB",5:"\u9031\u4E94",6:"\u9031\u516D",7:"\u9031\u65E5"};if(day<1||day>7){throw new Error("day \u5FC5\u9808\u5728 1 \u5230 7 \u4E4B\u9593")}const startTime=(0,_momentTimezone.default)(startTimestamp).format("HH:mm");const endTime=(0,_momentTimezone.default)(endTimestamp).format("HH:mm");return`${daysOfWeek[day]} ${startTime}-${endTime}`}extractNumber(str){if(this.isUndefinedNullEmpty(str))return-1;const match=str.match(/\d+/);return match?Number(match[0]):-1}async fetchElementAttribute(dom,attr="innerText",defaultValue=""){return await dom.evaluate(el=>el[attr])}async fetchElementAttributes(dom,stringOfTrait,defaultValue="",...attributes){const element=await dom.$(stringOfTrait);if(!this.isUndefinedNullEmpty(element)){try{return await element.evaluate((el,attributes)=>{if(attributes.length===1)return el[attributes.shift()];return{...attributes.map(attr=>el[attr])}},attributes)}catch(error){this.appendError(`1581532 ${stringOfTrait} fetch ${JSON.stringify(attributes)} fail, element is not found`);return defaultValue}}return defaultValue}async writeElementAttributes(dom,stringOfTrait,...attributes){const element=await dom.$(stringOfTrait);if(!this.isUndefinedNullEmpty(element)){await element.evaluate((element,attributes)=>{attributes.map(attr=>{const entries=Object.entries(attr);const key=entries[0][0];const value=entries[0][1];element[key]=value})},attributes)}else this.appendError(`1231232 ${stringOfTrait} fetch ${JSON.stringify(attributes)} fail, element is not found`)}getSliceArrayOfUnique(array){if(!Array.isArray(array)||array.length===0){return[]}const firstElement=array[0];if(_lodash.default.isObject(firstElement)&&key){const uniqueMap=new Map(array.map(item=>[item[key],item]));return Array.from(uniqueMap.values())}else if(_lodash.default.isObject(firstElement)){console.warn("getSliceArrayOfUniqueOptimized: No key provided for object array, using potentially slow deep comparison.");return _lodash.default.uniqWith(array,_lodash.default.isEqual)}else{return Array.from(new Set(array))}}getUniqueValuesBy(array,key="valueOfType"){return _lodash.default.uniq(array.map(item=>item[key]))}generateCombinations(...attributes){const keys=attributes.map(attr=>attr.key);const labelMap=_lodash.default.keyBy(attributes,"key");const optionArrays=attributes.map(attr=>attr.options.map(option=>({key:attr.key,value:option.value,label:option.label})));const cartesianProduct=_lodash.default.reduce(optionArrays,(acc,curr)=>_lodash.default.flatMap(acc,a=>curr.map(b=>[...a,b])),[[]]);const results=cartesianProduct.map(combination=>{const trait={};const idParts=[];const contentParts=[];for(const{key,value,label}of combination){trait[key]=value;idParts.push(`${key}_${value}`);contentParts.push(`${label}`)}return{trait,id:idParts.join("_"),content:contentParts.join("\uFF5C")}});return _lodash.default.sortBy(results,item=>keys.map(key=>item.trait[key]))}extractStaticSegments(path,rules=[":"]){return path.trim().replace(/^\.?\/*|\/*$/g,"").split("/").filter(segment=>segment&&!rules.some(rule=>segment.startsWith(rule)))}mutateRemoveKeys(array,keysToRemove){_lodash.default.forEach(array,(obj,index)=>{const filtered=Object.fromEntries(Object.entries(obj).filter(([key])=>!keysToRemove.includes(key)));Object.keys(obj).forEach(k=>delete obj[k]);Object.assign(obj,filtered)})}removeKeysFromArrayObjects(array,keysToRemove){return _lodash.default.map(array,obj=>Object.fromEntries(Object.entries(obj).filter(([key])=>!keysToRemove.includes(key))))}formatTextWithEllipsis(originalText,maxLength){const ellipsis="......";const ellipsisLength=ellipsis.length;if(_lodash.default.size(originalText)<=maxLength)return originalText;if(maxLength<=ellipsisLength)return"";const remainingLength=maxLength-ellipsisLength;const frontLength=Math.floor(remainingLength/2);const backLength=remainingLength-frontLength;const front=_lodash.default.truncate(originalText,{length:frontLength,omission:""});const back=_lodash.default.takeRight(originalText,backLength).join("");return`${front}${ellipsis}${back}`}getObjectBy(obj,predict=attr=>attr.checked!==true){return _lodash.default.fromPairs(_lodash.default.toPairs(obj).filter(([_,value])=>predict(value)))}mutateBy(array,predict=item=>item){const sorted=_lodash.default.sortBy(array,predict);array.splice(0,array.length,...sorted)}findUniqueStrings(...arrays){const allStrings=_lodash.default.flatten(arrays);const grouped=_lodash.default.countBy(allStrings);return _lodash.default.chain(grouped).pickBy(count=>count===1).keys().compact().value()}getObjectOfSpecifyKey(value,key){const object={};object[key]=value;return object}findUniqueNonReferenceStrings(...arrays){if(arrays.length===0)return[];const[reference,...rest]=arrays;const allExceptRef=_lodash.default.flatten(rest);const counted=_lodash.default.countBy(allExceptRef);return _lodash.default.chain(counted).pickBy((count,str)=>count===1&&!reference.includes(str)).keys().compact().value()}getArrayOfFillMissingValues(array){const charset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";const generateRandomValue=()=>_lodash.default.times(8,()=>_lodash.default.sample(charset)).join("");const usedValues=new Set(array.map(item=>item.value).filter(Boolean));return array.map(item=>{if(_lodash.default.isEmpty(item.value)){let newValue;do{newValue=generateRandomValue()}while(usedValues.has(newValue));usedValues.add(newValue);return{...item,value:newValue}}return item})}isFirestoreAutoId(id){return _lodash.default.isString(id)&&id.length===20&&/^[A-Za-z0-9]{20}$/.test(id)}getAutoIdOfFirestore(){return this.getRandomHashV2(20)}getStringOfConvertTimeRange(input){const[datePart,timeRange]=input.split("\uFF5C");const dateStr=datePart.split("(")[0];const[start,end]=timeRange.split("-");const formatDate=time=>(0,_momentTimezone.default)(`${dateStr} ${time}`,"YYYY/MM/DD HH:mm").format("YYYYMMDDHHmm");return`${formatDate(start)}-${formatDate(end)}`}getTSOfSpecificDate(dateStr,{end=false}={}){return Number((0,_lodash.default)(dateStr).thru(str=>(0,_momentTimezone.default)(str.split("(")[0],"YYYY/MM/DD")).thru(m=>end?m.endOf("day"):m.startOf("day")).value().format("YYYYMMDDHHmmss"))}isHttpsURL(url){if(!_lodash.default.isString(url))return false;try{const decoded=decodeURIComponent(url.trim());const parsed=new URL(decoded);return parsed.protocol==="https:"}catch(e){return false}}generateUniqueCodeMap(array,length=3){if(length<2){throw new Error("\u4EE3\u78BC\u9577\u5EA6\u6700\u5C11\u5FC5\u9808\u70BA 2\u3002")}const usedCodes=new Set;const usedKeys=new Set;const generateRandomCode=()=>{const letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";const chars=letters+"0123456789";let code;do{code=letters[Math.floor(Math.random()*letters.length)];for(let i=1;i<length;i++){code+=chars[Math.floor(Math.random()*chars.length)]}}while(usedCodes.has(code));usedCodes.add(code);return code};return _lodash.default.transform(array,(result,key)=>{if(usedKeys.has(key)){throw new Error(`23125453 Duplicate key detected: "${key}"`)}usedKeys.add(key);result[key]=generateRandomCode()},{})}getPriceOfPercentageBehavior(price,percentage,discount=false){const decimal=this.toPercentageDecimal(percentage);return this.getNumberOfMultiplyCeil(price,discount?1-decimal:1+decimal)}getFeeOfDiscount(origin,percentage){return Math.round(_lodash.default.multiply(origin,this.toPercentageDecimal(percentage)))}mergeArrayByKey(array){if(!Array.isArray(array))return array;const resultMap={};for(const obj of array){if(!_lodash.default.isPlainObject(obj))continue;for(const[key,value]of Object.entries(obj)){if(!resultMap[key]){resultMap[key]=_lodash.default.cloneDeep(value)}else{_lodash.default.merge(resultMap[key],value)}}}array.length=0;Object.entries(resultMap).forEach(([key,value])=>{array.push({[key]:value})});return array}getObjectOfStartEndDateTime(input){if(!input||typeof input!=="string"){return{startDate:"",startTime:"",endDate:"",endTime:""}}const cleaned=input.replace(/|/g," ").replace(/-/g,"-").replace(/\s+/g," ").trim();const crossDatePattern=/(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})\s*-\s*(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})/;const sameDatePattern=/(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})\s*-\s*(\d{2}:\d{2})/;let startDate,startTime,endDate,endTime;if(crossDatePattern.test(cleaned)){[,startDate,startTime,endDate,endTime]=cleaned.match(crossDatePattern)}else if(sameDatePattern.test(cleaned)){[,startDate,startTime,endTime]=cleaned.match(sameDatePattern);endDate=startDate}else{return{startDate:"",startTime:"",endDate:"",endTime:""}}const start=new Date(`${startDate} ${startTime}`);const end=new Date(`${endDate} ${endTime}`);if(end<start){throw new Error(`End time cannot be earlier than start time: ${input}`)}return{startDate,startTime,endDate,endTime}}getFilteredHeraPeriods(arr,idOfCurrentBooze){return _lodash.default.chain(arr).filter(item=>item.idOfBooze!==idOfCurrentBooze).uniqBy(item=>`${item.idOfBooze}_${item.idOfVariant}`).value()}checkPeriodConflict(newTask,existingTasks,resourceCount=1){const[datePart,timePart]=newTask.content.split("\uFF5C");const date=(0,_momentTimezone.default)(datePart.split(" ")[0],"YYYY/MM/DD");const[startTimeStr,endTimeStr]=timePart.split("-");const start=(0,_momentTimezone.default)(`${date.format("YYYY/MM/DD")} ${startTimeStr}`,"YYYY/MM/DD HH:mm");const end=(0,_momentTimezone.default)(`${date.format("YYYY/MM/DD")} ${endTimeStr}`,"YYYY/MM/DD HH:mm");const conflictItems=_lodash.default.filter(existingTasks,task=>{const[pStartStr,pEndStr]=task.period.split("-");const pStart=(0,_momentTimezone.default)(pStartStr,"YYYYMMDDHHmm");const pEnd=(0,_momentTimezone.default)(pEndStr,"YYYYMMDDHHmm");return start.isBefore(pEnd)&&end.isAfter(pStart)});const conflict=conflictItems.length>=resourceCount;return{conflict,items:conflictItems}}}var _default=exports.default=Utiller;
@@ -1 +1,8 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof3=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _path4=_interopRequireDefault(require("path"));var _fs=_interopRequireDefault(require("fs"));var _promises=_interopRequireDefault(require("fs/promises"));var _lodash=_interopRequireDefault(require("lodash"));var _child_process=_interopRequireDefault(require("child_process"));var _configerer=require("configerer");var _index=_interopRequireDefault(require("./index"));var _index2=_interopRequireDefault(require("../exceptioner/index"));var _pdfParse=_interopRequireDefault(require("pdf-parse"));var _del=_interopRequireWildcard(require("del"));var _fsExtra=_interopRequireDefault(require("fs-extra"));var _prompt=_interopRequireDefault(require("prompt"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,"default":e};if(null===e||"object"!=_typeof3(e)&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f})(e,t)}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _callSuper(t,o,e){return o=(0,_getPrototypeOf2["default"])(o),(0,_possibleConstructorReturn2["default"])(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2["default"])(t).constructor):o.apply(t,e))}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}var NodeUtiller=function(_Utiller){function NodeUtiller(){var _this;(0,_classCallCheck2["default"])(this,NodeUtiller);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,NodeUtiller,[].concat(args));(0,_defineProperty2["default"])(_this,"isPersistIntoLogFile",true);(0,_defineProperty2["default"])(_this,"findFilePathByExtension",function(rootpath){var _this2;var _extension=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var reg=new RegExp("^[^.].+.(".concat(_lodash["default"].join(_extension,"|"),")$"));for(var _len2=arguments.length,exclude=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++){exclude[_key2-2]=arguments[_key2]}return(_this2=_this).findFilePathBy.apply(_this2,[rootpath,function(item){return reg.test(item.fileNameExtension)}].concat(exclude))});(0,_defineProperty2["default"])(_this,"executeCommandLine",function(){var _ref=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(command){var self;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:self=_this;_this.appendInfo("\u57F7\u884C\u8173\u672C ".concat(command));return _context.abrupt("return",new Promise(function(resolve,reject){_child_process["default"].exec(command,function(error,stdout,stderr){self.appendInfo("".concat(stdout));self.appendInfo("".concat(stderr));if(error){self.appendError("\u57F7\u884C\u932F\u8AA4: ".concat(error));reject(error);return}resolve(stdout.trim())})}));case 3:case"end":return _context.stop()}},_callee)}));return function(_x){return _ref.apply(this,arguments)}}());(0,_defineProperty2["default"])(_this,"getPathAfterSpecificFolder",function(fullPath){var folder=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"src";var parts=fullPath.split(_path4["default"].sep);for(var i=parts.length-1;i>=0;i--){if(parts[i]===folder){return"/"+parts.slice(i+1).join("/")}}return""});(0,_defineProperty2["default"])(_this,"getPathAfterSrc",function(fullPath){return _this.getPathAfterSpecificFolder(fullPath)});return _this}(0,_inherits2["default"])(NodeUtiller,_Utiller);return(0,_createClass2["default"])(NodeUtiller,[{key:"findSpecificFolderByPath",value:function findSpecificFolderByPath(path,folderName){var absolute=_path4["default"].resolve(path);var parts=absolute.split(_path4["default"].sep);while(parts.length){var joined=_path4["default"].join.apply(_path4["default"],(0,_toConsumableArray2["default"])(parts).concat([folderName]));if(_fs["default"].existsSync(joined))return joined;parts.pop()}return null}},{key:"getPDFText",value:(function(){var _getPDFText=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(path){var dataBuffer;return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:dataBuffer=_fs["default"].readFileSync(path);return _context2.abrupt("return",(0,_pdfParse["default"])(dataBuffer).then(function(data){return data}));case 2:case"end":return _context2.stop()}},_callee2)}));function getPDFText(_x2){return _getPDFText.apply(this,arguments)}return getPDFText}())},{key:"printf",value:function printf(){this.appendInfo("i can use in node.js only yo yo")}},{key:"findFilePathBy",value:function findFilePathBy(path){var predicate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){return true};if(!_fs["default"].existsSync(path))return[];var result=[];var entries=_fs["default"].readdirSync(path,{withFileTypes:true});for(var _len3=arguments.length,excludes=new Array(_len3>2?_len3-2:0),_key3=2;_key3<_len3;_key3++){excludes[_key3-2]=arguments[_key3]}var _iterator=_createForOfIteratorHelper(entries),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var entry=_step.value;if(excludes.includes(entry.name))continue;var fullPath=_path4["default"].join(path,entry.name);if(entry.isDirectory()){result.push.apply(result,(0,_toConsumableArray2["default"])(this.findFilePathBy.apply(this,[fullPath,predicate].concat(excludes))))}else if(entry.isFile()){var info=this.getPathInfo(fullPath);if(predicate(info))result.push(info)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}return result}},{key:"isPathExist",value:function isPathExist(path){return _fs["default"].existsSync(path)}},{key:"renameFile",value:function renameFile(path){var newName=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"fileName";if(!this.isFile(path)||!newName){this.appendError("renameFile \u932F\u8AA4, path: ".concat(path,", newName: ").concat(newName));return}var dir=_path4["default"].dirname(path);var ext=_path4["default"].extname(path);var newPath=_path4["default"].join(dir,"".concat(newName).concat(ext));_fs["default"].renameSync(path,newPath)}},{key:"getPathInfo",value:function getPathInfo(path){var absolute=_path4["default"].resolve(path);var obj={path:path,absolute:absolute,isFile:false,isDirectory:true,dirName:undefined,folderName:undefined,dirPath:undefined,folderPath:undefined,extension:undefined,fileName:undefined,fileNameExtension:undefined,lastModifiedTime:undefined,name:undefined};if(this.isFile(absolute)){obj["extension"]=absolute.split(".").pop();var fileNameStrings=absolute.split("/").pop().split(".");fileNameStrings.pop();obj["fileName"]=fileNameStrings.join(".");obj["name"]=fileNameStrings.join(".");obj["dirName"]=_lodash["default"].nth(absolute.split("/"),-2);obj["folderName"]=_lodash["default"].nth(absolute.split("/"),-2);obj["isFile"]=true;obj["dirPath"]=this.getFolderPathOfSpecificPath(absolute);obj["folderPath"]=this.getFolderPathOfSpecificPath(absolute);obj["isDirectory"]=false;obj["fileNameExtension"]="".concat(obj.fileName,".").concat(obj.extension);obj["lastModifiedTime"]=this.getFileLastModifiedTime(absolute)}if(this.isDirectory(absolute)){obj["dirName"]=absolute.split("/").pop()}return obj}},{key:"syncExecuteCommandLine",value:function syncExecuteCommandLine(command){var self=this;this.appendInfo("\u57F7\u884C\u8173\u672C ".concat(command));_child_process["default"].exec("".concat(command),function(error,stdout,stderr){self.appendInfo("".concat(stdout));self.appendInfo("".concat(stderr));if(error!==null){self.appendError("exec error: ".concat(error))}})}},{key:"persistByPath",value:function persistByPath(targetPath){var isAbsolute=_path4["default"].isAbsolute(targetPath);var parts=targetPath.split("/").filter(Boolean);var lastPart=parts[parts.length-1];var isFile=_path4["default"].extname(lastPart)!=="";var current=isAbsolute?_path4["default"].sep:"";for(var i=0;i<parts.length;i++){current=_path4["default"].join(current,parts[i]);if(!_fs["default"].existsSync(current)){if(i===parts.length-1&&isFile){_fs["default"].writeFileSync(current,"")}else{_fs["default"].mkdirSync(current,{recursive:false})}}}return _path4["default"].resolve(targetPath)}},{key:"copyFromFolderToDestFolder",value:(function(){var _copyFromFolderToDestFolder=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(from,dest){var override,preserveTimestamps,filter,_args3=arguments;return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:override=_args3.length>2&&_args3[2]!==undefined?_args3[2]:true;preserveTimestamps=_args3.length>3&&_args3[3]!==undefined?_args3[3]:false;filter=_args3.length>4&&_args3[4]!==undefined?_args3[4]:function(){return true};if(!(!_fs["default"].existsSync(from)||!_fs["default"].existsSync(from))){_context3.next=5;break}throw new _index2["default"](8009,"".concat(from," or ").concat(dest," is not exist!"));case 5:this.appendInfo("\u6B63\u5728\u8907\u88FDing ".concat(from,"/* => ").concat(dest,"/* succeed"));_fsExtra["default"].copySync(from,dest,{preserveTimestamps:preserveTimestamps,override:override,filter:filter});this.appendInfo("\u8907\u88FD\u6210\u529F ".concat(from,"/* => ").concat(dest,"/* succeed"));case 8:case"end":return _context3.stop()}},_callee3,this)}));function copyFromFolderToDestFolder(_x3,_x4){return _copyFromFolderToDestFolder.apply(this,arguments)}return copyFromFolderToDestFolder}())},{key:"cleanAllFiles",value:function cleanAllFiles(dir){if(this.isDirectory(dir)){this.appendInfo("\u6E96\u5099\u6E05\u9664\u5E95\u4E0B\u7684\u6240\u6709 ".concat(dir));_fsExtra["default"].emptyDirSync(dir);this.appendInfo("\u6210\u529F\u6E05\u9664\u5E95\u4E0B\u7684\u6240\u6709 ".concat(dir))}}},{key:"deleteSelfByPath",value:(function(){var _deleteSelfByPath=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(path,force){return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:if(!_fs["default"].existsSync(path)){_context4.next=5;break}this.appendInfo("\u6E96\u5099\u522A\u6389 ".concat(path,",{force:").concat(force,"}"));_context4.next=4;return(0,_del["default"])(path,{force:force});case 4:this.appendInfo("\u6210\u529F\u522A\u6389\u4E86 ".concat(path));case 5:case"end":return _context4.stop()}},_callee4,this)}));function deleteSelfByPath(_x5,_x6){return _deleteSelfByPath.apply(this,arguments)}return deleteSelfByPath}())},{key:"deleteFileOrFolder",value:function(){var _deleteFileOrFolder=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(path){return _regenerator["default"].wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:this.appendInfo("\u522A\u6389\u4E86 ".concat(path));_context5.next=3;return(0,_del["default"])(path);case 3:case"end":return _context5.stop()}},_callee5,this)}));function deleteFileOrFolder(_x7){return _deleteFileOrFolder.apply(this,arguments)}return deleteFileOrFolder}()},{key:"deleteChildByPath",value:(function(){var _deleteChildByPath=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(path){var force,pathes,_iterator2,_step2,_path2,_args6=arguments;return _regenerator["default"].wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:force=_args6.length>1&&_args6[1]!==undefined?_args6[1]:false;pathes=this.getChildPathByPath(path);_iterator2=_createForOfIteratorHelper(pathes);_context6.prev=3;_iterator2.s();case 5:if((_step2=_iterator2.n()).done){_context6.next=11;break}_path2=_step2.value;_context6.next=9;return this.deleteSelfByPath(_path2.absolute,force);case 9:_context6.next=5;break;case 11:_context6.next=16;break;case 13:_context6.prev=13;_context6.t0=_context6["catch"](3);_iterator2.e(_context6.t0);case 16:_context6.prev=16;_iterator2.f();return _context6.finish(16);case 19:case"end":return _context6.stop()}},_callee6,this,[[3,13,16,19]])}));function deleteChildByPath(_x8){return _deleteChildByPath.apply(this,arguments)}return deleteChildByPath}())},{key:"getFileCountsOfFolder",value:function getFileCountsOfFolder(path){if(this.isDirectory(path)){return _fs["default"].readdirSync(path).length}return-1}},{key:"reinstallNodeModules",value:function(){var _reinstallNodeModules=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(){var path,_len4,exclude,_key4,ex,paths,_iterator3,_step3,_json,path_module_root,path_gen_node_module,path_lock_json,_iterator4,_step4,_json2,_path_module_root,_path_gen_node_module,_args7=arguments;return _regenerator["default"].wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:path=_args7.length>0&&_args7[0]!==undefined?_args7[0]:"../";for(_len4=_args7.length,exclude=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){exclude[_key4-1]=_args7[_key4]}ex=[].concat(exclude,["node_modules","utiller","configerer"]);paths=this.findFilePathBy.apply(this,[path,function(each){return _lodash["default"].isEqual(each.fileNameExtension,"package.json")}].concat((0,_toConsumableArray2["default"])(ex)));_iterator3=_createForOfIteratorHelper(paths);_context7.prev=5;_iterator3.s();case 7:if((_step3=_iterator3.n()).done){_context7.next=20;break}_json=_step3.value;path_module_root=this.getFileDirPath(_json.absolute);path_gen_node_module="".concat(path_module_root,"node_modules");path_lock_json="".concat(path_module_root,"package-lock.json");_context7.next=14;return(0,_del["default"])(path_lock_json);case 14:this.appendInfo("\u522A\u6389\u4E86 ".concat(path_lock_json));_context7.next=17;return(0,_del["default"])(path_gen_node_module);case 17:this.appendInfo("\u522A\u6389\u4E86 ".concat(path_gen_node_module));case 18:_context7.next=7;break;case 20:_context7.next=25;break;case 22:_context7.prev=22;_context7.t0=_context7["catch"](5);_iterator3.e(_context7.t0);case 25:_context7.prev=25;_iterator3.f();return _context7.finish(25);case 28:_iterator4=_createForOfIteratorHelper(paths);_context7.prev=29;_iterator4.s();case 31:if((_step4=_iterator4.n()).done){_context7.next=40;break}_json2=_step4.value;_path_module_root=this.getFileDirPath(_json2.absolute);_path_gen_node_module="".concat(_path_module_root,"node_modules");if(_fs["default"].existsSync(_path_gen_node_module)){_context7.next=38;break}_context7.next=38;return this.executeCommandLine("cd ".concat(_path_module_root," && npm install"));case 38:_context7.next=31;break;case 40:_context7.next=45;break;case 42:_context7.prev=42;_context7.t1=_context7["catch"](29);_iterator4.e(_context7.t1);case 45:_context7.prev=45;_iterator4.f();return _context7.finish(45);case 48:case"end":return _context7.stop()}},_callee7,this,[[5,22,25,28],[29,42,45,48]])}));function reinstallNodeModules(){return _reinstallNodeModules.apply(this,arguments)}return reinstallNodeModules}()},{key:"getNamesOfFolderChild",value:function getNamesOfFolderChild(path){return this.getChildPathByPath(path).filter(function(p){return p.isDirectory}).map(function(p){return p.dirName})}},{key:"getChildPathByPath",value:function getChildPathByPath(_path){var _this3=this;try{var files=_fs["default"].readdirSync(_path);return files.map(function(file){return _this3.getPathInfo(_path4["default"].join(_path,file))})}catch(error){throw new _index2["default"](8002,error)}}},{key:"copySingleFile",value:function copySingleFile(from,dest,fileName){var force=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var destination=fileName&&fileName.trim()?_path4["default"].join(dest,fileName):dest;if(_fs["default"].existsSync(destination)&&!force){throw new _index2["default"](8006,destination)}_fs["default"].copyFileSync(from,destination)}},{key:"ensureFolderExists",value:function ensureFolderExists(folderPath){var resolved=_path4["default"].resolve(folderPath);if(_fs["default"].existsSync(resolved))return;_fs["default"].mkdirSync(resolved,{recursive:true})}},{key:"getNodeEnvVariable",value:function getNodeEnvVariable(key){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:undefined;var value=process.env[key];return value===undefined?defaultValue:value}},{key:"isDirectory",value:function isDirectory(path){if(!this.isPathExist(path))return false;return _fs["default"].lstatSync(path).isDirectory()}},{key:"isFile",value:function isFile(path){if(!this.isPathExist(path))return false;return _fs["default"].lstatSync(path).isFile()}},{key:"isImageFile",value:function isImageFile(file){return["svg","png","jpg","jpeg"].includes(file.extension)}},{key:"cleanChildFiles",value:(function(){var _cleanChildFiles=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(path){var _this4=this;var predicate,_len5,exclude,_key5,files,nonImages,_args8=arguments;return _regenerator["default"].wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:predicate=_args8.length>1&&_args8[1]!==undefined?_args8[1]:function(){return true};if(_fs["default"].existsSync(path)){_context8.next=3;break}return _context8.abrupt("return",false);case 3:for(_len5=_args8.length,exclude=new Array(_len5>2?_len5-2:0),_key5=2;_key5<_len5;_key5++){exclude[_key5-2]=_args8[_key5]}files=this.findFilePathBy.apply(this,[path,predicate].concat(exclude));nonImages=files.filter(function(file){return!_this4.isImageFile(file)});_context8.next=8;return Promise.allSettled(nonImages.map(function(file){_this4.cleanFileContent(file.absolute);_this4.appendInfo("\u6210\u529F cleanChildFiles() -> '".concat(file.path,"'"));return Promise.resolve()}));case 8:return _context8.abrupt("return",files);case 9:case"end":return _context8.stop()}},_callee8,this)}));function cleanChildFiles(_x9){return _cleanChildFiles.apply(this,arguments)}return cleanChildFiles}())},{key:"cleanFileContent",value:function cleanFileContent(path){this.syncDeleteFile(path)}},{key:"syncWithExistPackage",value:function(){var _syncWithExistPackage=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(){var path,paths,_iterator5,_step5,_path3,_args9=arguments;return _regenerator["default"].wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:path=_args9.length>0&&_args9[0]!==undefined?_args9[0]:"../";paths=this.findFilePathBy(path,function(each){return _lodash["default"].isEqual(each.fileNameExtension,"package.json")},"node_modules");_iterator5=_createForOfIteratorHelper(paths);try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){_path3=_step5.value;try{if(!_lodash["default"].isEqual(_path3.dirName,".."))this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT,"cd_".concat(_path3.dirName),"cd ".concat(this.getFolderPathOfSpecificPath(_path3.absolute)))}catch(error){this.appendInfo(error.message)}}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}case 4:case"end":return _context9.stop()}},_callee9,this)}));function syncWithExistPackage(){return _syncWithExistPackage.apply(this,arguments)}return syncWithExistPackage}()},{key:"packageTemplatify",value:function(){var _packageTemplatify=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee0(path,packageName){var _this5=this;var existFolders,dirPath,packagejson,classBase,ideaWorkspacePath,workspace,splited,indexOfRunManager,indexOfList;return _regenerator["default"].wrap(function _callee0$(_context0){while(1)switch(_context0.prev=_context0.next){case 0:existFolders=this.getChildPathByPath(path).map(function(each){return each.absolute.split("/").pop()});if(!this.has(existFolders,packageName)){_context0.next=3;break}throw new _index2["default"](8004," packageName ===> '".concat(packageName,"'"));case 3:dirPath="".concat(path,"/").concat(packageName);_fs["default"].mkdirSync(dirPath);_fs["default"].copyFileSync("./template/sample.babel.config.js","".concat(dirPath,"/babel.config.js"));packagejson=this.getJsonObjByFilePath("./template/sample.package.json");packagejson["name"]=packageName;this.writeFileInJSON("".concat(dirPath,"/package.json"),packagejson);this.persistByPath("".concat(dirPath,"/src"));classBase=String.format(this.getFileContextInRaw("./template/sample.src.index.js"),packageName,"\u660E\u6085",new Date);_fs["default"].writeFileSync("".concat(dirPath,"/src/index.js"),classBase);ideaWorkspacePath="".concat(this.findSpecificFolderByPath(dirPath,".idea"),"/workspace.xml");this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT,"cd_".concat(packageName),"cd ".concat(_path4["default"].resolve(dirPath)));if(_fs["default"].existsSync(ideaWorkspacePath)){workspace=this.getFileContextInRaw(ideaWorkspacePath);splited=workspace.split("\n");indexOfRunManager=_lodash["default"].findIndex(splited,function(line){return _this5.has(line,"name=\"RunManager")});this.insertToArray(splited,indexOfRunManager,"<configuration name=\"".concat(packageName,"\" \n type=\"NodeJSConfigurationType\" \n path-to-node=\"$USER_HOME$/.nvm/versions/node/v18.19.1/bin/node\" \n node-parameters=\"--require @babel/register\" \n path-to-js-file=\"").concat(_path4["default"].resolve(dirPath),"/src/index.js\" \n working-dir=\"").concat(_path4["default"].resolve(dirPath),"\" >")," <envs>"," <env name=\"self_debug\" value=\"true\" />"," <env name=\"is_node\" value=\"true\" />"," </envs>"," <method v=\"2\" />","</configuration>");indexOfList=_lodash["default"].findIndex(splited,function(line){return _lodash["default"].isEqual(_lodash["default"].trim(line),"<list>")},indexOfRunManager);this.insertToArray(splited,indexOfList," <item itemvalue=\"Node.js.".concat(packageName,"\" />"));_fs["default"].writeFileSync(ideaWorkspacePath,splited.join("\n"))}else{this.appendError("".concat(ideaWorkspacePath," not exist"))}_context0.next=17;return this.executeCommandLine("cd ".concat(_path4["default"].resolve(dirPath)," && npm install"));case 17:this.appendInfo("build ".concat(packageName," succeed!"));case 18:case"end":return _context0.stop()}},_callee0,this)}));function packageTemplatify(_x0,_x1){return _packageTemplatify.apply(this,arguments)}return packageTemplatify}()},{key:"appendInfo",value:function appendInfo(){for(var _len6=arguments.length,messages=new Array(_len6),_key6=0;_key6<_len6;_key6++){messages[_key6]=arguments[_key6]}return this.appendLog(_configerer.configerer.PATH_INFO_LOG,messages,false)}},{key:"appendError",value:function appendError(){for(var _len7=arguments.length,messages=new Array(_len7),_key7=0;_key7<_len7;_key7++){messages[_key7]=arguments[_key7]}return this.appendLog(_configerer.configerer.PATH_ERROR_LOG,messages,true)}},{key:"appendLog",value:function appendLog(path,messages){var isError=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var msg="".concat(this.getCurrentTimeFormat()," ").concat(isError?"ERROR":"LOG"," : ").concat(messages.map(this.stringifyLog).join(" ,"));if(!this.isProductionEnvironment()){var _console,_console2;isError?(_console=console).error.apply(_console,(0,_toConsumableArray2["default"])(messages)):(_console2=console).log.apply(_console2,(0,_toConsumableArray2["default"])(messages))}if(this.isPersistIntoLogFile){this.appendFile(path,msg)}}},{key:"stringifyLog",value:function stringifyLog(data){return(0,_typeof2["default"])(data)==="object"?JSON.stringify(data):String(data)}},{key:"appendFile",value:function appendFile(filePath,data){var newline=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var forceDelete=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;try{var resolvedPath=_path4["default"].resolve(filePath);if(forceDelete&&_fs["default"].existsSync(resolvedPath))_fs["default"].unlinkSync(resolvedPath);if(!_fs["default"].existsSync(resolvedPath))this.persistByPath(resolvedPath);var content="".concat(newline?"\n":"").concat(data);_fs["default"].appendFileSync(resolvedPath,content)}catch(err){throw new _index2["default"](8001,err)}}},{key:"disableLogMessagePersistent",value:function disableLogMessagePersistent(){this.isPersistIntoLogFile=false}},{key:"getLogString",value:function getLogString(datas){var _this6=this;return datas.map(function(data){return _this6.isJson(data)||_lodash["default"].isObject(data)||_lodash["default"].isArray(data)?_this6.deepFlat(data):data}).join(" ,")}},{key:"persistJsonFilePrettier",value:(function(){var _persistJsonFilePrettier=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee1(path,object){var ignoreP,_args1=arguments;return _regenerator["default"].wrap(function _callee1$(_context1){while(1)switch(_context1.prev=_context1.next){case 0:ignoreP=_args1.length>2&&_args1[2]!==undefined?_args1[2]:false;path=_path4["default"].resolve(path);this.appendFile(path,JSON.stringify(object),true,true);if(ignoreP){_context1.next=6;break}_context1.next=6;return this.prettier(path,120);case 6:case"end":return _context1.stop()}},_callee1,this)}));function persistJsonFilePrettier(_x10,_x11){return _persistJsonFilePrettier.apply(this,arguments)}return persistJsonFilePrettier}())},{key:"printCollectionToFile",value:function printCollectionToFile(collection){var fileName="./logs/__temp_".concat(this.getCurrentTimeFormat(),".txt");this.persistByPath("./logs/");this.appendFile(fileName,this.deepFlat(collection," \n\n, "));this.appendInfo("collectionToFile succeed, file name ==> ".concat(fileName))}},{key:"readFileContentByPath",value:(function(){var _readFileContentByPath=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10(path){var _cache$path;var cache,_args10=arguments;return _regenerator["default"].wrap(function _callee10$(_context10){while(1)switch(_context10.prev=_context10.next){case 0:cache=_args10.length>1&&_args10[1]!==undefined?_args10[1]:{};if(!((_cache$path=cache[path])!==null&&_cache$path!==void 0)){_context10.next=5;break}_context10.t0=_cache$path;_context10.next=8;break;case 5:_context10.next=7;return _promises["default"].readFile(path,"utf-8");case 7:_context10.t0=cache[path]=_context10.sent;case 8:return _context10.abrupt("return",_context10.t0);case 9:case"end":return _context10.stop()}},_callee10)}));function readFileContentByPath(_x12){return _readFileContentByPath.apply(this,arguments)}return readFileContentByPath}())},{key:"singleFileTemplatify",value:function singleFileTemplatify(){var path=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"./";var all=this.findFilePathByExtension(path,["js"],"node_modules");var _iterator6=_createForOfIteratorHelper(all),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var file=_step6.value;var content=this.getFileContextInRaw(file.absolute).trim();if(_lodash["default"].isEmpty(content)){this.appendInfo(file.fileName,file.absolute);var className=_lodash["default"].isEqual(file.fileName,"index")?file.dirName:file.fileName;_fs["default"].writeFileSync(file.absolute,String.format(this.getFileContextInRaw(".\n /template/s\n ample.src.index.js"),className,"\u660E\u6085",new Date))}}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}}},{key:"isFileEmpty",value:function isFileEmpty(path){var content=this.getFileContextInRaw(path);return!content||!content.trim()}},{key:"copySingleFileConservative",value:function copySingleFileConservative(destPath,latestFile){var absolute=latestFile.absolute,lastModifiedTime=latestFile.lastModifiedTime;if(!this.isPathExist(absolute)||this.isFileEmpty(absolute)){this.appendInfo("".concat(absolute," is empty file, ignore copy behavior"));return}var destExists=_fs["default"].existsSync(destPath);if(destExists&&this.getFileLastModifiedTime(destPath)>lastModifiedTime){this.appendInfo("".concat(destPath," is the latest, ignore this run"));return}if(!destExists){this.appendInfo("".concat(destPath," does not exist, safe to copy."))}this.ensureFolderExists(_path4["default"].dirname(destPath));this.copySingleFile(absolute,destPath,undefined,true)}},{key:"syncDeleteFile",value:function syncDeleteFile(path){if(_fs["default"].existsSync(path))_fs["default"].unlinkSync(path)}},{key:"getFileContextInJSON",value:function getFileContextInJSON(path){try{if(_fs["default"].existsSync(path)){return JSON.parse(_fs["default"].readFileSync(path,"utf-8"))}}catch(error){throw new _index2["default"](9999,error.message)}return{}}},{key:"getFileContextInRaw",value:function getFileContextInRaw(path){if(!_fs["default"].existsSync(path))return"";return _fs["default"].readFileSync(path,"utf-8")}},{key:"writeFileInJSON",value:function writeFileInJSON(path,param){var data=JSON.stringify(param,null,2);_fs["default"].writeFileSync(path,data)}},{key:"generatePackage",value:(function(){var _generatePackage=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(){var _this7=this;var path,deployToNPMServer,forceInstallNodeModule,packagejsons,_len8,exclude,_key8,_iterator7,_step7,_loop,_args12=arguments;return _regenerator["default"].wrap(function _callee11$(_context12){while(1)switch(_context12.prev=_context12.next){case 0:path=_args12.length>0&&_args12[0]!==undefined?_args12[0]:"./";deployToNPMServer=_args12.length>1&&_args12[1]!==undefined?_args12[1]:false;forceInstallNodeModule=_args12.length>2&&_args12[2]!==undefined?_args12[2]:true;packagejsons=this.findFilePathByExtension(path,["json"],"node_modules","release");packagejsons=_lodash["default"].filter(packagejsons,function(each){return _lodash["default"].isEqual(each.fileName,"package")});packagejsons=packagejsons.map(function(each){return _this7.getFolderPathOfSpecificPath(each.absolute)});for(_len8=_args12.length,exclude=new Array(_len8>3?_len8-3:0),_key8=3;_key8<_len8;_key8++){exclude[_key8-3]=_args12[_key8]}_iterator7=_createForOfIteratorHelper(packagejsons);_context12.prev=8;_loop=_regenerator["default"].mark(function _loop(){var path,tempFolderPath,release,pathOfPackageJson,indexFileName,templatePath,_yield$_this7$upgrade,moduleName,version;return _regenerator["default"].wrap(function _loop$(_context11){while(1)switch(_context11.prev=_context11.next){case 0:path=_step7.value;if(!_this7.isAndEquals.apply(_this7,(0,_toConsumableArray2["default"])(exclude.map(function(projectName){return function(){return!_this7.has(path,projectName)}})))){_context11.next=46;break}_context11.next=4;return _this7.generateTempFolderWithCleanSrc(path);case 4:tempFolderPath=_context11.sent;release=_this7.persistByPath(_path4["default"].join(path,"release"));_context11.next=8;return _this7.executeCommandLine("cd ".concat(path," && babel ./temp --out-dir ./release/lib --config-file ./babel.config.js"));case 8:pathOfPackageJson=_path4["default"].join(path,"package.json");_context11.prev=9;indexFileName="sample.npm.module.index.js";_this7.copySingleFile("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/".concat(indexFileName),release,"index.js",true);templatePath=_path4["default"].join(path,"template");if(!_this7.isPathExist(templatePath)){_context11.next=16;break}_context11.next=16;return _this7.copyFromFolderToDestFolder(templatePath,_this7.persistByPath(_path4["default"].join(release,"template")));case 16:if(!deployToNPMServer){_context11.next=24;break}_context11.next=19;return _this7.upgradePackageJsonVersion(pathOfPackageJson);case 19:_yield$_this7$upgrade=_context11.sent;moduleName=_yield$_this7$upgrade.moduleName;version=_yield$_this7$upgrade.version;_context11.next=24;return _this7.updateVersionOfTemplate(moduleName,version);case 24:_this7.copySingleFile(pathOfPackageJson,_path4["default"].join(release,"package.json"),undefined,true);if(!(forceInstallNodeModule||!_this7.isPathExist(_path4["default"].join(release,"node_module")))){_context11.next=30;break}_context11.next=28;return _this7.executeCommandLine("cd ".concat(release," && yarn install --production"));case 28:_context11.next=31;break;case 30:_this7.appendInfo("ignore node-module install behavior");case 31:_this7.appendInfo("build ".concat(path," succeed"));if(!deployToNPMServer){_context11.next=35;break}_context11.next=35;return _this7.executeCommandLine("cd ".concat(release," && npm publish"));case 35:_context11.next=42;break;case 37:_context11.prev=37;_context11.t0=_context11["catch"](9);_context11.next=41;return _this7.deleteSelfByPath(release,true);case 41:throw new _index2["default"](9999,"generatePackage \u5831\u932F, ".concat(_context11.t0.message));case 42:_context11.prev=42;_context11.next=45;return _this7.deleteSelfByPath(tempFolderPath,true);case 45:return _context11.finish(42);case 46:case"end":return _context11.stop()}},_loop,null,[[9,37,42,46]])});_iterator7.s();case 11:if((_step7=_iterator7.n()).done){_context12.next=15;break}return _context12.delegateYield(_loop(),"t0",13);case 13:_context12.next=11;break;case 15:_context12.next=20;break;case 17:_context12.prev=17;_context12.t1=_context12["catch"](8);_iterator7.e(_context12.t1);case 20:_context12.prev=20;_iterator7.f();return _context12.finish(20);case 23:case"end":return _context12.stop()}},_callee11,this,[[8,17,20,23]])}));function generatePackage(){return _generatePackage.apply(this,arguments)}return generatePackage}())},{key:"updateVersionOfTemplate",value:(function(){var _updateVersionOfTemplate=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee12(dependency,newVersion){var paths,_i,_paths,path,succeedOfPersistFile,json;return _regenerator["default"].wrap(function _callee12$(_context13){while(1)switch(_context13.prev=_context13.next){case 0:paths=["/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/admin.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/web.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/functions.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/sample.package.json","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/package.json"];_i=0,_paths=paths;case 2:if(!(_i<_paths.length)){_context13.next=24;break}path=_paths[_i];if(!this.isPathExist(path)){_context13.next=21;break}succeedOfPersistFile=false;json=this.getJsonObjByFilePath(path);if(!(json&&json.dependencies&&json.dependencies[dependency])){_context13.next=18;break}json.dependencies[dependency]="^".concat(newVersion);_context13.prev=9;_context13.next=12;return this.writeJsonThanPrettier(path,json);case 12:succeedOfPersistFile=true;_context13.next=18;break;case 15:_context13.prev=15;_context13.t0=_context13["catch"](9);succeedOfPersistFile=true;case 18:if(succeedOfPersistFile){_context13.next=21;break}_context13.next=21;return this.updateFileOfSpecificLine(path,function(line){return" \"".concat(dependency,"\":\"^").concat(newVersion,"\"").concat(_lodash["default"].endsWith(_lodash["default"].trim(line),",")?",":"")},function(each){return _lodash["default"].startsWith(_lodash["default"].trim(each),"\"".concat(dependency,"\""))});case 21:_i++;_context13.next=2;break;case 24:_context13.next=26;return this.copyFromFolderToDestFolder("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/","/Users/davidtu/cross-achieve/high/idea-inventer/newp/template/",true,true);case 26:case"end":return _context13.stop()}},_callee12,this,[[9,15]])}));function updateVersionOfTemplate(_x13,_x14){return _updateVersionOfTemplate.apply(this,arguments)}return updateVersionOfTemplate}())},{key:"updateFileOfSpecificLine",value:(function(){var _updateFileOfSpecificLine=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee13(pathOfFile){var contentOfUpdated,predicate,context,lines,index,_args14=arguments;return _regenerator["default"].wrap(function _callee13$(_context14){while(1)switch(_context14.prev=_context14.next){case 0:contentOfUpdated=_args14.length>1&&_args14[1]!==undefined?_args14[1]:function(line){return"updated"};predicate=_args14.length>2&&_args14[2]!==undefined?_args14[2]:function(line){return true};context=this.getFileContextInRaw(pathOfFile);lines=context.split("\n");index=lines.findIndex(predicate);if(!(index===-1)){_context14.next=7;break}return _context14.abrupt("return");case 7:lines[index]=contentOfUpdated(lines[index]);this.appendFile(pathOfFile,lines.join("\n"),true,true);_context14.next=11;return this.prettier(pathOfFile);case 11:case"end":return _context14.stop()}},_callee13,this)}));function updateFileOfSpecificLine(_x15){return _updateFileOfSpecificLine.apply(this,arguments)}return updateFileOfSpecificLine}())},{key:"writeJsonThanPrettier",value:function(){var _writeJsonThanPrettier=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee14(path,json){return _regenerator["default"].wrap(function _callee14$(_context15){while(1)switch(_context15.prev=_context15.next){case 0:this.writeFileInJSON(path,json);_context15.next=3;return this.prettier(path);case 3:case"end":return _context15.stop()}},_callee14,this)}));function writeJsonThanPrettier(_x16,_x17){return _writeJsonThanPrettier.apply(this,arguments)}return writeJsonThanPrettier}()},{key:"enrichEachPackageJson",value:(function(){var _enrichEachPackageJson=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee15(rootPath){var validNames,jsonFiles,packageFiles,_iterator8,_step8,absolute,json;return _regenerator["default"].wrap(function _callee15$(_context16){while(1)switch(_context16.prev=_context16.next){case 0:validNames=new Set(["package","admin.package","web.package","functions.package"]);jsonFiles=this.findFilePathByExtension(rootPath,["json"],"gen","node_modules","release");packageFiles=jsonFiles.filter(function(file){return validNames.has(file.fileName)});if(!(packageFiles.length===0)){_context16.next=5;break}return _context16.abrupt("return");case 5:_iterator8=_createForOfIteratorHelper(packageFiles);_context16.prev=6;_iterator8.s();case 8:if((_step8=_iterator8.n()).done){_context16.next=17;break}absolute=_step8.value.absolute;json=this.getJsonObjByFilePath(absolute);json.scripts||(json.scripts={});json.scripts.updateConfigerer="npm update configerer --save";_context16.next=15;return this.writeJsonThanPrettier(absolute,json);case 15:_context16.next=8;break;case 17:_context16.next=22;break;case 19:_context16.prev=19;_context16.t0=_context16["catch"](6);_iterator8.e(_context16.t0);case 22:_context16.prev=22;_iterator8.f();return _context16.finish(22);case 25:case"end":return _context16.stop()}},_callee15,this,[[6,19,22,25]])}));function enrichEachPackageJson(_x18){return _enrichEachPackageJson.apply(this,arguments)}return enrichEachPackageJson}())},{key:"insertShellCommand",value:function insertShellCommand(){var shellPath=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_configerer.configerer.BASE_SHELL_SCRIPT;var alias=arguments.length>1?arguments[1]:undefined;var command=arguments.length>2?arguments[2]:undefined;if(this.isStringContainInLines(this.getFileContextInRaw(shellPath),alias)){throw new _index2["default"](8007,"alias ".concat(alias," is exist"))}else{var line="alias ".concat(alias,"='").concat(command,"'");this.appendFile(shellPath,line)}}},{key:"getAdminCredential",value:function getAdminCredential(){return this.getJsonObjByFilePath("/Users/davidtu/cross-achieve/mimi/idea-inventer/firebaser/key/mimi19up-firebase-adminsdk.json")}},{key:"isEmptyFile",value:function isEmptyFile(path){return!this.isPathExist(path)||_lodash["default"].isEmpty(this.getFileContextInRaw(path).trim())}},{key:"isEmptyFolder",value:function isEmptyFolder(path){return _fs["default"].readdirSync(path).length===0}},{key:"prettier",value:(function(){var _prettier=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee16(path){var width,_args17=arguments;return _regenerator["default"].wrap(function _callee16$(_context17){while(1)switch(_context17.prev=_context17.next){case 0:width=_args17.length>1&&_args17[1]!==undefined?_args17[1]:200;_context17.next=3;return this.executeCommandLine("cd ".concat(_path4["default"].resolve(".")," && npx prettier --write ").concat(_path4["default"].resolve(path)," --print-width ").concat(width));case 3:case"end":return _context17.stop()}},_callee16,this)}));function prettier(_x19){return _prettier.apply(this,arguments)}return prettier}())},{key:"getFileLastModifiedTime",value:function getFileLastModifiedTime(path){return _fs["default"].statSync(path).mtimeMs}},{key:"getJsonObjByFilePath",value:function getJsonObjByFilePath(path){this.appendInfo("ready to json path:".concat(path));return JSON.parse(this.getFileContextInRaw(path))}},{key:"upgradePackageJsonVersion",value:(function(){var _upgradePackageJsonVersion=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee17(path){var json;return _regenerator["default"].wrap(function _callee17$(_context18){while(1)switch(_context18.prev=_context18.next){case 0:if(!_lodash["default"].isEqual("json",this.getPathInfo(path).extension)){_context18.next=8;break}json=this.getJsonObjByFilePath(path);json.version=this.getStringOfVersionIncrement(json.version);_context18.next=5;return this.writeJsonThanPrettier(path,json);case 5:return _context18.abrupt("return",{version:json.version,moduleName:json.name});case 8:throw new _index2["default"](8020,"path is not package.json, which is ".concat(path));case 9:case"end":return _context18.stop()}},_callee17,this)}));function upgradePackageJsonVersion(_x20){return _upgradePackageJsonVersion.apply(this,arguments)}return upgradePackageJsonVersion}())},{key:"reWriteJsonAttribute",value:(function(){var _reWriteJsonAttribute=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee18(filePath){var _this$getPathInfo,extension,_len9,attrs,_key9,invalidAttr,json,_i2,_attrs,attr,_args19=arguments;return _regenerator["default"].wrap(function _callee18$(_context19){while(1)switch(_context19.prev=_context19.next){case 0:_this$getPathInfo=this.getPathInfo(filePath),extension=_this$getPathInfo.extension;if(!(extension!=="json")){_context19.next=3;break}throw new _index2["default"](9999,"reWriteJsonAttribute() => path is not package.json, which is ".concat(filePath));case 3:for(_len9=_args19.length,attrs=new Array(_len9>1?_len9-1:0),_key9=1;_key9<_len9;_key9++){attrs[_key9-1]=_args19[_key9]}invalidAttr=attrs.find(function(attr){return(0,_typeof2["default"])(attr)!=="object"||attr===null});if(!invalidAttr){_context19.next=7;break}throw new _index2["default"](9999,"84451515 attr is not object, which is 'type=".concat((0,_typeof2["default"])(invalidAttr)," => ").concat(invalidAttr,"'"));case 7:json=this.getJsonObjByFilePath(filePath);for(_i2=0,_attrs=attrs;_i2<_attrs.length;_i2++){attr=_attrs[_i2];json[this.getObjectKey(attr)]=this.getObjectValue(attr)}_context19.next=11;return this.writeJsonThanPrettier(filePath,json);case 11:return _context19.abrupt("return",{version:json.version,moduleName:json.name});case 12:case"end":return _context19.stop()}},_callee18,this)}));function reWriteJsonAttribute(_x21){return _reWriteJsonAttribute.apply(this,arguments)}return reWriteJsonAttribute}())},{key:"getVersionOfPackageJson",value:function getVersionOfPackageJson(path){return this.getAttributeValueOfJson(path,"version","1.0.0")}},{key:"getAttributeValueOfJson",value:function getAttributeValueOfJson(path,key){var defaultValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(_lodash["default"].isEqual("json",this.getPathInfo(path).extension)){var _json$key;var json=this.getJsonObjByFilePath(path);return(_json$key=json[key])!==null&&_json$key!==void 0?_json$key:defaultValue}else{throw new _index2["default"](8020,"path is not package.json, which is ".concat(path))}}},{key:"getVersionOfJsFile",value:function getVersionOfJsFile(path){return this.getAttributeValueOfJsFile(path,"version","project without version notice")}},{key:"getAttributeValueOfJsFile",value:function getAttributeValueOfJsFile(path,key){var defaultValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(_lodash["default"].isEqual(this.getExtensionFromPath(path),"js")){var _source$key;var source=require(_path4["default"].resolve(path))["default"];return(_source$key=source[key])!==null&&_source$key!==void 0?_source$key:defaultValue}else{throw new _index2["default"](8020,"path is not js file, which is ".concat(path))}}},{key:"rewriteAttributeOfSourceJs",value:(function(){var _rewriteAttributeOfSourceJs=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee19(path){var _this8=this;var _len0,attrs,_key0,_loop2,_i3,_attrs2,_args21=arguments;return _regenerator["default"].wrap(function _callee19$(_context21){while(1)switch(_context21.prev=_context21.next){case 0:if(this.isPathExist(path)){_context21.next=2;break}throw new _index2["default"](9999,"4849813 ".concat(path," is not exist"));case 2:for(_len0=_args21.length,attrs=new Array(_len0>1?_len0-1:0),_key0=1;_key0<_len0;_key0++){attrs[_key0-1]=_args21[_key0]}_loop2=_regenerator["default"].mark(function _loop2(){var attr,key,value,contents,index;return _regenerator["default"].wrap(function _loop2$(_context20){while(1)switch(_context20.prev=_context20.next){case 0:attr=_attrs2[_i3];if(_lodash["default"].isObject(attr)){_context20.next=3;break}throw new _index2["default"](9999,"4984651 attr is not object, which is 'type=".concat((0,_typeof2["default"])(attr)," => ").concat(attr,"'"));case 3:key=_this8.getObjectKey(attr);value=_this8.getObjectValue(attr);contents=_this8.getFileContextInRaw(path).split("\n");index=_lodash["default"].findIndex(contents,function(each){return _lodash["default"].startsWith(_lodash["default"].trim(each),"".concat(key))});contents[index]=" ".concat(key,": '").concat(value,"',");_this8.appendFile(path,contents.join("\n"),true,true);case 9:case"end":return _context20.stop()}},_loop2)});_i3=0,_attrs2=attrs;case 5:if(!(_i3<_attrs2.length)){_context21.next=10;break}return _context21.delegateYield(_loop2(),"t0",7);case 7:_i3++;_context21.next=5;break;case 10:return _context21.abrupt("return",attrs);case 11:case"end":return _context21.stop()}},_callee19,this)}));function rewriteAttributeOfSourceJs(_x22){return _rewriteAttributeOfSourceJs.apply(this,arguments)}return rewriteAttributeOfSourceJs}())},{key:"getAnswerFromPromptQ",value:function(){var _getAnswerFromPromptQ=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee20(){var configs,_args22=arguments;return _regenerator["default"].wrap(function _callee20$(_context22){while(1)switch(_context22.prev=_context22.next){case 0:configs=_args22.length>0&&_args22[0]!==undefined?_args22[0]:[{name:"name",require:true,description:"type the name"}];_prompt["default"].start();_context22.next=4;return _prompt["default"].get(configs);case 4:return _context22.abrupt("return",_context22.sent);case 5:case"end":return _context22.stop()}},_callee20)}));function getAnswerFromPromptQ(){return _getAnswerFromPromptQ.apply(this,arguments)}return getAnswerFromPromptQ}()},{key:"getObjectFromPromptQ",value:(function(){var _getObjectFromPromptQ=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee21(){var _len1,configs,_key1,_args23=arguments;return _regenerator["default"].wrap(function _callee21$(_context23){while(1)switch(_context23.prev=_context23.next){case 0:_prompt["default"].start();for(_len1=_args23.length,configs=new Array(_len1),_key1=0;_key1<_len1;_key1++){configs[_key1]=_args23[_key1]}_context23.next=4;return _prompt["default"].get(configs);case 4:return _context23.abrupt("return",_context23.sent);case 5:case"end":return _context23.stop()}},_callee21)}));function getObjectFromPromptQ(){return _getObjectFromPromptQ.apply(this,arguments)}return getObjectFromPromptQ}())},{key:"generateTempFolderWithCleanSrc",value:(function(){var _generateTempFolderWithCleanSrc=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee22(basePath){var sourceFile,tempFolderPath,filePaths,_iterator9,_step9,tempFilePath,rawLines,trimmedLines,start,end,updatedContent;return _regenerator["default"].wrap(function _callee22$(_context24){while(1)switch(_context24.prev=_context24.next){case 0:this.appendInfo("generateTempFolderWithCleanSrc",basePath);sourceFile=_path4["default"].join(basePath,"src");tempFolderPath=_path4["default"].join(basePath,"temp");if(_fs["default"].existsSync(sourceFile)){_context24.next=5;break}return _context24.abrupt("return",tempFolderPath);case 5:this.appendInfo("generateTempFolderWithCleanSrc","source",sourceFile);this.persistByPath(tempFolderPath);_context24.next=9;return this.copyFromFolderToDestFolder(sourceFile,tempFolderPath);case 9:filePaths=this.findFilePathBy(tempFolderPath);_iterator9=_createForOfIteratorHelper(filePaths);_context24.prev=11;_iterator9.s();case 13:if((_step9=_iterator9.n()).done){_context24.next=27;break}tempFilePath=_step9.value.absolute;rawLines=this.getFileContextInRaw(tempFilePath).split("\n");trimmedLines=rawLines.map(function(line){return line.trim()});start=trimmedLines.findIndex(function(line){return line.startsWith("if (configerer.DEBUG_MODE)")});end=trimmedLines.lastIndexOf("}");if(!(start>=0&&end>start)){_context24.next=25;break}rawLines.splice(start,end-start+1);updatedContent=rawLines.join("\n");this.appendFile(tempFilePath,updatedContent,true,true);_context24.next=25;return this.executeCommandLine("cd ".concat(_path4["default"].dirname(tempFilePath)," && npx prettier --write \"").concat(tempFilePath,"\""));case 25:_context24.next=13;break;case 27:_context24.next=32;break;case 29:_context24.prev=29;_context24.t0=_context24["catch"](11);_iterator9.e(_context24.t0);case 32:_context24.prev=32;_iterator9.f();return _context24.finish(32);case 35:return _context24.abrupt("return",tempFolderPath);case 36:case"end":return _context24.stop()}},_callee22,this,[[11,29,32,35]])}));function generateTempFolderWithCleanSrc(_x23){return _generateTempFolderWithCleanSrc.apply(this,arguments)}return generateTempFolderWithCleanSrc}())},{key:"rewriteFile2File",value:function rewriteFile2File(from,to){var content=this.getFileContextInRaw(from);if(!content.trim())throw new _index2["default"](9999,"".concat(from," \u70BA\u7A7A\uFF0C\u907F\u514D\u8986\u84CB"));this.appendFile(to,content,true,true);this.appendInfo("rewrite from:".concat(from," => to:").concat(to," \u6210\u529F"))}},{key:"getStringOfHeadOfFile",value:function getStringOfHeadOfFile(path){if(this.isPathExist(path)){var context=this.getFileContextInRaw(path);return _lodash["default"].head(context.split("\n"))}return""}},{key:"isFileEditSucceed",value:function isFileEditSucceed(filePath){if(!this.isPathExist(filePath))return false;var file=this.getPathInfo(filePath);var context=this.getFileContextInRaw(filePath).trim();if(context===""){this.appendInfo("74985465 path ".concat(file.path," is empty file, file would not persist"));return false}try{var firstLine=context.split("\n")[0];var match=firstLine.match(/const\s+([a-zA-Z_]\w*)\s*=\s*(true|false)\s*;?/);if(!match||_lodash["default"].size(match)<3)return false;var editValue=match[2]==="true";if(editValue===true){return true}}catch(error){this.appendError("66445411 ".concat(error.message));return false}return false}},{key:"joinRespectingDot",value:function joinRespectingDot(){var _args$,_args$2;for(var _len10=arguments.length,args=new Array(_len10),_key10=0;_key10<_len10;_key10++){args[_key10]=arguments[_key10]}var shouldHaveDotSlash=(_args$=args[0])===null||_args$===void 0?void 0:_args$.startsWith("./");var cleanArgs=(_args$2=args[0])!==null&&_args$2!==void 0&&_args$2.startsWith("./")?[args[0].slice(2)].concat((0,_toConsumableArray2["default"])(args.slice(1))):args;var joined=_path4["default"].join.apply(_path4["default"],(0,_toConsumableArray2["default"])(cleanArgs));return shouldHaveDotSlash&&!_path4["default"].isAbsolute(joined)?"./".concat(joined):joined}}])}(_index["default"]);var _default=exports["default"]=NodeUtiller;
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _path2=_interopRequireDefault(require("path"));var _fs=_interopRequireDefault(require("fs"));var _promises=_interopRequireDefault(require("fs/promises"));var _lodash=_interopRequireDefault(require("lodash"));var _child_process=_interopRequireDefault(require("child_process"));var _configerer=require("configerer");var _index=_interopRequireDefault(require("./index"));var _index2=_interopRequireDefault(require("../exceptioner/index"));var _pdfParse=_interopRequireDefault(require("pdf-parse"));var _del=_interopRequireDefault(require("del"));var _fsExtra=_interopRequireDefault(require("fs-extra"));var _prompt=_interopRequireDefault(require("prompt"));class NodeUtiller extends _index.default{constructor(...args){super(...args);(0,_defineProperty2.default)(this,"isPersistIntoLogFile",true);(0,_defineProperty2.default)(this,"findFilePathByExtension",(rootpath,_extension=[],...exclude)=>{const reg=new RegExp(`^[^\.].+.(${_lodash.default.join(_extension,"|")})$`);return this.findFilePathBy(rootpath,item=>{return reg.test(item.fileNameExtension)},...exclude)});(0,_defineProperty2.default)(this,"executeCommandLine",async command=>{const self=this;this.appendInfo(`執行腳本 ${command}`);return new Promise(function(resolve,reject){_child_process.default.exec(command,(error,stdout,stderr)=>{self.appendInfo(`${stdout}`);self.appendInfo(`${stderr}`);if(error){self.appendError(`執行錯誤: ${error}`);reject(error);return}resolve(stdout.trim())})})});(0,_defineProperty2.default)(this,"getPathAfterSpecificFolder",(fullPath,folder="src")=>{const parts=fullPath.split(_path2.default.sep);for(let i=parts.length-1;i>=0;i--){if(parts[i]===folder){return"/"+parts.slice(i+1).join("/")}}return""});(0,_defineProperty2.default)(this,"getPathAfterSrc",fullPath=>{return this.getPathAfterSpecificFolder(fullPath)})}findSpecificFolderByPath(path,folderName){const absolute=_path2.default.resolve(path);const parts=absolute.split(_path2.default.sep);while(parts.length){const joined=_path2.default.join(...parts,folderName);if(_fs.default.existsSync(joined))return joined;parts.pop()}return null}async getPDFText(path){let dataBuffer=_fs.default.readFileSync(path);return(0,_pdfParse.default)(dataBuffer).then(data=>{return data})}printf(){this.appendInfo("i can use in node.js only yo yo")}findFilePathBy(path,predicate=()=>true,...excludes){if(!_fs.default.existsSync(path))return[];const result=[];const entries=_fs.default.readdirSync(path,{withFileTypes:true});for(const entry of entries){if(excludes.includes(entry.name))continue;const fullPath=_path2.default.join(path,entry.name);if(entry.isDirectory()){result.push(...this.findFilePathBy(fullPath,predicate,...excludes))}else if(entry.isFile()){const info=this.getPathInfo(fullPath);if(predicate(info))result.push(info)}}return result}isPathExist(path){return _fs.default.existsSync(path)}renameFile(path,newName="fileName"){if(!this.isFile(path)||!newName){this.appendError(`renameFile 錯誤, path: ${path}, newName: ${newName}`);return}const dir=_path2.default.dirname(path);const ext=_path2.default.extname(path);const newPath=_path2.default.join(dir,`${newName}${ext}`);_fs.default.renameSync(path,newPath)}getPathInfo(path){const absolute=_path2.default.resolve(path);const obj={path,absolute,isFile:false,isDirectory:true,dirName:undefined,folderName:undefined,dirPath:undefined,folderPath:undefined,extension:undefined,fileName:undefined,fileNameExtension:undefined,lastModifiedTime:undefined,name:undefined};if(this.isFile(absolute)){obj["extension"]=absolute.split(".").pop();const fileNameStrings=absolute.split("/").pop().split(".");fileNameStrings.pop();obj["fileName"]=fileNameStrings.join(".");obj["name"]=fileNameStrings.join(".");obj["dirName"]=_lodash.default.nth(absolute.split("/"),-2);obj["folderName"]=_lodash.default.nth(absolute.split("/"),-2);obj["isFile"]=true;obj["dirPath"]=this.getFolderPathOfSpecificPath(absolute);obj["folderPath"]=this.getFolderPathOfSpecificPath(absolute);obj["isDirectory"]=false;obj["fileNameExtension"]=`${obj.fileName}.${obj.extension}`;obj["lastModifiedTime"]=this.getFileLastModifiedTime(absolute)}if(this.isDirectory(absolute)){obj["dirName"]=absolute.split("/").pop()}return obj}syncExecuteCommandLine(command){const self=this;this.appendInfo(`執行腳本 ${command}`);_child_process.default.exec(`${command}`,(error,stdout,stderr)=>{self.appendInfo(`${stdout}`);self.appendInfo(`${stderr}`);if(error!==null){self.appendError(`exec error: ${error}`)}})}persistByPath(targetPath){const isAbsolute=_path2.default.isAbsolute(targetPath);const parts=targetPath.split("/").filter(Boolean);const lastPart=parts[parts.length-1];const isFile=_path2.default.extname(lastPart)!=="";let current=isAbsolute?_path2.default.sep:"";for(let i=0;i<parts.length;i++){current=_path2.default.join(current,parts[i]);if(!_fs.default.existsSync(current)){if(i===parts.length-1&&isFile){_fs.default.writeFileSync(current,"")}else{_fs.default.mkdirSync(current,{recursive:false})}}}return _path2.default.resolve(targetPath)}async copyFromFolderToDestFolder(from,dest,override=true,preserveTimestamps=false,filter=()=>true){if(!_fs.default.existsSync(from)||!_fs.default.existsSync(from))throw new _index2.default(8009,`${from} or ${dest} is not exist!`);this.appendInfo(`正在複製ing ${from}/* => ${dest}/* succeed`);_fsExtra.default.copySync(from,dest,{preserveTimestamps,override,filter});this.appendInfo(`複製成功 ${from}/* => ${dest}/* succeed`)}cleanAllFiles(dir){if(this.isDirectory(dir)){this.appendInfo(`準備清除底下的所有 ${dir}`);_fsExtra.default.emptyDirSync(dir);this.appendInfo(`成功清除底下的所有 ${dir}`)}}async deleteSelfByPath(path,force){if(_fs.default.existsSync(path)){this.appendInfo(`準備刪掉 ${path},{force:${force}}`);await(0,_del.default)(path,{force});this.appendInfo(`成功刪掉了 ${path}`)}}async deleteFileOrFolder(path){this.appendInfo(`刪掉了 ${path}`);await(0,_del.default)(path)}async deleteChildByPath(path,force=false){const pathes=this.getChildPathByPath(path);for(const path of pathes){await this.deleteSelfByPath(path.absolute,force)}}getFileCountsOfFolder(path){if(this.isDirectory(path)){return _fs.default.readdirSync(path).length}return-1}async reinstallNodeModules(path="../",...exclude){const ex=[...exclude,"node_modules","utiller","configerer"];const paths=this.findFilePathBy(path,each=>_lodash.default.isEqual(each.fileNameExtension,"package.json"),...ex);for(const _json of paths){const path_module_root=this.getFileDirPath(_json.absolute);const path_gen_node_module=`${path_module_root}node_modules`;const path_lock_json=`${path_module_root}package-lock.json`;await(0,_del.default)(path_lock_json);this.appendInfo(`刪掉了 ${path_lock_json}`);await(0,_del.default)(path_gen_node_module);this.appendInfo(`刪掉了 ${path_gen_node_module}`)}for(const _json of paths){const path_module_root=this.getFileDirPath(_json.absolute);const path_gen_node_module=`${path_module_root}node_modules`;if(!_fs.default.existsSync(path_gen_node_module)){await this.executeCommandLine(`cd ${path_module_root} && npm install`)}}}getNamesOfFolderChild(path){return this.getChildPathByPath(path).filter(p=>p.isDirectory).map(p=>p.dirName)}getChildPathByPath(_path){try{const files=_fs.default.readdirSync(_path);return files.map(file=>this.getPathInfo(_path2.default.join(_path,file)))}catch(error){throw new _index2.default(8002,error)}}copySingleFile(from,dest,fileName,force=false){const destination=fileName&&fileName.trim()?_path2.default.join(dest,fileName):dest;if(_fs.default.existsSync(destination)&&!force){throw new _index2.default(8006,destination)}_fs.default.copyFileSync(from,destination)}ensureFolderExists(folderPath){const resolved=_path2.default.resolve(folderPath);if(_fs.default.existsSync(resolved))return;_fs.default.mkdirSync(resolved,{recursive:true})}getNodeEnvVariable(key,defaultValue=undefined){const value=process.env[key];return value===undefined?defaultValue:value}isDirectory(path){if(!this.isPathExist(path))return false;return _fs.default.lstatSync(path).isDirectory()}isFile(path){if(!this.isPathExist(path))return false;return _fs.default.lstatSync(path).isFile()}isImageFile(file){return["svg","png","jpg","jpeg"].includes(file.extension)}async cleanChildFiles(path,predicate=()=>true,...exclude){if(!_fs.default.existsSync(path))return false;const files=this.findFilePathBy(path,predicate,...exclude);const nonImages=files.filter(file=>!this.isImageFile(file));await Promise.allSettled(nonImages.map(file=>{this.cleanFileContent(file.absolute);this.appendInfo(`成功 cleanChildFiles() -> '${file.path}'`);return Promise.resolve()}));return files}cleanFileContent(path){this.syncDeleteFile(path)}async syncWithExistPackage(path="../"){const paths=this.findFilePathBy(path,each=>_lodash.default.isEqual(each.fileNameExtension,"package.json"),"node_modules");for(let path of paths){try{if(!_lodash.default.isEqual(path.dirName,".."))this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT,`cd_${path.dirName}`,`cd ${this.getFolderPathOfSpecificPath(path.absolute)}`)}catch(error){this.appendInfo(error.message)}}}async packageTemplatify(path,packageName){const existFolders=this.getChildPathByPath(path).map(each=>each.absolute.split("/").pop());if(this.has(existFolders,packageName)){throw new _index2.default(8004,` packageName ===> '${packageName}'`)}const dirPath=`${path}/${packageName}`;_fs.default.mkdirSync(dirPath);_fs.default.copyFileSync("./template/sample.babel.config.js",`${dirPath}/babel.config.js`);const packagejson=this.getJsonObjByFilePath("./template/sample.package.json");packagejson["name"]=packageName;this.writeFileInJSON(`${dirPath}/package.json`,packagejson);this.persistByPath(`${dirPath}/src`);const classBase=String.format(this.getFileContextInRaw(`./template/sample.src.index.js`),packageName,"\u660E\u6085",new Date);_fs.default.writeFileSync(`${dirPath}/src/index.js`,classBase);const ideaWorkspacePath=`${this.findSpecificFolderByPath(dirPath,".idea")}/workspace.xml`;this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT,`cd_${packageName}`,`cd ${_path2.default.resolve(dirPath)}`);if(_fs.default.existsSync(ideaWorkspacePath)){const workspace=this.getFileContextInRaw(ideaWorkspacePath);const splited=workspace.split("\n");const indexOfRunManager=_lodash.default.findIndex(splited,line=>this.has(line,"name=\"RunManager"));this.insertToArray(splited,indexOfRunManager,`<configuration name="${packageName}"
2
+ type="NodeJSConfigurationType"
3
+ path-to-node="$USER_HOME$/.nvm/versions/node/v18.19.1/bin/node"
4
+ node-parameters="--require @babel/register"
5
+ path-to-js-file="${_path2.default.resolve(dirPath)}/src/index.js"
6
+ working-dir="${_path2.default.resolve(dirPath)}" >`,` <envs>`,` <env name="self_debug" value="true" />`,` <env name="is_node" value="true" />`,` </envs>`,` <method v="2" />`,`</configuration>`);const indexOfList=_lodash.default.findIndex(splited,line=>_lodash.default.isEqual(_lodash.default.trim(line),`<list>`),indexOfRunManager);this.insertToArray(splited,indexOfList,` <item itemvalue="Node.js.${packageName}" />`);_fs.default.writeFileSync(ideaWorkspacePath,splited.join("\n"))}else{this.appendError(`${ideaWorkspacePath} not exist`)}await this.executeCommandLine(`cd ${_path2.default.resolve(dirPath)} && npm install`);this.appendInfo(`build ${packageName} succeed!`)}appendInfo(...messages){return this.appendLog(_configerer.configerer.PATH_INFO_LOG,messages,false)}appendError(...messages){return this.appendLog(_configerer.configerer.PATH_ERROR_LOG,messages,true)}appendLog(path,messages,isError=false){const msg=`${this.getCurrentTimeFormat()} ${isError?"ERROR":"LOG"} : ${messages.map(this.stringifyLog).join(" ,")}`;if(!this.isProductionEnvironment()){isError?console.error(...messages):console.log(...messages)}if(this.isPersistIntoLogFile){this.appendFile(path,msg)}}stringifyLog(data){return typeof data==="object"?JSON.stringify(data):String(data)}appendFile(filePath,data,newline=true,forceDelete=false){try{const resolvedPath=_path2.default.resolve(filePath);if(forceDelete&&_fs.default.existsSync(resolvedPath))_fs.default.unlinkSync(resolvedPath);if(!_fs.default.existsSync(resolvedPath))this.persistByPath(resolvedPath);const content=`${newline?"\n":""}${data}`;_fs.default.appendFileSync(resolvedPath,content)}catch(err){throw new _index2.default(8001,err)}}disableLogMessagePersistent(){this.isPersistIntoLogFile=false}getLogString(datas){return datas.map(data=>this.isJson(data)||_lodash.default.isObject(data)||_lodash.default.isArray(data)?this.deepFlat(data):data).join(" ,")}async persistJsonFilePrettier(path,object,ignoreP=false){path=_path2.default.resolve(path);this.appendFile(path,JSON.stringify(object),true,true);if(!ignoreP)await this.prettier(path,120)}printCollectionToFile(collection){const fileName=`./logs/__temp_${this.getCurrentTimeFormat()}.txt`;this.persistByPath(`./logs/`);this.appendFile(fileName,this.deepFlat(collection,` \n\n, `));this.appendInfo(`collectionToFile succeed, file name ==> ${fileName}`)}async readFileContentByPath(path,cache={}){return cache[path]??(cache[path]=await _promises.default.readFile(path,"utf-8"))}singleFileTemplatify(path="./"){const all=this.findFilePathByExtension(path,["js"],"node_modules");for(const file of all){const content=this.getFileContextInRaw(file.absolute).trim();if(_lodash.default.isEmpty(content)){this.appendInfo(file.fileName,file.absolute);const className=_lodash.default.isEqual(file.fileName,"index")?file.dirName:file.fileName;_fs.default.writeFileSync(file.absolute,String.format(this.getFileContextInRaw(`.
7
+ /template/s
8
+ ample.src.index.js`),className,"\u660E\u6085",new Date))}}}isFileEmpty(path){const content=this.getFileContextInRaw(path);return!content||!content.trim()}copySingleFileConservative(destPath,latestFile){const{absolute,lastModifiedTime}=latestFile;if(!this.isPathExist(absolute)||this.isFileEmpty(absolute)){this.appendInfo(`${absolute} is empty file, ignore copy behavior`);return}const destExists=_fs.default.existsSync(destPath);if(destExists&&this.getFileLastModifiedTime(destPath)>lastModifiedTime){this.appendInfo(`${destPath} is the latest, ignore this run`);return}if(!destExists){this.appendInfo(`${destPath} does not exist, safe to copy.`)}this.ensureFolderExists(_path2.default.dirname(destPath));this.copySingleFile(absolute,destPath,undefined,true)}syncDeleteFile(path){if(_fs.default.existsSync(path))_fs.default.unlinkSync(path)}getFileContextInJSON(path){try{if(_fs.default.existsSync(path)){return JSON.parse(_fs.default.readFileSync(path,"utf-8"))}}catch(error){throw new _index2.default(9999,error.message)}return{}}getFileContextInRaw(path){if(!_fs.default.existsSync(path))return"";return _fs.default.readFileSync(path,"utf-8")}writeFileInJSON(path,param){let data=JSON.stringify(param,null,2);_fs.default.writeFileSync(path,data)}async generatePackage(path="./",deployToNPMServer=false,forceInstallNodeModule=true,...exclude){let packagejsons=this.findFilePathByExtension(path,["json"],"node_modules","release");packagejsons=_lodash.default.filter(packagejsons,each=>_lodash.default.isEqual(each.fileName,"package"));packagejsons=packagejsons.map(each=>this.getFolderPathOfSpecificPath(each.absolute));for(const path of packagejsons){if(this.isAndEquals(...exclude.map(projectName=>()=>!this.has(path,projectName)))){const tempFolderPath=await this.generateTempFolderWithCleanSrc(path);const release=this.persistByPath(_path2.default.join(path,"release"));await this.executeCommandLine(`cd ${path} && babel ./temp --out-dir ./release/lib --config-file ./babel.config.js`);const pathOfPackageJson=_path2.default.join(path,"package.json");try{const indexFileName="sample.npm.module.index.js";this.copySingleFile(`/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/${indexFileName}`,release,"index.js",true);const templatePath=_path2.default.join(path,"template");if(this.isPathExist(templatePath)){await this.copyFromFolderToDestFolder(templatePath,this.persistByPath(_path2.default.join(release,"template")))}if(deployToNPMServer){const{moduleName,version}=await this.upgradePackageJsonVersion(pathOfPackageJson);await this.updateVersionOfTemplate(moduleName,version)}this.copySingleFile(pathOfPackageJson,_path2.default.join(release,"package.json"),undefined,true);if(forceInstallNodeModule||!this.isPathExist(_path2.default.join(release,"node_module"))){await this.executeCommandLine(`cd ${release} && yarn install --production`)}else{this.appendInfo(`ignore node-module install behavior`)}this.appendInfo(`build ${path} succeed`);if(deployToNPMServer){await this.executeCommandLine(`cd ${release} && npm publish`)}}catch(error){await this.deleteSelfByPath(release,true);throw new _index2.default(9999,`generatePackage 報錯, ${error.message}`)}finally{await this.deleteSelfByPath(tempFolderPath,true)}}}}async updateVersionOfTemplate(dependency,newVersion){const paths=["/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/admin.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/web.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/functions.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/sample.package.json","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/package.json"];for(const path of paths){if(this.isPathExist(path)){let succeedOfPersistFile=false;const json=this.getJsonObjByFilePath(path);if(json&&json.dependencies&&json.dependencies[dependency]){json.dependencies[dependency]=`^${newVersion}`;try{await this.writeJsonThanPrettier(path,json);succeedOfPersistFile=true}catch(error){succeedOfPersistFile=true}}if(!succeedOfPersistFile){await this.updateFileOfSpecificLine(path,line=>` "${dependency}":"^${newVersion}"${_lodash.default.endsWith(_lodash.default.trim(line),",")?",":""}`,each=>_lodash.default.startsWith(_lodash.default.trim(each),`"${dependency}"`))}}}await this.copyFromFolderToDestFolder("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/","/Users/davidtu/cross-achieve/high/idea-inventer/newp/template/",true,true)}async updateFileOfSpecificLine(pathOfFile,contentOfUpdated=line=>"updated",predicate=line=>true){const context=this.getFileContextInRaw(pathOfFile);const lines=context.split("\n");const index=lines.findIndex(predicate);if(index===-1)return;lines[index]=contentOfUpdated(lines[index]);this.appendFile(pathOfFile,lines.join("\n"),true,true);await this.prettier(pathOfFile)}async writeJsonThanPrettier(path,json){this.writeFileInJSON(path,json);await this.prettier(path)}async enrichEachPackageJson(rootPath){const validNames=new Set(["package","admin.package","web.package","functions.package"]);const jsonFiles=this.findFilePathByExtension(rootPath,["json"],"gen","node_modules","release");const packageFiles=jsonFiles.filter(file=>validNames.has(file.fileName));if(packageFiles.length===0)return;for(const{absolute}of packageFiles){const json=this.getJsonObjByFilePath(absolute);json.scripts||={};json.scripts.updateConfigerer="npm update configerer --save";await this.writeJsonThanPrettier(absolute,json)}}insertShellCommand(shellPath=_configerer.configerer.BASE_SHELL_SCRIPT,alias,command){if(this.isStringContainInLines(this.getFileContextInRaw(shellPath),alias)){throw new _index2.default(8007,`alias ${alias} is exist`)}else{const line=`alias ${alias}='${command}'`;this.appendFile(shellPath,line)}}getAdminCredential(){return this.getJsonObjByFilePath("/Users/davidtu/cross-achieve/mimi/idea-inventer/firebaser/key/mimi19up-firebase-adminsdk.json")}isEmptyFile(path){return!this.isPathExist(path)||_lodash.default.isEmpty(this.getFileContextInRaw(path).trim())}isEmptyFolder(path){return _fs.default.readdirSync(path).length===0}async prettier(path,width=200){await this.executeCommandLine(`cd ${_path2.default.resolve(".")} && npx prettier --write ${_path2.default.resolve(path)} --print-width ${width}`)}getFileLastModifiedTime(path){return _fs.default.statSync(path).mtimeMs}getJsonObjByFilePath(path){this.appendInfo(`ready to json path:${path}`);return JSON.parse(this.getFileContextInRaw(path))}async upgradePackageJsonVersion(path){if(_lodash.default.isEqual("json",this.getPathInfo(path).extension)){const json=this.getJsonObjByFilePath(path);json.version=this.getStringOfVersionIncrement(json.version);await this.writeJsonThanPrettier(path,json);return{version:json.version,moduleName:json.name}}else{throw new _index2.default(8020,`path is not package.json, which is ${path}`)}}async reWriteJsonAttribute(filePath,...attrs){const{extension}=this.getPathInfo(filePath);if(extension!=="json"){throw new _index2.default(9999,`reWriteJsonAttribute() => path is not package.json, which is ${filePath}`)}const invalidAttr=attrs.find(attr=>typeof attr!=="object"||attr===null);if(invalidAttr){throw new _index2.default(9999,`84451515 attr is not object, which is 'type=${typeof invalidAttr} => ${invalidAttr}'`)}const json=this.getJsonObjByFilePath(filePath);for(const attr of attrs){json[this.getObjectKey(attr)]=this.getObjectValue(attr)}await this.writeJsonThanPrettier(filePath,json);return{version:json.version,moduleName:json.name}}getVersionOfPackageJson(path){return this.getAttributeValueOfJson(path,"version","1.0.0")}getAttributeValueOfJson(path,key,defaultValue=undefined){if(_lodash.default.isEqual("json",this.getPathInfo(path).extension)){const json=this.getJsonObjByFilePath(path);return json[key]??defaultValue}else{throw new _index2.default(8020,`path is not package.json, which is ${path}`)}}getVersionOfJsFile(path){return this.getAttributeValueOfJsFile(path,"version","project without version notice")}getAttributeValueOfJsFile(path,key,defaultValue=undefined){if(_lodash.default.isEqual(this.getExtensionFromPath(path),"js")){const source=require(_path2.default.resolve(path)).default;return source[key]??defaultValue}else{throw new _index2.default(8020,`path is not js file, which is ${path}`)}}async rewriteAttributeOfSourceJs(path,...attrs){if(!this.isPathExist(path)){throw new _index2.default(9999,`4849813 ${path} is not exist`)}for(const attr of attrs){if(!_lodash.default.isObject(attr)){throw new _index2.default(9999,`4984651 attr is not object, which is 'type=${typeof attr} => ${attr}'`)}const key=this.getObjectKey(attr);const value=this.getObjectValue(attr);const contents=this.getFileContextInRaw(path).split(`\n`);const index=_lodash.default.findIndex(contents,each=>_lodash.default.startsWith(_lodash.default.trim(each),`${key}`));contents[index]=` ${key}: '${value}',`;this.appendFile(path,contents.join(`\n`),true,true)}return attrs}async getAnswerFromPromptQ(configs=[{name:"name",require:true,description:"type the name"}]){_prompt.default.start();return await _prompt.default.get(configs)}async getObjectFromPromptQ(...configs){_prompt.default.start();return await _prompt.default.get(configs)}async generateTempFolderWithCleanSrc(basePath){this.appendInfo("generateTempFolderWithCleanSrc",basePath);const sourceFile=_path2.default.join(basePath,"src");const tempFolderPath=_path2.default.join(basePath,"temp");if(!_fs.default.existsSync(sourceFile))return tempFolderPath;this.appendInfo("generateTempFolderWithCleanSrc","source",sourceFile);this.persistByPath(tempFolderPath);await this.copyFromFolderToDestFolder(sourceFile,tempFolderPath);const filePaths=this.findFilePathBy(tempFolderPath);for(const{absolute:tempFilePath}of filePaths){const rawLines=this.getFileContextInRaw(tempFilePath).split("\n");const trimmedLines=rawLines.map(line=>line.trim());const start=trimmedLines.findIndex(line=>line.startsWith("if (configerer.DEBUG_MODE)"));const end=trimmedLines.lastIndexOf("}");if(start>=0&&end>start){rawLines.splice(start,end-start+1);const updatedContent=rawLines.join("\n");this.appendFile(tempFilePath,updatedContent,true,true);await this.executeCommandLine(`cd ${_path2.default.dirname(tempFilePath)} && npx prettier --write "${tempFilePath}"`)}}return tempFolderPath}rewriteFile2File(from,to){const content=this.getFileContextInRaw(from);if(!content.trim())throw new _index2.default(9999,`${from} 為空,避免覆蓋`);this.appendFile(to,content,true,true);this.appendInfo(`rewrite from:${from} => to:${to} 成功`)}getStringOfHeadOfFile(path){if(this.isPathExist(path)){const context=this.getFileContextInRaw(path);return _lodash.default.head(context.split("\n"))}return""}isFileEditSucceed(filePath){if(!this.isPathExist(filePath))return false;const file=this.getPathInfo(filePath);const context=this.getFileContextInRaw(filePath).trim();if(context===""){this.appendInfo(`74985465 path ${file.path} is empty file, file would not persist`);return false}try{const firstLine=context.split("\n")[0];const match=firstLine.match(/const\s+([a-zA-Z_]\w*)\s*=\s*(true|false)\s*;?/);if(!match||_lodash.default.size(match)<3)return false;const editValue=match[2]==="true";if(editValue===true){return true}}catch(error){this.appendError(`66445411 ${error.message}`);return false}return false}joinRespectingDot(...args){const shouldHaveDotSlash=args[0]?.startsWith("./");const cleanArgs=args[0]?.startsWith("./")?[args[0].slice(2),...args.slice(1)]:args;const joined=_path2.default.join(...cleanArgs);return shouldHaveDotSlash&&!_path2.default.isAbsolute(joined)?`./${joined}`:joined}}var _default=exports.default=NodeUtiller;
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.count=count;exports.generate=generate;exports.wordList=void 0;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _seedrandom=_interopRequireDefault(require("seedrandom"));var _excluded=["minLength","maxLength"];var wordList=exports.wordList=["ability","able","aboard","about","above","accept","accident","according","account","accurate","acres","across","act","action","active","activity","actual","actually","add","addition","additional","adjective","adult","adventure","advice","affect","afraid","after","afternoon","again","against","age","ago","agree","ahead","aid","air","airplane","alike","alive","all","allow","almost","alone","along","aloud","alphabet","already","also","although","am","among","amount","ancient","angle","angry","animal","announced","another","answer","ants","any","anybody","anyone","anything","anyway","anywhere","apart","apartment","appearance","apple","applied","appropriate","are","area","arm","army","around","arrange","arrangement","arrive","arrow","art","article","as","aside","ask","asleep","at","ate","atmosphere","atom","atomic","attached","attack","attempt","attention","audience","author","automobile","available","average","avoid","aware","away","baby","back","bad","badly","bag","balance","ball","balloon","band","bank","bar","bare","bark","barn","base","baseball","basic","basis","basket","bat","battle","be","bean","bear","beat","beautiful","beauty","became","because","become","becoming","bee","been","before","began","beginning","begun","behavior","behind","being","believed","bell","belong","below","belt","bend","beneath","bent","beside","best","bet","better","between","beyond","bicycle","bigger","biggest","bill","birds","birth","birthday","bit","bite","black","blank","blanket","blew","blind","block","blood","blow","blue","board","boat","body","bone","book","border","born","both","bottle","bottom","bound","bow","bowl","box","boy","brain","branch","brass","brave","bread","break","breakfast","breath","breathe","breathing","breeze","brick","bridge","brief","bright","bring","broad","broke","broken","brother","brought","brown","brush","buffalo","build","building","built","buried","burn","burst","bus","bush","business","busy","but","butter","buy","by","cabin","cage","cake","call","calm","came","camera","camp","can","canal","cannot","cap","capital","captain","captured","car","carbon","card","care","careful","carefully","carried","carry","case","cast","castle","cat","catch","cattle","caught","cause","cave","cell","cent","center","central","century","certain","certainly","chain","chair","chamber","chance","change","changing","chapter","character","characteristic","charge","chart","check","cheese","chemical","chest","chicken","chief","child","children","choice","choose","chose","chosen","church","circle","circus","citizen","city","class","classroom","claws","clay","clean","clear","clearly","climate","climb","clock","close","closely","closer","cloth","clothes","clothing","cloud","club","coach","coal","coast","coat","coffee","cold","collect","college","colony","color","column","combination","combine","come","comfortable","coming","command","common","community","company","compare","compass","complete","completely","complex","composed","composition","compound","concerned","condition","congress","connected","consider","consist","consonant","constantly","construction","contain","continent","continued","contrast","control","conversation","cook","cookies","cool","copper","copy","corn","corner","correct","correctly","cost","cotton","could","count","country","couple","courage","course","court","cover","cow","cowboy","crack","cream","create","creature","crew","crop","cross","crowd","cry","cup","curious","current","curve","customs","cut","cutting","daily","damage","dance","danger","dangerous","dark","darkness","date","daughter","dawn","day","dead","deal","dear","death","decide","declared","deep","deeply","deer","definition","degree","depend","depth","describe","desert","design","desk","detail","determine","develop","development","diagram","diameter","did","die","differ","difference","different","difficult","difficulty","dig","dinner","direct","direction","directly","dirt","dirty","disappear","discover","discovery","discuss","discussion","disease","dish","distance","distant","divide","division","do","doctor","does","dog","doing","doll","dollar","done","donkey","door","dot","double","doubt","down","dozen","draw","drawn","dream","dress","drew","dried","drink","drive","driven","driver","driving","drop","dropped","drove","dry","duck","due","dug","dull","during","dust","duty","each","eager","ear","earlier","early","earn","earth","easier","easily","east","easy","eat","eaten","edge","education","effect","effort","egg","eight","either","electric","electricity","element","elephant","eleven","else","empty","end","enemy","energy","engine","engineer","enjoy","enough","enter","entire","entirely","environment","equal","equally","equator","equipment","escape","especially","essential","establish","even","evening","event","eventually","ever","every","everybody","everyone","everything","everywhere","evidence","exact","exactly","examine","example","excellent","except","exchange","excited","excitement","exciting","exclaimed","exercise","exist","expect","experience","experiment","explain","explanation","explore","express","expression","extra","eye","face","facing","fact","factor","factory","failed","fair","fairly","fall","fallen","familiar","family","famous","far","farm","farmer","farther","fast","fastened","faster","fat","father","favorite","fear","feathers","feature","fed","feed","feel","feet","fell","fellow","felt","fence","few","fewer","field","fierce","fifteen","fifth","fifty","fight","fighting","figure","fill","film","final","finally","find","fine","finest","finger","finish","fire","fireplace","firm","first","fish","five","fix","flag","flame","flat","flew","flies","flight","floating","floor","flow","flower","fly","fog","folks","follow","food","foot","football","for","force","foreign","forest","forget","forgot","forgotten","form","former","fort","forth","forty","forward","fought","found","four","fourth","fox","frame","free","freedom","frequently","fresh","friend","friendly","frighten","frog","from","front","frozen","fruit","fuel","full","fully","fun","function","funny","fur","furniture","further","future","gain","game","garage","garden","gas","gasoline","gate","gather","gave","general","generally","gentle","gently","get","getting","giant","gift","girl","give","given","giving","glad","glass","globe","go","goes","gold","golden","gone","good","goose","got","government","grabbed","grade","gradually","grain","grandfather","grandmother","graph","grass","gravity","gray","great","greater","greatest","greatly","green","grew","ground","group","grow","grown","growth","guard","guess","guide","gulf","gun","habit","had","hair","half","halfway","hall","hand","handle","handsome","hang","happen","happened","happily","happy","harbor","hard","harder","hardly","has","hat","have","having","hay","he","headed","heading","health","heard","hearing","heart","heat","heavy","height","held","hello","help","helpful","her","herd","here","herself","hidden","hide","high","higher","highest","highway","hill","him","himself","his","history","hit","hold","hole","hollow","home","honor","hope","horn","horse","hospital","hot","hour","house","how","however","huge","human","hundred","hung","hungry","hunt","hunter","hurried","hurry","hurt","husband","ice","idea","identity","if","ill","image","imagine","immediately","importance","important","impossible","improve","in","inch","include","including","income","increase","indeed","independent","indicate","individual","industrial","industry","influence","information","inside","instance","instant","instead","instrument","interest","interior","into","introduced","invented","involved","iron","is","island","it","its","itself","jack","jar","jet","job","join","joined","journey","joy","judge","jump","jungle","just","keep","kept","key","kids","kill","kind","kitchen","knew","knife","know","knowledge","known","label","labor","lack","lady","laid","lake","lamp","land","language","large","larger","largest","last","late","later","laugh","law","lay","layers","lead","leader","leaf","learn","least","leather","leave","leaving","led","left","leg","length","lesson","let","letter","level","library","lie","life","lift","light","like","likely","limited","line","lion","lips","liquid","list","listen","little","live","living","load","local","locate","location","log","lonely","long","longer","look","loose","lose","loss","lost","lot","loud","love","lovely","low","lower","luck","lucky","lunch","lungs","lying","machine","machinery","mad","made","magic","magnet","mail","main","mainly","major","make","making","man","managed","manner","manufacturing","many","map","mark","market","married","mass","massage","master","material","mathematics","matter","may","maybe","me","meal","mean","means","meant","measure","meat","medicine","meet","melted","member","memory","men","mental","merely","met","metal","method","mice","middle","might","mighty","mile","military","milk","mill","mind","mine","minerals","minute","mirror","missing","mission","mistake","mix","mixture","model","modern","molecular","moment","money","monkey","month","mood","moon","more","morning","most","mostly","mother","motion","motor","mountain","mouse","mouth","move","movement","movie","moving","mud","muscle","music","musical","must","my","myself","mysterious","nails","name","nation","national","native","natural","naturally","nature","near","nearby","nearer","nearest","nearly","necessary","neck","needed","needle","needs","negative","neighbor","neighborhood","nervous","nest","never","new","news","newspaper","next","nice","night","nine","no","nobody","nodded","noise","none","noon","nor","north","nose","not","note","noted","nothing","notice","noun","now","number","numeral","nuts","object","observe","obtain","occasionally","occur","ocean","of","off","offer","office","officer","official","oil","old","older","oldest","on","once","one","only","onto","open","operation","opinion","opportunity","opposite","or","orange","orbit","order","ordinary","organization","organized","origin","original","other","ought","our","ourselves","out","outer","outline","outside","over","own","owner","oxygen","pack","package","page","paid","pain","paint","pair","palace","pale","pan","paper","paragraph","parallel","parent","park","part","particles","particular","particularly","partly","parts","party","pass","passage","past","path","pattern","pay","peace","pen","pencil","people","per","percent","perfect","perfectly","perhaps","period","person","personal","pet","phrase","physical","piano","pick","picture","pictured","pie","piece","pig","pile","pilot","pine","pink","pipe","pitch","place","plain","plan","plane","planet","planned","planning","plant","plastic","plate","plates","play","pleasant","please","pleasure","plenty","plural","plus","pocket","poem","poet","poetry","point","pole","police","policeman","political","pond","pony","pool","poor","popular","population","porch","port","position","positive","possible","possibly","post","pot","potatoes","pound","pour","powder","power","powerful","practical","practice","prepare","present","president","press","pressure","pretty","prevent","previous","price","pride","primitive","principal","principle","printed","private","prize","probably","problem","process","produce","product","production","program","progress","promised","proper","properly","property","protection","proud","prove","provide","public","pull","pupil","pure","purple","purpose","push","put","putting","quarter","queen","question","quick","quickly","quiet","quietly","quite","rabbit","race","radio","railroad","rain","raise","ran","ranch","range","rapidly","rate","rather","raw","rays","reach","read","reader","ready","real","realize","rear","reason","recall","receive","recent","recently","recognize","record","red","refer","refused","region","regular","related","relationship","religious","remain","remarkable","remember","remove","repeat","replace","replied","report","represent","require","research","respect","rest","result","return","review","rhyme","rhythm","rice","rich","ride","riding","right","ring","rise","rising","river","road","roar","rock","rocket","rocky","rod","roll","roof","room","root","rope","rose","rough","round","route","row","rubbed","rubber","rule","ruler","run","running","rush","sad","saddle","safe","safety","said","sail","sale","salmon","salt","same","sand","sang","sat","satellites","satisfied","save","saved","saw","say","scale","scared","scene","school","science","scientific","scientist","score","screen","sea","search","season","seat","second","secret","section","see","seed","seeing","seems","seen","seldom","select","selection","sell","send","sense","sent","sentence","separate","series","serious","serve","service","sets","setting","settle","settlers","seven","several","shade","shadow","shake","shaking","shall","shallow","shape","share","sharp","she","sheep","sheet","shelf","shells","shelter","shine","shinning","ship","shirt","shoe","shoot","shop","shore","short","shorter","shot","should","shoulder","shout","show","shown","shut","sick","sides","sight","sign","signal","silence","silent","silk","silly","silver","similar","simple","simplest","simply","since","sing","single","sink","sister","sit","sitting","situation","six","size","skill","skin","sky","slabs","slave","sleep","slept","slide","slight","slightly","slip","slipped","slope","slow","slowly","small","smaller","smallest","smell","smile","smoke","smooth","snake","snow","so","soap","social","society","soft","softly","soil","solar","sold","soldier","solid","solution","solve","some","somebody","somehow","someone","something","sometime","somewhere","son","song","soon","sort","sound","source","south","southern","space","speak","special","species","specific","speech","speed","spell","spend","spent","spider","spin","spirit","spite","split","spoken","sport","spread","spring","square","stage","stairs","stand","standard","star","stared","start","state","statement","station","stay","steady","steam","steel","steep","stems","step","stepped","stick","stiff","still","stock","stomach","stone","stood","stop","stopped","store","storm","story","stove","straight","strange","stranger","straw","stream","street","strength","stretch","strike","string","strip","strong","stronger","struck","structure","struggle","stuck","student","studied","studying","subject","substance","success","successful","such","sudden","suddenly","sugar","suggest","suit","sum","summer","sun","sunlight","supper","supply","support","suppose","sure","surface","surprise","surrounded","swam","sweet","swept","swim","swimming","swing","swung","syllable","symbol","system","table","tail","take","taken","tales","talk","tall","tank","tape","task","taste","taught","tax","tea","teach","teacher","team","tears","teeth","telephone","television","tell","temperature","ten","tent","term","terrible","test","than","thank","that","thee","them","themselves","then","theory","there","therefore","these","they","thick","thin","thing","think","third","thirty","this","those","thou","though","thought","thousand","thread","three","threw","throat","through","throughout","throw","thrown","thumb","thus","thy","tide","tie","tight","tightly","till","time","tin","tiny","tip","tired","title","to","tobacco","today","together","told","tomorrow","tone","tongue","tonight","too","took","tool","top","topic","torn","total","touch","toward","tower","town","toy","trace","track","trade","traffic","trail","train","transportation","trap","travel","treated","tree","triangle","tribe","trick","tried","trip","troops","tropical","trouble","truck","trunk","truth","try","tube","tune","turn","twelve","twenty","twice","two","type","typical","uncle","under","underline","understanding","unhappy","union","unit","universe","unknown","unless","until","unusual","up","upon","upper","upward","us","use","useful","using","usual","usually","valley","valuable","value","vapor","variety","various","vast","vegetable","verb","vertical","very","vessels","victory","view","village","visit","visitor","voice","volume","vote","vowel","voyage","wagon","wait","walk","wall","want","war","warm","warn","was","wash","waste","watch","water","wave","way","we","weak","wealth","wear","weather","week","weigh","weight","welcome","well","went","were","west","western","wet","whale","what","whatever","wheat","wheel","when","whenever","where","wherever","whether","which","while","whispered","whistle","white","who","whole","whom","whose","why","wide","widely","wife","wild","will","willing","win","wind","window","wing","winter","wire","wise","wish","with","within","without","wolf","women","won","wonder","wonderful","wood","wooden","wool","word","wore","work","worker","world","worried","worry","worse","worth","would","wrapped","write","writer","writing","written","wrong","wrote","yard","year","yellow","yes","yesterday","yet","you","young","younger","your","yourself","youth","zero","zebra","zipper","zoo","zulu"];var shortestWordSize=wordList.reduce(function(shortestWord,currentWord){return currentWord.length<shortestWord.length?currentWord:shortestWord}).length;var longestWordSize=wordList.reduce(function(longestWord,currentWord){return currentWord.length>longestWord.length?currentWord:longestWord}).length;function generate(options){var _options;var random=(_options=options)!==null&&_options!==void 0&&_options.seed?new _seedrandom["default"](options.seed):null;var _ref=options||{},minLength=_ref.minLength,maxLength=_ref.maxLength,rest=(0,_objectWithoutProperties2["default"])(_ref,_excluded);function word(){var min=typeof minLength!=="number"?shortestWordSize:limitWordSize(minLength);var max=typeof maxLength!=="number"?longestWordSize:limitWordSize(maxLength);if(min>max)min=max;var rightSize=false;var wordUsed;while(!rightSize){wordUsed=generateRandomWord();rightSize=wordUsed.length<=max&&wordUsed.length>=min}return wordUsed}function generateRandomWord(){return wordList[randInt(wordList.length)]}function limitWordSize(wordSize){if(wordSize<shortestWordSize)wordSize=shortestWordSize;if(wordSize>longestWordSize)wordSize=longestWordSize;return wordSize}function randInt(lessThan){var r=random?random():Math.random();return Math.floor(r*lessThan)}if(options===undefined){return word()}if(typeof options==="number"){options={exactly:options}}else if(Object.keys(rest).length===0){return word()}if(options.exactly){options.min=options.exactly;options.max=options.exactly}if(typeof options.wordsPerString!=="number"){options.wordsPerString=1}if(typeof options.formatter!=="function"){options.formatter=function(word){return word}}if(typeof options.separator!=="string"){options.separator=" "}var total=options.min+randInt(options.max+1-options.min);var results=[];var token="";var relativeIndex=0;for(var i=0;i<total*options.wordsPerString;i++){if(relativeIndex===options.wordsPerString-1){token+=options.formatter(word(),relativeIndex)}else{token+=options.formatter(word(),relativeIndex)+options.separator}relativeIndex++;if((i+1)%options.wordsPerString===0){results.push(token);token="";relativeIndex=0}}if(typeof options.join==="string"){results=results.join(options.join)}return results}function count(options){var _ref2=options||{},minLength=_ref2.minLength,maxLength=_ref2.maxLength;if(typeof minLength!=="number"){minLength=shortestWordSize}if(typeof maxLength!=="number"){maxLength=longestWordSize}return wordList.filter(function(word){return word.length>=minLength&&word.length<=maxLength}).length}
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.count=count;exports.generate=generate;exports.wordList=void 0;var _seedrandom=_interopRequireDefault(require("seedrandom"));const wordList=exports.wordList=["ability","able","aboard","about","above","accept","accident","according","account","accurate","acres","across","act","action","active","activity","actual","actually","add","addition","additional","adjective","adult","adventure","advice","affect","afraid","after","afternoon","again","against","age","ago","agree","ahead","aid","air","airplane","alike","alive","all","allow","almost","alone","along","aloud","alphabet","already","also","although","am","among","amount","ancient","angle","angry","animal","announced","another","answer","ants","any","anybody","anyone","anything","anyway","anywhere","apart","apartment","appearance","apple","applied","appropriate","are","area","arm","army","around","arrange","arrangement","arrive","arrow","art","article","as","aside","ask","asleep","at","ate","atmosphere","atom","atomic","attached","attack","attempt","attention","audience","author","automobile","available","average","avoid","aware","away","baby","back","bad","badly","bag","balance","ball","balloon","band","bank","bar","bare","bark","barn","base","baseball","basic","basis","basket","bat","battle","be","bean","bear","beat","beautiful","beauty","became","because","become","becoming","bee","been","before","began","beginning","begun","behavior","behind","being","believed","bell","belong","below","belt","bend","beneath","bent","beside","best","bet","better","between","beyond","bicycle","bigger","biggest","bill","birds","birth","birthday","bit","bite","black","blank","blanket","blew","blind","block","blood","blow","blue","board","boat","body","bone","book","border","born","both","bottle","bottom","bound","bow","bowl","box","boy","brain","branch","brass","brave","bread","break","breakfast","breath","breathe","breathing","breeze","brick","bridge","brief","bright","bring","broad","broke","broken","brother","brought","brown","brush","buffalo","build","building","built","buried","burn","burst","bus","bush","business","busy","but","butter","buy","by","cabin","cage","cake","call","calm","came","camera","camp","can","canal","cannot","cap","capital","captain","captured","car","carbon","card","care","careful","carefully","carried","carry","case","cast","castle","cat","catch","cattle","caught","cause","cave","cell","cent","center","central","century","certain","certainly","chain","chair","chamber","chance","change","changing","chapter","character","characteristic","charge","chart","check","cheese","chemical","chest","chicken","chief","child","children","choice","choose","chose","chosen","church","circle","circus","citizen","city","class","classroom","claws","clay","clean","clear","clearly","climate","climb","clock","close","closely","closer","cloth","clothes","clothing","cloud","club","coach","coal","coast","coat","coffee","cold","collect","college","colony","color","column","combination","combine","come","comfortable","coming","command","common","community","company","compare","compass","complete","completely","complex","composed","composition","compound","concerned","condition","congress","connected","consider","consist","consonant","constantly","construction","contain","continent","continued","contrast","control","conversation","cook","cookies","cool","copper","copy","corn","corner","correct","correctly","cost","cotton","could","count","country","couple","courage","course","court","cover","cow","cowboy","crack","cream","create","creature","crew","crop","cross","crowd","cry","cup","curious","current","curve","customs","cut","cutting","daily","damage","dance","danger","dangerous","dark","darkness","date","daughter","dawn","day","dead","deal","dear","death","decide","declared","deep","deeply","deer","definition","degree","depend","depth","describe","desert","design","desk","detail","determine","develop","development","diagram","diameter","did","die","differ","difference","different","difficult","difficulty","dig","dinner","direct","direction","directly","dirt","dirty","disappear","discover","discovery","discuss","discussion","disease","dish","distance","distant","divide","division","do","doctor","does","dog","doing","doll","dollar","done","donkey","door","dot","double","doubt","down","dozen","draw","drawn","dream","dress","drew","dried","drink","drive","driven","driver","driving","drop","dropped","drove","dry","duck","due","dug","dull","during","dust","duty","each","eager","ear","earlier","early","earn","earth","easier","easily","east","easy","eat","eaten","edge","education","effect","effort","egg","eight","either","electric","electricity","element","elephant","eleven","else","empty","end","enemy","energy","engine","engineer","enjoy","enough","enter","entire","entirely","environment","equal","equally","equator","equipment","escape","especially","essential","establish","even","evening","event","eventually","ever","every","everybody","everyone","everything","everywhere","evidence","exact","exactly","examine","example","excellent","except","exchange","excited","excitement","exciting","exclaimed","exercise","exist","expect","experience","experiment","explain","explanation","explore","express","expression","extra","eye","face","facing","fact","factor","factory","failed","fair","fairly","fall","fallen","familiar","family","famous","far","farm","farmer","farther","fast","fastened","faster","fat","father","favorite","fear","feathers","feature","fed","feed","feel","feet","fell","fellow","felt","fence","few","fewer","field","fierce","fifteen","fifth","fifty","fight","fighting","figure","fill","film","final","finally","find","fine","finest","finger","finish","fire","fireplace","firm","first","fish","five","fix","flag","flame","flat","flew","flies","flight","floating","floor","flow","flower","fly","fog","folks","follow","food","foot","football","for","force","foreign","forest","forget","forgot","forgotten","form","former","fort","forth","forty","forward","fought","found","four","fourth","fox","frame","free","freedom","frequently","fresh","friend","friendly","frighten","frog","from","front","frozen","fruit","fuel","full","fully","fun","function","funny","fur","furniture","further","future","gain","game","garage","garden","gas","gasoline","gate","gather","gave","general","generally","gentle","gently","get","getting","giant","gift","girl","give","given","giving","glad","glass","globe","go","goes","gold","golden","gone","good","goose","got","government","grabbed","grade","gradually","grain","grandfather","grandmother","graph","grass","gravity","gray","great","greater","greatest","greatly","green","grew","ground","group","grow","grown","growth","guard","guess","guide","gulf","gun","habit","had","hair","half","halfway","hall","hand","handle","handsome","hang","happen","happened","happily","happy","harbor","hard","harder","hardly","has","hat","have","having","hay","he","headed","heading","health","heard","hearing","heart","heat","heavy","height","held","hello","help","helpful","her","herd","here","herself","hidden","hide","high","higher","highest","highway","hill","him","himself","his","history","hit","hold","hole","hollow","home","honor","hope","horn","horse","hospital","hot","hour","house","how","however","huge","human","hundred","hung","hungry","hunt","hunter","hurried","hurry","hurt","husband","ice","idea","identity","if","ill","image","imagine","immediately","importance","important","impossible","improve","in","inch","include","including","income","increase","indeed","independent","indicate","individual","industrial","industry","influence","information","inside","instance","instant","instead","instrument","interest","interior","into","introduced","invented","involved","iron","is","island","it","its","itself","jack","jar","jet","job","join","joined","journey","joy","judge","jump","jungle","just","keep","kept","key","kids","kill","kind","kitchen","knew","knife","know","knowledge","known","label","labor","lack","lady","laid","lake","lamp","land","language","large","larger","largest","last","late","later","laugh","law","lay","layers","lead","leader","leaf","learn","least","leather","leave","leaving","led","left","leg","length","lesson","let","letter","level","library","lie","life","lift","light","like","likely","limited","line","lion","lips","liquid","list","listen","little","live","living","load","local","locate","location","log","lonely","long","longer","look","loose","lose","loss","lost","lot","loud","love","lovely","low","lower","luck","lucky","lunch","lungs","lying","machine","machinery","mad","made","magic","magnet","mail","main","mainly","major","make","making","man","managed","manner","manufacturing","many","map","mark","market","married","mass","massage","master","material","mathematics","matter","may","maybe","me","meal","mean","means","meant","measure","meat","medicine","meet","melted","member","memory","men","mental","merely","met","metal","method","mice","middle","might","mighty","mile","military","milk","mill","mind","mine","minerals","minute","mirror","missing","mission","mistake","mix","mixture","model","modern","molecular","moment","money","monkey","month","mood","moon","more","morning","most","mostly","mother","motion","motor","mountain","mouse","mouth","move","movement","movie","moving","mud","muscle","music","musical","must","my","myself","mysterious","nails","name","nation","national","native","natural","naturally","nature","near","nearby","nearer","nearest","nearly","necessary","neck","needed","needle","needs","negative","neighbor","neighborhood","nervous","nest","never","new","news","newspaper","next","nice","night","nine","no","nobody","nodded","noise","none","noon","nor","north","nose","not","note","noted","nothing","notice","noun","now","number","numeral","nuts","object","observe","obtain","occasionally","occur","ocean","of","off","offer","office","officer","official","oil","old","older","oldest","on","once","one","only","onto","open","operation","opinion","opportunity","opposite","or","orange","orbit","order","ordinary","organization","organized","origin","original","other","ought","our","ourselves","out","outer","outline","outside","over","own","owner","oxygen","pack","package","page","paid","pain","paint","pair","palace","pale","pan","paper","paragraph","parallel","parent","park","part","particles","particular","particularly","partly","parts","party","pass","passage","past","path","pattern","pay","peace","pen","pencil","people","per","percent","perfect","perfectly","perhaps","period","person","personal","pet","phrase","physical","piano","pick","picture","pictured","pie","piece","pig","pile","pilot","pine","pink","pipe","pitch","place","plain","plan","plane","planet","planned","planning","plant","plastic","plate","plates","play","pleasant","please","pleasure","plenty","plural","plus","pocket","poem","poet","poetry","point","pole","police","policeman","political","pond","pony","pool","poor","popular","population","porch","port","position","positive","possible","possibly","post","pot","potatoes","pound","pour","powder","power","powerful","practical","practice","prepare","present","president","press","pressure","pretty","prevent","previous","price","pride","primitive","principal","principle","printed","private","prize","probably","problem","process","produce","product","production","program","progress","promised","proper","properly","property","protection","proud","prove","provide","public","pull","pupil","pure","purple","purpose","push","put","putting","quarter","queen","question","quick","quickly","quiet","quietly","quite","rabbit","race","radio","railroad","rain","raise","ran","ranch","range","rapidly","rate","rather","raw","rays","reach","read","reader","ready","real","realize","rear","reason","recall","receive","recent","recently","recognize","record","red","refer","refused","region","regular","related","relationship","religious","remain","remarkable","remember","remove","repeat","replace","replied","report","represent","require","research","respect","rest","result","return","review","rhyme","rhythm","rice","rich","ride","riding","right","ring","rise","rising","river","road","roar","rock","rocket","rocky","rod","roll","roof","room","root","rope","rose","rough","round","route","row","rubbed","rubber","rule","ruler","run","running","rush","sad","saddle","safe","safety","said","sail","sale","salmon","salt","same","sand","sang","sat","satellites","satisfied","save","saved","saw","say","scale","scared","scene","school","science","scientific","scientist","score","screen","sea","search","season","seat","second","secret","section","see","seed","seeing","seems","seen","seldom","select","selection","sell","send","sense","sent","sentence","separate","series","serious","serve","service","sets","setting","settle","settlers","seven","several","shade","shadow","shake","shaking","shall","shallow","shape","share","sharp","she","sheep","sheet","shelf","shells","shelter","shine","shinning","ship","shirt","shoe","shoot","shop","shore","short","shorter","shot","should","shoulder","shout","show","shown","shut","sick","sides","sight","sign","signal","silence","silent","silk","silly","silver","similar","simple","simplest","simply","since","sing","single","sink","sister","sit","sitting","situation","six","size","skill","skin","sky","slabs","slave","sleep","slept","slide","slight","slightly","slip","slipped","slope","slow","slowly","small","smaller","smallest","smell","smile","smoke","smooth","snake","snow","so","soap","social","society","soft","softly","soil","solar","sold","soldier","solid","solution","solve","some","somebody","somehow","someone","something","sometime","somewhere","son","song","soon","sort","sound","source","south","southern","space","speak","special","species","specific","speech","speed","spell","spend","spent","spider","spin","spirit","spite","split","spoken","sport","spread","spring","square","stage","stairs","stand","standard","star","stared","start","state","statement","station","stay","steady","steam","steel","steep","stems","step","stepped","stick","stiff","still","stock","stomach","stone","stood","stop","stopped","store","storm","story","stove","straight","strange","stranger","straw","stream","street","strength","stretch","strike","string","strip","strong","stronger","struck","structure","struggle","stuck","student","studied","studying","subject","substance","success","successful","such","sudden","suddenly","sugar","suggest","suit","sum","summer","sun","sunlight","supper","supply","support","suppose","sure","surface","surprise","surrounded","swam","sweet","swept","swim","swimming","swing","swung","syllable","symbol","system","table","tail","take","taken","tales","talk","tall","tank","tape","task","taste","taught","tax","tea","teach","teacher","team","tears","teeth","telephone","television","tell","temperature","ten","tent","term","terrible","test","than","thank","that","thee","them","themselves","then","theory","there","therefore","these","they","thick","thin","thing","think","third","thirty","this","those","thou","though","thought","thousand","thread","three","threw","throat","through","throughout","throw","thrown","thumb","thus","thy","tide","tie","tight","tightly","till","time","tin","tiny","tip","tired","title","to","tobacco","today","together","told","tomorrow","tone","tongue","tonight","too","took","tool","top","topic","torn","total","touch","toward","tower","town","toy","trace","track","trade","traffic","trail","train","transportation","trap","travel","treated","tree","triangle","tribe","trick","tried","trip","troops","tropical","trouble","truck","trunk","truth","try","tube","tune","turn","twelve","twenty","twice","two","type","typical","uncle","under","underline","understanding","unhappy","union","unit","universe","unknown","unless","until","unusual","up","upon","upper","upward","us","use","useful","using","usual","usually","valley","valuable","value","vapor","variety","various","vast","vegetable","verb","vertical","very","vessels","victory","view","village","visit","visitor","voice","volume","vote","vowel","voyage","wagon","wait","walk","wall","want","war","warm","warn","was","wash","waste","watch","water","wave","way","we","weak","wealth","wear","weather","week","weigh","weight","welcome","well","went","were","west","western","wet","whale","what","whatever","wheat","wheel","when","whenever","where","wherever","whether","which","while","whispered","whistle","white","who","whole","whom","whose","why","wide","widely","wife","wild","will","willing","win","wind","window","wing","winter","wire","wise","wish","with","within","without","wolf","women","won","wonder","wonderful","wood","wooden","wool","word","wore","work","worker","world","worried","worry","worse","worth","would","wrapped","write","writer","writing","written","wrong","wrote","yard","year","yellow","yes","yesterday","yet","you","young","younger","your","yourself","youth","zero","zebra","zipper","zoo","zulu"];const shortestWordSize=wordList.reduce((shortestWord,currentWord)=>currentWord.length<shortestWord.length?currentWord:shortestWord).length;const longestWordSize=wordList.reduce((longestWord,currentWord)=>currentWord.length>longestWord.length?currentWord:longestWord).length;function generate(options){const random=options?.seed?new _seedrandom.default(options.seed):null;const{minLength,maxLength,...rest}=options||{};function word(){let min=typeof minLength!=="number"?shortestWordSize:limitWordSize(minLength);const max=typeof maxLength!=="number"?longestWordSize:limitWordSize(maxLength);if(min>max)min=max;let rightSize=false;let wordUsed;while(!rightSize){wordUsed=generateRandomWord();rightSize=wordUsed.length<=max&&wordUsed.length>=min}return wordUsed}function generateRandomWord(){return wordList[randInt(wordList.length)]}function limitWordSize(wordSize){if(wordSize<shortestWordSize)wordSize=shortestWordSize;if(wordSize>longestWordSize)wordSize=longestWordSize;return wordSize}function randInt(lessThan){const r=random?random():Math.random();return Math.floor(r*lessThan)}if(options===undefined){return word()}if(typeof options==="number"){options={exactly:options}}else if(Object.keys(rest).length===0){return word()}if(options.exactly){options.min=options.exactly;options.max=options.exactly}if(typeof options.wordsPerString!=="number"){options.wordsPerString=1}if(typeof options.formatter!=="function"){options.formatter=word=>word}if(typeof options.separator!=="string"){options.separator=" "}const total=options.min+randInt(options.max+1-options.min);let results=[];let token="";let relativeIndex=0;for(let i=0;i<total*options.wordsPerString;i++){if(relativeIndex===options.wordsPerString-1){token+=options.formatter(word(),relativeIndex)}else{token+=options.formatter(word(),relativeIndex)+options.separator}relativeIndex++;if((i+1)%options.wordsPerString===0){results.push(token);token="";relativeIndex=0}}if(typeof options.join==="string"){results=results.join(options.join)}return results}function count(options){let{minLength,maxLength}=options||{};if(typeof minLength!=="number"){minLength=shortestWordSize}if(typeof maxLength!=="number"){maxLength=longestWordSize}return wordList.filter(word=>word.length>=minLength&&word.length<=maxLength).length}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utiller",
3
- "version": "1.0.405",
3
+ "version": "1.0.407",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -15,7 +15,7 @@
15
15
  "author": "davidtu<freshingmoon0725@gmail.com>",
16
16
  "license": "ISC",
17
17
  "dependencies": {
18
- "bl": "^4.1.0",
18
+ "bl": "^6.1.4",
19
19
  "configerer": "^1.0.11",
20
20
  "crypto-js": "^4.2.0",
21
21
  "del": "^6.0.0",
@@ -26,8 +26,6 @@
26
26
  "node-html-parser": "^7.0.1",
27
27
  "pdf-parse": "^1.1.1",
28
28
  "prompt": "^1.1.0",
29
- "random-words": "^2.0.1",
30
- "swiper": "^10.1.0",
31
29
  "uuid": "^8.3.2"
32
30
  },
33
31
  "devDependencies": {
@@ -11,15 +11,17 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "configerer": "^1.0.23",
14
- "utiller": "^1.0.404",
14
+ "utiller": "^1.0.406",
15
15
  "linepayer": "^1.0.15",
16
16
  "databazer": "^1.0.17",
17
17
  "lodash": "^4.17.20",
18
- "moment": "^2.29.1"
18
+ "moment": "^2.29.1",
19
+ "@babel/runtime": "^7.28.4"
19
20
  },
20
21
  "devDependencies": {
21
- "@babel/cli": "^7.24.1",
22
- "@babel/core": "^7.24.4",
22
+ "@babel/runtime": "^7.24.8",
23
+ "@babel/cli": "^7.24.8",
24
+ "@babel/core": "^7.24.9",
23
25
  "@babel/plugin-proposal-decorators": "^7.24.1",
24
26
  "@babel/plugin-transform-class-properties": "^7.24.1",
25
27
  "@babel/plugin-transform-runtime": "^7.24.3",