@io-orkes/conductor-javascript 1.2.1-rc.2 → 1.2.1-rc.4

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.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OrkesApiConfig, C as ConductorHttpRequest, a as ConductorClient, b as ConductorClientAPIConfig, F as FetchFn, c as OpenAPIConfig, A as ApiRequestOptions, d as CancelablePromise } from './types-1a12e2c4.js';
2
- export { p as Action, m as ApiError, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, a9 as ClearAssigment, au as CommonTaskDef, aR as ConductorError, ap as ConductorLogLevel, ao as ConductorLogger, j as ConductorWorker, ar as DefaultLogger, aq as DefaultLoggerConfig, ax as DoWhileTaskDef, aa as Escalate, E as EventHandler, _ as EventResourceService, ay as EventTaskDef, q as ExternalStorageLocation, ab as FFAAssignment, a7 as Fixed, aB as ForkJoinDynamicDef, az as ForkJoinTaskDef, G as GenerateTokenRequest, ac as HTScrollableSearchResultHumanTaskEntry, $ as HealthCheckResourceService, aC as HttpInputParameters, aD as HttpTaskDef, aT as HumanExecutor, ad as HumanTaskActionLogEntry, ae as HumanTaskEntry, af as HumanTaskLoad, ag as HumanTaskStateLogEntry, ah as HumanTaskTemplate, ai as HumanTaskTemplateEntry, aF as InlineTaskDef, aE as InlineTaskInputParameters, aA as JoinTaskDef, aG as JsonJQTransformTaskDef, aH as KafkaPublishInputParameters, aI as KafkaPublishTaskDef, aj as LeastBusyGroupMemberAssignment, a0 as MetadataResourceService, ak as Never, l as OnCancel, P as PollData, at as RequestType, r as RerunWorkflowRequest, s as Response, R as RunnerArgs, S as SaveScheduleRequest, a1 as SchedulerResourceService, t as ScrollableSearchResultWorkflowSummary, al as SearchResultHumanTaskEntry, u as SearchResultTask, v as SearchResultTaskSummary, w as SearchResultWorkflow, x as SearchResultWorkflowScheduleExecutionModel, y as SearchResultWorkflowSummary, aJ as SetVariableTaskDef, aK as SimpleTaskDef, z as SkipTaskRequest, D as StartWorkflow, H as StartWorkflowRequest, I as SubWorkflowParams, aL as SubWorkflowTaskDef, aM as SwitchTaskDef, J as Task, K as TaskDef, aw as TaskDefTypes, L as TaskDetails, T as TaskErrorHandler, M as TaskExecLog, i as TaskManager, h as TaskManagerConfig, g as TaskManagerOptions, a2 as TaskResourceService, N as TaskResult, aS as TaskResultStatus, f as TaskRunner, e as TaskRunnerOptions, Q as TaskSummary, av as TaskType, am as Terminate, aN as TerminateTaskDef, an as TimeoutPolicy, a3 as TokenResourceService, aO as WaitTaskDef, W as Workflow, a4 as WorkflowBulkResourceService, aP as WorkflowDef, aQ as WorkflowExecutor, a5 as WorkflowResourceService, U as WorkflowSchedule, V as WorkflowScheduleExecutionModel, X as WorkflowStatus, Y as WorkflowSummary, Z as WorkflowTask, aZ as conductorEventTask, aU as doWhileTask, aW as dynamicForkTask, aX as eventTask, a_ as forkTask, a$ as forkTaskJoin, br as generate, be as generateDoWhileTask, bf as generateEventTask, bg as generateForkJoinTask, bi as generateHTTPTask, bj as generateInlineTask, bk as generateJQTransformTask, bh as generateJoinTask, bl as generateKafkaPublishTask, bn as generateSetVariableTask, bd as generateSimpleTask, bm as generateSubWorkflowTask, bq as generateSwitchTask, bo as generateTerminateTask, bp as generateWaitTask, b0 as httpTask, b1 as inlineTask, b2 as joinTask, b3 as jsonJqTask, b4 as kafkaPublishTask, aV as newLoopTask, n as noopErrorHandler, as as noopLogger, b5 as setVariableTask, b6 as simpleTask, aY as sqsEventTask, b7 as subWorkflowTask, b8 as switchTask, bs as taskGenMapper, b9 as terminateTask, ba as waitTaskDuration, bb as waitTaskUntil, bc as workflow } from './types-1a12e2c4.js';
1
+ import { O as OrkesApiConfig, C as ConductorHttpRequest, a as ConductorClient, b as ConductorClientAPIConfig, F as FetchFn, c as OpenAPIConfig, A as ApiRequestOptions, d as CancelablePromise } from './types-1e3272c6.js';
2
+ export { p as Action, m as ApiError, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, a9 as ClearAssigment, au as CommonTaskDef, aR as ConductorError, ap as ConductorLogLevel, ao as ConductorLogger, j as ConductorWorker, ar as DefaultLogger, aq as DefaultLoggerConfig, ax as DoWhileTaskDef, aa as Escalate, E as EventHandler, _ as EventResourceService, ay as EventTaskDef, q as ExternalStorageLocation, ab as FFAAssignment, a7 as Fixed, aB as ForkJoinDynamicDef, az as ForkJoinTaskDef, G as GenerateTokenRequest, ac as HTScrollableSearchResultHumanTaskEntry, $ as HealthCheckResourceService, aC as HttpInputParameters, aD as HttpTaskDef, aT as HumanExecutor, ad as HumanTaskActionLogEntry, ae as HumanTaskEntry, af as HumanTaskLoad, ag as HumanTaskStateLogEntry, ah as HumanTaskTemplate, ai as HumanTaskTemplateEntry, aF as InlineTaskDef, aE as InlineTaskInputParameters, aA as JoinTaskDef, aG as JsonJQTransformTaskDef, aH as KafkaPublishInputParameters, aI as KafkaPublishTaskDef, aj as LeastBusyGroupMemberAssignment, a0 as MetadataResourceService, ak as Never, l as OnCancel, P as PollData, at as RequestType, r as RerunWorkflowRequest, s as Response, R as RunnerArgs, S as SaveScheduleRequest, a1 as SchedulerResourceService, t as ScrollableSearchResultWorkflowSummary, al as SearchResultHumanTaskEntry, u as SearchResultTask, v as SearchResultTaskSummary, w as SearchResultWorkflow, x as SearchResultWorkflowScheduleExecutionModel, y as SearchResultWorkflowSummary, aJ as SetVariableTaskDef, aK as SimpleTaskDef, z as SkipTaskRequest, D as StartWorkflow, H as StartWorkflowRequest, I as SubWorkflowParams, aL as SubWorkflowTaskDef, aM as SwitchTaskDef, J as Task, K as TaskDef, aw as TaskDefTypes, L as TaskDetails, T as TaskErrorHandler, M as TaskExecLog, i as TaskManager, h as TaskManagerConfig, g as TaskManagerOptions, a2 as TaskResourceService, N as TaskResult, aS as TaskResultStatus, f as TaskRunner, e as TaskRunnerOptions, Q as TaskSummary, av as TaskType, am as Terminate, aN as TerminateTaskDef, an as TimeoutPolicy, a3 as TokenResourceService, aO as WaitTaskDef, W as Workflow, a4 as WorkflowBulkResourceService, aP as WorkflowDef, aQ as WorkflowExecutor, a5 as WorkflowResourceService, U as WorkflowSchedule, V as WorkflowScheduleExecutionModel, X as WorkflowStatus, Y as WorkflowSummary, Z as WorkflowTask, aZ as conductorEventTask, aU as doWhileTask, aW as dynamicForkTask, aX as eventTask, a_ as forkTask, a$ as forkTaskJoin, br as generate, be as generateDoWhileTask, bf as generateEventTask, bg as generateForkJoinTask, bi as generateHTTPTask, bj as generateInlineTask, bk as generateJQTransformTask, bh as generateJoinTask, bl as generateKafkaPublishTask, bn as generateSetVariableTask, bd as generateSimpleTask, bm as generateSubWorkflowTask, bq as generateSwitchTask, bo as generateTerminateTask, bp as generateWaitTask, b0 as httpTask, b1 as inlineTask, b2 as joinTask, b3 as jsonJqTask, b4 as kafkaPublishTask, aV as newLoopTask, n as noopErrorHandler, as as noopLogger, b5 as setVariableTask, b6 as simpleTask, aY as sqsEventTask, b7 as subWorkflowTask, b8 as switchTask, bs as taskGenMapper, b9 as terminateTask, ba as waitTaskDuration, bb as waitTaskUntil, bc as workflow } from './types-1e3272c6.js';
3
3
 
