| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 'use strict';var path = require('path');var helper = module.exports = {};// Returns boolean whether filepath is dir terminatedhelper.isDir = function isDir (dir) {  if (typeof dir !== 'string') {    return false;  }  return (dir.slice(-(path.sep.length)) === path.sep);};// Create a `key:[]` if doesnt exist on `obj` then push or concat the `val`helper.objectPush = function objectPush (obj, key, val) {  if (obj[key] == null) {    obj[key] = [];  }  if (Array.isArray(val)) {    obj[key] = obj[key].concat(val);  } else if (val) {    obj[key].push(val);  }  obj[key] = helper.unique(obj[key]);  return obj[key];};// Ensures the dir is marked with path.sephelper.markDir = function markDir (dir) {  if (typeof dir === 'string' &&    dir.slice(-(path.sep.length)) !== path.sep &&    dir !== '.') {    dir += path.sep;  }  return dir;};// Changes path.sep to unix ones for testinghelper.unixifyPathSep = function unixifyPathSep (filepath) {  return (process.platform === 'win32') ? String(filepath).replace(/\\/g, '/') : filepath;};/** * Lo-Dash 1.0.1 <http://lodash.com/> * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/> * Based on Underscore.js 1.4.4 <http://underscorejs.org/> * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. * Available under MIT license <http://lodash.com/license> */helper.unique = function unique () {  var array = Array.prototype.concat.apply(Array.prototype, arguments);  var result = [];  for (var i = 0; i < array.length; i++) {    if (result.indexOf(array[i]) === -1) {      result.push(array[i]);    }  }  return result;};/** * Copyright (c) 2010 Caolan McMahon * Available under MIT license <https://raw.github.com/caolan/async/master/LICENSE> */helper.forEachSeries = function forEachSeries (arr, iterator, callback) {  if (!arr.length) { return callback(); }  var completed = 0;  var iterate = function () {    iterator(arr[completed], function (err) {      if (err) {        callback(err);        callback = function () {};      } else {        completed += 1;        if (completed === arr.length) {          callback(null);        } else {          iterate();        }      }    });  };  iterate();};
 |