@opentelemetry/instrumentation-nestjs-core
Advanced tools
@@ -1,5 +0,3 @@ | ||
| import { Instrumentation } from './instrumentation'; | ||
| export * from './instrumentation'; | ||
| export { Instrumentation as NestInstrumentation }; | ||
| export * from './enums/AttributeNames'; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -28,7 +28,4 @@ "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.NestInstrumentation = void 0; | ||
| const instrumentation_1 = require("./instrumentation"); | ||
| Object.defineProperty(exports, "NestInstrumentation", { enumerable: true, get: function () { return instrumentation_1.Instrumentation; } }); | ||
| __exportStar(require("./instrumentation"), exports); | ||
| __exportStar(require("./enums/AttributeNames"), exports); | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;AAEH,uDAAoD;AAGxB,oGAHnB,iCAAe,OAGuB;AAD/C,oDAAkC;AAGlC,yDAAuC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Instrumentation } from './instrumentation';\n\nexport * from './instrumentation';\nexport { Instrumentation as NestInstrumentation };\n\nexport * from './enums/AttributeNames';\n"]} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;AAEH,oDAAkC;AAClC,yDAAuC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './instrumentation';\nexport * from './enums/AttributeNames';\n"]} |
| import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation'; | ||
| export declare class Instrumentation extends InstrumentationBase { | ||
| export declare class NestInstrumentation extends InstrumentationBase { | ||
| static readonly COMPONENT = "@nestjs/core"; | ||
@@ -4,0 +4,0 @@ static readonly COMMON_ATTRIBUTES: { |
@@ -18,3 +18,3 @@ "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.Instrumentation = void 0; | ||
| exports.NestInstrumentation = void 0; | ||
| const api = require("@opentelemetry/api"); | ||
@@ -25,3 +25,4 @@ const instrumentation_1 = require("@opentelemetry/instrumentation"); | ||
| const enums_1 = require("./enums"); | ||
| class Instrumentation extends instrumentation_1.InstrumentationBase { | ||
| const supportedVersions = ['>=4.0.0 <11']; | ||
| class NestInstrumentation extends instrumentation_1.InstrumentationBase { | ||
| constructor(config = {}) { | ||
@@ -31,4 +32,4 @@ super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); | ||
| init() { | ||
| const module = new instrumentation_1.InstrumentationNodeModuleDefinition(Instrumentation.COMPONENT, ['>=4.0.0']); | ||
| module.files.push(this.getNestFactoryFileInstrumentation(['>=4.0.0']), this.getRouterExecutionContextFileInstrumentation(['>=4.0.0'])); | ||
| const module = new instrumentation_1.InstrumentationNodeModuleDefinition(NestInstrumentation.COMPONENT, supportedVersions); | ||
| module.files.push(this.getNestFactoryFileInstrumentation(supportedVersions), this.getRouterExecutionContextFileInstrumentation(supportedVersions)); | ||
| return module; | ||
@@ -59,6 +60,6 @@ } | ||
| } | ||
| exports.Instrumentation = Instrumentation; | ||
| Instrumentation.COMPONENT = '@nestjs/core'; | ||
| Instrumentation.COMMON_ATTRIBUTES = { | ||
| component: Instrumentation.COMPONENT, | ||
| exports.NestInstrumentation = NestInstrumentation; | ||
| NestInstrumentation.COMPONENT = '@nestjs/core'; | ||
| NestInstrumentation.COMMON_ATTRIBUTES = { | ||
| component: NestInstrumentation.COMPONENT, | ||
| }; | ||
@@ -71,3 +72,3 @@ function createWrapNestFactoryCreate(tracer, moduleVersion) { | ||
| const span = tracer.startSpan('Create Nest App', { | ||
| attributes: Object.assign(Object.assign({}, Instrumentation.COMMON_ATTRIBUTES), { [enums_1.AttributeNames.TYPE]: enums_1.NestType.APP_CREATION, [enums_1.AttributeNames.VERSION]: moduleVersion, [enums_1.AttributeNames.MODULE]: nestModule.name }), | ||
| attributes: Object.assign(Object.assign({}, NestInstrumentation.COMMON_ATTRIBUTES), { [enums_1.AttributeNames.TYPE]: enums_1.NestType.APP_CREATION, [enums_1.AttributeNames.VERSION]: moduleVersion, [enums_1.AttributeNames.MODULE]: nestModule.name }), | ||
| }); | ||
@@ -104,3 +105,3 @@ const spanContext = api.trace.setSpan(api.context.active(), span); | ||
| const span = tracer.startSpan(spanName, { | ||
| attributes: Object.assign(Object.assign({}, Instrumentation.COMMON_ATTRIBUTES), { [enums_1.AttributeNames.VERSION]: moduleVersion, [enums_1.AttributeNames.TYPE]: enums_1.NestType.REQUEST_CONTEXT, [semantic_conventions_1.SEMATTRS_HTTP_METHOD]: req.method, [semantic_conventions_1.SEMATTRS_HTTP_URL]: req.originalUrl || req.url, [semantic_conventions_1.SEMATTRS_HTTP_ROUTE]: ((_a = req.route) === null || _a === void 0 ? void 0 : _a.path) || ((_b = req.routeOptions) === null || _b === void 0 ? void 0 : _b.url) || req.routerPath, [enums_1.AttributeNames.CONTROLLER]: instanceName, [enums_1.AttributeNames.CALLBACK]: callbackName }), | ||
| attributes: Object.assign(Object.assign({}, NestInstrumentation.COMMON_ATTRIBUTES), { [enums_1.AttributeNames.VERSION]: moduleVersion, [enums_1.AttributeNames.TYPE]: enums_1.NestType.REQUEST_CONTEXT, [semantic_conventions_1.SEMATTRS_HTTP_METHOD]: req.method, [semantic_conventions_1.SEMATTRS_HTTP_URL]: req.originalUrl || req.url, [semantic_conventions_1.SEMATTRS_HTTP_ROUTE]: ((_a = req.route) === null || _a === void 0 ? void 0 : _a.path) || ((_b = req.routeOptions) === null || _b === void 0 ? void 0 : _b.url) || req.routerPath, [enums_1.AttributeNames.CONTROLLER]: instanceName, [enums_1.AttributeNames.CALLBACK]: callbackName }), | ||
| }); | ||
@@ -126,3 +127,3 @@ const spanContext = api.trace.setSpan(api.context.active(), span); | ||
| const options = { | ||
| attributes: Object.assign(Object.assign({}, Instrumentation.COMMON_ATTRIBUTES), { [enums_1.AttributeNames.VERSION]: moduleVersion, [enums_1.AttributeNames.TYPE]: enums_1.NestType.REQUEST_HANDLER, [enums_1.AttributeNames.CALLBACK]: handler.name }), | ||
| attributes: Object.assign(Object.assign({}, NestInstrumentation.COMMON_ATTRIBUTES), { [enums_1.AttributeNames.VERSION]: moduleVersion, [enums_1.AttributeNames.TYPE]: enums_1.NestType.REQUEST_HANDLER, [enums_1.AttributeNames.CALLBACK]: handler.name }), | ||
| }; | ||
@@ -129,0 +130,0 @@ const wrappedHandler = function () { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n} from '@opentelemetry/instrumentation';\nimport type { NestFactory } from '@nestjs/core/nest-factory.js';\nimport type { RouterExecutionContext } from '@nestjs/core/router/router-execution-context.js';\nimport type { Controller } from '@nestjs/common/interfaces';\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_ROUTE,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport { AttributeNames, NestType } from './enums';\n\nexport class Instrumentation extends InstrumentationBase {\n static readonly COMPONENT = '@nestjs/core';\n static readonly COMMON_ATTRIBUTES = {\n component: Instrumentation.COMPONENT,\n };\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n Instrumentation.COMPONENT,\n ['>=4.0.0']\n );\n\n module.files.push(\n this.getNestFactoryFileInstrumentation(['>=4.0.0']),\n this.getRouterExecutionContextFileInstrumentation(['>=4.0.0'])\n );\n\n return module;\n }\n\n getNestFactoryFileInstrumentation(versions: string[]) {\n return new InstrumentationNodeModuleFile(\n '@nestjs/core/nest-factory.js',\n versions,\n (NestFactoryStatic: any, moduleVersion?: string) => {\n this.ensureWrapped(\n NestFactoryStatic.NestFactoryStatic.prototype,\n 'create',\n createWrapNestFactoryCreate(this.tracer, moduleVersion)\n );\n return NestFactoryStatic;\n },\n (NestFactoryStatic: any) => {\n this._unwrap(NestFactoryStatic.NestFactoryStatic.prototype, 'create');\n }\n );\n }\n\n getRouterExecutionContextFileInstrumentation(versions: string[]) {\n return new InstrumentationNodeModuleFile(\n '@nestjs/core/router/router-execution-context.js',\n versions,\n (RouterExecutionContext: any, moduleVersion?: string) => {\n this.ensureWrapped(\n RouterExecutionContext.RouterExecutionContext.prototype,\n 'create',\n createWrapCreateHandler(this.tracer, moduleVersion)\n );\n return RouterExecutionContext;\n },\n (RouterExecutionContext: any) => {\n this._unwrap(\n RouterExecutionContext.RouterExecutionContext.prototype,\n 'create'\n );\n }\n );\n }\n\n private ensureWrapped(\n obj: any,\n methodName: string,\n wrapper: (original: any) => any\n ) {\n if (isWrapped(obj[methodName])) {\n this._unwrap(obj, methodName);\n }\n this._wrap(obj, methodName, wrapper);\n }\n}\n\nfunction createWrapNestFactoryCreate(\n tracer: api.Tracer,\n moduleVersion?: string\n) {\n return function wrapCreate(original: typeof NestFactory.create) {\n return function createWithTrace(\n this: typeof NestFactory,\n nestModule: any\n /* serverOrOptions */\n ) {\n const span = tracer.startSpan('Create Nest App', {\n attributes: {\n ...Instrumentation.COMMON_ATTRIBUTES,\n [AttributeNames.TYPE]: NestType.APP_CREATION,\n [AttributeNames.VERSION]: moduleVersion,\n [AttributeNames.MODULE]: nestModule.name,\n },\n });\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context.with(spanContext, async () => {\n try {\n return await original.apply(this, arguments as any);\n } catch (e: any) {\n throw addError(span, e);\n } finally {\n span.end();\n }\n });\n };\n };\n}\n\nfunction createWrapCreateHandler(tracer: api.Tracer, moduleVersion?: string) {\n return function wrapCreateHandler(\n original: RouterExecutionContext['create']\n ) {\n return function createHandlerWithTrace(\n this: RouterExecutionContext,\n instance: Controller,\n callback: (...args: any[]) => unknown\n ) {\n arguments[1] = createWrapHandler(tracer, moduleVersion, callback);\n const handler = original.apply(this, arguments as any);\n const callbackName = callback.name;\n const instanceName =\n instance.constructor && instance.constructor.name\n ? instance.constructor.name\n : 'UnnamedInstance';\n const spanName = callbackName\n ? `${instanceName}.${callbackName}`\n : instanceName;\n\n return function (\n this: any,\n req: any,\n res: any,\n next: (...args: any[]) => unknown\n ) {\n const span = tracer.startSpan(spanName, {\n attributes: {\n ...Instrumentation.COMMON_ATTRIBUTES,\n [AttributeNames.VERSION]: moduleVersion,\n [AttributeNames.TYPE]: NestType.REQUEST_CONTEXT,\n [SEMATTRS_HTTP_METHOD]: req.method,\n [SEMATTRS_HTTP_URL]: req.originalUrl || req.url,\n [SEMATTRS_HTTP_ROUTE]:\n req.route?.path || req.routeOptions?.url || req.routerPath,\n [AttributeNames.CONTROLLER]: instanceName,\n [AttributeNames.CALLBACK]: callbackName,\n },\n });\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context.with(spanContext, async () => {\n try {\n return await handler.apply(this, arguments as any);\n } catch (e: any) {\n throw addError(span, e);\n } finally {\n span.end();\n }\n });\n };\n };\n };\n}\n\nfunction createWrapHandler(\n tracer: api.Tracer,\n moduleVersion: string | undefined,\n handler: Function\n) {\n const spanName = handler.name || 'anonymous nest handler';\n const options = {\n attributes: {\n ...Instrumentation.COMMON_ATTRIBUTES,\n [AttributeNames.VERSION]: moduleVersion,\n [AttributeNames.TYPE]: NestType.REQUEST_HANDLER,\n [AttributeNames.CALLBACK]: handler.name,\n },\n };\n const wrappedHandler = function (this: RouterExecutionContext) {\n const span = tracer.startSpan(spanName, options);\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context.with(spanContext, async () => {\n try {\n return await handler.apply(this, arguments);\n } catch (e: any) {\n throw addError(span, e);\n } finally {\n span.end();\n }\n });\n };\n\n if (handler.name) {\n Object.defineProperty(wrappedHandler, 'name', { value: handler.name });\n }\n\n // Get the current metadata and set onto the wrapper to ensure other decorators ( ie: NestJS EventPattern / RolesGuard )\n // won't be affected by the use of this instrumentation\n Reflect.getMetadataKeys(handler).forEach(metadataKey => {\n Reflect.defineMetadata(\n metadataKey,\n Reflect.getMetadata(metadataKey, handler),\n wrappedHandler\n );\n });\n return wrappedHandler;\n}\n\nconst addError = (span: api.Span, error: Error) => {\n span.recordException(error);\n span.setStatus({ code: api.SpanStatusCode.ERROR, message: error.message });\n return error;\n};\n"]} | ||
| {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n} from '@opentelemetry/instrumentation';\nimport type { NestFactory } from '@nestjs/core/nest-factory.js';\nimport type { RouterExecutionContext } from '@nestjs/core/router/router-execution-context.js';\nimport type { Controller } from '@nestjs/common/interfaces';\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_ROUTE,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport { AttributeNames, NestType } from './enums';\n\nconst supportedVersions = ['>=4.0.0 <11'];\n\nexport class NestInstrumentation extends InstrumentationBase {\n static readonly COMPONENT = '@nestjs/core';\n static readonly COMMON_ATTRIBUTES = {\n component: NestInstrumentation.COMPONENT,\n };\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n NestInstrumentation.COMPONENT,\n supportedVersions\n );\n\n module.files.push(\n this.getNestFactoryFileInstrumentation(supportedVersions),\n this.getRouterExecutionContextFileInstrumentation(supportedVersions)\n );\n\n return module;\n }\n\n getNestFactoryFileInstrumentation(versions: string[]) {\n return new InstrumentationNodeModuleFile(\n '@nestjs/core/nest-factory.js',\n versions,\n (NestFactoryStatic: any, moduleVersion?: string) => {\n this.ensureWrapped(\n NestFactoryStatic.NestFactoryStatic.prototype,\n 'create',\n createWrapNestFactoryCreate(this.tracer, moduleVersion)\n );\n return NestFactoryStatic;\n },\n (NestFactoryStatic: any) => {\n this._unwrap(NestFactoryStatic.NestFactoryStatic.prototype, 'create');\n }\n );\n }\n\n getRouterExecutionContextFileInstrumentation(versions: string[]) {\n return new InstrumentationNodeModuleFile(\n '@nestjs/core/router/router-execution-context.js',\n versions,\n (RouterExecutionContext: any, moduleVersion?: string) => {\n this.ensureWrapped(\n RouterExecutionContext.RouterExecutionContext.prototype,\n 'create',\n createWrapCreateHandler(this.tracer, moduleVersion)\n );\n return RouterExecutionContext;\n },\n (RouterExecutionContext: any) => {\n this._unwrap(\n RouterExecutionContext.RouterExecutionContext.prototype,\n 'create'\n );\n }\n );\n }\n\n private ensureWrapped(\n obj: any,\n methodName: string,\n wrapper: (original: any) => any\n ) {\n if (isWrapped(obj[methodName])) {\n this._unwrap(obj, methodName);\n }\n this._wrap(obj, methodName, wrapper);\n }\n}\n\nfunction createWrapNestFactoryCreate(\n tracer: api.Tracer,\n moduleVersion?: string\n) {\n return function wrapCreate(original: typeof NestFactory.create) {\n return function createWithTrace(\n this: typeof NestFactory,\n nestModule: any\n /* serverOrOptions */\n ) {\n const span = tracer.startSpan('Create Nest App', {\n attributes: {\n ...NestInstrumentation.COMMON_ATTRIBUTES,\n [AttributeNames.TYPE]: NestType.APP_CREATION,\n [AttributeNames.VERSION]: moduleVersion,\n [AttributeNames.MODULE]: nestModule.name,\n },\n });\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context.with(spanContext, async () => {\n try {\n return await original.apply(this, arguments as any);\n } catch (e: any) {\n throw addError(span, e);\n } finally {\n span.end();\n }\n });\n };\n };\n}\n\nfunction createWrapCreateHandler(tracer: api.Tracer, moduleVersion?: string) {\n return function wrapCreateHandler(\n original: RouterExecutionContext['create']\n ) {\n return function createHandlerWithTrace(\n this: RouterExecutionContext,\n instance: Controller,\n callback: (...args: any[]) => unknown\n ) {\n arguments[1] = createWrapHandler(tracer, moduleVersion, callback);\n const handler = original.apply(this, arguments as any);\n const callbackName = callback.name;\n const instanceName =\n instance.constructor && instance.constructor.name\n ? instance.constructor.name\n : 'UnnamedInstance';\n const spanName = callbackName\n ? `${instanceName}.${callbackName}`\n : instanceName;\n\n return function (\n this: any,\n req: any,\n res: any,\n next: (...args: any[]) => unknown\n ) {\n const span = tracer.startSpan(spanName, {\n attributes: {\n ...NestInstrumentation.COMMON_ATTRIBUTES,\n [AttributeNames.VERSION]: moduleVersion,\n [AttributeNames.TYPE]: NestType.REQUEST_CONTEXT,\n [SEMATTRS_HTTP_METHOD]: req.method,\n [SEMATTRS_HTTP_URL]: req.originalUrl || req.url,\n [SEMATTRS_HTTP_ROUTE]:\n req.route?.path || req.routeOptions?.url || req.routerPath,\n [AttributeNames.CONTROLLER]: instanceName,\n [AttributeNames.CALLBACK]: callbackName,\n },\n });\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context.with(spanContext, async () => {\n try {\n return await handler.apply(this, arguments as any);\n } catch (e: any) {\n throw addError(span, e);\n } finally {\n span.end();\n }\n });\n };\n };\n };\n}\n\nfunction createWrapHandler(\n tracer: api.Tracer,\n moduleVersion: string | undefined,\n handler: Function\n) {\n const spanName = handler.name || 'anonymous nest handler';\n const options = {\n attributes: {\n ...NestInstrumentation.COMMON_ATTRIBUTES,\n [AttributeNames.VERSION]: moduleVersion,\n [AttributeNames.TYPE]: NestType.REQUEST_HANDLER,\n [AttributeNames.CALLBACK]: handler.name,\n },\n };\n const wrappedHandler = function (this: RouterExecutionContext) {\n const span = tracer.startSpan(spanName, options);\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context.with(spanContext, async () => {\n try {\n return await handler.apply(this, arguments);\n } catch (e: any) {\n throw addError(span, e);\n } finally {\n span.end();\n }\n });\n };\n\n if (handler.name) {\n Object.defineProperty(wrappedHandler, 'name', { value: handler.name });\n }\n\n // Get the current metadata and set onto the wrapper to ensure other decorators ( ie: NestJS EventPattern / RolesGuard )\n // won't be affected by the use of this instrumentation\n Reflect.getMetadataKeys(handler).forEach(metadataKey => {\n Reflect.defineMetadata(\n metadataKey,\n Reflect.getMetadata(metadataKey, handler),\n wrappedHandler\n );\n });\n return wrappedHandler;\n}\n\nconst addError = (span: api.Span, error: Error) => {\n span.recordException(error);\n span.setStatus({ code: api.SpanStatusCode.ERROR, message: error.message });\n return error;\n};\n"]} |
@@ -1,3 +0,3 @@ | ||
| export declare const PACKAGE_VERSION = "0.38.0"; | ||
| export declare const PACKAGE_VERSION = "0.39.0"; | ||
| export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-nestjs-core"; | ||
| //# sourceMappingURL=version.d.ts.map |
@@ -20,4 +20,4 @@ "use strict"; | ||
| // this is autogenerated file, see scripts/version-update.js | ||
| exports.PACKAGE_VERSION = '0.38.0'; | ||
| exports.PACKAGE_VERSION = '0.39.0'; | ||
| exports.PACKAGE_NAME = '@opentelemetry/instrumentation-nestjs-core'; | ||
| //# sourceMappingURL=version.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,4CAA4C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.38.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-nestjs-core';\n"]} | ||
| {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,4CAA4C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.39.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-nestjs-core';\n"]} |
+2
-2
| { | ||
| "name": "@opentelemetry/instrumentation-nestjs-core", | ||
| "version": "0.38.0", | ||
| "version": "0.39.0", | ||
| "description": "OpenTelemetry instrumentation for NestJS server side applications framework", | ||
@@ -77,3 +77,3 @@ "main": "build/src/index.js", | ||
| "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme", | ||
| "gitHead": "0af1b70f7c3c9763c85ac51fa5e334c1e1512020" | ||
| "gitHead": "ad8436d6a4174f2288cb939080cd4e74da94b0d7" | ||
| } |
+1
-1
@@ -20,3 +20,3 @@ # OpenTelemetry NestJS Instrumentation for Node.js | ||
| - `>=4.0.0` | ||
| - [`@nestjs/core`](https://www.npmjs.com/package/@nestjs/core) versions `>=4.0.0 <11` | ||
@@ -23,0 +23,0 @@ ## Usage |
51943
-0.36%312
-1.27%