@fougere/adapter-graphql 0.2.0-alpha.2 → 0.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pothos.js CHANGED
@@ -1,16 +1,12 @@
1
+ import { upperFirst, Role } from '@fougere/schema';
1
2
  import { Anatomy, Schema } from '@fougere/schema';
2
- import { boundaryOf, fieldsOf, inputFields, resolveBoundary, sourceNameOf } from '@fougere/schema';
3
- // Mirrors core's resolveIsReadOp (this package stays core-free, same as OperationMeta
4
- // above). Scheduled to die with the handler-kind plan (docs/notes/handler-kind.md).
5
- const READ_PREFIXES = ['list', 'find', 'get', 'search', 'count', 'exists', 'stats'];
6
- function resolveIsReadOp(name, overrides) {
7
- const kind = overrides?.[name]?.kind;
8
- if (kind)
9
- return kind === 'query';
10
- return READ_PREFIXES.some((p) => name.startsWith(p));
11
- }
12
- function capitalize(s) {
13
- return s[0].toUpperCase() + s.slice(1);
3
+ import { Boundary, Card, Lifecycle, schemaOf, Visibility } from '@fougere/schema';
4
+ function operationIsQuery(name, resolved) {
5
+ if (!resolved) {
6
+ throw new Error(`GraphQL cannot project '${name}' without its resolved operation kind. `
7
+ + 'Pass the EffectiveOperation table produced by core.');
8
+ }
9
+ return resolved === 'query';
14
10
  }
15
11
  function pluralize(name) {
16
12
  return name.endsWith('y') ? name.slice(0, -1) + 'ies' : name + 's';
@@ -69,8 +65,8 @@ function fieldToGraphQL(t, field, fieldName, enumFor) {
69
65
  },
70
66
  });
71
67
  case 'array': {
72
- // value list (`list(text())`) liste GraphQL du scalaire des items;
73
- // items objets liste de Strings JSON (même règle que 'object')
68
+ // A value list (`list(text())`) becomes a GraphQL list of the item scalar; a list
69
+ // of objects becomes a list of JSON strings the same rule 'object' follows.
74
70
  const items = Anatomy.of(shape.items).base;
75
71
  const resolve = (parent) => parent[fieldName] ?? (nullable ? null : []);
76
72
  switch (items?.type) {
@@ -96,7 +92,7 @@ function fieldToGraphQL(t, field, fieldName, enumFor) {
96
92
  nullable,
97
93
  resolve: (parent) => {
98
94
  const val = parent[fieldName];
99
- return val != null ? resolveBoundary(field).encode(val) : null;
95
+ return val != null ? Boundary.of(field).encode(val) : null;
100
96
  },
101
97
  });
102
98
  }
