171 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
| * 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.2.0 - Compiled on 2019-09-02 23:33:57
 | |
| * 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.2.0'; // 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;
 | |
|   }
 | |
| }
 | |
| 
 | |
| ; |