@segment/action-destinations 3.259.0-staging.0 → 3.259.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 (74) hide show
  1. package/dist/destinations/blackbaud-raisers-edge-nxt/utils/index.d.ts +1 -1
  2. package/dist/destinations/braze/index.js +1 -0
  3. package/dist/destinations/braze/index.js.map +1 -1
  4. package/dist/destinations/display-video-360/index.js +4 -2
  5. package/dist/destinations/display-video-360/index.js.map +1 -1
  6. package/dist/destinations/engage/utils/track.d.ts +17 -17
  7. package/dist/destinations/google-enhanced-conversions/functions.d.ts +0 -7
  8. package/dist/destinations/google-enhanced-conversions/functions.js +3 -7
  9. package/dist/destinations/google-enhanced-conversions/functions.js.map +1 -1
  10. package/dist/destinations/index.js.map +1 -1
  11. package/dist/destinations/klaviyo/functions.d.ts +4 -7
  12. package/dist/destinations/klaviyo/functions.js +1 -80
  13. package/dist/destinations/klaviyo/functions.js.map +1 -1
  14. package/dist/destinations/klaviyo/types.d.ts +0 -97
  15. package/dist/destinations/klaviyo/upsertProfile/index.js +19 -29
  16. package/dist/destinations/klaviyo/upsertProfile/index.js.map +1 -1
  17. package/dist/destinations/segment/segment-properties.d.ts +0 -1
  18. package/dist/destinations/segment/segment-properties.js +1 -8
  19. package/dist/destinations/segment/segment-properties.js.map +1 -1
  20. package/dist/destinations/segment/sendGroup/generated-types.d.ts +0 -1
  21. package/dist/destinations/segment/sendGroup/index.js +0 -2
  22. package/dist/destinations/segment/sendGroup/index.js.map +1 -1
  23. package/dist/destinations/segment/sendIdentify/generated-types.d.ts +0 -1
  24. package/dist/destinations/segment/sendIdentify/index.js +0 -2
  25. package/dist/destinations/segment/sendIdentify/index.js.map +1 -1
  26. package/dist/destinations/segment/sendPage/generated-types.d.ts +0 -1
  27. package/dist/destinations/segment/sendPage/index.js +0 -2
  28. package/dist/destinations/segment/sendPage/index.js.map +1 -1
  29. package/dist/destinations/segment/sendScreen/generated-types.d.ts +0 -1
  30. package/dist/destinations/segment/sendScreen/index.js +0 -2
  31. package/dist/destinations/segment/sendScreen/index.js.map +1 -1
  32. package/dist/destinations/segment/sendTrack/generated-types.d.ts +0 -1
  33. package/dist/destinations/segment/sendTrack/index.js +0 -2
  34. package/dist/destinations/segment/sendTrack/index.js.map +1 -1
  35. package/package.json +4 -4
  36. package/dist/destinations/engage/sendgrid/Profile.d.ts +0 -6
  37. package/dist/destinations/engage/sendgrid/Profile.js +0 -3
  38. package/dist/destinations/engage/sendgrid/Profile.js.map +0 -1
  39. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.d.ts +0 -21
  40. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js +0 -174
  41. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js.map +0 -1
  42. package/dist/destinations/mixpanel/utils.d.ts +0 -13
  43. package/dist/destinations/mixpanel/utils.js +0 -117
  44. package/dist/destinations/mixpanel/utils.js.map +0 -1
  45. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +0 -14
  46. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +0 -3
  47. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +0 -1
  48. package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +0 -5
  49. package/dist/destinations/responsys/asyncMergePetRecords/index.js +0 -113
  50. package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +0 -1
  51. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +0 -20
  52. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +0 -3
  53. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +0 -1
  54. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +0 -5
  55. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +0 -174
  56. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +0 -1
  57. package/dist/destinations/responsys/rsp-operations.d.ts +0 -14
  58. package/dist/destinations/responsys/rsp-operations.js +0 -33
  59. package/dist/destinations/responsys/rsp-operations.js.map +0 -1
  60. package/dist/destinations/responsys/rsp-properties.d.ts +0 -4
  61. package/dist/destinations/responsys/rsp-properties.js +0 -27
  62. package/dist/destinations/responsys/rsp-properties.js.map +0 -1
  63. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.d.ts +0 -1
  64. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js +0 -381
  65. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js.map +0 -1
  66. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.d.ts +0 -1
  67. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js +0 -581
  68. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js.map +0 -1
  69. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.d.ts +0 -4
  70. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js +0 -97
  71. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js.map +0 -1
  72. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +0 -3
  73. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +0 -43
  74. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +0 -1
