@segment/analytics-browser-actions-cj 1.1.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 (89) hide show
  1. package/dist/cjs/generated-types.d.ts +4 -0
  2. package/dist/cjs/generated-types.js +3 -0
  3. package/dist/cjs/generated-types.js.map +1 -0
  4. package/dist/cjs/index.d.ts +11 -0
  5. package/dist/cjs/index.js +38 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/order/generated-types.d.ts +141 -0
  8. package/dist/cjs/order/generated-types.js +3 -0
  9. package/dist/cjs/order/generated-types.js.map +1 -0
  10. package/dist/cjs/order/hashing-utils.d.ts +15 -0
  11. package/dist/cjs/order/hashing-utils.js +96 -0
  12. package/dist/cjs/order/hashing-utils.js.map +1 -0
  13. package/dist/cjs/order/index.d.ts +6 -0
  14. package/dist/cjs/order/index.js +58 -0
  15. package/dist/cjs/order/index.js.map +1 -0
  16. package/dist/cjs/order/order-fields.d.ts +6 -0
  17. package/dist/cjs/order/order-fields.js +1091 -0
  18. package/dist/cjs/order/order-fields.js.map +1 -0
  19. package/dist/cjs/order/utils.d.ts +3 -0
  20. package/dist/cjs/order/utils.js +19 -0
  21. package/dist/cjs/order/utils.js.map +1 -0
  22. package/dist/cjs/sitePage/generated-types.d.ts +13 -0
  23. package/dist/cjs/sitePage/generated-types.js +3 -0
  24. package/dist/cjs/sitePage/generated-types.js.map +1 -0
  25. package/dist/cjs/sitePage/index.d.ts +6 -0
  26. package/dist/cjs/sitePage/index.js +125 -0
  27. package/dist/cjs/sitePage/index.js.map +1 -0
  28. package/dist/cjs/sitePage/utils.d.ts +2 -0
  29. package/dist/cjs/sitePage/utils.js +7 -0
  30. package/dist/cjs/sitePage/utils.js.map +1 -0
  31. package/dist/cjs/types.d.ts +34 -0
  32. package/dist/cjs/types.js +3 -0
  33. package/dist/cjs/types.js.map +1 -0
  34. package/dist/cjs/utils.d.ts +1 -0
  35. package/dist/cjs/utils.js +23 -0
  36. package/dist/cjs/utils.js.map +1 -0
  37. package/dist/esm/generated-types.d.ts +4 -0
  38. package/dist/esm/generated-types.js +2 -0
  39. package/dist/esm/generated-types.js.map +1 -0
  40. package/dist/esm/index.d.ts +11 -0
  41. package/dist/esm/index.js +34 -0
  42. package/dist/esm/index.js.map +1 -0
  43. package/dist/esm/order/generated-types.d.ts +141 -0
  44. package/dist/esm/order/generated-types.js +2 -0
  45. package/dist/esm/order/generated-types.js.map +1 -0
  46. package/dist/esm/order/hashing-utils.d.ts +15 -0
  47. package/dist/esm/order/hashing-utils.js +88 -0
  48. package/dist/esm/order/hashing-utils.js.map +1 -0
  49. package/dist/esm/order/index.d.ts +6 -0
  50. package/dist/esm/order/index.js +56 -0
  51. package/dist/esm/order/index.js.map +1 -0
  52. package/dist/esm/order/order-fields.d.ts +6 -0
  53. package/dist/esm/order/order-fields.js +1088 -0
  54. package/dist/esm/order/order-fields.js.map +1 -0
  55. package/dist/esm/order/utils.d.ts +3 -0
  56. package/dist/esm/order/utils.js +15 -0
  57. package/dist/esm/order/utils.js.map +1 -0
  58. package/dist/esm/sitePage/generated-types.d.ts +13 -0
  59. package/dist/esm/sitePage/generated-types.js +2 -0
  60. package/dist/esm/sitePage/generated-types.js.map +1 -0
  61. package/dist/esm/sitePage/index.d.ts +6 -0
  62. package/dist/esm/sitePage/index.js +123 -0
  63. package/dist/esm/sitePage/index.js.map +1 -0
  64. package/dist/esm/sitePage/utils.d.ts +2 -0
  65. package/dist/esm/sitePage/utils.js +4 -0
  66. package/dist/esm/sitePage/utils.js.map +1 -0
  67. package/dist/esm/types.d.ts +34 -0
  68. package/dist/esm/types.js +2 -0
  69. package/dist/esm/types.js.map +1 -0
  70. package/dist/esm/utils.d.ts +1 -0
  71. package/dist/esm/utils.js +20 -0
  72. package/dist/esm/utils.js.map +1 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -0
  74. package/package.json +25 -0
  75. package/src/generated-types.ts +12 -0
  76. package/src/index.ts +46 -0
  77. package/src/order/__tests__/index.test.ts +985 -0
  78. package/src/order/generated-types.ts +545 -0
  79. package/src/order/hashing-utils.ts +141 -0
  80. package/src/order/index.ts +90 -0
  81. package/src/order/order-fields.ts +1117 -0
  82. package/src/order/utils.ts +19 -0
  83. package/src/sitePage/__tests__/index.test.ts +124 -0
  84. package/src/sitePage/generated-types.ts +45 -0
  85. package/src/sitePage/index.ts +128 -0
  86. package/src/sitePage/utils.ts +5 -0
  87. package/src/types.ts +38 -0
  88. package/src/utils.ts +21 -0
  89. package/tsconfig.json +9 -0
