@segment/action-destinations 3.267.0 → 3.267.1-staging-56c8f3280

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 (93) hide show
  1. package/dist/destinations/amazon-ads/generated-types.d.ts +9 -0
  2. package/dist/destinations/amazon-ads/index.d.ts +2 -2
  3. package/dist/destinations/amazon-ads/index.js +164 -6
  4. package/dist/destinations/amazon-ads/index.js.map +1 -1
  5. package/dist/destinations/amazon-ads/syncAudiences/generated-types.d.ts +13 -0
  6. package/dist/destinations/amazon-ads/syncAudiences/index.js +201 -7
  7. package/dist/destinations/amazon-ads/syncAudiences/index.js.map +1 -1
  8. package/dist/destinations/amazon-ads/types.d.ts +25 -0
  9. package/dist/destinations/amazon-ads/utils.d.ts +31 -0
  10. package/dist/destinations/amazon-ads/utils.js +18 -0
  11. package/dist/destinations/amazon-ads/utils.js.map +1 -0
  12. package/dist/destinations/engage/utils/track.d.ts +17 -17
  13. package/dist/destinations/engage-messaging-sendgrid/index.d.ts +4 -3
  14. package/dist/destinations/engage-messaging-sendgrid/index.js +68 -16
  15. package/dist/destinations/engage-messaging-sendgrid/index.js.map +1 -1
  16. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.d.ts +22 -0
  17. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.js +189 -0
  18. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.js.map +1 -0
  19. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.d.ts +16 -0
  20. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.js +3 -0
  21. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.js.map +1 -0
  22. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/index.d.ts +5 -0
  23. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/index.js +29 -0
  24. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/index.js.map +1 -0
  25. package/dist/destinations/engage-messaging-sendgrid/sendEmail/SendEmailPerformer.d.ts +43 -0
  26. package/dist/destinations/engage-messaging-sendgrid/sendEmail/SendEmailPerformer.js +419 -0
  27. package/dist/destinations/engage-messaging-sendgrid/sendEmail/SendEmailPerformer.js.map +1 -0
  28. package/dist/destinations/engage-messaging-sendgrid/sendEmail/UnlayerResponse.d.ts +12 -0
  29. package/dist/destinations/engage-messaging-sendgrid/sendEmail/UnlayerResponse.js +3 -0
  30. package/dist/destinations/engage-messaging-sendgrid/sendEmail/UnlayerResponse.js.map +1 -0
  31. package/dist/destinations/engage-messaging-sendgrid/sendEmail/generated-types.d.ts +56 -0
  32. package/dist/destinations/engage-messaging-sendgrid/sendEmail/generated-types.js +3 -0
  33. package/dist/destinations/engage-messaging-sendgrid/sendEmail/generated-types.js.map +1 -0
  34. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.d.ts +5 -0
  35. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.js +258 -0
  36. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.js.map +1 -0
  37. package/dist/destinations/engage-messaging-sendgrid/sendEmail/insertEmailPreviewText.d.ts +1 -0
  38. package/dist/destinations/engage-messaging-sendgrid/sendEmail/insertEmailPreviewText.js +23 -0
  39. package/dist/destinations/engage-messaging-sendgrid/sendEmail/insertEmailPreviewText.js.map +1 -0
  40. package/dist/destinations/engage-messaging-sendgrid/sendEmail/isRestrictedDomain.d.ts +1 -0
  41. package/dist/destinations/engage-messaging-sendgrid/sendEmail/isRestrictedDomain.js +14 -0
  42. package/dist/destinations/engage-messaging-sendgrid/sendEmail/isRestrictedDomain.js.map +1 -0
  43. package/dist/destinations/engage-messaging-twilio/index.d.ts +4 -3
  44. package/dist/destinations/engage-messaging-twilio/index.js +169 -15
  45. package/dist/destinations/engage-messaging-twilio/index.js.map +1 -1
  46. package/dist/destinations/engage-messaging-twilio/sendMobilePush/PushSender.d.ts +29 -0
  47. package/dist/destinations/engage-messaging-twilio/sendMobilePush/PushSender.js +169 -0
  48. package/dist/destinations/engage-messaging-twilio/sendMobilePush/PushSender.js.map +1 -0
  49. package/dist/destinations/engage-messaging-twilio/sendMobilePush/generated-types.d.ts +39 -0
  50. package/dist/destinations/engage-messaging-twilio/sendMobilePush/generated-types.js +3 -0
  51. package/dist/destinations/engage-messaging-twilio/sendMobilePush/generated-types.js.map +1 -0
  52. package/dist/destinations/engage-messaging-twilio/sendMobilePush/index.d.ts +5 -0
  53. package/dist/destinations/engage-messaging-twilio/sendMobilePush/index.js +251 -0
  54. package/dist/destinations/engage-messaging-twilio/sendMobilePush/index.js.map +1 -0
  55. package/dist/destinations/engage-messaging-twilio/sendSms/SmsMessageSender.d.ts +9 -0
  56. package/dist/destinations/engage-messaging-twilio/sendSms/SmsMessageSender.js +72 -0
  57. package/dist/destinations/engage-messaging-twilio/sendSms/SmsMessageSender.js.map +1 -0
  58. package/dist/destinations/engage-messaging-twilio/sendSms/generated-types.d.ts +27 -0
  59. package/dist/destinations/engage-messaging-twilio/sendSms/generated-types.js +3 -0
  60. package/dist/destinations/engage-messaging-twilio/sendSms/generated-types.js.map +1 -0
  61. package/dist/destinations/engage-messaging-twilio/sendSms/index.d.ts +5 -0
  62. package/dist/destinations/engage-messaging-twilio/sendSms/index.js +163 -0
  63. package/dist/destinations/engage-messaging-twilio/sendSms/index.js.map +1 -0
  64. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/WhatsAppMessageSender.d.ts +9 -0
  65. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/WhatsAppMessageSender.js +89 -0
  66. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/WhatsAppMessageSender.js.map +1 -0
  67. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/generated-types.d.ts +25 -0
  68. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/generated-types.js +3 -0
  69. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/generated-types.js.map +1 -0
  70. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.d.ts +5 -0
  71. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.js +137 -0
  72. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.js.map +1 -0
  73. package/dist/destinations/engage-messaging-twilio/utils/PhoneMessageSender.d.ts +16 -0
  74. package/dist/destinations/engage-messaging-twilio/utils/PhoneMessageSender.js +71 -0
  75. package/dist/destinations/engage-messaging-twilio/utils/PhoneMessageSender.js.map +1 -0
  76. package/dist/destinations/engage-messaging-twilio/utils/TwilioMessageSender.d.ts +16 -0
  77. package/dist/destinations/engage-messaging-twilio/utils/TwilioMessageSender.js +115 -0
  78. package/dist/destinations/engage-messaging-twilio/utils/TwilioMessageSender.js.map +1 -0
  79. package/dist/destinations/engage-messaging-twilio/utils/index.d.ts +2 -0
  80. package/dist/destinations/engage-messaging-twilio/utils/index.js +15 -0
  81. package/dist/destinations/engage-messaging-twilio/utils/index.js.map +1 -0
  82. package/dist/destinations/engage-messaging-twilio/utils/types.d.ts +23 -0
  83. package/dist/destinations/engage-messaging-twilio/utils/types.js +3 -0
  84. package/dist/destinations/engage-messaging-twilio/utils/types.js.map +1 -0
  85. package/dist/destinations/index.js.map +1 -1
  86. package/dist/destinations/moloco-rmp/common/convert.js +29 -17
  87. package/dist/destinations/moloco-rmp/common/convert.js.map +1 -1
  88. package/dist/destinations/xtremepush/identify/index.js +2 -2
  89. package/dist/destinations/xtremepush/identify/index.js.map +1 -1
  90. package/dist/destinations/xtremepush/index.js.map +1 -1
  91. package/dist/destinations/xtremepush/track/index.js +2 -2
  92. package/dist/destinations/xtremepush/track/index.js.map +1 -1
  93. package/package.json +4 -4