@@ -1,97 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.performSnapCAPIv2 = void 0;
4
- const actions_core_1 = require("@segment/actions-core");
5
- const snap_capi_properties_1 = require("../snap-capi-properties");
6
- const utils_1 = require("./utils");
7
- const conversionType = (oldSettings, event_conversion_type) => {
8
- const settings = { ...oldSettings };
9
- if (event_conversion_type === 'MOBILE_APP') {
10
- if (!settings?.snap_app_id || !settings?.app_id) {
11
- throw new actions_core_1.IntegrationError('If event conversion type is "MOBILE_APP" then Snap App ID and App ID must be defined', 'Misconfigured required field', 400);
12
- }
13
- delete settings?.pixel_id;
14
- }
15
- else {
16
- if (!settings?.pixel_id) {
17
- throw new actions_core_1.IntegrationError(`If event conversion type is "${event_conversion_type}" then Pixel ID must be defined`, 'Misconfigured required field', 400);
18
- }
19
- delete settings?.snap_app_id;
20
- delete settings?.app_id;
21
- }
22
- return settings;
23
- };
24
- const formatPayload = (oldPayload) => {
25
- const payload = { ...oldPayload };
26
- if (payload.email) {
27
- payload.email = payload.email.replace(/\s/g, '').toLowerCase();
28
- }
29
- if (payload.phone_number) {
30
- payload.phone_number = payload.phone_number.replace(/\D|^0+/g, '');
31
- }
32
- if (payload.mobile_ad_id) {
33
- payload.mobile_ad_id = payload.mobile_ad_id.toLowerCase();
34
- }
35
- let item_ids = undefined;
36
- let item_category = undefined;
37
- let brands = undefined;
38
- const p = payload?.products;
39
- if (p && Array.isArray(p) && p.length > 0) {
40
- item_ids = utils_1.transformProperty('item_id', p);
41
- item_category = utils_1.transformProperty('item_category', p);
42
- brands = p.map((product) => product.brand ?? '');
43
- }
44
- return {
45
- event_type: payload?.event_type,
46
- event_conversion_type: payload?.event_conversion_type,
47
- event_tag: payload?.event_tag,
48
- timestamp: Date.parse(payload?.timestamp),
49
- hashed_email: utils_1.isHashedEmail(String(payload?.email)) ? payload?.email : utils_1.hash(payload?.email),
50
- hashed_mobile_ad_id: utils_1.hash(payload?.mobile_ad_id),
51
- uuid_c1: payload?.uuid_c1,
52
- hashed_idfv: utils_1.hash(payload?.idfv),
53
- hashed_phone_number: utils_1.hash(payload?.phone_number),
54
- user_agent: payload?.user_agent,
55
- hashed_ip_address: utils_1.hash(payload?.ip_address),
56
- item_category: item_category ?? payload?.item_category,
57
- brands: brands ?? payload?.brands,
58
- item_ids: item_ids ?? payload?.item_ids,
59
- description: payload?.description,
60
- number_items: payload?.number_items,
61
- price: payload?.price,
62
- currency: payload?.currency,
63
- transaction_id: payload?.transaction_id,
64
- level: payload?.level,
65
- client_dedup_id: payload?.client_dedup_id,
66
- search_string: payload?.search_string,
67
- page_url: payload?.page_url,
68
- sign_up_method: payload?.sign_up_method,
69
- device_model: payload?.device_model,
70
- os_version: payload?.os_version,
71
- click_id: payload?.click_id
72
- };
73
- };
74
- const CONVERSION_EVENT_URL = 'https://tr.snapchat.com/v2/conversion';
75
- const performSnapCAPIv2 = (request, data) => {
76
- if (data.payload.currency && !snap_capi_properties_1.CURRENCY_ISO_4217_CODES.has(data.payload.currency.toUpperCase())) {
77
- throw new actions_core_1.IntegrationError(`${data.payload.currency} is not a valid currency code.`, 'Misconfigured required field', 400);
78
- }
79
- if (!data.payload.email &&
80
- !data.payload.phone_number &&
81
- !data.payload.mobile_ad_id &&
82
- (!data.payload.ip_address || !data.payload.user_agent)) {
83
- throw new actions_core_1.IntegrationError(`Payload must contain values for Email or Phone Number or Mobile Ad Identifier or both IP Address and User Agent fields`, 'Misconfigured required field', 400);
84
- }
85
- const payload = formatPayload(data.payload);
86
- const settings = conversionType(data.settings, data.payload.event_conversion_type);
87
- return request(CONVERSION_EVENT_URL, {
88
- method: 'post',
89
- json: {
90
- integration: 'segment',
91
- ...payload,
92
- ...settings
93
- }
94
- });
95
- };
96
- exports.performSnapCAPIv2 = performSnapCAPIv2;
97
- //# sourceMappingURL=snap-capi-v2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snap-capi-v2.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare const formatEmails: (email_addresses: string[] | undefined) => string[];
2
- export declare function formatUserIds(userIds: string[] | undefined): string[];
3
- export declare const formatPhones: (phone_numbers: string[] | undefined) => string[];
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatPhones = exports.formatUserIds = exports.formatEmails = void 0;
4
- const crypto_1 = require("crypto");
5
- const formatEmails = (email_addresses) => {
6
- const result = [];
7
- if (email_addresses) {
8
- email_addresses.forEach((email) => {
9
- result.push(hashAndEncode(email.toLowerCase()));
10
- });
11
- }
12
- return result;
13
- };
14
- exports.formatEmails = formatEmails;
15
- function formatUserIds(userIds) {
16
- const result = [];
17
- if (userIds) {
18
- userIds.forEach((userId) => {
19
- result.push(hashAndEncode(userId.toLowerCase()));
20
- });
21
- }
22
- return result;
23
- }
24
- exports.formatUserIds = formatUserIds;
25
- const formatPhones = (phone_numbers) => {
26
- const result = [];
27
- if (!phone_numbers)
28
- return result;
29
- phone_numbers.forEach((phone) => {
30
- const validatedPhone = phone.match(/[0-9]{0,14}/g);
31
- if (validatedPhone === null) {
32
- throw new Error(`${phone} is not a valid E.164 phone number.`);
33
- }
34
- const formattedPhone = `+${phone.replace(/[^0-9]/g, '')}`;
35
- result.push(hashAndEncode(formattedPhone.substring(0, 15)));
36
- });
37
- return result;
38
- };
39
- exports.formatPhones = formatPhones;
40
- function hashAndEncode(property) {
41
- return crypto_1.createHash('sha256').update(property).digest('hex');
42
- }
43
- //# sourceMappingURL=formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAK5B,MAAM,YAAY,GAAG,CAAC,eAAqC,EAAY,EAAE;IAC9E,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,eAAe,EAAE;QACnB,eAAe,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;KACH;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AARY,QAAA,YAAY,gBAQxB;AAOD,SAAgB,aAAa,CAAC,OAA6B;IACzD,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;KACH;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AARD,sCAQC;AAOM,MAAM,YAAY,GAAG,CAAC,aAAmC,EAAY,EAAE;IAC5E,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,CAAC,aAAa;QAAE,OAAO,MAAM,CAAA;IAEjC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;QACtC,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAClD,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qCAAqC,CAAC,CAAA;SAC/D;QAED,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAA;QAEzD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAhBY,QAAA,YAAY,gBAgBxB;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO,mBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC"}