@vtex/api 6.48.1-beta.3 → 6.49.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 (192) hide show
  1. package/gen/manifest.schema +1 -1
  2. package/lib/HttpClient/GraphQLClient.d.ts +1 -1
  3. package/lib/HttpClient/HttpClient.d.ts +3 -2
  4. package/lib/HttpClient/HttpClient.js +14 -14
  5. package/lib/HttpClient/agents.d.ts +5 -2
  6. package/lib/HttpClient/agents.js +10 -4
  7. package/lib/HttpClient/index.js +7 -2
  8. package/lib/HttpClient/middlewares/cache.d.ts +1 -1
  9. package/lib/HttpClient/middlewares/cache.js +43 -44
  10. package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
  11. package/lib/HttpClient/middlewares/cancellationToken.js +2 -1
  12. package/lib/HttpClient/middlewares/inflight.d.ts +1 -1
  13. package/lib/HttpClient/middlewares/inflight.js +6 -3
  14. package/lib/HttpClient/middlewares/memoization.d.ts +1 -1
  15. package/lib/HttpClient/middlewares/memoization.js +9 -8
  16. package/lib/HttpClient/middlewares/metrics.js +8 -11
  17. package/lib/HttpClient/middlewares/notFound.d.ts +1 -1
  18. package/lib/HttpClient/middlewares/notFound.js +4 -2
  19. package/lib/HttpClient/middlewares/recorder.js +2 -5
  20. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +1 -1
  21. package/lib/HttpClient/middlewares/request/index.d.ts +1 -1
  22. package/lib/HttpClient/middlewares/request/index.js +13 -10
  23. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +0 -1
  24. package/lib/HttpClient/middlewares/request/setupAxios/index.js +5 -4
  25. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +6 -5
  26. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +1 -0
  27. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +8 -8
  28. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +10 -8
  29. package/lib/HttpClient/middlewares/tracing.js +11 -14
  30. package/lib/HttpClient/typings.d.ts +3 -3
  31. package/lib/caches/DiskCache.js +3 -3
  32. package/lib/caches/LRUCache.d.ts +2 -2
  33. package/lib/caches/LRUDiskCache.d.ts +1 -1
  34. package/lib/caches/LRUDiskCache.js +3 -3
  35. package/lib/caches/MultilayeredCache.d.ts +2 -2
  36. package/lib/caches/MultilayeredCache.js +7 -7
  37. package/lib/caches/index.js +6 -2
  38. package/lib/caches/typings.d.ts +5 -5
  39. package/lib/clients/IOClient.d.ts +1 -1
  40. package/lib/clients/IOClients.d.ts +1 -1
  41. package/lib/clients/apps/AppClient.js +1 -1
  42. package/lib/clients/apps/AppGraphQLClient.js +1 -1
  43. package/lib/clients/apps/Billing.d.ts +1 -1
  44. package/lib/clients/apps/Builder.d.ts +7 -7
  45. package/lib/clients/apps/Builder.js +1 -1
  46. package/lib/clients/apps/MessagesGraphQL.d.ts +1 -1
  47. package/lib/clients/apps/MessagesGraphQL.js +3 -3
  48. package/lib/clients/apps/Settings.js +3 -3
  49. package/lib/clients/apps/catalogGraphQL/index.d.ts +4 -4
  50. package/lib/clients/apps/catalogGraphQL/index.js +4 -4
  51. package/lib/clients/apps/index.js +6 -2
  52. package/lib/clients/external/ID.d.ts +4 -4
  53. package/lib/clients/external/PaymentProvider.d.ts +2 -2
  54. package/lib/clients/external/index.js +6 -2
  55. package/lib/clients/index.js +6 -2
  56. package/lib/clients/infra/Apps.d.ts +32 -27
  57. package/lib/clients/infra/Apps.js +16 -18
  58. package/lib/clients/infra/Assets.d.ts +6 -5
  59. package/lib/clients/infra/Assets.js +11 -11
  60. package/lib/clients/infra/BillingMetrics.d.ts +1 -1
  61. package/lib/clients/infra/Events.d.ts +1 -1
  62. package/lib/clients/infra/Events.js +1 -1
  63. package/lib/clients/infra/Housekeeper.d.ts +3 -3
  64. package/lib/clients/infra/Registry.d.ts +23 -17
  65. package/lib/clients/infra/Registry.js +3 -4
  66. package/lib/clients/infra/Router.d.ts +8 -8
  67. package/lib/clients/infra/Sphinx.d.ts +2 -2
  68. package/lib/clients/infra/VBase.d.ts +15 -14
  69. package/lib/clients/infra/VBase.js +3 -3
  70. package/lib/clients/infra/Workspaces.d.ts +7 -7
  71. package/lib/clients/infra/index.js +6 -2
  72. package/lib/clients/janus/JanusClient.d.ts +1 -1
  73. package/lib/clients/janus/LicenseManager.js +1 -1
  74. package/lib/clients/janus/Segment.d.ts +3 -3
  75. package/lib/clients/janus/Segment.js +2 -2
  76. package/lib/clients/janus/Session.d.ts +2 -2
  77. package/lib/clients/janus/Tenant.d.ts +1 -1
  78. package/lib/clients/janus/index.js +6 -2
  79. package/lib/constants.d.ts +2 -1
  80. package/lib/constants.js +3 -2
  81. package/lib/errors/ResolverError.js +1 -1
  82. package/lib/errors/index.js +6 -2
  83. package/lib/index.js +6 -2
  84. package/lib/metrics/MetricsAccumulator.d.ts +2 -2
  85. package/lib/metrics/MetricsAccumulator.js +9 -9
  86. package/lib/responses.d.ts +4 -4
  87. package/lib/service/index.js +7 -9
  88. package/lib/service/loaders.js +8 -6
  89. package/lib/service/logger/client.d.ts +2 -0
  90. package/lib/service/logger/client.js +48 -0
  91. package/lib/service/logger/console.d.ts +1 -1
  92. package/lib/service/logger/console.js +7 -4
  93. package/lib/service/logger/index.d.ts +2 -0
  94. package/lib/service/logger/index.js +8 -2
  95. package/lib/service/logger/logger.d.ts +4 -15
  96. package/lib/service/logger/logger.js +61 -18
  97. package/lib/service/logger/loggerTypes.d.ts +14 -0
  98. package/lib/service/logger/loggerTypes.js +10 -0
  99. package/lib/service/logger/metricsLogger.js +10 -10
  100. package/lib/service/master.js +7 -6
  101. package/lib/service/metrics/requestMetricsMiddleware.js +14 -13
  102. package/lib/service/telemetry/client.d.ts +3 -0
  103. package/lib/service/telemetry/client.js +57 -0
  104. package/lib/service/telemetry/index.d.ts +1 -0
  105. package/lib/service/telemetry/index.js +17 -0
  106. package/lib/service/tracing/TracerSingleton.js +9 -9
  107. package/lib/service/tracing/metrics/MetricNames.js +12 -12
  108. package/lib/service/tracing/metrics/instruments.js +14 -7
  109. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +5 -5
  110. package/lib/service/tracing/tracingMiddlewares.js +18 -21
  111. package/lib/service/worker/index.js +25 -24
  112. package/lib/service/worker/listeners.js +2 -1
  113. package/lib/service/worker/runtime/Service.js +1 -1
  114. package/lib/service/worker/runtime/builtIn/handlers.js +6 -3
  115. package/lib/service/worker/runtime/builtIn/middlewares.js +5 -3
  116. package/lib/service/worker/runtime/events/index.d.ts +1 -1
  117. package/lib/service/worker/runtime/events/index.js +11 -10
  118. package/lib/service/worker/runtime/events/middlewares/body.js +3 -6
  119. package/lib/service/worker/runtime/events/middlewares/context.js +1 -1
  120. package/lib/service/worker/runtime/events/router.js +3 -2
  121. package/lib/service/worker/runtime/graphql/index.js +8 -7
  122. package/lib/service/worker/runtime/graphql/middlewares/error.js +5 -8
  123. package/lib/service/worker/runtime/graphql/middlewares/query.js +7 -6
  124. package/lib/service/worker/runtime/graphql/middlewares/response.js +1 -1
  125. package/lib/service/worker/runtime/graphql/middlewares/run.js +3 -2
  126. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +4 -3
  127. package/lib/service/worker/runtime/graphql/middlewares/upload.js +1 -1
  128. package/lib/service/worker/runtime/graphql/schema/index.d.ts +1 -1
  129. package/lib/service/worker/runtime/graphql/schema/index.js +8 -7
  130. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +2 -2
  131. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +4 -3
  132. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.js +1 -1
  133. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +1 -1
  134. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +1 -1
  135. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +2 -2
  136. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +2 -2
  137. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +1 -1
  138. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +2 -1
  139. package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.js +2 -2
  140. package/lib/service/worker/runtime/graphql/typings.d.ts +3 -3
  141. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +2 -1
  142. package/lib/service/worker/runtime/graphql/utils/error.js +10 -9
  143. package/lib/service/worker/runtime/graphql/utils/pathname.js +3 -2
  144. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +1 -1
  145. package/lib/service/worker/runtime/graphql/utils/translations.js +7 -4
  146. package/lib/service/worker/runtime/http/index.d.ts +2 -2
  147. package/lib/service/worker/runtime/http/index.js +22 -20
  148. package/lib/service/worker/runtime/http/middlewares/context.js +7 -5
  149. package/lib/service/worker/runtime/http/middlewares/error.js +6 -9
  150. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +1 -1
  151. package/lib/service/worker/runtime/http/middlewares/setCookie.js +5 -5
  152. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +1 -1
  153. package/lib/service/worker/runtime/http/middlewares/settings.js +13 -9
  154. package/lib/service/worker/runtime/http/middlewares/timings.js +3 -3
  155. package/lib/service/worker/runtime/http/router.js +3 -2
  156. package/lib/service/worker/runtime/http/routes.js +8 -5
  157. package/lib/service/worker/runtime/method.d.ts +2 -2
  158. package/lib/service/worker/runtime/method.js +1 -1
  159. package/lib/service/worker/runtime/statusTrack.d.ts +1 -1
  160. package/lib/service/worker/runtime/statusTrack.js +10 -5
  161. package/lib/service/worker/runtime/typings.d.ts +10 -10
  162. package/lib/service/worker/runtime/utils/compose.d.ts +2 -2
  163. package/lib/service/worker/runtime/utils/compose.js +4 -2
  164. package/lib/service/worker/runtime/utils/context.d.ts +2 -2
  165. package/lib/service/worker/runtime/utils/context.js +5 -4
  166. package/lib/service/worker/runtime/utils/recorder.js +1 -1
  167. package/lib/service/worker/runtime/utils/toArray.js +2 -1
  168. package/lib/tracing/UserLandTracer.js +3 -2
  169. package/lib/tracing/errorReporting/ErrorReport.js +13 -13
  170. package/lib/tracing/index.js +1 -1
  171. package/lib/tracing/utils.js +5 -4
  172. package/lib/utils/MineWinsConflictsResolver.d.ts +4 -4
  173. package/lib/utils/MineWinsConflictsResolver.js +10 -10
  174. package/lib/utils/app.js +39 -23
  175. package/lib/utils/appsStaleIfError.d.ts +1 -0
  176. package/lib/utils/appsStaleIfError.js +17 -9
  177. package/lib/utils/billingOptions.js +2 -1
  178. package/lib/utils/binding.js +4 -2
  179. package/lib/utils/domain.js +1 -1
  180. package/lib/utils/error.js +5 -4
  181. package/lib/utils/index.js +6 -2
  182. package/lib/utils/log.js +3 -2
  183. package/lib/utils/message.js +8 -5
  184. package/lib/utils/renameBy.js +2 -1
  185. package/lib/utils/retry.js +8 -6
  186. package/lib/utils/status.js +2 -1
  187. package/lib/utils/tenant.js +4 -2
  188. package/lib/utils/time.d.ts +1 -1
  189. package/lib/utils/time.js +23 -14
  190. package/package.json +27 -5
  191. package/lib/utils/buildFullPath.d.ts +0 -11
  192. package/lib/utils/buildFullPath.js +0 -54
