@oaklean/profiler-core
Version:
Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec
179 lines • 9.79 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnifiedPath = void 0;
const path = __importStar(require("path"));
const PathUtils_1 = require("../helper/PathUtils");
class UnifiedPath {
constructor(arg) {
this._unifiedPath = PathUtils_1.PathUtils.unifyPath(arg || '');
}
static fromPathParts(parts) {
return new UnifiedPath(parts[0]).join(...parts.slice(1));
}
copy() {
return new UnifiedPath(this._unifiedPath);
}
/**
* String representation of a UnifiedPath
*
* @returns
*/
toString() {
return this._unifiedPath;
}
/**
* Returns UnifiedPath as a string for the current platform
*
* @returns
*/
toPlatformString() {
return this._unifiedPath.split('/').join(path.sep);
}
/**
* JSON representation of a UnifiedPath
*
* @returns
*/
toJSON() {
return this.toString();
}
/**
* Returns the directory name of a path
*
* @returns
*/
dirName() {
return new UnifiedPath(path.dirname(this.toString()));
}
/**
* Returns the basename name of a path
*
* @returns The basename of the path (path/to/index.coffee.md -> index.coffee.md)
*/
basename() {
return path.basename(this.toString());
}
/**
* Returns the file name of a path (without extension)
*
* @returns The extension of the path (path/to/index.coffee.md -> index.coffee)
*/
filename() {
return path.parse(this.basename()).name;
}
/**
* Returns the extension of a path
*
* @returns The extension of the path (path/to/index.coffee.md -> .md)
*/
extname() {
return path.extname(this.basename());
}
isRelative() {
return (this._unifiedPath === '' ||
(this._unifiedPath[0] !== '/' && !this.isAbsoluteWindowsPath()));
}
isAbsoluteWindowsPath() {
return /^[A-Za-z]:/.test(this._unifiedPath);
}
/**
* Gives the relative UnifiedPath that points from this to the other path
*
* @param other
* @returns
*/
pathTo(other) {
if (typeof other === 'string') {
other = new UnifiedPath(other);
}
return new UnifiedPath(PathUtils_1.PathUtils.getPathRelativeTo(this.toString(), other.toString()));
}
/**
* Splits the path into an array of it's components
*
* @returns
*/
split() {
if (!this._parts) {
const parts = this._unifiedPath.split('/');
if (parts[0] === '' && parts.length > 1) {
parts[0] = '/';
}
if (parts[0] === '.' && parts.length > 1) {
parts.splice(0, 1);
}
this._parts = parts;
}
return this._parts;
}
join(...args) {
if (args.length === 0) {
return new UnifiedPath(this._unifiedPath);
}
const parts = [];
for (const part of args) {
if (typeof part === 'string') {
parts.push(new UnifiedPath(part).toString());
}
else {
parts.push(part.toString());
}
}
return new UnifiedPath(path.posix.join(this._unifiedPath, ...parts));
}
/**
* Returns the unified path from the root of the path to the first occurrence of the given directory
* and the remainder
*
* /path/to/node_modules/node_module_name/file -> /path/to/node_modules
*
* @param dirName
* @returns
*/
pathUntilSubDir(dirName) {
const pathParts = this.split();
const firstMatch = pathParts.indexOf(dirName);
if (firstMatch !== -1) {
return {
match: new UnifiedPath(path.posix.join(...pathParts.slice(0, firstMatch + 1))),
remainder: new UnifiedPath(path.posix.join(...pathParts.slice(firstMatch + 1)))
};
}
return undefined;
}
}
exports.UnifiedPath = UnifiedPath;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5pZmllZFBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3lzdGVtL1VuaWZpZWRQYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE0QjtBQUU1QixtREFBK0M7QUFJL0MsTUFBYSxXQUFXO0lBSXZCLFlBQVksR0FBWTtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLHFCQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFlO1FBQ25DLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pELENBQUM7SUFFRCxJQUFJO1FBQ0gsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBa0MsQ0FBQTtJQUMvQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU87UUFDTixPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lB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