@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.
Files changed (29) hide show
  1. package/dist/src/graphql/document-model-subgraph.d.ts +52 -0
  2. package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
  3. package/dist/src/graphql/document-model-subgraph.js +299 -3
  4. package/dist/src/graphql/document-model-subgraph.js.map +1 -1
  5. package/dist/src/graphql/drive-subgraph.d.ts.map +1 -1
  6. package/dist/src/graphql/graphql-manager.d.ts +1 -0
  7. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  8. package/dist/src/graphql/graphql-manager.js +44 -12
  9. package/dist/src/graphql/graphql-manager.js.map +1 -1
  10. package/dist/src/graphql/system/system-subgraph.d.ts.map +1 -1
  11. package/dist/src/graphql/utils.d.ts.map +1 -1
  12. package/dist/src/graphql/utils.js +7 -3
  13. package/dist/src/graphql/utils.js.map +1 -1
  14. package/dist/src/server.d.ts +5 -0
  15. package/dist/src/server.d.ts.map +1 -1
  16. package/dist/src/server.js +3 -2
  17. package/dist/src/server.js.map +1 -1
  18. package/dist/src/utils/create-schema.d.ts +21 -1
  19. package/dist/src/utils/create-schema.d.ts.map +1 -1
  20. package/dist/src/utils/create-schema.js +242 -21
  21. package/dist/src/utils/create-schema.js.map +1 -1
  22. package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
  23. package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
  24. package/dist/test/document-model-subgraph-permissions.test.js +635 -0
  25. package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
  26. package/dist/test/two-reactor-gql-sync.test.js +28 -19
  27. package/dist/test/two-reactor-gql-sync.test.js.map +1 -1
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. 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,EAAW,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAOnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxD,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
+ {"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 { generateDocumentModelSchemaLegacy, getDocumentModelSchemaName, } from "../utils/create-schema.js";
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 = generateDocumentModelSchemaLegacy(this.documentModel.documentModel.global);
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;;;;gBAsGL,CAAC;iBAClB,CAAC;;;CA9FX,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"}
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;AA2C5F,MAAM,MAAM,0BAA0B,GAAG;IACvC,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,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;IA+LnC,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;CAsMhC"}
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
- for (const documentModel of documentModels) {
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 subgraphInstance = new DocumentModelSubgraphLegacy(documentModel, {
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
- const logMessage = `Registered ${this.path.endsWith("/") ? this.path : this.path + "/"}${supergraph ? supergraph + "/" : ""}${subgraphInstance.name} subgraph.`;
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
- await this.coreApolloServer.stop();
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,