@segment/action-destinations 3.259.0-staging-d5239c19d → 3.259.0-staging-e791a9657
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/dist/destinations/braze/updateUserProfile/__snapshots__/snapshot.test.d.ts +1 -0
- package/dist/destinations/braze/updateUserProfile/__snapshots__/snapshot.test.js +184 -0
- package/dist/destinations/braze/updateUserProfile/__snapshots__/snapshot.test.js.map +1 -0
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.d.ts +5 -2
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js +98 -18
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js.map +1 -1
- package/dist/destinations/engage/utils/track.d.ts +9 -9
- package/dist/destinations/klaviyo/removeProfileToList/generated-types.d.ts +4 -0
- package/dist/destinations/klaviyo/removeProfileToList/generated-types.js.map +1 -0
- package/dist/destinations/klaviyo/removeProfileToList/index.d.ts +5 -0
- package/dist/destinations/klaviyo/removeProfileToList/index.js +43 -0
- package/dist/destinations/klaviyo/removeProfileToList/index.js.map +1 -0
- package/dist/destinations/movable-ink/categoryView/generated-types.d.ts +22 -0
- package/dist/destinations/movable-ink/categoryView/generated-types.js +3 -0
- package/dist/destinations/movable-ink/categoryView/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/categoryView/index.js +43 -0
- package/dist/destinations/movable-ink/categoryView/index.js.map +1 -0
- package/dist/destinations/movable-ink/conversion/generated-types.d.ts +20 -0
- package/dist/destinations/movable-ink/conversion/generated-types.js +3 -0
- package/dist/destinations/movable-ink/conversion/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/conversion/index.d.ts +5 -0
- package/dist/destinations/movable-ink/conversion/index.js +45 -0
- package/dist/destinations/movable-ink/conversion/index.js.map +1 -0
- package/dist/destinations/movable-ink/fields.d.ts +21 -0
- package/dist/destinations/movable-ink/fields.js +236 -0
- package/dist/destinations/movable-ink/fields.js.map +1 -0
- package/dist/destinations/movable-ink/identify/generated-types.d.ts +7 -0
- package/dist/destinations/movable-ink/identify/generated-types.js +3 -0
- package/dist/destinations/movable-ink/identify/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/identify/index.d.ts +5 -0
- package/dist/destinations/movable-ink/identify/index.js +32 -0
- package/dist/destinations/movable-ink/identify/index.js.map +1 -0
- package/dist/destinations/movable-ink/productAdded/generated-types.d.ts +22 -0
- package/dist/destinations/movable-ink/productAdded/generated-types.js +3 -0
- package/dist/destinations/movable-ink/productAdded/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/productAdded/index.d.ts +5 -0
- package/dist/destinations/movable-ink/productAdded/index.js +43 -0
- package/dist/destinations/movable-ink/productAdded/index.js.map +1 -0
- package/dist/destinations/movable-ink/productViewed/generated-types.d.ts +21 -0
- package/dist/destinations/movable-ink/productViewed/generated-types.js +3 -0
- package/dist/destinations/movable-ink/productViewed/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/productViewed/index.d.ts +5 -0
- package/dist/destinations/movable-ink/productViewed/index.js +43 -0
- package/dist/destinations/movable-ink/productViewed/index.js.map +1 -0
- package/dist/destinations/movable-ink/search/generated-types.d.ts +12 -0
- package/dist/destinations/movable-ink/search/generated-types.js +3 -0
- package/dist/destinations/movable-ink/search/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/search/index.d.ts +5 -0
- package/dist/destinations/movable-ink/search/index.js +43 -0
- package/dist/destinations/movable-ink/search/index.js.map +1 -0
- package/dist/destinations/movable-ink/sendCustomEvent/generated-types.d.ts +25 -0
- package/dist/destinations/movable-ink/sendCustomEvent/generated-types.js +3 -0
- package/dist/destinations/movable-ink/sendCustomEvent/generated-types.js.map +1 -0
- package/dist/destinations/movable-ink/sendCustomEvent/index.d.ts +5 -0
- package/dist/destinations/movable-ink/sendCustomEvent/index.js +48 -0
- package/dist/destinations/movable-ink/sendCustomEvent/index.js.map +1 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +14 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +3 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +1 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +5 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.js +113 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +1 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +20 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +3 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +1 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +5 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +174 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +1 -0
- package/dist/destinations/responsys/rsp-operations.d.ts +14 -0
- package/dist/destinations/responsys/rsp-operations.js +33 -0
- package/dist/destinations/responsys/rsp-operations.js.map +1 -0
- package/dist/destinations/responsys/rsp-properties.d.ts +4 -0
- package/dist/destinations/responsys/rsp-properties.js +27 -0
- package/dist/destinations/responsys/rsp-properties.js.map +1 -0
- package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.d.ts +1 -0
- package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js +381 -0
- package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js.map +1 -0
- package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.d.ts +1 -0
- package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js +581 -0
- package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js.map +1 -0
- package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.d.ts +4 -0
- package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js +97 -0
- package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +3 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +43 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +1 -0
- package/dist/destinations/trackey/group.types.d.ts +11 -0
- package/dist/destinations/trackey/group.types.js +3 -0
- package/dist/destinations/trackey/group.types.js.map +1 -0
- package/dist/destinations/trackey/identify.types.d.ts +11 -0
- package/dist/destinations/trackey/identify.types.js +3 -0
- package/dist/destinations/trackey/identify.types.js.map +1 -0
- package/dist/destinations/trackey/track.types.d.ts +12 -0
- package/dist/destinations/trackey/track.types.js +3 -0
- package/dist/destinations/trackey/track.types.js.map +1 -0
- package/package.json +1 -1
- package/dist/destinations/liveramp-audiences/audienceEntered/generated-types.d.ts +0 -13
- package/dist/destinations/liveramp-audiences/audienceEntered/generated-types.js.map +0 -1
- package/dist/destinations/liveramp-audiences/audienceEntered/index.js +0 -95
- package/dist/destinations/liveramp-audiences/audienceEntered/index.js.map +0 -1
- package/dist/destinations/liveramp-audiences/audienceEntered/s3.d.ts +0 -6
- package/dist/destinations/liveramp-audiences/audienceEntered/s3.js +0 -37
- package/dist/destinations/liveramp-audiences/audienceEntered/s3.js.map +0 -1
- package/dist/destinations/liveramp-audiences/audienceEntered/sftp.d.ts +0 -7
- package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js +0 -52
- package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js.map +0 -1
- /package/dist/destinations/{liveramp-audiences/audienceEntered → klaviyo/removeProfileToList}/generated-types.js +0 -0
- /package/dist/destinations/{liveramp-audiences/audienceEntered → movable-ink/categoryView}/index.d.ts +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.types.js","sourceRoot":"","sources":["../../../src/destinations/trackey/group.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identify.types.js","sourceRoot":"","sources":["../../../src/destinations/trackey/identify.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.types.js","sourceRoot":"","sources":["../../../src/destinations/trackey/track.types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@segment/action-destinations",
|
|
3
3
|
"description": "Destination Actions engine and definitions.",
|
|
4
|
-
"version": "3.259.0-staging-
|
|
4
|
+
"version": "3.259.0-staging-e791a9657",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/segmentio/action-destinations",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface Payload {
|
|
2
|
-
audience_key: string;
|
|
3
|
-
identifier_data?: {
|
|
4
|
-
[k: string]: unknown;
|
|
5
|
-
};
|
|
6
|
-
unhashed_identifier_data?: {
|
|
7
|
-
[k: string]: unknown;
|
|
8
|
-
};
|
|
9
|
-
delimiter: string;
|
|
10
|
-
filename: string;
|
|
11
|
-
enable_batching: boolean;
|
|
12
|
-
batch_size?: number;
|
|
13
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -1,95 +0,0 @@
|
|
|
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 to be written to the file.`,
|
|
22
|
-
type: 'object',
|
|
23
|
-
required: false,
|
|
24
|
-
defaultObjectUI: 'keyvalue:only'
|
|
25
|
-
},
|
|
26
|
-
unhashed_identifier_data: {
|
|
27
|
-
label: 'Hashable Identifier Data',
|
|
28
|
-
description: `Additional data pertaining to the user to be hashed before written to the file`,
|
|
29
|
-
type: 'object',
|
|
30
|
-
required: false,
|
|
31
|
-
defaultObjectUI: 'keyvalue:only'
|
|
32
|
-
},
|
|
33
|
-
delimiter: {
|
|
34
|
-
label: 'Delimeter',
|
|
35
|
-
description: `Character used to separate tokens in the resulting file.`,
|
|
36
|
-
type: 'string',
|
|
37
|
-
required: true,
|
|
38
|
-
default: ','
|
|
39
|
-
},
|
|
40
|
-
filename: {
|
|
41
|
-
label: 'Filename',
|
|
42
|
-
description: `Name of the CSV file to upload for LiveRamp ingestion.`,
|
|
43
|
-
type: 'string',
|
|
44
|
-
required: true,
|
|
45
|
-
default: { '@template': '{{properties.audience_key}}_PII_{{timestamp}}.csv' }
|
|
46
|
-
},
|
|
47
|
-
enable_batching: {
|
|
48
|
-
type: 'boolean',
|
|
49
|
-
label: 'Batch data',
|
|
50
|
-
description: 'Receive events in a batch payload. This is required for LiveRamp audiences ingestion.',
|
|
51
|
-
required: true,
|
|
52
|
-
default: true
|
|
53
|
-
},
|
|
54
|
-
batch_size: {
|
|
55
|
-
label: 'Batch Size',
|
|
56
|
-
description: 'Maximum number of events to include in each batch. Actual batch sizes may be lower.',
|
|
57
|
-
type: 'number',
|
|
58
|
-
required: false,
|
|
59
|
-
default: 1000000
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
perform: async (request, { settings, payload }) => {
|
|
63
|
-
return processData(request, settings, [payload]);
|
|
64
|
-
},
|
|
65
|
-
performBatch: (request, { settings, payload }) => {
|
|
66
|
-
return processData(request, settings, payload);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
async function processData(request, settings, payloads) {
|
|
70
|
-
const LIVERAMP_MIN_RECORD_COUNT = 25;
|
|
71
|
-
if (payloads.length < LIVERAMP_MIN_RECORD_COUNT) {
|
|
72
|
-
throw new actions_core_1.PayloadValidationError(`received payload count below LiveRamp's ingestion limits. expected: >=${LIVERAMP_MIN_RECORD_COUNT} actual: ${payloads.length}`);
|
|
73
|
-
}
|
|
74
|
-
switch (settings.upload_mode) {
|
|
75
|
-
case 'S3':
|
|
76
|
-
s3_1.validateS3(settings);
|
|
77
|
-
break;
|
|
78
|
-
case 'SFTP':
|
|
79
|
-
sftp_1.validateSFTP(settings);
|
|
80
|
-
break;
|
|
81
|
-
default:
|
|
82
|
-
throw new actions_core_1.InvalidAuthenticationError(`Unexpected upload mode: ${settings.upload_mode}`);
|
|
83
|
-
}
|
|
84
|
-
const { filename, fileContent } = operations_1.generateFile(payloads);
|
|
85
|
-
switch (settings.upload_mode) {
|
|
86
|
-
case 'S3':
|
|
87
|
-
return s3_1.uploadS3(settings, filename, fileContent, request);
|
|
88
|
-
case 'SFTP': {
|
|
89
|
-
const sftpClient = new sftp_1.Client();
|
|
90
|
-
return sftp_1.uploadSFTP(sftpClient, settings, filename, fileContent);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
exports.default = action;
|
|
95
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
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 };
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
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<unknown>;
|
|
6
|
-
declare function testAuthenticationSFTP(sftp: Client, settings: Settings): Promise<unknown>;
|
|
7
|
-
export { validateSFTP, uploadSFTP, testAuthenticationSFTP, Client };
|
|
@@ -1,52 +0,0 @@
|
|
|
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
|
-
const retVal = await action(sftp);
|
|
40
|
-
await sftp.end();
|
|
41
|
-
return retVal;
|
|
42
|
-
}
|
|
43
|
-
async function testAuthenticationSFTP(sftp, settings) {
|
|
44
|
-
return doSFTP(sftp, settings, async (sftp) => {
|
|
45
|
-
return sftp.exists(settings.sftp_folder_path).then((fileType) => {
|
|
46
|
-
if (!fileType)
|
|
47
|
-
throw new Error(`Could not find path: ${settings.sftp_folder_path}`);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
exports.testAuthenticationSFTP = testAuthenticationSFTP;
|
|
52
|
-
//# sourceMappingURL=sftp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEntered/sftp.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAkE;AAClE,wEAAqC;AAiDsB,iBAjDpD,0BAAM,CAiDoD;AAhDjE,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;AA8BQ,oCAAY;AA5BrB,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;AAuBsB,gCAAU;AArBjC,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,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;IAChB,OAAO,MAAM,CAAA;AACf,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,MAAM,CAAC,QAAQ,CAAC,gBAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxE,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAEkC,wDAAsB"}
|
|
File without changes
|
|
File without changes
|