@memberjunction/queue 3.4.0 → 4.1.0

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
@@ -1,17 +1,31 @@
1
1
  # @memberjunction/queue
2
2
 
3
- A flexible queue management system for MemberJunction applications that enables background task processing, job scheduling, and asynchronous execution with database persistence.
3
+ A server-side queue management framework for MemberJunction applications that provides database-backed task persistence, concurrent processing, and heartbeat monitoring.
4
4
 
5
5
  ## Overview
6
6
 
7
- The `@memberjunction/queue` package provides a robust framework for implementing persistent queues in MemberJunction applications. It offers:
8
-
9
- - Database-backed task persistence
10
- - Automatic queue creation and management
11
- - Concurrent task processing with configurable limits
12
- - Heartbeat monitoring for process health
13
- - Type-safe task definitions
14
- - Extensible queue implementations
7
+ The `@memberjunction/queue` package delivers a robust queuing system for background task processing. It manages task lifecycle from creation through execution, with automatic queue provisioning, configurable concurrency limits, and process-level health tracking.
8
+
9
+ ```mermaid
10
+ graph TD
11
+ A["QueueManager<br/>(Singleton)"] --> B["QueueBase<br/>(Abstract)"]
12
+ B --> C["AIActionQueue"]
13
+ B --> D["EntityAIActionQueue"]
14
+ B --> E["Custom Queue<br/>(Your Implementation)"]
15
+
16
+ A --> F["Queue Types<br/>(Database Metadata)"]
17
+ A --> G["Queue Records<br/>(Process Tracking)"]
18
+ B --> H["TaskBase<br/>(Individual Tasks)"]
19
+
20
+ style A fill:#2d6a9f,stroke:#1a4971,color:#fff
21
+ style B fill:#7c5295,stroke:#563a6b,color:#fff
22
+ style C fill:#2d8659,stroke:#1a5c3a,color:#fff
23
+ style D fill:#2d8659,stroke:#1a5c3a,color:#fff
24
+ style E fill:#b8762f,stroke:#8a5722,color:#fff
25
+ style F fill:#2d6a9f,stroke:#1a4971,color:#fff
26
+ style G fill:#2d6a9f,stroke:#1a4971,color:#fff
27
+ style H fill:#7c5295,stroke:#563a6b,color:#fff
28
+ ```
15
29
 
16
30
  ## Installation
17
31
 
@@ -19,319 +33,172 @@ The `@memberjunction/queue` package provides a robust framework for implementing
19
33
  npm install @memberjunction/queue
20
34
  ```
21
35
 
22
- ## Dependencies
23
-
24
- This package requires the following MemberJunction packages:
25
-
26
- - `@memberjunction/core` - Core functionality and entity management
27
- - `@memberjunction/global` - Global utilities and class registration
28
- - `@memberjunction/core-entities` - Entity type definitions
29
- - `@memberjunction/ai` - AI functionality (for AI-related queues)
30
- - `@memberjunction/aiengine` - AI Engine integration
31
-
32
- Additional dependencies:
33
- - `uuid` - For generating unique identifiers
34
-
35
- ## Core Components
36
-
37
- ### TaskBase
36
+ ## Architecture
38
37
 
39
- The `TaskBase` class represents an individual task in a queue:
38
+ ### Task Lifecycle
40
39
 
41
- ```typescript
42
- export class TaskBase {
43
- constructor(
44
- taskRecord: QueueTaskEntity,
45
- data: any,
46
- options: TaskOptions
47
- )
48
-
49
- // Properties
50
- ID: string // Unique task identifier
51
- Status: TaskStatus // Current task status
52
- Data: any // Task payload data
53
- Options: TaskOptions // Task configuration
54
- TaskRecord: QueueTaskEntity // Database entity
55
- }
40
+ ```mermaid
41
+ stateDiagram-v2
42
+ [*] --> Pending: Task Created
43
+ Pending --> InProgress: Queue Picks Up
44
+ InProgress --> Complete: ProcessTask Succeeds
45
+ InProgress --> Failed: ProcessTask Fails
46
+ Pending --> Cancelled: External Cancel
56
47
  ```
57
48
 
