@segment/action-destinations 3.181.0 → 3.183.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 (155) hide show
  1. package/dist/destinations/app-fit/config.d.ts +3 -0
  2. package/dist/destinations/app-fit/config.js +7 -0
  3. package/dist/destinations/app-fit/config.js.map +1 -0
  4. package/dist/destinations/app-fit/generated-types.d.ts +3 -0
  5. package/dist/destinations/app-fit/generated-types.js +3 -0
  6. package/dist/destinations/app-fit/generated-types.js.map +1 -0
  7. package/dist/destinations/app-fit/index.d.ts +4 -0
  8. package/dist/destinations/app-fit/index.js +39 -0
  9. package/dist/destinations/app-fit/index.js.map +1 -0
  10. package/dist/destinations/app-fit/track/generated-types.d.ts +13 -0
  11. package/dist/destinations/app-fit/track/generated-types.js +3 -0
  12. package/dist/destinations/app-fit/track/generated-types.js.map +1 -0
  13. package/dist/destinations/app-fit/track/index.d.ts +5 -0
  14. package/dist/destinations/app-fit/track/index.js +109 -0
  15. package/dist/destinations/app-fit/track/index.js.map +1 -0
  16. package/dist/destinations/engage-messaging-sendgrid/index.js +3 -1
  17. package/dist/destinations/engage-messaging-sendgrid/index.js.map +1 -1
  18. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.d.ts +15 -0
  19. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.js +3 -0
  20. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/generated-types.js.map +1 -0
  21. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/index.d.ts +5 -0
  22. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/index.js +28 -0
  23. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/index.js.map +1 -0
  24. package/dist/destinations/engage-messaging-sendgrid/sendEmail/generated-types.d.ts +12 -0
  25. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.js +38 -12
  26. package/dist/destinations/engage-messaging-sendgrid/sendEmail/index.js.map +1 -1
  27. package/dist/destinations/engage-messaging-sendgrid/utils/api-lookups.d.ts +20 -0
  28. package/dist/destinations/engage-messaging-sendgrid/utils/api-lookups.js +108 -0
  29. package/dist/destinations/engage-messaging-sendgrid/utils/api-lookups.js.map +1 -0
  30. package/dist/destinations/engage-messaging-sendgrid/utils/types.d.ts +6 -0
  31. package/dist/destinations/engage-messaging-sendgrid/utils/types.js +3 -0
  32. package/dist/destinations/engage-messaging-sendgrid/utils/types.js.map +1 -0
  33. package/dist/destinations/engage-messaging-twilio/operationTracking/GenericMethodDecorator.d.ts +1 -0
  34. package/dist/destinations/engage-messaging-twilio/operationTracking/GenericMethodDecorator.js +3 -0
  35. package/dist/destinations/engage-messaging-twilio/operationTracking/GenericMethodDecorator.js.map +1 -0
  36. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationDecorator.d.ts +46 -0
  37. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationDecorator.js +46 -0
  38. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationDecorator.js.map +1 -0
  39. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationDuration.d.ts +12 -0
  40. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationDuration.js +23 -0
  41. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationDuration.js.map +1 -0
  42. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationErrorHandler.d.ts +12 -0
  43. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationErrorHandler.js +35 -0
  44. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationErrorHandler.js.map +1 -0
  45. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationFinallyHooks.d.ts +10 -0
  46. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationFinallyHooks.js +29 -0
  47. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationFinallyHooks.js.map +1 -0
  48. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationLogger.d.ts +30 -0
  49. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationLogger.js +107 -0
  50. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationLogger.js.map +1 -0
  51. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationStats.d.ts +39 -0
  52. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationStats.js +130 -0
  53. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationStats.js.map +1 -0
  54. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationTracker.test.d.ts +1 -0
  55. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationTracker.test.js +377 -0
  56. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationTracker.test.js.map +1 -0
  57. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationTree.d.ts +23 -0
  58. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationTree.js +49 -0
  59. package/dist/destinations/engage-messaging-twilio/operationTracking/OperationTree.js.map +1 -0
  60. package/dist/destinations/engage-messaging-twilio/operationTracking/TrackedError.d.ts +6 -0
  61. package/dist/destinations/engage-messaging-twilio/operationTracking/TrackedError.js +3 -0
  62. package/dist/destinations/engage-messaging-twilio/operationTracking/TrackedError.js.map +1 -0
  63. package/dist/destinations/engage-messaging-twilio/operationTracking/index.d.ts +10 -0
  64. package/dist/destinations/engage-messaging-twilio/operationTracking/index.js +23 -0
  65. package/dist/destinations/engage-messaging-twilio/operationTracking/index.js.map +1 -0
  66. package/dist/destinations/engage-messaging-twilio/operationTracking/wrapTryCatchFinallyPromisable.d.ts +21 -0
  67. package/dist/destinations/engage-messaging-twilio/operationTracking/wrapTryCatchFinallyPromisable.js +99 -0
  68. package/dist/destinations/engage-messaging-twilio/operationTracking/wrapTryCatchFinallyPromisable.js.map +1 -0
  69. package/dist/destinations/engage-messaging-twilio/sendMobilePush/generated-types.d.ts +1 -1
  70. package/dist/destinations/engage-messaging-twilio/sendMobilePush/index.js +7 -25
  71. package/dist/destinations/engage-messaging-twilio/sendMobilePush/index.js.map +1 -1
  72. package/dist/destinations/engage-messaging-twilio/sendMobilePush/push-sender.d.ts +1 -1
  73. package/dist/destinations/engage-messaging-twilio/sendMobilePush/push-sender.js +31 -25
  74. package/dist/destinations/engage-messaging-twilio/sendMobilePush/push-sender.js.map +1 -1
  75. package/dist/destinations/engage-messaging-twilio/sendSms/index.js +1 -1
  76. package/dist/destinations/engage-messaging-twilio/sendSms/index.js.map +1 -1
  77. package/dist/destinations/engage-messaging-twilio/sendSms/sms-sender.d.ts +1 -1
  78. package/dist/destinations/engage-messaging-twilio/sendSms/sms-sender.js +20 -10
  79. package/dist/destinations/engage-messaging-twilio/sendSms/sms-sender.js.map +1 -1
  80. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.js +1 -1
  81. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.js.map +1 -1
  82. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.d.ts +1 -1
  83. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.js +42 -36
  84. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.js.map +1 -1
  85. package/dist/destinations/engage-messaging-twilio/utils/IntegrationErrorWrapper.d.ts +12 -0
  86. package/dist/destinations/engage-messaging-twilio/utils/IntegrationErrorWrapper.js +31 -0
  87. package/dist/destinations/engage-messaging-twilio/utils/IntegrationErrorWrapper.js.map +1 -0
  88. package/dist/destinations/engage-messaging-twilio/utils/MessageLogger.d.ts +15 -0
  89. package/dist/destinations/engage-messaging-twilio/utils/MessageLogger.js +36 -0
  90. package/dist/destinations/engage-messaging-twilio/utils/MessageLogger.js.map +1 -0
  91. package/dist/destinations/engage-messaging-twilio/utils/MessageStats.d.ts +14 -0
  92. package/dist/destinations/engage-messaging-twilio/utils/MessageStats.js +78 -0
  93. package/dist/destinations/engage-messaging-twilio/utils/MessageStats.js.map +1 -0
  94. package/dist/destinations/engage-messaging-twilio/utils/index.d.ts +6 -0
  95. package/dist/destinations/engage-messaging-twilio/utils/index.js +19 -0
  96. package/dist/destinations/engage-messaging-twilio/utils/index.js.map +1 -0
  97. package/dist/destinations/engage-messaging-twilio/utils/isDestinationActionService.d.ts +1 -0
  98. package/dist/destinations/engage-messaging-twilio/utils/isDestinationActionService.js +8 -0
  99. package/dist/destinations/engage-messaging-twilio/utils/isDestinationActionService.js.map +1 -0
  100. package/dist/destinations/engage-messaging-twilio/utils/message-sender.d.ts +21 -54
  101. package/dist/destinations/engage-messaging-twilio/utils/message-sender.js +112 -225
  102. package/dist/destinations/engage-messaging-twilio/utils/message-sender.js.map +1 -1
  103. package/dist/destinations/engage-messaging-twilio/utils/phone-message.d.ts +7 -0
  104. package/dist/destinations/engage-messaging-twilio/utils/phone-message.js +30 -33
  105. package/dist/destinations/engage-messaging-twilio/utils/phone-message.js.map +1 -1
  106. package/dist/destinations/engage-messaging-twilio/utils/track.d.ts +45 -0
  107. package/dist/destinations/engage-messaging-twilio/utils/track.js +9 -0
  108. package/dist/destinations/engage-messaging-twilio/utils/track.js.map +1 -0
  109. package/dist/destinations/hubspot/generated-types.d.ts +1 -0
  110. package/dist/destinations/hubspot/index.js +7 -1
  111. package/dist/destinations/hubspot/index.js.map +1 -1
  112. package/dist/destinations/hubspot/sendCustomBehavioralEvent/index.js +9 -1
  113. package/dist/destinations/hubspot/sendCustomBehavioralEvent/index.js.map +1 -1
  114. package/dist/destinations/index.js +3 -0
  115. package/dist/destinations/index.js.map +1 -1
  116. package/dist/destinations/insider/trackEvent/index.js +1 -1
  117. package/dist/destinations/insider/trackEvent/index.js.map +1 -1
  118. package/dist/destinations/listrak/generated-types.d.ts +4 -0
  119. package/dist/destinations/listrak/generated-types.js +3 -0
  120. package/dist/destinations/listrak/generated-types.js.map +1 -0
  121. package/dist/destinations/listrak/index.d.ts +4 -0
  122. package/dist/destinations/listrak/index.js +55 -0
  123. package/dist/destinations/listrak/index.js.map +1 -0
  124. package/dist/destinations/listrak/updateEmailContactProfileFields/generated-types.d.ts +8 -0
  125. package/dist/destinations/listrak/updateEmailContactProfileFields/generated-types.js +3 -0
  126. package/dist/destinations/listrak/updateEmailContactProfileFields/generated-types.js.map +1 -0
  127. package/dist/destinations/listrak/updateEmailContactProfileFields/index.d.ts +13 -0
  128. package/dist/destinations/listrak/updateEmailContactProfileFields/index.js +77 -0
  129. package/dist/destinations/listrak/updateEmailContactProfileFields/index.js.map +1 -0
  130. package/dist/destinations/liveramp-audiences/audienceEntered/index.js +1 -1
  131. package/dist/destinations/liveramp-audiences/audienceEntered/index.js.map +1 -1
  132. package/dist/destinations/liveramp-audiences/audienceEntered/sftp.d.ts +2 -2
  133. package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js +6 -2
  134. package/dist/destinations/liveramp-audiences/audienceEntered/sftp.js.map +1 -1
  135. package/dist/destinations/liveramp-audiences/index.js +1 -1
  136. package/dist/destinations/liveramp-audiences/index.js.map +1 -1
  137. package/dist/destinations/m3ter/auth.d.ts +7 -0
  138. package/dist/destinations/m3ter/auth.js +16 -0
  139. package/dist/destinations/m3ter/auth.js.map +1 -0
  140. package/dist/destinations/m3ter/constants.d.ts +4 -0
  141. package/dist/destinations/m3ter/constants.js +8 -0
  142. package/dist/destinations/m3ter/constants.js.map +1 -0
  143. package/dist/destinations/m3ter/generated-types.d.ts +5 -0
  144. package/dist/destinations/m3ter/generated-types.js +3 -0
  145. package/dist/destinations/m3ter/generated-types.js.map +1 -0
  146. package/dist/destinations/m3ter/index.d.ts +4 -0
  147. package/dist/destinations/m3ter/index.js +68 -0
  148. package/dist/destinations/m3ter/index.js.map +1 -0
  149. package/dist/destinations/m3ter/submitMeasurements/generated-types.d.ts +32 -0
  150. package/dist/destinations/m3ter/submitMeasurements/generated-types.js +3 -0
  151. package/dist/destinations/m3ter/submitMeasurements/generated-types.js.map +1 -0
  152. package/dist/destinations/m3ter/submitMeasurements/index.d.ts +5 -0
  153. package/dist/destinations/m3ter/submitMeasurements/index.js +116 -0
  154. package/dist/destinations/m3ter/submitMeasurements/index.js.map +1 -0
  155. package/package.json +4 -4
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiLookupLiquidKey = exports.apiLookupActionFields = exports.performApiLookups = exports.performApiLookup = void 0;
4
+ const actions_core_1 = require("@segment/actions-core");
5
+ const liquidjs_1 = require("liquidjs");
6
+ const Liquid = new liquidjs_1.Liquid();
7
+ const performApiLookup = async (request, { id, url, method, body, headers }, profile, statsClient, tags, settings, logger) => {
8
+ let renderedUrl;
9
+ let renderedBody;
10
+ try {
11
+ renderedUrl = await Liquid.parseAndRender(url, { profile });
12
+ }
13
+ catch (error) {
14
+ logger?.error(`TE Messaging: Email api lookup url parse failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
15
+ tags.push('reason:parse_apilookup_url');
16
+ statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
17
+ throw new actions_core_1.IntegrationError('Unable to parse email api lookup url', 'api lookup url parse failure', 400);
18
+ }
19
+ try {
20
+ renderedBody = body ? await Liquid.parseAndRender(body, { profile }) : undefined;
21
+ }
22
+ catch (error) {
23
+ logger?.error(`TE Messaging: Email api lookup body parse failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
24
+ tags.push('reason:parse_apilookup_body');
25
+ statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
26
+ throw new actions_core_1.IntegrationError('Unable to parse email api lookup body', 'api lookup body parse failure', 400);
27
+ }
28
+ try {
29
+ const res = await request(renderedUrl, {
30
+ headers: headers ?? undefined,
31
+ timeout: 10000,
32
+ method: method,
33
+ body: renderedBody,
34
+ skipResponseCloning: true
35
+ });
36
+ return res.data;
37
+ }
38
+ catch (error) {
39
+ logger?.error(`TE Messaging: Email api lookup failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
40
+ tags.push('reason:apilookup_failure');
41
+ statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
42
+ throw error;
43
+ }
44
+ };
45
+ exports.performApiLookup = performApiLookup;
46
+ const performApiLookups = async (request, apiLookups, profile, statsClient, tags, settings, logger) => {
47
+ if (!apiLookups) {
48
+ return {};
49
+ }
50
+ const data = await Promise.all(apiLookups.map(async (apiLookup) => {
51
+ const data = await exports.performApiLookup(request, apiLookup, profile, statsClient, tags, settings, logger);
52
+ return { name: apiLookup.name, data };
53
+ }));
54
+ return data.reduce((acc, { name, data }) => {
55
+ acc[name] = data;
56
+ return acc;
57
+ }, {});
58
+ };
59
+ exports.performApiLookups = performApiLookups;
60
+ exports.apiLookupActionFields = {
61
+ id: {
62
+ label: 'ID',
63
+ description: 'The id of the API lookup for use in logging & observability',
64
+ type: 'string'
65
+ },
66
+ name: {
67
+ label: 'Name',
68
+ description: 'The name of the API lookup referenced in liquid syntax',
69
+ type: 'string',
70
+ required: true
71
+ },
72
+ url: {
73
+ label: 'URL',
74
+ description: 'The URL endpoint to call',
75
+ type: 'string',
76
+ required: true
77
+ },
78
+ method: {
79
+ label: 'Request Method',
80
+ description: 'The request method, e.g. GET/POST/etc.',
81
+ type: 'string',
82
+ required: true
83
+ },
84
+ cacheTtl: {
85
+ label: 'Cache TTL',
86
+ description: 'The cache TTL in ms',
87
+ type: 'integer',
88
+ required: true
89
+ },
90
+ body: {
91
+ label: 'Request Body',
92
+ description: 'The request body for use with POST/PUT/PATCH requests',
93
+ type: 'string'
94
+ },
95
+ headers: {
96
+ label: 'Request Headers',
97
+ description: 'Headers in JSON to be sent with the request',
98
+ type: 'object'
99
+ },
100
+ responseType: {
101
+ label: 'Response Type',
102
+ description: 'The response type of the request. Currently only supporting JSON.',
103
+ type: 'string',
104
+ required: true
105
+ }
106
+ };
107
+ exports.apiLookupLiquidKey = 'lookups';
108
+ //# sourceMappingURL=api-lookups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-lookups.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-sendgrid/utils/api-lookups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface Profile {
2
+ user_id?: string;
3
+ anonymous_id?: string;
4
+ email?: string;
5
+ traits: Record<string, string>;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-sendgrid/utils/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare type GenericMethodDecorator<TFunc extends (this: any, ...args: any[]) => any = (this: any, ...args: any) => any> = (target: ThisParameterType<TFunc>, propertyKey: string, descriptor: TypedPropertyDescriptor<TFunc>) => TypedPropertyDescriptor<TFunc> | void;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GenericMethodDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericMethodDecorator.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/operationTracking/GenericMethodDecorator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { GenericMethodDecorator } from './GenericMethodDecorator';
2
+ import { OperationDuration } from './OperationDuration';
3
+ import { OperationErrorHandler } from './OperationErrorHandler';
4
+ import { OperationFinallyHooks } from './OperationFinallyHooks';
5
+ import { OperationTree } from './OperationTree';
6
+ import { FuncFromTryCatchFinallyContext, TryCatchFinallyContext, TryCatchFinallyHook } from './wrapTryCatchFinallyPromisable';
7
+ export interface DecoratorArgs {
8
+ operation?: string;
9
+ [key: string]: any;
10
+ }
11
+ export declare type OperationHookContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext, TDecoratorArgs extends DecoratorArgs = DecoratorArgs> = TContext & {
12
+ decoratorArgs?: TDecoratorArgs;
13
+ };
14
+ export interface OperationHookProvider<TContext extends OperationHookContext = OperationHookContext, TDecoratorUtils = {}> {
15
+ getTryCatchFinallyHook(ctx: TContext): TryCatchFinallyHook<TContext>;
16
+ getDecoratorUtils?(): TDecoratorUtils;
17
+ }
18
+ export declare type UnionToIntersection<TUnion> = (TUnion extends any ? (k: TUnion) => void : never) extends (k: infer I) => void ? I : never;
19
+ export declare type ContextFromHookProviders<TProviders extends OperationHookProvider[]> = TProviders extends OperationHookProvider<infer TContext>[] ? UnionToIntersection<TContext> : TryCatchFinallyContext;
20
+ export declare type DecoratorArgsFromContext<TContext extends TryCatchFinallyContext> = TContext extends {
21
+ decoratorArgs?: infer TDecoratorArgs;
22
+ } ? TDecoratorArgs : DecoratorArgs;
23
+ export declare type DecoratorArgsFromHookProviders<TProviders extends OperationHookProvider[]> = DecoratorArgsFromContext<ContextFromHookProviders<TProviders>>;
24
+ export declare type DecoratorUtilsFromHookProviders<TProviders extends OperationHookProvider[]> = TProviders extends OperationHookProvider<any, infer TDecoratorUtils>[] ? UnionToIntersection<TDecoratorUtils> : {};
25
+ export declare type FuncFromHookProviders<TProviders extends OperationHookProvider[]> = FuncFromTryCatchFinallyContext<ContextFromHookProviders<TProviders>>;
26
+ export declare class OperationDecorator {
27
+ static createDecoratorFactory<TOperationHookProviders extends OperationHookProvider[]>(...hookProviders: TOperationHookProviders): ((decoratorArgs?: DecoratorArgsFromHookProviders<TOperationHookProviders>) => GenericMethodDecorator<FuncFromHookProviders<TOperationHookProviders>>) & DecoratorUtilsFromHookProviders<TOperationHookProviders> & {
28
+ _contextType: ContextFromHookProviders<TOperationHookProviders>;
29
+ };
30
+ static createDecoratorFactoryWithDefault<TOperationHookProviders extends OperationHookProvider[]>(...customHookProviders: TOperationHookProviders): ((decoratorArgs?: DecoratorArgsFromContext<ContextFromHookProviders<[typeof OperationErrorHandler, typeof OperationTree, typeof OperationDuration, typeof OperationFinallyHooks, ...TOperationHookProviders]>> | undefined) => GenericMethodDecorator<FuncFromTryCatchFinallyContext<ContextFromHookProviders<[typeof OperationErrorHandler, typeof OperationTree, typeof OperationDuration, typeof OperationFinallyHooks, ...TOperationHookProviders]>>>) & DecoratorUtilsFromHookProviders<[typeof OperationErrorHandler, typeof OperationTree, typeof OperationDuration, typeof OperationFinallyHooks, ...TOperationHookProviders]> & {
31
+ _contextType: ContextFromHookProviders<[typeof OperationErrorHandler, typeof OperationTree, typeof OperationDuration, typeof OperationFinallyHooks, ...TOperationHookProviders]>;
32
+ };
33
+ static getOperationName<TContext extends TryCatchFinallyContext>(ctx: TContext): string | undefined;
34
+ }
35
+ export declare type OperationDecoratorContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext> = TContext & {
36
+ decoratorOf?: {
37
+ classProto: any;
38
+ methodName: string;
39
+ descriptor: TypedPropertyDescriptor<any>;
40
+ originalMethod: FuncFromTryCatchFinallyContext<TContext>;
41
+ };
42
+ decoratorArgs?: DecoratorArgsFromContext<TContext> & DecoratorArgs;
43
+ };
44
+ export declare type ContextFromDecorator<TDecorator> = TDecorator extends {
45
+ _contextType: infer TContext;
46
+ } ? TContext : never;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationDecorator = void 0;
4
+ const OperationDuration_1 = require("./OperationDuration");
5
+ const OperationErrorHandler_1 = require("./OperationErrorHandler");
6
+ const OperationFinallyHooks_1 = require("./OperationFinallyHooks");
7
+ const OperationTree_1 = require("./OperationTree");
8
+ const wrapTryCatchFinallyPromisable_1 = require("./wrapTryCatchFinallyPromisable");
9
+ class OperationDecorator {
10
+ static createDecoratorFactory(...hookProviders) {
11
+ const decorator = (decoratorArgs) => {
12
+ return function (classProto, methodName, descriptor) {
13
+ const originalMethod = descriptor.value;
14
+ if (!(originalMethod instanceof Function))
15
+ throw new Error('Track decorator can only be applied to class methods');
16
+ const decoratorOf = {
17
+ classProto,
18
+ methodName,
19
+ descriptor,
20
+ originalMethod
21
+ };
22
+ descriptor.value = wrapTryCatchFinallyPromisable_1.wrapTryCatchFinallyPromisable(originalMethod, (ctx) => {
23
+ ctx.decoratorOf = decoratorOf;
24
+ ctx.decoratorArgs = decoratorArgs;
25
+ return hookProviders.map((h) => h.getTryCatchFinallyHook(ctx));
26
+ });
27
+ };
28
+ };
29
+ const decoratorUtils = {};
30
+ for (const hookProvider of hookProviders) {
31
+ Object.assign(decoratorUtils, hookProvider.getDecoratorUtils?.() || {});
32
+ }
33
+ return Object.assign(decorator, decoratorUtils);
34
+ }
35
+ static createDecoratorFactoryWithDefault(...customHookProviders) {
36
+ return OperationDecorator.createDecoratorFactory(OperationErrorHandler_1.OperationErrorHandler, OperationTree_1.OperationTree, OperationDuration_1.OperationDuration, OperationFinallyHooks_1.OperationFinallyHooks, ...customHookProviders);
37
+ }
38
+ static getOperationName(ctx) {
39
+ const ctxDecorated = ctx;
40
+ return (ctxDecorated.decoratorArgs?.operation ||
41
+ ctxDecorated.decoratorOf?.methodName ||
42
+ ctxDecorated.decoratorOf?.originalMethod?.name);
43
+ }
44
+ }
45
+ exports.OperationDecorator = OperationDecorator;
46
+ //# sourceMappingURL=OperationDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationDecorator.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/operationTracking/OperationDecorator.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mEAA+D;AAC/D,mEAA+D;AAC/D,mDAA+C;AAC/C,mFAKwC;AAmFxC,MAAa,kBAAkB;IAO7B,MAAM,CAAC,sBAAsB,CAC3B,GAAG,aAAsC;QAUzC,MAAM,SAAS,GAAG,CAAC,aAA8B,EAAiC,EAAE;YAClF,OAAO,UAAU,UAAU,EAAE,UAAU,EAAE,UAAU;gBACjD,MAAM,cAAc,GAAG,UAAU,CAAC,KAAc,CAAA;gBAChD,IAAI,CAAC,CAAC,cAAc,YAAY,QAAQ,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;gBAEzE,MAAM,WAAW,GAA6C;oBAC5D,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,cAAc;iBACf,CAAA;gBACD,UAAU,CAAC,KAAK,GAAG,6DAA6B,CAAC,cAAc,EAAE,CAAC,GAA8B,EAAE,EAAE;oBAClG,GAAG,CAAC,WAAW,GAAG,WAAW,CAAA;oBAC7B,GAAG,CAAC,aAAa,GAAG,aAAa,CAAA;oBACjC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAA;gBAChE,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;QACH,CAAC,CAAA;QACD,MAAM,cAAc,GAAG,EAAE,CAAA;QACzB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;YACxC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;SACxE;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAQ,CAAA;IACxD,CAAC;IAWD,MAAM,CAAC,iCAAiC,CACtC,GAAG,mBAA4C;QAE/C,OAAO,kBAAkB,CAAC,sBAAsB,CAC9C,6CAAqB,EACrB,6BAAa,EACb,qCAAiB,EACjB,6CAAqB,EACrB,GAAG,mBAAmB,CACvB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAA0C,GAAa;QAC5E,MAAM,YAAY,GAAG,GAAgC,CAAA;QACrD,OAAO,CACL,YAAY,CAAC,aAAa,EAAE,SAAS;YACrC,YAAY,CAAC,WAAW,EAAE,UAAU;YACpC,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAC/C,CAAA;IACH,CAAC;CACF;AA1ED,gDA0EC"}
@@ -0,0 +1,12 @@
1
+ import { TryCatchFinallyContext, TryCatchFinallyHook } from './wrapTryCatchFinallyPromisable';
2
+ export declare type OperationDurationContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext> = TContext & {
3
+ start?: number;
4
+ duration?: number;
5
+ };
6
+ export declare class OperationDuration {
7
+ static getTryCatchFinallyHook(_ctx: OperationDurationContext): TryCatchFinallyHook<OperationDurationContext>;
8
+ static getPriority(): number;
9
+ static onTry(ctx: OperationDurationContext): void;
10
+ static onFinally(ctx: OperationDurationContext): void;
11
+ static getDuration<TContext extends OperationDurationContext>(ctx: TContext): number | undefined;
12
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationDuration = void 0;
4
+ class OperationDuration {
5
+ static getTryCatchFinallyHook(_ctx) {
6
+ return this;
7
+ }
8
+ static getPriority() {
9
+ return -1000;
10
+ }
11
+ static onTry(ctx) {
12
+ ctx.start = Date.now();
13
+ }
14
+ static onFinally(ctx) {
15
+ if (ctx.start !== undefined)
16
+ ctx.duration = Date.now() - ctx.start;
17
+ }
18
+ static getDuration(ctx) {
19
+ return ctx.duration;
20
+ }
21
+ }
22
+ exports.OperationDuration = OperationDuration;
23
+ //# sourceMappingURL=OperationDuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationDuration.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/operationTracking/OperationDuration.ts"],"names":[],"mappings":";;;AAOA,MAAa,iBAAiB;IAC5B,MAAM,CAAC,sBAAsB,CAAC,IAA8B;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,CAAC,WAAW;QAChB,OAAO,CAAC,IAAI,CAAA;IACd,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAA6B;QACxC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAA6B;QAC5C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAA;IACpE,CAAC;IACD,MAAM,CAAC,WAAW,CAA4C,GAAa;QACzE,OAAO,GAAG,CAAC,QAAQ,CAAA;IACrB,CAAC;CACF;AAjBD,8CAiBC"}
@@ -0,0 +1,12 @@
1
+ import { TrackedError } from './TrackedError';
2
+ import { TryCatchFinallyContext, TryCatchFinallyHook } from './wrapTryCatchFinallyPromisable';
3
+ export declare type OperationErrorHandlerContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext> = TContext & {
4
+ decoratorArgs?: {
5
+ onError?: (ctx: OperationErrorHandlerContext<TContext>) => void;
6
+ };
7
+ };
8
+ export declare class OperationErrorHandler {
9
+ static getTryCatchFinallyHook(_ctx: OperationErrorHandlerContext): TryCatchFinallyHook<OperationErrorHandlerContext>;
10
+ static onCatch(ctx: OperationErrorHandlerContext): void;
11
+ static wrap<TContext extends OperationErrorHandlerContext = OperationErrorHandlerContext>(originalError: unknown, getWrapper: (e: unknown) => unknown | undefined, ctx?: TContext): TrackedError<TryCatchFinallyContext<(this: any, ...args: any[]) => any>> | undefined;
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationErrorHandler = void 0;
4
+ class OperationErrorHandler {
5
+ static getTryCatchFinallyHook(_ctx) {
6
+ return this;
7
+ }
8
+ static onCatch(ctx) {
9
+ const dArgs = ctx.decoratorArgs;
10
+ ctx.error = this.wrap(ctx.error, () => {
11
+ dArgs?.onError?.apply(this, [ctx]);
12
+ return ctx.error;
13
+ }, ctx);
14
+ }
15
+ static wrap(originalError, getWrapper, ctx) {
16
+ const wrapper = getWrapper(originalError);
17
+ if (wrapper && originalError !== wrapper)
18
+ wrapper.underlyingError = originalError;
19
+ const trackedError = wrapper;
20
+ if (!trackedError)
21
+ return;
22
+ if (!ctx)
23
+ return;
24
+ if (!trackedError.trackedContext)
25
+ trackedError.trackedContext = ctx;
26
+ const trackedContextProp = Object.getOwnPropertyDescriptor(trackedError, 'trackedContext');
27
+ if (trackedContextProp?.enumerable) {
28
+ trackedContextProp.enumerable = false;
29
+ Object.defineProperty(trackedError, 'trackedContext', trackedContextProp);
30
+ }
31
+ return wrapper;
32
+ }
33
+ }
34
+ exports.OperationErrorHandler = OperationErrorHandler;
35
+ //# sourceMappingURL=OperationErrorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationErrorHandler.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/operationTracking/OperationErrorHandler.ts"],"names":[],"mappings":";;;AAaA,MAAa,qBAAqB;IAChC,MAAM,CAAC,sBAAsB,CAAC,IAAkC;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAiC;QAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAA;QAG/B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CACnB,GAAG,CAAC,KAAK,EACT,GAAG,EAAE;YAEH,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAClC,OAAO,GAAG,CAAC,KAAqB,CAAA;QAClC,CAAC,EACD,GAAG,CACJ,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CACT,aAAsB,EACtB,UAA+C,EAC/C,GAAc;QAEd,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAiB,CAAA;QAEzD,IAAI,OAAO,IAAI,aAAa,KAAK,OAAO;YAAE,OAAO,CAAC,eAAe,GAAG,aAAa,CAAA;QAEjF,MAAM,YAAY,GAAG,OAAO,CAAA;QAC5B,IAAI,CAAC,YAAY;YAAE,OAAM;QAEzB,IAAI,CAAC,GAAG;YAAE,OAAM;QAGhB,IAAI,CAAC,YAAY,CAAC,cAAc;YAAE,YAAY,CAAC,cAAc,GAAG,GAAG,CAAA;QAGnE,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;QAC1F,IAAI,kBAAkB,EAAE,UAAU,EAAE;YAElC,kBAAkB,CAAC,UAAU,GAAG,KAAK,CAAA;YACrC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;SAC1E;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA/CD,sDA+CC"}
@@ -0,0 +1,10 @@
1
+ import { TryCatchFinallyContext, TryCatchFinallyHook } from './wrapTryCatchFinallyPromisable';
2
+ export declare type OperationFinallyHooksContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext> = TContext & {
3
+ onFinally: (() => void)[];
4
+ };
5
+ export declare class OperationFinallyHooks {
6
+ static getTryCatchFinallyHook(_ctx: OperationFinallyHooksContext): TryCatchFinallyHook<OperationFinallyHooksContext>;
7
+ static getPriority(): number;
8
+ static onTry<TContext extends TryCatchFinallyContext>(ctx: OperationFinallyHooksContext<TContext>): void;
9
+ static onFinally<TContext extends TryCatchFinallyContext>(ctx: OperationFinallyHooksContext<TContext>): void;
10
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationFinallyHooks = void 0;
4
+ class OperationFinallyHooks {
5
+ static getTryCatchFinallyHook(_ctx) {
6
+ return this;
7
+ }
8
+ static getPriority() {
9
+ return 100;
10
+ }
11
+ static onTry(ctx) {
12
+ ctx.onFinally = [];
13
+ }
14
+ static onFinally(ctx) {
15
+ for (const hook of ctx.onFinally) {
16
+ try {
17
+ hook();
18
+ }
19
+ catch (e) {
20
+ const error = e;
21
+ const loggerCtx = ctx;
22
+ if (loggerCtx.logs)
23
+ loggerCtx.logs.push(`Error in onFinally hook: ${error?.message || error.toString()}`);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ exports.OperationFinallyHooks = OperationFinallyHooks;
29
+ //# sourceMappingURL=OperationFinallyHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationFinallyHooks.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/operationTracking/OperationFinallyHooks.ts"],"names":[],"mappings":";;;AAWA,MAAa,qBAAqB;IAChC,MAAM,CAAC,sBAAsB,CAAC,IAAkC;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,CAAC,WAAW;QAChB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAA0C,GAA2C;QAC/F,GAAG,CAAC,SAAS,GAAG,EAAE,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,SAAS,CAA0C,GAA2C;QACnG,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE;YAChC,IAAI;gBACF,IAAI,EAAE,CAAA;aACP;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,KAAK,GAAG,CAAU,CAAA;gBAExB,MAAM,SAAS,GAAG,GAAsC,CAAA;gBACxD,IAAI,SAAS,CAAC,IAAI;oBAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;aAC1G;SACF;IACH,CAAC;CACF;AAxBD,sDAwBC"}
@@ -0,0 +1,30 @@
1
+ import { TryCatchFinallyContext, TryCatchFinallyHook } from './wrapTryCatchFinallyPromisable';
2
+ import { TrackedError } from './TrackedError';
3
+ import { OperationDecoratorContext } from './OperationDecorator';
4
+ export declare type OperationLoggerContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext> = TContext & {
5
+ logs: string[];
6
+ logMetadata?: Record<string, unknown>;
7
+ decoratorArgs?: OperationLoggerDecoratorArgs;
8
+ sharedContext: OperationLoggerSharedContext;
9
+ };
10
+ export interface OperationLoggerSharedContext {
11
+ logs: string[];
12
+ logMetadata?: Record<string, unknown>;
13
+ }
14
+ export interface OperationLoggerDecoratorArgs {
15
+ shouldLog?: (ctx: OperationLoggerContext) => boolean | void;
16
+ }
17
+ export declare abstract class OperationLogger implements TryCatchFinallyHook<OperationLoggerContext> {
18
+ static getTryCatchFinallyHook(_ctx: OperationLoggerContext): TryCatchFinallyHook<OperationLoggerContext>;
19
+ abstract logInfo(msg: string, metadata?: object): void;
20
+ abstract logError(msg: string, metadata?: object): void;
21
+ onTry(ctx: OperationLoggerContext): () => void;
22
+ shouldLogDefault(_ctx: OperationLoggerContext): boolean;
23
+ getOperationLogMessages(ctx: OperationLoggerContext): string[];
24
+ getOperationTryMessage(ctx: OperationLoggerContext): string;
25
+ getOperationName<TContext extends OperationDecoratorContext>(ctx: TContext, fullPath?: boolean, separator?: string): string;
26
+ getOperationCompletedMessage(ctx: OperationLoggerContext): string;
27
+ getOperationErrorDetails(error: TrackedError, ctx: OperationLoggerContext): string[];
28
+ getErrorMessage(error: unknown, _ctx?: OperationLoggerContext): string;
29
+ onFinally(ctx: OperationLoggerContext): () => void;
30
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationLogger = void 0;
4
+ const OperationTree_1 = require("./OperationTree");
5
+ const OperationDecorator_1 = require("./OperationDecorator");
6
+ class OperationLogger {
7
+ static getTryCatchFinallyHook(_ctx) {
8
+ throw new Error('OperationLogger.getTryCatchFinallyHook is abstract and must be implemented by derived class');
9
+ }
10
+ onTry(ctx) {
11
+ ctx.logs = [];
12
+ if (!ctx.sharedContext.logs)
13
+ ctx.sharedContext.logs = [];
14
+ return () => {
15
+ let shouldLog = ctx.decoratorArgs?.shouldLog?.(ctx);
16
+ if (shouldLog === undefined)
17
+ shouldLog = this.shouldLogDefault(ctx);
18
+ if (shouldLog) {
19
+ const fullLogMessage = this.getOperationLogMessages(ctx)?.join('. ');
20
+ this.logInfo(fullLogMessage, ctx.logMetadata || ctx.sharedContext.logMetadata
21
+ ? { ...ctx.sharedContext.logMetadata, ...ctx.logMetadata }
22
+ : undefined);
23
+ }
24
+ };
25
+ }
26
+ shouldLogDefault(_ctx) {
27
+ return true;
28
+ }
29
+ getOperationLogMessages(ctx) {
30
+ const res = [];
31
+ switch (ctx.stage) {
32
+ case 'try':
33
+ res.push(this.getOperationTryMessage(ctx));
34
+ break;
35
+ case 'finally':
36
+ res.push(this.getOperationCompletedMessage(ctx));
37
+ if (ctx.error) {
38
+ const error = ctx.error;
39
+ res.push(...(this.getOperationErrorDetails(error, ctx) || []));
40
+ }
41
+ break;
42
+ default:
43
+ break;
44
+ }
45
+ return res;
46
+ }
47
+ getOperationTryMessage(ctx) {
48
+ return `${this.getOperationName(ctx)} starting...`;
49
+ }
50
+ getOperationName(ctx, fullPath = true, separator = ' > ') {
51
+ if (!fullPath)
52
+ return OperationDecorator_1.OperationDecorator.getOperationName(ctx) || '(anonymous)';
53
+ const fullOperationName = OperationTree_1.OperationTree.getOperationsStack(ctx)
54
+ .map((op) => this.getOperationName(op, false))
55
+ .join(separator);
56
+ return fullOperationName;
57
+ }
58
+ getOperationCompletedMessage(ctx) {
59
+ const hasError = !!ctx.error;
60
+ const fullOperationName = this.getOperationName(ctx);
61
+ const duration = ctx.duration;
62
+ if (duration !== undefined)
63
+ return `${fullOperationName} ${hasError ? 'failed' : 'succeeded'} after ${duration} ms`;
64
+ else
65
+ return `${fullOperationName} ${hasError ? 'failed' : 'succeeded'}`;
66
+ }
67
+ getOperationErrorDetails(error, ctx) {
68
+ const errorContext = error.trackedContext;
69
+ const logMessages = [];
70
+ logMessages.push(this.getErrorMessage(error, ctx));
71
+ if (errorContext == ctx && error.underlyingError) {
72
+ logMessages.push(`Underlying error: ${this.getErrorMessage(error.underlyingError, ctx)}`);
73
+ }
74
+ return logMessages;
75
+ }
76
+ getErrorMessage(error, _ctx) {
77
+ if (error instanceof Error) {
78
+ const trError = error;
79
+ const errorClass = trError?.constructor?.name;
80
+ return `${errorClass || '[undefined]'}: ${trError.message}`;
81
+ }
82
+ return error?.toString?.() || 'unknown error';
83
+ }
84
+ onFinally(ctx) {
85
+ ctx.logs.push(...(this.getOperationLogMessages(ctx) || []));
86
+ return () => {
87
+ let shouldLog = ctx.decoratorArgs?.shouldLog?.(ctx);
88
+ if (shouldLog === undefined)
89
+ shouldLog = this.shouldLogDefault(ctx);
90
+ if (shouldLog) {
91
+ const fullLogMessage = (ctx.sharedContext.logs?.filter((t) => t) || [])
92
+ .concat(...(ctx.logs || []))
93
+ .filter((t) => t)
94
+ .join('. ');
95
+ const logDetails = ctx.logMetadata || ctx.sharedContext.logMetadata
96
+ ? { ...ctx.sharedContext.logMetadata, ...ctx.logMetadata }
97
+ : undefined;
98
+ if (ctx.error)
99
+ this.logError(fullLogMessage, { error: ctx.error, ...logDetails });
100
+ else
101
+ this.logInfo(fullLogMessage, logDetails);
102
+ }
103
+ };
104
+ }
105
+ }
106
+ exports.OperationLogger = OperationLogger;
107
+ //# sourceMappingURL=OperationLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationLogger.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/operationTracking/OperationLogger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { TrackedError } from './TrackedError';
2
+ import { TryCatchFinallyContext, TryCatchFinallyHook } from './wrapTryCatchFinallyPromisable';
3
+ export declare type OperationStatsContext<TContext extends TryCatchFinallyContext = TryCatchFinallyContext> = TContext & {
4
+ tags: string[];
5
+ sharedContext: {
6
+ tags: string[];
7
+ };
8
+ decoratorArgs?: {
9
+ shouldStats?: (args: OperationStatsEventArgs) => boolean | void;
10
+ };
11
+ };
12
+ export declare abstract class OperationStats<TContext extends OperationStatsContext = OperationStatsContext> implements TryCatchFinallyHook<TContext> {
13
+ static getTryCatchFinallyHook(_ctx: OperationStatsContext): TryCatchFinallyHook<OperationStatsContext>;
14
+ abstract stats(args: StatsArgs): void;
15
+ getMetricName(ctx: OperationStatsContext): string | undefined;
16
+ onTry(ctx: OperationStatsContext): () => void;
17
+ mergeTags(...tagSets: (string[] | undefined)[]): string[];
18
+ statsOperationEvent(args: OperationStatsEventArgs): void;
19
+ onCatch(ctx: OperationStatsContext): void;
20
+ onFinally(ctx: OperationStatsContext): () => void;
21
+ getHistogramMetric(ctx: OperationStatsContext): string | undefined;
22
+ extractTagsFromError(error: TrackedError, ctx: OperationStatsContext): string[];
23
+ getErrorOperationNameTag(error: TrackedError, ctx: OperationStatsContext): string | undefined;
24
+ getOperationNameTag(ctx: OperationStatsContext): string | undefined;
25
+ }
26
+ export declare type StatsMethod = 'incr' | 'histogram' | 'set';
27
+ export declare type StatsArgs = {
28
+ method?: StatsMethod;
29
+ metric: string;
30
+ value?: number;
31
+ tags?: string[];
32
+ };
33
+ export declare type OperationStatsEvent = OperationStatsContext['stage'] | 'duration';
34
+ export interface OperationStatsEventArgs {
35
+ event: OperationStatsEvent;
36
+ context: OperationStatsContext;
37
+ stats: StatsArgs;
38
+ shouldStats: boolean;
39
+ }