Code Monkey home page Code Monkey logo

graphql's People

Contributors

mstn avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

graphql's Issues

Extending GraphQL

Some ideas to extend GraphQL.

  • Recursion. As far I know, it is forbidden in current spec because it could yield infinite results. However, it is useful. A recursive query represents a potentially infinite result, but we do not have to send infinite data to the client. Some examples:
    • pagination (e.g. infinite scrolling)
    • cyclic data structures (e.g. I am a friend of my friends). Currently, data are unfolded and cyclic relations are potentially infinite, but folded data have a finite representation as graphs!
  • Restructuring. Alias are a simple mechanism to rename query properties. It could have sense also to explore more complex post-processing.

Fix problem with gitbook greater than 2.3.2

CLI version: 2.3.2
GitBook version: 3.2.3

Error: ENOENT: no such file or directory, open 'undefined/literature.bib'

Probably, it is due to plugin bibtex-citation

Note that if we downgrade gitbook, it works.

gitbook serve --gitbook=2.3.2

Define small-step semantics for query execution

Currently, we defined a sort of big step semantics for query execution. It seems convenient to follow a small-step approach.

  • Easier to formalise the concept of stuck execution
  • Different queries could in theory be executed in parallel and return partial results to the client
  • "Lazy loading", i.e. deferring and streaming.

EDIT - added "lazy loading"
New upcoming GraphQL features (e.g. @defer, @stream) allow a sort of lazy loading. Reference

Core language: syntax and semantics

As a reader I want to find a description of the core language with its semantics so that I can use it later as a reference for more advanced topics.

  • tree data structure
  • types
  • queries
  • examples

Create basic structure for the project

As a writer I want to a simple way to publish and edit content so that I can ship as fast as possible.

  • create npm parent project
  • create gitbook project
  • add katex plugin to gb project
  • add reference plugin to gb project
  • create gitbook project
  • create bash script to build and publish to gh-pages
  • add licenses, disclaimer etc

Formal abstract semantics for GraphQL

List of GraphQL features

  • Queries #4 #12
  • Type system #4 #12
  • Execution semantics #4 #12
  • Inline Fragments #12
  • Unions #12
  • Fragments
  • Alias
  • Enums
  • Directives
  • Introspection
  • Interfaces
  • Error Handling
  • Non Null types

Our assumptions/simplifications

  • root type can be any type #12
  • Named queries with parameters -> arguments are free vars in query #12
  • mutation -> mutation = query with side effects, for now, we do not have any special syntax to distinguish them #12
  • no special type for input objects #12

Desirable properties (or what can we say about the abstract lang?)

  • safety
    • progress
    • preservation
  • uniqueness of typing

Coq specification for abstract GraphQL

EDIT changed to epic, not so easy

First, I would like to verify properties of the abstract syntax in a formal way. In this way I can double check the pen-and-pencil results of the notes. Writing derivation trees in html and css is otherwise error prone.

Then, I would like to test the formal semantics on a test suite. In other words I would like to be sure that the abstract language I am defining is as close as possible to (one of) the actual implementation(s) of GraphQL. The easiest way is to extract an interpreter from a Coq spec and try it with existing test suites.

Meteor GraphQL Kitchensink

A complex demo of meteor+graphql with real world features

  • pagination/infinite scrolling
    • smart scrolling, remember last position
  • advanced search on a list of items
  • counters grouped by categories
  • perm links

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.