@@ -1,12 +1,12 @@
1
1
  import { ContextFromDecorator } from './operationTracking';
2
2
  export declare const track: ((decoratorArgs?: ({
3
+ shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
4
+ } & {
3
5
  onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
4
- } & import("./operationTracking").OperationLoggerDecoratorArgs & {
6
+ } & {
5
7
  onTry?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
6
8
  onFinally?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
7
- } & {
8
- shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
9
- } & {
9
+ } & import("./operationTracking").OperationLoggerDecoratorArgs & {
10
10
  wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
11
11
  }) | undefined) => import("./operationTracking").GenericMethodDecorator<(this: any, ...args: any[]) => any>) & {
12
12
  getCurrentOperation(classInstance: any): (import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
@@ -15,8 +15,13 @@ export declare const track: ((decoratorArgs?: ({
15
15
  }) | undefined;
16
16
  } & {
17
17
  _contextType: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
18
- start?: number | undefined;
19
- duration?: number | undefined;
18
+ tags: string[];
19
+ sharedContext: {
20
+ tags: string[];
21
+ };
22
+ decoratorArgs?: {
23
+ shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
24
+ } | undefined;
20
25
  } & {
21
26
  decoratorArgs?: {
22
27
  onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
@@ -25,10 +30,8 @@ export declare const track: ((decoratorArgs?: ({
25
30
  parent?: (import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & any) | undefined;
26
31
  sharedContext: {};
27
32
  } & {
28
- logs: string[];
29
- logMetadata?: Record<string, unknown> | undefined;
30
- decoratorArgs?: import("./operationTracking").OperationLoggerDecoratorArgs | undefined;
31
- sharedContext: import("./operationTracking").OperationLoggerSharedContext;
33
+ start?: number | undefined;
34
+ duration?: number | undefined;
32
35
  } & {
33
36
  onFinally: (() => void)[];
34
37
  decoratorArgs?: {
@@ -36,13 +39,10 @@ export declare const track: ((decoratorArgs?: ({
36
39
  onFinally?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
37
40
  } | undefined;
38
41
  } & {
39
- tags: string[];
40
- sharedContext: {
41
- tags: string[];
42
- };
43
- decoratorArgs?: {
44
- shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
45
- } | undefined;
42
+ logs: string[];
43
+ logMetadata?: Record<string, unknown> | undefined;
44
+ decoratorArgs?: import("./operationTracking").OperationLoggerDecoratorArgs | undefined;
45
+ sharedContext: import("./operationTracking").OperationLoggerSharedContext;
46
46
  } & {
47
47
  decoratorArgs?: {
48
48
  wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
@@ -1,3 +1,4 @@
1
- import destination from '../engage/sendgrid';
2
- export default destination;
3
- export * from '../engage/sendgrid';
1
+ import type { DestinationDefinition } from '@segment/actions-core';
2
+ import type { Settings } from './generated-types';
3
+ export declare const destinationDefinition: DestinationDefinition<Settings>;
4
+ export default destinationDefinition;
@@ -1,19 +1,71 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
2
  Object.defineProperty(exports, "__esModule", { value: true });
16
- const sendgrid_1 = __importDefault(require("../engage/sendgrid"));
17
- exports.default = sendgrid_1.default;
18
- __exportStar(require("../engage/sendgrid"), exports);
3
+ exports.destinationDefinition = void 0;
4
+ const sendEmail_1 = require("./sendEmail");
5
+ const previewApiLookup_1 = require("./previewApiLookup");
6
+ exports.destinationDefinition = {
7
+ name: 'Engage Messaging SendGrid',
8
+ slug: 'actions-personas-messaging-sendgrid',
9
+ mode: 'cloud',
10
+ description: 'This is an Engage specific action to send an email',
11
+ authentication: {
12
+ scheme: 'custom',
13
+ fields: {
14
+ unlayerApiKey: {
15
+ label: 'Unlayer API Key',
16
+ type: 'password',
17
+ description: 'The API key for your Unlayer account'
18
+ },
19
+ sendGridApiKey: {
20
+ label: 'API Key',
21
+ type: 'password',
22
+ description: 'The Api Key for your SendGrid account',
23
+ required: true
24
+ },
25
+ profileApiEnvironment: {
26
+ label: 'Profile API Environment',
27
+ description: 'Profile API Environment',
28
+ type: 'string',
29
+ required: true
30
+ },
31
+ profileApiAccessToken: {
32
+ label: 'Profile API Access Token',
33
+ description: 'Profile API Access Token',
34
+ type: 'password',
35
+ required: true
36
+ },
37
+ spaceId: {
38
+ label: 'Space ID',
39
+ description: 'Space ID',
40
+ type: 'string',
41
+ required: true
42
+ },
43
+ sourceId: {
44
+ label: 'Source ID',
45
+ description: 'Source ID',
46
+ type: 'string',
47
+ required: true
48
+ },
49
+ region: {
50
+ label: 'Region',
51
+ description: 'The region where the email is originating from',
52
+ type: 'string',
53
+ choices: [
54
+ { value: 'us-west-2', label: 'US West 2' },
55
+ { value: 'eu-west-1', label: 'EU West 1' }
56
+ ],
57
+ default: 'us-west-2',
58
+ required: false
59
+ }
60
+ },
61
+ testAuthentication: (request) => {
62
+ return request('https://api.sendgrid.com/v3/mail_settings');
63
+ }
64
+ },
65
+ actions: {
66
+ sendEmail: sendEmail_1.actionDefinition,
67
+ previewApiLookup: previewApiLookup_1.actionDefinition
68
+ }
69
+ };
70
+ exports.default = exports.destinationDefinition;
19
71
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/engage-messaging-sendgrid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOA,kEAA4C;AAC5C,kBAAe,kBAAW,CAAA;AAC1B,qDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/engage-messaging-sendgrid/index.ts"],"names":[],"mappings":";;;AAEA,2CAA2D;AAC3D,yDAAyE;AAE5D,QAAA,qBAAqB,GAAoC;IACpE,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,qCAAqC;IAC3C,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,oDAAoD;IACjE,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,aAAa,EAAE;gBACb,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,sCAAsC;aACpD;YACD,cAAc,EAAE;gBACd,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,uCAAuC;gBACpD,QAAQ,EAAE,IAAI;aACf;YACD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,yBAAyB;gBAChC,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,0BAA0B;gBACjC,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,gDAAgD;gBAC7D,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC1C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;iBAC3C;gBACD,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,kBAAkB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC9B,OAAO,OAAO,CAAC,2CAA2C,CAAC,CAAA;QAC7D,CAAC;KACF;IACD,OAAO,EAAE;QACP,SAAS,EAAT,4BAAS;QACT,gBAAgB,EAAhB,mCAAgB;KACjB;CACF,CAAA;AAED,kBAAe,6BAAqB,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { InputField } from '@segment/actions-core';
2
+ import { RequestClient } from '@segment/actions-core';
3
+ import { Logger, StatsClient, DataFeedCache } from '@segment/actions-core/destination-kit';
4
+ import type { Settings } from '../generated-types';
5
+ import { Profile } from '@segment/actions-shared';
6
+ export declare type ApiLookupConfig = {
7
+ id?: string | undefined;
8
+ name: string;
9
+ url: string;
10
+ method: string;
11
+ cacheTtl: number;
12
+ body?: string | undefined;
13
+ headers?: object | undefined;
14
+ responseType: string;
15
+ shouldRetryOnRetryableError?: boolean;
16
+ };
17
+ export declare const getRequestId: ({ method, url, body, headers }: ApiLookupConfig) => string;
18
+ export declare const getCachedResponse: ({ responseType }: ApiLookupConfig, requestId: string, dataFeedCache: DataFeedCache, datafeedTags: string[]) => Promise<any>;
19
+ export declare const performApiLookup: (request: RequestClient, apiLookupConfig: ApiLookupConfig, profile: Profile, statsClient: StatsClient | undefined, tags: string[], settings: Settings, logger?: Logger | undefined, dataFeedCache?: DataFeedCache | undefined) => Promise<any>;
20
+ export declare const apiLookupActionFields: Record<string, InputField>;
21
+ export declare const apiLookupLiquidKey = "datafeeds";
22
+ export declare const FLAGON_NAME_DATA_FEEDS = "is-datafeeds-enabled";
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FLAGON_NAME_DATA_FEEDS = exports.apiLookupLiquidKey = exports.apiLookupActionFields = exports.performApiLookup = exports.getCachedResponse = exports.getRequestId = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const actions_core_1 = require("@segment/actions-core");
6
+ const liquidjs_1 = require("liquidjs");
7
+ const Liquid = new liquidjs_1.Liquid();
8
+ const renderLiquidFields = async ({ url, body }, profile, datafeedTags, logDataFeedError) => {
9
+ let renderedUrl;
10
+ let renderedBody;
11
+ try {
12
+ renderedUrl = await Liquid.parseAndRender(url, { profile });
13
+ }
14
+ catch (error) {
15
+ logDataFeedError('URL liquid render failuere', error);
16
+ datafeedTags.push('error:true', 'reason:rendering_failure', 'rendering:url');
17
+ throw new actions_core_1.IntegrationError('Unable to parse data feed url', 'DATA_FEED_RENDERING_ERROR', 400);
18
+ }
19
+ try {
20
+ renderedBody = body ? await Liquid.parseAndRender(body, { profile }) : undefined;
21
+ }
22
+ catch (error) {
23
+ logDataFeedError('Body liquid render failure', error);
24
+ datafeedTags.push('error:true', 'reason:rendering_failure', 'rendering:body');
25
+ throw new actions_core_1.IntegrationError('Unable to parse email api lookup body', 'DATA_FEED_RENDERING_ERROR', 400);
26
+ }
27
+ return {
28
+ renderedUrl,
29
+ renderedBody
30
+ };
31
+ };
32
+ const getRequestId = ({ method, url, body, headers }) => {
33
+ const requestHash = crypto_1.createHash('sha256');
34
+ requestHash.update(`${method}${url}${body}${JSON.stringify(headers)}`);
35
+ const requestId = requestHash.digest('hex');
36
+ return requestId;
37
+ };
38
+ exports.getRequestId = getRequestId;
39
+ const getCachedResponse = async ({ responseType }, requestId, dataFeedCache, datafeedTags) => {
40
+ const cachedResponse = await dataFeedCache.getRequestResponse(requestId);
41
+ if (!cachedResponse) {
42
+ datafeedTags.push('cache_hit:false');
43
+ return;
44
+ }
45
+ datafeedTags.push('cache_hit:true');
46
+ if (responseType === 'json') {
47
+ return JSON.parse(cachedResponse);
48
+ }
49
+ return cachedResponse;
50
+ };
51
+ exports.getCachedResponse = getCachedResponse;
52
+ const performApiLookup = async (request, apiLookupConfig, profile, statsClient, tags, settings, logger, dataFeedCache) => {
53
+ const { id, method, headers, cacheTtl, name, shouldRetryOnRetryableError = true } = apiLookupConfig;
54
+ const datafeedTags = [
55
+ ...tags,
56
+ `datafeed_id:${id}`,
57
+ `datafeed_name:${name}`,
58
+ `space_id:${settings.spaceId}`,
59
+ `cache_ttl_greater_than_0:${cacheTtl > 0}`,
60
+ `retry_enabled:${shouldRetryOnRetryableError}`
61
+ ];
62
+ const logDataFeedError = (message, error) => {
63
+ logger?.error(`TE Messaging: Data feed error - message: ${message} - data feed name: ${name} - data feed id: ${id} - space id: ${settings.spaceId} - raw error: ${error}`);
64
+ };
65
+ try {
66
+ const { renderedUrl, renderedBody } = await renderLiquidFields(apiLookupConfig, profile, datafeedTags, logDataFeedError);
67
+ const requestId = exports.getRequestId({ ...apiLookupConfig, url: renderedUrl, body: renderedBody });
68
+ if (cacheTtl > 0 && !dataFeedCache) {
69
+ logDataFeedError('Data feed cache not available and cache needed');
70
+ datafeedTags.push('cache_set:false');
71
+ throw new actions_core_1.IntegrationError('Data feed cache not available and cache needed', 'DATA_FEED_CACHE_NOT_AVAILABLE', 400);
72
+ }
73
+ if (cacheTtl > 0 && dataFeedCache) {
74
+ const cachedResponse = await exports.getCachedResponse(apiLookupConfig, requestId, dataFeedCache, datafeedTags);
75
+ if (cachedResponse) {
76
+ datafeedTags.push('error:false');
77
+ return cachedResponse;
78
+ }
79
+ }
80
+ let data;
81
+ try {
82
+ const res = await request(renderedUrl, {
83
+ headers: headers ?? undefined,
84
+ timeout: 3000,
85
+ method: method,
86
+ body: renderedBody,
87
+ skipResponseCloning: true
88
+ });
89
+ data = await res.data;
90
+ }
91
+ catch (error) {
92
+ const respError = error.response;
93
+ logDataFeedError('Data feed call failure', error);
94
+ datafeedTags.push(`error:true`, `error_status:${respError?.status}`, 'reason:api_call_failure');
95
+ if (shouldRetryOnRetryableError) {
96
+ throw error;
97
+ }
98
+ return {};
99
+ }
100
+ if (cacheTtl > 0 && dataFeedCache) {
101
+ const dataString = JSON.stringify(data);
102
+ const size = Buffer.byteLength(dataString, 'utf-8');
103
+ if (size > dataFeedCache.maxResponseSizeBytes) {
104
+ datafeedTags.push('error:true', 'reason:response_size_too_big');
105
+ logDataFeedError('Data feed response size too big too cache and caching needed, failing send');
106
+ throw new actions_core_1.IntegrationError('Data feed response size too big too cache and caching needed, failing send', 'DATA_FEED_RESPONSE_TOO_BIG', 400);
107
+ }
108
+ try {
109
+ await dataFeedCache.setRequestResponse(requestId, dataString, cacheTtl / 1000);
110
+ datafeedTags.push('cache_set:true');
111
+ }
112
+ catch (error) {
113
+ logDataFeedError('Data feed cache set failure', error);
114
+ datafeedTags.push('error:true', 'reason:cache_set_failure', 'cache_set:false');
115
+ throw error;
116
+ }
117
+ }
118
+ datafeedTags.push('error:false');
119
+ return data;
120
+ }
121
+ catch (error) {
122
+ const isErrorCapturedInTags = datafeedTags.find((str) => str.includes('error:true'));
123
+ if (!isErrorCapturedInTags) {
124
+ datafeedTags.push('error:true', 'reason:unknown');
125
+ }
126
+ tags.push('reason:datafeed_failure');
127
+ logDataFeedError('Unexpected data feed error', error);
128
+ throw error;
129
+ }
130
+ finally {
131
+ statsClient?.incr('datafeed_execution', 1, datafeedTags);
132
+ }
133
+ };
134
+ exports.performApiLookup = performApiLookup;
135
+ exports.apiLookupActionFields = {
136
+ id: {
137
+ label: 'ID',
138
+ description: 'The id of the API lookup for use in logging & observability',
139
+ type: 'string'
140
+ },
141
+ name: {
142
+ label: 'Name',
143
+ description: 'The name of the API lookup referenced in liquid syntax',
144
+ type: 'string',
145
+ required: true
146
+ },
147
+ url: {
148
+ label: 'URL',
149
+ description: 'The URL endpoint to call',
150
+ type: 'string',
151
+ required: true
152
+ },
153
+ method: {
154
+ label: 'Request Method',
155
+ description: 'The request method, e.g. GET/POST/etc.',
156
+ type: 'string',
157
+ required: true
158
+ },
159
+ cacheTtl: {
160
+ label: 'Cache TTL',
161
+ description: 'The cache TTL in ms',
162
+ type: 'integer',
163
+ required: true
164
+ },
165
+ body: {
166
+ label: 'Request Body',
167
+ description: 'The request body for use with POST/PUT/PATCH requests',
168
+ type: 'string'
169
+ },
170
+ headers: {
171
+ label: 'Request Headers',
172
+ description: 'Headers in JSON to be sent with the request',
173
+ type: 'object'
174
+ },
175
+ responseType: {
176
+ label: 'Response Type',
177
+ description: 'The response type of the request. Currently only supporting JSON.',
178
+ type: 'string',
179
+ required: true
180
+ },
181
+ shouldRetryOnRetryableError: {
182
+ label: 'Should Retry',
183
+ description: 'Whether the message should be retried (if the error code is retryable) when the data feed fails or if it should be sent with empty data instead',
184
+ type: 'boolean'
185
+ }
186
+ };
187
+ exports.apiLookupLiquidKey = 'datafeeds';
188
+ exports.FLAGON_NAME_DATA_FEEDS = 'is-datafeeds-enabled';
189
+ //# sourceMappingURL=apiLookups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiLookups.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface Payload {
2
+ id?: string;
3
+ name: string;
4
+ url: string;
5
+ method: string;
6
+ cacheTtl: number;
7
+ body?: string;
8
+ headers?: {
9
+ [k: string]: unknown;
10
+ };
11
+ responseType: string;
12
+ shouldRetryOnRetryableError?: boolean;
13
+ traits?: {
14
+ [k: string]: unknown;
15
+ };
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ActionDefinition } from '@segment/actions-core';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ export declare const actionDefinition: ActionDefinition<Settings, Payload>;
5
+ export default actionDefinition;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.actionDefinition = void 0;
4
+ const apiLookups_1 = require("./apiLookups");
5
+ exports.actionDefinition = {
6
+ title: 'Perform a single API lookup',
7
+ description: 'Perform a single API lookup and return the response',
8
+ fields: {
9
+ ...apiLookups_1.apiLookupActionFields,
10
+ traits: {
11
+ label: 'Traits',
12
+ description: "A user profile's traits",
13
+ type: 'object',
14
+ required: false
15
+ }
16
+ },
17
+ perform: async (request, { settings, payload, statsContext, logger }) => {
18
+ const statsClient = statsContext?.statsClient;
19
+ const tags = statsContext?.tags ?? [];
20
+ const { traits = {}, ...apiLookupConfig } = payload;
21
+ const profile = { traits: traits };
22
+ const data = await apiLookups_1.performApiLookup(request, apiLookupConfig, profile, statsClient, tags, settings, logger);
23
+ return {
24
+ data
25
+ };
26
+ }
27
+ };
28
+ exports.default = exports.actionDefinition;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-sendgrid/previewApiLookup/index.ts"],"names":[],"mappings":";;;AAGA,6CAAsE;AAGzD,QAAA,gBAAgB,GAAwC;IACnE,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE,qDAAqD;IAClE,MAAM,EAAE;QACN,GAAG,kCAAqB;QACxB,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,yBAAyB;YACtC,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QACtE,MAAM,WAAW,GAAG,YAAY,EAAE,WAAW,CAAA;QAC7C,MAAM,IAAI,GAAG,YAAY,EAAE,IAAI,IAAI,EAAE,CAAA;QACrC,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,CAAA;QACnD,MAAM,OAAO,GAAY,EAAE,MAAM,EAAE,MAAgC,EAAE,CAAA;QACrE,MAAM,IAAI,GAAG,MAAM,6BAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC3G,OAAO;YACL,IAAI;SACL,CAAA;IACH,CAAC;CACF,CAAA;AAED,kBAAe,wBAAgB,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { ExtId, MessageSendPerformer, OperationContext, ResponseError, Profile } from '@segment/actions-shared';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ import { Liquid as LiquidJs } from 'liquidjs';
5
+ import { ApiLookupConfig, apiLookupLiquidKey } from '../previewApiLookup/apiLookups';
6
+ export declare const EXTERNAL_ID_KEY = "email";
7
+ export declare const Liquid: LiquidJs;
8
+ export declare class SendEmailPerformer extends MessageSendPerformer<Settings, Payload> {
9
+ getIntegrationStatsName(): string;
10
+ getChannelType(): string;
11
+ getDefaultSettingsRegion(): string;
12
+ isSupportedExternalId(externalId: ExtId<Payload>): boolean;
13
+ isExternalIdSubscribed(extId: ExtId<Payload>): boolean | undefined;
14
+ getRecepients(): ExtId<Payload>[];
15
+ parseTemplating(content: string, liquidData: {
16
+ profile: Profile;
17
+ [apiLookupLiquidKey]?: Record<string, unknown>;
18
+ }, contentType: string): Promise<any>;
19
+ sendToRecepient(emailProfile: ExtId<Payload>): Promise<import("@segment/actions-core").ModifiedResponse<unknown> | undefined>;
20
+ getBodyTemplateFromS3(bodyUrl: string): Promise<string>;
21
+ getBodyHtml(profile: Profile, apiLookupData: Record<string, unknown>, emailProfile: {
22
+ id?: string | undefined;
23
+ type?: string | undefined;
24
+ subscriptionStatus?: string | undefined;
25
+ unsubscribeLink?: string | undefined;
26
+ preferencesLink?: string | undefined;
27
+ groups?: {
28
+ id?: string | undefined;
29
+ isSubscribed?: boolean | undefined;
30
+ groupUnsubscribeLink?: string | undefined;
31
+ }[] | undefined;
32
+ }): Promise<string>;
33
+ generateEmailHtml(design: string): Promise<string>;
34
+ performApiLookups(this: SendEmailPerformer, apiLookups: ApiLookupConfig[] | undefined, profile: Profile): Promise<Record<string, unknown>>;
35
+ validateLinkAndLog(link: string): void;
36
+ insertUnsubscribeLinks(html: string, emailProfile: EmailProfile): string;
37
+ onResponse(args: {
38
+ response?: Response;
39
+ error?: ResponseError;
40
+ operation: OperationContext;
41
+ }): void;
42
+ }
43
+ export declare type EmailProfile = ExtId<Payload>;