@@ -124,8 +120,9 @@ function nestedInputType(builder, shape, name) {
124
120
  const known = perBuilder.get(name);
125
121
  if (known)
126
122
  return known;
127
- const properties = (shape.properties ?? {});
128
- const required = new Set((shape.required ?? []));
123
+ // Only an object shape has these two, and only an object shape reaches here.
124
+ const properties = 'properties' in shape ? (shape.properties ?? {}) : {};
125
+ const required = new Set('required' in shape ? shape.required ?? [] : []);
129
126
  const type = builder.inputType(name, {
130
127
  fields: (t) => {
131
128
  const out = {};
@@ -167,7 +164,7 @@ const enumTypes = new WeakMap();
167
164
  */
168
165
  const GRAPHQL_NAME = /^[_A-Za-z][_0-9A-Za-z]*$/;
169
166
  function enumValuesOf(shape) {
170
- const values = shape?.enum;
167
+ const values = shape && 'enum' in shape ? shape.enum : undefined;
171
168
  if (!Array.isArray(values) || values.length === 0)
172
169
  return undefined;
173
170
  if (!values.every((v) => typeof v === 'string' && GRAPHQL_NAME.test(v)))
@@ -197,14 +194,14 @@ function enumTypeFor(builder, name, values) {
197
194
  }
198
195
  /** `Post` + `status` → `PostStatus`. Undefined when the schema has no name to build on. */
199
196
  function enumNameFor(owner, fieldName) {
200
- return owner ? `${owner}${capitalize(fieldName)}` : undefined;
197
+ return owner ? `${owner}${upperFirst(fieldName)}` : undefined;
201
198
  }
202
199
  function fieldToInput(t, field, patch, nested, enumFor) {
203
200
  // Required = the presence axis, projected onto GraphQL's single knob: the
204
201
  // caller must supply it (no `lifecycle.create` rule answers absence), null is
205
202
  // not legal, and the view is not in patch mode (a patch omits freely).
206
203
  const { base: shape, nullable } = Anatomy.of(field.shape);
207
- const required = !patch && !nullable && field.lifecycle?.create === undefined;
204
+ const required = !patch && !nullable && Lifecycle.of(field).requiredAtCreate;
208
205
  // The dual of the output side, and it must be the SAME type: an input left as `String`
209
206
  // would refuse nothing the enum refuses, and a client could not hand back the value a
210
207
  // query just gave it.
@@ -325,12 +322,13 @@ export function registerObjectType(builder, name, fieldDefs) {
325
322
  */
326
323
  export function registerType(builder, config) {
327
324
  // A live class or a card — an adapter needs the fields, never the constructor.
328
- const fields = fieldsOf(config.entity);
325
+ const schema = schemaOf(config.entity);
326
+ const fields = schema.getFields();
329
327
  const exclude = new Set(config.exclude ?? []);
330
328
  // Who owns the enum names: the schema a view came from, so `PostCard.status` and
331
329
  // `CreatePostInput.status` land on the one `PostStatus`. A card that travelled carries no
332
330
  // class name — the GraphQL type name is then the best owner available.
333
- const enumOwner = sourceNameOf(config.entity) ?? config.name;
331
+ const enumOwner = Card.fromSchema(schema).descriptor.title ?? config.name;
334
332
  return builder.objectRef(config.name).implement({
335
333
  fields: (t) => {
336
334
  const result = {};
@@ -338,13 +336,13 @@ export function registerType(builder, config) {
338
336
  if (exclude.has(fieldName))
339
337
  continue;
340
338
  // Skip 'many' fields — handled by relations
341
- if (field.role?.relation?.kind === 'many')
339
+ if (Role.of(field).isCollection)
342
340
  continue;
343
341
  // Skip fields that have a relation override
344
342
  if (config.relations?.[fieldName])
345
343
  continue;
346
344
  // Write-only (boundary out: 'closed', e.g. password): never emitted
347
- if (boundaryOf(field).out === 'closed')
345
+ if (Boundary.of(field).writeOnly)
348
346
  continue;
349
347
  result[fieldName] = fieldToGraphQL(t, field, fieldName, (values) => {
350
348
  const name = enumNameFor(enumOwner, fieldName);
@@ -394,7 +392,7 @@ export function registerType(builder, config) {
394
392
  const meta = metaMap.get(name);
395
393
  const nullable = meta?.nullable ?? true;
396
394
  // READ the value, never recompute it. The façade applies the presenter on every
397
- // door (`presentEgress`), so the row arrives carrying its computed fields; calling
395
+ // door (`PresenterExecutor`), so the row arrives carrying its computed fields; calling
398
396
  // the method again ran the work twice — and once the method started receiving the
399
397
  // PAGE rather than one row, the second call was handed a single object and threw
400
398
  // `posts.map is not a function`. What GraphQL owes the field is its declaration.
@@ -447,7 +445,17 @@ export function registerType(builder, config) {
447
445
  });
448
446
  }
449
447
  /**
450
- * Enregistre un input GraphQL (écriture) depuis un SchemaView.
448
+ * The GraphQL input for EXACTLY this view — or none, when the view asks for nothing.
449
+ *
450
+ * The caller derives the view and this projects it; it holds no policy of its own. What
451
+ * a client may supply at CREATION is `Visibility.input`, which the op path applies for
452
+ * create/update alone — `publish(input: Post)` must still name the post.
453
+ *
454
+ * Two things are dropped here because GraphQL cannot carry them, not because of any
455
+ * rule: a collection has no column to send, and `boundary in: 'closed'` is refused from
456
+ * every client. A view left with nothing after that gets `undefined` rather than an
457
+ * input object with zero fields, which is invalid GraphQL and takes the WHOLE schema
458
+ * down — every other type included.
451
459
  *
452
460
  * ```ts
453
461
  * const CreateProductInput = registerInput(builder, {
@@ -457,10 +465,13 @@ export function registerType(builder, config) {
457
465
  * ```
458
466
  */
459
467
  export function registerInput(builder, config) {
460
- const fields = config.schema.getFields();
468
+ const fields = Object.fromEntries(Object.entries(config.schema.getFields())
469
+ .filter(([, field]) => !Role.of(field).isCollection && !Boundary.of(field).readOnly));
470
+ if (Object.keys(fields).length === 0)
471
+ return undefined;
461
472
  // The view's SOURCE, not the input's name: `CreatePostInput` derives from `Post`, and its
462
473
  // `status` must be the same `PostStatus` the query emits.
463
- const enumOwner = sourceNameOf(config.schema);
474
+ const enumOwner = Card.fromSchema(config.schema).descriptor.title;
464
475
  // Input-field omissibility is a projection of the view's MODE (partial() → patch),
465
476
  // never of forged per-field flags — the fields themselves stay untouched.
466
477
  const patch = config.schema.getOpts().patch ?? false;
@@ -468,13 +479,7 @@ export function registerInput(builder, config) {
468
479
  fields: (t) => {
469
480
  const result = {};
470
481
  for (const [fieldName, field] of Object.entries(fields)) {
471
- // Skip virtual fields
472
- if (field.role?.relation?.kind === 'many')
473
- continue;
474
- // Read-only (boundary in: 'closed'): never accepted from a client
475
- if (boundaryOf(field).in === 'closed')
476
- continue;
477
- result[fieldName] = fieldToInput(t, field, patch, (shape, suffix) => nestedInputType(builder, shape, `${config.name}${capitalize(fieldName)}${suffix}`), (values) => {
482
+ result[fieldName] = fieldToInput(t, field, patch, (shape, suffix) => nestedInputType(builder, shape, `${config.name}${upperFirst(fieldName)}${suffix}`), (values) => {
478
483
  const name = enumNameFor(enumOwner, fieldName);
479
484
  return name ? enumTypeFor(builder, name, values) : undefined;
480
485
  });
@@ -484,6 +489,42 @@ export function registerInput(builder, config) {
484
489
  });
485
490
  }
486
491
  // ─── GraphQL field naming ────────────────────────
492
+ /**
493
+ * Who holds each root field — a GraphQL root is FLAT, and two ops can want one name.
494
+ *
495
+ * Refused here rather than left to Pothos: it answers `Duplicate field ofBook on
496
+ * Mutation` with no file, no handler and no remedy, and it takes the whole schema down
497
+ * — every other type included. The five CRUD names weave the entity in (`createBook`),
498
+ * so they never meet this; a custom op keeps its method name, which is the author's and
499
+ * says nothing about its subject. Four handlers named `ofBook` in one measured app.
500
+ *
501
+ * Nothing is renamed automatically: `chapterOfBook` would be this package's choice of
502
+ * the app's public vocabulary, and adding an entity in some other frond would silently
503
+ * rename a field already published.
504
+ */
505
+ const claimed = new WeakMap();
506
+ function claimRootField(builder, fieldName, origin) {
507
+ let held = claimed.get(builder);
508
+ if (!held) {
509
+ held = new Map();
510
+ claimed.set(builder, held);
511
+ }
512
+ const first = held.get(fieldName);
513
+ if (first !== undefined && first !== origin) {
514
+ const opName = origin.split('.').pop();
515
+ // `operations:` is keyed by op name PER FROND, so it cannot tell two handlers of the
516
+ // same frond apart. Saying otherwise would send the author to a fix that cannot work.
517
+ const remedy = first.split('/')[0] === origin.split('/')[0]
518
+ ? `Both are in the same frond, where \`operations:\` is keyed by op name and cannot `
519
+ + `tell them apart — rename one of the methods.`
520
+ : `Rename one of the methods, or name the field in the frond.config.ts of whichever `
521
+ + `should yield:\n operations: { ${opName}: { graphql: '…' } }`;
522
+ throw new Error(`two operations claim the GraphQL root field \`${fieldName}\`:\n`
523
+ + ` ${first}\n ${origin}\n`
524
+ + `A root field is global, so one of them has to give. ${remedy}`);
525
+ }
526
+ held.set(fieldName, origin);
527
+ }
487
528
  function graphqlFieldName(opName, entityName) {
488
529
  const nameLower = entityName.charAt(0).toLowerCase() + entityName.slice(1);
489
530
  const namePlural = pluralize(nameLower);
@@ -499,24 +540,47 @@ function graphqlFieldName(opName, entityName) {
499
540
  }
500
541
  }
501
542
  function buildArgsFromSignature(sig, meta, builder, opName, entityName) {
502
- // Classify each param: primitive, body (object/input), or skip
543
+ // Classify from the façade's binding plan when it exists. A collector is not a
544
+ // GraphQL argument just because its value has an entity type: it is supplied by the
545
+ // invocation context, and publishing it would let callers impersonate that value.
503
546
  const paramPlan = [];
547
+ const bindings = new Map((meta.binding ?? []).map((binding) => [binding.name, binding]));
504
548
  for (const param of sig.params) {
505
549
  const typeName = param.type.name;
550
+ const binding = bindings.get(param.name);
551
+ if (binding) {
552
+ switch (binding.source.kind) {
553
+ case 'collector':
554
+ case 'context':
555
+ case 'fact':
556
+ paramPlan.push({ name: param.name, kind: 'skip', typeName, optional: true, nullable: param.type.nullable === true });
557
+ continue;
558
+ case 'query':
559
+ paramPlan.push({ name: param.name, kind: 'pagination', typeName, optional: binding.optional, nullable: param.type.nullable === true });
560
+ continue;
561
+ case 'param':
562
+ paramPlan.push({ name: param.name, kind: 'primitive', typeName, optional: binding.optional, nullable: param.type.nullable === true });
563
+ continue;
564
+ case 'body':
565
+ paramPlan.push({ name: param.name, kind: 'body', typeName, optional: binding.optional, nullable: param.type.nullable === true });
566
+ continue;
567
+ }
568
+ }
569
+ // Compatibility for callers constructing OperationMeta by hand, without core's plan.
506
570
  if (SKIP_TYPES.has(typeName)) {
507
- paramPlan.push({ name: param.name, kind: 'skip', typeName, optional: true });
571
+ paramPlan.push({ name: param.name, kind: 'skip', typeName, optional: true, nullable: param.type.nullable === true });
508
572
  continue;
509
573
  }
510
574
  if (typeName === 'ListOptions') {
511
- paramPlan.push({ name: param.name, kind: 'pagination', typeName, optional: true });
575
+ paramPlan.push({ name: param.name, kind: 'pagination', typeName, optional: true, nullable: param.type.nullable === true });
512
576
  continue;
513
577
  }
514
578
  if (typeName in PRIMITIVES) {
515
- paramPlan.push({ name: param.name, kind: 'primitive', typeName, optional: param.optional ?? false });
579
+ paramPlan.push({ name: param.name, kind: 'primitive', typeName, optional: param.optional ?? false, nullable: param.type.nullable === true });
516
580
  continue;
517
581
  }
518
582
  // Object/entity param → body
519
- paramPlan.push({ name: param.name, kind: 'body', typeName, optional: param.optional ?? false });
583
+ paramPlan.push({ name: param.name, kind: 'body', typeName, optional: param.optional ?? false, nullable: param.type.nullable === true });
520
584
  }
521
585
  // Register input type if needed
522
586
  let inputRef;
@@ -524,13 +588,15 @@ function buildArgsFromSignature(sig, meta, builder, opName, entityName) {
524
588
  if (bodyParam && meta.input) {
525
589
  // Only strip non-client fields for create/update — other ops may legitimately use them (e.g. publish(id))
526
590
  const isMutation = opName === 'create' || opName === 'update';
527
- const opInputFields = isMutation ? inputFields(meta.input.getFields()) : meta.input.getFields();
528
- const inputName = `${capitalize(opName)}${entityName}Input`;
591
+ const opInputFields = isMutation ? Visibility.of(meta.input.getFields()).input : meta.input.getFields();
592
+ const inputName = `${upperFirst(opName)}${entityName}Input`;
593
+ // `undefined` when the view asks for nothing, and `argsDef` already guards on it —
594
+ // the op then takes no input, which is the truth.
529
595
  inputRef = registerInput(builder, {
530
596
  name: inputName,
531
597
  // A real schema over those fields, not a forged stand-in: an update input is the
532
598
  // same fields seen through the patch mode.
533
- schema: Schema.of(opInputFields, undefined, undefined, { patch: opName === 'update' }),
599
+ schema: Schema.of({ fields: opInputFields, opts: { patch: opName === 'update' } }),
534
600
  });
535
601
  }
536
602
  const hasPagination = paramPlan.some((p) => p.kind === 'pagination');
@@ -538,11 +604,14 @@ function buildArgsFromSignature(sig, meta, builder, opName, entityName) {
538
604
  const args = {};
539
605
  for (const p of paramPlan) {
540
606
  if (p.kind === 'primitive') {
541
- args[p.name] = PRIMITIVES[p.typeName](t, !p.optional);
607
+ // GraphQL's NonNull means both "present" and "not null". A `T | null`
608
+ // parameter therefore cannot use it: the resolver still preserves an explicit
609
+ // null, and core remains the authority on the TypeScript invocation.
610
+ args[p.name] = PRIMITIVES[p.typeName](t, !p.optional && !p.nullable);
542
611
  }
543
612
  }
544
613
  if (bodyParam && inputRef) {
545
- args.input = t.arg({ type: inputRef, required: !bodyParam.optional });
614
+ args.input = t.arg({ type: inputRef, required: !bodyParam.optional && !bodyParam.nullable });
546
615
  }
547
616
  if (hasPagination) {
548
617
  args.limit = t.arg.int();
@@ -559,7 +628,10 @@ function buildArgsFromSignature(sig, meta, builder, opName, entityName) {
559
628
  let body = undefined;
560
629
  for (const p of paramPlan) {
561
630
  if (p.kind === 'primitive') {
562
- if (args[p.name] != null)
631
+ // graphql-js omits an omitted optional argument and keeps an explicitly supplied
632
+ // null. Test undefined alone: `!= null` erased the second case and made
633
+ // `foo?: T | null` indistinguishable from `foo?: T`.
634
+ if (args[p.name] !== undefined)
563
635
  params[p.name] = args[p.name];
564
636
  }
565
637
  else if (p.kind === 'body') {
@@ -569,7 +641,7 @@ function buildArgsFromSignature(sig, meta, builder, opName, entityName) {
569
641
  // Collect pagination args into body (ListOptions)
570
642
  const options = {};
571
643
  for (const key of ['limit', 'offset', 'page', 'after', 'orderBy', 'order']) {
572
- if (args[key] != null)
644
+ if (args[key] !== undefined)
573
645
  options[key] = args[key];
574
646
  }
575
647
  body = options;
@@ -608,7 +680,7 @@ function resolveOutputType(sig, config, meta, opName) {
608
680
  if (rt?.array) {
609
681
  return { type: [type], isList: false, nullable: false };
610
682
  }
611
- return { type, isList: false, nullable: rt?.nullable ?? false };
683
+ return { type, isList: false, nullable: rt?.nullable === true || rt?.undefined === true };
612
684
  }
613
685
  // ─── registerOperations ──────────────────────────
614
686
  /**
@@ -646,12 +718,15 @@ export function registerOperations(builder, config) {
646
718
  });
647
719
  }
648
720
  for (const [opName, meta] of config.operations) {
649
- if (typeof config.facade[opName] !== 'function')
650
- continue;
721
+ if (typeof config.facade[opName] !== 'function') {
722
+ throw new Error(`GraphQL EffectiveOperation table exposes '${opName}' but its facade does not.`);
723
+ }
651
724
  const sig = meta.signature;
652
725
  if (!sig)
653
726
  continue;
654
- const fieldName = graphqlFieldName(opName, config.name);
727
+ const fieldName = config.operationsOverrides?.[opName]?.graphql
728
+ ?? graphqlFieldName(opName, config.name);
729
+ claimRootField(builder, fieldName, `${config.origin ?? config.name}.${opName}`);
655
730
  const { argsDef, buildInvocation } = buildArgsFromSignature(sig, meta, builder, opName, config.name);
656
731
  // Output type — what the op declares, else the entity's.
657
732
  const output = resolveOutputType(sig, config, meta, opName);
@@ -685,7 +760,7 @@ export function registerOperations(builder, config) {
685
760
  },
686
761
  }),
687
762
  });
688
- if (resolveIsReadOp(opName, config.operationsOverrides)) {
763
+ if (operationIsQuery(opName, meta.kind)) {
689
764
  builder.queryFields(fieldDef);
690
765
  }
691
766
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"pothos.js","sourceRoot":"","sources":["../src/pothos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pothos.js","sourceRoot":"","sources":["../src/pothos.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fougere/adapter-graphql",
3
- "version": "0.2.0-alpha.2",
3
+ "version": "0.4.0-alpha.0",
4
4
  "description": "Entity → GraphQL types, inputs and CRUD, through Pothos.",
5
5
  "keywords": [
6
6
  "fougere",
@@ -30,11 +30,12 @@
30
30
  }
31
31
  },
32
32
  "files": [
33
- "dist"
33
+ "dist",
34
+ "src"
34
35
  ],
35
36
  "dependencies": {
36
- "@fougere/schema": "0.2.0-alpha.2",
37
- "@fougere/http": "0.2.0-alpha.2"
37
+ "@fougere/schema": "0.4.0-alpha.0",
38
+ "@fougere/http": "0.4.0-alpha.0"
38
39
  },
39
40
  "peerDependencies": {
40
41
  "@pothos/core": ">=4.0.0",
package/src/app.ts ADDED
@@ -0,0 +1,73 @@
1
+ import SchemaBuilder from '@pothos/core';
2
+ import { graphql, type ExecutionResult, type GraphQLSchema } from 'graphql';
3
+ import { registerAll } from './auto-register.js';
4
+
5
+ /**
6
+ * What a GraphQL request carries, whatever host read it.
7
+ *
8
+ * The same shape a door hands in, so a host translates its own request once and this
9
+ * package never learns what an HTTP framework is.
10
+ */
11
+ export interface AppQuery {
12
+ query: string;
13
+ variables?: Record<string, unknown>;
14
+ operationName?: string;
15
+ /** The audience, when the door was mounted per surface. */
16
+ surface?: string;
17
+ /** What the server resolved about the caller — never what the wire claimed. */
18
+ state?: Record<string, unknown>;
19
+ }
20
+
21
+ /** The shape this package needs of an app: its fronds, and how to reach a façade. */
22
+ type AppLike = Parameters<typeof registerAll>[1];
23
+
24
+ /** One executable schema per (app, audience) — building it walks every entity. */
25
+ const schemas = new WeakMap<object, Map<string, GraphQLSchema>>();
26
+
27
+ /**
28
+ * The app's schema, derived and kept.
29
+ *
30
+ * Every line of the derivation is convention — a builder, the two root types, and the
31
+ * entities the app already scanned — so nothing an app could usefully say differently.
32
+ * Declaring `adapters: { graphql: true }` is the whole configuration.
33
+ *
34
+ * It lives HERE, beside Pothos, and not in the host package that used to hold it. The
35
+ * separation had a cost no comment could pay: `graphql` guards its types with
36
+ * `instanceOf`, so a schema built by one loaded copy is refused by another with *"from
37
+ * another module or realm"*. Building and executing across a package boundary made two
38
+ * copies possible; on this side of it there is one.
39
+ */
40
+ export function schemaOf(app: AppLike, surface?: string): GraphQLSchema {
41
+ const perApp = schemas.get(app as object) ?? new Map<string, GraphQLSchema>();
42
+ schemas.set(app as object, perApp);
43
+
44
+ const key = surface ?? '';
45
+ const built = perApp.get(key);
46
+ if (built) return built;
47
+
48
+ const builder = new SchemaBuilder({});
49
+ builder.queryType({});
50
+ builder.mutationType({});
51
+ registerAll(builder as never, app, surface ? { surface } : undefined);
52
+
53
+ const schema = builder.toSchema() as GraphQLSchema;
54
+ perApp.set(key, schema);
55
+ return schema;
56
+ }
57
+
58
+ /**
59
+ * Execute a query against the app's own operations.
60
+ *
61
+ * Returns the GraphQL result as it is: a GraphQL error is not a transport error, and the
62
+ * errors ride in the body where a client is required to look for them. Turning that into
63
+ * a status belongs to whichever door asked.
64
+ */
65
+ export async function executeOn(app: AppLike, request: AppQuery): Promise<ExecutionResult> {
66
+ return graphql({
67
+ schema: schemaOf(app, request.surface),
68
+ source: request.query,
69
+ variableValues: request.variables,
70
+ operationName: request.operationName,
71
+ contextValue: { state: request.state ?? {} },
72
+ });
73
+ }