@segment/actions-shared 1.116.0 → 1.117.0-staging-80e4b0b3a

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 (36) hide show
  1. package/dist/engage/utils/AggregateError.js +3 -3
  2. package/dist/engage/utils/AggregateError.js.map +1 -1
  3. package/dist/engage/utils/CachedResponse.d.ts +23 -0
  4. package/dist/engage/utils/CachedResponse.js +62 -0
  5. package/dist/engage/utils/CachedResponse.js.map +1 -0
  6. package/dist/engage/utils/EngageActionPerformer.d.ts +44 -6
  7. package/dist/engage/utils/EngageActionPerformer.js +281 -12
  8. package/dist/engage/utils/EngageActionPerformer.js.map +1 -1
  9. package/dist/engage/utils/EngageLogger.d.ts +2 -0
  10. package/dist/engage/utils/EngageLogger.js +29 -8
  11. package/dist/engage/utils/EngageLogger.js.map +1 -1
  12. package/dist/engage/utils/EngageStats.d.ts +4 -4
  13. package/dist/engage/utils/EngageStats.js +1 -9
  14. package/dist/engage/utils/EngageStats.js.map +1 -1
  15. package/dist/engage/utils/MessageSendPerformer.d.ts +9 -3
  16. package/dist/engage/utils/MessageSendPerformer.js +92 -19
  17. package/dist/engage/utils/MessageSendPerformer.js.map +1 -1
  18. package/dist/engage/utils/ResponseError.d.ts +2 -1
  19. package/dist/engage/utils/ResponseError.js +4 -1
  20. package/dist/engage/utils/ResponseError.js.map +1 -1
  21. package/dist/engage/utils/delay.d.ts +1 -0
  22. package/dist/engage/utils/delay.js +12 -0
  23. package/dist/engage/utils/delay.js.map +1 -0
  24. package/dist/engage/utils/getOrCatch.d.ts +6 -0
  25. package/dist/engage/utils/getOrCatch.js +19 -0
  26. package/dist/engage/utils/getOrCatch.js.map +1 -0
  27. package/dist/engage/utils/getOrRetry.d.ts +9 -0
  28. package/dist/engage/utils/getOrRetry.js +25 -0
  29. package/dist/engage/utils/getOrRetry.js.map +1 -0
  30. package/dist/engage/utils/isRetryableError.js +1 -1
  31. package/dist/engage/utils/isRetryableError.js.map +1 -1
  32. package/dist/engage/utils/operationTracking/OperationStats.d.ts +7 -2
  33. package/dist/engage/utils/operationTracking/OperationStats.js +19 -6
  34. package/dist/engage/utils/operationTracking/OperationStats.js.map +1 -1
  35. package/dist/engage/utils/track.d.ts +9 -9
  36. package/package.json +3 -4
