Skip to content

Commit 9747843

Browse files
committed
Some fixes
1 parent 8e68b99 commit 9747843

24 files changed

Lines changed: 341 additions & 187 deletions

eslint-local-rules/disallowSideEffects.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const pathsWithSideEffect = new Set([
3030
`${packagesRoot}/flagging/src/entries/main.ts`,
3131
`${packagesRoot}/rum/src/entries/main.ts`,
3232
`${packagesRoot}/rum-slim/src/entries/main.ts`,
33+
`${packagesRoot}/live-debugger/src/entries/main.ts`,
3334
])
3435

3536
// Those packages are known to have no side effects when evaluated

packages/core/src/domain/configuration/configuration.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ export interface InitConfiguration {
273273
*
274274
* @internal
275275
*/
276-
source?: 'browser' | 'flutter' | 'unity' | undefined
276+
source?: 'browser' | 'flutter' | 'unity' | 'dd_debugger' | undefined
277277

278278
/**
279279
* [Internal option] Additional configuration for the SDK.
@@ -328,7 +328,7 @@ export interface Configuration extends TransportConfiguration {
328328

329329
// internal
330330
sdkVersion: string | undefined
331-
source: 'browser' | 'flutter' | 'unity'
331+
source: 'browser' | 'flutter' | 'unity' | 'dd_debugger'
332332
variant: string | undefined
333333
}
334334

packages/core/src/domain/configuration/transportConfiguration.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export interface TransportConfiguration {
1313
datacenter?: string | undefined
1414
replica?: ReplicaConfiguration
1515
site: Site
16-
source: 'browser' | 'flutter' | 'unity'
16+
source: 'browser' | 'flutter' | 'unity' | 'dd_debugger'
1717
}
1818

1919
export interface ReplicaConfiguration {
@@ -37,7 +37,7 @@ export function computeTransportConfiguration(initConfiguration: InitConfigurati
3737
}
3838

3939
function validateSource(source: string | undefined) {
40-
if (source === 'flutter' || source === 'unity') {
40+
if (source === 'flutter' || source === 'unity' || source === 'dd_debugger') {
4141
return source
4242
}
4343
return 'browser'

packages/core/src/domain/telemetry/telemetryEvent.types.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,15 @@ export interface CommonTelemetryProperties {
570570
/**
571571
* The source of this event
572572
*/
573-
readonly source: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native' | 'unity' | 'kotlin-multiplatform'
573+
readonly source:
574+
| 'android'
575+
| 'ios'
576+
| 'browser'
577+
| 'flutter'
578+
| 'react-native'
579+
| 'unity'
580+
| 'kotlin-multiplatform'
581+
| 'dd_debugger'
574582
/**
575583
* The version of the SDK generating the telemetry event
576584
*/

packages/live-debugger/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
"@datadog/browser-core": "6.24.1"
1414
},
1515
"peerDependencies": {
16-
"@datadog/browser-rum": "6.24.1"
16+
"@datadog/browser-rum-core": "6.24.1"
1717
},
1818
"peerDependenciesMeta": {
19-
"@datadog/browser-rum": {
19+
"@datadog/browser-rum-core": {
2020
"optional": true
2121
}
2222
},

packages/live-debugger/src/domain/api.spec.ts

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ describe('api', () => {
1313

1414
// Mock DD_LOGS global for liveDebug
1515
mockSendRawLog = jasmine.createSpy('sendRawLog')
16-
mockGetInitConfiguration = jasmine.createSpy('getInitConfiguration').and.returnValue({ service: 'test-service' })
16+
mockGetInitConfiguration = jasmine
17+
.createSpy('getInitConfiguration')
18+
.and.returnValue({ service: 'test-service', env: 'test-env' })
1719
;(window as any).DD_LOGS = {
1820
sendRawLog: mockSendRawLog,
1921
getInitConfiguration: mockGetInitConfiguration,
@@ -571,24 +573,17 @@ describe('api', () => {
571573
}
572574
addProbe(probe)
573575

574-
const consoleWarnSpy = spyOn(console, 'warn')
575-
576576
const probes = getProbes('TestClass;errorHandling')!
577577
expect(() => {
578578
onEntry(probes, {}, {})
579579
onReturn(probes, null, {}, {}, {})
580580
}).not.toThrow()
581-
582-
// Should log a warning when DD_LOGS is not available
583-
expect(consoleWarnSpy).toHaveBeenCalledWith(
584-
'DD_LOGS.sendRawLog is not available. Make sure the Logs SDK is initialized to send debugger snapshots.'
585-
)
586581
})
587582
})
588583

589584
describe('sendDebuggerSnapshot', () => {
590585
it('should send log when DD_LOGS.sendRawLog is available', () => {
591-
sendDebuggerSnapshot('test message', { name: 'test-logger' }, { version: '1.0' }, { captures: [] })
586+
sendDebuggerSnapshot({ name: 'test-logger' }, { version: '1.0' }, { captures: [] }, 'test message')
592587

593588
expect(mockSendRawLog).toHaveBeenCalledTimes(1)
594589
const payload = mockSendRawLog.calls.mostRecent().args[0]
@@ -602,7 +597,7 @@ describe('api', () => {
602597
delete (window as any).DD_LOGS
603598

604599
expect(() => {
605-
sendDebuggerSnapshot('test message')
600+
sendDebuggerSnapshot({}, {}, {}, 'test message')
606601
}).not.toThrow()
607602
})
608603

@@ -612,25 +607,27 @@ describe('api', () => {
612607
}
613608

614609
expect(() => {
615-
sendDebuggerSnapshot('test message')
610+
sendDebuggerSnapshot({}, {}, {}, 'test message')
616611
}).not.toThrow()
617612
})
618613

619614
it('should construct payload with correct structure matching dd-trace-js', () => {
620-
sendDebuggerSnapshot('test message', { name: 'logger' }, { version: '1.0' }, { snapshot: 'data' })
615+
const timestamp = Date.now()
616+
sendDebuggerSnapshot({ name: 'logger' }, { version: '1.0' }, { timestamp, data: 'test' }, 'test message')
621617

622618
expect(mockSendRawLog).toHaveBeenCalledTimes(1)
623619
const payload = mockSendRawLog.calls.mostRecent().args[0]
624-
expect(payload.ddsource).toBe('dd_debugger')
625620
expect(payload.hostname).toBe(window.location.hostname)
626621
expect(payload.service).toBe('test-service')
622+
expect(payload.ddtags).toContain('env:test-env')
623+
expect(payload.ddtags).toContain('service:test-service')
627624
expect(payload.message).toBe('test message')
628625
expect(payload.logger).toEqual({ name: 'logger' })
629626
expect(payload.dd).toEqual({ version: '1.0' })
630-
expect(payload.debugger).toEqual({ snapshot: { snapshot: 'data' } })
631-
expect(payload.date).toBeDefined()
627+
expect(payload.debugger).toEqual({ snapshot: { timestamp, data: 'test' } })
628+
expect(payload.date).toBe(timestamp)
632629
expect(payload.status).toBe('info')
633-
expect(payload.origin).toBeDefined()
630+
expect(payload.origin).toBe('logger')
634631
})
635632

636633
it('should include all parameters (message, logger, dd, snapshot)', () => {
@@ -639,7 +636,7 @@ describe('api', () => {
639636
const dd = { version: '1.0', env: 'prod' }
640637
const snapshot = { captures: [{ id: '1' }] }
641638

642-
sendDebuggerSnapshot(message, logger, dd, snapshot)
639+
sendDebuggerSnapshot(logger, dd, snapshot, message)
643640

644641
expect(mockSendRawLog).toHaveBeenCalledTimes(1)
645642
const payload = mockSendRawLog.calls.mostRecent().args[0]
@@ -650,31 +647,33 @@ describe('api', () => {
650647
})
651648

652649
it('should handle empty message', () => {
653-
sendDebuggerSnapshot(undefined, { name: 'logger' }, {}, {})
650+
sendDebuggerSnapshot({ name: 'logger' }, {}, {})
654651

655652
expect(mockSendRawLog).toHaveBeenCalledTimes(1)
656653
const payload = mockSendRawLog.calls.mostRecent().args[0]
657654
expect(payload.message).toBe('')
658655
})
659656

660-
it('should not include service if not available in config', () => {
661-
mockGetInitConfiguration.and.returnValue({})
662-
sendDebuggerSnapshot('test message')
657+
it('should handle when getInitConfiguration is not available', () => {
658+
;(window as any).DD_LOGS = {
659+
sendRawLog: mockSendRawLog,
660+
}
661+
sendDebuggerSnapshot({}, {}, {}, 'test message')
663662

664663
expect(mockSendRawLog).toHaveBeenCalledTimes(1)
665664
const payload = mockSendRawLog.calls.mostRecent().args[0]
666665
expect(payload.service).toBeUndefined()
667666
})
668667

669-
it('should handle when getInitConfiguration is not available', () => {
670-
;(window as any).DD_LOGS = {
671-
sendRawLog: mockSendRawLog,
672-
}
673-
sendDebuggerSnapshot('test message')
668+
it('should handle when env is not configured', () => {
669+
mockGetInitConfiguration.and.returnValue({ service: 'test-service' })
670+
sendDebuggerSnapshot({}, {}, {}, 'test message')
674671

675672
expect(mockSendRawLog).toHaveBeenCalledTimes(1)
676673
const payload = mockSendRawLog.calls.mostRecent().args[0]
677-
expect(payload.service).toBeUndefined()
674+
expect(payload.service).toBe('test-service')
675+
expect(payload.ddtags).toContain('service:test-service')
676+
expect(payload.ddtags).not.toContain('env:')
678677
})
679678
})
680679
})

0 commit comments

Comments
 (0)