diff --git a/examples/all-instrumentations/package.json b/examples/all-instrumentations/package.json index c38864a..02b5c0f 100644 --- a/examples/all-instrumentations/package.json +++ b/examples/all-instrumentations/package.json @@ -13,8 +13,6 @@ "@opentelemetry/api-logs": "^0.212.0", "@opentelemetry/sdk-logs": "^0.212.0", "@opentelemetry/instrumentation": "^0.212.0", - "@opentelemetry/instrumentation-navigation-timing": "*", - "@opentelemetry/instrumentation-user-action": "*", - "@opentelemetry/instrumentation-web-vitals": "*" + "@opentelemetry/browser-instrumentation": "*" } } diff --git a/examples/all-instrumentations/src/main.ts b/examples/all-instrumentations/src/main.ts index d5e3189..999e307 100644 --- a/examples/all-instrumentations/src/main.ts +++ b/examples/all-instrumentations/src/main.ts @@ -1,10 +1,10 @@ import './style.css'; import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api'; import { logs } from '@opentelemetry/api-logs'; +import { NavigationTimingInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/navigation-timing'; +import { UserActionInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/user-action'; +import { WebVitalsInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/web-vitals'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; -import { NavigationTimingInstrumentation } from '@opentelemetry/instrumentation-navigation-timing'; -import { UserActionInstrumentation } from '@opentelemetry/instrumentation-user-action'; -import { WebVitalsInstrumentation } from '@opentelemetry/instrumentation-web-vitals'; import { ConsoleLogRecordExporter, LoggerProvider, diff --git a/package-lock.json b/package-lock.json index b5de892..986acfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,10 +48,8 @@ "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.212.0", + "@opentelemetry/browser-instrumentation": "*", "@opentelemetry/instrumentation": "^0.212.0", - "@opentelemetry/instrumentation-navigation-timing": "*", - "@opentelemetry/instrumentation-user-action": "*", - "@opentelemetry/instrumentation-web-vitals": "*", "@opentelemetry/sdk-logs": "^0.212.0" } }, @@ -1940,6 +1938,10 @@ "node": ">=8.0.0" } }, + "node_modules/@opentelemetry/browser-instrumentation": { + "resolved": "packages/instrumentation", + "link": true + }, "node_modules/@opentelemetry/core": { "version": "2.5.1", "license": "Apache-2.0", @@ -1970,18 +1972,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-navigation-timing": { - "resolved": "packages/instrumentation-navigation-timing", - "link": true - }, - "node_modules/@opentelemetry/instrumentation-user-action": { - "resolved": "packages/instrumentation-user-action", - "link": true - }, - "node_modules/@opentelemetry/instrumentation-web-vitals": { - "resolved": "packages/instrumentation-web-vitals", - "link": true - }, "node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs": { "version": "0.213.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz", @@ -8195,30 +8185,55 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/instrumentation-navigation-timing": { - "name": "@opentelemetry/instrumentation-navigation-timing", + "packages/browser-instrumentation": { + "name": "@opentelemetry/browser-instrumentation", "version": "0.1.0", + "extraneous": true, "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.213.0", - "@opentelemetry/instrumentation": "^0.213.0" + "@opentelemetry/api-logs": "^0.212.0", + "@opentelemetry/instrumentation": "^0.212.0", + "@opentelemetry/web-utils": "*", + "web-vitals": "^5.1.0" + }, + "devDependencies": { + "@opentelemetry/test-utils": "*" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" } }, - "packages/instrumentation-navigation-timing/node_modules/@opentelemetry/api-logs": { - "version": "0.213.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz", - "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==", + "packages/instrumentation": { + "name": "@opentelemetry/browser-instrumentation", + "version": "0.1.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api": "^1.3.0" + "@opentelemetry/api-logs": "^0.213.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/web-utils": "*", + "web-vitals": "^5.1.0" }, - "engines": { - "node": ">=8.0.0" + "devDependencies": { + "@opentelemetry/test-utils": "*" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" + } + }, + "packages/instrumentation-navigation-timing": { + "name": "@opentelemetry/instrumentation-navigation-timing", + "version": "0.1.0", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "^0.213.0", + "@opentelemetry/instrumentation": "^0.213.0" } }, "packages/instrumentation-user-action": { "name": "@opentelemetry/instrumentation-user-action", "version": "0.1.0", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.213.0", @@ -8229,21 +8244,10 @@ "@opentelemetry/test-utils": "*" } }, - "packages/instrumentation-user-action/node_modules/@opentelemetry/api-logs": { - "version": "0.213.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz", - "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "packages/instrumentation-web-vitals": { "name": "@opentelemetry/instrumentation-web-vitals", "version": "0.1.0", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.213.0", @@ -8254,7 +8258,7 @@ "@opentelemetry/api": "^1.9.0" } }, - "packages/instrumentation-web-vitals/node_modules/@opentelemetry/api-logs": { + "packages/instrumentation/node_modules/@opentelemetry/api-logs": { "version": "0.213.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz", "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==", diff --git a/packages/instrumentation-navigation-timing/CHANGELOG.md b/packages/instrumentation-navigation-timing/CHANGELOG.md deleted file mode 100644 index 0bd04a1..0000000 --- a/packages/instrumentation-navigation-timing/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ -# Changelog - -## [0.1.0](https://github.com/open-telemetry/opentelemetry-browser/compare/instrumentation-navigation-timing-v0.0.0...instrumentation-navigation-timing-v0.1.0) (2025-12-11) - -### Features - -* **instrumentation-navigation-timing:** add new navigation timing instrumentation package - * Initial skeleton package for navigation timing instrumentation - * Provides base structure for capturing browser navigation timing metrics diff --git a/packages/instrumentation-navigation-timing/README.md b/packages/instrumentation-navigation-timing/README.md deleted file mode 100644 index ef7a73c..0000000 --- a/packages/instrumentation-navigation-timing/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# OpenTelemetry NavigationTiming Instrumentation for web - -[![NPM Published Version][npm-img]][npm-url] -[![Apache License][license-image]][license-image] - -This module provides automatic instrumentation for *navigation timing* for Web applications. - -## Installation - -```bash -npm install @opentelemetry/instrumentation-navigation-timing -``` - -## Usage - -### Initialize - -```typescript -import { logs } from '@opentelemetry/api-logs'; -import { - ConsoleLogRecordExporter, - LoggerProvider, - SimpleLogRecordProcessor, -} from '@opentelemetry/sdk-logs'; -import { NavigationTimingInstrumentation } from '@opentelemetry/instrumentation-navigation-timing'; -import { registerInstrumentations } from '@opentelemetry/instrumentation'; - -const logProvider = new LoggerProvider({ - processors: [ - new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()), - ], -}); -logs.setGlobalLoggerProvider(logProvider); - -registerInstrumentations({ - instrumentations: [ - new NavigationTimingInstrumentation(), - ], -}); -``` - -## Useful links - -- For more information on OpenTelemetry, visit: -- For more about OpenTelemetry Browser: -- 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-browser/discussions/landing -[license-url]: https://github.com/open-telemetry/opentelemetry-browser/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/instrumentation-navigation-timing -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-navigation-timing.svg diff --git a/packages/instrumentation-navigation-timing/package.json b/packages/instrumentation-navigation-timing/package.json deleted file mode 100644 index b2d593e..0000000 --- a/packages/instrumentation-navigation-timing/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "@opentelemetry/instrumentation-navigation-timing", - "version": "0.1.0", - "description": "OpenTelemetry instrumentation for navigation timing for browser applications.", - "keywords": [ - "opentelemetry", - "browser", - "web", - "instrumentation", - "navigation-timing" - ], - "homepage": "https://github.com/open-telemetry/opentelemetry-browser", - "bugs": "https://github.com/open-telemetry/opentelemetry-browser/issues", - "license": "Apache-2.0", - "author": "OpenTelemetry Authors", - "repository": { - "type": "git", - "url": "git+https://github.com/open-telemetry/opentelemetry-browser.git", - "directory": "packages/instrumentation-navigation-timing" - }, - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "files": [ - "dist" - ], - "scripts": { - "build": "tsdown", - "watch": "tsdown --watch --no-clean", - "check-types": "tsc", - "test": "vitest run --browser.enabled=false", - "test:watch": "vitest --browser.enabled=false", - "test:coverage": "vitest --coverage --browser.enabled=false" - }, - "dependencies": { - "@opentelemetry/api-logs": "^0.213.0", - "@opentelemetry/instrumentation": "^0.213.0" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/instrumentation-navigation-timing/tsdown.config.ts b/packages/instrumentation-navigation-timing/tsdown.config.ts deleted file mode 100644 index b769b79..0000000 --- a/packages/instrumentation-navigation-timing/tsdown.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'tsdown'; -import baseConfig from '../../tsdown.config.ts'; - -export default defineConfig({ - ...baseConfig, -}); diff --git a/packages/instrumentation-user-action/README.md b/packages/instrumentation-user-action/README.md deleted file mode 100644 index ed07be0..0000000 --- a/packages/instrumentation-user-action/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# OpenTelemetry UserAction Instrumentation for web - -[![NPM Published Version][npm-img]][npm-url] -[![Apache License][license-image]][license-image] - -This module provides automatic instrumentation for *user actions* for Web applications, which may be loaded using the [`@opentelemetry/sdk-logs`](https://www.npmjs.com/package/@opentelemetry/sdk-logs) package. - -Compatible with OpenTelemetry JS API and SDK `1.0+`. - -## Installation - -```bash -npm install @opentelemetry/instrumentation-user-action -``` - -## Usage - -### Initialize - -```typescript -import { logs } from '@opentelemetry/api-logs'; -import { - ConsoleLogRecordExporter, - LoggerProvider, - SimpleLogRecordProcessor, -} from '@opentelemetry/sdk-logs'; -import { UserActionInstrumentation } from '@opentelemetry/instrumentation-user-action'; -import { registerInstrumentations } from '@opentelemetry/instrumentation'; - -const logProvider = new LoggerProvider({ - processors: [ - new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()), - ], -}); -logs.setGlobalLoggerProvider(logProvider); - -registerInstrumentations({ - instrumentations: [ - new UserActionInstrumentation(), - ], -}); - -// Add a button to click -const btn1 = document.createElement('button'); -btn1.append(document.createTextNode('btn1')); - -document.querySelector('body').append(btn1); - -// now click on button to see user action logs -``` - -### Configuration - -By default the instrumentation captures `mousedown`. You can configure which events to capture by passing an options object to the `UserActionInstrumentation` constructor: - -```typescript -new UserActionInstrumentation({ - autoCapturedActions: [], // default is ['mousedown'] -}); -``` - -### Additional Attributes - -Data attributes with the prefix `data-otel-` on the target element of the user action event will be added as additional attributes to the generated log record. For example, the following button: - -```html - -``` - -## Semantic Conventions - -This package does not currently generate any attributes from semantic conventions. - -## Useful links - -- For more information on OpenTelemetry, visit: -- For more about OpenTelemetry Browser: -- 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-browser/discussions/landing -[license-url]: https://github.com/open-telemetry/opentelemetry-browser/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/instrumentation-user-action -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-user-action.svg \ No newline at end of file diff --git a/packages/instrumentation-user-action/package.json b/packages/instrumentation-user-action/package.json deleted file mode 100644 index 729db05..0000000 --- a/packages/instrumentation-user-action/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "@opentelemetry/instrumentation-user-action", - "version": "0.1.0", - "description": "OpenTelemetry instrumentation for user actions for browser applications.", - "keywords": [ - "opentelemetry", - "browser", - "web", - "instrumentation", - "user-action" - ], - "homepage": "https://github.com/open-telemetry/opentelemetry-browser", - "bugs": "https://github.com/open-telemetry/opentelemetry-browser/issues", - "license": "Apache-2.0", - "author": "OpenTelemetry Authors", - "repository": { - "type": "git", - "url": "git+https://github.com/open-telemetry/opentelemetry-browser.git", - "directory": "packages/instrumentation-user-action" - }, - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "files": [ - "dist" - ], - "scripts": { - "build": "tsdown", - "watch": "tsdown --watch --no-clean", - "check-types": "tsc", - "test": "vitest run", - "test:watch": "vitest", - "test:coverage": "vitest --coverage" - }, - "dependencies": { - "@opentelemetry/api-logs": "^0.213.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/web-utils": "*" - }, - "devDependencies": { - "@opentelemetry/test-utils": "*" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/instrumentation-user-action/tsconfig.json b/packages/instrumentation-user-action/tsconfig.json deleted file mode 100644 index 0ff2110..0000000 --- a/packages/instrumentation-user-action/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "rootDir": "./src" - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] -} diff --git a/packages/instrumentation-web-vitals/README.md b/packages/instrumentation-web-vitals/README.md deleted file mode 100644 index 444041f..0000000 --- a/packages/instrumentation-web-vitals/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# @opentelemetry/instrumentation-web-vitals - -OpenTelemetry instrumentation for Core Web Vitals for browser applications. - -## Installation - -```bash -npm install @opentelemetry/instrumentation-web-vitals -``` - -## Usage - -```typescript -import { WebVitalsInstrumentation } from '@opentelemetry/instrumentation-web-vitals'; -import { registerInstrumentations } from '@opentelemetry/instrumentation'; - -registerInstrumentations({ - instrumentations: [ - new WebVitalsInstrumentation({ - // configuration options - }), - ], -}); -``` - -## Configuration - -| Option | Type | Default | Description | -|--------|------|---------|-------------| -| `trackingLevel` | `'core'` \| `'all'` | `'core'` | Which metrics to track. `'core'` tracks CLS, INP, and LCP (the Core Web Vitals). `'all'` additionally tracks FCP and TTFB. | - -## License - -Apache-2.0 diff --git a/packages/instrumentation-web-vitals/tsconfig.json b/packages/instrumentation-web-vitals/tsconfig.json deleted file mode 100644 index 0ff2110..0000000 --- a/packages/instrumentation-web-vitals/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "rootDir": "./src" - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] -} diff --git a/packages/instrumentation-web-vitals/tsdown.config.ts b/packages/instrumentation-web-vitals/tsdown.config.ts deleted file mode 100644 index b769b79..0000000 --- a/packages/instrumentation-web-vitals/tsdown.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'tsdown'; -import baseConfig from '../../tsdown.config.ts'; - -export default defineConfig({ - ...baseConfig, -}); diff --git a/packages/instrumentation/README.md b/packages/instrumentation/README.md new file mode 100644 index 0000000..c11b656 --- /dev/null +++ b/packages/instrumentation/README.md @@ -0,0 +1,123 @@ +# @opentelemetry/browser-instrumentation + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +OpenTelemetry browser instrumentations, available as subpath exports under `./experimental/*`. + +## Installation + +```bash +npm install @opentelemetry/browser-instrumentation +``` + +## Instrumentations + +- [Navigation Timing](#navigation-timing) — automatic instrumentation for navigation timing +- [User Action](#user-action) — automatic instrumentation for user actions (clicks) +- [Web Vitals](#web-vitals) — automatic instrumentation for Core Web Vitals + +## Usage + +```typescript +import { logs } from '@opentelemetry/api-logs'; +import { + ConsoleLogRecordExporter, + LoggerProvider, + SimpleLogRecordProcessor, +} from '@opentelemetry/sdk-logs'; +import { registerInstrumentations } from '@opentelemetry/instrumentation'; +import { NavigationTimingInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/navigation-timing'; +import { UserActionInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/user-action'; +import { WebVitalsInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/web-vitals'; + +const logProvider = new LoggerProvider({ + processors: [ + new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()), + ], +}); +logs.setGlobalLoggerProvider(logProvider); + +registerInstrumentations({ + instrumentations: [ + new NavigationTimingInstrumentation(), + new UserActionInstrumentation(), + new WebVitalsInstrumentation(), + ], +}); +``` + +--- + +### Navigation Timing + +```typescript +import { NavigationTimingInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/navigation-timing'; +``` + +Provides automatic instrumentation for [Navigation Timing](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming) in web applications. + +--- + +### User Action + +```typescript +import { UserActionInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/user-action'; +``` + +Provides automatic instrumentation for user actions in web applications. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +#### Configuration + +By default the instrumentation captures `click` events. You can configure which events to capture by passing an options object: + +```typescript +new UserActionInstrumentation({ + autoCapturedActions: [], // default is ['click'] +}); +``` + +#### Additional Attributes + +Data attributes with the prefix `data-otel-` on the target element will be added as additional attributes to the generated log record. For example: + +```html + +``` + +--- + +### Web Vitals + +```typescript +import { WebVitalsInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/web-vitals'; +``` + +Provides automatic instrumentation for [Core Web Vitals](https://web.dev/vitals/) using the [`web-vitals`](https://github.com/GoogleChrome/web-vitals) library. + +#### Configuration + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `includeRawAttribution` | `boolean` | `false` | When true, sets the log record body to the JSON-stringified `web-vitals` attribution object. | +| `applyCustomLogRecordData` | `(logRecord: LogRecord) => void` | — | Hook to modify log records before they are emitted. | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry Browser: +- 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-browser/discussions/landing +[license-url]: https://github.com/open-telemetry/opentelemetry-browser/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/browser-instrumentation +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fbrowser-instrumentation.svg diff --git a/packages/instrumentation-web-vitals/package.json b/packages/instrumentation/package.json similarity index 63% rename from packages/instrumentation-web-vitals/package.json rename to packages/instrumentation/package.json index 289735c..c998a8d 100644 --- a/packages/instrumentation-web-vitals/package.json +++ b/packages/instrumentation/package.json @@ -1,12 +1,14 @@ { - "name": "@opentelemetry/instrumentation-web-vitals", + "name": "@opentelemetry/browser-instrumentation", "version": "0.1.0", - "description": "OpenTelemetry instrumentation for Core Web Vitals for browser applications.", + "description": "OpenTelemetry browser instrumentations.", "keywords": [ "opentelemetry", "browser", "web", "instrumentation", + "navigation-timing", + "user-action", "web-vitals" ], "homepage": "https://github.com/open-telemetry/opentelemetry-browser", @@ -16,19 +18,20 @@ "repository": { "type": "git", "url": "git+https://github.com/open-telemetry/opentelemetry-browser.git", - "directory": "packages/instrumentation-web-vitals" + "directory": "packages/instrumentation" }, "type": "module", - "types": "./dist/index.d.ts", "exports": { - ".": "./dist/index.js" + "./experimental/navigation-timing": "./dist/navigation-timing/index.js", + "./experimental/user-action": "./dist/user-action/index.js", + "./experimental/web-vitals": "./dist/web-vitals/index.js" }, "files": [ "dist" ], "scripts": { "build": "tsdown", - "dev": "tsdown --watch --no-clean", + "watch": "tsdown --watch --no-clean", "check-types": "tsc", "test": "vitest run", "test:watch": "vitest", @@ -37,11 +40,15 @@ "dependencies": { "@opentelemetry/api-logs": "^0.213.0", "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/web-utils": "*", "web-vitals": "^5.1.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0" }, + "devDependencies": { + "@opentelemetry/test-utils": "*" + }, "publishConfig": { "access": "public" } diff --git a/packages/instrumentation-navigation-timing/src/index.ts b/packages/instrumentation/src/navigation-timing/index.ts similarity index 100% rename from packages/instrumentation-navigation-timing/src/index.ts rename to packages/instrumentation/src/navigation-timing/index.ts diff --git a/packages/instrumentation-navigation-timing/src/instrumentation.test.ts b/packages/instrumentation/src/navigation-timing/instrumentation.test.ts similarity index 100% rename from packages/instrumentation-navigation-timing/src/instrumentation.test.ts rename to packages/instrumentation/src/navigation-timing/instrumentation.test.ts diff --git a/packages/instrumentation-navigation-timing/src/instrumentation.ts b/packages/instrumentation/src/navigation-timing/instrumentation.ts similarity index 100% rename from packages/instrumentation-navigation-timing/src/instrumentation.ts rename to packages/instrumentation/src/navigation-timing/instrumentation.ts diff --git a/packages/instrumentation-navigation-timing/src/semconv.ts b/packages/instrumentation/src/navigation-timing/semconv.ts similarity index 100% rename from packages/instrumentation-navigation-timing/src/semconv.ts rename to packages/instrumentation/src/navigation-timing/semconv.ts diff --git a/packages/instrumentation-navigation-timing/src/types.ts b/packages/instrumentation/src/navigation-timing/types.ts similarity index 100% rename from packages/instrumentation-navigation-timing/src/types.ts rename to packages/instrumentation/src/navigation-timing/types.ts diff --git a/packages/instrumentation-user-action/src/index.ts b/packages/instrumentation/src/user-action/index.ts similarity index 100% rename from packages/instrumentation-user-action/src/index.ts rename to packages/instrumentation/src/user-action/index.ts diff --git a/packages/instrumentation-user-action/src/instrumentation.test.ts b/packages/instrumentation/src/user-action/instrumentation.test.ts similarity index 100% rename from packages/instrumentation-user-action/src/instrumentation.test.ts rename to packages/instrumentation/src/user-action/instrumentation.test.ts diff --git a/packages/instrumentation-user-action/src/instrumentation.ts b/packages/instrumentation/src/user-action/instrumentation.ts similarity index 100% rename from packages/instrumentation-user-action/src/instrumentation.ts rename to packages/instrumentation/src/user-action/instrumentation.ts diff --git a/packages/instrumentation-user-action/src/semconv.ts b/packages/instrumentation/src/user-action/semconv.ts similarity index 100% rename from packages/instrumentation-user-action/src/semconv.ts rename to packages/instrumentation/src/user-action/semconv.ts diff --git a/packages/instrumentation-user-action/src/types.ts b/packages/instrumentation/src/user-action/types.ts similarity index 100% rename from packages/instrumentation-user-action/src/types.ts rename to packages/instrumentation/src/user-action/types.ts diff --git a/packages/instrumentation-web-vitals/src/index.ts b/packages/instrumentation/src/web-vitals/index.ts similarity index 100% rename from packages/instrumentation-web-vitals/src/index.ts rename to packages/instrumentation/src/web-vitals/index.ts diff --git a/packages/instrumentation-web-vitals/src/instrumentation.test.ts b/packages/instrumentation/src/web-vitals/instrumentation.test.ts similarity index 100% rename from packages/instrumentation-web-vitals/src/instrumentation.test.ts rename to packages/instrumentation/src/web-vitals/instrumentation.test.ts diff --git a/packages/instrumentation-web-vitals/src/instrumentation.ts b/packages/instrumentation/src/web-vitals/instrumentation.ts similarity index 100% rename from packages/instrumentation-web-vitals/src/instrumentation.ts rename to packages/instrumentation/src/web-vitals/instrumentation.ts diff --git a/packages/instrumentation-web-vitals/src/semconv.ts b/packages/instrumentation/src/web-vitals/semconv.ts similarity index 100% rename from packages/instrumentation-web-vitals/src/semconv.ts rename to packages/instrumentation/src/web-vitals/semconv.ts diff --git a/packages/instrumentation-web-vitals/src/types.ts b/packages/instrumentation/src/web-vitals/types.ts similarity index 100% rename from packages/instrumentation-web-vitals/src/types.ts rename to packages/instrumentation/src/web-vitals/types.ts diff --git a/packages/instrumentation-navigation-timing/tsconfig.json b/packages/instrumentation/tsconfig.json similarity index 100% rename from packages/instrumentation-navigation-timing/tsconfig.json rename to packages/instrumentation/tsconfig.json diff --git a/packages/instrumentation-user-action/tsdown.config.ts b/packages/instrumentation/tsdown.config.ts similarity index 76% rename from packages/instrumentation-user-action/tsdown.config.ts rename to packages/instrumentation/tsdown.config.ts index b769b79..c2c6655 100644 --- a/packages/instrumentation-user-action/tsdown.config.ts +++ b/packages/instrumentation/tsdown.config.ts @@ -3,4 +3,6 @@ import baseConfig from '../../tsdown.config.ts'; export default defineConfig({ ...baseConfig, + entry: ['src/*/index.ts'], + dts: true, }); diff --git a/packages/instrumentation/vitest.config.ts b/packages/instrumentation/vitest.config.ts new file mode 100644 index 0000000..5ce6665 --- /dev/null +++ b/packages/instrumentation/vitest.config.ts @@ -0,0 +1,30 @@ +import { playwright } from '@vitest/browser-playwright'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + projects: [ + { + test: { + name: 'unit', + environment: 'jsdom', + include: ['src/**/*.test.ts'], + exclude: ['src/web-vitals/**'], + browser: { enabled: false }, + }, + }, + { + test: { + name: 'browser', + include: ['src/web-vitals/**/*.test.ts'], + browser: { + provider: playwright(), + enabled: true, + headless: true, + instances: [{ browser: 'chromium' }], + }, + }, + }, + ], + }, +}); diff --git a/packages/web-utils/package.json b/packages/web-utils/package.json index 2714164..ba030aa 100644 --- a/packages/web-utils/package.json +++ b/packages/web-utils/package.json @@ -1,5 +1,6 @@ { "name": "@opentelemetry/web-utils", + "private": true, "version": "0.1.0", "description": "Utility package with web-specific helpers", "keywords": [