4
4
  /**
5
5
  * Takes a config with keyId and keySecret returns a promise with an instance of ConductorClient
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OrkesApiConfig, C as ConductorHttpRequest, a as ConductorClient, b as ConductorClientAPIConfig, F as FetchFn, c as OpenAPIConfig, A as ApiRequestOptions, d as CancelablePromise } from './types-1a12e2c4.js';
2
- export { p as Action, m as ApiError, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, a9 as ClearAssigment, au as CommonTaskDef, aR as ConductorError, ap as ConductorLogLevel, ao as ConductorLogger, j as ConductorWorker, ar as DefaultLogger, aq as DefaultLoggerConfig, ax as DoWhileTaskDef, aa as Escalate, E as EventHandler, _ as EventResourceService, ay as EventTaskDef, q as ExternalStorageLocation, ab as FFAAssignment, a7 as Fixed, aB as ForkJoinDynamicDef, az as ForkJoinTaskDef, G as GenerateTokenRequest, ac as HTScrollableSearchResultHumanTaskEntry, $ as HealthCheckResourceService, aC as HttpInputParameters, aD as HttpTaskDef, aT as HumanExecutor, ad as HumanTaskActionLogEntry, ae as HumanTaskEntry, af as HumanTaskLoad, ag as HumanTaskStateLogEntry, ah as HumanTaskTemplate, ai as HumanTaskTemplateEntry, aF as InlineTaskDef, aE as InlineTaskInputParameters, aA as JoinTaskDef, aG as JsonJQTransformTaskDef, aH as KafkaPublishInputParameters, aI as KafkaPublishTaskDef, aj as LeastBusyGroupMemberAssignment, a0 as MetadataResourceService, ak as Never, l as OnCancel, P as PollData, at as RequestType, r as RerunWorkflowRequest, s as Response, R as RunnerArgs, S as SaveScheduleRequest, a1 as SchedulerResourceService, t as ScrollableSearchResultWorkflowSummary, al as SearchResultHumanTaskEntry, u as SearchResultTask, v as SearchResultTaskSummary, w as SearchResultWorkflow, x as SearchResultWorkflowScheduleExecutionModel, y as SearchResultWorkflowSummary, aJ as SetVariableTaskDef, aK as SimpleTaskDef, z as SkipTaskRequest, D as StartWorkflow, H as StartWorkflowRequest, I as SubWorkflowParams, aL as SubWorkflowTaskDef, aM as SwitchTaskDef, J as Task, K as TaskDef, aw as TaskDefTypes, L as TaskDetails, T as TaskErrorHandler, M as TaskExecLog, i as TaskManager, h as TaskManagerConfig, g as TaskManagerOptions, a2 as TaskResourceService, N as TaskResult, aS as TaskResultStatus, f as TaskRunner, e as TaskRunnerOptions, Q as TaskSummary, av as TaskType, am as Terminate, aN as TerminateTaskDef, an as TimeoutPolicy, a3 as TokenResourceService, aO as WaitTaskDef, W as Workflow, a4 as WorkflowBulkResourceService, aP as WorkflowDef, aQ as WorkflowExecutor, a5 as WorkflowResourceService, U as WorkflowSchedule, V as WorkflowScheduleExecutionModel, X as WorkflowStatus, Y as WorkflowSummary, Z as WorkflowTask, aZ as conductorEventTask, aU as doWhileTask, aW as dynamicForkTask, aX as eventTask, a_ as forkTask, a$ as forkTaskJoin, br as generate, be as generateDoWhileTask, bf as generateEventTask, bg as generateForkJoinTask, bi as generateHTTPTask, bj as generateInlineTask, bk as generateJQTransformTask, bh as generateJoinTask, bl as generateKafkaPublishTask, bn as generateSetVariableTask, bd as generateSimpleTask, bm as generateSubWorkflowTask, bq as generateSwitchTask, bo as generateTerminateTask, bp as generateWaitTask, b0 as httpTask, b1 as inlineTask, b2 as joinTask, b3 as jsonJqTask, b4 as kafkaPublishTask, aV as newLoopTask, n as noopErrorHandler, as as noopLogger, b5 as setVariableTask, b6 as simpleTask, aY as sqsEventTask, b7 as subWorkflowTask, b8 as switchTask, bs as taskGenMapper, b9 as terminateTask, ba as waitTaskDuration, bb as waitTaskUntil, bc as workflow } from './types-1a12e2c4.js';
1
+ import { O as OrkesApiConfig, C as ConductorHttpRequest, a as ConductorClient, b as ConductorClientAPIConfig, F as FetchFn, c as OpenAPIConfig, A as ApiRequestOptions, d as CancelablePromise } from './types-1e3272c6.js';
2
+ export { p as Action, m as ApiError, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, a9 as ClearAssigment, au as CommonTaskDef, aR as ConductorError, ap as ConductorLogLevel, ao as ConductorLogger, j as ConductorWorker, ar as DefaultLogger, aq as DefaultLoggerConfig, ax as DoWhileTaskDef, aa as Escalate, E as EventHandler, _ as EventResourceService, ay as EventTaskDef, q as ExternalStorageLocation, ab as FFAAssignment, a7 as Fixed, aB as ForkJoinDynamicDef, az as ForkJoinTaskDef, G as GenerateTokenRequest, ac as HTScrollableSearchResultHumanTaskEntry, $ as HealthCheckResourceService, aC as HttpInputParameters, aD as HttpTaskDef, aT as HumanExecutor, ad as HumanTaskActionLogEntry, ae as HumanTaskEntry, af as HumanTaskLoad, ag as HumanTaskStateLogEntry, ah as HumanTaskTemplate, ai as HumanTaskTemplateEntry, aF as InlineTaskDef, aE as InlineTaskInputParameters, aA as JoinTaskDef, aG as JsonJQTransformTaskDef, aH as KafkaPublishInputParameters, aI as KafkaPublishTaskDef, aj as LeastBusyGroupMemberAssignment, a0 as MetadataResourceService, ak as Never, l as OnCancel, P as PollData, at as RequestType, r as RerunWorkflowRequest, s as Response, R as RunnerArgs, S as SaveScheduleRequest, a1 as SchedulerResourceService, t as ScrollableSearchResultWorkflowSummary, al as SearchResultHumanTaskEntry, u as SearchResultTask, v as SearchResultTaskSummary, w as SearchResultWorkflow, x as SearchResultWorkflowScheduleExecutionModel, y as SearchResultWorkflowSummary, aJ as SetVariableTaskDef, aK as SimpleTaskDef, z as SkipTaskRequest, D as StartWorkflow, H as StartWorkflowRequest, I as SubWorkflowParams, aL as SubWorkflowTaskDef, aM as SwitchTaskDef, J as Task, K as TaskDef, aw as TaskDefTypes, L as TaskDetails, T as TaskErrorHandler, M as TaskExecLog, i as TaskManager, h as TaskManagerConfig, g as TaskManagerOptions, a2 as TaskResourceService, N as TaskResult, aS as TaskResultStatus, f as TaskRunner, e as TaskRunnerOptions, Q as TaskSummary, av as TaskType, am as Terminate, aN as TerminateTaskDef, an as TimeoutPolicy, a3 as TokenResourceService, aO as WaitTaskDef, W as Workflow, a4 as WorkflowBulkResourceService, aP as WorkflowDef, aQ as WorkflowExecutor, a5 as WorkflowResourceService, U as WorkflowSchedule, V as WorkflowScheduleExecutionModel, X as WorkflowStatus, Y as WorkflowSummary, Z as WorkflowTask, aZ as conductorEventTask, aU as doWhileTask, aW as dynamicForkTask, aX as eventTask, a_ as forkTask, a$ as forkTaskJoin, br as generate, be as generateDoWhileTask, bf as generateEventTask, bg as generateForkJoinTask, bi as generateHTTPTask, bj as generateInlineTask, bk as generateJQTransformTask, bh as generateJoinTask, bl as generateKafkaPublishTask, bn as generateSetVariableTask, bd as generateSimpleTask, bm as generateSubWorkflowTask, bq as generateSwitchTask, bo as generateTerminateTask, bp as generateWaitTask, b0 as httpTask, b1 as inlineTask, b2 as joinTask, b3 as jsonJqTask, b4 as kafkaPublishTask, aV as newLoopTask, n as noopErrorHandler, as as noopLogger, b5 as setVariableTask, b6 as simpleTask, aY as sqsEventTask, b7 as subWorkflowTask, b8 as switchTask, bs as taskGenMapper, b9 as terminateTask, ba as waitTaskDuration, bb as waitTaskUntil, bc as workflow } from './types-1e3272c6.js';
3
3
 
4
4
  /**
5
5
  * Takes a config with keyId and keySecret returns a promise with an instance of ConductorClient
package/dist/index.js CHANGED
@@ -2287,16 +2287,25 @@ var BaseHttpRequest = class {
2287
2287
  }
2288
2288
  };
2289
2289
 
2290
+ // src/task/constants.ts
2291
+ var DEFAULT_POLL_INTERVAL = 100;
2292
+ var DEFAULT_CONCURRENCY = 1;
2293
+ var DEFAULT_WARN_AT_O = 100;
2294
+ var DEFAULT_BATCH_POLLING_TIMEOUT = 100;
2295
+
2290
2296
  // src/task/Poller.ts
2291
2297
  var Poller = class {
2292
- constructor(pollFunction, performWorkFunction, pollerOptions, logger) {
2298
+ constructor(pollerId, pollFunction, performWorkFunction, pollerOptions, logger) {
2293
2299
  this.performWorkFunction = async () => {
2294
2300
  };
2295
2301
  this.polling = false;
2296
2302
  this._tasksInProcess = 0;
2303
+ this._counterAtO = 0;
2304
+ this._pollerId = "";
2297
2305
  this.options = {
2298
- pollInterval: 1e3,
2299
- concurrency: 1
2306
+ pollInterval: DEFAULT_POLL_INTERVAL,
2307
+ concurrency: DEFAULT_CONCURRENCY,
2308
+ warnAtO: DEFAULT_WARN_AT_O
2300
2309
  };
2301
2310
  this.logger = noopLogger;
2302
2311
  /**
@@ -2323,10 +2332,30 @@ var Poller = class {
2323
2332
  };
2324
2333
  this.poll = async () => {
2325
2334
  while (this.isPolling) {
2326
- const count = this.options.concurrency > this._tasksInProcess ? this.options.concurrency - this._tasksInProcess : this._tasksInProcess;
2327
- const taskResult = await this.pollFunction(count);
2328
- this._tasksInProcess = taskResult.length;
2329
- taskResult.forEach(this.performWork);
2335
+ try {
2336
+ const count = Math.max(
2337
+ 0,
2338
+ this.options.concurrency - this._tasksInProcess
2339
+ );
2340
+ if (count === 0) {
2341
+ this.logger.debug(
2342
+ "Max in process reached, Will skip polling for " + this._pollerId
2343
+ );
2344
+ this._counterAtO++;
2345
+ if (this._counterAtO > (this.options.warnAtO ?? 100)) {
2346
+ this.logger.info(
2347
+ `Not polling anything because in process tasks is maxed as concurrency level. ${this._pollerId}`
2348
+ );
2349
+ }
2350
+ } else {
2351
+ this._counterAtO = 0;
2352
+ const tasksResult = await this.pollFunction(count);
2353
+ this._tasksInProcess = this._tasksInProcess + (tasksResult ?? []).length;
2354
+ tasksResult.forEach(this.performWork);
2355
+ }
2356
+ } catch (e) {
2357
+ this.logger.error(`Error polling for tasks: ${e.message}`, e);
2358
+ }
2330
2359
  await new Promise(
2331
2360
  (r) => this.isPolling ? this.timeoutHandler = setTimeout(
2332
2361
  () => r(true),
@@ -2335,6 +2364,7 @@ var Poller = class {
2335
2364
  );
2336
2365
  }
2337
2366
  };
2367
+ this._pollerId = pollerId;
2338
2368
  this.pollFunction = pollFunction;
2339
2369
  this.performWorkFunction = performWorkFunction;
2340
2370
  this.options = { ...this.options, ...pollerOptions };
@@ -2357,6 +2387,13 @@ var DEFAULT_ERROR_MESSAGE = "An unknown error occurred";
2357
2387
  var MAX_RETRIES = 3;
2358
2388
  var noopErrorHandler = (__error) => {
2359
2389
  };
2390
+ var defaultRunnerOptions = {
2391
+ workerID: "",
2392
+ pollInterval: DEFAULT_POLL_INTERVAL,
2393
+ domain: void 0,
2394
+ concurrency: DEFAULT_CONCURRENCY,
2395
+ batchPollingTimeout: DEFAULT_BATCH_POLLING_TIMEOUT
2396
+ };
2360
2397
  var TaskRunner = class {
2361
2398
  constructor({
2362
2399
  worker,
@@ -2370,6 +2407,9 @@ var TaskRunner = class {
2370
2407
  */
