@powerhousedao/reactor-api 6.0.0-dev.67 → 6.0.0-dev.68

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.
Files changed (90) hide show
  1. package/dist/index.d.ts +0 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +0 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/graphql/base-subgraph.d.ts +1 -2
  6. package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
  7. package/dist/src/graphql/base-subgraph.js +0 -2
  8. package/dist/src/graphql/base-subgraph.js.map +1 -1
  9. package/dist/src/graphql/document-model-subgraph.d.ts +0 -13
  10. package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
  11. package/dist/src/graphql/document-model-subgraph.js +6 -150
  12. package/dist/src/graphql/document-model-subgraph.js.map +1 -1
  13. package/dist/src/graphql/graphql-manager.d.ts +9 -4
  14. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  15. package/dist/src/graphql/graphql-manager.js +45 -27
  16. package/dist/src/graphql/graphql-manager.js.map +1 -1
  17. package/dist/src/graphql/index.d.ts +0 -1
  18. package/dist/src/graphql/index.d.ts.map +1 -1
  19. package/dist/src/graphql/index.js +0 -1
  20. package/dist/src/graphql/index.js.map +1 -1
  21. package/dist/src/graphql/reactor/resolvers.d.ts +1 -0
  22. package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
  23. package/dist/src/graphql/reactor/resolvers.js +33 -4
  24. package/dist/src/graphql/reactor/resolvers.js.map +1 -1
  25. package/dist/src/graphql/types.d.ts +1 -4
  26. package/dist/src/graphql/types.d.ts.map +1 -1
  27. package/dist/src/graphql/utils.d.ts +1 -18
  28. package/dist/src/graphql/utils.d.ts.map +1 -1
  29. package/dist/src/graphql/utils.js +0 -32
  30. package/dist/src/graphql/utils.js.map +1 -1
  31. package/dist/src/server.d.ts +0 -5
  32. package/dist/src/server.d.ts.map +1 -1
  33. package/dist/src/server.js +5 -6
  34. package/dist/src/server.js.map +1 -1
  35. package/dist/src/utils/create-schema.d.ts +4 -5
  36. package/dist/src/utils/create-schema.d.ts.map +1 -1
  37. package/dist/src/utils/create-schema.js +5 -6
  38. package/dist/src/utils/create-schema.js.map +1 -1
  39. package/dist/test/document-model-subgraph-permissions.test.js +2 -12
  40. package/dist/test/document-model-subgraph-permissions.test.js.map +1 -1
  41. package/dist/test/index.d.ts +0 -1
  42. package/dist/test/index.d.ts.map +1 -1
  43. package/dist/test/index.js +0 -1
  44. package/dist/test/index.js.map +1 -1
  45. package/dist/test/permissions-integration.test.js +1 -1
  46. package/dist/test/permissions-integration.test.js.map +1 -1
  47. package/dist/test/reactor-subgraph-permissions.test.js +1 -1
  48. package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +11 -11
  51. package/dist/src/graphql/drive-subgraph.d.ts +0 -25
  52. package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
  53. package/dist/src/graphql/drive-subgraph.js +0 -499
  54. package/dist/src/graphql/drive-subgraph.js.map +0 -1
  55. package/dist/src/sync/types.d.ts +0 -10
  56. package/dist/src/sync/types.d.ts.map +0 -1
  57. package/dist/src/sync/types.js +0 -2
  58. package/dist/src/sync/types.js.map +0 -1
  59. package/dist/src/sync/utils.d.ts +0 -7
  60. package/dist/src/sync/utils.d.ts.map +0 -1
  61. package/dist/src/sync/utils.js +0 -78
  62. package/dist/src/sync/utils.js.map +0 -1
  63. package/dist/test/document-model-subgraph-legacy-permissions.test.d.ts +0 -2
  64. package/dist/test/document-model-subgraph-legacy-permissions.test.d.ts.map +0 -1
  65. package/dist/test/document-model-subgraph-legacy-permissions.test.js +0 -460
  66. package/dist/test/document-model-subgraph-legacy-permissions.test.js.map +0 -1
  67. package/dist/test/document-model-subgraph.test.d.ts +0 -2
  68. package/dist/test/document-model-subgraph.test.d.ts.map +0 -1
  69. package/dist/test/document-model-subgraph.test.js +0 -439
  70. package/dist/test/document-model-subgraph.test.js.map +0 -1
  71. package/dist/test/drive-handlers.d.ts +0 -4
  72. package/dist/test/drive-handlers.d.ts.map +0 -1
  73. package/dist/test/drive-handlers.js +0 -39
  74. package/dist/test/drive-handlers.js.map +0 -1
  75. package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
  76. package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
  77. package/dist/test/drive-subgraph-permissions.test.js +0 -166
  78. package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
  79. package/dist/test/drive.test.d.ts +0 -2
  80. package/dist/test/drive.test.d.ts.map +0 -1
  81. package/dist/test/drive.test.js +0 -142
  82. package/dist/test/drive.test.js.map +0 -1
  83. package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
  84. package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
  85. package/dist/test/pull-responder-transmitter.test.js +0 -220
  86. package/dist/test/pull-responder-transmitter.test.js.map +0 -1
  87. package/dist/test/push-transmitter.test.d.ts +0 -2
  88. package/dist/test/push-transmitter.test.d.ts.map +0 -1
  89. package/dist/test/push-transmitter.test.js +0 -179
  90. package/dist/test/push-transmitter.test.js.map +0 -1
