@powerhousedao/reactor-api 6.0.0-dev.5 → 6.0.0-dev.50
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/codegen.js +1 -1
- package/dist/codegen.js.map +1 -1
- package/dist/src/config.d.ts +1 -2
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -5
- package/dist/src/config.js.map +1 -1
- package/dist/src/graphql/auth/subgraph.js +1 -1
- package/dist/src/graphql/auth/subgraph.js.map +1 -1
- package/dist/src/graphql/base-subgraph.d.ts +2 -2
- package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/base-subgraph.js.map +1 -1
- package/dist/src/graphql/document-model-subgraph.d.ts +95 -43
- package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/document-model-subgraph.js +570 -79
- package/dist/src/graphql/document-model-subgraph.js.map +1 -1
- package/dist/src/graphql/drive-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/drive-subgraph.js +1 -0
- package/dist/src/graphql/drive-subgraph.js.map +1 -1
- package/dist/src/graphql/graphql-manager.d.ts +7 -2
- package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
- package/dist/src/graphql/graphql-manager.js +130 -42
- package/dist/src/graphql/graphql-manager.js.map +1 -1
- package/dist/src/graphql/index.d.ts +1 -0
- package/dist/src/graphql/index.d.ts.map +1 -1
- package/dist/src/graphql/index.js +1 -0
- package/dist/src/graphql/index.js.map +1 -1
- package/dist/src/graphql/reactor/adapters.d.ts +10 -2
- package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
- package/dist/src/graphql/reactor/adapters.js +35 -1
- package/dist/src/graphql/reactor/adapters.js.map +1 -1
- package/dist/src/graphql/reactor/factory.d.ts +12 -1
- package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
- package/dist/src/graphql/reactor/factory.js +1 -1
- package/dist/src/graphql/reactor/factory.js.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.d.ts +187 -27
- package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.js +124 -9
- package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
- package/dist/src/graphql/reactor/index.d.ts +1 -1
- package/dist/src/graphql/reactor/index.d.ts.map +1 -1
- package/dist/src/graphql/reactor/index.js +1 -1
- package/dist/src/graphql/reactor/index.js.map +1 -1
- package/dist/src/graphql/reactor/operations.graphql +80 -0
- package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
- package/dist/src/graphql/reactor/requester.with-zod.js +104 -38
- package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
- package/dist/src/graphql/reactor/resolvers.d.ts +48 -24
- package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
- package/dist/src/graphql/reactor/resolvers.js +134 -70
- package/dist/src/graphql/reactor/resolvers.js.map +1 -1
- package/dist/src/graphql/reactor/schema.graphql +59 -29
- package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
- package/dist/src/graphql/reactor/subgraph.js +97 -111
- package/dist/src/graphql/reactor/subgraph.js.map +1 -1
- package/dist/src/graphql/reactor/validation.d.ts +24 -0
- package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
- package/dist/src/graphql/reactor/validation.js +15 -0
- package/dist/src/graphql/reactor/validation.js.map +1 -1
- package/dist/src/graphql/system/index.d.ts +0 -1
- package/dist/src/graphql/system/index.d.ts.map +1 -1
- package/dist/src/graphql/system/index.js +0 -1
- package/dist/src/graphql/system/index.js.map +1 -1
- package/dist/src/graphql/types.d.ts +3 -3
- package/dist/src/graphql/types.d.ts.map +1 -1
- package/dist/src/graphql/utils.d.ts.map +1 -1
- package/dist/src/graphql/utils.js +7 -3
- package/dist/src/graphql/utils.js.map +1 -1
- package/dist/src/packages/import-loader.d.ts +5 -3
- package/dist/src/packages/import-loader.d.ts.map +1 -1
- package/dist/src/packages/import-loader.js +19 -10
- package/dist/src/packages/import-loader.js.map +1 -1
- package/dist/src/packages/package-manager.d.ts +2 -2
- package/dist/src/packages/package-manager.d.ts.map +1 -1
- package/dist/src/packages/package-manager.js.map +1 -1
- package/dist/src/packages/types.d.ts +8 -4
- package/dist/src/packages/types.d.ts.map +1 -1
- package/dist/src/packages/util.d.ts +3 -2
- package/dist/src/packages/util.d.ts.map +1 -1
- package/dist/src/packages/util.js +1 -1
- package/dist/src/packages/util.js.map +1 -1
- package/dist/src/packages/vite-loader.d.ts +7 -6
- package/dist/src/packages/vite-loader.d.ts.map +1 -1
- package/dist/src/packages/vite-loader.js +21 -8
- package/dist/src/packages/vite-loader.js.map +1 -1
- package/dist/src/server.d.ts +16 -7
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +117 -59
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/auth.service.d.ts.map +1 -1
- package/dist/src/services/auth.service.js +11 -20
- package/dist/src/services/auth.service.js.map +1 -1
- package/dist/src/tracing.js +1 -1
- package/dist/src/tracing.js.map +1 -1
- package/dist/src/types.d.ts +5 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/create-schema.d.ts +21 -1
- package/dist/src/utils/create-schema.d.ts.map +1 -1
- package/dist/src/utils/create-schema.js +290 -16
- package/dist/src/utils/create-schema.js.map +1 -1
- package/dist/src/utils/drive-url.d.ts +2 -0
- package/dist/src/utils/drive-url.d.ts.map +1 -0
- package/dist/src/utils/drive-url.js +3 -0
- package/dist/src/utils/drive-url.js.map +1 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
- package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
- package/dist/test/connect-switchboard-sync.test.js +578 -0
- package/dist/test/connect-switchboard-sync.test.js.map +1 -0
- package/dist/test/document-drive-subgraph.test.d.ts +2 -0
- package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
- package/dist/test/document-drive-subgraph.test.js +186 -0
- package/dist/test/document-drive-subgraph.test.js.map +1 -0
- package/dist/test/document-model-subgraph-legacy-permissions.test.d.ts +2 -0
- package/dist/test/document-model-subgraph-legacy-permissions.test.d.ts.map +1 -0
- package/dist/test/document-model-subgraph-legacy-permissions.test.js +518 -0
- package/dist/test/document-model-subgraph-legacy-permissions.test.js.map +1 -0
- package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
- package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
- package/dist/test/document-model-subgraph-permissions.test.js +635 -0
- package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
- package/dist/test/document-model-subgraph.test.d.ts +2 -0
- package/dist/test/document-model-subgraph.test.d.ts.map +1 -0
- package/dist/test/document-model-subgraph.test.js +441 -0
- package/dist/test/document-model-subgraph.test.js.map +1 -0
- package/dist/test/drive-info-endpoint.test.d.ts +2 -0
- package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
- package/dist/test/drive-info-endpoint.test.js +123 -0
- package/dist/test/drive-info-endpoint.test.js.map +1 -0
- package/dist/test/permissions-integration.test.js +4 -4
- package/dist/test/permissions-integration.test.js.map +1 -1
- package/dist/test/push-backfill.test.d.ts +2 -0
- package/dist/test/push-backfill.test.d.ts.map +1 -0
- package/dist/test/push-backfill.test.js +295 -0
- package/dist/test/push-backfill.test.js.map +1 -0
- package/dist/test/reactor-client.test.js +4 -4
- package/dist/test/reactor-client.test.js.map +1 -1
- package/dist/test/reactor-resolvers.test.js +4 -8
- package/dist/test/reactor-resolvers.test.js.map +1 -1
- package/dist/test/reactor-subgraph-permissions.test.js +4 -7
- package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
- package/dist/test/subscriptions.test.js +2 -0
- package/dist/test/subscriptions.test.js.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.js +28 -6
- package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +45 -35
- package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
- package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
- package/dist/src/graphql/system/system-subgraph.js +0 -130
- package/dist/src/graphql/system/system-subgraph.js.map +0 -1
- package/dist/test/system.test.d.ts +0 -2
- package/dist/test/system.test.d.ts.map +0 -1
- package/dist/test/system.test.js +0 -211
- package/dist/test/system.test.js.map +0 -1
- package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
- package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
- package/dist/test/three-reactor-gql-sync.test.js +0 -368
- package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
- package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
- package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
- package/dist/test/two-reactor-gql-sync.test.js +0 -348
- package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
|
@@ -1,6 +1,106 @@
|
|
|
1
1
|
import { Kind } from "graphql";
|
|
2
2
|
import { createFetchRequester } from "./requester.js";
|
|
3
|
-
import { DocumentModelResultPageDTO, DocumentWithChildrenDTO, JobInfoDTO, PHDocumentResultPageDTO, } from "./validation.js";
|
|
3
|
+
import { DocumentChangeEventDTO, DocumentModelResultPageDTO, DocumentWithChildrenDTO, JobChangeEventDTO, JobInfoDTO, MoveChildrenResultDTO, PHDocumentDTO, PHDocumentResultPageDTO, } from "./validation.js";
|
|
4
|
+
// Validation handlers for each operation
|
|
5
|
+
// TypeScript will error if any operation from Sdk is missing
|
|
6
|
+
const operationValidators = {
|
|
7
|
+
GetDocument: (data) => {
|
|
8
|
+
if (data.document) {
|
|
9
|
+
DocumentWithChildrenDTO.parse(data.document);
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
GetDocumentModels: (data) => {
|
|
13
|
+
if (data.documentModels) {
|
|
14
|
+
DocumentModelResultPageDTO.parse(data.documentModels);
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
GetDocumentChildren: (data) => {
|
|
18
|
+
if (data.documentChildren) {
|
|
19
|
+
PHDocumentResultPageDTO.parse(data.documentChildren);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
GetDocumentParents: (data) => {
|
|
23
|
+
if (data.documentParents) {
|
|
24
|
+
PHDocumentResultPageDTO.parse(data.documentParents);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
FindDocuments: (data) => {
|
|
28
|
+
if (data.findDocuments) {
|
|
29
|
+
PHDocumentResultPageDTO.parse(data.findDocuments);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
GetJobStatus: (data) => {
|
|
33
|
+
if (data.jobStatus) {
|
|
34
|
+
JobInfoDTO.parse(data.jobStatus);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
// Mutations
|
|
38
|
+
CreateDocument: (data) => {
|
|
39
|
+
if (data.createDocument) {
|
|
40
|
+
PHDocumentDTO.parse(data.createDocument);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
CreateEmptyDocument: (data) => {
|
|
44
|
+
if (data.createEmptyDocument) {
|
|
45
|
+
PHDocumentDTO.parse(data.createEmptyDocument);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
MutateDocument: (data) => {
|
|
49
|
+
if (data.mutateDocument) {
|
|
50
|
+
PHDocumentDTO.parse(data.mutateDocument);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
MutateDocumentAsync: (data) => {
|
|
54
|
+
if (data.mutateDocumentAsync) {
|
|
55
|
+
// Returns a job ID string
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
RenameDocument: (data) => {
|
|
59
|
+
if (data.renameDocument) {
|
|
60
|
+
PHDocumentDTO.parse(data.renameDocument);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
AddChildren: (data) => {
|
|
64
|
+
if (data.addChildren) {
|
|
65
|
+
PHDocumentDTO.parse(data.addChildren);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
RemoveChildren: (data) => {
|
|
69
|
+
if (data.removeChildren) {
|
|
70
|
+
PHDocumentDTO.parse(data.removeChildren);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
MoveChildren: (data) => {
|
|
74
|
+
if (data.moveChildren) {
|
|
75
|
+
MoveChildrenResultDTO.parse(data.moveChildren);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
DeleteDocument: (data) => {
|
|
79
|
+
if (data.deleteDocument !== undefined) {
|
|
80
|
+
// Returns a boolean
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
DeleteDocuments: (data) => {
|
|
84
|
+
if (data.deleteDocuments !== undefined) {
|
|
85
|
+
// Returns a boolean
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
// Subscriptions
|
|
89
|
+
DocumentChanges: (data) => {
|
|
90
|
+
if (data.documentChanges) {
|
|
91
|
+
DocumentChangeEventDTO.parse(data.documentChanges);
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
JobChanges: (data) => {
|
|
95
|
+
if (data.jobChanges) {
|
|
96
|
+
JobChangeEventDTO.parse(data.jobChanges);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
// Sync operations (used inline by reactor/gql-req-channel.ts, not through this SDK)
|
|
100
|
+
PollSyncEnvelopes: () => { },
|
|
101
|
+
TouchChannel: () => { },
|
|
102
|
+
PushSyncEnvelopes: () => { },
|
|
103
|
+
};
|
|
4
104
|
export function createValidatingRequester(url, fetchImpl, headers) {
|
|
5
105
|
const base = createFetchRequester(url, fetchImpl, headers);
|
|
6
106
|
return async (document, variables, options) => {
|
|
@@ -9,43 +109,9 @@ export function createValidatingRequester(url, fetchImpl, headers) {
|
|
|
9
109
|
const operationDef = document.definitions.find((d) => d.kind === Kind.OPERATION_DEFINITION && !!d.name);
|
|
10
110
|
const operationName = operationDef?.name?.value;
|
|
11
111
|
// Validate based on operation name
|
|
12
|
-
if (data && operationName) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
case "GetDocument":
|
|
16
|
-
if (dataObj.document) {
|
|
17
|
-
DocumentWithChildrenDTO.parse(dataObj.document);
|
|
18
|
-
}
|
|
19
|
-
break;
|
|
20
|
-
case "GetDocumentModels":
|
|
21
|
-
if (dataObj.documentModels) {
|
|
22
|
-
DocumentModelResultPageDTO.parse(dataObj.documentModels);
|
|
23
|
-
}
|
|
24
|
-
break;
|
|
25
|
-
case "GetDocumentChildren":
|
|
26
|
-
if (dataObj.documentChildren) {
|
|
27
|
-
PHDocumentResultPageDTO.parse(dataObj.documentChildren);
|
|
28
|
-
}
|
|
29
|
-
break;
|
|
30
|
-
case "GetDocumentParents":
|
|
31
|
-
if (dataObj.documentParents) {
|
|
32
|
-
PHDocumentResultPageDTO.parse(dataObj.documentParents);
|
|
33
|
-
}
|
|
34
|
-
break;
|
|
35
|
-
case "FindDocuments":
|
|
36
|
-
if (dataObj.findDocuments) {
|
|
37
|
-
PHDocumentResultPageDTO.parse(dataObj.findDocuments);
|
|
38
|
-
}
|
|
39
|
-
break;
|
|
40
|
-
case "GetJobStatus":
|
|
41
|
-
if (dataObj.jobStatus) {
|
|
42
|
-
JobInfoDTO.parse(dataObj.jobStatus);
|
|
43
|
-
}
|
|
44
|
-
break;
|
|
45
|
-
// Mutations and other operations can be added here as needed
|
|
46
|
-
default:
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
112
|
+
if (data && operationName && operationName in operationValidators) {
|
|
113
|
+
const validator = operationValidators[operationName];
|
|
114
|
+
validator(data);
|
|
49
115
|
}
|
|
50
116
|
return data;
|
|
51
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requester.with-zod.js","sourceRoot":"","sources":["../../../../src/graphql/reactor/requester.with-zod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"requester.with-zod.js","sourceRoot":"","sources":["../../../../src/graphql/reactor/requester.with-zod.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type IReactorClient, type ISyncManager } from "@powerhousedao/reactor";
|
|
2
|
+
import type { GetParentIdsFn } from "../../services/document-permission.service.js";
|
|
2
3
|
import { toGqlPhDocument } from "./adapters.js";
|
|
3
|
-
import type { DocumentModelResultPage, JobInfo as GqlJobInfo, PropagationMode as GqlPropagationMode, PhDocumentResultPage } from "./gen/graphql.js";
|
|
4
|
+
import type { DocumentModelResultPage, JobInfo as GqlJobInfo, PropagationMode as GqlPropagationMode, PhDocumentResultPage, ReactorOperationResultPage } from "./gen/graphql.js";
|
|
4
5
|
export declare function documentModels(reactorClient: IReactorClient, args: {
|
|
5
6
|
namespace?: string | null;
|
|
6
7
|
paging?: {
|
|
@@ -57,6 +58,21 @@ export declare function findDocuments(reactorClient: IReactorClient, args: {
|
|
|
57
58
|
export declare function jobStatus(reactorClient: IReactorClient, args: {
|
|
58
59
|
jobId: string;
|
|
59
60
|
}): Promise<GqlJobInfo>;
|
|
61
|
+
export declare function documentOperations(reactorClient: IReactorClient, args: {
|
|
62
|
+
filter: {
|
|
63
|
+
documentId: string;
|
|
64
|
+
branch?: string | null;
|
|
65
|
+
scopes?: readonly string[] | null;
|
|
66
|
+
actionTypes?: readonly string[] | null;
|
|
67
|
+
sinceRevision?: number | null;
|
|
68
|
+
timestampFrom?: string | null;
|
|
69
|
+
timestampTo?: string | null;
|
|
70
|
+
};
|
|
71
|
+
paging?: {
|
|
72
|
+
cursor?: string | null;
|
|
73
|
+
limit?: number | null;
|
|
74
|
+
} | null;
|
|
75
|
+
}): Promise<ReactorOperationResultPage>;
|
|
60
76
|
export declare function createDocument(reactorClient: IReactorClient, args: {
|
|
61
77
|
document: unknown;
|
|
62
78
|
parentIdentifier?: string | null;
|
|
@@ -123,37 +139,45 @@ export declare function touchChannel(syncManager: ISyncManager, args: {
|
|
|
123
139
|
scope: readonly string[];
|
|
124
140
|
branch: string;
|
|
125
141
|
};
|
|
142
|
+
sinceTimestampUtcMs: string;
|
|
126
143
|
};
|
|
127
144
|
}): Promise<boolean>;
|
|
128
145
|
export declare function pollSyncEnvelopes(syncManager: ISyncManager, args: {
|
|
129
146
|
channelId: string;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
context: {
|
|
141
|
-
documentId: string;
|
|
142
|
-
documentType: string;
|
|
143
|
-
scope: string;
|
|
144
|
-
branch: string;
|
|
145
|
-
};
|
|
146
|
-
}> | null;
|
|
147
|
-
cursor?: {
|
|
148
|
-
remoteName: string;
|
|
149
|
-
cursorOrdinal: number;
|
|
150
|
-
lastSyncedAtUtcMs?: string | null;
|
|
151
|
-
} | null;
|
|
147
|
+
outboxAck: number;
|
|
148
|
+
outboxLatest: number;
|
|
149
|
+
}): {
|
|
150
|
+
envelopes: any[];
|
|
151
|
+
ackOrdinal: number;
|
|
152
|
+
};
|
|
153
|
+
type SyncEnvelopeArg = {
|
|
154
|
+
type: string;
|
|
155
|
+
channelMeta: {
|
|
156
|
+
id: string;
|
|
152
157
|
};
|
|
158
|
+
operations?: Array<{
|
|
159
|
+
operation: any;
|
|
160
|
+
context: {
|
|
161
|
+
documentId: string;
|
|
162
|
+
documentType: string;
|
|
163
|
+
scope: string;
|
|
164
|
+
branch: string;
|
|
165
|
+
};
|
|
166
|
+
}> | null;
|
|
167
|
+
cursor?: {
|
|
168
|
+
remoteName: string;
|
|
169
|
+
cursorOrdinal: number;
|
|
170
|
+
lastSyncedAtUtcMs?: string | null;
|
|
171
|
+
} | null;
|
|
172
|
+
key?: string;
|
|
173
|
+
dependsOn?: string[];
|
|
174
|
+
};
|
|
175
|
+
export declare function pushSyncEnvelopes(syncManager: ISyncManager, args: {
|
|
176
|
+
envelopes: SyncEnvelopeArg[];
|
|
153
177
|
}): Promise<boolean>;
|
|
154
|
-
import type { GetParentIdsFn } from "../../services/document-permission.service.js";
|
|
155
178
|
/**
|
|
156
179
|
* Create a getParentIds function using the reactor client
|
|
157
180
|
*/
|
|
158
181
|
export declare function createGetParentIdsFn(reactorClient: IReactorClient): GetParentIdsFn;
|
|
182
|
+
export {};
|
|
159
183
|
//# sourceMappingURL=resolvers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../../src/graphql/reactor/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../../src/graphql/reactor/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SyncOperation, } from "@powerhousedao/reactor";
|
|
1
|
+
import { batchOperationsByDocument, sortEnvelopesByFirstOperationTimestamp, SyncOperation, trimMailboxFromAckOrdinal, } from "@powerhousedao/reactor";
|
|
2
2
|
import { GraphQLError } from "graphql";
|
|
3
|
-
import { fromInputMaybe, toDocumentModelResultPage, toGqlJobInfo, toGqlPhDocument, toMutableArray, toPhDocumentResultPage, validateActions, } from "./adapters.js";
|
|
3
|
+
import { fromInputMaybe, serializeOperationForGraphQL, toDocumentModelResultPage, toGqlJobInfo, toGqlPhDocument, toMutableArray, toOperationResultPage, toPhDocumentResultPage, validateActions, } from "./adapters.js";
|
|
4
4
|
export async function documentModels(reactorClient, args) {
|
|
5
5
|
const namespace = fromInputMaybe(args.namespace);
|
|
6
6
|
let paging;
|
|
@@ -43,10 +43,17 @@ export async function document(reactorClient, args) {
|
|
|
43
43
|
catch (error) {
|
|
44
44
|
throw new GraphQLError(`Failed to fetch document: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
45
45
|
}
|
|
46
|
+
let children;
|
|
47
|
+
try {
|
|
48
|
+
children = await reactorClient.getChildren(args.identifier, view);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
throw new GraphQLError(`Failed to fetch children: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
52
|
+
}
|
|
46
53
|
try {
|
|
47
54
|
return {
|
|
48
|
-
document: toGqlPhDocument(result
|
|
49
|
-
childIds:
|
|
55
|
+
document: toGqlPhDocument(result),
|
|
56
|
+
childIds: children.results.map((child) => child.header.id),
|
|
50
57
|
};
|
|
51
58
|
}
|
|
52
59
|
catch (error) {
|
|
@@ -171,6 +178,54 @@ export async function jobStatus(reactorClient, args) {
|
|
|
171
178
|
throw new GraphQLError(`Failed to convert job status to GraphQL: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
172
179
|
}
|
|
173
180
|
}
|
|
181
|
+
export async function documentOperations(reactorClient, args) {
|
|
182
|
+
let view;
|
|
183
|
+
const branch = fromInputMaybe(args.filter.branch);
|
|
184
|
+
const scopes = toMutableArray(fromInputMaybe(args.filter.scopes));
|
|
185
|
+
if (branch || scopes) {
|
|
186
|
+
view = { branch, scopes };
|
|
187
|
+
}
|
|
188
|
+
const actionTypes = toMutableArray(fromInputMaybe(args.filter.actionTypes));
|
|
189
|
+
const sinceRevision = fromInputMaybe(args.filter.sinceRevision);
|
|
190
|
+
const timestampFrom = fromInputMaybe(args.filter.timestampFrom);
|
|
191
|
+
const timestampTo = fromInputMaybe(args.filter.timestampTo);
|
|
192
|
+
let operationFilter;
|
|
193
|
+
if ((actionTypes && actionTypes.length > 0) ||
|
|
194
|
+
sinceRevision !== undefined ||
|
|
195
|
+
timestampFrom ||
|
|
196
|
+
timestampTo) {
|
|
197
|
+
operationFilter = {
|
|
198
|
+
actionTypes: actionTypes && actionTypes.length > 0 ? actionTypes : undefined,
|
|
199
|
+
sinceRevision,
|
|
200
|
+
timestampFrom: timestampFrom || undefined,
|
|
201
|
+
timestampTo: timestampTo || undefined,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
let paging;
|
|
205
|
+
if (args.paging) {
|
|
206
|
+
const cursor = fromInputMaybe(args.paging.cursor);
|
|
207
|
+
const limit = fromInputMaybe(args.paging.limit);
|
|
208
|
+
if (cursor || limit) {
|
|
209
|
+
paging = {
|
|
210
|
+
cursor: cursor || "",
|
|
211
|
+
limit: limit || 100,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
let result;
|
|
216
|
+
try {
|
|
217
|
+
result = await reactorClient.getOperations(args.filter.documentId, view, operationFilter, paging);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
throw new GraphQLError(`Failed to fetch document operations: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
return toOperationResultPage(result);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
throw new GraphQLError(`Failed to convert operations to GraphQL: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
174
229
|
export async function createDocument(reactorClient, args) {
|
|
175
230
|
// Validate that document is a PHDocument
|
|
176
231
|
if (!args.document || typeof args.document !== "object") {
|
|
@@ -369,44 +424,21 @@ export async function touchChannel(syncManager, args) {
|
|
|
369
424
|
scope: [...args.input.filter.scope],
|
|
370
425
|
branch: args.input.filter.branch,
|
|
371
426
|
};
|
|
427
|
+
const options = {
|
|
428
|
+
sinceTimestampUtcMs: args.input.sinceTimestampUtcMs,
|
|
429
|
+
};
|
|
372
430
|
try {
|
|
373
431
|
await syncManager.add(args.input.name, args.input.collectionId, {
|
|
374
432
|
type: "polling",
|
|
375
433
|
parameters: {},
|
|
376
|
-
}, filter,
|
|
434
|
+
}, filter, options, args.input.id);
|
|
377
435
|
}
|
|
378
436
|
catch (error) {
|
|
379
437
|
throw new GraphQLError(`Failed to create channel: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
380
438
|
}
|
|
381
439
|
return true;
|
|
382
440
|
}
|
|
383
|
-
|
|
384
|
-
* Transforms an operation to serialize signatures from tuples to strings
|
|
385
|
-
* for GraphQL compatibility.
|
|
386
|
-
*
|
|
387
|
-
* The Signature type is a tuple [string, string, string, string, string],
|
|
388
|
-
* but GraphQL expects [String!]! (flat array of strings).
|
|
389
|
-
*/
|
|
390
|
-
function serializeOperationForGraphQL(operation) {
|
|
391
|
-
const signer = operation.action.context?.signer;
|
|
392
|
-
if (!signer?.signatures) {
|
|
393
|
-
return operation;
|
|
394
|
-
}
|
|
395
|
-
return {
|
|
396
|
-
...operation,
|
|
397
|
-
action: {
|
|
398
|
-
...operation.action,
|
|
399
|
-
context: {
|
|
400
|
-
...operation.action.context,
|
|
401
|
-
signer: {
|
|
402
|
-
...signer,
|
|
403
|
-
signatures: signer.signatures.map((sig) => Array.isArray(sig) ? sig.join(", ") : sig),
|
|
404
|
-
},
|
|
405
|
-
},
|
|
406
|
-
},
|
|
407
|
-
};
|
|
408
|
-
}
|
|
409
|
-
export async function pollSyncEnvelopes(syncManager, args) {
|
|
441
|
+
export function pollSyncEnvelopes(syncManager, args) {
|
|
410
442
|
let remote;
|
|
411
443
|
try {
|
|
412
444
|
remote = syncManager.getById(args.channelId);
|
|
@@ -414,14 +446,29 @@ export async function pollSyncEnvelopes(syncManager, args) {
|
|
|
414
446
|
catch (error) {
|
|
415
447
|
throw new GraphQLError(`Channel not found: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
416
448
|
}
|
|
417
|
-
|
|
418
|
-
|
|
449
|
+
// trim outbox
|
|
450
|
+
if (args.outboxAck > 0) {
|
|
451
|
+
trimMailboxFromAckOrdinal(remote.channel.outbox, args.outboxAck);
|
|
419
452
|
}
|
|
420
|
-
|
|
453
|
+
let operations = remote.channel.outbox.items;
|
|
454
|
+
// filter remaining outbox operations by outboxLatest
|
|
455
|
+
operations = operations.filter((syncOp) => {
|
|
456
|
+
let maxOrdinal = 0;
|
|
457
|
+
for (const op of syncOp.operations) {
|
|
458
|
+
maxOrdinal = Math.max(maxOrdinal, op.context.ordinal);
|
|
459
|
+
}
|
|
460
|
+
if (maxOrdinal > args.outboxLatest) {
|
|
461
|
+
return true;
|
|
462
|
+
}
|
|
463
|
+
return false;
|
|
464
|
+
});
|
|
421
465
|
if (operations.length === 0) {
|
|
422
|
-
return
|
|
466
|
+
return {
|
|
467
|
+
envelopes: [],
|
|
468
|
+
ackOrdinal: remote.channel.inbox.ackOrdinal,
|
|
469
|
+
};
|
|
423
470
|
}
|
|
424
|
-
let maxOrdinal = args.
|
|
471
|
+
let maxOrdinal = args.outboxLatest;
|
|
425
472
|
for (const syncOp of operations) {
|
|
426
473
|
for (const op of syncOp.operations) {
|
|
427
474
|
const opOrdinal = op.context.ordinal;
|
|
@@ -444,42 +491,59 @@ export async function pollSyncEnvelopes(syncManager, args) {
|
|
|
444
491
|
cursorOrdinal: maxOrdinal,
|
|
445
492
|
lastSyncedAtUtcMs: Date.now().toString(),
|
|
446
493
|
},
|
|
494
|
+
key: syncOp.jobId || undefined,
|
|
495
|
+
dependsOn: syncOp.jobDependencies.filter(Boolean).length > 0
|
|
496
|
+
? syncOp.jobDependencies.filter(Boolean)
|
|
497
|
+
: undefined,
|
|
447
498
|
}));
|
|
448
|
-
return
|
|
499
|
+
return {
|
|
500
|
+
envelopes: sortEnvelopesByFirstOperationTimestamp(envelopes),
|
|
501
|
+
ackOrdinal: remote.channel.inbox.ackOrdinal,
|
|
502
|
+
};
|
|
449
503
|
}
|
|
450
|
-
export function
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
504
|
+
export function pushSyncEnvelopes(syncManager, args) {
|
|
505
|
+
const sortedEnvelopes = sortEnvelopesByFirstOperationTimestamp(args.envelopes);
|
|
506
|
+
const remoteSyncOps = new Map();
|
|
507
|
+
for (const envelope of sortedEnvelopes) {
|
|
508
|
+
let remote;
|
|
509
|
+
try {
|
|
510
|
+
remote = syncManager.getById(envelope.channelMeta.id);
|
|
511
|
+
}
|
|
512
|
+
catch (error) {
|
|
513
|
+
throw new GraphQLError(`Channel not found: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
514
|
+
}
|
|
515
|
+
if (!envelope.operations || envelope.operations.length === 0) {
|
|
516
|
+
continue;
|
|
517
|
+
}
|
|
518
|
+
const operations = envelope.operations.map((op) => ({
|
|
519
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
520
|
+
operation: op.operation,
|
|
521
|
+
context: {
|
|
522
|
+
documentId: op.context.documentId,
|
|
523
|
+
documentType: op.context.documentType,
|
|
524
|
+
scope: op.context.scope,
|
|
525
|
+
branch: op.context.branch,
|
|
526
|
+
ordinal: 0,
|
|
527
|
+
},
|
|
528
|
+
}));
|
|
529
|
+
const batches = batchOperationsByDocument(operations);
|
|
530
|
+
for (const batch of batches) {
|
|
531
|
+
const syncOpId = `syncop-${envelope.channelMeta.id}-${Date.now()}-${crypto.randomUUID()}`;
|
|
532
|
+
const jobId = envelope.key ?? "";
|
|
533
|
+
const jobDependencies = envelope.dependsOn ?? [];
|
|
534
|
+
const syncOp = new SyncOperation(syncOpId, jobId, jobDependencies, remote.name, batch.documentId, [batch.scope], batch.branch, batch.operations);
|
|
535
|
+
if (!remoteSyncOps.has(remote)) {
|
|
536
|
+
remoteSyncOps.set(remote, []);
|
|
537
|
+
}
|
|
538
|
+
remoteSyncOps.get(remote).push(syncOp);
|
|
539
|
+
}
|
|
480
540
|
}
|
|
481
|
-
|
|
482
|
-
|
|
541
|
+
for (const [remote, syncOps] of remoteSyncOps) {
|
|
542
|
+
const validKeys = new Set(syncOps.map((op) => op.jobId).filter(Boolean));
|
|
543
|
+
for (const syncOp of syncOps) {
|
|
544
|
+
syncOp.jobDependencies = syncOp.jobDependencies.filter((dep) => validKeys.has(dep));
|
|
545
|
+
}
|
|
546
|
+
remote.channel.inbox.add(...syncOps);
|
|
483
547
|
}
|
|
484
548
|
return Promise.resolve(true);
|
|
485
549
|
}
|