@@ -0,0 +1,90 @@
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 { CJ, SimpleOrder, AdvancedOrder } from '../types'
5
+ import { send } from '../utils'
6
+ import { getCookieValue, setOrderJSON } from './utils'
7
+ import { smartHash, normalizeEmail } from './hashing-utils'
8
+ import { orderFields } from './order-fields'
9
+
10
+ const action: BrowserActionDefinition<Settings, CJ, Payload> = {
11
+ title: 'Order',
12
+ description: 'Send order data to CJ.',
13
+ defaultSubscription: 'event = "Order Completed"',
14
+ platform: 'web',
15
+ fields: orderFields,
16
+ perform: async (cj, { payload, settings }) => {
17
+ const {
18
+ verticalType,
19
+ userId,
20
+ enterpriseId,
21
+ pageType,
22
+ emailHash,
23
+ orderId,
24
+ actionTrackerId,
25
+ currency,
26
+ amount,
27
+ discount,
28
+ coupon,
29
+ cjeventOrderCookieName,
30
+ items,
31
+ allVerticals,
32
+ travelVerticals,
33
+ financeVerticals,
34
+ networkServicesVerticals
35
+ } = payload
36
+
37
+ const cjeventOrder: string | null = getCookieValue(cjeventOrderCookieName)
38
+
39
+ if (!cjeventOrder) {
40
+ console.warn(
41
+ `Segment CJ Actions Destination: Cookie ${cjeventOrderCookieName} not found. Please ensure the cookie is set before calling this action.`
42
+ )
43
+ }
44
+
45
+ const actionTrackerIdFromSettings = settings.actionTrackerId
46
+
47
+ if (!actionTrackerId && !actionTrackerIdFromSettings) {
48
+ console.warn(
49
+ 'Segment CJ Actions Destination: Missing actionTrackerId. This can be set as a Setting or as an Action field value.'
50
+ )
51
+ }
52
+
53
+ const order: SimpleOrder | AdvancedOrder = {
54
+ trackingSource: 'Segment',
55
+ userId,
56
+ enterpriseId,
57
+ pageType,
58
+ emailHash: emailHash ? await smartHash(emailHash, normalizeEmail) : undefined,
59
+ orderId,
60
+ actionTrackerId: actionTrackerId ?? actionTrackerIdFromSettings ?? '',
61
+ currency,
62
+ amount,
63
+ discount,
64
+ coupon,
65
+ cjeventOrder: cjeventOrder ?? '',
66
+ items,
67
+ ...allVerticals,
68
+ ...verticalType === 'travel' ? travelVerticals : {},
69
+ ...verticalType === 'finance' ? financeVerticals: {},
70
+ ...verticalType === 'network' ? networkServicesVerticals : {}
71
+ }
72
+
73
+ if ('customerCountry' in order && typeof order.customerCountry === 'string') {
74
+ order.customerCountry = order.customerCountry.split('-').pop() || undefined
75
+ }
76
+
77
+ setOrderJSON(cj, order)
78
+ const { tagId } = settings
79
+ send(tagId)
80
+ .then(() => {
81
+ cj.sitePage = undefined
82
+ cj.order = undefined
83
+ })
84
+ .catch((err) => {
85
+ console.warn(err)
86
+ })
87
+ }
88
+ }
89
+
90
+ export default action