@@ -1,166 +0,0 @@
1
- import { DriveSubgraph } from "@powerhousedao/reactor-api";
2
- import { testSetupReactor } from "@powerhousedao/reactor-api/test";
3
- import { generateId } from "document-model/core";
4
- import { beforeEach, describe, expect, it, vi } from "vitest";
5
- describe("DriveSubgraph Permission Checks", () => {
6
- let mockDocumentPermissionService;
7
- let driveSubgraph;
8
- let driveId;
9
- // Helper to create context with different permission levels
10
- const createContext = (options) => ({
11
- driveId: options.driveId ?? driveId,
12
- user: options.userAddress ? { address: options.userAddress } : undefined,
13
- isAdmin: () => options.isAdmin ?? false,
14
- });
15
- beforeEach(async () => {
16
- vi.clearAllMocks();
17
- // Create mock DocumentPermissionService
18
- mockDocumentPermissionService = {
19
- canReadDocument: vi.fn().mockResolvedValue(false),
20
- canWriteDocument: vi.fn().mockResolvedValue(false),
21
- canRead: vi.fn().mockResolvedValue(false),
22
- canWrite: vi.fn().mockResolvedValue(false),
23
- };
24
- const { reactor } = await testSetupReactor();
25
- // Create a test drive
26
- driveId = generateId();
27
- await reactor.addDrive({
28
- id: driveId,
29
- slug: "test-drive",
30
- global: {
31
- name: "Test Drive",
32
- icon: undefined,
33
- },
34
- });
35
- driveSubgraph = new DriveSubgraph({
36
- reactor,
37
- documentPermissionService: mockDocumentPermissionService,
38
- });
39
- });
40
- describe("registerPullResponderListener", () => {
41
- const callRegisterPullResponderListener = async (ctx) => {
42
- const mutation = driveSubgraph.resolvers.Mutation
43
- ?.registerPullResponderListener;
44
- return mutation(null, { filter: { branch: ["main"], documentId: [] } }, ctx);
45
- };
46
- describe("Global Role Access", () => {
47
- it("should allow access when user is global admin", async () => {
48
- const ctx = createContext({ isAdmin: true, userAddress: "0xadmin" });
49
- const result = await callRegisterPullResponderListener(ctx);
50
- expect(result).toBeDefined();
51
- expect(result.listenerId).toBeDefined();
52
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
53
- });
54
- });
55
- describe("Document Permission Access", () => {
56
- it("should allow access when user has document read permission", async () => {
57
- vi.mocked(mockDocumentPermissionService.canReadDocument).mockResolvedValue(true);
58
- const ctx = createContext({ userAddress: "0xpermitted" });
59
- const result = await callRegisterPullResponderListener(ctx);
60
- expect(result).toBeDefined();
61
- expect(result.listenerId).toBeDefined();
62
- expect(mockDocumentPermissionService.canReadDocument).toHaveBeenCalledWith(driveId, "0xpermitted");
63
- });
64
- it("should deny access when user has no permissions", async () => {
65
- vi.mocked(mockDocumentPermissionService.canReadDocument).mockResolvedValue(false);
66
- const ctx = createContext({ userAddress: "0xunpermitted" });
67
- await expect(callRegisterPullResponderListener(ctx)).rejects.toThrow("Forbidden");
68
- });
69
- it("should deny access when user is not authenticated", async () => {
70
- const ctx = createContext({});
71
- await expect(callRegisterPullResponderListener(ctx)).rejects.toThrow("Forbidden");
72
- });
73
- });
74
- });
75
- describe("pushUpdates", () => {
76
- const callPushUpdates = async (ctx) => {
77
- const mutation = driveSubgraph.resolvers.Mutation?.pushUpdates;
78
- return mutation(null, {
79
- strands: [
80
- {
81
- driveId,
82
- documentId: "doc1",
83
- documentType: "test/type",
84
- scope: "global",
85
- branch: "main",
86
- operations: [],
87
- },
88
- ],
89
- }, ctx);
90
- };
91
- describe("Global Role Access", () => {
92
- it("should allow access when user is global admin", async () => {
93
- const ctx = createContext({ isAdmin: true, userAddress: "0xadmin" });
94
- const result = await callPushUpdates(ctx);
95
- expect(result).toBeDefined();
96
- expect(mockDocumentPermissionService.canWriteDocument).not.toHaveBeenCalled();
97
- });
98
- });
99
- describe("Document Permission Access", () => {
100
- it("should allow access when user has document write permission", async () => {
101
- vi.mocked(mockDocumentPermissionService.canWriteDocument).mockResolvedValue(true);
102
- const ctx = createContext({ userAddress: "0xpermitted" });
103
- const result = await callPushUpdates(ctx);
104
- expect(result).toBeDefined();
105
- expect(mockDocumentPermissionService.canWriteDocument).toHaveBeenCalledWith(driveId, "0xpermitted");
106
- });
107
- it("should deny access when user has no write permission", async () => {
108
- vi.mocked(mockDocumentPermissionService.canWriteDocument).mockResolvedValue(false);
109
- const ctx = createContext({ userAddress: "0xunpermitted" });
110
- await expect(callPushUpdates(ctx)).rejects.toThrow("Forbidden");
111
- });
112
- });
113
- });
114
- describe("strands (Sync.strands)", () => {
115
- // Note: strands resolver requires a registered listener, which needs full infrastructure
116
- // These tests verify the resolver exists; full permission testing is done via integration tests
117
- const callStrands = async (ctx) => {
118
- const syncResolver = driveSubgraph.resolvers.Sync?.strands;
119
- if (!syncResolver) {
120
- throw new Error("Sync.strands resolver not found");
121
- }
122
- return syncResolver(null, { listenerId: "test-listener", since: undefined }, ctx);
123
- };
124
- describe("Global Role Access", () => {
125
- it("should have strands resolver defined", () => {
126
- const syncResolver = driveSubgraph.resolvers.Sync?.strands;
127
- expect(syncResolver).toBeDefined();
128
- });
129
- // Note: Full strands permission tests require actual listener infrastructure
130
- // which is better tested via integration tests. Permission checks happen
131
- // before the listener lookup, so if listener is not found, permission passed.
132
- it("should pass permission check for global admin (fails on missing listener)", async () => {
133
- const ctx = createContext({ isAdmin: true, userAddress: "0xadmin" });
134
- // Permission passes, but fails on listener lookup (not a permission error)
135
- await expect(callStrands(ctx)).rejects.toThrow("Listener not found");
136
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
137
- });
138
- });
139
- describe("Document Permission Access", () => {
140
- it("should return empty array when user has no read permission", async () => {
141
- vi.mocked(mockDocumentPermissionService.canReadDocument).mockResolvedValue(false);
142
- const ctx = createContext({ userAddress: "0xunpermitted" });
143
- const result = await callStrands(ctx);
144
- expect(result).toEqual([]);
145
- });
146
- it("should return empty array for unauthenticated user", async () => {
147
- const ctx = createContext({});
148
- const result = await callStrands(ctx);
149
- expect(result).toEqual([]);
150
- });
151
- });
152
- });
153
- describe("AUTH_ENABLED=false behavior", () => {
154
- it("should allow all access when all global roles return true", async () => {
155
- // When AUTH_ENABLED=false, isAdmin returns true
156
- const ctx = createContext({
157
- isAdmin: true,
158
- userAddress: "0xanyone",
159
- });
160
- const registerResult = await driveSubgraph.resolvers.Mutation?.registerPullResponderListener(null, { filter: { branch: ["main"], documentId: [] } }, ctx);
161
- expect(registerResult).toBeDefined();
162
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
163
- });
164
- });
165
- });
166
- //# sourceMappingURL=drive-subgraph-permissions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive-subgraph-permissions.test.js","sourceRoot":"","sources":["../../test/drive-subgraph-permissions.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=drive.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive.test.d.ts","sourceRoot":"","sources":["../../test/drive.test.ts"],"names":[],"mappings":""}
@@ -1,142 +0,0 @@
1
- import { DriveSubgraph } from "@powerhousedao/reactor-api";
2
- import { testSetupReactor } from "@powerhousedao/reactor-api/test";
3
- import { driveCreateDocument } from "document-drive";
4
- import { documentModelDocumentModelModule, } from "document-model";
5
- import { generateId } from "document-model/core";
6
- import { describe, expect, it, vi } from "vitest";
7
- describe("DriveSubgraph", () => {
8
- it("should be able to instantiate", async () => {
9
- const { reactor } = await testSetupReactor();
10
- const driveSubgraph = new DriveSubgraph({ reactor });
11
- expect(driveSubgraph).toBeInstanceOf(DriveSubgraph);
12
- });
13
- it("should return drive data", async () => {
14
- const { reactor } = await testSetupReactor();
15
- const reactorSpy = vi.spyOn(reactor, "getDrive");
16
- const driveId = generateId();
17
- const mockDriveData = {
18
- id: driveId,
19
- meta: {
20
- preferredEditor: "test-editor",
21
- },
22
- global: {
23
- name: "test-drive",
24
- icon: undefined,
25
- },
26
- };
27
- const createdDrive = await reactor.addDrive(mockDriveData);
28
- const driveSubgraph = new DriveSubgraph({ reactor });
29
- const context = {
30
- driveId,
31
- };
32
- const drive = await driveSubgraph.resolvers.Query?.drive(null, {}, context);
33
- expect(drive).toEqual({
34
- id: createdDrive.header.id,
35
- slug: createdDrive.header.slug,
36
- meta: createdDrive.header.meta,
37
- name: createdDrive.state.global.name,
38
- icon: createdDrive.state.global.icon ?? undefined,
39
- });
40
- expect(reactorSpy).toHaveBeenCalledWith(context.driveId);
41
- });
42
- it("should return drive data with slug", async () => {
43
- const { reactor } = await testSetupReactor();
44
- const getBySlugSpy = vi.spyOn(reactor, "getDriveBySlug");
45
- const getByIdSpy = vi.spyOn(reactor, "getDrive");
46
- const driveSubgraph = new DriveSubgraph({ reactor });
47
- const driveId = generateId();
48
- const createdDrive = await reactor.addDrive({
49
- id: driveId,
50
- slug: "test-drive",
51
- global: {
52
- name: "test-drive",
53
- icon: undefined,
54
- },
55
- });
56
- const context = {
57
- driveId: "test-drive",
58
- };
59
- const drive = await driveSubgraph.resolvers.Query?.drive(null, {}, context);
60
- expect(drive).toStrictEqual({
61
- id: createdDrive.header.id,
62
- slug: createdDrive.header.slug,
63
- meta: createdDrive.header.meta,
64
- name: createdDrive.state.global.name,
65
- icon: createdDrive.state.global.icon ?? undefined,
66
- });
67
- expect(getBySlugSpy).toHaveBeenCalledWith("test-drive");
68
- expect(getByIdSpy).toHaveBeenCalledWith(driveId);
69
- });
70
- it("should return documents data", async () => {
71
- const mockDocumentsData = ["doc1", "doc2"];
72
- const mockReactor = {
73
- getDrive: vi.fn(),
74
- getDocuments: vi.fn().mockResolvedValue(mockDocumentsData),
75
- getDocument: vi.fn(),
76
- getDocumentModelModules: vi.fn(),
77
- listeners: {
78
- setListener: vi.fn(),
79
- },
80
- getDriveIdBySlug: vi.fn().mockResolvedValue("test-drive-id"),
81
- };
82
- const mockSubgraphArgs = {
83
- reactor: mockReactor,
84
- };
85
- const driveSubgraph = new DriveSubgraph(mockSubgraphArgs);
86
- const context = {
87
- driveId: "test-drive-id",
88
- };
89
- const documents = await driveSubgraph.resolvers.Query?.documents(null, {}, context);
90
- expect(documents).toEqual(mockDocumentsData);
91
- expect(mockReactor.getDocuments).toHaveBeenCalledWith(context.driveId);
92
- });
93
- it("should return document data", async () => {
94
- const mockDocumentData = driveCreateDocument({});
95
- mockDocumentData.header.slug = "test-document-id";
96
- // {
97
- // id: "test-document-id",
98
- // documentType: "test-document-type",
99
- // revision: { global: 1 },
100
- // state: { global: { data: "test-data" } },
101
- // operations: { global: [] },
102
- // initialState: { state: { global: {} } },
103
- // };
104
- const mockReactor = {
105
- getDrive: vi.fn(),
106
- getDocuments: vi.fn().mockResolvedValue([mockDocumentData.header.id]),
107
- getDocument: vi.fn().mockResolvedValue(mockDocumentData),
108
- getDocumentModelModules: vi
109
- .fn()
110
- .mockReturnValue([
111
- documentModelDocumentModelModule,
112
- ]),
113
- listeners: {
114
- setListener: vi.fn(),
115
- },
116
- getDriveIdBySlug: vi.fn().mockResolvedValue(mockDocumentData.header.id),
117
- };
118
- const mockSubgraphArgs = {
119
- reactor: mockReactor,
120
- };
121
- const driveSubgraph = new DriveSubgraph(mockSubgraphArgs);
122
- const context = {
123
- driveId: mockDocumentData.header.id,
124
- };
125
- const document = await driveSubgraph.resolvers.Query?.document(null, { id: mockDocumentData.header.id }, context);
126
- console.log(document);
127
- expect(document).toMatchObject({
128
- ...mockDocumentData.header,
129
- // default
130
- state: mockDocumentData.state.global,
131
- initialState: mockDocumentData.initialState.global,
132
- stateJSON: mockDocumentData.state.global,
133
- operations: mockDocumentData.operations.global,
134
- __typename: "",
135
- // backward compatibility
136
- revision: mockDocumentData.header.revision.global || 0,
137
- id: mockDocumentData.header.id,
138
- });
139
- expect(mockReactor.getDocument).toHaveBeenCalledWith(mockDocumentData.header.id);
140
- });
141
- });
142
- //# sourceMappingURL=drive.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive.test.js","sourceRoot":"","sources":["../../test/drive.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pull-responder-transmitter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull-responder-transmitter.test.d.ts","sourceRoot":"","sources":["../../test/pull-responder-transmitter.test.ts"],"names":[],"mappings":""}
@@ -1,220 +0,0 @@
1
- import { createDriveHandlers, expectUUID, getDocumentScopeIndexes, testSetupReactor, } from "@powerhousedao/reactor-api/test";
2
- import { PullResponderTransmitter, addFile, addFolder } from "document-drive";
3
- import { documentModelCreateDocument, setAuthorName } from "document-model";
4
- import { generateId } from "document-model/core";
5
- import { setupServer } from "msw/node";
6
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
7
- const remoteUrl = "http://test.com/d/test";
8
- describe("Pull Responder Transmitter", () => {
9
- let server;
10
- let remoteReactor;
11
- const driveId = generateId();
12
- const remoteDrive = {
13
- id: driveId,
14
- global: {
15
- name: "Test Drive",
16
- },
17
- };
18
- const triggerOptions = {
19
- pullFilter: {
20
- branch: ["main"],
21
- documentId: ["*"],
22
- documentType: ["*"],
23
- scope: ["global"],
24
- },
25
- pullInterval: 50,
26
- };
27
- async function setupTrigger() {
28
- const { listenerManager } = await testSetupReactor();
29
- return PullResponderTransmitter.createPullResponderTrigger(driveId, remoteUrl, triggerOptions, listenerManager);
30
- }
31
- beforeEach(async () => {
32
- const { reactor } = await testSetupReactor();
33
- const drive = await reactor.addDrive(remoteDrive);
34
- remoteReactor = reactor;
35
- server = setupServer(...createDriveHandlers(reactor, drive.header.id));
36
- server.listen({ onUnhandledRequest: "error" });
37
- });
38
- afterEach(() => {
39
- server.resetHandlers(); // Reset any handlers overridden during a test
40
- server.close();
41
- });
42
- it("should register listener and create trigger", async () => {
43
- const trigger = await setupTrigger();
44
- expect(trigger).toStrictEqual({
45
- driveId: driveId,
46
- filter: triggerOptions.pullFilter,
47
- type: "PullResponder",
48
- id: expectUUID(expect),
49
- data: {
50
- interval: triggerOptions.pullInterval.toString(),
51
- listenerId: expectUUID(expect),
52
- url: remoteUrl,
53
- },
54
- });
55
- const remoteListener = remoteReactor.listeners.getListenerState(driveId, trigger.data.listenerId);
56
- expect(remoteListener).toMatchObject({
57
- listener: {
58
- driveId: driveId,
59
- listenerId: trigger.data.listenerId,
60
- filter: triggerOptions.pullFilter,
61
- },
62
- });
63
- });
64
- it("should pull drive operation from remote reactor", async () => {
65
- const { reactor } = await testSetupReactor();
66
- const trigger = await setupTrigger();
67
- await reactor.addDrive({
68
- id: driveId,
69
- global: remoteDrive.global,
70
- local: {
71
- availableOffline: true,
72
- triggers: [trigger],
73
- },
74
- });
75
- const result = await remoteReactor.queueAction(driveId, addFolder({ id: generateId(), name: "test" }));
76
- await vi.waitFor(async () => {
77
- const drive = await reactor.getDrive(driveId);
78
- expect(getDocumentScopeIndexes(drive)).toStrictEqual({
79
- global: 0,
80
- local: -1,
81
- });
82
- const resultDrive = result.document;
83
- expect(drive.state.global).toStrictEqual(resultDrive.state.global);
84
- }, {
85
- timeout: 1000,
86
- });
87
- await reactor.deleteDrive(driveId);
88
- });
89
- it("should push new document to remote reactor", async () => {
90
- const { reactor } = await testSetupReactor();
91
- const trigger = await setupTrigger();
92
- await reactor.addDrive({
93
- id: driveId,
94
- global: remoteDrive.global,
95
- local: {
96
- availableOffline: true,
97
- triggers: [trigger],
98
- },
99
- });
100
- const newDocument = documentModelCreateDocument();
101
- const documentId = newDocument.header.id;
102
- const document = await remoteReactor.addDocument(newDocument);
103
- const result = await remoteReactor.queueAction(driveId, addFile({
104
- id: documentId,
105
- name: "test",
106
- documentType: document.header.documentType,
107
- }));
108
- await vi.waitFor(async () => {
109
- const drive = await reactor.getDrive(driveId);
110
- expect(getDocumentScopeIndexes(drive)).toStrictEqual({
111
- global: 0,
112
- local: -1,
113
- });
114
- const resultDrive = result.document;
115
- expect(drive.state.global).toStrictEqual(resultDrive.state.global);
116
- });
117
- await vi.waitFor(async () => {
118
- const document = (await reactor.getDocument(documentId));
119
- expect(getDocumentScopeIndexes(document)).toStrictEqual({
120
- global: -1,
121
- local: -1,
122
- });
123
- const remoteDocument = (await remoteReactor.getDocument(documentId));
124
- expect(document.state.global).toStrictEqual(remoteDocument.state.global);
125
- });
126
- await reactor.deleteDrive(driveId);
127
- });
128
- it("should push new document with operations to remote reactor", async () => {
129
- const { reactor } = await testSetupReactor();
130
- const trigger = await setupTrigger();
131
- await reactor.addDrive({
132
- id: driveId,
133
- global: remoteDrive.global,
134
- local: {
135
- availableOffline: true,
136
- triggers: [trigger],
137
- },
138
- });
139
- const newDocument = documentModelCreateDocument();
140
- const documentId = newDocument.header.id;
141
- const document = await remoteReactor.addDocument(newDocument);
142
- const result = await remoteReactor.queueAction(documentId, setAuthorName({
143
- authorName: "test",
144
- }));
145
- await remoteReactor.queueAction(driveId, addFile({
146
- id: documentId,
147
- name: "test",
148
- documentType: document.header.documentType,
149
- }));
150
- await vi.waitFor(async () => {
151
- const document = (await reactor.getDocument(documentId));
152
- expect(getDocumentScopeIndexes(document)).toStrictEqual({
153
- global: 0,
154
- local: -1,
155
- });
156
- const resultDocument = result.document;
157
- expect(document.state.global).toStrictEqual(resultDocument.state.global);
158
- });
159
- await reactor.deleteDrive(driveId);
160
- });
161
- it("should persist triggers in drive storage and retrieve them correctly", async () => {
162
- const { reactor } = await testSetupReactor();
163
- const trigger = await setupTrigger();
164
- // Create a drive with triggers and listeners
165
- const testListeners = [
166
- {
167
- listenerId: "test-listener-1",
168
- label: "Test Listener",
169
- version: "1.0.0",
170
- url: "https://example.com/listener",
171
- system: false,
172
- status: "CONNECTING",
173
- block: false,
174
- callInfo: {
175
- data: "",
176
- name: "Test Listener",
177
- transmitterType: "PullResponder",
178
- },
179
- filter: {
180
- documentType: ["*"],
181
- documentId: ["*"],
182
- scope: ["global"],
183
- branch: ["main"],
184
- },
185
- },
186
- ];
187
- const createdDrive = await reactor.addDrive({
188
- id: generateId(),
189
- global: {
190
- name: "Test Drive with Triggers",
191
- icon: null,
192
- },
193
- local: {
194
- availableOffline: true,
195
- triggers: [trigger],
196
- listeners: testListeners,
197
- sharingType: "private",
198
- },
199
- });
200
- const createdDriveId = createdDrive.header.id;
201
- // Verify initial state has triggers and listeners
202
- expect(createdDrive.state.local.triggers).toHaveLength(1);
203
- expect(createdDrive.state.local.triggers[0].id).toBe(trigger.id);
204
- expect(createdDrive.state.local.listeners).toHaveLength(1);
205
- expect(createdDrive.state.local.listeners[0].listenerId).toBe(testListeners[0].listenerId);
206
- // Now retrieve the drive from storage (simulating a restart)
207
- const retrievedDrive = await reactor.getDrive(createdDriveId);
208
- // Verify that triggers and listeners are preserved after retrieval
209
- expect(retrievedDrive.state.local.triggers).toHaveLength(1);
210
- expect(retrievedDrive.state.local.triggers[0]).toStrictEqual(trigger);
211
- expect(retrievedDrive.state.local.listeners).toHaveLength(1);
212
- expect(retrievedDrive.state.local.listeners[0]).toStrictEqual(testListeners[0]);
213
- // Verify other local state is also preserved
214
- expect(retrievedDrive.state.local.availableOffline).toBe(true);
215
- expect(retrievedDrive.state.local.sharingType).toBe("private");
216
- // Clean up
217
- await reactor.deleteDrive(createdDriveId);
218
- });
219
- });
220
- //# sourceMappingURL=pull-responder-transmitter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull-responder-transmitter.test.js","sourceRoot":"","sources":["../../test/pull-responder-transmitter.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=push-transmitter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"push-transmitter.test.d.ts","sourceRoot":"","sources":["../../test/push-transmitter.test.ts"],"names":[],"mappings":""}