document-drive 1.19.1 → 1.20.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/README.md +4 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/src/cache/memory.d.ts +10 -0
- package/dist/src/cache/memory.d.ts.map +1 -0
- package/dist/src/cache/memory.js +26 -0
- package/dist/src/cache/redis.d.ts +14 -0
- package/dist/src/cache/redis.d.ts.map +1 -0
- package/dist/src/cache/redis.js +40 -0
- package/dist/src/cache/types.d.ts +7 -0
- package/dist/src/cache/types.d.ts.map +1 -0
- package/dist/src/cache/types.js +1 -0
- package/dist/src/drive-document-model/constants.d.ts +2 -0
- package/dist/src/drive-document-model/constants.d.ts.map +1 -0
- package/dist/src/drive-document-model/constants.js +1 -0
- package/dist/src/drive-document-model/gen/actions.d.ts +7 -0
- package/dist/src/drive-document-model/gen/actions.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/actions.js +2 -0
- package/dist/src/drive-document-model/gen/constants.d.ts +7 -0
- package/dist/src/drive-document-model/gen/constants.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/constants.js +16 -0
- package/dist/src/drive-document-model/gen/creators.d.ts +3 -0
- package/dist/src/drive-document-model/gen/creators.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/creators.js +2 -0
- package/dist/src/drive-document-model/gen/document-model.d.ts +3 -0
- package/dist/src/drive-document-model/gen/document-model.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/document-model.js +210 -0
- package/dist/src/drive-document-model/gen/drive/actions.d.ts +12 -0
- package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/actions.js +1 -0
- package/dist/src/drive-document-model/gen/drive/creators.d.ts +11 -0
- package/dist/src/drive-document-model/gen/drive/creators.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/creators.js +10 -0
- package/dist/src/drive-document-model/gen/drive/error.d.ts +2 -0
- package/dist/src/drive-document-model/gen/drive/error.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/error.js +1 -0
- package/dist/src/drive-document-model/gen/drive/object.d.ts +14 -0
- package/dist/src/drive-document-model/gen/drive/object.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/object.js +28 -0
- package/dist/src/drive-document-model/gen/drive/operations.d.ts +14 -0
- package/dist/src/drive-document-model/gen/drive/operations.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/operations.js +1 -0
- package/dist/src/drive-document-model/gen/node/actions.d.ts +11 -0
- package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/actions.js +1 -0
- package/dist/src/drive-document-model/gen/node/creators.d.ts +10 -0
- package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/creators.js +9 -0
- package/dist/src/drive-document-model/gen/node/error.d.ts +2 -0
- package/dist/src/drive-document-model/gen/node/error.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/error.js +1 -0
- package/dist/src/drive-document-model/gen/node/object.d.ts +13 -0
- package/dist/src/drive-document-model/gen/node/object.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/object.js +25 -0
- package/dist/src/drive-document-model/gen/node/operations.d.ts +13 -0
- package/dist/src/drive-document-model/gen/node/operations.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/operations.js +1 -0
- package/dist/src/drive-document-model/gen/object.d.ts +21 -0
- package/dist/src/drive-document-model/gen/object.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/object.js +28 -0
- package/dist/src/drive-document-model/gen/reducer.d.ts +4 -0
- package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/reducer.js +74 -0
- package/dist/src/drive-document-model/gen/schema/types.d.ts +176 -0
- package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/schema/types.js +1 -0
- package/dist/src/drive-document-model/gen/schema/zod.d.ts +87 -0
- package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/schema/zod.js +203 -0
- package/dist/src/drive-document-model/gen/types.d.ts +9 -0
- package/dist/src/drive-document-model/gen/types.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/types.js +1 -0
- package/dist/src/drive-document-model/gen/utils.d.ts +10 -0
- package/dist/src/drive-document-model/gen/utils.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/utils.js +27 -0
- package/dist/src/drive-document-model/index.d.ts +2 -0
- package/dist/src/drive-document-model/index.d.ts.map +1 -0
- package/dist/src/drive-document-model/index.js +1 -0
- package/dist/src/drive-document-model/module.d.ts +3 -0
- package/dist/src/drive-document-model/module.d.ts.map +1 -0
- package/dist/src/drive-document-model/module.js +12 -0
- package/dist/src/drive-document-model/src/reducers/drive.d.ts +8 -0
- package/dist/src/drive-document-model/src/reducers/drive.d.ts.map +1 -0
- package/dist/src/drive-document-model/src/reducers/drive.js +37 -0
- package/dist/src/drive-document-model/src/reducers/node.d.ts +8 -0
- package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -0
- package/dist/src/drive-document-model/src/reducers/node.js +185 -0
- package/dist/src/drive-document-model/src/utils.d.ts +34 -0
- package/dist/src/drive-document-model/src/utils.d.ts.map +1 -0
- package/dist/src/drive-document-model/src/utils.js +146 -0
- package/dist/src/queue/base.d.ts +43 -0
- package/dist/src/queue/base.d.ts.map +1 -0
- package/dist/src/queue/base.js +241 -0
- package/dist/src/queue/redis.d.ts +28 -0
- package/dist/src/queue/redis.d.ts.map +1 -0
- package/dist/src/queue/redis.js +110 -0
- package/dist/src/queue/types.d.ts +55 -0
- package/dist/src/queue/types.d.ts.map +1 -0
- package/dist/src/queue/types.js +6 -0
- package/dist/src/read-mode/errors.d.ts +12 -0
- package/dist/src/read-mode/errors.d.ts.map +1 -0
- package/dist/src/read-mode/errors.js +17 -0
- package/dist/src/read-mode/server.d.ts +4 -0
- package/dist/src/read-mode/server.d.ts.map +1 -0
- package/dist/src/read-mode/server.js +78 -0
- package/dist/src/read-mode/service.d.ts +18 -0
- package/dist/src/read-mode/service.d.ts.map +1 -0
- package/dist/src/read-mode/service.js +112 -0
- package/dist/src/read-mode/types.d.ts +35 -0
- package/dist/src/read-mode/types.d.ts.map +1 -0
- package/dist/src/read-mode/types.js +1 -0
- package/dist/src/server/base-server.d.ts +112 -0
- package/dist/src/server/base-server.d.ts.map +1 -0
- package/dist/src/server/base-server.js +1280 -0
- package/dist/src/server/builder.d.ts +30 -0
- package/dist/src/server/builder.d.ts.map +1 -0
- package/dist/src/server/builder.js +89 -0
- package/dist/src/server/constants.d.ts +2 -0
- package/dist/src/server/constants.d.ts.map +1 -0
- package/dist/src/server/constants.js +1 -0
- package/dist/src/server/error.d.ts +30 -0
- package/dist/src/server/error.d.ts.map +1 -0
- package/dist/src/server/error.js +47 -0
- package/dist/src/server/event-emitter.d.ts +8 -0
- package/dist/src/server/event-emitter.d.ts.map +1 -0
- package/dist/src/server/event-emitter.js +10 -0
- package/dist/src/server/listener/index.d.ts +2 -0
- package/dist/src/server/listener/index.d.ts.map +1 -0
- package/dist/src/server/listener/index.js +1 -0
- package/dist/src/server/listener/listener-manager.d.ts +27 -0
- package/dist/src/server/listener/listener-manager.d.ts.map +1 -0
- package/dist/src/server/listener/listener-manager.js +401 -0
- package/dist/src/server/listener/transmitter/factory.d.ts +8 -0
- package/dist/src/server/listener/transmitter/factory.d.ts.map +1 -0
- package/dist/src/server/listener/transmitter/factory.js +25 -0
- package/dist/src/server/listener/transmitter/internal.d.ts +34 -0
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -0
- package/dist/src/server/listener/transmitter/internal.js +87 -0
- package/dist/src/server/listener/transmitter/pull-responder.d.ts +38 -0
- package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -0
- package/dist/src/server/listener/transmitter/pull-responder.js +256 -0
- package/dist/src/server/listener/transmitter/switchboard-push.d.ts +9 -0
- package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -0
- package/dist/src/server/listener/transmitter/switchboard-push.js +77 -0
- package/dist/src/server/listener/transmitter/types.d.ts +20 -0
- package/dist/src/server/listener/transmitter/types.d.ts.map +1 -0
- package/dist/src/server/listener/transmitter/types.js +1 -0
- package/dist/src/server/listener/util.d.ts +2 -0
- package/dist/src/server/listener/util.d.ts.map +1 -0
- package/dist/src/server/listener/util.js +22 -0
- package/dist/src/server/sync-manager.d.ts +30 -0
- package/dist/src/server/sync-manager.d.ts.map +1 -0
- package/dist/src/server/sync-manager.js +287 -0
- package/dist/src/server/types.d.ts +308 -0
- package/dist/src/server/types.d.ts.map +1 -0
- package/dist/src/server/types.js +12 -0
- package/dist/src/server/utils.d.ts +8 -0
- package/dist/src/server/utils.d.ts.map +1 -0
- package/dist/src/server/utils.js +47 -0
- package/dist/src/storage/base.d.ts +36 -0
- package/dist/src/storage/base.d.ts.map +1 -0
- package/dist/src/storage/base.js +4 -0
- package/dist/src/storage/browser.d.ts +36 -0
- package/dist/src/storage/browser.d.ts.map +1 -0
- package/dist/src/storage/browser.js +155 -0
- package/dist/src/storage/filesystem.d.ts +33 -0
- package/dist/src/storage/filesystem.d.ts.map +1 -0
- package/dist/src/storage/filesystem.js +197 -0
- package/dist/src/storage/memory.d.ts +33 -0
- package/dist/src/storage/memory.d.ts.map +1 -0
- package/dist/src/storage/memory.js +139 -0
- package/dist/src/storage/prisma.d.ts +67 -0
- package/dist/src/storage/prisma.d.ts.map +1 -0
- package/dist/src/storage/prisma.js +445 -0
- package/dist/src/storage/sequelize.d.ts +32 -0
- package/dist/src/storage/sequelize.d.ts.map +1 -0
- package/dist/src/storage/sequelize.js +373 -0
- package/dist/src/storage/types.d.ts +43 -0
- package/dist/src/storage/types.d.ts.map +1 -0
- package/dist/src/storage/types.js +1 -0
- package/dist/src/utils/default-drives-manager.d.ts +29 -0
- package/dist/src/utils/default-drives-manager.d.ts.map +1 -0
- package/dist/src/utils/default-drives-manager.js +208 -0
- package/dist/src/utils/graphql.d.ts +34 -0
- package/dist/src/utils/graphql.d.ts.map +1 -0
- package/dist/src/utils/graphql.js +183 -0
- package/dist/src/utils/logger.d.ts +27 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +105 -0
- package/dist/src/utils/migrations.d.ts +4 -0
- package/dist/src/utils/migrations.d.ts.map +1 -0
- package/dist/src/utils/migrations.js +41 -0
- package/dist/src/utils/misc.d.ts +11 -0
- package/dist/src/utils/misc.d.ts.map +1 -0
- package/dist/src/utils/misc.js +43 -0
- package/dist/src/utils/run-asap.d.ts +12 -0
- package/dist/src/utils/run-asap.d.ts.map +1 -0
- package/dist/src/utils/run-asap.js +131 -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 +21 -0
- package/dist/test/utils.d.ts +48 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +132 -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 +4 -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 +20 -0
- package/package.json +20 -38
- package/src/cache/index.ts +0 -2
- package/src/cache/memory.ts +0 -33
- package/src/cache/redis.ts +0 -56
- package/src/cache/types.ts +0 -9
- package/src/index.ts +0 -4
- package/src/queue/base.ts +0 -320
- package/src/queue/index.ts +0 -2
- package/src/queue/redis.ts +0 -144
- package/src/queue/types.ts +0 -79
- package/src/read-mode/errors.ts +0 -19
- package/src/read-mode/index.ts +0 -125
- package/src/read-mode/service.ts +0 -207
- package/src/read-mode/types.ts +0 -108
- package/src/server/error.ts +0 -70
- package/src/server/index.ts +0 -2444
- package/src/server/listener/index.ts +0 -2
- package/src/server/listener/manager.ts +0 -652
- package/src/server/listener/transmitter/index.ts +0 -4
- package/src/server/listener/transmitter/internal.ts +0 -143
- package/src/server/listener/transmitter/pull-responder.ts +0 -462
- package/src/server/listener/transmitter/switchboard-push.ts +0 -125
- package/src/server/listener/transmitter/types.ts +0 -27
- package/src/server/types.ts +0 -596
- package/src/server/utils.ts +0 -82
- package/src/storage/base.ts +0 -81
- package/src/storage/browser.ts +0 -238
- package/src/storage/filesystem.ts +0 -297
- package/src/storage/index.ts +0 -2
- package/src/storage/memory.ts +0 -211
- package/src/storage/prisma.ts +0 -653
- package/src/storage/sequelize.ts +0 -498
- package/src/storage/types.ts +0 -97
- package/src/utils/default-drives-manager.ts +0 -341
- package/src/utils/document-helpers.ts +0 -21
- package/src/utils/graphql.ts +0 -301
- package/src/utils/index.ts +0 -90
- package/src/utils/logger.ts +0 -38
- package/src/utils/migrations.ts +0 -58
- package/src/utils/run-asap.ts +0 -156
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { BaseDocumentDriveServer } from "#server/base-server";
|
|
2
|
+
import { Action, ActionFromDocument, DocumentModelModule, Operation, OperationFromDocument, PHDocument, PHReducer } from "document-model";
|
|
3
|
+
import { ExpectStatic } from "vitest";
|
|
4
|
+
export declare const baseDocumentModels: DocumentModelModule[];
|
|
5
|
+
export declare function expectUUID(expect: ExpectStatic): unknown;
|
|
6
|
+
export declare function expectUTCTimestamp(expect: ExpectStatic): unknown;
|
|
7
|
+
export declare function buildOperation(reducer: PHReducer, document: PHDocument, action: Action, index?: number): Operation;
|
|
8
|
+
export declare function buildOperations(reducer: PHReducer, document: PHDocument, actions: Array<Action>): Operation[];
|
|
9
|
+
export declare function buildOperationAndDocument<TDocument extends PHDocument>(reducer: PHReducer<TDocument>, document: TDocument, action: ActionFromDocument<TDocument>, index?: number): {
|
|
10
|
+
document: TDocument;
|
|
11
|
+
operation: OperationFromDocument<TDocument>;
|
|
12
|
+
};
|
|
13
|
+
export declare class BasicClient {
|
|
14
|
+
private server;
|
|
15
|
+
private driveId;
|
|
16
|
+
private documentId;
|
|
17
|
+
private document;
|
|
18
|
+
private reducer;
|
|
19
|
+
private unsyncedOperations;
|
|
20
|
+
constructor(server: BaseDocumentDriveServer, driveId: string, documentId: string, document: PHDocument, reducer: PHReducer);
|
|
21
|
+
getDocument(): PHDocument;
|
|
22
|
+
clearUnsyncedOperations(): void;
|
|
23
|
+
pushOperationsToServer(): Promise<import("../src/server/types.js").IOperationResult>;
|
|
24
|
+
syncDocument(): Promise<PHDocument>;
|
|
25
|
+
dispatchDocumentAction(action: Action): {
|
|
26
|
+
document: PHDocument;
|
|
27
|
+
operation: Operation;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare class DriveBasicClient {
|
|
31
|
+
private server;
|
|
32
|
+
private driveId;
|
|
33
|
+
private document;
|
|
34
|
+
private reducer;
|
|
35
|
+
private unsyncedOperations;
|
|
36
|
+
constructor(server: BaseDocumentDriveServer, driveId: string, document: PHDocument, reducer: PHReducer);
|
|
37
|
+
getDocument(): PHDocument;
|
|
38
|
+
getUnsyncedOperations(): Operation[];
|
|
39
|
+
setUnsyncedOperations(operations: Operation[]): void;
|
|
40
|
+
clearUnsyncedOperations(): void;
|
|
41
|
+
pushOperationsToServer(): Promise<import("../src/server/types.js").DriveOperationResult>;
|
|
42
|
+
syncDocument(): Promise<PHDocument>;
|
|
43
|
+
dispatchDriveAction(action: Action): {
|
|
44
|
+
document: PHDocument;
|
|
45
|
+
operation: Operation;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,MAAM,EACN,kBAAkB,EAElB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,UAAU,EACV,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,eAAO,MAAM,kBAAkB,EAG1B,mBAAmB,EAAE,CAAC;AAE3B,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAIxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,CAQX;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GACrB,SAAS,EAAE,CAWb;AAED,wBAAgB,yBAAyB,CAAC,SAAS,SAAS,UAAU,EACpE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAC7B,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACrC,KAAK,CAAC,EAAE,MAAM,GACb;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC7C,CAYA;AAED,qBAAa,WAAW;IAIpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IATjB,OAAO,CAAC,kBAAkB,CAAmB;gBAGnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAElB,QAAQ,EAAE,UAAU,EAEpB,OAAO,EAAE,SAAS;IAG5B,WAAW;IAIX,uBAAuB;IAIjB,sBAAsB;IActB,YAAY;IAuBlB,sBAAsB,CAAC,MAAM,EAAE,MAAM;kBAMvB,UAAU;mBACT,SAAS;;CAQzB;AAED,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAEf,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,kBAAkB,CAAmB;gBAGnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EAEf,QAAQ,EAAE,UAAU,EAEpB,OAAO,EAAE,SAAS;IAG5B,WAAW;IAIX,qBAAqB;IAIrB,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE;IAI7C,uBAAuB;IAIjB,sBAAsB;IAatB,YAAY;IAoBlB,mBAAmB,CAAC,MAAM,EAAE,MAAM;kBAMpB,UAAU;mBACT,SAAS;;CAQzB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { driveDocumentModelModule } from "#drive-document-model/module";
|
|
2
|
+
import { documentModelDocumentModelModule, } from "document-model";
|
|
3
|
+
export const baseDocumentModels = [
|
|
4
|
+
driveDocumentModelModule,
|
|
5
|
+
documentModelDocumentModelModule,
|
|
6
|
+
];
|
|
7
|
+
export function expectUUID(expect) {
|
|
8
|
+
return expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i);
|
|
9
|
+
}
|
|
10
|
+
export function expectUTCTimestamp(expect) {
|
|
11
|
+
return expect.stringMatching(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/i);
|
|
12
|
+
}
|
|
13
|
+
export function buildOperation(reducer, document, action, index) {
|
|
14
|
+
const newDocument = reducer(document, action);
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
16
|
+
const operation = newDocument.operations[action.scope]
|
|
17
|
+
.slice()
|
|
18
|
+
.pop();
|
|
19
|
+
return { ...operation, index: index ?? operation.index };
|
|
20
|
+
}
|
|
21
|
+
export function buildOperations(reducer, document, actions) {
|
|
22
|
+
const operations = [];
|
|
23
|
+
for (const action of actions) {
|
|
24
|
+
document = reducer(document, action);
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
26
|
+
const operation = document.operations[action.scope]
|
|
27
|
+
.slice()
|
|
28
|
+
.pop();
|
|
29
|
+
operations.push(operation);
|
|
30
|
+
}
|
|
31
|
+
return operations;
|
|
32
|
+
}
|
|
33
|
+
export function buildOperationAndDocument(reducer, document, action, index) {
|
|
34
|
+
const newDocument = reducer(document, action);
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
36
|
+
const operation = newDocument.operations[action.scope].slice().pop();
|
|
37
|
+
return {
|
|
38
|
+
document: newDocument,
|
|
39
|
+
operation: {
|
|
40
|
+
...operation,
|
|
41
|
+
index: index ?? operation.index,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export class BasicClient {
|
|
46
|
+
server;
|
|
47
|
+
driveId;
|
|
48
|
+
documentId;
|
|
49
|
+
document;
|
|
50
|
+
reducer;
|
|
51
|
+
unsyncedOperations = [];
|
|
52
|
+
constructor(server, driveId, documentId, document, reducer) {
|
|
53
|
+
this.server = server;
|
|
54
|
+
this.driveId = driveId;
|
|
55
|
+
this.documentId = documentId;
|
|
56
|
+
this.document = document;
|
|
57
|
+
this.reducer = reducer;
|
|
58
|
+
}
|
|
59
|
+
getDocument() {
|
|
60
|
+
return this.document;
|
|
61
|
+
}
|
|
62
|
+
clearUnsyncedOperations() {
|
|
63
|
+
this.unsyncedOperations = [];
|
|
64
|
+
}
|
|
65
|
+
async pushOperationsToServer() {
|
|
66
|
+
const result = await this.server.addOperations(this.driveId, this.documentId, this.unsyncedOperations);
|
|
67
|
+
if (result.status === "SUCCESS") {
|
|
68
|
+
this.unsyncedOperations = [];
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
async syncDocument() {
|
|
73
|
+
this.clearUnsyncedOperations();
|
|
74
|
+
const remoteDocument = await this.server.getDocument(this.driveId, this.documentId);
|
|
75
|
+
const remoteDocumentOperations = Object.values(remoteDocument.operations).flat();
|
|
76
|
+
const result = await this.server._processOperations(this.driveId, this.documentId, this.document, remoteDocumentOperations);
|
|
77
|
+
this.document = result.document;
|
|
78
|
+
return this.document;
|
|
79
|
+
}
|
|
80
|
+
dispatchDocumentAction(action) {
|
|
81
|
+
const result = buildOperationAndDocument(this.reducer, this.document, action);
|
|
82
|
+
this.document = { ...result.document };
|
|
83
|
+
this.unsyncedOperations.push({ ...result.operation });
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export class DriveBasicClient {
|
|
88
|
+
server;
|
|
89
|
+
driveId;
|
|
90
|
+
document;
|
|
91
|
+
reducer;
|
|
92
|
+
unsyncedOperations = [];
|
|
93
|
+
constructor(server, driveId, document, reducer) {
|
|
94
|
+
this.server = server;
|
|
95
|
+
this.driveId = driveId;
|
|
96
|
+
this.document = document;
|
|
97
|
+
this.reducer = reducer;
|
|
98
|
+
}
|
|
99
|
+
getDocument() {
|
|
100
|
+
return this.document;
|
|
101
|
+
}
|
|
102
|
+
getUnsyncedOperations() {
|
|
103
|
+
return this.unsyncedOperations;
|
|
104
|
+
}
|
|
105
|
+
setUnsyncedOperations(operations) {
|
|
106
|
+
this.unsyncedOperations = operations;
|
|
107
|
+
}
|
|
108
|
+
clearUnsyncedOperations() {
|
|
109
|
+
this.unsyncedOperations = [];
|
|
110
|
+
}
|
|
111
|
+
async pushOperationsToServer() {
|
|
112
|
+
const result = await this.server.addDriveOperations(this.driveId, this.unsyncedOperations);
|
|
113
|
+
if (result.status === "SUCCESS") {
|
|
114
|
+
this.unsyncedOperations = [];
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
async syncDocument() {
|
|
119
|
+
this.clearUnsyncedOperations();
|
|
120
|
+
const remoteDocument = await this.server.getDrive(this.driveId);
|
|
121
|
+
const remoteDocumentOperations = Object.values(remoteDocument.operations).flat();
|
|
122
|
+
const result = await this.server._processOperations(this.driveId, undefined, this.document, remoteDocumentOperations);
|
|
123
|
+
this.document = result.document;
|
|
124
|
+
return this.document;
|
|
125
|
+
}
|
|
126
|
+
dispatchDriveAction(action) {
|
|
127
|
+
const result = buildOperationAndDocument(this.reducer, this.document, action);
|
|
128
|
+
this.document = { ...result.document };
|
|
129
|
+
this.unsyncedOperations.push({ ...result.operation });
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest-setup.d.ts","sourceRoot":"","sources":["../../test/vitest-setup.ts"],"names":[],"mappings":""}
|