@reventlessdev/reventless-local 3.0.0-alpha.152 → 3.0.0-alpha.154
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 +14 -0
- package/package.json +10 -10
- 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 +334 -132
- package/src/adapter/DomainGraphQL_Server.res.mjs +274 -126
- 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,17 @@
|
|
|
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 GraphqlYoga from "@reventlessdev/rescript-graphql-yoga/src/GraphqlYoga.res.mjs";
|
|
7
|
+
import * as Stdlib_Dict from "@rescript/runtime/lib/es6/Stdlib_Dict.js";
|
|
6
8
|
import * as Stdlib_JSON from "@rescript/runtime/lib/es6/Stdlib_JSON.js";
|
|
7
|
-
import * as
|
|
9
|
+
import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
|
|
10
|
+
import * as Stdlib_JsExn from "@rescript/runtime/lib/es6/Stdlib_JsExn.js";
|
|
11
|
+
import * as GraphqlYoga$1 from "graphql-yoga";
|
|
8
12
|
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
13
|
+
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
9
14
|
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
10
15
|
import * as Identity$Reventless from "@reventlessdev/reventless-spec/src/types/Identity.res.mjs";
|
|
16
|
+
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
11
17
|
import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
|
|
12
18
|
import * as LocalAuth$ReventlessLocal from "./Auth/LocalAuth.res.mjs";
|
|
13
19
|
import * as GraphQL_Stitcher$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/GraphQL_Stitcher.res.mjs";
|
|
@@ -140,65 +146,134 @@ function decodeGlobalId(globalId) {
|
|
|
140
146
|
}
|
|
141
147
|
}
|
|
142
148
|
|
|
143
|
-
let
|
|
144
|
-
contents: {}
|
|
145
|
-
};
|
|
149
|
+
let platformScope = "platform";
|
|
146
150
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
151
|
+
function makeBucket(scope) {
|
|
152
|
+
return {
|
|
153
|
+
mutationFields: [],
|
|
154
|
+
queryFields: [],
|
|
155
|
+
subscriptionFields: [],
|
|
156
|
+
typeDefinitions: scope === platformScope ? [] : GraphQL_Stitcher$ReventlessCore.relayBaseTypes.slice(),
|
|
157
|
+
mutationResolvers: {},
|
|
158
|
+
queryResolvers: {},
|
|
159
|
+
subscriptionResolvers: {}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
150
162
|
|
|
151
|
-
let
|
|
163
|
+
let buckets = {
|
|
152
164
|
contents: {}
|
|
153
165
|
};
|
|
154
166
|
|
|
155
|
-
let
|
|
156
|
-
contents:
|
|
167
|
+
let currentScope = {
|
|
168
|
+
contents: platformScope
|
|
157
169
|
};
|
|
158
170
|
|
|
159
|
-
|
|
160
|
-
contents
|
|
161
|
-
|
|
171
|
+
function bucketFor(scope) {
|
|
172
|
+
let b = buckets.contents[scope];
|
|
173
|
+
if (b !== undefined) {
|
|
174
|
+
return b;
|
|
175
|
+
}
|
|
176
|
+
let b$1 = makeBucket(scope);
|
|
177
|
+
buckets.contents[scope] = b$1;
|
|
178
|
+
return b$1;
|
|
179
|
+
}
|
|
162
180
|
|
|
163
|
-
|
|
164
|
-
contents
|
|
165
|
-
}
|
|
181
|
+
function currentBucket() {
|
|
182
|
+
return bucketFor(currentScope.contents);
|
|
183
|
+
}
|
|
166
184
|
|
|
167
|
-
|
|
168
|
-
contents
|
|
169
|
-
|
|
185
|
+
function setScope(name) {
|
|
186
|
+
currentScope.contents = name;
|
|
187
|
+
bucketFor(name);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function resetScope() {
|
|
191
|
+
currentScope.contents = platformScope;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function relabelScope(from, to_) {
|
|
195
|
+
if (from === to_) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
let b = buckets.contents[from];
|
|
199
|
+
if (b === undefined) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
Stdlib_Dict.$$delete(buckets.contents, from);
|
|
203
|
+
let existing = buckets.contents[to_];
|
|
204
|
+
if (existing !== undefined) {
|
|
205
|
+
existing.mutationFields = existing.mutationFields.concat(b.mutationFields);
|
|
206
|
+
existing.queryFields = existing.queryFields.concat(b.queryFields);
|
|
207
|
+
existing.subscriptionFields = existing.subscriptionFields.concat(b.subscriptionFields);
|
|
208
|
+
b.typeDefinitions.forEach(t => {
|
|
209
|
+
if (!existing.typeDefinitions.includes(t)) {
|
|
210
|
+
existing.typeDefinitions.push(t);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
Object.entries(b.mutationResolvers).forEach(param => {
|
|
215
|
+
existing.mutationResolvers[param[0]] = param[1];
|
|
216
|
+
});
|
|
217
|
+
Object.entries(b.queryResolvers).forEach(param => {
|
|
218
|
+
existing.queryResolvers[param[0]] = param[1];
|
|
219
|
+
});
|
|
220
|
+
Object.entries(b.subscriptionResolvers).forEach(param => {
|
|
221
|
+
existing.subscriptionResolvers[param[0]] = param[1];
|
|
222
|
+
});
|
|
223
|
+
} else {
|
|
224
|
+
buckets.contents[to_] = b;
|
|
225
|
+
}
|
|
226
|
+
if (currentScope.contents === from) {
|
|
227
|
+
currentScope.contents = to_;
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function orderedBuckets() {
|
|
233
|
+
let entries = Object.entries(buckets.contents);
|
|
234
|
+
return entries.filter(param => param[0] === platformScope).concat(entries.filter(param => param[0] !== platformScope));
|
|
235
|
+
}
|
|
170
236
|
|
|
171
237
|
function registerMutations(sdlFields, resolvers) {
|
|
172
|
-
|
|
238
|
+
let b = bucketFor(currentScope.contents);
|
|
239
|
+
b.mutationFields = b.mutationFields.concat(sdlFields);
|
|
173
240
|
Object.entries(resolvers).forEach(param => {
|
|
174
|
-
mutationResolvers
|
|
241
|
+
b.mutationResolvers[param[0]] = param[1];
|
|
175
242
|
});
|
|
176
243
|
}
|
|
177
244
|
|
|
178
245
|
function registerQueries(sdlFields, resolvers) {
|
|
179
|
-
|
|
246
|
+
let b = bucketFor(currentScope.contents);
|
|
247
|
+
b.queryFields = b.queryFields.concat(sdlFields);
|
|
180
248
|
Object.entries(resolvers).forEach(param => {
|
|
181
|
-
queryResolvers
|
|
249
|
+
b.queryResolvers[param[0]] = param[1];
|
|
182
250
|
});
|
|
183
251
|
}
|
|
184
252
|
|
|
185
253
|
function registerSubscriptions(sdlFields, resolvers) {
|
|
186
|
-
|
|
254
|
+
let b = bucketFor(currentScope.contents);
|
|
255
|
+
b.subscriptionFields = b.subscriptionFields.concat(sdlFields);
|
|
187
256
|
Object.entries(resolvers).forEach(param => {
|
|
188
|
-
subscriptionResolvers
|
|
257
|
+
b.subscriptionResolvers[param[0]] = param[1];
|
|
189
258
|
});
|
|
190
259
|
}
|
|
191
260
|
|
|
192
261
|
function getMutationResolver(fieldName) {
|
|
193
|
-
return
|
|
262
|
+
return Stdlib_Array.findMap(Object.values(buckets.contents), b => b.mutationResolvers[fieldName]);
|
|
194
263
|
}
|
|
195
264
|
|
|
196
265
|
function getQueryResolver(fieldName) {
|
|
197
|
-
return
|
|
266
|
+
return Stdlib_Array.findMap(Object.values(buckets.contents), b => b.queryResolvers[fieldName]);
|
|
198
267
|
}
|
|
199
268
|
|
|
200
269
|
function registerTypes(sdlTypes) {
|
|
201
|
-
|
|
270
|
+
let b = bucketFor(currentScope.contents);
|
|
271
|
+
sdlTypes.forEach(t => {
|
|
272
|
+
if (!b.typeDefinitions.includes(t)) {
|
|
273
|
+
b.typeDefinitions.push(t);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
});
|
|
202
277
|
}
|
|
203
278
|
|
|
204
279
|
let nodeTypeRegistry = {
|
|
@@ -255,44 +330,153 @@ let lastFullSdl = {
|
|
|
255
330
|
contents: undefined
|
|
256
331
|
};
|
|
257
332
|
|
|
333
|
+
function assembleBucketSdl(typeDefinitions, queryFields, mutationFields, subscriptionFields, withRootDefaults) {
|
|
334
|
+
let sections = [];
|
|
335
|
+
if (typeDefinitions.length !== 0) {
|
|
336
|
+
sections.push(typeDefinitions.join("\n\n"));
|
|
337
|
+
}
|
|
338
|
+
if (withRootDefaults || queryFields.length !== 0) {
|
|
339
|
+
let queries = queryFields.length !== 0 ? queryFields.join("\n") : " _noop: String";
|
|
340
|
+
sections.push(`type Query {\n` + queries + `\n}`);
|
|
341
|
+
}
|
|
342
|
+
if (withRootDefaults || mutationFields.length !== 0) {
|
|
343
|
+
let mutations = mutationFields.length !== 0 ? mutationFields.join("\n") : " _noop: String";
|
|
344
|
+
sections.push(`type Mutation {\n` + mutations + `\n}`);
|
|
345
|
+
}
|
|
346
|
+
if (subscriptionFields.length !== 0) {
|
|
347
|
+
sections.push(`type Subscription {\n` + subscriptionFields.join("\n") + `\n}`);
|
|
348
|
+
}
|
|
349
|
+
return sections.join("\n\n");
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
function buildScopeSdl(b) {
|
|
353
|
+
return assembleBucketSdl(b.typeDefinitions, b.queryFields, b.mutationFields, b.subscriptionFields, false);
|
|
354
|
+
}
|
|
355
|
+
|
|
258
356
|
function buildSdl() {
|
|
259
|
-
let
|
|
260
|
-
let
|
|
261
|
-
let
|
|
262
|
-
let
|
|
263
|
-
|
|
357
|
+
let seenTypes = new Set();
|
|
358
|
+
let allTypes = [];
|
|
359
|
+
let allQueries = [];
|
|
360
|
+
let allMutations = [];
|
|
361
|
+
let allSubscriptions = [];
|
|
362
|
+
orderedBuckets().forEach(param => {
|
|
363
|
+
let b = param[1];
|
|
364
|
+
b.typeDefinitions.forEach(t => {
|
|
365
|
+
if (!seenTypes.has(t)) {
|
|
366
|
+
seenTypes.add(t);
|
|
367
|
+
allTypes.push(t);
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
allQueries.push(...b.queryFields);
|
|
372
|
+
allMutations.push(...b.mutationFields);
|
|
373
|
+
allSubscriptions.push(...b.subscriptionFields);
|
|
374
|
+
});
|
|
375
|
+
return assembleBucketSdl(allTypes, allQueries, allMutations, allSubscriptions, true);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
function exnMessage(exn) {
|
|
379
|
+
return Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_JsExn.fromException(exn), Stdlib_JsExn.message), "unknown error");
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
function scopeResolverMap(b, withRootDefaults) {
|
|
383
|
+
let resolvers = {};
|
|
384
|
+
if (withRootDefaults || Object.keys(b.queryResolvers).length !== 0) {
|
|
385
|
+
resolvers["Query"] = b.queryResolvers;
|
|
386
|
+
}
|
|
387
|
+
if (withRootDefaults || Object.keys(b.mutationResolvers).length !== 0) {
|
|
388
|
+
resolvers["Mutation"] = b.mutationResolvers;
|
|
389
|
+
}
|
|
390
|
+
if (Object.keys(b.subscriptionResolvers).length !== 0) {
|
|
391
|
+
resolvers["Subscription"] = b.subscriptionResolvers;
|
|
392
|
+
}
|
|
393
|
+
return resolvers;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
function scopeHasFields(b) {
|
|
397
|
+
if (b.mutationFields.length !== 0 || b.queryFields.length !== 0) {
|
|
398
|
+
return true;
|
|
399
|
+
} else {
|
|
400
|
+
return b.subscriptionFields.length !== 0;
|
|
401
|
+
}
|
|
264
402
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
403
|
+
|
|
404
|
+
function composeSchema() {
|
|
405
|
+
orderedBuckets().forEach(param => {
|
|
406
|
+
let b = param[1];
|
|
407
|
+
let scope = param[0];
|
|
408
|
+
if (!(scope !== platformScope && scopeHasFields(b))) {
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
let doc = buildScopeSdl(b);
|
|
412
|
+
try {
|
|
413
|
+
GraphqlYoga$1.createSchema({
|
|
414
|
+
typeDefs: doc,
|
|
415
|
+
resolvers: scopeResolverMap(b, false)
|
|
416
|
+
});
|
|
417
|
+
return;
|
|
418
|
+
} catch (raw_e) {
|
|
419
|
+
let e = Primitive_exceptions.internalToException(raw_e);
|
|
420
|
+
return Stdlib_JsError.throwWithMessage(`Plugin "` + scope + `" subgraph document is not valid standalone: ` + exnMessage(e));
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
let platformBucket = bucketFor(platformScope);
|
|
424
|
+
let docs = [assembleBucketSdl(platformBucket.typeDefinitions, platformBucket.queryFields, platformBucket.mutationFields, platformBucket.subscriptionFields, true)];
|
|
425
|
+
let resolverMaps = [scopeResolverMap(platformBucket, true)];
|
|
426
|
+
orderedBuckets().forEach(param => {
|
|
427
|
+
if (param[0] === platformScope) {
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
let b = param[1];
|
|
431
|
+
let doc = buildScopeSdl(b);
|
|
432
|
+
if (doc.length > 0) {
|
|
433
|
+
docs.push(doc);
|
|
434
|
+
resolverMaps.push(scopeResolverMap(b, false));
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
try {
|
|
439
|
+
return GraphqlYoga$1.createSchema({
|
|
440
|
+
typeDefs: docs,
|
|
441
|
+
resolvers: resolverMaps
|
|
442
|
+
});
|
|
443
|
+
} catch (raw_e) {
|
|
444
|
+
let e = Primitive_exceptions.internalToException(raw_e);
|
|
445
|
+
return Stdlib_JsError.throwWithMessage(`Cross-plugin schema merge failed (mirrors AWS MERGE_FAILED): ` + exnMessage(e));
|
|
446
|
+
}
|
|
271
447
|
}
|
|
272
448
|
|
|
273
449
|
function start(portOpt, param, param$1) {
|
|
274
450
|
let port = portOpt !== undefined ? portOpt : 4000;
|
|
275
451
|
let match = buildNodeResolver();
|
|
276
452
|
if (match !== undefined) {
|
|
277
|
-
queryResolvers
|
|
453
|
+
bucketFor(platformScope).queryResolvers[match[0]] = match[1];
|
|
278
454
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
resolvers["Mutation"] = mutationResolvers.contents;
|
|
282
|
-
if (Object.keys(subscriptionResolvers.contents).length !== 0) {
|
|
283
|
-
resolvers["Subscription"] = subscriptionResolvers.contents;
|
|
284
|
-
}
|
|
285
|
-
let sdl = buildSdl();
|
|
286
|
-
lastFullSdl.contents = sdl;
|
|
287
|
-
let schema = GraphqlYoga.createSchema({
|
|
288
|
-
typeDefs: sdl,
|
|
289
|
-
resolvers: resolvers
|
|
290
|
-
});
|
|
455
|
+
lastFullSdl.contents = buildSdl();
|
|
456
|
+
let schema = composeSchema();
|
|
291
457
|
activeSchema.contents = Primitive_option.some(schema);
|
|
292
|
-
let
|
|
458
|
+
let yogaLogging_debug = a => {
|
|
459
|
+
if (debug) {
|
|
460
|
+
return log.debug("GraphQL:Domain", undefined, GraphqlYoga.logArgToString(a));
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
let yogaLogging_info = a => {
|
|
464
|
+
if (debug) {
|
|
465
|
+
return log.info("GraphQL:Domain", undefined, GraphqlYoga.logArgToString(a));
|
|
466
|
+
}
|
|
467
|
+
};
|
|
468
|
+
let yogaLogging_warn = a => log.warn("GraphQL:Domain", undefined, GraphqlYoga.logArgToString(a));
|
|
469
|
+
let yogaLogging_error = a => log.error("GraphQL:Domain", undefined, GraphqlYoga.logArgToString(a));
|
|
470
|
+
let yogaLogging = {
|
|
471
|
+
debug: yogaLogging_debug,
|
|
472
|
+
info: yogaLogging_info,
|
|
473
|
+
warn: yogaLogging_warn,
|
|
474
|
+
error: yogaLogging_error
|
|
475
|
+
};
|
|
476
|
+
let yoga = GraphqlYoga$1.createYoga({
|
|
293
477
|
schema: schema,
|
|
294
478
|
graphiql: true,
|
|
295
|
-
logging:
|
|
479
|
+
logging: yogaLogging,
|
|
296
480
|
maskedErrors: !debug,
|
|
297
481
|
context: Auth_GraphqlContext$ReventlessLocal.buildAuthContext
|
|
298
482
|
});
|
|
@@ -319,64 +503,9 @@ function stop() {
|
|
|
319
503
|
}
|
|
320
504
|
}
|
|
321
505
|
|
|
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
506
|
function reset() {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
subscriptionResolvers.contents = {};
|
|
376
|
-
mutationFields.contents = [];
|
|
377
|
-
queryFields.contents = [];
|
|
378
|
-
subscriptionFields.contents = [];
|
|
379
|
-
typeDefinitions.contents = [];
|
|
507
|
+
buckets.contents = {};
|
|
508
|
+
currentScope.contents = platformScope;
|
|
380
509
|
nodeTypeRegistry.contents = {};
|
|
381
510
|
nodeResolverCallback.contents = undefined;
|
|
382
511
|
activeSchema.contents = undefined;
|
|
@@ -389,8 +518,8 @@ function getRegisteredSdl() {
|
|
|
389
518
|
|
|
390
519
|
function getRegisteredResolverNames() {
|
|
391
520
|
return {
|
|
392
|
-
mutations: Object.keys(mutationResolvers
|
|
393
|
-
queries: Object.keys(queryResolvers
|
|
521
|
+
mutations: orderedBuckets().flatMap(param => Object.keys(param[1].mutationResolvers)),
|
|
522
|
+
queries: orderedBuckets().flatMap(param => Object.keys(param[1].queryResolvers))
|
|
394
523
|
};
|
|
395
524
|
}
|
|
396
525
|
|
|
@@ -423,10 +552,11 @@ function extractFieldName(sdlField) {
|
|
|
423
552
|
}
|
|
424
553
|
|
|
425
554
|
function diagnostics() {
|
|
426
|
-
let
|
|
427
|
-
let
|
|
428
|
-
let
|
|
429
|
-
let
|
|
555
|
+
let allBuckets = orderedBuckets().map(param => param[1]);
|
|
556
|
+
let mutFieldNames = allBuckets.flatMap(b => b.mutationFields).map(extractFieldName).filter(n => n !== "_noop");
|
|
557
|
+
let queryFieldNames = allBuckets.flatMap(b => b.queryFields).map(extractFieldName).filter(n => n !== "_noop");
|
|
558
|
+
let mutResolverNames = allBuckets.flatMap(b => Object.keys(b.mutationResolvers));
|
|
559
|
+
let queryResolverNames = allBuckets.flatMap(b => Object.keys(b.queryResolvers));
|
|
430
560
|
let mismatches = [];
|
|
431
561
|
let mutResolverSet = new Set(mutResolverNames);
|
|
432
562
|
mutFieldNames.forEach(name => {
|
|
@@ -456,7 +586,17 @@ function diagnostics() {
|
|
|
456
586
|
return;
|
|
457
587
|
}
|
|
458
588
|
});
|
|
459
|
-
let
|
|
589
|
+
let seenTypeBlocks = new Set();
|
|
590
|
+
let typeNames = [];
|
|
591
|
+
allBuckets.forEach(b => {
|
|
592
|
+
b.typeDefinitions.forEach(t => {
|
|
593
|
+
if (!seenTypeBlocks.has(t)) {
|
|
594
|
+
seenTypeBlocks.add(t);
|
|
595
|
+
typeNames.push(GraphQL_Stitcher$ReventlessCore.extractLeadingName(t));
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
});
|
|
599
|
+
});
|
|
460
600
|
return {
|
|
461
601
|
registeredTypeDefinitions: typeNames,
|
|
462
602
|
registeredMutationFields: mutFieldNames,
|
|
@@ -535,13 +675,16 @@ export {
|
|
|
535
675
|
buildAuthContext,
|
|
536
676
|
encodeGlobalId,
|
|
537
677
|
decodeGlobalId,
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
678
|
+
platformScope,
|
|
679
|
+
makeBucket,
|
|
680
|
+
buckets,
|
|
681
|
+
currentScope,
|
|
682
|
+
bucketFor,
|
|
683
|
+
currentBucket,
|
|
684
|
+
setScope,
|
|
685
|
+
resetScope,
|
|
686
|
+
relabelScope,
|
|
687
|
+
orderedBuckets,
|
|
545
688
|
registerMutations,
|
|
546
689
|
registerQueries,
|
|
547
690
|
registerSubscriptions,
|
|
@@ -557,10 +700,15 @@ export {
|
|
|
557
700
|
activeServer,
|
|
558
701
|
activeSchema,
|
|
559
702
|
lastFullSdl,
|
|
703
|
+
assembleBucketSdl,
|
|
704
|
+
buildScopeSdl,
|
|
560
705
|
buildSdl,
|
|
706
|
+
exnMessage,
|
|
707
|
+
scopeResolverMap,
|
|
708
|
+
scopeHasFields,
|
|
709
|
+
composeSchema,
|
|
561
710
|
start,
|
|
562
711
|
stop,
|
|
563
|
-
rebuildSchema,
|
|
564
712
|
reset,
|
|
565
713
|
getRegisteredSdl,
|
|
566
714
|
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,
|