@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
105 lines • 8.12 kB
JavaScript
;
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.NodeModule = exports.NodeModuleIdentifierRegex = exports.NodeModuleIdentifierRegexString = exports.NodeModuleVersionRegexString = exports.NodeModuleNameRegexString = void 0;
const fs = __importStar(require("fs"));
const BaseModel_1 = require("./BaseModel");
const BufferHelper_1 = require("../helper/BufferHelper");
exports.NodeModuleNameRegexString = '(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*';
// semver regular expression
// License: https://creativecommons.org/licenses/by/3.0/
// source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
// changes: all groups were converted to non-capturing groups
exports.NodeModuleVersionRegexString = '(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?:[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?';
exports.NodeModuleIdentifierRegexString = `${exports.NodeModuleNameRegexString}@${exports.NodeModuleVersionRegexString}`;
exports.NodeModuleIdentifierRegex = new RegExp(exports.NodeModuleIdentifierRegexString);
class NodeModule extends BaseModel_1.BaseModel {
constructor(name, version) {
super();
this.name = name;
this.version = version;
}
static currentEngineModule() {
return new NodeModule('node', process.versions.node);
}
get identifier() {
return `${this.name}@${this.version}`;
}
static fromIdentifier(identifier) {
let name = '';
let version = '';
if (identifier[0] === '@') {
[name, version] = identifier.slice(1).split('@');
name = '@' + name;
}
else {
[name, version] = identifier.split('@');
}
if (!name || !version) {
throw new Error('NodeModule.fromIdentifier: invalid format: ' + identifier);
}
return new NodeModule(name, version);
}
toJSON() {
return {
name: this.name,
version: this.version,
};
}
static fromJSON(json) {
let data;
if (typeof json === 'string') {
data = JSON.parse(json);
}
else {
data = json;
}
const result = new NodeModule(data.name, data.version);
return result;
}
static fromNodeModulePath(path) {
const packageJsonPath = path.join('package.json');
if (!fs.existsSync(packageJsonPath.toString())) {
return undefined;
}
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath.toString(), 'utf-8'));
return new NodeModule(packageJson.name, packageJson.version);
}
toBuffer() {
const nameBuffer = BufferHelper_1.BufferHelper.String2LToBuffer(this.name);
const versionBuffer = BufferHelper_1.BufferHelper.String2LToBuffer(this.version);
return Buffer.concat([nameBuffer, versionBuffer]);
}
static consumeFromBuffer(buffer) {
const { instance: name, remainingBuffer: newRemainingBuffer } = BufferHelper_1.BufferHelper.String2LFromBuffer(buffer);
const { instance: version, remainingBuffer } = BufferHelper_1.BufferHelper.String2LFromBuffer(newRemainingBuffer);
return {
instance: new NodeModule(name, version),
remainingBuffer
};
}
}
exports.NodeModule = NodeModule;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZU1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC9Ob2RlTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXdCO0FBRXhCLDJDQUF1QztBQUd2Qyx5REFBcUQ7QUFPeEMsUUFBQSx5QkFBeUIsR0FBRyx5REFBeUQsQ0FBQTtBQUNsRyw0QkFBNEI7QUFDNUIsd0RBQXdEO0FBQ3hELHFHQUFxRztBQUNyRyw2REFBNkQ7QUFDaEQsUUFBQSw0QkFBNEIsR0FDekMseU1BQXlNLENBQUE7QUFFNUwsUUFBQSwrQkFBK0IsR0FBRyxHQUFHLGlDQUF5QixJQUFJLG9DQUE0QixFQUFFLENBQUE7QUFDaEcsUUFBQSx5QkFBeUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyx1Q0FBK0IsQ0FBQyxDQUFBO0FBRXBGLE1BQWEsVUFBVyxTQUFRLHFCQUFTO0lBSXhDLFlBQ0MsSUFBWSxFQUNaLE9BQWU7UUFFZixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CO1FBQ3pCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQWlDLENBQUE7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBdUM7UUFDNUQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2IsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcs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