@reventlessdev/reventless-local 3.0.0-alpha.151 → 3.0.0-alpha.153
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/CHANGELOG.md +15 -0
- package/package.json +8 -8
- package/src/Platform.res +40 -184
- package/src/Platform.res.mjs +54 -353
- package/src/adapter/Api/LocalGraphQL_Adapter.res +1 -11
- package/src/adapter/Api/LocalGraphQL_Adapter.res.mjs +0 -7
- package/src/adapter/CommandGenerator/CommandGeneratorResolvers_GraphQL.res +6 -6
- package/src/adapter/CommandGenerator/CommandGeneratorResolvers_GraphQL.res.mjs +3 -5
- package/src/adapter/DomainGraphQL_Server.res +323 -131
- package/src/adapter/DomainGraphQL_Server.res.mjs +252 -123
- package/src/adapter/GraphQL_Server.res.mjs +41 -17
- package/tests/adapter/DomainGraphQL_ServerTest.res +161 -0
- package/tests/adapter/DomainGraphQL_ServerTest.res.mjs +192 -0
- package/tests/plugin/ApiFragmentRegistryBehavior_GWT.res +0 -131
- package/tests/plugin/ApiFragmentRegistryBehavior_GWT.res.mjs +0 -268
- package/tests/plugin/ApiFragmentsProjection_GWT.res +0 -108
- package/tests/plugin/ApiFragmentsProjection_GWT.res.mjs +0 -172
|
@@ -3,11 +3,16 @@
|
|
|
3
3
|
import * as S from "sury/src/S.res.mjs";
|
|
4
4
|
import * as Http from "http";
|
|
5
5
|
import * as Graphql from "graphql";
|
|
6
|
+
import * as Stdlib_Dict from "@rescript/runtime/lib/es6/Stdlib_Dict.js";
|
|
6
7
|
import * as Stdlib_JSON from "@rescript/runtime/lib/es6/Stdlib_JSON.js";
|
|
8
|
+
import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
|
|
9
|
+
import * as Stdlib_JsExn from "@rescript/runtime/lib/es6/Stdlib_JsExn.js";
|
|
7
10
|
import * as GraphqlYoga from "graphql-yoga";
|
|
8
11
|
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
12
|
+
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
9
13
|
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
10
14
|
import * as Identity$Reventless from "@reventlessdev/reventless-spec/src/types/Identity.res.mjs";
|
|
15
|
+
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
11
16
|
import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
|
|
12
17
|
import * as LocalAuth$ReventlessLocal from "./Auth/LocalAuth.res.mjs";
|
|
13
18
|
import * as GraphQL_Stitcher$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/GraphQL_Stitcher.res.mjs";
|
|
@@ -140,65 +145,134 @@ function decodeGlobalId(globalId) {
|
|
|
140
145
|
}
|
|
141
146
|
}
|
|
142
147
|
|
|
143
|
-
let
|
|
144
|
-
contents: {}
|
|
145
|
-
};
|
|
148
|
+
let platformScope = "platform";
|
|
146
149
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
function makeBucket(scope) {
|
|
151
|
+
return {
|
|
152
|
+
mutationFields: [],
|
|
153
|
+
queryFields: [],
|
|
154
|
+
subscriptionFields: [],
|
|
155
|
+
typeDefinitions: scope === platformScope ? [] : GraphQL_Stitcher$ReventlessCore.relayBaseTypes.slice(),
|
|
156
|
+
mutationResolvers: {},
|
|
157
|
+
queryResolvers: {},
|
|
158
|
+
subscriptionResolvers: {}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
150
161
|
|
|
151
|
-
let
|
|
162
|
+
let buckets = {
|
|
152
163
|
contents: {}
|
|
153
164
|
};
|
|
154
165
|
|
|
155
|
-
let
|
|
156
|
-
contents:
|
|
166
|
+
let currentScope = {
|
|
167
|
+
contents: platformScope
|
|
157
168
|
};
|
|
158
169
|
|
|
159
|
-
|
|
160
|
-
contents
|
|
161
|
-
|
|
170
|
+
function bucketFor(scope) {
|
|
171
|
+
let b = buckets.contents[scope];
|
|
172
|
+
if (b !== undefined) {
|
|
173
|
+
return b;
|
|
174
|
+
}
|
|
175
|
+
let b$1 = makeBucket(scope);
|
|
176
|
+
buckets.contents[scope] = b$1;
|
|
177
|
+
return b$1;
|
|
178
|
+
}
|
|
162
179
|
|
|
163
|
-
|
|
164
|
-
contents
|
|
165
|
-
}
|
|
180
|
+
function currentBucket() {
|
|
181
|
+
return bucketFor(currentScope.contents);
|
|
182
|
+
}
|
|
166
183
|
|
|
167
|
-
|
|
168
|
-
contents
|
|
169
|
-
|
|
184
|
+
function setScope(name) {
|
|
185
|
+
currentScope.contents = name;
|
|
186
|
+
bucketFor(name);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function resetScope() {
|
|
190
|
+
currentScope.contents = platformScope;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function relabelScope(from, to_) {
|
|
194
|
+
if (from === to_) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
let b = buckets.contents[from];
|
|
198
|
+
if (b === undefined) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
Stdlib_Dict.$$delete(buckets.contents, from);
|
|
202
|
+
let existing = buckets.contents[to_];
|
|
203
|
+
if (existing !== undefined) {
|
|
204
|
+
existing.mutationFields = existing.mutationFields.concat(b.mutationFields);
|
|
205
|
+
existing.queryFields = existing.queryFields.concat(b.queryFields);
|
|
206
|
+
existing.subscriptionFields = existing.subscriptionFields.concat(b.subscriptionFields);
|
|
207
|
+
b.typeDefinitions.forEach(t => {
|
|
208
|
+
if (!existing.typeDefinitions.includes(t)) {
|
|
209
|
+
existing.typeDefinitions.push(t);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
Object.entries(b.mutationResolvers).forEach(param => {
|
|
214
|
+
existing.mutationResolvers[param[0]] = param[1];
|
|
215
|
+
});
|
|
216
|
+
Object.entries(b.queryResolvers).forEach(param => {
|
|
217
|
+
existing.queryResolvers[param[0]] = param[1];
|
|
218
|
+
});
|
|
219
|
+
Object.entries(b.subscriptionResolvers).forEach(param => {
|
|
220
|
+
existing.subscriptionResolvers[param[0]] = param[1];
|
|
221
|
+
});
|
|
222
|
+
} else {
|
|
223
|
+
buckets.contents[to_] = b;
|
|
224
|
+
}
|
|
225
|
+
if (currentScope.contents === from) {
|
|
226
|
+
currentScope.contents = to_;
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function orderedBuckets() {
|
|
232
|
+
let entries = Object.entries(buckets.contents);
|
|
233
|
+
return entries.filter(param => param[0] === platformScope).concat(entries.filter(param => param[0] !== platformScope));
|
|
234
|
+
}
|
|
170
235
|
|
|
171
236
|
function registerMutations(sdlFields, resolvers) {
|
|
172
|
-
|
|
237
|
+
let b = bucketFor(currentScope.contents);
|
|
238
|
+
b.mutationFields = b.mutationFields.concat(sdlFields);
|
|
173
239
|
Object.entries(resolvers).forEach(param => {
|
|
174
|
-
mutationResolvers
|
|
240
|
+
b.mutationResolvers[param[0]] = param[1];
|
|
175
241
|
});
|
|
176
242
|
}
|
|
177
243
|
|
|
178
244
|
function registerQueries(sdlFields, resolvers) {
|
|
179
|
-
|
|
245
|
+
let b = bucketFor(currentScope.contents);
|
|
246
|
+
b.queryFields = b.queryFields.concat(sdlFields);
|
|
180
247
|
Object.entries(resolvers).forEach(param => {
|
|
181
|
-
queryResolvers
|
|
248
|
+
b.queryResolvers[param[0]] = param[1];
|
|
182
249
|
});
|
|
183
250
|
}
|
|
184
251
|
|
|
185
252
|
function registerSubscriptions(sdlFields, resolvers) {
|
|
186
|
-
|
|
253
|
+
let b = bucketFor(currentScope.contents);
|
|
254
|
+
b.subscriptionFields = b.subscriptionFields.concat(sdlFields);
|
|
187
255
|
Object.entries(resolvers).forEach(param => {
|
|
188
|
-
subscriptionResolvers
|
|
256
|
+
b.subscriptionResolvers[param[0]] = param[1];
|
|
189
257
|
});
|
|
190
258
|
}
|
|
191
259
|
|
|
192
260
|
function getMutationResolver(fieldName) {
|
|
193
|
-
return
|
|
261
|
+
return Stdlib_Array.findMap(Object.values(buckets.contents), b => b.mutationResolvers[fieldName]);
|
|
194
262
|
}
|
|
195
263
|
|
|
196
264
|
function getQueryResolver(fieldName) {
|
|
197
|
-
return
|
|
265
|
+
return Stdlib_Array.findMap(Object.values(buckets.contents), b => b.queryResolvers[fieldName]);
|
|
198
266
|
}
|
|
199
267
|
|
|
200
268
|
function registerTypes(sdlTypes) {
|
|
201
|
-
|
|
269
|
+
let b = bucketFor(currentScope.contents);
|
|
270
|
+
sdlTypes.forEach(t => {
|
|
271
|
+
if (!b.typeDefinitions.includes(t)) {
|
|
272
|
+
b.typeDefinitions.push(t);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
202
276
|
}
|
|
203
277
|
|
|
204
278
|
let nodeTypeRegistry = {
|
|
@@ -255,39 +329,130 @@ let lastFullSdl = {
|
|
|
255
329
|
contents: undefined
|
|
256
330
|
};
|
|
257
331
|
|
|
332
|
+
function assembleBucketSdl(typeDefinitions, queryFields, mutationFields, subscriptionFields, withRootDefaults) {
|
|
333
|
+
let sections = [];
|
|
334
|
+
if (typeDefinitions.length !== 0) {
|
|
335
|
+
sections.push(typeDefinitions.join("\n\n"));
|
|
336
|
+
}
|
|
337
|
+
if (withRootDefaults || queryFields.length !== 0) {
|
|
338
|
+
let queries = queryFields.length !== 0 ? queryFields.join("\n") : " _noop: String";
|
|
339
|
+
sections.push(`type Query {\n` + queries + `\n}`);
|
|
340
|
+
}
|
|
341
|
+
if (withRootDefaults || mutationFields.length !== 0) {
|
|
342
|
+
let mutations = mutationFields.length !== 0 ? mutationFields.join("\n") : " _noop: String";
|
|
343
|
+
sections.push(`type Mutation {\n` + mutations + `\n}`);
|
|
344
|
+
}
|
|
345
|
+
if (subscriptionFields.length !== 0) {
|
|
346
|
+
sections.push(`type Subscription {\n` + subscriptionFields.join("\n") + `\n}`);
|
|
347
|
+
}
|
|
348
|
+
return sections.join("\n\n");
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
function buildScopeSdl(b) {
|
|
352
|
+
return assembleBucketSdl(b.typeDefinitions, b.queryFields, b.mutationFields, b.subscriptionFields, false);
|
|
353
|
+
}
|
|
354
|
+
|
|
258
355
|
function buildSdl() {
|
|
259
|
-
let
|
|
260
|
-
let
|
|
261
|
-
let
|
|
262
|
-
let
|
|
263
|
-
|
|
356
|
+
let seenTypes = new Set();
|
|
357
|
+
let allTypes = [];
|
|
358
|
+
let allQueries = [];
|
|
359
|
+
let allMutations = [];
|
|
360
|
+
let allSubscriptions = [];
|
|
361
|
+
orderedBuckets().forEach(param => {
|
|
362
|
+
let b = param[1];
|
|
363
|
+
b.typeDefinitions.forEach(t => {
|
|
364
|
+
if (!seenTypes.has(t)) {
|
|
365
|
+
seenTypes.add(t);
|
|
366
|
+
allTypes.push(t);
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
allQueries.push(...b.queryFields);
|
|
371
|
+
allMutations.push(...b.mutationFields);
|
|
372
|
+
allSubscriptions.push(...b.subscriptionFields);
|
|
373
|
+
});
|
|
374
|
+
return assembleBucketSdl(allTypes, allQueries, allMutations, allSubscriptions, true);
|
|
264
375
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
376
|
+
|
|
377
|
+
function exnMessage(exn) {
|
|
378
|
+
return Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_JsExn.fromException(exn), Stdlib_JsExn.message), "unknown error");
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
function scopeResolverMap(b, withRootDefaults) {
|
|
382
|
+
let resolvers = {};
|
|
383
|
+
if (withRootDefaults || Object.keys(b.queryResolvers).length !== 0) {
|
|
384
|
+
resolvers["Query"] = b.queryResolvers;
|
|
385
|
+
}
|
|
386
|
+
if (withRootDefaults || Object.keys(b.mutationResolvers).length !== 0) {
|
|
387
|
+
resolvers["Mutation"] = b.mutationResolvers;
|
|
388
|
+
}
|
|
389
|
+
if (Object.keys(b.subscriptionResolvers).length !== 0) {
|
|
390
|
+
resolvers["Subscription"] = b.subscriptionResolvers;
|
|
391
|
+
}
|
|
392
|
+
return resolvers;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
function scopeHasFields(b) {
|
|
396
|
+
if (b.mutationFields.length !== 0 || b.queryFields.length !== 0) {
|
|
397
|
+
return true;
|
|
398
|
+
} else {
|
|
399
|
+
return b.subscriptionFields.length !== 0;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function composeSchema() {
|
|
404
|
+
orderedBuckets().forEach(param => {
|
|
405
|
+
let b = param[1];
|
|
406
|
+
let scope = param[0];
|
|
407
|
+
if (!(scope !== platformScope && scopeHasFields(b))) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
let doc = buildScopeSdl(b);
|
|
411
|
+
try {
|
|
412
|
+
GraphqlYoga.createSchema({
|
|
413
|
+
typeDefs: doc,
|
|
414
|
+
resolvers: scopeResolverMap(b, false)
|
|
415
|
+
});
|
|
416
|
+
return;
|
|
417
|
+
} catch (raw_e) {
|
|
418
|
+
let e = Primitive_exceptions.internalToException(raw_e);
|
|
419
|
+
return Stdlib_JsError.throwWithMessage(`Plugin "` + scope + `" subgraph document is not valid standalone: ` + exnMessage(e));
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
let platformBucket = bucketFor(platformScope);
|
|
423
|
+
let docs = [assembleBucketSdl(platformBucket.typeDefinitions, platformBucket.queryFields, platformBucket.mutationFields, platformBucket.subscriptionFields, true)];
|
|
424
|
+
let resolverMaps = [scopeResolverMap(platformBucket, true)];
|
|
425
|
+
orderedBuckets().forEach(param => {
|
|
426
|
+
if (param[0] === platformScope) {
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
let b = param[1];
|
|
430
|
+
let doc = buildScopeSdl(b);
|
|
431
|
+
if (doc.length > 0) {
|
|
432
|
+
docs.push(doc);
|
|
433
|
+
resolverMaps.push(scopeResolverMap(b, false));
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
try {
|
|
438
|
+
return GraphqlYoga.createSchema({
|
|
439
|
+
typeDefs: docs,
|
|
440
|
+
resolvers: resolverMaps
|
|
441
|
+
});
|
|
442
|
+
} catch (raw_e) {
|
|
443
|
+
let e = Primitive_exceptions.internalToException(raw_e);
|
|
444
|
+
return Stdlib_JsError.throwWithMessage(`Cross-plugin schema merge failed (mirrors AWS MERGE_FAILED): ` + exnMessage(e));
|
|
445
|
+
}
|
|
271
446
|
}
|
|
272
447
|
|
|
273
448
|
function start(portOpt, param, param$1) {
|
|
274
449
|
let port = portOpt !== undefined ? portOpt : 4000;
|
|
275
450
|
let match = buildNodeResolver();
|
|
276
451
|
if (match !== undefined) {
|
|
277
|
-
queryResolvers
|
|
278
|
-
}
|
|
279
|
-
let resolvers = {};
|
|
280
|
-
resolvers["Query"] = queryResolvers.contents;
|
|
281
|
-
resolvers["Mutation"] = mutationResolvers.contents;
|
|
282
|
-
if (Object.keys(subscriptionResolvers.contents).length !== 0) {
|
|
283
|
-
resolvers["Subscription"] = subscriptionResolvers.contents;
|
|
452
|
+
bucketFor(platformScope).queryResolvers[match[0]] = match[1];
|
|
284
453
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
let schema = GraphqlYoga.createSchema({
|
|
288
|
-
typeDefs: sdl,
|
|
289
|
-
resolvers: resolvers
|
|
290
|
-
});
|
|
454
|
+
lastFullSdl.contents = buildSdl();
|
|
455
|
+
let schema = composeSchema();
|
|
291
456
|
activeSchema.contents = Primitive_option.some(schema);
|
|
292
457
|
let yoga = GraphqlYoga.createYoga({
|
|
293
458
|
schema: schema,
|
|
@@ -319,64 +484,9 @@ function stop() {
|
|
|
319
484
|
}
|
|
320
485
|
}
|
|
321
486
|
|
|
322
|
-
function rebuildSchema(baseFragment, pluginFragments) {
|
|
323
|
-
stop();
|
|
324
|
-
let allFragments = [baseFragment].concat(pluginFragments);
|
|
325
|
-
let fragmentTypes = allFragments.flatMap(frag => GraphQL_Stitcher$ReventlessCore.decode(frag).types);
|
|
326
|
-
let existingNames = new Set(typeDefinitions.contents.map(GraphQL_Stitcher$ReventlessCore.extractLeadingName));
|
|
327
|
-
fragmentTypes.forEach(typeDef => {
|
|
328
|
-
let name = GraphQL_Stitcher$ReventlessCore.extractLeadingName(typeDef);
|
|
329
|
-
if (!existingNames.has(name)) {
|
|
330
|
-
typeDefinitions.contents.push(typeDef);
|
|
331
|
-
existingNames.add(name);
|
|
332
|
-
return;
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
let match = buildNodeResolver();
|
|
336
|
-
if (match !== undefined) {
|
|
337
|
-
queryResolvers.contents[match[0]] = match[1];
|
|
338
|
-
}
|
|
339
|
-
let fullSdl = buildSdl();
|
|
340
|
-
lastFullSdl.contents = fullSdl;
|
|
341
|
-
let resolvers = {};
|
|
342
|
-
resolvers["Query"] = queryResolvers.contents;
|
|
343
|
-
resolvers["Mutation"] = mutationResolvers.contents;
|
|
344
|
-
if (Object.keys(subscriptionResolvers.contents).length !== 0) {
|
|
345
|
-
resolvers["Subscription"] = subscriptionResolvers.contents;
|
|
346
|
-
}
|
|
347
|
-
let schema = GraphqlYoga.createSchema({
|
|
348
|
-
typeDefs: fullSdl,
|
|
349
|
-
resolvers: resolvers
|
|
350
|
-
});
|
|
351
|
-
activeSchema.contents = Primitive_option.some(schema);
|
|
352
|
-
let yoga = GraphqlYoga.createYoga({
|
|
353
|
-
schema: schema,
|
|
354
|
-
graphiql: true,
|
|
355
|
-
logging: debug,
|
|
356
|
-
maskedErrors: !debug,
|
|
357
|
-
context: Auth_GraphqlContext$ReventlessLocal.buildAuthContext
|
|
358
|
-
});
|
|
359
|
-
let getSdl = () => {
|
|
360
|
-
let s = activeSchema.contents;
|
|
361
|
-
if (s !== undefined) {
|
|
362
|
-
return Graphql.printSchema(Primitive_option.valFromOption(s));
|
|
363
|
-
} else {
|
|
364
|
-
return Stdlib_Option.getOr(lastFullSdl.contents, "");
|
|
365
|
-
}
|
|
366
|
-
};
|
|
367
|
-
let server = Http.createServer((req, res) => _dispatch(req, res, yoga, getSdl));
|
|
368
|
-
server.listen(4000, () => log.info("GraphQL:Domain", undefined, "rebuilt schema - http://localhost:4000/graphql (SDL: /sdl)"));
|
|
369
|
-
activeServer.contents = Primitive_option.some(server);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
487
|
function reset() {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
subscriptionResolvers.contents = {};
|
|
376
|
-
mutationFields.contents = [];
|
|
377
|
-
queryFields.contents = [];
|
|
378
|
-
subscriptionFields.contents = [];
|
|
379
|
-
typeDefinitions.contents = [];
|
|
488
|
+
buckets.contents = {};
|
|
489
|
+
currentScope.contents = platformScope;
|
|
380
490
|
nodeTypeRegistry.contents = {};
|
|
381
491
|
nodeResolverCallback.contents = undefined;
|
|
382
492
|
activeSchema.contents = undefined;
|
|
@@ -389,8 +499,8 @@ function getRegisteredSdl() {
|
|
|
389
499
|
|
|
390
500
|
function getRegisteredResolverNames() {
|
|
391
501
|
return {
|
|
392
|
-
mutations: Object.keys(mutationResolvers
|
|
393
|
-
queries: Object.keys(queryResolvers
|
|
502
|
+
mutations: orderedBuckets().flatMap(param => Object.keys(param[1].mutationResolvers)),
|
|
503
|
+
queries: orderedBuckets().flatMap(param => Object.keys(param[1].queryResolvers))
|
|
394
504
|
};
|
|
395
505
|
}
|
|
396
506
|
|
|
@@ -423,10 +533,11 @@ function extractFieldName(sdlField) {
|
|
|
423
533
|
}
|
|
424
534
|
|
|
425
535
|
function diagnostics() {
|
|
426
|
-
let
|
|
427
|
-
let
|
|
428
|
-
let
|
|
429
|
-
let
|
|
536
|
+
let allBuckets = orderedBuckets().map(param => param[1]);
|
|
537
|
+
let mutFieldNames = allBuckets.flatMap(b => b.mutationFields).map(extractFieldName).filter(n => n !== "_noop");
|
|
538
|
+
let queryFieldNames = allBuckets.flatMap(b => b.queryFields).map(extractFieldName).filter(n => n !== "_noop");
|
|
539
|
+
let mutResolverNames = allBuckets.flatMap(b => Object.keys(b.mutationResolvers));
|
|
540
|
+
let queryResolverNames = allBuckets.flatMap(b => Object.keys(b.queryResolvers));
|
|
430
541
|
let mismatches = [];
|
|
431
542
|
let mutResolverSet = new Set(mutResolverNames);
|
|
432
543
|
mutFieldNames.forEach(name => {
|
|
@@ -456,7 +567,17 @@ function diagnostics() {
|
|
|
456
567
|
return;
|
|
457
568
|
}
|
|
458
569
|
});
|
|
459
|
-
let
|
|
570
|
+
let seenTypeBlocks = new Set();
|
|
571
|
+
let typeNames = [];
|
|
572
|
+
allBuckets.forEach(b => {
|
|
573
|
+
b.typeDefinitions.forEach(t => {
|
|
574
|
+
if (!seenTypeBlocks.has(t)) {
|
|
575
|
+
seenTypeBlocks.add(t);
|
|
576
|
+
typeNames.push(GraphQL_Stitcher$ReventlessCore.extractLeadingName(t));
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
});
|
|
580
|
+
});
|
|
460
581
|
return {
|
|
461
582
|
registeredTypeDefinitions: typeNames,
|
|
462
583
|
registeredMutationFields: mutFieldNames,
|
|
@@ -535,13 +656,16 @@ export {
|
|
|
535
656
|
buildAuthContext,
|
|
536
657
|
encodeGlobalId,
|
|
537
658
|
decodeGlobalId,
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
659
|
+
platformScope,
|
|
660
|
+
makeBucket,
|
|
661
|
+
buckets,
|
|
662
|
+
currentScope,
|
|
663
|
+
bucketFor,
|
|
664
|
+
currentBucket,
|
|
665
|
+
setScope,
|
|
666
|
+
resetScope,
|
|
667
|
+
relabelScope,
|
|
668
|
+
orderedBuckets,
|
|
545
669
|
registerMutations,
|
|
546
670
|
registerQueries,
|
|
547
671
|
registerSubscriptions,
|
|
@@ -557,10 +681,15 @@ export {
|
|
|
557
681
|
activeServer,
|
|
558
682
|
activeSchema,
|
|
559
683
|
lastFullSdl,
|
|
684
|
+
assembleBucketSdl,
|
|
685
|
+
buildScopeSdl,
|
|
560
686
|
buildSdl,
|
|
687
|
+
exnMessage,
|
|
688
|
+
scopeResolverMap,
|
|
689
|
+
scopeHasFields,
|
|
690
|
+
composeSchema,
|
|
561
691
|
start,
|
|
562
692
|
stop,
|
|
563
|
-
rebuildSchema,
|
|
564
693
|
reset,
|
|
565
694
|
getRegisteredSdl,
|
|
566
695
|
getRegisteredResolverNames,
|
|
@@ -26,19 +26,25 @@ let encodeGlobalId = DomainGraphQL_Server$ReventlessLocal.encodeGlobalId;
|
|
|
26
26
|
|
|
27
27
|
let decodeGlobalId = DomainGraphQL_Server$ReventlessLocal.decodeGlobalId;
|
|
28
28
|
|
|
29
|
-
let
|
|
29
|
+
let platformScope = DomainGraphQL_Server$ReventlessLocal.platformScope;
|
|
30
30
|
|
|
31
|
-
let
|
|
31
|
+
let makeBucket = DomainGraphQL_Server$ReventlessLocal.makeBucket;
|
|
32
32
|
|
|
33
|
-
let
|
|
33
|
+
let buckets = DomainGraphQL_Server$ReventlessLocal.buckets;
|
|
34
34
|
|
|
35
|
-
let
|
|
35
|
+
let currentScope = DomainGraphQL_Server$ReventlessLocal.currentScope;
|
|
36
36
|
|
|
37
|
-
let
|
|
37
|
+
let bucketFor = DomainGraphQL_Server$ReventlessLocal.bucketFor;
|
|
38
38
|
|
|
39
|
-
let
|
|
39
|
+
let currentBucket = DomainGraphQL_Server$ReventlessLocal.currentBucket;
|
|
40
40
|
|
|
41
|
-
let
|
|
41
|
+
let setScope = DomainGraphQL_Server$ReventlessLocal.setScope;
|
|
42
|
+
|
|
43
|
+
let resetScope = DomainGraphQL_Server$ReventlessLocal.resetScope;
|
|
44
|
+
|
|
45
|
+
let relabelScope = DomainGraphQL_Server$ReventlessLocal.relabelScope;
|
|
46
|
+
|
|
47
|
+
let orderedBuckets = DomainGraphQL_Server$ReventlessLocal.orderedBuckets;
|
|
42
48
|
|
|
43
49
|
let registerMutations = DomainGraphQL_Server$ReventlessLocal.registerMutations;
|
|
44
50
|
|
|
@@ -70,14 +76,24 @@ let activeSchema = DomainGraphQL_Server$ReventlessLocal.activeSchema;
|
|
|
70
76
|
|
|
71
77
|
let lastFullSdl = DomainGraphQL_Server$ReventlessLocal.lastFullSdl;
|
|
72
78
|
|
|
79
|
+
let assembleBucketSdl = DomainGraphQL_Server$ReventlessLocal.assembleBucketSdl;
|
|
80
|
+
|
|
81
|
+
let buildScopeSdl = DomainGraphQL_Server$ReventlessLocal.buildScopeSdl;
|
|
82
|
+
|
|
73
83
|
let buildSdl = DomainGraphQL_Server$ReventlessLocal.buildSdl;
|
|
74
84
|
|
|
85
|
+
let exnMessage = DomainGraphQL_Server$ReventlessLocal.exnMessage;
|
|
86
|
+
|
|
87
|
+
let scopeResolverMap = DomainGraphQL_Server$ReventlessLocal.scopeResolverMap;
|
|
88
|
+
|
|
89
|
+
let scopeHasFields = DomainGraphQL_Server$ReventlessLocal.scopeHasFields;
|
|
90
|
+
|
|
91
|
+
let composeSchema = DomainGraphQL_Server$ReventlessLocal.composeSchema;
|
|
92
|
+
|
|
75
93
|
let start = DomainGraphQL_Server$ReventlessLocal.start;
|
|
76
94
|
|
|
77
95
|
let stop = DomainGraphQL_Server$ReventlessLocal.stop;
|
|
78
96
|
|
|
79
|
-
let rebuildSchema = DomainGraphQL_Server$ReventlessLocal.rebuildSchema;
|
|
80
|
-
|
|
81
97
|
let reset = DomainGraphQL_Server$ReventlessLocal.reset;
|
|
82
98
|
|
|
83
99
|
let getRegisteredSdl = DomainGraphQL_Server$ReventlessLocal.getRegisteredSdl;
|
|
@@ -113,13 +129,16 @@ export {
|
|
|
113
129
|
buildAuthContext,
|
|
114
130
|
encodeGlobalId,
|
|
115
131
|
decodeGlobalId,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
132
|
+
platformScope,
|
|
133
|
+
makeBucket,
|
|
134
|
+
buckets,
|
|
135
|
+
currentScope,
|
|
136
|
+
bucketFor,
|
|
137
|
+
currentBucket,
|
|
138
|
+
setScope,
|
|
139
|
+
resetScope,
|
|
140
|
+
relabelScope,
|
|
141
|
+
orderedBuckets,
|
|
123
142
|
registerMutations,
|
|
124
143
|
registerQueries,
|
|
125
144
|
registerSubscriptions,
|
|
@@ -135,10 +154,15 @@ export {
|
|
|
135
154
|
activeServer,
|
|
136
155
|
activeSchema,
|
|
137
156
|
lastFullSdl,
|
|
157
|
+
assembleBucketSdl,
|
|
158
|
+
buildScopeSdl,
|
|
138
159
|
buildSdl,
|
|
160
|
+
exnMessage,
|
|
161
|
+
scopeResolverMap,
|
|
162
|
+
scopeHasFields,
|
|
163
|
+
composeSchema,
|
|
139
164
|
start,
|
|
140
165
|
stop,
|
|
141
|
-
rebuildSchema,
|
|
142
166
|
reset,
|
|
143
167
|
getRegisteredSdl,
|
|
144
168
|
getRegisteredResolverNames,
|