2371
2408
  this.startPolling = () => {
2372
2409
  this.poller.startPolling();
2410
+ this.logger.info(
2411
+ `TaskWorker ${this.worker.taskDefName} initialized with concurrency of ${this.poller.options.concurrency} and poll interval of ${this.poller.options.pollInterval}`
2412
+ );
2373
2413
  };
2374
2414
  /**
2375
2415
  * Stops Polling for work
@@ -2379,13 +2419,15 @@ var TaskRunner = class {
2379
2419
  };
2380
2420
  this.batchPoll = async (count) => {
2381
2421
  const { workerID } = this.options;
2382
- const task = await this.taskResource.batchPoll(
2422
+ const tasks = await this.taskResource.batchPoll(
2383
2423
  this.worker.taskDefName,
2384
2424
  workerID,
2385
2425
  this.worker.domain ?? this.options.domain,
2386
- count
2426
+ count,
2427
+ this.options.batchPollingTimeout ?? 100
2428
+ // default batch poll defined in the method
2387
2429
  );
2388
- return task;
2430
+ return tasks;
2389
2431
  };
2390
2432
  this.updateTaskWithRetry = async (task, taskResult) => {
2391
2433
  let retryCount = 0;
@@ -2415,7 +2457,7 @@ var TaskRunner = class {
2415
2457
  workflowInstanceId: task.workflowInstanceId,
2416
2458
  taskId: task.taskId
2417
2459
  });
2418
- this.logger.debug(`Finished polling for task ${task.taskId}`);
2460
+ this.logger.debug(`Task has executed successfully ${task.taskId}`);
2419
2461
  } catch (error) {
2420
2462
  await this.updateTaskWithRetry(task, {
2421
2463
  workflowInstanceId: task.workflowInstanceId,
@@ -2444,12 +2486,16 @@ var TaskRunner = class {
2444
2486
  this.taskResource = taskResource;
2445
2487
  this.logger = logger;
2446
2488
  this.worker = worker;
2447
- this.options = options;
2489
+ this.options = { ...defaultRunnerOptions, ...options };
2448
2490
  this.errorHandler = errorHandler;
2449
2491
  this.poller = new Poller(
2492
+ worker.taskDefName,
2450
2493
  this.batchPoll,
2451
2494
  this.executeTask,
2452
- { concurrency: options.concurrency, pollInterval: options.pollInterval },
2495
+ {
2496
+ concurrency: worker.concurrency ?? options.concurrency,
2497
+ pollInterval: worker.pollInterval ?? options.pollInterval
2498
+ },
2453
2499
  this.logger
2454
2500
  );
2455
2501
  }
@@ -2462,6 +2508,9 @@ var TaskRunner = class {
2462
2508
  concurrency: newOptions.concurrency,
2463
2509
  pollInterval: newOptions.pollInterval
2464
2510
  });
2511
+ this.logger.info(
2512
+ `TaskWorker ${this.worker.taskDefName} configuration updated with concurrency of ${this.poller.options.concurrency} and poll interval of ${this.poller.options.pollInterval}`
2513
+ );
2465
2514
  this.options = newOptions;
2466
2515
  }
2467
2516
  get getOptions() {
@@ -2473,24 +2522,36 @@ var TaskRunner = class {
2473
2522
  var import_os = __toESM(require("os"));
2474
2523
  var defaultManagerOptions = {
2475
2524
  workerID: "",
2476
- pollInterval: 1e3,
2525
+ pollInterval: DEFAULT_POLL_INTERVAL,
2477
2526
  domain: void 0,
2478
- concurrency: 1
2527
+ concurrency: DEFAULT_CONCURRENCY,
2528
+ batchPollingTimeout: DEFAULT_BATCH_POLLING_TIMEOUT
2479
2529
  };
2480
2530
  function workerId(options) {
2481
2531
  return options.workerID ?? import_os.default.hostname();
2482
2532
  }
2483
2533
  var TaskManager = class {
2484
2534
  constructor(client, workers, config = {}) {
2485
- this.tasks = {};
2535
+ this.workerRunners = /* @__PURE__ */ new Map();
2486
2536
  this.polling = false;
