@opentelemetry/node
Advanced tools
Comparing version 0.4.0 to 0.5.0
@@ -76,2 +76,14 @@ "use strict"; | ||
} | ||
const alreadyRequiredModules = Object.keys(require.cache); | ||
const requiredModulesToHook = modulesToHook.filter(name => alreadyRequiredModules.find(cached => { | ||
try { | ||
return require.resolve(name) === cached; | ||
} | ||
catch (err) { | ||
return false; | ||
} | ||
}) !== undefined); | ||
if (requiredModulesToHook.length > 0) { | ||
this.logger.warn(`Some modules (${requiredModulesToHook.join(', ')}) were already required when their respective plugin was loaded, some plugins might not work. Make sure the SDK is setup before you require in other modules.`); | ||
} | ||
// Enable the require hook. | ||
@@ -102,4 +114,9 @@ hook(modulesToHook, (exports, name, baseDir) => { | ||
if (!utils.isSupportedVersion(version, plugin.supportedVersions)) { | ||
this.logger.error(`PluginLoader#load: Plugin ${name} only supports module ${plugin.moduleName} with the versions: ${plugin.supportedVersions}`); | ||
return exports; | ||
} | ||
if (plugin.moduleName !== name) { | ||
this.logger.error(`PluginLoader#load: Entry ${name} use a plugin that instruments ${plugin.moduleName}`); | ||
return exports; | ||
} | ||
this._plugins.push(plugin); | ||
@@ -106,0 +123,0 @@ // Enable each supported plugin. |
@@ -16,6 +16,10 @@ /*! | ||
*/ | ||
import { BasicTracerProvider } from '@opentelemetry/tracing'; | ||
import { BasicTracerProvider, SDKRegistrationConfig } from '@opentelemetry/tracing'; | ||
import { NodeTracerConfig } from './config'; | ||
/** | ||
* This class represents a node tracer with `async_hooks` module. | ||
* Register this TracerProvider for use with the OpenTelemetry API. | ||
* Undefined values may be replaced with defaults, and | ||
* null values will be skipped. | ||
* | ||
* @param config Configuration object for SDK registration | ||
*/ | ||
@@ -29,2 +33,3 @@ export declare class NodeTracerProvider extends BasicTracerProvider { | ||
stop(): void; | ||
register(config?: SDKRegistrationConfig): void; | ||
} |
@@ -18,8 +18,12 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const context_async_hooks_1 = require("@opentelemetry/context-async-hooks"); | ||
const tracing_1 = require("@opentelemetry/tracing"); | ||
const scope_async_hooks_1 = require("@opentelemetry/scope-async-hooks"); | ||
const config_1 = require("./config"); | ||
const PluginLoader_1 = require("./instrumentation/PluginLoader"); | ||
const config_1 = require("./config"); | ||
/** | ||
* This class represents a node tracer with `async_hooks` module. | ||
* Register this TracerProvider for use with the OpenTelemetry API. | ||
* Undefined values may be replaced with defaults, and | ||
* null values will be skipped. | ||
* | ||
* @param config Configuration object for SDK registration | ||
*/ | ||
@@ -31,7 +35,3 @@ class NodeTracerProvider extends tracing_1.BasicTracerProvider { | ||
constructor(config = {}) { | ||
if (config.scopeManager === undefined) { | ||
config.scopeManager = new scope_async_hooks_1.AsyncHooksScopeManager(); | ||
config.scopeManager.enable(); | ||
} | ||
super(Object.assign({ scopeManager: config.scopeManager }, config)); | ||
super(config); | ||
this._pluginLoader = new PluginLoader_1.PluginLoader(this, this.logger); | ||
@@ -43,4 +43,11 @@ this._pluginLoader.load(config.plugins || config_1.DEFAULT_INSTRUMENTATION_PLUGINS); | ||
} | ||
register(config = {}) { | ||
if (config.contextManager === undefined) { | ||
config.contextManager = new context_async_hooks_1.AsyncHooksContextManager(); | ||
config.contextManager.enable(); | ||
} | ||
super.register(config); | ||
} | ||
} | ||
exports.NodeTracerProvider = NodeTracerProvider; | ||
//# sourceMappingURL=NodeTracerProvider.js.map |
@@ -16,2 +16,2 @@ /*! | ||
*/ | ||
export declare const VERSION = "0.4.0"; | ||
export declare const VERSION = "0.5.0"; |
@@ -19,3 +19,3 @@ "use strict"; | ||
// this is autogenerated file, see scripts/version-update.js | ||
exports.VERSION = '0.4.0'; | ||
exports.VERSION = '0.5.0'; | ||
//# sourceMappingURL=version.js.map |
{ | ||
"name": "@opentelemetry/node", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"description": "OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications", | ||
@@ -9,11 +9,11 @@ "main": "build/src/index.js", | ||
"scripts": { | ||
"test": "nyc ts-mocha -p tsconfig.json 'test/**/*.ts'", | ||
"test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", | ||
"tdd": "npm run test -- --watch-extensions ts --watch", | ||
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", | ||
"clean": "rimraf build/*", | ||
"check": "gts check", | ||
"lint": "gts check", | ||
"lint:fix": "gts fix", | ||
"precompile": "tsc --version", | ||
"version:update": "node ../../scripts/version-update.js", | ||
"compile": "npm run version:update && tsc -p .", | ||
"fix": "gts fix", | ||
"prepare": "npm run compile" | ||
@@ -45,2 +45,4 @@ }, | ||
"devDependencies": { | ||
"@opentelemetry/context-base": "^0.5.0", | ||
"@opentelemetry/resources": "^0.5.0", | ||
"@types/mocha": "^5.2.5", | ||
@@ -63,9 +65,9 @@ "@types/node": "^12.6.8", | ||
"dependencies": { | ||
"@opentelemetry/api": "^0.4.0", | ||
"@opentelemetry/core": "^0.4.0", | ||
"@opentelemetry/scope-async-hooks": "^0.4.0", | ||
"@opentelemetry/tracing": "^0.4.0", | ||
"@opentelemetry/api": "^0.5.0", | ||
"@opentelemetry/context-async-hooks": "^0.5.0", | ||
"@opentelemetry/core": "^0.5.0", | ||
"@opentelemetry/tracing": "^0.5.0", | ||
"require-in-the-middle": "^5.0.0", | ||
"semver": "^6.2.0" | ||
"semver": "^7.1.3" | ||
} | ||
} |
@@ -30,3 +30,3 @@ # OpenTelemetry Node | ||
- extract a trace-context identifier from inbound requests to allow distributed tracing (if applicable) | ||
- make sure that this current trace-context is propagated while the transaction traverses an application (see [@opentelemetry/opentelemetry-scope-base](https://github.com/open-telemetry/opentelemetry-js/blob/master/packages/opentelemetry-scope-base/README.md) for an in-depth explanation) | ||
- make sure that this current trace-context is propagated while the transaction traverses an application (see [@opentelemetry/opentelemetry-context-base](https://github.com/open-telemetry/opentelemetry-js/blob/master/packages/opentelemetry-context-base/README.md) for an in-depth explanation) | ||
- add this trace-context identifier to outbound requests to allow continuing the distributed trace on the next hop (if applicable) | ||
@@ -43,3 +43,3 @@ - create and end spans | ||
```bash | ||
npm install --save @opentelemetry/core | ||
npm install --save @opentelemetry/api | ||
npm install --save @opentelemetry/node | ||
@@ -49,3 +49,2 @@ | ||
npm install --save @opentelemetry/plugin-http | ||
npm install --save @opentelemetry/plugin-grpc | ||
npm install --save @opentelemetry/plugin-https | ||
@@ -59,4 +58,3 @@ ``` | ||
```js | ||
const opentelemetry = require('@opentelemetry/core'); | ||
const { NodeTracerProvider } = require('@opentelemetry/node'); | ||
const { NodeTracerProvider } = require('@/node'); | ||
@@ -69,3 +67,3 @@ // Create and configure NodeTracerProvider | ||
// You may use a package name or absolute path to the file. | ||
path: '@opentelemetry/plugin-http', | ||
path: '@/plugin-http', | ||
// http plugin options | ||
@@ -77,3 +75,3 @@ } | ||
// Initialize the provider | ||
opentelemetry.trace.initGlobalTracerProvider(provider); | ||
provider.register() | ||
@@ -88,3 +86,2 @@ // Your application code - http will automatically be instrumented if | ||
```js | ||
const opentelemetry = require('@opentelemetry/core'); | ||
const { NodeTracerProvider } = require('@opentelemetry/node'); | ||
@@ -96,3 +93,3 @@ | ||
// Initialize the provider | ||
opentelemetry.trace.initGlobalTracerProvider(provider); | ||
provider.register() | ||
@@ -99,0 +96,0 @@ // Your application code |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
40583
17
15
520
115
4
+ Added@opentelemetry/api@0.5.2(transitive)
+ Added@opentelemetry/base@0.5.2(transitive)
+ Added@opentelemetry/context-async-hooks@0.5.2(transitive)
+ Added@opentelemetry/context-base@0.5.2(transitive)
+ Added@opentelemetry/core@0.5.2(transitive)
+ Added@opentelemetry/resources@0.5.2(transitive)
+ Added@opentelemetry/tracing@0.5.2(transitive)
+ Addedsemver@7.7.1(transitive)
- Removed@opentelemetry/api@0.4.0(transitive)
- Removed@opentelemetry/base@0.4.0(transitive)
- Removed@opentelemetry/core@0.4.0(transitive)
- Removed@opentelemetry/scope-async-hooks@0.4.0(transitive)
- Removed@opentelemetry/scope-base@0.4.0(transitive)
- Removed@opentelemetry/tracing@0.4.0(transitive)
- Removedsemver@6.3.1(transitive)
Updated@opentelemetry/api@^0.5.0
Updated@opentelemetry/core@^0.5.0
Updatedsemver@^7.1.3