@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.
Files changed (135) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/alias/generated-types.d.ts +4 -0
  3. package/dist/cjs/alias/generated-types.js +3 -0
  4. package/dist/cjs/alias/generated-types.js.map +1 -0
  5. package/dist/cjs/alias/index.d.ts +6 -0
  6. package/dist/cjs/alias/index.js +32 -0
  7. package/dist/cjs/alias/index.js.map +1 -0
  8. package/dist/cjs/constants.d.ts +14 -0
  9. package/dist/cjs/constants.js +18 -0
  10. package/dist/cjs/constants.js.map +1 -0
  11. package/dist/cjs/fields.d.ts +11 -0
  12. package/dist/cjs/fields.js +162 -0
  13. package/dist/cjs/fields.js.map +1 -0
  14. package/dist/cjs/functions.d.ts +7 -0
  15. package/dist/cjs/functions.js +39 -0
  16. package/dist/cjs/functions.js.map +1 -0
  17. package/dist/cjs/generated-types.d.ts +30 -0
  18. package/dist/cjs/generated-types.js +3 -0
  19. package/dist/cjs/generated-types.js.map +1 -0
  20. package/dist/cjs/group/generated-types.d.ts +16 -0
  21. package/dist/cjs/group/generated-types.js +3 -0
  22. package/dist/cjs/group/generated-types.js.map +1 -0
  23. package/dist/cjs/group/index.d.ts +6 -0
  24. package/dist/cjs/group/index.js +21 -0
  25. package/dist/cjs/group/index.js.map +1 -0
  26. package/dist/cjs/identify/generated-types.d.ts +19 -0
  27. package/dist/cjs/identify/generated-types.js +3 -0
  28. package/dist/cjs/identify/generated-types.js.map +1 -0
  29. package/dist/cjs/identify/index.d.ts +6 -0
  30. package/dist/cjs/identify/index.js +21 -0
  31. package/dist/cjs/identify/index.js.map +1 -0
  32. package/dist/cjs/index.d.ts +11 -0
  33. package/dist/cjs/index.js +76 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/init-script.d.ts +1 -0
  36. package/dist/cjs/init-script.js +65 -0
  37. package/dist/cjs/init-script.js.map +1 -0
  38. package/dist/cjs/setting-fields.d.ts +2 -0
  39. package/dist/cjs/setting-fields.js +273 -0
  40. package/dist/cjs/setting-fields.js.map +1 -0
  41. package/dist/cjs/track/generated-types.d.ts +37 -0
  42. package/dist/cjs/track/generated-types.js +3 -0
  43. package/dist/cjs/track/generated-types.js.map +1 -0
  44. package/dist/cjs/track/index.d.ts +6 -0
  45. package/dist/cjs/track/index.js +93 -0
  46. package/dist/cjs/track/index.js.map +1 -0
  47. package/dist/cjs/trackPageView/generated-types.d.ts +37 -0
  48. package/dist/cjs/trackPageView/generated-types.js +3 -0
  49. package/dist/cjs/trackPageView/generated-types.js.map +1 -0
  50. package/dist/cjs/trackPageView/index.d.ts +6 -0
  51. package/dist/cjs/trackPageView/index.js +101 -0
  52. package/dist/cjs/trackPageView/index.js.map +1 -0
  53. package/dist/cjs/types.d.ts +68 -0
  54. package/dist/cjs/types.js +3 -0
  55. package/dist/cjs/types.js.map +1 -0
  56. package/dist/esm/alias/generated-types.d.ts +4 -0
  57. package/dist/esm/alias/generated-types.js +2 -0
  58. package/dist/esm/alias/generated-types.js.map +1 -0
  59. package/dist/esm/alias/index.d.ts +6 -0
  60. package/dist/esm/alias/index.js +30 -0
  61. package/dist/esm/alias/index.js.map +1 -0
  62. package/dist/esm/constants.d.ts +14 -0
  63. package/dist/esm/constants.js +15 -0
  64. package/dist/esm/constants.js.map +1 -0
  65. package/dist/esm/fields.d.ts +11 -0
  66. package/dist/esm/fields.js +159 -0
  67. package/dist/esm/fields.js.map +1 -0
  68. package/dist/esm/functions.d.ts +7 -0
  69. package/dist/esm/functions.js +35 -0
  70. package/dist/esm/functions.js.map +1 -0
  71. package/dist/esm/generated-types.d.ts +30 -0
  72. package/dist/esm/generated-types.js +2 -0
  73. package/dist/esm/generated-types.js.map +1 -0
  74. package/dist/esm/group/generated-types.d.ts +16 -0
  75. package/dist/esm/group/generated-types.js +2 -0
  76. package/dist/esm/group/generated-types.js.map +1 -0
  77. package/dist/esm/group/index.d.ts +6 -0
  78. package/dist/esm/group/index.js +19 -0
  79. package/dist/esm/group/index.js.map +1 -0
  80. package/dist/esm/identify/generated-types.d.ts +19 -0
  81. package/dist/esm/identify/generated-types.js +2 -0
  82. package/dist/esm/identify/generated-types.js.map +1 -0
  83. package/dist/esm/identify/index.d.ts +6 -0
  84. package/dist/esm/identify/index.js +19 -0
  85. package/dist/esm/identify/index.js.map +1 -0
  86. package/dist/esm/index.d.ts +11 -0
  87. package/dist/esm/index.js +72 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/init-script.d.ts +1 -0
  90. package/dist/esm/init-script.js +62 -0
  91. package/dist/esm/init-script.js.map +1 -0
  92. package/dist/esm/setting-fields.d.ts +2 -0
  93. package/dist/esm/setting-fields.js +270 -0
  94. package/dist/esm/setting-fields.js.map +1 -0
  95. package/dist/esm/track/generated-types.d.ts +37 -0
  96. package/dist/esm/track/generated-types.js +2 -0
  97. package/dist/esm/track/generated-types.js.map +1 -0
  98. package/dist/esm/track/index.d.ts +6 -0
  99. package/dist/esm/track/index.js +91 -0
  100. package/dist/esm/track/index.js.map +1 -0
  101. package/dist/esm/trackPageView/generated-types.d.ts +37 -0
  102. package/dist/esm/trackPageView/generated-types.js +2 -0
  103. package/dist/esm/trackPageView/generated-types.js.map +1 -0
  104. package/dist/esm/trackPageView/index.d.ts +6 -0
  105. package/dist/esm/trackPageView/index.js +99 -0
  106. package/dist/esm/trackPageView/index.js.map +1 -0
  107. package/dist/esm/types.d.ts +68 -0
  108. package/dist/esm/types.js +2 -0
  109. package/dist/esm/types.js.map +1 -0
  110. package/dist/tsconfig.tsbuildinfo +1 -0
  111. package/package.json +25 -0
  112. package/src/alias/__tests__/index.test.ts +95 -0
  113. package/src/alias/generated-types.ts +12 -0
  114. package/src/alias/index.ts +35 -0
  115. package/src/constants.ts +16 -0
  116. package/src/fields.ts +173 -0
  117. package/src/functions.ts +57 -0
  118. package/src/generated-types.ts +116 -0
  119. package/src/group/__tests__/index.test.ts +126 -0
  120. package/src/group/generated-types.ts +42 -0
  121. package/src/group/index.ts +29 -0
  122. package/src/identify/__tests__/index.test.ts +135 -0
  123. package/src/identify/generated-types.ts +54 -0
  124. package/src/identify/index.ts +29 -0
  125. package/src/index.ts +99 -0
  126. package/src/init-script.ts +63 -0
  127. package/src/setting-fields.ts +273 -0
  128. package/src/track/__tests__/index.test.ts +196 -0
  129. package/src/track/generated-types.ts +102 -0
  130. package/src/track/index.ts +109 -0
  131. package/src/trackPageView/__tests__/index.test.ts +250 -0
  132. package/src/trackPageView/generated-types.ts +102 -0
  133. package/src/trackPageView/index.ts +116 -0
  134. package/src/types.ts +78 -0
  135. 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
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ "baseUrl": "."
6
+ },
7
+ "include": ["src"],
8
+ "exclude": ["dist", "**/__tests__"]
9
+ }