document-drive 4.0.0-staging.5 → 4.0.0-staging.7

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 (254) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/prisma/schema.prisma +1 -2
  6. package/dist/src/drive-document-model/gen/document-model.js +3 -3
  7. package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
  8. package/dist/src/drive-document-model/gen/node/creators.d.ts +6 -2
  9. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
  10. package/dist/src/drive-document-model/gen/node/creators.js +8 -1
  11. package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
  12. package/dist/src/drive-document-model/gen/schema/types.d.ts +1 -14
  13. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
  14. package/dist/src/drive-document-model/gen/schema/zod.d.ts +1 -5
  15. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
  16. package/dist/src/drive-document-model/gen/schema/zod.js +0 -12
  17. package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
  18. package/dist/src/drive-document-model/gen/types.d.ts +13 -4
  19. package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
  20. package/dist/src/drive-document-model/gen/types.js.map +1 -1
  21. package/dist/src/drive-document-model/module.d.ts +2 -1
  22. package/dist/src/drive-document-model/module.d.ts.map +1 -1
  23. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
  24. package/dist/src/drive-document-model/src/reducers/node.js +1 -25
  25. package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
  26. package/dist/src/drive-document-model/src/tests/actions.test.js +1 -23
  27. package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
  28. package/dist/src/drive-document-model/src/tests/base.test.js +0 -32
  29. package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
  30. package/dist/src/drive-document-model/src/tests/utils.test.js +7 -37
  31. package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
  32. package/dist/src/drive-document-model/src/utils.d.ts +2 -8
  33. package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
  34. package/dist/src/drive-document-model/src/utils.js +6 -55
  35. package/dist/src/drive-document-model/src/utils.js.map +1 -1
  36. package/dist/src/queue/base.d.ts +6 -27
  37. package/dist/src/queue/base.d.ts.map +1 -1
  38. package/dist/src/queue/base.js +15 -203
  39. package/dist/src/queue/base.js.map +1 -1
  40. package/dist/src/queue/event.d.ts +42 -0
  41. package/dist/src/queue/event.d.ts.map +1 -0
  42. package/dist/src/queue/event.js +222 -0
  43. package/dist/src/queue/event.js.map +1 -0
  44. package/dist/src/queue/redis.d.ts +1 -27
  45. package/dist/src/queue/redis.d.ts.map +1 -1
  46. package/dist/src/queue/redis.js +122 -110
  47. package/dist/src/queue/redis.js.map +1 -1
  48. package/dist/src/queue/types.d.ts +18 -12
  49. package/dist/src/queue/types.d.ts.map +1 -1
  50. package/dist/src/queue/types.js +3 -0
  51. package/dist/src/queue/types.js.map +1 -1
  52. package/dist/src/server/base-server.d.ts +87 -11
  53. package/dist/src/server/base-server.d.ts.map +1 -1
  54. package/dist/src/server/base-server.js +549 -250
  55. package/dist/src/server/base-server.js.map +1 -1
  56. package/dist/src/server/builder.js +2 -2
  57. package/dist/src/server/builder.js.map +1 -1
  58. package/dist/src/server/error.d.ts +3 -3
  59. package/dist/src/server/error.d.ts.map +1 -1
  60. package/dist/src/server/error.js +2 -2
  61. package/dist/src/server/error.js.map +1 -1
  62. package/dist/src/server/listener/listener-manager.d.ts +5 -6
  63. package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
  64. package/dist/src/server/listener/listener-manager.js +62 -79
  65. package/dist/src/server/listener/listener-manager.js.map +1 -1
  66. package/dist/src/server/listener/transmitter/internal.d.ts +1 -1
  67. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
  68. package/dist/src/server/listener/transmitter/internal.js +14 -12
  69. package/dist/src/server/listener/transmitter/internal.js.map +1 -1
  70. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
  71. package/dist/src/server/listener/transmitter/pull-responder.js +14 -8
  72. package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
  73. package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
  74. package/dist/src/server/listener/transmitter/switchboard-push.js +13 -8
  75. package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
  76. package/dist/src/server/sync-manager.d.ts +8 -10
  77. package/dist/src/server/sync-manager.d.ts.map +1 -1
  78. package/dist/src/server/sync-manager.js +62 -147
  79. package/dist/src/server/sync-manager.js.map +1 -1
  80. package/dist/src/server/sync-unit-map.d.ts +137 -0
  81. package/dist/src/server/sync-unit-map.d.ts.map +1 -0
  82. package/dist/src/server/sync-unit-map.js +234 -0
  83. package/dist/src/server/sync-unit-map.js.map +1 -0
  84. package/dist/src/server/types.d.ts +114 -31
  85. package/dist/src/server/types.d.ts.map +1 -1
  86. package/dist/src/server/types.js.map +1 -1
  87. package/dist/src/server/utils.d.ts +10 -1
  88. package/dist/src/server/utils.d.ts.map +1 -1
  89. package/dist/src/server/utils.js +41 -0
  90. package/dist/src/server/utils.js.map +1 -1
  91. package/dist/src/storage/browser.d.ts +7 -2
  92. package/dist/src/storage/browser.d.ts.map +1 -1
  93. package/dist/src/storage/browser.js +80 -22
  94. package/dist/src/storage/browser.js.map +1 -1
  95. package/dist/src/storage/filesystem.d.ts +7 -2
  96. package/dist/src/storage/filesystem.d.ts.map +1 -1
  97. package/dist/src/storage/filesystem.js +79 -22
  98. package/dist/src/storage/filesystem.js.map +1 -1
  99. package/dist/src/storage/memory.d.ts +7 -2
  100. package/dist/src/storage/memory.d.ts.map +1 -1
  101. package/dist/src/storage/memory.js +76 -22
  102. package/dist/src/storage/memory.js.map +1 -1
  103. package/dist/src/storage/prisma/client/edge.js +5 -4
  104. package/dist/src/storage/prisma/client/index-browser.js +2 -1
  105. package/dist/src/storage/prisma/client/index.d.ts +58 -249
  106. package/dist/src/storage/prisma/client/index.js +5 -4
  107. package/dist/src/storage/prisma/client/package.json +1 -1
  108. package/dist/src/storage/prisma/client/schema.prisma +2 -3
  109. package/dist/src/storage/prisma/client/wasm.js +2 -1
  110. package/dist/src/storage/prisma/prisma.d.ts +9 -4
  111. package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
  112. package/dist/src/storage/prisma/prisma.js +119 -51
  113. package/dist/src/storage/prisma/prisma.js.map +1 -1
  114. package/dist/src/storage/types.d.ts +43 -4
  115. package/dist/src/storage/types.d.ts.map +1 -1
  116. package/dist/src/storage/utils.d.ts +3 -0
  117. package/dist/src/storage/utils.d.ts.map +1 -1
  118. package/dist/src/storage/utils.js +14 -0
  119. package/dist/src/storage/utils.js.map +1 -1
  120. package/dist/src/utils/gql-transformations.d.ts +14 -5
  121. package/dist/src/utils/gql-transformations.d.ts.map +1 -1
  122. package/dist/src/utils/gql-transformations.js +1 -0
  123. package/dist/src/utils/gql-transformations.js.map +1 -1
  124. package/dist/src/utils/misc.d.ts +2 -0
  125. package/dist/src/utils/misc.d.ts.map +1 -1
  126. package/dist/src/utils/misc.js +4 -0
  127. package/dist/src/utils/misc.js.map +1 -1
  128. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  129. package/package.json +4 -4
  130. package/dist/test/cache.test.d.ts +0 -2
  131. package/dist/test/cache.test.d.ts.map +0 -1
  132. package/dist/test/cache.test.js +0 -281
  133. package/dist/test/cache.test.js.map +0 -1
  134. package/dist/test/default-remote-drives.test.d.ts +0 -2
  135. package/dist/test/default-remote-drives.test.d.ts.map +0 -1
  136. package/dist/test/default-remote-drives.test.js +0 -446
  137. package/dist/test/default-remote-drives.test.js.map +0 -1
  138. package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
  139. package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
  140. package/dist/test/document-helpers/addUndo.test.js +0 -120
  141. package/dist/test/document-helpers/addUndo.test.js.map +0 -1
  142. package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
  143. package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  144. package/dist/test/document-helpers/attachBranch.test.js +0 -333
  145. package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
  146. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
  147. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  148. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
  149. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
  150. package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
  151. package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  152. package/dist/test/document-helpers/garbageCollect.test.js +0 -136
  153. package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
  154. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
  155. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  156. package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -98
  157. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
  158. package/dist/test/document-helpers/merge.test.d.ts +0 -2
  159. package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
  160. package/dist/test/document-helpers/merge.test.js +0 -757
  161. package/dist/test/document-helpers/merge.test.js.map +0 -1
  162. package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
  163. package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  164. package/dist/test/document-helpers/nextSkipNumber.test.js +0 -123
  165. package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
  166. package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
  167. package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  168. package/dist/test/document-helpers/prepareOperations.test.js +0 -304
  169. package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
  170. package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
  171. package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  172. package/dist/test/document-helpers/removeExistingOperations.test.js +0 -150
  173. package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
  174. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
  175. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  176. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
  177. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
  178. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
  179. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  180. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
  181. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
  182. package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
  183. package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  184. package/dist/test/document-helpers/sortOperations.test.js +0 -101
  185. package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
  186. package/dist/test/document-helpers/split.test.d.ts +0 -2
  187. package/dist/test/document-helpers/split.test.d.ts.map +0 -1
  188. package/dist/test/document-helpers/split.test.js +0 -121
  189. package/dist/test/document-helpers/split.test.js.map +0 -1
  190. package/dist/test/document-helpers/utils.d.ts +0 -8
  191. package/dist/test/document-helpers/utils.d.ts.map +0 -1
  192. package/dist/test/document-helpers/utils.js +0 -22
  193. package/dist/test/document-helpers/utils.js.map +0 -1
  194. package/dist/test/drive-operations.test.d.ts +0 -2
  195. package/dist/test/drive-operations.test.d.ts.map +0 -1
  196. package/dist/test/drive-operations.test.js +0 -145
  197. package/dist/test/drive-operations.test.js.map +0 -1
  198. package/dist/test/graphql.test.d.ts +0 -2
  199. package/dist/test/graphql.test.d.ts.map +0 -1
  200. package/dist/test/graphql.test.js +0 -10
  201. package/dist/test/graphql.test.js.map +0 -1
  202. package/dist/test/internal-listener.test.d.ts +0 -2
  203. package/dist/test/internal-listener.test.d.ts.map +0 -1
  204. package/dist/test/internal-listener.test.js +0 -277
  205. package/dist/test/internal-listener.test.js.map +0 -1
  206. package/dist/test/queue.test.d.ts +0 -2
  207. package/dist/test/queue.test.d.ts.map +0 -1
  208. package/dist/test/queue.test.js +0 -338
  209. package/dist/test/queue.test.js.map +0 -1
  210. package/dist/test/read-mode.test.d.ts +0 -2
  211. package/dist/test/read-mode.test.d.ts.map +0 -1
  212. package/dist/test/read-mode.test.js +0 -578
  213. package/dist/test/read-mode.test.js.map +0 -1
  214. package/dist/test/server/driveOperationsConflictResolution.test.d.ts +0 -2
  215. package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +0 -1
  216. package/dist/test/server/driveOperationsConflictResolution.test.js +0 -460
  217. package/dist/test/server/driveOperationsConflictResolution.test.js.map +0 -1
  218. package/dist/test/server/mergeOperations.test.d.ts +0 -2
  219. package/dist/test/server/mergeOperations.test.d.ts.map +0 -1
  220. package/dist/test/server/mergeOperations.test.js +0 -107
  221. package/dist/test/server/mergeOperations.test.js.map +0 -1
  222. package/dist/test/server/processOperations.test.d.ts +0 -2
  223. package/dist/test/server/processOperations.test.d.ts.map +0 -1
  224. package/dist/test/server/processOperations.test.js +0 -380
  225. package/dist/test/server/processOperations.test.js.map +0 -1
  226. package/dist/test/server.test.d.ts +0 -2
  227. package/dist/test/server.test.d.ts.map +0 -1
  228. package/dist/test/server.test.js +0 -899
  229. package/dist/test/server.test.js.map +0 -1
  230. package/dist/test/signature-migration.test.d.ts +0 -2
  231. package/dist/test/signature-migration.test.d.ts.map +0 -1
  232. package/dist/test/signature-migration.test.js +0 -239
  233. package/dist/test/signature-migration.test.js.map +0 -1
  234. package/dist/test/storage.test.d.ts +0 -2
  235. package/dist/test/storage.test.d.ts.map +0 -1
  236. package/dist/test/storage.test.js +0 -523
  237. package/dist/test/storage.test.js.map +0 -1
  238. package/dist/test/utils.d.ts +0 -48
  239. package/dist/test/utils.d.ts.map +0 -1
  240. package/dist/test/utils.js +0 -133
  241. package/dist/test/utils.js.map +0 -1
  242. package/dist/test/utils.test.d.ts +0 -2
  243. package/dist/test/utils.test.d.ts.map +0 -1
  244. package/dist/test/utils.test.js +0 -89
  245. package/dist/test/utils.test.js.map +0 -1
  246. package/dist/test/vitest-setup.d.ts +0 -2
  247. package/dist/test/vitest-setup.d.ts.map +0 -1
  248. package/dist/test/vitest-setup.js +0 -5
  249. package/dist/test/vitest-setup.js.map +0 -1
  250. package/dist/tsconfig.tsbuildinfo +0 -1
  251. package/dist/vitest.config.d.ts +0 -3
  252. package/dist/vitest.config.d.ts.map +0 -1
  253. package/dist/vitest.config.js +0 -27
  254. package/dist/vitest.config.js.map +0 -1