58
- ### TaskStatus
59
-
60
- Available task statuses:
61
-
62
- ```typescript
63
- export const TaskStatus = {
64
- Pending: 'Pending',
65
- InProgress: 'InProgress',
66
- Complete: 'Complete',
67
- Failed: 'Failed',
68
- Cancelled: 'Cancelled',
69
- } as const;
49
+ ### Processing Flow
50
+
51
+ ```mermaid
52
+ sequenceDiagram
53
+ participant Client
54
+ participant QM as QueueManager
55
+ participant QB as QueueBase
56
+ participant DB as Database
57
+
58
+ Client->>QM: AddTask(type, data, options)
59
+ QM->>QM: Find or create queue for type
60
+ QM->>DB: Save QueueTask record (Pending)
61
+ QM->>QB: AddTask(taskBase)
62
+ QB->>QB: ProcessTasks() loop (250ms interval)
63
+ QB->>QB: Check concurrency (max 3 tasks)
64
+ QB->>QB: StartTask(task)
65
+ QB->>QB: ProcessTask(task) [abstract]
66
+ QB->>DB: Update QueueTask status
67
+ QB-->>Client: TaskResult
70
68
  ```
71
69
 
72
- ### QueueBase
73
-
74
- The abstract `QueueBase` class serves as the foundation for all queue implementations:
75
-
76
- ```typescript
77
- export abstract class QueueBase {
78
- constructor(
79
- QueueRecord: QueueEntity,
80
- QueueTypeID: string,
81
- ContextUser: UserInfo
82
- )
83
-
84
- // Public methods
85
- AddTask(task: TaskBase): boolean
86
- FindTask(ID: string): TaskBase
87
-
88
- // Protected abstract method to implement
89
- protected abstract ProcessTask(
90
- task: TaskBase,
91
- contextUser: UserInfo
92
- ): Promise<TaskResult>
93
- }
94
- ```
70
+ ## Core Components
95
71
 
96
72
  ### QueueManager
97
73
 
98
- The `QueueManager` is a singleton that manages all active queues:
74
+ The `QueueManager` is a singleton that coordinates all active queues. It auto-creates queue instances per type and captures process-level metadata (PID, hostname, network interfaces) for monitoring.
99
75
 
100
76
  ```typescript
