Skip to content

Commit 1117c70

Browse files
🎨 [PANA-7353] Clean up naming in recording code (#4628)
1 parent 7eb0749 commit 1117c70

18 files changed

Lines changed: 225 additions & 238 deletions

‎packages/rum/src/domain/record/internalApi.ts‎

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@ import type { RecordingScope } from './recordingScope'
77
import { createRecordingScope } from './recordingScope'
88
import { createElementsScrollPositions } from './elementsScrollPositions'
99
import type { EmitRecordCallback } from './record.types'
10-
import type { ChangeSerializationTransaction } from './serialization'
11-
import {
12-
createRootInsertionCursor,
13-
SerializationKind,
14-
serializeChangesInTransaction,
15-
serializeNodeAsChange,
16-
} from './serialization'
10+
import type { SerializationTransaction } from './serialization'
11+
import { createRootInsertionCursor, SerializationKind, serializeInTransaction, serializeNode } from './serialization'
1712

1813
/**
1914
* Take a full snapshot of the document, generating the same records that the browser SDK
@@ -57,19 +52,19 @@ export function takeNodeSnapshot(
5752
nodeSnapshotRecord = record
5853
}
5954

60-
serializeChangesInTransaction(
55+
serializeInTransaction(
6156
SerializationKind.INITIAL_FULL_SNAPSHOT,
6257
emitRecord,
6358
noop,
6459
createTemporaryRecordingScope(configuration),
6560
timeStampNow(),
66-
(transaction: ChangeSerializationTransaction): void => {
61+
(transaction: SerializationTransaction): void => {
6762
const privacyLevel = getNodePrivacyLevel(node, transaction.scope.configuration.defaultPrivacyLevel)
6863
if (privacyLevel === NodePrivacyLevel.HIDDEN || privacyLevel === NodePrivacyLevel.IGNORE) {
6964
return
7065
}
7166
const cursor = createRootInsertionCursor(transaction.scope.nodeIds)
72-
serializeNodeAsChange(cursor, node, privacyLevel, transaction)
67+
serializeNode(cursor, node, privacyLevel, transaction)
7368
}
7469
)
7570

‎packages/rum/src/domain/record/serialization/index.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ export type { ChangeDecoder } from './changeDecoder'
22
export { createChangeDecoder } from './changeDecoder'
33
export { createChildInsertionCursor, createRootInsertionCursor } from './insertionCursor'
44
export { getElementInputValue } from './serializationUtils'
5-
export { serializeFullSnapshotAsChange } from './serializeFullSnapshotAsChange'
6-
export { serializeMutationsAsChange } from './serializeMutationsAsChange'
7-
export { serializeNodeAsChange } from './serializeNodeAsChange'
5+
export { serializeFullSnapshot } from './serializeFullSnapshot'
6+
export { serializeMutations } from './serializeMutations'
7+
export { serializeNode } from './serializeNode'
88
export { serializeAttribute } from './serializeAttribute'
99
export { createSerializationStats, updateSerializationStats, aggregateSerializationStats } from './serializationStats'
1010
export type { SerializationMetric, SerializationStats } from './serializationStats'
11-
export { serializeChangesInTransaction, SerializationKind } from './serializationTransaction'
12-
export type { ChangeSerializationTransaction } from './serializationTransaction'
11+
export { serializeInTransaction, SerializationKind } from './serializationTransaction'
12+
export type { SerializationTransaction } from './serializationTransaction'

‎packages/rum/src/domain/record/serialization/serializationTransaction.ts‎

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,19 @@ export const enum SerializationKind {
3333

3434
type AddNodeParams<NodeChange extends AddNodeChange> = NodeChange extends [any, any, ...infer Params] ? Params : never
3535

36-
export type ChangeSerializationTransactionCallback = (transaction: ChangeSerializationTransaction) => void
36+
export type SerializationTransactionCallback = (transaction: SerializationTransaction) => void
3737

3838
/**
39-
* ChangeSerializationTransaction is used to build and emit a BrowserChangeRecord
40-
* containing a serialized snapshot of the DOM. Unlike SerializationTransaction, it
41-
* doesn't support emitting arbitrary BrowserRecords; instead, the builder methods it
42-
* exposes are used to construct a single BrowserChangeRecord which is emitted at the end
43-
* of the transaction.
39+
* SerializationTransaction is used to build and emit a `BrowserChangeRecord` containing a
40+
* serialized snapshot of the DOM. The term "transaction" is used because all the changes
41+
* in a serialization transaction are applied together, atomically. A serialization
42+
* transaction is thus always associated with a single timestamp.
43+
*
44+
* To use `SerializationTransaction`, call the builder methods it exposes to add changes
45+
* to the transaction. At the end of the transaction, the changes will be combined into a
46+
* single `BrowserChangeRecord` and emitted.
4447
*/
45-
export interface ChangeSerializationTransaction {
48+
export interface SerializationTransaction {
4649
/**
4750
* Add a metric to the transaction's statistics. The aggregated statistics will be
4851
* emitted when the transaction ends.
@@ -101,18 +104,18 @@ export interface ChangeSerializationTransaction {
101104
scope: RecordingScope
102105
}
103106

104-
export function serializeChangesInTransaction(
107+
export function serializeInTransaction(
105108
kind: SerializationKind,
106109
emitRecord: EmitRecordCallback,
107110
emitStats: EmitStatsCallback,
108111
scope: RecordingScope,
109112
timestamp: TimeStamp,
110-
serialize: ChangeSerializationTransactionCallback
113+
serialize: SerializationTransactionCallback
111114
): void {
112115
const encoder = createChangeEncoder(scope.stringIds)
113116
const stats = createSerializationStats()
114117

115-
const transaction: ChangeSerializationTransaction = {
118+
const transaction: SerializationTransaction = {
116119
addMetric(metric: keyof SerializationStats, value: number): void {
117120
updateSerializationStats(stats, metric, value)
118121
},

‎packages/rum/src/domain/record/serialization/serializeAttributes.spec.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { appendElement } from '@datadog/browser-rum-core/test'
1212
import { createSerializationTransactionForTesting } from '../test/serialization.specHelper'
1313
import type { ScrollPositions } from '../elementsScrollPositions'
1414
import { getCssRulesString, serializeDOMAttributes, serializeVirtualAttributes } from './serializeAttributes'
15-
import type { ChangeSerializationTransaction } from './serializationTransaction'
15+
import type { SerializationTransaction } from './serializationTransaction'
1616
import { SerializationKind } from './serializationTransaction'
1717
import type { VirtualAttributes } from './serialization.types'
1818
import type { SerializationMetric, SerializationStats } from './serializationStats'
@@ -30,7 +30,7 @@ const PRIVACY_LEVELS = Object.keys({
3030
} satisfies Record<NodePrivacyLevel, true>) as NodePrivacyLevel[]
3131

3232
describe('serializeDOMAttributes', () => {
33-
let transaction: ChangeSerializationTransaction
33+
let transaction: SerializationTransaction
3434

3535
beforeEach(() => {
3636
transaction = createSerializationTransactionForTesting()
@@ -332,7 +332,7 @@ describe('serializeDOMAttributes', () => {
332332

333333
describe('serializeVirtualAttributes', () => {
334334
let stats: SerializationStats
335-
let transaction: ChangeSerializationTransaction
335+
let transaction: SerializationTransaction
336336

337337
beforeEach(() => {
338338
stats = createSerializationStats()

‎packages/rum/src/domain/record/serialization/serializeAttributes.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { NodePrivacyLevel, shouldMaskNode } from '@datadog/browser-rum-core'
22
import { isSafari } from '@datadog/browser-core'
33
import { getElementInputValue, normalizedTagName, switchToAbsoluteUrl } from './serializationUtils'
44
import { serializeAttribute } from './serializeAttribute'
5-
import type { ChangeSerializationTransaction } from './serializationTransaction'
5+
import type { SerializationTransaction } from './serializationTransaction'
66
import { SerializationKind } from './serializationTransaction'
77
import type { VirtualAttributes } from './serialization.types'
88

99
export function serializeAttributes(
1010
element: Element,
1111
nodePrivacyLevel: NodePrivacyLevel,
12-
transaction: ChangeSerializationTransaction
12+
transaction: SerializationTransaction
1313
): Record<string, number | string> {
1414
return {
1515
...serializeDOMAttributes(element, nodePrivacyLevel, transaction),
@@ -20,7 +20,7 @@ export function serializeAttributes(
2020
export function serializeDOMAttributes(
2121
element: Element,
2222
nodePrivacyLevel: NodePrivacyLevel,
23-
transaction: ChangeSerializationTransaction
23+
transaction: SerializationTransaction
2424
): Record<string, string> {
2525
if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {
2626
return {}
@@ -83,7 +83,7 @@ export function serializeDOMAttributes(
8383
export function serializeVirtualAttributes(
8484
element: Element,
8585
nodePrivacyLevel: NodePrivacyLevel,
86-
transaction: ChangeSerializationTransaction
86+
transaction: SerializationTransaction
8787
): VirtualAttributes {
8888
if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {
8989
return {}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import type { TimeStamp } from '@datadog/browser-core'
2+
import type { EmitRecordCallback, EmitStatsCallback } from '../record.types'
3+
import type { RecordingScope } from '../recordingScope'
4+
import { serializeInTransaction } from './serializationTransaction'
5+
import type { SerializationTransaction, SerializationKind } from './serializationTransaction'
6+
import { serializeNode } from './serializeNode'
7+
import { createRootInsertionCursor } from './insertionCursor'
8+
9+
export function serializeFullSnapshot(
10+
timestamp: TimeStamp,
11+
kind: SerializationKind,
12+
document: Document,
13+
emitRecord: EmitRecordCallback,
14+
emitStats: EmitStatsCallback,
15+
scope: RecordingScope
16+
): void {
17+
scope.resetIds()
18+
serializeInTransaction(kind, emitRecord, emitStats, scope, timestamp, (transaction: SerializationTransaction) => {
19+
serializeNode(
20+
createRootInsertionCursor(scope.nodeIds),
21+
document,
22+
scope.configuration.defaultPrivacyLevel,
23+
transaction
24+
)
25+
})
26+
}

‎packages/rum/src/domain/record/serialization/serializeFullSnapshotAsChange.ts‎

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

packages/rum/src/domain/record/serialization/serializeMutationsAsChange.ts renamed to packages/rum/src/domain/record/serialization/serializeMutations.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,34 @@ import type { AttributeChange } from '../../../types'
1212
import type { RecordingScope } from '../recordingScope'
1313
import type { EmitRecordCallback, EmitStatsCallback } from '../record.types'
1414
import type { NodeId, NodeIds } from '../itemIds'
15-
import type { ChangeSerializationTransaction } from './serializationTransaction'
16-
import { SerializationKind, serializeChangesInTransaction } from './serializationTransaction'
17-
import { serializeNodeAsChange } from './serializeNodeAsChange'
15+
import type { SerializationTransaction } from './serializationTransaction'
16+
import { SerializationKind, serializeInTransaction } from './serializationTransaction'
17+
import { serializeNode } from './serializeNode'
1818
import { createChildInsertionCursor } from './insertionCursor'
1919
import { getElementInputValue } from './serializationUtils'
2020
import { serializeAttribute } from './serializeAttribute'
2121

22-
export function serializeMutationsAsChange(
22+
export function serializeMutations(
2323
timestamp: TimeStamp,
2424
mutations: RumMutationRecord[],
2525
emitRecord: EmitRecordCallback,
2626
emitStats: EmitStatsCallback,
2727
scope: RecordingScope
2828
): void {
29-
serializeChangesInTransaction(
29+
serializeInTransaction(
3030
SerializationKind.INCREMENTAL_SNAPSHOT,
3131
emitRecord,
3232
emitStats,
3333
scope,
3434
timestamp,
35-
(transaction: ChangeSerializationTransaction) => processMutations(mutations, transaction)
35+
(transaction: SerializationTransaction) => processMutations(mutations, transaction)
3636
)
3737
}
3838

3939
type AttributeName = string
4040
type OldValue = string | null
4141

42-
function processMutations(mutations: RumMutationRecord[], transaction: ChangeSerializationTransaction): void {
42+
function processMutations(mutations: RumMutationRecord[], transaction: SerializationTransaction): void {
4343
const addedNodes = new Set<Node>()
4444
const attributeMutations = new Map<Element, Map<AttributeName, OldValue>>()
4545
const characterDataMutations = new Map<Node, OldValue>()
@@ -101,7 +101,7 @@ function processMutations(mutations: RumMutationRecord[], transaction: ChangeSer
101101
processAttributeMutations(attributeMutations, firstNewNodeId, nodePrivacyLevelCache, transaction)
102102
}
103103

104-
function processRemovedNodes(nodes: Set<Node>, transaction: ChangeSerializationTransaction): void {
104+
function processRemovedNodes(nodes: Set<Node>, transaction: SerializationTransaction): void {
105105
const nodeIds = transaction.scope.nodeIds
106106

107107
for (const node of nodes) {
@@ -130,7 +130,7 @@ function processRemovedNodes(nodes: Set<Node>, transaction: ChangeSerializationT
130130
function processAddedNodes(
131131
nodes: Set<Node>,
132132
nodePrivacyLevelCache: NodePrivacyLevelCache,
133-
transaction: ChangeSerializationTransaction
133+
transaction: SerializationTransaction
134134
): void {
135135
const nodeIds = transaction.scope.nodeIds
136136

@@ -164,7 +164,7 @@ function processAddedNodes(
164164

165165
const nextSiblingId = getNextSiblingId(node, nodeIds)
166166

167-
serializeNodeAsChange(
167+
serializeNode(
168168
createChildInsertionCursor(parentId, nextSiblingId, nodeIds),
169169
node,
170170
parentNodePrivacyLevel,
@@ -177,7 +177,7 @@ function processCharacterDataMutations(
177177
mutations: Map<Node, OldValue>,
178178
firstNewNodeId: NodeId,
179179
nodePrivacyLevelCache: NodePrivacyLevelCache,
180-
transaction: ChangeSerializationTransaction
180+
transaction: SerializationTransaction
181181
): void {
182182
const nodeIds = transaction.scope.nodeIds
183183

@@ -223,7 +223,7 @@ function processAttributeMutations(
223223
mutations: Map<Element, Map<AttributeName, OldValue>>,
224224
firstNewNodeId: NodeId,
225225
nodePrivacyLevelCache: NodePrivacyLevelCache,
226-
transaction: ChangeSerializationTransaction
226+
transaction: SerializationTransaction
227227
): void {
228228
const nodeIds = transaction.scope.nodeIds
229229

0 commit comments

Comments
 (0)