| 
						 | 
						- 'use strict';
 - 
 - /**
 -  * optimize try catch
 -  * @param {Function} fn
 -  * @return {Object}
 -  *   - {Error} error
 -  *   - {Mix} value
 -  */
 - exports.try = function (fn) {
 -   var res = {
 -     error: undefined,
 -     value: undefined
 -   };
 - 
 -   try {
 -     res.value = fn();
 -   } catch (err) {
 -     res.error = err instanceof Error
 -       ? err
 -       : new Error(err);
 -   }
 - 
 -   return res;
 - };
 - 
 - 
 - /**
 -  * @description Deal with typescript
 -  */
 - exports.UNSTABLE_METHOD = {
 -   try: exports.try,
 - };
 - 
 - 
 - /**
 -  * avoid if (a && a.b && a.b.c)
 -  * @param {Object} obj
 -  * @param {...String} keys
 -  * @return {Object}
 -  */
 - exports.dig = function (obj) {
 -   if (!obj) {
 -     return;
 -   }
 -   if (arguments.length <= 1) {
 -     return obj;
 -   }
 - 
 -   var value = obj[arguments[1]];
 -   for (var i = 2; i < arguments.length; i++) {
 -     if (!value) {
 -       break;
 -     }
 -     value = value[arguments[i]];
 -   }
 - 
 -   return value;
 - };
 - 
 - /**
 -  * optimize arguments to array
 -  * @param {Arguments} args
 -  * @return {Array}
 -  */
 - exports.argumentsToArray = function (args) {
 -   var res = new Array(args.length);
 -   for (var i = 0; i < args.length; i++) {
 -     res[i] = args[i];
 -   }
 -   return res;
 - };
 
 
  |