document-drive 4.0.0-staging.6 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/prisma/schema.prisma +2 -1
- package/dist/src/drive-document-model/gen/document-model.js +3 -3
- package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.d.ts +2 -6
- package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.js +1 -8
- package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/schema/types.d.ts +14 -1
- package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.d.ts +5 -1
- package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.js +12 -0
- package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
- package/dist/src/drive-document-model/gen/types.d.ts +4 -13
- package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/types.js.map +1 -1
- package/dist/src/drive-document-model/module.d.ts +1 -2
- package/dist/src/drive-document-model/module.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/reducers/node.js +25 -1
- package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js +23 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/base.test.js +32 -0
- package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/utils.test.js +37 -7
- package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
- package/dist/src/drive-document-model/src/utils.d.ts +8 -2
- package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/utils.js +55 -6
- package/dist/src/drive-document-model/src/utils.js.map +1 -1
- package/dist/src/queue/base.d.ts +27 -6
- package/dist/src/queue/base.d.ts.map +1 -1
- package/dist/src/queue/base.js +203 -15
- package/dist/src/queue/base.js.map +1 -1
- package/dist/src/queue/redis.d.ts +27 -1
- package/dist/src/queue/redis.d.ts.map +1 -1
- package/dist/src/queue/redis.js +110 -122
- package/dist/src/queue/redis.js.map +1 -1
- package/dist/src/queue/types.d.ts +12 -18
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js +0 -3
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/server/base-server.d.ts +11 -87
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +250 -549
- package/dist/src/server/base-server.js.map +1 -1
- package/dist/src/server/builder.js +2 -2
- package/dist/src/server/builder.js.map +1 -1
- package/dist/src/server/error.d.ts +3 -3
- package/dist/src/server/error.d.ts.map +1 -1
- package/dist/src/server/error.js +2 -2
- package/dist/src/server/error.js.map +1 -1
- package/dist/src/server/listener/listener-manager.d.ts +6 -5
- package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
- package/dist/src/server/listener/listener-manager.js +79 -62
- package/dist/src/server/listener/listener-manager.js.map +1 -1
- package/dist/src/server/listener/transmitter/internal.d.ts +1 -1
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/internal.js +12 -14
- package/dist/src/server/listener/transmitter/internal.js.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.js +8 -14
- package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
- package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/switchboard-push.js +8 -13
- package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
- package/dist/src/server/sync-manager.d.ts +10 -8
- package/dist/src/server/sync-manager.d.ts.map +1 -1
- package/dist/src/server/sync-manager.js +147 -62
- package/dist/src/server/sync-manager.js.map +1 -1
- package/dist/src/server/types.d.ts +31 -114
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/server/types.js.map +1 -1
- package/dist/src/server/utils.d.ts +1 -10
- package/dist/src/server/utils.d.ts.map +1 -1
- package/dist/src/server/utils.js +0 -41
- package/dist/src/server/utils.js.map +1 -1
- package/dist/src/storage/browser.d.ts +2 -7
- package/dist/src/storage/browser.d.ts.map +1 -1
- package/dist/src/storage/browser.js +22 -80
- package/dist/src/storage/browser.js.map +1 -1
- package/dist/src/storage/filesystem.d.ts +2 -7
- package/dist/src/storage/filesystem.d.ts.map +1 -1
- package/dist/src/storage/filesystem.js +22 -79
- package/dist/src/storage/filesystem.js.map +1 -1
- package/dist/src/storage/memory.d.ts +2 -7
- package/dist/src/storage/memory.d.ts.map +1 -1
- package/dist/src/storage/memory.js +22 -76
- package/dist/src/storage/memory.js.map +1 -1
- package/dist/src/storage/prisma/client/edge.js +4 -5
- package/dist/src/storage/prisma/client/index-browser.js +1 -2
- package/dist/src/storage/prisma/client/index.d.ts +249 -58
- package/dist/src/storage/prisma/client/index.js +4 -5
- package/dist/src/storage/prisma/client/package.json +1 -1
- package/dist/src/storage/prisma/client/schema.prisma +3 -2
- package/dist/src/storage/prisma/client/wasm.js +1 -2
- package/dist/src/storage/prisma/prisma.d.ts +4 -9
- package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.js +51 -119
- package/dist/src/storage/prisma/prisma.js.map +1 -1
- package/dist/src/storage/types.d.ts +4 -43
- package/dist/src/storage/types.d.ts.map +1 -1
- package/dist/src/storage/utils.d.ts +0 -3
- package/dist/src/storage/utils.d.ts.map +1 -1
- package/dist/src/storage/utils.js +0 -14
- package/dist/src/storage/utils.js.map +1 -1
- package/dist/src/utils/gql-transformations.d.ts +5 -14
- package/dist/src/utils/gql-transformations.d.ts.map +1 -1
- package/dist/src/utils/gql-transformations.js +0 -1
- package/dist/src/utils/gql-transformations.js.map +1 -1
- package/dist/src/utils/misc.d.ts +0 -2
- package/dist/src/utils/misc.d.ts.map +1 -1
- package/dist/src/utils/misc.js +0 -4
- package/dist/src/utils/misc.js.map +1 -1
- package/dist/test/cache.test.d.ts +2 -0
- package/dist/test/cache.test.d.ts.map +1 -0
- package/dist/test/cache.test.js +281 -0
- package/dist/test/cache.test.js.map +1 -0
- package/dist/test/default-remote-drives.test.d.ts +2 -0
- package/dist/test/default-remote-drives.test.d.ts.map +1 -0
- package/dist/test/default-remote-drives.test.js +446 -0
- package/dist/test/default-remote-drives.test.js.map +1 -0
- package/dist/test/document-helpers/addUndo.test.d.ts +2 -0
- package/dist/test/document-helpers/addUndo.test.d.ts.map +1 -0
- package/dist/test/document-helpers/addUndo.test.js +120 -0
- package/dist/test/document-helpers/addUndo.test.js.map +1 -0
- package/dist/test/document-helpers/attachBranch.test.d.ts +2 -0
- package/dist/test/document-helpers/attachBranch.test.d.ts.map +1 -0
- package/dist/test/document-helpers/attachBranch.test.js +333 -0
- package/dist/test/document-helpers/attachBranch.test.js.map +1 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +2 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +1 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +252 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +1 -0
- package/dist/test/document-helpers/garbageCollect.test.d.ts +2 -0
- package/dist/test/document-helpers/garbageCollect.test.d.ts.map +1 -0
- package/dist/test/document-helpers/garbageCollect.test.js +136 -0
- package/dist/test/document-helpers/garbageCollect.test.js.map +1 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +2 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +1 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.js +98 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -0
- package/dist/test/document-helpers/merge.test.d.ts +2 -0
- package/dist/test/document-helpers/merge.test.d.ts.map +1 -0
- package/dist/test/document-helpers/merge.test.js +757 -0
- package/dist/test/document-helpers/merge.test.js.map +1 -0
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts +2 -0
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +1 -0
- package/dist/test/document-helpers/nextSkipNumber.test.js +123 -0
- package/dist/test/document-helpers/nextSkipNumber.test.js.map +1 -0
- package/dist/test/document-helpers/prepareOperations.test.d.ts +2 -0
- package/dist/test/document-helpers/prepareOperations.test.d.ts.map +1 -0
- package/dist/test/document-helpers/prepareOperations.test.js +304 -0
- package/dist/test/document-helpers/prepareOperations.test.js.map +1 -0
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts +2 -0
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +1 -0
- package/dist/test/document-helpers/removeExistingOperations.test.js +150 -0
- package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +2 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js +148 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +2 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +200 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -0
- package/dist/test/document-helpers/sortOperations.test.d.ts +2 -0
- package/dist/test/document-helpers/sortOperations.test.d.ts.map +1 -0
- package/dist/test/document-helpers/sortOperations.test.js +101 -0
- package/dist/test/document-helpers/sortOperations.test.js.map +1 -0
- package/dist/test/document-helpers/split.test.d.ts +2 -0
- package/dist/test/document-helpers/split.test.d.ts.map +1 -0
- package/dist/test/document-helpers/split.test.js +121 -0
- package/dist/test/document-helpers/split.test.js.map +1 -0
- package/dist/test/document-helpers/utils.d.ts +8 -0
- package/dist/test/document-helpers/utils.d.ts.map +1 -0
- package/dist/test/document-helpers/utils.js +22 -0
- package/dist/test/document-helpers/utils.js.map +1 -0
- package/dist/test/drive-operations.test.d.ts +2 -0
- package/dist/test/drive-operations.test.d.ts.map +1 -0
- package/dist/test/drive-operations.test.js +145 -0
- package/dist/test/drive-operations.test.js.map +1 -0
- package/dist/test/graphql.test.d.ts +2 -0
- package/dist/test/graphql.test.d.ts.map +1 -0
- package/dist/test/graphql.test.js +10 -0
- package/dist/test/graphql.test.js.map +1 -0
- package/dist/test/internal-listener.test.d.ts +2 -0
- package/dist/test/internal-listener.test.d.ts.map +1 -0
- package/dist/test/internal-listener.test.js +277 -0
- package/dist/test/internal-listener.test.js.map +1 -0
- package/dist/test/queue.test.d.ts +2 -0
- package/dist/test/queue.test.d.ts.map +1 -0
- package/dist/test/queue.test.js +338 -0
- package/dist/test/queue.test.js.map +1 -0
- package/dist/test/read-mode.test.d.ts +2 -0
- package/dist/test/read-mode.test.d.ts.map +1 -0
- package/dist/test/read-mode.test.js +578 -0
- package/dist/test/read-mode.test.js.map +1 -0
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts +2 -0
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +1 -0
- package/dist/test/server/driveOperationsConflictResolution.test.js +460 -0
- package/dist/test/server/driveOperationsConflictResolution.test.js.map +1 -0
- package/dist/test/server/mergeOperations.test.d.ts +2 -0
- package/dist/test/server/mergeOperations.test.d.ts.map +1 -0
- package/dist/test/server/mergeOperations.test.js +107 -0
- package/dist/test/server/mergeOperations.test.js.map +1 -0
- package/dist/test/server/processOperations.test.d.ts +2 -0
- package/dist/test/server/processOperations.test.d.ts.map +1 -0
- package/dist/test/server/processOperations.test.js +380 -0
- package/dist/test/server/processOperations.test.js.map +1 -0
- package/dist/test/server.test.d.ts +2 -0
- package/dist/test/server.test.d.ts.map +1 -0
- package/dist/test/server.test.js +899 -0
- package/dist/test/server.test.js.map +1 -0
- package/dist/test/signature-migration.test.d.ts +2 -0
- package/dist/test/signature-migration.test.d.ts.map +1 -0
- package/dist/test/signature-migration.test.js +239 -0
- package/dist/test/signature-migration.test.js.map +1 -0
- package/dist/test/storage.test.d.ts +2 -0
- package/dist/test/storage.test.d.ts.map +1 -0
- package/dist/test/storage.test.js +523 -0
- package/dist/test/storage.test.js.map +1 -0
- package/dist/test/utils.d.ts +48 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +133 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/test/utils.test.d.ts +2 -0
- package/dist/test/utils.test.d.ts.map +1 -0
- package/dist/test/utils.test.js +89 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/test/vitest-setup.d.ts +2 -0
- package/dist/test/vitest-setup.d.ts.map +1 -0
- package/dist/test/vitest-setup.js +5 -0
- package/dist/test/vitest-setup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +27 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +4 -4
- package/dist/src/queue/event.d.ts +0 -42
- package/dist/src/queue/event.d.ts.map +0 -1
- package/dist/src/queue/event.js +0 -222
- package/dist/src/queue/event.js.map +0 -1
- package/dist/src/server/sync-unit-map.d.ts +0 -137
- package/dist/src/server/sync-unit-map.d.ts.map +0 -1
- package/dist/src/server/sync-unit-map.js +0 -234
- package/dist/src/server/sync-unit-map.js.map +0 -1
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
package/dist/src/queue/base.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
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";
|
|
1
6
|
export class MemoryQueue {
|
|
2
7
|
id;
|
|
3
|
-
|
|
8
|
+
blocked = false;
|
|
4
9
|
deleted = false;
|
|
5
10
|
items = [];
|
|
6
11
|
dependencies = new Array();
|
|
7
12
|
constructor(id) {
|
|
8
13
|
this.id = id;
|
|
9
14
|
}
|
|
10
|
-
async isRunning() {
|
|
11
|
-
return this.running;
|
|
12
|
-
}
|
|
13
|
-
async setRunning(running) {
|
|
14
|
-
this.running = running;
|
|
15
|
-
}
|
|
16
15
|
async setDeleted(deleted) {
|
|
17
16
|
this.deleted = deleted;
|
|
18
17
|
}
|
|
@@ -33,22 +32,211 @@ export class MemoryQueue {
|
|
|
33
32
|
getId() {
|
|
34
33
|
return this.id;
|
|
35
34
|
}
|
|
35
|
+
async setBlocked(blocked) {
|
|
36
|
+
this.blocked = blocked;
|
|
37
|
+
}
|
|
36
38
|
async isBlocked() {
|
|
37
|
-
return this.
|
|
39
|
+
return this.blocked;
|
|
38
40
|
}
|
|
39
41
|
async getJobs() {
|
|
40
42
|
return this.items;
|
|
41
43
|
}
|
|
42
|
-
async
|
|
43
|
-
if (!this.dependencies.
|
|
44
|
-
this.dependencies.push(job
|
|
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);
|
|
45
56
|
}
|
|
46
57
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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);
|
|
51
74
|
}
|
|
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}` : ""}`;
|
|
52
240
|
}
|
|
53
241
|
}
|
|
54
242
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,28 @@
|
|
|
1
|
-
|
|
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
|
+
}
|
|
2
28
|
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/queue/redis.ts"],"names":[],"mappings":""}
|
|
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"}
|
package/dist/src/queue/redis.js
CHANGED
|
@@ -1,123 +1,111 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
// if (!queue) {
|
|
112
|
-
// queue = new RedisQueue(queueId, this.client);
|
|
113
|
-
// this.queues.push(queue);
|
|
114
|
-
// }
|
|
115
|
-
// return queue;
|
|
116
|
-
// }
|
|
117
|
-
// removeQueue(driveId: string, documentId?: string | undefined): void {
|
|
118
|
-
// super.removeQueue(driveId, documentId);
|
|
119
|
-
// const queueId = this.getQueueId(driveId, documentId);
|
|
120
|
-
// this.client.hDel("queues", queueId);
|
|
121
|
-
// }
|
|
122
|
-
// }
|
|
1
|
+
import { BaseQueueManager } from "./base.js";
|
|
2
|
+
export class RedisQueue {
|
|
3
|
+
id;
|
|
4
|
+
client;
|
|
5
|
+
constructor(id, client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
this.id = id;
|
|
8
|
+
this.client.hSet("queues", id, "true");
|
|
9
|
+
this.client.hSet(this.id, "blocked", "false");
|
|
10
|
+
}
|
|
11
|
+
async addJob(data) {
|
|
12
|
+
await this.client.lPush(this.id + "-jobs", JSON.stringify(data));
|
|
13
|
+
}
|
|
14
|
+
async getNextJob() {
|
|
15
|
+
const job = await this.client.rPop(this.id + "-jobs");
|
|
16
|
+
if (!job) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return JSON.parse(job);
|
|
20
|
+
}
|
|
21
|
+
async amountOfJobs() {
|
|
22
|
+
return this.client.lLen(this.id + "-jobs");
|
|
23
|
+
}
|
|
24
|
+
async setBlocked(blocked) {
|
|
25
|
+
if (blocked) {
|
|
26
|
+
await this.client.hSet(this.id, "blocked", "true");
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
await this.client.hSet(this.id, "blocked", "false");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async isBlocked() {
|
|
33
|
+
const blockedResult = await this.client.hGet(this.id, "blocked");
|
|
34
|
+
if (blockedResult === "true") {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
getId() {
|
|
40
|
+
return this.id;
|
|
41
|
+
}
|
|
42
|
+
async getJobs() {
|
|
43
|
+
const entries = await this.client.lRange(this.id + "-jobs", 0, -1);
|
|
44
|
+
return entries.map((e) => JSON.parse(e));
|
|
45
|
+
}
|
|
46
|
+
async addDependencies(job) {
|
|
47
|
+
if (await this.hasDependency(job)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
await this.client.lPush(this.id + "-deps", JSON.stringify(job));
|
|
51
|
+
await this.setBlocked(true);
|
|
52
|
+
}
|
|
53
|
+
async hasDependency(job) {
|
|
54
|
+
const deps = await this.client.lRange(this.id + "-deps", 0, -1);
|
|
55
|
+
return deps.some((d) => d === JSON.stringify(job));
|
|
56
|
+
}
|
|
57
|
+
async removeDependencies(job) {
|
|
58
|
+
await this.client.lRem(this.id + "-deps", 1, JSON.stringify(job));
|
|
59
|
+
const allDeps = await this.client.lLen(this.id + "-deps");
|
|
60
|
+
if (allDeps > 0) {
|
|
61
|
+
await this.setBlocked(true);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
await this.setBlocked(false);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async isDeleted() {
|
|
68
|
+
const active = await this.client.hGet("queues", this.id);
|
|
69
|
+
return active === "false";
|
|
70
|
+
}
|
|
71
|
+
async setDeleted(deleted) {
|
|
72
|
+
if (deleted) {
|
|
73
|
+
await this.client.hSet("queues", this.id, "false");
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
await this.client.hSet("queues", this.id, "true");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export class RedisQueueManager extends BaseQueueManager {
|
|
81
|
+
client;
|
|
82
|
+
constructor(workers = 3, timeout = 0, client) {
|
|
83
|
+
super(workers, timeout);
|
|
84
|
+
this.client = client;
|
|
85
|
+
}
|
|
86
|
+
async init(delegate, onError) {
|
|
87
|
+
await super.init(delegate, onError);
|
|
88
|
+
const queues = await this.client.hGetAll("queues");
|
|
89
|
+
for (const queueId in queues) {
|
|
90
|
+
const active = await this.client.hGet("queues", queueId);
|
|
91
|
+
if (active === "true") {
|
|
92
|
+
this.queues.push(new RedisQueue(queueId, this.client));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
getQueue(driveId, documentId) {
|
|
97
|
+
const queueId = this.getQueueId(driveId, documentId);
|
|
98
|
+
let queue = this.queues.find((q) => q.getId() === queueId);
|
|
99
|
+
if (!queue) {
|
|
100
|
+
queue = new RedisQueue(queueId, this.client);
|
|
101
|
+
this.queues.push(queue);
|
|
102
|
+
}
|
|
103
|
+
return queue;
|
|
104
|
+
}
|
|
105
|
+
removeQueue(driveId, documentId) {
|
|
106
|
+
super.removeQueue(driveId, documentId);
|
|
107
|
+
const queueId = this.getQueueId(driveId, documentId);
|
|
108
|
+
this.client.hDel("queues", queueId);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
123
111
|
//# sourceMappingURL=redis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/queue/redis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/queue/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
import { type AddOperationOptions, type IOperationResult } from "#server/types";
|
|
2
|
-
import type { Action, Operation
|
|
2
|
+
import type { Action, Operation } from "document-model";
|
|
3
3
|
import type { Unsubscribe } from "nanoevents";
|
|
4
4
|
export interface BaseJob {
|
|
5
|
-
|
|
5
|
+
driveId: string;
|
|
6
|
+
documentId?: string;
|
|
6
7
|
actions?: Action[];
|
|
7
8
|
options?: AddOperationOptions;
|
|
8
9
|
}
|
|
9
|
-
export interface DocumentJob extends Omit<BaseJob, "actions"> {
|
|
10
|
-
documentType: string;
|
|
11
|
-
initialState?: PHDocument;
|
|
12
|
-
}
|
|
13
10
|
export interface OperationJob extends BaseJob {
|
|
14
11
|
operations: Operation[];
|
|
15
12
|
}
|
|
16
13
|
export interface ActionJob extends BaseJob {
|
|
17
14
|
actions: Action[];
|
|
18
15
|
}
|
|
19
|
-
export type Job =
|
|
16
|
+
export type Job = OperationJob | ActionJob;
|
|
20
17
|
export type JobId = string;
|
|
21
18
|
export interface QueueEvents {
|
|
22
|
-
jobAdded: (job: IJob<Job>) => void;
|
|
23
|
-
jobStarted: (job: IJob<Job>) => void;
|
|
24
19
|
jobCompleted: (job: IJob<Job>, result: IOperationResult) => void;
|
|
25
20
|
jobFailed: (job: IJob<Job>, error: Error) => void;
|
|
26
|
-
queueRemoved: (
|
|
27
|
-
documentId: string;
|
|
28
|
-
scope: OperationScope;
|
|
29
|
-
}) => void;
|
|
21
|
+
queueRemoved: (queueId: string) => void;
|
|
30
22
|
}
|
|
31
23
|
export interface IServerDelegate {
|
|
32
24
|
exists: (documentId: string) => Promise<boolean>;
|
|
@@ -34,6 +26,10 @@ export interface IServerDelegate {
|
|
|
34
26
|
}
|
|
35
27
|
export interface IQueueManager {
|
|
36
28
|
addJob: (job: Job) => Promise<JobId>;
|
|
29
|
+
getQueue: (driveId: string, documentId?: string) => IQueue<Job>;
|
|
30
|
+
removeQueue: (driveId: string, documentId?: string) => void;
|
|
31
|
+
getQueueByIndex: (index: number) => IQueue<Job> | null;
|
|
32
|
+
getQueues: () => string[];
|
|
37
33
|
init: (delegate: IServerDelegate, onError: (error: Error) => void) => Promise<void>;
|
|
38
34
|
on: <K extends keyof QueueEvents>(this: this, event: K, cb: QueueEvents[K]) => Unsubscribe;
|
|
39
35
|
}
|
|
@@ -45,17 +41,15 @@ export interface IQueue<T> {
|
|
|
45
41
|
getNextJob(): Promise<IJob<T> | undefined>;
|
|
46
42
|
amountOfJobs(): Promise<number>;
|
|
47
43
|
getId(): string;
|
|
44
|
+
setBlocked(blocked: boolean): Promise<void>;
|
|
48
45
|
isBlocked(): Promise<boolean>;
|
|
49
46
|
isDeleted(): Promise<boolean>;
|
|
50
|
-
isRunning(): Promise<boolean>;
|
|
51
47
|
setDeleted(deleted: boolean): Promise<void>;
|
|
52
|
-
setRunning(running: boolean): Promise<void>;
|
|
53
48
|
getJobs(): Promise<IJob<T>[]>;
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
addDependencies: (job: IJob<Job>) => Promise<void>;
|
|
50
|
+
removeDependencies: (job: IJob<Job>) => Promise<void>;
|
|
56
51
|
}
|
|
57
52
|
export type IJobQueue = IQueue<Job>;
|
|
58
|
-
export declare function isDocumentJob(job: Job): job is DocumentJob;
|
|
59
53
|
export declare function isOperationJob(job: Job): job is OperationJob;
|
|
60
54
|
export declare function isActionJob(job: Job): job is ActionJob;
|
|
61
55
|
//# sourceMappingURL=types.d.ts.map
|