@segment/action-destinations 3.453.1-staging-96646e7a8.0 → 3.455.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/destinations/aws-kinesis/send/generated-types.d.ts +1 -0
  2. package/dist/destinations/aws-kinesis/utils.js +2 -39
  3. package/dist/destinations/aws-kinesis/utils.js.map +1 -1
  4. package/dist/destinations/braze/index.js +5 -65
  5. package/dist/destinations/braze/index.js.map +1 -1
  6. package/dist/destinations/customerio/index.js +2 -3
  7. package/dist/destinations/customerio/index.js.map +1 -1
  8. package/dist/destinations/customerio/test-helper.js +0 -1
  9. package/dist/destinations/customerio/test-helper.js.map +1 -1
  10. package/dist/destinations/kafka/send/index.js +2 -2
  11. package/dist/destinations/kafka/send/index.js.map +1 -1
  12. package/dist/destinations/salesforce-marketing-cloud/index.d.ts +1 -1
  13. package/dist/destinations/salesforce-marketing-cloud/index.js +1 -3
  14. package/dist/destinations/salesforce-marketing-cloud/index.js.map +1 -1
  15. package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.d.ts +0 -1
  16. package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js +0 -23
  17. package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js.map +1 -1
  18. package/dist/destinations/the-trade-desk-crm/functions.d.ts +2 -2
  19. package/dist/destinations/the-trade-desk-crm/functions.js +18 -76
  20. package/dist/destinations/the-trade-desk-crm/functions.js.map +1 -1
  21. package/package.json +4 -4
  22. package/dist/destinations/braze/ecommerce/constants.d.ts +0 -8
  23. package/dist/destinations/braze/ecommerce/constants.js +0 -12
  24. package/dist/destinations/braze/ecommerce/constants.js.map +0 -1
  25. package/dist/destinations/braze/ecommerce/fields.d.ts +0 -26
  26. package/dist/destinations/braze/ecommerce/fields.js +0 -612
  27. package/dist/destinations/braze/ecommerce/fields.js.map +0 -1
  28. package/dist/destinations/braze/ecommerce/functions.d.ts +0 -10
  29. package/dist/destinations/braze/ecommerce/functions.js +0 -259
  30. package/dist/destinations/braze/ecommerce/functions.js.map +0 -1
  31. package/dist/destinations/braze/ecommerce/generated-types.d.ts +0 -41
  32. package/dist/destinations/braze/ecommerce/generated-types.js +0 -3
  33. package/dist/destinations/braze/ecommerce/generated-types.js.map +0 -1
  34. package/dist/destinations/braze/ecommerce/index.d.ts +0 -5
  35. package/dist/destinations/braze/ecommerce/index.js +0 -20
  36. package/dist/destinations/braze/ecommerce/index.js.map +0 -1
  37. package/dist/destinations/braze/ecommerce/types.d.ts +0 -125
  38. package/dist/destinations/braze/ecommerce/types.js +0 -3
  39. package/dist/destinations/braze/ecommerce/types.js.map +0 -1
  40. package/dist/destinations/braze/ecommerceSingleProduct/generated-types.d.ts +0 -39
  41. package/dist/destinations/braze/ecommerceSingleProduct/generated-types.js +0 -3
  42. package/dist/destinations/braze/ecommerceSingleProduct/generated-types.js.map +0 -1
  43. package/dist/destinations/braze/ecommerceSingleProduct/index.d.ts +0 -5
  44. package/dist/destinations/braze/ecommerceSingleProduct/index.js +0 -20
  45. package/dist/destinations/braze/ecommerceSingleProduct/index.js.map +0 -1
  46. package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.d.ts +0 -1
  47. package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.js +0 -96
  48. package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.js.map +0 -1
  49. package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.d.ts +0 -59
  50. package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.js +0 -3
  51. package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.js.map +0 -1
  52. package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.d.ts +0 -5
  53. package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.js +0 -78
  54. package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.js.map +0 -1
