@segment/action-destinations 3.162.0 → 3.162.1-staged-fb-capi.54

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 (254) hide show
  1. package/dist/destinations/acoustic/Utility/eventprocessing.js +18 -18
  2. package/dist/destinations/acoustic/Utility/eventprocessing.js.map +1 -1
  3. package/dist/destinations/airship/customEvents/generated-types.d.ts +9 -0
  4. package/dist/destinations/airship/customEvents/generated-types.js +3 -0
  5. package/dist/destinations/airship/customEvents/generated-types.js.map +1 -0
  6. package/dist/destinations/airship/customEvents/index.d.ts +5 -0
  7. package/dist/destinations/airship/customEvents/index.js +59 -0
  8. package/dist/destinations/airship/customEvents/index.js.map +1 -0
  9. package/dist/destinations/airship/generated-types.d.ts +5 -0
  10. package/dist/destinations/airship/generated-types.js +3 -0
  11. package/dist/destinations/airship/generated-types.js.map +1 -0
  12. package/dist/destinations/airship/index.d.ts +4 -0
  13. package/dist/destinations/airship/index.js +97 -0
  14. package/dist/destinations/airship/index.js.map +1 -0
  15. package/dist/destinations/airship/manageTags/generated-types.d.ts +7 -0
  16. package/dist/destinations/airship/manageTags/generated-types.js +3 -0
  17. package/dist/destinations/airship/manageTags/generated-types.js.map +1 -0
  18. package/dist/destinations/airship/manageTags/index.d.ts +5 -0
  19. package/dist/destinations/airship/manageTags/index.js +38 -0
  20. package/dist/destinations/airship/manageTags/index.js.map +1 -0
  21. package/dist/destinations/airship/setAttributes/generated-types.d.ts +30 -0
  22. package/dist/destinations/airship/setAttributes/generated-types.js +3 -0
  23. package/dist/destinations/airship/setAttributes/generated-types.js.map +1 -0
  24. package/dist/destinations/airship/setAttributes/index.d.ts +5 -0
  25. package/dist/destinations/airship/setAttributes/index.js +182 -0
  26. package/dist/destinations/airship/setAttributes/index.js.map +1 -0
  27. package/dist/destinations/airship/utilities.d.ts +28 -0
  28. package/dist/destinations/airship/utilities.js +146 -0
  29. package/dist/destinations/airship/utilities.js.map +1 -0
  30. package/dist/destinations/calliper/alias/generated-types.d.ts +5 -0
  31. package/dist/destinations/calliper/alias/generated-types.js +3 -0
  32. package/dist/destinations/calliper/alias/generated-types.js.map +1 -0
  33. package/dist/destinations/calliper/alias/index.d.ts +5 -0
  34. package/dist/destinations/calliper/alias/index.js +60 -0
  35. package/dist/destinations/calliper/alias/index.js.map +1 -0
  36. package/dist/destinations/calliper/generated-types.d.ts +4 -0
  37. package/dist/destinations/calliper/generated-types.js +3 -0
  38. package/dist/destinations/calliper/generated-types.js.map +1 -0
  39. package/dist/destinations/calliper/identifyGroup/generated-types.d.ts +7 -0
  40. package/dist/destinations/calliper/identifyGroup/generated-types.js +3 -0
  41. package/dist/destinations/calliper/identifyGroup/generated-types.js.map +1 -0
  42. package/dist/destinations/calliper/identifyGroup/index.d.ts +5 -0
  43. package/dist/destinations/calliper/identifyGroup/index.js +53 -0
  44. package/dist/destinations/calliper/identifyGroup/index.js.map +1 -0
  45. package/dist/destinations/calliper/identifyUser/generated-types.d.ts +14 -0
  46. package/dist/destinations/calliper/identifyUser/generated-types.js +3 -0
  47. package/dist/destinations/calliper/identifyUser/generated-types.js.map +1 -0
  48. package/dist/destinations/calliper/identifyUser/index.d.ts +5 -0
  49. package/dist/destinations/calliper/identifyUser/index.js +152 -0
  50. package/dist/destinations/calliper/identifyUser/index.js.map +1 -0
  51. package/dist/destinations/calliper/index.d.ts +4 -0
  52. package/dist/destinations/calliper/index.js +81 -0
  53. package/dist/destinations/calliper/index.js.map +1 -0
  54. package/dist/destinations/calliper/trackEvent/eventProperties.d.ts +2 -0
  55. package/dist/destinations/calliper/trackEvent/eventProperties.js +231 -0
  56. package/dist/destinations/calliper/trackEvent/eventProperties.js.map +1 -0
  57. package/dist/destinations/calliper/trackEvent/generated-types.d.ts +32 -0
  58. package/dist/destinations/calliper/trackEvent/generated-types.js +3 -0
  59. package/dist/destinations/calliper/trackEvent/generated-types.js.map +1 -0
  60. package/dist/destinations/calliper/trackEvent/index.d.ts +5 -0
  61. package/dist/destinations/calliper/trackEvent/index.js +65 -0
  62. package/dist/destinations/calliper/trackEvent/index.js.map +1 -0
  63. package/dist/destinations/calliper/utils/constants.d.ts +1 -0
  64. package/dist/destinations/calliper/utils/constants.js +5 -0
  65. package/dist/destinations/calliper/utils/constants.js.map +1 -0
  66. package/dist/destinations/calliper/utils/helpers.d.ts +1 -0
  67. package/dist/destinations/calliper/utils/helpers.js +8 -0
  68. package/dist/destinations/calliper/utils/helpers.js.map +1 -0
  69. package/dist/destinations/engage-messaging-sendgrid/sendEmail/generated-types.d.ts +1 -0
  70. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.js +159 -122
  71. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.js.map +1 -1
  72. package/dist/destinations/facebook-conversions-api/addToCart/generated-types.d.ts +21 -0
  73. package/dist/destinations/facebook-conversions-api/addToCart/index.js +3 -0
  74. package/dist/destinations/facebook-conversions-api/addToCart/index.js.map +1 -1
  75. package/dist/destinations/facebook-conversions-api/custom/generated-types.d.ts +21 -0
  76. package/dist/destinations/facebook-conversions-api/custom/index.js +3 -0
  77. package/dist/destinations/facebook-conversions-api/custom/index.js.map +1 -1
  78. package/dist/destinations/facebook-conversions-api/fb-capi-app-data.d.ts +10 -0
  79. package/dist/destinations/facebook-conversions-api/fb-capi-app-data.js +179 -0
  80. package/dist/destinations/facebook-conversions-api/fb-capi-app-data.js.map +1 -0
  81. package/dist/destinations/facebook-conversions-api/index.js +1 -1
  82. package/dist/destinations/facebook-conversions-api/index.js.map +1 -1
  83. package/dist/destinations/facebook-conversions-api/initiateCheckout/generated-types.d.ts +21 -0
  84. package/dist/destinations/facebook-conversions-api/initiateCheckout/index.js +3 -0
  85. package/dist/destinations/facebook-conversions-api/initiateCheckout/index.js.map +1 -1
  86. package/dist/destinations/facebook-conversions-api/pageView/generated-types.d.ts +21 -0
  87. package/dist/destinations/facebook-conversions-api/pageView/index.js +3 -0
  88. package/dist/destinations/facebook-conversions-api/pageView/index.js.map +1 -1
  89. package/dist/destinations/facebook-conversions-api/purchase/generated-types.d.ts +21 -0
  90. package/dist/destinations/facebook-conversions-api/purchase/index.js +3 -0
  91. package/dist/destinations/facebook-conversions-api/purchase/index.js.map +1 -1
  92. package/dist/destinations/facebook-conversions-api/search/generated-types.d.ts +21 -0
  93. package/dist/destinations/facebook-conversions-api/search/index.js +3 -0
  94. package/dist/destinations/facebook-conversions-api/search/index.js.map +1 -1
  95. package/dist/destinations/facebook-conversions-api/viewContent/generated-types.d.ts +21 -0
  96. package/dist/destinations/facebook-conversions-api/viewContent/index.js +3 -0
  97. package/dist/destinations/facebook-conversions-api/viewContent/index.js.map +1 -1
  98. package/dist/destinations/facebook-custom-audiences/generated-types.d.ts +3 -0
  99. package/dist/destinations/facebook-custom-audiences/generated-types.js +3 -0
  100. package/dist/destinations/facebook-custom-audiences/generated-types.js.map +1 -0
  101. package/dist/destinations/facebook-custom-audiences/index.d.ts +4 -0
  102. package/dist/destinations/facebook-custom-audiences/index.js +32 -0
  103. package/dist/destinations/facebook-custom-audiences/index.js.map +1 -0
  104. package/dist/destinations/facebook-custom-audiences/syncEngage/generated-types.d.ts +3 -0
  105. package/dist/destinations/facebook-custom-audiences/syncEngage/generated-types.js +3 -0
  106. package/dist/destinations/facebook-custom-audiences/syncEngage/generated-types.js.map +1 -0
  107. package/dist/destinations/facebook-custom-audiences/syncEngage/index.d.ts +5 -0
  108. package/dist/destinations/facebook-custom-audiences/syncEngage/index.js +18 -0
  109. package/dist/destinations/facebook-custom-audiences/syncEngage/index.js.map +1 -0
  110. package/dist/destinations/facebook-custom-audiences/syncRetl/generated-types.d.ts +3 -0
  111. package/dist/destinations/facebook-custom-audiences/syncRetl/generated-types.js +3 -0
  112. package/dist/destinations/facebook-custom-audiences/syncRetl/generated-types.js.map +1 -0
  113. package/dist/destinations/facebook-custom-audiences/syncRetl/index.d.ts +5 -0
  114. package/dist/destinations/facebook-custom-audiences/syncRetl/index.js +18 -0
  115. package/dist/destinations/facebook-custom-audiences/syncRetl/index.js.map +1 -0
  116. package/dist/destinations/fullstory/index.js +1 -1
  117. package/dist/destinations/fullstory/index.js.map +1 -1
  118. package/dist/destinations/google-enhanced-conversions/functions.d.ts +1 -0
  119. package/dist/destinations/google-enhanced-conversions/functions.js +3 -1
  120. package/dist/destinations/google-enhanced-conversions/functions.js.map +1 -1
  121. package/dist/destinations/google-enhanced-conversions/uploadClickConversion/index.js +3 -1
  122. package/dist/destinations/google-enhanced-conversions/uploadClickConversion/index.js.map +1 -1
  123. package/dist/destinations/google-enhanced-conversions/uploadConversionAdjustment/index.js +3 -1
  124. package/dist/destinations/google-enhanced-conversions/uploadConversionAdjustment/index.js.map +1 -1
  125. package/dist/destinations/heap/identifyUser/index.js +0 -3
  126. package/dist/destinations/heap/identifyUser/index.js.map +1 -1
  127. package/dist/destinations/heap/trackEvent/index.js +0 -3
  128. package/dist/destinations/heap/trackEvent/index.js.map +1 -1
  129. package/dist/destinations/index.js +6 -0
  130. package/dist/destinations/index.js.map +1 -1
  131. package/dist/destinations/iterable/index.js +3 -3
  132. package/dist/destinations/iterable/index.js.map +1 -1
  133. package/dist/destinations/iterable/shared-fields.d.ts +15 -1
  134. package/dist/destinations/iterable/shared-fields.js +19 -17
  135. package/dist/destinations/iterable/shared-fields.js.map +1 -1
  136. package/dist/destinations/iterable/trackEvent/index.js +4 -1
  137. package/dist/destinations/iterable/trackEvent/index.js.map +1 -1
  138. package/dist/destinations/iterable/trackPurchase/generated-types.d.ts +1 -4
  139. package/dist/destinations/iterable/trackPurchase/index.js +21 -26
  140. package/dist/destinations/iterable/trackPurchase/index.js.map +1 -1
  141. package/dist/destinations/iterable/updateCart/generated-types.d.ts +1 -4
  142. package/dist/destinations/iterable/updateCart/index.js +21 -28
  143. package/dist/destinations/iterable/updateCart/index.js.map +1 -1
  144. package/dist/destinations/iterable/updateUser/generated-types.d.ts +1 -1
  145. package/dist/destinations/iterable/updateUser/index.js +12 -8
  146. package/dist/destinations/iterable/updateUser/index.js.map +1 -1
  147. package/dist/destinations/iterable/utils.d.ts +4 -0
  148. package/dist/destinations/iterable/utils.js +63 -0
  149. package/dist/destinations/iterable/utils.js.map +1 -0
  150. package/dist/destinations/livelike-cloud/trackEvent/index.js +0 -3
  151. package/dist/destinations/livelike-cloud/trackEvent/index.js.map +1 -1
  152. package/dist/destinations/liveramp-audiences/audienceEntered/generated-types.d.ts +9 -0
  153. package/dist/destinations/liveramp-audiences/audienceEntered/generated-types.js +3 -0
  154. package/dist/destinations/liveramp-audiences/audienceEntered/generated-types.js.map +1 -0
  155. package/dist/destinations/liveramp-audiences/audienceEntered/index.d.ts +5 -0
  156. package/dist/destinations/liveramp-audiences/audienceEntered/index.js +78 -0
  157. package/dist/destinations/liveramp-audiences/audienceEntered/index.js.map +1 -0
  158. package/dist/destinations/liveramp-audiences/audienceEntered/s3.d.ts +6 -0
  159. package/dist/destinations/liveramp-audiences/audienceEntered/s3.js +37 -0
  160. package/dist/destinations/liveramp-audiences/audienceEntered/s3.js.map +1 -0
  161. package/dist/destinations/liveramp-audiences/audienceEntered/sftp.d.ts +7 -0
  162. package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js +48 -0
  163. package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js.map +1 -0
  164. package/dist/destinations/liveramp-audiences/generated-types.d.ts +12 -0
  165. package/dist/destinations/liveramp-audiences/generated-types.js +3 -0
  166. package/dist/destinations/liveramp-audiences/generated-types.js.map +1 -0
  167. package/dist/destinations/liveramp-audiences/index.d.ts +4 -0
  168. package/dist/destinations/liveramp-audiences/index.js +89 -0
  169. package/dist/destinations/liveramp-audiences/index.js.map +1 -0
  170. package/dist/destinations/liveramp-audiences/operations.d.ts +8 -0
  171. package/dist/destinations/liveramp-audiences/operations.js +32 -0
  172. package/dist/destinations/liveramp-audiences/operations.js.map +1 -0
  173. package/dist/destinations/loops/createOrUpdateContact/generated-types.d.ts +5 -0
  174. package/dist/destinations/loops/createOrUpdateContact/index.js +24 -7
  175. package/dist/destinations/loops/createOrUpdateContact/index.js.map +1 -1
  176. package/dist/destinations/loops/index.js +11 -1
  177. package/dist/destinations/loops/index.js.map +1 -1
  178. package/dist/destinations/loops/sendEvent/generated-types.d.ts +5 -0
  179. package/dist/destinations/loops/sendEvent/generated-types.js +3 -0
  180. package/dist/destinations/loops/sendEvent/generated-types.js.map +1 -0
  181. package/dist/destinations/loops/sendEvent/index.d.ts +5 -0
  182. package/dist/destinations/loops/sendEvent/index.js +52 -0
  183. package/dist/destinations/loops/sendEvent/index.js.map +1 -0
  184. package/dist/destinations/noop/generated-types.d.ts +2 -0
  185. package/dist/destinations/noop/generated-types.js +3 -0
  186. package/dist/destinations/noop/generated-types.js.map +1 -0
  187. package/dist/destinations/noop/index.d.ts +4 -0
  188. package/dist/destinations/noop/index.js +27 -0
  189. package/dist/destinations/noop/index.js.map +1 -0
  190. package/dist/destinations/noop/noop/generated-types.d.ts +3 -0
  191. package/dist/destinations/noop/noop/generated-types.js +3 -0
  192. package/dist/destinations/noop/noop/generated-types.js.map +1 -0
  193. package/dist/destinations/noop/noop/index.d.ts +5 -0
  194. package/dist/destinations/noop/noop/index.js +19 -0
  195. package/dist/destinations/noop/noop/index.js.map +1 -0
  196. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/functions.d.ts +1 -0
  197. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/functions.js +11 -1
  198. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/functions.js.map +1 -1
  199. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/index.js +4 -1
  200. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/index.js.map +1 -1
  201. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/mock-dataFile.d.ts +1 -0
  202. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/mock-dataFile.js +2 -1
  203. package/dist/destinations/optimizely-feature-experimentation-actions/trackEvent/mock-dataFile.js.map +1 -1
  204. package/dist/destinations/revx/generated-types.d.ts +3 -0
  205. package/dist/destinations/revx/generated-types.js +3 -0
  206. package/dist/destinations/revx/generated-types.js.map +1 -0
  207. package/dist/destinations/revx/index.d.ts +4 -0
  208. package/dist/destinations/revx/index.js +36 -0
  209. package/dist/destinations/revx/index.js.map +1 -0
  210. package/dist/destinations/revx/sendRevxPing/generated-types.d.ts +41 -0
  211. package/dist/destinations/revx/sendRevxPing/generated-types.js +3 -0
  212. package/dist/destinations/revx/sendRevxPing/generated-types.js.map +1 -0
  213. package/dist/destinations/revx/sendRevxPing/index.d.ts +5 -0
  214. package/dist/destinations/revx/sendRevxPing/index.js +268 -0
  215. package/dist/destinations/revx/sendRevxPing/index.js.map +1 -0
  216. package/dist/destinations/segment-profiles/generated-types.d.ts +0 -1
  217. package/dist/destinations/segment-profiles/helperFunctions.d.ts +0 -7
  218. package/dist/destinations/segment-profiles/helperFunctions.js +1 -45
  219. package/dist/destinations/segment-profiles/helperFunctions.js.map +1 -1
  220. package/dist/destinations/segment-profiles/index.js +0 -14
  221. package/dist/destinations/segment-profiles/index.js.map +1 -1
  222. package/dist/destinations/segment-profiles/properties.js +10 -1
  223. package/dist/destinations/segment-profiles/properties.js.map +1 -1
  224. package/dist/destinations/segment-profiles/sendGroup/index.js +0 -8
  225. package/dist/destinations/segment-profiles/sendGroup/index.js.map +1 -1
  226. package/dist/destinations/segment-profiles/sendIdentify/index.js +0 -8
  227. package/dist/destinations/segment-profiles/sendIdentify/index.js.map +1 -1
  228. package/dist/destinations/snap-conversions-api/snap-capi-properties.js +2 -1
  229. package/dist/destinations/snap-conversions-api/snap-capi-properties.js.map +1 -1
  230. package/dist/destinations/the-trade-desk-crm/generated-types.d.ts +2 -0
  231. package/dist/destinations/the-trade-desk-crm/index.js +15 -1
  232. package/dist/destinations/the-trade-desk-crm/index.js.map +1 -1
  233. package/dist/destinations/tiktok-conversions/reportWebEvent/index.js +1 -1
  234. package/dist/destinations/tiktok-conversions/reportWebEvent/index.js.map +1 -1
  235. package/dist/destinations/usermaven/common-definitions.js +2 -2
  236. package/dist/destinations/usermaven/common-definitions.js.map +1 -1
  237. package/dist/destinations/usermaven/generated-types.d.ts +1 -0
  238. package/dist/destinations/usermaven/group/generated-types.d.ts +2 -2
  239. package/dist/destinations/usermaven/identify/generated-types.d.ts +2 -2
  240. package/dist/destinations/usermaven/index.js +19 -2
  241. package/dist/destinations/usermaven/index.js.map +1 -1
  242. package/dist/destinations/usermaven/page/generated-types.d.ts +31 -0
  243. package/dist/destinations/usermaven/page/generated-types.js +3 -0
  244. package/dist/destinations/usermaven/page/generated-types.js.map +1 -0
  245. package/dist/destinations/usermaven/page/index.d.ts +5 -0
  246. package/dist/destinations/usermaven/page/index.js +58 -0
  247. package/dist/destinations/usermaven/page/index.js.map +1 -0
  248. package/dist/destinations/usermaven/request-params.js +15 -10
  249. package/dist/destinations/usermaven/request-params.js.map +1 -1
  250. package/dist/destinations/usermaven/track/generated-types.d.ts +2 -2
  251. package/dist/lib/AWS/s3.d.ts +4 -0
  252. package/dist/lib/AWS/s3.js +21 -0
  253. package/dist/lib/AWS/s3.js.map +1 -0
  254. package/package.json +8 -5
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const actions_core_1 = require("@segment/actions-core");
7
7
  const dayjs_1 = __importDefault(require("../../../lib/dayjs"));
