Skip to content

Commit 3d29c67

Browse files
committed
add initial signals
1 parent ad2e45d commit 3d29c67

File tree

1 file changed

+40
-21
lines changed

1 file changed

+40
-21
lines changed

packages/signals/signals/src/types/factories.ts

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,65 @@ import {
99
SignalTypes,
1010
Signal,
1111
SignalOfType,
12+
InstrumentationSignal,
13+
InteractionData,
14+
InteractionSignal,
15+
SegmentEvent,
1216
} from '@segment/analytics-signals-runtime'
1317
import { normalizeUrl } from '../lib/normalize-url'
1418
import { getPageData } from '../lib/page-data'
1519

20+
/**
21+
* Base Signal Factory
22+
*/
23+
const createBaseSignal = <
24+
Type extends SignalTypes,
25+
Data extends Omit<SignalOfType<Signal, Type>['data'], 'page'>
26+
>(
27+
type: Type,
28+
data: Data
29+
) => {
30+
return {
31+
timestamp: new Date().toISOString(),
32+
anonymousId: '', // not set yet -- will be set by the runtime // TODO
33+
type,
34+
data: {
35+
...data,
36+
page: getPageData(),
37+
},
38+
} as SignalOfType<Signal, Type>
39+
}
40+
41+
export const createInstrumentationSignal = (
42+
rawEvent: SegmentEvent
43+
): InstrumentationSignal => {
44+
return createBaseSignal('instrumentation', { rawEvent })
45+
}
46+
47+
export const createInteractionSignal = (
48+
data: InteractionData
49+
): InteractionSignal => {
50+
return createBaseSignal('interaction', data)
51+
}
52+
1653
export const createNavigationSignal = (
1754
data: NavigationData
1855
): NavigationSignal => {
19-
return createInitialSignal('navigation', data)
56+
return createBaseSignal('navigation', data)
2057
}
2158

2259
export const createUserDefinedSignal = (
2360
data: UserDefinedSignalData
2461
): UserDefinedSignal => {
25-
return createInitialSignal('userDefined', data)
62+
return createBaseSignal('userDefined', data)
2663
}
2764

2865
export const createNetworkSignal = (
2966
data: NetworkData,
3067
metadata?: NetworkSignalMetadata
3168
): NetworkSignal => {
3269
return {
33-
...createInitialSignal('network', {
70+
...createBaseSignal('network', {
3471
...data,
3572
url: normalizeUrl(data.url),
3673
}),
@@ -42,21 +79,3 @@ export const createNetworkSignal = (
4279
},
4380
}
4481
}
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)