2487
2537
  this.workerManagerWorkerOptions = (worker) => {
2488
2538
  return {
2489
2539
  ...this.options,
2490
2540
  concurrency: worker.concurrency ?? this.options.concurrency,
2541
+ pollInterval: worker.pollInterval ?? this.options.pollInterval,
2491
2542
  domain: worker.domain ?? this.options.domain
2492
2543
  };
2493
2544
  };
2545
+ this.updatePollingOptionForWorker = (workerTaskDefName, options) => {
2546
+ const maybeRunner = this.workerRunners.get(workerTaskDefName);
2547
+ if (maybeRunner != null) {
2548
+ maybeRunner.updateOptions(options);
2549
+ } else {
2550
+ this.logger.info(
2551
+ `No runner found for worker with taskDefName: ${workerTaskDefName}`
2552
+ );
2553
+ }
2554
+ };
2494
2555
  /**
2495
2556
  * new options will get merged to existing options
2496
2557
  * @param options new options to update polling options
@@ -2501,24 +2562,30 @@ var TaskManager = class {
2501
2562
  ...this.workerManagerWorkerOptions(worker),
2502
2563
  ...options
2503
2564
  };
2504
- const runners = this.tasks[worker.taskDefName];
2505
- runners.forEach((runner) => {
2506
- runner.updateOptions(newOptions);
2507
- });
2565
+ this.updatePollingOptionForWorker(worker.taskDefName, newOptions);
2508
2566
  });
2509
2567
  this.options.concurrency = options.concurrency ?? this.options.concurrency;
2510
2568
  this.options.pollInterval = options.pollInterval ?? this.options.pollInterval;
2511
2569
  };
2570
+ this.sanityCheck = () => {
2571
+ if (this.workers.length === 0) {
2572
+ throw new Error("No workers supplied to TaskManager");
2573
+ }
2574
+ const workerIDs = /* @__PURE__ */ new Set();
2575
+ for (const item of this.workers) {
2576
+ if (workerIDs.has(item.taskDefName)) {
2577
+ throw new Error(`Duplicate worker taskDefName: ${item.taskDefName}`);
2578
+ }
2579
+ workerIDs.add(item.taskDefName);
2580
+ }
2581
+ };
2512
2582
  /**
2513
2583
  * Start polling for tasks
2514
2584
  */
