@powerhousedao/reactor-api 6.0.0-dev.30 → 6.0.0-dev.31
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/graphql/document-model-subgraph.d.ts +52 -0
- package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/document-model-subgraph.js +299 -3
- 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/graphql-manager.d.ts +1 -0
- package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
- package/dist/src/graphql/graphql-manager.js +44 -12
- package/dist/src/graphql/graphql-manager.js.map +1 -1
- package/dist/src/graphql/system/system-subgraph.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/server.d.ts +5 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +3 -2
- package/dist/src/server.js.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 +242 -21
- package/dist/src/utils/create-schema.js.map +1 -1
- 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/two-reactor-gql-sync.test.js +28 -19
- package/dist/test/two-reactor-gql-sync.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
import { type DocumentModelModule } from "document-model";
|
|
2
2
|
import { BaseSubgraph } from "./base-subgraph.js";
|
|
3
3
|
import type { SubgraphArgs } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* New document model subgraph that uses reactorClient instead of legacy reactor.
|
|
6
|
+
* This class auto-generates GraphQL queries and mutations for a document model.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DocumentModelSubgraph extends BaseSubgraph {
|
|
9
|
+
private documentModel;
|
|
10
|
+
constructor(documentModel: DocumentModelModule, args: SubgraphArgs);
|
|
11
|
+
/**
|
|
12
|
+
* Check if user has global read access (admin, user, or guest)
|
|
13
|
+
*/
|
|
14
|
+
private hasGlobalReadAccess;
|
|
15
|
+
/**
|
|
16
|
+
* Check if user has global write access (admin or user, not guest)
|
|
17
|
+
*/
|
|
18
|
+
private hasGlobalWriteAccess;
|
|
19
|
+
/**
|
|
20
|
+
* Get the parent IDs function for hierarchical permission checks.
|
|
21
|
+
* Uses the shared createGetParentIdsFn from reactor/resolvers.
|
|
22
|
+
*/
|
|
23
|
+
private getParentIdsFn;
|
|
24
|
+
/**
|
|
25
|
+
* Check if user can read a document (with hierarchy)
|
|
26
|
+
*/
|
|
27
|
+
private canReadDocument;
|
|
28
|
+
/**
|
|
29
|
+
* Check if user can write to a document (with hierarchy)
|
|
30
|
+
*/
|
|
31
|
+
private canWriteDocument;
|
|
32
|
+
/**
|
|
33
|
+
* Throw an error if user cannot read the document
|
|
34
|
+
*/
|
|
35
|
+
private assertCanRead;
|
|
36
|
+
/**
|
|
37
|
+
* Throw an error if user cannot write to the document
|
|
38
|
+
*/
|
|
39
|
+
private assertCanWrite;
|
|
40
|
+
/**
|
|
41
|
+
* Check if user can execute a specific operation on a document.
|
|
42
|
+
* Throws an error if the operation is restricted and user lacks permission.
|
|
43
|
+
*/
|
|
44
|
+
private assertCanExecuteOperation;
|
|
45
|
+
/**
|
|
46
|
+
* Generate resolvers for this document model using reactorClient
|
|
47
|
+
* Uses flat queries (not nested) consistent with ReactorSubgraph patterns
|
|
48
|
+
*/
|
|
49
|
+
private generateResolvers;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Use `DocumentModelSubgraph` instead. This class uses the legacy `reactor` (IDocumentDriveServer)
|
|
53
|
+
* interface. The new `DocumentModelSubgraph` class uses `reactorClient` (IReactorClient) which provides
|
|
54
|
+
* better patterns and more capabilities. Enable via `useNewDocumentModelSubgraph: true` in GraphQLManager.
|
|
55
|
+
*/
|
|
4
56
|
export declare class DocumentModelSubgraphLegacy extends BaseSubgraph {
|
|
5
57
|
private documentModel;
|
|
6
58
|
constructor(documentModel: DocumentModelModule, args: SubgraphArgs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-model-subgraph.d.ts","sourceRoot":"","sources":["../../../src/graphql/document-model-subgraph.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"document-model-subgraph.d.ts","sourceRoot":"","sources":["../../../src/graphql/document-model-subgraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD,OAAO,KAAK,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,aAAa,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY;IAWlE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;YACW,eAAe;IAmB7B;;OAEG;YACW,gBAAgB;IAmB9B;;OAEG;YACW,aAAa;IAS3B;;OAEG;YACW,cAAc;IAY5B;;;OAGG;YACW,yBAAyB;IAmCvC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CA+S1B;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,YAAY;IAC3D,OAAO,CAAC,aAAa,CAAsB;gBAE/B,aAAa,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY;IAUlE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;YACW,eAAe;IAqB7B;;OAEG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,aAAa;IAS3B;;OAEG;YACW,cAAc;IAY5B;;;OAGG;YACW,yBAAyB;IAuCvC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA2K1B"}
|
|
@@ -1,17 +1,313 @@
|
|
|
1
1
|
import { camelCase, kebabCase } from "change-case";
|
|
2
2
|
import { addFile } from "document-drive";
|
|
3
|
-
import { setName } from "document-model";
|
|
3
|
+
import { setName, } from "document-model";
|
|
4
4
|
import { GraphQLError } from "graphql";
|
|
5
|
-
import {
|
|
5
|
+
import { generateDocumentModelSchema, getDocumentModelSchemaName, } from "../utils/create-schema.js";
|
|
6
6
|
import { BaseSubgraph } from "./base-subgraph.js";
|
|
7
|
+
import { toGqlPhDocument } from "./reactor/adapters.js";
|
|
8
|
+
import { createGetParentIdsFn, document as documentResolver, documentChildren as documentChildrenResolver, documentParents as documentParentsResolver, findDocuments as findDocumentsResolver, createEmptyDocument as createEmptyDocumentResolver, } from "./reactor/resolvers.js";
|
|
7
9
|
import { buildGraphQlDocument } from "./utils.js";
|
|
10
|
+
/**
|
|
11
|
+
* New document model subgraph that uses reactorClient instead of legacy reactor.
|
|
12
|
+
* This class auto-generates GraphQL queries and mutations for a document model.
|
|
13
|
+
*/
|
|
14
|
+
export class DocumentModelSubgraph extends BaseSubgraph {
|
|
15
|
+
documentModel;
|
|
16
|
+
constructor(documentModel, args) {
|
|
17
|
+
super(args);
|
|
18
|
+
this.documentModel = documentModel;
|
|
19
|
+
this.name = kebabCase(documentModel.documentModel.global.name);
|
|
20
|
+
this.typeDefs = generateDocumentModelSchema(this.documentModel.documentModel.global, { useNewApi: true });
|
|
21
|
+
this.resolvers = this.generateResolvers();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if user has global read access (admin, user, or guest)
|
|
25
|
+
*/
|
|
26
|
+
hasGlobalReadAccess(ctx) {
|
|
27
|
+
const isGlobalAdmin = ctx.isAdmin?.(ctx.user?.address ?? "");
|
|
28
|
+
const isGlobalUser = ctx.isUser?.(ctx.user?.address ?? "");
|
|
29
|
+
const isGlobalGuest = ctx.isGuest?.(ctx.user?.address ?? "") ||
|
|
30
|
+
process.env.FREE_ENTRY === "true";
|
|
31
|
+
return !!(isGlobalAdmin || isGlobalUser || isGlobalGuest);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if user has global write access (admin or user, not guest)
|
|
35
|
+
*/
|
|
36
|
+
hasGlobalWriteAccess(ctx) {
|
|
37
|
+
const isGlobalAdmin = ctx.isAdmin?.(ctx.user?.address ?? "");
|
|
38
|
+
const isGlobalUser = ctx.isUser?.(ctx.user?.address ?? "");
|
|
39
|
+
return !!(isGlobalAdmin || isGlobalUser);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the parent IDs function for hierarchical permission checks.
|
|
43
|
+
* Uses the shared createGetParentIdsFn from reactor/resolvers.
|
|
44
|
+
*/
|
|
45
|
+
getParentIdsFn() {
|
|
46
|
+
return createGetParentIdsFn(this.reactorClient);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if user can read a document (with hierarchy)
|
|
50
|
+
*/
|
|
51
|
+
async canReadDocument(documentId, ctx) {
|
|
52
|
+
if (this.hasGlobalReadAccess(ctx)) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
if (this.documentPermissionService) {
|
|
56
|
+
return this.documentPermissionService.canRead(documentId, ctx.user?.address, this.getParentIdsFn());
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if user can write to a document (with hierarchy)
|
|
62
|
+
*/
|
|
63
|
+
async canWriteDocument(documentId, ctx) {
|
|
64
|
+
if (this.hasGlobalWriteAccess(ctx)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
if (this.documentPermissionService) {
|
|
68
|
+
return this.documentPermissionService.canWrite(documentId, ctx.user?.address, this.getParentIdsFn());
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Throw an error if user cannot read the document
|
|
74
|
+
*/
|
|
75
|
+
async assertCanRead(documentId, ctx) {
|
|
76
|
+
const canRead = await this.canReadDocument(documentId, ctx);
|
|
77
|
+
if (!canRead) {
|
|
78
|
+
throw new GraphQLError("Forbidden: insufficient permissions to read this document");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Throw an error if user cannot write to the document
|
|
83
|
+
*/
|
|
84
|
+
async assertCanWrite(documentId, ctx) {
|
|
85
|
+
const canWrite = await this.canWriteDocument(documentId, ctx);
|
|
86
|
+
if (!canWrite) {
|
|
87
|
+
throw new GraphQLError("Forbidden: insufficient permissions to write to this document");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if user can execute a specific operation on a document.
|
|
92
|
+
* Throws an error if the operation is restricted and user lacks permission.
|
|
93
|
+
*/
|
|
94
|
+
async assertCanExecuteOperation(documentId, operationType, ctx) {
|
|
95
|
+
if (!this.documentPermissionService) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (ctx.isAdmin?.(ctx.user?.address ?? "")) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const isRestricted = await this.documentPermissionService.isOperationRestricted(documentId, operationType);
|
|
102
|
+
if (isRestricted) {
|
|
103
|
+
const canExecute = await this.documentPermissionService.canExecuteOperation(documentId, operationType, ctx.user?.address);
|
|
104
|
+
if (!canExecute) {
|
|
105
|
+
throw new GraphQLError(`Forbidden: insufficient permissions to execute operation "${operationType}" on this document`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Generate resolvers for this document model using reactorClient
|
|
111
|
+
* Uses flat queries (not nested) consistent with ReactorSubgraph patterns
|
|
112
|
+
*/
|
|
113
|
+
generateResolvers() {
|
|
114
|
+
const documentType = this.documentModel.documentModel.global.id;
|
|
115
|
+
const documentName = getDocumentModelSchemaName(this.documentModel.documentModel.global);
|
|
116
|
+
const operations = this.documentModel.documentModel.global.specifications
|
|
117
|
+
.at(-1)
|
|
118
|
+
?.modules.flatMap((module) => module.operations.filter((op) => op.name)) ?? [];
|
|
119
|
+
return {
|
|
120
|
+
Query: {
|
|
121
|
+
// Flat query: Get a specific document by identifier
|
|
122
|
+
// Uses shared documentResolver from reactor/resolvers.ts
|
|
123
|
+
[`${documentName}_document`]: async (_, args, ctx) => {
|
|
124
|
+
const { identifier, view } = args;
|
|
125
|
+
if (!identifier) {
|
|
126
|
+
throw new GraphQLError("Document identifier is required");
|
|
127
|
+
}
|
|
128
|
+
// Use shared resolver function
|
|
129
|
+
const result = await documentResolver(this.reactorClient, {
|
|
130
|
+
identifier,
|
|
131
|
+
view,
|
|
132
|
+
});
|
|
133
|
+
// Validate document type
|
|
134
|
+
if (result.document.documentType !== documentType) {
|
|
135
|
+
throw new GraphQLError(`Document with id ${identifier} is not of type ${documentType}`);
|
|
136
|
+
}
|
|
137
|
+
// Check permissions
|
|
138
|
+
await this.assertCanRead(result.document.id, ctx);
|
|
139
|
+
// Return shared resolver result directly (matches PHDocument format)
|
|
140
|
+
return result;
|
|
141
|
+
},
|
|
142
|
+
// Flat query: Find documents by search criteria (type is built-in)
|
|
143
|
+
// Uses shared findDocumentsResolver from reactor/resolvers.ts
|
|
144
|
+
[`${documentName}_findDocuments`]: async (_, args, ctx) => {
|
|
145
|
+
const { search, view, paging } = args;
|
|
146
|
+
// Use shared resolver function with built-in type filter
|
|
147
|
+
const result = await findDocumentsResolver(this.reactorClient, {
|
|
148
|
+
search: {
|
|
149
|
+
type: documentType, // Type is built-in for this document model subgraph
|
|
150
|
+
parentId: search.parentId,
|
|
151
|
+
},
|
|
152
|
+
view,
|
|
153
|
+
paging,
|
|
154
|
+
});
|
|
155
|
+
// Filter by permission if needed
|
|
156
|
+
if (!this.hasGlobalReadAccess(ctx) &&
|
|
157
|
+
this.documentPermissionService) {
|
|
158
|
+
const filteredItems = [];
|
|
159
|
+
for (const item of result.items) {
|
|
160
|
+
const canRead = await this.canReadDocument(item.id, ctx);
|
|
161
|
+
if (canRead) {
|
|
162
|
+
filteredItems.push(item);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
...result,
|
|
167
|
+
items: filteredItems,
|
|
168
|
+
totalCount: filteredItems.length,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// Return shared resolver result directly (matches PHDocument format)
|
|
172
|
+
return result;
|
|
173
|
+
},
|
|
174
|
+
// Flat query: Get children of a document (filtered by this document type)
|
|
175
|
+
// Uses shared documentChildrenResolver from reactor/resolvers.ts
|
|
176
|
+
[`${documentName}_documentChildren`]: async (_, args, ctx) => {
|
|
177
|
+
const { parentIdentifier, view, paging } = args;
|
|
178
|
+
await this.assertCanRead(parentIdentifier, ctx);
|
|
179
|
+
// Use shared resolver function
|
|
180
|
+
const result = await documentChildrenResolver(this.reactorClient, {
|
|
181
|
+
parentIdentifier,
|
|
182
|
+
view,
|
|
183
|
+
paging,
|
|
184
|
+
});
|
|
185
|
+
// Filter children by this document type
|
|
186
|
+
const filteredItems = result.items.filter((item) => item.documentType === documentType);
|
|
187
|
+
return {
|
|
188
|
+
...result,
|
|
189
|
+
items: filteredItems,
|
|
190
|
+
totalCount: filteredItems.length,
|
|
191
|
+
};
|
|
192
|
+
},
|
|
193
|
+
// Flat query: Get parents of a document
|
|
194
|
+
// Uses shared documentParentsResolver from reactor/resolvers.ts
|
|
195
|
+
[`${documentName}_documentParents`]: async (_, args, ctx) => {
|
|
196
|
+
const { childIdentifier, view, paging } = args;
|
|
197
|
+
await this.assertCanRead(childIdentifier, ctx);
|
|
198
|
+
// Use shared resolver function - return directly
|
|
199
|
+
return documentParentsResolver(this.reactorClient, {
|
|
200
|
+
childIdentifier,
|
|
201
|
+
view,
|
|
202
|
+
paging,
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
Mutation: {
|
|
207
|
+
// Uses shared createEmptyDocumentResolver from reactor/resolvers.ts
|
|
208
|
+
[`${documentName}_createDocument`]: async (_, args, ctx) => {
|
|
209
|
+
const { parentIdentifier, name } = args;
|
|
210
|
+
if (parentIdentifier) {
|
|
211
|
+
await this.assertCanWrite(parentIdentifier, ctx);
|
|
212
|
+
}
|
|
213
|
+
else if (!this.hasGlobalWriteAccess(ctx)) {
|
|
214
|
+
throw new GraphQLError("Forbidden: insufficient permissions to create documents");
|
|
215
|
+
}
|
|
216
|
+
// Use shared resolver function - returns PHDocument format
|
|
217
|
+
const createdDoc = await createEmptyDocumentResolver(this.reactorClient, {
|
|
218
|
+
documentType,
|
|
219
|
+
parentIdentifier,
|
|
220
|
+
});
|
|
221
|
+
if (name) {
|
|
222
|
+
const updatedDoc = await this.reactorClient.execute(createdDoc.id, "main", [setName(name)]);
|
|
223
|
+
// Use toGqlPhDocument for PHDocument format with revisionsList
|
|
224
|
+
return toGqlPhDocument(updatedDoc);
|
|
225
|
+
}
|
|
226
|
+
// Return directly - already in PHDocument format
|
|
227
|
+
return createdDoc;
|
|
228
|
+
},
|
|
229
|
+
// Uses shared createEmptyDocumentResolver from reactor/resolvers.ts
|
|
230
|
+
[`${documentName}_createEmptyDocument`]: async (_, args, ctx) => {
|
|
231
|
+
const { parentIdentifier } = args;
|
|
232
|
+
if (parentIdentifier) {
|
|
233
|
+
await this.assertCanWrite(parentIdentifier, ctx);
|
|
234
|
+
}
|
|
235
|
+
else if (!this.hasGlobalWriteAccess(ctx)) {
|
|
236
|
+
throw new GraphQLError("Forbidden: insufficient permissions to create documents");
|
|
237
|
+
}
|
|
238
|
+
// Use shared resolver function - returns PHDocument format directly
|
|
239
|
+
return createEmptyDocumentResolver(this.reactorClient, {
|
|
240
|
+
documentType,
|
|
241
|
+
parentIdentifier,
|
|
242
|
+
});
|
|
243
|
+
},
|
|
244
|
+
// Generate sync and async mutations for each operation
|
|
245
|
+
...operations.reduce((mutations, op) => {
|
|
246
|
+
// Sync mutation
|
|
247
|
+
mutations[`${documentName}_${camelCase(op.name)}`] = async (_, args, ctx) => {
|
|
248
|
+
const { docId, input } = args;
|
|
249
|
+
await this.assertCanWrite(docId, ctx);
|
|
250
|
+
await this.assertCanExecuteOperation(docId, op.name, ctx);
|
|
251
|
+
const doc = await this.reactorClient.get(docId);
|
|
252
|
+
if (doc.header.documentType !== documentType) {
|
|
253
|
+
throw new GraphQLError(`Document with id ${docId} is not of type ${documentType}`);
|
|
254
|
+
}
|
|
255
|
+
const action = this.documentModel.actions[camelCase(op.name)];
|
|
256
|
+
if (!action) {
|
|
257
|
+
throw new GraphQLError(`Action ${op.name} not found`);
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
const updatedDoc = await this.reactorClient.execute(docId, "main", [action(input)]);
|
|
261
|
+
// Use toGqlPhDocument for PHDocument format with revisionsList
|
|
262
|
+
return toGqlPhDocument(updatedDoc);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
throw new GraphQLError(error instanceof Error
|
|
266
|
+
? error.message
|
|
267
|
+
: `Failed to ${op.name}`);
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
// Async mutation - returns job ID
|
|
271
|
+
mutations[`${documentName}_${camelCase(op.name)}Async`] = async (_, args, ctx) => {
|
|
272
|
+
const { docId, input } = args;
|
|
273
|
+
await this.assertCanWrite(docId, ctx);
|
|
274
|
+
await this.assertCanExecuteOperation(docId, op.name, ctx);
|
|
275
|
+
const doc = await this.reactorClient.get(docId);
|
|
276
|
+
if (doc.header.documentType !== documentType) {
|
|
277
|
+
throw new GraphQLError(`Document with id ${docId} is not of type ${documentType}`);
|
|
278
|
+
}
|
|
279
|
+
const action = this.documentModel.actions[camelCase(op.name)];
|
|
280
|
+
if (!action) {
|
|
281
|
+
throw new GraphQLError(`Action ${op.name} not found`);
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
const jobInfo = await this.reactorClient.executeAsync(docId, "main", [action(input)]);
|
|
285
|
+
return jobInfo.id;
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
throw new GraphQLError(error instanceof Error
|
|
289
|
+
? error.message
|
|
290
|
+
: `Failed to ${op.name}`);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
return mutations;
|
|
294
|
+
}, {}),
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* @deprecated Use `DocumentModelSubgraph` instead. This class uses the legacy `reactor` (IDocumentDriveServer)
|
|
301
|
+
* interface. The new `DocumentModelSubgraph` class uses `reactorClient` (IReactorClient) which provides
|
|
302
|
+
* better patterns and more capabilities. Enable via `useNewDocumentModelSubgraph: true` in GraphQLManager.
|
|
303
|
+
*/
|
|
8
304
|
export class DocumentModelSubgraphLegacy extends BaseSubgraph {
|
|
9
305
|
documentModel;
|
|
10
306
|
constructor(documentModel, args) {
|
|
11
307
|
super(args);
|
|
12
308
|
this.documentModel = documentModel;
|
|
13
309
|
this.name = kebabCase(documentModel.documentModel.global.name);
|
|
14
|
-
this.typeDefs =
|
|
310
|
+
this.typeDefs = generateDocumentModelSchema(this.documentModel.documentModel.global);
|
|
15
311
|
this.resolvers = this.generateResolvers();
|
|
16
312
|
}
|
|
17
313
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-model-subgraph.js","sourceRoot":"","sources":["../../../src/graphql/document-model-subgraph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-model-subgraph.js","sourceRoot":"","sources":["../../../src/graphql/document-model-subgraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drive-subgraph.d.ts","sourceRoot":"","sources":["../../../src/graphql/drive-subgraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,KAAK,EACV,OAAO,EAEP,YAAY,EAEZ,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAGV,QAAQ,EAMT,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,eAAO,MAAM,sBAAsB;;6BAEV,QAAQ;;;;
|
|
1
|
+
{"version":3,"file":"drive-subgraph.d.ts","sourceRoot":"","sources":["../../../src/graphql/drive-subgraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,KAAK,EACV,OAAO,EAEP,YAAY,EAEZ,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAGV,QAAQ,EAMT,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,eAAO,MAAM,sBAAsB;;6BAEV,QAAQ;;;;gBA+GjB,CAAC;iBACL,CAAC;;;CAvGZ,CAAC;AAEF,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAGX;gBAES,IAAI,EAAE,YAAY;IAS9B,IAAI,SAAc;IAClB,QAAQ,iCAyKN;YAEY,oBAAoB;YASpB,kBAAkB;IAWhC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,CA+WpC;CACH"}
|
|
@@ -9,6 +9,7 @@ import type { AuthConfig } from "../services/auth.service.js";
|
|
|
9
9
|
import type { DocumentPermissionService } from "../services/document-permission.service.js";
|
|
10
10
|
export type GraphqlManagerFeatureFlags = {
|
|
11
11
|
enableDocumentModelSubgraphs?: boolean;
|
|
12
|
+
useNewDocumentModelSubgraph?: boolean;
|
|
12
13
|
};
|
|
13
14
|
export declare class GraphQLManager {
|
|
14
15
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-manager.d.ts","sourceRoot":"","sources":["../../../src/graphql/graphql-manager.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACd,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"graphql-manager.d.ts","sourceRoot":"","sources":["../../../src/graphql/graphql-manager.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACd,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AA+E5F,MAAM,MAAM,0BAA0B,GAAG;IACvC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF,qBAAa,cAAc;;IAoBvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IA/BvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,gBAAgB,CAAsC;IAE9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAE1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAI1B;gBAGgB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,UAAU,EAAE,IAAI,CAAC,MAAM,EACvB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,aAAa,EAC3B,cAAc,EAAE,eAAe,EAC/B,WAAW,EAAE,YAAY,EACzB,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,yBAAyB,CAAC,EAAE,yBAAyB,YAAA,EACrD,YAAY,GAAE,0BAAgD,EAC9D,IAAI,GAAE,MAAa;IAUhC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE;IAqMnC,gBAAgB,CACpB,QAAQ,EAAE,aAAa,EACvB,UAAU,SAAK,EACf,IAAI,UAAQ;IAgBd,YAAY,yCAAiD;YAE/C,aAAa;IAiB3B,0BAA0B,4BAExB;IAEF,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA+BtD,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE;IAWlD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA2MhC"}
|
|
@@ -11,7 +11,7 @@ import path from "node:path";
|
|
|
11
11
|
import { setTimeout } from "node:timers/promises";
|
|
12
12
|
import { AuthService } from "../services/auth.service.js";
|
|
13
13
|
import { buildSubgraphSchemaModule, createSchema, } from "../utils/create-schema.js";
|
|
14
|
-
import { DocumentModelSubgraphLegacy } from "./document-model-subgraph.js";
|
|
14
|
+
import { DocumentModelSubgraph, DocumentModelSubgraphLegacy, } from "./document-model-subgraph.js";
|
|
15
15
|
import { DriveSubgraph } from "./drive-subgraph.js";
|
|
16
16
|
import { useServer } from "./websocket.js";
|
|
17
17
|
class AuthenticatedDataSource extends RemoteGraphQLDataSource {
|
|
@@ -36,8 +36,31 @@ function hasOperationSchemas(documentModel) {
|
|
|
36
36
|
const hasValidSchema = (schema) => schema && /\b(input|type|enum|union|interface)\s+\w+/.test(schema);
|
|
37
37
|
return specification.modules.some((module) => module.operations.some((op) => hasValidSchema(op.schema)));
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Filter document models to keep only the latest version of each unique document model.
|
|
41
|
+
* When multiple versions exist with the same name, the one with the most recent specification is kept.
|
|
42
|
+
*/
|
|
43
|
+
function filterLatestDocumentModelVersions(documentModels) {
|
|
44
|
+
const latestByName = new Map();
|
|
45
|
+
for (const documentModel of documentModels) {
|
|
46
|
+
const name = documentModel.documentModel.global.name;
|
|
47
|
+
const existing = latestByName.get(name);
|
|
48
|
+
if (!existing) {
|
|
49
|
+
latestByName.set(name, documentModel);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
// Compare version numbers from the latest specification
|
|
53
|
+
const currentVersion = documentModel.documentModel.global.specifications.at(-1)?.version ?? 0;
|
|
54
|
+
const existingVersion = existing.documentModel.global.specifications.at(-1)?.version ?? 0;
|
|
55
|
+
if (currentVersion > existingVersion) {
|
|
56
|
+
latestByName.set(name, documentModel);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return Array.from(latestByName.values());
|
|
60
|
+
}
|
|
39
61
|
const DefaultFeatureFlags = {
|
|
40
62
|
enableDocumentModelSubgraphs: true,
|
|
63
|
+
useNewDocumentModelSubgraph: false,
|
|
41
64
|
};
|
|
42
65
|
export class GraphQLManager {
|
|
43
66
|
path;
|
|
@@ -169,7 +192,9 @@ export class GraphQLManager {
|
|
|
169
192
|
return this.#setupSubgraphs(this.coreSubgraphsMap, this.coreRouter);
|
|
170
193
|
}
|
|
171
194
|
async #setupDocumentModelSubgraphs(supergraph, documentModels) {
|
|
172
|
-
|
|
195
|
+
// Filter to keep only the latest version of each document model
|
|
196
|
+
const latestDocumentModels = filterLatestDocumentModelVersions(documentModels);
|
|
197
|
+
for (const documentModel of latestDocumentModels) {
|
|
173
198
|
if (DOCUMENT_MODELS_TO_EXCLUDE.includes(documentModel.documentModel.global.id)) {
|
|
174
199
|
continue; // Skip the legacy document model
|
|
175
200
|
}
|
|
@@ -177,7 +202,10 @@ export class GraphQLManager {
|
|
|
177
202
|
continue; // Skip document models without operation schemas
|
|
178
203
|
}
|
|
179
204
|
try {
|
|
180
|
-
const
|
|
205
|
+
const SubgraphClass = this.featureFlags.useNewDocumentModelSubgraph
|
|
206
|
+
? DocumentModelSubgraph
|
|
207
|
+
: DocumentModelSubgraphLegacy;
|
|
208
|
+
const subgraphInstance = new SubgraphClass(documentModel, {
|
|
181
209
|
relationalDb: this.relationalDb,
|
|
182
210
|
analyticsStore: this.analyticsStore,
|
|
183
211
|
reactor: this.reactor,
|
|
@@ -199,23 +227,21 @@ export class GraphQLManager {
|
|
|
199
227
|
return this.#setupSubgraphs(this.coreSubgraphsMap, this.coreRouter);
|
|
200
228
|
}
|
|
201
229
|
async #addSubgraphInstance(subgraphInstance, supergraph = "", core = false) {
|
|
202
|
-
await subgraphInstance.onSetup?.();
|
|
203
230
|
const subgraphsMap = core ? this.coreSubgraphsMap : this.subgraphs;
|
|
204
231
|
const subgraphs = subgraphsMap.get(supergraph) ?? [];
|
|
205
232
|
const existingSubgraph = subgraphs.find((it) => it.name === subgraphInstance.name);
|
|
233
|
+
if (existingSubgraph) {
|
|
234
|
+
this.logger.debug(`Skipping duplicate subgraph: ${subgraphInstance.name}`);
|
|
235
|
+
return existingSubgraph;
|
|
236
|
+
}
|
|
237
|
+
await subgraphInstance.onSetup?.();
|
|
206
238
|
subgraphs.push(subgraphInstance);
|
|
207
239
|
subgraphsMap.set(supergraph, subgraphs);
|
|
208
240
|
// also add to global graphql supergraph
|
|
209
241
|
if (supergraph !== "" && supergraph !== "graphql") {
|
|
210
242
|
subgraphsMap.get("graphql")?.push(subgraphInstance);
|
|
211
243
|
}
|
|
212
|
-
|
|
213
|
-
if (!existingSubgraph) {
|
|
214
|
-
this.logger.info(logMessage);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.logger.debug(logMessage);
|
|
218
|
-
}
|
|
244
|
+
this.logger.info(`Registered ${this.path.endsWith("/") ? this.path : this.path + "/"}${supergraph ? supergraph + "/" : ""}${subgraphInstance.name} subgraph.`);
|
|
219
245
|
return subgraphInstance;
|
|
220
246
|
}
|
|
221
247
|
async registerSubgraph(subgraph, supergraph = "", core = false) {
|
|
@@ -384,7 +410,13 @@ export class GraphQLManager {
|
|
|
384
410
|
},
|
|
385
411
|
});
|
|
386
412
|
if (this.coreApolloServer) {
|
|
387
|
-
|
|
413
|
+
try {
|
|
414
|
+
await this.#waitForServer(this.coreApolloServer);
|
|
415
|
+
await this.coreApolloServer.stop();
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
// ignore error when stopping apollo server
|
|
419
|
+
}
|
|
388
420
|
}
|
|
389
421
|
this.coreApolloServer = new ApolloServer({
|
|
390
422
|
gateway,
|