document-drive 4.1.0-dev.59 → 4.1.0-dev.61
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/src/drive-document-model/gen/drive/creators.js +1 -1
- package/dist/src/drive-document-model/gen/drive/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.d.ts +1 -2
- package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.js +1 -1
- package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/ph-factories.js +1 -1
- package/dist/src/drive-document-model/gen/ph-factories.js.map +1 -1
- package/dist/src/drive-document-model/gen/reducer.js +1 -1
- package/dist/src/drive-document-model/gen/reducer.js.map +1 -1
- package/dist/src/drive-document-model/gen/utils.js +1 -1
- package/dist/src/drive-document-model/gen/utils.js.map +1 -1
- package/dist/src/drive-document-model/module.d.ts.map +1 -1
- package/dist/src/drive-document-model/module.js +2 -1
- package/dist/src/drive-document-model/module.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js +1 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
- package/dist/src/processors/processor-manager.js +1 -1
- package/dist/src/processors/processor-manager.js.map +1 -1
- package/dist/src/queue/event.js +1 -1
- package/dist/src/queue/event.js.map +1 -1
- package/dist/src/server/base-server.d.ts +4 -1
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +218 -5
- package/dist/src/server/base-server.js.map +1 -1
- package/dist/src/server/builder.d.ts.map +1 -1
- package/dist/src/server/builder.js +7 -1
- package/dist/src/server/builder.js.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.js +2 -2
- package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
- package/dist/src/server/sync-manager.js +1 -1
- package/dist/src/server/sync-manager.js.map +1 -1
- package/dist/src/server/types.d.ts +3 -0
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.d.ts +1 -1
- package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.js +1 -4
- package/dist/src/storage/prisma/prisma.js.map +1 -1
- package/dist/src/utils/gql-transformations.d.ts +20 -2
- package/dist/src/utils/gql-transformations.d.ts.map +1 -1
- package/dist/src/utils/gql-transformations.js.map +1 -1
- package/dist/src/utils/graphql.d.ts.map +1 -1
- package/dist/src/utils/graphql.js +0 -1
- package/dist/src/utils/graphql.js.map +1 -1
- package/dist/src/utils/types.d.ts +1 -12
- package/dist/src/utils/types.d.ts.map +1 -1
- package/dist/test/benchmarks/processOperations.bench.js +2 -1
- package/dist/test/benchmarks/processOperations.bench.js.map +1 -1
- package/dist/test/benchmarks/queue.bench.js +2 -1
- package/dist/test/benchmarks/queue.bench.js.map +1 -1
- package/dist/test/cache.test.js +2 -1
- package/dist/test/cache.test.js.map +1 -1
- package/dist/test/default-remote-drives.test.js +2 -1
- package/dist/test/default-remote-drives.test.js.map +1 -1
- package/dist/test/drive-operations.test.js +2 -1
- package/dist/test/drive-operations.test.js.map +1 -1
- package/dist/test/dual-action-create.test.d.ts +2 -0
- package/dist/test/dual-action-create.test.d.ts.map +1 -0
- package/dist/test/dual-action-create.test.js +199 -0
- package/dist/test/dual-action-create.test.js.map +1 -0
- package/dist/test/dual-action-migration.test.d.ts +2 -0
- package/dist/test/dual-action-migration.test.d.ts.map +1 -0
- package/dist/test/dual-action-migration.test.js +344 -0
- package/dist/test/dual-action-migration.test.js.map +1 -0
- package/dist/test/internal-listener.test.js +2 -1
- package/dist/test/internal-listener.test.js.map +1 -1
- package/dist/test/queue.test.js +2 -1
- package/dist/test/queue.test.js.map +1 -1
- package/dist/test/read-mode.test.js +2 -1
- package/dist/test/read-mode.test.js.map +1 -1
- package/dist/test/server/driveOperationsConflictResolution.test.js +0 -2
- package/dist/test/server/driveOperationsConflictResolution.test.js.map +1 -1
- package/dist/test/server/processOperations.test.js +3 -2
- package/dist/test/server/processOperations.test.js.map +1 -1
- package/dist/test/server.test.js +2 -1
- package/dist/test/server.test.js.map +1 -1
- package/dist/test/signature-migration.test.js +3 -3
- package/dist/test/signature-migration.test.js.map +1 -1
- package/dist/test/storage.test.js +2 -1
- package/dist/test/storage.test.js.map +1 -1
- package/dist/test/switchboard-push-listener.test.js +2 -1
- package/dist/test/switchboard-push-listener.test.js.map +1 -1
- package/dist/test/sync-manager.test.js +2 -1
- package/dist/test/sync-manager.test.js.map +1 -1
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +7 -1
- package/dist/test/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { InMemoryCache, MemoryStorage, ReactorBuilder, baseDocumentModels, } from "document-drive";
|
|
2
|
+
import { documentModelCreateDocument, documentModelDocumentModelModule, } from "document-model";
|
|
3
|
+
import { createPresignedHeader, generateId } from "document-model/core";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
const documentModels = baseDocumentModels;
|
|
6
|
+
describe("Dual Action Create", () => {
|
|
7
|
+
let storage;
|
|
8
|
+
let cache;
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
vi.setSystemTime(new Date("2024-01-01"));
|
|
11
|
+
storage = new MemoryStorage();
|
|
12
|
+
cache = new InMemoryCache();
|
|
13
|
+
});
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
vi.useRealTimers();
|
|
16
|
+
});
|
|
17
|
+
function createDocumentModelWithId(id) {
|
|
18
|
+
return {
|
|
19
|
+
...documentModelCreateDocument(),
|
|
20
|
+
header: createPresignedHeader(id, documentModelDocumentModelModule.documentModel.global.id),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
describe("with feature flag disabled (legacy behavior)", () => {
|
|
24
|
+
it("creates document without CREATE_DOCUMENT and UPGRADE_DOCUMENT operations", async () => {
|
|
25
|
+
const server = new ReactorBuilder(documentModels)
|
|
26
|
+
.withCache(cache)
|
|
27
|
+
.withStorage(storage)
|
|
28
|
+
.withOptions({
|
|
29
|
+
featureFlags: {
|
|
30
|
+
enableDualActionCreate: false,
|
|
31
|
+
},
|
|
32
|
+
})
|
|
33
|
+
.build();
|
|
34
|
+
await server.initialize();
|
|
35
|
+
const documentId = generateId();
|
|
36
|
+
const document = await server.addDocument(createDocumentModelWithId(documentId));
|
|
37
|
+
expect(document).toBeDefined();
|
|
38
|
+
expect(document.header.id).toBe(documentId);
|
|
39
|
+
// Legacy behavior: no operations on new document
|
|
40
|
+
const operations = [
|
|
41
|
+
...document.operations.global,
|
|
42
|
+
...document.operations.local,
|
|
43
|
+
];
|
|
44
|
+
expect(operations.length).toBe(0);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe("with feature flag enabled (dual action behavior)", () => {
|
|
48
|
+
it("creates unsigned document with CREATE_DOCUMENT and UPGRADE_DOCUMENT operations", async () => {
|
|
49
|
+
const server = new ReactorBuilder(documentModels)
|
|
50
|
+
.withCache(cache)
|
|
51
|
+
.withStorage(storage)
|
|
52
|
+
.withOptions({
|
|
53
|
+
featureFlags: {
|
|
54
|
+
enableDualActionCreate: true,
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
.build();
|
|
58
|
+
await server.initialize();
|
|
59
|
+
const documentId = generateId();
|
|
60
|
+
const document = await server.addDocument(createDocumentModelWithId(documentId));
|
|
61
|
+
expect(document).toBeDefined();
|
|
62
|
+
expect(document.header.id).toBe(documentId);
|
|
63
|
+
// New behavior: should have CREATE_DOCUMENT and UPGRADE_DOCUMENT operations
|
|
64
|
+
const operations = [
|
|
65
|
+
...document.operations.global,
|
|
66
|
+
...document.operations.local,
|
|
67
|
+
];
|
|
68
|
+
expect(operations.length).toBe(2);
|
|
69
|
+
// Check CREATE_DOCUMENT operation
|
|
70
|
+
const createOp = operations[0];
|
|
71
|
+
expect(createOp).toBeDefined();
|
|
72
|
+
expect(createOp.action.type).toBe("CREATE_DOCUMENT");
|
|
73
|
+
expect(createOp.action.input).toMatchObject({
|
|
74
|
+
model: documentModelDocumentModelModule.documentModel.global.id,
|
|
75
|
+
version: "0.0.0",
|
|
76
|
+
documentId,
|
|
77
|
+
});
|
|
78
|
+
expect(createOp.action.input.signing).toBeUndefined();
|
|
79
|
+
// Check UPGRADE_DOCUMENT operation
|
|
80
|
+
const upgradeOp = operations[1];
|
|
81
|
+
expect(upgradeOp).toBeDefined();
|
|
82
|
+
expect(upgradeOp.action.type).toBe("UPGRADE_DOCUMENT");
|
|
83
|
+
expect(upgradeOp.action.input).toMatchObject({
|
|
84
|
+
model: documentModelDocumentModelModule.documentModel.global.id,
|
|
85
|
+
fromVersion: "0.0.0",
|
|
86
|
+
toVersion: "0.1.0", // hardcoded for now
|
|
87
|
+
documentId,
|
|
88
|
+
});
|
|
89
|
+
expect(upgradeOp.action.input.initialState).toBeDefined();
|
|
90
|
+
});
|
|
91
|
+
it("creates document with custom initial state in UPGRADE_DOCUMENT", async () => {
|
|
92
|
+
const server = new ReactorBuilder(documentModels)
|
|
93
|
+
.withCache(cache)
|
|
94
|
+
.withStorage(storage)
|
|
95
|
+
.withOptions({
|
|
96
|
+
featureFlags: {
|
|
97
|
+
enableDualActionCreate: true,
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
.build();
|
|
101
|
+
await server.initialize();
|
|
102
|
+
const documentId = generateId();
|
|
103
|
+
const customState = {
|
|
104
|
+
...documentModelDocumentModelModule.utils.createState(),
|
|
105
|
+
global: {
|
|
106
|
+
...documentModelDocumentModelModule.utils.createState().global,
|
|
107
|
+
name: "Custom Document Name",
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
const document = await server.addDocument({
|
|
111
|
+
...createDocumentModelWithId(documentId),
|
|
112
|
+
state: customState,
|
|
113
|
+
});
|
|
114
|
+
expect(document).toBeDefined();
|
|
115
|
+
expect(document.state.global.name).toBe("Custom Document Name");
|
|
116
|
+
// Check UPGRADE_DOCUMENT contains the custom state
|
|
117
|
+
const operations = [
|
|
118
|
+
...document.operations.global,
|
|
119
|
+
...document.operations.local,
|
|
120
|
+
];
|
|
121
|
+
const upgradeOp = operations[1];
|
|
122
|
+
expect(upgradeOp.action.type).toBe("UPGRADE_DOCUMENT");
|
|
123
|
+
const initialState = upgradeOp.action.input.initialState;
|
|
124
|
+
expect(initialState).toBeDefined();
|
|
125
|
+
expect(initialState.global.name).toBe("Custom Document Name");
|
|
126
|
+
});
|
|
127
|
+
it("should have hashes on CREATE and UPGRADE operations", async () => {
|
|
128
|
+
const storage = new MemoryStorage();
|
|
129
|
+
const server = new ReactorBuilder(baseDocumentModels)
|
|
130
|
+
.withStorage(storage)
|
|
131
|
+
.withOptions({ featureFlags: { enableDualActionCreate: true } })
|
|
132
|
+
.build();
|
|
133
|
+
await server.initialize();
|
|
134
|
+
const docId = generateId();
|
|
135
|
+
const doc = {
|
|
136
|
+
...documentModelCreateDocument(),
|
|
137
|
+
header: createPresignedHeader(docId, documentModelDocumentModelModule.documentModel.global.id),
|
|
138
|
+
};
|
|
139
|
+
const created = await server.addDocument(doc);
|
|
140
|
+
expect(created.operations.global.length).toBe(2);
|
|
141
|
+
expect(created.operations.global[0].action.type).toBe("CREATE_DOCUMENT");
|
|
142
|
+
expect(created.operations.global[0].hash).toBeDefined();
|
|
143
|
+
expect(created.operations.global[0].hash.length).toBeGreaterThan(0);
|
|
144
|
+
expect(created.operations.global[1].action.type).toBe("UPGRADE_DOCUMENT");
|
|
145
|
+
expect(created.operations.global[1].hash).toBeDefined();
|
|
146
|
+
expect(created.operations.global[1].hash.length).toBeGreaterThan(0);
|
|
147
|
+
});
|
|
148
|
+
it("operations are persisted in storage", async () => {
|
|
149
|
+
const server = new ReactorBuilder(documentModels)
|
|
150
|
+
.withCache(cache)
|
|
151
|
+
.withStorage(storage)
|
|
152
|
+
.withOptions({
|
|
153
|
+
featureFlags: {
|
|
154
|
+
enableDualActionCreate: true,
|
|
155
|
+
},
|
|
156
|
+
})
|
|
157
|
+
.build();
|
|
158
|
+
await server.initialize();
|
|
159
|
+
const documentId = generateId();
|
|
160
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
161
|
+
// Verify operations were stored by retrieving the document
|
|
162
|
+
const retrieved = await server.getDocument(documentId);
|
|
163
|
+
const storedOperations = [
|
|
164
|
+
...retrieved.operations.global,
|
|
165
|
+
...retrieved.operations.local,
|
|
166
|
+
];
|
|
167
|
+
expect(storedOperations.length).toBe(2);
|
|
168
|
+
// Verify operations are in correct order
|
|
169
|
+
expect(storedOperations[0].action.type).toBe("CREATE_DOCUMENT");
|
|
170
|
+
expect(storedOperations[1].action.type).toBe("UPGRADE_DOCUMENT");
|
|
171
|
+
});
|
|
172
|
+
it("document can be retrieved and has correct operations", async () => {
|
|
173
|
+
const server = new ReactorBuilder(documentModels)
|
|
174
|
+
.withCache(cache)
|
|
175
|
+
.withStorage(storage)
|
|
176
|
+
.withOptions({
|
|
177
|
+
featureFlags: {
|
|
178
|
+
enableDualActionCreate: true,
|
|
179
|
+
},
|
|
180
|
+
})
|
|
181
|
+
.build();
|
|
182
|
+
await server.initialize();
|
|
183
|
+
const documentId = generateId();
|
|
184
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
185
|
+
// Retrieve the document
|
|
186
|
+
const retrieved = await server.getDocument(documentId);
|
|
187
|
+
expect(retrieved).toBeDefined();
|
|
188
|
+
expect(retrieved.header.id).toBe(documentId);
|
|
189
|
+
const operations = [
|
|
190
|
+
...retrieved.operations.global,
|
|
191
|
+
...retrieved.operations.local,
|
|
192
|
+
];
|
|
193
|
+
expect(operations.length).toBe(2);
|
|
194
|
+
expect(operations[0].action.type).toBe("CREATE_DOCUMENT");
|
|
195
|
+
expect(operations[1].action.type).toBe("UPGRADE_DOCUMENT");
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=dual-action-create.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dual-action-create.test.js","sourceRoot":"","sources":["../../test/dual-action-create.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dual-action-migration.test.d.ts","sourceRoot":"","sources":["../../test/dual-action-migration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { DocumentAlreadyExistsError, InMemoryCache, MemoryStorage, ReactorBuilder, baseDocumentModels, driveCreateDocument, } from "document-drive";
|
|
2
|
+
import { documentModelCreateDocument, documentModelDocumentModelModule, } from "document-model";
|
|
3
|
+
import { createPresignedHeader, generateId } from "document-model/core";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
const documentModels = baseDocumentModels;
|
|
6
|
+
describe("Dual Action Migration Tests", () => {
|
|
7
|
+
let storage;
|
|
8
|
+
let cache;
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
vi.setSystemTime(new Date("2024-01-01"));
|
|
11
|
+
storage = new MemoryStorage();
|
|
12
|
+
cache = new InMemoryCache();
|
|
13
|
+
});
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
vi.useRealTimers();
|
|
16
|
+
});
|
|
17
|
+
function createDocumentModelWithId(id) {
|
|
18
|
+
return {
|
|
19
|
+
...documentModelCreateDocument(),
|
|
20
|
+
header: createPresignedHeader(id, documentModelDocumentModelModule.documentModel.global.id),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
describe("CRITICAL: Cross-reactor document migration", () => {
|
|
24
|
+
it("should retrieve legacy document (no operations) in dual-action reactor without adding operations", async () => {
|
|
25
|
+
// Create server with flag OFF
|
|
26
|
+
const legacyServer = new ReactorBuilder(documentModels)
|
|
27
|
+
.withCache(cache)
|
|
28
|
+
.withStorage(storage)
|
|
29
|
+
.withOptions({
|
|
30
|
+
featureFlags: {
|
|
31
|
+
enableDualActionCreate: false,
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
.build();
|
|
35
|
+
await legacyServer.initialize();
|
|
36
|
+
const documentId = generateId();
|
|
37
|
+
const created = await legacyServer.addDocument(createDocumentModelWithId(documentId));
|
|
38
|
+
// Verify no operations on legacy document
|
|
39
|
+
expect(created.operations.global.length).toBe(0);
|
|
40
|
+
expect(created.operations.local.length).toBe(0);
|
|
41
|
+
// Create new server with flag ON, sharing same storage
|
|
42
|
+
const dualActionServer = new ReactorBuilder(documentModels)
|
|
43
|
+
.withCache(new InMemoryCache()) // New cache
|
|
44
|
+
.withStorage(storage) // SAME storage
|
|
45
|
+
.withOptions({
|
|
46
|
+
featureFlags: {
|
|
47
|
+
enableDualActionCreate: true,
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
.build();
|
|
51
|
+
await dualActionServer.initialize();
|
|
52
|
+
// Retrieve existing document with new server
|
|
53
|
+
const retrieved = await dualActionServer.getDocument(documentId);
|
|
54
|
+
// CRITICAL: Should NOT add CREATE/UPGRADE operations retroactively
|
|
55
|
+
expect(retrieved.operations.global.length).toBe(0);
|
|
56
|
+
expect(retrieved.operations.local.length).toBe(0);
|
|
57
|
+
expect(retrieved.state).toEqual(created.state);
|
|
58
|
+
});
|
|
59
|
+
it("should prevent duplicate creation when document already exists in storage", async () => {
|
|
60
|
+
// Create document with flag OFF
|
|
61
|
+
const legacyServer = new ReactorBuilder(documentModels)
|
|
62
|
+
.withCache(cache)
|
|
63
|
+
.withStorage(storage)
|
|
64
|
+
.withOptions({
|
|
65
|
+
featureFlags: {
|
|
66
|
+
enableDualActionCreate: false,
|
|
67
|
+
},
|
|
68
|
+
})
|
|
69
|
+
.build();
|
|
70
|
+
await legacyServer.initialize();
|
|
71
|
+
const documentId = generateId();
|
|
72
|
+
await legacyServer.addDocument(createDocumentModelWithId(documentId));
|
|
73
|
+
// Try to create same document with flag ON
|
|
74
|
+
const dualActionServer = new ReactorBuilder(documentModels)
|
|
75
|
+
.withCache(new InMemoryCache())
|
|
76
|
+
.withStorage(storage)
|
|
77
|
+
.withOptions({
|
|
78
|
+
featureFlags: {
|
|
79
|
+
enableDualActionCreate: true,
|
|
80
|
+
},
|
|
81
|
+
})
|
|
82
|
+
.build();
|
|
83
|
+
await dualActionServer.initialize();
|
|
84
|
+
// Should throw error BEFORE creating operations
|
|
85
|
+
await expect(dualActionServer.addDocument(createDocumentModelWithId(documentId))).rejects.toThrow(DocumentAlreadyExistsError);
|
|
86
|
+
// Verify no operations were added
|
|
87
|
+
const retrieved = await storage.get(documentId);
|
|
88
|
+
expect(retrieved.operations.global.length).toBe(0);
|
|
89
|
+
});
|
|
90
|
+
it("should handle dual-action document in legacy reactor", async () => {
|
|
91
|
+
// Create document with flag ON
|
|
92
|
+
const dualActionServer = new ReactorBuilder(documentModels)
|
|
93
|
+
.withCache(cache)
|
|
94
|
+
.withStorage(storage)
|
|
95
|
+
.withOptions({
|
|
96
|
+
featureFlags: {
|
|
97
|
+
enableDualActionCreate: true,
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
.build();
|
|
101
|
+
await dualActionServer.initialize();
|
|
102
|
+
const documentId = generateId();
|
|
103
|
+
const created = await dualActionServer.addDocument(createDocumentModelWithId(documentId));
|
|
104
|
+
// Verify operations exist
|
|
105
|
+
expect(created.operations.global.length).toBe(2);
|
|
106
|
+
expect(created.operations.global[0].action.type).toBe("CREATE_DOCUMENT");
|
|
107
|
+
expect(created.operations.global[1].action.type).toBe("UPGRADE_DOCUMENT");
|
|
108
|
+
// Retrieve with legacy server
|
|
109
|
+
const legacyServer = new ReactorBuilder(documentModels)
|
|
110
|
+
.withCache(new InMemoryCache())
|
|
111
|
+
.withStorage(storage)
|
|
112
|
+
.withOptions({
|
|
113
|
+
featureFlags: {
|
|
114
|
+
enableDualActionCreate: false,
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
.build();
|
|
118
|
+
await legacyServer.initialize();
|
|
119
|
+
// Should retrieve successfully
|
|
120
|
+
const retrieved = await legacyServer.getDocument(documentId);
|
|
121
|
+
expect(retrieved).toBeDefined();
|
|
122
|
+
// Operations should be preserved in storage
|
|
123
|
+
expect(retrieved.operations.global.length).toBe(2);
|
|
124
|
+
// State should match
|
|
125
|
+
expect(retrieved.state).toEqual(created.state);
|
|
126
|
+
});
|
|
127
|
+
it("should not add operations when passing document object with existing operations", async () => {
|
|
128
|
+
// Create a document object that already has operations (e.g., from another source)
|
|
129
|
+
const documentId = generateId();
|
|
130
|
+
const document = createDocumentModelWithId(documentId);
|
|
131
|
+
// Manually add an operation to simulate a document from external source
|
|
132
|
+
document.operations.global.push({
|
|
133
|
+
index: 0,
|
|
134
|
+
skip: 0,
|
|
135
|
+
hash: "existing-hash",
|
|
136
|
+
timestampUtcMs: new Date().toISOString(),
|
|
137
|
+
action: {
|
|
138
|
+
id: "action-1",
|
|
139
|
+
type: "SOME_OPERATION",
|
|
140
|
+
timestampUtcMs: new Date().toISOString(),
|
|
141
|
+
input: {},
|
|
142
|
+
scope: "global",
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const server = new ReactorBuilder(documentModels)
|
|
146
|
+
.withCache(cache)
|
|
147
|
+
.withStorage(storage)
|
|
148
|
+
.withOptions({
|
|
149
|
+
featureFlags: {
|
|
150
|
+
enableDualActionCreate: true,
|
|
151
|
+
},
|
|
152
|
+
})
|
|
153
|
+
.build();
|
|
154
|
+
await server.initialize();
|
|
155
|
+
// Pass document with existing operations
|
|
156
|
+
const created = await server.addDocument(document);
|
|
157
|
+
// Should NOT add CREATE/UPGRADE operations since existingOperations.length > 0
|
|
158
|
+
expect(created.operations.global.length).toBe(1);
|
|
159
|
+
expect(created.operations.global[0].action.type).toBe("SOME_OPERATION");
|
|
160
|
+
});
|
|
161
|
+
it("should handle document migration across multiple reactor restarts", async () => {
|
|
162
|
+
const documentId = generateId();
|
|
163
|
+
// Step 1: Create with legacy reactor
|
|
164
|
+
const server1 = new ReactorBuilder(documentModels)
|
|
165
|
+
.withCache(new InMemoryCache())
|
|
166
|
+
.withStorage(storage)
|
|
167
|
+
.withOptions({
|
|
168
|
+
featureFlags: {
|
|
169
|
+
enableDualActionCreate: false,
|
|
170
|
+
},
|
|
171
|
+
})
|
|
172
|
+
.build();
|
|
173
|
+
await server1.initialize();
|
|
174
|
+
await server1.addDocument(createDocumentModelWithId(documentId));
|
|
175
|
+
// Step 2: Retrieve with dual-action reactor
|
|
176
|
+
const server2 = new ReactorBuilder(documentModels)
|
|
177
|
+
.withCache(new InMemoryCache())
|
|
178
|
+
.withStorage(storage)
|
|
179
|
+
.withOptions({
|
|
180
|
+
featureFlags: {
|
|
181
|
+
enableDualActionCreate: true,
|
|
182
|
+
},
|
|
183
|
+
})
|
|
184
|
+
.build();
|
|
185
|
+
await server2.initialize();
|
|
186
|
+
const retrieved1 = await server2.getDocument(documentId);
|
|
187
|
+
expect(retrieved1.operations.global.length).toBe(0);
|
|
188
|
+
// Step 3: Retrieve again with legacy reactor
|
|
189
|
+
const server3 = new ReactorBuilder(documentModels)
|
|
190
|
+
.withCache(new InMemoryCache())
|
|
191
|
+
.withStorage(storage)
|
|
192
|
+
.withOptions({
|
|
193
|
+
featureFlags: {
|
|
194
|
+
enableDualActionCreate: false,
|
|
195
|
+
},
|
|
196
|
+
})
|
|
197
|
+
.build();
|
|
198
|
+
await server3.initialize();
|
|
199
|
+
const retrieved2 = await server3.getDocument(documentId);
|
|
200
|
+
expect(retrieved2.operations.global.length).toBe(0);
|
|
201
|
+
// All states should be identical
|
|
202
|
+
expect(retrieved1.state).toEqual(retrieved2.state);
|
|
203
|
+
});
|
|
204
|
+
it("should handle drive with mix of legacy and dual-action documents", async () => {
|
|
205
|
+
const driveId = generateId();
|
|
206
|
+
// Create drive with legacy server
|
|
207
|
+
const legacyServer = new ReactorBuilder(documentModels)
|
|
208
|
+
.withCache(new InMemoryCache())
|
|
209
|
+
.withStorage(storage)
|
|
210
|
+
.withOptions({
|
|
211
|
+
featureFlags: {
|
|
212
|
+
enableDualActionCreate: false,
|
|
213
|
+
},
|
|
214
|
+
})
|
|
215
|
+
.build();
|
|
216
|
+
await legacyServer.initialize();
|
|
217
|
+
const drive = driveCreateDocument();
|
|
218
|
+
drive.header.id = driveId;
|
|
219
|
+
await legacyServer.addDocument(drive);
|
|
220
|
+
const doc1Id = generateId();
|
|
221
|
+
await legacyServer.addDocument(createDocumentModelWithId(doc1Id));
|
|
222
|
+
// Switch to dual-action server
|
|
223
|
+
const dualActionServer = new ReactorBuilder(documentModels)
|
|
224
|
+
.withCache(new InMemoryCache())
|
|
225
|
+
.withStorage(storage)
|
|
226
|
+
.withOptions({
|
|
227
|
+
featureFlags: {
|
|
228
|
+
enableDualActionCreate: true,
|
|
229
|
+
},
|
|
230
|
+
})
|
|
231
|
+
.build();
|
|
232
|
+
await dualActionServer.initialize();
|
|
233
|
+
const doc2Id = generateId();
|
|
234
|
+
await dualActionServer.addDocument(createDocumentModelWithId(doc2Id));
|
|
235
|
+
// Retrieve both documents
|
|
236
|
+
const doc1 = await dualActionServer.getDocument(doc1Id);
|
|
237
|
+
const doc2 = await dualActionServer.getDocument(doc2Id);
|
|
238
|
+
// doc1 should have no operations (legacy)
|
|
239
|
+
expect(doc1.operations.global.length).toBe(0);
|
|
240
|
+
// doc2 should have CREATE + UPGRADE (dual-action)
|
|
241
|
+
expect(doc2.operations.global.length).toBe(2);
|
|
242
|
+
expect(doc2.operations.global[0].action.type).toBe("CREATE_DOCUMENT");
|
|
243
|
+
expect(doc2.operations.global[1].action.type).toBe("UPGRADE_DOCUMENT");
|
|
244
|
+
});
|
|
245
|
+
it("should handle document with only partial dual-action operations", async () => {
|
|
246
|
+
// Simulate a corrupted/partial document with only CREATE_DOCUMENT
|
|
247
|
+
const documentId = generateId();
|
|
248
|
+
const document = createDocumentModelWithId(documentId);
|
|
249
|
+
// Add only CREATE_DOCUMENT operation (missing UPGRADE_DOCUMENT)
|
|
250
|
+
document.operations.global.push({
|
|
251
|
+
index: 0,
|
|
252
|
+
skip: 0,
|
|
253
|
+
hash: "create-hash",
|
|
254
|
+
timestampUtcMs: new Date().toISOString(),
|
|
255
|
+
action: {
|
|
256
|
+
id: `${documentId}-create`,
|
|
257
|
+
type: "CREATE_DOCUMENT",
|
|
258
|
+
timestampUtcMs: new Date().toISOString(),
|
|
259
|
+
input: {
|
|
260
|
+
model: documentModelDocumentModelModule.documentModel.global.id,
|
|
261
|
+
version: "0.0.0",
|
|
262
|
+
documentId,
|
|
263
|
+
},
|
|
264
|
+
scope: "global",
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
const server = new ReactorBuilder(documentModels)
|
|
268
|
+
.withCache(cache)
|
|
269
|
+
.withStorage(storage)
|
|
270
|
+
.withOptions({
|
|
271
|
+
featureFlags: {
|
|
272
|
+
enableDualActionCreate: true,
|
|
273
|
+
},
|
|
274
|
+
})
|
|
275
|
+
.build();
|
|
276
|
+
await server.initialize();
|
|
277
|
+
// This tests edge case: document with partial operations
|
|
278
|
+
const created = await server.addDocument(document);
|
|
279
|
+
// Should not add additional operations since existingOperations.length > 0
|
|
280
|
+
expect(created.operations.global.length).toBe(1);
|
|
281
|
+
expect(created.operations.global[0].action.type).toBe("CREATE_DOCUMENT");
|
|
282
|
+
// Should be retrievable (even if only partial)
|
|
283
|
+
const retrieved = await server.getDocument(documentId);
|
|
284
|
+
expect(retrieved).toBeDefined();
|
|
285
|
+
});
|
|
286
|
+
it("should not create duplicate operations on document re-import", async () => {
|
|
287
|
+
const server = new ReactorBuilder(documentModels)
|
|
288
|
+
.withCache(cache)
|
|
289
|
+
.withStorage(storage)
|
|
290
|
+
.withOptions({
|
|
291
|
+
featureFlags: {
|
|
292
|
+
enableDualActionCreate: true,
|
|
293
|
+
},
|
|
294
|
+
})
|
|
295
|
+
.build();
|
|
296
|
+
await server.initialize();
|
|
297
|
+
const documentId = generateId();
|
|
298
|
+
const doc1 = await server.addDocument(createDocumentModelWithId(documentId));
|
|
299
|
+
// Export document
|
|
300
|
+
const exported = { ...doc1 };
|
|
301
|
+
// Try to re-import (should fail with DocumentAlreadyExistsError)
|
|
302
|
+
await expect(server.addDocument(exported)).rejects.toThrow(DocumentAlreadyExistsError);
|
|
303
|
+
// Verify no duplicate operations
|
|
304
|
+
const final = await server.getDocument(documentId);
|
|
305
|
+
expect(final.operations.global.length).toBe(2); // Still just CREATE + UPGRADE
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
describe("Document type consistency across reactors", () => {
|
|
309
|
+
it("should handle DocumentDrive migration from legacy to dual-action", async () => {
|
|
310
|
+
const driveId = generateId();
|
|
311
|
+
// Create drive with legacy server
|
|
312
|
+
const legacyServer = new ReactorBuilder(documentModels)
|
|
313
|
+
.withCache(new InMemoryCache())
|
|
314
|
+
.withStorage(storage)
|
|
315
|
+
.withOptions({
|
|
316
|
+
featureFlags: {
|
|
317
|
+
enableDualActionCreate: false,
|
|
318
|
+
},
|
|
319
|
+
})
|
|
320
|
+
.build();
|
|
321
|
+
await legacyServer.initialize();
|
|
322
|
+
const drive = driveCreateDocument();
|
|
323
|
+
drive.header.id = driveId;
|
|
324
|
+
const created = await legacyServer.addDocument(drive);
|
|
325
|
+
expect(created.operations.global.length).toBe(0);
|
|
326
|
+
// Retrieve with dual-action server
|
|
327
|
+
const dualActionServer = new ReactorBuilder(documentModels)
|
|
328
|
+
.withCache(new InMemoryCache())
|
|
329
|
+
.withStorage(storage)
|
|
330
|
+
.withOptions({
|
|
331
|
+
featureFlags: {
|
|
332
|
+
enableDualActionCreate: true,
|
|
333
|
+
},
|
|
334
|
+
})
|
|
335
|
+
.build();
|
|
336
|
+
await dualActionServer.initialize();
|
|
337
|
+
const retrieved = await dualActionServer.getDrive(driveId);
|
|
338
|
+
// Should not add operations retroactively
|
|
339
|
+
expect(retrieved.operations.global.length).toBe(0);
|
|
340
|
+
expect(retrieved.state.global.name).toBe(created.state.global.name);
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
//# sourceMappingURL=dual-action-migration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dual-action-migration.test.js","sourceRoot":"","sources":["../../test/dual-action-migration.test.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,OAAkD,CAAC;IACvD,IAAI,KAAoB,CAAC;IAEzB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,yBAAyB,CAAC,EAAU;QAC3C,OAAO;YACL,GAAG,2BAA2B,EAAE;YAChC,MAAM,EAAE,qBAAqB,CAC3B,EAAE,EACF,gCAAgC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CACzD;SACF,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAC1D,EAAE,CAAC,kGAAkG,EAAE,KAAK,IAAI,EAAE;YAChH,8BAA8B;YAC9B,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACpD,SAAS,CAAC,KAAK,CAAC;iBAChB,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAC5C,yBAAyB,CAAC,UAAU,CAAC,CACtC,CAAC;YAEF,0CAA0C;YAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEhD,uDAAuD;YACvD,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACxD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,YAAY;iBAC3C,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe;iBACpC,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEpC,6CAA6C;YAC7C,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEjE,mEAAmE;YACnE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,gCAAgC;YAChC,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACpD,SAAS,CAAC,KAAK,CAAC;iBAChB,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,YAAY,CAAC,WAAW,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtE,2CAA2C;YAC3C,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACxD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEpC,gDAAgD;YAChD,MAAM,MAAM,CACV,gBAAgB,CAAC,WAAW,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CACpE,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAE9C,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,+BAA+B;YAC/B,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACxD,SAAS,CAAC,KAAK,CAAC;iBAChB,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEpC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAChD,yBAAyB,CAAC,UAAU,CAAC,CACtC,CAAC;YAEF,0BAA0B;YAC1B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACzE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE1E,8BAA8B;YAC9B,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACpD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,+BAA+B;YAC/B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE7D,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,4CAA4C;YAC5C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,qBAAqB;YACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YAC/F,mFAAmF;YACnF,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAEvD,wEAAwE;YACxE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,eAAe;gBACrB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,gBAAgB;oBACtB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACxC,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBAC9C,SAAS,CAAC,KAAK,CAAC;iBAChB,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAE1B,yCAAyC;YACzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEnD,+EAA+E;YAC/E,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAEhC,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBAC/C,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,WAAW,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;YAEjE,4CAA4C;YAC5C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBAC/C,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpD,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBAC/C,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpD,iCAAiC;YACjC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAE7B,kCAAkC;YAClC,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACpD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC;YAC1B,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,YAAY,CAAC,WAAW,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;YAElE,+BAA+B;YAC/B,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACxD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,gBAAgB,CAAC,WAAW,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;YAEtE,0BAA0B;YAC1B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAExD,0CAA0C;YAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE9C,kDAAkD;YAClD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,kEAAkE;YAClE,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAEvD,gEAAgE;YAChE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,aAAa;gBACnB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE;oBACN,EAAE,EAAE,GAAG,UAAU,SAAS;oBAC1B,IAAI,EAAE,iBAAiB;oBACvB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACxC,KAAK,EAAE;wBACL,KAAK,EAAE,gCAAgC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;wBAC/D,OAAO,EAAE,OAAgB;wBACzB,UAAU;qBACX;oBACD,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBAC9C,SAAS,CAAC,KAAK,CAAC;iBAChB,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAE1B,yDAAyD;YACzD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEnD,2EAA2E;YAC3E,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEzE,+CAA+C;YAC/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBAC9C,SAAS,CAAC,KAAK,CAAC;iBAChB,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAE1B,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CACnC,yBAAyB,CAAC,UAAU,CAAC,CACtC,CAAC;YAEF,kBAAkB;YAClB,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAE7B,iEAAiE;YACjE,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACxD,0BAA0B,CAC3B,CAAC;YAEF,iCAAiC;YACjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;QAChF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAE7B,kCAAkC;YAClC,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACpD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,KAAK;iBAC9B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEtD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEjD,mCAAmC;YACnC,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;iBACxD,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;iBAC9B,WAAW,CAAC,OAAO,CAAC;iBACpB,WAAW,CAAC;gBACX,YAAY,EAAE;oBACZ,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;iBACD,KAAK,EAAE,CAAC;YAEX,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEpC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE3D,0CAA0C;YAC1C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { addFile, driveDocumentModelModule, expectUTCTimestamp, expectUUID, InternalTransmitter, ReactorBuilder, } from "document-drive";
|
|
2
|
-
import {
|
|
2
|
+
import { documentModelCreateDocument, documentModelDocumentModelModule, setModelName, } from "document-model";
|
|
3
|
+
import { createPresignedHeader, generateId } from "document-model/core";
|
|
3
4
|
import { beforeEach, describe, expect, test, vi, vitest } from "vitest";
|
|
4
5
|
describe("Internal Listener", () => {
|
|
5
6
|
const documentModels = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-listener.test.js","sourceRoot":"","sources":["../../test/internal-listener.test.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"internal-listener.test.js","sourceRoot":"","sources":["../../test/internal-listener.test.ts"],"names":[],"mappings":"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"}
|
package/dist/test/queue.test.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventQueueManager, InMemoryCache, MemoryStorage, ReactorBuilder, addFile, addFolder, addListener, buildOperation, buildOperations, deleteNode, driveDocumentModelModule, driveDocumentReducer, } from "document-drive";
|
|
2
|
-
import {
|
|
2
|
+
import { documentModelCreateDocument, documentModelDocumentModelModule, setModelName, } from "document-model";
|
|
3
|
+
import { createPresignedHeader, generateId } from "document-model/core";
|
|
3
4
|
import { setTimeout } from "node:timers/promises";
|
|
4
5
|
import { describe, it } from "vitest";
|
|
5
6
|
const REDIS_TLS_URL = process.env.REDIS_TLS_URL || "redis://localhost:6379";
|