nmtjs 0.16.1 → 0.17.0-beta.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.
Files changed (224) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +41 -1
  3. package/dist/index.d.ts +22 -161
  4. package/dist/index.js +24 -53
  5. package/dist/index.js.map +1 -1
  6. package/package.json +11 -63
  7. package/src/index.ts +71 -91
  8. package/bin/cli.js +0 -2
  9. package/dist/cli.d.ts +0 -1
  10. package/dist/cli.js +0 -137
  11. package/dist/cli.js.map +0 -1
  12. package/dist/codegen.d.ts +0 -5
  13. package/dist/codegen.js +0 -18
  14. package/dist/codegen.js.map +0 -1
  15. package/dist/config.d.ts +0 -47
  16. package/dist/config.js +0 -16
  17. package/dist/config.js.map +0 -1
  18. package/dist/entrypoints/cli.d.ts +0 -1
  19. package/dist/entrypoints/cli.js +0 -12
  20. package/dist/entrypoints/cli.js.map +0 -1
  21. package/dist/entrypoints/main.d.ts +0 -5
  22. package/dist/entrypoints/main.js +0 -248
  23. package/dist/entrypoints/main.js.map +0 -1
  24. package/dist/entrypoints/thread.d.ts +0 -16
  25. package/dist/entrypoints/thread.js +0 -182
  26. package/dist/entrypoints/thread.js.map +0 -1
  27. package/dist/entrypoints/worker.d.ts +0 -9
  28. package/dist/entrypoints/worker.js +0 -143
  29. package/dist/entrypoints/worker.js.map +0 -1
  30. package/dist/resolver.d.ts +0 -2
  31. package/dist/resolver.js +0 -7
  32. package/dist/resolver.js.map +0 -1
  33. package/dist/runtime/application/index.d.ts +0 -1
  34. package/dist/runtime/application/index.js +0 -2
  35. package/dist/runtime/application/index.js.map +0 -1
  36. package/dist/runtime/constants.d.ts +0 -8
  37. package/dist/runtime/constants.js +0 -5
  38. package/dist/runtime/constants.js.map +0 -1
  39. package/dist/runtime/enums.d.ts +0 -10
  40. package/dist/runtime/enums.js +0 -13
  41. package/dist/runtime/enums.js.map +0 -1
  42. package/dist/runtime/hooks.d.ts +0 -1
  43. package/dist/runtime/hooks.js +0 -2
  44. package/dist/runtime/hooks.js.map +0 -1
  45. package/dist/runtime/index.d.ts +0 -28
  46. package/dist/runtime/index.js +0 -29
  47. package/dist/runtime/index.js.map +0 -1
  48. package/dist/runtime/injectables.d.ts +0 -69
  49. package/dist/runtime/injectables.js +0 -40
  50. package/dist/runtime/injectables.js.map +0 -1
  51. package/dist/runtime/jobs/job.d.ts +0 -146
  52. package/dist/runtime/jobs/job.js +0 -89
  53. package/dist/runtime/jobs/job.js.map +0 -1
  54. package/dist/runtime/jobs/manager.d.ts +0 -131
  55. package/dist/runtime/jobs/manager.js +0 -309
  56. package/dist/runtime/jobs/manager.js.map +0 -1
  57. package/dist/runtime/jobs/router.d.ts +0 -296
  58. package/dist/runtime/jobs/router.js +0 -458
  59. package/dist/runtime/jobs/router.js.map +0 -1
  60. package/dist/runtime/jobs/runner.d.ts +0 -103
  61. package/dist/runtime/jobs/runner.js +0 -425
  62. package/dist/runtime/jobs/runner.js.map +0 -1
  63. package/dist/runtime/jobs/step.d.ts +0 -26
  64. package/dist/runtime/jobs/step.js +0 -18
  65. package/dist/runtime/jobs/step.js.map +0 -1
  66. package/dist/runtime/jobs/types.d.ts +0 -86
  67. package/dist/runtime/jobs/types.js +0 -5
  68. package/dist/runtime/jobs/types.js.map +0 -1
  69. package/dist/runtime/metrics/metric.d.ts +0 -8
  70. package/dist/runtime/metrics/metric.js +0 -11
  71. package/dist/runtime/metrics/metric.js.map +0 -1
  72. package/dist/runtime/metrics/registry.d.ts +0 -3
  73. package/dist/runtime/metrics/registry.js +0 -5
  74. package/dist/runtime/metrics/registry.js.map +0 -1
  75. package/dist/runtime/metrics/server.d.ts +0 -7
  76. package/dist/runtime/metrics/server.js +0 -53
  77. package/dist/runtime/metrics/server.js.map +0 -1
  78. package/dist/runtime/plugin.d.ts +0 -2
  79. package/dist/runtime/plugin.js +0 -2
  80. package/dist/runtime/plugin.js.map +0 -1
  81. package/dist/runtime/runtime.d.ts +0 -27
  82. package/dist/runtime/runtime.js +0 -77
  83. package/dist/runtime/runtime.js.map +0 -1
  84. package/dist/runtime/scheduler/index.d.ts +0 -22
  85. package/dist/runtime/scheduler/index.js +0 -20
  86. package/dist/runtime/scheduler/index.js.map +0 -1
  87. package/dist/runtime/server/applications.d.ts +0 -91
  88. package/dist/runtime/server/applications.js +0 -171
  89. package/dist/runtime/server/applications.js.map +0 -1
  90. package/dist/runtime/server/config.d.ts +0 -148
  91. package/dist/runtime/server/config.js +0 -33
  92. package/dist/runtime/server/config.js.map +0 -1
  93. package/dist/runtime/server/environment.d.ts +0 -43
  94. package/dist/runtime/server/environment.js +0 -33
  95. package/dist/runtime/server/environment.js.map +0 -1
  96. package/dist/runtime/server/error-policy.d.ts +0 -62
  97. package/dist/runtime/server/error-policy.js +0 -73
  98. package/dist/runtime/server/error-policy.js.map +0 -1
  99. package/dist/runtime/server/hmr-coordinator.d.ts +0 -37
  100. package/dist/runtime/server/hmr-coordinator.js +0 -94
  101. package/dist/runtime/server/hmr-coordinator.js.map +0 -1
  102. package/dist/runtime/server/jobs.d.ts +0 -54
  103. package/dist/runtime/server/jobs.js +0 -176
  104. package/dist/runtime/server/jobs.js.map +0 -1
  105. package/dist/runtime/server/lifecycle.d.ts +0 -85
  106. package/dist/runtime/server/lifecycle.js +0 -177
  107. package/dist/runtime/server/lifecycle.js.map +0 -1
  108. package/dist/runtime/server/managed-worker.d.ts +0 -158
  109. package/dist/runtime/server/managed-worker.js +0 -420
  110. package/dist/runtime/server/managed-worker.js.map +0 -1
  111. package/dist/runtime/server/pool-manager.d.ts +0 -85
  112. package/dist/runtime/server/pool-manager.js +0 -129
  113. package/dist/runtime/server/pool-manager.js.map +0 -1
  114. package/dist/runtime/server/proxy.d.ts +0 -21
  115. package/dist/runtime/server/proxy.js +0 -76
  116. package/dist/runtime/server/proxy.js.map +0 -1
  117. package/dist/runtime/server/server.d.ts +0 -60
  118. package/dist/runtime/server/server.js +0 -163
  119. package/dist/runtime/server/server.js.map +0 -1
  120. package/dist/runtime/server/types.d.ts +0 -31
  121. package/dist/runtime/server/types.js +0 -2
  122. package/dist/runtime/server/types.js.map +0 -1
  123. package/dist/runtime/server/worker-pool.d.ts +0 -121
  124. package/dist/runtime/server/worker-pool.js +0 -171
  125. package/dist/runtime/server/worker-pool.js.map +0 -1
  126. package/dist/runtime/store/index.d.ts +0 -3
  127. package/dist/runtime/store/index.js +0 -23
  128. package/dist/runtime/store/index.js.map +0 -1
  129. package/dist/runtime/subscription/manager.d.ts +0 -49
  130. package/dist/runtime/subscription/manager.js +0 -170
  131. package/dist/runtime/subscription/manager.js.map +0 -1
  132. package/dist/runtime/subscription/redis.d.ts +0 -18
  133. package/dist/runtime/subscription/redis.js +0 -119
  134. package/dist/runtime/subscription/redis.js.map +0 -1
  135. package/dist/runtime/types.d.ts +0 -95
  136. package/dist/runtime/types.js +0 -2
  137. package/dist/runtime/types.js.map +0 -1
  138. package/dist/runtime/workers/application.d.ts +0 -29
  139. package/dist/runtime/workers/application.js +0 -77
  140. package/dist/runtime/workers/application.js.map +0 -1
  141. package/dist/runtime/workers/base.d.ts +0 -14
  142. package/dist/runtime/workers/base.js +0 -41
  143. package/dist/runtime/workers/base.js.map +0 -1
  144. package/dist/runtime/workers/cli.d.ts +0 -1
  145. package/dist/runtime/workers/cli.js +0 -2
  146. package/dist/runtime/workers/cli.js.map +0 -1
  147. package/dist/runtime/workers/job.d.ts +0 -20
  148. package/dist/runtime/workers/job.js +0 -170
  149. package/dist/runtime/workers/job.js.map +0 -1
  150. package/dist/vite/builder.d.ts +0 -5
  151. package/dist/vite/builder.js +0 -79
  152. package/dist/vite/builder.js.map +0 -1
  153. package/dist/vite/config.d.ts +0 -28
  154. package/dist/vite/config.js +0 -22
  155. package/dist/vite/config.js.map +0 -1
  156. package/dist/vite/plugins.d.ts +0 -2
  157. package/dist/vite/plugins.js +0 -43
  158. package/dist/vite/plugins.js.map +0 -1
  159. package/dist/vite/runners/worker.d.ts +0 -3
  160. package/dist/vite/runners/worker.js +0 -34
  161. package/dist/vite/runners/worker.js.map +0 -1
  162. package/dist/vite/server.d.ts +0 -3
  163. package/dist/vite/server.js +0 -36
  164. package/dist/vite/server.js.map +0 -1
  165. package/dist/vite/servers/main.d.ts +0 -8
  166. package/dist/vite/servers/main.js +0 -24
  167. package/dist/vite/servers/main.js.map +0 -1
  168. package/dist/vite/servers/worker.d.ts +0 -13
  169. package/dist/vite/servers/worker.js +0 -124
  170. package/dist/vite/servers/worker.js.map +0 -1
  171. package/src/cli.ts +0 -162
  172. package/src/codegen.ts +0 -30
  173. package/src/config.ts +0 -69
  174. package/src/entrypoints/cli.ts +0 -13
  175. package/src/entrypoints/main.ts +0 -317
  176. package/src/entrypoints/thread.ts +0 -223
  177. package/src/entrypoints/worker.ts +0 -174
  178. package/src/resolver.ts +0 -7
  179. package/src/runtime/application/index.ts +0 -1
  180. package/src/runtime/constants.ts +0 -13
  181. package/src/runtime/enums.ts +0 -12
  182. package/src/runtime/hooks.ts +0 -1
  183. package/src/runtime/index.ts +0 -29
  184. package/src/runtime/injectables.ts +0 -101
  185. package/src/runtime/jobs/job.ts +0 -467
  186. package/src/runtime/jobs/manager.ts +0 -454
  187. package/src/runtime/jobs/router.ts +0 -967
  188. package/src/runtime/jobs/runner.ts +0 -583
  189. package/src/runtime/jobs/step.ts +0 -66
  190. package/src/runtime/jobs/types.ts +0 -116
  191. package/src/runtime/metrics/metric.ts +0 -18
  192. package/src/runtime/metrics/registry.ts +0 -11
  193. package/src/runtime/metrics/server.ts +0 -69
  194. package/src/runtime/plugin.ts +0 -2
  195. package/src/runtime/runtime.ts +0 -103
  196. package/src/runtime/scheduler/index.ts +0 -39
  197. package/src/runtime/server/applications.ts +0 -264
  198. package/src/runtime/server/config.ts +0 -199
  199. package/src/runtime/server/environment.ts +0 -71
  200. package/src/runtime/server/error-policy.ts +0 -132
  201. package/src/runtime/server/hmr-coordinator.ts +0 -116
  202. package/src/runtime/server/jobs.ts +0 -266
  203. package/src/runtime/server/lifecycle.ts +0 -234
  204. package/src/runtime/server/managed-worker.ts +0 -546
  205. package/src/runtime/server/pool-manager.ts +0 -187
  206. package/src/runtime/server/proxy.ts +0 -119
  207. package/src/runtime/server/server.ts +0 -218
  208. package/src/runtime/server/types.ts +0 -32
  209. package/src/runtime/server/worker-pool.ts +0 -275
  210. package/src/runtime/store/index.ts +0 -30
  211. package/src/runtime/subscription/manager.ts +0 -307
  212. package/src/runtime/subscription/redis.ts +0 -159
  213. package/src/runtime/types.ts +0 -84
  214. package/src/runtime/workers/application.ts +0 -133
  215. package/src/runtime/workers/base.ts +0 -65
  216. package/src/runtime/workers/cli.ts +0 -0
  217. package/src/runtime/workers/job.ts +0 -142
  218. package/src/vite/builder.ts +0 -94
  219. package/src/vite/config.ts +0 -45
  220. package/src/vite/plugins.ts +0 -53
  221. package/src/vite/runners/worker.ts +0 -55
  222. package/src/vite/server.ts +0 -55
  223. package/src/vite/servers/main.ts +0 -41
  224. package/src/vite/servers/worker.ts +0 -177
