Skip to content

Commit a30c08e

Browse files
committed
refactor: remove unnecessary re-exports from global-telemetry
Remove all re-exports from global-telemetry.ts and have consumers import utilities directly from telemetry-utils.ts where appropriate. Changes: - Removed re-exports of getProcessor, initializeInstrumentation - Removed re-exports of ensureSentryInitialized - Removed re-exports of computeDuration, isTelemetryEnabled - Removed re-exports of types (CLIError, Telemetry, TelemetryGlobal) Updated imports: - bin/run.js: Import computeDuration from telemetry-utils - All hooks: Import isTelemetryEnabled from telemetry-utils - Hooks still import orchestrator functions from global-telemetry (setupTelemetry, reportCmdNotFound) Updated tests: - Removed duplicate computeDuration and isTelemetryEnabled tests from global-telemetry.unit.test.ts (already tested in telemetry-utils.unit.test.ts) - Removed unused sinon imports - Test file now only tests orchestrator functions Windows compatibility: - Added windowsHide: true to sentry.ts spawn call to prevent console windows on Windows Benefits: - Clearer API surface - global-telemetry only exports what it owns - No unnecessary indirection for utility functions - Makes it obvious which functions are orchestrators vs utilities - Better test organization - tests colocated with implementations - Reduces coupling between modules The public API of global-telemetry now consists only of: - setupTelemetry() - reportCmdNotFound() - sendTelemetry()
1 parent aacf662 commit a30c08e

File tree

8 files changed

+19
-64
lines changed

8 files changed

+19
-64
lines changed

