@segment/analytics-browser-mixpanel-web-actions 1.0.1-staging-294d81392.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/cjs/alias/generated-types.d.ts +4 -0
- package/dist/cjs/alias/generated-types.js +3 -0
- package/dist/cjs/alias/generated-types.js.map +1 -0
- package/dist/cjs/alias/index.d.ts +6 -0
- package/dist/cjs/alias/index.js +32 -0
- package/dist/cjs/alias/index.js.map +1 -0
- package/dist/cjs/constants.d.ts +14 -0
- package/dist/cjs/constants.js +18 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/fields.d.ts +11 -0
- package/dist/cjs/fields.js +162 -0
- package/dist/cjs/fields.js.map +1 -0
- package/dist/cjs/functions.d.ts +7 -0
- package/dist/cjs/functions.js +39 -0
- package/dist/cjs/functions.js.map +1 -0
- package/dist/cjs/generated-types.d.ts +30 -0
- package/dist/cjs/generated-types.js +3 -0
- package/dist/cjs/generated-types.js.map +1 -0
- package/dist/cjs/group/generated-types.d.ts +16 -0
- package/dist/cjs/group/generated-types.js +3 -0
- package/dist/cjs/group/generated-types.js.map +1 -0
- package/dist/cjs/group/index.d.ts +6 -0
- package/dist/cjs/group/index.js +21 -0
- package/dist/cjs/group/index.js.map +1 -0
- package/dist/cjs/identify/generated-types.d.ts +19 -0
- package/dist/cjs/identify/generated-types.js +3 -0
- package/dist/cjs/identify/generated-types.js.map +1 -0
- package/dist/cjs/identify/index.d.ts +6 -0
- package/dist/cjs/identify/index.js +21 -0
- package/dist/cjs/identify/index.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.js +76 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/init-script.d.ts +1 -0
- package/dist/cjs/init-script.js +65 -0
- package/dist/cjs/init-script.js.map +1 -0
- package/dist/cjs/setting-fields.d.ts +2 -0
- package/dist/cjs/setting-fields.js +273 -0
- package/dist/cjs/setting-fields.js.map +1 -0
- package/dist/cjs/track/generated-types.d.ts +37 -0
- package/dist/cjs/track/generated-types.js +3 -0
- package/dist/cjs/track/generated-types.js.map +1 -0
- package/dist/cjs/track/index.d.ts +6 -0
- package/dist/cjs/track/index.js +93 -0
- package/dist/cjs/track/index.js.map +1 -0
- package/dist/cjs/trackPageView/generated-types.d.ts +37 -0
- package/dist/cjs/trackPageView/generated-types.js +3 -0
- package/dist/cjs/trackPageView/generated-types.js.map +1 -0
- package/dist/cjs/trackPageView/index.d.ts +6 -0
- package/dist/cjs/trackPageView/index.js +101 -0
- package/dist/cjs/trackPageView/index.js.map +1 -0
- package/dist/cjs/types.d.ts +68 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/alias/generated-types.d.ts +4 -0
- package/dist/esm/alias/generated-types.js +2 -0
- package/dist/esm/alias/generated-types.js.map +1 -0
- package/dist/esm/alias/index.d.ts +6 -0
- package/dist/esm/alias/index.js +30 -0
- package/dist/esm/alias/index.js.map +1 -0
- package/dist/esm/constants.d.ts +14 -0
- package/dist/esm/constants.js +15 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/fields.d.ts +11 -0
- package/dist/esm/fields.js +159 -0
- package/dist/esm/fields.js.map +1 -0
- package/dist/esm/functions.d.ts +7 -0
- package/dist/esm/functions.js +35 -0
- package/dist/esm/functions.js.map +1 -0
- package/dist/esm/generated-types.d.ts +30 -0
- package/dist/esm/generated-types.js +2 -0
- package/dist/esm/generated-types.js.map +1 -0
- package/dist/esm/group/generated-types.d.ts +16 -0
- package/dist/esm/group/generated-types.js +2 -0
- package/dist/esm/group/generated-types.js.map +1 -0
- package/dist/esm/group/index.d.ts +6 -0
- package/dist/esm/group/index.js +19 -0
- package/dist/esm/group/index.js.map +1 -0
- package/dist/esm/identify/generated-types.d.ts +19 -0
- package/dist/esm/identify/generated-types.js +2 -0
- package/dist/esm/identify/generated-types.js.map +1 -0
- package/dist/esm/identify/index.d.ts +6 -0
- package/dist/esm/identify/index.js +19 -0
- package/dist/esm/identify/index.js.map +1 -0
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/init-script.d.ts +1 -0
- package/dist/esm/init-script.js +62 -0
- package/dist/esm/init-script.js.map +1 -0
- package/dist/esm/setting-fields.d.ts +2 -0
- package/dist/esm/setting-fields.js +270 -0
- package/dist/esm/setting-fields.js.map +1 -0
- package/dist/esm/track/generated-types.d.ts +37 -0
- package/dist/esm/track/generated-types.js +2 -0
- package/dist/esm/track/generated-types.js.map +1 -0
- package/dist/esm/track/index.d.ts +6 -0
- package/dist/esm/track/index.js +91 -0
- package/dist/esm/track/index.js.map +1 -0
- package/dist/esm/trackPageView/generated-types.d.ts +37 -0
- package/dist/esm/trackPageView/generated-types.js +2 -0
- package/dist/esm/trackPageView/generated-types.js.map +1 -0
- package/dist/esm/trackPageView/index.d.ts +6 -0
- package/dist/esm/trackPageView/index.js +99 -0
- package/dist/esm/trackPageView/index.js.map +1 -0
- package/dist/esm/types.d.ts +68 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +25 -0
- package/src/alias/__tests__/index.test.ts +95 -0
- package/src/alias/generated-types.ts +12 -0
- package/src/alias/index.ts +35 -0
- package/src/constants.ts +16 -0
- package/src/fields.ts +173 -0
- package/src/functions.ts +57 -0
- package/src/generated-types.ts +116 -0
- package/src/group/__tests__/index.test.ts +126 -0
- package/src/group/generated-types.ts +42 -0
- package/src/group/index.ts +29 -0
- package/src/identify/__tests__/index.test.ts +135 -0
- package/src/identify/generated-types.ts +54 -0
- package/src/identify/index.ts +29 -0
- package/src/index.ts +99 -0
- package/src/init-script.ts +63 -0
- package/src/setting-fields.ts +273 -0
- package/src/track/__tests__/index.test.ts +196 -0
- package/src/track/generated-types.ts +102 -0
- package/src/track/index.ts +109 -0
- package/src/trackPageView/__tests__/index.test.ts +250 -0
- package/src/trackPageView/generated-types.ts +102 -0
- package/src/trackPageView/index.ts +116 -0
- package/src/types.ts +78 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Generated file. DO NOT MODIFY IT BY HAND.
|
|
2
|
+
|
|
3
|
+
export interface Payload {
|
|
4
|
+
/**
|
|
5
|
+
* The name of the event to track in Mixpanel.
|
|
6
|
+
*/
|
|
7
|
+
event_name?: string
|
|
8
|
+
/**
|
|
9
|
+
* Properties to associate with the event.
|
|
10
|
+
*/
|
|
11
|
+
properties?: {
|
|
12
|
+
[k: string]: unknown
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The unique ID to associate with the user. Settings this value will trigger a Mixpanel identify call before immediately the page event is sent.
|
|
16
|
+
*/
|
|
17
|
+
unique_id: string
|
|
18
|
+
/**
|
|
19
|
+
* User Profile Properties to set on the user profile in Mixpanel.
|
|
20
|
+
*/
|
|
21
|
+
user_profile_properties_to_set?: {
|
|
22
|
+
/**
|
|
23
|
+
* The name of the user.
|
|
24
|
+
*/
|
|
25
|
+
name?: string
|
|
26
|
+
/**
|
|
27
|
+
* The first name of the user.
|
|
28
|
+
*/
|
|
29
|
+
first_name?: string
|
|
30
|
+
/**
|
|
31
|
+
* The last name of the user.
|
|
32
|
+
*/
|
|
33
|
+
last_name?: string
|
|
34
|
+
/**
|
|
35
|
+
* The email of the user.
|
|
36
|
+
*/
|
|
37
|
+
email?: string
|
|
38
|
+
/**
|
|
39
|
+
* The phone number of the user.
|
|
40
|
+
*/
|
|
41
|
+
phone?: string
|
|
42
|
+
/**
|
|
43
|
+
* The avatar URL of the user.
|
|
44
|
+
*/
|
|
45
|
+
avatar?: string
|
|
46
|
+
/**
|
|
47
|
+
* The creation date of the user profile.
|
|
48
|
+
*/
|
|
49
|
+
created?: string
|
|
50
|
+
[k: string]: unknown
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* User Profile Properties to set once on the user profile in Mixpanel. Values which get set once cannot be overwritten later.
|
|
54
|
+
*/
|
|
55
|
+
user_profile_properties_to_set_once?: {
|
|
56
|
+
[k: string]: unknown
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* User Profile Properties to increment on the user profile in Mixpanel. Values must be numeric.
|
|
60
|
+
*/
|
|
61
|
+
user_profile_properties_to_increment?: {
|
|
62
|
+
[k: string]: unknown
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Details for the group to be created or updated in Mixpanel. Setting this value will trigger a Mixpanel set_group call before the page event is sent.
|
|
66
|
+
*/
|
|
67
|
+
group_details?: {
|
|
68
|
+
/**
|
|
69
|
+
* The Group Key / type of group to associate with the user. This group key should already be defined in your Mixpanel project.
|
|
70
|
+
*/
|
|
71
|
+
group_key: string
|
|
72
|
+
/**
|
|
73
|
+
* The unique ID to associate with the group.
|
|
74
|
+
*/
|
|
75
|
+
group_id: string
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Group Profile Properties to set on the group in Mixpanel.
|
|
79
|
+
*/
|
|
80
|
+
group_profile_properties_to_set?: {
|
|
81
|
+
[k: string]: unknown
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Group Profile Properties to set once on the group profile in Mixpanel. Values which get set once cannot be overwritten later.
|
|
85
|
+
*/
|
|
86
|
+
group_profile_properties_to_set_once?: {
|
|
87
|
+
[k: string]: unknown
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Merge a list into a list group property. Duplicates will be removed.
|
|
91
|
+
*/
|
|
92
|
+
group_profile_properties_to_union?: {
|
|
93
|
+
/**
|
|
94
|
+
* The name of the list property to union values into.
|
|
95
|
+
*/
|
|
96
|
+
list_name: string
|
|
97
|
+
/**
|
|
98
|
+
* An array of string values to merge into the list. Non string lists cannot be updated. Duplicates will be removed.
|
|
99
|
+
*/
|
|
100
|
+
string_values: string[]
|
|
101
|
+
}[]
|
|
102
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { BrowserActionDefinition } from '@segment/browser-destination-runtime/types'
|
|
2
|
+
import type { Settings } from '../generated-types'
|
|
3
|
+
import type { Payload } from './generated-types'
|
|
4
|
+
import type { Mixpanel } from '../types'
|
|
5
|
+
import { sendIdentify, sendGroup } from '../functions'
|
|
6
|
+
import {
|
|
7
|
+
event_name,
|
|
8
|
+
properties,
|
|
9
|
+
unique_id,
|
|
10
|
+
user_profile_properties_to_set,
|
|
11
|
+
user_profile_properties_to_set_once,
|
|
12
|
+
user_profile_properties_to_increment,
|
|
13
|
+
group_details,
|
|
14
|
+
group_profile_properties_to_set,
|
|
15
|
+
group_profile_properties_to_set_once,
|
|
16
|
+
group_profile_properties_to_union
|
|
17
|
+
} from '../fields'
|
|
18
|
+
|
|
19
|
+
const action: BrowserActionDefinition<Settings, Mixpanel, Payload> = {
|
|
20
|
+
title: 'Track Page View',
|
|
21
|
+
description: 'Sync Segment page events to Mixpanel.',
|
|
22
|
+
defaultSubscription: 'type = "page"',
|
|
23
|
+
platform: 'web',
|
|
24
|
+
fields: {
|
|
25
|
+
event_name: {
|
|
26
|
+
...event_name,
|
|
27
|
+
default: undefined,
|
|
28
|
+
required: false
|
|
29
|
+
},
|
|
30
|
+
properties,
|
|
31
|
+
unique_id: {
|
|
32
|
+
...unique_id,
|
|
33
|
+
description:
|
|
34
|
+
'The unique ID to associate with the user. Settings this value will trigger a Mixpanel identify call before immediately the page event is sent.',
|
|
35
|
+
default: undefined
|
|
36
|
+
},
|
|
37
|
+
user_profile_properties_to_set: {
|
|
38
|
+
...user_profile_properties_to_set,
|
|
39
|
+
default: {
|
|
40
|
+
name: {
|
|
41
|
+
'@if': {
|
|
42
|
+
exists: { '@path': '$.context.traits.name' },
|
|
43
|
+
then: { '@path': '$.context.traits.name' },
|
|
44
|
+
else: { '@path': '$.properties.name' }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
first_name: {
|
|
48
|
+
'@if': {
|
|
49
|
+
exists: { '@path': '$.context.traits.first_name' },
|
|
50
|
+
then: { '@path': '$.context.traits.first_name' },
|
|
51
|
+
else: { '@path': '$.properties.first_name' }
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
last_name: {
|
|
55
|
+
'@if': {
|
|
56
|
+
exists: { '@path': '$.context.traits.last_name' },
|
|
57
|
+
then: { '@path': '$.context.traits.last_name' },
|
|
58
|
+
else: { '@path': '$.properties.last_name' }
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
email: {
|
|
62
|
+
'@if': {
|
|
63
|
+
exists: { '@path': '$.context.traits.email' },
|
|
64
|
+
then: { '@path': '$.context.traits.email' },
|
|
65
|
+
else: { '@path': '$.properties.email' }
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
phone: {
|
|
69
|
+
'@if': {
|
|
70
|
+
exists: { '@path': '$.context.traits.phone' },
|
|
71
|
+
then: { '@path': '$.context.traits.phone' },
|
|
72
|
+
else: { '@path': '$.properties.phone' }
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
avatar: {
|
|
76
|
+
'@if': {
|
|
77
|
+
exists: { '@path': '$.context.traits.avatar' },
|
|
78
|
+
then: { '@path': '$.context.traits.avatar' },
|
|
79
|
+
else: { '@path': '$.properties.avatar' }
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
created: {
|
|
83
|
+
'@if': {
|
|
84
|
+
exists: { '@path': '$.context.traits.created_at' },
|
|
85
|
+
then: { '@path': '$.context.traits.created_at' },
|
|
86
|
+
else: { '@path': '$.properties.created_at' }
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
user_profile_properties_to_set_once,
|
|
92
|
+
user_profile_properties_to_increment,
|
|
93
|
+
group_details: {
|
|
94
|
+
...group_details,
|
|
95
|
+
required: false,
|
|
96
|
+
description:
|
|
97
|
+
'Details for the group to be created or updated in Mixpanel. Setting this value will trigger a Mixpanel set_group call before the page event is sent.',
|
|
98
|
+
default: undefined
|
|
99
|
+
},
|
|
100
|
+
group_profile_properties_to_set,
|
|
101
|
+
group_profile_properties_to_set_once,
|
|
102
|
+
group_profile_properties_to_union
|
|
103
|
+
},
|
|
104
|
+
perform: (mixpanel, { payload }) => {
|
|
105
|
+
sendIdentify(mixpanel, payload)
|
|
106
|
+
sendGroup(mixpanel, payload)
|
|
107
|
+
const { event_name, properties = {} } = payload
|
|
108
|
+
if (event_name) {
|
|
109
|
+
mixpanel.track_pageview(properties || {}, { event_name })
|
|
110
|
+
} else {
|
|
111
|
+
mixpanel.track_pageview(properties || {})
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export default action
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { PAGE_VIEW_URL_CONFIG_OPTIONS, PERSISTENCE_OPTIONS, AUTOCAPTURE_OPTIONS } from './constants'
|
|
2
|
+
|
|
3
|
+
export type PageViewUrlConfigOption = typeof PAGE_VIEW_URL_CONFIG_OPTIONS[keyof typeof PAGE_VIEW_URL_CONFIG_OPTIONS]
|
|
4
|
+
|
|
5
|
+
export type PersistenceOptions = typeof PERSISTENCE_OPTIONS[keyof typeof PERSISTENCE_OPTIONS]
|
|
6
|
+
|
|
7
|
+
export type AutocaptureOptions = typeof AUTOCAPTURE_OPTIONS[keyof typeof AUTOCAPTURE_OPTIONS]
|
|
8
|
+
|
|
9
|
+
export interface Mixpanel {
|
|
10
|
+
init(token: string, config: Config, name?: string): Mixpanel
|
|
11
|
+
|
|
12
|
+
track_pageview(
|
|
13
|
+
properties?: {
|
|
14
|
+
[k: string]: unknown
|
|
15
|
+
},
|
|
16
|
+
options?: { event_name?: string | undefined }
|
|
17
|
+
): void
|
|
18
|
+
|
|
19
|
+
track(
|
|
20
|
+
event_name: string,
|
|
21
|
+
properties?: {
|
|
22
|
+
[k: string]: unknown
|
|
23
|
+
}
|
|
24
|
+
): void
|
|
25
|
+
|
|
26
|
+
identify(unique_id?: string): void
|
|
27
|
+
|
|
28
|
+
alias(alias: string, original?: string): void
|
|
29
|
+
|
|
30
|
+
get_group(group_key: string, group_id: string): Group
|
|
31
|
+
|
|
32
|
+
set_group(group_key: string, group_ids: string): void
|
|
33
|
+
|
|
34
|
+
people: People
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface People {
|
|
38
|
+
set(prop: { [k: string]: unknown }): void
|
|
39
|
+
set_once(prop: { [k: string]: unknown }): void
|
|
40
|
+
increment(prop: { [k: string]: unknown }): void
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface Group {
|
|
44
|
+
set(prop: { [k: string]: unknown }): void
|
|
45
|
+
set_once(prop: { [k: string]: unknown }): void
|
|
46
|
+
union(list_name: string, values: (string | number | boolean)[]): void
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface Config {
|
|
50
|
+
autocapture?:
|
|
51
|
+
| {
|
|
52
|
+
pageview?: PageViewUrlConfigOption
|
|
53
|
+
click?: boolean
|
|
54
|
+
dead_click?: boolean
|
|
55
|
+
input?: boolean
|
|
56
|
+
rage_click?: boolean
|
|
57
|
+
scroll?: boolean
|
|
58
|
+
submit?: boolean
|
|
59
|
+
capture_text_content?: boolean
|
|
60
|
+
}
|
|
61
|
+
| boolean
|
|
62
|
+
cross_subdomain_cookie?: boolean
|
|
63
|
+
persistence?: PersistenceOptions
|
|
64
|
+
track_marketing?: boolean
|
|
65
|
+
cookie_expiration?: number
|
|
66
|
+
disable_persistence?: boolean
|
|
67
|
+
ip?: boolean
|
|
68
|
+
record_block_class?: string
|
|
69
|
+
record_block_selector?: string
|
|
70
|
+
record_canvas?: boolean
|
|
71
|
+
record_heatmap_data?: boolean
|
|
72
|
+
record_idle_timeout_ms?: number
|
|
73
|
+
record_mask_text_class?: string
|
|
74
|
+
record_mask_text_selectors?: string
|
|
75
|
+
record_max_ms?: number
|
|
76
|
+
record_min_ms?: number
|
|
77
|
+
record_sessions_percent?: number
|
|
78
|
+
}
|