atomic-queues 1.0.13
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 +686 -0
- package/dist/decorators/decorators.d.ts +67 -0
- package/dist/decorators/decorators.d.ts.map +1 -0
- package/dist/decorators/decorators.js +91 -0
- package/dist/decorators/decorators.js.map +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +18 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/domain/index.d.ts +5 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +21 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/interfaces.d.ts +614 -0
- package/dist/domain/interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces.js +19 -0
- package/dist/domain/interfaces.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/module/atomic-queues.module.d.ts +97 -0
- package/dist/module/atomic-queues.module.d.ts.map +1 -0
- package/dist/module/atomic-queues.module.js +197 -0
- package/dist/module/atomic-queues.module.js.map +1 -0
- package/dist/module/index.d.ts +2 -0
- package/dist/module/index.d.ts.map +1 -0
- package/dist/module/index.js +18 -0
- package/dist/module/index.js.map +1 -0
- package/dist/services/constants.d.ts +10 -0
- package/dist/services/constants.d.ts.map +1 -0
- package/dist/services/constants.js +13 -0
- package/dist/services/constants.js.map +1 -0
- package/dist/services/cron-manager/cron-manager.service.d.ts +188 -0
- package/dist/services/cron-manager/cron-manager.service.d.ts.map +1 -0
- package/dist/services/cron-manager/cron-manager.service.js +534 -0
- package/dist/services/cron-manager/cron-manager.service.js.map +1 -0
- package/dist/services/cron-manager/index.d.ts +2 -0
- package/dist/services/cron-manager/index.d.ts.map +1 -0
- package/dist/services/cron-manager/index.js +18 -0
- package/dist/services/cron-manager/index.js.map +1 -0
- package/dist/services/index-manager/index-manager.service.d.ts +146 -0
- package/dist/services/index-manager/index-manager.service.d.ts.map +1 -0
- package/dist/services/index-manager/index-manager.service.js +337 -0
- package/dist/services/index-manager/index-manager.service.js.map +1 -0
- package/dist/services/index-manager/index.d.ts +2 -0
- package/dist/services/index-manager/index.d.ts.map +1 -0
- package/dist/services/index-manager/index.js +18 -0
- package/dist/services/index-manager/index.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +26 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/job-processor/index.d.ts +2 -0
- package/dist/services/job-processor/index.d.ts.map +1 -0
- package/dist/services/job-processor/index.js +18 -0
- package/dist/services/job-processor/index.js.map +1 -0
- package/dist/services/job-processor/job-processor.service.d.ts +156 -0
- package/dist/services/job-processor/job-processor.service.d.ts.map +1 -0
- package/dist/services/job-processor/job-processor.service.js +331 -0
- package/dist/services/job-processor/job-processor.service.js.map +1 -0
- package/dist/services/queue-manager/index.d.ts +2 -0
- package/dist/services/queue-manager/index.d.ts.map +1 -0
- package/dist/services/queue-manager/index.js +18 -0
- package/dist/services/queue-manager/index.js.map +1 -0
- package/dist/services/queue-manager/queue-manager.service.d.ts +128 -0
- package/dist/services/queue-manager/queue-manager.service.d.ts.map +1 -0
- package/dist/services/queue-manager/queue-manager.service.js +308 -0
- package/dist/services/queue-manager/queue-manager.service.js.map +1 -0
- package/dist/services/resource-lock/index.d.ts +2 -0
- package/dist/services/resource-lock/index.d.ts.map +1 -0
- package/dist/services/resource-lock/index.js +18 -0
- package/dist/services/resource-lock/index.js.map +1 -0
- package/dist/services/resource-lock/resource-lock.service.d.ts +124 -0
- package/dist/services/resource-lock/resource-lock.service.d.ts.map +1 -0
- package/dist/services/resource-lock/resource-lock.service.js +379 -0
- package/dist/services/resource-lock/resource-lock.service.js.map +1 -0
- package/dist/services/service-queue/index.d.ts +2 -0
- package/dist/services/service-queue/index.d.ts.map +1 -0
- package/dist/services/service-queue/index.js +18 -0
- package/dist/services/service-queue/index.js.map +1 -0
- package/dist/services/service-queue/service-queue.service.d.ts +232 -0
- package/dist/services/service-queue/service-queue.service.d.ts.map +1 -0
- package/dist/services/service-queue/service-queue.service.js +647 -0
- package/dist/services/service-queue/service-queue.service.js.map +1 -0
- package/dist/services/shutdown-state/index.d.ts +2 -0
- package/dist/services/shutdown-state/index.d.ts.map +1 -0
- package/dist/services/shutdown-state/index.js +18 -0
- package/dist/services/shutdown-state/index.js.map +1 -0
- package/dist/services/shutdown-state/shutdown-state.service.d.ts +69 -0
- package/dist/services/shutdown-state/shutdown-state.service.d.ts.map +1 -0
- package/dist/services/shutdown-state/shutdown-state.service.js +127 -0
- package/dist/services/shutdown-state/shutdown-state.service.js.map +1 -0
- package/dist/services/worker-manager/index.d.ts +2 -0
- package/dist/services/worker-manager/index.d.ts.map +1 -0
- package/dist/services/worker-manager/index.js +18 -0
- package/dist/services/worker-manager/index.js.map +1 -0
- package/dist/services/worker-manager/worker-manager.service.d.ts +163 -0
- package/dist/services/worker-manager/worker-manager.service.d.ts.map +1 -0
- package/dist/services/worker-manager/worker-manager.service.js +460 -0
- package/dist/services/worker-manager/worker-manager.service.js.map +1 -0
- package/dist/utils/helpers.d.ts +124 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +229 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAtomicJobData = createAtomicJobData;
|
|
4
|
+
exports.createDefaultJobOptions = createDefaultJobOptions;
|
|
5
|
+
exports.createHighPriorityJobOptions = createHighPriorityJobOptions;
|
|
6
|
+
exports.sleep = sleep;
|
|
7
|
+
exports.retry = retry;
|
|
8
|
+
exports.getEntityQueueName = getEntityQueueName;
|
|
9
|
+
exports.getEntityWorkerName = getEntityWorkerName;
|
|
10
|
+
exports.parseQueueName = parseQueueName;
|
|
11
|
+
exports.createSigtermPayload = createSigtermPayload;
|
|
12
|
+
exports.isSigtermJob = isSigtermJob;
|
|
13
|
+
exports.batch = batch;
|
|
14
|
+
exports.createTimeout = createTimeout;
|
|
15
|
+
exports.withTimeout = withTimeout;
|
|
16
|
+
exports.debounce = debounce;
|
|
17
|
+
exports.throttle = throttle;
|
|
18
|
+
const uuid_1 = require("uuid");
|
|
19
|
+
/**
|
|
20
|
+
* Create an atomic job data payload.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const jobData = createAtomicJobData({
|
|
25
|
+
* entityType: 'user',
|
|
26
|
+
* entityId: '123',
|
|
27
|
+
* type: 'command',
|
|
28
|
+
* commandName: 'SendMessageCommand',
|
|
29
|
+
* payload: { message: 'Hello!' },
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* await queueManager.addJob('user-123-queue', 'send-message', jobData);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
function createAtomicJobData(options) {
|
|
36
|
+
return {
|
|
37
|
+
uuid: (0, uuid_1.v4)(),
|
|
38
|
+
entityId: options.entityId,
|
|
39
|
+
entityType: options.entityType,
|
|
40
|
+
type: options.type,
|
|
41
|
+
commandName: options.commandName,
|
|
42
|
+
payload: options.payload,
|
|
43
|
+
metadata: options.metadata,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create default job options with common settings.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const options = createDefaultJobOptions({
|
|
52
|
+
* priority: 0, // Highest priority
|
|
53
|
+
* attempts: 5,
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function createDefaultJobOptions(overrides) {
|
|
58
|
+
return {
|
|
59
|
+
removeOnComplete: true,
|
|
60
|
+
removeOnFail: false,
|
|
61
|
+
attempts: Number.MAX_SAFE_INTEGER,
|
|
62
|
+
backoff: {
|
|
63
|
+
type: 'fixed',
|
|
64
|
+
delay: 1000,
|
|
65
|
+
},
|
|
66
|
+
priority: 1,
|
|
67
|
+
...overrides,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create high-priority job options (for SIGTERM signals, etc.)
|
|
72
|
+
*/
|
|
73
|
+
function createHighPriorityJobOptions(overrides) {
|
|
74
|
+
return createDefaultJobOptions({
|
|
75
|
+
priority: 0, // Highest priority
|
|
76
|
+
...overrides,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sleep utility for async operations.
|
|
81
|
+
*/
|
|
82
|
+
function sleep(ms) {
|
|
83
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Retry utility with exponential backoff.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const result = await retry(
|
|
91
|
+
* () => someUnreliableOperation(),
|
|
92
|
+
* { maxAttempts: 3, baseDelay: 1000 },
|
|
93
|
+
* );
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
async function retry(fn, options) {
|
|
97
|
+
const { maxAttempts, baseDelay, maxDelay = 30000, exponential = true, onRetry } = options;
|
|
98
|
+
let lastError;
|
|
99
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
100
|
+
try {
|
|
101
|
+
return await fn();
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
lastError = error;
|
|
105
|
+
if (attempt === maxAttempts) {
|
|
106
|
+
throw lastError;
|
|
107
|
+
}
|
|
108
|
+
if (onRetry) {
|
|
109
|
+
onRetry(attempt, lastError);
|
|
110
|
+
}
|
|
111
|
+
const delay = exponential
|
|
112
|
+
? Math.min(baseDelay * Math.pow(2, attempt - 1), maxDelay)
|
|
113
|
+
: baseDelay;
|
|
114
|
+
await sleep(delay);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
throw lastError;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Generate a queue name for an entity.
|
|
121
|
+
*/
|
|
122
|
+
function getEntityQueueName(entityType, entityId, prefix = 'aq') {
|
|
123
|
+
return `${prefix}:${entityType}:${entityId}:queue`;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate a worker name for an entity.
|
|
127
|
+
*/
|
|
128
|
+
function getEntityWorkerName(entityType, entityId, prefix = 'aq') {
|
|
129
|
+
return `${prefix}:${entityType}:${entityId}:worker`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Parse a queue name to extract entity info.
|
|
133
|
+
*/
|
|
134
|
+
function parseQueueName(queueName) {
|
|
135
|
+
const parts = queueName.split(':');
|
|
136
|
+
if (parts.length >= 4 && parts[3] === 'queue') {
|
|
137
|
+
return {
|
|
138
|
+
prefix: parts[0],
|
|
139
|
+
entityType: parts[1],
|
|
140
|
+
entityId: parts[2],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create a SIGTERM job payload for worker termination.
|
|
147
|
+
*/
|
|
148
|
+
function createSigtermPayload(entityType, entityId) {
|
|
149
|
+
return {
|
|
150
|
+
uuid: (0, uuid_1.v4)(),
|
|
151
|
+
entityId,
|
|
152
|
+
entityType,
|
|
153
|
+
type: 'custom',
|
|
154
|
+
payload: { type: 'SIGTERM' },
|
|
155
|
+
metadata: { signal: 'SIGTERM' },
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if a job is a SIGTERM signal.
|
|
160
|
+
*/
|
|
161
|
+
function isSigtermJob(data) {
|
|
162
|
+
return (data.type === 'custom' &&
|
|
163
|
+
data.payload?.type === 'SIGTERM');
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Batch utility for processing items in chunks.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* await batch(items, 10, async (chunk) => {
|
|
171
|
+
* await Promise.all(chunk.map(processItem));
|
|
172
|
+
* });
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
async function batch(items, batchSize, processor) {
|
|
176
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
177
|
+
const chunk = items.slice(i, i + batchSize);
|
|
178
|
+
await processor(chunk);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Create a timeout promise that rejects after specified ms.
|
|
183
|
+
*/
|
|
184
|
+
function createTimeout(ms, message = 'Operation timed out') {
|
|
185
|
+
return new Promise((_, reject) => {
|
|
186
|
+
setTimeout(() => reject(new Error(message)), ms);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Run an operation with a timeout.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* const result = await withTimeout(
|
|
195
|
+
* someAsyncOperation(),
|
|
196
|
+
* 5000,
|
|
197
|
+
* 'Operation took too long',
|
|
198
|
+
* );
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
async function withTimeout(promise, ms, message) {
|
|
202
|
+
return Promise.race([promise, createTimeout(ms, message)]);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Debounce utility for functions.
|
|
206
|
+
*/
|
|
207
|
+
function debounce(fn, ms) {
|
|
208
|
+
let timeoutId = null;
|
|
209
|
+
return (...args) => {
|
|
210
|
+
if (timeoutId) {
|
|
211
|
+
clearTimeout(timeoutId);
|
|
212
|
+
}
|
|
213
|
+
timeoutId = setTimeout(() => fn(...args), ms);
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Throttle utility for functions.
|
|
218
|
+
*/
|
|
219
|
+
function throttle(fn, ms) {
|
|
220
|
+
let lastCall = 0;
|
|
221
|
+
return (...args) => {
|
|
222
|
+
const now = Date.now();
|
|
223
|
+
if (now - lastCall >= ms) {
|
|
224
|
+
lastCall = now;
|
|
225
|
+
fn(...args);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
__exportStar(require("./helpers"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "atomic-queues",
|
|
3
|
+
"version": "1.0.13",
|
|
4
|
+
"description": "A plug-and-play NestJS library for atomic process handling per entity with BullMQ, Redis distributed locking, and dynamic worker management",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/**/*"
|
|
9
|
+
],
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/Marce1o/nestjs-atomicQueues.git"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/Marce1o/nestjs-atomicQueues#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/Marce1o/nestjs-atomicQueues/issues"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "rimraf dist && tsc",
|
|
23
|
+
"dev": "tsc --watch",
|
|
24
|
+
"copy-package": "node -e \"const p=require('./package.json'); p.main='index.js'; p.types='index.d.ts'; p.files=['**/*.js','**/*.d.ts','**/*.js.map','**/*.d.ts.map']; require('fs').writeFileSync('./dist/package.json', JSON.stringify(p, null, 2));\"",
|
|
25
|
+
"publish": "cd dist && npm publish --ignore-scripts",
|
|
26
|
+
"print:local:instructions": "FOLDER=$(echo \"$PWD\"/atomicqueues-core*.tgz) && echo 'Reinstall with -> npm uninstall @atomicqueues/core && npm i file:'\"$FOLDER\"",
|
|
27
|
+
"pack": "npm run build && npm run copy-package && cd dist && npm pack --ignore-scripts && npm run print:local:instructions",
|
|
28
|
+
"test": "jest",
|
|
29
|
+
"test:watch": "jest --watch",
|
|
30
|
+
"lint": "eslint src/**/*.ts"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"nestjs",
|
|
34
|
+
"queue",
|
|
35
|
+
"bullmq",
|
|
36
|
+
"redis",
|
|
37
|
+
"atomic",
|
|
38
|
+
"distributed-lock",
|
|
39
|
+
"worker-management",
|
|
40
|
+
"cqrs"
|
|
41
|
+
],
|
|
42
|
+
"author": "",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@nestjs/bullmq": ">=10.0.0",
|
|
46
|
+
"@nestjs/common": ">=10.0.0",
|
|
47
|
+
"@nestjs/core": ">=10.0.0",
|
|
48
|
+
"@nestjs/cqrs": ">=10.0.0",
|
|
49
|
+
"bullmq": ">=5.0.0",
|
|
50
|
+
"ioredis": ">=5.0.0",
|
|
51
|
+
"reflect-metadata": ">=0.1.13",
|
|
52
|
+
"rxjs": ">=7.0.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@nestjs/bullmq": "^10.2.0",
|
|
56
|
+
"@nestjs/common": "^10.3.0",
|
|
57
|
+
"@nestjs/core": "^10.3.0",
|
|
58
|
+
"@nestjs/cqrs": "^10.2.0",
|
|
59
|
+
"@types/jest": "^29.5.0",
|
|
60
|
+
"@types/node": "^20.0.0",
|
|
61
|
+
"@types/uuid": "^10.0.0",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
63
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
64
|
+
"bullmq": "^5.1.0",
|
|
65
|
+
"eslint": "^8.0.0",
|
|
66
|
+
"ioredis": "^5.3.0",
|
|
67
|
+
"jest": "^29.5.0",
|
|
68
|
+
"reflect-metadata": "^0.1.13",
|
|
69
|
+
"rimraf": "^6.1.2",
|
|
70
|
+
"rxjs": "^7.8.0",
|
|
71
|
+
"shx": "^0.4.0",
|
|
72
|
+
"ts-jest": "^29.1.0",
|
|
73
|
+
"typescript": "^5.3.0",
|
|
74
|
+
"uuid": "^9.0.0"
|
|
75
|
+
},
|
|
76
|
+
"dependencies": {
|
|
77
|
+
"class-transformer": "^0.5.1",
|
|
78
|
+
"uuid": "^9.0.0"
|
|
79
|
+
}
|
|
80
|
+
}
|