document-drive 1.29.8-dev.1 → 1.29.8-dev.3
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 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/src/processors/processor-manager.d.ts +13 -0
- package/dist/src/processors/processor-manager.d.ts.map +1 -0
- package/dist/src/processors/processor-manager.js +57 -0
- package/dist/src/processors/types.d.ts +61 -0
- package/dist/src/processors/types.d.ts.map +1 -0
- package/dist/src/processors/types.js +1 -0
- package/dist/src/queue/base.d.ts.map +1 -1
- package/dist/src/queue/base.js +1 -2
- package/dist/src/queue/types.d.ts +1 -1
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/server/base-server.d.ts +1 -1
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +21 -7
- package/dist/src/server/listener/transmitter/internal.d.ts +4 -8
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/internal.js +5 -7
- package/dist/src/server/sync-manager.d.ts +1 -1
- package/dist/src/server/sync-manager.d.ts.map +1 -1
- package/dist/src/storage/browser.d.ts +0 -4
- package/dist/src/storage/browser.d.ts.map +1 -1
- package/dist/src/storage/browser.js +4 -29
- package/dist/src/storage/filesystem.d.ts +0 -4
- package/dist/src/storage/filesystem.d.ts.map +1 -1
- package/dist/src/storage/filesystem.js +3 -45
- package/dist/src/storage/ipfs.d.ts +0 -4
- package/dist/src/storage/ipfs.d.ts.map +1 -1
- package/dist/src/storage/ipfs.js +4 -49
- package/dist/src/storage/memory.d.ts +0 -4
- package/dist/src/storage/memory.d.ts.map +1 -1
- package/dist/src/storage/memory.js +1 -17
- package/dist/src/storage/prisma/prisma.d.ts +0 -4
- package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.js +1 -43
- package/dist/src/storage/types.d.ts +50 -4
- package/dist/src/storage/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type { DocumentDriveDocument, DocumentDriveLocalState, DocumentDriveState
|
|
|
7
7
|
export { createState as createDriveState } from "#drive-document-model/gen/utils";
|
|
8
8
|
export { driveDocumentModelModule } from "#drive-document-model/module";
|
|
9
9
|
export { generateAddNodeAction, generateNodesCopy, isFileNode, isFolderNode, } from "#drive-document-model/src/utils";
|
|
10
|
+
export type { IProcessor } from "#processors/types";
|
|
10
11
|
export { BaseQueueManager } from "#queue/base";
|
|
11
12
|
export { ReadDocumentNotFoundError, ReadDriveNotFoundError, ReadDriveSlugNotFoundError, } from "#read-mode/errors";
|
|
12
13
|
export type { IReadModeDriveServer, ReadDrive, ReadDriveContext, ReadDrivesListener, ReadDrivesListenerUnsubscribe, } from "#read-mode/types";
|
|
@@ -14,7 +15,7 @@ export { BaseDocumentDriveServer, DocumentDriveServer, } from "#server/base-serv
|
|
|
14
15
|
export { ReactorBuilder } from "#server/builder";
|
|
15
16
|
export { DocumentModelNotFoundError, DriveAlreadyExistsError, SynchronizationUnitNotFoundError, } from "#server/error";
|
|
16
17
|
export { InternalTransmitter } from "#server/listener/transmitter/internal";
|
|
17
|
-
export type { InternalTransmitterUpdate
|
|
18
|
+
export type { InternalTransmitterUpdate } from "#server/listener/transmitter/internal";
|
|
18
19
|
export { PullResponderTransmitter } from "#server/listener/transmitter/pull-responder";
|
|
19
20
|
export type { StrandUpdateGraphQL } from "#server/listener/transmitter/pull-responder";
|
|
20
21
|
export type { PullResponderTrigger } from "#server/listener/transmitter/types";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EACL,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,OAAO,GACR,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,IAAI,GACL,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,YAAY,GACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EACL,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,OAAO,GACR,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,IAAI,GACL,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,YAAY,GACb,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,YAAY,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,YAAY,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACvF,YAAY,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,MAAM,EACN,eAAe,EACf,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type IProcessorManager, type ProcessorFactory } from "document-drive/processors/types";
|
|
2
|
+
import { type IDocumentDriveServer, type IListenerManager } from "document-drive/server/types";
|
|
3
|
+
export declare class ProcessorManager implements IProcessorManager {
|
|
4
|
+
private listeners;
|
|
5
|
+
private drive;
|
|
6
|
+
private idToFactory;
|
|
7
|
+
private identifierToListeners;
|
|
8
|
+
constructor(listeners: IListenerManager, drive: IDocumentDriveServer);
|
|
9
|
+
registerFactory(identifier: string, factory: ProcessorFactory): Promise<void>;
|
|
10
|
+
unregisterFactory(identifier: string): Promise<void>;
|
|
11
|
+
registerDrive(driveId: string): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=processor-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor-manager.d.ts","sourceRoot":"","sources":["../../../src/processors/processor-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAEtB,MAAM,6BAA6B,CAAC;AAGrC,qBAAa,gBAAiB,YAAW,iBAAiB;IAKtD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IALf,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,qBAAqB,CAAiC;gBAGpD,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,oBAAoB;IAK/B,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAUV,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD,aAAa,CAAC,OAAO,EAAE,MAAM;CAiCpC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { InternalTransmitter } from "document-drive/server/listener/transmitter/internal";
|
|
2
|
+
import { generateId } from "document-model";
|
|
3
|
+
export class ProcessorManager {
|
|
4
|
+
listeners;
|
|
5
|
+
drive;
|
|
6
|
+
idToFactory = new Map();
|
|
7
|
+
identifierToListeners = new Map();
|
|
8
|
+
constructor(listeners, drive) {
|
|
9
|
+
this.listeners = listeners;
|
|
10
|
+
this.drive = drive;
|
|
11
|
+
//
|
|
12
|
+
}
|
|
13
|
+
async registerFactory(identifier, factory) {
|
|
14
|
+
this.idToFactory.set(identifier, factory);
|
|
15
|
+
// iterate over all drives and register the factory
|
|
16
|
+
const driveIds = await this.drive.getDrives();
|
|
17
|
+
for (const driveId of driveIds) {
|
|
18
|
+
await this.registerDrive(driveId);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async unregisterFactory(identifier) {
|
|
22
|
+
// remove all listeners for this identifier
|
|
23
|
+
const listeners = this.identifierToListeners.get(identifier) ?? [];
|
|
24
|
+
for (const listener of listeners) {
|
|
25
|
+
this.listeners.removeListener(listener.driveId, listener.listenerId);
|
|
26
|
+
if (listener.transmitter?.disconnect) {
|
|
27
|
+
await listener.transmitter.disconnect();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
this.identifierToListeners.set(identifier, []);
|
|
31
|
+
}
|
|
32
|
+
async registerDrive(driveId) {
|
|
33
|
+
// iterate over all factories and create listeners
|
|
34
|
+
await Promise.all(Object.entries(this.idToFactory).map(([identifier, factory]) => {
|
|
35
|
+
let listeners = this.identifierToListeners.get(identifier) ?? [];
|
|
36
|
+
if (!listeners) {
|
|
37
|
+
listeners = [];
|
|
38
|
+
this.identifierToListeners.set(identifier, listeners);
|
|
39
|
+
}
|
|
40
|
+
const processors = factory(driveId);
|
|
41
|
+
for (const { filter, processor } of processors) {
|
|
42
|
+
const id = generateId();
|
|
43
|
+
const listener = {
|
|
44
|
+
driveId,
|
|
45
|
+
listenerId: id,
|
|
46
|
+
block: false,
|
|
47
|
+
system: false,
|
|
48
|
+
filter,
|
|
49
|
+
callInfo: undefined,
|
|
50
|
+
transmitter: new InternalTransmitter(this.drive, processor),
|
|
51
|
+
};
|
|
52
|
+
this.listeners.setListener(driveId, listener);
|
|
53
|
+
listeners.push(listener);
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type ListenerFilter } from "#drive-document-model/gen/schema/types";
|
|
2
|
+
import { type InternalTransmitterUpdate } from "#server/listener/transmitter/internal";
|
|
3
|
+
import { type PHDocument } from "document-model";
|
|
4
|
+
/**
|
|
5
|
+
* Describes an object that can process strands.
|
|
6
|
+
*/
|
|
7
|
+
export interface IProcessor {
|
|
8
|
+
/**
|
|
9
|
+
* Processes a list of strands.
|
|
10
|
+
*
|
|
11
|
+
* @param strands The strands to process.
|
|
12
|
+
*/
|
|
13
|
+
onStrands<TDocument extends PHDocument>(strands: InternalTransmitterUpdate<TDocument>[]): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Called when the processor is disconnected. This is generally meant to
|
|
16
|
+
* clean up any resources that were allocated when the processor was created.
|
|
17
|
+
*/
|
|
18
|
+
onDisconnect(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Relates a processor to a listener filter.
|
|
22
|
+
*/
|
|
23
|
+
export type ProcessorRecord = {
|
|
24
|
+
processor: IProcessor;
|
|
25
|
+
filter: ListenerFilter;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A factory function that returns a list of processor records for a given drive.
|
|
29
|
+
*
|
|
30
|
+
* @param driveId The drive to create processors for.
|
|
31
|
+
* @returns A list of processor records.
|
|
32
|
+
*/
|
|
33
|
+
export type ProcessorFactory = (driveId: string) => ProcessorRecord[];
|
|
34
|
+
/**
|
|
35
|
+
* Manages processor creation and destruction.
|
|
36
|
+
*/
|
|
37
|
+
export interface IProcessorManager {
|
|
38
|
+
/**
|
|
39
|
+
* Registers a processor factory for a given identifier. This will create
|
|
40
|
+
* processors for all drives that have already been registered.
|
|
41
|
+
*
|
|
42
|
+
* @param identifier Any identifier to associate with the factory.
|
|
43
|
+
* @param factory The factory to register.
|
|
44
|
+
*/
|
|
45
|
+
registerFactory(identifier: string, factory: ProcessorFactory): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Unregisters a processor factory for a given identifier. This will remove
|
|
48
|
+
* all listeners that were created by the factory.
|
|
49
|
+
*
|
|
50
|
+
* @param identifier The identifier to unregister.
|
|
51
|
+
*/
|
|
52
|
+
unregisterFactory(identifier: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Registers a drive with the processor manager. This will create processors
|
|
55
|
+
* for the drive for all factories that have already been registered.
|
|
56
|
+
*
|
|
57
|
+
* @param driveId The drive to register.
|
|
58
|
+
*/
|
|
59
|
+
registerDrive(driveId: string): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;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,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,EAAE,CAAC;AAEtE;;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EACL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EAEpB,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,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,CAA0B;gBAElC,EAAE,EAAE,MAAM;IAIhB,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,SAAS;IAIT,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAKpB,UAAU;IAKV,YAAY;IAIlB,KAAK;IAIC,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,SAAS;IAIT,OAAO;IAIP,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAS9B,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;CAQxC;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,SAAS,CAAC,OAAO,4CAAmC;IACpD,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAM;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA8B;gBAElC,OAAO,SAAI,EAAE,OAAO,SAAI;IAK9B,IAAI,CACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;IAWV,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/queue/base.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EACL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EAEpB,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,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,CAA0B;gBAElC,EAAE,EAAE,MAAM;IAIhB,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,SAAS;IAIT,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAKpB,UAAU;IAKV,YAAY;IAIlB,KAAK;IAIC,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,SAAS;IAIT,OAAO;IAIP,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAS9B,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;CAQxC;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,SAAS,CAAC,OAAO,4CAAmC;IACpD,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAM;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA8B;gBAElC,OAAO,SAAI,EAAE,OAAO,SAAI;IAK9B,IAAI,CACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;IAWV,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IA6DtC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAY7C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAMhD,eAAe,CAAC,KAAK,EAAE,MAAM;IAS7B,SAAS;IAIT,OAAO,CAAC,YAAY;YAON,sBAAsB;YAatB,cAAc;IA0E5B,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;IAId,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAG1D"}
|
package/dist/src/queue/base.js
CHANGED
|
@@ -83,8 +83,7 @@ export class BaseQueueManager {
|
|
|
83
83
|
throw new Error("Queue is deleted");
|
|
84
84
|
}
|
|
85
85
|
// checks if the job is for a document that doesn't exist in storage yet
|
|
86
|
-
const newDocument = job.documentId &&
|
|
87
|
-
!(await this.delegate.checkDocumentExists(job.documentId));
|
|
86
|
+
const newDocument = job.documentId && !(await this.delegate.exists(job.documentId));
|
|
88
87
|
// if it is a new document and queue is not yet blocked then
|
|
89
88
|
// blocks it so the jobs are not processed until it's ready
|
|
90
89
|
if (newDocument && !(await queue.isBlocked())) {
|
|
@@ -21,7 +21,7 @@ export interface QueueEvents {
|
|
|
21
21
|
queueRemoved: (queueId: string) => void;
|
|
22
22
|
}
|
|
23
23
|
export interface IServerDelegate {
|
|
24
|
-
|
|
24
|
+
exists: (documentId: string) => Promise<boolean>;
|
|
25
25
|
processJob: (job: Job) => Promise<IOperationResult>;
|
|
26
26
|
}
|
|
27
27
|
export interface IQueueManager {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,SAAU,SAAQ,OAAO;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,GAAG,GAAG,YAAY,GAAG,SAAS,CAAC;AAE3C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjE,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,SAAU,SAAQ,OAAO;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,GAAG,GAAG,YAAY,GAAG,SAAS,CAAC;AAE3C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjE,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;IAChE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACvD,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,CACJ,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,EAC9B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,KACf,WAAW,CAAC;CAClB;AAED,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,CAAC,CAAC;AAE3C,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC3C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,IAAI,MAAM,CAAC;IAChB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kBAAkB,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAEpC,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,YAAY,CAE5D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,CAEtD"}
|
|
@@ -53,7 +53,7 @@ export declare class BaseDocumentDriveServer implements IBaseDocumentDriveServer
|
|
|
53
53
|
getDocument<TDocument extends PHDocument>(driveId: string, documentId: string, options?: GetDocumentOptions): Promise<TDocument>;
|
|
54
54
|
getDocuments(driveId: string): Promise<string[]>;
|
|
55
55
|
protected createDocument<TDocument extends PHDocument>(driveId: string, input: CreateDocumentInput<TDocument>): Promise<TDocument>;
|
|
56
|
-
deleteDocument(driveId: string, documentId: string): Promise<
|
|
56
|
+
deleteDocument(driveId: string, documentId: string): Promise<boolean>;
|
|
57
57
|
_processOperations(driveId: string, documentId: string | undefined, documentStorage: PHDocument, operations: Operation[]): Promise<{
|
|
58
58
|
readonly document: PHDocument;
|
|
59
59
|
readonly operationsApplied: Operation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-server.d.ts","sourceRoot":"","sources":["../../../src/server/base-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-server.d.ts","sourceRoot":"","sources":["../../../src/server/base-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,11 +33,11 @@ export class BaseDocumentDriveServer {
|
|
|
33
33
|
emit: (...args) => this.eventEmitter.emit("defaultRemoteDrive", ...args),
|
|
34
34
|
};
|
|
35
35
|
queueDelegate = {
|
|
36
|
-
|
|
36
|
+
exists: (documentId) => this.documentStorage.exists(documentId),
|
|
37
37
|
processOperationJob: async ({ driveId, documentId, operations, options, }) => {
|
|
38
|
-
return documentId
|
|
39
|
-
? this.
|
|
40
|
-
: this.
|
|
38
|
+
return !documentId || driveId === documentId
|
|
39
|
+
? this.addDriveOperations(driveId, operations, options)
|
|
40
|
+
: this.addOperations(driveId, documentId, operations, options);
|
|
41
41
|
},
|
|
42
42
|
processActionJob: async ({ driveId, documentId, actions, options, }) => {
|
|
43
43
|
return documentId
|
|
@@ -443,7 +443,7 @@ export class BaseDocumentDriveServer {
|
|
|
443
443
|
return document;
|
|
444
444
|
}
|
|
445
445
|
getDocuments(driveId) {
|
|
446
|
-
return this.
|
|
446
|
+
return this.documentStorage.getChildren(driveId);
|
|
447
447
|
}
|
|
448
448
|
async createDocument(driveId, input) {
|
|
449
449
|
// if a document was provided then checks if it's valid
|
|
@@ -470,7 +470,21 @@ export class BaseDocumentDriveServer {
|
|
|
470
470
|
clipboard: [],
|
|
471
471
|
state: state ?? document.state,
|
|
472
472
|
};
|
|
473
|
-
await this.
|
|
473
|
+
await this.documentStorage.create(input.id, documentStorage);
|
|
474
|
+
try {
|
|
475
|
+
await this.documentStorage.addChild(driveId, input.id);
|
|
476
|
+
}
|
|
477
|
+
catch (e) {
|
|
478
|
+
this.logger.error("Error adding child document", e);
|
|
479
|
+
// revert the document creation
|
|
480
|
+
try {
|
|
481
|
+
await this.documentStorage.delete(input.id);
|
|
482
|
+
}
|
|
483
|
+
catch (e) {
|
|
484
|
+
this.logger.error("FATAL: Could not revert document creation. This means that we created a document but failed to add it to the drive..", e);
|
|
485
|
+
}
|
|
486
|
+
throw e;
|
|
487
|
+
}
|
|
474
488
|
// set initial state for new syncUnits
|
|
475
489
|
for (const syncUnit of input.synchronizationUnits) {
|
|
476
490
|
this.synchronizationManager.updateSyncStatus(syncUnit.syncId, {
|
|
@@ -508,7 +522,7 @@ export class BaseDocumentDriveServer {
|
|
|
508
522
|
this.logger.warn("Error deleting document", error);
|
|
509
523
|
}
|
|
510
524
|
await this.cache.deleteDocument(documentId);
|
|
511
|
-
return this.
|
|
525
|
+
return this.documentStorage.delete(documentId);
|
|
512
526
|
}
|
|
513
527
|
async _processOperations(driveId, documentId, documentStorage, operations) {
|
|
514
528
|
const operationsApplied = [];
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { type GlobalStateFromDocument, type LocalStateFromDocument, type OperationFromDocument, type OperationScope, type PHDocument } from "document-model";
|
|
2
|
-
import { type
|
|
2
|
+
import { type IProcessor } from "#processors/types";
|
|
3
|
+
import { type IBaseDocumentDriveServer, type IDocumentDriveServer, type ListenerRevision, type StrandUpdate } from "#server/types";
|
|
3
4
|
import { type ITransmitter, type StrandUpdateSource } from "./types.js";
|
|
4
|
-
export interface IReceiver {
|
|
5
|
-
onStrands: <TDocument extends PHDocument>(strands: InternalTransmitterUpdate<TDocument>[]) => Promise<void>;
|
|
6
|
-
onDisconnect: () => Promise<void>;
|
|
7
|
-
}
|
|
8
5
|
export type InternalOperationUpdate<TDocument extends PHDocument> = Omit<OperationFromDocument<TDocument>, "scope"> & {
|
|
9
6
|
state: GlobalStateFromDocument<TDocument> | LocalStateFromDocument<TDocument>;
|
|
10
7
|
previousState: GlobalStateFromDocument<TDocument> | LocalStateFromDocument<TDocument>;
|
|
@@ -20,9 +17,8 @@ export type InternalTransmitterUpdate<TDocument extends PHDocument> = {
|
|
|
20
17
|
export declare class InternalTransmitter implements ITransmitter {
|
|
21
18
|
#private;
|
|
22
19
|
protected drive: IBaseDocumentDriveServer;
|
|
23
|
-
protected
|
|
24
|
-
|
|
25
|
-
constructor(listener: Listener, drive: IDocumentDriveServer, receiver: IReceiver);
|
|
20
|
+
protected processor: IProcessor;
|
|
21
|
+
constructor(drive: IDocumentDriveServer, processor: IProcessor);
|
|
26
22
|
transmit(strands: StrandUpdate[], _source: StrandUpdateSource): Promise<ListenerRevision[]>;
|
|
27
23
|
disconnect(): Promise<void>;
|
|
28
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,MAAM,uBAAuB,CAAC,SAAS,SAAS,UAAU,IAAI,IAAI,CACtE,qBAAqB,CAAC,SAAS,CAAC,EAChC,OAAO,CACR,GAAG;IACF,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9E,aAAa,EACT,uBAAuB,CAAC,SAAS,CAAC,GAClC,sBAAsB,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,SAAS,SAAS,UAAU,IAAI;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;IACjD,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;CAC/E,CAAC;AAEF,qBAAa,mBAAoB,YAAW,YAAY;;IACtD,SAAS,CAAC,KAAK,EAAE,wBAAwB,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;gBAEpB,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU;IAkDxD,QAAQ,CACZ,OAAO,EAAE,YAAY,EAAE,EAEvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA8BxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { logger } from "#utils/logger";
|
|
2
2
|
export class InternalTransmitter {
|
|
3
3
|
drive;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(listener, drive, receiver) {
|
|
7
|
-
this.listener = listener;
|
|
4
|
+
processor;
|
|
5
|
+
constructor(drive, processor) {
|
|
8
6
|
this.drive = drive;
|
|
9
|
-
this.
|
|
7
|
+
this.processor = processor;
|
|
10
8
|
}
|
|
11
9
|
async #buildInternalOperationUpdate(strand) {
|
|
12
10
|
const operations = [];
|
|
@@ -56,7 +54,7 @@ export class InternalTransmitter {
|
|
|
56
54
|
});
|
|
57
55
|
}
|
|
58
56
|
try {
|
|
59
|
-
await this.
|
|
57
|
+
await this.processor.onStrands(updates);
|
|
60
58
|
return strands.map(({ operations, ...s }) => ({
|
|
61
59
|
...s,
|
|
62
60
|
status: "SUCCESS",
|
|
@@ -74,6 +72,6 @@ export class InternalTransmitter {
|
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
async disconnect() {
|
|
77
|
-
await this.
|
|
75
|
+
await this.processor?.onDisconnect();
|
|
78
76
|
}
|
|
79
77
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ICache } from "#cache/types";
|
|
2
2
|
import { type DocumentDriveDocument } from "#drive-document-model/gen/types";
|
|
3
|
-
import { IDocumentStorage, type IDriveStorage } from "#storage/types";
|
|
3
|
+
import { type IDocumentStorage, type IDriveStorage } from "#storage/types";
|
|
4
4
|
import { type DocumentModelModule } from "document-model";
|
|
5
5
|
import { SynchronizationUnitNotFoundError } from "./error.js";
|
|
6
6
|
import { type GetStrandsOptions, type IEventEmitter, type ISynchronizationManager, type OperationUpdate, type SyncStatus, type SyncUnitStatusObject, type SynchronizationUnit, type SynchronizationUnitQuery } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,12 +17,8 @@ export declare class BrowserStorage implements IDriveStorage, IDocumentStorage {
|
|
|
17
17
|
removeChild(parentId: string, childId: string): Promise<boolean>;
|
|
18
18
|
addChild(parentId: string, childId: string): Promise<void>;
|
|
19
19
|
getChildren(parentId: string): Promise<string[]>;
|
|
20
|
-
checkDocumentExists(drive: string, documentId: string): Promise<boolean>;
|
|
21
20
|
private getManifest;
|
|
22
21
|
private updateDriveManifest;
|
|
23
|
-
getDocuments(drive: string): Promise<string[]>;
|
|
24
|
-
createDocument(drive: string, id: string, document: PHDocument): Promise<void>;
|
|
25
|
-
deleteDocument(drive: string, id: string): Promise<void>;
|
|
26
22
|
clearStorage(): Promise<void>;
|
|
27
23
|
addDocumentOperations(drive: string, id: string, operations: Operation[], header: DocumentHeader): Promise<void>;
|
|
28
24
|
getDrives(): Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/storage/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAET,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAOvE,qBAAa,cAAe,YAAW,aAAa,EAAE,gBAAgB;IACpE,OAAO,CAAC,EAAE,CAAuB;IAEjC,MAAM,CAAC,MAAM,SAAqB;IAClC,MAAM,CAAC,GAAG,SAAO;IACjB,MAAM,CAAC,YAAY,SAAc;IACjC,MAAM,CAAC,YAAY,SAAc;gBAErB,SAAS,CAAC,EAAE,MAAM;IAUxB,KAAK;IASL,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/storage/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAET,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAOvE,qBAAa,cAAe,YAAW,aAAa,EAAE,gBAAgB;IACpE,OAAO,CAAC,EAAE,CAAuB;IAEjC,MAAM,CAAC,MAAM,SAAqB;IAClC,MAAM,CAAC,GAAG,SAAO;IACjB,MAAM,CAAC,YAAY,SAAc;IACjC,MAAM,CAAC,YAAY,SAAc;gBAErB,SAAS,CAAC,EAAE,MAAM;IAUxB,KAAK;IASL,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,GAAG,CAAC,SAAS,SAAS,UAAU,EACpC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC;IAaf,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B5C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YASxC,WAAW;YAQX,mBAAmB;IAQ3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAgBV,SAAS;IAYT,cAAc,CAAC,IAAI,EAAE,MAAM;IAa3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAqBpD,WAAW,CAAC,EAAE,EAAE,MAAM;IAatB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAYV,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;IAyCK,0BAA0B;YAYlB,YAAY;YAWZ,eAAe;IAe7B,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAGjC"}
|
|
@@ -26,6 +26,7 @@ export class BrowserStorage {
|
|
|
26
26
|
const document = await db.getItem(this.buildDocumentKey(documentId));
|
|
27
27
|
return !!document;
|
|
28
28
|
}
|
|
29
|
+
// TODO: this should throw an error if the document already exists.
|
|
29
30
|
async create(documentId, document) {
|
|
30
31
|
const db = await this.db;
|
|
31
32
|
await db.setItem(this.buildDocumentKey(documentId), document);
|
|
@@ -89,9 +90,6 @@ export class BrowserStorage {
|
|
|
89
90
|
////////////////////////////////
|
|
90
91
|
// IDriveStorage
|
|
91
92
|
////////////////////////////////
|
|
92
|
-
checkDocumentExists(drive, documentId) {
|
|
93
|
-
return this.exists(documentId);
|
|
94
|
-
}
|
|
95
93
|
async getManifest(driveId) {
|
|
96
94
|
const db = await this.db;
|
|
97
95
|
const manifest = await db.getItem(this.buildManifestKey(driveId));
|
|
@@ -101,29 +99,6 @@ export class BrowserStorage {
|
|
|
101
99
|
const db = await this.db;
|
|
102
100
|
await db.setItem(this.buildManifestKey(driveId), manifest);
|
|
103
101
|
}
|
|
104
|
-
async getDocuments(drive) {
|
|
105
|
-
const manifest = await this.getManifest(drive);
|
|
106
|
-
return manifest.documentIds;
|
|
107
|
-
}
|
|
108
|
-
async createDocument(drive, id, document) {
|
|
109
|
-
await this.create(id, document);
|
|
110
|
-
// Update the drive manifest to include this document
|
|
111
|
-
const manifest = await this.getManifest(drive);
|
|
112
|
-
if (!manifest.documentIds.includes(id)) {
|
|
113
|
-
manifest.documentIds.push(id);
|
|
114
|
-
await this.updateDriveManifest(drive, manifest);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
async deleteDocument(drive, id) {
|
|
118
|
-
await (await this.db).removeItem(this.buildDocumentKey(id));
|
|
119
|
-
// Update the drive manifest to remove this document
|
|
120
|
-
const manifest = await this.getManifest(drive);
|
|
121
|
-
const docIndex = manifest.documentIds.indexOf(id);
|
|
122
|
-
if (docIndex !== -1) {
|
|
123
|
-
manifest.documentIds.splice(docIndex, 1);
|
|
124
|
-
await this.updateDriveManifest(drive, manifest);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
102
|
async clearStorage() {
|
|
128
103
|
return (await this.db).clear();
|
|
129
104
|
}
|
|
@@ -179,9 +154,9 @@ export class BrowserStorage {
|
|
|
179
154
|
}
|
|
180
155
|
async deleteDrive(id) {
|
|
181
156
|
// First get all documents in this drive
|
|
182
|
-
const documents = await this.
|
|
157
|
+
const documents = await this.getChildren(id);
|
|
183
158
|
// Delete each document (this already updates the manifest)
|
|
184
|
-
await Promise.all(documents.map((doc) => this.
|
|
159
|
+
await Promise.all(documents.map((doc) => this.delete(doc)));
|
|
185
160
|
// Delete the drive and its manifest
|
|
186
161
|
const db = await this.db;
|
|
187
162
|
await db.removeItem(this.buildManifestKey(id));
|
|
@@ -231,7 +206,7 @@ export class BrowserStorage {
|
|
|
231
206
|
const drives = await this.getDrives();
|
|
232
207
|
for (const drive of drives) {
|
|
233
208
|
await this.migrateDrive(drive);
|
|
234
|
-
const documents = await this.
|
|
209
|
+
const documents = await this.getChildren(drive);
|
|
235
210
|
await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
|
|
236
211
|
}
|
|
237
212
|
}
|
|
@@ -12,11 +12,7 @@ export declare class FilesystemStorage implements IDriveStorage, IDocumentStorag
|
|
|
12
12
|
addChild(parentId: string, childId: string): Promise<void>;
|
|
13
13
|
removeChild(parentId: string, childId: string): Promise<boolean>;
|
|
14
14
|
getChildren(parentId: string): Promise<string[]>;
|
|
15
|
-
getDocuments(drive: string): Promise<string[]>;
|
|
16
|
-
checkDocumentExists(drive: string, id: string): Promise<boolean>;
|
|
17
|
-
createDocument(drive: string, id: string, document: PHDocument): Promise<void>;
|
|
18
15
|
clearStorage(): Promise<void>;
|
|
19
|
-
deleteDocument(drive: string, id: string): Promise<void>;
|
|
20
16
|
addDocumentOperations(drive: string, id: string, operations: Operation[], header: DocumentHeader): Promise<void>;
|
|
21
17
|
getDrives(): Promise<string[]>;
|
|
22
18
|
getDriveBySlug(slug: string): Promise<DocumentDriveDocument>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAavE,qBAAa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAS5B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAavE,qBAAa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAS5B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAS/C,GAAG,CAAC,SAAS,SAAS,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAYnE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAShD,YAAY;IAeZ,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc;IAuBlB,SAAS;IAWT,cAAc,CAAC,IAAI,EAAE,MAAM;IAmB3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAqBpD,WAAW,CAAC,EAAE,EAAE,MAAM;IAYtB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAqBV,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;IA4CD,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;YAIZ,WAAW;YAWX,mBAAmB;CAOlC"}
|
|
@@ -21,6 +21,7 @@ export class FilesystemStorage {
|
|
|
21
21
|
const documentExists = existsSync(this._buildDocumentPath(documentId));
|
|
22
22
|
return Promise.resolve(documentExists);
|
|
23
23
|
}
|
|
24
|
+
// TODO: this should throw an error if the document already exists.
|
|
24
25
|
create(documentId, document) {
|
|
25
26
|
const documentPath = this._buildDocumentPath(documentId);
|
|
26
27
|
writeFileSync(documentPath, stringify(document), {
|
|
@@ -95,26 +96,6 @@ export class FilesystemStorage {
|
|
|
95
96
|
////////////////////////////////
|
|
96
97
|
// IDriveStorage
|
|
97
98
|
////////////////////////////////
|
|
98
|
-
async getDocuments(drive) {
|
|
99
|
-
const manifest = await this.getManifest(drive);
|
|
100
|
-
return manifest.documentIds;
|
|
101
|
-
}
|
|
102
|
-
checkDocumentExists(drive, id) {
|
|
103
|
-
return this.exists(id);
|
|
104
|
-
}
|
|
105
|
-
async createDocument(drive, id, document) {
|
|
106
|
-
const documentPath = this._buildDocumentPath(id);
|
|
107
|
-
writeFileSync(documentPath, stringify(document), {
|
|
108
|
-
encoding: "utf-8",
|
|
109
|
-
});
|
|
110
|
-
// Update the drive manifest to include this document
|
|
111
|
-
const manifest = await this.getManifest(drive);
|
|
112
|
-
if (!manifest.documentIds.includes(id)) {
|
|
113
|
-
manifest.documentIds.push(id);
|
|
114
|
-
await this.updateDriveManifest(drive, manifest);
|
|
115
|
-
}
|
|
116
|
-
return Promise.resolve();
|
|
117
|
-
}
|
|
118
99
|
async clearStorage() {
|
|
119
100
|
// delete content of basePath
|
|
120
101
|
const files = (await fs.readdir(this.basePath, { withFileTypes: true })).filter((dirent) => !!dirent.name);
|
|
@@ -124,29 +105,6 @@ export class FilesystemStorage {
|
|
|
124
105
|
});
|
|
125
106
|
}));
|
|
126
107
|
}
|
|
127
|
-
async deleteDocument(drive, id) {
|
|
128
|
-
// Update the drive manifest to remove this document
|
|
129
|
-
const manifest = await this.getManifest(drive);
|
|
130
|
-
const docIndex = manifest.documentIds.indexOf(id);
|
|
131
|
-
if (docIndex !== -1) {
|
|
132
|
-
manifest.documentIds.splice(docIndex, 1);
|
|
133
|
-
await this.updateDriveManifest(drive, manifest);
|
|
134
|
-
}
|
|
135
|
-
// Check if this document exists in other drive manifests
|
|
136
|
-
// Only delete the actual file if no other drive references it
|
|
137
|
-
const drives = await this.getDrives();
|
|
138
|
-
for (const driveId of drives) {
|
|
139
|
-
if (driveId === drive)
|
|
140
|
-
continue;
|
|
141
|
-
const otherManifest = await this.getManifest(driveId);
|
|
142
|
-
if (otherManifest.documentIds.includes(id)) {
|
|
143
|
-
// Document still referenced by another drive, don't delete the file
|
|
144
|
-
return Promise.resolve();
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
// If we got here, no other drive references this document, so we can delete it
|
|
148
|
-
return fs.rm(this._buildDocumentPath(id));
|
|
149
|
-
}
|
|
150
108
|
async addDocumentOperations(drive, id, operations, header) {
|
|
151
109
|
const document = await this.get(id);
|
|
152
110
|
if (!document) {
|
|
@@ -202,9 +160,9 @@ export class FilesystemStorage {
|
|
|
202
160
|
}
|
|
203
161
|
async deleteDrive(id) {
|
|
204
162
|
// First get all documents in this drive
|
|
205
|
-
const documents = await this.
|
|
163
|
+
const documents = await this.getChildren(id);
|
|
206
164
|
// Delete each document from this drive (may not actually delete the file if shared with other drives)
|
|
207
|
-
await Promise.all(documents.map((doc) => this.
|
|
165
|
+
await Promise.all(documents.map((doc) => this.delete(doc)));
|
|
208
166
|
// Delete the drive manifest and the drive itself
|
|
209
167
|
await fs.rm(this._buildManifestPath(id));
|
|
210
168
|
await fs.rm(this._buildDocumentPath(id));
|
|
@@ -13,10 +13,6 @@ export declare class IPFSStorage implements IStorage, IDocumentStorage {
|
|
|
13
13
|
addChild(parentId: string, childId: string): Promise<void>;
|
|
14
14
|
removeChild(parentId: string, childId: string): Promise<boolean>;
|
|
15
15
|
getChildren(parentId: string): Promise<string[]>;
|
|
16
|
-
checkDocumentExists(drive: string, id: string): Promise<boolean>;
|
|
17
|
-
getDocuments(drive: string): Promise<string[]>;
|
|
18
|
-
createDocument(drive: string, id: string, document: PHDocument): Promise<void>;
|
|
19
|
-
deleteDocument(drive: string, id: string): Promise<void>;
|
|
20
16
|
addDocumentOperations<TDocument extends PHDocument>(drive: string, id: string, operations: Operation[], header: DocumentHeader): Promise<void>;
|
|
21
17
|
getDrives(): Promise<string[]>;
|
|
22
18
|
getDrive(id: string): Promise<DocumentDriveDocument>;
|