hive-cycle 0.2.0 → 0.2.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.
package/README.md CHANGED
@@ -11,6 +11,7 @@ A modular, type-safe TypeScript framework for running background task queues. `H
11
11
  - **Modular**: Abstract `QueueAdapter` allowing you to swap the default In-Memory queue for Redis, RabbitMQ, or SQL/NoSQL databases.
12
12
  - **Concurrency Control**: Limit how many tasks are processed simultaneously.
13
13
  - **Recurring Tasks**: Built-in support for tasks that automatically requeue themselves (cron-like behavior).
14
+ - **Health Monitoring**: Optional HTTP endpoint to monitor service health and metrics.
14
15
 
15
16
  ## Installation
16
17
 
@@ -82,7 +83,7 @@ await app.enqueue(
82
83
  {
83
84
  requeue: true,
84
85
  requeueDelay: 5000, // Run again 5 seconds after completion
85
- }
86
+ },
86
87
  );
87
88
  ```
88
89
 
@@ -101,11 +102,32 @@ const app = new HiveCycle({
101
102
  // Custom logger (defaults to console)
102
103
  logger: myLogger,
103
104
 
105
+ // Start a health check server on this port
106
+ healthPort: 3000,
107
+
104
108
  // Custom Queue Adapter (defaults to MemoryQueue)
105
109
  queue: new RedisQueueAdapter(),
106
110
  });
107
111
  ```
108
112
 
113
+ ### Health Check
114
+
115
+ If you provide a `healthPort` in the configuration, an HTTP server will start and expose a `/health` endpoint.
116
+
117
+ ```bash
118
+ curl http://localhost:3000/health
119
+ ```
120
+
121
+ **Response:**
122
+
123
+ ```json
124
+ {
125
+ "status": "ok",
126
+ "running": true,
127
+ "activeCount": 2
128
+ }
129
+ ```
130
+
109
131
  ### Custom Queue Adapter
110
132
 
111
133
  To use a persistent store (like Redis), implement the `QueueAdapter` interface.
@@ -29,3 +29,4 @@ export declare class HiveCycle<TaskMap extends Record<string, any> = Record<stri
29
29
  private handleTask;
30
30
  private sleep;
31
31
  }
32
+ //# sourceMappingURL=HiveCycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiveCycle.d.ts","sourceRoot":"","sources":["../../src/HiveCycle.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEhB,IAAI,EACJ,WAAW,EAEZ,MAAM,SAAS,CAAC;AAcjB,qBAAa,SAAS,CACpB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEzD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAEb;IACF,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,GAAE,gBAAqB;IAW1C;;OAEG;IACI,eAAe,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EACrD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAC/B,IAAI;IAIP;;OAEG;IACU,OAAO,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EACnD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACtB,OAAO,CAAC,MAAM,CAAC;IAYlB;;OAEG;IACI,KAAK,IAAI,IAAI;IAYpB;;OAEG;IACI,IAAI,IAAI,IAAI;IAMnB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,gBAAgB;YAOV,IAAI;YA0BJ,UAAU;IAyCxB,OAAO,CAAC,KAAK;CAGd"}
@@ -7,3 +7,4 @@ export declare class MemoryQueue implements QueueAdapter {
7
7
  acknowledge(taskId: string): Promise<void>;
8
8
  reject(taskId: string, error?: Error): Promise<void>;
9
9
  }
10
+ //# sourceMappingURL=MemoryQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryQueue.d.ts","sourceRoot":"","sources":["../../src/MemoryQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,UAAU,CAAgC;IAE5C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ/B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ3D"}
@@ -1,3 +1,4 @@
1
1
  export * from "./types";
2
2
  export * from "./HiveCycle";
3
3
  export * from "./MemoryQueue";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -44,3 +44,4 @@ export interface Logger {
44
44
  error(message: string, ...args: any[]): void;
45
45
  warn(message: string, ...args: any[]): void;
46
46
  }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hive-cycle",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "A modular TypeScript framework for background task processing",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",