@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
96 lines • 6.42 kB
JavaScript
;
/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/
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 (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isWindowsPath = exports.maybeFileUrlToPath = exports.lowerCaseInsensitivePath = exports.getCaseSensitivePaths = exports.setCaseSensitivePaths = exports.resetCaseSensitivePaths = exports.properRelative = void 0;
const path = __importStar(require("path"));
/**
* Resolves path segments properly based on whether they appear to be c:/ -style or / style.
*/
function properRelative(fromPath, toPath) {
var _a, _b;
// note: posix and win32 are not available in the browser polyfill.
if ((_a = path.posix) === null || _a === void 0 ? void 0 : _a.isAbsolute(fromPath)) {
return path.posix.relative(fromPath, toPath);
}
else if ((_b = path.win32) === null || _b === void 0 ? void 0 : _b.isAbsolute(fromPath)) {
return path.win32.relative(fromPath, toPath);
}
else {
return path.relative(fromPath, toPath);
}
}
exports.properRelative = properRelative;
let isCaseSensitive = process.platform !== 'win32';
function resetCaseSensitivePaths() {
isCaseSensitive = process.platform !== 'win32';
}
exports.resetCaseSensitivePaths = resetCaseSensitivePaths;
function setCaseSensitivePaths(sensitive) {
isCaseSensitive = sensitive;
}
exports.setCaseSensitivePaths = setCaseSensitivePaths;
function getCaseSensitivePaths() {
return isCaseSensitive;
}
exports.getCaseSensitivePaths = getCaseSensitivePaths;
/**
* Lowercases the path if the filesystem is case-insensitive. Warning: this
* should only be done for the purposes of comparing paths.
*/
function lowerCaseInsensitivePath(path) {
return isCaseSensitive ? path : path.toLowerCase();
}
exports.lowerCaseInsensitivePath = lowerCaseInsensitivePath;
/**
* Converts the file URL to an absolute path, if possible.
*/
function maybeFileUrlToPath(fileUrl) {
if (!fileUrl.startsWith('file:///')) {
return fileUrl;
}
fileUrl = fileUrl.replace('file:///', '');
fileUrl = decodeURIComponent(fileUrl);
if (fileUrl[0] !== '/' && !fileUrl.match(/^[A-Za-z]:/)) {
// If it has a : before the first /, assume it's a windows path or url.
// Ensure unix-style path starts with /, it can be removed when file:/// was stripped.
// Don't add if the url still has a protocol
fileUrl = '/' + fileUrl;
}
if ((0, exports.isWindowsPath)(fileUrl)) {
// If the path starts with a drive letter, ensure lowercase. VS Code uses a lowercase drive letter
fileUrl = fileUrl[0].toLowerCase() + fileUrl.substr(1);
}
return fileUrl;
}
exports.maybeFileUrlToPath = maybeFileUrlToPath;
/**
* Returns whether the path looks like a Windows path.
*/
const isWindowsPath = (path) => /^[A-Za-z]:/.test(path);
exports.isWindowsPath = isWindowsPath;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi92c2NvZGUtanMtcHJvZmlsZS1jb3JlL3NyYy9wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7NERBRTREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RCwyQ0FBNkI7QUFFN0I7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsUUFBZ0IsRUFBRSxNQUFjOztJQUM3RCxtRUFBbUU7SUFDbkUsSUFBSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7U0FBTSxJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7QUFDSCxDQUFDO0FBVEQsd0NBU0M7QUFFRCxJQUFJLGVBQWUsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQztBQUVuRCxTQUFnQix1QkFBdUI7SUFDckMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO0FBQ2pELENBQUM7QUFGRCwwREFFQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLFNBQWtCO0lBQ3RELGVBQWUsR0FBRyxTQUFTLENBQUM7QUFDOUIsQ0FBQztBQUZELHNEQUVDO0FBRUQsU0FBZ0IscUJBQXFCO0lBQ25DLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFGRCxzREFFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFGRCw0REFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsT0FBZTtJQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUN2RCx1RUFBdUU7UUFDdkUsc0ZBQXNGO1FBQ3RGLDRDQUE0QztRQUM1QyxPQUFPLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFBLHFCQUFhLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQixrR0FBa0c7UUFDbEcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBcEJELGdEQW9CQztBQUVEOztHQUVHO0FBQ0ksTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFBMUQsUUFBQSxhQUFhLGlCQUE2QyJ9