@segment/action-destinations 3.443.0 → 3.444.1-staging-7a4392ac3.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/aws-kinesis/send/index.js +9 -2
- package/dist/destinations/aws-kinesis/send/index.js.map +1 -1
- package/dist/destinations/aws-kinesis/utils.d.ts +7 -0
- package/dist/destinations/aws-kinesis/utils.js +65 -1
- package/dist/destinations/aws-kinesis/utils.js.map +1 -1
- package/dist/destinations/cordial/cordial-client.d.ts +8 -8
- package/dist/destinations/dotdigital/api/dd-api.d.ts +4 -4
- package/dist/destinations/dotdigital/api/resources/dd-email-api.d.ts +1 -1
- package/dist/destinations/engage-messaging-twilio/sendMobilePush/PushSender.d.ts +1 -1
- package/dist/destinations/facebook-custom-audiences/fbca-operations.d.ts +2 -2
- package/dist/destinations/first-party-dv360/addToAudContactInfo/_tests_/index.test.d.ts +1 -1
- package/dist/destinations/first-party-dv360/addToAudMobileDeviceId/_tests_/index.test.d.ts +1 -1
- package/dist/destinations/first-party-dv360/removeFromAudContactInfo/_tests_/index.test.d.ts +1 -1
- package/dist/destinations/gameball/util.d.ts +1 -1
- package/dist/destinations/google-analytics-4/ga4-functions.d.ts +1 -1
- package/dist/destinations/google-campaign-manager-360/utils.d.ts +1 -1
- package/dist/destinations/google-sheets/postSheet/operations.d.ts +1 -1
- package/dist/destinations/google-sheets/postSheet2/operations2.d.ts +1 -1
- package/dist/destinations/hubspot/upsertObject/client.d.ts +8 -8
- package/dist/destinations/klaviyo/functions.d.ts +3 -3
- package/dist/destinations/launchdarkly-audiences/syncAudience/custom-audience-operations.d.ts +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/functions.d.ts +1 -1
- package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.js +96 -0
- package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.js.map +1 -0
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.d.ts +58 -0
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.js +3 -0
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.js.map +1 -0
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.d.ts +5 -0
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.js +66 -0
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.js.map +1 -0
- package/dist/destinations/salesforce-marketing-cloud/index.js +3 -1
- package/dist/destinations/salesforce-marketing-cloud/index.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.d.ts +3 -0
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js +109 -0
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js.map +1 -1
- package/dist/destinations/sftp/client.d.ts +3 -6
- package/dist/destinations/sftp/client.js +48 -35
- package/dist/destinations/sftp/client.js.map +1 -1
- package/dist/destinations/sftp/constants.d.ts +4 -0
- package/dist/destinations/sftp/constants.js +5 -1
- package/dist/destinations/sftp/constants.js.map +1 -1
- package/dist/destinations/sftp/fields.js.map +1 -1
- package/dist/destinations/sftp/functions.d.ts +2 -1
- package/dist/destinations/sftp/functions.js +2 -2
- package/dist/destinations/sftp/functions.js.map +1 -1
- package/dist/destinations/sftp/generated-types.d.ts +1 -0
- package/dist/destinations/sftp/index.js +14 -0
- package/dist/destinations/sftp/index.js.map +1 -1
- package/dist/destinations/sftp/sftp-wrapper.d.ts +19 -0
- package/dist/destinations/sftp/sftp-wrapper.js +102 -0
- package/dist/destinations/sftp/sftp-wrapper.js.map +1 -0
- package/dist/destinations/sftp/syncEvents/index.js +4 -4
- package/dist/destinations/sftp/syncEvents/index.js.map +1 -1
- package/dist/destinations/sftp/syncModelToSFTP/index.js +4 -4
- package/dist/destinations/sftp/syncModelToSFTP/index.js.map +1 -1
- package/dist/lib/AWS/utils.d.ts +4 -0
- package/dist/lib/AWS/utils.js +18 -1
- package/dist/lib/AWS/utils.js.map +1 -1
- package/package.json +5 -4
- package/dist/destinations/aws-kinesis/__test__/index.test.js +0 -63
- package/dist/destinations/aws-kinesis/__test__/index.test.js.map +0 -1
- package/dist/destinations/aws-kinesis/__test__/utils.test.d.ts +0 -1
- package/dist/destinations/aws-kinesis/__test__/utils.test.js +0 -49
- package/dist/destinations/aws-kinesis/__test__/utils.test.js.map +0 -1
- /package/dist/destinations/{aws-kinesis/__test__/index.test.d.ts → salesforce-marketing-cloud/_tests_/asyncDataExtension.test.d.ts} +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("../../../lib/AWS/utils");
|
|
4
|
+
const utils_2 = require("../utils");
|
|
3
5
|
const action = {
|
|
4
6
|
title: 'Send',
|
|
5
7
|
description: 'Send event to AWS Kinesis',
|
|
@@ -31,10 +33,15 @@ const action = {
|
|
|
31
33
|
description: 'The AWS region where the Kinesis stream is located',
|
|
32
34
|
type: 'string',
|
|
33
35
|
required: true,
|
|
34
|
-
default: { '@path': '$.properties.awsRegion' }
|
|
36
|
+
default: { '@path': '$.properties.awsRegion' },
|
|
37
|
+
choices: utils_1.AWS_REGIONS
|
|
35
38
|
}
|
|
36
39
|
},
|
|
37
|
-
perform: async (
|
|
40
|
+
perform: async (_requests, { settings, payload, statsContext, logger }) => {
|
|
41
|
+
await (0, utils_2.sendDataToKinesis)(settings, [payload], statsContext, logger);
|
|
42
|
+
},
|
|
43
|
+
performBatch: async (_requests, { settings, payload, statsContext, logger }) => {
|
|
44
|
+
await (0, utils_2.sendDataToKinesis)(settings, payload, statsContext, logger);
|
|
38
45
|
}
|
|
39
46
|
};
|
|
40
47
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/aws-kinesis/send/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/aws-kinesis/send/index.ts"],"names":[],"mappings":";;AAGA,kDAAoD;AACpD,oCAA4C;AAE5C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,2BAA2B;IACxC,mBAAmB,EAAE,2FAA2F;IAChH,MAAM,EAAE;QACN,OAAO,EAAE;YACP,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,iCAAiC;YAC9C,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC3B;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;SACpC;QACD,UAAU,EAAE;YACV,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,mDAAmD;YAChE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE;SAChD;QACD,SAAS,EAAE;YACT,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,oDAAoD;YACjE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;YAC9C,OAAO,EAAE,mBAAW;SACrB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QACxE,MAAM,IAAA,yBAAiB,EAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IACpE,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7E,MAAM,IAAA,yBAAiB,EAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAClE,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
import type { Settings } from './generated-types';
|
|
2
|
+
import type { Payload } from './send/generated-types';
|
|
3
|
+
import { Logger, StatsContext } from '@segment/actions-core/destination-kit';
|
|
1
4
|
export declare const validateIamRoleArnFormat: (arn: string) => boolean;
|
|
5
|
+
export declare const sendDataToKinesis: (settings: Settings, payloads: Payload[], _statsContext: StatsContext | undefined, logger: Logger | undefined) => Promise<void>;
|
|
6
|
+
export declare const populatePayload: (payloads: Payload[], streamToAwsRegion: Map<string, string>, streamToPayloads?: Map<string, Payload[][]>) => void;
|
|
7
|
+
export declare const sendToKinesis: (iamRoleArn: string, iamExternalId: string, streamToAwsRegion: Map<string, string>, streamToPayloads: Map<string, Payload[][]>, logger: Logger | undefined) => Promise<void>;
|
|
8
|
+
export declare const sendBatchToKinesis: (logger: Logger | undefined, streamName: string, awsRegion: string, credentials: any, batch: Payload[]) => Promise<void>;
|
|
@@ -1,9 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateIamRoleArnFormat = void 0;
|
|
3
|
+
exports.sendBatchToKinesis = exports.sendToKinesis = exports.populatePayload = exports.sendDataToKinesis = exports.validateIamRoleArnFormat = void 0;
|
|
4
|
+
const client_kinesis_1 = require("@aws-sdk/client-kinesis");
|
|
5
|
+
const sts_1 = require("../../lib/AWS/sts");
|
|
6
|
+
const utils_1 = require("../../lib/AWS/utils");
|
|
7
|
+
const MAX_RECORDS_PER_BATCH = 1000;
|
|
4
8
|
const validateIamRoleArnFormat = (arn) => {
|
|
5
9
|
const iamRoleArnRegex = /^arn:aws:iam::\d{12}:role\/[A-Za-z0-9+=,.@_\-/]+$/;
|
|
6
10
|
return iamRoleArnRegex.test(arn);
|
|
7
11
|
};
|
|
8
12
|
exports.validateIamRoleArnFormat = validateIamRoleArnFormat;
|
|
13
|
+
const sendDataToKinesis = async (settings, payloads, _statsContext, logger) => {
|
|
14
|
+
if (!Array.isArray(payloads) || payloads.length === 0) {
|
|
15
|
+
throw new Error('payloads must be a non-empty array');
|
|
16
|
+
}
|
|
17
|
+
const streamToAwsRegion = new Map();
|
|
18
|
+
const streamToPayloads = new Map();
|
|
19
|
+
(0, exports.populatePayload)(payloads, streamToAwsRegion, streamToPayloads);
|
|
20
|
+
const { iamRoleArn, iamExternalId } = settings;
|
|
21
|
+
await (0, exports.sendToKinesis)(iamRoleArn, iamExternalId, streamToAwsRegion, streamToPayloads, logger);
|
|
22
|
+
};
|
|
23
|
+
exports.sendDataToKinesis = sendDataToKinesis;
|
|
24
|
+
const populatePayload = (payloads, streamToAwsRegion, streamToPayloads = new Map()) => {
|
|
25
|
+
payloads.forEach((payload) => {
|
|
26
|
+
const { streamName, awsRegion } = payload;
|
|
27
|
+
if (!streamToAwsRegion.get(streamName)) {
|
|
28
|
+
streamToAwsRegion.set(streamName, awsRegion);
|
|
29
|
+
streamToPayloads.set(streamName, [[]]);
|
|
30
|
+
}
|
|
31
|
+
const batches = streamToPayloads.get(streamName);
|
|
32
|
+
let currentBatch = batches[batches.length - 1];
|
|
33
|
+
if (currentBatch.length >= MAX_RECORDS_PER_BATCH) {
|
|
34
|
+
currentBatch = [];
|
|
35
|
+
batches.push(currentBatch);
|
|
36
|
+
}
|
|
37
|
+
currentBatch.push(payload);
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
exports.populatePayload = populatePayload;
|
|
41
|
+
const sendToKinesis = async (iamRoleArn, iamExternalId, streamToAwsRegion, streamToPayloads, logger) => {
|
|
42
|
+
const credentials = await (0, sts_1.assumeRole)(iamRoleArn, iamExternalId, utils_1.APP_AWS_REGION);
|
|
43
|
+
for (const [streamName, batches] of streamToPayloads.entries()) {
|
|
44
|
+
const awsRegion = streamToAwsRegion.get(streamName);
|
|
45
|
+
for (const batch of batches) {
|
|
46
|
+
await (0, exports.sendBatchToKinesis)(logger, streamName, awsRegion, credentials, batch);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.sendToKinesis = sendToKinesis;
|
|
51
|
+
const sendBatchToKinesis = async (logger, streamName, awsRegion, credentials, batch) => {
|
|
52
|
+
const entries = batch.map((record) => ({
|
|
53
|
+
Data: Buffer.from(typeof record === 'string' ? record : JSON.stringify(record)),
|
|
54
|
+
PartitionKey: record.partitionKey
|
|
55
|
+
}));
|
|
56
|
+
try {
|
|
57
|
+
const command = new client_kinesis_1.PutRecordsCommand({
|
|
58
|
+
StreamName: streamName,
|
|
59
|
+
Records: entries
|
|
60
|
+
});
|
|
61
|
+
const client = new client_kinesis_1.KinesisClient({
|
|
62
|
+
region: awsRegion,
|
|
63
|
+
credentials: credentials
|
|
64
|
+
});
|
|
65
|
+
await client.send(command);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
logger?.crit('Failed to send batch to Kinesis:', error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
exports.sendBatchToKinesis = sendBatchToKinesis;
|
|
9
73
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/destinations/aws-kinesis/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/destinations/aws-kinesis/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,13 +21,13 @@ declare class CordialClient {
|
|
|
21
21
|
private readonly identityKeys;
|
|
22
22
|
constructor(settings: Settings, request: RequestClient);
|
|
23
23
|
extractIdentities(payload: IdentifiableRequest): IdentifiableRequest;
|
|
24
|
-
addContactActivity(payload: CreateContactactivityPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
25
|
-
upsertContact(payload: UpsertContactPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
26
|
-
addContactToList(payload: AddContactToListPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
27
|
-
removeContactFromList(payload: RemoveContactFromListPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
28
|
-
addProductToCart(payload: AddProductToCartPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
29
|
-
removeProductFromCart(payload: RemoveProductFromCartPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
30
|
-
upsertOrder(payload: UpsertOrder): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
31
|
-
mergeContacts(payload: MergeContacts): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
24
|
+
addContactActivity(payload: CreateContactactivityPayload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
25
|
+
upsertContact(payload: UpsertContactPayload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
26
|
+
addContactToList(payload: AddContactToListPayload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
27
|
+
removeContactFromList(payload: RemoveContactFromListPayload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
28
|
+
addProductToCart(payload: AddProductToCartPayload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
29
|
+
removeProductFromCart(payload: RemoveProductFromCartPayload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
30
|
+
upsertOrder(payload: UpsertOrder): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
31
|
+
mergeContacts(payload: MergeContacts): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
32
32
|
}
|
|
33
33
|
export default CordialClient;
|
|
@@ -4,9 +4,9 @@ declare abstract class DDApi {
|
|
|
4
4
|
private readonly apiUrl;
|
|
5
5
|
private readonly request;
|
|
6
6
|
protected constructor(settings: Settings, request: RequestClient);
|
|
7
|
-
protected get<TResponse>(endpoint: string, params?: Record<string, unknown>): Promise<import("@segment/actions-core").ModifiedResponse<TResponse>>;
|
|
8
|
-
protected post<ResponseType, RequestJSON>(endpoint: string, data: RequestJSON): Promise<import("@segment/actions-core").ModifiedResponse<ResponseType>>;
|
|
9
|
-
protected delete(endpoint: string): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
10
|
-
protected patch<ResponseType, RequestJSON>(endpoint: string, data: RequestJSON): Promise<import("@segment/actions-core").ModifiedResponse<ResponseType>>;
|
|
7
|
+
protected get<TResponse>(endpoint: string, params?: Record<string, unknown>): Promise<import("@segment/actions-core/src").ModifiedResponse<TResponse>>;
|
|
8
|
+
protected post<ResponseType, RequestJSON>(endpoint: string, data: RequestJSON): Promise<import("@segment/actions-core/src").ModifiedResponse<ResponseType>>;
|
|
9
|
+
protected delete(endpoint: string): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
10
|
+
protected patch<ResponseType, RequestJSON>(endpoint: string, data: RequestJSON): Promise<import("@segment/actions-core/src").ModifiedResponse<ResponseType>>;
|
|
11
11
|
}
|
|
12
12
|
export default DDApi;
|
|
@@ -4,6 +4,6 @@ import DDApi from '../dd-api';
|
|
|
4
4
|
import type { Payload } from '../../sendTransactionalEmail/generated-types';
|
|
5
5
|
declare class DDEmailApi extends DDApi {
|
|
6
6
|
constructor(settings: Settings, client: RequestClient);
|
|
7
|
-
sendTransactionalEmail(payload: Payload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
7
|
+
sendTransactionalEmail(payload: Payload): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
8
8
|
}
|
|
9
9
|
export default DDEmailApi;
|
|
@@ -20,7 +20,7 @@ export declare class PushSender extends TwilioMessageSender<PushPayload> {
|
|
|
20
20
|
get twilioToken(): string;
|
|
21
21
|
beforeSend(recepients: Recepient[]): Promise<void>;
|
|
22
22
|
bodyCustomDataBundle: BodyCustomDataBundle;
|
|
23
|
-
sendToRecepient(recipientDevice: Recepient): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
23
|
+
sendToRecepient(recipientDevice: Recepient): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
24
24
|
getBody(): Promise<BodyCustomDataBundle>;
|
|
25
25
|
private getTapActionPreset;
|
|
26
26
|
private removeEmpties;
|
|
@@ -23,7 +23,7 @@ export default class FacebookClient {
|
|
|
23
23
|
features: Features | undefined;
|
|
24
24
|
baseUrl: string;
|
|
25
25
|
constructor(request: RequestClient, adAccountId: string, features?: Features, statsContext?: StatsContext);
|
|
26
|
-
createAudience: (name: string) => Promise<import("@segment/actions-core").ModifiedResponse<AudienceCreationResponse>>;
|
|
26
|
+
createAudience: (name: string) => Promise<import("@segment/actions-core/src").ModifiedResponse<AudienceCreationResponse>>;
|
|
27
27
|
getSingleAudience: (audienceId: string) => Promise<{
|
|
28
28
|
data?: GetSingleAudienceResponse;
|
|
29
29
|
error?: FacebookResponseError;
|
|
@@ -36,7 +36,7 @@ export default class FacebookClient {
|
|
|
36
36
|
audienceId: string;
|
|
37
37
|
payloads: Payload[];
|
|
38
38
|
deleteUsers?: boolean;
|
|
39
|
-
}) => Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
39
|
+
}) => Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
40
40
|
private formatAdAccount;
|
|
41
41
|
}
|
|
42
42
|
export {};
|
|
@@ -4,4 +4,4 @@ export type BatchContactListItem = {
|
|
|
4
4
|
firstname: string;
|
|
5
5
|
lastname: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const createBatchTestEvents: (batchContactList: BatchContactListItem[]) => import("@segment/actions-core").SegmentEvent[];
|
|
7
|
+
export declare const createBatchTestEvents: (batchContactList: BatchContactListItem[]) => import("@segment/actions-core/src").SegmentEvent[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export type BatchContactListItem = {
|
|
2
2
|
mobileDeviceIds: string;
|
|
3
3
|
};
|
|
4
|
-
export declare const createBatchTestEvents: (batchContactList: BatchContactListItem[]) => import("@segment/actions-core").SegmentEvent[];
|
|
4
|
+
export declare const createBatchTestEvents: (batchContactList: BatchContactListItem[]) => import("@segment/actions-core/src").SegmentEvent[];
|
package/dist/destinations/first-party-dv360/removeFromAudContactInfo/_tests_/index.test.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export type BatchContactListItem = {
|
|
|
4
4
|
firstname: string;
|
|
5
5
|
lastname: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const createBatchTestEvents: (batchContactList: BatchContactListItem[]) => import("@segment/actions-core").SegmentEvent[];
|
|
7
|
+
export declare const createBatchTestEvents: (batchContactList: BatchContactListItem[]) => import("@segment/actions-core/src").SegmentEvent[];
|
|
@@ -10,4 +10,4 @@ export declare const endpoints: {
|
|
|
10
10
|
identifyPlayer: string;
|
|
11
11
|
};
|
|
12
12
|
export declare const playerProperties: Record<string, InputField>;
|
|
13
|
-
export declare const sendRequest: (request: RequestClient, path: string, settings: Settings, body: any, addSecretey?: boolean) => Promise<import("@segment/actions-core/
|
|
13
|
+
export declare const sendRequest: (request: RequestClient, path: string, settings: Settings, body: any, addSecretey?: boolean) => Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
@@ -9,5 +9,5 @@ export declare function getMobileStreamParams(api_secret: string, firebase_app_i
|
|
|
9
9
|
export declare function getWebStreamParams(api_secret: string, measurement_id?: string, client_id?: string): DataStreamParams;
|
|
10
10
|
export declare function sendData(request: RequestClient, search_params: string, payload: {
|
|
11
11
|
[k: string]: unknown;
|
|
12
|
-
}): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
12
|
+
}): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
13
13
|
export declare const formatConsent: (consent: Consent) => object | undefined;
|
|
@@ -4,7 +4,7 @@ import { Payload as Adjustayload } from './conversionAdjustmentUpload/generated-
|
|
|
4
4
|
import { AuthTokens } from '@segment/actions-core/destination-kit/parse-settings';
|
|
5
5
|
import { Settings } from './generated-types';
|
|
6
6
|
import { InsertRequest, SuccessMaybeErrorResponse } from './types';
|
|
7
|
-
export declare function send(request: RequestClient, settings: Settings, payloads: UploadPayload[] | Adjustayload[], isAdjustment: boolean, auth?: AuthTokens): Promise<import("@segment/actions-core").ModifiedResponse<SuccessMaybeErrorResponse>>;
|
|
7
|
+
export declare function send(request: RequestClient, settings: Settings, payloads: UploadPayload[] | Adjustayload[], isAdjustment: boolean, auth?: AuthTokens): Promise<import("@segment/actions-core/src").ModifiedResponse<SuccessMaybeErrorResponse>>;
|
|
8
8
|
export declare function getJSON(payloads: UploadPayload[] | Adjustayload[], settings: Settings): InsertRequest;
|
|
9
9
|
export declare function getCustomVarTypeChoices(): Array<{
|
|
10
10
|
value: string;
|
|
@@ -6,5 +6,5 @@ export type MappingSettings = {
|
|
|
6
6
|
dataFormat: string;
|
|
7
7
|
columns: string[];
|
|
8
8
|
};
|
|
9
|
-
declare function processData(request: RequestClient, events: Payload[]): Promise<(import("@segment/actions-core").ModifiedResponse<unknown> | undefined)[]>;
|
|
9
|
+
declare function processData(request: RequestClient, events: Payload[]): Promise<(import("@segment/actions-core/src").ModifiedResponse<unknown> | undefined)[]>;
|
|
10
10
|
export { processData };
|
|
@@ -6,5 +6,5 @@ export type MappingSettings = {
|
|
|
6
6
|
dataFormat: string;
|
|
7
7
|
columns: string[];
|
|
8
8
|
};
|
|
9
|
-
declare function processData(request: RequestClient, events: Payload[], syncMode: string): Promise<(import("@segment/actions-core").ModifiedResponse<unknown> | undefined)[]>;
|
|
9
|
+
declare function processData(request: RequestClient, events: Payload[], syncMode: string): Promise<(import("@segment/actions-core/src").ModifiedResponse<unknown> | undefined)[]>;
|
|
10
10
|
export { processData };
|
|
@@ -4,12 +4,12 @@ export declare class Client {
|
|
|
4
4
|
request: RequestClient;
|
|
5
5
|
objectType: string;
|
|
6
6
|
constructor(request: RequestClient, objectType: string);
|
|
7
|
-
readProperties(sensitive: boolean): Promise<import("@segment/actions-core").ModifiedResponse<ReadPropsResp>>;
|
|
8
|
-
createPropertiesDefinition(json: CreatePropsReq): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
9
|
-
batchObjectRequest(action: ObjReqType, objectType: string, json: ReadReq | UpsertReq | CreateReq): Promise<import("@segment/actions-core").ModifiedResponse<BatchObjResp>>;
|
|
10
|
-
batchAssociationsRequest(json: AssociationsReq, toObjectType: string): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
11
|
-
batchDissociationsRequest(json: AssociationsReq, toObjectType: string): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
12
|
-
readList(name: string): Promise<import("@segment/actions-core").ModifiedResponse<ReadListResp>>;
|
|
13
|
-
createList(json: CreateListReq): Promise<import("@segment/actions-core").ModifiedResponse<CreateListResp>>;
|
|
14
|
-
addRemoveFromList(listId: string, json: AddRemoveFromListReq): Promise<import("@segment/actions-core").ModifiedResponse<CreateListResp>>;
|
|
7
|
+
readProperties(sensitive: boolean): Promise<import("@segment/actions-core/src").ModifiedResponse<ReadPropsResp>>;
|
|
8
|
+
createPropertiesDefinition(json: CreatePropsReq): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
9
|
+
batchObjectRequest(action: ObjReqType, objectType: string, json: ReadReq | UpsertReq | CreateReq): Promise<import("@segment/actions-core/src").ModifiedResponse<BatchObjResp>>;
|
|
10
|
+
batchAssociationsRequest(json: AssociationsReq, toObjectType: string): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
11
|
+
batchDissociationsRequest(json: AssociationsReq, toObjectType: string): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
12
|
+
readList(name: string): Promise<import("@segment/actions-core/src").ModifiedResponse<ReadListResp>>;
|
|
13
|
+
createList(json: CreateListReq): Promise<import("@segment/actions-core/src").ModifiedResponse<CreateListResp>>;
|
|
14
|
+
addRemoveFromList(listId: string, json: AddRemoveFromListReq): Promise<import("@segment/actions-core/src").ModifiedResponse<CreateListResp>>;
|
|
15
15
|
}
|
|
@@ -6,8 +6,8 @@ import { Payload as RemoveProfilePayload } from './removeProfile/generated-types
|
|
|
6
6
|
import { Payload as TrackEventPayload } from './trackEvent/generated-types';
|
|
7
7
|
import { Payload as AddProfileToListPayload } from './addProfileToList/generated-types';
|
|
8
8
|
export declare function getListIdDynamicData(request: RequestClient): Promise<DynamicFieldResponse>;
|
|
9
|
-
export declare function addProfileToList(request: RequestClient, id: string, list_id: string | undefined): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
10
|
-
export declare function removeProfileFromList(request: RequestClient, ids: string[], list_id: string): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
9
|
+
export declare function addProfileToList(request: RequestClient, id: string, list_id: string | undefined): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
10
|
+
export declare function removeProfileFromList(request: RequestClient, ids: string[], list_id: string): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
11
11
|
export declare function createProfile(request: RequestClient, email: string | undefined, external_id: string | undefined, phone_number: string | undefined, additionalAttributes: AdditionalAttributes): Promise<any>;
|
|
12
12
|
export declare function buildHeaders(authKey: string): {
|
|
13
13
|
Authorization: string;
|
|
@@ -23,7 +23,7 @@ export declare const constructBulkProfileImportPayload: (profiles: KlaviyoProfil
|
|
|
23
23
|
};
|
|
24
24
|
export declare const sendImportJobRequest: (request: RequestClient, importJobPayload: {
|
|
25
25
|
data: ImportJobPayload;
|
|
26
|
-
}) => Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
26
|
+
}) => Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>>;
|
|
27
27
|
export declare function getProfiles(request: RequestClient, emails: string[] | undefined, external_ids: string[] | undefined, phoneNumbers: string[] | undefined): Promise<string[]>;
|
|
28
28
|
export declare function formatSubscribeProfile(email: string | undefined, phone_number: string | undefined, consented_at: string | number | undefined, historical_import?: boolean | undefined): SubscribeProfile;
|
|
29
29
|
export declare function formatSubscribeRequestBody(profiles: SubscribeProfile | SubscribeProfile[], list_id: string | undefined, custom_source: string | undefined, historical_import?: boolean | undefined): SubscribeEventData;
|
package/dist/destinations/launchdarkly-audiences/syncAudience/custom-audience-operations.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RequestClient } from '@segment/actions-core';
|
|
2
2
|
import type { Payload } from './generated-types';
|
|
3
3
|
import { Settings } from '../generated-types';
|
|
4
|
-
declare function processPayload(request: RequestClient, settings: Settings, events: Payload[]): Promise<import("@segment/actions-core").ModifiedResponse<unknown>[]>;
|
|
4
|
+
declare function processPayload(request: RequestClient, settings: Settings, events: Payload[]): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown>[]>;
|
|
5
5
|
export { processPayload };
|
|
@@ -2,4 +2,4 @@ import type { StatsContext } from '@segment/actions-core';
|
|
|
2
2
|
import { RequestClient } from '@segment/actions-core';
|
|
3
3
|
import type { Settings } from '../generated-types';
|
|
4
4
|
import type { Payload } from './generated-types';
|
|
5
|
-
export declare function processPayload(request: RequestClient, settings: Settings, payloads: Payload[], statsContext: StatsContext | undefined): Promise<import("@segment/actions-core").ModifiedResponse<unknown> | undefined>;
|
|
5
|
+
export declare function processPayload(request: RequestClient, settings: Settings, payloads: Payload[], statsContext: StatsContext | undefined): Promise<import("@segment/actions-core/src").ModifiedResponse<unknown> | undefined>;
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
+
const nock_1 = __importDefault(require("nock"));
|
|
7
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
8
|
+
const index_1 = __importDefault(require("../index"));
|
|
9
|
+
const testDestination = (0, actions_core_1.createTestIntegration)(index_1.default);
|
|
10
|
+
const timestamp = '2025-10-13T4:00:00.449Z';
|
|
11
|
+
const settings = {
|
|
12
|
+
subdomain: 'test123',
|
|
13
|
+
client_id: 'test123',
|
|
14
|
+
client_secret: 'test123',
|
|
15
|
+
account_id: 'test123'
|
|
16
|
+
};
|
|
17
|
+
const event = (0, actions_core_1.createTestEvent)({
|
|
18
|
+
timestamp: timestamp,
|
|
19
|
+
type: 'track',
|
|
20
|
+
userId: 'TonyStark001',
|
|
21
|
+
properties: {
|
|
22
|
+
id: 'ily3000'
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const payload = {
|
|
26
|
+
keys: {
|
|
27
|
+
id: 'version'
|
|
28
|
+
},
|
|
29
|
+
values: {
|
|
30
|
+
name: 'MARK42'
|
|
31
|
+
},
|
|
32
|
+
retlOnMappingSave: {
|
|
33
|
+
outputs: {
|
|
34
|
+
id: '1234567890'
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const authUrl = `https://${settings.subdomain}.auth.marketingcloudapis.com/v2/token`;
|
|
39
|
+
const externalKeyUrl = `https://${settings.subdomain}.rest.marketingcloudapis.com/data/v1/customobjects/1234567890`;
|
|
40
|
+
describe('Salesforce Marketing Cloud', () => {
|
|
41
|
+
describe('Async Data Extension', () => {
|
|
42
|
+
it('should send data to the correct endpoint', async () => {
|
|
43
|
+
(0, nock_1.default)(authUrl).post('').reply(200, {
|
|
44
|
+
access_token: 'test_access_token',
|
|
45
|
+
soap_instance_url: 'https://test123.soap.marketingcloudapis.com/'
|
|
46
|
+
});
|
|
47
|
+
(0, nock_1.default)(externalKeyUrl).get('').reply(200, {
|
|
48
|
+
key: '1234567890'
|
|
49
|
+
});
|
|
50
|
+
(0, nock_1.default)(`https://${settings.subdomain}.rest.marketingcloudapis.com`)
|
|
51
|
+
.post('/data/v1/async/dataextensions/key:1234567890/rows')
|
|
52
|
+
.reply(200, {
|
|
53
|
+
requestId: 'b241e73b-9b35-46ff-9c2d-e779ac5836a9',
|
|
54
|
+
resultMessages: []
|
|
55
|
+
});
|
|
56
|
+
const responses = await testDestination.testAction('asyncDataExtension', {
|
|
57
|
+
event,
|
|
58
|
+
settings,
|
|
59
|
+
mapping: payload
|
|
60
|
+
});
|
|
61
|
+
expect(responses.length).toBe(2);
|
|
62
|
+
expect(responses[1].data).toEqual({
|
|
63
|
+
requestId: 'b241e73b-9b35-46ff-9c2d-e779ac5836a9',
|
|
64
|
+
resultMessages: []
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
it('should throw an error if no data extension is connected', async () => {
|
|
68
|
+
await expect(testDestination.testAction('asyncDataExtension', {
|
|
69
|
+
event,
|
|
70
|
+
settings,
|
|
71
|
+
mapping: {
|
|
72
|
+
keys: {
|
|
73
|
+
id: 'version'
|
|
74
|
+
},
|
|
75
|
+
values: {
|
|
76
|
+
name: 'MARK42'
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
})).rejects.toThrowError('No Data Extension Connected');
|
|
80
|
+
});
|
|
81
|
+
it('should throw an error if no external Key is found', async () => {
|
|
82
|
+
nock_1.default.cleanAll();
|
|
83
|
+
(0, nock_1.default)(externalKeyUrl)
|
|
84
|
+
.get('')
|
|
85
|
+
.reply(200, { key: '' })
|
|
86
|
+
.persist();
|
|
87
|
+
nock_1.default.disableNetConnect();
|
|
88
|
+
await expect(testDestination.testAction('asyncDataExtension', {
|
|
89
|
+
event,
|
|
90
|
+
settings,
|
|
91
|
+
mapping: payload
|
|
92
|
+
})).rejects.toThrowError('No External Key found for Data Extension');
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=asyncDataExtension.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncDataExtension.test.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
keys: {
|
|
3
|
+
[k: string]: unknown;
|
|
4
|
+
};
|
|
5
|
+
values: {
|
|
6
|
+
[k: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
enable_batching?: boolean;
|
|
9
|
+
batch_size?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface RetlOnMappingSaveInputs {
|
|
12
|
+
operation: string;
|
|
13
|
+
dataExtensionId?: string;
|
|
14
|
+
categoryId?: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
isSendable?: boolean;
|
|
18
|
+
sendableCustomObjectField?: string;
|
|
19
|
+
sendableSubscriberField?: string;
|
|
20
|
+
columns?: {
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
isNullable: boolean;
|
|
24
|
+
isPrimaryKey: boolean;
|
|
25
|
+
length?: number;
|
|
26
|
+
scale?: number;
|
|
27
|
+
description?: string;
|
|
28
|
+
[k: string]: unknown;
|
|
29
|
+
}[];
|
|
30
|
+
}
|
|
31
|
+
export interface RetlOnMappingSaveOutputs {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}
|
|
35
|
+
export interface OnMappingSaveInputs {
|
|
36
|
+
operation: string;
|
|
37
|
+
dataExtensionId?: string;
|
|
38
|
+
categoryId?: string;
|
|
39
|
+
name?: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
isSendable?: boolean;
|
|
42
|
+
sendableCustomObjectField?: string;
|
|
43
|
+
sendableSubscriberField?: string;
|
|
44
|
+
columns?: {
|
|
45
|
+
name: string;
|
|
46
|
+
type: string;
|
|
47
|
+
isNullable: boolean;
|
|
48
|
+
isPrimaryKey: boolean;
|
|
49
|
+
length?: number;
|
|
50
|
+
scale?: number;
|
|
51
|
+
description?: string;
|
|
52
|
+
[k: string]: unknown;
|
|
53
|
+
}[];
|
|
54
|
+
}
|
|
55
|
+
export interface OnMappingSaveOutputs {
|
|
56
|
+
id: string;
|
|
57
|
+
name: string;
|
|
58
|
+
}
|
package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
4
|
+
const sfmc_properties_1 = require("../sfmc-properties");
|
|
5
|
+
const sfmc_operations_1 = require("../sfmc-operations");
|
|
6
|
+
const action = {
|
|
7
|
+
title: 'Send Event asynchronously to Data Extension',
|
|
8
|
+
description: 'Insert event records asynchronously as rows into a data extension in Salesforce Marketing Cloud.',
|
|
9
|
+
fields: {
|
|
10
|
+
keys: { ...sfmc_properties_1.keys, required: true, dynamic: true },
|
|
11
|
+
values: { ...sfmc_properties_1.values_dataExtensionFields, dynamic: true },
|
|
12
|
+
enable_batching: sfmc_properties_1.enable_batching,
|
|
13
|
+
batch_size: {
|
|
14
|
+
...sfmc_properties_1.batch_size,
|
|
15
|
+
default: 30000,
|
|
16
|
+
description: 'Maximum number of events to include in each batch for async operations. Defaults to 30000.',
|
|
17
|
+
unsafe_hidden: false
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
dynamicFields: {
|
|
21
|
+
keys: {
|
|
22
|
+
__keys__: async (request, { settings, payload }) => {
|
|
23
|
+
const dataExtensionId = payload.onMappingSave?.outputs?.id || payload.retlOnMappingSave?.outputs?.id || '';
|
|
24
|
+
return await (0, sfmc_operations_1.getDataExtensionFields)(request, settings.subdomain, settings, dataExtensionId, true);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
values: {
|
|
28
|
+
__keys__: async (request, { settings, payload }) => {
|
|
29
|
+
const dataExtensionId = payload.onMappingSave?.outputs?.id || payload.retlOnMappingSave?.outputs?.id || '';
|
|
30
|
+
return await (0, sfmc_operations_1.getDataExtensionFields)(request, settings.subdomain, settings, dataExtensionId, false);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
hooks: {
|
|
35
|
+
retlOnMappingSave: {
|
|
36
|
+
...sfmc_properties_1.dataExtensionHook
|
|
37
|
+
},
|
|
38
|
+
onMappingSave: {
|
|
39
|
+
...sfmc_properties_1.dataExtensionHook
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
perform: async (request, { settings, payload, hookOutputs }) => {
|
|
43
|
+
const dataExtensionId = hookOutputs?.onMappingSave?.outputs?.id || hookOutputs?.retlOnMappingSave?.outputs?.id;
|
|
44
|
+
if (!dataExtensionId) {
|
|
45
|
+
throw new actions_core_1.IntegrationError('No Data Extension Connected', 'INVALID_CONFIGURATION', 400);
|
|
46
|
+
}
|
|
47
|
+
const externalKey = await (0, sfmc_operations_1.getExternalKey)(request, settings, dataExtensionId);
|
|
48
|
+
if (!externalKey) {
|
|
49
|
+
throw new actions_core_1.IntegrationError('No External Key found for Data Extension', 'INVALID_CONFIGURATION', 400);
|
|
50
|
+
}
|
|
51
|
+
return (0, sfmc_operations_1.asyncInsertRowsV2)(request, settings.subdomain, [payload], externalKey);
|
|
52
|
+
},
|
|
53
|
+
performBatch: async (request, { settings, payload, hookOutputs }) => {
|
|
54
|
+
const dataExtensionId = hookOutputs?.onMappingSave?.outputs?.id || hookOutputs?.retlOnMappingSave?.outputs?.id;
|
|
55
|
+
if (!dataExtensionId) {
|
|
56
|
+
throw new actions_core_1.IntegrationError('No Data Extension Connected', 'INVALID_CONFIGURATION', 400);
|
|
57
|
+
}
|
|
58
|
+
const externalKey = await (0, sfmc_operations_1.getExternalKey)(request, settings, dataExtensionId);
|
|
59
|
+
if (!externalKey) {
|
|
60
|
+
throw new actions_core_1.IntegrationError('No External Key found for Data Extension', 'INVALID_CONFIGURATION', 400);
|
|
61
|
+
}
|
|
62
|
+
return (0, sfmc_operations_1.executeAsyncInsertRowsWithMultiStatus)(request, settings.subdomain, payload, externalKey);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.default = action;
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/asyncDataExtension/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const dataExtension_1 = __importDefault(require("./dataExtension"));
|
|
|
8
8
|
const contactDataExtension_1 = __importDefault(require("./contactDataExtension"));
|
|
9
9
|
const apiEvent_1 = __importDefault(require("./apiEvent"));
|
|
10
10
|
const dataExtensionV2_1 = __importDefault(require("./dataExtensionV2"));
|
|
11
|
+
const asyncDataExtension_1 = __importDefault(require("./asyncDataExtension"));
|
|
11
12
|
const contactDataExtensionV2_1 = __importDefault(require("./contactDataExtensionV2"));
|
|
12
13
|
const destination = {
|
|
13
14
|
name: 'Salesforce Marketing Cloud (Actions)',
|
|
@@ -68,7 +69,8 @@ const destination = {
|
|
|
68
69
|
contactDataExtension: contactDataExtension_1.default,
|
|
69
70
|
apiEvent: apiEvent_1.default,
|
|
70
71
|
dataExtensionV2: dataExtensionV2_1.default,
|
|
71
|
-
contactDataExtensionV2: contactDataExtensionV2_1.default
|
|
72
|
+
contactDataExtensionV2: contactDataExtensionV2_1.default,
|
|
73
|
+
asyncDataExtension: asyncDataExtension_1.default
|
|
72
74
|
}
|
|
73
75
|
};
|
|
74
76
|
exports.default = destination;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/salesforce-marketing-cloud/index.ts"],"names":[],"mappings":";;;;;AAEA,wDAA+B;AAC/B,oEAA2C;AAC3C,kFAAyD;AACzD,0DAAiC;AAIjC,wEAA+C;AAC/C,sFAA6D;AAM7D,MAAM,WAAW,GAAoC;IACnD,IAAI,EAAE,sCAAsC;IAC5C,IAAI,EAAE,oCAAoC;IAC1C,IAAI,EAAE,OAAO;IAEb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,SAAS,EAAE;gBACT,KAAK,EAAE,WAAW;gBAClB,WAAW,EACT,0aAA0a;gBAC5a,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,YAAY;gBACnB,WAAW,EACT,mOAAmO;gBACrO,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,SAAS,EAAE;gBACT,KAAK,EAAE,WAAW;gBAClB,WAAW,EACT,6NAA6N;gBAC/N,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,eAAe;gBACtB,WAAW,EACT,sIAAsI;gBACxI,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;aACf;SACF;QACD,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAClD,MAAM,OAAO,GAAG,WAAW,QAAQ,CAAC,SAAS,uCAAuC,CAAA;YACpF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAuB,GAAG,OAAO,EAAE,EAAE;gBAC5D,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,eAAe,CAAC;oBACxB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,UAAU,EAAE,oBAAoB;iBACjC,CAAC;aACH,CAAC,CAAA;YACF,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/C,CAAC;KACF;IACD,aAAa,CAAC,EAAE,IAAI,EAAE;QACpB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,EAAE,WAAW,EAAE;aAC7C;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE;QACP,OAAO,EAAP,iBAAO;QACP,aAAa,EAAb,uBAAa;QACb,oBAAoB,EAApB,8BAAoB;QACpB,QAAQ,EAAR,kBAAQ;QACR,eAAe,EAAf,yBAAe;QACf,sBAAsB,EAAtB,gCAAsB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/salesforce-marketing-cloud/index.ts"],"names":[],"mappings":";;;;;AAEA,wDAA+B;AAC/B,oEAA2C;AAC3C,kFAAyD;AACzD,0DAAiC;AAIjC,wEAA+C;AAC/C,8EAAqD;AACrD,sFAA6D;AAM7D,MAAM,WAAW,GAAoC;IACnD,IAAI,EAAE,sCAAsC;IAC5C,IAAI,EAAE,oCAAoC;IAC1C,IAAI,EAAE,OAAO;IAEb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,SAAS,EAAE;gBACT,KAAK,EAAE,WAAW;gBAClB,WAAW,EACT,0aAA0a;gBAC5a,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,YAAY;gBACnB,WAAW,EACT,mOAAmO;gBACrO,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,SAAS,EAAE;gBACT,KAAK,EAAE,WAAW;gBAClB,WAAW,EACT,6NAA6N;gBAC/N,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,eAAe;gBACtB,WAAW,EACT,sIAAsI;gBACxI,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;aACf;SACF;QACD,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAClD,MAAM,OAAO,GAAG,WAAW,QAAQ,CAAC,SAAS,uCAAuC,CAAA;YACpF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAuB,GAAG,OAAO,EAAE,EAAE;gBAC5D,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,eAAe,CAAC;oBACxB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,UAAU,EAAE,oBAAoB;iBACjC,CAAC;aACH,CAAC,CAAA;YACF,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/C,CAAC;KACF;IACD,aAAa,CAAC,EAAE,IAAI,EAAE;QACpB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,EAAE,WAAW,EAAE;aAC7C;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE;QACP,OAAO,EAAP,iBAAO;QACP,aAAa,EAAb,uBAAa;QACb,oBAAoB,EAApB,8BAAoB;QACpB,QAAQ,EAAR,kBAAQ;QACR,eAAe,EAAf,yBAAe;QACf,sBAAsB,EAAtB,gCAAsB;QACtB,kBAAkB,EAAlB,4BAAkB;KACnB;CACF,CAAA;AAED,kBAAe,WAAW,CAAA"}
|