@hatchet-dev/typescript-sdk 0.19.0 → 0.20.1

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.
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.AdminClient = void 0;
16
16
  const workflows_1 = require("../../protoc/workflows");
17
17
  const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error"));
18
- const logger_1 = require("../../util/logger");
19
18
  const retrier_1 = require("../../util/retrier");
20
19
  const workflow_run_ref_1 = __importDefault(require("../../util/workflow-run-ref"));
21
20
  /**
@@ -40,7 +39,7 @@ class AdminClient {
40
39
  this.client = factory.create(workflows_1.WorkflowServiceDefinition, channel);
41
40
  this.api = api;
42
41
  this.tenantId = tenantId;
43
- this.logger = new logger_1.Logger(`Admin`, config.log_level);
42
+ this.logger = config.logger(`Admin`, config.log_level);
44
43
  this.listenerClient = listenerClient;
45
44
  }
46
45
  /**
@@ -36,7 +36,6 @@ exports.ActionListener = void 0;
36
36
  const nice_grpc_1 = require("nice-grpc");
37
37
  const sleep_1 = __importDefault(require("../../util/sleep"));
38
38
  const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error"));
39
- const logger_1 = require("../../util/logger");
40
39
  const heartbeat_controller_1 = require("./heartbeat/heartbeat-controller");
41
40
  const DEFAULT_ACTION_LISTENER_RETRY_INTERVAL = 5000; // milliseconds
42
41
  const DEFAULT_ACTION_LISTENER_RETRY_COUNT = 20;
@@ -106,7 +105,7 @@ class ActionListener {
106
105
  this.config = client.config;
107
106
  this.client = client.client;
108
107
  this.workerId = workerId;
109
- this.logger = new logger_1.Logger(`ActionListener`, this.config.log_level);
108
+ this.logger = client.config.logger(`ActionListener`, this.config.log_level);
110
109
  this.retryInterval = retryInterval;
111
110
  this.retryCount = retryCount;
112
111
  this.heartbeat = new heartbeat_controller_1.Heartbeat(client, workerId);
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DispatcherClient = void 0;
16
16
  const dispatcher_1 = require("../../protoc/dispatcher");
17
17
  const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error"));
18
- const logger_1 = require("../../util/logger");
19
18
  const retrier_1 = require("../../util/retrier");
20
19
  const version_1 = require("../../version");
21
20
  const action_listener_1 = require("./action-listener");
@@ -23,7 +22,7 @@ class DispatcherClient {
23
22
  constructor(config, channel, factory) {
24
23
  this.config = config;
25
24
  this.client = factory.create(dispatcher_1.DispatcherDefinition, channel);
26
- this.logger = new logger_1.Logger(`Dispatcher`, config.log_level);
25
+ this.logger = config.logger(`Dispatcher`, config.log_level);
27
26
  }
28
27
  getRuntimeInfo() {
29
28
  return {
@@ -13,7 +13,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Heartbeat = void 0;
16
- const logger_1 = require("../../../util/logger");
17
16
  const path_1 = __importDefault(require("path"));
18
17
  const thread_helper_1 = require("../../../util/thread-helper");
19
18
  class Heartbeat {
@@ -21,14 +20,14 @@ class Heartbeat {
21
20
  this.config = client.config;
22
21
  this.client = client.client;
23
22
  this.workerId = workerId;
24
- this.logger = new logger_1.Logger(`HeartbeatController`, this.config.log_level);
23
+ this.logger = client.config.logger(`HeartbeatController`, this.config.log_level);
25
24
  }
26
25
  start() {
27
26
  return __awaiter(this, void 0, void 0, function* () {
28
27
  if (!this.heartbeatWorker) {
29
28
  this.heartbeatWorker = (0, thread_helper_1.runThreaded)(path_1.default.join(__dirname, './heartbeat-worker'), {
30
29
  workerData: {
31
- config: this.config,
30
+ config: Object.assign(Object.assign({}, this.config), { logger: undefined }),
32
31
  workerId: this.workerId,
33
32
  },
34
33
  });
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const worker_threads_1 = require("worker_threads");
13
- const logger_1 = require("../../../util/logger");
14
13
  const hatchet_client_1 = require("../../hatchet-client");
15
14
  const config_loader_1 = require("../../../util/config-loader");
16
15
  const nice_grpc_1 = require("nice-grpc");
@@ -20,10 +19,10 @@ class HeartbeatWorker {
20
19
  constructor(config, workerId) {
21
20
  this.timeLastHeartbeat = new Date().getTime();
22
21
  this.workerId = workerId;
23
- this.logger = new logger_1.Logger(`Heartbeat`, config.log_level);
22
+ this.logger = new hatchet_client_1.HatchetLogger(`Heartbeat`, config.log_level);
24
23
  const credentials = config_loader_1.ConfigLoader.createCredentials(config.tls_config);
25
24
  const clientFactory = (0, nice_grpc_1.createClientFactory)().use((0, hatchet_client_1.addTokenMiddleware)(config.token));
26
- const dispatcher = new dispatcher_client_1.DispatcherClient(config, (0, hatchet_client_1.channelFactory)(config, credentials), clientFactory);
25
+ const dispatcher = new dispatcher_client_1.DispatcherClient(Object.assign(Object.assign({}, config), { logger: (ctx, level) => new hatchet_client_1.HatchetLogger(ctx, level) }), (0, hatchet_client_1.channelFactory)(config, credentials), clientFactory);
27
26
  this.client = dispatcher.client;
28
27
  }
29
28
  start() {
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.EventClient = exports.LogLevel = void 0;
16
16
  const events_1 = require("../../protoc/events/events");
17
17
  const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error"));
18
- const logger_1 = require("../../util/logger");
19
18
  const retrier_1 = require("../../util/retrier");
20
19
  // eslint-disable-next-line no-shadow
21
20
  var LogLevel;
@@ -29,7 +28,7 @@ class EventClient {
29
28
  constructor(config, channel, factory) {
30
29
  this.config = config;
31
30
  this.client = factory.create(events_1.EventsServiceDefinition, channel);
32
- this.logger = new logger_1.Logger(`Dispatcher`, config.log_level);
31
+ this.logger = config.logger(`Dispatcher`, config.log_level);
33
32
  this.retrier = retrier_1.retrier;
34
33
  }
35
34
  push(type, input, options = {}) {
@@ -1,5 +1,6 @@
1
1
  import { ChannelCredentials } from 'nice-grpc';
2
2
  import { z } from 'zod';
3
+ import { Logger, LogLevel } from '../../util/logger';
3
4
  declare const ClientTLSConfigSchema: z.ZodObject<{
4
5
  tls_strategy: z.ZodOptional<z.ZodEnum<["tls", "mtls", "none"]>>;
5
6
  cert_file: z.ZodOptional<z.ZodString>;
@@ -74,8 +75,11 @@ export declare const ClientConfigSchema: z.ZodObject<{
74
75
  log_level?: "OFF" | "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
75
76
  namespace?: string | undefined;
76
77
  }>;
78
+ export type LogConstructor = (context: string, logLevel?: LogLevel) => Logger;
77
79
  export type ClientConfig = z.infer<typeof ClientConfigSchema> & {
78
80
  credentials?: ChannelCredentials;
81
+ } & {
82
+ logger: LogConstructor;
79
83
  };
80
84
  export type ClientTLSConfig = z.infer<typeof ClientTLSConfigSchema>;
81
85
  export {};
@@ -8,12 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.CronClient = exports.CreateCronTriggerSchema = void 0;
16
- const logger_1 = __importDefault(require("../../../util/logger/logger"));
17
13
  const zod_1 = require("zod");
18
14
  const axios_1 = require("axios");
19
15
  /**
@@ -45,7 +41,7 @@ class CronClient {
45
41
  this.config = config;
46
42
  this.api = api;
47
43
  this.adminClient = adminClient;
48
- this.logger = new logger_1.default('Cron', this.config.log_level);
44
+ this.logger = config.logger('Cron', this.config.log_level);
49
45
  }
50
46
  /**
51
47
  * Retrieves the Cron ID from a CronWorkflows object or a string.
@@ -8,12 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.ScheduleClient = exports.CreateScheduledRunTriggerSchema = void 0;
16
- const logger_1 = __importDefault(require("../../../util/logger/logger"));
17
13
  const zod_1 = require("zod");
18
14
  const axios_1 = require("axios");
19
15
  /**
@@ -40,7 +36,7 @@ class ScheduleClient {
40
36
  this.config = config;
41
37
  this.api = api;
42
38
  this.adminClient = adminClient;
43
- this.logger = new logger_1.default('Scheduled Run', this.config.log_level);
39
+ this.logger = config.logger('Scheduled Run', this.config.log_level);
44
40
  }
45
41
  /**
46
42
  * Retrieves the Scheduled Run ID from a ScheduledRun object or a string.
@@ -4,8 +4,8 @@ import { AdminClient } from '../admin/admin-client';
4
4
  import { CallOptions, ChannelCredentials, ClientMiddlewareCall } from 'nice-grpc';
5
5
  import { Workflow } from '../../workflow';
6
6
  import { Worker, WorkerOpts } from '../worker';
7
- import Logger from '../../util/logger/logger';
8
7
  import { AxiosRequestConfig } from 'axios';
8
+ import { Logger } from '../../util/logger';
9
9
  import { ClientConfig } from './client-config';
10
10
  import { ListenerClient } from '../listener/listener-client';
11
11
  import { Api } from '../rest/generated/Api';
@@ -45,7 +45,7 @@ const dispatcher_client_1 = require("../dispatcher/dispatcher-client");
45
45
  const admin_client_1 = require("../admin/admin-client");
46
46
  const nice_grpc_1 = require("nice-grpc");
47
47
  const worker_1 = require("../worker");
48
- const logger_1 = __importDefault(require("../../util/logger/logger"));
48
+ const hatchet_logger_1 = require("./hatchet-logger");
49
49
  const client_config_1 = require("./client-config");
50
50
  const listener_client_1 = require("../listener/listener-client");
51
51
  const rest_1 = __importDefault(require("../rest"));
@@ -98,7 +98,11 @@ class HatchetClient {
98
98
  });
99
99
  try {
100
100
  const valid = client_config_1.ClientConfigSchema.parse(loaded);
101
- this.config = valid;
101
+ let logConstructor = config === null || config === void 0 ? void 0 : config.logger;
102
+ if (logConstructor == null) {
103
+ logConstructor = hatchet_logger_1.DEFAULT_LOGGER;
104
+ }
105
+ this.config = Object.assign(Object.assign({}, valid), { logger: logConstructor });
102
106
  }
103
107
  catch (e) {
104
108
  if (e instanceof zod_1.z.ZodError) {
@@ -115,7 +119,7 @@ class HatchetClient {
115
119
  this.dispatcher = new dispatcher_client_1.DispatcherClient(this.config, (0, exports.channelFactory)(this.config, this.credentials), clientFactory);
116
120
  this.listener = new listener_client_1.ListenerClient(this.config, (0, exports.channelFactory)(this.config, this.credentials), clientFactory, this.api);
117
121
  this.admin = new admin_client_1.AdminClient(this.config, (0, exports.channelFactory)(this.config, this.credentials), clientFactory, this.api, this.tenantId, this.listener);
118
- this.logger = new logger_1.default('HatchetClient', this.config.log_level);
122
+ this.logger = this.config.logger('HatchetClient', this.config.log_level);
119
123
  this.logger.info(`Initialized HatchetClient`);
120
124
  // Feature Clients
121
125
  this.cron = new cron_client_1.CronClient(this.tenantId, this.config, this.api, this.admin);
@@ -0,0 +1,13 @@
1
+ import { Logger, LogLevel } from '../../util/logger';
2
+ export declare const DEFAULT_LOGGER: (context: string, logLevel?: LogLevel) => HatchetLogger;
3
+ export declare class HatchetLogger implements Logger {
4
+ private logLevel;
5
+ private context;
6
+ constructor(context: string, logLevel?: LogLevel);
7
+ private log;
8
+ debug(message: string): void;
9
+ info(message: string): void;
10
+ green(message: string): void;
11
+ warn(message: string, error?: Error): void;
12
+ error(message: string, error?: Error): void;
13
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HatchetLogger = exports.DEFAULT_LOGGER = void 0;
4
+ const logger_1 = require("../../util/logger");
5
+ const DEFAULT_LOGGER = (context, logLevel) => new HatchetLogger(context, logLevel);
6
+ exports.DEFAULT_LOGGER = DEFAULT_LOGGER;
7
+ class HatchetLogger {
8
+ constructor(context, logLevel = 'INFO') {
9
+ this.logLevel = logLevel;
10
+ this.context = context;
11
+ }
12
+ log(level, message, color) {
13
+ if (logger_1.LogLevelEnum[level] >= logger_1.LogLevelEnum[this.logLevel]) {
14
+ const time = new Date().toLocaleString('en-US', {
15
+ month: '2-digit',
16
+ day: '2-digit',
17
+ year: '2-digit',
18
+ hour: '2-digit',
19
+ minute: '2-digit',
20
+ second: '2-digit',
21
+ });
22
+ // eslint-disable-next-line no-console
23
+ console.log(`🪓 ${process.pid} | ${time} ${color && `\x1b[${color}m`} [${level}/${this.context}] ${message}\x1b[0m`);
24
+ }
25
+ }
26
+ debug(message) {
27
+ this.log('DEBUG', message, '35');
28
+ }
29
+ info(message) {
30
+ this.log('INFO', message);
31
+ }
32
+ green(message) {
33
+ this.log('INFO', message, '32');
34
+ }
35
+ warn(message, error) {
36
+ this.log('WARN', `${message} ${error}`, '93');
37
+ }
38
+ error(message, error) {
39
+ this.log('ERROR', `${message} ${error}`, '91');
40
+ }
41
+ }
42
+ exports.HatchetLogger = HatchetLogger;
@@ -1,2 +1,3 @@
1
1
  export * from './hatchet-client';
2
2
  export * from './client-config';
3
+ export { HatchetLogger } from './hatchet-logger';
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.HatchetLogger = void 0;
17
18
  __exportStar(require("./hatchet-client"), exports);
18
19
  __exportStar(require("./client-config"), exports);
20
+ var hatchet_logger_1 = require("./hatchet-logger");
21
+ Object.defineProperty(exports, "HatchetLogger", { enumerable: true, get: function () { return hatchet_logger_1.HatchetLogger; } });
@@ -38,7 +38,6 @@ const nice_grpc_1 = require("nice-grpc");
38
38
  const events_1 = require("events");
39
39
  const dispatcher_1 = require("../../protoc/dispatcher");
40
40
  const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error"));
41
- const logger_1 = require("../../util/logger");
42
41
  const sleep_1 = __importDefault(require("../../util/sleep"));
43
42
  const data_contracts_1 = require("../rest/generated/data-contracts");
44
43
  const child_listener_client_1 = require("./child-listener-client");
@@ -217,7 +216,7 @@ class ListenerClient {
217
216
  constructor(config, channel, factory, api) {
218
217
  this.config = config;
219
218
  this.client = factory.create(dispatcher_1.DispatcherDefinition, channel);
220
- this.logger = new logger_1.Logger(`Listener`, config.log_level);
219
+ this.logger = config.logger(`Listener`, config.log_level);
221
220
  this.api = api;
222
221
  }
223
222
  get(workflowRunId) {
@@ -24,7 +24,6 @@ const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error
24
24
  const dispatcher_1 = require("../../protoc/dispatcher");
25
25
  const hatchet_promise_1 = __importDefault(require("../../util/hatchet-promise/hatchet-promise"));
26
26
  const workflows_1 = require("../../protoc/workflows");
27
- const logger_1 = require("../../util/logger");
28
27
  const handler_1 = require("./handler");
29
28
  const step_1 = require("../../step");
30
29
  class Worker {
@@ -43,7 +42,7 @@ class Worker {
43
42
  process.on('SIGINT', () => this.exitGracefully(true));
44
43
  this.killing = false;
45
44
  this.handle_kill = options.handleKill === undefined ? true : options.handleKill;
46
- this.logger = new logger_1.Logger(`Worker/${this.name}`, this.client.config.log_level);
45
+ this.logger = client.config.logger(`Worker/${this.name}`, this.client.config.log_level);
47
46
  }
48
47
  registerActions(workflow) {
49
48
  var _a;
@@ -84,7 +83,7 @@ class Worker {
84
83
  registerWorkflow(initWorkflow) {
85
84
  return __awaiter(this, void 0, void 0, function* () {
86
85
  var _a, _b, _c;
87
- const workflow = Object.assign(Object.assign({}, initWorkflow), { id: this.client.config.namespace + initWorkflow.id });
86
+ const workflow = Object.assign(Object.assign({}, initWorkflow), { id: (this.client.config.namespace + initWorkflow.id).toLowerCase() });
88
87
  try {
89
88
  if (((_a = workflow.concurrency) === null || _a === void 0 ? void 0 : _a.key) && workflow.concurrency.expression) {
90
89
  throw new hatchet_error_1.default('Cannot have both key function and expression in workflow concurrency configuration');
@@ -244,11 +243,11 @@ class Worker {
244
243
  yield future.promise;
245
244
  }
246
245
  catch (e) {
247
- this.logger.error(`Could not wait for step run to finish: ${e}`);
246
+ this.logger.error('Could not wait for step run to finish: ', e);
248
247
  }
249
248
  }
250
249
  catch (e) {
251
- this.logger.error(`Could not send action event (outer): ${e}`);
250
+ this.logger.error('Could not send action event (outer): ', e);
252
251
  }
253
252
  });
254
253
  }
@@ -364,7 +363,7 @@ class Worker {
364
363
  }
365
364
  }
366
365
  catch (e) {
367
- this.logger.error(`Could not cancel step run: ${e}`);
366
+ this.logger.error('Could not cancel step run: ', e);
368
367
  }
369
368
  });
370
369
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ // eslint-disable-next-line import/no-extraneous-dependencies
16
+ const pino_1 = __importDefault(require("pino"));
17
+ const sdk_1 = __importDefault(require("../sdk"));
18
+ const logger = (0, pino_1.default)();
19
+ class PinoLogger {
20
+ constructor(context, logLevel = 'DEBUG') {
21
+ this.logLevel = logLevel;
22
+ this.context = context;
23
+ }
24
+ debug(message) {
25
+ logger.debug(message);
26
+ }
27
+ info(message) {
28
+ logger.info(message);
29
+ }
30
+ green(message) {
31
+ logger.info(`%c${message}`);
32
+ }
33
+ warn(message, error) {
34
+ logger.warn(`${message} ${error}`);
35
+ }
36
+ error(message, error) {
37
+ logger.error(`${message} ${error}`);
38
+ }
39
+ }
40
+ const hatchet = sdk_1.default.init({
41
+ log_level: 'DEBUG',
42
+ logger: (ctx, level) => new PinoLogger(ctx, level),
43
+ });
44
+ const sleep = (ms) => new Promise((resolve) => {
45
+ setTimeout(resolve, ms);
46
+ });
47
+ const workflow = {
48
+ id: 'byo-logger-example',
49
+ description: 'An example showing how to pass a custom logger to Hatchet',
50
+ on: {
51
+ event: 'byo-logger:spawn',
52
+ },
53
+ steps: [
54
+ {
55
+ name: 'logger-step1',
56
+ run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
57
+ // eslint-disable-next-line no-plusplus
58
+ for (let i = 0; i < 5; i++) {
59
+ logger.info(`log message ${i}`);
60
+ yield sleep(500);
61
+ }
62
+ return { step1: 'completed step run' };
63
+ }),
64
+ },
65
+ ],
66
+ };
67
+ function main() {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const worker = yield hatchet.worker('byo-logger-worker', 1);
70
+ yield worker.registerWorkflow(workflow);
71
+ worker.start();
72
+ });
73
+ }
74
+ main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hatchet-dev/typescript-sdk",
3
- "version": "0.19.0",
3
+ "version": "0.20.1",
4
4
  "description": "Background task orchestration & visibility for developers",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [
@@ -59,6 +59,7 @@
59
59
  "worker:retries-with-backoff": "npm run exec -- ./src/examples/retries-with-backoff.ts",
60
60
  "worker:multi-workflow": "npm run exec -- ./src/examples/multi-workflow.ts",
61
61
  "worker:logger": "npm run exec -- ./src/examples/logger.ts",
62
+ "worker:byo-logger": "npm run exec -- ./src/examples/byo-logger.ts",
62
63
  "api": "npm run exec -- ./src/examples/api.ts",
63
64
  "prepublish": "cp package.json dist/package.json;",
64
65
  "publish:ci": "rm -rf ./dist && npm run dump-version && npm run tsc:build && npm run prepublish && cd dist && npm publish --access public --no-git-checks",
@@ -90,6 +91,7 @@
90
91
  "eslint-plugin-unused-imports": "^4.1.3",
91
92
  "grpc-tools": "^1.12.4",
92
93
  "jest": "^29.7.0",
94
+ "pino": "^9.6.0",
93
95
  "prettier": "^3.1.1",
94
96
  "resolve-tspaths": "^0.8.17",
95
97
  "ts-jest": "^29.1.1",
package/step.js CHANGED
@@ -51,7 +51,6 @@ exports.mapRateLimit = mapRateLimit;
51
51
  const hatchet_error_1 = __importDefault(require("./util/errors/hatchet-error"));
52
52
  const z = __importStar(require("zod"));
53
53
  const workflow_1 = require("./workflow");
54
- const logger_1 = require("./util/logger");
55
54
  const parse_1 = require("./util/parse");
56
55
  const workflows_1 = require("./protoc/workflows");
57
56
  exports.CreateRateLimitSchema = z.object({
@@ -120,7 +119,7 @@ class Context {
120
119
  this.action = action;
121
120
  this.client = client;
122
121
  this.worker = new ContextWorker(worker);
123
- this.logger = new logger_1.Logger(`Context Logger`, client.config.log_level);
122
+ this.logger = client.config.logger(`Context Logger`, client.config.log_level);
124
123
  // if this is a getGroupKeyRunId, the data is the workflow input
125
124
  if (action.getGroupKeyRunId !== '') {
126
125
  this.input = data;
@@ -1,13 +1,15 @@
1
+ export declare abstract class Logger {
2
+ abstract debug(message: string): void;
3
+ abstract info(message: string): void;
4
+ abstract green(message: string): void;
5
+ abstract warn(message: string, error?: Error): void;
6
+ abstract error(message: string, error?: Error): void;
7
+ }
1
8
  export type LogLevel = 'OFF' | 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';
2
- export declare class Logger {
3
- private logLevel;
4
- private context;
5
- constructor(context: string, logLevel?: LogLevel);
6
- private log;
7
- debug(message: string): void;
8
- info(message: string): void;
9
- green(message: string): void;
10
- warn(message: string): void;
11
- error(message: string): void;
9
+ export declare enum LogLevelEnum {
10
+ OFF = -1,
11
+ DEBUG = 0,
12
+ INFO = 1,
13
+ WARN = 2,
14
+ ERROR = 3
12
15
  }
13
- export default Logger;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Logger = void 0;
3
+ exports.LogLevelEnum = exports.Logger = void 0;
4
+ class Logger {
5
+ }
6
+ exports.Logger = Logger;
4
7
  // eslint-disable-next-line no-shadow
5
8
  var LogLevelEnum;
6
9
  (function (LogLevelEnum) {
@@ -9,41 +12,4 @@ var LogLevelEnum;
9
12
  LogLevelEnum[LogLevelEnum["INFO"] = 1] = "INFO";
10
13
  LogLevelEnum[LogLevelEnum["WARN"] = 2] = "WARN";
11
14
  LogLevelEnum[LogLevelEnum["ERROR"] = 3] = "ERROR";
12
- })(LogLevelEnum || (LogLevelEnum = {}));
13
- class Logger {
14
- constructor(context, logLevel = 'INFO') {
15
- this.logLevel = logLevel;
16
- this.context = context;
17
- }
18
- log(level, message, color) {
19
- if (LogLevelEnum[level] >= LogLevelEnum[this.logLevel]) {
20
- const time = new Date().toLocaleString('en-US', {
21
- month: '2-digit',
22
- day: '2-digit',
23
- year: '2-digit',
24
- hour: '2-digit',
25
- minute: '2-digit',
26
- second: '2-digit',
27
- });
28
- // eslint-disable-next-line no-console
29
- console.log(`🪓 ${process.pid} | ${time} ${color && `\x1b[${color}m`} [${level}/${this.context}] ${message}\x1b[0m`);
30
- }
31
- }
32
- debug(message) {
33
- this.log('DEBUG', message, '35');
34
- }
35
- info(message) {
36
- this.log('INFO', message);
37
- }
38
- green(message) {
39
- this.log('INFO', message, '32');
40
- }
41
- warn(message) {
42
- this.log('WARN', message, '93');
43
- }
44
- error(message) {
45
- this.log('ERROR', message, '91');
46
- }
47
- }
48
- exports.Logger = Logger;
49
- exports.default = Logger;
15
+ })(LogLevelEnum || (exports.LogLevelEnum = LogLevelEnum = {}));
package/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const HATCHET_VERSION = "0.19.0";
1
+ export declare const HATCHET_VERSION = "0.20.1";
package/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HATCHET_VERSION = void 0;
4
- exports.HATCHET_VERSION = '0.19.0';
4
+ exports.HATCHET_VERSION = '0.20.1';