@@ -12,11 +12,11 @@ class AggregateError extends actions_core_1.IntegrationError {
12
12
  static create(args) {
13
13
  const firstErrorInfo = ResponseError_1.getErrorDetails(args.takeCodeAndStatusFromError ? args.takeCodeAndStatusFromError : args.errors[0]);
14
14
  if (!args.code)
15
- args.code = firstErrorInfo.code;
15
+ args.code = firstErrorInfo?.code;
16
16
  if (!args.status)
17
- args.status = firstErrorInfo.status;
17
+ args.status = firstErrorInfo?.status;
18
18
  let message = `Multiple errors (${args.errors.length}): ${args.errors
19
- .map((e) => ResponseError_1.getErrorDetails(e).message)
19
+ .map((e) => ResponseError_1.getErrorDetails(e)?.message)
20
20
  .join(', ')}`;
21
21
  message = args.message?.(message) || message;
22
22
  return new AggregateError(args.errors, args.code, args.status, undefined, message);
@@ -1 +1 @@
1
- {"version":3,"file":"AggregateError.js","sourceRoot":"","sources":["../../../src/engage/utils/AggregateError.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,mDAAiD;AAEjD,MAAa,cAAe,SAAQ,+BAAgB;IAqBlD,YAAmB,MAAa,EAAE,IAAa,EAAE,MAAe,EAAS,IAAU,EAAE,OAAgB;QACnG,KAAK,CAAC,OAAO,IAAI,iBAAiB,EAAE,IAAK,EAAE,MAAO,CAAC,CAAA;QADlC,WAAM,GAAN,MAAM,CAAO;QAAyC,SAAI,GAAJ,IAAI,CAAM;IAEnF,CAAC;IAtBD,MAAM,CAAC,MAAM,CAAC,IAMb;QACC,MAAM,cAAc,GAAG,+BAAe,CACpC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACnF,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAA;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAA;QACrD,IAAI,OAAO,GAAG,oBAAoB,IAAI,CAAC,MAAM,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM;aAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,+BAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACtC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC5C,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpF,CAAC;CAOF;AA1BD,wCA0BC"}
1
+ {"version":3,"file":"AggregateError.js","sourceRoot":"","sources":["../../../src/engage/utils/AggregateError.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,mDAAiD;AAEjD,MAAa,cAAe,SAAQ,+BAAgB;IAqBlD,YAAmB,MAAa,EAAE,IAAa,EAAE,MAAe,EAAS,IAAU,EAAE,OAAgB;QACnG,KAAK,CAAC,OAAO,IAAI,iBAAiB,EAAE,IAAK,EAAE,MAAO,CAAC,CAAA;QADlC,WAAM,GAAN,MAAM,CAAO;QAAyC,SAAI,GAAJ,IAAI,CAAM;IAEnF,CAAC;IAtBD,MAAM,CAAC,MAAM,CAAC,IAMb;QACC,MAAM,cAAc,GAAG,+BAAe,CACpC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACnF,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,cAAc,EAAE,IAAI,CAAA;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,cAAc,EAAE,MAAM,CAAA;QACtD,IAAI,OAAO,GAAG,oBAAoB,IAAI,CAAC,MAAM,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM;aAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,+BAAe,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC5C,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpF,CAAC;CAOF;AA1BD,wCA0BC"}
@@ -0,0 +1,23 @@
1
+ export declare enum CachedResponseType {
2
+ Success = 0,
3
+ Error = 1
4
+ }
5
+ export declare class CachedValueSerializationError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export declare class CachedValue {
9
+ status: number;
10
+ type: CachedResponseType;
11
+ protected seperator: string;
12
+ constructor(status: number);
13
+ serialize(): string;
14
+ }
15
+ export declare class CachedError extends CachedValue {
16
+ message: string;
17
+ code: string;
18
+ constructor(status: number, message: string, code: string);
19
+ serialize(): string;
20
+ }
21
+ export declare class CachedValueFactory {
22
+ static fromString(value: string): CachedValue | CachedError;
23
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CachedValueFactory = exports.CachedError = exports.CachedValue = exports.CachedValueSerializationError = exports.CachedResponseType = void 0;
4
+ var CachedResponseType;
5
+ (function (CachedResponseType) {
6
+ CachedResponseType[CachedResponseType["Success"] = 0] = "Success";
7
+ CachedResponseType[CachedResponseType["Error"] = 1] = "Error";
8
+ })(CachedResponseType = exports.CachedResponseType || (exports.CachedResponseType = {}));
9
+ class CachedValueSerializationError extends Error {
10
+ constructor(message) {
11
+ super(message);
12
+ this.name = 'CachedValueSerializationError';
13
+ }
14
+ }
15
+ exports.CachedValueSerializationError = CachedValueSerializationError;
16
+ class CachedValue {
17
+ constructor(status) {
18
+ this.seperator = ':-:';
19
+ this.status = status;
20
+ this.type = CachedResponseType.Success;
21
+ }
22
+ serialize() {
23
+ return `${this.type}${this.seperator}${this.status}`;
24
+ }
25
+ }
26
+ exports.CachedValue = CachedValue;
27
+ class CachedError extends CachedValue {
28
+ constructor(status, message, code) {
29
+ super(status);
30
+ this.type = CachedResponseType.Error;
31
+ this.code = code;
32
+ this.message = message;
33
+ }
34
+ serialize() {
35
+ return `${super.serialize()}${this.seperator}${this.message}${this.seperator}${this.code}`;
36
+ }
37
+ }
38
+ exports.CachedError = CachedError;
39
+ class CachedValueFactory {
40
+ static fromString(value) {
41
+ const parts = value.split(':-:');
42
+ if (parts.length < 2) {
43
+ throw new CachedValueSerializationError(`Invalid cached value ${value}`);
44
+ }
45
+ const [type, status] = parts;
46
+ if (CachedResponseType.Success === +type) {
47
+ return new CachedValue(+status);
48
+ }
49
+ else if (CachedResponseType.Error === +type) {
50
+ if (parts.length < 4) {
51
+ throw new CachedValueSerializationError(`Invalid cached value ${value}`);
52
+ }
53
+ const [message, code] = parts.slice(2);
54
+ return new CachedError(+status, message, code);
55
+ }
56
+ else {
57
+ throw new CachedValueSerializationError(`Invalid cached value ${value}`);
58
+ }
59
+ }
60
+ }
61
+ exports.CachedValueFactory = CachedValueFactory;
62
+ //# sourceMappingURL=CachedResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CachedResponse.js","sourceRoot":"","sources":["../../../src/engage/utils/CachedResponse.ts"],"names":[],"mappings":";;;AAAA,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,iEAAW,CAAA;IACX,6DAAS,CAAA;AACX,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B;AAED,MAAa,6BAA8B,SAAQ,KAAK;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAA;IAC7C,CAAC;CACF;AALD,sEAKC;AAED,MAAa,WAAW;IAKtB,YAAY,MAAc;QAFhB,cAAS,GAAG,KAAK,CAAA;QAGzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAA;IACxC,CAAC;IAED,SAAS;QACP,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;CACF;AAbD,kCAaC;AAED,MAAa,WAAY,SAAQ,WAAW;IAG1C,YAAY,MAAc,EAAE,OAAe,EAAE,IAAY;QACvD,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,SAAS;QACP,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC5F,CAAC;CACF;AAbD,kCAaC;AAED,MAAa,kBAAkB;IACtB,MAAM,CAAC,UAAU,CAAC,KAAa;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;SACzE;QACD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAA;QAC5B,IAAI,kBAAkB,CAAC,OAAO,KAAK,CAAC,IAAI,EAAE;YACxC,OAAO,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;SAChC;aAAM,IAAI,kBAAkB,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE;YAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;aACzE;YACD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACtC,OAAO,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;SAC/C;aAAM;YACL,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;SACzE;IACH,CAAC;CACF;AAnBD,gDAmBC"}
@@ -1,18 +1,20 @@
1
1
  import { RequestClient } from '@segment/actions-core/create-request-client';
2
- import { ExecuteInput } from '@segment/actions-core/destination-kit';
2
+ import { EngageDestinationCache, ExecuteInput } from '@segment/actions-core/destination-kit';
3
3
  import { MaybePromise } from '@segment/actions-core/destination-kit/types';
4
4
  import { EngageLogger } from './EngageLogger';
5
5
  import { EngageStats } from './EngageStats';
6
6
  import { OperationContext } from './track';
7
7
  import { RequestOptions } from '@segment/actions-core/request-client';
8
8
  import { IntegrationError } from '@segment/actions-core';
9
- import { Awaited } from './operationTracking';
9
+ import { Awaited, StatsTags } from './operationTracking';
10
+ import { ValueOrError } from './getOrCatch';
11
+ import { GetOrRetryArgs } from './getOrRetry';
10
12
  export declare abstract class EngageActionPerformer<TSettings = any, TPayload = any, TReturn = any> {
11
13
  readonly requestClient: RequestClient;
12
14
  readonly executeInput: ExecuteInput<TSettings, TPayload>;
13
15
  readonly logger: EngageLogger;
14
16
  readonly statsClient: EngageStats;
15
- readonly dataFeedCache: import("@segment/actions-core/destination-kit").DataFeedCache | undefined;
17
+ readonly engageDestinationCache?: EngageDestinationCache;
16
18
  readonly currentOperation: OperationContext | undefined;
17
19
  readonly payload: TPayload;
18
20
  readonly settings: TSettings;
@@ -32,11 +34,47 @@ export declare abstract class EngageActionPerformer<TSettings = any, TPayload =
32
34
  isFeatureActive(featureName: string, getDefault?: () => boolean): boolean | undefined;
33
35
  logInfo(msg: string, metadata?: object): void;
34
36
  logError(msg: string, metadata?: object): void;
37
+ logWarn(msg: string, metadata?: object): void;
35
38
  logOnError(logMessage: string | ((ctx: OperationContext) => string)): void;
36
- statsIncr(metric: string, value?: number, tags?: string[]): void;
37
- statsHistogram(metric: string, value: number, tags?: string[]): void;
38
- statsSet(metric: string, value: number, tags?: string[]): void;
39
+ statsIncr(metric: string, value?: number, tags?: StatsTags): void;
40
+ statsHistogram(metric: string, value: number, tags?: StatsTags): void;
41
+ statsSet(metric: string, value: number, tags?: StatsTags): void;
39
42
  get logDetails(): Record<string, unknown>;
40
43
  get tags(): string[];
41
44
  rethrowIntegrationError(error: unknown, getWrapper: () => IntegrationError | ConstructorParameters<typeof IntegrationError>): never;
45
+ throwRetryableError(message: string, code?: string): never;
46
+ createStepLogger(args: LogStepDetails): StepLogger;
47
+ getOrAddCache<T>(key: string, createValue: () => Promise<T>, options: {
48
+ cacheGroup?: string;
49
+ serializer?: CacheSerializer<T>;
50
+ expiryInSeconds?: number;
51
+ lockOptions?: LockOptions;
52
+ saveRetry?: GetOrRetryArgs;
53
+ onSaveFailed?: (error: Error) => void;
54
+ }): Promise<T>;
55
+ withDistributedLock<T>(key: string, createValue: () => Promise<T>, options: LockOptions): Promise<T>;
56
+ isLockExpirationExtended(): boolean | undefined;
57
+ isRequestTimeoutExtended(): boolean | undefined;
42
58
  }
59
+ export declare type CacheSerializer<T> = {
60
+ stringify: (cacheable: ValueOrError<T>) => string | void;
61
+ parse: (cachedValue: string) => ValueOrError<T> | void;
62
+ };
63
+ export declare const DefaultSerializer: CacheSerializer<any>;
64
+ export declare type LockOptions = {
65
+ acquireLockMaxWaitTimeMs: number;
66
+ acquireLockRetryIntervalMs?: number;
67
+ lockMaxTimeMs: number;
68
+ cacheGroup?: string;
69
+ };
70
+ export declare function isNone(cacheValue: any): cacheValue is null | undefined | void;
71
+ declare type StepLogger = LogStepDetails & {
72
+ track<T>(stepName: string, fn: (details: LogStepDetails) => T): T;
73
+ write(stepName: string, details?: Partial<LogStepDetails>): void;
74
+ };
75
+ declare type LogStepDetails = {
76
+ tags: Record<string, any>;
77
+ logs: Record<string, any>;
78
+ level?: 'info' | 'warn' | 'error';
79
+ };
80
+ export {};
@@ -9,26 +9,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.EngageActionPerformer = void 0;
12
+ exports.isNone = exports.DefaultSerializer = exports.EngageActionPerformer = void 0;
13
13
  const EngageLogger_1 = require("./EngageLogger");
14
14
  const EngageStats_1 = require("./EngageStats");
15
15
  const track_1 = require("./track");
16
16
  const isDestinationActionService_1 = require("./isDestinationActionService");
17
17
  const ResponseError_1 = require("./ResponseError");
18
+ const actions_core_1 = require("@segment/actions-core");
18
19
  const IntegrationErrorWrapper_1 = require("./IntegrationErrorWrapper");
20
+ const operationTracking_1 = require("./operationTracking");
19
21
  const truncate_1 = __importDefault(require("lodash/truncate"));
22
+ const isRetryableError_1 = require("./isRetryableError");
23
+ const getOrCatch_1 = require("./getOrCatch");
24
+ const getOrRetry_1 = require("./getOrRetry");
20
25
  class EngageActionPerformer {
21
26
  constructor(requestClient, executeInput) {
22
27
  this.requestClient = requestClient;
23
28
  this.executeInput = executeInput;
24
- this.logger = new EngageLogger_1.EngageLogger(this);
25
- this.statsClient = new EngageStats_1.EngageStats(this);
26
- this.dataFeedCache = this.executeInput.dataFeedCache;
27
29
  this.payload = executeInput.payload;
28
30
  this.settings = executeInput.settings;
31
+ this.engageDestinationCache = executeInput.engageDestinationCache;
32
+ this.logger = new EngageLogger_1.EngageLogger(this);
33
+ this.statsClient = new EngageStats_1.EngageStats(this);
29
34
  }
30
35
  async perform() {
31
36
  await this.beforePerform?.();
37
+ this.statsIncr('perform_attempt');
32
38
  return this.doPerform();
33
39
  }
34
40
  async request(url, options) {
@@ -41,19 +47,21 @@ class EngageActionPerformer {
41
47
  const isTimeoutError = msgLowercare?.includes('timeout') ||
42
48
  msgLowercare?.includes('timedout') ||
43
49
  msgLowercare?.includes('exceeded the deadline') ||
44
- errorDetails.code?.toLowerCase().includes('etimedout');
50
+ errorDetails?.code?.toLowerCase().includes('etimedout');
45
51
  if (isTimeoutError) {
46
- const status = errorDetails.status ?? respError.status ?? 408;
52
+ const status = errorDetails?.status ?? respError.status ?? 408;
47
53
  respError.status = status;
48
- errorDetails.status = status;
49
- const errorCode = errorDetails.code ?? respError.code ?? 'etimedout';
54
+ if (errorDetails)
55
+ errorDetails.status = status;
56
+ const errorCode = errorDetails?.code ?? respError.code ?? 'etimedout';
50
57
  respError.code = errorCode;
51
- errorDetails.code = errorCode;
58
+ if (errorDetails)
59
+ errorDetails.code = errorCode;
52
60
  respError.retry = true;
53
61
  }
54
- if (errorDetails.code)
62
+ if (errorDetails?.code)
55
63
  op.tags.push(`response_code:${errorDetails.code}`);
56
- if (errorDetails.status)
64
+ if (errorDetails?.status)
57
65
  op.tags.push(`response_status:${errorDetails.status}`);
58
66
  if (this.onResponse)
59
67
  try {
@@ -76,7 +84,10 @@ class EngageActionPerformer {
76
84
  }
77
85
  }
78
86
  });
79
- return await this.requestClient(url, options);
87
+ return await this.requestClient(url, {
88
+ timeout: this.isRequestTimeoutExtended() ? 60000 * 5 : 30000,
89
+ ...options
90
+ });
80
91
  }
81
92
  redactPii(pii) {
82
93
  if (!pii) {
@@ -100,6 +111,9 @@ class EngageActionPerformer {
100
111
  logError(msg, metadata) {
101
112
  this.logger.logError(msg, metadata);
102
113
  }
114
+ logWarn(msg, metadata) {
115
+ this.logger.logWarn(msg, metadata);
116
+ }
103
117
  logOnError(logMessage) {
104
118
  const op = this.currentOperation;
105
119
  op?.onFinally.push(() => {
@@ -127,6 +141,225 @@ class EngageActionPerformer {
127
141
  rethrowIntegrationError(error, getWrapper) {
128
142
  throw IntegrationErrorWrapper_1.IntegrationErrorWrapper.wrap(error, getWrapper, this.currentOperation);
129
143
  }
144
+ throwRetryableError(message, code = 'ETIMEDOUT') {
145
+ const error = new actions_core_1.IntegrationError(message, code, 500);
146
+ error.retry = true;
147
+ throw error;
148
+ }
149
+ createStepLogger(args) {
150
+ const { tags = {}, logs = {} } = args;
151
+ const messageId = this.executeInput['rawData']?.messageId;
152
+ logs.messageId = messageId;
153
+ const operation = operationTracking_1.OperationDecorator.getOperationName(this.currentOperation) ||
154
+ this.currentOperation?.func.name ||
155
+ '';
156
+ const appendStepDetails = (stepname, details) => {
157
+ tags['step_' + stepname] = true;
158
+ if (details?.tags) {
159
+ for (const [key, value] of Object.entries(details.tags))
160
+ tags[stepname + '_' + key] = value;
161
+ }
162
+ if (details?.logs) {
163
+ for (const [key, value] of Object.entries(details.logs))
164
+ logs[stepname + '_' + key] = value instanceof Error ? ResponseError_1.getErrorDetails(value) : value;
165
+ }
166
+ };
167
+ const write = (stepName, details, durationMs) => {
168
+ appendStepDetails(stepName, details);
169
+ tags.last_step = stepName;
170
+ this.statsIncr(`${operation}_${stepName}`, 1, tags);
171
+ const hasError = !!(details?.tags?.error || details?.logs?.error);
172
+ const level = details?.level ? details.level : hasError ? 'warn' : 'info';
173
+ switch (level) {
174
+ case 'error':
175
+ this.logError(`${operation}_${stepName}`, logs);
176
+ break;
177
+ case 'warn':
178
+ this.logWarn(`${operation}_${stepName}`, logs);
179
+ break;
180
+ default:
181
+ this.logInfo(`${operation}_${stepName}`, logs);
182
+ break;
183
+ }
184
+ if (durationMs !== undefined) {
185
+ this.statsHistogram(`${operation}_${stepName}.duration`, durationMs, tags);
186
+ }
187
+ };
188
+ const track = (stepName, fn) => {
189
+ const startStep = `${stepName}_starting`;
190
+ write(startStep);
191
+ const stepDetails = { logs: {}, tags: {} };
192
+ let fnRes = undefined;
193
+ let error = undefined;
194
+ let isPromise = false;
195
+ const startTime = Date.now();
196
+ const onFinally = () => {
197
+ const durationMs = Date.now() - startTime;
198
+ const valueOrError = fnRes instanceof Object && ('error' in fnRes || 'value' in fnRes) ? fnRes : undefined;
199
+ if (valueOrError)
200
+ fnRes = valueOrError.value;
201
+ error = error || valueOrError?.error;
202
+ stepDetails.tags.error = !!error;
203
+ if (error) {
204
+ stepDetails.logs.error = error ? ResponseError_1.getErrorDetails(error) : undefined;
205
+ }
206
+ else {
207
+ const valueStr = getOrCatch_1.getOrCatch(() => (isNone(fnRes) ? '(none)' : fnRes instanceof Object ? JSON.stringify(fnRes) : `${fnRes}`).substring(0, 100));
208
+ stepDetails.logs.value = valueStr.error ? `<error> ${valueStr.error.message}` : `${valueStr.value}`;
209
+ }
210
+ write(`${stepName}_finished`, stepDetails, durationMs);
211
+ };
212
+ const onCatch = (e) => {
213
+ error = e;
214
+ throw e;
215
+ };
216
+ try {
217
+ const result = fn(stepDetails);
218
+ if (result instanceof Promise) {
219
+ isPromise = true;
220
+ return result
221
+ .then((res) => {
222
+ return (fnRes = res);
223
+ })
224
+ .catch(onCatch)
225
+ .finally(onFinally);
226
+ }
227
+ return result;
228
+ }
229
+ catch (e) {
230
+ onCatch(e);
231
+ }
232
+ finally {
233
+ if (!isPromise) {
234
+ onFinally();
235
+ }
236
+ }
237
+ };
238
+ this.currentOperation?.onFinally.push(() => {
239
+ const tagsArray = this.statsClient.tagsMapToArray(tags);
240
+ this.currentOperation?.tags.push(...tagsArray);
241
+ });
242
+ return {
243
+ logs,
244
+ tags,
245
+ track,
246
+ write
247
+ };
248
+ }
249
+ async getOrAddCache(key, createValue, options) {
250
+ const cache_group = options.cacheGroup || this.currentOperation?.parent?.func.name || '';
251
+ const step = this.createStepLogger({
252
+ tags: {
253
+ cache_group: cache_group,
254
+ withLock: !!options.lockOptions,
255
+ last_step: 'init'
256
+ },
257
+ logs: { key }
258
+ });
259
+ if (!this.engageDestinationCache)
260
+ return step.track('no_cache', () => createValue());
261
+ const cache = this.engageDestinationCache;
262
+ const serializer = options.serializer || exports.DefaultSerializer;
263
+ const cacheRead = await step.track('cache_reading', () => getOrCatch_1.getOrCatch(() => cache.getByKey(key)));
264
+ if (cacheRead.error) {
265
+ this.throwRetryableError('Error reading cache: ' + cacheRead.error.message);
266
+ }
267
+ if (isNone(cacheRead.value) && options.lockOptions) {
268
+ if (!options.lockOptions.cacheGroup)
269
+ options.lockOptions.cacheGroup = cache_group;
270
+ return step.track('cache_locking', () => this.withDistributedLock(`cache:${key}`, () => this.getOrAddCache(key, createValue, { ...options, lockOptions: undefined }), options.lockOptions));
271
+ }
272
+ if (!isNone(cacheRead.value)) {
273
+ const { value: parsedCache, error: parsingError } = step.track('cache_parse', () => getOrCatch_1.getOrCatch(() => serializer.parse(cacheRead.value)));
274
+ if (!parsingError)
275
+ if (isNone(parsedCache)) {
276
+ step.write('cache_ignored');
277
+ }
278
+ else {
279
+ step.write('cache_hit', { tags: { cache_hit: true, cached_error: !!parsedCache.error } });
280
+ if (parsedCache.error) {
281
+ throw parsedCache.error;
282
+ }
283
+ return parsedCache.value;
284
+ }
285
+ }
286
+ step.write('cache_miss');
287
+ const { value: result, error: resultError } = await step.track('cache_create_value', () => getOrCatch_1.getOrCatch(() => createValue()));
288
+ const stringified = step.track('cache_stringified', () => getOrCatch_1.getOrCatch(() => serializer.stringify(resultError ? { error: resultError } : { value: result })));
289
+ if (!stringified.error)
290
+ if (!isNone(stringified.value)) {
291
+ const { error: cacheSavingError, value: cacheSavingResult } = await step.track('cache_save', () => getOrRetry_1.getOrRetry(() => cache.setByKey(key, stringified.value, options.expiryInSeconds), options.saveRetry || {
292
+ attempts: 5,
293
+ retryIntervalMs: getOrRetry_1.backoffRetryPolicy(10000, 3),
294
+ onFailedAttempt: (error, attemptCount) => {
295
+ step.write('cache_save_failed_attempt', { logs: { attemptCount, error: ResponseError_1.getErrorDetails(error) } });
296
+ }
297
+ }));
298
+ if (cacheSavingError || !cacheSavingResult) {
299
+ options?.onSaveFailed?.(cacheSavingError);
300
+ }
301
+ }
302
+ else {
303
+ step.write('cache_save_skipped');
304
+ }
305
+ if (resultError)
306
+ throw resultError;
307
+ else
308
+ return result;
309
+ }
310
+ async withDistributedLock(key, createValue, options) {
311
+ const cache_group = options.cacheGroup || this.currentOperation?.parent?.func.name || '';
312
+ const step = this.createStepLogger({
313
+ logs: {
314
+ key
315
+ },
316
+ tags: {
317
+ cache_group
318
+ }
319
+ });
320
+ if (!this.engageDestinationCache) {
321
+ return await createValue();
322
+ }
323
+ const cache = this.engageDestinationCache;
324
+ const lockKey = `lock:${key}`;
325
+ const acquireLock = async () => {
326
+ const startTime = Date.now();
327
+ while (Date.now() - startTime < options.acquireLockMaxWaitTimeMs) {
328
+ step.write('cache_lock_attempt');
329
+ if (await step.track('redis_setNX', () => cache.setByKeyNX(lockKey, 'locked', options.lockMaxTimeMs / 1000))) {
330
+ step.write('cache_lock_acquired', { tags: { lock_acquired: true } });
331
+ this.statsHistogram('cache_lock_waiting_time', Date.now() - startTime, step.tags);
332
+ return {
333
+ release: () => step.track('redis_delByKey', () => cache.delByKey(lockKey))
334
+ };
335
+ }
336
+ step.write('cache_lock_waiting');
337
+ await new Promise((resolve) => setTimeout(resolve, options.acquireLockRetryIntervalMs || 500));
338
+ }
339
+ step.write('cache_lock_timeout');
340
+ };
341
+ const { value: lock, error: redisError } = await step.track('cache_acquire_lock', () => getOrCatch_1.getOrCatch(() => acquireLock()));
342
+ if (redisError) {
343
+ this.throwRetryableError('Error acquiring lock: ' + redisError.message);
344
+ }
345
+ else if (!lock?.release) {
346
+ step.write('cache_lock_timeout_exit');
347
+ this.throwRetryableError('Timeout while acquiring lock');
348
+ }
349
+ else {
350
+ const { value: createdValue, error: createValueError } = await step.track('cache_lock_create', () => getOrCatch_1.getOrCatch(() => createValue()));
351
+ await step.track('cache_lock_release', () => getOrCatch_1.getOrCatch(() => lock.release()));
352
+ if (createValueError)
353
+ throw createValueError;
354
+ return createdValue;
355
+ }
356
+ }
357
+ isLockExpirationExtended() {
358
+ return this.isFeatureActive('engage-messaging-lock-expiration-extended', () => false);
359
+ }
360
+ isRequestTimeoutExtended() {
361
+ return this.isFeatureActive('engage-messaging-request-timeout-extended', () => false);
362
+ }
130
363
  }
131
364
  __decorate([
132
365
  track_1.track()
@@ -137,6 +370,12 @@ __decorate([
137
370
  onFinally: addUrlToLog
138
371
  })
139
372
  ], EngageActionPerformer.prototype, "request", null);
373
+ __decorate([
374
+ track_1.track()
375
+ ], EngageActionPerformer.prototype, "getOrAddCache", null);
376
+ __decorate([
377
+ track_1.track()
378
+ ], EngageActionPerformer.prototype, "withDistributedLock", null);
140
379
  exports.EngageActionPerformer = EngageActionPerformer;
141
380
  function addUrlToLog(ctx) {
142
381
  const ctxFull = ctx;
@@ -145,4 +384,34 @@ function addUrlToLog(ctx) {
145
384
  ctxFull.logs.push(truncate_1.default(argUrl, { length: 70 }));
146
385
  }
147
386
  }
387
+ exports.DefaultSerializer = {
388
+ stringify: (valueOrError) => {
389
+ let cacheObj = undefined;
390
+ if (valueOrError.error && !isRetryableError_1.isRetryableError(valueOrError.error)) {
391
+ const errorDetails = ResponseError_1.getErrorDetails(valueOrError.error);
392
+ if (errorDetails?.status) {
393
+ cacheObj = { error: errorDetails };
394
+ }
395
+ }
396
+ else if (valueOrError.value !== undefined) {
397
+ cacheObj = { value: valueOrError.value };
398
+ }
399
+ return cacheObj ? JSON.stringify(cacheObj) : undefined;
400
+ },
401
+ parse: (cachedValue) => {
402
+ const parsed = JSON.parse(cachedValue);
403
+ if (parsed.error) {
404
+ const error = new actions_core_1.IntegrationError(parsed.error.message, parsed.error.code, parsed.error.status || 400);
405
+ error.retry = false;
406
+ return { error };
407
+ }
408
+ else {
409
+ return { value: parsed.value };
410
+ }
411
+ }
412
+ };
413
+ function isNone(cacheValue) {
414
+ return cacheValue === undefined || cacheValue === null;
415
+ }
416
+ exports.isNone = isNone;
148
417
  //# sourceMappingURL=EngageActionPerformer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EngageActionPerformer.js","sourceRoot":"","sources":["../../../src/engage/utils/EngageActionPerformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EngageActionPerformer.js","sourceRoot":"","sources":["../../../src/engage/utils/EngageActionPerformer.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,9 @@ export declare class EngageLogger extends OperationLogger {
12
12
  readonly logDetails: Record<string, unknown>;
13
13
  logInfo(msg: string, metadata?: object): void;
14
14
  logError(msg: string, metadata?: object): void;
15
+ logWarn(msg: string, metadata?: object): void;
15
16
  error(msg: string, metadata?: object): void;
16
17
  info(msg: string, metadata?: object): void;
18
+ warn(msg: string, metadata?: object): void;
17
19
  getErrorMessage(error: unknown): string;
18
20
  }