Skip to content

Commit

Permalink
deploy: aef9280
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Mar 28, 2024
1 parent 79822a4 commit e7f86b3
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
14 changes: 7 additions & 7 deletions draft/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -157,15 +157,15 @@ <h1 data-source="spec/Section%201%20--%20Overview.md#L1"><span class="spec-secid
<p data-source="spec/Section%201%20--%20Overview.md#L7-L10">The <em>composite schema</em> presents itself as a regular <span class="spec-ref"><a href="https://spec.graphql.org/draft/#sec-Schema" data-name="graphql-schema" target="_blank">GraphQL schema</a></span>; the implementation details and complexities of the underlying distributed systems are not visible to clients, all observable behavior is the same as described by the <span class="spec-ref"><a href="https://spec.graphql.org/draft/" data-name="graphql-specification" target="_blank">GraphQL specification</a></span>.</p>
<p data-source="spec/Section%201%20--%20Overview.md#L12">The GraphQL Composite Schemas specification has a number of design principles:</p>
<ul>
<li data-source="spec/Section%201%20--%20Overview.md#L14-L20"><strong>Composable</strong>: Rather than defining each <em>source schema</em> in isolation and reshaping it to fit the <em>composite schema</em> later, this specification encourages developers to design the source schemas as part of a larger whole from the start. Each source schema defines the types and fields it is responsible for serving within the context of the larger schema, referencing and extending what is provided by other source schemas. The GraphQL Composite Schemas specification does not describe how to combine arbitrary schemas.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L22-L28"><strong>Collaborative</strong>: The GraphQL Composite Schemas specification is explicitly designed around team collaboration. By building on a principled composition model, it ensures that conflicts and inconsistencies are surfaced early and can be resolved before deployment. This allows many teams to contribute to a single schema without the danger of breaking it. The GraphQL Composite Schemas specification facilitates the coordinated effort of combining collaboratively designed source schemas into a single coherent composite schema.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L30-L36"><strong>Evolvable</strong>: A <em>composite schema</em> offers an integrated, product-centric API interface to clients. Each source <span class="spec-ref"><a href="https://spec.graphql.org/draft/#sec-Overview" data-name="graphql-service" target="_blank">GraphQL service</a></span> that underpins the composite schema should be able to evolve without disrupting these clients. Over time, the same functionality may be provided by a different combination of services, while the composite schemas interface must continue to support existing requests from all clients; source schema boundaries are therefore considered an implementation detail and should never be exposed to clients.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L38-L41"><strong>Explicitness</strong>: To make the composition process easier to understand and to avoid ambiguities that can lead to confusing failures as the system grows, the GraphQL Composite Schemas specification prefers to be explicit about intentions and minimize reliance on inference and convention.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L14-L21"><strong>Composable</strong>: Rather than defining each <em>source schema</em> in isolation and reshaping it to fit the <em>composite schema</em> later, this specification encourages developers to design the source schemas as part of a larger whole from the start. Each source schema defines the types and fields it is responsible for serving within the context of the larger schema, referencing and extending that which is provided by other source schemas. The GraphQL Composite Schemas specification does not describe how to combine arbitrary schemas.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L23-L29"><strong>Collaborative</strong>: The GraphQL Composite Schemas specification is explicitly designed around team collaboration. By building on a principled composition model, it ensures that conflicts and inconsistencies are surfaced early and can be resolved before deployment. This allows many teams to contribute to a single schema without the danger of breaking it. The GraphQL Composite Schemas specification facilitates the coordinated effort of combining collaboratively designed source schemas into a single coherent composite schema.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L31-L37"><strong>Evolvable</strong>: A <em>composite schema</em> offers an integrated, product-centric API interface to clients. Each source <span class="spec-ref"><a href="https://spec.graphql.org/draft/#sec-Overview" data-name="graphql-service" target="_blank">GraphQL service</a></span> that underpins the composite schema should be able to evolve without disrupting these clients. Over time, the same functionality may be provided by a different combination of services, while the composite schemas interface must continue to support existing requests from all clients; source schema boundaries are therefore considered an implementation detail and should never be exposed to clients.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L39-L42"><strong>Explicitness</strong>: To make the composition process easier to understand and to avoid ambiguities that can lead to confusing failures as the system grows, the GraphQL Composite Schemas specification prefers to be explicit about intentions and minimize reliance on inference and convention.</li>
</ul>
<p data-source="spec/Section%201%20--%20Overview.md#L43-L45">To enable greater interoperability between different implementations of tooling and gateways, this specification focuses on two core components: schema composition and distributed execution.</p>
<p data-source="spec/Section%201%20--%20Overview.md#L44-L46">To enable greater interoperability between different implementations of tooling and gateways, this specification focuses on two core components: schema composition and distributed execution.</p>
<ul>
<li data-source="spec/Section%201%20--%20Overview.md#L47-L52"><strong>Schema Composition</strong>: Schema composition describes the process of merging multiple <em>source schemas</em> into a single GraphQL schema, the <em>composite schema</em>. During this process, an intermediary schema, the <em>composite execution schema</em>, is generated. This composite execution schema is annotated with directives to describe execution, and may have additional internal fields that won&rsquo;t be exposed in the client-facing <em>composite schema</em>.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L54-L57"><strong>Distributed Execution</strong>: The <em>distributed GraphQL executor</em> specifies the core execution behavior and algorithms that enable fulfillment of a <span class="spec-ref"><a href="https://spec.graphql.org/draft/#request" data-name="graphql-request" target="_blank">GraphQL request</a></span> performed against the <em>composite schema</em>. </li>
<li data-source="spec/Section%201%20--%20Overview.md#L48-L53"><strong>Schema Composition</strong>: Schema composition describes the process of merging multiple <em>source schema</em> into a single GraphQL schema, the <em>composite schema</em>. During this process, an intermediary schema, the <em>composite execution schema</em>, is generated. This composite execution schema is annotated with directives to describe execution, and may have additional internal fields that won&rsquo;t be exposed in the client-facing composite schema.</li>
<li data-source="spec/Section%201%20--%20Overview.md#L55-L58"><strong>Distributed Execution</strong>: The <em>distributed GraphQL executor</em> specifies the core execution behavior and algorithms that enable fulfillment of a <span class="spec-ref"><a href="https://spec.graphql.org/draft/#request" data-name="graphql-request" target="_blank">GraphQL request</a></span> performed against the <em>composite schema</em>. </li>
</ul>
</section>
<section id="sec-Source-Schema" secid="2">
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<html> <head> <title>GraphQL Composite Schemas Specification Versions</title> <style> body { color: #333333; font: 13pt/18pt Cambria, 'Palatino Linotype', Palatino, 'Liberation Serif', serif; margin: 6rem auto 3rem; max-width: 780px; } @media (min-width: 1240px) { body { padding-right: 300px; } } a { color: #3B5998; text-decoration: none; } a:hover { text-decoration: underline; } h1 { font-size: 1.5em; margin: 8rem 0 2em; } td { padding-bottom: 5px; } td + td { padding-left: 2ch; } </style> </head> <body> <h1>GraphQL Composite Schemas</h1> <table> <tr> <td><em>Prerelease</em></td> <td><a href="./draft" keep-hash>Working Draft</a></td> <td>Wed, Jan 24, 2024</td> <td></td> </tr> </table> <script> var links = document.getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { if (links[i].hasAttribute('keep-hash')) { links[i].href += location.hash; links[i].removeAttribute('keep-hash'); } } </script> </body> </html>
<html> <head> <title>GraphQL Composite Schemas Specification Versions</title> <style> body { color: #333333; font: 13pt/18pt Cambria, 'Palatino Linotype', Palatino, 'Liberation Serif', serif; margin: 6rem auto 3rem; max-width: 780px; } @media (min-width: 1240px) { body { padding-right: 300px; } } a { color: #3B5998; text-decoration: none; } a:hover { text-decoration: underline; } h1 { font-size: 1.5em; margin: 8rem 0 2em; } td { padding-bottom: 5px; } td + td { padding-left: 2ch; } </style> </head> <body> <h1>GraphQL Composite Schemas</h1> <table> <tr> <td><em>Prerelease</em></td> <td><a href="./draft" keep-hash>Working Draft</a></td> <td>Thu, Mar 28, 2024</td> <td></td> </tr> </table> <script> var links = document.getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { if (links[i].hasAttribute('keep-hash')) { links[i].href += location.hash; links[i].removeAttribute('keep-hash'); } } </script> </body> </html>

0 comments on commit e7f86b3

Please sign in to comment.