@@ -7,23 +7,25 @@ const history = new caches_1.LRUCache({
7
7
  max: 42,
8
8
  });
9
9
  exports.LOG_ONCE = 'logOnce';
10
- exports.isLog = (message) => (message === null || message === void 0 ? void 0 : message.cmd) === exports.LOG_ONCE;
11
- exports.log = (message, level) => {
10
+ const isLog = (message) => (message === null || message === void 0 ? void 0 : message.cmd) === exports.LOG_ONCE;
11
+ exports.isLog = isLog;
12
+ const log = (message, level) => {
12
13
  const logger = console[level];
13
14
  if (typeof logger === 'function') {
14
15
  logger(message);
15
16
  }
16
17
  };
18
+ exports.log = log;
17
19
  // Since we are now using clusters, if we simply console.log something,
18
20
  // it may overwhelm the programmer's console with lots of repeated info.
19
21
  // This function should be used when you want to warn about something
20
22
  // only once
21
- exports.logOnceToDevConsole = (message, level) => {
23
+ const logOnceToDevConsole = (message, level) => {
22
24
  const strigified = JSON.stringify(message);
23
25
  if (!history.has(strigified)) {
24
26
  history.set(strigified, true);
25
27
  if (cluster_1.isMaster) {
26
- exports.log(message, level);
28
+ (0, exports.log)(message, level);
27
29
  }
28
30
  else if (cluster_1.isWorker && process.send) {
29
31
  const logMessage = {
@@ -35,3 +37,4 @@ exports.logOnceToDevConsole = (message, level) => {
35
37
  }
36
38
  }
37
39
  };
40
+ exports.logOnceToDevConsole = logOnceToDevConsole;
@@ -1,2 +1,4 @@
1
1
  export * from './console';
2
2
  export * from './logger';
3
+ export * from './loggerTypes';
4
+ export * from './client';
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
8
12
  }));
9
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./console"), exports);
14
18
  __exportStar(require("./logger"), exports);
19
+ __exportStar(require("./loggerTypes"), exports);
20
+ __exportStar(require("./client"), exports);
@@ -1,17 +1,4 @@
1
- import { IUserLandTracer } from '../../tracing';
2
- import { IOContext } from '../worker/runtime/typings';
3
- export interface LoggerTracingContext {
4
- requestTracer: IUserLandTracer;
5
- }
6
- export declare enum LogLevel {
7
- Debug = "debug",
8
- Info = "info",
9
- Warn = "warn",
10
- Error = "error"
11
- }
12
- interface LoggerContext extends Pick<IOContext, 'account' | 'workspace' | 'requestId' | 'operationId' | 'production'> {
13
- tracer?: IOContext['tracer'];
14
- }
1
+ import { LoggerContext, LogLevel } from './loggerTypes';
15
2
  export declare class Logger {
16
3
  private account;
17
4
  private workspace;
@@ -19,11 +6,13 @@ export declare class Logger {
19
6
  private requestId;
20
7
  private production;
21
8
  private tracingState?;
9
+ private logClient;
10
+ private clientInitPromise;
22
11
  constructor(ctx: LoggerContext);
12
+ private initLogClient;
23
13
  debug: (message: any) => void;
24
14
  info: (message: any) => void;
25
15
  warn: (warning: any) => void;
26
16
  error: (error: any) => void;
27
17
  log: (message: any, level: LogLevel) => void;
28
18
  }
29
- export {};
@@ -1,29 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Logger = exports.LogLevel = void 0;
3
+ exports.Logger = void 0;
4
4
  const constants_1 = require("../../constants");
5
5
  const error_1 = require("../../utils/error");
6
6
  const log_1 = require("../../utils/log");
7
- const linked = !!process.env.VTEX_APP_LINK;
7
+ const loggerTypes_1 = require("./loggerTypes");
8
+ const client_1 = require("./client");
8
9
  const app = constants_1.APP.ID;
9
10
  const EMPTY_MESSAGE = 'Logger.log was called with null or undefined message';
10
- var LogLevel;
11
- (function (LogLevel) {
12
- LogLevel["Debug"] = "debug";
13
- LogLevel["Info"] = "info";
14
- LogLevel["Warn"] = "warn";
15
- LogLevel["Error"] = "error";
16
- })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
17
11
  class Logger {
18
12
  constructor(ctx) {
19
- this.debug = (message) => this.log(message, LogLevel.Debug);
20
- this.info = (message) => this.log(message, LogLevel.Info);
21
- this.warn = (warning) => this.log(warning, LogLevel.Warn);
22
- this.error = (error) => this.log(error, LogLevel.Error);
13
+ this.logClient = undefined;
14
+ this.clientInitPromise = undefined;
15
+ this.debug = (message) => this.log(message, loggerTypes_1.LogLevel.Debug);
16
+ this.info = (message) => this.log(message, loggerTypes_1.LogLevel.Info);
17
+ this.warn = (warning) => this.log(warning, loggerTypes_1.LogLevel.Warn);
18
+ this.error = (error) => this.log(error, loggerTypes_1.LogLevel.Error);
23
19
  this.log = (message, level) => {
24
20
  var _a;
25
- const data = message ? error_1.cleanError(message) : EMPTY_MESSAGE;
26
- log_1.cleanLog(data);
21
+ const data = message ? (0, error_1.cleanError)(message) : EMPTY_MESSAGE;
22
+ (0, log_1.cleanLog)(data);
27
23
  /* tslint:disable:object-literal-sort-keys */
28
24
  const inflatedLog = {
29
25
  __VTEX_IO_LOG: true,
@@ -40,11 +36,35 @@ class Logger {
40
36
  // Mark third-party apps logs to send to skidder
41
37
  if (constants_1.APP.IS_THIRD_PARTY()) {
42
38
  Object.assign(inflatedLog, {
43
- __SKIDDER_TOPIC_1: `skidder.vendor.${constants_1.APP.VENDOR}`,
44
- __SKIDDER_TOPIC_2: `skidder.app.${constants_1.APP.VENDOR}.${constants_1.APP.NAME}`,
39
+ '__SKIDDER_TOPIC_1': `skidder.vendor.${constants_1.APP.VENDOR}`,
40
+ '__SKIDDER_TOPIC_2': `skidder.app.${constants_1.APP.VENDOR}.${constants_1.APP.NAME}`,
45
41
  });
46
42
  }
47
- console.log(JSON.stringify(inflatedLog));
43
+ if (this.logClient) {
44
+ try {
45
+ let logMessage = typeof data === 'string' ? data : JSON.stringify(data);
46
+ switch (level) {
47
+ case loggerTypes_1.LogLevel.Debug:
48
+ this.logClient.debug(logMessage, inflatedLog);
49
+ break;
50
+ case loggerTypes_1.LogLevel.Info:
51
+ this.logClient.info(logMessage, inflatedLog);
52
+ break;
53
+ case loggerTypes_1.LogLevel.Warn:
54
+ this.logClient.warn(logMessage, inflatedLog);
55
+ break;
56
+ case loggerTypes_1.LogLevel.Error:
57
+ this.logClient.error(logMessage, inflatedLog);
58
+ break;
59
+ default:
60
+ this.logClient.info(logMessage, inflatedLog);
61
+ }
62
+ }
63
+ catch (e) {
64
+ console.error('Error using diagnostics client for logging:', e);
65
+ }
66
+ }
67
+ console.log(typeof inflatedLog === 'string' ? JSON.stringify(inflatedLog) : inflatedLog);
48
68
  };
49
69
  this.account = ctx.account;
50
70
  this.workspace = ctx.workspace;
@@ -57,6 +77,29 @@ class Logger {
57
77
  traceId: ctx.tracer.traceId,
58
78
  };
59
79
  }
80
+ // this.initLogClient();
81
+ }
82
+ initLogClient() {
83
+ if (this.clientInitPromise) {
84
+ return this.clientInitPromise;
85
+ }
86
+ this.clientInitPromise = (async () => {
87
+ try {
88
+ const timeoutPromise = new Promise((_, reject) => {
89
+ setTimeout(() => reject(new Error('Log client initialization timeout')), constants_1.LOG_CLIENT_INIT_TIMEOUT_MS);
90
+ });
91
+ this.logClient = await Promise.race([
92
+ (0, client_1.getLogClient)(this.account, this.workspace, constants_1.APP.NAME),
93
+ timeoutPromise
94
+ ]);
95
+ return this.logClient;
96
+ }
97
+ catch (error) {
98
+ console.error('Failed to initialize log client:', error);
99
+ return undefined;
100
+ }
101
+ })();
102
+ return this.clientInitPromise;
60
103
  }
61
104
  }
62
105
  exports.Logger = Logger;
@@ -0,0 +1,14 @@
1
+ import { IOContext } from '../worker/runtime/typings';
2
+ export interface LoggerContext extends Pick<IOContext, 'account' | 'workspace' | 'requestId' | 'operationId' | 'production'> {
3
+ tracer?: IOContext['tracer'];
4
+ }
5
+ export interface TracingState {
6
+ isTraceSampled: boolean;
7
+ traceId?: string;
8
+ }
9
+ export declare enum LogLevel {
10
+ Debug = "debug",
11
+ Info = "info",
12
+ Warn = "warn",
13
+ Error = "error"
14
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogLevel = void 0;
4
+ var LogLevel;
5
+ (function (LogLevel) {
6
+ LogLevel["Debug"] = "debug";
7
+ LogLevel["Info"] = "info";
8
+ LogLevel["Warn"] = "warn";
9
+ LogLevel["Error"] = "error";
10
+ })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
@@ -21,11 +21,11 @@ class MetricsLogger {
21
21
  // private attributes
22
22
  //////////////////////
23
23
  let samples = {};
24
- let lastCpu = diff_1.cpuSnapshot();
24
+ let lastCpu = (0, diff_1.cpuSnapshot)();
25
25
  //////////////////////
26
26
  // private methods definitions
27
27
  //////////////////////
28
- const summaries = ramda_1.compose(ramda_1.reject(ramda_1.isNil), ramda_1.values, ramda_1.mapObjIndexed(getSummary));
28
+ const summaries = (0, ramda_1.compose)((0, ramda_1.reject)(ramda_1.isNil), ramda_1.values, (0, ramda_1.mapObjIndexed)(getSummary));
29
29
  function getDefaultStoredashProperties() {
30
30
  return {
31
31
  Count: 1,
@@ -47,8 +47,8 @@ class MetricsLogger {
47
47
  };
48
48
  }
49
49
  function getCpuUsage() {
50
- const cpu = diff_1.cpuSnapshot();
51
- const cpuDiff = diff_1.snapshotDiff(cpu, lastCpu);
50
+ const cpu = (0, diff_1.cpuSnapshot)();
51
+ const cpuDiff = (0, diff_1.snapshotDiff)(cpu, lastCpu);
52
52
  lastCpu = cpu;
53
53
  const metric = {
54
54
  Data: {
@@ -103,7 +103,7 @@ class MetricsLogger {
103
103
  return false;
104
104
  }
105
105
  try {
106
- fast_json_stable_stringify_1.default(key);
106
+ (0, fast_json_stable_stringify_1.default)(key);
107
107
  }
108
108
  catch {
109
109
  return false;
@@ -111,17 +111,17 @@ class MetricsLogger {
111
111
  return true;
112
112
  }
113
113
  function getStrKey(key) {
114
- return fast_json_stable_stringify_1.default(key);
114
+ return (0, fast_json_stable_stringify_1.default)(key);
115
115
  }
116
116
  function getNumericSummary(vals) {
117
117
  return {
118
118
  count: vals.length,
119
119
  max: Math.max(...vals),
120
- median: stats_lite_1.median(vals),
120
+ median: (0, stats_lite_1.median)(vals),
121
121
  min: Math.min(...vals),
122
- percentile95: stats_lite_1.percentile(vals, 0.95),
123
- percentile99: stats_lite_1.percentile(vals, 0.99),
124
- sum: stats_lite_1.sum(vals),
122
+ percentile95: (0, stats_lite_1.percentile)(vals, 0.95),
123
+ percentile99: (0, stats_lite_1.percentile)(vals, 0.99),
124
+ sum: (0, stats_lite_1.sum)(vals),
125
125
  };
126
126
  }
127
127
  //////////////////////
@@ -12,12 +12,12 @@ const listeners_1 = require("./worker/listeners");
12
12
  const statusTrack_1 = require("./worker/runtime/statusTrack");
13
13
  let handledSignal;
14
14
  const onMessage = (worker, message) => {
15
- if (logger_1.isLog(message)) {
16
- logger_1.logOnceToDevConsole(message.message, message.level);
15
+ if ((0, logger_1.isLog)(message)) {
16
+ (0, logger_1.logOnceToDevConsole)(message.message, message.level);
17
17
  }
18
- else if (statusTrack_1.isStatusTrackBroadcast(message)) {
19
- statusTrack_1.trackStatus();
20
- statusTrack_1.broadcastStatusTrack();
18
+ else if ((0, statusTrack_1.isStatusTrackBroadcast)(message)) {
19
+ (0, statusTrack_1.trackStatus)();
20
+ (0, statusTrack_1.broadcastStatusTrack)();
21
21
  }
22
22
  else {
23
23
  listeners_1.logger.warn({
@@ -65,7 +65,7 @@ const handleSignal = (timeout) => (signal) => {
65
65
  process.exit(os_1.constants.signals[signal]);
66
66
  }, waitTimeToForceKill);
67
67
  };
68
- exports.startMaster = (service) => {
68
+ const startMaster = (service) => {
69
69
  const { workers: numWorkers, timeout = GRACEFULLY_SHUTDOWN_TIMEOUT_S } = service;
70
70
  if (service.deterministicVary) {
71
71
  process.env.DETERMINISTIC_VARY = 'true';
@@ -86,3 +86,4 @@ exports.startMaster = (service) => {
86
86
  process.on('SIGINT', handleSignal(SIGINT_TIMEOUT_S));
87
87
  process.on('SIGTERM', handleSignal(shutdownTimeout));
88
88
  };
89
+ exports.startMaster = startMaster;
@@ -4,16 +4,16 @@ exports.addRequestMetricsMiddleware = void 0;
4
4
  const stream_1 = require("stream");
5
5
  const utils_1 = require("../../utils");
6
6
  const instruments_1 = require("../tracing/metrics/instruments");
7
- exports.addRequestMetricsMiddleware = () => {
8
- const concurrentRequests = instruments_1.createConcurrentRequestsInstrument();
9
- const requestTimings = instruments_1.createRequestsTimingsInstrument();
10
- const totalRequests = instruments_1.createTotalRequestsInstrument();
11
- const responseSizes = instruments_1.createRequestsResponseSizesInstrument();
12
- const abortedRequests = instruments_1.createTotalAbortedRequestsInstrument();
7
+ const addRequestMetricsMiddleware = () => {
8
+ const concurrentRequests = (0, instruments_1.createConcurrentRequestsInstrument)();
9
+ const requestTimings = (0, instruments_1.createRequestsTimingsInstrument)();
10
+ const totalRequests = (0, instruments_1.createTotalRequestsInstrument)();
11
+ const responseSizes = (0, instruments_1.createRequestsResponseSizesInstrument)();
12
+ const abortedRequests = (0, instruments_1.createTotalAbortedRequestsInstrument)();
13
13
  return async function addRequestMetrics(ctx, next) {
14
14
  const start = process.hrtime();
15
15
  concurrentRequests.inc(1);
16
- ctx.req.once('aborted', () => abortedRequests.inc({ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName }, 1));
16
+ ctx.req.once('aborted', () => abortedRequests.inc({ ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName }, 1));
17
17
  let responseClosed = false;
18
18
  ctx.res.once('close', () => (responseClosed = true));
19
19
  try {
@@ -22,24 +22,25 @@ exports.addRequestMetricsMiddleware = () => {
22
22
  finally {
23
23
  const responseLength = ctx.response.length;
24
24
  if (responseLength) {
25
- responseSizes.observe({ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName }, responseLength);
25
+ responseSizes.observe({ ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName }, responseLength);
26
26
  }
27
27
  totalRequests.inc({
28
- ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName,
29
- ["status_code" /* STATUS_CODE */]: ctx.response.status,
28
+ ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName,
29
+ ["status_code" /* RequestsMetricLabels.STATUS_CODE */]: ctx.response.status,
30
30
  }, 1);
31
31
  const onResFinished = () => {
32
32
  requestTimings.observe({
33
- ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName,
34
- }, utils_1.hrToMillisFloat(process.hrtime(start)));
33
+ ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName,
34
+ }, (0, utils_1.hrToMillisFloat)(process.hrtime(start)));
35
35
  concurrentRequests.dec(1);
36
36
  };
37
37
  if (responseClosed) {
38
38
  onResFinished();
39
39
  }
40
40
  else {
41
- stream_1.finished(ctx.res, onResFinished);
41
+ (0, stream_1.finished)(ctx.res, onResFinished);
42
42
  }
43
43
  }
44
44
  };
45
45
  };
46
+ exports.addRequestMetricsMiddleware = addRequestMetricsMiddleware;
@@ -0,0 +1,3 @@
1
+ import { TelemetryClient } from '@vtex/diagnostics-nodejs/dist/telemetry';
2
+ export declare function getTelemetryClient(): Promise<TelemetryClient>;
3
+ export declare function resetTelemetryClient(): void;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resetTelemetryClient = exports.getTelemetryClient = void 0;
4
+ const diagnostics_nodejs_1 = require("@vtex/diagnostics-nodejs");
5
+ const constants_1 = require("../../constants");
6
+ class TelemetryClientSingleton {
7
+ constructor() {
8
+ this.initializationPromise = undefined;
9
+ }
10
+ static getInstance() {
11
+ if (!TelemetryClientSingleton.instance) {
12
+ TelemetryClientSingleton.instance = new TelemetryClientSingleton();
13
+ }
14
+ return TelemetryClientSingleton.instance;
15
+ }
16
+ async initTelemetryClient() {
17
+ try {
18
+ const telemetryClient = await (0, diagnostics_nodejs_1.NewTelemetryClient)('node-vtex-api', constants_1.APP.ID || 'vtex-app', {
19
+ additionalAttrs: {
20
+ 'version': constants_1.APP.VERSION || '',
21
+ 'environment': process.env.VTEX_WORKSPACE || 'development',
22
+ },
23
+ });
24
+ this.telemetryClient = telemetryClient;
25
+ return telemetryClient;
26
+ }
27
+ catch (error) {
28
+ console.error('Failed to initialize telemetry client:', error);
29
+ throw error;
30
+ }
31
+ finally {
32
+ this.initializationPromise = undefined;
33
+ }
34
+ }
35
+ async getClient() {
36
+ if (this.telemetryClient) {
37
+ return this.telemetryClient;
38
+ }
39
+ if (this.initializationPromise) {
40
+ return this.initializationPromise;
41
+ }
42
+ this.initializationPromise = this.initTelemetryClient();
43
+ return this.initializationPromise;
44
+ }
45
+ reset() {
46
+ this.telemetryClient = undefined;
47
+ this.initializationPromise = undefined;
48
+ }
49
+ }
50
+ async function getTelemetryClient() {
51
+ return TelemetryClientSingleton.getInstance().getClient();
52
+ }
53
+ exports.getTelemetryClient = getTelemetryClient;
54
+ function resetTelemetryClient() {
55
+ TelemetryClientSingleton.getInstance().reset();
56
+ }
57
+ exports.resetTelemetryClient = resetTelemetryClient;
@@ -0,0 +1 @@
1
+ export * from './client';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./client"), exports);
@@ -16,14 +16,14 @@ class TracerSingleton {
16
16
  return TracerSingleton.singleton;
17
17
  }
18
18
  static initServiceTracer() {
19
- return TracerSingleton.createJaegerTracer(utils_1.appIdToAppAtMajor(constants_1.APP.ID), {
20
- ["app.linked" /* VTEX_APP_LINKED */]: constants_1.LINKED,
21
- ["app.node_vtex_api_version" /* VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION,
22
- ["app.production" /* VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION,
23
- ["app.region" /* VTEX_APP_REGION */]: constants_1.REGION,
24
- ["app.version" /* VTEX_APP_VERSION */]: constants_1.APP.VERSION,
25
- ["app.workspace" /* VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE,
26
- ["app.node_env" /* VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined',
19
+ return TracerSingleton.createJaegerTracer((0, utils_1.appIdToAppAtMajor)(constants_1.APP.ID), {
20
+ ["app.linked" /* AppTags.VTEX_APP_LINKED */]: constants_1.LINKED,
21
+ ["app.node_vtex_api_version" /* AppTags.VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION,
22
+ ["app.production" /* AppTags.VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION,
23
+ ["app.region" /* AppTags.VTEX_APP_REGION */]: constants_1.REGION,
24
+ ["app.version" /* AppTags.VTEX_APP_VERSION */]: constants_1.APP.VERSION,
25
+ ["app.workspace" /* AppTags.VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE,
26
+ ["app.node_env" /* AppTags.VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined',
27
27
  });
28
28
  }
29
29
  static createJaegerTracer(serviceName, defaultTags) {
@@ -43,7 +43,7 @@ class TracerSingleton {
43
43
  metrics: new jaeger_client_1.PrometheusMetricsFactory(prom_client_1.default, 'runtime'),
44
44
  tags: defaultTags,
45
45
  };
46
- return jaeger_client_1.initTracer(config, options);
46
+ return (0, jaeger_client_1.initTracer)(config, options);
47
47
  }
48
48
  }
49
49
  exports.TracerSingleton = TracerSingleton;
@@ -4,42 +4,42 @@ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = exports.BETWEEN_SCRAPES_EVE
4
4
  exports.CONCURRENT_REQUESTS = {
5
5
  name: 'io_http_requests_current',
6
6
  help: 'The current number of requests in course.',
7
- type: "gauge" /* GAUGE */,
7
+ type: "gauge" /* METRIC_TYPES.GAUGE */,
8
8
  };
9
9
  exports.REQUESTS_TOTAL = {
10
10
  name: 'runtime_http_requests_total',
11
11
  help: 'The total number of HTTP requests.',
12
- labelNames: ["status_code" /* STATUS_CODE */, "handler" /* REQUEST_HANDLER */],
13
- type: "counter" /* COUNTER */,
12
+ labelNames: ["status_code" /* RequestsMetricLabels.STATUS_CODE */, "handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
13
+ type: "counter" /* METRIC_TYPES.COUNTER */,
14
14
  };
15
15
  exports.REQUESTS_ABORTED = {
16
16
  name: 'runtime_http_aborted_requests_total',
17
17
  help: 'The total number of HTTP requests aborted.',
18
- labelNames: ["handler" /* REQUEST_HANDLER */],
19
- type: "counter" /* COUNTER */,
18
+ labelNames: ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
19
+ type: "counter" /* METRIC_TYPES.COUNTER */,
20
20
  };
21
21
  exports.REQUEST_TIMINGS = {
22
22
  name: 'runtime_http_requests_duration_milliseconds',
23
23
  help: 'The incoming http requests total duration.',
24
- labelNames: ["handler" /* REQUEST_HANDLER */],
24
+ labelNames: ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
25
25
  buckets: [10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120],
26
- type: "histogram" /* HISTOGRAM */,
26
+ type: "histogram" /* METRIC_TYPES.HISTOGRAM */,
27
27
  };
28
28
  exports.REQUEST_RESPONSE_SIZES = {
29
29
  name: 'runtime_http_response_size_bytes',
30
30
  help: `The outgoing response sizes (only applicable when the response isn't a stream).`,
31
- labelNames: ["handler" /* REQUEST_HANDLER */],
31
+ labelNames: ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
32
32
  buckets: [500, 2000, 8000, 16000, 64000, 256000, 1024000, 4096000],
33
- type: "histogram" /* HISTOGRAM */,
33
+ type: "histogram" /* METRIC_TYPES.HISTOGRAM */,
34
34
  };
35
35
  exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX = {
36
36
  name: 'runtime_event_loop_lag_max_between_scrapes_seconds',
37
37
  help: 'The max event loop lag that occurred between this and the previous scrape',
38
- type: "gauge" /* GAUGE */,
38
+ type: "gauge" /* METRIC_TYPES.GAUGE */,
39
39
  };
40
40
  exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = {
41
41
  name: 'runtime_event_loop_lag_percentiles_between_scrapes_seconds',
42
42
  help: 'Event loop lag percentiles from the observations that occurred between this and the previous scrape',
43
- labelNames: ["percentile" /* PERCENTILE */],
44
- type: "gauge" /* GAUGE */,
43
+ labelNames: ["percentile" /* EventLoopMetricLabels.PERCENTILE */],
44
+ type: "gauge" /* METRIC_TYPES.GAUGE */,
45
45
  };
@@ -3,10 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createEventLoopLagPercentilesInstrument = exports.createEventLoopLagMaxInstrument = exports.createConcurrentRequestsInstrument = exports.createRequestsResponseSizesInstrument = exports.createRequestsTimingsInstrument = exports.createTotalAbortedRequestsInstrument = exports.createTotalRequestsInstrument = void 0;
4
4
  const prom_client_1 = require("prom-client");
5
5
  const MetricNames_1 = require("./MetricNames");
6
- exports.createTotalRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_TOTAL);
7
- exports.createTotalAbortedRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_ABORTED);
8
- exports.createRequestsTimingsInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_TIMINGS);
9
- exports.createRequestsResponseSizesInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_RESPONSE_SIZES);
10
- exports.createConcurrentRequestsInstrument = () => new prom_client_1.Gauge(MetricNames_1.CONCURRENT_REQUESTS);
11
- exports.createEventLoopLagMaxInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX);
12
- exports.createEventLoopLagPercentilesInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES);
6
+ const createTotalRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_TOTAL);
7
+ exports.createTotalRequestsInstrument = createTotalRequestsInstrument;
8
+ const createTotalAbortedRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_ABORTED);
9
+ exports.createTotalAbortedRequestsInstrument = createTotalAbortedRequestsInstrument;
10
+ const createRequestsTimingsInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_TIMINGS);
11
+ exports.createRequestsTimingsInstrument = createRequestsTimingsInstrument;
12
+ const createRequestsResponseSizesInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_RESPONSE_SIZES);
13
+ exports.createRequestsResponseSizesInstrument = createRequestsResponseSizesInstrument;
14
+ const createConcurrentRequestsInstrument = () => new prom_client_1.Gauge(MetricNames_1.CONCURRENT_REQUESTS);
15
+ exports.createConcurrentRequestsInstrument = createConcurrentRequestsInstrument;
16
+ const createEventLoopLagMaxInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX);
17
+ exports.createEventLoopLagMaxInstrument = createEventLoopLagMaxInstrument;
18
+ const createEventLoopLagPercentilesInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES);
19
+ exports.createEventLoopLagPercentilesInstrument = createEventLoopLagPercentilesInstrument;
@@ -6,21 +6,21 @@ const utils_1 = require("../../../../utils");
6
6
  const instruments_1 = require("../instruments");
7
7
  class EventLoopLagMeasurer {
8
8
  constructor() {
9
- this.eventLoopDelayMonitor = perf_hooks_1.monitorEventLoopDelay({ resolution: 10 });
10
- this.percentilesInstrument = instruments_1.createEventLoopLagPercentilesInstrument();
11
- this.maxInstrument = instruments_1.createEventLoopLagMaxInstrument();
9
+ this.eventLoopDelayMonitor = (0, perf_hooks_1.monitorEventLoopDelay)({ resolution: 10 });
10
+ this.percentilesInstrument = (0, instruments_1.createEventLoopLagPercentilesInstrument)();
11
+ this.maxInstrument = (0, instruments_1.createEventLoopLagMaxInstrument)();
12
12
  }
13
13
  start() {
14
14
  this.eventLoopDelayMonitor.enable();
15
15
  }
16
16
  async updateInstrumentsAndReset() {
17
- this.maxInstrument.set(utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.max));
17
+ this.maxInstrument.set((0, utils_1.nanosecondsToSeconds)(this.eventLoopDelayMonitor.max));
18
18
  this.setPercentileObservation(95);
19
19
  this.setPercentileObservation(99);
20
20
  this.eventLoopDelayMonitor.reset();
21
21
  }
22
22
  setPercentileObservation(percentile) {
23
- this.percentilesInstrument.set({ ["percentile" /* PERCENTILE */]: percentile }, utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.percentile(percentile)));
23
+ this.percentilesInstrument.set({ ["percentile" /* EventLoopMetricLabels.PERCENTILE */]: percentile }, (0, utils_1.nanosecondsToSeconds)(this.eventLoopDelayMonitor.percentile(percentile)));
24
24
  }
25
25
  }
26
26
  exports.EventLoopLagMeasurer = EventLoopLagMeasurer;