@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.
@@ -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 GraphqlYoga from "graphql-yoga";
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 mutationResolvers = {
144
- contents: {}
145
- };
149
+ let platformScope = "platform";
146
150
 
147
- let queryResolvers = {
148
- contents: {}
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 subscriptionResolvers = {
163
+ let buckets = {
152
164
  contents: {}
153
165
  };
154
166
 
155
- let mutationFields = {
156
- contents: []
167
+ let currentScope = {
168
+ contents: platformScope
157
169
  };
158
170
 
159
- let queryFields = {
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
- let subscriptionFields = {
164
- contents: []
165
- };
181
+ function currentBucket() {
182
+ return bucketFor(currentScope.contents);
183
+ }
166
184
 
167
- let typeDefinitions = {
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
- mutationFields.contents = mutationFields.contents.concat(sdlFields);
238
+ let b = bucketFor(currentScope.contents);
239
+ b.mutationFields = b.mutationFields.concat(sdlFields);
173
240
  Object.entries(resolvers).forEach(param => {
174
- mutationResolvers.contents[param[0]] = param[1];
241
+ b.mutationResolvers[param[0]] = param[1];
175
242
  });
176
243
  }
177
244
 
178
245
  function registerQueries(sdlFields, resolvers) {
179
- queryFields.contents = queryFields.contents.concat(sdlFields);
246
+ let b = bucketFor(currentScope.contents);
247
+ b.queryFields = b.queryFields.concat(sdlFields);
180
248
  Object.entries(resolvers).forEach(param => {
181
- queryResolvers.contents[param[0]] = param[1];
249
+ b.queryResolvers[param[0]] = param[1];
182
250
  });
183
251
  }
184
252
 
185
253
  function registerSubscriptions(sdlFields, resolvers) {
186
- subscriptionFields.contents = subscriptionFields.contents.concat(sdlFields);
254
+ let b = bucketFor(currentScope.contents);
255
+ b.subscriptionFields = b.subscriptionFields.concat(sdlFields);
187
256
  Object.entries(resolvers).forEach(param => {
188
- subscriptionResolvers.contents[param[0]] = param[1];
257
+ b.subscriptionResolvers[param[0]] = param[1];
189
258
  });
190
259
  }
191
260
 
192
261
  function getMutationResolver(fieldName) {
193
- return mutationResolvers.contents[fieldName];
262
+ return Stdlib_Array.findMap(Object.values(buckets.contents), b => b.mutationResolvers[fieldName]);
194
263
  }
195
264
 
196
265
  function getQueryResolver(fieldName) {
197
- return queryResolvers.contents[fieldName];
266
+ return Stdlib_Array.findMap(Object.values(buckets.contents), b => b.queryResolvers[fieldName]);
198
267
  }
199
268
 
200
269
  function registerTypes(sdlTypes) {
201
- typeDefinitions.contents = typeDefinitions.contents.concat(sdlTypes);
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 typesSdl = typeDefinitions.contents.length !== 0 ? typeDefinitions.contents.join("\n\n") : "";
260
- let mutations = mutationFields.contents.length !== 0 ? mutationFields.contents.join("\n") : " _noop: String";
261
- let queries = queryFields.contents.length !== 0 ? queryFields.contents.join("\n") : " _noop: String";
262
- let queriesMutationsSdl = `type Query {
263
- ` + queries + `
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
- type Mutation {
266
- ` + mutations + `
267
- }`;
268
- let subscriptionsSdl = subscriptionFields.contents.length !== 0 ? `\n\ntype Subscription {\n` + subscriptionFields.contents.join("\n") + `\n}` : "";
269
- let base = typesSdl.length > 0 ? typesSdl + "\n\n" + queriesMutationsSdl : queriesMutationsSdl;
270
- return base + subscriptionsSdl;
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.contents[match[0]] = match[1];
453
+ bucketFor(platformScope).queryResolvers[match[0]] = match[1];
278
454
  }
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;
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 yoga = GraphqlYoga.createYoga({
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: debug,
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
- mutationResolvers.contents = {};
374
- queryResolvers.contents = {};
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.contents),
393
- queries: Object.keys(queryResolvers.contents)
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 mutFieldNames = mutationFields.contents.map(extractFieldName).filter(n => n !== "_noop");
427
- let queryFieldNames = queryFields.contents.map(extractFieldName).filter(n => n !== "_noop");
428
- let mutResolverNames = Object.keys(mutationResolvers.contents);
429
- let queryResolverNames = Object.keys(queryResolvers.contents);
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 typeNames = typeDefinitions.contents.map(GraphQL_Stitcher$ReventlessCore.extractLeadingName);
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
- mutationResolvers,
539
- queryResolvers,
540
- subscriptionResolvers,
541
- mutationFields,
542
- queryFields,
543
- subscriptionFields,
544
- typeDefinitions,
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 mutationResolvers = DomainGraphQL_Server$ReventlessLocal.mutationResolvers;
29
+ let platformScope = DomainGraphQL_Server$ReventlessLocal.platformScope;
30
30
 
31
- let queryResolvers = DomainGraphQL_Server$ReventlessLocal.queryResolvers;
31
+ let makeBucket = DomainGraphQL_Server$ReventlessLocal.makeBucket;
32
32
 
33
- let subscriptionResolvers = DomainGraphQL_Server$ReventlessLocal.subscriptionResolvers;
33
+ let buckets = DomainGraphQL_Server$ReventlessLocal.buckets;
34
34
 
35
- let mutationFields = DomainGraphQL_Server$ReventlessLocal.mutationFields;
35
+ let currentScope = DomainGraphQL_Server$ReventlessLocal.currentScope;
36
36
 
37
- let queryFields = DomainGraphQL_Server$ReventlessLocal.queryFields;
37
+ let bucketFor = DomainGraphQL_Server$ReventlessLocal.bucketFor;
38
38
 
39
- let subscriptionFields = DomainGraphQL_Server$ReventlessLocal.subscriptionFields;
39
+ let currentBucket = DomainGraphQL_Server$ReventlessLocal.currentBucket;
40
40
 
41
- let typeDefinitions = DomainGraphQL_Server$ReventlessLocal.typeDefinitions;
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
- mutationResolvers,
117
- queryResolvers,
118
- subscriptionResolvers,
119
- mutationFields,
120
- queryFields,
121
- subscriptionFields,
122
- typeDefinitions,
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,