@segment/action-destinations 3.196.0 → 3.198.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.
- package/dist/destinations/linkedin-audiences/api/index.js +2 -2
- package/dist/destinations/linkedin-audiences/api/index.js.map +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/generated-types.d.ts +1 -0
- package/dist/destinations/linkedin-audiences/updateAudience/index.js +24 -3
- package/dist/destinations/linkedin-audiences/updateAudience/index.js.map +1 -1
- package/dist/destinations/liveramp-audiences/audienceEnteredS3/generated-types.d.ts +17 -0
- package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredS3}/generated-types.js.map +1 -1
- package/dist/destinations/liveramp-audiences/audienceEnteredS3/index.js +98 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredS3/index.js.map +1 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredS3/s3.d.ts +6 -0
- package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredS3}/s3.js +7 -7
- package/dist/destinations/liveramp-audiences/audienceEnteredS3/s3.js.map +1 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSFTP.types.d.ts +16 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSFTP.types.js +3 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSFTP.types.js.map +1 -0
- package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredSftp}/generated-types.d.ts +3 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSftp/generated-types.js +3 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSftp/generated-types.js.map +1 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSftp/index.d.ts +5 -0
- package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredSftp}/index.js +28 -27
- package/dist/destinations/liveramp-audiences/audienceEnteredSftp/index.js.map +1 -0
- package/dist/destinations/liveramp-audiences/audienceEnteredSftp/sftp.d.ts +7 -0
- package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredSftp}/sftp.js +14 -14
- package/dist/destinations/liveramp-audiences/audienceEnteredSftp/sftp.js.map +1 -0
- package/dist/destinations/liveramp-audiences/generated-types.d.ts +0 -8
- package/dist/destinations/liveramp-audiences/index.js +4 -56
- package/dist/destinations/liveramp-audiences/index.js.map +1 -1
- package/dist/destinations/liveramp-audiences/operations.d.ts +1 -1
- package/dist/destinations/pinterest-conversions/pinterest-capi-custom-data.js +7 -2
- package/dist/destinations/pinterest-conversions/pinterest-capi-custom-data.js.map +1 -1
- package/dist/destinations/pinterest-conversions/reportConversionEvent/generated-types.d.ts +1 -0
- package/dist/destinations/the-trade-desk-crm/awsClient.d.ts +16 -0
- package/dist/destinations/the-trade-desk-crm/awsClient.js +74 -0
- package/dist/destinations/the-trade-desk-crm/awsClient.js.map +1 -0
- package/dist/destinations/the-trade-desk-crm/functions.d.ts +9 -1
- package/dist/destinations/the-trade-desk-crm/functions.js +51 -34
- package/dist/destinations/the-trade-desk-crm/functions.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/properties.d.ts +1 -0
- package/dist/destinations/the-trade-desk-crm/properties.js +18 -1
- package/dist/destinations/the-trade-desk-crm/properties.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/syncAudience/generated-types.d.ts +1 -0
- package/dist/destinations/the-trade-desk-crm/syncAudience/index.js +15 -4
- package/dist/destinations/the-trade-desk-crm/syncAudience/index.js.map +1 -1
- package/dist/lib/AWS/sts.d.ts +7 -0
- package/dist/lib/AWS/sts.js +57 -0
- package/dist/lib/AWS/sts.js.map +1 -0
- package/package.json +2 -2
- 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.map +0 -1
- package/dist/destinations/liveramp-audiences/audienceEntered/sftp.d.ts +0 -7
- package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js.map +0 -1
- /package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredS3}/generated-types.js +0 -0
- /package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredS3}/index.d.ts +0 -0
|
@@ -22,7 +22,7 @@ class LinkedInAudiences {
|
|
|
22
22
|
searchParams: {
|
|
23
23
|
q: 'account',
|
|
24
24
|
account: `urn:li:sponsoredAccount:${settings.ad_account_id}`,
|
|
25
|
-
sourceSegmentId: payload.
|
|
25
|
+
sourceSegmentId: payload.personas_audience_key || '',
|
|
26
26
|
sourcePlatform: constants_1.LINKEDIN_SOURCE_PLATFORM
|
|
27
27
|
}
|
|
28
28
|
});
|
|
@@ -33,7 +33,7 @@ class LinkedInAudiences {
|
|
|
33
33
|
json: {
|
|
34
34
|
name: payload.dmp_segment_name,
|
|
35
35
|
sourcePlatform: constants_1.LINKEDIN_SOURCE_PLATFORM,
|
|
36
|
-
sourceSegmentId: payload.
|
|
36
|
+
sourceSegmentId: payload.personas_audience_key,
|
|
37
37
|
account: `urn:li:sponsoredAccount:${settings.ad_account_id}`,
|
|
38
38
|
accessPolicy: 'PRIVATE',
|
|
39
39
|
type: 'USER',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-audiences/api/index.ts"],"names":[],"mappings":";;;AAGA,4CAAiE;AAGjE,MAAa,iBAAiB;IAG5B,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,oBAAQ,KAAK,EAAE;YACpC,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAkB,EAAE,MAAc;QAC9D,OAAO,IAAI,CAAC,OAAO,CACjB,GAAG,oBAAQ,mDAAmD,QAAQ,CAAC,aAAa,uBAAuB,MAAM,EAAE,EACnH;YACE,MAAM,EAAE,KAAK;SACd,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAkB,EAAE,OAAgB;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,oBAAQ,cAAc,EAAE;YAC7C,MAAM,EAAE,KAAK;YACb,YAAY,EAAE;gBACZ,CAAC,EAAE,SAAS;gBACZ,OAAO,EAAE,2BAA2B,QAAQ,CAAC,aAAa,EAAE;gBAC5D,eAAe,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-audiences/api/index.ts"],"names":[],"mappings":";;;AAGA,4CAAiE;AAGjE,MAAa,iBAAiB;IAG5B,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,oBAAQ,KAAK,EAAE;YACpC,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAkB,EAAE,MAAc;QAC9D,OAAO,IAAI,CAAC,OAAO,CACjB,GAAG,oBAAQ,mDAAmD,QAAQ,CAAC,aAAa,uBAAuB,MAAM,EAAE,EACnH;YACE,MAAM,EAAE,KAAK;SACd,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAkB,EAAE,OAAgB;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,oBAAQ,cAAc,EAAE;YAC7C,MAAM,EAAE,KAAK;YACb,YAAY,EAAE;gBACZ,CAAC,EAAE,SAAS;gBACZ,OAAO,EAAE,2BAA2B,QAAQ,CAAC,aAAa,EAAE;gBAC5D,eAAe,EAAE,OAAO,CAAC,qBAAqB,IAAI,EAAE;gBACpD,cAAc,EAAE,oCAAwB;aACzC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAkB,EAAE,OAAgB;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,oBAAQ,cAAc,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO,CAAC,gBAAgB;gBAC9B,cAAc,EAAE,oCAAwB;gBACxC,eAAe,EAAE,OAAO,CAAC,qBAAqB;gBAC9C,OAAO,EAAE,2BAA2B,QAAQ,CAAC,aAAa,EAAE;gBAC5D,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE;oBACZ;wBACE,WAAW,EAAE,UAAU;qBACxB;iBACF;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,YAAoB,EAAE,QAAkC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,oBAAQ,gBAAgB,YAAY,QAAQ,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,iBAAiB,EAAE,cAAc;aAClC;YACD,IAAI,EAAE;gBACJ,QAAQ;aACT;YACD,eAAe,EAAE,KAAK;SACvB,CAAC,CAAA;IACJ,CAAC;CACF;AAjED,8CAiEC"}
|
|
@@ -59,6 +59,17 @@ const action = {
|
|
|
59
59
|
default: {
|
|
60
60
|
'@path': '$.event'
|
|
61
61
|
}
|
|
62
|
+
},
|
|
63
|
+
dmp_user_action: {
|
|
64
|
+
label: 'DMP User Action',
|
|
65
|
+
description: 'A Segment specific key used to define action type.',
|
|
66
|
+
type: 'string',
|
|
67
|
+
choices: [
|
|
68
|
+
{ label: `Auto Detect`, value: 'AUTO' },
|
|
69
|
+
{ label: `Add`, value: 'ADD' },
|
|
70
|
+
{ label: 'Remove', value: 'REMOVE' }
|
|
71
|
+
],
|
|
72
|
+
default: 'AUTO'
|
|
62
73
|
}
|
|
63
74
|
},
|
|
64
75
|
perform: async (request, { settings, payload }) => {
|
|
@@ -83,7 +94,8 @@ async function processPayload(request, settings, payloads) {
|
|
|
83
94
|
return res;
|
|
84
95
|
}
|
|
85
96
|
function validate(settings, payloads) {
|
|
86
|
-
|
|
97
|
+
const isAutoOrUndefined = ['AUTO', undefined].includes(payloads[0]?.dmp_user_action);
|
|
98
|
+
if (isAutoOrUndefined && payloads[0].source_segment_id !== payloads[0].personas_audience_key) {
|
|
87
99
|
throw new actions_core_1.IntegrationError('The value of `source_segment_id` and `personas_audience_key` must match.', 'INVALID_SETTINGS', 400);
|
|
88
100
|
}
|
|
89
101
|
if (!settings.send_google_advertising_id && !settings.send_email) {
|
|
@@ -117,12 +129,21 @@ function extractUsers(settings, payloads) {
|
|
|
117
129
|
return elements;
|
|
118
130
|
}
|
|
119
131
|
function getAction(payload) {
|
|
120
|
-
|
|
132
|
+
const { dmp_user_action = 'AUTO' } = payload;
|
|
133
|
+
if (dmp_user_action === 'ADD') {
|
|
121
134
|
return 'ADD';
|
|
122
135
|
}
|
|
123
|
-
else if (
|
|
136
|
+
else if (dmp_user_action === 'REMOVE') {
|
|
124
137
|
return 'REMOVE';
|
|
125
138
|
}
|
|
139
|
+
else if (dmp_user_action === 'AUTO' || !dmp_user_action) {
|
|
140
|
+
if (payload.event_name === 'Audience Entered') {
|
|
141
|
+
return 'ADD';
|
|
142
|
+
}
|
|
143
|
+
else if (payload.event_name === 'Audience Exited') {
|
|
144
|
+
return 'REMOVE';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
126
147
|
}
|
|
127
148
|
function getUserIds(settings, payload) {
|
|
128
149
|
const users = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-audiences/updateAudience/index.ts"],"names":[],"mappings":";;AACA,wDAAuF;AAGvF,mCAAmC;AACnC,gCAA0C;AAE1C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,oEAAoE;IACjF,mBAAmB,EAAE,yDAAyD;IAC9E,MAAM,EAAE;QACN,gBAAgB,EAAE;YAChB,KAAK,EAAE,0BAA0B;YACjC,WAAW,EACT,oNAAoN;YACtN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,2BAA2B;aACrC;SACF;QACD,eAAe,EAAE;YACf,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,0DAA0D;YACvE,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;SACd;QACD,KAAK,EAAE;YACL,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,+CAA+C;YAC5D,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,wBAAwB;aAClC;SACF;QACD,qBAAqB,EAAE;YACrB,KAAK,EAAE,4BAA4B;YACnC,WAAW,EAAE,uDAAuD;YACpE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,gCAAgC;aAC1C;SACF;QACD,iBAAiB,EAAE;YACjB,KAAK,EAAE,4BAA4B;YACnC,WAAW,EACT,oJAAoJ;YACtJ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,2BAA2B;aACrC;SACF;QACD,qBAAqB,EAAE;YACrB,KAAK,EAAE,6BAA6B;YACpC,WAAW,EACT,iMAAiM;YACnM,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,UAAU,EAAE;YACV,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,wCAAwC;YACrD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,SAAS;aACnB;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAChD,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACrD,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;CACF,CAAA;AAED,KAAK,UAAU,cAAc,CAAC,OAAsB,EAAE,QAAkB,EAAE,QAAmB;IAC3F,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5B,MAAM,iBAAiB,GAAsB,IAAI,uBAAiB,CAAC,OAAO,CAAC,CAAA;IAE3E,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IACpF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAQjD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,OAAM;KACP;IAED,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAMvE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;QACtB,MAAM,IAAI,6BAAc,CAAC,oFAAoF,CAAC,CAAA;KAC/G;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,QAAkB,EAAE,QAAmB;IACvD,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-audiences/updateAudience/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
s3_aws_access_key?: string;
|
|
3
|
+
s3_aws_secret_key?: string;
|
|
4
|
+
s3_aws_bucket_name?: string;
|
|
5
|
+
s3_aws_region?: string;
|
|
6
|
+
audience_key: string;
|
|
7
|
+
identifier_data?: {
|
|
8
|
+
[k: string]: unknown;
|
|
9
|
+
};
|
|
10
|
+
unhashed_identifier_data?: {
|
|
11
|
+
[k: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
delimiter: string;
|
|
14
|
+
filename: string;
|
|
15
|
+
enable_batching: boolean;
|
|
16
|
+
batch_size?: number;
|
|
17
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEnteredS3/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,98 @@
|
|
|
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 operations_1 = require("../operations");
|
|
6
|
+
const action = {
|
|
7
|
+
title: 'Audience Entered (S3)',
|
|
8
|
+
description: 'Uploads audience membership data to a file in S3 for LiveRamp ingestion.',
|
|
9
|
+
defaultSubscription: 'event = "Audience Entered"',
|
|
10
|
+
fields: {
|
|
11
|
+
s3_aws_access_key: {
|
|
12
|
+
label: 'AWS Access Key ID',
|
|
13
|
+
description: 'IAM user credentials with write permissions to the S3 bucket.',
|
|
14
|
+
type: 'string'
|
|
15
|
+
},
|
|
16
|
+
s3_aws_secret_key: {
|
|
17
|
+
label: 'AWS Secret Access Key',
|
|
18
|
+
description: 'IAM user credentials with write permissions to the S3 bucket.',
|
|
19
|
+
type: 'password'
|
|
20
|
+
},
|
|
21
|
+
s3_aws_bucket_name: {
|
|
22
|
+
label: 'AWS Bucket Name',
|
|
23
|
+
description: 'Name of the S3 bucket where the files will be uploaded to.',
|
|
24
|
+
type: 'string'
|
|
25
|
+
},
|
|
26
|
+
s3_aws_region: {
|
|
27
|
+
label: 'AWS Region (S3 only)',
|
|
28
|
+
description: 'Region where the S3 bucket is hosted.',
|
|
29
|
+
type: 'string'
|
|
30
|
+
},
|
|
31
|
+
audience_key: {
|
|
32
|
+
label: 'Audience Key',
|
|
33
|
+
description: 'Identifies the user within the entered audience.',
|
|
34
|
+
type: 'string',
|
|
35
|
+
required: true,
|
|
36
|
+
default: { '@path': '$.userId' }
|
|
37
|
+
},
|
|
38
|
+
identifier_data: {
|
|
39
|
+
label: 'Identifier Data',
|
|
40
|
+
description: `Additional data pertaining to the user to be written to the file.`,
|
|
41
|
+
type: 'object',
|
|
42
|
+
required: false,
|
|
43
|
+
defaultObjectUI: 'keyvalue:only'
|
|
44
|
+
},
|
|
45
|
+
unhashed_identifier_data: {
|
|
46
|
+
label: 'Hashable Identifier Data',
|
|
47
|
+
description: `Additional data pertaining to the user to be hashed before written to the file`,
|
|
48
|
+
type: 'object',
|
|
49
|
+
required: false,
|
|
50
|
+
defaultObjectUI: 'keyvalue:only'
|
|
51
|
+
},
|
|
52
|
+
delimiter: {
|
|
53
|
+
label: 'Delimeter',
|
|
54
|
+
description: `Character used to separate tokens in the resulting file.`,
|
|
55
|
+
type: 'string',
|
|
56
|
+
required: true,
|
|
57
|
+
default: ','
|
|
58
|
+
},
|
|
59
|
+
filename: {
|
|
60
|
+
label: 'Filename',
|
|
61
|
+
description: `Name of the CSV file to upload for LiveRamp ingestion.`,
|
|
62
|
+
type: 'string',
|
|
63
|
+
required: true,
|
|
64
|
+
default: { '@template': '{{properties.audience_key}}_PII_{{timestamp}}.csv' }
|
|
65
|
+
},
|
|
66
|
+
enable_batching: {
|
|
67
|
+
type: 'boolean',
|
|
68
|
+
label: 'Batch data',
|
|
69
|
+
description: 'Receive events in a batch payload. This is required for LiveRamp audiences ingestion.',
|
|
70
|
+
required: true,
|
|
71
|
+
default: true
|
|
72
|
+
},
|
|
73
|
+
batch_size: {
|
|
74
|
+
label: 'Batch Size',
|
|
75
|
+
description: 'Maximum number of events to include in each batch. Actual batch sizes may be lower.',
|
|
76
|
+
type: 'number',
|
|
77
|
+
required: false,
|
|
78
|
+
default: 170000
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
perform: async (request, { payload }) => {
|
|
82
|
+
return processData(request, [payload]);
|
|
83
|
+
},
|
|
84
|
+
performBatch: (request, { payload }) => {
|
|
85
|
+
return processData(request, payload);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
async function processData(request, payloads) {
|
|
89
|
+
const LIVERAMP_MIN_RECORD_COUNT = 25;
|
|
90
|
+
if (payloads.length < LIVERAMP_MIN_RECORD_COUNT) {
|
|
91
|
+
throw new actions_core_1.PayloadValidationError(`received payload count below LiveRamp's ingestion limits. expected: >=${LIVERAMP_MIN_RECORD_COUNT} actual: ${payloads.length}`);
|
|
92
|
+
}
|
|
93
|
+
s3_1.validateS3(payloads[0]);
|
|
94
|
+
const { filename, fileContent } = operations_1.generateFile(payloads);
|
|
95
|
+
return s3_1.uploadS3(payloads[0], filename, fileContent, request);
|
|
96
|
+
}
|
|
97
|
+
exports.default = action;
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEnteredS3/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ModifiedResponse, RequestOptions } from '@segment/actions-core';
|
|
3
|
+
import { Payload } from './generated-types';
|
|
4
|
+
declare function validateS3(payload: Payload): void;
|
|
5
|
+
declare function uploadS3(payload: Payload, filename: string, fileContent: Buffer, request: <Data = unknown>(url: string, options?: RequestOptions) => Promise<ModifiedResponse<Data>>): Promise<ModifiedResponse<unknown>>;
|
|
6
|
+
export { validateS3, uploadS3 };
|
|
@@ -6,24 +6,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.uploadS3 = exports.validateS3 = void 0;
|
|
7
7
|
const s3_1 = __importDefault(require("../../../lib/AWS/s3"));
|
|
8
8
|
const actions_core_1 = require("@segment/actions-core");
|
|
9
|
-
function validateS3(
|
|
10
|
-
if (!
|
|
9
|
+
function validateS3(payload) {
|
|
10
|
+
if (!payload.s3_aws_access_key) {
|
|
11
11
|
throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS Access Key');
|
|
12
12
|
}
|
|
13
|
-
if (!
|
|
13
|
+
if (!payload.s3_aws_secret_key) {
|
|
14
14
|
throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS Secret Key');
|
|
15
15
|
}
|
|
16
|
-
if (!
|
|
16
|
+
if (!payload.s3_aws_bucket_name) {
|
|
17
17
|
throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS S3 bucket name');
|
|
18
18
|
}
|
|
19
|
-
if (!
|
|
19
|
+
if (!payload.s3_aws_region) {
|
|
20
20
|
throw new actions_core_1.InvalidAuthenticationError('Selected S3 upload mode, but missing AWS Region');
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
exports.validateS3 = validateS3;
|
|
24
|
-
async function uploadS3(
|
|
24
|
+
async function uploadS3(payload, filename, fileContent, request) {
|
|
25
25
|
const method = 'PUT';
|
|
26
|
-
const opts = await s3_1.default(
|
|
26
|
+
const opts = await s3_1.default(payload.s3_aws_bucket_name, payload.s3_aws_region, filename, method, fileContent, payload.s3_aws_access_key, payload.s3_aws_secret_key);
|
|
27
27
|
if (!opts.headers || !opts.method || !opts.host || !opts.path) {
|
|
28
28
|
throw new actions_core_1.InvalidAuthenticationError('Unable to generate signature header for AWS S3 request.');
|
|
29
29
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEnteredS3/s3.ts"],"names":[],"mappings":";;;;;;AAAA,6DAA0D;AAC1D,wDAAoG;AAGpG,SAAS,UAAU,CAAC,OAAgB;IAClC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;QAC9B,MAAM,IAAI,yCAA0B,CAAC,qDAAqD,CAAC,CAAA;KAC5F;IAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;QAC9B,MAAM,IAAI,yCAA0B,CAAC,qDAAqD,CAAC,CAAA;KAC5F;IAED,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;QAC/B,MAAM,IAAI,yCAA0B,CAAC,yDAAyD,CAAC,CAAA;KAChG;IAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,yCAA0B,CAAC,iDAAiD,CAAC,CAAA;KACxF;AACH,CAAC;AA6BQ,gCAAU;AA3BnB,KAAK,UAAU,QAAQ,CACrB,OAAgB,EAChB,QAAgB,EAChB,WAAmB,EACnB,OAAmG;IAEnG,MAAM,MAAM,GAAG,KAAK,CAAA;IACpB,MAAM,IAAI,GAAG,MAAM,YAAwB,CACzC,OAAO,CAAC,kBAA4B,EACpC,OAAO,CAAC,aAAuB,EAC/B,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,CAAC,iBAA2B,EACnC,OAAO,CAAC,iBAA2B,CACpC,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,16 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
sftp_username?: string;
|
|
3
|
+
sftp_password?: string;
|
|
4
|
+
sftp_folder_path?: string;
|
|
5
|
+
audience_key: string;
|
|
6
|
+
identifier_data?: {
|
|
7
|
+
[k: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
unhashed_identifier_data?: {
|
|
10
|
+
[k: string]: unknown;
|
|
11
|
+
};
|
|
12
|
+
delimiter: string;
|
|
13
|
+
filename: string;
|
|
14
|
+
enable_batching: boolean;
|
|
15
|
+
batch_size?: number;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audienceEnteredSFTP.types.js","sourceRoot":"","sources":["../../../src/destinations/liveramp-audiences/audienceEnteredSFTP.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEnteredSftp/generated-types.ts"],"names":[],"mappings":""}
|
package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredSftp}/index.js
RENAMED
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const actions_core_1 = require("@segment/actions-core");
|
|
4
|
-
const s3_1 = require("./s3");
|
|
5
4
|
const sftp_1 = require("./sftp");
|
|
6
5
|
const operations_1 = require("../operations");
|
|
7
6
|
const action = {
|
|
8
|
-
title: 'Audience Entered',
|
|
9
|
-
description: 'Uploads audience membership data to a file for LiveRamp ingestion.',
|
|
7
|
+
title: 'Audience Entered (SFTP)',
|
|
8
|
+
description: 'Uploads audience membership data to a file through SFTP for LiveRamp ingestion.',
|
|
10
9
|
defaultSubscription: 'event = "Audience Entered"',
|
|
11
10
|
fields: {
|
|
11
|
+
sftp_username: {
|
|
12
|
+
label: 'Username',
|
|
13
|
+
description: 'User credentials for establishing an SFTP connection with LiveRamp.',
|
|
14
|
+
type: 'string'
|
|
15
|
+
},
|
|
16
|
+
sftp_password: {
|
|
17
|
+
label: 'Password',
|
|
18
|
+
description: 'User credentials for establishing an SFTP connection with LiveRamp.',
|
|
19
|
+
type: 'password'
|
|
20
|
+
},
|
|
21
|
+
sftp_folder_path: {
|
|
22
|
+
label: 'Folder Path',
|
|
23
|
+
description: 'Path within the LiveRamp SFTP server to upload the files to. This path must exist and all subfolders must be pre-created.',
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: '/uploads/audience_name/',
|
|
26
|
+
format: 'uri-reference'
|
|
27
|
+
},
|
|
12
28
|
audience_key: {
|
|
13
29
|
label: 'Audience Key',
|
|
14
30
|
description: 'Identifies the user within the entered audience.',
|
|
@@ -56,40 +72,25 @@ const action = {
|
|
|
56
72
|
description: 'Maximum number of events to include in each batch. Actual batch sizes may be lower.',
|
|
57
73
|
type: 'number',
|
|
58
74
|
required: false,
|
|
59
|
-
default:
|
|
75
|
+
default: 100000
|
|
60
76
|
}
|
|
61
77
|
},
|
|
62
|
-
perform: async (
|
|
63
|
-
return processData(
|
|
78
|
+
perform: async (_, { payload }) => {
|
|
79
|
+
return processData([payload]);
|
|
64
80
|
},
|
|
65
|
-
performBatch: (
|
|
66
|
-
return processData(
|
|
81
|
+
performBatch: (_, { payload }) => {
|
|
82
|
+
return processData(payload);
|
|
67
83
|
}
|
|
68
84
|
};
|
|
69
|
-
async function processData(
|
|
85
|
+
async function processData(payloads) {
|
|
70
86
|
const LIVERAMP_MIN_RECORD_COUNT = 25;
|
|
71
87
|
if (payloads.length < LIVERAMP_MIN_RECORD_COUNT) {
|
|
72
88
|
throw new actions_core_1.PayloadValidationError(`received payload count below LiveRamp's ingestion limits. expected: >=${LIVERAMP_MIN_RECORD_COUNT} actual: ${payloads.length}`);
|
|
73
89
|
}
|
|
74
|
-
|
|
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
|
-
}
|
|
90
|
+
sftp_1.validateSFTP(payloads[0]);
|
|
84
91
|
const { filename, fileContent } = operations_1.generateFile(payloads);
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
}
|
|
92
|
+
const sftpClient = new sftp_1.Client();
|
|
93
|
+
return sftp_1.uploadSFTP(sftpClient, payloads[0], filename, fileContent);
|
|
93
94
|
}
|
|
94
95
|
exports.default = action;
|
|
95
96
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEnteredSftp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import Client from 'ssh2-sftp-client';
|
|
3
|
+
import { Payload } from './generated-types';
|
|
4
|
+
declare function validateSFTP(payload: Payload): void;
|
|
5
|
+
declare function uploadSFTP(sftp: Client, payload: Payload, filename: string, fileContent: Buffer): Promise<unknown>;
|
|
6
|
+
declare function testAuthenticationSFTP(sftp: Client, payload: Payload): Promise<unknown>;
|
|
7
|
+
export { validateSFTP, uploadSFTP, testAuthenticationSFTP, Client };
|
package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredSftp}/sftp.js
RENAMED
|
@@ -10,41 +10,41 @@ exports.Client = ssh2_sftp_client_1.default;
|
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const LIVERAMP_SFTP_SERVER = 'files.liveramp.com';
|
|
12
12
|
const LIVERAMP_SFTP_PORT = 22;
|
|
13
|
-
function validateSFTP(
|
|
14
|
-
if (!
|
|
13
|
+
function validateSFTP(payload) {
|
|
14
|
+
if (!payload.sftp_username) {
|
|
15
15
|
throw new actions_core_1.InvalidAuthenticationError('Selected SFTP upload mode, but missing credentials (Username)');
|
|
16
16
|
}
|
|
17
|
-
if (!
|
|
17
|
+
if (!payload.sftp_password) {
|
|
18
18
|
throw new actions_core_1.InvalidAuthenticationError('Selected SFTP upload mode, but missing credentials (Password)');
|
|
19
19
|
}
|
|
20
|
-
if (!
|
|
20
|
+
if (!payload.sftp_folder_path) {
|
|
21
21
|
throw new actions_core_1.InvalidAuthenticationError('Selected SFTP upload mode, but missing SFTP folder path.');
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
exports.validateSFTP = validateSFTP;
|
|
25
|
-
async function uploadSFTP(sftp,
|
|
26
|
-
return doSFTP(sftp,
|
|
27
|
-
const targetPath = path_1.default.join(
|
|
25
|
+
async function uploadSFTP(sftp, payload, filename, fileContent) {
|
|
26
|
+
return doSFTP(sftp, payload, async (sftp) => {
|
|
27
|
+
const targetPath = path_1.default.join(payload.sftp_folder_path, filename);
|
|
28
28
|
return sftp.put(fileContent, targetPath);
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
exports.uploadSFTP = uploadSFTP;
|
|
32
|
-
async function doSFTP(sftp,
|
|
32
|
+
async function doSFTP(sftp, payload, action) {
|
|
33
33
|
await sftp.connect({
|
|
34
34
|
host: LIVERAMP_SFTP_SERVER,
|
|
35
35
|
port: LIVERAMP_SFTP_PORT,
|
|
36
|
-
username:
|
|
37
|
-
password:
|
|
36
|
+
username: payload.sftp_username,
|
|
37
|
+
password: payload.sftp_password
|
|
38
38
|
});
|
|
39
39
|
const retVal = await action(sftp);
|
|
40
40
|
await sftp.end();
|
|
41
41
|
return retVal;
|
|
42
42
|
}
|
|
43
|
-
async function testAuthenticationSFTP(sftp,
|
|
44
|
-
return doSFTP(sftp,
|
|
45
|
-
return sftp.exists(
|
|
43
|
+
async function testAuthenticationSFTP(sftp, payload) {
|
|
44
|
+
return doSFTP(sftp, payload, async (sftp) => {
|
|
45
|
+
return sftp.exists(payload.sftp_folder_path).then((fileType) => {
|
|
46
46
|
if (!fileType)
|
|
47
|
-
throw new Error(`Could not find path: ${
|
|
47
|
+
throw new Error(`Could not find path: ${payload.sftp_folder_path}`);
|
|
48
48
|
});
|
|
49
49
|
});
|
|
50
50
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../../src/destinations/liveramp-audiences/audienceEnteredSftp/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,OAAgB;IACpC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,yCAA0B,CAAC,+DAA+D,CAAC,CAAA;KACtG;IAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,yCAA0B,CAAC,+DAA+D,CAAC,CAAA;KACtG;IAED,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAC7B,MAAM,IAAI,yCAA0B,CAAC,0DAA0D,CAAC,CAAA;KACjG;AACH,CAAC;AA8BQ,oCAAY;AA5BrB,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,OAAgB,EAAE,QAAgB,EAAE,WAAmB;IAC7F,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAA0B,EAAE,QAAQ,CAAC,CAAA;QAC1E,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,OAAgB,EAAE,MAA4C;IAChG,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,OAAO,CAAC,aAAa;QAC/B,QAAQ,EAAE,OAAO,CAAC,aAAa;KAChC,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,OAAgB;IAClE,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACvE,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAEkC,wDAAsB"}
|
|
@@ -1,12 +1,4 @@
|
|
|
1
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
2
|
__segment_internal_engage_force_full_sync: boolean;
|
|
11
3
|
__segment_internal_engage_batch_sync: boolean;
|
|
12
4
|
}
|
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
7
|
-
const
|
|
6
|
+
const audienceEnteredS3_1 = __importDefault(require("./audienceEnteredS3"));
|
|
7
|
+
const audienceEnteredSftp_1 = __importDefault(require("./audienceEnteredSftp"));
|
|
8
8
|
const destination = {
|
|
9
9
|
name: 'Liveramp Audiences',
|
|
10
10
|
slug: 'actions-liveramp-audiences',
|
|
@@ -12,53 +12,6 @@ const destination = {
|
|
|
12
12
|
authentication: {
|
|
13
13
|
scheme: 'custom',
|
|
14
14
|
fields: {
|
|
15
|
-
upload_mode: {
|
|
16
|
-
label: 'Upload Mode',
|
|
17
|
-
description: 'Choose delivery route for the files',
|
|
18
|
-
type: 'string',
|
|
19
|
-
required: true,
|
|
20
|
-
default: 'S3',
|
|
21
|
-
choices: [
|
|
22
|
-
{ value: 'S3', label: 'S3' },
|
|
23
|
-
{ value: 'SFTP', label: 'SFTP' }
|
|
24
|
-
]
|
|
25
|
-
},
|
|
26
|
-
s3_aws_access_key: {
|
|
27
|
-
label: 'AWS Access Key ID (S3 only)',
|
|
28
|
-
description: 'IAM user credentials with write permissions to the S3 bucket.',
|
|
29
|
-
type: 'string'
|
|
30
|
-
},
|
|
31
|
-
s3_aws_secret_key: {
|
|
32
|
-
label: 'AWS Secret Access Key (S3 only)',
|
|
33
|
-
description: 'IAM user credentials with write permissions to the S3 bucket.',
|
|
34
|
-
type: 'password'
|
|
35
|
-
},
|
|
36
|
-
s3_aws_bucket_name: {
|
|
37
|
-
label: 'AWS Bucket Name (S3 only)',
|
|
38
|
-
description: 'Name of the S3 bucket where the files will be uploaded to.',
|
|
39
|
-
type: 'string'
|
|
40
|
-
},
|
|
41
|
-
s3_aws_region: {
|
|
42
|
-
label: 'AWS Region (S3 only)',
|
|
43
|
-
description: 'Region where the S3 bucket is hosted.',
|
|
44
|
-
type: 'string'
|
|
45
|
-
},
|
|
46
|
-
sftp_username: {
|
|
47
|
-
label: 'Username (SFTP only)',
|
|
48
|
-
description: 'User credentials for establishing an SFTP connection with LiveRamp.',
|
|
49
|
-
type: 'string'
|
|
50
|
-
},
|
|
51
|
-
sftp_password: {
|
|
52
|
-
label: 'Password (SFTP only)',
|
|
53
|
-
description: 'User credentials for establishing an SFTP connection with LiveRamp.',
|
|
54
|
-
type: 'password'
|
|
55
|
-
},
|
|
56
|
-
sftp_folder_path: {
|
|
57
|
-
label: 'Folder Path (SFTP only)',
|
|
58
|
-
description: 'Path within the LiveRamp SFTP server to upload the files to. This path must exist and all subfolders must be pre-created.',
|
|
59
|
-
type: 'string',
|
|
60
|
-
format: 'uri-reference'
|
|
61
|
-
},
|
|
62
15
|
__segment_internal_engage_force_full_sync: {
|
|
63
16
|
label: 'Force Full Sync',
|
|
64
17
|
description: '',
|
|
@@ -73,16 +26,11 @@ const destination = {
|
|
|
73
26
|
required: true,
|
|
74
27
|
default: true
|
|
75
28
|
}
|
|
76
|
-
},
|
|
77
|
-
testAuthentication: async (_, { settings }) => {
|
|
78
|
-
if (settings.upload_mode == 'SFTP') {
|
|
79
|
-
const sftpClient = new sftp_1.Client();
|
|
80
|
-
return await sftp_1.testAuthenticationSFTP(sftpClient, settings);
|
|
81
|
-
}
|
|
82
29
|
}
|
|
83
30
|
},
|
|
84
31
|
actions: {
|
|
85
|
-
|
|
32
|
+
audienceEnteredS3: audienceEnteredS3_1.default,
|
|
33
|
+
audienceEnteredSFTP: audienceEnteredSftp_1.default
|
|
86
34
|
}
|
|
87
35
|
};
|
|
88
36
|
exports.default = destination;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/liveramp-audiences/index.ts"],"names":[],"mappings":";;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/liveramp-audiences/index.ts"],"names":[],"mappings":";;;;;AAGA,4EAAmD;AACnD,gFAAuD;AAEvD,MAAM,WAAW,GAAoC;IACnD,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE,OAAO;IAEb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,yCAAyC,EAAE;gBACzC,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;aACd;YACD,oCAAoC,EAAE;gBACpC,KAAK,EAAE,6BAA6B;gBACpC,WAAW,EAAE,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;aACd;SACF;KACF;IACD,OAAO,EAAE;QACP,iBAAiB,EAAjB,2BAAiB;QACjB,mBAAmB,EAAnB,6BAAmB;KACpB;CACF,CAAA;AAED,kBAAe,WAAW,CAAA"}
|
|
@@ -23,11 +23,16 @@ exports.custom_data_field = {
|
|
|
23
23
|
multiple: true
|
|
24
24
|
},
|
|
25
25
|
contents: {
|
|
26
|
-
label: '
|
|
27
|
-
description: '
|
|
26
|
+
label: 'Product Info',
|
|
27
|
+
description: 'A list of objects containing information about products.',
|
|
28
28
|
type: 'object',
|
|
29
29
|
multiple: true,
|
|
30
30
|
properties: {
|
|
31
|
+
id: {
|
|
32
|
+
label: 'Id',
|
|
33
|
+
type: 'number',
|
|
34
|
+
description: 'The id of the Item'
|
|
35
|
+
},
|
|
31
36
|
item_price: {
|
|
32
37
|
label: 'Price',
|
|
33
38
|
type: 'number',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinterest-capi-custom-data.js","sourceRoot":"","sources":["../../../src/destinations/pinterest-conversions/pinterest-capi-custom-data.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAe;IAC3C,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,kGAAkG;YAC/G,IAAI,EAAE,QAAQ;SACf;QACD,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,WAAW,EACT,8HAA8H;YAChI,IAAI,EAAE,QAAQ;SACf;QACD,WAAW,EAAE;YACX,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"pinterest-capi-custom-data.js","sourceRoot":"","sources":["../../../src/destinations/pinterest-conversions/pinterest-capi-custom-data.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAe;IAC3C,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,kGAAkG;YAC/G,IAAI,EAAE,QAAQ;SACf;QACD,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,WAAW,EACT,8HAA8H;YAChI,IAAI,EAAE,QAAQ;SACf;QACD,WAAW,EAAE;YACX,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,cAAc;YACrB,WAAW,EAAE,0DAA0D;YACvE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oBAAoB;iBAClC;gBACD,UAAU,EAAE;oBACV,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,+BAA+B;iBAC7C;aACF;SACF;QACD,SAAS,EAAE;YACT,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,QAAQ;SACf;QACD,aAAa,EAAE;YACb,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,gDAAgD;YAC7D,IAAI,EAAE,QAAQ;SACf;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,8IAA8I;YAChJ,IAAI,EAAE,QAAQ;SACf;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;gBACzC,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;gBACvC,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;aACxC;SACF;QACD,aAAa,EAAE;YACb,OAAO,EAAE,oBAAoB;SAC9B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,uBAAuB;SACjC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,uBAAuB;SACjC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RequestClient } from '@segment/actions-core';
|
|
2
|
+
interface SendToAWSRequest {
|
|
3
|
+
TDDAuthToken: string;
|
|
4
|
+
AdvertiserId: string;
|
|
5
|
+
CrmDataId: string;
|
|
6
|
+
SegmentName: string;
|
|
7
|
+
UsersFormatted: string;
|
|
8
|
+
DropOptions: {
|
|
9
|
+
PiiType: string;
|
|
10
|
+
MergeMode: string;
|
|
11
|
+
TtlInMinutes?: number;
|
|
12
|
+
RetentionEnabled?: boolean;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare const sendEventToAWS: (request: RequestClient, input: SendToAWSRequest) => Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
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.sendEventToAWS = void 0;
|
|
7
|
+
const uuid_1 = require("@lukeed/uuid");
|
|
8
|
+
const aws4_1 = __importDefault(require("aws4"));
|
|
9
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
10
|
+
const sts_1 = require("../../lib/AWS/sts");
|
|
11
|
+
const NODE_ENV = process.env['NODE_ENV'] || `stage`;
|
|
12
|
+
const AWS_REGION = process.env['AWS_REGION'] || `us-west-2`;
|
|
13
|
+
const S3_BUCKET_NAME = `integrations-outbound-event-store-${NODE_ENV}-${AWS_REGION}`;
|
|
14
|
+
const ACTION_SLUG = `actions-the-trade-desk-crm`;
|
|
15
|
+
const sendEventToAWS = async (request, input) => {
|
|
16
|
+
const uuidValue = uuid_1.v4();
|
|
17
|
+
const userdataFilePath = `/${ACTION_SLUG}/${input.AdvertiserId}/${input.CrmDataId}/${uuidValue}.txt`;
|
|
18
|
+
const metadataFilePath = `/${ACTION_SLUG}/${input.AdvertiserId}/${input.CrmDataId}/meta.json`;
|
|
19
|
+
const metadata = JSON.stringify({
|
|
20
|
+
TDDAuthToken: input.TDDAuthToken,
|
|
21
|
+
AdvertiserId: input.AdvertiserId,
|
|
22
|
+
SegmentName: input.SegmentName,
|
|
23
|
+
CrmDataId: input.CrmDataId,
|
|
24
|
+
DropOptions: input.DropOptions,
|
|
25
|
+
RequeueCount: 0
|
|
26
|
+
});
|
|
27
|
+
const awsCredentials = await sts_1.getAWSCredentialsFromEKS(request);
|
|
28
|
+
await uploadToAWSS3({
|
|
29
|
+
request,
|
|
30
|
+
bucketName: S3_BUCKET_NAME,
|
|
31
|
+
region: AWS_REGION,
|
|
32
|
+
fileContentType: 'text/plain',
|
|
33
|
+
filePath: userdataFilePath,
|
|
34
|
+
fileContent: input.UsersFormatted,
|
|
35
|
+
awsCredentials: awsCredentials
|
|
36
|
+
});
|
|
37
|
+
return uploadToAWSS3({
|
|
38
|
+
request,
|
|
39
|
+
bucketName: S3_BUCKET_NAME,
|
|
40
|
+
region: AWS_REGION,
|
|
41
|
+
fileContentType: 'application/json',
|
|
42
|
+
filePath: metadataFilePath,
|
|
43
|
+
fileContent: metadata,
|
|
44
|
+
awsCredentials: awsCredentials
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
exports.sendEventToAWS = sendEventToAWS;
|
|
48
|
+
async function uploadToAWSS3(input) {
|
|
49
|
+
const s3UploadRequest = aws4_1.default.sign({
|
|
50
|
+
host: `${input.bucketName}.s3.${input.region}.amazonaws.com`,
|
|
51
|
+
path: input.filePath,
|
|
52
|
+
body: input.fileContent,
|
|
53
|
+
method: 'PUT',
|
|
54
|
+
service: 's3',
|
|
55
|
+
region: input.region,
|
|
56
|
+
headers: {
|
|
57
|
+
'Content-Type': input.fileContentType,
|
|
58
|
+
Accept: 'application/json'
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
accessKeyId: input.awsCredentials.accessKeyId,
|
|
62
|
+
secretAccessKey: input.awsCredentials.secretAccessKey,
|
|
63
|
+
sessionToken: input.awsCredentials.sessionToken
|
|
64
|
+
});
|
|
65
|
+
if (!s3UploadRequest.headers || !s3UploadRequest.method || !s3UploadRequest.host || !s3UploadRequest.path) {
|
|
66
|
+
throw new actions_core_1.InvalidAuthenticationError('Unable to generate signature header for AWS S3 request.');
|
|
67
|
+
}
|
|
68
|
+
return input.request(`https://${input.bucketName}.s3.${input.region}.amazonaws.com${input.filePath}`, {
|
|
69
|
+
method: 'PUT',
|
|
70
|
+
body: s3UploadRequest.body,
|
|
71
|
+
headers: s3UploadRequest.headers
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=awsClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awsClient.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/awsClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,5 +26,13 @@ export interface CREATE_API_RESPONSE {
|
|
|
26
26
|
CrmDataId: string;
|
|
27
27
|
FirstPartyDataId: number;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
interface ProcessPayloadInput {
|
|
30
|
+
request: RequestClient;
|
|
31
|
+
settings: Settings;
|
|
32
|
+
payloads: Payload[];
|
|
33
|
+
features?: Record<string, boolean>;
|
|
34
|
+
}
|
|
35
|
+
export declare const TTD_LEGACY_FLOW_FLAG_NAME = "actions-the-trade-desk-crm-legacy-flow";
|
|
36
|
+
export declare function processPayload(input: ProcessPayloadInput): Promise<ModifiedResponse<unknown>>;
|
|
30
37
|
export declare const hash: (value: string) => string;
|
|
38
|
+
export {};
|
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hash = exports.processPayload = void 0;
|
|
3
|
+
exports.hash = exports.processPayload = exports.TTD_LEGACY_FLOW_FLAG_NAME = void 0;
|
|
4
4
|
const actions_core_1 = require("@segment/actions-core");
|
|
5
5
|
const crypto_1 = require("crypto");
|
|
6
|
+
const awsClient_1 = require("./awsClient");
|
|
6
7
|
const API_VERSION = 'v3';
|
|
7
8
|
const BASE_URL = `https://api.thetradedesk.com/${API_VERSION}`;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const TTD_MIN_RECORD_COUNT = 1500;
|
|
10
|
+
exports.TTD_LEGACY_FLOW_FLAG_NAME = 'actions-the-trade-desk-crm-legacy-flow';
|
|
11
|
+
async function processPayload(input) {
|
|
12
|
+
if (input.payloads.length < TTD_MIN_RECORD_COUNT) {
|
|
13
|
+
throw new actions_core_1.PayloadValidationError(`received payload count below The Trade Desk's ingestion limits. Expected: >=${TTD_MIN_RECORD_COUNT} actual: ${input.payloads.length}`);
|
|
14
|
+
}
|
|
15
|
+
const crmID = await getCRMInfo(input.request, input.settings, input.payloads[0]);
|
|
16
|
+
const usersFormatted = extractUsers(input.payloads);
|
|
17
|
+
if (input.features && input.features[exports.TTD_LEGACY_FLOW_FLAG_NAME]) {
|
|
18
|
+
const dropEndpoint = await getCRMDataDropEndpoint(input.request, input.settings, input.payloads[0], crmID);
|
|
19
|
+
return uploadCRMDataToDropEndpoint(input.request, dropEndpoint, usersFormatted);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return awsClient_1.sendEventToAWS(input.request, {
|
|
23
|
+
TDDAuthToken: input.settings.auth_token,
|
|
24
|
+
AdvertiserId: input.settings.advertiser_id,
|
|
25
|
+
CrmDataId: crmID,
|
|
26
|
+
SegmentName: input.payloads[0].name,
|
|
27
|
+
UsersFormatted: usersFormatted,
|
|
28
|
+
DropOptions: {
|
|
29
|
+
PiiType: input.payloads[0].pii_type,
|
|
30
|
+
MergeMode: input.payloads[0].merge_mode || 'Replace'
|
|
31
|
+
}
|
|
32
|
+
});
|
|
12
33
|
}
|
|
13
|
-
const crmID = await getCRMID(request, settings, payloads[0]);
|
|
14
|
-
const users = extractUsers(payloads);
|
|
15
|
-
const dataDropEndpoint = await getDropEndpoint(request, settings, payloads[0], crmID);
|
|
16
|
-
return sendCRMData(request, dataDropEndpoint, users);
|
|
17
34
|
}
|
|
18
35
|
exports.processPayload = processPayload;
|
|
19
36
|
async function getAllDataSegments(request, settings) {
|
|
@@ -41,7 +58,7 @@ async function getAllDataSegments(request, settings) {
|
|
|
41
58
|
}
|
|
42
59
|
return allDataSegments;
|
|
43
60
|
}
|
|
44
|
-
async function
|
|
61
|
+
async function getCRMInfo(request, settings, payload) {
|
|
45
62
|
let segmentId;
|
|
46
63
|
const segments = await getAllDataSegments(request, settings);
|
|
47
64
|
const segmentExists = segments.filter(function (segment) {
|
|
@@ -52,7 +69,7 @@ async function getCRMID(request, settings, payload) {
|
|
|
52
69
|
if (segmentExists.length > 1) {
|
|
53
70
|
throw new actions_core_1.IntegrationError('Multiple audiences found with the same name', 'INVALID_SETTINGS', 400);
|
|
54
71
|
}
|
|
55
|
-
if (segmentExists.length == 1) {
|
|
72
|
+
else if (segmentExists.length == 1) {
|
|
56
73
|
segmentId = segmentExists[0].CrmDataId;
|
|
57
74
|
}
|
|
58
75
|
else {
|
|
@@ -72,20 +89,6 @@ async function getCRMID(request, settings, payload) {
|
|
|
72
89
|
}
|
|
73
90
|
return segmentId;
|
|
74
91
|
}
|
|
75
|
-
async function getDropEndpoint(request, settings, payload, crmId) {
|
|
76
|
-
const response = await request(`${BASE_URL}/crmdata/segment/${settings.advertiser_id}/${crmId}`, {
|
|
77
|
-
method: 'POST',
|
|
78
|
-
headers: {
|
|
79
|
-
'Content-Type': 'application/json',
|
|
80
|
-
'TTD-Auth': settings.auth_token
|
|
81
|
-
},
|
|
82
|
-
json: {
|
|
83
|
-
PiiType: payload.pii_type,
|
|
84
|
-
MergeMode: 'Replace'
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
return response.data.Url;
|
|
88
|
-
}
|
|
89
92
|
function extractUsers(payloads) {
|
|
90
93
|
let users = '';
|
|
91
94
|
payloads.forEach((payload) => {
|
|
@@ -103,15 +106,6 @@ function extractUsers(payloads) {
|
|
|
103
106
|
});
|
|
104
107
|
return users;
|
|
105
108
|
}
|
|
106
|
-
async function sendCRMData(request, endpoint, users) {
|
|
107
|
-
return await request(endpoint, {
|
|
108
|
-
method: 'PUT',
|
|
109
|
-
headers: {
|
|
110
|
-
'Content-Type': 'text/plain'
|
|
111
|
-
},
|
|
112
|
-
body: users
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
109
|
function normalizeEmail(email) {
|
|
116
110
|
email = email.trim().toLowerCase();
|
|
117
111
|
if (email.endsWith('@gmail.com')) {
|
|
@@ -132,4 +126,27 @@ const hash = (value) => {
|
|
|
132
126
|
return hash.digest('base64');
|
|
133
127
|
};
|
|
134
128
|
exports.hash = hash;
|
|
129
|
+
async function getCRMDataDropEndpoint(request, settings, payload, crmId) {
|
|
130
|
+
const response = await request(`${BASE_URL}/crmdata/segment/${settings.advertiser_id}/${crmId}`, {
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers: {
|
|
133
|
+
'Content-Type': 'application/json',
|
|
134
|
+
'TTD-Auth': settings.auth_token
|
|
135
|
+
},
|
|
136
|
+
json: {
|
|
137
|
+
PiiType: payload.pii_type,
|
|
138
|
+
MergeMode: payload.merge_mode || 'Replace'
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return response.data.Url;
|
|
142
|
+
}
|
|
143
|
+
async function uploadCRMDataToDropEndpoint(request, endpoint, users) {
|
|
144
|
+
return await request(endpoint, {
|
|
145
|
+
method: 'PUT',
|
|
146
|
+
headers: {
|
|
147
|
+
'Content-Type': 'text/plain'
|
|
148
|
+
},
|
|
149
|
+
body: users
|
|
150
|
+
});
|
|
151
|
+
}
|
|
135
152
|
//# sourceMappingURL=functions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/functions.ts"],"names":[],"mappings":";;;AAAA,wDAAiH;AAGjH,mCAAmC;AAEnC,MAAM,WAAW,GAAG,IAAI,CAAA;AACxB,MAAM,QAAQ,GAAG,gCAAgC,WAAW,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.batch_size = exports.enable_batching = exports.event_name = exports.email = exports.pii_type = exports.region = exports.name = void 0;
|
|
3
|
+
exports.merge_mode = exports.batch_size = exports.enable_batching = exports.event_name = exports.email = exports.pii_type = exports.region = exports.name = void 0;
|
|
4
4
|
exports.name = {
|
|
5
5
|
label: 'Segment Name',
|
|
6
6
|
description: 'The name of The Trade Desk CRM Data Segment you want to sync. If the audience name does not exist Segment will create one.',
|
|
@@ -53,4 +53,21 @@ exports.batch_size = {
|
|
|
53
53
|
required: false,
|
|
54
54
|
default: 100000
|
|
55
55
|
};
|
|
56
|
+
exports.merge_mode = {
|
|
57
|
+
label: 'Merge Mode',
|
|
58
|
+
description: 'The merge mode to use when syncing data to The Trade Desk CRM Segment.',
|
|
59
|
+
type: 'string',
|
|
60
|
+
choices: [
|
|
61
|
+
{
|
|
62
|
+
label: 'Add',
|
|
63
|
+
value: 'Add'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: 'Replace',
|
|
67
|
+
value: 'Replace'
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
default: 'Replace',
|
|
71
|
+
required: false
|
|
72
|
+
};
|
|
56
73
|
//# sourceMappingURL=properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,IAAI,GAAe;IAC9B,KAAK,EAAE,cAAc;IACrB,WAAW,EACT,4HAA4H;IAC9H,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,MAAM,GAAe;IAChC,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,6EAA6E;IAC1F,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,QAAQ,GAAe;IAClC,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,wEAAwE;IACrF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QAClC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB,EAAE;KAC1D;IACD,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,KAAK,GAAe;IAC/B,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qDAAqD;IAClE,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,wBAAwB;KAClC;CACF,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,SAAS;KACnB;CACF,CAAA;AAEY,QAAA,eAAe,GAAe;IACzC,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,4DAA4D;IACzE,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,MAAM;CAChB,CAAA"}
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,IAAI,GAAe;IAC9B,KAAK,EAAE,cAAc;IACrB,WAAW,EACT,4HAA4H;IAC9H,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,MAAM,GAAe;IAChC,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,6EAA6E;IAC1F,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,QAAQ,GAAe;IAClC,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,wEAAwE;IACrF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QAClC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB,EAAE;KAC1D;IACD,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,KAAK,GAAe;IAC/B,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qDAAqD;IAClE,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,wBAAwB;KAClC;CACF,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,SAAS;KACnB;CACF,CAAA;AAEY,QAAA,eAAe,GAAe;IACzC,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,4DAA4D;IACzE,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,MAAM;CAChB,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,wEAAwE;IACrF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP;YACE,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb;QACD;YACE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;SACjB;KACF;IACD,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,KAAK;CAChB,CAAA"}
|
|
@@ -11,15 +11,26 @@ const action = {
|
|
|
11
11
|
region: { ...properties_1.region },
|
|
12
12
|
pii_type: { ...properties_1.pii_type },
|
|
13
13
|
email: { ...properties_1.email },
|
|
14
|
+
merge_mode: { ...properties_1.merge_mode },
|
|
14
15
|
enable_batching: { ...properties_1.enable_batching },
|
|
15
16
|
event_name: { ...properties_1.event_name },
|
|
16
17
|
batch_size: { ...properties_1.batch_size }
|
|
17
18
|
},
|
|
18
|
-
perform: async (request, { settings, payload }) => {
|
|
19
|
-
return functions_1.processPayload(
|
|
19
|
+
perform: async (request, { settings, payload, features }) => {
|
|
20
|
+
return functions_1.processPayload({
|
|
21
|
+
request,
|
|
22
|
+
settings,
|
|
23
|
+
payloads: [payload],
|
|
24
|
+
features
|
|
25
|
+
});
|
|
20
26
|
},
|
|
21
|
-
performBatch: async (request, { settings, payload }) => {
|
|
22
|
-
return functions_1.processPayload(
|
|
27
|
+
performBatch: async (request, { settings, payload, features }) => {
|
|
28
|
+
return functions_1.processPayload({
|
|
29
|
+
request,
|
|
30
|
+
settings,
|
|
31
|
+
payloads: payload,
|
|
32
|
+
features
|
|
33
|
+
});
|
|
23
34
|
}
|
|
24
35
|
};
|
|
25
36
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/the-trade-desk-crm/syncAudience/index.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/the-trade-desk-crm/syncAudience/index.ts"],"names":[],"mappings":";;AAGA,8CAAkH;AAClH,4CAA6C;AAE7C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,mCAAmC;IAC1C,WAAW,EAAE,4CAA4C;IACzD,mBAAmB,EAAE,4BAA4B;IACjD,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,GAAG,iBAAI,EAAE;QACjB,MAAM,EAAE,EAAE,GAAG,mBAAM,EAAE;QACrB,QAAQ,EAAE,EAAE,GAAG,qBAAQ,EAAE;QACzB,KAAK,EAAE,EAAE,GAAG,kBAAK,EAAE;QACnB,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;QAC7B,eAAe,EAAE,EAAE,GAAG,4BAAe,EAAE;QACvC,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;QAC7B,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;KAC9B;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1D,OAAO,0BAAc,CAAC;YACpB,OAAO;YACP,QAAQ;YACR,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/D,OAAO,0BAAc,CAAC;YACpB,OAAO;YACP,QAAQ;YACR,QAAQ,EAAE,OAAO;YACjB,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RequestClient } from '@segment/actions-core';
|
|
2
|
+
export declare type AWSCredentials = {
|
|
3
|
+
accessKeyId: string;
|
|
4
|
+
secretAccessKey: string;
|
|
5
|
+
sessionToken: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function getAWSCredentialsFromEKS(request: RequestClient): Promise<AWSCredentials>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAWSCredentialsFromEKS = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const awsCredentialsCache = {
|
|
6
|
+
expires: 0,
|
|
7
|
+
credentials: { accessKeyId: '', secretAccessKey: '', sessionToken: '' }
|
|
8
|
+
};
|
|
9
|
+
function getToken() {
|
|
10
|
+
const tokenFilepath = process.env['AWS_WEB_IDENTITY_TOKEN_FILE'] || '/var/run/secrets/kubernetes.io/serviceaccount/token';
|
|
11
|
+
return fs_1.readFileSync(tokenFilepath, 'utf-8');
|
|
12
|
+
}
|
|
13
|
+
async function getAWSRoleARNFromK8sAPI(request, K8sToken) {
|
|
14
|
+
const K8sApiResponse = await request('https://kubernetes.default.svc/api/v1/namespaces/default/serviceaccounts/pod-service-account', {
|
|
15
|
+
headers: {
|
|
16
|
+
Authorization: `Bearer ${K8sToken}`
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const roleArn = K8sApiResponse.data?.metadata?.annotations?.['eks.amazonaws.com/role-arn'];
|
|
20
|
+
if (!roleArn) {
|
|
21
|
+
throw new Error('Unable to retrieve AWS Role ARN from Kubernetes API.');
|
|
22
|
+
}
|
|
23
|
+
return roleArn;
|
|
24
|
+
}
|
|
25
|
+
async function getCredentialsFromSTS(request, awsRoleARN, token) {
|
|
26
|
+
const stsResponse = await request(`https://sts.us-west-2.amazonaws.com/?` +
|
|
27
|
+
`Action=AssumeRoleWithWebIdentity` +
|
|
28
|
+
`&DurationSeconds=3600` +
|
|
29
|
+
`&RoleSessionName=integrations-monoservice` +
|
|
30
|
+
`&RoleArn=${awsRoleARN}` +
|
|
31
|
+
`&WebIdentityToken=${token}` +
|
|
32
|
+
`&Version=2011-06-15`, {
|
|
33
|
+
method: 'GET',
|
|
34
|
+
headers: {
|
|
35
|
+
'User-Agent': 'segment/integrations-monoservice',
|
|
36
|
+
Accept: 'application/json'
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
accessKeyId: stsResponse.data.AssumeRoleWithWebIdentityResponse.AssumeRoleWithWebIdentityResult.Credentials.AccessKeyId,
|
|
41
|
+
secretAccessKey: stsResponse.data.AssumeRoleWithWebIdentityResponse.AssumeRoleWithWebIdentityResult.Credentials.SecretAccessKey,
|
|
42
|
+
sessionToken: stsResponse.data.AssumeRoleWithWebIdentityResponse.AssumeRoleWithWebIdentityResult.Credentials.SessionToken
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async function getAWSCredentialsFromEKS(request) {
|
|
46
|
+
if (awsCredentialsCache.expires > Date.now()) {
|
|
47
|
+
return awsCredentialsCache.credentials;
|
|
48
|
+
}
|
|
49
|
+
const token = getToken();
|
|
50
|
+
const awsRoleARN = process.env['AWS_ROLE_ARN'] || (await getAWSRoleARNFromK8sAPI(request, token));
|
|
51
|
+
const credentials = await getCredentialsFromSTS(request, awsRoleARN, token);
|
|
52
|
+
awsCredentialsCache.expires = Date.now() + 3300000;
|
|
53
|
+
awsCredentialsCache.credentials = credentials;
|
|
54
|
+
return credentials;
|
|
55
|
+
}
|
|
56
|
+
exports.getAWSCredentialsFromEKS = getAWSCredentialsFromEKS;
|
|
57
|
+
//# sourceMappingURL=sts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sts.js","sourceRoot":"","sources":["../../../src/lib/AWS/sts.ts"],"names":[],"mappings":";;;AAAA,2BAAiC;AA6CjC,MAAM,mBAAmB,GAAwB;IAC/C,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;CACxE,CAAA;AAED,SAAS,QAAQ;IACf,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qDAAqD,CAAA;IACrG,OAAO,iBAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAC;AAGD,KAAK,UAAU,uBAAuB,CAAC,OAAsB,EAAE,QAAgB;IAC7E,MAAM,cAAc,GAAG,MAAM,OAAO,CAClC,8FAA8F,EAC9F;QACE,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,QAAQ,EAAE;SACpC;KACF,CACF,CAAA;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,4BAA4B,CAAC,CAAA;IAE1F,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;KACxE;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAsB,EACtB,UAAkB,EAClB,KAAa;IAEb,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,uCAAuC;QACrC,kCAAkC;QAClC,uBAAuB;QACvB,2CAA2C;QAC3C,YAAY,UAAU,EAAE;QACxB,qBAAqB,KAAK,EAAE;QAC5B,qBAAqB,EACvB;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,YAAY,EAAE,kCAAkC;YAChD,MAAM,EAAE,kBAAkB;SAC3B;KACF,CACF,CAAA;IAED,OAAO;QACL,WAAW,EACT,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,+BAA+B,CAAC,WAAW,CAAC,WAAW;QAC5G,eAAe,EACb,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,+BAA+B,CAAC,WAAW,CAAC,eAAe;QAChH,YAAY,EACV,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,+BAA+B,CAAC,WAAW,CAAC,YAAY;KAC9G,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAAC,OAAsB;IAGnE,IAAI,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;QAC5C,OAAO,mBAAmB,CAAC,WAAW,CAAA;KACvC;IAGD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IAGxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAEjG,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAI3E,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAClD,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAA;IAE7C,OAAO,WAAW,CAAA;AACpB,CAAC;AArBD,4DAqBC"}
|
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.
|
|
4
|
+
"version": "3.198.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/segmentio/action-destinations",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"__tests__/__helpers__/"
|
|
78
78
|
]
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "da244746ac1e91b6370e5a37b5c918f829199db1"
|
|
81
81
|
}
|
|
@@ -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 +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 +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
|
/package/dist/destinations/liveramp-audiences/{audienceEntered → audienceEnteredS3}/index.d.ts
RENAMED
|
File without changes
|