diff --git a/detectors/node/resource-detector-deployment/README.md b/detectors/node/resource-detector-deployment/README.md new file mode 100644 index 00000000..43dfa4f7 --- /dev/null +++ b/detectors/node/resource-detector-deployment/README.md @@ -0,0 +1,44 @@ +# OpenTelemetry Deployment Resource Detector for Node.js +[![NPM version](https://img.shields.io/npm/v/opentelemetry-resource-detector-deployment.svg)](https://www.npmjs.com/package/opentelemetry-resource-detector-deployment) + +This module provides automatic resource detector for [Deployment](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/deployment_environment.md) + +## Installation + +```bash +npm install --save opentelemetry-resource-detector-deployment +``` + +## Usage + +### Synchronous SDK Initialization +```js +import { detectSyncResources } from 'opentelemetry-resource-detector-sync-api'; +import { deploymentSyncDetector } from 'opentelemetry-resource-detector-deployment'; + +const resource = detectSyncResources({ + detectors: [deploymentSyncDetector, /* add other sync detectors here */], +}); +const tracerProvider = new NodeTracerProvider({ resource }); +``` + +### Asynchronous SDK Initialization +```js +import { detectResources } from '@opentelemetry/resources'; +import { deploymentDetector } from 'opentelemetry-resource-detector-deployment'; + +( async () => { + const resource = await detectResources({ + detectors: [deploymentDetector, /* add other async detectors here */], + }); + const tracerProvider = new NodeTracerProvider({ resource }); + // Initialize auto instrumentation plugins and register provider. + // Make sure you don't 'require' instrumented packages elsewhere + // before they are registered here +})(); +``` + +## Attributes +| Attribute | Type | Source | +| --- | --- | --- | +| `deployment.environment` | string | `process.env.NODE_ENV` | diff --git a/detectors/node/resource-detector-deployment/package.json b/detectors/node/resource-detector-deployment/package.json new file mode 100644 index 00000000..aca87996 --- /dev/null +++ b/detectors/node/resource-detector-deployment/package.json @@ -0,0 +1,61 @@ +{ + "name": "opentelemetry-resource-detector-deployment", + "version": "0.4.0", + "description": "open telemetry resource detector for deployment", + "keywords": [ + "opentelemetry" + ], + "homepage": "https://github.com/aspecto-io/opentelemetry-ext-js", + "license": "Apache-2.0", + "main": "dist/src/index.js", + "files": [ + "dist/src/**/*.js", + "dist/src/**/*.d.ts", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/aspecto-io/opentelemetry-ext-js.git" + }, + "scripts": { + "build": "tsc", + "prepare": "yarn run build", + "test": "mocha", + "test:jaeger": "OTEL_EXPORTER_JAEGER_AGENT_HOST=localhost mocha", + "watch": "tsc -w", + "version:update": "node ../../../scripts/version-update.js", + "test:ci": "yarn test", + "version": "yarn run version:update" + }, + "bugs": { + "url": "https://github.com/aspecto-io/opentelemetry-ext-js/issues" + }, + "peerDependencies": { + "@opentelemetry/api": "^0.20.0" + }, + "dependencies": { + "@opentelemetry/resources": "^0.20.0", + "@opentelemetry/semantic-conventions": "^0.20.0", + "opentelemetry-resource-detector-sync-api": "^0.4.0" + }, + "devDependencies": { + "@opentelemetry/api": "^0.20.0", + "@types/mocha": "^8.2.2", + "expect": "^26.6.2", + "mocha": "^8.4.0", + "opentelemetry-instrumentation-mocha": "0.0.1-rc.1", + "ts-node": "^9.1.1", + "typescript": "^4.0.5" + }, + "mocha": { + "extension": [ + "ts" + ], + "spec": "test/**/*.spec.ts", + "require": [ + "ts-node/register", + "opentelemetry-instrumentation-mocha" + ] + } +} diff --git a/detectors/node/resource-detector-deployment/src/deployment.ts b/detectors/node/resource-detector-deployment/src/deployment.ts new file mode 100644 index 00000000..fc610f09 --- /dev/null +++ b/detectors/node/resource-detector-deployment/src/deployment.ts @@ -0,0 +1,18 @@ +import { ResourceAttributes as ResourceAttributesKeys } from '@opentelemetry/semantic-conventions'; +import { Resource } from '@opentelemetry/resources'; +import { SyncDetector, syncDetectorToDetector } from 'opentelemetry-resource-detector-sync-api'; + +class DeploymentSyncDetector implements SyncDetector { + detect(): Resource { + if (process.env.NODE_ENV) { + return new Resource({ + [ResourceAttributesKeys.DEPLOYMENT_ENVIRONMENT]: process.env.NODE_ENV, + }); + } else { + return Resource.empty(); + } + } +} + +export const deploymentSyncDetector = new DeploymentSyncDetector(); +export const deploymentDetector = syncDetectorToDetector(deploymentSyncDetector); diff --git a/detectors/node/resource-detector-deployment/src/index.ts b/detectors/node/resource-detector-deployment/src/index.ts new file mode 100644 index 00000000..1c2c25e4 --- /dev/null +++ b/detectors/node/resource-detector-deployment/src/index.ts @@ -0,0 +1 @@ +export * from './deployment'; diff --git a/detectors/node/resource-detector-deployment/test/deployment.spec.ts b/detectors/node/resource-detector-deployment/test/deployment.spec.ts new file mode 100644 index 00000000..bea78323 --- /dev/null +++ b/detectors/node/resource-detector-deployment/test/deployment.spec.ts @@ -0,0 +1,24 @@ +import 'mocha'; +import expect from 'expect'; +import { deploymentDetector, deploymentSyncDetector } from '../src'; +import { ResourceAttributes } from '@opentelemetry/semantic-conventions'; + +describe('deployment detector', () => { + it('read deployment environment from environment variable', () => { + process.env.NODE_ENV = 'env from testing'; + const resource = deploymentSyncDetector.detect(); + expect(resource.attributes[ResourceAttributes.DEPLOYMENT_ENVIRONMENT]).toMatch('env from testing'); + }); + + it('no deployment environment in environment variable', () => { + delete process.env.NODE_ENV; + const resource = deploymentSyncDetector.detect(); + expect(resource.attributes[ResourceAttributes.DEPLOYMENT_ENVIRONMENT]).toBeUndefined(); + }); + + it('async version', async () => { + process.env.NODE_ENV = 'env from testing'; + const resource = await deploymentDetector.detect(); + expect(resource.attributes[ResourceAttributes.DEPLOYMENT_ENVIRONMENT]).toMatch('env from testing'); + }); +}); diff --git a/detectors/node/resource-detector-deployment/tsconfig.json b/detectors/node/resource-detector-deployment/tsconfig.json new file mode 100644 index 00000000..e3fb3751 --- /dev/null +++ b/detectors/node/resource-detector-deployment/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "./dist", + "types": ["node"] + } +} diff --git a/detectors/node/resource-detector-service/README.md b/detectors/node/resource-detector-service/README.md new file mode 100644 index 00000000..930c8090 --- /dev/null +++ b/detectors/node/resource-detector-service/README.md @@ -0,0 +1,46 @@ +# OpenTelemetry Service Resource Detector for Node.js +[![NPM version](https://img.shields.io/npm/v/opentelemetry-resource-detector-service.svg)](https://www.npmjs.com/package/opentelemetry-resource-detector-service) + +This module provides automatic resource detector for [Service](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/resource/semantic_conventions#service) + +## Installation + +```bash +npm install --save opentelemetry-resource-detector-service +``` + +## Usage + +### Synchronous SDK Initialization +```js +import { detectSyncResources } from 'opentelemetry-resource-detector-sync-api'; +import { serviceSyncDetector } from 'opentelemetry-resource-detector-service'; + +const resource = detectSyncResources({ + detectors: [serviceSyncDetector, /* add other sync detectors here */], +}); +const tracerProvider = new NodeTracerProvider({ resource }); +``` + +### Asynchronous SDK Initialization +```js +import { detectResources } from '@opentelemetry/resources'; +import { serviceDetector } from 'opentelemetry-resource-detector-service'; + +( async () => { + const resource = await detectResources({ + detectors: [serviceDetector, /* add other async detectors here */], + }); + const tracerProvider = new NodeTracerProvider({ resource }); + // Initialize auto instrumentation plugins and register provider. + // Make sure you don't 'require' instrumented packages elsewhere + // before they are registered here +})(); +``` + +## Attributes +| Attribute | Type | Source | +| --- | --- | --- | +| `service.name` | string | `process.env.OTEL_SERVICE_NAME`. If not set, will try to read `name` attribute from package.json. If not set will fallback to `unknown_service: concatenated with process.executable.name` (according to specification) | +| `serivce.version` | string | `version` attribute from package.json | +| `service.instance.id` | [string (v4 UUID)](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)) | Automatically generated by the detector for each invocation of the service | diff --git a/detectors/node/resource-detector-service/package.json b/detectors/node/resource-detector-service/package.json new file mode 100644 index 00000000..4043e439 --- /dev/null +++ b/detectors/node/resource-detector-service/package.json @@ -0,0 +1,62 @@ +{ + "name": "opentelemetry-resource-detector-service", + "version": "0.4.0", + "description": "open telemetry resource detector for service", + "keywords": [ + "opentelemetry" + ], + "homepage": "https://github.com/aspecto-io/opentelemetry-ext-js", + "license": "Apache-2.0", + "main": "dist/src/index.js", + "files": [ + "dist/src/**/*.js", + "dist/src/**/*.d.ts", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/aspecto-io/opentelemetry-ext-js.git" + }, + "scripts": { + "build": "tsc", + "prepare": "yarn run build", + "test": "mocha", + "test:jaeger": "OTEL_EXPORTER_JAEGER_AGENT_HOST=localhost mocha", + "watch": "tsc -w", + "version:update": "node ../../../scripts/version-update.js", + "test:ci": "yarn test", + "version": "yarn run version:update" + }, + "bugs": { + "url": "https://github.com/aspecto-io/opentelemetry-ext-js/issues" + }, + "peerDependencies": { + "@opentelemetry/api": "^0.20.0" + }, + "dependencies": { + "@opentelemetry/resources": "^0.20.0", + "@opentelemetry/semantic-conventions": "^0.20.0", + "opentelemetry-resource-detector-sync-api": "^0.4.0", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@opentelemetry/api": "^0.20.0", + "@types/mocha": "^8.2.2", + "expect": "^26.6.2", + "mocha": "^8.4.0", + "opentelemetry-instrumentation-mocha": "0.0.1-rc.1", + "ts-node": "^9.1.1", + "typescript": "^4.0.5" + }, + "mocha": { + "extension": [ + "ts" + ], + "spec": "test/**/*.spec.ts", + "require": [ + "ts-node/register", + "opentelemetry-instrumentation-mocha" + ] + } +} diff --git a/detectors/node/resource-detector-service/src/index.ts b/detectors/node/resource-detector-service/src/index.ts new file mode 100644 index 00000000..f78beabc --- /dev/null +++ b/detectors/node/resource-detector-service/src/index.ts @@ -0,0 +1 @@ +export * from './service'; diff --git a/detectors/node/resource-detector-service/src/service.ts b/detectors/node/resource-detector-service/src/service.ts new file mode 100644 index 00000000..a520b393 --- /dev/null +++ b/detectors/node/resource-detector-service/src/service.ts @@ -0,0 +1,45 @@ +import { ResourceAttributes as ResourceAttributesKeys } from '@opentelemetry/semantic-conventions'; +import { Resource, defaultServiceName, ResourceAttributes } from '@opentelemetry/resources'; +import { SyncDetector, syncDetectorToDetector } from 'opentelemetry-resource-detector-sync-api'; +import { v4 as uuidv4 } from 'uuid'; +import * as fs from 'fs'; + +// set as global to make sure it's the same on any invocation even for multiple +// instances of ServiceSyncDetector +const instanceId = uuidv4(); + +class ServiceSyncDetector implements SyncDetector { + detect(): Resource { + const packageJson = this.loadJsonFile('package.json'); + const attributes: ResourceAttributes = { + [ResourceAttributesKeys.SERVICE_INSTANCE_ID]: instanceId, + [ResourceAttributesKeys.SERVICE_NAME]: this.getServiceName(packageJson), + }; + const serviceVersion = packageJson?.version; + if (serviceVersion) { + attributes[ResourceAttributesKeys.SERVICE_VERSION] = serviceVersion; + } + return new Resource(attributes); + } + + getServiceName(packageJson: any): string { + const fromEnv = process.env.OTEL_SERVICE_NAME; + if (fromEnv) return fromEnv; + + const fromPackageJson = packageJson?.name; + if (fromPackageJson) return fromPackageJson; + + return defaultServiceName(); + } + + loadJsonFile(path: string): any { + try { + return JSON.parse(fs.readFileSync(path).toString()); + } catch (err) { + return null; + } + } +} + +export const serviceSyncDetector = new ServiceSyncDetector(); +export const serviceDetector = syncDetectorToDetector(serviceSyncDetector); diff --git a/detectors/node/resource-detector-service/test/service.spec.ts b/detectors/node/resource-detector-service/test/service.spec.ts new file mode 100644 index 00000000..978ec739 --- /dev/null +++ b/detectors/node/resource-detector-service/test/service.spec.ts @@ -0,0 +1,37 @@ +import 'mocha'; +import expect from 'expect'; +import { serviceDetector, serviceSyncDetector } from '../src'; +import { ResourceAttributes } from '@opentelemetry/semantic-conventions'; + +describe('service detector', () => { + it('read service from package json', () => { + const resource = serviceSyncDetector.detect(); + expect(resource.attributes[ResourceAttributes.SERVICE_NAME]).toMatch('opentelemetry-resource-detector-service'); + expect(resource.attributes[ResourceAttributes.SERVICE_VERSION]).toMatch(/\d+.\d+.\d+/); + expect(resource.attributes[ResourceAttributes.SERVICE_INSTANCE_ID]).toMatch( + /[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}/ + ); + }); + + it('read service from env variable', () => { + process.env.OTEL_SERVICE_NAME = 'otel service name from env'; + const resource = serviceSyncDetector.detect(); + expect(resource.attributes[ResourceAttributes.SERVICE_NAME]).toMatch('otel service name from env'); + delete process.env.OTEL_SERVICE_NAME; + }); + + it('calling detect twice return same resource', () => { + const resource1 = serviceSyncDetector.detect(); + const resource2 = serviceSyncDetector.detect(); + expect(resource1).toStrictEqual(resource2); + }); + + it('async version', async () => { + const resource = await serviceDetector.detect(); + expect(resource.attributes[ResourceAttributes.SERVICE_NAME]).toMatch('opentelemetry-resource-detector-service'); + expect(resource.attributes[ResourceAttributes.SERVICE_VERSION]).toMatch(/\d+.\d+.\d+/); + expect(resource.attributes[ResourceAttributes.SERVICE_INSTANCE_ID]).toMatch( + /[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}/ + ); + }); +}); diff --git a/detectors/node/resource-detector-service/tsconfig.json b/detectors/node/resource-detector-service/tsconfig.json new file mode 100644 index 00000000..e3fb3751 --- /dev/null +++ b/detectors/node/resource-detector-service/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "./dist", + "types": ["node"] + } +} diff --git a/detectors/resource-detector-sync-api/package.json b/detectors/resource-detector-sync-api/package.json new file mode 100644 index 00000000..879160bc --- /dev/null +++ b/detectors/resource-detector-sync-api/package.json @@ -0,0 +1,41 @@ +{ + "name": "opentelemetry-resource-detector-sync-api", + "version": "0.4.0", + "description": "open telemetry api for sync resource detectors", + "keywords": [ + "opentelemetry" + ], + "homepage": "https://github.com/aspecto-io/opentelemetry-ext-js", + "license": "Apache-2.0", + "main": "dist/src/index.js", + "files": [ + "dist/src/**/*.js", + "dist/src/**/*.d.ts", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/aspecto-io/opentelemetry-ext-js.git" + }, + "scripts": { + "build": "tsc", + "prepare": "yarn run build", + "watch": "tsc -w", + "version:update": "node ../../scripts/version-update.js", + "version": "yarn run version:update" + }, + "bugs": { + "url": "https://github.com/aspecto-io/opentelemetry-ext-js/issues" + }, + "peerDependencies": { + "@opentelemetry/api": "^0.20.0" + }, + "dependencies": { + "@opentelemetry/resources": "^0.20.0" + }, + "devDependencies": { + "ts-node": "^9.1.1", + "typescript": "^4.0.5" + } +} diff --git a/detectors/resource-detector-sync-api/src/SyncDetector.ts b/detectors/resource-detector-sync-api/src/SyncDetector.ts new file mode 100644 index 00000000..814dcfb7 --- /dev/null +++ b/detectors/resource-detector-sync-api/src/SyncDetector.ts @@ -0,0 +1,11 @@ +import { Detector, Resource, ResourceDetectionConfig } from '@opentelemetry/resources'; + +export interface SyncDetector { + detect(): Resource; +} + +export const syncDetectorToDetector = (syncDetector: SyncDetector): Detector => { + return { + detect: (_config?: ResourceDetectionConfig): Promise => Promise.resolve(syncDetector.detect()), + }; +}; diff --git a/detectors/resource-detector-sync-api/src/config.ts b/detectors/resource-detector-sync-api/src/config.ts new file mode 100644 index 00000000..e24f12e9 --- /dev/null +++ b/detectors/resource-detector-sync-api/src/config.ts @@ -0,0 +1,5 @@ +import { SyncDetector } from './SyncDetector'; + +export interface ResourceSyncDetectionConfig { + detectors?: Array; +} diff --git a/detectors/resource-detector-sync-api/src/detect-sync-resources.ts b/detectors/resource-detector-sync-api/src/detect-sync-resources.ts new file mode 100644 index 00000000..3302f3fc --- /dev/null +++ b/detectors/resource-detector-sync-api/src/detect-sync-resources.ts @@ -0,0 +1,53 @@ +// This code is a modification of the version form SDK: +// https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-resources/src/platform/node/detect-resources.ts + +import { diag } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { ResourceSyncDetectionConfig } from './config'; +import * as util from 'util'; + +/** + * Runs all SYNC resource detectors and returns the results merged into a single + * Resource. + * + * @param config Configuration for resource detection + */ +export const detectSyncResources = (config: ResourceSyncDetectionConfig = {}): Resource => { + const internalConfig: ResourceSyncDetectionConfig = Object.assign(config); + + const resources: Array = (internalConfig.detectors || []).map((d) => { + try { + const resource = d.detect(); + diag.debug(`${d.constructor.name} found resource.`, resource); + return resource; + } catch (e) { + diag.debug(`${d.constructor.name} failed: ${e.message}`); + return Resource.empty(); + } + }); + + // Future check if verbose logging is enabled issue #1903 + logResources(resources); + + return resources.reduce((acc, resource) => acc.merge(resource), Resource.empty()); +}; + +/** + * Writes debug information about the detected resources to the logger defined in the resource detection config, if one is provided. + * + * @param resources The array of {@link Resource} that should be logged. Empty entries will be ignored. + */ +const logResources = (resources: Array) => { + resources.forEach((resource) => { + // Print only populated resources + if (Object.keys(resource.attributes).length > 0) { + const resourceDebugString = util.inspect(resource.attributes, { + depth: 2, + breakLength: Infinity, + sorted: true, + compact: false, + }); + diag.verbose(resourceDebugString); + } + }); +}; diff --git a/detectors/resource-detector-sync-api/src/index.ts b/detectors/resource-detector-sync-api/src/index.ts new file mode 100644 index 00000000..fdf64c12 --- /dev/null +++ b/detectors/resource-detector-sync-api/src/index.ts @@ -0,0 +1,3 @@ +export { SyncDetector, syncDetectorToDetector } from './SyncDetector'; +export { detectSyncResources } from './detect-sync-resources'; +export { ResourceSyncDetectionConfig } from './config'; diff --git a/detectors/resource-detector-sync-api/tsconfig.json b/detectors/resource-detector-sync-api/tsconfig.json new file mode 100644 index 00000000..813b5123 --- /dev/null +++ b/detectors/resource-detector-sync-api/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "./dist", + "types": ["node"] + } +} diff --git a/lerna.json b/lerna.json index 49ca831e..aca13bfd 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "packages": ["packages/*"], + "packages": ["packages/*", "detectors/*", "detectors/node/*"], "version": "independent", "npmClient": "yarn", "useWorkspaces": true diff --git a/package.json b/package.json index ced01972..c0da6389 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,8 @@ "prettier": "2.3.0" }, "workspaces": [ - "packages/*" + "packages/*", + "detectors/*", + "detectors/node/*" ] } diff --git a/packages/instrumentation-amqplib/tsconfig.json b/packages/instrumentation-amqplib/tsconfig.json index 5d6fe9a3..a9c5d976 100644 --- a/packages/instrumentation-amqplib/tsconfig.json +++ b/packages/instrumentation-amqplib/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "dist" diff --git a/packages/instrumentation-aws-sdk/tsconfig.json b/packages/instrumentation-aws-sdk/tsconfig.json index 5d6fe9a3..a9c5d976 100644 --- a/packages/instrumentation-aws-sdk/tsconfig.json +++ b/packages/instrumentation-aws-sdk/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "dist" diff --git a/packages/instrumentation-elasticsearch/tsconfig.json b/packages/instrumentation-elasticsearch/tsconfig.json index 8d8c772a..1e04ca35 100644 --- a/packages/instrumentation-elasticsearch/tsconfig.json +++ b/packages/instrumentation-elasticsearch/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist" diff --git a/packages/instrumentation-express/tsconfig.json b/packages/instrumentation-express/tsconfig.json index 5d6fe9a3..a9c5d976 100644 --- a/packages/instrumentation-express/tsconfig.json +++ b/packages/instrumentation-express/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "dist" diff --git a/packages/instrumentation-kafkajs/tsconfig.json b/packages/instrumentation-kafkajs/tsconfig.json index 5d6fe9a3..a9c5d976 100644 --- a/packages/instrumentation-kafkajs/tsconfig.json +++ b/packages/instrumentation-kafkajs/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "dist" diff --git a/packages/instrumentation-mongoose/tsconfig.json b/packages/instrumentation-mongoose/tsconfig.json index 8d8c772a..1e04ca35 100644 --- a/packages/instrumentation-mongoose/tsconfig.json +++ b/packages/instrumentation-mongoose/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist" diff --git a/packages/instrumentation-neo4j/tsconfig.json b/packages/instrumentation-neo4j/tsconfig.json index 8d8c772a..1e04ca35 100644 --- a/packages/instrumentation-neo4j/tsconfig.json +++ b/packages/instrumentation-neo4j/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist" diff --git a/packages/instrumentation-sequelize/tsconfig.json b/packages/instrumentation-sequelize/tsconfig.json index 8d8c772a..1e04ca35 100644 --- a/packages/instrumentation-sequelize/tsconfig.json +++ b/packages/instrumentation-sequelize/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist" diff --git a/packages/instrumentation-socket.io/tsconfig.json b/packages/instrumentation-socket.io/tsconfig.json index 68e2af04..4ead0182 100644 --- a/packages/instrumentation-socket.io/tsconfig.json +++ b/packages/instrumentation-socket.io/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist", diff --git a/packages/instrumentation-testing-utils/tsconfig.json b/packages/instrumentation-testing-utils/tsconfig.json index 5d6fe9a3..a9c5d976 100644 --- a/packages/instrumentation-testing-utils/tsconfig.json +++ b/packages/instrumentation-testing-utils/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "dist" diff --git a/packages/instrumentation-typeorm/tsconfig.json b/packages/instrumentation-typeorm/tsconfig.json index 2035924f..dae3cf34 100644 --- a/packages/instrumentation-typeorm/tsconfig.json +++ b/packages/instrumentation-typeorm/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist" diff --git a/packages/propagation-utils/tsconfig.json b/packages/propagation-utils/tsconfig.json index 45f43ca2..813b5123 100644 --- a/packages/propagation-utils/tsconfig.json +++ b/packages/propagation-utils/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "./dist", diff --git a/packages/tsconfig.base.json b/tsconfig.base.json similarity index 100% rename from packages/tsconfig.base.json rename to tsconfig.base.json