@@ -1,33 +0,0 @@
1
- import { kServerConfig } from '../constants.js';
2
- export function defineServer(options) {
3
- const { deploymentId, logger, commands, proxy, store, applications, subscription, metrics, } = options;
4
- let jobs;
5
- if (options.jobs) {
6
- const map = new Map();
7
- for (const job of options.jobs.jobs ?? [])
8
- map.set(job.name, job);
9
- for (const { job } of options.jobs.scheduler?.entries ?? [])
10
- map.set(job.name, job);
11
- jobs = {
12
- pools: options.jobs.pools,
13
- jobs: map,
14
- scheduler: options.jobs.scheduler,
15
- };
16
- }
17
- return Object.freeze({
18
- [kServerConfig]: true,
19
- deploymentId,
20
- logger,
21
- commands,
22
- proxy,
23
- store,
24
- applications,
25
- subscription,
26
- jobs,
27
- metrics,
28
- });
29
- }
30
- export function isServerConfig(value) {
31
- return Boolean(value?.[kServerConfig]);
32
- }
33
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/runtime/server/config.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA+I/C,MAAM,UAAU,YAAY,CAAC,OAAyB;IACpD,MAAM,EACJ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,OAAO,GACR,GAAG,OAAO,CAAA;IAEX,IAAI,IAAsC,CAAA;IAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;QACrC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjE,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE;YACzD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACxB,IAAI,GAAG;YACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YACzB,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS;SAClC,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,aAAa,CAAC,EAAE,IAAI;QACrB,YAAY;QACZ,MAAM;QACN,QAAQ;QACR,KAAK;QACL,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,IAAI;QACJ,OAAO;KACC,CAAC,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAU;IACvC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;AACxC,CAAC"}
@@ -1,43 +0,0 @@
1
- import type { ViteDevServer } from 'vite';
2
- import type { ErrorPolicy } from './error-policy.ts';
3
- import type { HMRCoordinator } from './hmr-coordinator.ts';
4
- /**
5
- * Encapsulates everything that differs between Dev and Prod environments.
6
- * This provides a clean abstraction over environment-specific behavior.
7
- */
8
- export interface RuntimeEnvironment {
9
- readonly mode: 'development' | 'production';
10
- readonly errorPolicy: ErrorPolicy;
11
- readonly hmr: HMRCoordinator | null;
12
- readonly vite: ViteDevServer | null;
13
- }
14
- /**
15
- * Options for creating a development environment.
16
- */
17
- export interface DevEnvironmentOptions {
18
- vite?: ViteDevServer;
19
- hmr?: HMRCoordinator;
20
- }
21
- /**
22
- * Creates a RuntimeEnvironment for the given mode.
23
- *
24
- * @param mode - 'development' or 'production'
25
- * @param options - Optional configuration (vite server for dev mode)
26
- */
27
- export declare function createRuntimeEnvironment(mode: 'development' | 'production', options?: DevEnvironmentOptions): RuntimeEnvironment;
28
- /**
29
- * Type guard to check if environment is development mode.
30
- */
31
- export declare function isDevEnvironment(env: RuntimeEnvironment): env is RuntimeEnvironment & {
32
- mode: 'development';
33
- hmr: HMRCoordinator | null;
34
- vite: ViteDevServer | null;
35
- };
36
- /**
37
- * Type guard to check if environment is production mode.
38
- */
39
- export declare function isProdEnvironment(env: RuntimeEnvironment): env is RuntimeEnvironment & {
40
- mode: 'production';
41
- hmr: null;
42
- vite: null;
43
- };
@@ -1,33 +0,0 @@
1
- import { getErrorPolicy } from './error-policy.js';
2
- /**
3
- * Creates a RuntimeEnvironment for the given mode.
4
- *
5
- * @param mode - 'development' or 'production'
6
- * @param options - Optional configuration (vite server for dev mode)
7
- */
8
- export function createRuntimeEnvironment(mode, options) {
9
- const errorPolicy = getErrorPolicy(mode);
10
- if (mode === 'development') {
11
- return {
12
- mode,
13
- errorPolicy,
14
- hmr: options?.hmr ?? null,
15
- vite: options?.vite ?? null,
16
- };
17
- }
18
- // Production mode - no HMR or Vite
19
- return { mode, errorPolicy, hmr: null, vite: null };
20
- }
21
- /**
22
- * Type guard to check if environment is development mode.
23
- */
24
- export function isDevEnvironment(env) {
25
- return env.mode === 'development';
26
- }
27
- /**
28
- * Type guard to check if environment is production mode.
29
- */
30
- export function isProdEnvironment(env) {
31
- return env.mode === 'production';
32
- }
33
- //# sourceMappingURL=environment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/runtime/server/environment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAqBlD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAkC,EAClC,OAA+B;IAE/B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAExC,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,WAAW;YACX,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI;YACzB,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;SAC5B,CAAA;IACH,CAAC;IAED,mCAAmC;IACnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAuB;IAMvB,OAAO,GAAG,CAAC,IAAI,KAAK,aAAa,CAAA;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAuB;IAEvB,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,CAAA;AAClC,CAAC"}
@@ -1,62 +0,0 @@
1
- import type { WorkerType } from '../enums.ts';
2
- /**
3
- * Context provided to error policy decisions about worker failures.
4
- */
5
- export interface WorkerErrorContext {
6
- workerId: string;
7
- workerType: WorkerType;
8
- consecutiveFailures: number;
9
- totalFailures: number;
10
- lastStableTime: number | null;
11
- }
12
- /**
13
- * Actions that can be taken in response to errors.
14
- */
15
- export type ErrorAction = {
16
- type: 'exit';
17
- code: number;
18
- } | {
19
- type: 'restart';
20
- delay: number;
21
- } | {
22
- type: 'wait';
23
- } | {
24
- type: 'ignore';
25
- };
26
- /**
27
- * Interface defining error handling behavior for different environments.
28
- * Dev and Prod modes have different requirements and this interface makes those explicit.
29
- */
30
- export interface ErrorPolicy {
31
- /** How to handle server startup failure */
32
- onStartupError(error: Error): ErrorAction;
33
- /** How to handle worker crash */
34
- onWorkerError(error: Error, context: WorkerErrorContext): ErrorAction;
35
- /** Delay before restarting a failed worker */
36
- getRestartDelay(consecutiveFailures: number): number;
37
- /** Whether to continue if some workers are down */
38
- readonly allowDegradedMode: boolean;
39
- }
40
- /**
41
- * Development Error Policy
42
- *
43
- * - Startup errors: Wait for HMR fix (don't exit)
44
- * - Worker errors: Restart with exponential backoff
45
- * - After 10 consecutive failures: Stop retrying, wait for HMR fix
46
- * - Stability window: Reset failure count if worker was stable for 30s+
47
- * - Degraded mode: Allowed (keep serving with partial workers)
48
- */
49
- export declare const DevErrorPolicy: ErrorPolicy;
50
- /**
51
- * Production Error Policy
52
- *
53
- * - Startup errors: Exit immediately with code 1
54
- * - Worker errors: Restart up to 3 times, then exit
55
- * - No stability window consideration (each failure counts)
56
- * - Degraded mode: Not allowed (all workers must be healthy)
57
- */
58
- export declare const ProdErrorPolicy: ErrorPolicy;
59
- /**
60
- * Get the appropriate error policy for the given mode.
61
- */
62
- export declare function getErrorPolicy(mode: 'development' | 'production'): ErrorPolicy;
@@ -1,73 +0,0 @@
1
- /**
2
- * Calculates exponential backoff delay with a cap.
3
- * @param failures - Number of consecutive failures
4
- * @param base - Base delay in ms (default: 100)
5
- * @param maxDelay - Maximum delay in ms (default: 5000)
6
- */
7
- function exponentialBackoff(failures, base = 100, maxDelay = 5000) {
8
- return Math.min(base * 2 ** Math.max(0, failures - 1), maxDelay);
9
- }
10
- /**
11
- * Time window in ms after which a worker is considered "stable".
12
- * If stable, consecutive failure count is reset on next error.
13
- */
14
- const STABILITY_WINDOW_MS = 30_000;
15
- /**
16
- * Maximum retries before giving up in dev mode.
17
- */
18
- const DEV_MAX_RETRIES = 1;
19
- /**
20
- * Maximum retries before exiting in prod mode.
21
- */
22
- const PROD_MAX_RETRIES = 3;
23
- /**
24
- * Development Error Policy
25
- *
26
- * - Startup errors: Wait for HMR fix (don't exit)
27
- * - Worker errors: Restart with exponential backoff
28
- * - After 10 consecutive failures: Stop retrying, wait for HMR fix
29
- * - Stability window: Reset failure count if worker was stable for 30s+
30
- * - Degraded mode: Allowed (keep serving with partial workers)
31
- */
32
- export const DevErrorPolicy = {
33
- onStartupError: () => ({ type: 'wait' }),
34
- onWorkerError: (_error, ctx) => {
35
- // Check if worker was stable before this failure
36
- const wasStable = ctx.lastStableTime !== null &&
37
- Date.now() - ctx.lastStableTime > STABILITY_WINDOW_MS;
38
- // Reset failure count if was stable
39
- const effectiveFailures = wasStable ? 1 : ctx.consecutiveFailures;
40
- if (effectiveFailures >= DEV_MAX_RETRIES) {
41
- return { type: 'wait' }; // Stop trying, wait for HMR fix
42
- }
43
- return { type: 'restart', delay: exponentialBackoff(effectiveFailures) };
44
- },
45
- getRestartDelay: (n) => exponentialBackoff(n),
46
- allowDegradedMode: true,
47
- };
48
- /**
49
- * Production Error Policy
50
- *
51
- * - Startup errors: Exit immediately with code 1
52
- * - Worker errors: Restart up to 3 times, then exit
53
- * - No stability window consideration (each failure counts)
54
- * - Degraded mode: Not allowed (all workers must be healthy)
55
- */
56
- export const ProdErrorPolicy = {
57
- onStartupError: () => ({ type: 'exit', code: 1 }),
58
- onWorkerError: (_error, ctx) => {
59
- if (ctx.consecutiveFailures >= PROD_MAX_RETRIES) {
60
- return { type: 'exit', code: 1 };
61
- }
62
- return { type: 'restart', delay: 1000 };
63
- },
64
- getRestartDelay: () => 1000,
65
- allowDegradedMode: false,
66
- };
67
- /**
68
- * Get the appropriate error policy for the given mode.
69
- */
70
- export function getErrorPolicy(mode) {
71
- return mode === 'development' ? DevErrorPolicy : ProdErrorPolicy;
72
- }
73
- //# sourceMappingURL=error-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-policy.js","sourceRoot":"","sources":["../../../src/runtime/server/error-policy.ts"],"names":[],"mappings":"AAwCA;;;;;GAKG;AACH,SAAS,kBAAkB,CACzB,QAAgB,EAChB,IAAI,GAAG,GAAG,EACV,QAAQ,GAAG,IAAI;IAEf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAElC;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAE1B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,iDAAiD;QACjD,MAAM,SAAS,GACb,GAAG,CAAC,cAAc,KAAK,IAAI;YAC3B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,cAAc,GAAG,mBAAmB,CAAA;QAEvD,oCAAoC;QACpC,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAA;QAEjE,IAAI,iBAAiB,IAAI,eAAe,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA,CAAC,gCAAgC;QAC1D,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,CAAA;IAC1E,CAAC;IAED,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,iBAAiB,EAAE,IAAI;CACxB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAEjD,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,GAAG,CAAC,mBAAmB,IAAI,gBAAgB,EAAE,CAAC;YAChD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;IAC3B,iBAAiB,EAAE,KAAK;CACzB,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAkC;IAElC,OAAO,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAA;AAClE,CAAC"}
@@ -1,37 +0,0 @@
1
- import type { Logger } from '@nmtjs/core';
2
- import type { ServerLifecycle } from './lifecycle.ts';
3
- /**
4
- * HMRCoordinator handles HMR (Hot Module Replacement) with proper supersede logic.
5
- *
6
- * When a reload is in progress and another HMR event arrives, the pending reload
7
- * is superseded by the latest - only the most recent config is applied.
8
- *
9
- * This component is only used in development mode.
10
- */
11
- export declare class HMRCoordinator {
12
- private readonly lifecycle;
13
- /** Currently executing reload, if any */
14
- private active;
15
- /** Pending reload - only the latest request is kept */
16
- private pendingResolvers;
17
- /** Whether a reload is pending after the current one completes */
18
- private hasPending;
19
- private logger;
20
- constructor(lifecycle: ServerLifecycle, logger: Logger);
21
- /**
22
- * Schedule a reload. If a reload is already in progress, supersedes any pending reload.
23
- *
24
- * @returns Promise that resolves when this reload completes (or is superseded)
25
- */
26
- scheduleReload(): Promise<void>;
27
- private executeReload;
28
- private doReload;
29
- /**
30
- * Check if a reload is currently in progress.
31
- */
32
- get isReloading(): boolean;
33
- /**
34
- * Check if there's a pending reload waiting.
35
- */
36
- get isPending(): boolean;
37
- }
@@ -1,94 +0,0 @@
1
- /**
2
- * HMRCoordinator handles HMR (Hot Module Replacement) with proper supersede logic.
3
- *
4
- * When a reload is in progress and another HMR event arrives, the pending reload
5
- * is superseded by the latest - only the most recent config is applied.
6
- *
7
- * This component is only used in development mode.
8
- */
9
- export class HMRCoordinator {
10
- lifecycle;
11
- /** Currently executing reload, if any */
12
- active = null;
13
- /** Pending reload - only the latest request is kept */
14
- pendingResolvers = null;
15
- /** Whether a reload is pending after the current one completes */
16
- hasPending = false;
17
- logger;
18
- constructor(lifecycle, logger) {
19
- this.lifecycle = lifecycle;
20
- this.logger = logger.child({ component: 'HMRCoordinator' });
21
- }
22
- /**
23
- * Schedule a reload. If a reload is already in progress, supersedes any pending reload.
24
- *
25
- * @returns Promise that resolves when this reload completes (or is superseded)
26
- */
27
- async scheduleReload() {
28
- // If no active reload, execute immediately
29
- if (!this.active) {
30
- return this.executeReload();
31
- }
32
- // Supersede any existing pending reload - resolve previous waiter
33
- if (this.pendingResolvers) {
34
- this.logger.debug('Superseding pending reload with new request');
35
- this.pendingResolvers.resolve();
36
- }
37
- // Mark that we have a pending reload
38
- this.hasPending = true;
39
- // Create new pending promise for this caller
40
- return new Promise((resolve, reject) => {
41
- this.pendingResolvers = { resolve, reject };
42
- });
43
- }
44
- /**
45
- * Execute a reload, handling the pending queue.
46
- */
47
- async executeReload() {
48
- this.logger.debug('HMR reload starting');
49
- this.active = this.doReload();
50
- try {
51
- await this.active;
52
- this.logger.debug('HMR reload complete');
53
- }
54
- finally {
55
- this.active = null;
56
- // If there's a pending reload, execute it now
57
- if (this.hasPending && this.pendingResolvers) {
58
- const { resolve, reject } = this.pendingResolvers;
59
- this.pendingResolvers = null;
60
- this.hasPending = false;
61
- this.executeReload().then(resolve, reject);
62
- }
63
- }
64
- }
65
- /**
66
- * Perform the actual reload via the lifecycle.
67
- */
68
- async doReload() {
69
- // Check if lifecycle can reload
70
- if (this.lifecycle.canReload) {
71
- await this.lifecycle.reload();
72
- }
73
- else if (this.lifecycle.canStart) {
74
- // If in failed/idle state, try to start
75
- await this.lifecycle.start();
76
- }
77
- else {
78
- this.logger.warn({ state: this.lifecycle.currentState }, 'Cannot reload in current state');
79
- }
80
- }
81
- /**
82
- * Check if a reload is currently in progress.
83
- */
84
- get isReloading() {
85
- return this.active !== null;
86
- }
87
- /**
88
- * Check if there's a pending reload waiting.
89
- */
90
- get isPending() {
91
- return this.hasPending;
92
- }
93
- }
94
- //# sourceMappingURL=hmr-coordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hmr-coordinator.js","sourceRoot":"","sources":["../../../src/runtime/server/hmr-coordinator.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IAgBN,SAAS;IAf5B,yCAAyC;IACjC,MAAM,GAAyB,IAAI,CAAA;IAE3C,uDAAuD;IAC/C,gBAAgB,GAGb,IAAI,CAAA;IAEf,kEAAkE;IAC1D,UAAU,GAAG,KAAK,CAAA;IAElB,MAAM,CAAQ;IAEtB,YACmB,SAA0B,EAC3C,MAAc;yBADG,SAAS;QAG1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc;QAClB,2CAA2C;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;QAC7B,CAAC;QAED,kEAAkE;QAClE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAChE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAA;QACjC,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAEtB,6CAA6C;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAExC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAA;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC1C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAElB,8CAA8C;YAC9C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;gBACjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;gBAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;gBACvB,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ;QACpB,gCAAgC;QAChC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACnC,wCAAwC;YACxC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EACtC,gCAAgC,CACjC,CAAA;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF"}
@@ -1,54 +0,0 @@
1
- import type { Logger } from '@nmtjs/core';
2
- import { Worker } from 'bullmq';
3
- import type { AnyJob } from '../jobs/job.ts';
4
- import type { Store } from '../types.ts';
5
- import type { ServerConfig } from './config.ts';
6
- import type { ErrorPolicy } from './error-policy.ts';
7
- import type { ApplicationServerWorkerConfig } from './types.ts';
8
- import type { ManagedWorkerFactory, WorkerPoolFactory } from './worker-pool.ts';
9
- import { JobRunnersPool } from './worker-pool.ts';
10
- /**
11
- * ApplicationServerJobs manages job worker pools and BullMQ queue workers.
12
- *
13
- * Changes from the old Pool-based implementation:
14
- * - Uses JobRunnersPool (extends WorkerPool) for worker management
15
- * - Uses ManagedWorker for restart logic and state tracking
16
- * - Integrates with ErrorPolicy for restart decisions
17
- * - Proper health tracking per job pool
18
- */
19
- export declare class ApplicationServerJobs {
20
- readonly params: {
21
- logger: Logger;
22
- serverConfig: ServerConfig;
23
- workerConfig: ApplicationServerWorkerConfig;
24
- store: Store;
25
- errorPolicy: ErrorPolicy;
26
- workerFactory: ManagedWorkerFactory;
27
- poolFactory: WorkerPoolFactory;
28
- };
29
- /**
30
- * BullMQ workers - one per job (dedicated queues)
31
- */
32
- queueWorkers: Set<Worker<any, any, string>>;
33
- jobs: Map<string, AnyJob>;
34
- /**
35
- * Shared resource pools by configured pool name.
36
- * All jobs using the same pool name share the same pool for resource management.
37
- */
38
- protected pools: Map<string, JobRunnersPool>;
39
- constructor(params: {
40
- logger: Logger;
41
- serverConfig: ServerConfig;
42
- workerConfig: ApplicationServerWorkerConfig;
43
- store: Store;
44
- errorPolicy: ErrorPolicy;
45
- workerFactory: ManagedWorkerFactory;
46
- poolFactory: WorkerPoolFactory;
47
- });
48
- start(): Promise<void>;
49
- stop(): Promise<void>;
50
- /**
51
- * Get a job pool by name.
52
- */
53
- getPool(poolName: string): JobRunnersPool | undefined;
54
- }
@@ -1,176 +0,0 @@
1
- import { inspect } from 'node:util';
2
- import { UnrecoverableError, Worker } from 'bullmq';
3
- import { WorkerType } from '../enums.js';
4
- import { getJobQueueName } from '../jobs/manager.js';
5
- import { JobRunnersPool } from './worker-pool.js';
6
- function enrichBullMqErrorStack(error) {
7
- const normalized = error instanceof Error
8
- ? error
9
- : new Error(typeof error === 'string' ? error : inspect(error, false, 20, false));
10
- normalized.stack = inspect(normalized, false, 20, false);
11
- return normalized;
12
- }
13
- function getJobsByPool(jobs) {
14
- const jobsByPool = new Map();
15
- for (const job of jobs) {
16
- const poolJobs = jobsByPool.get(job.options.pool);
17
- if (poolJobs) {
18
- poolJobs.push(job);
19
- }
20
- else {
21
- jobsByPool.set(job.options.pool, [job]);
22
- }
23
- }
24
- return jobsByPool;
25
- }
26
- function assertActiveJobPoolsConfigured(jobsByPool, pools) {
27
- const missingPoolMessages = [...jobsByPool]
28
- .filter(([poolName]) => !pools[poolName])
29
- .flatMap(([poolName, jobs]) => jobs.map((job) => `${job.name} -> ${poolName}`));
30
- if (missingPoolMessages.length > 0) {
31
- throw new Error(`Invalid jobs pool configuration: missing pool config for jobs: ${missingPoolMessages.join(', ')}`);
32
- }
33
- }
34
- /**
35
- * ApplicationServerJobs manages job worker pools and BullMQ queue workers.
36
- *
37
- * Changes from the old Pool-based implementation:
38
- * - Uses JobRunnersPool (extends WorkerPool) for worker management
39
- * - Uses ManagedWorker for restart logic and state tracking
40
- * - Integrates with ErrorPolicy for restart decisions
41
- * - Proper health tracking per job pool
42
- */
43
- export class ApplicationServerJobs {
44
- params;
45
- /**
46
- * BullMQ workers - one per job (dedicated queues)
47
- */
48
- queueWorkers = new Set();
49
- jobs;
50
- /**
51
- * Shared resource pools by configured pool name.
52
- * All jobs using the same pool name share the same pool for resource management.
53
- */
54
- pools = new Map();
55
- constructor(params) {
56
- this.params = params;
57
- this.jobs = params.serverConfig.jobs
58
- ? params.serverConfig.jobs.jobs
59
- : new Map();
60
- }
61
- async start() {
62
- const { logger, serverConfig, workerConfig, store, errorPolicy, workerFactory, } = this.params;
63
- const jobsConfig = serverConfig.jobs;
64
- if (!jobsConfig) {
65
- logger.debug('Jobs are not configured, skipping');
66
- return;
67
- }
68
- const jobsByPool = getJobsByPool(this.jobs.values());
69
- assertActiveJobPoolsConfigured(jobsByPool, jobsConfig.pools);
70
- // Step 1: Initialize shared resource pools used by active jobs
71
- for (const poolName of jobsByPool.keys()) {
72
- const poolConfig = jobsConfig.pools[poolName];
73
- // Create a JobRunnersPool for this pool
74
- const config = {
75
- name: `job-pool-${poolName}`,
76
- workerType: WorkerType.Job,
77
- path: workerConfig.path,
78
- workerData: { ...workerConfig.workerData },
79
- onWorker: workerConfig.worker,
80
- };
81
- const pool = new JobRunnersPool(config, errorPolicy, workerFactory, logger);
82
- // Add workers to the pool
83
- for (let i = 0; i < poolConfig.threads; i++) {
84
- pool.add({ runtime: { type: 'jobs', jobWorkerPool: poolName } }, i);
85
- }
86
- await pool.startAll();
87
- this.pools.set(poolName, pool);
88
- logger.info({
89
- pool: poolName,
90
- threads: poolConfig.threads,
91
- jobsPerThread: poolConfig.jobs,
92
- }, 'Job runner pool started');
93
- }
94
- // Step 2: Create a dedicated BullMQ Worker for each job
95
- // Calculate how many jobs use each pool for fair concurrency distribution
96
- for (const job of this.jobs.values()) {
97
- const queueName = getJobQueueName(job);
98
- const poolName = job.options.pool;
99
- const pool = this.pools.get(poolName);
100
- if (!pool) {
101
- throw new Error(`Job "${job.name}" pool "${poolName}" is not started`);
102
- }
103
- const poolConfig = jobsConfig.pools[poolName];
104
- const poolCapacity = poolConfig.threads * poolConfig.jobs;
105
- const jobCountInPool = jobsByPool.get(poolName)?.length ?? 1;
106
- // Use job-specific concurrency if provided, otherwise distribute pool capacity evenly
107
- const defaultConcurrency = Math.max(1, Math.floor(poolCapacity / jobCountInPool));
108
- const concurrency = job.options.concurrency ?? defaultConcurrency;
109
- const queueWorker = new Worker(queueName, async (bullJob) => {
110
- const task = {
111
- jobId: String(bullJob.id ?? ''),
112
- jobName: bullJob.name,
113
- data: bullJob.data,
114
- };
115
- const result = await pool.run(task);
116
- switch (result.type) {
117
- case 'success':
118
- return result.result;
119
- case 'unrecoverable_error': {
120
- const error = enrichBullMqErrorStack(result.error);
121
- const unrecoverableError = new UnrecoverableError(error.message);
122
- unrecoverableError.stack = error.stack;
123
- throw unrecoverableError;
124
- }
125
- case 'job_not_found':
126
- case 'queue_job_not_found':
127
- throw new UnrecoverableError(result.type);
128
- case 'error':
129
- console.error(result.error);
130
- throw enrichBullMqErrorStack(result.error);
131
- default:
132
- throw new UnrecoverableError('Unknown job task result');
133
- }
134
- }, { connection: store, concurrency });
135
- this.queueWorkers.add(queueWorker);
136
- logger.info({ job: job.name, queue: queueName, pool: poolName, concurrency }, 'Job queue worker started');
137
- }
138
- }
139
- async stop() {
140
- const { logger } = this.params;
141
- // Force-close BullMQ workers immediately — stops accepting new jobs
142
- // and doesn't wait for in-flight processor callbacks.
143
- // We must use force=true on the first call because BullMQ caches the
144
- // closing promise: a second call with force=true returns the original
145
- // (non-force) promise, making it ineffective.
146
- // Interrupted jobs will be retried via BullMQ's stalled job mechanism.
147
- await Promise.all([...this.queueWorkers].map(async (worker) => {
148
- try {
149
- await worker.close(true);
150
- }
151
- catch (error) {
152
- logger.warn({ error }, 'Failed to close BullMQ worker');
153
- }
154
- }));
155
- this.queueWorkers.clear();
156
- // Stop job runner thread pools — sends 'stop' to threads, waits for
157
- // graceful exit with timeout, force-kills if needed.
158
- // Pending pool.run() calls will be rejected by ManagedWorker.stop().
159
- await Promise.all(Array.from(this.pools.values()).map(async (pool) => {
160
- try {
161
- await pool.stopAll();
162
- }
163
- catch (error) {
164
- logger.warn({ error }, 'Failed to stop job pool');
165
- }
166
- }));
167
- this.pools.clear();
168
- }
169
- /**
170
- * Get a job pool by name.
171
- */
172
- getPool(poolName) {
173
- return this.pools.get(poolName);
174
- }
175
- }
176
- //# sourceMappingURL=jobs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../src/runtime/server/jobs.ts"],"names":[],"mappings":"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"}