Skip to content

Commit 611d915

Browse files
committed
chore: make the @packages/telemetry an independent bundle without needed ts-node to register entrypoint. Both ESM and CJS distributions are built and types are used as source to be compatible with older styles of commonjs bundling. Types are not shipped with the package.
1 parent 7062573 commit 611d915

23 files changed

+179
-55
lines changed

guides/esm-migration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ When migrating some of these projects away from the `ts-node` entry [see `@packa
6565
- [ ] packages/server **PARTIAL** - many source/test files in JS. highest priority
6666
- [ ] packages/socket **PARTIAL** - entry point is JS. Tests are JS
6767
- [x] packages/stderr-filtering ✅ **COMPLETED**
68-
- [ ] packages/telemetry **PARTIAL** - entry point is JS
68+
- [x] packages/telemetry **COMPLETED**
6969
- [ ] packages/ts **PARTIAL** - ultimate goal is removal and likely not worth the effort to convert
7070
- [x] packages/types ✅ **COMPLETED**
7171
- [x] packages/v8-snapshot-require

packages/app/src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Toast, { POSITION } from 'vue-toastification'
1313
import 'vue-toastification/dist/index.css'
1414
import { createWebsocket } from './runner'
1515
import { getRunnerConfigFromWindow } from './runner/get-runner-config-from-window'
16-
import { telemetry } from '@packages/telemetry/src/browser'
16+
import { telemetry } from '@packages/telemetry/browser/client'
1717

1818
// Grab the time just before loading config to include that in the cypress:app span
1919
const now = performance.now()

packages/app/src/runner/event-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { useStudioStore } from '../store/studio-store'
1414
import { getAutIframeModel } from '.'
1515
import { handlePausing } from './events/pausing'
1616
import { addTelemetryListeners } from './events/telemetry'
17-
import { telemetry } from '@packages/telemetry/src/browser'
17+
import { telemetry } from '@packages/telemetry/browser/client'
1818
import { addCaptureProtocolListeners } from './events/capture-protocol'
1919
import { getRunnerConfigFromWindow } from './get-runner-config-from-window'
2020

packages/app/src/runner/events/telemetry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { telemetry } from '@packages/telemetry/src/browser'
1+
import { telemetry } from '@packages/telemetry/browser/client'
22

33
export const addTelemetryListeners = (Cypress: Cypress.Cypress) => {
44
Cypress.on('test:before:run', (attributes, test) => {

packages/driver/src/cypress.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import type { CachedTestState } from '@packages/types'
4848
import { DocumentDomainInjection } from '@packages/network/lib/document-domain-injection'
4949
import { setSpecContentSecurityPolicy } from './util/privileged_channel'
5050

51-
import { telemetry } from '@packages/telemetry/src/browser'
51+
import { telemetry } from '@packages/telemetry/browser/client'
5252

5353
const debug = debugFn('cypress:driver:cypress')
5454

packages/driver/src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import './config/bluebird'
44
import './config/jquery'
55
import './config/lodash'
66
import $Cypress from './cypress'
7-
import { telemetry } from '@packages/telemetry/src/browser'
7+
import { telemetry } from '@packages/telemetry/browser/client'
88

99
// Telemetry has already been initialized in the 'app' package
1010
// but since this is a different package we have to link up the instances.

packages/proxy/lib/network-proxy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export class NetworkProxy {
5555
isVerbose: true,
5656
})
5757

58-
await this.http.handleHttpRequest(req, res, span).finally(() => {
58+
await this.http.handleHttpRequest(req, res, span || undefined).finally(() => {
5959
span?.end()
6060
})
6161
}

packages/telemetry/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
cjs/
2+
esm/
3+
browser/
4+
!src/browser

packages/telemetry/README.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,18 +140,18 @@ const { OTLPTraceExporterIPC } = require('@packages/telemetry')
140140
141141
### Browser
142142
143-
To access the browser telemetry singleton use the browser export directly.
143+
To access the browser telemetry singleton use the browser export.
144144
145145
```js
146-
import { telemetry } from '@packages/telemetry/src/browser'
146+
import { telemetry } from '@packages/telemetry/browser/client'
147147

148148
telemetry.init({options})
149149
```
150150
151151
The browser singleton is also stored on window, in some cases when the telemetry package is included in multiple packages you can use the `attach` method to retrieve and setup the singleton from the instance saved on window.
152152
153153
```js
154-
import { telemetry } from '@packages/telemetry/src/browser'
154+
import { telemetry } from '@packages/telemetry/browser/client'
155155

156156
telemetry.attach()
157157
```
@@ -198,7 +198,7 @@ const { telemetry } = require('@packages/telemetry')
198198
Browser:
199199
200200
```js
201-
import { telemetry } from '@packages/telemetry/src/browser'
201+
import { telemetry } from '@packages/telemetry/browser/client'
202202
```
203203
204204
### Spans
@@ -290,4 +290,12 @@ The metrics api is tbd.
290290
## Open Telemetry Links
291291
292292
* [otel docs](https://opentelemetry.io/docs/)
293-
* [otel sdk](https://open-telemetry.github.io/opentelemetry-js/index.html)
293+
* [otel sdk](https://open-telemetry.github.io/opentelemetry-js/index.html)
294+
295+
### Bundling
296+
297+
For the frontend telemetry collector, we use `rollup` to bundle the telemetry collector for frontend consumption. This DOES ship with the binary.
298+
299+
For the server, we bundle a CommonJS version to be used in the Node.js context.
300+
301+
We also build an ESM version of `@packages/scaffold-config` for the `node` client but it isn't currently in use as the consumption server-side is CommonJS currently.

packages/telemetry/index.js

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)