document-drive 4.0.4 → 4.1.0-dev.10
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 +1 -2
- 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/drive/actions.d.ts +34 -10
- package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/actions.d.ts +30 -9
- package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.d.ts +6 -2
- package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.js +8 -1
- package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/reducer.js +32 -31
- package/dist/src/drive-document-model/gen/reducer.js.map +1 -1
- package/dist/src/drive-document-model/gen/schema/types.d.ts +1 -14
- 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 +1 -5
- package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.js +0 -12
- package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
- package/dist/src/drive-document-model/gen/types.d.ts +17 -5
- 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 +2 -1
- 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 +1 -25
- package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js +1 -23
- 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 +0 -32
- package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/node.test.js +4 -0
- package/dist/src/drive-document-model/src/tests/node.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/utils.test.js +7 -37
- package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
- package/dist/src/drive-document-model/src/utils.d.ts +2 -8
- package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/utils.js +6 -55
- package/dist/src/drive-document-model/src/utils.js.map +1 -1
- package/dist/src/processors/types.d.ts +2 -1
- package/dist/src/processors/types.d.ts.map +1 -1
- package/dist/src/queue/base.d.ts +6 -27
- package/dist/src/queue/base.d.ts.map +1 -1
- package/dist/src/queue/base.js +15 -203
- package/dist/src/queue/base.js.map +1 -1
- package/dist/src/queue/event.d.ts +41 -0
- package/dist/src/queue/event.d.ts.map +1 -0
- package/dist/src/queue/event.js +222 -0
- package/dist/src/queue/event.js.map +1 -0
- package/dist/src/queue/redis.d.ts +1 -27
- package/dist/src/queue/redis.d.ts.map +1 -1
- package/dist/src/queue/redis.js +122 -110
- package/dist/src/queue/redis.js.map +1 -1
- package/dist/src/queue/types.d.ts +18 -12
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js +3 -0
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/read-mode/server.js.map +1 -1
- package/dist/src/read-mode/types.d.ts.map +1 -1
- package/dist/src/server/base-server.d.ts +90 -13
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +552 -250
- 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 +5 -6
- package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
- package/dist/src/server/listener/listener-manager.js +62 -79
- package/dist/src/server/listener/listener-manager.js.map +1 -1
- package/dist/src/server/listener/transmitter/internal.d.ts +4 -4
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/internal.js +18 -13
- 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 +14 -8
- 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 +13 -8
- package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
- package/dist/src/server/listener/util.d.ts +1 -1
- package/dist/src/server/listener/util.d.ts.map +1 -1
- package/dist/src/server/listener/util.js +1 -1
- package/dist/src/server/listener/util.js.map +1 -1
- package/dist/src/server/sync-manager.d.ts +8 -10
- package/dist/src/server/sync-manager.d.ts.map +1 -1
- package/dist/src/server/sync-manager.js +62 -147
- package/dist/src/server/sync-manager.js.map +1 -1
- package/dist/src/server/sync-unit-map.d.ts +137 -0
- package/dist/src/server/sync-unit-map.d.ts.map +1 -0
- package/dist/src/server/sync-unit-map.js +234 -0
- package/dist/src/server/sync-unit-map.js.map +1 -0
- package/dist/src/server/types.d.ts +122 -38
- 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 +12 -3
- package/dist/src/server/utils.d.ts.map +1 -1
- package/dist/src/server/utils.js +44 -1
- package/dist/src/server/utils.js.map +1 -1
- package/dist/src/storage/browser.d.ts +8 -4
- package/dist/src/storage/browser.d.ts.map +1 -1
- package/dist/src/storage/browser.js +80 -22
- package/dist/src/storage/browser.js.map +1 -1
- package/dist/src/storage/filesystem.d.ts +8 -4
- package/dist/src/storage/filesystem.d.ts.map +1 -1
- package/dist/src/storage/filesystem.js +79 -22
- package/dist/src/storage/filesystem.js.map +1 -1
- package/dist/src/storage/ipfs.d.ts.map +1 -1
- package/dist/src/storage/ipfs.js.map +1 -1
- package/dist/src/storage/memory.d.ts +9 -5
- package/dist/src/storage/memory.d.ts.map +1 -1
- package/dist/src/storage/memory.js +76 -22
- package/dist/src/storage/memory.js.map +1 -1
- package/dist/src/storage/prisma/client/edge.js +5 -4
- package/dist/src/storage/prisma/client/index-browser.js +2 -1
- package/dist/src/storage/prisma/client/index.d.ts +58 -249
- package/dist/src/storage/prisma/client/index.js +5 -4
- package/dist/src/storage/prisma/client/package.json +1 -1
- package/dist/src/storage/prisma/client/schema.prisma +2 -3
- package/dist/src/storage/prisma/client/wasm.js +2 -1
- package/dist/src/storage/prisma/prisma.d.ts +13 -8
- package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.js +119 -51
- package/dist/src/storage/prisma/prisma.js.map +1 -1
- package/dist/src/storage/types.d.ts +45 -6
- package/dist/src/storage/types.d.ts.map +1 -1
- package/dist/src/storage/utils.d.ts +3 -0
- package/dist/src/storage/utils.d.ts.map +1 -1
- package/dist/src/storage/utils.js +14 -0
- package/dist/src/storage/utils.js.map +1 -1
- package/dist/src/utils/default-drives-manager.d.ts.map +1 -1
- package/dist/src/utils/default-drives-manager.js.map +1 -1
- package/dist/src/utils/gql-transformations.d.ts +14 -5
- package/dist/src/utils/gql-transformations.d.ts.map +1 -1
- package/dist/src/utils/gql-transformations.js +1 -0
- package/dist/src/utils/gql-transformations.js.map +1 -1
- package/dist/src/utils/graphql.d.ts +2 -2
- package/dist/src/utils/graphql.d.ts.map +1 -1
- package/dist/src/utils/migrations.d.ts.map +1 -1
- package/dist/src/utils/migrations.js.map +1 -1
- package/dist/src/utils/misc.d.ts +4 -2
- package/dist/src/utils/misc.d.ts.map +1 -1
- package/dist/src/utils/misc.js +4 -0
- package/dist/src/utils/misc.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/package.json +5 -4
- package/dist/test/cache.test.d.ts +0 -2
- package/dist/test/cache.test.d.ts.map +0 -1
- package/dist/test/cache.test.js +0 -281
- package/dist/test/cache.test.js.map +0 -1
- package/dist/test/default-remote-drives.test.d.ts +0 -2
- package/dist/test/default-remote-drives.test.d.ts.map +0 -1
- package/dist/test/default-remote-drives.test.js +0 -446
- package/dist/test/default-remote-drives.test.js.map +0 -1
- package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
- package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
- package/dist/test/document-helpers/addUndo.test.js +0 -120
- package/dist/test/document-helpers/addUndo.test.js.map +0 -1
- package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
- package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
- package/dist/test/document-helpers/attachBranch.test.js +0 -333
- package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
- package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
- package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
- package/dist/test/document-helpers/garbageCollect.test.js +0 -136
- package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
- package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -98
- package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
- package/dist/test/document-helpers/merge.test.d.ts +0 -2
- package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
- package/dist/test/document-helpers/merge.test.js +0 -757
- package/dist/test/document-helpers/merge.test.js.map +0 -1
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
- package/dist/test/document-helpers/nextSkipNumber.test.js +0 -123
- package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
- package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/prepareOperations.test.js +0 -304
- package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/removeExistingOperations.test.js +0 -150
- package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
- package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
- package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
- package/dist/test/document-helpers/sortOperations.test.js +0 -101
- package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
- package/dist/test/document-helpers/split.test.d.ts +0 -2
- package/dist/test/document-helpers/split.test.d.ts.map +0 -1
- package/dist/test/document-helpers/split.test.js +0 -121
- package/dist/test/document-helpers/split.test.js.map +0 -1
- package/dist/test/document-helpers/utils.d.ts +0 -8
- package/dist/test/document-helpers/utils.d.ts.map +0 -1
- package/dist/test/document-helpers/utils.js +0 -22
- package/dist/test/document-helpers/utils.js.map +0 -1
- package/dist/test/drive-operations.test.d.ts +0 -2
- package/dist/test/drive-operations.test.d.ts.map +0 -1
- package/dist/test/drive-operations.test.js +0 -145
- package/dist/test/drive-operations.test.js.map +0 -1
- package/dist/test/graphql.test.d.ts +0 -2
- package/dist/test/graphql.test.d.ts.map +0 -1
- package/dist/test/graphql.test.js +0 -10
- package/dist/test/graphql.test.js.map +0 -1
- package/dist/test/internal-listener.test.d.ts +0 -2
- package/dist/test/internal-listener.test.d.ts.map +0 -1
- package/dist/test/internal-listener.test.js +0 -277
- package/dist/test/internal-listener.test.js.map +0 -1
- package/dist/test/queue.test.d.ts +0 -2
- package/dist/test/queue.test.d.ts.map +0 -1
- package/dist/test/queue.test.js +0 -338
- package/dist/test/queue.test.js.map +0 -1
- package/dist/test/read-mode.test.d.ts +0 -2
- package/dist/test/read-mode.test.d.ts.map +0 -1
- package/dist/test/read-mode.test.js +0 -578
- package/dist/test/read-mode.test.js.map +0 -1
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts +0 -2
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +0 -1
- package/dist/test/server/driveOperationsConflictResolution.test.js +0 -460
- package/dist/test/server/driveOperationsConflictResolution.test.js.map +0 -1
- package/dist/test/server/mergeOperations.test.d.ts +0 -2
- package/dist/test/server/mergeOperations.test.d.ts.map +0 -1
- package/dist/test/server/mergeOperations.test.js +0 -107
- package/dist/test/server/mergeOperations.test.js.map +0 -1
- package/dist/test/server/processOperations.test.d.ts +0 -2
- package/dist/test/server/processOperations.test.d.ts.map +0 -1
- package/dist/test/server/processOperations.test.js +0 -380
- package/dist/test/server/processOperations.test.js.map +0 -1
- package/dist/test/server.test.d.ts +0 -2
- package/dist/test/server.test.d.ts.map +0 -1
- package/dist/test/server.test.js +0 -899
- package/dist/test/server.test.js.map +0 -1
- package/dist/test/signature-migration.test.d.ts +0 -2
- package/dist/test/signature-migration.test.d.ts.map +0 -1
- package/dist/test/signature-migration.test.js +0 -239
- package/dist/test/signature-migration.test.js.map +0 -1
- package/dist/test/storage.test.d.ts +0 -2
- package/dist/test/storage.test.d.ts.map +0 -1
- package/dist/test/storage.test.js +0 -523
- package/dist/test/storage.test.js.map +0 -1
- package/dist/test/utils.d.ts +0 -48
- package/dist/test/utils.d.ts.map +0 -1
- package/dist/test/utils.js +0 -133
- package/dist/test/utils.js.map +0 -1
- package/dist/test/utils.test.d.ts +0 -2
- package/dist/test/utils.test.d.ts.map +0 -1
- package/dist/test/utils.test.js +0 -89
- package/dist/test/utils.test.js.map +0 -1
- package/dist/test/vitest-setup.d.ts +0 -2
- package/dist/test/vitest-setup.d.ts.map +0 -1
- package/dist/test/vitest-setup.js +0 -5
- package/dist/test/vitest-setup.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -27
- package/dist/vitest.config.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../../src/drive-document-model/src/tests/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../../src/drive-document-model/src/tests/utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type AddFileAction, type CopyNodeAction } from "../gen/node/actions.js";
|
|
3
|
-
import { type AddFileInput, type CopyNodeInput, type DocumentDriveState, type FileNode, type FolderNode, type Node, type SynchronizationUnit } from "../gen/types.js";
|
|
1
|
+
import { type CopyNodeInput, type FileNode, type FolderNode, type Node } from "../gen/types.js";
|
|
4
2
|
export declare function isFileNode(node: Node): node is FileNode;
|
|
5
3
|
export declare function isFolderNode(node: Node): node is FolderNode;
|
|
6
4
|
export declare function getAncestors(node: Node, allNodes: Node[]): Node[];
|
|
@@ -10,7 +8,7 @@ export type GenerateNodesCopySrc = {
|
|
|
10
8
|
targetName?: Node["name"];
|
|
11
9
|
targetParentFolder?: Node["parentFolder"];
|
|
12
10
|
};
|
|
13
|
-
export type GenerateNodesCopyIdGenerator = (
|
|
11
|
+
export type GenerateNodesCopyIdGenerator = (nodeToCopy: Node) => Node["id"];
|
|
14
12
|
/**
|
|
15
13
|
* Generates a copy of nodes based on the provided source and target information.
|
|
16
14
|
* @param src - The source information for generating the copy.
|
|
@@ -20,10 +18,6 @@ export type GenerateNodesCopyIdGenerator = (prevId: Node["id"]) => Node["id"];
|
|
|
20
18
|
* @throws Error if the root node with the specified ID is not found.
|
|
21
19
|
*/
|
|
22
20
|
export declare function generateNodesCopy(src: GenerateNodesCopySrc, idGenerator: GenerateNodesCopyIdGenerator, nodes: Node[]): CopyNodeInput[];
|
|
23
|
-
export declare function generateSynchronizationUnitId(nodes: DocumentDriveState["nodes"]): string;
|
|
24
|
-
export declare function generateSynchronizationUnits(state: DocumentDriveState, scopes: OperationScope[], branch?: string): SynchronizationUnit[];
|
|
25
|
-
export declare function generateAddNodeAction(state: DocumentDriveState, action: Omit<AddFileInput, "synchronizationUnits">, scopes: OperationScope[]): AddFileAction;
|
|
26
|
-
export declare function generateCopyNodeAction(state: DocumentDriveState, action: Omit<CopyNodeInput, "synchronizationUnits">): CopyNodeAction;
|
|
27
21
|
export declare function getNextCopyNumber(files: string[], baseFilename: string): number;
|
|
28
22
|
export declare function escapeRegExp(string: string): string;
|
|
29
23
|
export declare function handleTargetNameCollisions(params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/drive-document-model/src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/drive-document-model/src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,IAAI,EACV,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,QAAQ,CAEvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,UAAU,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAUjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAInE;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,kBAAkB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,oBAAoB,EACzB,WAAW,EAAE,4BAA4B,EACzC,KAAK,EAAE,IAAI,EAAE,GACZ,aAAa,EAAE,CA2CjB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAmBR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UAE1C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB,UAkBA"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { generateId } from "document-model";
|
|
2
|
-
import { addFile, copyNode } from "../gen/node/creators.js";
|
|
3
1
|
export function isFileNode(node) {
|
|
4
2
|
return node.kind === "file";
|
|
5
3
|
}
|
|
@@ -49,70 +47,23 @@ export function generateNodesCopy(src, idGenerator, nodes) {
|
|
|
49
47
|
if (src.targetParentFolder) {
|
|
50
48
|
ids[src.targetParentFolder] = src.targetParentFolder;
|
|
51
49
|
}
|
|
52
|
-
const getNewNodeId = (
|
|
53
|
-
let newId = ids[id];
|
|
50
|
+
const getNewNodeId = (node) => {
|
|
51
|
+
let newId = ids[node.id];
|
|
54
52
|
if (!newId) {
|
|
55
|
-
const oldId = id;
|
|
56
|
-
newId = idGenerator(
|
|
53
|
+
const oldId = node.id;
|
|
54
|
+
newId = idGenerator(node);
|
|
57
55
|
ids[oldId] = newId;
|
|
58
56
|
}
|
|
59
57
|
return newId;
|
|
60
58
|
};
|
|
61
59
|
const copyNodesInput = nodesToCopy.map((node) => ({
|
|
62
60
|
srcId: node.id,
|
|
63
|
-
targetId: getNewNodeId(node
|
|
61
|
+
targetId: getNewNodeId(node),
|
|
64
62
|
targetName: node.name,
|
|
65
|
-
targetParentFolder: node.parentFolder
|
|
66
|
-
? getNewNodeId(node.parentFolder)
|
|
67
|
-
: null,
|
|
68
|
-
synchronizationUnits: isFileNode(node)
|
|
69
|
-
? node.synchronizationUnits.map((unit) => ({
|
|
70
|
-
...unit,
|
|
71
|
-
syncId: generateSynchronizationUnitId(nodes),
|
|
72
|
-
}))
|
|
73
|
-
: undefined,
|
|
63
|
+
targetParentFolder: node.parentFolder ? ids[node.parentFolder] : null,
|
|
74
64
|
}));
|
|
75
65
|
return copyNodesInput;
|
|
76
66
|
}
|
|
77
|
-
export function generateSynchronizationUnitId(nodes) {
|
|
78
|
-
let syncId = "";
|
|
79
|
-
while (!syncId ||
|
|
80
|
-
nodes.find((node) => isFileNode(node) &&
|
|
81
|
-
node.synchronizationUnits.find((unit) => unit.syncId === syncId))) {
|
|
82
|
-
syncId = generateId();
|
|
83
|
-
}
|
|
84
|
-
return syncId;
|
|
85
|
-
}
|
|
86
|
-
export function generateSynchronizationUnits(state, scopes, branch = "main") {
|
|
87
|
-
return scopes.map((scope) => ({
|
|
88
|
-
scope,
|
|
89
|
-
branch,
|
|
90
|
-
syncId: generateSynchronizationUnitId(state.nodes),
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
export function generateAddNodeAction(state, action, scopes) {
|
|
94
|
-
return addFile({
|
|
95
|
-
...action,
|
|
96
|
-
synchronizationUnits: generateSynchronizationUnits(state, scopes),
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
export function generateCopyNodeAction(state, action) {
|
|
100
|
-
const originalNode = state.nodes.find((node) => node.id === action.srcId);
|
|
101
|
-
if (!originalNode) {
|
|
102
|
-
throw new Error(`Node with id ${action.srcId} not found`);
|
|
103
|
-
}
|
|
104
|
-
let synchronizationUnits = undefined;
|
|
105
|
-
if (isFileNode(originalNode)) {
|
|
106
|
-
synchronizationUnits = originalNode.synchronizationUnits.map((syncUnit) => ({
|
|
107
|
-
...syncUnit,
|
|
108
|
-
syncId: generateSynchronizationUnitId(state.nodes),
|
|
109
|
-
}));
|
|
110
|
-
}
|
|
111
|
-
return copyNode({
|
|
112
|
-
...action,
|
|
113
|
-
synchronizationUnits,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
67
|
export function getNextCopyNumber(files, baseFilename) {
|
|
117
68
|
let maxNumber = 0; // Start by assuming no copies exist
|
|
118
69
|
// Regex to find files that match the base filename followed by " (copy)" and possibly a number
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/drive-document-model/src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/drive-document-model/src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type ListenerFilter } from "#drive-document-model/gen/schema/types";
|
|
2
2
|
import { type InternalTransmitterUpdate } from "#server/listener/transmitter/internal";
|
|
3
|
-
import { type IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
|
|
4
3
|
import { type PHDocument } from "document-model";
|
|
5
4
|
import { type Kysely, type QueryCreator } from "kysely";
|
|
6
5
|
import { type ExtractProcessorSchemaOrSelf } from "./relational.js";
|
|
6
|
+
type IAnalyticsStore = any;
|
|
7
7
|
export type IRelationalQueryMethods = "selectFrom" | "selectNoFrom" | "with" | "withRecursive";
|
|
8
8
|
export type IRelationalQueryBuilder<Schema = unknown> = Pick<QueryCreator<Schema>, IRelationalQueryMethods> & {
|
|
9
9
|
withSchema: (schema: string) => IRelationalQueryBuilder<Schema>;
|
|
@@ -79,4 +79,5 @@ export interface IProcessorManager {
|
|
|
79
79
|
*/
|
|
80
80
|
registerDrive(driveId: string): Promise<void>;
|
|
81
81
|
}
|
|
82
|
+
export {};
|
|
82
83
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAGpE,KAAK,eAAe,GAAG,GAAG,CAAC;AAE3B,MAAM,MAAM,uBAAuB,GAC/B,YAAY,GACZ,cAAc,GACd,MAAM,GACN,eAAe,CAAC;AAEpB,MAAM,MAAM,uBAAuB,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAC1D,YAAY,CAAC,MAAM,CAAC,EACpB,uBAAuB,CACxB,GAAG;IACF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjE;;;;IAII;AACJ,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG;IACxE,eAAe,CAAC,eAAe,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzE,cAAc,CAAC,eAAe,EAC5B,SAAS,EAAE,MAAM,GAChB,uBAAuB,CAAC,eAAe,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,SAAS,CAAC,SAAS,SAAS,UAAU,EACpC,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,MAAM,KACZ,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C"}
|
package/dist/src/queue/base.d.ts
CHANGED
|
@@ -1,43 +1,22 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type IJob, type IJobQueue, type IQueue, type IQueueManager, type IServerDelegate, type Job, type JobId, type QueueEvents } from "./types.js";
|
|
1
|
+
import { type IJob, type IQueue, type Job } from "./types.js";
|
|
3
2
|
export declare class MemoryQueue<T> implements IQueue<T> {
|
|
4
3
|
private id;
|
|
5
|
-
private
|
|
4
|
+
private running;
|
|
6
5
|
private deleted;
|
|
7
6
|
private items;
|
|
8
7
|
private dependencies;
|
|
9
8
|
constructor(id: string);
|
|
9
|
+
isRunning(): Promise<boolean>;
|
|
10
|
+
setRunning(running: boolean): Promise<void>;
|
|
10
11
|
setDeleted(deleted: boolean): Promise<void>;
|
|
11
12
|
isDeleted(): Promise<boolean>;
|
|
12
13
|
addJob(data: IJob<T>): Promise<void>;
|
|
13
14
|
getNextJob(): Promise<IJob<T> | undefined>;
|
|
14
15
|
amountOfJobs(): Promise<number>;
|
|
15
16
|
getId(): string;
|
|
16
|
-
setBlocked(blocked: boolean): Promise<void>;
|
|
17
17
|
isBlocked(): Promise<boolean>;
|
|
18
18
|
getJobs(): Promise<IJob<T>[]>;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
export declare class BaseQueueManager implements IQueueManager {
|
|
23
|
-
protected emitter: import("nanoevents").Emitter<QueueEvents>;
|
|
24
|
-
protected ticker: number;
|
|
25
|
-
protected queues: IJobQueue[];
|
|
26
|
-
protected workers: number;
|
|
27
|
-
protected timeout: number;
|
|
28
|
-
private delegate;
|
|
29
|
-
constructor(workers?: number, timeout?: number);
|
|
30
|
-
init(delegate: IServerDelegate, onError: (error: Error) => void): Promise<void>;
|
|
31
|
-
addJob(job: Job): Promise<JobId>;
|
|
32
|
-
getQueue(driveId: string, documentId?: string): IJobQueue;
|
|
33
|
-
removeQueue(driveId: string, documentId?: string): void;
|
|
34
|
-
getQueueByIndex(index: number): IJobQueue | null;
|
|
35
|
-
getQueues(): string[];
|
|
36
|
-
private retryNextJob;
|
|
37
|
-
private findFirstNonEmptyQueue;
|
|
38
|
-
private processNextJob;
|
|
39
|
-
protected emit<K extends keyof QueueEvents>(event: K, ...args: Parameters<QueueEvents[K]>): void;
|
|
40
|
-
on<K extends keyof QueueEvents>(event: K, cb: QueueEvents[K]): Unsubscribe;
|
|
41
|
-
protected getQueueId(driveId: string, documentId?: string): string;
|
|
19
|
+
addDependency(job: IJob<Job>): Promise<void>;
|
|
20
|
+
removeDependency(job: IJob<Job>): Promise<void>;
|
|
42
21
|
}
|
|
43
22
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,GAAG,EAAc,MAAM,YAAY,CAAC;AAE1E,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,EAAE,EAAE,MAAM;IAGhB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAG7B,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,SAAS;IAIT,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAKpB,UAAU;IAKV,YAAY;IAIlB,KAAK;IAIC,SAAS;IAIT,OAAO;IAIP,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAM5B,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;CAMtC"}
|
package/dist/src/queue/base.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
45
|
-
if (!this.dependencies.
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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":"AAEA,
|
|
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,41 @@
|
|
|
1
|
+
import { type IOperationResult } from "#server/types";
|
|
2
|
+
import { type Unsubscribe } from "nanoevents";
|
|
3
|
+
import { type IJob, type IJobQueue, type IQueueManager, type IServerDelegate, type Job, type JobId, type QueueEvents } from "./types.js";
|
|
4
|
+
interface EnqueuedJob {
|
|
5
|
+
jobId: string;
|
|
6
|
+
documentId: string;
|
|
7
|
+
scope: string;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class EventQueueManager implements IQueueManager {
|
|
11
|
+
protected logger: import("#utils/logger").ILogger;
|
|
12
|
+
protected emitter: import("nanoevents").Emitter<QueueEvents>;
|
|
13
|
+
protected queues: Map<string, Map<string, IJobQueue>>;
|
|
14
|
+
protected globalQueue: EnqueuedJob[];
|
|
15
|
+
protected isFindingJob: boolean;
|
|
16
|
+
protected maxWorkers: number;
|
|
17
|
+
protected workers: number;
|
|
18
|
+
protected runningJobs: IJob<Job>[];
|
|
19
|
+
protected timeout: number;
|
|
20
|
+
protected delegate: IServerDelegate | undefined;
|
|
21
|
+
protected onError: ((error: Error) => void) | undefined;
|
|
22
|
+
constructor(maxWorkers?: number, timeout?: number);
|
|
23
|
+
init(delegate: IServerDelegate, onError: (error: Error) => void): Promise<void>;
|
|
24
|
+
addJob(job: Job): Promise<JobId>;
|
|
25
|
+
getQueue(documentId: string, scope: string): IJobQueue;
|
|
26
|
+
getDocumentQueues(documentId: string): Map<string, IJobQueue> | undefined;
|
|
27
|
+
removeQueue(documentId: string, scope: string): boolean | undefined;
|
|
28
|
+
removeDocumentQueues(documentId: string): void;
|
|
29
|
+
protected removeJob(job: IJob<Job>): void;
|
|
30
|
+
protected handleJobCompleted(job: IJob<Job>, result: IOperationResult): Promise<void>;
|
|
31
|
+
protected isBusy(): boolean;
|
|
32
|
+
protected processNextJob(): Promise<void>;
|
|
33
|
+
protected findNextJob(): Promise<{
|
|
34
|
+
queue: IJobQueue;
|
|
35
|
+
job: IJob<Job>;
|
|
36
|
+
} | undefined>;
|
|
37
|
+
protected emit<K extends keyof QueueEvents>(event: K, ...args: Parameters<QueueEvents[K]>): void;
|
|
38
|
+
on<K extends keyof QueueEvents>(event: K, cb: QueueEvents[K]): Unsubscribe;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
41
|
+
//# 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;AAGtD,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,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACrD,SAAS,CAAC,MAAM,kCAAsC;IACtD,SAAS,CAAC,OAAO,4CAAmC;IACpD,SAAS,CAAC,MAAM,sCAA4C;IAC5D,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,MAAM;IAgB1C,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAIpC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAS7C,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"}
|