2515
2585
  this.startPolling = () => {
2586
+ this.sanityCheck();
2516
2587
  this.workers.forEach((worker) => {
2517
- this.tasks[worker.taskDefName] = [];
2518
2588
  const options = this.workerManagerWorkerOptions(worker);
2519
- this.logger.debug(
2520
- `Starting taskDefName=${worker.taskDefName} concurrency=${options.concurrency} domain=${options.domain}`
2521
- );
2522
2589
  const runner = new TaskRunner({
2523
2590
  worker,
2524
2591
  options,
@@ -2527,7 +2594,7 @@ var TaskManager = class {
2527
2594
  onError: this.errorHandler
2528
2595
  });
2529
2596
  runner.startPolling();
2530
- this.tasks[worker.taskDefName].push(runner);
2597
+ this.workerRunners.set(worker.taskDefName, runner);
2531
2598
  });
2532
2599
  this.polling = true;
2533
2600
  };
@@ -2535,11 +2602,10 @@ var TaskManager = class {
2535
2602
  * Stops polling for tasks
2536
2603
  */
2537
2604
  this.stopPolling = async () => {
2538
- for (const taskType in this.tasks) {
2539
- await Promise.all(
2540
- this.tasks[taskType].map((runner) => runner.stopPolling())
2541
- );
2542
- this.tasks[taskType] = [];
2605
+ for (const [workerTaskDefName, runner] of this.workerRunners) {
2606
+ this.logger.debug(`Stopping taskDefName=${workerTaskDefName}`);
2607
+ await runner.stopPolling();
2608
+ this.workerRunners.delete(workerTaskDefName);
2543
2609
  }
2544
2610
  this.polling = false;
2545
2611
  };