@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.
@@ -1,5 +1,5 @@
1
- import { O as OrkesApiConfig, C as ConductorHttpRequest, a as ConductorClient } from './types-1a12e2c4.js';
2
- export { p as Action, m as ApiError, A as ApiRequestOptions, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, d as CancelablePromise, a9 as ClearAssigment, au as CommonTaskDef, b as ConductorClientAPIConfig, 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, F as FetchFn, 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, c as OpenAPIConfig, 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 } from './types-1e3272c6.js';
2
+ export { p as Action, m as ApiError, A as ApiRequestOptions, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, d as CancelablePromise, a9 as ClearAssigment, au as CommonTaskDef, b as ConductorClientAPIConfig, 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, F as FetchFn, 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, c as OpenAPIConfig, 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/browser.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OrkesApiConfig, C as ConductorHttpRequest, a as ConductorClient } from './types-1a12e2c4.js';
2
- export { p as Action, m as ApiError, A as ApiRequestOptions, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, d as CancelablePromise, a9 as ClearAssigment, au as CommonTaskDef, b as ConductorClientAPIConfig, 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, F as FetchFn, 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, c as OpenAPIConfig, 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 } from './types-1e3272c6.js';
2
+ export { p as Action, m as ApiError, A as ApiRequestOptions, k as ApiResult, a6 as AssignmentPolicy, a8 as BackToAssigment, B as BaseHttpRequest, o as CancelError, d as CancelablePromise, a9 as ClearAssigment, au as CommonTaskDef, b as ConductorClientAPIConfig, 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, F as FetchFn, 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, c as OpenAPIConfig, 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/browser.js CHANGED
@@ -2281,16 +2281,25 @@ var BaseHttpRequest = class {
2281
2281
  }
2282
2282
  };
2283
2283
 
2284
+ // src/task/constants.ts
2285
+ var DEFAULT_POLL_INTERVAL = 100;
2286
+ var DEFAULT_CONCURRENCY = 1;
2287
+ var DEFAULT_WARN_AT_O = 100;
2288
+ var DEFAULT_BATCH_POLLING_TIMEOUT = 100;
2289
+
2284
2290
  // src/task/Poller.ts
