document-drive 4.0.0-staging.6 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/prisma/schema.prisma +2 -1
- package/dist/src/drive-document-model/gen/document-model.js +3 -3
- package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.d.ts +2 -6
- package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.js +1 -8
- package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/schema/types.d.ts +14 -1
- package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.d.ts +5 -1
- package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.js +12 -0
- package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
- package/dist/src/drive-document-model/gen/types.d.ts +4 -13
- package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/types.js.map +1 -1
- package/dist/src/drive-document-model/module.d.ts +1 -2
- package/dist/src/drive-document-model/module.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/reducers/node.js +25 -1
- package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js +23 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/base.test.js +32 -0
- package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/utils.test.js +37 -7
- package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
- package/dist/src/drive-document-model/src/utils.d.ts +8 -2
- package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/utils.js +55 -6
- package/dist/src/drive-document-model/src/utils.js.map +1 -1
- package/dist/src/queue/base.d.ts +27 -6
- package/dist/src/queue/base.d.ts.map +1 -1
- package/dist/src/queue/base.js +203 -15
- package/dist/src/queue/base.js.map +1 -1
- package/dist/src/queue/redis.d.ts +27 -1
- package/dist/src/queue/redis.d.ts.map +1 -1
- package/dist/src/queue/redis.js +110 -122
- package/dist/src/queue/redis.js.map +1 -1
- package/dist/src/queue/types.d.ts +12 -18
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js +0 -3
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/server/base-server.d.ts +11 -87
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +250 -549
- package/dist/src/server/base-server.js.map +1 -1
- package/dist/src/server/builder.js +2 -2
- package/dist/src/server/builder.js.map +1 -1
- package/dist/src/server/error.d.ts +3 -3
- package/dist/src/server/error.d.ts.map +1 -1
- package/dist/src/server/error.js +2 -2
- package/dist/src/server/error.js.map +1 -1
- package/dist/src/server/listener/listener-manager.d.ts +6 -5
- package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
- package/dist/src/server/listener/listener-manager.js +79 -62
- package/dist/src/server/listener/listener-manager.js.map +1 -1
- package/dist/src/server/listener/transmitter/internal.d.ts +1 -1
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/internal.js +12 -14
- package/dist/src/server/listener/transmitter/internal.js.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.js +8 -14
- package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
- package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/switchboard-push.js +8 -13
- package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
- package/dist/src/server/sync-manager.d.ts +10 -8
- package/dist/src/server/sync-manager.d.ts.map +1 -1
- package/dist/src/server/sync-manager.js +147 -62
- package/dist/src/server/sync-manager.js.map +1 -1
- package/dist/src/server/types.d.ts +31 -114
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/server/types.js.map +1 -1
- package/dist/src/server/utils.d.ts +1 -10
- package/dist/src/server/utils.d.ts.map +1 -1
- package/dist/src/server/utils.js +0 -41
- package/dist/src/server/utils.js.map +1 -1
- package/dist/src/storage/browser.d.ts +2 -7
- package/dist/src/storage/browser.d.ts.map +1 -1
- package/dist/src/storage/browser.js +22 -80
- package/dist/src/storage/browser.js.map +1 -1
- package/dist/src/storage/filesystem.d.ts +2 -7
- package/dist/src/storage/filesystem.d.ts.map +1 -1
- package/dist/src/storage/filesystem.js +22 -79
- package/dist/src/storage/filesystem.js.map +1 -1
- package/dist/src/storage/memory.d.ts +2 -7
- package/dist/src/storage/memory.d.ts.map +1 -1
- package/dist/src/storage/memory.js +22 -76
- package/dist/src/storage/memory.js.map +1 -1
- package/dist/src/storage/prisma/client/edge.js +4 -5
- package/dist/src/storage/prisma/client/index-browser.js +1 -2
- package/dist/src/storage/prisma/client/index.d.ts +249 -58
- package/dist/src/storage/prisma/client/index.js +4 -5
- package/dist/src/storage/prisma/client/package.json +1 -1
- package/dist/src/storage/prisma/client/schema.prisma +3 -2
- package/dist/src/storage/prisma/client/wasm.js +1 -2
- package/dist/src/storage/prisma/prisma.d.ts +4 -9
- package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.js +51 -119
- package/dist/src/storage/prisma/prisma.js.map +1 -1
- package/dist/src/storage/types.d.ts +4 -43
- package/dist/src/storage/types.d.ts.map +1 -1
- package/dist/src/storage/utils.d.ts +0 -3
- package/dist/src/storage/utils.d.ts.map +1 -1
- package/dist/src/storage/utils.js +0 -14
- package/dist/src/storage/utils.js.map +1 -1
- package/dist/src/utils/gql-transformations.d.ts +5 -14
- package/dist/src/utils/gql-transformations.d.ts.map +1 -1
- package/dist/src/utils/gql-transformations.js +0 -1
- package/dist/src/utils/gql-transformations.js.map +1 -1
- package/dist/src/utils/misc.d.ts +0 -2
- package/dist/src/utils/misc.d.ts.map +1 -1
- package/dist/src/utils/misc.js +0 -4
- package/dist/src/utils/misc.js.map +1 -1
- package/dist/test/cache.test.d.ts +2 -0
- package/dist/test/cache.test.d.ts.map +1 -0
- package/dist/test/cache.test.js +281 -0
- package/dist/test/cache.test.js.map +1 -0
- package/dist/test/default-remote-drives.test.d.ts +2 -0
- package/dist/test/default-remote-drives.test.d.ts.map +1 -0
- package/dist/test/default-remote-drives.test.js +446 -0
- package/dist/test/default-remote-drives.test.js.map +1 -0
- package/dist/test/document-helpers/addUndo.test.d.ts +2 -0
- package/dist/test/document-helpers/addUndo.test.d.ts.map +1 -0
- package/dist/test/document-helpers/addUndo.test.js +120 -0
- package/dist/test/document-helpers/addUndo.test.js.map +1 -0
- package/dist/test/document-helpers/attachBranch.test.d.ts +2 -0
- package/dist/test/document-helpers/attachBranch.test.d.ts.map +1 -0
- package/dist/test/document-helpers/attachBranch.test.js +333 -0
- package/dist/test/document-helpers/attachBranch.test.js.map +1 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +2 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +1 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +252 -0
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +1 -0
- package/dist/test/document-helpers/garbageCollect.test.d.ts +2 -0
- package/dist/test/document-helpers/garbageCollect.test.d.ts.map +1 -0
- package/dist/test/document-helpers/garbageCollect.test.js +136 -0
- package/dist/test/document-helpers/garbageCollect.test.js.map +1 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +2 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +1 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.js +98 -0
- package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -0
- package/dist/test/document-helpers/merge.test.d.ts +2 -0
- package/dist/test/document-helpers/merge.test.d.ts.map +1 -0
- package/dist/test/document-helpers/merge.test.js +757 -0
- package/dist/test/document-helpers/merge.test.js.map +1 -0
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts +2 -0
- package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +1 -0
- package/dist/test/document-helpers/nextSkipNumber.test.js +123 -0
- package/dist/test/document-helpers/nextSkipNumber.test.js.map +1 -0
- package/dist/test/document-helpers/prepareOperations.test.d.ts +2 -0
- package/dist/test/document-helpers/prepareOperations.test.d.ts.map +1 -0
- package/dist/test/document-helpers/prepareOperations.test.js +304 -0
- package/dist/test/document-helpers/prepareOperations.test.js.map +1 -0
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts +2 -0
- package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +1 -0
- package/dist/test/document-helpers/removeExistingOperations.test.js +150 -0
- package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +2 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js +148 -0
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +2 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +1 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +200 -0
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -0
- package/dist/test/document-helpers/sortOperations.test.d.ts +2 -0
- package/dist/test/document-helpers/sortOperations.test.d.ts.map +1 -0
- package/dist/test/document-helpers/sortOperations.test.js +101 -0
- package/dist/test/document-helpers/sortOperations.test.js.map +1 -0
- package/dist/test/document-helpers/split.test.d.ts +2 -0
- package/dist/test/document-helpers/split.test.d.ts.map +1 -0
- package/dist/test/document-helpers/split.test.js +121 -0
- package/dist/test/document-helpers/split.test.js.map +1 -0
- package/dist/test/document-helpers/utils.d.ts +8 -0
- package/dist/test/document-helpers/utils.d.ts.map +1 -0
- package/dist/test/document-helpers/utils.js +22 -0
- package/dist/test/document-helpers/utils.js.map +1 -0
- package/dist/test/drive-operations.test.d.ts +2 -0
- package/dist/test/drive-operations.test.d.ts.map +1 -0
- package/dist/test/drive-operations.test.js +145 -0
- package/dist/test/drive-operations.test.js.map +1 -0
- package/dist/test/graphql.test.d.ts +2 -0
- package/dist/test/graphql.test.d.ts.map +1 -0
- package/dist/test/graphql.test.js +10 -0
- package/dist/test/graphql.test.js.map +1 -0
- package/dist/test/internal-listener.test.d.ts +2 -0
- package/dist/test/internal-listener.test.d.ts.map +1 -0
- package/dist/test/internal-listener.test.js +277 -0
- package/dist/test/internal-listener.test.js.map +1 -0
- package/dist/test/queue.test.d.ts +2 -0
- package/dist/test/queue.test.d.ts.map +1 -0
- package/dist/test/queue.test.js +338 -0
- package/dist/test/queue.test.js.map +1 -0
- package/dist/test/read-mode.test.d.ts +2 -0
- package/dist/test/read-mode.test.d.ts.map +1 -0
- package/dist/test/read-mode.test.js +578 -0
- package/dist/test/read-mode.test.js.map +1 -0
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts +2 -0
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +1 -0
- package/dist/test/server/driveOperationsConflictResolution.test.js +460 -0
- package/dist/test/server/driveOperationsConflictResolution.test.js.map +1 -0
- package/dist/test/server/mergeOperations.test.d.ts +2 -0
- package/dist/test/server/mergeOperations.test.d.ts.map +1 -0
- package/dist/test/server/mergeOperations.test.js +107 -0
- package/dist/test/server/mergeOperations.test.js.map +1 -0
- package/dist/test/server/processOperations.test.d.ts +2 -0
- package/dist/test/server/processOperations.test.d.ts.map +1 -0
- package/dist/test/server/processOperations.test.js +380 -0
- package/dist/test/server/processOperations.test.js.map +1 -0
- package/dist/test/server.test.d.ts +2 -0
- package/dist/test/server.test.d.ts.map +1 -0
- package/dist/test/server.test.js +899 -0
- package/dist/test/server.test.js.map +1 -0
- package/dist/test/signature-migration.test.d.ts +2 -0
- package/dist/test/signature-migration.test.d.ts.map +1 -0
- package/dist/test/signature-migration.test.js +239 -0
- package/dist/test/signature-migration.test.js.map +1 -0
- package/dist/test/storage.test.d.ts +2 -0
- package/dist/test/storage.test.d.ts.map +1 -0
- package/dist/test/storage.test.js +523 -0
- package/dist/test/storage.test.js.map +1 -0
- package/dist/test/utils.d.ts +48 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +133 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/test/utils.test.d.ts +2 -0
- package/dist/test/utils.test.d.ts.map +1 -0
- package/dist/test/utils.test.js +89 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/test/vitest-setup.d.ts +2 -0
- package/dist/test/vitest-setup.d.ts.map +1 -0
- package/dist/test/vitest-setup.js +5 -0
- package/dist/test/vitest-setup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +27 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +4 -4
- package/dist/src/queue/event.d.ts +0 -42
- package/dist/src/queue/event.d.ts.map +0 -1
- package/dist/src/queue/event.js +0 -222
- package/dist/src/queue/event.js.map +0 -1
- package/dist/src/server/sync-unit-map.d.ts +0 -137
- package/dist/src/server/sync-unit-map.d.ts.map +0 -1
- package/dist/src/server/sync-unit-map.js +0 -234
- package/dist/src/server/sync-unit-map.js.map +0 -1
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
|
@@ -1,48 +1,10 @@
|
|
|
1
1
|
import { type DocumentDriveDocument } from "#drive-document-model/gen/types";
|
|
2
2
|
import { type SynchronizationUnitQuery } from "#server/types";
|
|
3
3
|
import type { Operation, OperationFromDocument, PHDocument } from "document-model";
|
|
4
|
-
export type IStorageUnit = {
|
|
5
|
-
/** The id of the document. If '*' then select all. */
|
|
6
|
-
documentId: string;
|
|
7
|
-
/** The type of the document model. If '*' then select all. */
|
|
8
|
-
documentModelType: string;
|
|
9
|
-
/** The scope of the document. If '*' then select all. */
|
|
10
|
-
scope: string;
|
|
11
|
-
/** The branch of the document. If '*' then select all. */
|
|
12
|
-
branch: string;
|
|
13
|
-
};
|
|
14
|
-
export type IStorageUnitFilter = {
|
|
15
|
-
/** The ids of the parent documents. If '*' then select all. */
|
|
16
|
-
parentId?: string[];
|
|
17
|
-
/** The ids of the documents. If '*' then select all. */
|
|
18
|
-
documentId?: string[];
|
|
19
|
-
/** The types of the document models. If '*' then select all. */
|
|
20
|
-
documentModelType?: string[];
|
|
21
|
-
/** The scopes of the documents. If '*' then select all. */
|
|
22
|
-
scope?: string[];
|
|
23
|
-
/** The branches of the documents. If '*' then select all. */
|
|
24
|
-
branch?: string[];
|
|
25
|
-
};
|
|
26
|
-
export type ResolvedStorageUnitFilter = Required<{
|
|
27
|
-
[K in keyof IStorageUnitFilter]: Set<string> | null;
|
|
28
|
-
}>;
|
|
29
|
-
export interface IStorageUnitStorage {
|
|
30
|
-
/**
|
|
31
|
-
* Finds storage units based on the provided filter.
|
|
32
|
-
*
|
|
33
|
-
* @param filter - The filter to apply.
|
|
34
|
-
* @param limit - The maximum number of documents to return.
|
|
35
|
-
* @param cursor - The cursor to start the search from.
|
|
36
|
-
*/
|
|
37
|
-
findStorageUnitsBy: (filter: IStorageUnitFilter, limit: number, cursor?: string) => Promise<{
|
|
38
|
-
units: IStorageUnit[];
|
|
39
|
-
nextCursor?: string;
|
|
40
|
-
}>;
|
|
41
|
-
}
|
|
42
4
|
/**
|
|
43
5
|
* Describes the storage interface for documents.
|
|
44
6
|
*/
|
|
45
|
-
export interface IDocumentStorage
|
|
7
|
+
export interface IDocumentStorage {
|
|
46
8
|
/**
|
|
47
9
|
* Resolves a list of ids from a list of slugs.
|
|
48
10
|
*
|
|
@@ -159,15 +121,14 @@ export interface IDocumentAdminStorage extends IDocumentStorage {
|
|
|
159
121
|
* Describes the storage interface for document operations.
|
|
160
122
|
*/
|
|
161
123
|
export interface IDocumentOperationStorage {
|
|
162
|
-
addDocumentOperations<TDocument extends PHDocument>(id: string, operations: OperationFromDocument<TDocument>[], document: PHDocument): Promise<void>;
|
|
163
|
-
addDocumentOperationsWithTransaction?<TDocument extends PHDocument>(id: string, callback: (document: TDocument) => Promise<{
|
|
124
|
+
addDocumentOperations<TDocument extends PHDocument>(drive: string, id: string, operations: OperationFromDocument<TDocument>[], document: PHDocument): Promise<void>;
|
|
125
|
+
addDocumentOperationsWithTransaction?<TDocument extends PHDocument>(drive: string, id: string, callback: (document: TDocument) => Promise<{
|
|
164
126
|
operations: OperationFromDocument<TDocument>[];
|
|
165
127
|
document: PHDocument;
|
|
166
128
|
}>): Promise<void>;
|
|
167
|
-
getOperationResultingState?(id: string, index: number, scope: string, branch: string): Promise<string | undefined>;
|
|
129
|
+
getOperationResultingState?(drive: string, id: string, index: number, scope: string, branch: string): Promise<string | undefined>;
|
|
168
130
|
getSynchronizationUnitsRevision(units: SynchronizationUnitQuery[]): Promise<{
|
|
169
131
|
documentId: string;
|
|
170
|
-
documentType: string;
|
|
171
132
|
scope: string;
|
|
172
133
|
branch: string;
|
|
173
134
|
lastUpdated: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { type IStorageUnitFilter, type ResolvedStorageUnitFilter } from "./types.js";
|
|
2
1
|
export declare const isValidDocumentId: (id: string) => boolean | "";
|
|
3
2
|
export declare const isValidSlug: (slug: string) => boolean | "";
|
|
4
|
-
export declare const resolveStorageUnitsFilterComponent: (component: string[] | undefined) => Set<string> | null;
|
|
5
|
-
export declare const resolveStorageUnitsFilter: (filter: IStorageUnitFilter) => ResolvedStorageUnitFilter;
|
|
6
3
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/storage/utils.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/storage/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,iBACQ,CAAC;AAErD,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,iBACkB,CAAC"}
|
|
@@ -1,17 +1,3 @@
|
|
|
1
1
|
export const isValidDocumentId = (id) => id && id.length > 0 && /^[a-zA-Z0-9_-]+$/.test(id);
|
|
2
2
|
export const isValidSlug = (slug) => slug && slug.length > 0 && /^[a-zA-Z0-9_-]+$/.test(slug);
|
|
3
|
-
export const resolveStorageUnitsFilterComponent = (component) => {
|
|
4
|
-
return component && component.length > 0 && !component.includes("*")
|
|
5
|
-
? new Set(component)
|
|
6
|
-
: null;
|
|
7
|
-
};
|
|
8
|
-
export const resolveStorageUnitsFilter = (filter) => {
|
|
9
|
-
return {
|
|
10
|
-
parentId: resolveStorageUnitsFilterComponent(filter.parentId),
|
|
11
|
-
documentId: resolveStorageUnitsFilterComponent(filter.documentId),
|
|
12
|
-
documentModelType: resolveStorageUnitsFilterComponent(filter.documentModelType),
|
|
13
|
-
scope: resolveStorageUnitsFilterComponent(filter.scope),
|
|
14
|
-
branch: resolveStorageUnitsFilterComponent(filter.branch),
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
3
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/storage/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/storage/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,EAAE,CAC9C,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import { type DocumentDriveDocument } from "document-drive";
|
|
2
|
-
import { type
|
|
2
|
+
import { type PHDocument } from "document-model";
|
|
3
3
|
export declare function responseForDrive(drive: DocumentDriveDocument): {
|
|
4
4
|
id: string;
|
|
5
5
|
slug: string;
|
|
6
|
-
meta:
|
|
6
|
+
meta: {
|
|
7
|
+
preferredEditor?: string;
|
|
8
|
+
} | undefined;
|
|
7
9
|
name: string;
|
|
8
10
|
icon: string | undefined;
|
|
9
11
|
};
|
|
10
|
-
export
|
|
11
|
-
id: string;
|
|
12
|
-
revision: number;
|
|
13
|
-
createdAt: string;
|
|
14
|
-
lastModified: string;
|
|
15
|
-
__typename: string;
|
|
16
|
-
state: unknown;
|
|
17
|
-
initialState: unknown;
|
|
18
|
-
stateJSON: unknown;
|
|
19
|
-
operations: Operation[];
|
|
20
|
-
};
|
|
21
|
-
export declare function responseForDocument(document: PHDocument, typeName: string): PHDocumentGQL;
|
|
12
|
+
export declare function responseForDocument(document: PHDocument, typeName: string): any;
|
|
22
13
|
//# sourceMappingURL=gql-transformations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql-transformations.d.ts","sourceRoot":"","sources":["../../../src/utils/gql-transformations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"gql-transformations.d.ts","sourceRoot":"","sources":["../../../src/utils/gql-transformations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB;;;;;;;;EAQ5D;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,MAAM,GACf,GAAG,CAmBL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql-transformations.js","sourceRoot":"","sources":["../../../src/utils/gql-transformations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gql-transformations.js","sourceRoot":"","sources":["../../../src/utils/gql-transformations.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;QACnB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;QACvB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;QACvB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;QAC7B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAoB,EACpB,QAAgB;IAEhB,OAAO;QACL,GAAG,QAAQ;QACX,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE;QACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe;QAC1C,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB;QAClD,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY;QAC1C,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;QAC1B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;QAC9C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAC5B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAChC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAa,EAAE,EAAE,CAAC,CAAC;YAC7D,GAAG,EAAE;YACL,SAAS,EACP,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;SACrE,CAAC,CAAC;QACH,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM;QAChD,UAAU,EAAE,QAAQ;KACrB,CAAC;AACJ,CAAC"}
|
package/dist/src/utils/misc.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type Operation, type OperationFromDocument, type OperationsFromDocument, type PHDocument } from "document-model";
|
|
2
2
|
import { type DocumentDriveDocument } from "#drive-document-model/gen/types";
|
|
3
|
-
import { type ListenerRevision } from "#server/types";
|
|
4
3
|
import { pascalCase } from "change-case";
|
|
5
4
|
import { RunAsap } from "./run-asap.js";
|
|
6
5
|
export declare const runAsap: typeof RunAsap.runAsap;
|
|
@@ -9,7 +8,6 @@ export declare function isDocumentDrive(document: PHDocument): document is Docum
|
|
|
9
8
|
export declare function mergeOperations<TDocument extends PHDocument>(currentOperations: OperationsFromDocument<TDocument>, newOperations: OperationFromDocument<TDocument>[]): OperationsFromDocument<TDocument>;
|
|
10
9
|
export declare function isNoopUpdate(operation: Operation, latestOperation?: Operation): boolean;
|
|
11
10
|
export declare function isBefore(dateA: Date | string, dateB: Date | string): boolean;
|
|
12
|
-
export declare function operationsToRevision(operations: Pick<Operation, "index">[] | undefined): ListenerRevision["revision"];
|
|
13
11
|
/**
|
|
14
12
|
* Converts a string to PascalCase
|
|
15
13
|
* @param {string} str - The input string to convert
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,eAAO,MAAM,OAAO,wBAAkB,CAAC;AACvC,eAAO,MAAM,YAAY,6BAAuB,CAAC;AAEjD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,UAAU,GACnB,QAAQ,IAAI,qBAAqB,CAEnC;AAED,wBAAgB,eAAe,CAAC,SAAS,SAAS,UAAU,EAC1D,iBAAiB,EAAE,sBAAsB,CAAC,SAAS,CAAC,EACpD,aAAa,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,GAChD,sBAAsB,CAAC,SAAS,CAAC,CA0BnC;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,EACpB,eAAe,CAAC,EAAE,SAAS,WAc5B;AAGD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,WAElE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,mBAAa,CAAC"}
|
package/dist/src/utils/misc.js
CHANGED
|
@@ -38,10 +38,6 @@ export function isNoopUpdate(operation, latestOperation) {
|
|
|
38
38
|
export function isBefore(dateA, dateB) {
|
|
39
39
|
return new Date(dateA) < new Date(dateB);
|
|
40
40
|
}
|
|
41
|
-
export function operationsToRevision(operations) {
|
|
42
|
-
const lastOperation = operations?.at(-1);
|
|
43
|
-
return lastOperation ? lastOperation.index + 1 : 0;
|
|
44
|
-
}
|
|
45
41
|
/**
|
|
46
42
|
* Converts a string to PascalCase
|
|
47
43
|
* @param {string} str - The input string to convert
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AAEjD,MAAM,UAAU,eAAe,CAC7B,QAAoB;IAEpB,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,KAAK,iBAAiB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,iBAAoD,EACpD,aAAiD;IAEjD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAE3D,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,IAAsB,CAAC;QACrC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CACnC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;IACF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CACtB,OAAO,EACP,UAAU,EACV,qCAAqC,UAAU,CAAC,KAAK,6BAA6B,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CACtH,CAAC;IACJ,CAAC;IAED,OAAO,aAAa;SACjB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,MAAM,CAAoC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC;IACjE,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,SAAoB,EACpB,eAA2B;IAE3B,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;IAC3C,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,KAAK,MAAM,CAAC;IACvD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC;IAChE,MAAM,2BAA2B,GAAG,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;IAE1E,OAAO,CACL,QAAQ,IAAI,cAAc,IAAI,aAAa,IAAI,2BAA2B,CAC3E,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,QAAQ,CAAC,KAAoB,EAAE,KAAoB;IACjE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../../test/cache.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import sizeof from "object-sizeof";
|
|
2
|
+
import { createClient } from "redis";
|
|
3
|
+
import { beforeEach, describe, it } from "vitest";
|
|
4
|
+
import { createDocument as createDocumentModelDocument, generateId, } from "../../document-model/index.js";
|
|
5
|
+
import { LRUCacheStorage } from "../src/cache/lru.js";
|
|
6
|
+
import InMemoryCache from "../src/cache/memory.js";
|
|
7
|
+
import { createDocument as createDriveDocument } from "../src/drive-document-model/gen/utils.js";
|
|
8
|
+
const initRedis = async () => {
|
|
9
|
+
const redisClient = createClient({
|
|
10
|
+
url: process.env.REDIS_TLS_URL ?? "redis://localhost:6379",
|
|
11
|
+
});
|
|
12
|
+
redisClient.on("error", (err) => {
|
|
13
|
+
console.log("Redis Client Error", err);
|
|
14
|
+
throw new Error("Redis Client Error");
|
|
15
|
+
});
|
|
16
|
+
redisClient.connect();
|
|
17
|
+
return redisClient;
|
|
18
|
+
};
|
|
19
|
+
// Array of cache implementations to test
|
|
20
|
+
const cacheImplementations = [
|
|
21
|
+
["InMemoryCache", () => Promise.resolve(new InMemoryCache())],
|
|
22
|
+
[
|
|
23
|
+
"InMemoryCache with LRU with 512KB maxSize",
|
|
24
|
+
() => Promise.resolve(new InMemoryCache(new LRUCacheStorage({ maxSize: 512000 }))),
|
|
25
|
+
],
|
|
26
|
+
// [
|
|
27
|
+
// "RedisCache",
|
|
28
|
+
// async () => {
|
|
29
|
+
// const client = await initRedis();
|
|
30
|
+
// // Clear the test keys
|
|
31
|
+
// await client.flushDb();
|
|
32
|
+
// // Use type assertion to handle Redis client type compatibility
|
|
33
|
+
// return new RedisCache(client as any);
|
|
34
|
+
// },
|
|
35
|
+
// ],
|
|
36
|
+
];
|
|
37
|
+
describe.each(cacheImplementations)("%s", (_, buildCache) => {
|
|
38
|
+
let cache;
|
|
39
|
+
beforeEach(async () => {
|
|
40
|
+
cache = await buildCache();
|
|
41
|
+
});
|
|
42
|
+
// Document tests
|
|
43
|
+
describe("document operations", () => {
|
|
44
|
+
it("should set and get a document", async ({ expect }) => {
|
|
45
|
+
const documentId = "test-document-id";
|
|
46
|
+
const document = createDocumentModelDocument();
|
|
47
|
+
await cache.setDocument(documentId, document);
|
|
48
|
+
const retrievedDocument = await cache.getDocument(documentId);
|
|
49
|
+
expect(retrievedDocument).toBeDefined();
|
|
50
|
+
expect(retrievedDocument?.header.documentType).toBe(document.header.documentType);
|
|
51
|
+
});
|
|
52
|
+
it("should return undefined when getting a non-existent document", async ({ expect, }) => {
|
|
53
|
+
const documentId = "non-existent-document";
|
|
54
|
+
const retrievedDocument = await cache.getDocument(documentId);
|
|
55
|
+
expect(retrievedDocument).toBeUndefined();
|
|
56
|
+
});
|
|
57
|
+
it("should delete a document", async ({ expect }) => {
|
|
58
|
+
const documentId = "document-to-delete";
|
|
59
|
+
const document = createDocumentModelDocument();
|
|
60
|
+
await cache.setDocument(documentId, document);
|
|
61
|
+
const deletionResult = await cache.deleteDocument(documentId);
|
|
62
|
+
const retrievedDocument = await cache.getDocument(documentId);
|
|
63
|
+
expect(deletionResult).toBe(true);
|
|
64
|
+
expect(retrievedDocument).toBeUndefined();
|
|
65
|
+
});
|
|
66
|
+
it("should return false when deleting a non-existent document", async ({ expect, }) => {
|
|
67
|
+
const documentId = "non-existent-document";
|
|
68
|
+
const deletionResult = await cache.deleteDocument(documentId);
|
|
69
|
+
expect(deletionResult).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
// Drive tests
|
|
73
|
+
describe("drive operations", () => {
|
|
74
|
+
it("should set and get a drive", async ({ expect }) => {
|
|
75
|
+
const driveId = "test-drive-id";
|
|
76
|
+
const drive = createDriveDocument();
|
|
77
|
+
await cache.setDrive(driveId, drive);
|
|
78
|
+
const retrievedDrive = await cache.getDrive(driveId);
|
|
79
|
+
expect(retrievedDrive).toBeDefined();
|
|
80
|
+
expect(retrievedDrive?.header.documentType).toBe(drive.header.documentType);
|
|
81
|
+
});
|
|
82
|
+
it("should return undefined when getting a non-existent drive", async ({ expect, }) => {
|
|
83
|
+
const driveId = "non-existent-drive";
|
|
84
|
+
const retrievedDrive = await cache.getDrive(driveId);
|
|
85
|
+
expect(retrievedDrive).toBeUndefined();
|
|
86
|
+
});
|
|
87
|
+
it("should delete a drive", async ({ expect }) => {
|
|
88
|
+
const drive = createDriveDocument();
|
|
89
|
+
const driveId = drive.header.id;
|
|
90
|
+
// Set slug for slug deletion logic
|
|
91
|
+
drive.header.slug = "test-slug";
|
|
92
|
+
await cache.setDrive(driveId, drive);
|
|
93
|
+
const deletionResult = await cache.deleteDrive(driveId);
|
|
94
|
+
const retrievedDrive = await cache.getDrive(driveId);
|
|
95
|
+
expect(deletionResult).toBe(true);
|
|
96
|
+
expect(retrievedDrive).toBeUndefined();
|
|
97
|
+
});
|
|
98
|
+
it("should return false when deleting a non-existent drive", async ({ expect, }) => {
|
|
99
|
+
const driveId = generateId();
|
|
100
|
+
const deletionResult = await cache.deleteDrive(driveId);
|
|
101
|
+
expect(deletionResult).toBe(false);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
// Drive by slug tests
|
|
105
|
+
describe("drive by slug operations", () => {
|
|
106
|
+
it("should set and get a drive by slug", async ({ expect }) => {
|
|
107
|
+
const slug = "test-slug";
|
|
108
|
+
const drive = createDriveDocument();
|
|
109
|
+
const driveId = drive.header.id;
|
|
110
|
+
drive.header.id = driveId;
|
|
111
|
+
drive.header.slug = slug;
|
|
112
|
+
await cache.setDriveBySlug(slug, drive);
|
|
113
|
+
const retrievedDrive = await cache.getDriveBySlug(slug);
|
|
114
|
+
expect(retrievedDrive).toBeDefined();
|
|
115
|
+
expect(retrievedDrive?.header.id).toBe(driveId);
|
|
116
|
+
expect(retrievedDrive?.header.slug).toBe(slug);
|
|
117
|
+
});
|
|
118
|
+
it("should return undefined when getting a non-existent drive by slug", async ({ expect, }) => {
|
|
119
|
+
const slug = "non-existent-slug";
|
|
120
|
+
const retrievedDrive = await cache.getDriveBySlug(slug);
|
|
121
|
+
expect(retrievedDrive).toBeUndefined();
|
|
122
|
+
});
|
|
123
|
+
it("should delete a drive by slug", async ({ expect }) => {
|
|
124
|
+
const slug = "slug-to-delete";
|
|
125
|
+
const drive = createDriveDocument();
|
|
126
|
+
drive.header.slug = slug;
|
|
127
|
+
await cache.setDriveBySlug(slug, drive);
|
|
128
|
+
const deletionResult = await cache.deleteDriveBySlug(slug);
|
|
129
|
+
const retrievedDrive = await cache.getDriveBySlug(slug);
|
|
130
|
+
expect(deletionResult).toBe(true);
|
|
131
|
+
expect(retrievedDrive).toBeUndefined();
|
|
132
|
+
});
|
|
133
|
+
it("should return false when deleting a non-existent drive by slug", async ({ expect, }) => {
|
|
134
|
+
const slug = "non-existent-slug";
|
|
135
|
+
const deletionResult = await cache.deleteDriveBySlug(slug);
|
|
136
|
+
expect(deletionResult).toBe(false);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// Cross-referencing tests
|
|
140
|
+
describe("cross-referencing", () => {
|
|
141
|
+
it("should retrieve the same drive via ID after setting by slug", async ({ expect, }) => {
|
|
142
|
+
const slug = "test-slug";
|
|
143
|
+
const drive = createDriveDocument();
|
|
144
|
+
const driveId = drive.header.id;
|
|
145
|
+
// Set slug for consistency
|
|
146
|
+
drive.header.slug = slug;
|
|
147
|
+
await cache.setDriveBySlug(slug, drive);
|
|
148
|
+
const retrievedDriveBySlug = await cache.getDriveBySlug(slug);
|
|
149
|
+
const retrievedDriveById = await cache.getDrive(driveId);
|
|
150
|
+
expect(retrievedDriveBySlug).toBeDefined();
|
|
151
|
+
expect(retrievedDriveById).toBeDefined();
|
|
152
|
+
expect(retrievedDriveById?.header.id).toBe(driveId);
|
|
153
|
+
expect(retrievedDriveById?.header.slug).toBe(slug);
|
|
154
|
+
expect(retrievedDriveBySlug?.header.id).toBe(retrievedDriveById?.header.id);
|
|
155
|
+
});
|
|
156
|
+
it("should make drive inaccessible by slug after deleting by ID", async ({ expect, }) => {
|
|
157
|
+
const slug = "test-slug";
|
|
158
|
+
const drive = createDriveDocument();
|
|
159
|
+
const driveId = drive.header.id;
|
|
160
|
+
// Set slug for slug deletion logic
|
|
161
|
+
drive.header.slug = slug;
|
|
162
|
+
await cache.setDriveBySlug(slug, drive);
|
|
163
|
+
await cache.deleteDrive(driveId);
|
|
164
|
+
const retrievedDriveBySlug = await cache.getDriveBySlug(slug);
|
|
165
|
+
expect(retrievedDriveBySlug).toBeUndefined();
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
describe("collisions", () => {
|
|
169
|
+
it("(OBSOLETE) should allow document and drives with the same id without colliding", async ({ expect, }) => {
|
|
170
|
+
const documentId = generateId();
|
|
171
|
+
const driveId = documentId;
|
|
172
|
+
const document = createDocumentModelDocument();
|
|
173
|
+
document.header.id = documentId;
|
|
174
|
+
const drive = createDriveDocument();
|
|
175
|
+
drive.header.id = driveId;
|
|
176
|
+
await cache.setDocument(documentId, document);
|
|
177
|
+
await cache.setDrive(driveId, drive);
|
|
178
|
+
const retrievedDocument = await cache.getDocument(documentId);
|
|
179
|
+
const retrievedDrive = await cache.getDrive(driveId);
|
|
180
|
+
expect(retrievedDocument).toBeDefined();
|
|
181
|
+
expect(retrievedDrive).toBeDefined();
|
|
182
|
+
expect(retrievedDocument?.header.documentType).toBe(document.header.documentType);
|
|
183
|
+
expect(retrievedDrive?.header.documentType).toBe(drive.header.documentType);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
// Test specifically for LRU cache behavior
|
|
188
|
+
describe("LRU Cache Specific Tests", () => {
|
|
189
|
+
// Helper functions for test data
|
|
190
|
+
function createTestDocument() {
|
|
191
|
+
return createDocumentModelDocument({
|
|
192
|
+
state: {
|
|
193
|
+
global: {
|
|
194
|
+
id: `doc`,
|
|
195
|
+
name: `Document`,
|
|
196
|
+
author: { name: "author", website: "url" },
|
|
197
|
+
description: "x".repeat(100),
|
|
198
|
+
extension: "md",
|
|
199
|
+
specifications: [],
|
|
200
|
+
},
|
|
201
|
+
local: {},
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
function createTestDrive() {
|
|
206
|
+
const drive = createDriveDocument();
|
|
207
|
+
drive.state.global.nodes = new Array(10).fill(0).map((_, i) => ({
|
|
208
|
+
id: `node-${i}`,
|
|
209
|
+
name: `Node ${i}`,
|
|
210
|
+
kind: "FILE",
|
|
211
|
+
parentFolder: null,
|
|
212
|
+
}));
|
|
213
|
+
return drive;
|
|
214
|
+
}
|
|
215
|
+
const testDocSize = sizeof(createTestDocument());
|
|
216
|
+
it("should evict older documents when size limit is reached", async ({ expect, }) => {
|
|
217
|
+
// Create a small LRU cache with size for a single document
|
|
218
|
+
const cache = new InMemoryCache(new LRUCacheStorage({ maxSize: testDocSize }));
|
|
219
|
+
const doc = createTestDocument();
|
|
220
|
+
await cache.setDocument(`doc-1`, doc);
|
|
221
|
+
await cache.setDocument(`doc-2`, doc);
|
|
222
|
+
// The earliest documents should have been evicted
|
|
223
|
+
const firstDoc = await cache.getDocument("doc-1");
|
|
224
|
+
const lastDoc = await cache.getDocument("doc-2");
|
|
225
|
+
expect(firstDoc).toBeUndefined(); // Should be evicted
|
|
226
|
+
expect(lastDoc).toBeDefined(); // Should still be in cache
|
|
227
|
+
});
|
|
228
|
+
it("should keep most recently accessed documents in cache", async ({ expect, }) => {
|
|
229
|
+
// Create cache that can hold 2 documents
|
|
230
|
+
const cache = new InMemoryCache(new LRUCacheStorage({ maxSize: testDocSize * 2 }));
|
|
231
|
+
const doc = createTestDocument();
|
|
232
|
+
// Add 3 documents
|
|
233
|
+
await cache.setDocument(`doc-1`, doc);
|
|
234
|
+
await cache.setDocument(`doc-2`, doc);
|
|
235
|
+
// Access doc-1 to make it most recently used
|
|
236
|
+
await cache.getDocument(`doc-1`);
|
|
237
|
+
// Add doc-3 which should evict doc-2 since doc-1 was recently accessed
|
|
238
|
+
await cache.setDocument(`doc-3`, doc);
|
|
239
|
+
const doc1 = await cache.getDocument("doc-1");
|
|
240
|
+
const doc2 = await cache.getDocument("doc-2");
|
|
241
|
+
const doc3 = await cache.getDocument("doc-3");
|
|
242
|
+
expect(doc1).toBeDefined(); // Should remain as it was most recently accessed
|
|
243
|
+
expect(doc2).toBeUndefined(); // Should be evicted
|
|
244
|
+
expect(doc3).toBeDefined(); // Should be present as it was just added
|
|
245
|
+
});
|
|
246
|
+
it("should handle document updates without unnecessary eviction", async ({ expect, }) => {
|
|
247
|
+
// Create cache that can hold 2 documents
|
|
248
|
+
const cache = new InMemoryCache(new LRUCacheStorage({ maxSize: testDocSize * 2 }));
|
|
249
|
+
const doc = createTestDocument();
|
|
250
|
+
// Add 2 documents filling the cache
|
|
251
|
+
await cache.setDocument(`doc-1`, doc);
|
|
252
|
+
await cache.setDocument(`doc-2`, doc);
|
|
253
|
+
// Update doc-1 with similar sized content
|
|
254
|
+
const updatedDoc = JSON.parse(JSON.stringify(doc));
|
|
255
|
+
updatedDoc.state.global.description = "y".repeat(100);
|
|
256
|
+
await cache.setDocument(`doc-1`, updatedDoc);
|
|
257
|
+
const doc1 = await cache.getDocument("doc-1");
|
|
258
|
+
const doc2 = await cache.getDocument("doc-2");
|
|
259
|
+
expect(doc1).toBeDefined();
|
|
260
|
+
expect((doc1?.state.global).description).toBe("y".repeat(100));
|
|
261
|
+
expect(doc2).toBeDefined(); // Should not be evicted as cache size wasn't exceeded
|
|
262
|
+
});
|
|
263
|
+
it("should maintain size limit with multiple document types", async ({ expect, }) => {
|
|
264
|
+
const doc = createTestDocument();
|
|
265
|
+
const drive = createTestDrive();
|
|
266
|
+
const totalSize = sizeof(doc) + sizeof(drive);
|
|
267
|
+
// Create cache that can hold one document and one drive
|
|
268
|
+
const cache = new InMemoryCache(new LRUCacheStorage({ maxSize: totalSize }));
|
|
269
|
+
await cache.setDocument(`doc-1`, doc);
|
|
270
|
+
await cache.setDrive(`drive-1`, drive);
|
|
271
|
+
// Adding another document should evict the first document
|
|
272
|
+
await cache.setDocument(`doc-2`, doc);
|
|
273
|
+
const doc1 = await cache.getDocument("doc-1");
|
|
274
|
+
const doc2 = await cache.getDocument("doc-2");
|
|
275
|
+
const drive1 = await cache.getDrive("drive-1");
|
|
276
|
+
expect(doc1).toBeUndefined(); // Should be evicted
|
|
277
|
+
expect(doc2).toBeDefined(); // Should be present
|
|
278
|
+
expect(drive1).toBeDefined(); // Should be present as it's in a different storage
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
//# sourceMappingURL=cache.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../../test/cache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-remote-drives.test.d.ts","sourceRoot":"","sources":["../../test/default-remote-drives.test.ts"],"names":[],"mappings":""}
|