Skip to content

Commit ad2e45d

Browse files
committed
Add initial signals
1 parent 18d7a68 commit ad2e45d

File tree

1 file changed

+25
-49
lines changed

1 file changed

+25
-49
lines changed
Lines changed: 25 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,39 @@
11
import {
2-
InstrumentationSignal,
3-
InteractionData,
4-
InteractionSignal,
52
NavigationData,
63
NavigationSignal,
74
UserDefinedSignalData,
85
UserDefinedSignal,
96
NetworkData,
107
NetworkSignalMetadata,
118
NetworkSignal,
12-
SegmentEvent,
9+
SignalTypes,
10+
Signal,
11+
SignalOfType,
1312
} from '@segment/analytics-signals-runtime'
1413
import { normalizeUrl } from '../lib/normalize-url'
1514
import { getPageData } from '../lib/page-data'
1615

17-
/**
18-
* Factories
19-
*/
20-
export const createInstrumentationSignal = (
21-
rawEvent: SegmentEvent
22-
): InstrumentationSignal => {
23-
return {
24-
type: 'instrumentation',
25-
data: {
26-
page: getPageData(),
27-
rawEvent,
28-
},
29-
}
30-
}
31-
32-
export const createInteractionSignal = (
33-
data: InteractionData
34-
): InteractionSignal => {
35-
return {
36-
type: 'interaction',
37-
data: {
38-
...data,
39-
page: getPageData(),
40-
},
41-
}
42-
}
43-
4416
export const createNavigationSignal = (
4517
data: NavigationData
4618
): NavigationSignal => {
47-
return {
48-
type: 'navigation',
49-
data: {
50-
...data,
51-
page: getPageData(),
52-
},
53-
}
19+
return createInitialSignal('navigation', data)
5420
}
5521

5622
export const createUserDefinedSignal = (
5723
data: UserDefinedSignalData
5824
): UserDefinedSignal => {
59-
return {
60-
type: 'userDefined',
61-
data: {
62-
...data,
63-
page: getPageData(),
64-
},
65-
}
25+
return createInitialSignal('userDefined', data)
6626
}
6727

6828
export const createNetworkSignal = (
6929
data: NetworkData,
7030
metadata?: NetworkSignalMetadata
7131
): NetworkSignal => {
7232
return {
73-
type: 'network',
74-
data: {
33+
...createInitialSignal('network', {
7534
...data,
7635
url: normalizeUrl(data.url),
77-
page: getPageData(),
78-
},
36+
}),
7937
metadata: metadata ?? {
8038
filters: {
8139
allowed: [],
@@ -84,3 +42,21 @@ export const createNetworkSignal = (
8442
},
8543
}
8644
}
45+
46+
const createInitialSignal = <
47+
Type extends SignalTypes,
48+
Data extends Omit<SignalOfType<Signal, Type>['data'], 'page'>
49+
>(
50+
type: Type,
51+
data: Data
52+
) => {
53+
return {
54+
timestamp: new Date().toISOString(),
55+
anonymousId: '', // not set yet -- will be set by the runtime // TODO
56+
type,
57+
data: {
58+
...data,
59+
page: getPageData(),
60+
},
61+
} as SignalOfType<Signal, Type>
62+
}

0 commit comments

Comments
 (0)