8
8
  const shared_fields_1 = require("../shared-fields");
9
+ const utils_1 = require("../utils");
9
10
  const action = {
10
11
  title: 'Track Purchase',
11
12
  description: 'Tracks a purchase to Iterable',
@@ -26,6 +27,7 @@ const action = {
26
27
  type: 'object',
27
28
  required: true,
28
29
  additionalProperties: false,
30
+ defaultObjectUI: 'keyvalue:only',
29
31
  default: {
30
32
  email: {
31
33
  '@if': {
@@ -36,7 +38,7 @@ const action = {
36
38
  },
37
39
  userId: { '@path': '$.userId' },
38
40
  dataFields: { '@path': '$.context.traits' },
39
- preferUserId: false,
41
+ phoneNumber: { '@path': '$.context.traits.phone' },
40
42
  mergeNestedObjects: false
41
43
  },
42
44
  properties: {
@@ -49,11 +51,11 @@ const action = {
49
51
  dataFields: {
50
52
  ...shared_fields_1.USER_DATA_FIELDS
51
53
  },
52
- preferUserId: {
53
- ...shared_fields_1.PREFER_USER_ID_FIELD
54
- },
55
54
  mergeNestedObjects: {
56
55
  ...shared_fields_1.MERGE_NESTED_OBJECTS_FIELD
56
+ },
57
+ phoneNumber: {
58
+ ...shared_fields_1.USER_PHONE_NUMBER_FIELD
57
59
  }
58
60
  }
59
61
  },
@@ -65,7 +67,7 @@ const action = {
65
67
  },
66
68
  total: {
67
69
  label: 'Total',
68
- description: 'Total order dollar amount.',
70
+ description: 'Total order amount.',
69
71
  type: 'number',
70
72
  required: true,
71
73
  default: { '@path': '$.properties.total' }
@@ -85,32 +87,25 @@ const action = {
85
87
  if (!user.email && !user.userId) {
86
88
  throw new actions_core_1.PayloadValidationError('Must include email or userId.');
87
89
  }
88
- const reservedItemKeys = [
89
- 'product_id',
90
- 'id',
91
- 'sku',
92
- 'name',
93
- 'price',
94
- 'quantity',
95
- 'categories',
96
- 'category',
97
- 'url',
98
- 'image_url'
99
- ];
100
- function transformItems(items) {
101
- return items.map(({ dataFields, categories, ...rest }) => ({
102
- ...rest,
103
- dataFields: actions_core_1.omit(dataFields, reservedItemKeys),
104
- ...(categories && { categories: [categories] })
105
- }));
106
- }
107
90
  if (dataFields && Object.prototype.hasOwnProperty.call(dataFields, 'products')) {
108
91
  delete dataFields.products;
109
92
  }
93
+ const phoneNumber = user.phoneNumber;
94
+ delete user.phoneNumber;
95
+ const formattedDataFields = utils_1.convertDatesInObject(dataFields ?? {});
96
+ const formattedUserDataFields = utils_1.convertDatesInObject(user.dataFields ?? {});
110
97
  const trackPurchaseRequest = {
111
98
  ...payload,
112
- items: transformItems(payload.items),
113
- createdAt: dayjs_1.default(payload.createdAt).unix()
99
+ user: {
100
+ ...user,
101
+ dataFields: {
102
+ ...formattedUserDataFields,
103
+ phoneNumber: phoneNumber
104
+ }
105
+ },
106
+ items: utils_1.transformItems(payload.items),
107
+ createdAt: dayjs_1.default(payload.createdAt).unix(),
108
+ dataFields: formattedDataFields
114
109
  };
115
110
  return request('https://api.iterable.com/api/commerce/trackPurchase', {
116
111
  method: 'post',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/iterable/trackPurchase/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/iterable/trackPurchase/index.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,11 @@ export interface Payload {
2
2
  user: {
3
3
  email?: string;
4
4
  userId?: string;
5
- preferUserId?: boolean;
6
5
  mergeNestedObjects?: boolean;
7
6
  dataFields?: {
8
7
  [k: string]: unknown;
9
8
  };
9
+ phoneNumber?: string;
10
10
  };
11
11
  items: {
12
12
  id: string;
@@ -18,9 +18,6 @@ export interface Payload {
18
18
  categories?: string;
19
19
  url?: string;
20
20
  imageUrl?: string;
21
- dataFields?: {
22
- [k: string]: unknown;
23
- };
24
21
  [k: string]: unknown;
25
22
  }[];
26
23
  }
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const actions_core_1 = require("@segment/actions-core");
4
4
  const shared_fields_1 = require("../shared-fields");
5
+ const utils_1 = require("../utils");
5
6
  const action = {
6
- title: 'Update Cart',
7
- description: 'Updates shoppingCartItems field on the user profile.',
8
- defaultSubscription: 'type = "track" and event == "Update Cart"',
7
+ title: 'Cart Updates',
8
+ description: 'Updates the shoppingCartItems field on the user profile.',
9
+ defaultSubscription: 'type = "track" and event == "Cart Updated"',
9
10
  fields: {
10
11
  user: {
11
12
  label: 'User Data',
@@ -23,7 +24,9 @@ const action = {
23
24
  }
24
25
  },
25
26
  userId: { '@path': '$.userId' },
26
- dataFields: { '@path': '$.context.traits' }
27
+ dataFields: { '@path': '$.context.traits' },
28
+ phoneNumber: { '@path': '$.context.traits.phone' },
29
+ mergeNestedObjects: false
27
30
  },
28
31
  properties: {
29
32
  email: {
@@ -32,14 +35,14 @@ const action = {
32
35
  userId: {
33
36
  ...shared_fields_1.USER_ID_FIELD
34
37
  },
35
- preferUserId: {
36
- ...shared_fields_1.PREFER_USER_ID_FIELD
37
- },
38
38
  mergeNestedObjects: {
39
39
  ...shared_fields_1.MERGE_NESTED_OBJECTS_FIELD
40
40
  },
41
41
  dataFields: {
42
42
  ...shared_fields_1.USER_DATA_FIELDS
43
+ },
44
+ phoneNumber: {
45
+ ...shared_fields_1.USER_PHONE_NUMBER_FIELD
43
46
  }
44
47
  }
45
48
  },
@@ -52,28 +55,18 @@ const action = {
52
55
  if (!user.email && !user.userId) {
53
56
  throw new actions_core_1.PayloadValidationError('Must include email or userId.');
54
57
  }
55
- const reservedItemKeys = [
56
- 'product_id',
57
- 'id',
58
- 'sku',
59
- 'name',
60
- 'price',
61
- 'quantity',
62
- 'categories',
63
- 'category',
64
- 'url',
65
- 'image_url'
66
- ];
67
- function transformItems(items) {
68
- return items.map(({ dataFields, categories, ...rest }) => ({
69
- ...rest,
70
- dataFields: actions_core_1.omit(dataFields, reservedItemKeys),
71
- ...(categories && { categories: [categories] })
72
- }));
73
- }
58
+ const phoneNumber = user.phoneNumber;
59
+ delete user.phoneNumber;
60
+ const formattedDataFields = utils_1.convertDatesInObject(user.dataFields ?? {});
74
61
  const updateCartRequest = {
75
- user,
76
- items: transformItems(items)
62
+ user: {
63
+ ...user,
64
+ dataFields: {
65
+ ...formattedDataFields,
66
+ phoneNumber: phoneNumber
67
+ }
68
+ },
69
+ items: utils_1.transformItems(items)
77
70
  };
78
71
  return request('https://api.iterable.com/api/commerce/updateCart', {
79
72
  method: 'post',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/iterable/updateCart/index.ts"],"names":[],"mappings":";;AAAA,wDAAsF;AAGtF,oDAOyB;AAEzB,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,sDAAsD;IACnE,mBAAmB,EAAE,2CAA2C;IAChE,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,iDAAiD;YAC9D,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,KAAK;YAC3B,eAAe,EAAE,eAAe;YAChC,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,KAAK,EAAE;wBACL,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;wBACzC,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;wBACvC,IAAI,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;qBAC5C;iBACF;gBACD,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;gBAC/B,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;aAC5C;YACD,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,GAAG,2BAAW;iBACf;gBACD,MAAM,EAAE;oBACN,GAAG,6BAAa;iBACjB;gBACD,YAAY,EAAE;oBACZ,GAAG,oCAAoB;iBACxB;gBACD,kBAAkB,EAAE;oBAClB,GAAG,0CAA0B;iBAC9B;gBACD,UAAU,EAAE;oBACV,GAAG,gCAAgB;iBACpB;aACF;SACF;QACD,KAAK,EAAE;YACL,GAAG,2BAAW;SACf;KACF;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/B,MAAM,IAAI,qCAAsB,CAAC,+BAA+B,CAAC,CAAA;SAClE;QAED,MAAM,gBAAgB,GAAG;YACvB,YAAY;YACZ,IAAI;YACJ,KAAK;YACL,MAAM;YACN,OAAO;YACP,UAAU;YACV,YAAY;YACZ,UAAU;YACV,KAAK;YACL,WAAW;SACZ,CAAA;QAKD,SAAS,cAAc,CAAC,KAAuB;YAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzD,GAAG,IAAI;gBACP,UAAU,EAAE,mBAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;gBAC9C,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC,CAAA;QACL,CAAC;QA8BD,MAAM,iBAAiB,GAAsB;YAC3C,IAAI;YACJ,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;SAC7B,CAAA;QAED,OAAO,OAAO,CAAC,kDAAkD,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/iterable/updateCart/index.ts"],"names":[],"mappings":";;AAAA,wDAAgF;AAGhF,oDAQyB;AACzB,oCAA+D;AAE/D,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,0DAA0D;IACvE,mBAAmB,EAAE,4CAA4C;IACjE,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,iDAAiD;YAC9D,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,KAAK;YAC3B,eAAe,EAAE,eAAe;YAChC,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,KAAK,EAAE;wBACL,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;wBACzC,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;wBACvC,IAAI,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;qBAC5C;iBACF;gBACD,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;gBAC/B,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;gBAC3C,WAAW,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;gBAClD,kBAAkB,EAAE,KAAK;aAC1B;YACD,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,GAAG,2BAAW;iBACf;gBACD,MAAM,EAAE;oBACN,GAAG,6BAAa;iBACjB;gBACD,kBAAkB,EAAE;oBAClB,GAAG,0CAA0B;iBAC9B;gBACD,UAAU,EAAE;oBACV,GAAG,gCAAgB;iBACpB;gBACD,WAAW,EAAE;oBACX,GAAG,uCAAuB;iBAC3B;aACF;SACF;QACD,KAAK,EAAE;YACL,GAAG,2BAAW;SACf;KACF;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/B,MAAM,IAAI,qCAAsB,CAAC,+BAA+B,CAAC,CAAA;SAClE;QAeD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,OAAO,IAAI,CAAC,WAAW,CAAA;QAEvB,MAAM,mBAAmB,GAAG,4BAAoB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;QAEvE,MAAM,iBAAiB,GAAsB;YAC3C,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,UAAU,EAAE;oBACV,GAAG,mBAAmB;oBACtB,WAAW,EAAE,WAAW;iBACzB;aACF;YACD,KAAK,EAAE,sBAAc,CAAC,KAAK,CAAC;SAC7B,CAAA;QAED,OAAO,OAAO,CAAC,kDAAkD,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -4,6 +4,6 @@ export interface Payload {
4
4
  dataFields?: {
5
5
  [k: string]: unknown;
6
6
  };
7
- preferUserId?: boolean;
7
+ phoneNumber?: string;
8
8
  mergeNestedObjects?: boolean;
9
9
  }
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const actions_core_1 = require("@segment/actions-core");
4
4
  const shared_fields_1 = require("../shared-fields");
5
+ const utils_1 = require("../utils");
5
6
  const action = {
6
- title: 'Update User',
7
+ title: 'Upsert User',
7
8
  description: 'Creates or updates a user',
8
9
  defaultSubscription: 'type = "identify"',
9
10
  fields: {
@@ -17,8 +18,8 @@ const action = {
17
18
  dataFields: {
18
19
  ...shared_fields_1.USER_DATA_FIELDS
19
20
  },
20
- preferUserId: {
21
- ...shared_fields_1.PREFER_USER_ID_FIELD
21
+ phoneNumber: {
22
+ ...shared_fields_1.USER_PHONE_NUMBER_FIELD
22
23
  },
23
24
  mergeNestedObjects: {
24
25
  ...shared_fields_1.MERGE_NESTED_OBJECTS_FIELD
@@ -29,12 +30,15 @@ const action = {
29
30
  if (!email && !userId) {
30
31
  throw new actions_core_1.PayloadValidationError('Must include email or userId.');
31
32
  }
32
- if (dataFields?.phone) {
33
- dataFields.phoneNumber = dataFields.phone;
34
- delete dataFields.phone;
35
- }
33
+ const phoneNumber = payload.phoneNumber;
34
+ delete payload.phoneNumber;
35
+ const formattedDataFields = utils_1.convertDatesInObject(dataFields ?? {});
36
36
  const userUpdateRequest = {
37
- ...payload
37
+ ...payload,
38
+ dataFields: {
39
+ ...formattedDataFields,
40
+ phoneNumber: phoneNumber
41
+ }
38
42
  };
39
43
  return request('https://api.iterable.com/api/users/update', {
40
44
  method: 'post',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/iterable/updateUser/index.ts"],"names":[],"mappings":";;AAAA,wDAAgF;AAGhF,oDAMyB;AAEzB,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,2BAA2B;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,MAAM,EAAE;QACN,KAAK,EAAE;YACL,GAAG,2BAAW;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;SACvC;QACD,MAAM,EAAE;YACN,GAAG,6BAAa;SACjB;QACD,UAAU,EAAE;YACV,GAAG,gCAAgB;SACpB;QACD,YAAY,EAAE;YACZ,GAAG,oCAAoB;SACxB;QACD,kBAAkB,EAAE;YAClB,GAAG,0CAA0B;SAC9B;KACF;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAE7C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,qCAAsB,CAAC,+BAA+B,CAAC,CAAA;SAClE;QAYD,IAAI,UAAU,EAAE,KAAK,EAAE;YACrB,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAA;YACzC,OAAO,UAAU,CAAC,KAAK,CAAA;SACxB;QAED,MAAM,iBAAiB,GAAsB;YAC3C,GAAG,OAAO;SACX,CAAA;QAED,OAAO,OAAO,CAAC,2CAA2C,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/iterable/updateUser/index.ts"],"names":[],"mappings":";;AAAA,wDAAgF;AAGhF,oDAMyB;AACzB,oCAA+C;AAE/C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,2BAA2B;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,MAAM,EAAE;QACN,KAAK,EAAE;YACL,GAAG,2BAAW;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;SACvC;QACD,MAAM,EAAE;YACN,GAAG,6BAAa;SACjB;QACD,UAAU,EAAE;YACV,GAAG,gCAAgB;SACpB;QACD,WAAW,EAAE;YACX,GAAG,uCAAuB;SAC3B;QACD,kBAAkB,EAAE;YAClB,GAAG,0CAA0B;SAC9B;KACF;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAE7C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,qCAAsB,CAAC,+BAA+B,CAAC,CAAA;SAClE;QAYD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACvC,OAAO,OAAO,CAAC,WAAW,CAAA;QAE1B,MAAM,mBAAmB,GAAG,4BAAoB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;QAClE,MAAM,iBAAiB,GAAsB;YAC3C,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,GAAG,mBAAmB;gBACtB,WAAW,EAAE,WAAW;aACzB;SACF,CAAA;QAED,OAAO,OAAO,CAAC,2CAA2C,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Payload as UpdateCart } from './updateCart/generated-types';
2
+ import { CommerceItem } from './shared-fields';
3
+ export declare function convertDatesInObject(obj: Record<string, unknown>): Record<string, unknown>;
4
+ export declare function transformItems(items: UpdateCart['items']): CommerceItem[];
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformItems = exports.convertDatesInObject = void 0;
4
+ const actions_core_1 = require("@segment/actions-core");
5
+ const isoDateRegExp = /^(\d{4})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:([ T])(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;
6
+ function dateToIterableDateStringFormat(isoDateStr) {
7
+ if (!isoDateRegExp.test(isoDateStr)) {
8
+ return null;
9
+ }
10
+ const date = new Date(isoDateStr);
11
+ if (date instanceof Date && !isNaN(date.valueOf())) {
12
+ const dateString = date.toISOString().replace('T', ' ').split('.')[0];
13
+ return `${dateString} +00:00`;
14
+ }
15
+ return null;
16
+ }
17
+ function convertDatesInObject(obj) {
18
+ if (typeof obj !== 'object' || obj === null) {
19
+ return obj;
20
+ }
21
+ for (const prop in obj) {
22
+ let value = obj[prop];
23
+ if (typeof value === 'string' && isoDateRegExp.test(value)) {
24
+ const dateValue = new Date(value);
25
+ if (!isNaN(dateValue.valueOf())) {
26
+ value = dateValue;
27
+ }
28
+ }
29
+ if (value instanceof Date) {
30
+ obj[prop] = dateToIterableDateStringFormat(value.toISOString());
31
+ }
32
+ else if (typeof value === 'object' && value !== null) {
33
+ convertDatesInObject(value);
34
+ }
35
+ else {
36
+ obj[prop] = value;
37
+ }
38
+ }
39
+ return obj;
40
+ }
41
+ exports.convertDatesInObject = convertDatesInObject;
42
+ function transformItems(items) {
43
+ const reservedItemKeys = [
44
+ 'product_id',
45
+ 'id',
46
+ 'sku',
47
+ 'name',
48
+ 'price',
49
+ 'quantity',
50
+ 'categories',
51
+ 'category',
52
+ 'url',
53
+ 'image_url',
54
+ 'imageUrl'
55
+ ];
56
+ return items.map(({ dataFields, categories, ...rest }) => ({
57
+ ...rest,
58
+ dataFields: convertDatesInObject(actions_core_1.omit(rest, reservedItemKeys) || {}),
59
+ ...(categories && { categories: [categories] })
60
+ }));
61
+ }
62
+ exports.transformItems = transformItems;
63
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/destinations/iterable/utils.ts"],"names":[],"mappings":";;;AAAA,wDAA4C;AAM5C,MAAM,aAAa,GACjB,uIAAuI,CAAA;AAOzI,SAAS,8BAA8B,CAAC,UAAkB;IACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QACnC,OAAO,IAAI,CAAA;KACZ;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;IACjC,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,OAAO,GAAG,UAAU,SAAS,CAAA;KAC9B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAOD,SAAgB,oBAAoB,CAAC,GAA4B;IAC/D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC3C,OAAO,GAAG,CAAA;KACX;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;QACtB,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC1D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE;gBAC/B,KAAK,GAAG,SAAS,CAAA;aAClB;SACF;QACD,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,GAAG,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;SAChE;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;YACtD,oBAAoB,CAAC,KAAgC,CAAC,CAAA;SACvD;aAAM;YACL,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;SAClB;KACF;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AArBD,oDAqBC;AAQD,SAAgB,cAAc,CAAC,KAA0B;IACvD,MAAM,gBAAgB,GAAG;QACvB,YAAY;QACZ,IAAI;QACJ,KAAK;QACL,MAAM;QACN,OAAO;QACP,UAAU;QACV,YAAY;QACZ,UAAU;QACV,KAAK;QACL,WAAW;QACX,UAAU;KACX,CAAA;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,GAAG,IAAI;QACP,UAAU,EAAE,oBAAoB,CAAC,mBAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACpE,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;KAChD,CAAC,CAAC,CAAA;AACL,CAAC;AApBD,wCAoBC"}
@@ -92,9 +92,6 @@ const action = {
92
92
  }
93
93
  },
94
94
  perform: (request, { payload, settings }) => {
95
- if (!settings.clientId || !settings.producerToken) {
96
- throw new actions_core_1.IntegrationError('Missing client ID or producer token.');
97
- }
98
95
  return processData(request, settings, [payload]);
99
96
  }
100
97
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/livelike-cloud/trackEvent/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/livelike-cloud/trackEvent/index.ts"],"names":[],"mappings":";;AAAA,wDAAyF;AAEzF,8CAA0C;AAG1C,MAAM,WAAW,GAAG,KAAK,EAAE,OAAsB,EAAE,QAAkB,EAAE,QAAmB,EAAE,EAAE;IAC5F,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACtC,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAClF,MAAM,IAAI,+BAAgB,CACxB,gEAAgE,EAChE,yBAAyB,EACzB,GAAG,CACJ,CAAA;SACF;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,GAAG,uBAAU,iBAAiB,QAAQ,CAAC,QAAQ,kBAAkB,EAAE;QAChF,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,MAAM;SACP;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,4BAA4B;IACzC,mBAAmB,EAAE,gBAAgB;IACrC,MAAM,EAAE;QACN,UAAU,EAAE;YACV,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EACT,oJAAoJ;YACtJ,OAAO,EAAE;gBACP,OAAO,EAAE,SAAS;aACnB;SACF;QACD,UAAU,EAAE;YACV,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ;aAClB;SACF;QACD,eAAe,EAAE;YACf,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iCAAiC;YAC9C,OAAO,EAAE;gBACP,OAAO,EAAE,UAAU;aACpB;SACF;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,sCAAsC;YACnD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,kCAAkC;aAC5C;SACF;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,eAAe;aACzB;SACF;QACD,SAAS,EAAE;YACT,KAAK,EAAE,WAAW;YAClB,WAAW,EACT,oSAAoS;YACtS,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,wBAAwB;aAClC;SACF;QAED,SAAS,EAAE;YACT,KAAK,EAAE,WAAW;YAClB,WAAW,EACT,qJAAqJ;YACvJ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,aAAa;aACvB;SACF;QACD,UAAU,EAAE;YACV,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,cAAc;aACxB;SACF;KACF;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1C,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;CAQF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,9 @@
1
+ export interface Payload {
2
+ audience_key: string;
3
+ identifier_data?: {
4
+ [k: string]: unknown;
5
+ };
6
+ delimiter: string;
7
+ filename: string;
8
+ enable_batching: boolean;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ActionDefinition } from '@segment/actions-core';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ declare const action: ActionDefinition<Settings, Payload>;
5
+ export default action;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const actions_core_1 = require("@segment/actions-core");
4
+ const s3_1 = require("./s3");
5
+ const sftp_1 = require("./sftp");
6
+ const operations_1 = require("../operations");
7
+ const action = {
8
+ title: 'Audience Entered',
9
+ description: 'Uploads audience membership data to a file for LiveRamp ingestion.',
10
+ defaultSubscription: 'event = "Audience Entered"',
11
+ fields: {
12
+ audience_key: {
13
+ label: 'Audience Key',
14
+ description: 'Identifies the user within the entered audience.',
15
+ type: 'string',
16
+ required: true,
17
+ default: { '@path': '$.userId' }
18
+ },
19
+ identifier_data: {
20
+ label: 'Identifier Data',
21
+ description: `Additional data pertaining to the user.`,
22
+ type: 'object',
23
+ required: false,
24
+ defaultObjectUI: 'keyvalue:only',
25
+ default: { '@path': '$.context.traits' }
26
+ },
27
+ delimiter: {
28
+ label: 'Delimeter',
29
+ description: `Character used to separate tokens in the resulting file.`,
30
+ type: 'string',
31
+ required: true,
32
+ default: ','
33
+ },
34
+ filename: {
35
+ label: 'Filename',
36
+ description: `Name of the CSV file to upload for LiveRamp ingestion.`,
37
+ type: 'string',
38
+ required: true,
39
+ default: { '@template': '{{properties.audience_key}}_PII_{{receivedAt}}.csv' }
40
+ },
41
+ enable_batching: {
42
+ type: 'boolean',
43
+ label: 'Batch data',
44
+ description: 'Receive events in a batch payload. This is required for LiveRamp audiences ingestion.',
45
+ required: true,
46
+ default: true
47
+ }
48
+ },
49
+ perform: async (request, { settings, payload }) => {
50
+ return processData(request, settings, [payload]);
51
+ },
52
+ performBatch: (request, { settings, payload }) => {
53
+ return processData(request, settings, payload);
54
+ }
55
+ };
56
+ async function processData(request, settings, payloads) {
57
+ switch (settings.upload_mode) {
58
+ case 'S3':
59
+ s3_1.validateS3(settings);
60
+ break;
61
+ case 'SFTP':
62
+ sftp_1.validateSFTP(settings);
63
+ break;
64
+ default:
65
+ throw new actions_core_1.InvalidAuthenticationError(`Unexpected upload mode: ${settings.upload_mode}`);
66
+ }
67
+ const { filename, fileContent } = operations_1.generateFile(payloads);
68
+ switch (settings.upload_mode) {
69
+ case 'S3':
70
+ return s3_1.uploadS3(settings, filename, fileContent, request);
71
+ case 'SFTP': {
72
+ const sftpClient = new sftp_1.Client();
73
+ return sftp_1.uploadSFTP(sftpClient, settings, filename, fileContent);
74
+ }
75
+ }
76
+ }
77
+ exports.default = action;
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/index.ts"],"names":[],"mappings":";;AAAA,wDAAmG;AAGnG,6BAA2C;AAC3C,iCAAuE;AACvE,8CAA4C;AAE5C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,oEAAoE;IACjF,mBAAmB,EAAE,4BAA4B;IACjD,MAAM,EAAE;QACN,YAAY,EAAE;YACZ,KAAK,EAAE,cAAc;YACrB,WAAW,EAAE,kDAAkD;YAC/D,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;SACjC;QACD,eAAe,EAAE;YACf,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;YACf,eAAe,EAAE,eAAe;YAChC,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;SACzC;QACD,SAAS,EAAE;YACT,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,0DAA0D;YACvE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,GAAG;SACb;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,wDAAwD;YACrE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE;SAC/E;QACD,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,uFAAuF;YACpG,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd;KACF;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAChD,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/C,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;CACF,CAAA;AAED,KAAK,UAAU,WAAW,CAAC,OAAsB,EAAE,QAAkB,EAAE,QAAmB;IAExF,QAAQ,QAAQ,CAAC,WAAW,EAAE;QAC5B,KAAK,IAAI;YACP,eAAU,CAAC,QAAQ,CAAC,CAAA;YACpB,MAAK;QACP,KAAK,MAAM;YACT,mBAAY,CAAC,QAAQ,CAAC,CAAA;YACtB,MAAK;QACP;YACE,MAAM,IAAI,yCAA0B,CAAC,2BAA2B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;KAC1F;IAED,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,yBAAY,CAAC,QAAQ,CAAC,CAAA;IAExD,QAAQ,QAAQ,CAAC,WAAW,EAAE;QAC5B,KAAK,IAAI;YACP,OAAO,aAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;QAC3D,KAAK,MAAM,CAAC,CAAC;YACX,MAAM,UAAU,GAAG,IAAI,aAAU,EAAE,CAAA;YACnC,OAAO,iBAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;SAC/D;KACF;AACH,CAAC;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ import { ModifiedResponse, RequestOptions } from '@segment/actions-core';
3
+ import { Settings } from '../generated-types';
4
+ declare function validateS3(settings: Settings): void;
5
+ declare function uploadS3(settings: Settings, filename: string, fileContent: Buffer, request: <Data = unknown>(url: string, options?: RequestOptions) => Promise<ModifiedResponse<Data>>): Promise<ModifiedResponse<unknown>>;
6
+ export { validateS3, uploadS3 };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.uploadS3 = exports.validateS3 = void 0;
7
+ const s3_1 = __importDefault(require("../../../lib/AWS/s3"));
8
+ const actions_core_1 = require("@segment/actions-core");
9
+ function validateS3(settings) {
10
+ if (!settings.s3_aws_access_key) {
11
+ throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS Access Key');
12
+ }
13
+ if (!settings.s3_aws_secret_key) {
14
+ throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS Secret Key');
15
+ }
16
+ if (!settings.s3_aws_bucket_name) {
17
+ throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS S3 bucket name');
18
+ }
19
+ if (!settings.s3_aws_region) {
20
+ throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS Region');
21
+ }
22
+ }
23
+ exports.validateS3 = validateS3;
24
+ async function uploadS3(settings, filename, fileContent, request) {
25
+ const method = 'PUT';
26
+ const opts = await s3_1.default(settings.s3_aws_bucket_name, settings.s3_aws_region, filename, method, fileContent, settings.s3_aws_access_key, settings.s3_aws_secret_key);
27
+ if (!opts.headers || !opts.method || !opts.host || !opts.path) {
28
+ throw new actions_core_1.InvalidAuthenticationError('Unable to generate signature header for AWS S3 request.');
29
+ }
30
+ return await request(`https://${opts.host}/${opts.path}`, {
31
+ headers: opts.headers,
32
+ method,
33
+ body: opts.body
34
+ });
35
+ }
36
+ exports.uploadS3 = uploadS3;
37
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/s3.ts"],"names":[],"mappings":";;;;;;AAAA,6DAA0D;AAC1D,wDAAoG;AAGpG,SAAS,UAAU,CAAC,QAAkB;IACpC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAC/B,MAAM,IAAI,yCAA0B,CAAC,qDAAqD,CAAC,CAAA;KAC5F;IAED,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAC/B,MAAM,IAAI,yCAA0B,CAAC,qDAAqD,CAAC,CAAA;KAC5F;IAED,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;QAChC,MAAM,IAAI,yCAA0B,CAAC,yDAAyD,CAAC,CAAA;KAChG;IAED,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC3B,MAAM,IAAI,yCAA0B,CAAC,iDAAiD,CAAC,CAAA;KACxF;AACH,CAAC;AA6BQ,gCAAU;AA3BnB,KAAK,UAAU,QAAQ,CACrB,QAAkB,EAClB,QAAgB,EAChB,WAAmB,EACnB,OAAmG;IAEnG,MAAM,MAAM,GAAG,KAAK,CAAA;IACpB,MAAM,IAAI,GAAG,MAAM,YAAwB,CACzC,QAAQ,CAAC,kBAA4B,EACrC,QAAQ,CAAC,aAAuB,EAChC,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,CAAC,iBAA2B,EACpC,QAAQ,CAAC,iBAA2B,CACrC,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC7D,MAAM,IAAI,yCAA0B,CAAC,yDAAyD,CAAC,CAAA;KAChG;IAED,OAAO,MAAM,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;QACxD,OAAO,EAAE,IAAI,CAAC,OAAiC;QAC/C,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAA;AACJ,CAAC;AAEoB,4BAAQ"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import Client from 'ssh2-sftp-client';
3
+ import { Settings } from '../generated-types';
4
+ declare function validateSFTP(settings: Settings): void;
5
+ declare function uploadSFTP(sftp: Client, settings: Settings, filename: string, fileContent: Buffer): Promise<void>;
6
+ declare function testAuthenticationSFTP(sftp: Client, settings: Settings): Promise<void>;
7
+ export { validateSFTP, uploadSFTP, testAuthenticationSFTP, Client };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Client = exports.testAuthenticationSFTP = exports.uploadSFTP = exports.validateSFTP = void 0;
7
+ const actions_core_1 = require("@segment/actions-core");
8
+ const ssh2_sftp_client_1 = __importDefault(require("ssh2-sftp-client"));
9
+ exports.Client = ssh2_sftp_client_1.default;
10
+ const path_1 = __importDefault(require("path"));
11
+ const LIVERAMP_SFTP_SERVER = 'files.liveramp.com';
12
+ const LIVERAMP_SFTP_PORT = 22;
13
+ function validateSFTP(settings) {
14
+ if (!settings.sftp_username) {
15
+ throw new actions_core_1.InvalidAuthenticationError('Selected SFTP upload mode, but missing credentials (Username)');
16
+ }
17
+ if (!settings.sftp_password) {
18
+ throw new actions_core_1.InvalidAuthenticationError('Selected SFTP upload mode, but missing credentials (Password)');
19
+ }
20
+ if (!settings.sftp_folder_path) {
21
+ throw new actions_core_1.InvalidAuthenticationError('Selected SFTP upload mode, but missing SFTP folder path.');
22
+ }
23
+ }
24
+ exports.validateSFTP = validateSFTP;
25
+ async function uploadSFTP(sftp, settings, filename, fileContent) {
26
+ return doSFTP(sftp, settings, async (sftp) => {
27
+ const targetPath = path_1.default.join(settings.sftp_folder_path, filename);
28
+ return sftp.put(fileContent, targetPath);
29
+ });
30
+ }
31
+ exports.uploadSFTP = uploadSFTP;
32
+ async function doSFTP(sftp, settings, action) {
33
+ await sftp.connect({
34
+ host: LIVERAMP_SFTP_SERVER,
35
+ port: LIVERAMP_SFTP_PORT,
36
+ username: settings.sftp_username,
37
+ password: settings.sftp_password
38
+ });
39
+ await action(sftp);
40
+ await sftp.end();
41
+ }
42
+ async function testAuthenticationSFTP(sftp, settings) {
43
+ return doSFTP(sftp, settings, async (sftp) => {
44
+ return sftp.list(settings.sftp_folder_path);
45
+ });
46
+ }
47
+ exports.testAuthenticationSFTP = testAuthenticationSFTP;
48
+ //# sourceMappingURL=sftp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/sftp.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAkE;AAClE,wEAAqC;AA8CsB,iBA9CpD,0BAAM,CA8CoD;AA7CjE,gDAAuB;AAGvB,MAAM,oBAAoB,GAAG,oBAAoB,CAAA;AACjD,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAE7B,SAAS,YAAY,CAAC,QAAkB;IACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC3B,MAAM,IAAI,yCAA0B,CAAC,+DAA+D,CAAC,CAAA;KACtG;IAED,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC3B,MAAM,IAAI,yCAA0B,CAAC,+DAA+D,CAAC,CAAA;KACtG;IAED,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;QAC9B,MAAM,IAAI,yCAA0B,CAAC,0DAA0D,CAAC,CAAA;KACjG;AACH,CAAC;AA2BQ,oCAAY;AAzBrB,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,QAAkB,EAAE,QAAgB,EAAE,WAAmB;IAC/F,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAA0B,EAAE,QAAQ,CAAC,CAAA;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AAoBsB,gCAAU;AAlBjC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,QAAkB,EAAE,MAA4C;IAClG,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,QAAQ,CAAC,aAAa;QAChC,QAAQ,EAAE,QAAQ,CAAC,aAAa;KACjC,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;IAClB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAY,EAAE,QAAkB;IACpE,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAA0B,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC;AAEkC,wDAAsB"}
@@ -0,0 +1,12 @@
1
+ export interface Settings {
2
+ upload_mode: string;
3
+ s3_aws_access_key?: string;
4
+ s3_aws_secret_key?: string;
5
+ s3_aws_bucket_name?: string;
6
+ s3_aws_region?: string;
7
+ sftp_username?: string;
8
+ sftp_password?: string;
9
+ sftp_folder_path?: string;
10
+ __segment_internal_engage_force_full_sync: boolean;
11
+ __segment_internal_engage_batch_sync: boolean;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../src/destinations/liveramp-audiences/generated-types.ts"],"names":[],"mappings":""}