major_graphql_generator 0.0.4 copy "major_graphql_generator: ^0.0.4" to clipboard
major_graphql_generator: ^0.0.4 copied to clipboard

Generator component of major_graphql

major_graphql #

major_graphql uses the dart build system and gql to generate built_value classes, primarily for use in client side applications.

Packages #

There is also an example major_todo_app which is livecoded on youtube.

Usage #

build.yaml: #

targets:
  $default:
    builders:
      major_graphql_generator|builder:
        enabled: true
        options:
          schema: major_graphql_example|lib/graphql/schema.graphql

pubspec.yaml: #

dependencies:
  major_graphql: ^0.0.3
  # or major_graphql_flutter: ^0.0.1 for flutter

dev_dependencies:
  major_graphql_generator: ^0.0.3
  build_runner: ^1.7.4

dev notes #

  • These libraries are highly experimental, and the generator is currently quite slow.
  • custom scalar usage & configuration
  • unions appear to be broken
  • There are currently numerous smaller limitations and caveats
  • irreducibleTypes are types for which selection sets should not be generated. You can supply your own type for them as well by setting generate: false. They are still assumed to be built value types unless they are in the scalars map. Not that you need to refer to them in the config by their graphql type name.
  • replaceTypes renames all references to a given type
  • mixins can be added conditionally:
mixins:
  - name: Entity
    when:
      fields:
      - entityId
      - validFrom
      - validUntil
      # disable mixin for these classes
      nameNot:
        - MySpecialEntity
        - MyOtherSpecialEntity
  • userland code can be injected via imports and exports (and needs to be to use scalars and mixins):
schema:
  path: savvy_app|lib/graphql/schema.graphql
  imports:
    - package:savvy_app/graphql/base.dart
    - package:built_value/json_object.dart
  exports:
    - package:savvy_app/graphql/base.dart
    - package:built_value/json_object.dart