bin/run.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const enableTelemetry = process.platform !== 'win32' || process.env.ENABLE_WINDO
2020
if (enableTelemetry) {
2121
// Dynamically import telemetry modules
2222
const {setupTelemetryHandlers} = await import('../dist/lib/analytics-telemetry/worker-client.js')
23-
const {computeDuration} = await import('../dist/lib/analytics-telemetry/global-telemetry.js')
23+
const {computeDuration} = await import('../dist/lib/analytics-telemetry/telemetry-utils.js')
2424

2525
// Setup all telemetry handlers (beforeExit, SIGINT, SIGTERM)
2626
setupTelemetryHandlers({
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import {Hook} from '@oclif/core/hooks'
22

33
const performance_analytics: Hook<'command_not_found'> = async function () {
4-
const telemetry = await import('../../lib/analytics-telemetry/global-telemetry.js')
4+
const {isTelemetryEnabled} = await import('../../lib/analytics-telemetry/telemetry-utils.js')
5+
const {reportCmdNotFound} = await import('../../lib/analytics-telemetry/global-telemetry.js')
56

67
// Use the consolidated telemetry check
7-
if (!telemetry.isTelemetryEnabled()) {
8+
if (!isTelemetryEnabled()) {
89
return
910
}
1011

11-
(global as any).cliTelemetry = telemetry.reportCmdNotFound(this.config)
12+
(global as any).cliTelemetry = reportCmdNotFound(this.config)
1213
}
1314

1415
export default performance_analytics

src/hooks/finally/sentry.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ const finallyHook: Hook<'finally'> = async function (options) {
9393
return
9494
}
9595

96-
const telemetry = await import('../../lib/analytics-telemetry/global-telemetry.js')
96+
const {isTelemetryEnabled} = await import('../../lib/analytics-telemetry/telemetry-utils.js')
9797

9898
// Use the consolidated telemetry check
99-
if (!telemetry.isTelemetryEnabled()) {
99+
if (!isTelemetryEnabled()) {
100100
return
101101
}
102102

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import {Hook} from '@oclif/core/hooks'
22

33
const performance_analytics: Hook<'init'> = async function (options) {
4-
const telemetry = await import('../../lib/analytics-telemetry/global-telemetry.js')
4+
const {isTelemetryEnabled} = await import('../../lib/analytics-telemetry/telemetry-utils.js')
5+
const {setupTelemetry} = await import('../../lib/analytics-telemetry/global-telemetry.js')
56

67
// Use the consolidated telemetry check
7-
if (!telemetry.isTelemetryEnabled()) {
8+
if (!isTelemetryEnabled()) {
89
return
910
}
1011

11-
(global as any).cliTelemetry = telemetry.setupTelemetry(this.config, options)
12+
(global as any).cliTelemetry = setupTelemetry(this.config, options)
1213
}
1314

1415
export default performance_analytics

src/hooks/postrun/performance_analytics.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ const performance_analytics: Hook<'postrun'> = async function () {
77
return
88
}
99

10-
const telemetry = await import('../../lib/analytics-telemetry/global-telemetry.js')
10+
const {isTelemetryEnabled, computeDuration} = await import('../../lib/analytics-telemetry/telemetry-utils.js')
1111

1212
// Use the consolidated telemetry check
13-
if (!telemetry.isTelemetryEnabled()) {
13+
if (!isTelemetryEnabled()) {
1414
return
1515
}
1616

1717
const cmdStartTime = globalAny.cliTelemetry.commandRunDuration
18-
globalAny.cliTelemetry.commandRunDuration = telemetry.computeDuration(cmdStartTime)
18+
globalAny.cliTelemetry.commandRunDuration = computeDuration(cmdStartTime)
1919
globalAny.cliTelemetry.lifecycleHookCompletion.postrun = true
2020
await Reflect.get(globalThis, 'recordPromise')
2121
}

src/hooks/prerun/analytics.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import {Hook} from '@oclif/core/hooks'
33
import Analytics from '../../analytics.js'
44

55
const analytics: Hook<'prerun'> = async function (options) {
6-
const telemetry = await import('../../lib/analytics-telemetry/global-telemetry.js')
6+
const {isTelemetryEnabled} = await import('../../lib/analytics-telemetry/telemetry-utils.js')
7+
const {setupTelemetry} = await import('../../lib/analytics-telemetry/global-telemetry.js')
78

89
// Use the consolidated telemetry check
9-
if (!telemetry.isTelemetryEnabled()) {
10+
if (!isTelemetryEnabled()) {
1011
return
1112
}
1213

@@ -19,7 +20,7 @@ const analytics: Hook<'prerun'> = async function (options) {
1920
globalAny.cliTelemetry.isVersionOrHelp = false
2021
globalAny.cliTelemetry.lifecycleHookCompletion.prerun = true
2122
} else {
22-
globalAny.cliTelemetry = telemetry.setupTelemetry(this.config, options)
23+
globalAny.cliTelemetry = setupTelemetry(this.config, options)
2324
}
2425

2526
const analyticsInstance = new Analytics(this.config)

src/lib/analytics-telemetry/global-telemetry.ts

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,15 @@
55

66
import type {Config} from '@oclif/core/interfaces'
77

8-
// Re-export Honeycomb client functions
9-
export {getProcessor, initializeInstrumentation} from './honeycomb-client.js'
10-
11-
export {ensureSentryInitialized} from './sentry-client.js'
12-
138
// Import internal dependencies
149
import {sendToHoneycomb} from './honeycomb-client.js'
1510
import {sendToSentry} from './sentry-client.js'
1611
import {
17-
CLIError,
1812
isTelemetryDisabled,
1913
setVersion,
2014
Telemetry,
21-
telemetryDebug,
2215
TelemetryData,
16+
telemetryDebug,
2317
} from './telemetry-utils.js'
2418

2519
/**
@@ -123,14 +117,3 @@ export function setupTelemetry(config: Config, opts: TelemetryOptions): Telemetr
123117

124118
return irregularTelemetryObject
125119
}
126-
127-
// Export ensureSentryInitialized for use by finally hook
128-
129-
// Re-export utilities and types
130-
export {
131-
type CLIError,
132-
computeDuration,
133-
isTelemetryEnabled,
134-
type Telemetry,
135-
type TelemetryGlobal,
136-
} from './telemetry-utils.js'

test/unit/analytics-telemetry/global-telemetry.unit.test.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
11
import {expect} from 'chai'
22
import nock from 'nock'
3-
import * as sinon from 'sinon'
43

54
import * as globalTelemetry from '../../../src/lib/analytics-telemetry/global-telemetry.js'
65

76
const isDev = process.env.IS_DEV_ENVIRONMENT === 'true'
87

98
describe('global-telemetry', function () {
10-
let sandbox: sinon.SinonSandbox
11-
12-
beforeEach(function () {
13-
sandbox = sinon.createSandbox()
14-
})
15-
169
afterEach(function () {
17-
sandbox.restore()
1810
nock.cleanAll()
1911
})
2012

@@ -167,27 +159,4 @@ describe('global-telemetry', function () {
167159
process.env.DISABLE_TELEMETRY = originalDisableTelemetry
168160
})
169161
})
170-
171-
describe('computeDuration', function () {
172-
it('computes time duration correctly', function () {
173-
const now = new Date()
174-
const startTime = now.getTime() - 1000 // 1 second ago
175-
176-
const duration = globalTelemetry.computeDuration(startTime)
177-
178-
expect(duration).to.be.greaterThan(900)
179-
expect(duration).to.be.lessThan(1100)
180-
})
181-
})
182-
183-
describe('isTelemetryEnabled', function () {
184-
it('returns false when DISABLE_TELEMETRY is true', function () {
185-
const originalDisableTelemetry = process.env.DISABLE_TELEMETRY
186-
process.env.DISABLE_TELEMETRY = 'true'
187-
188-
expect(globalTelemetry.isTelemetryEnabled()).to.be.false
189-
190-
process.env.DISABLE_TELEMETRY = originalDisableTelemetry
191-
})
192-
})
193162
})

0 commit comments

Comments
 (0)