You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					73 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					73 lines
				
				1.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'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;
							 | 
						||
| 
								 | 
							
								};
							 |