Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /usr/local/lib/node_modules/pm2/node_modules/@opencensus/core/build/src/trace/instrumentation/ drwxr-xr-x | |
| Viewing file: Select action/file-type: "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Copyright 2018, OpenCensus Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const path = require("path");
const semver = require("semver");
/** This class represent the base to patch plugin. */
class BasePlugin {
/**
* Constructs a new BasePlugin instance.
* @param moduleName The module name.
*/
constructor(moduleName) {
this.moduleName = moduleName;
}
/**
* Sets modified plugin to the context.
* @param moduleExports nodejs module exports to set as context
* @param tracer tracer relating to context
* @param version module version description
* @param options plugin options
* @param basedir module absolute path
*/
setPluginContext(
// tslint:disable-next-line:no-any
moduleExports, tracer, version, options, basedir) {
this.moduleExports = moduleExports;
this.tracer = tracer;
this.version = version;
this.basedir = basedir;
this.logger = tracer.logger;
this.options = options;
this.internalFilesExports = this.loadInternalFiles();
}
/**
* Method that enables the instrumentation patch.
*
* This method implements the GoF Template Method Pattern
* 'enable' is the invariant part of the pattern and
* 'applyPatch' the variant.
*
* @param moduleExports nodejs module exports from the module to patch
* @param tracer a tracer instance
* @param version version of the current instaled module to patch
* @param options plugin options
* @param basedir module absolute path
*/
enable(
// tslint:disable-next-line:no-any
moduleExports, tracer, version, options, basedir) {
this.setPluginContext(moduleExports, tracer, version, options, basedir);
return this.applyPatch();
}
/** Method to disable the instrumentation */
disable() {
this.applyUnpatch();
}
/**
* Load internal files according to version range
*/
loadInternalFiles() {
let result = null;
if (this.internalFileList) {
this.logger.debug('loadInternalFiles %o', this.internalFileList);
Object.keys(this.internalFileList).forEach(versionRange => {
if (semver.satisfies(this.version, versionRange)) {
if (result) {
this.logger.warn('Plugin for %s@%s, has overlap version range (%s) for internal files: %o', this.moduleName, this.version, versionRange, this.internalFileList);
}
result = this.loadInternalModuleFiles(this.internalFileList[versionRange], this.basedir);
}
});
if (!result) {
this.logger.debug('No internal file could be loaded for %s@%s', this.moduleName, this.version);
}
}
return result;
}
/**
* Load internal files from a module and set internalFilesExports
*/
loadInternalModuleFiles(extraModulesList, basedir) {
const extraModules = {};
if (extraModulesList) {
Object.keys(extraModulesList).forEach(moduleName => {
try {
this.logger.debug('loading File %s', extraModulesList[moduleName]);
extraModules[moduleName] =
require(path.join(basedir, extraModulesList[moduleName]));
}
catch (e) {
this.logger.error('Could not load internal file %s of module %s. Error: %s', path.join(basedir, extraModulesList[moduleName]), this.moduleName, e.message);
}
});
}
return extraModules;
}
}
exports.BasePlugin = BasePlugin;
//# sourceMappingURL=base-plugin.js.map |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0056 ]-- |