101
- export class QueueManager {
102
- // Singleton access
103
- static get Instance(): QueueManager
104
-
105
- // Static methods
106
- static async Config(contextUser: UserInfo): Promise<void>
107
- static async AddTask(
108
- QueueType: string,
109
- data: any,
110
- options: any,
111
- contextUser: UserInfo
112
- ): Promise<TaskBase | undefined>
113
-
114
- // Instance methods
115
- async AddTask(
116
- QueueTypeID: string,
117
- data: any,
118
- options: any,
119
- contextUser: UserInfo
120
- ): Promise<TaskBase | undefined>
121
- }
122
- ```
77
+ import { QueueManager } from '@memberjunction/queue';
123
78
 
124
- ### TaskResult
79
+ // Initialize (typically at application startup)
80
+ await QueueManager.Config(contextUser);
125
81
 
126
- Structure returned by task processing:
82
+ // Add a task by queue type name
83
+ const task = await QueueManager.AddTask(
84
+ 'Email Notification',
85
+ { recipient: 'user@example.com', subject: 'Welcome' },
86
+ { priority: 1 },
87
+ contextUser
88
+ );
127
89
 
128
- ```typescript
129
- export class TaskResult {
130
- success: boolean // Whether task completed successfully
131
- userMessage: string // User-friendly message
132
- output: any // Task output data
133
- exception: any // Exception details if failed
90
+ if (task) {
91
+ console.log(`Task created: ${task.ID}`);
134
92
  }
135
93
  ```
136
94
 
137
- ## Usage Examples
138
-
139
- ### Basic Queue Implementation
95
+ ### QueueBase
140
96
 
141
- Create a custom queue by extending `QueueBase`:
97
+ Abstract base class for all queue implementations. Subclasses implement `ProcessTask()` to define task execution logic.
142
98
 
143
99
  ```typescript
144
100
  import { QueueBase, TaskBase, TaskResult } from '@memberjunction/queue';
145
101
  import { RegisterClass } from '@memberjunction/global';
146
102
  import { UserInfo } from '@memberjunction/core';
147
103
 
148
- // Register your queue with a specific queue type name
149
104
  @RegisterClass(QueueBase, 'Email Notification')
150
105
  export class EmailNotificationQueue extends QueueBase {
151
106
  protected async ProcessTask(
152
- task: TaskBase,
107
+ task: TaskBase,
153
108
  contextUser: UserInfo
154
109
  ): Promise<TaskResult> {
155
- try {
156
- // Extract task data
157
- const { recipient, subject, body } = task.Data;
158
-
159
- // Implement your email sending logic here
160
- console.log(`Sending email to ${recipient}`);
161
- console.log(`Subject: ${subject}`);
162
-
163
- // Simulate email sending
164
- await this.sendEmail(recipient, subject, body);
165
-
166
- // Return success result
167
- return {
168
- success: true,
169
- userMessage: 'Email sent successfully',
170
- output: { sentAt: new Date() },
171
- exception: null
172
- };
173
- } catch (error) {
174
- // Return failure result
175
- return {
176
- success: false,
177
- userMessage: `Failed to send email: ${error.message}`,
178
- output: null,
179
- exception: error
180
- };
181
- }
182
- }
183
-
184
- private async sendEmail(to: string, subject: string, body: string) {
185
- // Your email service integration here
110
+ const { recipient, subject, body } = task.Data;
111
+ await sendEmail(recipient, subject, body);
112
+ return {
113
+ success: true,
114
+ userMessage: 'Email sent successfully',
115
+ output: { sentAt: new Date() },
116
+ exception: null
117
+ };
186
118
  }
187
119
  }
188
120
  ```
189
121
 
190
- ### Adding Tasks to Queue
122
+ ### TaskBase
191
123
 
192
- ```typescript
193
- import { QueueManager } from '@memberjunction/queue';
194
- import { UserInfo } from '@memberjunction/core';
124
+ Represents an individual task with its payload, options, and database-backed record.
195
125
 
196
- // Initialize queue manager (typically done once at app startup)
197
- await QueueManager.Config(contextUser);
126
+ | Property | Type | Description |
127
+ |----------|------|-------------|
128
+ | `ID` | `string` | Unique task identifier from database |
129
+ | `Status` | `TaskStatus` | Current status (Pending, InProgress, Complete, Failed, Cancelled) |
130
+ | `Data` | `object` | Task payload data |
131
+ | `Options` | `TaskOptions` | Configuration (e.g., priority) |
132
+ | `TaskRecord` | `QueueTaskEntity` | Underlying database entity |
198
133
 
199
- // Add a task using queue type name
200
- const task = await QueueManager.AddTask(
201
- 'Email Notification', // Queue type name
202
- { // Task data
203
- recipient: 'user@example.com',
204
- subject: 'Welcome to MemberJunction',
205
- body: 'Thank you for joining!'
206
- },
207
- { // Task options
208
- priority: 1
209
- },
210
- contextUser
211
- );
134
+ ### TaskResult
212
135
 
213
- if (task) {
214
- console.log(`Task created with ID: ${task.ID}`);
215
- }
216
- ```
136
+ Returned by `ProcessTask()` to communicate outcome.
217
137
 
218
- ### AI Action Queue Example
138
+ | Property | Type | Description |
139
+ |----------|------|-------------|
140
+ | `success` | `boolean` | Whether the task completed successfully |
141
+ | `userMessage` | `string` | Human-readable result message |
142
+ | `output` | `object` | Task output data |
143
+ | `exception` | `object` | Error details if failed |
219
144
 
220
- The package includes built-in queues for AI operations:
145
+ ## Built-in Queues
221
146
 
222
- ```typescript
223
- import { AIActionQueue, EntityAIActionQueue } from '@memberjunction/queue';
147
+ ### AIActionQueue
148
+
149
+ Processes AI actions through the MemberJunction AI Engine.
224
150
 
225
- // These queues are automatically registered and available for use
226
- // Add an AI action task
227
- const aiTask = await QueueManager.AddTask(
151
+ ```typescript
152
+ const task = await QueueManager.AddTask(
228
153
  'AI Action',
229
- {
230
- actionName: 'GenerateText',
231
- prompt: 'Write a product description',
232
- parameters: { maxTokens: 100 }
233
- },
154
+ { actionName: 'GenerateText', prompt: 'Summarize this document' },
234
155
  {},
235
156
  contextUser
236
157
  );
158
+ ```
237
159
 
238
- // Add an entity-specific AI action
239
- const entityAITask = await QueueManager.AddTask(
160
+ ### EntityAIActionQueue
161
+
162
+ Processes entity-specific AI actions.
163
+
164
+ ```typescript
165
+ const task = await QueueManager.AddTask(
240
166
  'Entity AI Action',
241
- {
242
- entityName: 'Products',
243
- entityID: 123,
244
- actionName: 'GenerateDescription'
245
- },
167
+ { entityName: 'Products', entityID: '123', actionName: 'GenerateDescription' },
246
168
  {},
247
169
  contextUser
248
170
  );
249
171
  ```
250
172
 
251
- ## Database Schema
252
-
253
- The queue system requires the following database tables:
254
-
255
- ### Queue Types Table (`__mj.QueueType`)
256
- Stores definitions of different queue types (e.g., "Email Notification", "AI Action")
257
-
258
- ### Queues Table (`__mj.Queue`)
259
- Tracks active queue instances with process information:
260
- - Queue type reference
261
- - Process details (PID, platform, hostname)
262
- - Heartbeat timestamp
263
- - Network information
264
-
265
- ### Queue Tasks Table (`__mj.QueueTask`)
266
- Stores individual tasks:
267
- - Queue reference
268
- - Task status
269
- - Task data (JSON)
270
- - Task options (JSON)
271
- - Output and error information
272
-
273
- ## Process Management
274
-
275
- The QueueManager automatically captures process information for monitoring:
276
- - Process ID (PID)
277
- - Platform and version
278
- - Working directory
279
- - Network interfaces
280
- - Operating system details
281
- - User information
282
- - Heartbeat timestamps
283
-
284
- This information helps track queue health and enables failover scenarios.
285
-
286
173
  ## Configuration
287
174
 
288
- Queue behavior can be configured through the implementation:
175
+ Queue behavior is controlled through constructor parameters:
289
176
 
290
- ```typescript
291
- export class CustomQueue extends QueueBase {
292
- private _maxTasks = 5; // Maximum concurrent tasks
293
- private _checkInterval = 500; // Check interval in milliseconds
294
-
295
- // Override these values in your constructor
296
- constructor(QueueRecord: QueueEntity, QueueTypeID: string, ContextUser: UserInfo) {
297
- super(QueueRecord, QueueTypeID, ContextUser);
298
- // Customize queue behavior
299
- this._maxTasks = 10;
300
- this._checkInterval = 1000;
301
- }
302
- }
303
- ```
304
-
305
- ## Best Practices
306
-
307
- 1. **Task Data Structure**: Keep task data serializable as JSON
308
- 2. **Error Handling**: Always return proper TaskResult with error details
309
- 3. **Queue Registration**: Use `@RegisterClass` decorator for automatic registration
310
- 4. **Idempotency**: Design tasks to be safely retryable
311
- 5. **Resource Cleanup**: Clean up resources in finally blocks
312
- 6. **Monitoring**: Check heartbeat timestamps for queue health
313
-
314
- ## Integration with MemberJunction
177
+ | Parameter | Default | Description |
178
+ |-----------|---------|-------------|
179
+ | `_maxTasks` | `3` | Maximum concurrent tasks per queue |
180
+ | `_checkInterval` | `250` | Polling interval in milliseconds |
315
181
 
316
- The queue system integrates seamlessly with:
317
- - **Entity System**: Use entities for task data and processing
318
- - **User Context**: All operations respect user permissions
319
- - **Global Registry**: Automatic queue discovery via class registration
320
- - **AI Engine**: Built-in support for AI task processing
182
+ ## Database Schema
321
183
 
322
- ## Build & Development
184
+ The queue system persists state across three tables:
323
185
 
324
- ```bash
325
- # Build the package
326
- npm run build
186
+ | Table | Purpose |
187
+ |-------|---------|
188
+ | `__mj.QueueType` | Defines available queue types |
189
+ | `__mj.Queue` | Tracks active queue instances with process info and heartbeat |
190
+ | `__mj.QueueTask` | Stores individual tasks with status, data, and output |
327
191
 
328
- # Development mode with auto-reload
329
- npm run start
192
+ ## Dependencies
330
193
 
331
- # TypeScript compilation only
332
- npm run build
333
- ```
194
+ | Package | Purpose |
195
+ |---------|---------|
196
+ | `@memberjunction/core` | Entity management and metadata |
197
+ | `@memberjunction/global` | Class registration and global state |
198
+ | `@memberjunction/core-entities` | Queue and task entity types |
199
+ | `@memberjunction/ai` | AI functionality for built-in queues |
200
+ | `@memberjunction/aiengine` | AI Engine integration |
334
201
 
335
202
  ## License
336
203
 
337
- ISC
204
+ ISC
@@ -1,4 +1,4 @@
1
- import { QueueBase, TaskBase, TaskResult } from "../generic/QueueBase";
1
+ import { QueueBase, TaskBase, TaskResult } from "../generic/QueueBase.js";
2
2
  export declare class AIActionQueue extends QueueBase {
3
3
  protected ProcessTask(task: TaskBase): Promise<TaskResult>;
4
4
  protected ProcessGeneric(task: TaskBase, entityAIAction: boolean): Promise<TaskResult>;
@@ -1,27 +1,24 @@
1
- "use strict";
2
1
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
2
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
3
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
6
  };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.EntityAIActionQueue = exports.AIActionQueue = void 0;
10
- const QueueBase_1 = require("../generic/QueueBase");
11
- const global_1 = require("@memberjunction/global");
12
- const aiengine_1 = require("@memberjunction/aiengine");
13
- let AIActionQueue = class AIActionQueue extends QueueBase_1.QueueBase {
7
+ import { QueueBase } from "../generic/QueueBase.js";
8
+ import { RegisterClass } from '@memberjunction/global';
9
+ import { AIEngine } from '@memberjunction/aiengine';
10
+ let AIActionQueue = class AIActionQueue extends QueueBase {
14
11
  async ProcessTask(task) {
15
12
  return this.ProcessGeneric(task, false);
16
13
  }
17
14
  async ProcessGeneric(task, entityAIAction) {
18
15
  try {
19
- await aiengine_1.AIEngine.Instance.Config(false, this._contextUser);
16
+ await AIEngine.Instance.Config(false, this._contextUser);
20
17
  let result = null;
21
18
  if (entityAIAction)
22
- result = await aiengine_1.AIEngine.Instance.ExecuteEntityAIAction(task.Data);
19
+ result = await AIEngine.Instance.ExecuteEntityAIAction(task.Data);
23
20
  else
24
- result = await aiengine_1.AIEngine.Instance.ExecuteAIAction(task.Data);
21
+ result = await AIEngine.Instance.ExecuteAIAction(task.Data);
25
22
  return {
26
23
  success: result ? result.success : false,
27
24
  output: result ? (result.success ? null : result.errorMessage) : null,
@@ -39,17 +36,17 @@ let AIActionQueue = class AIActionQueue extends QueueBase_1.QueueBase {
39
36
  }
40
37
  }
41
38
  };
42
- exports.AIActionQueue = AIActionQueue;
43
- exports.AIActionQueue = AIActionQueue = __decorate([
44
- (0, global_1.RegisterClass)(QueueBase_1.QueueBase, 'AI Action')
39
+ AIActionQueue = __decorate([
40
+ RegisterClass(QueueBase, 'AI Action')
45
41
  ], AIActionQueue);
42
+ export { AIActionQueue };
46
43
  let EntityAIActionQueue = class EntityAIActionQueue extends AIActionQueue {
47
44
  async ProcessTask(task) {
48
45
  return this.ProcessGeneric(task, true);
49
46
  }
50
47
  };
51
- exports.EntityAIActionQueue = EntityAIActionQueue;
52
- exports.EntityAIActionQueue = EntityAIActionQueue = __decorate([
53
- (0, global_1.RegisterClass)(QueueBase_1.QueueBase, 'Entity AI Action', 1)
48
+ EntityAIActionQueue = __decorate([
49
+ RegisterClass(QueueBase, 'Entity AI Action', 1)
54
50
  ], EntityAIActionQueue);
51
+ export { EntityAIActionQueue };
55
52
  //# sourceMappingURL=AIActionQueue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AIActionQueue.js","sourceRoot":"","sources":["../../src/drivers/AIActionQueue.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAuE;AACvE,mDAAsD;AACtD,uDAAoD;AAG7C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,qBAAS;IAC9B,KAAK,CAAC,WAAW,CAAC,IAAc;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,IAAc,EAAE,cAAuB;QAClE,IAAI,CAAC;YACD,MAAM,mBAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,MAAM,GAAQ,IAAI,CAAC;YAEvB,IAAI,cAAc;gBACd,MAAM,GAAG,MAAM,mBAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAElE,MAAM,GAAG,MAAM,mBAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhE,OAAO;gBACH,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBACxC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;gBAChD,SAAS,EAAE,IAAI;aAClB,CAAA;QACL,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,mBAAmB,GAAG,CAAC,CAAC,OAAO;gBAC5C,SAAS,EAAE,CAAC;aACf,CAAA;QACL,CAAC;IACL,CAAC;CACJ,CAAA;AA/BY,sCAAa;wBAAb,aAAa;IADzB,IAAA,sBAAa,EAAC,qBAAS,EAAE,WAAW,CAAC;GACzB,aAAa,CA+BzB;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,aAAa;IACxC,KAAK,CAAC,WAAW,CAAC,IAAc;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;CACJ,CAAA;AAJY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,sBAAa,EAAC,qBAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;GACnC,mBAAmB,CAI/B"}
1
+ {"version":3,"file":"AIActionQueue.js","sourceRoot":"","sources":["../../src/drivers/AIActionQueue.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAG7C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,SAAS;IAC9B,KAAK,CAAC,WAAW,CAAC,IAAc;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,IAAc,EAAE,cAAuB;QAClE,IAAI,CAAC;YACD,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,MAAM,GAAQ,IAAI,CAAC;YAEvB,IAAI,cAAc;gBACd,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAElE,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhE,OAAO;gBACH,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBACxC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;gBAChD,SAAS,EAAE,IAAI;aAClB,CAAA;QACL,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,mBAAmB,GAAG,CAAC,CAAC,OAAO;gBAC5C,SAAS,EAAE,CAAC;aACf,CAAA;QACL,CAAC;IACL,CAAC;CACJ,CAAA;AA/BY,aAAa;IADzB,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC;GACzB,aAAa,CA+BzB;;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,aAAa;IACxC,KAAK,CAAC,WAAW,CAAC,IAAc;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;CACJ,CAAA;AAJY,mBAAmB;IAD/B,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;GACnC,mBAAmB,CAI/B"}
@@ -1,18 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QueueBase = exports.TaskBase = exports.TaskStatus = exports.TaskResult = void 0;
4
1
  //import { QueueTaskEntity, QueueEntity } from 'mj_generatedentities';
5
- class TaskResult {
2
+ export class TaskResult {
6
3
  }
7
- exports.TaskResult = TaskResult;
8
- exports.TaskStatus = {
4
+ export const TaskStatus = {
9
5
  Pending: 'Pending',
10
6
  InProgress: 'InProgress',
11
7
  Complete: 'Complete',
12
8
  Failed: 'Failed',
13
9
  Cancelled: 'Cancelled',
14
10
  };
15
- class TaskBase {
11
+ export class TaskBase {
16
12
  get Options() {
17
13
  return this._options;
18
14
  }
@@ -23,7 +19,7 @@ class TaskBase {
23
19
  return this._taskRecord.ID;
24
20
  }
25
21
  constructor(taskRecord, data, options) {
26
- this._status = exports.TaskStatus.Pending;
22
+ this._status = TaskStatus.Pending;
27
23
  this._taskRecord = taskRecord;
28
24
  this._options = options;
29
25
  this._data = data;
@@ -38,8 +34,7 @@ class TaskBase {
38
34
  this._status = value;
39
35
  }
40
36
  }
41
- exports.TaskBase = TaskBase;
42
- class QueueBase {
37
+ export class QueueBase {
43
38
  constructor(QueueRecord, QueueTypeID, ContextUser) {
44
39
  this._queue = [];
45
40
  this._maxTasks = 3; // move to metadata or config param
@@ -63,8 +58,8 @@ class QueueBase {
63
58
  // it will re-run itself with a timer to check for new tasks
64
59
  // this will be the main loop for the queue
65
60
  if (this._queue.length > 0) {
66
- let processing = this._queue.filter(t => t.Status === exports.TaskStatus.InProgress);
67
- let pending = this._queue.filter(t => t.Status === exports.TaskStatus.Pending);
61
+ let processing = this._queue.filter(t => t.Status === TaskStatus.InProgress);
62
+ let pending = this._queue.filter(t => t.Status === TaskStatus.Pending);
68
63
  // we have room to process one or more additional tasks now
69
64
  while (processing.length < this._maxTasks && pending.length > 0) {
70
65
  let task = pending.shift();
@@ -98,7 +93,7 @@ class QueueBase {
98
93
  async StartTask(task, contextUser) {
99
94
  // the process function is responsible for calling the processor function
100
95
  try {
101
- task.Status = exports.TaskStatus.InProgress; // immediately flag this task so it isn't picked up again...
96
+ task.Status = TaskStatus.InProgress; // immediately flag this task so it isn't picked up again...
102
97
  // run the task
103
98
  let result = await this.ProcessTask(task, contextUser);
104
99
  // now set the record data for the DB
@@ -107,7 +102,7 @@ class QueueBase {
107
102
  task.TaskRecord.ErrorMessage = result.exception ? JSON.stringify(result.exception) : null;
108
103
  await task.TaskRecord.Save();
109
104
  // update the task status
110
- task.Status = result.success ? exports.TaskStatus.Complete : exports.TaskStatus.Failed;
105
+ task.Status = result.success ? TaskStatus.Complete : TaskStatus.Failed;
111
106
  return result;
112
107
  }
113
108
  catch (e) {
@@ -124,5 +119,4 @@ class QueueBase {
124
119
  return this._queue.find(t => t.ID === ID);
125
120
  }
126
121
  }
127
- exports.QueueBase = QueueBase;
128
122
  //# sourceMappingURL=QueueBase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueueBase.js","sourceRoot":"","sources":["../../src/generic/QueueBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueueBase.js","sourceRoot":"","sources":["../../src/generic/QueueBase.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TaskBase, QueueBase } from "./QueueBase";
1
+ import { TaskBase, QueueBase } from "./QueueBase.js";
2
2
  import { UserInfo } from "@memberjunction/core";
3
3
  import { QueueTypeEntity } from "@memberjunction/core-entities";
4
4
  /**
@@ -1,14 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.QueueManager = void 0;
7
1
  //import { QueueEntity, QueueTaskEntity, QueueTypeEntity } from "mj_generatedentities";
8
- const QueueBase_1 = require("./QueueBase");
9
- const core_1 = require("@memberjunction/core");
10
- const global_1 = require("@memberjunction/global");
11
- const os_1 = __importDefault(require("os"));
2
+ import { TaskBase, QueueBase } from "./QueueBase.js";
3
+ import { LogError, Metadata, RunView } from "@memberjunction/core";
4
+ import { MJGlobal } from "@memberjunction/global";
5
+ import os from 'os';
12
6
  /**
13
7
  *QueueManager class is a generic manager of all active queues for the process.
14
8
  *
@@ -22,7 +16,9 @@ const os_1 = __importDefault(require("os"));
22
16
  *information. Heartbeat information is used to determine if a queue has crashed or not by other processes
23
17
  *or not. After a heartbeat timeout is reached, other queues can pick up tasks from a crashed process.
24
18
  */
25
- class QueueManager {
19
+ export class QueueManager {
20
+ static { this._instance = null; }
21
+ static { this._globalInstanceKey = '__mj_queue_manager_instance__'; }
26
22
  static get QueueTypes() {
27
23
  return QueueManager.Instance._queueTypes;
28
24
  }
@@ -49,7 +45,7 @@ class QueueManager {
49
45
  }
50
46
  async loadQueueTypes(contextUser) {
51
47
  // load all of the queue types from the database
52
- const rv = new core_1.RunView();
48
+ const rv = new RunView();
53
49
  const queueTypes = await rv.RunView({
54
50
  EntityName: 'Queue Types',
55
51
  }, contextUser);
@@ -64,7 +60,7 @@ class QueueManager {
64
60
  if (QueueManager._instance === null) {
65
61
  // check the global object first to see if we have an instance there since multiple modules might load this code
66
62
  // and the static instance colud be different for each module based on JS import paths
67
- const g = global_1.MJGlobal.Instance.GetGlobalObjectStore();
63
+ const g = MJGlobal.Instance.GetGlobalObjectStore();
68
64
  if (g && g[QueueManager._globalInstanceKey]) {
69
65
  QueueManager._instance = g[QueueManager._globalInstanceKey];
70
66
  }
@@ -95,7 +91,7 @@ class QueueManager {
95
91
  const queue = await this.CheckCreateQueue(queueType, contextUser);
96
92
  if (queue) {
97
93
  // STEP 3: Create a task in the database for this new task
98
- const md = new core_1.Metadata();
94
+ const md = new Metadata();
99
95
  const taskRecord = await md.GetEntityObject('Queue Tasks', contextUser);
100
96
  taskRecord.Set('QueueID', queue.QueueID);
101
97
  taskRecord.Set('Status', 'Pending');
@@ -103,7 +99,7 @@ class QueueManager {
103
99
  taskRecord.Set('Options', JSON.stringify(options));
104
100
  if (await taskRecord.Save()) {
105
101
  // db save worked, now we can create a taskBase object
106
- const task = new QueueBase_1.TaskBase(taskRecord, data, options);
102
+ const task = new TaskBase(taskRecord, data, options);
107
103
  queue.AddTask(task);
108
104
  return task;
109
105
  }
@@ -112,7 +108,7 @@ class QueueManager {
112
108
  }
113
109
  }
114
110
  catch (e) {
115
- (0, core_1.LogError)(e.message);
111
+ LogError(e.message);
116
112
  }
117
113
  }
118
114
  async CheckCreateQueue(queueType, contextUser) {
@@ -139,7 +135,7 @@ class QueueManager {
139
135
  async CreateQueue(queueType, contextUser) {
140
136
  try {
141
137
  // create a new queue, based on the Queue Type metadata and process info
142
- const md = new core_1.Metadata();
138
+ const md = new Metadata();
143
139
  const newQueueRecord = await md.GetEntityObject('Queues', contextUser);
144
140
  newQueueRecord.NewRecord();
145
141
  newQueueRecord.Set('QueueTypeID', queueType.ID);
@@ -149,7 +145,7 @@ class QueueManager {
149
145
  newQueueRecord.Set('ProcessPlatform', process.platform);
150
146
  newQueueRecord.Set('ProcessVersion', process.version);
151
147
  newQueueRecord.Set('ProcessCwd', process.cwd());
152
- const networkInterfaces = os_1.default.networkInterfaces();
148
+ const networkInterfaces = os.networkInterfaces();
153
149
  const interfaceNames = Object.keys(networkInterfaces);
154
150
  if (interfaceNames.length > 0) {
155
151
  const firstInterfaceName = interfaceNames[0];
@@ -159,14 +155,14 @@ class QueueManager {
159
155
  newQueueRecord.Set('ProcessMacAddress', firstInterface[0].mac);
160
156
  }
161
157
  }
162
- newQueueRecord.Set('ProcessOSName', os_1.default.type());
163
- newQueueRecord.Set('ProcessOSVersion', os_1.default.release());
164
- newQueueRecord.Set('ProcessHostName', os_1.default.hostname());
165
- newQueueRecord.Set('ProcessUserID', os_1.default.userInfo().uid.toString());
166
- newQueueRecord.Set('ProcessUserName', os_1.default.userInfo().username);
158
+ newQueueRecord.Set('ProcessOSName', os.type());
159
+ newQueueRecord.Set('ProcessOSVersion', os.release());
160
+ newQueueRecord.Set('ProcessHostName', os.hostname());
161
+ newQueueRecord.Set('ProcessUserID', os.userInfo().uid.toString());
162
+ newQueueRecord.Set('ProcessUserName', os.userInfo().username);
167
163
  newQueueRecord.Set('LastHeartbeat', new Date());
168
164
  if (await newQueueRecord.Save()) {
169
- const newQueue = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(QueueBase_1.QueueBase, queueType.Name, newQueueRecord, queueType.ID, contextUser);
165
+ const newQueue = MJGlobal.Instance.ClassFactory.CreateInstance(QueueBase, queueType.Name, newQueueRecord, queueType.ID, contextUser);
170
166
  if (newQueue)
171
167
  this._queues.push(newQueue);
172
168
  return newQueue;
@@ -175,7 +171,7 @@ class QueueManager {
175
171
  throw new Error(`Unable to create new queue for Queue Type ID ${queueType.ID}.`);
176
172
  }
177
173
  catch (e) {
178
- (0, core_1.LogError)(e.message);
174
+ LogError(e.message);
179
175
  return null;
180
176
  }
181
177
  }
@@ -183,7 +179,4 @@ class QueueManager {
183
179
  return this._queues;
184
180
  }
185
181
  }
186
- exports.QueueManager = QueueManager;
187
- QueueManager._instance = null;
188
- QueueManager._globalInstanceKey = '__mj_queue_manager_instance__';
189
182
  //# sourceMappingURL=QueueManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../src/generic/QueueManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../src/generic/QueueManager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './generic/QueueBase';
2
- export * from './generic/QueueManager';
3
- export * from './drivers/AIActionQueue';
1
+ export * from './generic/QueueBase.js';
2
+ export * from './generic/QueueManager.js';
3
+ export * from './drivers/AIActionQueue.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -1,22 +1,4 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const ai_provider_bundle_1 = require("@memberjunction/ai-provider-bundle");
18
- (0, ai_provider_bundle_1.LoadAIProviders)(); // Ensure all AI providers are loaded
19
- __exportStar(require("./generic/QueueBase"), exports);
20
- __exportStar(require("./generic/QueueManager"), exports);
21
- __exportStar(require("./drivers/AIActionQueue"), exports);
1
+ export * from './generic/QueueBase.js';
2
+ export * from './generic/QueueManager.js';
3
+ export * from './drivers/AIActionQueue.js';
22
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2EAAqE;AACrE,IAAA,oCAAe,GAAE,CAAC,CAAC,qCAAqC;AAExD,sDAAoC;AACpC,yDAAuC;AACvC,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/queue",
3
- "version": "3.4.0",
3
+ "type": "module",
4
+ "version": "4.1.0",
4
5
  "description": "MemberJunction: Queue Library for managing server side queues",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
@@ -9,24 +10,24 @@
9
10
  ],
10
11
  "scripts": {
11
12
  "start": "ts-node-dev src/index.ts",
12
- "build": "tsc",
13
+ "build": "tsc && tsc-alias -f",
13
14
  "test": "echo \"Error: no test specified\" && exit 1"
14
15
  },
15
16
  "author": "MemberJunction.com",
16
17
  "license": "ISC",
17
18
  "devDependencies": {
18
19
  "ts-node-dev": "^2.0.0",
19
- "typescript": "^5.4.5"
20
+ "typescript": "^5.9.3"
20
21
  },
21
22
  "dependencies": {
22
- "@memberjunction/ai": "3.4.0",
23
- "@memberjunction/ai-provider-bundle": "3.4.0",
24
- "@memberjunction/aiengine": "3.4.0",
25
- "@memberjunction/core": "3.4.0",
26
- "@memberjunction/global": "3.4.0",
27
- "@memberjunction/core-entities": "3.4.0",
28
- "@types/uuid": "^9.0.1",
29
- "uuid": "^9.0.0"
23
+ "@memberjunction/ai": "4.1.0",
24
+ "@memberjunction/ai-provider-bundle": "4.1.0",
25
+ "@memberjunction/aiengine": "4.1.0",
26
+ "@memberjunction/core": "4.1.0",
27
+ "@memberjunction/global": "4.1.0",
28
+ "@memberjunction/core-entities": "4.1.0",
29
+ "@types/uuid": "^11.0.0",
30
+ "uuid": "^13.0.0"
30
31
  },
31
32
  "repository": {
32
33
  "type": "git",