2285
2291
  var Poller = class {
2286
- constructor(pollFunction, performWorkFunction, pollerOptions, logger) {
2292
+ constructor(pollerId, pollFunction, performWorkFunction, pollerOptions, logger) {
2287
2293
  this.performWorkFunction = async () => {
2288
2294
  };
2289
2295
  this.polling = false;
2290
2296
  this._tasksInProcess = 0;
2297
+ this._counterAtO = 0;
2298
+ this._pollerId = "";
2291
2299
  this.options = {
2292
- pollInterval: 1e3,
2293
- concurrency: 1
2300
+ pollInterval: DEFAULT_POLL_INTERVAL,
2301
+ concurrency: DEFAULT_CONCURRENCY,
2302
+ warnAtO: DEFAULT_WARN_AT_O
2294
2303
  };
2295
2304
  this.logger = noopLogger;
2296
2305
  /**
@@ -2317,10 +2326,30 @@ var Poller = class {
2317
2326
  };
2318
2327
  this.poll = async () => {
2319
2328
  while (this.isPolling) {
2320
- const count = this.options.concurrency > this._tasksInProcess ? this.options.concurrency - this._tasksInProcess : this._tasksInProcess;
2321
- const taskResult = await this.pollFunction(count);
2322
- this._tasksInProcess = taskResult.length;
2323
- taskResult.forEach(this.performWork);
2329
+ try {
2330
+ const count = Math.max(
2331
+ 0,
2332
+ this.options.concurrency - this._tasksInProcess
2333
+ );
2334
+ if (count === 0) {
2335
+ this.logger.debug(
2336
+ "Max in process reached, Will skip polling for " + this._pollerId
2337
+ );
2338
+ this._counterAtO++;
2339
+ if (this._counterAtO > (this.options.warnAtO ?? 100)) {
2340
+ this.logger.info(
2341
+ `Not polling anything because in process tasks is maxed as concurrency level. ${this._pollerId}`
2342
+ );
2343
+ }
2344
+ } else {
2345
+ this._counterAtO = 0;
2346
+ const tasksResult = await this.pollFunction(count);
2347
+ this._tasksInProcess = this._tasksInProcess + (tasksResult ?? []).length;
2348
+ tasksResult.forEach(this.performWork);
2349
+ }
2350
+ } catch (e) {
2351
+ this.logger.error(`Error polling for tasks: ${e.message}`, e);
2352
+ }
2324
2353
  await new Promise(
2325
2354
  (r) => this.isPolling ? this.timeoutHandler = setTimeout(
2326
2355
  () => r(true),
@@ -2329,6 +2358,7 @@ var Poller = class {
2329
2358
  );
2330
2359
  }
2331
2360
  };
2361
+ this._pollerId = pollerId;
2332
2362
  this.pollFunction = pollFunction;
2333
2363
  this.performWorkFunction = performWorkFunction;
2334
2364
  this.options = { ...this.options, ...pollerOptions };
@@ -2351,6 +2381,13 @@ var DEFAULT_ERROR_MESSAGE = "An unknown error occurred";
2351
2381
  var MAX_RETRIES = 3;
2352
2382
  var noopErrorHandler = (__error) => {
2353
2383
  };
2384
+ var defaultRunnerOptions = {
2385
+ workerID: "",
2386
+ pollInterval: DEFAULT_POLL_INTERVAL,
2387
+ domain: void 0,
2388
+ concurrency: DEFAULT_CONCURRENCY,
2389
+ batchPollingTimeout: DEFAULT_BATCH_POLLING_TIMEOUT
2390
+ };
2354
2391
  var TaskRunner = class {
2355
2392
  constructor({
2356
2393
  worker,
@@ -2364,6 +2401,9 @@ var TaskRunner = class {
2364
2401
  */
2365
2402
  this.startPolling = () => {
2366
2403
  this.poller.startPolling();
2404
+ this.logger.info(
2405
+ `TaskWorker ${this.worker.taskDefName} initialized with concurrency of ${this.poller.options.concurrency} and poll interval of ${this.poller.options.pollInterval}`
2406
+ );
2367
2407
  };
2368
2408
  /**
2369
2409
  * Stops Polling for work
@@ -2373,13 +2413,15 @@ var TaskRunner = class {
2373
2413
  };
2374
2414
  this.batchPoll = async (count) => {
2375
2415
  const { workerID } = this.options;
2376
- const task = await this.taskResource.batchPoll(
2416
+ const tasks = await this.taskResource.batchPoll(
2377
2417
  this.worker.taskDefName,
2378
2418
  workerID,
2379
2419
  this.worker.domain ?? this.options.domain,
2380
- count
2420
+ count,
2421
+ this.options.batchPollingTimeout ?? 100
2422
+ // default batch poll defined in the method
2381
2423
  );
2382
- return task;
2424
+ return tasks;
2383
2425
  };
2384
2426
  this.updateTaskWithRetry = async (task, taskResult) => {
2385
2427
  let retryCount = 0;
@@ -2409,7 +2451,7 @@ var TaskRunner = class {
2409
2451
  workflowInstanceId: task.workflowInstanceId,
2410
2452
  taskId: task.taskId
2411
2453
  });
2412
- this.logger.debug(`Finished polling for task ${task.taskId}`);
2454
+ this.logger.debug(`Task has executed successfully ${task.taskId}`);
2413
2455
  } catch (error) {
2414
2456
  await this.updateTaskWithRetry(task, {
2415
2457
  workflowInstanceId: task.workflowInstanceId,
@@ -2438,12 +2480,16 @@ var TaskRunner = class {
2438
2480
  this.taskResource = taskResource;
2439
2481
  this.logger = logger;
2440
2482
  this.worker = worker;
2441
- this.options = options;
2483
+ this.options = { ...defaultRunnerOptions, ...options };
2442
2484
  this.errorHandler = errorHandler;
2443
2485
  this.poller = new Poller(
2486
+ worker.taskDefName,
2444
2487
  this.batchPoll,
2445
2488
  this.executeTask,
2446
- { concurrency: options.concurrency, pollInterval: options.pollInterval },
2489
+ {
2490
+ concurrency: worker.concurrency ?? options.concurrency,
2491
+ pollInterval: worker.pollInterval ?? options.pollInterval
2492
+ },
2447
2493
  this.logger
2448
2494
  );
2449
2495
  }
@@ -2456,6 +2502,9 @@ var TaskRunner = class {
2456
2502
  concurrency: newOptions.concurrency,
2457
2503
  pollInterval: newOptions.pollInterval
2458
2504
  });
2505
+ this.logger.info(
2506
+ `TaskWorker ${this.worker.taskDefName} configuration updated with concurrency of ${this.poller.options.concurrency} and poll interval of ${this.poller.options.pollInterval}`
2507
+ );
2459
2508
  this.options = newOptions;
2460
2509
  }
2461
2510
  get getOptions() {
@@ -2467,24 +2516,36 @@ var TaskRunner = class {
2467
2516
  var import_os = __toESM(require("os"));
2468
2517
  var defaultManagerOptions = {
2469
2518
  workerID: "",
2470
- pollInterval: 1e3,
2519
+ pollInterval: DEFAULT_POLL_INTERVAL,
2471
2520
  domain: void 0,
2472
- concurrency: 1
2521
+ concurrency: DEFAULT_CONCURRENCY,
2522
+ batchPollingTimeout: DEFAULT_BATCH_POLLING_TIMEOUT
2473
2523
  };
2474
2524
  function workerId(options) {
2475
2525
  return options.workerID ?? import_os.default.hostname();
2476
2526
  }
2477
2527
  var TaskManager = class {
2478
2528
  constructor(client, workers, config = {}) {
2479
- this.tasks = {};
2529
+ this.workerRunners = /* @__PURE__ */ new Map();
2480
2530
  this.polling = false;
2481
2531
  this.workerManagerWorkerOptions = (worker) => {
2482
2532
  return {
2483
2533
  ...this.options,
2484
2534
  concurrency: worker.concurrency ?? this.options.concurrency,
2535
+ pollInterval: worker.pollInterval ?? this.options.pollInterval,
2485
2536
  domain: worker.domain ?? this.options.domain
2486
2537
  };
2487
2538
  };
2539
+ this.updatePollingOptionForWorker = (workerTaskDefName, options) => {
2540
+ const maybeRunner = this.workerRunners.get(workerTaskDefName);
2541
+ if (maybeRunner != null) {
2542
+ maybeRunner.updateOptions(options);
2543
+ } else {
2544
+ this.logger.info(
2545
+ `No runner found for worker with taskDefName: ${workerTaskDefName}`
2546
+ );
2547
+ }
2548
+ };
2488
2549
  /**
2489
2550
  * new options will get merged to existing options
2490
2551
  * @param options new options to update polling options
@@ -2495,24 +2556,30 @@ var TaskManager = class {
2495
2556
  ...this.workerManagerWorkerOptions(worker),
2496
2557
  ...options
2497
2558
  };
2498
- const runners = this.tasks[worker.taskDefName];
2499
- runners.forEach((runner) => {
2500
- runner.updateOptions(newOptions);
2501
- });
2559
+ this.updatePollingOptionForWorker(worker.taskDefName, newOptions);
2502
2560
  });
2503
2561
  this.options.concurrency = options.concurrency ?? this.options.concurrency;
2504
2562
  this.options.pollInterval = options.pollInterval ?? this.options.pollInterval;
2505
2563
  };
2564
+ this.sanityCheck = () => {
2565
+ if (this.workers.length === 0) {
2566
+ throw new Error("No workers supplied to TaskManager");
2567
+ }
2568
+ const workerIDs = /* @__PURE__ */ new Set();
2569
+ for (const item of this.workers) {
2570
+ if (workerIDs.has(item.taskDefName)) {
2571
+ throw new Error(`Duplicate worker taskDefName: ${item.taskDefName}`);
2572
+ }
2573
+ workerIDs.add(item.taskDefName);
2574
+ }
2575
+ };
2506
2576
  /**
2507
2577
  * Start polling for tasks
2508
2578
  */
2509
2579
  this.startPolling = () => {
2580
+ this.sanityCheck();
2510
2581
  this.workers.forEach((worker) => {
2511
- this.tasks[worker.taskDefName] = [];
2512
2582
  const options = this.workerManagerWorkerOptions(worker);
2513
- this.logger.debug(
2514
- `Starting taskDefName=${worker.taskDefName} concurrency=${options.concurrency} domain=${options.domain}`
2515
- );
2516
2583
  const runner = new TaskRunner({
2517
2584
  worker,
2518
2585
  options,
@@ -2521,7 +2588,7 @@ var TaskManager = class {
2521
2588
  onError: this.errorHandler
2522
2589
  });
2523
2590
  runner.startPolling();
2524
- this.tasks[worker.taskDefName].push(runner);
2591
+ this.workerRunners.set(worker.taskDefName, runner);
2525
2592
  });
2526
2593
  this.polling = true;
2527
2594
  };
@@ -2529,11 +2596,10 @@ var TaskManager = class {
2529
2596
  * Stops polling for tasks
2530
2597
  */
2531
2598
  this.stopPolling = async () => {
2532
- for (const taskType in this.tasks) {
2533
- await Promise.all(
2534
- this.tasks[taskType].map((runner) => runner.stopPolling())
2535
- );
2536
- this.tasks[taskType] = [];
2599
+ for (const [workerTaskDefName, runner] of this.workerRunners) {
2600
+ this.logger.debug(`Stopping taskDefName=${workerTaskDefName}`);
2601
+ await runner.stopPolling();
2602
+ this.workerRunners.delete(workerTaskDefName);
2537
2603
  }
2538
2604
  this.polling = false;
2539
2605
  };