diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 734bd6b29d..618e168e1e 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -47,10 +47,15 @@ jobs:
- name: Build 🔧
run: |
- npm run compile
+ npx lerna run compile
- name: Unit tests
- run: npm run test
+ run: |
+ # TODO(legendecas): webpack https://stackoverflow.com/questions/69692842/error-message-error0308010cdigital-envelope-routinesunsupported
+ if [ "${{ matrix.node_version }}" = "18" ]; then
+ export NODE_OPTIONS=--openssl-legacy-provider
+ fi
+ npm run test
- name: Report Coverage
run: npm run codecov
if: ${{ matrix.node_version == '14' }}
@@ -88,7 +93,8 @@ jobs:
- name: Build 🔧
run: |
- npm run compile
+ npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
+ npx lerna run compile
- name: Unit tests
run: npm run test
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 79881b78dd..ce8e916111 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@ All notable changes to this project will be documented in this file.
### :boom: Breaking Change
+* feat(api): merge api-metrics into api [#3374](https://github.com/open-telemetry/opentelemetry-js/pull/3374) @legendecas
+
### :rocket: (Enhancement)
* feat(sdk-trace): re-export sdk-trace-base in sdk-trace-node and web [#3319](https://github.com/open-telemetry/opentelemetry-js/pull/3319) @legendecas
diff --git a/api-metrics/.eslintrc.js b/api-metrics/.eslintrc.js
deleted file mode 100644
index 7d5c10c7f9..0000000000
--- a/api-metrics/.eslintrc.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = {
- "env": {
- "mocha": true,
- "commonjs": true,
- "shared-node-browser": true
- },
- ...require('../eslint.config.js')
-}
diff --git a/api-metrics/LICENSE b/api-metrics/LICENSE
deleted file mode 100644
index 261eeb9e9f..0000000000
--- a/api-metrics/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
diff --git a/api-metrics/README.md b/api-metrics/README.md
deleted file mode 100644
index d9e8745ec7..0000000000
--- a/api-metrics/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# OpenTelemetry API for JavaScript
-
-[![NPM Published Version][npm-img]][npm-url]
-[![Apache License][license-image]][license-image]
-
-**Note: This is an experimental package under active development. New releases may include breaking changes.**
-
-This package provides everything needed to interact with the unstable OpenTelemetry Metrics API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser.
-
-## Beta Software - Use at your own risk
-
-The metrics API is considered alpha software and there is no guarantee of stability or long-term support. When the API is stabilized, it will be made available and supported long-term in the `@opentelemetry/api` package and this package will be deprecated.
-
-## Quick Start
-
-To get started you need to install the SDK and instrumentations, create a MeterProvider, and register it with the API.
-
-### Install Dependencies
-
-```sh
-$ # Install metrics dependencies
-$ npm install \
- @opentelemetry/api-metrics \
- @opentelemetry/sdk-metrics \
- @opentelemetry/exporter-prometheus # add exporters as needed
-```
-
-> Note: this example is for node.js. See [examples/tracer-web](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web) for a browser example.
-
-### Initialize the SDK
-
-Before any other module in your application is loaded, you must initialize the global tracer and meter providers. If you fail to initialize a provider, no-op implementations will be provided to any library which acquires them from the API.
-
-To collect traces and metrics, you will have to tell the SDK where to export telemetry data to. This example uses Jaeger and Prometheus, but exporters exist for [other tracing backends][other-tracing-backends]. If you're not sure if there is an exporter for your tracing backend, contact your tracing provider.
-
-#### Metrics
-
-```javascript
-const api = require("@opentelemetry/api-metrics");
-const { MeterProvider } = require("@opentelemetry/sdk-metrics");
-const { PrometheusExporter } = require("@opentelemetry/exporter-prometheus");
-
-// The Prometheus exporter runs an HTTP server which the Prometheus backend
-// scrapes to collect metrics.
-const exporter = new PrometheusExporter({ startServer: true });
-// Creates MeterProvider and installs the exporter as a MetricReader
-const meterProvider = new MeterProvider();
-meterProvider.addMetricReader(exporter);
-
-/**
- * Registering the provider with the API allows it to be discovered
- * and used by instrumentation libraries.
- */
-api.metrics.setGlobalMeterProvider(meterProvider);
-```
-
-## Version Compatibility
-
-Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same `node_modules` structure, the OpenTelemetry API takes advantage of a variable on the `global` object to store the global API. When an API method in the API package is called, it checks if this `global` API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API.
-
-## Advanced Use
-
-### API Methods
-
-If you are writing an instrumentation library, or prefer to call the API methods directly rather than using the `register` method on the Tracer/Meter Provider, OpenTelemetry provides direct access to the underlying API methods through the `@opentelemetry/api-metrics` package. API entry points are defined as global singleton objects `trace`, `metrics`, `propagation`, and `context` which contain methods used to initialize SDK implementations and acquire resources from the API.
-
-- [Metrics API Documentation][metrics-api-docs]
-
-```javascript
-const api = require("@opentelemetry/api-metrics");
-
-/* Initialize MeterProvider */
-api.metrics.setGlobalMeterProvider(meterProvider);
-/* returns meterProvider (no-op if a working provider has not been initialized) */
-api.metrics.getMeterProvider();
-/* returns a meter from the registered global meter provider (no-op if a working provider has not been initialized) */
-api.metrics.getMeter(name, version);
-```
-
-## Useful links
-
-- For more information on OpenTelemetry, visit:
-- For more about OpenTelemetry JavaScript:
-- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
-
-## License
-
-Apache 2.0 - See [LICENSE][license-url] for more information.
-
-[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions
-[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE
-[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
-[npm-url]: https://www.npmjs.com/package/@opentelemetry/api-metrics
-[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi-metrics.svg
-
-[metrics-api-docs]: https://open-telemetry.github.io/opentelemetry-js/modules/_opentelemetry_api_metrics.html
-
-[other-tracing-backends]: https://github.com/open-telemetry/opentelemetry-js#trace-exporters
diff --git a/api-metrics/karma.conf.js b/api-metrics/karma.conf.js
deleted file mode 100644
index 29b7b9bc5a..0000000000
--- a/api-metrics/karma.conf.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*!
- * Copyright The OpenTelemetry 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 karmaWebpackConfig = require('../karma.webpack');
-const karmaBaseConfig = require('../karma.base');
-
-module.exports = (config) => {
- config.set(Object.assign({}, karmaBaseConfig, {
- webpack: karmaWebpackConfig
- }))
-};
diff --git a/api-metrics/package.json b/api-metrics/package.json
deleted file mode 100644
index fc920cbb19..0000000000
--- a/api-metrics/package.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "name": "@opentelemetry/api-metrics",
- "version": "1.0.0",
- "description": "Public metrics API for OpenTelemetry",
- "main": "build/src/index.js",
- "module": "build/esm/index.js",
- "esnext": "build/esnext/index.js",
- "types": "build/src/index.d.ts",
- "browser": {
- "./src/platform/index.ts": "./src/platform/browser/index.ts",
- "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js",
- "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js",
- "./build/src/platform/index.js": "./build/src/platform/browser/index.js"
- },
- "repository": "open-telemetry/opentelemetry-js",
- "scripts": {
- "prepublishOnly": "npm run compile",
- "compile": "tsc --build tsconfig.all.json",
- "clean": "tsc --build --clean tsconfig.all.json",
- "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts",
- "test:browser": "nyc karma start --single-run",
- "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../",
- "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../",
- "build": "npm run compile",
- "lint": "eslint . --ext .ts",
- "lint:fix": "eslint . --ext .ts --fix",
- "version": "node ../scripts/version-update.js",
- "watch": "tsc --build --watch tsconfig.all.json",
- "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies",
- "prewatch": "node ../scripts/version-update.js"
- },
- "keywords": [
- "opentelemetry",
- "nodejs",
- "browser",
- "profiling",
- "metrics",
- "stats",
- "monitoring"
- ],
- "author": "OpenTelemetry Authors",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=14"
- },
- "files": [
- "build/esm/**/*.js",
- "build/esm/**/*.js.map",
- "build/esm/**/*.d.ts",
- "build/esnext/**/*.js",
- "build/esnext/**/*.js.map",
- "build/esnext/**/*.d.ts",
- "build/src/**/*.js",
- "build/src/**/*.js.map",
- "build/src/**/*.d.ts",
- "doc",
- "LICENSE",
- "README.md"
- ],
- "publishConfig": {
- "access": "public"
- },
- "dependencies": {
- "@opentelemetry/api": "^1.0.0"
- },
- "devDependencies": {
- "@types/mocha": "10.0.0",
- "@types/node": "18.6.5",
- "@types/webpack-env": "1.16.3",
- "codecov": "3.8.3",
- "istanbul-instrumenter-loader": "3.0.1",
- "karma": "6.3.16",
- "karma-chrome-launcher": "3.1.0",
- "karma-coverage-istanbul-reporter": "3.0.3",
- "karma-mocha": "2.0.1",
- "karma-spec-reporter": "0.0.32",
- "karma-webpack": "4.0.2",
- "mocha": "10.0.0",
- "nyc": "15.1.0",
- "ts-loader": "8.4.0",
- "ts-mocha": "10.0.0",
- "typescript": "4.4.4",
- "webpack": "4.46.0"
- },
- "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-api-metrics",
- "sideEffects": false
-}
diff --git a/api-metrics/src/index.ts b/api-metrics/src/index.ts
deleted file mode 100644
index 5a59fe2d96..0000000000
--- a/api-metrics/src/index.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-export {
- createNoopMeter,
-} from './NoopMeter';
-
-export {
- MeterOptions,
- Meter,
-} from './types/Meter';
-
-export {
- MeterProvider,
-} from './types/MeterProvider';
-
-export {
- ValueType,
- Counter,
- Histogram,
- MetricOptions,
- Observable,
- ObservableCounter,
- ObservableGauge,
- ObservableUpDownCounter,
- UpDownCounter,
- BatchObservableCallback,
- MetricAttributes,
- MetricAttributeValue,
- ObservableCallback,
-} from './types/Metric';
-
-export {
- BatchObservableResult,
- ObservableResult,
-} from './types/ObservableResult';
-
-import { MetricsAPI } from './api/metrics';
-
-/** Entrypoint for metrics API */
-export const metrics = MetricsAPI.getInstance();
diff --git a/api-metrics/src/internal/global-utils.ts b/api-metrics/src/internal/global-utils.ts
deleted file mode 100644
index f83c203398..0000000000
--- a/api-metrics/src/internal/global-utils.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import { diag } from '@opentelemetry/api';
-import { _globalThis } from '../platform';
-import { MeterProvider } from '../types/MeterProvider';
-import { VERSION } from '../version';
-import { isCompatible } from './semver';
-
-const major = VERSION.split('.')[0];
-const GLOBAL_OPENTELEMETRY_METRICS_API_KEY = Symbol.for(
- `opentelemetry.js.api.metrics.${major}`
-);
-
-const _global = _globalThis as OTelGlobal;
-
-export function registerGlobal(
- type: Type,
- instance: OTelGlobalAPI[Type],
- allowOverride = false
-): boolean {
- const api = (_global[GLOBAL_OPENTELEMETRY_METRICS_API_KEY] = _global[
- GLOBAL_OPENTELEMETRY_METRICS_API_KEY
- ] ?? {
- version: VERSION,
- });
-
- if (!allowOverride && api[type]) {
- // already registered an API of this type
- const err = new Error(
- `@opentelemetry/api: Attempted duplicate registration of API: ${type}`
- );
- diag.error(err.stack || err.message);
- return false;
- }
-
- if (api.version !== VERSION) {
- // All registered APIs must be of the same version exactly
- const err = new Error(
- '@opentelemetry/api: All API registration versions must match'
- );
- diag.error(err.stack || err.message);
- return false;
- }
-
- api[type] = instance;
- diag.debug(
- `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`
- );
-
- return true;
-}
-
-export function getGlobal(
- type: Type
-): OTelGlobalAPI[Type] | undefined {
- const globalVersion = _global[GLOBAL_OPENTELEMETRY_METRICS_API_KEY]?.version;
- if (!globalVersion || !isCompatible(globalVersion)) {
- return;
- }
- return _global[GLOBAL_OPENTELEMETRY_METRICS_API_KEY]?.[type];
-}
-
-export function unregisterGlobal(type: keyof OTelGlobalAPI) {
- diag.debug(
- `@opentelemetry/api-metrics: Unregistering a global for ${type} v${VERSION}.`
- );
- const api = _global[GLOBAL_OPENTELEMETRY_METRICS_API_KEY];
-
- if (api) {
- delete api[type];
- }
-}
-
-type OTelGlobal = {
- [GLOBAL_OPENTELEMETRY_METRICS_API_KEY]?: OTelGlobalAPI;
-};
-
-type OTelGlobalAPI = {
- version: string;
-
- metrics?: MeterProvider;
-};
diff --git a/api-metrics/src/internal/semver.ts b/api-metrics/src/internal/semver.ts
deleted file mode 100644
index 076f9b9b51..0000000000
--- a/api-metrics/src/internal/semver.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import { VERSION } from '../version';
-
-const re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;
-
-/**
- * Create a function to test an API version to see if it is compatible with the provided ownVersion.
- *
- * The returned function has the following semantics:
- * - Exact match is always compatible
- * - Major versions must match exactly
- * - 1.x package cannot use global 2.x package
- * - 2.x package cannot use global 1.x package
- * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
- * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
- * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
- * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
- * - Patch and build tag differences are not considered at this time
- *
- * @param ownVersion version which should be checked against
- */
-export function _makeCompatibilityCheck(
- ownVersion: string
-): (globalVersion: string) => boolean {
- const acceptedVersions = new Set([ownVersion]);
- const rejectedVersions = new Set();
-
- const myVersionMatch = ownVersion.match(re);
- if (!myVersionMatch) {
- // we cannot guarantee compatibility so we always return noop
- return () => false;
- }
-
- const ownVersionParsed = {
- major: +myVersionMatch[1],
- minor: +myVersionMatch[2],
- patch: +myVersionMatch[3],
- prerelease: myVersionMatch[4],
- };
-
- // if ownVersion has a prerelease tag, versions must match exactly
- if (ownVersionParsed.prerelease != null) {
- return function isExactmatch(globalVersion: string): boolean {
- return globalVersion === ownVersion;
- };
- }
-
- function _reject(v: string) {
- rejectedVersions.add(v);
- return false;
- }
-
- function _accept(v: string) {
- acceptedVersions.add(v);
- return true;
- }
-
- return function isCompatible(globalVersion: string): boolean {
- if (acceptedVersions.has(globalVersion)) {
- return true;
- }
-
- if (rejectedVersions.has(globalVersion)) {
- return false;
- }
-
- const globalVersionMatch = globalVersion.match(re);
- if (!globalVersionMatch) {
- // cannot parse other version
- // we cannot guarantee compatibility so we always noop
- return _reject(globalVersion);
- }
-
- const globalVersionParsed = {
- major: +globalVersionMatch[1],
- minor: +globalVersionMatch[2],
- patch: +globalVersionMatch[3],
- prerelease: globalVersionMatch[4],
- };
-
- // if globalVersion has a prerelease tag, versions must match exactly
- if (globalVersionParsed.prerelease != null) {
- return _reject(globalVersion);
- }
-
- // major versions must match
- if (ownVersionParsed.major !== globalVersionParsed.major) {
- return _reject(globalVersion);
- }
-
- if (ownVersionParsed.major === 0) {
- if (
- ownVersionParsed.minor === globalVersionParsed.minor &&
- ownVersionParsed.patch <= globalVersionParsed.patch
- ) {
- return _accept(globalVersion);
- }
-
- return _reject(globalVersion);
- }
-
- if (ownVersionParsed.minor <= globalVersionParsed.minor) {
- return _accept(globalVersion);
- }
-
- return _reject(globalVersion);
- };
-}
-
-/**
- * Test an API version to see if it is compatible with this API.
- *
- * - Exact match is always compatible
- * - Major versions must match exactly
- * - 1.x package cannot use global 2.x package
- * - 2.x package cannot use global 1.x package
- * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
- * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
- * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
- * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
- * - Patch and build tag differences are not considered at this time
- *
- * @param version version of the API requesting an instance of the global API
- */
-export const isCompatible = _makeCompatibilityCheck(VERSION);
diff --git a/api-metrics/src/platform/browser/globalThis.ts b/api-metrics/src/platform/browser/globalThis.ts
deleted file mode 100644
index 1dece570f3..0000000000
--- a/api-metrics/src/platform/browser/globalThis.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-// Updates to this file should also be replicated to @opentelemetry/api and
-// @opentelemetry/core too.
-
-/**
- * - globalThis (New standard)
- * - self (Will return the current window instance for supported browsers)
- * - window (fallback for older browser implementations)
- * - global (NodeJS implementation)
- * - (When all else fails)
- */
-
-/** only globals that common to node and browsers are allowed */
-// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef
-export const _globalThis: typeof globalThis =
- typeof globalThis === 'object' ? globalThis :
- typeof self === 'object' ? self :
- typeof window === 'object' ? window :
- typeof global === 'object' ? global :
- {} as typeof globalThis;
diff --git a/api-metrics/test/api/api.test.ts b/api-metrics/test/api/api.test.ts
deleted file mode 100644
index 66278d6bc7..0000000000
--- a/api-metrics/test/api/api.test.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import * as assert from 'assert';
-import { metrics } from '../../src';
-import { NoopMeter } from '../../src/NoopMeter';
-import { NoopMeterProvider } from '../../src/NoopMeterProvider';
-
-
-describe('API', () => {
- it('should expose a meter provider via getMeterProvider', () => {
- const meter = metrics.getMeterProvider();
- assert.ok(meter);
- assert.strictEqual(typeof meter, 'object');
- });
-
- describe('GlobalMeterProvider', () => {
- const dummyMeter = new NoopMeter();
-
- beforeEach(() => {
- metrics.disable();
- });
-
- it('should use the global meter provider', () => {
- metrics.setGlobalMeterProvider(new TestMeterProvider());
- const meter = metrics.getMeterProvider().getMeter('name');
- assert.deepStrictEqual(meter, dummyMeter);
- });
-
- class TestMeterProvider extends NoopMeterProvider {
- override getMeter() {
- return dummyMeter;
- }
- }
- });
-});
diff --git a/api-metrics/test/index-webpack.ts b/api-metrics/test/index-webpack.ts
deleted file mode 100644
index 061a48ccfa..0000000000
--- a/api-metrics/test/index-webpack.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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 testsContext = require.context('.', true, /test$/);
-testsContext.keys().forEach(testsContext);
-
-const srcContext = require.context('.', true, /src$/);
-srcContext.keys().forEach(srcContext);
diff --git a/api-metrics/test/internal/global.test.ts b/api-metrics/test/internal/global.test.ts
deleted file mode 100644
index e239728706..0000000000
--- a/api-metrics/test/internal/global.test.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import * as assert from 'assert';
-import { getGlobal } from '../../src/internal/global-utils';
-import { _globalThis } from '../../src/platform';
-import { NoopMeterProvider } from '../../src/NoopMeterProvider';
-import sinon = require('sinon');
-import { diag } from '@opentelemetry/api';
-
-const api1 = require('../../src') as typeof import('../../src');
-
-// clear cache and load a second instance of the api
-for (const key of Object.keys(require.cache)) {
- delete require.cache[key];
-}
-const api2 = require('../../src') as typeof import('../../src');
-
-// This will need to be changed manually on major version changes.
-// It is intentionally not autogenerated to ensure the author of the change is aware of what they are doing.
-const GLOBAL_METRICS_API_SYMBOL_KEY = 'opentelemetry.js.api.metrics.1';
-
-const getMockLogger = () => ({
- verbose: sinon.spy(),
- debug: sinon.spy(),
- info: sinon.spy(),
- warn: sinon.spy(),
- error: sinon.spy(),
-});
-
-describe('Global Utils', () => {
- // prove they are separate instances
- assert.notEqual(api1, api2);
- // that return separate noop instances to start
- assert.notStrictEqual(
- api1.metrics.getMeterProvider(),
- api2.metrics.getMeterProvider(),
- );
-
- beforeEach(() => {
- api1.metrics.disable();
- // @ts-expect-error we are modifying internals for testing purposes here
- delete _globalThis[Symbol.for(GLOBAL_METRICS_API_SYMBOL_KEY)];
- });
-
- it('should change the global meter provider', () => {
- const original = api1.metrics.getMeterProvider();
- const newMeterProvider = new NoopMeterProvider();
- api1.metrics.setGlobalMeterProvider(newMeterProvider);
- assert.notStrictEqual(api1.metrics.getMeterProvider(), original);
- assert.strictEqual(api1.metrics.getMeterProvider(), newMeterProvider);
- });
-
- it('should load an instance from one which was set in the other', () => {
- api1.metrics.setGlobalMeterProvider(new NoopMeterProvider());
- assert.strictEqual(
- api1.metrics.getMeterProvider(),
- api2.metrics.getMeterProvider()
- );
- });
-
- it('should disable both if one is disabled', () => {
- const manager = new NoopMeterProvider();
- api1.metrics.setGlobalMeterProvider(manager);
-
- assert.strictEqual(manager, api1.metrics.getMeterProvider());
- api2.metrics.disable();
- assert.notStrictEqual(manager, api1.metrics.getMeterProvider());
- });
-
- it('should return the module NoOp implementation if the version is a mismatch', () => {
- const newMeterProvider = new NoopMeterProvider();
- api1.metrics.setGlobalMeterProvider(newMeterProvider);
-
- // ensure new meter provider is returned
- assert.strictEqual(api1.metrics.getMeterProvider(), newMeterProvider);
-
- const globalInstance = getGlobal('metrics');
- assert.ok(globalInstance);
- // @ts-expect-error we are modifying internals for testing purposes here
- _globalThis[Symbol.for(GLOBAL_METRICS_API_SYMBOL_KEY)].version = '0.0.1';
-
- // ensure new meter provider is not returned because version above is incompatible
- assert.notStrictEqual(
- api1.metrics.getMeterProvider(),
- newMeterProvider
- );
- });
-
- it('should log an error if there is a duplicate registration', () => {
- const logger = getMockLogger();
- diag.setLogger(logger);
-
- api1.metrics.setGlobalMeterProvider(new NoopMeterProvider());
- api1.metrics.setGlobalMeterProvider(new NoopMeterProvider());
-
- sinon.assert.calledOnce(logger.error);
- assert.strictEqual(logger.error.firstCall.args.length, 1);
- assert.ok(
- logger.error.firstCall.args[0].startsWith(
- 'Error: @opentelemetry/api: Attempted duplicate registration of API: metrics'
- )
- );
- });
-});
diff --git a/api-metrics/test/internal/semver.test.ts b/api-metrics/test/internal/semver.test.ts
deleted file mode 100644
index e9ac3ec727..0000000000
--- a/api-metrics/test/internal/semver.test.ts
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import * as assert from 'assert';
-import {
- isCompatible,
- _makeCompatibilityCheck,
-} from '../../src/internal/semver';
-import { VERSION } from '../../src/version';
-
-describe('semver', () => {
- it('should be compatible if versions are equal', () => {
- assert.ok(isCompatible(VERSION));
- });
-
- it('returns false if own version cannot be parsed', () => {
- const check = _makeCompatibilityCheck('this is not semver');
- assert.ok(!check('1.0.0'));
- });
-
- it('incompatible if other version cannot be parsed', () => {
- const check = _makeCompatibilityCheck('0.1.2');
- assert.ok(!check('this is not semver'));
- });
-
- describe('>= 1.0.0', () => {
- const globalVersion = '5.5.5';
- const vers: [string, boolean][] = [
- // same major/minor run should be compatible
- ['5.5.5', true],
- ['5.5.6', true],
- ['5.5.4', true],
-
- // prerelease version should not be compatible
- ['5.5.5-rc.0', false],
-
- // if our version has a minor version increase, we may try to call methods which don't exist on the global
- ['5.6.5', false],
- ['5.6.6', false],
- ['5.6.4', false],
-
- // if the global version is ahead of us by a minor revision, it has at least the methods we know about
- ['5.4.5', true],
- ['5.4.6', true],
- ['5.4.4', true],
-
- // major version mismatch is always incompatible
- ['6.5.5', false],
- ['6.5.6', false],
- ['6.5.4', false],
- ['6.6.5', false],
- ['6.6.6', false],
- ['6.6.4', false],
- ['6.4.5', false],
- ['6.4.6', false],
- ['6.4.4', false],
- ['4.5.5', false],
- ['4.5.6', false],
- ['4.5.4', false],
- ['4.6.5', false],
- ['4.6.6', false],
- ['4.6.4', false],
- ['4.4.5', false],
- ['4.4.6', false],
- ['4.4.4', false],
- ];
-
- test(globalVersion, vers);
- });
-
- describe('< 1.0.0', () => {
- const globalVersion = '0.5.5';
- const vers: [string, boolean][] = [
- // same minor/patch should be compatible
- ['0.5.5', true],
-
- // prerelease version should not be compatible
- ['0.5.5-rc.0', false],
-
- // if our version has a patch version increase, we may try to call methods which don't exist on the global
- ['0.5.6', false],
-
- // if the global version is ahead of us by a patch revision, it has at least the methods we know about
- ['0.5.4', true],
-
- // minor version mismatch is always incompatible
- ['0.6.5', false],
- ['0.6.6', false],
- ['0.6.4', false],
- ['0.4.5', false],
- ['0.4.6', false],
- ['0.4.4', false],
-
- // major version mismatch is always incompatible
- ['1.5.5', false],
- ['1.5.6', false],
- ['1.5.4', false],
- ['1.6.5', false],
- ['1.6.6', false],
- ['1.6.4', false],
- ['1.4.5', false],
- ['1.4.6', false],
- ['1.4.4', false],
- ];
-
- test(globalVersion, vers);
- });
-
- describe('global version is prerelease', () => {
- const globalVersion = '1.0.0-rc.3';
- const vers: [string, boolean][] = [
- // must match exactly
- ['1.0.0', false],
- ['1.0.0-rc.2', false],
- ['1.0.0-rc.4', false],
-
- ['1.0.0-rc.3', true],
- ];
-
- test(globalVersion, vers);
- });
-});
-
-function test(globalVersion: string, vers: [string, boolean][]) {
- describe(`global version is ${globalVersion}`, () => {
- for (const [version, compatible] of vers) {
- it(`API version ${version} ${
- compatible ? 'should' : 'should not'
- } be able to access global`, () => {
- const check = _makeCompatibilityCheck(version);
- assert.strictEqual(check(globalVersion), compatible);
- });
- }
- });
-}
diff --git a/api-metrics/test/types/Metric.test.ts b/api-metrics/test/types/Metric.test.ts
deleted file mode 100644
index a499db168f..0000000000
--- a/api-metrics/test/types/Metric.test.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import { Counter, UpDownCounter, Histogram } from '../../src';
-
-describe('Metric', () => {
- describe('Counter', () =>{
- it('enable not to define any type', () => {
- const counter: Counter = {
- add(_value: number, _attribute: unknown) {}
- };
- counter.add(1, { 'some-attribute': 'value' });
- });
-
- it('enable to use with type', () => {
- type Attributes = {
- 'some-attribute': string
- };
- const counter: Counter = {
- add(_value: number, _attribute: Attributes) {}
- };
- counter.add(1, { 'some-attribute': 'value' });
- });
-
- it('disable wrong attributes by typing', () => {
- type Attributes = {
- 'some-attribute': string
- };
- const counter: Counter = {
- add(_value: number, _attribute: Attributes) {}
- };
- // @ts-expect-error Expacting the type of Attributes
- counter.add(1, { 'another-attribute': 'value' });
- });
- });
-
- describe('UpDownCounter', () =>{
- it('enable not to define any type', () => {
- const counter: UpDownCounter = {
- add(_value: number, _attribute: unknown) {}
- };
- counter.add(1, { 'some-attribute': 'value' });
- });
-
- it('enable to use with type', () => {
- type Attributes = {
- 'some-attribute': string
- };
- const counter: UpDownCounter = {
- add(_value: number, _attribute: Attributes) {}
- };
- counter.add(1, { 'some-attribute': 'value' });
- });
-
- it('disable wrong attributes by typing', () => {
- type Attributes = {
- 'some-attribute': string
- };
- const counter: UpDownCounter = {
- add(_value: number, _attribute: Attributes) {}
- };
- // @ts-expect-error Expacting the type of Attributes
- counter.add(1, { 'another-attribute': 'value' });
- });
- });
-
- describe('Histogram', () =>{
- it('enable not to define any type', () => {
- const counter: Histogram = {
- record(_value: number, _attribute: unknown) {}
- };
- counter.record(1, { 'some-attribute': 'value' });
- });
-
- it('enable to use with type', () => {
- type Attributes = {
- 'some-attribute': string
- };
- const counter: Histogram = {
- record(_value: number, _attribute: Attributes) {}
- };
- counter.record(1, { 'some-attribute': 'value' });
- });
-
- it('disable wrong attributes by typing', () => {
- type Attributes = {
- 'some-attribute': string
- };
- const counter: Histogram = {
- record(_value: number, _attribute: Attributes) {}
- };
- // @ts-expect-error Expacting the type of Attributes
- counter.record(1, { 'another-attribute': 'value' });
- });
- });
-});
diff --git a/api-metrics/tsconfig.all.json b/api-metrics/tsconfig.all.json
deleted file mode 100644
index 4aa747e89f..0000000000
--- a/api-metrics/tsconfig.all.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "extends": "../tsconfig.base.json",
- "files": [],
- "references": [
- { "path": "./tsconfig.json" },
- { "path": "./tsconfig.esm.json" },
- { "path": "./tsconfig.esnext.json" }
- ]
-}
diff --git a/api-metrics/tsconfig.docs.json b/api-metrics/tsconfig.docs.json
deleted file mode 100644
index 627fa3ff3e..0000000000
--- a/api-metrics/tsconfig.docs.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "compilerOptions": {
- "rootDir": ".",
- "outDir": "build"
- },
- "include": [
- "src/**/*.ts"
- ],
- "typedocOptions": {
- "name": "OpenTelemetry API for JavaScript",
- "out": "docs/out",
- "mode": "file",
- "hideGenerator": true
- }
-}
diff --git a/api-metrics/tsconfig.esm.json b/api-metrics/tsconfig.esm.json
deleted file mode 100644
index 50611a86af..0000000000
--- a/api-metrics/tsconfig.esm.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "extends": "../tsconfig.base.esm.json",
- "compilerOptions": {
- "rootDir": "src",
- "outDir": "build/esm",
- "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo"
- },
- "include": [
- "src/**/*.ts"
- ]
-}
diff --git a/api-metrics/tsconfig.esnext.json b/api-metrics/tsconfig.esnext.json
deleted file mode 100644
index 0e3427cbc1..0000000000
--- a/api-metrics/tsconfig.esnext.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "extends": "../tsconfig.base.esnext.json",
- "compilerOptions": {
- "rootDir": "src",
- "outDir": "build/esnext",
- "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo"
- },
- "include": [
- "src/**/*.ts"
- ]
-}
diff --git a/api-metrics/tsconfig.json b/api-metrics/tsconfig.json
deleted file mode 100644
index e8b7e27e71..0000000000
--- a/api-metrics/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "../tsconfig.base.json",
- "compilerOptions": {
- "rootDir": ".",
- "outDir": "build"
- },
- "include": [
- "src/**/*.ts",
- "test/**/*.ts"
- ],
- "references": [
- {
- "path": "../api"
- }
- ]
-}
diff --git a/api-metrics/.eslintignore b/api/.eslintignore
similarity index 100%
rename from api-metrics/.eslintignore
rename to api/.eslintignore
diff --git a/api/TODO.md b/api/TODO.md
deleted file mode 100644
index 30f67e54ec..0000000000
--- a/api/TODO.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# TODO
-
-These tasks must be completed before the API package can be released from this repository.
-
-- [x] remove files specific to the API git repo
-- [x] add to lerna monorepo
- - [x] add tsconfig files
- - [x] add web testing
- - [x] build esm versions
-- [ ] test node versions 8, 10, and 12
-- [x] add to auto published docs
diff --git a/api/package.json b/api/package.json
index 4fb085886d..799ea8ab95 100644
--- a/api/package.json
+++ b/api/package.json
@@ -24,7 +24,7 @@
"lint:fix": "eslint . --ext .ts --fix",
"lint": "eslint . --ext .ts",
"test:browser": "nyc karma start --single-run",
- "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts",
+ "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'",
"test:webworker": "nyc karma start karma.worker.js --single-run",
"cycle-check": "dpdm --exit-code circular:1 src/index.ts",
"version": "node ../scripts/version-update.js",
@@ -63,6 +63,7 @@
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
"@types/sinon": "10.0.13",
+ "@types/webpack": "4.41.26",
"@types/webpack-env": "1.16.3",
"codecov": "3.8.3",
"dpdm": "3.10.0",
@@ -74,13 +75,16 @@
"karma-mocha-webworker": "1.3.0",
"karma-spec-reporter": "0.0.32",
"karma-webpack": "4.0.2",
+ "memfs": "3.4.9",
"mocha": "10.0.0",
"nyc": "15.1.0",
"sinon": "14.0.0",
"ts-loader": "8.4.0",
"ts-mocha": "10.0.0",
"typescript": "4.4.4",
+ "unionfs": "4.4.0",
"webpack": "4.46.0"
},
- "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api"
+ "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api",
+ "sideEffects": false
}
diff --git a/api-metrics/src/api/metrics.ts b/api/src/api/metrics.ts
similarity index 81%
rename from api-metrics/src/api/metrics.ts
rename to api/src/api/metrics.ts
index b3f9bac6b6..5353d84b91 100644
--- a/api-metrics/src/api/metrics.ts
+++ b/api/src/api/metrics.ts
@@ -14,10 +14,13 @@
* limitations under the License.
*/
-import { Meter, MeterOptions } from '../types/Meter';
-import { MeterProvider } from '../types/MeterProvider';
-import { NOOP_METER_PROVIDER } from '../NoopMeterProvider';
+import { Meter, MeterOptions } from '../metrics/Meter';
+import { MeterProvider } from '../metrics/MeterProvider';
+import { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';
import { getGlobal, registerGlobal, unregisterGlobal } from '../internal/global-utils';
+import { DiagAPI } from './diag';
+
+const API_NAME = 'metrics';
/**
* Singleton object which represents the entry point to the OpenTelemetry Metrics API
@@ -42,14 +45,14 @@ export class MetricsAPI {
* Returns true if the meter provider was successfully registered, else false.
*/
public setGlobalMeterProvider(provider: MeterProvider): boolean {
- return registerGlobal('metrics', provider);
+ return registerGlobal(API_NAME, provider, DiagAPI.instance());
}
/**
* Returns the global meter provider.
*/
public getMeterProvider(): MeterProvider {
- return getGlobal('metrics') || NOOP_METER_PROVIDER;
+ return getGlobal(API_NAME) || NOOP_METER_PROVIDER;
}
/**
@@ -61,6 +64,6 @@ export class MetricsAPI {
/** Remove the global meter provider */
public disable(): void {
- unregisterGlobal('metrics');
+ unregisterGlobal(API_NAME, DiagAPI.instance());
}
}
diff --git a/api-metrics/src/platform/index.ts b/api/src/context-api.ts
similarity index 72%
rename from api-metrics/src/platform/index.ts
rename to api/src/context-api.ts
index cdaf8858ce..db474def26 100644
--- a/api-metrics/src/platform/index.ts
+++ b/api/src/context-api.ts
@@ -14,4 +14,8 @@
* limitations under the License.
*/
-export * from './node';
+// Split module-level variable definition into separate files to allow
+// tree-shaking on each api instance.
+import { ContextAPI } from './api/context';
+/** Entrypoint for context API */
+export const context = ContextAPI.getInstance();
diff --git a/api/src/diag-api.ts b/api/src/diag-api.ts
new file mode 100644
index 0000000000..ecad84caf4
--- /dev/null
+++ b/api/src/diag-api.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright The OpenTelemetry 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
+ *
+ * https://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.
+ */
+
+// Split module-level variable definition into separate files to allow
+// tree-shaking on each api instance.
+import { DiagAPI } from './api/diag';
+/**
+ * Entrypoint for Diag API.
+ * Defines Diagnostic handler used for internal diagnostic logging operations.
+ * The default provides a Noop DiagLogger implementation which may be changed via the
+ * diag.setLogger(logger: DiagLogger) function.
+ */
+export const diag = DiagAPI.instance();
diff --git a/api/src/diag/index.ts b/api/src/diag/index.ts
deleted file mode 100644
index 751b5eeda2..0000000000
--- a/api/src/diag/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-export * from './consoleLogger';
-export * from './types';
diff --git a/api/src/index.ts b/api/src/index.ts
index 72825b0806..63325fa97e 100644
--- a/api/src/index.ts
+++ b/api/src/index.ts
@@ -14,75 +14,132 @@
* limitations under the License.
*/
-export * from './baggage/types';
+export {
+ BaggageEntry,
+ BaggageEntryMetadata,
+ Baggage,
+} from './baggage/types';
export { baggageEntryMetadataFromString } from './baggage/utils';
-export * from './common/Exception';
-export * from './common/Time';
-export * from './common/Attributes';
-export * from './diag';
-export * from './propagation/TextMapPropagator';
-export * from './trace/attributes';
-export * from './trace/link';
-export * from './trace/ProxyTracer';
-export * from './trace/ProxyTracerProvider';
-export * from './trace/Sampler';
-export * from './trace/SamplingResult';
-export * from './trace/span_context';
-export * from './trace/span_kind';
-export * from './trace/span';
-export * from './trace/SpanOptions';
-export * from './trace/status';
-export * from './trace/trace_flags';
-export * from './trace/trace_state';
-export { createTraceState } from './trace/internal/utils';
-export * from './trace/tracer_provider';
-export * from './trace/tracer';
-export * from './trace/tracer_options';
+export { Exception } from './common/Exception';
+export { HrTime, TimeInput } from './common/Time';
+export { Attributes, AttributeValue } from './common/Attributes';
+
+// Context APIs
+export {
+ createContextKey,
+ ROOT_CONTEXT,
+} from './context/context';
+export {
+ Context,
+ ContextManager,
+} from './context/types';
+export type { ContextAPI } from './api/context';
+
+// Diag APIs
+export { DiagConsoleLogger } from './diag/consoleLogger';
+export {
+ DiagLogFunction,
+ DiagLogger,
+ DiagLogLevel,
+ ComponentLoggerOptions,
+} from './diag/types';
+export type { DiagAPI } from './api/diag';
+
+// Metrics APIs
+export {
+ createNoopMeter,
+} from './metrics/NoopMeter';
+export {
+ MeterOptions,
+ Meter,
+} from './metrics/Meter';
+export {
+ MeterProvider,
+} from './metrics/MeterProvider';
+export {
+ ValueType,
+ Counter,
+ Histogram,
+ MetricOptions,
+ Observable,
+ ObservableCounter,
+ ObservableGauge,
+ ObservableUpDownCounter,
+ UpDownCounter,
+ BatchObservableCallback,
+ MetricAttributes,
+ MetricAttributeValue,
+ ObservableCallback,
+} from './metrics/Metric';
+export {
+ BatchObservableResult,
+ ObservableResult,
+} from './metrics/ObservableResult';
+// Propagation APIs
+export {
+ TextMapPropagator,
+ TextMapSetter,
+ TextMapGetter,
+ defaultTextMapGetter,
+ defaultTextMapSetter,
+} from './propagation/TextMapPropagator';
+export type { PropagationAPI } from './api/propagation';
+
+// Trace APIs
+export {
+ SpanAttributes,
+ SpanAttributeValue,
+} from './trace/attributes';
+export { Link } from './trace/link';
+export { ProxyTracer, TracerDelegator } from './trace/ProxyTracer';
+export { ProxyTracerProvider } from './trace/ProxyTracerProvider';
+export { Sampler } from './trace/Sampler';
+export { SamplingDecision, SamplingResult } from './trace/SamplingResult';
+export { SpanContext } from './trace/span_context';
+export { SpanKind } from './trace/span_kind';
+export { Span } from './trace/span';
+export { SpanOptions } from './trace/SpanOptions';
+export { SpanStatus, SpanStatusCode } from './trace/status';
+export { TraceFlags } from './trace/trace_flags';
+export { TraceState } from './trace/trace_state';
+export { createTraceState } from './trace/internal/utils';
+export { TracerProvider } from './trace/tracer_provider';
+export { Tracer } from './trace/tracer';
+export { TracerOptions } from './trace/tracer_options';
export {
isSpanContextValid,
isValidTraceId,
isValidSpanId,
} from './trace/spancontext-utils';
-
export {
INVALID_SPANID,
INVALID_TRACEID,
INVALID_SPAN_CONTEXT,
} from './trace/invalid-span-constants';
-
-export * from './context/context';
-export * from './context/types';
-
-import { ContextAPI } from './api/context';
-export type { ContextAPI } from './api/context';
-/** Entrypoint for context API */
-export const context = ContextAPI.getInstance();
-
-import { TraceAPI } from './api/trace';
export type { TraceAPI } from './api/trace';
-/** Entrypoint for trace API */
-export const trace = TraceAPI.getInstance();
-import { PropagationAPI } from './api/propagation';
-export type { PropagationAPI } from './api/propagation';
-/** Entrypoint for propagation API */
-export const propagation = PropagationAPI.getInstance();
-
-import { DiagAPI } from './api/diag';
-export type { DiagAPI } from './api/diag';
-
-/**
- * Entrypoint for Diag API.
- * Defines Diagnostic handler used for internal diagnostic logging operations.
- * The default provides a Noop DiagLogger implementation which may be changed via the
- * diag.setLogger(logger: DiagLogger) function.
- */
-export const diag = DiagAPI.instance();
+// Split module-level variable definition into separate files to allow
+// tree-shaking on each api instance.
+import { context } from './context-api';
+import { diag } from './diag-api';
+import { metrics } from './metrics-api';
+import { propagation } from './propagation-api';
+import { trace } from './trace-api';
-export default {
- trace,
+// Named export.
+export {
context,
+ diag,
+ metrics,
propagation,
+ trace,
+};
+// Default export.
+export default {
+ context,
diag,
+ metrics,
+ propagation,
+ trace,
};
diff --git a/api/src/internal/global-utils.ts b/api/src/internal/global-utils.ts
index 5306aa503b..0753bc2775 100644
--- a/api/src/internal/global-utils.ts
+++ b/api/src/internal/global-utils.ts
@@ -14,8 +14,9 @@
* limitations under the License.
*/
+import { MeterProvider } from '../metrics/MeterProvider';
import { ContextManager } from '../context/types';
-import { DiagLogger } from '../diag';
+import { DiagLogger } from '../diag/types';
import { _globalThis } from '../platform';
import { TextMapPropagator } from '../propagation/TextMapPropagator';
import type { TracerProvider } from '../trace/tracer_provider';
@@ -98,5 +99,6 @@ type OTelGlobalAPI = {
diag?: DiagLogger;
trace?: TracerProvider;
context?: ContextManager;
+ metrics?: MeterProvider;
propagation?: TextMapPropagator;
};
diff --git a/api-metrics/src/platform/browser/index.ts b/api/src/metrics-api.ts
similarity index 72%
rename from api-metrics/src/platform/browser/index.ts
rename to api/src/metrics-api.ts
index e9d6ebed71..16f399a22e 100644
--- a/api-metrics/src/platform/browser/index.ts
+++ b/api/src/metrics-api.ts
@@ -14,4 +14,8 @@
* limitations under the License.
*/
-export * from './globalThis';
+// Split module-level variable definition into separate files to allow
+// tree-shaking on each api instance.
+import { MetricsAPI } from './api/metrics';
+/** Entrypoint for metrics API */
+export const metrics = MetricsAPI.getInstance();
diff --git a/api-metrics/src/types/Meter.ts b/api/src/metrics/Meter.ts
similarity index 100%
rename from api-metrics/src/types/Meter.ts
rename to api/src/metrics/Meter.ts
diff --git a/api-metrics/src/types/MeterProvider.ts b/api/src/metrics/MeterProvider.ts
similarity index 100%
rename from api-metrics/src/types/MeterProvider.ts
rename to api/src/metrics/MeterProvider.ts
diff --git a/api-metrics/src/types/Metric.ts b/api/src/metrics/Metric.ts
similarity index 95%
rename from api-metrics/src/types/Metric.ts
rename to api/src/metrics/Metric.ts
index 6ca013766f..b20cfa4662 100644
--- a/api-metrics/src/types/Metric.ts
+++ b/api/src/metrics/Metric.ts
@@ -14,7 +14,8 @@
* limitations under the License.
*/
-import { Context, SpanAttributes, SpanAttributeValue } from '@opentelemetry/api';
+import { Attributes, AttributeValue } from '../common/Attributes';
+import { Context } from '../context/types';
import { BatchObservableResult, ObservableResult } from './ObservableResult';
/**
@@ -88,7 +89,7 @@ export interface Histogram {
});
});
});
+
+ describe('Global metrics', () => {
+ it('should expose a meter provider via getMeterProvider', () => {
+ const meter = metrics.getMeterProvider();
+ assert.ok(meter);
+ assert.strictEqual(typeof meter, 'object');
+ });
+
+ describe('GlobalMeterProvider', () => {
+ const dummyMeter = new NoopMeter();
+
+ beforeEach(() => {
+ metrics.disable();
+ });
+
+ it('should use the global meter provider', () => {
+ metrics.setGlobalMeterProvider(new TestMeterProvider());
+ const meter = metrics.getMeterProvider().getMeter('name');
+ assert.deepStrictEqual(meter, dummyMeter);
+ });
+
+ class TestMeterProvider extends NoopMeterProvider {
+ override getMeter() {
+ return dummyMeter;
+ }
+ }
+ });
+ });
});
diff --git a/api/test/baggage/Baggage.test.ts b/api/test/common/baggage/Baggage.test.ts
similarity index 99%
rename from api/test/baggage/Baggage.test.ts
rename to api/test/common/baggage/Baggage.test.ts
index 080b6a4193..81895306c0 100644
--- a/api/test/baggage/Baggage.test.ts
+++ b/api/test/common/baggage/Baggage.test.ts
@@ -19,7 +19,7 @@ import {
ROOT_CONTEXT,
propagation,
baggageEntryMetadataFromString,
-} from '../../src';
+} from '../../../src';
describe('Baggage', () => {
describe('create', () => {
diff --git a/api/test/context/NoopContextManager.test.ts b/api/test/common/context/NoopContextManager.test.ts
similarity index 95%
rename from api/test/context/NoopContextManager.test.ts
rename to api/test/common/context/NoopContextManager.test.ts
index 8a8a732bf7..8d257971b0 100644
--- a/api/test/context/NoopContextManager.test.ts
+++ b/api/test/common/context/NoopContextManager.test.ts
@@ -15,8 +15,8 @@
*/
import * as assert from 'assert';
-import { createContextKey, ROOT_CONTEXT } from '../../src/context/context';
-import { NoopContextManager } from '../../src/context/NoopContextManager';
+import { createContextKey, ROOT_CONTEXT } from '../../../src/context/context';
+import { NoopContextManager } from '../../../src/context/NoopContextManager';
describe('NoopContextManager', () => {
let contextManager: NoopContextManager;
diff --git a/api/test/diag/ComponentLogger.test.ts b/api/test/common/diag/ComponentLogger.test.ts
similarity index 96%
rename from api/test/diag/ComponentLogger.test.ts
rename to api/test/common/diag/ComponentLogger.test.ts
index b9648c218a..2a01cf2e98 100644
--- a/api/test/diag/ComponentLogger.test.ts
+++ b/api/test/common/diag/ComponentLogger.test.ts
@@ -16,7 +16,7 @@
import * as assert from 'assert';
import * as sinon from 'sinon';
-import { diag, DiagLogger, DiagLogLevel } from '../../src';
+import { diag, DiagLogger, DiagLogLevel } from '../../../src';
class SpyLogger implements DiagLogger {
debug() {}
diff --git a/api/test/diag/consoleLogger.test.ts b/api/test/common/diag/consoleLogger.test.ts
similarity index 99%
rename from api/test/diag/consoleLogger.test.ts
rename to api/test/common/diag/consoleLogger.test.ts
index fd57f11836..781acd93b0 100644
--- a/api/test/diag/consoleLogger.test.ts
+++ b/api/test/common/diag/consoleLogger.test.ts
@@ -17,7 +17,7 @@
/* eslint-disable no-console */
import * as assert from 'assert';
-import { DiagConsoleLogger } from '../../src/diag/consoleLogger';
+import { DiagConsoleLogger } from '../../../src/diag/consoleLogger';
export const diagLoggerFunctions = [
'verbose',
diff --git a/api/test/diag/logLevel.test.ts b/api/test/common/diag/logLevel.test.ts
similarity index 96%
rename from api/test/diag/logLevel.test.ts
rename to api/test/common/diag/logLevel.test.ts
index 1825db31a9..065e46d683 100644
--- a/api/test/diag/logLevel.test.ts
+++ b/api/test/common/diag/logLevel.test.ts
@@ -15,10 +15,10 @@
*/
import * as assert from 'assert';
-import { diag } from '../../src';
-import { createLogLevelDiagLogger } from '../../src/diag/internal/logLevelLogger';
-import { createNoopDiagLogger } from '../../src/diag/internal/noopLogger';
-import { DiagLogger, DiagLogLevel } from '../../src/diag/types';
+import { diag } from '../../../src';
+import { createLogLevelDiagLogger } from '../../../src/diag/internal/logLevelLogger';
+import { createNoopDiagLogger } from '../../../src/diag/internal/noopLogger';
+import { DiagLogger, DiagLogLevel } from '../../../src/diag/types';
// Matches the previous Logger definition
const incompleteLoggerFuncs = ['debug', 'info', 'warn', 'error'] as const;
diff --git a/api/test/diag/logger.test.ts b/api/test/common/diag/logger.test.ts
similarity index 94%
rename from api/test/diag/logger.test.ts
rename to api/test/common/diag/logger.test.ts
index c0efdcb6f2..1b6f0d57ba 100644
--- a/api/test/diag/logger.test.ts
+++ b/api/test/common/diag/logger.test.ts
@@ -16,9 +16,9 @@
import * as assert from 'assert';
import sinon = require('sinon');
-import { diag, DiagLogLevel } from '../../src';
-import { createNoopDiagLogger } from '../../src/diag/internal/noopLogger';
-import { DiagLogger } from '../../src/diag/types';
+import { diag, DiagLogLevel } from '../../../src';
+import { createNoopDiagLogger } from '../../../src/diag/internal/noopLogger';
+import { DiagLogger } from '../../../src/diag/types';
export const diagLoggerFunctions = [
'verbose',
diff --git a/api/test/internal/global.test.ts b/api/test/common/internal/global.test.ts
similarity index 93%
rename from api/test/internal/global.test.ts
rename to api/test/common/internal/global.test.ts
index ba6218c7ed..291f707233 100644
--- a/api/test/internal/global.test.ts
+++ b/api/test/common/internal/global.test.ts
@@ -15,19 +15,19 @@
*/
import * as assert from 'assert';
-import { getGlobal } from '../../src/internal/global-utils';
-import { _globalThis } from '../../src/platform';
-import { NoopContextManager } from '../../src/context/NoopContextManager';
-import { DiagLogLevel } from '../../src/diag/types';
+import { getGlobal } from '../../../src/internal/global-utils';
+import { _globalThis } from '../../../src/platform';
+import { NoopContextManager } from '../../../src/context/NoopContextManager';
+import { DiagLogLevel } from '../../../src/diag/types';
import sinon = require('sinon');
-const api1 = require('../../src') as typeof import('../../src');
+const api1 = require('../../../src') as typeof import('../../../src');
// clear cache and load a second instance of the api
for (const key of Object.keys(require.cache)) {
delete require.cache[key];
}
-const api2 = require('../../src') as typeof import('../../src');
+const api2 = require('../../../src') as typeof import('../../../src');
// This will need to be changed manually on major version changes.
// It is intentionally not autogenerated to ensure the author of the change is aware of what they are doing.
diff --git a/api/test/internal/semver.test.ts b/api/test/common/internal/semver.test.ts
similarity index 97%
rename from api/test/internal/semver.test.ts
rename to api/test/common/internal/semver.test.ts
index e9ac3ec727..acd164b542 100644
--- a/api/test/internal/semver.test.ts
+++ b/api/test/common/internal/semver.test.ts
@@ -18,8 +18,8 @@ import * as assert from 'assert';
import {
isCompatible,
_makeCompatibilityCheck,
-} from '../../src/internal/semver';
-import { VERSION } from '../../src/version';
+} from '../../../src/internal/semver';
+import { VERSION } from '../../../src/version';
describe('semver', () => {
it('should be compatible if versions are equal', () => {
diff --git a/api-metrics/test/internal/version.test.ts b/api/test/common/internal/version.test.ts
similarity index 90%
rename from api-metrics/test/internal/version.test.ts
rename to api/test/common/internal/version.test.ts
index 4d0e5f2542..cfffeb20fa 100644
--- a/api-metrics/test/internal/version.test.ts
+++ b/api/test/common/internal/version.test.ts
@@ -15,11 +15,11 @@
*/
import * as assert from 'assert';
-import { VERSION } from '../../src/version';
+import { VERSION } from '../../../src/version';
describe('version', () => {
it('should have generated VERSION.ts', () => {
- const pjson = require('../../package.json');
+ const pjson = require('../../../package.json');
assert.strictEqual(pjson.version, VERSION);
});
diff --git a/api/test/common/metrics/Metric.test.ts b/api/test/common/metrics/Metric.test.ts
new file mode 100644
index 0000000000..d7111d01f7
--- /dev/null
+++ b/api/test/common/metrics/Metric.test.ts
@@ -0,0 +1,109 @@
+/*
+ * Copyright The OpenTelemetry 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
+ *
+ * https://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.
+ */
+
+import { Counter, UpDownCounter, Histogram } from '../../../src';
+
+describe('Metric', () => {
+ describe('Counter', () =>{
+ it('enable not to define any type', () => {
+ const counter: Counter = {
+ add(_value: number, _attribute: unknown) {}
+ };
+ counter.add(1, { 'some-attribute': 'value' });
+ });
+
+ it('enable to use with type', () => {
+ type Attributes = {
+ 'some-attribute': string
+ };
+ const counter: Counter = {
+ add(_value: number, _attribute: Attributes) {}
+ };
+ counter.add(1, { 'some-attribute': 'value' });
+ });
+
+ it('disable wrong attributes by typing', () => {
+ type Attributes = {
+ 'some-attribute': string
+ };
+ const counter: Counter = {
+ add(_value: number, _attribute: Attributes) {}
+ };
+ // @ts-expect-error Expacting the type of Attributes
+ counter.add(1, { 'another-attribute': 'value' });
+ });
+ });
+
+ describe('UpDownCounter', () =>{
+ it('enable not to define any type', () => {
+ const counter: UpDownCounter = {
+ add(_value: number, _attribute: unknown) {}
+ };
+ counter.add(1, { 'some-attribute': 'value' });
+ });
+
+ it('enable to use with type', () => {
+ type Attributes = {
+ 'some-attribute': string
+ };
+ const counter: UpDownCounter = {
+ add(_value: number, _attribute: Attributes) {}
+ };
+ counter.add(1, { 'some-attribute': 'value' });
+ });
+
+ it('disable wrong attributes by typing', () => {
+ type Attributes = {
+ 'some-attribute': string
+ };
+ const counter: UpDownCounter = {
+ add(_value: number, _attribute: Attributes) {}
+ };
+ // @ts-expect-error Expacting the type of Attributes
+ counter.add(1, { 'another-attribute': 'value' });
+ });
+ });
+
+ describe('Histogram', () =>{
+ it('enable not to define any type', () => {
+ const counter: Histogram = {
+ record(_value: number, _attribute: unknown) {}
+ };
+ counter.record(1, { 'some-attribute': 'value' });
+ });
+
+ it('enable to use with type', () => {
+ type Attributes = {
+ 'some-attribute': string
+ };
+ const counter: Histogram = {
+ record(_value: number, _attribute: Attributes) {}
+ };
+ counter.record(1, { 'some-attribute': 'value' });
+ });
+
+ it('disable wrong attributes by typing', () => {
+ type Attributes = {
+ 'some-attribute': string
+ };
+ const counter: Histogram = {
+ record(_value: number, _attribute: Attributes) {}
+ };
+ // @ts-expect-error Expacting the type of Attributes
+ counter.record(1, { 'another-attribute': 'value' });
+ });
+ });
+});
diff --git a/api-metrics/test/noop-implementations/noop-meter.test.ts b/api/test/common/noop-implementations/noop-meter.test.ts
similarity index 97%
rename from api-metrics/test/noop-implementations/noop-meter.test.ts
rename to api/test/common/noop-implementations/noop-meter.test.ts
index 07395a925b..951bdb80e7 100644
--- a/api-metrics/test/noop-implementations/noop-meter.test.ts
+++ b/api/test/common/noop-implementations/noop-meter.test.ts
@@ -24,8 +24,8 @@ import {
NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC,
NOOP_UP_DOWN_COUNTER_METRIC,
createNoopMeter,
-} from '../../src/NoopMeter';
-import { NoopMeterProvider } from '../../src/NoopMeterProvider';
+} from '../../../src/metrics/NoopMeter';
+import { NoopMeterProvider } from '../../../src/metrics/NoopMeterProvider';
const attributes = {};
const options = {
diff --git a/api/test/noop-implementations/noop-span.test.ts b/api/test/common/noop-implementations/noop-span.test.ts
similarity index 94%
rename from api/test/noop-implementations/noop-span.test.ts
rename to api/test/common/noop-implementations/noop-span.test.ts
index de0007aeeb..5bc341f31a 100644
--- a/api/test/noop-implementations/noop-span.test.ts
+++ b/api/test/common/noop-implementations/noop-span.test.ts
@@ -20,8 +20,8 @@ import {
INVALID_SPANID,
INVALID_TRACEID,
TraceFlags,
-} from '../../src';
-import { NonRecordingSpan } from '../../src/trace/NonRecordingSpan';
+} from '../../../src';
+import { NonRecordingSpan } from '../../../src/trace/NonRecordingSpan';
describe('NonRecordingSpan', () => {
it('do not crash', () => {
diff --git a/api/test/noop-implementations/noop-tracer-provider.test.ts b/api/test/common/noop-implementations/noop-tracer-provider.test.ts
similarity index 88%
rename from api/test/noop-implementations/noop-tracer-provider.test.ts
rename to api/test/common/noop-implementations/noop-tracer-provider.test.ts
index 5b7e5ff7b1..d9eda44ee9 100644
--- a/api/test/noop-implementations/noop-tracer-provider.test.ts
+++ b/api/test/common/noop-implementations/noop-tracer-provider.test.ts
@@ -15,8 +15,8 @@
*/
import * as assert from 'assert';
-import { NoopTracer } from '../../src/trace/NoopTracer';
-import { NoopTracerProvider } from '../../src/trace/NoopTracerProvider';
+import { NoopTracer } from '../../../src/trace/NoopTracer';
+import { NoopTracerProvider } from '../../../src/trace/NoopTracerProvider';
describe('NoopTracerProvider', () => {
it('should not crash', () => {
diff --git a/api/test/noop-implementations/noop-tracer.test.ts b/api/test/common/noop-implementations/noop-tracer.test.ts
similarity index 93%
rename from api/test/noop-implementations/noop-tracer.test.ts
rename to api/test/common/noop-implementations/noop-tracer.test.ts
index 037017208e..429f6d481d 100644
--- a/api/test/noop-implementations/noop-tracer.test.ts
+++ b/api/test/common/noop-implementations/noop-tracer.test.ts
@@ -22,9 +22,9 @@ import {
SpanKind,
trace,
TraceFlags,
-} from '../../src';
-import { NonRecordingSpan } from '../../src/trace/NonRecordingSpan';
-import { NoopTracer } from '../../src/trace/NoopTracer';
+} from '../../../src';
+import { NonRecordingSpan } from '../../../src/trace/NonRecordingSpan';
+import { NoopTracer } from '../../../src/trace/NoopTracer';
describe('NoopTracer', () => {
it('should not crash', () => {
diff --git a/api/test/proxy-implementations/proxy-tracer.test.ts b/api/test/common/proxy-implementations/proxy-tracer.test.ts
similarity index 97%
rename from api/test/proxy-implementations/proxy-tracer.test.ts
rename to api/test/common/proxy-implementations/proxy-tracer.test.ts
index bb9c55bfe1..9bf7e94409 100644
--- a/api/test/proxy-implementations/proxy-tracer.test.ts
+++ b/api/test/common/proxy-implementations/proxy-tracer.test.ts
@@ -26,9 +26,9 @@ import {
SpanOptions,
Tracer,
TracerProvider,
-} from '../../src';
-import { NonRecordingSpan } from '../../src/trace/NonRecordingSpan';
-import { NoopTracer } from '../../src/trace/NoopTracer';
+} from '../../../src';
+import { NonRecordingSpan } from '../../../src/trace/NonRecordingSpan';
+import { NoopTracer } from '../../../src/trace/NoopTracer';
describe('ProxyTracer', () => {
let provider: ProxyTracerProvider;
diff --git a/api/test/trace/spancontext-utils.test.ts b/api/test/common/trace/spancontext-utils.test.ts
similarity index 96%
rename from api/test/trace/spancontext-utils.test.ts
rename to api/test/common/trace/spancontext-utils.test.ts
index 09f5712b27..e2d87f807d 100644
--- a/api/test/trace/spancontext-utils.test.ts
+++ b/api/test/common/trace/spancontext-utils.test.ts
@@ -15,8 +15,8 @@
*/
import * as assert from 'assert';
-import * as context from '../../src/trace/spancontext-utils';
-import { INVALID_SPANID, INVALID_TRACEID, TraceFlags } from '../../src';
+import * as context from '../../../src/trace/spancontext-utils';
+import { INVALID_SPANID, INVALID_TRACEID, TraceFlags } from '../../../src';
describe('spancontext-utils', () => {
it('should return true for valid spancontext', () => {
diff --git a/api/test/trace/tracestate-validators.test.ts b/api/test/common/trace/tracestate-validators.test.ts
similarity index 96%
rename from api/test/trace/tracestate-validators.test.ts
rename to api/test/common/trace/tracestate-validators.test.ts
index 0f355f1c12..15f49434eb 100644
--- a/api/test/trace/tracestate-validators.test.ts
+++ b/api/test/common/trace/tracestate-validators.test.ts
@@ -15,7 +15,7 @@
*/
import * as assert from 'assert';
-import { validateKey, validateValue } from '../../src/trace/internal/tracestate-validators';
+import { validateKey, validateValue } from '../../../src/trace/internal/tracestate-validators';
describe('validators', () => {
describe('validateKey', () => {
diff --git a/api/test/trace/tracestate.test.ts b/api/test/common/trace/tracestate.test.ts
similarity index 97%
rename from api/test/trace/tracestate.test.ts
rename to api/test/common/trace/tracestate.test.ts
index 699c6cd9cb..6d20195b43 100644
--- a/api/test/trace/tracestate.test.ts
+++ b/api/test/common/trace/tracestate.test.ts
@@ -15,8 +15,8 @@
*/
import * as assert from 'assert';
-import { createTraceState } from '../../src/trace/internal/utils';
-import { TraceStateImpl } from '../../src/trace/internal/tracestate-impl';
+import { createTraceState } from '../../../src/trace/internal/utils';
+import { TraceStateImpl } from '../../../src/trace/internal/tracestate-impl';
describe('TraceState', () => {
describe('.serialize()', () => {
diff --git a/api/test/index-webpack.ts b/api/test/index-webpack.ts
index 856be100b2..2d2ef32478 100644
--- a/api/test/index-webpack.ts
+++ b/api/test/index-webpack.ts
@@ -14,11 +14,6 @@
* limitations under the License.
*/
{
- const testsContext = require.context('.', true, /test$/);
+ const testsContext = require.context('./common', true);
testsContext.keys().forEach(testsContext);
}
-
-{
- const srcContext = require.context('.', true, /src$/);
- srcContext.keys().forEach(srcContext);
-}
diff --git a/api/test/index-webpack.worker.ts b/api/test/index-webpack.worker.ts
index d568d570b1..2d2ef32478 100644
--- a/api/test/index-webpack.worker.ts
+++ b/api/test/index-webpack.worker.ts
@@ -14,6 +14,6 @@
* limitations under the License.
*/
{
- const testsContext = require.context('./', true, /test$/);
+ const testsContext = require.context('./common', true);
testsContext.keys().forEach(testsContext);
}
diff --git a/api/test/internal/version.test.ts b/api/test/internal/version.test.ts
deleted file mode 100644
index 4d0e5f2542..0000000000
--- a/api/test/internal/version.test.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright The OpenTelemetry 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
- *
- * https://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.
- */
-
-import * as assert from 'assert';
-import { VERSION } from '../../src/version';
-
-describe('version', () => {
- it('should have generated VERSION.ts', () => {
- const pjson = require('../../package.json');
- assert.strictEqual(pjson.version, VERSION);
- });
-
- it('prerelease tag versions are banned', () => {
- // see https://github.com/open-telemetry/opentelemetry-js-api/issues/74
- assert.ok(VERSION.match(/^\d+\.\d+\.\d+$/));
- });
-});
diff --git a/api/test/tree-shaking/tree-shaking.test.ts b/api/test/tree-shaking/tree-shaking.test.ts
new file mode 100644
index 0000000000..37ab5def3a
--- /dev/null
+++ b/api/test/tree-shaking/tree-shaking.test.ts
@@ -0,0 +1,119 @@
+/*
+ * Copyright The OpenTelemetry 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
+ *
+ * https://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.
+ */
+
+import * as assert from 'assert';
+import * as webpack from 'webpack';
+import * as path from 'path';
+import { Union } from 'unionfs';
+import { fs as mfs } from 'memfs';
+import * as realFs from 'fs';
+
+/**
+ * Verify that tree-shaking can be properly applied on the @opentelemetry/api package.
+ * Unused optional apis should be able to be removed from the final bundle.
+ */
+describe('tree-shaking', () => {
+ const allowedAPIs = ['ContextAPI', 'DiagAPI'];
+ const testAPIs = [
+ {
+ name: 'MetricsAPI',
+ export: 'metrics',
+ },
+ {
+ name: 'PropagationAPI',
+ export: 'propagation',
+ },
+ {
+ name: 'TraceAPI',
+ export: 'trace'
+ },
+ ];
+ const APIMatcher = /(?:class|function) (\w+API)/g;
+
+ const sourceCodePath = path.join(__dirname, 'test.js');
+ const outputPath = path.join(__dirname, 'output');
+ const outputFilename = path.join(outputPath, 'bundle.js');
+
+ afterEach(() => {
+ try {
+ mfs.unlinkSync(outputFilename);
+ } catch {
+ /** ignore */
+ }
+ });
+
+ for (const testAPI of testAPIs) {
+ it(`verify ${testAPI.name}`, async () => {
+ const sourceCode = `
+ import { ${testAPI.export} } from '../../';
+ console.log(${testAPI.export});
+ `;
+ mfs.mkdirpSync(path.dirname(sourceCodePath));
+ mfs.writeFileSync(sourceCodePath, sourceCode, { encoding: 'utf8' });
+
+ const compiler = webpack({
+ entry: sourceCodePath,
+ output: {
+ filename: 'bundle.js',
+ path: outputPath,
+ },
+ mode: 'production',
+ optimization: {
+ // disable minimization so that we can inspect the output easily.
+ minimize: false,
+ }
+ });
+
+ const fs = new Union();
+ fs.use(mfs as any)
+ .use(realFs);
+
+ //direct webpack to use unionfs for file input
+ compiler.inputFileSystem = fs;
+ //direct webpack to output to memoryfs rather than to disk
+ compiler.outputFileSystem = {
+ ...mfs,
+ join: path.join,
+ } as any;
+
+ const stats = await new Promise((resolve, reject) => {
+ compiler.run((err, stats) => {
+ if (err) {
+ return reject(err);
+ }
+ resolve(stats);
+ });
+ });
+ assert.deepStrictEqual(stats.compilation.errors, []);
+ assert.deepStrictEqual(stats.compilation.warnings, []);
+
+ const outputFile = mfs.readFileSync(outputFilename, 'utf8') as string;
+ const matches = new Set();
+ let match;
+ do {
+ match = APIMatcher.exec(outputFile);
+ if (match) {
+ matches.add(match[1]);
+ }
+ } while (match);
+
+ // Remove allowed apis from checking list.
+ allowedAPIs.forEach(it => matches.delete(it));
+
+ assert.deepStrictEqual(Array.from(matches), [testAPI.name]);
+ });
+ }
+});
diff --git a/examples/opentelemetry-web/examples/metrics/index.js b/examples/opentelemetry-web/examples/metrics/index.js
index e036f1e8d2..c3f86cfbe5 100644
--- a/examples/opentelemetry-web/examples/metrics/index.js
+++ b/examples/opentelemetry-web/examples/metrics/index.js
@@ -1,5 +1,4 @@
-const { DiagConsoleLogger, DiagLogLevel, diag } = require('@opentelemetry/api');
-const { metrics } = require('@opentelemetry/api-metrics');
+const { DiagConsoleLogger, DiagLogLevel, diag, metrics } = require('@opentelemetry/api');
const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http');
const { MeterProvider, PeriodicExportingMetricReader } = require('@opentelemetry/sdk-metrics');
diff --git a/examples/opentelemetry-web/package.json b/examples/opentelemetry-web/package.json
index f99b49e3f7..966968275d 100644
--- a/examples/opentelemetry-web/package.json
+++ b/examples/opentelemetry-web/package.json
@@ -42,8 +42,7 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
- "@opentelemetry/api": "^1.0.2",
- "@opentelemetry/api-metrics": "0.33.0",
+ "@opentelemetry/api": "^1.2.0",
"@opentelemetry/context-zone": "1.7.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/exporter-metrics-otlp-http": "0.33.0",
diff --git a/examples/otlp-exporter-node/package.json b/examples/otlp-exporter-node/package.json
index 085d15917d..d122327991 100644
--- a/examples/otlp-exporter-node/package.json
+++ b/examples/otlp-exporter-node/package.json
@@ -28,8 +28,7 @@
"url": "https://github.com/open-telemetry/opentelemetry-js/issues"
},
"dependencies": {
- "@opentelemetry/api": "^1.1.0",
- "@opentelemetry/api-metrics": "0.33.0",
+ "@opentelemetry/api": "^1.2.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/exporter-metrics-otlp-grpc": "0.33.0",
"@opentelemetry/exporter-metrics-otlp-http": "0.33.0",
diff --git a/experimental/examples/prometheus/package.json b/experimental/examples/prometheus/package.json
index 837fcf9b61..96a9f5572d 100644
--- a/experimental/examples/prometheus/package.json
+++ b/experimental/examples/prometheus/package.json
@@ -9,7 +9,7 @@
"author": "OpenTelemetry Authors",
"license": "Apache-2.0",
"dependencies": {
- "@opentelemetry/api": "^1.0.2",
+ "@opentelemetry/api": "^1.2.0",
"@opentelemetry/exporter-prometheus": "0.33.0",
"@opentelemetry/sdk-metrics": "0.33.0"
}
diff --git a/experimental/packages/api-logs/README.md b/experimental/packages/api-logs/README.md
index b0704800de..57d40a3211 100644
--- a/experimental/packages/api-logs/README.md
+++ b/experimental/packages/api-logs/README.md
@@ -58,6 +58,6 @@ Apache 2.0 - See [LICENSE][license-url] for more information.
[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions
[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE
[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
-[npm-url]: https://www.npmjs.com/package/@opentelemetry/api-metrics
-[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi-metrics.svg
+[npm-url]: https://www.npmjs.com/package/@opentelemetry/api-logs
+[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi-logs.svg
[logs-api-docs]: https://open-telemetry.github.io/opentelemetry-js/modules/_opentelemetry_api_logs.html
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json
index d7dc5a21a8..e44641b004 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json
@@ -49,8 +49,7 @@
"devDependencies": {
"@babel/core": "7.16.0",
"@grpc/proto-loader": "^0.7.3",
- "@opentelemetry/api": "^1.0.0",
- "@opentelemetry/api-metrics": "0.33.0",
+ "@opentelemetry/api": "^1.2.0",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
"@types/sinon": "10.0.13",
@@ -65,7 +64,7 @@
"typescript": "4.4.4"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"dependencies": {
"@grpc/grpc-js": "^1.7.1",
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts
index 58922addc3..e7f2baa351 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { Counter, Histogram, ObservableGauge, ObservableResult, ValueType } from '@opentelemetry/api-metrics';
+import { Counter, Histogram, ObservableGauge, ObservableResult, ValueType } from '@opentelemetry/api';
import { Resource } from '@opentelemetry/resources';
import * as assert from 'assert';
import * as grpc from '@grpc/grpc-js';
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json
index c2a6041ceb..d866e532c2 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-core"
},
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json
index 0740d5913e..4b21d78f8f 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json
@@ -64,7 +64,7 @@
},
"devDependencies": {
"@babel/core": "7.16.0",
- "@opentelemetry/api": "^1.0.0",
+ "@opentelemetry/api": "^1.2.0",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
"@types/sinon": "10.0.13",
@@ -91,10 +91,9 @@
"webpack-merge": "5.8.0"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/otlp-exporter-base": "0.33.0",
"@opentelemetry/otlp-transformer": "0.33.0",
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts
index 166dbc4a81..c0cb9dc2ab 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { diag, DiagLogger, DiagLogLevel } from '@opentelemetry/api';
-import { Counter, Histogram, } from '@opentelemetry/api-metrics';
+import { diag, DiagLogger, DiagLogLevel, Counter, Histogram } from '@opentelemetry/api';
import { ExportResultCode, hrTimeToNanoseconds } from '@opentelemetry/core';
import { AggregationTemporality, ResourceMetrics, } from '@opentelemetry/sdk-metrics';
import * as assert from 'assert';
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts
index 0b15459815..5989d870f6 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts
@@ -22,7 +22,7 @@ import {
ObservableCounter,
ObservableGauge,
ObservableUpDownCounter,
-} from '@opentelemetry/api-metrics';
+} from '@opentelemetry/api';
import { Resource } from '@opentelemetry/resources';
import * as assert from 'assert';
import { InstrumentationScope, VERSION } from '@opentelemetry/core';
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json
index 7a2d809dff..af647ba8e3 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-core"
},
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json
index bad7943e6e..bd21a3c040 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json
@@ -48,8 +48,7 @@
},
"devDependencies": {
"@babel/core": "7.16.0",
- "@opentelemetry/api": "^1.0.0",
- "@opentelemetry/api-metrics": "0.33.0",
+ "@opentelemetry/api": "^1.2.0",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
"@types/sinon": "10.0.13",
@@ -64,7 +63,7 @@
"typescript": "4.4.4"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"dependencies": {
"@opentelemetry/core": "1.7.0",
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts
index 2f62a8ba2c..ce3a70ff24 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts
@@ -20,7 +20,7 @@ import {
Histogram,
ValueType,
ObservableGauge,
-} from '@opentelemetry/api-metrics';
+} from '@opentelemetry/api';
import { Resource } from '@opentelemetry/resources';
import * as assert from 'assert';
import {
diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json
index 133b1e8bb8..521fc31cfe 100644
--- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json
+++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-core"
},
diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json
index bb841bacd4..9461ac2bca 100644
--- a/experimental/packages/opentelemetry-exporter-prometheus/package.json
+++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json
@@ -43,7 +43,7 @@
"access": "public"
},
"devDependencies": {
- "@opentelemetry/api": "^1.0.0",
+ "@opentelemetry/api": "^1.2.0",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
"@types/sinon": "10.0.13",
@@ -56,10 +56,9 @@
"typescript": "4.4.4"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/sdk-metrics": "0.33.0",
"@opentelemetry/resources": "1.7.0"
diff --git a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts
index 410cbfbf34..0879f16e87 100644
--- a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts
+++ b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts
@@ -14,7 +14,11 @@
* limitations under the License.
*/
-import { diag } from '@opentelemetry/api';
+import {
+ diag,
+ MetricAttributes,
+ MetricAttributeValue,
+} from '@opentelemetry/api';
import {
ResourceMetrics,
InstrumentType,
@@ -24,10 +28,6 @@ import {
DataPoint,
Histogram,
} from '@opentelemetry/sdk-metrics';
-import type {
- MetricAttributes,
- MetricAttributeValue
-} from '@opentelemetry/api-metrics';
import { hrTimeToMilliseconds } from '@opentelemetry/core';
import { Resource } from '@opentelemetry/resources';
diff --git a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts
index 6b60952670..3104348300 100644
--- a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts
+++ b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts
@@ -15,9 +15,10 @@
*/
import {
+ Counter,
Meter,
ObservableResult
-} from '@opentelemetry/api-metrics';
+} from '@opentelemetry/api';
import { MeterProvider } from '@opentelemetry/sdk-metrics';
import * as assert from 'assert';
import * as sinon from 'sinon';
@@ -28,7 +29,6 @@ import {
mockHrTime
} from './util';
import { SinonStubbedInstance } from 'sinon';
-import { Counter } from '@opentelemetry/api-metrics';
const serializedEmptyResourceLines = [
'# HELP target_info Target metadata',
diff --git a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts
index 852946f355..2694c96f83 100644
--- a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts
+++ b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts
@@ -18,7 +18,7 @@ import * as assert from 'assert';
import {
MetricAttributes,
UpDownCounter
-} from '@opentelemetry/api-metrics';
+} from '@opentelemetry/api';
import {
Aggregation,
AggregationTemporality,
diff --git a/experimental/packages/opentelemetry-exporter-prometheus/tsconfig.json b/experimental/packages/opentelemetry-exporter-prometheus/tsconfig.json
index 9ac6b6fd90..719097c712 100644
--- a/experimental/packages/opentelemetry-exporter-prometheus/tsconfig.json
+++ b/experimental/packages/opentelemetry-exporter-prometheus/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-core"
},
diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json
index 8d9f69ef1c..09f8ab2aff 100644
--- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json
+++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json
@@ -47,7 +47,7 @@
"devDependencies": {
"@grpc/grpc-js": "^1.7.1",
"@grpc/proto-loader": "^0.7.3",
- "@opentelemetry/api": "^1.0.0",
+ "@opentelemetry/api": "^1.2.0",
"@opentelemetry/context-async-hooks": "1.7.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/sdk-trace-base": "1.7.0",
@@ -68,10 +68,9 @@
"typescript": "4.4.4"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/instrumentation": "0.33.0",
"@opentelemetry/semantic-conventions": "1.7.0"
},
diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts
index 5ac237038a..d6f782684b 100644
--- a/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts
+++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts
@@ -19,7 +19,6 @@ import { VERSION } from './version';
import { GrpcNativeInstrumentation } from './grpc';
import { GrpcJsInstrumentation } from './grpc-js';
import * as api from '@opentelemetry/api';
-import { MeterProvider } from '@opentelemetry/api-metrics';
/** The metadata key under which span context is stored as a binary value. */
export const GRPC_TRACE_KEY = 'grpc-trace-bin';
@@ -81,7 +80,7 @@ export class GrpcInstrumentation {
* Sets MeterProvider to this plugin
* @param meterProvider
*/
- public setMeterProvider(meterProvider: MeterProvider) {
+ public setMeterProvider(meterProvider: api.MeterProvider) {
this._grpcJsInstrumentation.setMeterProvider(meterProvider);
this._grpcNativeInstrumentation.setMeterProvider(meterProvider);
}
diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/tsconfig.json b/experimental/packages/opentelemetry-instrumentation-grpc/tsconfig.json
index 25a8b5fb03..0170a84c3c 100644
--- a/experimental/packages/opentelemetry-instrumentation-grpc/tsconfig.json
+++ b/experimental/packages/opentelemetry-instrumentation-grpc/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-context-async-hooks"
},
diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json
index ef2a792705..67983b76d6 100644
--- a/experimental/packages/opentelemetry-instrumentation-http/package.json
+++ b/experimental/packages/opentelemetry-instrumentation-http/package.json
@@ -45,7 +45,7 @@
"access": "public"
},
"devDependencies": {
- "@opentelemetry/api": "^1.0.0",
+ "@opentelemetry/api": "^1.2.0",
"@opentelemetry/context-async-hooks": "1.7.0",
"@opentelemetry/sdk-trace-base": "1.7.0",
"@opentelemetry/sdk-trace-node": "1.7.0",
@@ -69,10 +69,9 @@
"typescript": "4.4.4"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/instrumentation": "0.33.0",
"@opentelemetry/sdk-metrics": "0.33.0",
diff --git a/experimental/packages/opentelemetry-instrumentation-http/src/http.ts b/experimental/packages/opentelemetry-instrumentation-http/src/http.ts
index a0e07a1e9f..4129759589 100644
--- a/experimental/packages/opentelemetry-instrumentation-http/src/http.ts
+++ b/experimental/packages/opentelemetry-instrumentation-http/src/http.ts
@@ -25,8 +25,11 @@ import {
SpanStatus,
SpanStatusCode,
trace,
+ Histogram,
+ MeterProvider,
+ MetricAttributes,
+ ValueType,
} from '@opentelemetry/api';
-import { Histogram, MeterProvider, MetricAttributes, ValueType } from '@opentelemetry/api-metrics';
import { hrTime, hrTimeDuration, hrTimeToMilliseconds, suppressTracing } from '@opentelemetry/core';
import type * as http from 'http';
import type * as https from 'https';
diff --git a/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts b/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts
index e9e9b45468..4094586493 100644
--- a/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts
+++ b/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts
@@ -14,6 +14,7 @@
* limitations under the License.
*/
import {
+ MetricAttributes,
SpanAttributes,
SpanStatusCode,
Span,
@@ -35,7 +36,6 @@ import { getRPCMetadata, RPCType } from '@opentelemetry/core';
import * as url from 'url';
import { AttributeNames } from './enums/AttributeNames';
import { Err, IgnoreMatcher, ParsedRequestOptions } from './types';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
/**
* Get an absolute url
diff --git a/experimental/packages/opentelemetry-instrumentation-http/tsconfig.json b/experimental/packages/opentelemetry-instrumentation-http/tsconfig.json
index c6158c12c1..00267e9c1a 100644
--- a/experimental/packages/opentelemetry-instrumentation-http/tsconfig.json
+++ b/experimental/packages/opentelemetry-instrumentation-http/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-context-async-hooks"
},
diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json
index abc09deb23..96437b278b 100644
--- a/experimental/packages/opentelemetry-instrumentation/package.json
+++ b/experimental/packages/opentelemetry-instrumentation/package.json
@@ -68,17 +68,16 @@
"url": "https://github.com/open-telemetry/opentelemetry-js/issues"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"require-in-the-middle": "^5.0.3",
"semver": "^7.3.2",
"shimmer": "^1.2.1"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": "^1.2.0"
},
"devDependencies": {
"@babel/core": "7.16.0",
- "@opentelemetry/api": "^1.0.0",
+ "@opentelemetry/api": "^1.2.0",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
"@types/semver": "7.3.9",
diff --git a/experimental/packages/opentelemetry-instrumentation/src/autoLoader.ts b/experimental/packages/opentelemetry-instrumentation/src/autoLoader.ts
index 862ba111e0..c6a052c6c9 100644
--- a/experimental/packages/opentelemetry-instrumentation/src/autoLoader.ts
+++ b/experimental/packages/opentelemetry-instrumentation/src/autoLoader.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { trace } from '@opentelemetry/api';
-import { metrics } from '@opentelemetry/api-metrics';
+import { trace, metrics } from '@opentelemetry/api';
import {
disableInstrumentations,
enableInstrumentations,
diff --git a/experimental/packages/opentelemetry-instrumentation/src/autoLoaderUtils.ts b/experimental/packages/opentelemetry-instrumentation/src/autoLoaderUtils.ts
index 962c6de128..a6d63de472 100644
--- a/experimental/packages/opentelemetry-instrumentation/src/autoLoaderUtils.ts
+++ b/experimental/packages/opentelemetry-instrumentation/src/autoLoaderUtils.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { TracerProvider } from '@opentelemetry/api';
-import { MeterProvider } from '@opentelemetry/api-metrics';
+import { TracerProvider, MeterProvider } from '@opentelemetry/api';
import { Instrumentation } from './types';
import { AutoLoaderResult, InstrumentationOption } from './types_internal';
diff --git a/experimental/packages/opentelemetry-instrumentation/src/instrumentation.ts b/experimental/packages/opentelemetry-instrumentation/src/instrumentation.ts
index fb9f53fc70..5024b5d536 100644
--- a/experimental/packages/opentelemetry-instrumentation/src/instrumentation.ts
+++ b/experimental/packages/opentelemetry-instrumentation/src/instrumentation.ts
@@ -17,11 +17,13 @@
import {
diag,
DiagLogger,
+ metrics,
+ Meter,
+ MeterProvider,
trace,
Tracer,
TracerProvider,
} from '@opentelemetry/api';
-import { Meter, MeterProvider, metrics } from '@opentelemetry/api-metrics';
import * as shimmer from 'shimmer';
import { InstrumentationModuleDefinition } from './platform/node';
import * as types from './types';
diff --git a/experimental/packages/opentelemetry-instrumentation/src/types.ts b/experimental/packages/opentelemetry-instrumentation/src/types.ts
index 9edd6368ec..837f096792 100644
--- a/experimental/packages/opentelemetry-instrumentation/src/types.ts
+++ b/experimental/packages/opentelemetry-instrumentation/src/types.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { TracerProvider } from '@opentelemetry/api';
-import { MeterProvider } from '@opentelemetry/api-metrics';
+import { TracerProvider, MeterProvider } from '@opentelemetry/api';
/** Interface Instrumentation to apply patch. */
export interface Instrumentation {
diff --git a/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts b/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts
index 6383b6cd17..016be0ad36 100644
--- a/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts
+++ b/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { TracerProvider } from '@opentelemetry/api';
-import { MeterProvider } from '@opentelemetry/api-metrics';
+import { TracerProvider, MeterProvider } from '@opentelemetry/api';
import { InstrumentationBase } from './platform';
import { Instrumentation } from './types';
diff --git a/experimental/packages/opentelemetry-instrumentation/test/common/autoLoader.test.ts b/experimental/packages/opentelemetry-instrumentation/test/common/autoLoader.test.ts
index c7bf2f6967..c7bebf204c 100644
--- a/experimental/packages/opentelemetry-instrumentation/test/common/autoLoader.test.ts
+++ b/experimental/packages/opentelemetry-instrumentation/test/common/autoLoader.test.ts
@@ -14,15 +14,16 @@
* limitations under the License.
*/
-import { Tracer, TracerProvider } from '@opentelemetry/api';
-import * as assert from 'assert';
-import * as sinon from 'sinon';
-import { InstrumentationBase, registerInstrumentations } from '../../src';
import {
+ Tracer,
+ TracerProvider,
Meter,
MeterOptions,
MeterProvider,
-} from '@opentelemetry/api-metrics';
+} from '@opentelemetry/api';
+import * as assert from 'assert';
+import * as sinon from 'sinon';
+import { InstrumentationBase, registerInstrumentations } from '../../src';
class DummyTracerProvider implements TracerProvider {
getTracer(name: string, version?: string): Tracer {
diff --git a/experimental/packages/opentelemetry-instrumentation/tsconfig.esnext.json b/experimental/packages/opentelemetry-instrumentation/tsconfig.esnext.json
index dc405c942c..cb78dd6ff3 100644
--- a/experimental/packages/opentelemetry-instrumentation/tsconfig.esnext.json
+++ b/experimental/packages/opentelemetry-instrumentation/tsconfig.esnext.json
@@ -7,10 +7,5 @@
},
"include": [
"src/**/*.ts"
- ],
- "references": [
- {
- "path": "../../../api-metrics/tsconfig.esnext.json"
- }
]
}
diff --git a/experimental/packages/opentelemetry-instrumentation/tsconfig.json b/experimental/packages/opentelemetry-instrumentation/tsconfig.json
index ce90824272..e22548584a 100644
--- a/experimental/packages/opentelemetry-instrumentation/tsconfig.json
+++ b/experimental/packages/opentelemetry-instrumentation/tsconfig.json
@@ -11,9 +11,6 @@
"references": [
{
"path": "../../../api"
- },
- {
- "path": "../../../api-metrics"
}
]
}
diff --git a/experimental/packages/opentelemetry-sdk-metrics/README.md b/experimental/packages/opentelemetry-sdk-metrics/README.md
index 044c385913..ab5f2dd0a0 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/README.md
+++ b/experimental/packages/opentelemetry-sdk-metrics/README.md
@@ -14,7 +14,7 @@ It does **not** provide automated instrumentation of known libraries or host env
## Installation
```bash
-npm install --save @opentelemetry/api-metrics
+npm install --save @opentelemetry/api
npm install --save @opentelemetry/sdk-metrics
```
@@ -23,7 +23,7 @@ npm install --save @opentelemetry/sdk-metrics
The basic setup of the SDK can be seen as followings:
```js
-const opentelemetry = require('@opentelemetry/api-metrics');
+const opentelemetry = require('@opentelemetry/api');
const { MeterProvider } = require('@opentelemetry/sdk-metrics');
// To create an instrument, you first need to initialize the Meter provider.
diff --git a/experimental/packages/opentelemetry-sdk-metrics/package.json b/experimental/packages/opentelemetry-sdk-metrics/package.json
index f53dc3cacf..dcd526d57f 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/package.json
+++ b/experimental/packages/opentelemetry-sdk-metrics/package.json
@@ -54,7 +54,7 @@
"access": "public"
},
"devDependencies": {
- "@opentelemetry/api": "^1.0.0",
+ "@opentelemetry/api": ">=1.2.0 <1.3.0",
"@types/lodash.merge": "4.6.6",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
@@ -74,10 +74,9 @@
"typescript": "4.4.4"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "@opentelemetry/api": ">=1.2.0 <1.3.0"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/resources": "1.7.0",
"lodash.merge": "4.6.2"
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/InstrumentDescriptor.ts b/experimental/packages/opentelemetry-sdk-metrics/src/InstrumentDescriptor.ts
index e511cd8dd3..4008bc3de2 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/InstrumentDescriptor.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/InstrumentDescriptor.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { MetricOptions, ValueType } from '@opentelemetry/api-metrics';
+import { MetricOptions, ValueType } from '@opentelemetry/api';
import { View } from './view/View';
/**
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/Instruments.ts b/experimental/packages/opentelemetry-sdk-metrics/src/Instruments.ts
index 5706059691..8b70c06f70 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/Instruments.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/Instruments.ts
@@ -14,9 +14,21 @@
* limitations under the License.
*/
-import * as api from '@opentelemetry/api';
-import * as metrics from '@opentelemetry/api-metrics';
-import { ObservableCallback } from '@opentelemetry/api-metrics';
+import {
+ context as contextApi,
+ diag,
+ Context,
+ MetricAttributes,
+ ValueType,
+ UpDownCounter,
+ Counter,
+ Histogram,
+ Observable,
+ ObservableCallback,
+ ObservableCounter,
+ ObservableGauge,
+ ObservableUpDownCounter,
+} from '@opentelemetry/api';
import { hrTime } from '@opentelemetry/core';
import { InstrumentDescriptor } from './InstrumentDescriptor';
import { ObservableRegistry } from './state/ObservableRegistry';
@@ -25,9 +37,9 @@ import { AsyncWritableMetricStorage, WritableMetricStorage } from './state/Writa
export class SyncInstrument {
constructor(private _writableMetricStorage: WritableMetricStorage, protected _descriptor: InstrumentDescriptor) {}
- protected _record(value: number, attributes: metrics.MetricAttributes = {}, context: api.Context = api.context.active()) {
- if (this._descriptor.valueType === metrics.ValueType.INT && !Number.isInteger(value)) {
- api.diag.warn(
+ protected _record(value: number, attributes: MetricAttributes = {}, context: Context = contextApi.active()) {
+ if (this._descriptor.valueType === ValueType.INT && !Number.isInteger(value)) {
+ diag.warn(
`INT value type cannot accept a floating-point value for ${this._descriptor.name}, ignoring the fractional digits.`
);
value = Math.trunc(value);
@@ -37,27 +49,27 @@ export class SyncInstrument {
}
/**
- * The class implements {@link metrics.UpDownCounter} interface.
+ * The class implements {@link UpDownCounter} interface.
*/
-export class UpDownCounterInstrument extends SyncInstrument implements metrics.UpDownCounter {
+export class UpDownCounterInstrument extends SyncInstrument implements UpDownCounter {
/**
* Increment value of counter by the input. Inputs may be negative.
*/
- add(value: number, attributes?: metrics.MetricAttributes, ctx?: api.Context): void {
+ add(value: number, attributes?: MetricAttributes, ctx?: Context): void {
this._record(value, attributes, ctx);
}
}
/**
- * The class implements {@link metrics.Counter} interface.
+ * The class implements {@link Counter} interface.
*/
-export class CounterInstrument extends SyncInstrument implements metrics.Counter {
+export class CounterInstrument extends SyncInstrument implements Counter {
/**
* Increment value of counter by the input. Inputs may not be negative.
*/
- add(value: number, attributes?: metrics.MetricAttributes, ctx?: api.Context): void {
+ add(value: number, attributes?: MetricAttributes, ctx?: Context): void {
if (value < 0) {
- api.diag.warn(`negative value provided to counter ${this._descriptor.name}: ${value}`);
+ diag.warn(`negative value provided to counter ${this._descriptor.name}: ${value}`);
return;
}
@@ -66,22 +78,22 @@ export class CounterInstrument extends SyncInstrument implements metrics.Counter
}
/**
- * The class implements {@link metrics.Histogram} interface.
+ * The class implements {@link Histogram} interface.
*/
-export class HistogramInstrument extends SyncInstrument implements metrics.Histogram {
+export class HistogramInstrument extends SyncInstrument implements Histogram {
/**
* Records a measurement. Value of the measurement must not be negative.
*/
- record(value: number, attributes?: metrics.MetricAttributes, ctx?: api.Context): void {
+ record(value: number, attributes?: MetricAttributes, ctx?: Context): void {
if (value < 0) {
- api.diag.warn(`negative value provided to histogram ${this._descriptor.name}: ${value}`);
+ diag.warn(`negative value provided to histogram ${this._descriptor.name}: ${value}`);
return;
}
this._record(value, attributes, ctx);
}
}
-export class ObservableInstrument implements metrics.Observable {
+export class ObservableInstrument implements Observable {
/** @internal */
_metricStorages: AsyncWritableMetricStorage[];
/** @internal */
@@ -93,23 +105,23 @@ export class ObservableInstrument implements metrics.Observable {
}
/**
- * @see {metrics.Observable.addCallback}
+ * @see {Observable.addCallback}
*/
addCallback(callback: ObservableCallback) {
this._observableRegistry.addCallback(callback, this);
}
/**
- * @see {metrics.Observable.removeCallback}
+ * @see {Observable.removeCallback}
*/
removeCallback(callback: ObservableCallback) {
this._observableRegistry.removeCallback(callback, this);
}
}
-export class ObservableCounterInstrument extends ObservableInstrument implements metrics.ObservableCounter {}
-export class ObservableGaugeInstrument extends ObservableInstrument implements metrics.ObservableGauge {}
-export class ObservableUpDownCounterInstrument extends ObservableInstrument implements metrics.ObservableUpDownCounter {}
+export class ObservableCounterInstrument extends ObservableInstrument implements ObservableCounter {}
+export class ObservableGaugeInstrument extends ObservableInstrument implements ObservableGauge {}
+export class ObservableUpDownCounterInstrument extends ObservableInstrument implements ObservableUpDownCounter {}
export function isObservableInstrument(it: unknown): it is ObservableInstrument {
return it instanceof ObservableInstrument;
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/Meter.ts b/experimental/packages/opentelemetry-sdk-metrics/src/Meter.ts
index d8a7f00a21..bd58dcbac1 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/Meter.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/Meter.ts
@@ -14,7 +14,18 @@
* limitations under the License.
*/
-import * as metrics from '@opentelemetry/api-metrics';
+import {
+ Meter as IMeter,
+ MetricOptions,
+ Histogram,
+ Counter,
+ UpDownCounter,
+ ObservableGauge,
+ ObservableCounter,
+ ObservableUpDownCounter,
+ BatchObservableCallback,
+ Observable,
+} from '@opentelemetry/api';
import { createInstrumentDescriptor, InstrumentType } from './InstrumentDescriptor';
import {
CounterInstrument,
@@ -27,85 +38,85 @@ import {
import { MeterSharedState } from './state/MeterSharedState';
/**
- * This class implements the {@link metrics.Meter} interface.
+ * This class implements the {@link IMeter} interface.
*/
-export class Meter implements metrics.Meter {
+export class Meter implements IMeter {
constructor(private _meterSharedState: MeterSharedState) {}
/**
- * Create a {@link metrics.Histogram} instrument.
+ * Create a {@link Histogram} instrument.
*/
- createHistogram(name: string, options?: metrics.MetricOptions): metrics.Histogram {
+ createHistogram(name: string, options?: MetricOptions): Histogram {
const descriptor = createInstrumentDescriptor(name, InstrumentType.HISTOGRAM, options);
const storage = this._meterSharedState.registerMetricStorage(descriptor);
return new HistogramInstrument(storage, descriptor);
}
/**
- * Create a {@link metrics.Counter} instrument.
+ * Create a {@link Counter} instrument.
*/
- createCounter(name: string, options?: metrics.MetricOptions): metrics.Counter {
+ createCounter(name: string, options?: MetricOptions): Counter {
const descriptor = createInstrumentDescriptor(name, InstrumentType.COUNTER, options);
const storage = this._meterSharedState.registerMetricStorage(descriptor);
return new CounterInstrument(storage, descriptor);
}
/**
- * Create a {@link metrics.UpDownCounter} instrument.
+ * Create a {@link UpDownCounter} instrument.
*/
- createUpDownCounter(name: string, options?: metrics.MetricOptions): metrics.UpDownCounter {
+ createUpDownCounter(name: string, options?: MetricOptions): UpDownCounter {
const descriptor = createInstrumentDescriptor(name, InstrumentType.UP_DOWN_COUNTER, options);
const storage = this._meterSharedState.registerMetricStorage(descriptor);
return new UpDownCounterInstrument(storage, descriptor);
}
/**
- * Create a {@link metrics.ObservableGauge} instrument.
+ * Create a {@link ObservableGauge} instrument.
*/
createObservableGauge(
name: string,
- options?: metrics.MetricOptions,
- ): metrics.ObservableGauge {
+ options?: MetricOptions,
+ ): ObservableGauge {
const descriptor = createInstrumentDescriptor(name, InstrumentType.OBSERVABLE_GAUGE, options);
const storages = this._meterSharedState.registerAsyncMetricStorage(descriptor);
return new ObservableGaugeInstrument(descriptor, storages, this._meterSharedState.observableRegistry);
}
/**
- * Create a {@link metrics.ObservableCounter} instrument.
+ * Create a {@link ObservableCounter} instrument.
*/
createObservableCounter(
name: string,
- options?: metrics.MetricOptions,
- ): metrics.ObservableCounter {
+ options?: MetricOptions,
+ ): ObservableCounter {
const descriptor = createInstrumentDescriptor(name, InstrumentType.OBSERVABLE_COUNTER, options);
const storages = this._meterSharedState.registerAsyncMetricStorage(descriptor);
return new ObservableCounterInstrument(descriptor, storages, this._meterSharedState.observableRegistry);
}
/**
- * Create a {@link metrics.ObservableUpDownCounter} instrument.
+ * Create a {@link ObservableUpDownCounter} instrument.
*/
createObservableUpDownCounter(
name: string,
- options?: metrics.MetricOptions,
- ): metrics.ObservableUpDownCounter {
+ options?: MetricOptions,
+ ): ObservableUpDownCounter {
const descriptor = createInstrumentDescriptor(name, InstrumentType.OBSERVABLE_UP_DOWN_COUNTER, options);
const storages = this._meterSharedState.registerAsyncMetricStorage(descriptor);
return new ObservableUpDownCounterInstrument(descriptor, storages, this._meterSharedState.observableRegistry);
}
/**
- * @see {@link metrics.Meter.addBatchObservableCallback}
+ * @see {@link Meter.addBatchObservableCallback}
*/
- addBatchObservableCallback(callback: metrics.BatchObservableCallback, observables: metrics.Observable[]) {
+ addBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]) {
this._meterSharedState.observableRegistry.addBatchCallback(callback, observables);
}
/**
- * @see {@link metrics.Meter.removeBatchObservableCallback}
+ * @see {@link Meter.removeBatchObservableCallback}
*/
- removeBatchObservableCallback(callback: metrics.BatchObservableCallback, observables: metrics.Observable[]) {
+ removeBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]) {
this._meterSharedState.observableRegistry.removeBatchCallback(callback, observables);
}
}
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/MeterProvider.ts b/experimental/packages/opentelemetry-sdk-metrics/src/MeterProvider.ts
index f8008d1c4b..01c3f54a1b 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/MeterProvider.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/MeterProvider.ts
@@ -14,8 +14,13 @@
* limitations under the License.
*/
-import * as api from '@opentelemetry/api';
-import * as metrics from '@opentelemetry/api-metrics';
+import {
+ diag,
+ MeterProvider as IMeterProvider,
+ Meter as IMeter,
+ MeterOptions,
+ createNoopMeter,
+} from '@opentelemetry/api';
import { Resource } from '@opentelemetry/resources';
import { MetricReader } from './export/MetricReader';
import { MeterProviderSharedState } from './state/MeterProviderSharedState';
@@ -33,9 +38,9 @@ export interface MeterProviderOptions {
}
/**
- * This class implements the {@link metrics.MeterProvider} interface.
+ * This class implements the {@link MeterProvider} interface.
*/
-export class MeterProvider implements metrics.MeterProvider {
+export class MeterProvider implements IMeterProvider {
private _sharedState: MeterProviderSharedState;
private _shutdown = false;
@@ -51,11 +56,11 @@ export class MeterProvider implements metrics.MeterProvider {
/**
* Get a meter with the configuration of the MeterProvider.
*/
- getMeter(name: string, version = '', options: metrics.MeterOptions = {}): metrics.Meter {
+ getMeter(name: string, version = '', options: MeterOptions = {}): IMeter {
// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#meter-creation
if (this._shutdown) {
- api.diag.warn('A shutdown MeterProvider cannot provide a Meter');
- return metrics.createNoopMeter();
+ diag.warn('A shutdown MeterProvider cannot provide a Meter');
+ return createNoopMeter();
}
return this._sharedState
@@ -83,7 +88,7 @@ export class MeterProvider implements metrics.MeterProvider {
*/
async shutdown(options?: ShutdownOptions): Promise {
if (this._shutdown) {
- api.diag.warn('shutdown may only be called once per MeterProvider');
+ diag.warn('shutdown may only be called once per MeterProvider');
return;
}
@@ -102,7 +107,7 @@ export class MeterProvider implements metrics.MeterProvider {
async forceFlush(options?: ForceFlushOptions): Promise {
// do not flush after shutdown
if (this._shutdown) {
- api.diag.warn('invalid attempt to force flush after MeterProvider shutdown');
+ diag.warn('invalid attempt to force flush after MeterProvider shutdown');
return;
}
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/ObservableResult.ts b/experimental/packages/opentelemetry-sdk-metrics/src/ObservableResult.ts
index 19ba32846c..e3a46f1c4d 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/ObservableResult.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/ObservableResult.ts
@@ -14,16 +14,22 @@
* limitations under the License.
*/
-import * as api from '@opentelemetry/api';
-import * as metrics from '@opentelemetry/api-metrics';
+import {
+ diag,
+ ObservableResult,
+ MetricAttributes,
+ ValueType,
+ BatchObservableResult,
+ Observable,
+} from '@opentelemetry/api';
import { AttributeHashMap } from './state/HashMap';
import { isObservableInstrument, ObservableInstrument } from './Instruments';
import { InstrumentDescriptor } from '.';
/**
- * The class implements {@link metrics.ObservableResult} interface.
+ * The class implements {@link ObservableResult} interface.
*/
-export class ObservableResultImpl implements metrics.ObservableResult {
+export class ObservableResultImpl implements ObservableResult {
/**
* @internal
*/
@@ -34,9 +40,9 @@ export class ObservableResultImpl implements metrics.ObservableResult {
/**
* Observe a measurement of the value associated with the given attributes.
*/
- observe(value: number, attributes: metrics.MetricAttributes = {}): void {
- if (this._descriptor.valueType === metrics.ValueType.INT && !Number.isInteger(value)) {
- api.diag.warn(
+ observe(value: number, attributes: MetricAttributes = {}): void {
+ if (this._descriptor.valueType === ValueType.INT && !Number.isInteger(value)) {
+ diag.warn(
`INT value type cannot accept a floating-point value for ${this._descriptor.name}, ignoring the fractional digits.`
);
value = Math.trunc(value);
@@ -46,9 +52,9 @@ export class ObservableResultImpl implements metrics.ObservableResult {
}
/**
- * The class implements {@link metrics.BatchObservableCallback} interface.
+ * The class implements {@link BatchObservableCallback} interface.
*/
-export class BatchObservableResultImpl implements metrics.BatchObservableResult {
+export class BatchObservableResultImpl implements BatchObservableResult {
/**
* @internal
*/
@@ -57,7 +63,7 @@ export class BatchObservableResultImpl implements metrics.BatchObservableResult
/**
* Observe a measurement of the value associated with the given attributes.
*/
- observe(metric: metrics.Observable, value: number, attributes: metrics.MetricAttributes = {}): void {
+ observe(metric: Observable, value: number, attributes: MetricAttributes = {}): void {
if (!isObservableInstrument(metric)) {
return;
}
@@ -66,8 +72,8 @@ export class BatchObservableResultImpl implements metrics.BatchObservableResult
map = new AttributeHashMap();
this._buffer.set(metric, map);
}
- if (metric._descriptor.valueType === metrics.ValueType.INT && !Number.isInteger(value)) {
- api.diag.warn(
+ if (metric._descriptor.valueType === ValueType.INT && !Number.isInteger(value)) {
+ diag.warn(
`INT value type cannot accept a floating-point value for ${metric._descriptor.name}, ignoring the fractional digits.`
);
value = Math.trunc(value);
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/aggregator/types.ts b/experimental/packages/opentelemetry-sdk-metrics/src/aggregator/types.ts
index 20c8f7ec4d..cc6a2a4976 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/aggregator/types.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/aggregator/types.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { HrTime, MetricAttributes } from '@opentelemetry/api';
import { AggregationTemporality } from '../export/AggregationTemporality';
import { MetricData } from '../export/MetricData';
import { InstrumentDescriptor } from '../InstrumentDescriptor';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlignedHistogramBucketExemplarReservoir.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlignedHistogramBucketExemplarReservoir.ts
index 96060d16ae..0148ead72b 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlignedHistogramBucketExemplarReservoir.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlignedHistogramBucketExemplarReservoir.ts
@@ -15,8 +15,7 @@
*/
-import { Context, HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { FixedSizeExemplarReservoirBase } from './ExemplarReservoir';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlwaysSampleExemplarFilter.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlwaysSampleExemplarFilter.ts
index d2c52cdc0e..01c4a5dbfb 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlwaysSampleExemplarFilter.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/AlwaysSampleExemplarFilter.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
-import { Context, HrTime } from '@opentelemetry/api';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { ExemplarFilter } from './ExemplarFilter';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/Exemplar.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/Exemplar.ts
index 28628ff04f..d98246dc49 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/Exemplar.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/Exemplar.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { HrTime, MetricAttributes } from '@opentelemetry/api';
/**
* A representation of an exemplar, which is a sample input measurement.
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarFilter.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarFilter.ts
index ae005b4988..78b8ca0f39 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarFilter.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarFilter.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
-import { Context, HrTime } from '@opentelemetry/api';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
/**
* This interface represents a ExemplarFilter. Exemplar filters are
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarReservoir.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarReservoir.ts
index 190976502e..fb2e0b8adb 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarReservoir.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/ExemplarReservoir.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
-import { Context, HrTime, isSpanContextValid, trace } from '@opentelemetry/api';
+import { Context, HrTime, isSpanContextValid, trace, MetricAttributes } from '@opentelemetry/api';
import { Exemplar } from './Exemplar';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/NeverSampleExemplarFilter.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/NeverSampleExemplarFilter.ts
index 374f35e52f..c51adda410 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/NeverSampleExemplarFilter.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/NeverSampleExemplarFilter.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
-import { Context, HrTime } from '@opentelemetry/api';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { ExemplarFilter } from './ExemplarFilter';
export class NeverSampleExemplarFilter implements ExemplarFilter {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/SimpleFixedSizeExemplarReservoir.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/SimpleFixedSizeExemplarReservoir.ts
index 31b0369d87..892f0605dc 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/SimpleFixedSizeExemplarReservoir.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/SimpleFixedSizeExemplarReservoir.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { Context, HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { FixedSizeExemplarReservoirBase } from './ExemplarReservoir';
/**
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/WithTraceExemplarFilter.ts b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/WithTraceExemplarFilter.ts
index 1ca0439c0d..6251a36a05 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/WithTraceExemplarFilter.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/exemplar/WithTraceExemplarFilter.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
-import { Context, HrTime, isSpanContextValid, trace, TraceFlags } from '@opentelemetry/api';
+import { Context, HrTime, isSpanContextValid, trace, TraceFlags, MetricAttributes } from '@opentelemetry/api';
import { ExemplarFilter } from './ExemplarFilter';
export class WithTraceExemplarFilter implements ExemplarFilter {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/export/MetricData.ts b/experimental/packages/opentelemetry-sdk-metrics/src/export/MetricData.ts
index f31c748e0b..b15da1d9b9 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/export/MetricData.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/export/MetricData.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { HrTime, MetricAttributes } from '@opentelemetry/api';
import { InstrumentationScope } from '@opentelemetry/core';
import { Resource } from '@opentelemetry/resources';
import { InstrumentDescriptor } from '../InstrumentDescriptor';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/state/DeltaMetricProcessor.ts b/experimental/packages/opentelemetry-sdk-metrics/src/state/DeltaMetricProcessor.ts
index 22c25edab0..999db3c282 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/state/DeltaMetricProcessor.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/state/DeltaMetricProcessor.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { Context, HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { Maybe } from '../utils';
import { Accumulation, Aggregator } from '../aggregator/types';
import { AttributeHashMap } from './HashMap';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/state/HashMap.ts b/experimental/packages/opentelemetry-sdk-metrics/src/state/HashMap.ts
index 0f8efd3794..681d4dedee 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/state/HashMap.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/state/HashMap.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { MetricAttributes } from '@opentelemetry/api';
import { hashAttributes } from '../utils';
export interface Hash {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/state/MultiWritableMetricStorage.ts b/experimental/packages/opentelemetry-sdk-metrics/src/state/MultiWritableMetricStorage.ts
index 323ef83947..64694793ed 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/state/MultiWritableMetricStorage.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/state/MultiWritableMetricStorage.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { Context, HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { WritableMetricStorage } from './WritableMetricStorage';
/**
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/state/ObservableRegistry.ts b/experimental/packages/opentelemetry-sdk-metrics/src/state/ObservableRegistry.ts
index c74b9f9ab9..bd3e3fc6a7 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/state/ObservableRegistry.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/state/ObservableRegistry.ts
@@ -14,9 +14,7 @@
* limitations under the License.
*/
-import * as api from '@opentelemetry/api';
-import { HrTime } from '@opentelemetry/api';
-import { BatchObservableCallback, Observable, ObservableCallback } from '@opentelemetry/api-metrics';
+import { diag, HrTime, BatchObservableCallback, Observable, ObservableCallback } from '@opentelemetry/api';
import { isObservableInstrument, ObservableInstrument } from '../Instruments';
import { BatchObservableResultImpl, ObservableResultImpl } from '../ObservableResult';
import { callWithTimeout, PromiseAllSettled, isPromiseAllSettledRejectionResult, setEquals } from '../utils';
@@ -67,7 +65,7 @@ export class ObservableRegistry {
// Create a set of unique instruments.
const observableInstruments = new Set(instruments.filter(isObservableInstrument));
if (observableInstruments.size === 0) {
- api.diag.error('BatchObservableCallback is not associated with valid instruments', instruments);
+ diag.error('BatchObservableCallback is not associated with valid instruments', instruments);
return;
}
const idx = this._findBatchCallback(callback, observableInstruments);
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/state/SyncMetricStorage.ts b/experimental/packages/opentelemetry-sdk-metrics/src/state/SyncMetricStorage.ts
index 26d5fec1ab..7bfd5967b2 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/state/SyncMetricStorage.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/state/SyncMetricStorage.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { Context, HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { WritableMetricStorage } from './WritableMetricStorage';
import { Accumulation, Aggregator } from '../aggregator/types';
import { InstrumentDescriptor } from '../InstrumentDescriptor';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/state/WritableMetricStorage.ts b/experimental/packages/opentelemetry-sdk-metrics/src/state/WritableMetricStorage.ts
index 8bfdbcfde1..72945cd01d 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/state/WritableMetricStorage.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/state/WritableMetricStorage.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { Context, HrTime } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, HrTime, MetricAttributes } from '@opentelemetry/api';
import { AttributeHashMap } from './HashMap';
/**
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/utils.ts b/experimental/packages/opentelemetry-sdk-metrics/src/utils.ts
index 33e198b3ba..532e05d227 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/utils.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/utils.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { MetricAttributes } from '@opentelemetry/api';
import { InstrumentationScope } from '@opentelemetry/core';
export type Maybe = T | undefined;
diff --git a/experimental/packages/opentelemetry-sdk-metrics/src/view/AttributesProcessor.ts b/experimental/packages/opentelemetry-sdk-metrics/src/view/AttributesProcessor.ts
index 9900daf82f..96858c6428 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/src/view/AttributesProcessor.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/src/view/AttributesProcessor.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { Context } from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { Context, MetricAttributes } from '@opentelemetry/api';
/**
* The {@link AttributesProcessor} is responsible for customizing which
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/Instruments.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/Instruments.test.ts
index 772e268fa4..1faa5b64a1 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/Instruments.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/Instruments.test.ts
@@ -36,7 +36,7 @@ import {
defaultResource,
defaultInstrumentationScope
} from './util';
-import { ObservableResult, ValueType } from '@opentelemetry/api-metrics';
+import { ObservableResult, ValueType } from '@opentelemetry/api';
describe('Instruments', () => {
describe('Counter', () => {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/Meter.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/Meter.test.ts
index ada1234d58..c51c0baa52 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/Meter.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/Meter.test.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { Observable } from '@opentelemetry/api-metrics';
+import { Observable } from '@opentelemetry/api';
import * as assert from 'assert';
import {
CounterInstrument,
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/ObservableResult.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/ObservableResult.test.ts
index aaa97768b8..c425eafec7 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/ObservableResult.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/ObservableResult.test.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { ValueType } from '@opentelemetry/api-metrics';
+import { ValueType } from '@opentelemetry/api';
import * as assert from 'assert';
import { InstrumentType } from '../src';
import { ObservableInstrument } from '../src/Instruments';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/aggregator/Histogram.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/aggregator/Histogram.test.ts
index f5d5ea7e33..3dadaf8b1c 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/aggregator/Histogram.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/aggregator/Histogram.test.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { HrTime } from '@opentelemetry/api';
+import { HrTime, ValueType } from '@opentelemetry/api';
import * as assert from 'assert';
import {
AggregationTemporality,
@@ -30,7 +30,6 @@ import {
commonValues,
defaultInstrumentDescriptor
} from '../util';
-import { ValueType } from '@opentelemetry/api-metrics';
describe('HistogramAggregator', () => {
describe('createAccumulation', () => {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/export/ConsoleMetricExporter.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/export/ConsoleMetricExporter.test.ts
index 39edda36f1..6097aeb555 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/export/ConsoleMetricExporter.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/export/ConsoleMetricExporter.test.ts
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import * as metrics from '@opentelemetry/api-metrics';
+import * as metrics from '@opentelemetry/api';
import { ExportResult } from '@opentelemetry/core';
import { ConsoleMetricExporter } from '../../src/export/ConsoleMetricExporter';
import { PeriodicExportingMetricReader } from '../../src/export/PeriodicExportingMetricReader';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/export/InMemoryMetricExporter.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/export/InMemoryMetricExporter.test.ts
index 7afb3299a4..cab538fd2d 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/export/InMemoryMetricExporter.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/export/InMemoryMetricExporter.test.ts
@@ -15,7 +15,7 @@
*/
import { ExportResultCode } from '@opentelemetry/core';
import { Resource } from '@opentelemetry/resources';
-import * as metrics from '@opentelemetry/api-metrics';
+import * as metrics from '@opentelemetry/api';
import assert = require('assert');
import { AggregationTemporality } from '../../src/export/AggregationTemporality';
import { InMemoryMetricExporter } from '../../src/export/InMemoryMetricExporter';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/state/HashMap.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/state/HashMap.test.ts
index d41c24e9f4..8ae772989b 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/state/HashMap.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/state/HashMap.test.ts
@@ -15,7 +15,7 @@
*/
import * as assert from 'assert';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { MetricAttributes } from '@opentelemetry/api';
import { HashMap } from '../../src/state/HashMap';
import { hashAttributes } from '../../src/utils';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/state/MetricStorageRegistry.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/state/MetricStorageRegistry.test.ts
index fa8424b992..53ffa5a75a 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/state/MetricStorageRegistry.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/state/MetricStorageRegistry.test.ts
@@ -15,13 +15,12 @@
*/
import { MetricStorageRegistry } from '../../src/state/MetricStorageRegistry';
-import { ValueType } from '@opentelemetry/api-metrics';
+import { diag, ValueType } from '@opentelemetry/api';
import { MetricStorage } from '../../src/state/MetricStorage';
import { HrTime } from '@opentelemetry/api';
import { MetricCollectorHandle } from '../../src/state/MetricCollector';
import { MetricData, InstrumentDescriptor, InstrumentType } from '../../src';
import { Maybe } from '../../src/utils';
-import * as api from '@opentelemetry/api';
import * as assert from 'assert';
import * as sinon from 'sinon';
import {
@@ -44,7 +43,7 @@ describe('MetricStorageRegistry', () => {
let spyLoggerWarn: sinon.SinonStub<[message: string, ...args: unknown[]], void>;
beforeEach(() => {
- spyLoggerWarn = sinon.stub(api.diag, 'warn');
+ spyLoggerWarn = sinon.stub(diag, 'warn');
});
afterEach(() => {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/state/MultiWritableMetricStorage.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/state/MultiWritableMetricStorage.test.ts
index e91c952e69..1ccae07723 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/state/MultiWritableMetricStorage.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/state/MultiWritableMetricStorage.test.ts
@@ -15,7 +15,7 @@
*/
import * as api from '@opentelemetry/api';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { MetricAttributes } from '@opentelemetry/api';
import { hrTime } from '@opentelemetry/core';
import * as assert from 'assert';
import { MultiMetricStorage } from '../../src/state/MultiWritableMetricStorage';
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/util.ts b/experimental/packages/opentelemetry-sdk-metrics/test/util.ts
index 87c6184e37..80f9ab1c49 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/util.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/util.ts
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-import * as api from '@opentelemetry/api';
import {
+ Context,
BatchObservableCallback,
MetricAttributes,
ObservableCallback,
ValueType,
-} from '@opentelemetry/api-metrics';
+} from '@opentelemetry/api';
import { InstrumentationScope } from '@opentelemetry/core';
import { Resource } from '@opentelemetry/resources';
import * as assert from 'assert';
@@ -40,7 +40,7 @@ export type Measurement = {
value: number;
// TODO: use common attributes
attributes: MetricAttributes
- context?: api.Context;
+ context?: Context;
};
export const defaultResource = new Resource({
diff --git a/experimental/packages/opentelemetry-sdk-metrics/test/utils.test.ts b/experimental/packages/opentelemetry-sdk-metrics/test/utils.test.ts
index 07731a5376..2bf818088a 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/test/utils.test.ts
+++ b/experimental/packages/opentelemetry-sdk-metrics/test/utils.test.ts
@@ -18,7 +18,7 @@ import * as sinon from 'sinon';
import * as assert from 'assert';
import { callWithTimeout, hashAttributes, TimeoutError } from '../src/utils';
import { assertRejects } from './test-utils';
-import { MetricAttributes } from '@opentelemetry/api-metrics';
+import { MetricAttributes } from '@opentelemetry/api';
describe('utils', () => {
afterEach(() => {
diff --git a/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esm.json b/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esm.json
index fb267e4d26..379f547a46 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esm.json
+++ b/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esm.json
@@ -7,10 +7,5 @@
},
"include": [
"src/**/*.ts"
- ],
- "references": [
- {
- "path": "../../../api-metrics/tsconfig.esnext.json"
- }
]
}
diff --git a/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esnext.json b/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esnext.json
index dc405c942c..cb78dd6ff3 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esnext.json
+++ b/experimental/packages/opentelemetry-sdk-metrics/tsconfig.esnext.json
@@ -7,10 +7,5 @@
},
"include": [
"src/**/*.ts"
- ],
- "references": [
- {
- "path": "../../../api-metrics/tsconfig.esnext.json"
- }
]
}
diff --git a/experimental/packages/opentelemetry-sdk-metrics/tsconfig.json b/experimental/packages/opentelemetry-sdk-metrics/tsconfig.json
index bcce5660d3..f93e34131f 100644
--- a/experimental/packages/opentelemetry-sdk-metrics/tsconfig.json
+++ b/experimental/packages/opentelemetry-sdk-metrics/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-core"
},
diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json
index 8a60ba30b7..30d559fc65 100644
--- a/experimental/packages/opentelemetry-sdk-node/package.json
+++ b/experimental/packages/opentelemetry-sdk-node/package.json
@@ -49,7 +49,6 @@
"@opentelemetry/exporter-trace-otlp-http": "0.33.0",
"@opentelemetry/exporter-trace-otlp-proto": "0.33.0",
"@opentelemetry/exporter-zipkin": "1.7.0",
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/instrumentation": "0.33.0",
"@opentelemetry/resources": "1.7.0",
@@ -59,10 +58,10 @@
"@opentelemetry/semantic-conventions": "1.7.0"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.3.0"
+ "@opentelemetry/api": ">=1.2.0 <1.3.0"
},
"devDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.3.0",
+ "@opentelemetry/api": ">=1.2.0 <1.3.0",
"@opentelemetry/context-async-hooks": "1.7.0",
"@types/mocha": "10.0.0",
"@types/node": "18.6.5",
diff --git a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts
index bb20ed9440..38f85b87f2 100644
--- a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts
+++ b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-import { ContextManager, TextMapPropagator } from '@opentelemetry/api';
-import { metrics } from '@opentelemetry/api-metrics';
+import { ContextManager, TextMapPropagator, metrics } from '@opentelemetry/api';
import {
InstrumentationOption,
registerInstrumentations
diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts
index bb78a3f7d3..6d853e4902 100644
--- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts
+++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts
@@ -21,8 +21,8 @@ import {
trace,
diag,
DiagLogLevel,
+ metrics,
} from '@opentelemetry/api';
-import { metrics } from '@opentelemetry/api-metrics';
import {
AsyncHooksContextManager,
AsyncLocalStorageContextManager,
diff --git a/experimental/packages/opentelemetry-sdk-node/tsconfig.json b/experimental/packages/opentelemetry-sdk-node/tsconfig.json
index 1ecf7ce067..20eb8eace7 100644
--- a/experimental/packages/opentelemetry-sdk-node/tsconfig.json
+++ b/experimental/packages/opentelemetry-sdk-node/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-context-async-hooks"
},
diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json
index 471c94cda9..8a5adedb64 100644
--- a/experimental/packages/otlp-transformer/package.json
+++ b/experimental/packages/otlp-transformer/package.json
@@ -52,10 +52,10 @@
"README.md"
],
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.3.0"
+ "@opentelemetry/api": ">=1.2.0 <1.3.0"
},
"devDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.3.0",
+ "@opentelemetry/api": ">=1.2.0 <1.3.0",
"@types/mocha": "10.0.0",
"@types/webpack-env": "1.16.3",
"codecov": "3.8.3",
@@ -76,7 +76,6 @@
"webpack": "4.46.0"
},
"dependencies": {
- "@opentelemetry/api-metrics": "0.33.0",
"@opentelemetry/core": "1.7.0",
"@opentelemetry/resources": "1.7.0",
"@opentelemetry/sdk-metrics": "0.33.0",
diff --git a/experimental/packages/otlp-transformer/src/metrics/internal.ts b/experimental/packages/otlp-transformer/src/metrics/internal.ts
index bc17b84976..7aa9c82acd 100644
--- a/experimental/packages/otlp-transformer/src/metrics/internal.ts
+++ b/experimental/packages/otlp-transformer/src/metrics/internal.ts
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { ValueType } from '@opentelemetry/api-metrics';
+import { ValueType } from '@opentelemetry/api';
import { hrTimeToNanoseconds } from '@opentelemetry/core';
import {
AggregationTemporality,
diff --git a/experimental/packages/otlp-transformer/test/metrics.test.ts b/experimental/packages/otlp-transformer/test/metrics.test.ts
index afb65d264a..df88389c5e 100644
--- a/experimental/packages/otlp-transformer/test/metrics.test.ts
+++ b/experimental/packages/otlp-transformer/test/metrics.test.ts
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { ValueType } from '@opentelemetry/api-metrics';
+import { ValueType } from '@opentelemetry/api';
import { Resource } from '@opentelemetry/resources';
import {
AggregationTemporality,
diff --git a/experimental/packages/otlp-transformer/tsconfig.json b/experimental/packages/otlp-transformer/tsconfig.json
index 64be5006a0..11ace43aeb 100644
--- a/experimental/packages/otlp-transformer/tsconfig.json
+++ b/experimental/packages/otlp-transformer/tsconfig.json
@@ -12,9 +12,6 @@
{
"path": "../../../api"
},
- {
- "path": "../../../api-metrics"
- },
{
"path": "../../../packages/opentelemetry-core"
},
diff --git a/lerna.json b/lerna.json
index 26c6e6b7bb..d97ab02a62 100644
--- a/lerna.json
+++ b/lerna.json
@@ -3,7 +3,6 @@
"npmClient": "npm",
"packages": [
"api",
- "api-metrics",
"packages/*",
"experimental/packages/*",
"experimental/examples/*",
diff --git a/packages/opentelemetry-core/src/platform/browser/globalThis.ts b/packages/opentelemetry-core/src/platform/browser/globalThis.ts
index aa3c2fec6e..c438f2895f 100644
--- a/packages/opentelemetry-core/src/platform/browser/globalThis.ts
+++ b/packages/opentelemetry-core/src/platform/browser/globalThis.ts
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-// Updates to this file should also be replicated to @opentelemetry/api and
-// @opentelemetry/api-metrics too.
+// Updates to this file should also be replicated to @opentelemetry/api too.
/**
* - globalThis (New standard)
diff --git a/tsconfig.base.json b/tsconfig.base.json
index ca44078430..cbafb67678 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -16,6 +16,7 @@
"noImplicitReturns": true,
"noUnusedLocals": true,
"pretty": true,
+ "skipLibCheck": true,
"sourceMap": true,
"strict": true,
"strictNullChecks": true,
diff --git a/tsconfig.json b/tsconfig.json
index d6642f0f02..371ba80055 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -8,7 +8,6 @@
"experimental/packages/exporter-trace-otlp-grpc",
"experimental/packages/exporter-trace-otlp-http",
"experimental/packages/exporter-trace-otlp-proto",
- "experimental/packages/opentelemetry-api-metrics",
"experimental/packages/opentelemetry-exporter-metrics-otlp-grpc",
"experimental/packages/opentelemetry-exporter-metrics-otlp-http",
"experimental/packages/opentelemetry-exporter-metrics-otlp-proto",
@@ -53,9 +52,6 @@
{
"path": "api"
},
- {
- "path": "api-metrics"
- },
{
"path": "packages/opentelemetry-context-async-hooks"
},