| /** | 
| * upath http://github.com/anodynos/upath/ | 
| * | 
| * A proxy to `path`, replacing `\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions. | 
| * Version 1.1.1 - Compiled on 2019-03-07 10:45:51 | 
| * Repository git://github.com/anodynos/upath | 
| * Copyright(c) 2019 Angelos Pikoulas <agelos.pikoulas@gmail.com> | 
| * License MIT | 
| */ | 
|   | 
| // Generated by uRequire v0.7.0-beta.33 target: 'lib' template: 'nodejs' | 
|   | 
|   | 
| var VERSION = '1.1.1'; // injected by urequire-rc-inject-version | 
|   | 
| var extraFn, extraFunctions, isFunction, isString, isValidExt, name, path, propName, propValue, toUnix, upath, slice = [].slice, indexOf = [].indexOf || function (item) { | 
|     for (var i = 0, l = this.length; i < l; i++) { | 
|       if (i in this && this[i] === item) | 
|         return i; | 
|     } | 
|     return -1; | 
|   }, hasProp = {}.hasOwnProperty; | 
| path = require("path"); | 
| isFunction = function (val) { | 
|   return val instanceof Function; | 
| }; | 
| isString = function (val) { | 
|   return typeof val === "string" || !!val && typeof val === "object" && Object.prototype.toString.call(val) === "[object String]"; | 
| }; | 
| upath = exports; | 
| upath.VERSION = typeof VERSION !== "undefined" && VERSION !== null ? VERSION : "NO-VERSION"; | 
| toUnix = function (p) { | 
|   var double; | 
|   p = p.replace(/\\/g, "/"); | 
|   double = /\/\//; | 
|   while (p.match(double)) { | 
|     p = p.replace(double, "/"); | 
|   } | 
|   return p; | 
| }; | 
| for (propName in path) { | 
|   propValue = path[propName]; | 
|   if (isFunction(propValue)) { | 
|     upath[propName] = function (propName) { | 
|       return function () { | 
|         var args, result; | 
|         args = 1 <= arguments.length ? slice.call(arguments, 0) : []; | 
|         args = args.map(function (p) { | 
|           if (isString(p)) { | 
|             return toUnix(p); | 
|           } else { | 
|             return p; | 
|           } | 
|         }); | 
|         result = path[propName].apply(path, args); | 
|         if (isString(result)) { | 
|           return toUnix(result); | 
|         } else { | 
|           return result; | 
|         } | 
|       }; | 
|     }(propName); | 
|   } else { | 
|     upath[propName] = propValue; | 
|   } | 
| } | 
| upath.sep = "/"; | 
| extraFunctions = { | 
|   toUnix: toUnix, | 
|   normalizeSafe: function (p) { | 
|     p = toUnix(p); | 
|     if (p.startsWith("./")) { | 
|       if (p.startsWith("./..") || p === "./") { | 
|         return upath.normalize(p); | 
|       } else { | 
|         return "./" + upath.normalize(p); | 
|       } | 
|     } else { | 
|       return upath.normalize(p); | 
|     } | 
|   }, | 
|   normalizeTrim: function (p) { | 
|     p = upath.normalizeSafe(p); | 
|     if (p.endsWith("/")) { | 
|       return p.slice(0, +(p.length - 2) + 1 || 9000000000); | 
|     } else { | 
|       return p; | 
|     } | 
|   }, | 
|   joinSafe: function () { | 
|     var p, result; | 
|     p = 1 <= arguments.length ? slice.call(arguments, 0) : []; | 
|     result = upath.join.apply(null, p); | 
|     if (p[0].startsWith("./") && !result.startsWith("./")) { | 
|       result = "./" + result; | 
|     } | 
|     return result; | 
|   }, | 
|   addExt: function (file, ext) { | 
|     if (!ext) { | 
|       return file; | 
|     } else { | 
|       if (ext[0] !== ".") { | 
|         ext = "." + ext; | 
|       } | 
|       return file + (file.endsWith(ext) ? "" : ext); | 
|     } | 
|   }, | 
|   trimExt: function (filename, ignoreExts, maxSize) { | 
|     var oldExt; | 
|     if (maxSize == null) { | 
|       maxSize = 7; | 
|     } | 
|     oldExt = upath.extname(filename); | 
|     if (isValidExt(oldExt, ignoreExts, maxSize)) { | 
|       return filename.slice(0, +(filename.length - oldExt.length - 1) + 1 || 9000000000); | 
|     } else { | 
|       return filename; | 
|     } | 
|   }, | 
|   removeExt: function (filename, ext) { | 
|     if (!ext) { | 
|       return filename; | 
|     } else { | 
|       ext = ext[0] === "." ? ext : "." + ext; | 
|       if (upath.extname(filename) === ext) { | 
|         return upath.trimExt(filename); | 
|       } else { | 
|         return filename; | 
|       } | 
|     } | 
|   }, | 
|   changeExt: function (filename, ext, ignoreExts, maxSize) { | 
|     if (maxSize == null) { | 
|       maxSize = 7; | 
|     } | 
|     return upath.trimExt(filename, ignoreExts, maxSize) + (!ext ? "" : ext[0] === "." ? ext : "." + ext); | 
|   }, | 
|   defaultExt: function (filename, ext, ignoreExts, maxSize) { | 
|     var oldExt; | 
|     if (maxSize == null) { | 
|       maxSize = 7; | 
|     } | 
|     oldExt = upath.extname(filename); | 
|     if (isValidExt(oldExt, ignoreExts, maxSize)) { | 
|       return filename; | 
|     } else { | 
|       return upath.addExt(filename, ext); | 
|     } | 
|   } | 
| }; | 
| isValidExt = function (ext, ignoreExts, maxSize) { | 
|   if (ignoreExts == null) { | 
|     ignoreExts = []; | 
|   } | 
|   return ext && ext.length <= maxSize && indexOf.call(ignoreExts.map(function (e) { | 
|     return (e && e[0] !== "." ? "." : "") + e; | 
|   }), ext) < 0; | 
| }; | 
| for (name in extraFunctions) { | 
|   if (!hasProp.call(extraFunctions, name)) | 
|     continue; | 
|   extraFn = extraFunctions[name]; | 
|   if (upath[name] !== void 0) { | 
|     throw new Error("path." + name + " already exists."); | 
|   } else { | 
|     upath[name] = extraFn; | 
|   } | 
| } | 
|   | 
| ; |