@@ -1,96 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- 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
@@ -1 +0,0 @@
1
- {"version":3,"file":"asyncDataExtension.test.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AACvB,wDAA8E;AAC9E,qDAAiC;AAGjC,MAAM,eAAe,GAAG,IAAA,oCAAqB,EAAC,eAAU,CAAC,CAAA;AACzD,MAAM,SAAS,GAAG,yBAAyB,CAAA;AAC3C,MAAM,QAAQ,GAAa;IACzB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;CACtB,CAAA;AAED,MAAM,KAAK,GAAG,IAAA,8BAAe,EAAC;IAC5B,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE;QACV,EAAE,EAAE,SAAS;KACd;CACF,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG;IACd,IAAI,EAAE;QACJ,EAAE,EAAE,SAAS;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;KACf;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE;YACP,EAAE,EAAE,YAAY;SACjB;KACF;CACF,CAAA;AAED,MAAM,OAAO,GAAG,WAAW,QAAQ,CAAC,SAAS,uCAAuC,CAAA;AACpF,MAAM,cAAc,GAAG,WAAW,QAAQ,CAAC,SAAS,+DAA+D,CAAA;AAEnH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YAExD,IAAA,cAAI,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChC,YAAY,EAAE,mBAAmB;gBACjC,iBAAiB,EAAE,8CAA8C;aAClE,CAAC,CAAA;YAGF,IAAA,cAAI,EAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtC,GAAG,EAAE,YAAY;aAClB,CAAC,CAAA;YAGF,IAAA,cAAI,EAAC,WAAW,QAAQ,CAAC,SAAS,8BAA8B,CAAC;iBAC9D,IAAI,CAAC,mDAAmD,CAAC;iBACzD,KAAK,CAAC,GAAG,EAAE;gBACV,SAAS,EAAE,sCAAsC;gBACjD,cAAc,EAAE,EAAE;aACnB,CAAC,CAAA;YAEJ,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBACvE,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE,OAAO;aACjB,CAAC,CAAA;YAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBAChC,SAAS,EAAE,sCAAsC;gBACjD,cAAc,EAAE,EAAE;aACnB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBAC/C,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,EAAE,EAAE,SAAS;qBACd;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,cAAI,CAAC,QAAQ,EAAE,CAAA;YAEf,IAAA,cAAI,EAAC,cAAc,CAAC;iBACjB,GAAG,CAAC,EAAE,CAAC;iBACP,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;iBACvB,OAAO,EAAE,CAAA;YAGZ,cAAI,CAAC,iBAAiB,EAAE,CAAA;YAExB,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBAC/C,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE,OAAO;aACjB,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,59 +0,0 @@
1
- export interface Payload {
2
- keys: {
3
- [k: string]: unknown;
4
- };
5
- values: {
6
- [k: string]: unknown;
7
- };
8
- enable_batching?: boolean;
9
- batch_bytes?: number;
10
- batch_size?: number;
11
- }
12
- export interface RetlOnMappingSaveInputs {
13
- operation: string;
14
- dataExtensionId?: string;
15
- categoryId?: string;
16
- name?: string;
17
- description?: string;
18
- isSendable?: boolean;
19
- sendableCustomObjectField?: string;
20
- sendableSubscriberField?: string;
21
- columns?: {
22
- name: string;
23
- type: string;
24
- isNullable: boolean;
25
- isPrimaryKey: boolean;
26
- length?: number;
27
- scale?: number;
28
- description?: string;
29
- [k: string]: unknown;
30
- }[];
31
- }
32
- export interface RetlOnMappingSaveOutputs {
33
- id: string;
34
- name: string;
35
- }
36
- export interface OnMappingSaveInputs {
37
- operation: string;
38
- dataExtensionId?: string;
39
- categoryId?: string;
40
- name?: string;
41
- description?: string;
42
- isSendable?: boolean;
43
- sendableCustomObjectField?: string;
44
- sendableSubscriberField?: string;
45
- columns?: {
46
- name: string;
47
- type: string;
48
- isNullable: boolean;
49
- isPrimaryKey: boolean;
50
- length?: number;
51
- scale?: number;
52
- description?: string;
53
- [k: string]: unknown;
54
- }[];
55
- }
56
- export interface OnMappingSaveOutputs {
57
- id: string;
58
- name: string;
59
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=generated-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/asyncDataExtension/generated-types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import { ActionDefinition } from '@segment/actions-core';
2
- import type { Settings } from '../generated-types';
3
- import type { Payload } from './generated-types';
4
- declare const action: ActionDefinition<Settings, Payload>;
5
- export default action;
@@ -1,78 +0,0 @@
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: 'Upsert 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: {
13
- default: true,
14
- unsafe_hidden: true,
15
- ...sfmc_properties_1.enable_batching
16
- },
17
- batch_bytes: {
18
- label: 'Batch Bytes',
19
- description: 'The maximum size of a batch in bytes.',
20
- type: 'number',
21
- unsafe_hidden: true,
22
- required: false,
23
- default: 6000000
24
- },
25
- batch_size: {
26
- ...sfmc_properties_1.batch_size,
27
- minimum: 10,
28
- default: 30000,
29
- maximum: 32000,
30
- description: 'Maximum number of events to include in each batch for async operations. Defaults to 30000.',
31
- unsafe_hidden: false
32
- }
33
- },
34
- dynamicFields: {
35
- keys: {
36
- __keys__: async (request, { settings, payload }) => {
37
- const dataExtensionId = payload.onMappingSave?.outputs?.id || payload.retlOnMappingSave?.outputs?.id || '';
38
- return await (0, sfmc_operations_1.getDataExtensionFields)(request, settings.subdomain, settings, dataExtensionId, true);
39
- }
40
- },
41
- values: {
42
- __keys__: async (request, { settings, payload }) => {
43
- const dataExtensionId = payload.onMappingSave?.outputs?.id || payload.retlOnMappingSave?.outputs?.id || '';
44
- return await (0, sfmc_operations_1.getDataExtensionFields)(request, settings.subdomain, settings, dataExtensionId, false);
45
- }
46
- }
47
- },
48
- hooks: {
49
- retlOnMappingSave: {
50
- ...sfmc_properties_1.dataExtensionHook
51
- },
52
- onMappingSave: {
53
- ...sfmc_properties_1.dataExtensionHook
54
- }
55
- },
56
- perform: async (request, { settings, payload, hookOutputs }) => {
57
- const dataExtensionId = hookOutputs?.onMappingSave?.outputs?.id ||
58
- hookOutputs?.retlOnMappingSave?.outputs?.id ||
59
- '7a0270c1-25d0-f011-a5ad-d4f5ef42f423';
60
- if (!dataExtensionId) {
61
- throw new actions_core_1.IntegrationError('No Data Extension Connected', 'INVALID_CONFIGURATION', 400);
62
- }
63
- console.log('Async Data Extension - perform - dataExtensionId:', dataExtensionId);
64
- return (0, sfmc_operations_1.asyncUpsertRowsV2)(request, settings.subdomain, [payload], dataExtensionId);
65
- },
66
- performBatch: async (request, { settings, payload, hookOutputs }) => {
67
- const dataExtensionId = hookOutputs?.onMappingSave?.outputs?.id ||
68
- hookOutputs?.retlOnMappingSave?.outputs?.id ||
69
- '7a0270c1-25d0-f011-a5ad-d4f5ef42f423';
70
- console.log('Async Data Extension - performBatch - dataExtensionId:', dataExtensionId);
71
- if (!dataExtensionId) {
72
- throw new actions_core_1.IntegrationError('No Data Extension Connected', 'INVALID_CONFIGURATION', 400);
73
- }
74
- return (0, sfmc_operations_1.asyncUpsertRowsV2)(request, settings.subdomain, payload, dataExtensionId);
75
- }
76
- };
77
- exports.default = action;
78
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/asyncDataExtension/index.ts"],"names":[],"mappings":"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"}