@@ -1,17 +1,18 @@
1
- import { logger } from "#utils/logger";
2
- import { runAsap } from "#utils/misc";
3
- import { generateId } from "document-model";
4
- import { createNanoEvents } from "nanoevents";
5
- import { isOperationJob, } from "./types.js";
6
1
  export class MemoryQueue {
7
2
  id;
8
- blocked = false;
3
+ running = false;
9
4
  deleted = false;
10
5
  items = [];
11
6
  dependencies = new Array();
12
7
  constructor(id) {
13
8
  this.id = id;
14
9
  }
10
+ async isRunning() {
11
+ return this.running;
12
+ }
13
+ async setRunning(running) {
14
+ this.running = running;
15
+ }
15
16
  async setDeleted(deleted) {
16
17
  this.deleted = deleted;
17
18
  }
@@ -32,211 +33,22 @@ export class MemoryQueue {
32
33
  getId() {
33
34
  return this.id;
34
35
  }
35
- async setBlocked(blocked) {
36
- this.blocked = blocked;
37
- }
38
36
  async isBlocked() {
39
- return this.blocked;
37
+ return this.running || this.deleted || this.dependencies.length > 0;
40
38
  }
41
39
  async getJobs() {
42
40
  return this.items;
43
41
  }
44
- async addDependencies(job) {
45
- if (!this.dependencies.find((j) => j.jobId === job.jobId)) {
46
- this.dependencies.push(job);
47
- }
48
- if (!this.isBlocked()) {
49
- this.setBlocked(true);
50
- }
51
- }
52
- async removeDependencies(job) {
53
- this.dependencies = this.dependencies.filter((j) => j.jobId !== job.jobId && j.driveId !== job.driveId);
54
- if (this.dependencies.length === 0) {
55
- await this.setBlocked(false);
42
+ async addDependency(job) {
43
+ if (!this.dependencies.includes(job.jobId)) {
44
+ this.dependencies.push(job.jobId);
56
45
  }
57
46
  }
58
- }
59
- export class BaseQueueManager {
60
- emitter = createNanoEvents();
61
- ticker = 0;
62
- queues = [];
63
- workers;
64
- timeout;
65
- delegate;
66
- constructor(workers = 3, timeout = 0) {
67
- this.workers = workers;
68
- this.timeout = timeout;
69
- }
70
- async init(delegate, onError) {
71
- this.delegate = delegate;
72
- for (let i = 0; i < this.workers; i++) {
73
- setTimeout(() => this.processNextJob.bind(this)().catch(onError), 100 * i);
47
+ async removeDependency(job) {
48
+ const index = this.dependencies.indexOf(job.jobId);
49
+ if (index > -1) {
50
+ this.dependencies.splice(index, 1);
74
51
  }
75
- return Promise.resolve();
76
- }
77
- async addJob(job) {
78
- if (!this.delegate) {
79
- throw new Error("No server delegate defined");
80
- }
81
- const jobId = generateId();
82
- const queue = this.getQueue(job.driveId, job.documentId);
83
- if (await queue.isDeleted()) {
84
- throw new Error("Queue is deleted");
85
- }
86
- // checks if the job is for a document that doesn't exist in storage yet
87
- const newDocument = job.documentId && !(await this.delegate.exists(job.documentId));
88
- // if it is a new document and queue is not yet blocked then
89
- // blocks it so the jobs are not processed until it's ready
90
- if (newDocument && !(await queue.isBlocked())) {
91
- await queue.setBlocked(true);
92
- // checks if there any job in the queue adding the file and adds as dependency
93
- const driveQueue = this.getQueue(job.driveId);
94
- const jobs = await driveQueue.getJobs();
95
- for (const driveJob of jobs) {
96
- const actions = isOperationJob(driveJob)
97
- ? driveJob.operations
98
- : driveJob.actions;
99
- const op = actions.find((j) => {
100
- const input = j.input;
101
- return j.type === "ADD_FILE" && input.id === job.documentId;
102
- });
103
- if (op) {
104
- await queue.addDependencies(driveJob);
105
- }
106
- }
107
- }
108
- // if it has ADD_FILE operations then adds the job as
109
- // a dependency to the corresponding document queues
110
- const actions = isOperationJob(job) ? job.operations : (job.actions ?? []);
111
- const addFileOps = actions.filter((j) => j.type === "ADD_FILE");
112
- for (const addFileOp of addFileOps) {
113
- const input = addFileOp.input;
114
- const q = this.getQueue(job.driveId, input.id);
115
- await q.addDependencies({ jobId, ...job });
116
- }
117
- // remove document if operations contains delete_node
118
- const removeFileOps = actions.filter((j) => j.type === "DELETE_NODE");
119
- for (const removeFileOp of removeFileOps) {
120
- const input = removeFileOp.input;
121
- const queue = this.getQueue(job.driveId, input.id);
122
- await queue.setDeleted(true);
123
- }
124
- await queue.addJob({ jobId, ...job });
125
- return jobId;
126
- }
127
- getQueue(driveId, documentId) {
128
- const queueId = this.getQueueId(driveId, documentId);
129
- let queue = this.queues.find((q) => q.getId() === queueId);
130
- if (!queue) {
131
- queue = new MemoryQueue(queueId);
132
- this.queues.push(queue);
133
- }
134
- return queue;
135
- }
136
- removeQueue(driveId, documentId) {
137
- const queueId = this.getQueueId(driveId, documentId);
138
- this.queues = this.queues.filter((q) => q.getId() !== queueId);
139
- this.emit("queueRemoved", queueId);
140
- }
141
- getQueueByIndex(index) {
142
- const queue = this.queues[index];
143
- if (queue) {
144
- return queue;
145
- }
146
- return null;
147
- }
148
- getQueues() {
149
- return this.queues.map((q) => q.getId());
150
- }
151
- retryNextJob(timeout) {
152
- const _timeout = timeout !== undefined ? timeout : this.timeout;
153
- const retry = _timeout > 0 ? (fn) => setTimeout(fn, _timeout) : runAsap;
154
- retry(() => this.processNextJob());
155
- }
156
- async findFirstNonEmptyQueue(ticker) {
157
- const numQueues = this.queues.length;
158
- for (let i = 0; i < numQueues; i++) {
159
- const index = (ticker + i) % numQueues;
160
- const queue = this.queues[index];
161
- if (queue && (await queue.amountOfJobs()) > 0) {
162
- return index;
163
- }
164
- }
165
- return null;
166
- }
167
- async processNextJob() {
168
- if (!this.delegate) {
169
- throw new Error("No server delegate defined");
170
- }
171
- if (this.queues.length === 0) {
172
- this.retryNextJob();
173
- return;
174
- }
175
- const queue = this.queues[this.ticker];
176
- if (!queue) {
177
- this.ticker = 0;
178
- this.retryNextJob();
179
- return;
180
- }
181
- // if no jobs in the current queue then looks for the
182
- // next queue with jobs. If no jobs in any queue then
183
- // retries after a timeout
184
- const amountOfJobs = await queue.amountOfJobs();
185
- if (amountOfJobs === 0) {
186
- const nextTicker = await this.findFirstNonEmptyQueue(this.ticker);
187
- if (nextTicker !== null) {
188
- this.ticker = nextTicker;
189
- this.retryNextJob(0);
190
- }
191
- else {
192
- this.retryNextJob();
193
- }
194
- return;
195
- }
196
- this.ticker = this.ticker === this.queues.length - 1 ? 0 : this.ticker + 1;
197
- const isBlocked = await queue.isBlocked();
198
- if (isBlocked) {
199
- this.retryNextJob();
200
- return;
201
- }
202
- await queue.setBlocked(true);
203
- const nextJob = await queue.getNextJob();
204
- if (!nextJob) {
205
- this.retryNextJob();
206
- return;
207
- }
208
- try {
209
- const result = await this.delegate.processJob(nextJob);
210
- // unblock the document queues of each add_file operation
211
- const actions = isOperationJob(nextJob)
212
- ? nextJob.operations
213
- : nextJob.actions;
214
- const addFileActions = actions.filter((op) => op.type === "ADD_FILE");
215
- if (addFileActions.length > 0) {
216
- for (const addFile of addFileActions) {
217
- const documentQueue = this.getQueue(nextJob.driveId, addFile.input.id);
218
- await documentQueue.removeDependencies(nextJob);
219
- }
220
- }
221
- this.emit("jobCompleted", nextJob, result);
222
- }
223
- catch (e) {
224
- logger.error(`job failed`, e);
225
- this.emit("jobFailed", nextJob, e);
226
- }
227
- finally {
228
- await queue.setBlocked(false);
229
- this.retryNextJob(0);
230
- }
231
- }
232
- emit(event, ...args) {
233
- this.emitter.emit(event, ...args);
234
- }
235
- on(event, cb) {
236
- return this.emitter.on(event, cb);
237
- }
238
- getQueueId(driveId, documentId) {
239
- return `queue:${driveId}${documentId ? `:${documentId}` : ""}`;
240
52
  }
241
53
  }
242
54
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACd,EAAE,CAAS;IACX,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,GAAc,EAAE,CAAC;IACtB,YAAY,GAAG,IAAI,KAAK,EAAS,CAAC;IAE1C,YAAY,EAAU;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,OAAgB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAgB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAa;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAc;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAc;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ import { type IOperationResult } from "#server/types";
2
+ import { type OperationScope } from "document-model";
3
+ import { type Unsubscribe } from "nanoevents";
4
+ import { type IJob, type IJobQueue, type IQueueManager, type IServerDelegate, type Job, type JobId, type QueueEvents } from "./types.js";
5
+ interface EnqueuedJob {
6
+ jobId: string;
7
+ documentId: string;
8
+ scope: OperationScope;
9
+ timestamp: string;
10
+ }
11
+ export declare class EventQueueManager implements IQueueManager {
12
+ protected logger: import("#utils/logger").ILogger;
13
+ protected emitter: import("nanoevents").Emitter<QueueEvents>;
14
+ protected queues: Map<string, Map<OperationScope, IJobQueue>>;
15
+ protected globalQueue: EnqueuedJob[];
16
+ protected isFindingJob: boolean;
17
+ protected maxWorkers: number;
18
+ protected workers: number;
19
+ protected runningJobs: IJob<Job>[];
20
+ protected timeout: number;
21
+ protected delegate: IServerDelegate | undefined;
22
+ protected onError: ((error: Error) => void) | undefined;
23
+ constructor(maxWorkers?: number, timeout?: number);
24
+ init(delegate: IServerDelegate, onError: (error: Error) => void): Promise<void>;
25
+ addJob(job: Job): Promise<JobId>;
26
+ getQueue(documentId: string, scope: OperationScope): IJobQueue;
27
+ getDocumentQueues(documentId: string): Map<OperationScope, IJobQueue> | undefined;
28
+ removeQueue(documentId: string, scope: OperationScope): boolean | undefined;
29
+ removeDocumentQueues(documentId: string): void;
30
+ protected removeJob(job: IJob<Job>): void;
31
+ protected handleJobCompleted(job: IJob<Job>, result: IOperationResult): Promise<void>;
32
+ protected isBusy(): boolean;
33
+ protected processNextJob(): Promise<void>;
34
+ protected findNextJob(): Promise<{
35
+ queue: IJobQueue;
36
+ job: IJob<Job>;
37
+ } | undefined>;
38
+ protected emit<K extends keyof QueueEvents>(event: K, ...args: Parameters<QueueEvents[K]>): void;
39
+ on<K extends keyof QueueEvents>(event: K, cb: QueueEvents[K]): Unsubscribe;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/queue/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EACL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,eAAe,EAEpB,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAIpB,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACrD,SAAS,CAAC,MAAM,kCAAsC;IACtD,SAAS,CAAC,OAAO,4CAAmC;IACpD,SAAS,CAAC,MAAM,8CAAoD;IACpE,SAAS,CAAC,WAAW,gBAA4B;IACjD,SAAS,CAAC,YAAY,UAAS;IAC/B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,WAAW,cAA0B;IAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;gBAE5C,UAAU,SAAI,EAAE,OAAO,SAAI;IAMjC,IAAI,CACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;IAyDV,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IA8CtC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;IAgBlD,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAIpC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;IASrD,oBAAoB,CAAC,UAAU,EAAE,MAAM;IAOvC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;cAkBlB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB;IAI3E,SAAS,CAAC,MAAM;cAIA,cAAc;cA0Dd,WAAW,IAAI,OAAO,CACpC;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,SAAS,CACjD;IAuBD,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,WAAW,EACxC,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAK9B,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,EACnC,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GACjB,WAAW;CAGf"}
@@ -0,0 +1,222 @@
1
+ import { childLogger, logger } from "#utils/logger";
2
+ import { generateId } from "document-model";
3
+ import { createNanoEvents } from "nanoevents";
4
+ import { MemoryQueue } from "./base.js";
5
+ import { isDocumentJob, isOperationJob, } from "./types.js";
6
+ export class EventQueueManager {
7
+ logger = childLogger(["EventQueueManager"]);
8
+ emitter = createNanoEvents();
9
+ queues = new Map();
10
+ globalQueue = new Array();
11
+ isFindingJob = false;
12
+ maxWorkers;
13
+ workers;
14
+ runningJobs = new Array();
15
+ timeout;
16
+ delegate;
17
+ onError;
18
+ constructor(maxWorkers = 1, timeout = 0) {
19
+ this.maxWorkers = maxWorkers;
20
+ this.workers = 0;
21
+ this.timeout = timeout;
22
+ }
23
+ async init(delegate, onError) {
24
+ this.delegate = delegate;
25
+ this.onError = onError;
26
+ function wrapErrorHandler(method) {
27
+ return (async (...args) => {
28
+ try {
29
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
30
+ await method(...args);
31
+ }
32
+ catch (error) {
33
+ throw error instanceof Error
34
+ ? error
35
+ : new Error(JSON.stringify(error));
36
+ }
37
+ });
38
+ }
39
+ this.emitter.on("jobAdded", wrapErrorHandler(async (job) => {
40
+ this.logger.verbose("Added job", job);
41
+ await this.processNextJob();
42
+ }));
43
+ this.emitter.on("jobStarted", wrapErrorHandler(async (job) => {
44
+ this.logger.verbose("Started job", job.jobId);
45
+ this.runningJobs.push(job);
46
+ await this.processNextJob();
47
+ }));
48
+ this.emitter.on("jobCompleted", wrapErrorHandler(async (job, result) => {
49
+ this.logger.verbose("Completed job", job.jobId);
50
+ await this.handleJobCompleted(job, result);
51
+ }));
52
+ this.emitter.on("jobFailed", wrapErrorHandler(async (job, error) => {
53
+ this.logger.error("Failed job", job, error);
54
+ this.removeJob(job);
55
+ onError(error);
56
+ await this.processNextJob();
57
+ }));
58
+ return Promise.resolve();
59
+ }
60
+ async addJob(job) {
61
+ if (!this.delegate) {
62
+ throw new Error("No server delegate defined");
63
+ }
64
+ const jobId = generateId();
65
+ const documentJob = isDocumentJob(job);
66
+ const jobActions = isDocumentJob(job)
67
+ ? undefined
68
+ : isOperationJob(job)
69
+ ? job.operations
70
+ : job.actions;
71
+ if (!documentJob && !jobActions?.length) {
72
+ throw new Error("Job has no operations or actions: " + JSON.stringify(job));
73
+ }
74
+ const scope = jobActions?.at(0)?.scope ?? "global";
75
+ if (jobActions?.find((j) => j.scope !== scope)) {
76
+ throw new Error("Job has actions with different scopes");
77
+ }
78
+ const queue = this.getQueue(job.documentId, scope);
79
+ // checks if the job is for a document:scope that has been deleted
80
+ if (!isDocumentJob(job) && (await queue.isDeleted())) {
81
+ throw new Error("Job has operations for deleted document");
82
+ }
83
+ // TODO should create document job be a dependency of all jobs to the same document?
84
+ const jobValue = Object.freeze({ jobId, ...job });
85
+ await queue.addJob(jobValue);
86
+ this.globalQueue.push({
87
+ jobId,
88
+ documentId: job.documentId,
89
+ scope,
90
+ timestamp: new Date().toUTCString(),
91
+ });
92
+ this.emit("jobAdded", jobValue);
93
+ return jobId;
94
+ }
95
+ getQueue(documentId, scope) {
96
+ let docQueue = this.queues.get(documentId);
97
+ if (!docQueue) {
98
+ docQueue = new Map();
99
+ this.queues.set(documentId, docQueue);
100
+ }
101
+ let scopeQueue = docQueue.get(scope);
102
+ if (!scopeQueue) {
103
+ scopeQueue = new MemoryQueue(scope);
104
+ docQueue.set(scope, scopeQueue);
105
+ }
106
+ return scopeQueue;
107
+ }
108
+ getDocumentQueues(documentId) {
109
+ return this.queues.get(documentId);
110
+ }
111
+ removeQueue(documentId, scope) {
112
+ const docQueues = this.queues.get(documentId);
113
+ const deleted = docQueues?.delete(scope);
114
+ if (deleted) {
115
+ this.emit("queueRemoved", { documentId, scope });
116
+ }
117
+ return deleted;
118
+ }
119
+ removeDocumentQueues(documentId) {
120
+ const docQueues = this.queues.get(documentId);
121
+ docQueues?.keys().forEach((scope) => {
122
+ this.removeQueue(documentId, scope);
123
+ });
124
+ }
125
+ removeJob(job) {
126
+ const indexRunning = this.runningJobs.findIndex((j) => j.jobId === job.jobId);
127
+ if (indexRunning === -1) {
128
+ this.logger.warn("Running job not found", job.jobId);
129
+ }
130
+ this.runningJobs.splice(indexRunning, 1);
131
+ const indexGlobal = this.globalQueue.findIndex((j) => j.jobId === job.jobId);
132
+ if (indexGlobal === -1) {
133
+ this.logger.warn("Job not found on global queue", job.jobId);
134
+ }
135
+ this.globalQueue.splice(indexGlobal, 1);
136
+ }
137
+ async handleJobCompleted(job, result) {
138
+ this.removeJob(job);
139
+ return this.processNextJob();
140
+ }
141
+ isBusy() {
142
+ return this.workers >= this.maxWorkers;
143
+ }
144
+ async processNextJob() {
145
+ // if there is already a worker looking for a job then waits for it to finish
146
+ if (this.isFindingJob) {
147
+ return;
148
+ }
149
+ if (!this.delegate) {
150
+ throw new Error("No server delegate defined");
151
+ }
152
+ // returns if there are no jobs available
153
+ if (this.globalQueue.length === 0) {
154
+ return;
155
+ }
156
+ // returns if there are no workers available
157
+ if (this.isBusy()) {
158
+ return;
159
+ }
160
+ this.isFindingJob = true;
161
+ this.workers++;
162
+ let queue;
163
+ let job;
164
+ try {
165
+ const queueJob = await this.findNextJob();
166
+ queue = queueJob?.queue;
167
+ job = queueJob?.job;
168
+ }
169
+ catch (error) {
170
+ logger.error("Error finding next job", error);
171
+ }
172
+ if (!queue || !job) {
173
+ this.workers--;
174
+ this.isFindingJob = false;
175
+ return;
176
+ }
177
+ try {
178
+ await queue.setRunning(true);
179
+ this.isFindingJob = false;
180
+ this.emit("jobStarted", job);
181
+ const result = await this.delegate.processJob(job);
182
+ this.workers--;
183
+ await queue.setRunning(false);
184
+ this.emit("jobCompleted", job, result);
185
+ }
186
+ catch (error) {
187
+ logger.error("Job failed", error);
188
+ this.workers--;
189
+ this.isFindingJob = false;
190
+ await queue.setRunning(false);
191
+ this.emit("jobFailed", job, error instanceof Error ? error : new Error(JSON.stringify(error)));
192
+ }
193
+ }
194
+ async findNextJob() {
195
+ const skippedQueues = new Set();
196
+ for (const job of this.globalQueue) {
197
+ const queue = this.getQueue(job.documentId, job.scope);
198
+ const queueId = queue.getId();
199
+ if (skippedQueues.has(queueId)) {
200
+ continue;
201
+ }
202
+ if (await queue.isBlocked()) {
203
+ skippedQueues.add(queue.getId());
204
+ continue;
205
+ }
206
+ const queueJob = await queue.getNextJob();
207
+ if (queueJob?.jobId !== job.jobId) {
208
+ logger.warn("Queue has different job waiting to be picked up"); // TODO ensure this is not possible
209
+ logger.error(job, queueJob);
210
+ continue;
211
+ }
212
+ return { queue, job: queueJob };
213
+ }
214
+ }
215
+ emit(event, ...args) {
216
+ this.emitter.emit(event, ...args);
217
+ }
218
+ on(event, cb) {
219
+ return this.emitter.on(event, cb);
220
+ }
221
+ }
222
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/queue/event.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,2 @@
1
- import { type RedisClientType } from "redis";
2
- import { BaseQueueManager } from "./base.js";
3
- import { type IJob, type IQueue, type IQueueManager, type IServerDelegate, type Job } from "./types.js";
4
- export declare class RedisQueue<T> implements IQueue<T> {
5
- private id;
6
- private client;
7
- constructor(id: string, client: RedisClientType);
8
- addJob(data: any): Promise<void>;
9
- getNextJob(): Promise<IJob<T> | undefined>;
10
- amountOfJobs(): Promise<number>;
11
- setBlocked(blocked: boolean): Promise<void>;
12
- isBlocked(): Promise<boolean>;
13
- getId(): string;
14
- getJobs(): Promise<IJob<T>[]>;
15
- addDependencies(job: IJob<Job>): Promise<void>;
16
- hasDependency(job: IJob<Job>): Promise<boolean>;
17
- removeDependencies(job: IJob<Job>): Promise<void>;
18
- isDeleted(): Promise<boolean>;
19
- setDeleted(deleted: boolean): Promise<void>;
20
- }
21
- export declare class RedisQueueManager extends BaseQueueManager implements IQueueManager {
22
- private client;
23
- constructor(workers: number | undefined, timeout: number | undefined, client: RedisClientType);
24
- init(delegate: IServerDelegate, onError: (error: Error) => void): Promise<void>;
25
- getQueue(driveId: string, documentId?: string): import("./types.js").IJobQueue;
26
- removeQueue(driveId: string, documentId?: string | undefined): void;
27
- }
1
+ export {};
28
2
  //# sourceMappingURL=redis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/queue/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,GAAG,EACT,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;IAOzC,MAAM,CAAC,IAAI,EAAE,GAAG;IAIhB,UAAU;IAQV,YAAY;IAIZ,UAAU,CAAC,OAAO,EAAE,OAAO;IAQ3B,SAAS;IASf,KAAK;IAIC,OAAO;IAKP,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAQ9B,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAK5B,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAUjC,SAAS;IAKT,UAAU,CAAC,OAAO,EAAE,OAAO;CAOlC;AAED,qBAAa,iBACX,SAAQ,gBACR,YAAW,aAAa;IAExB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,OAAO,oBAAI,EAAE,OAAO,oBAAI,EAAE,MAAM,EAAE,eAAe;IAKvD,IAAI,CACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;IAWhB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAY7C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAMpE"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/queue/redis.ts"],"names":[],"mappings":""}