├── --debug=localhost ├── .dockerignore ├── .vscode ├── launch.json └── settings.json ├── Dockerfile ├── README.md ├── backend ├── .gitignore ├── generated.go ├── gqlgen.yml ├── resolver.go ├── schema.graphql └── server │ ├── server.go │ └── temp │ └── .gitkeep ├── demo.gif ├── docker-compose.debug.yml ├── docker-compose.yml ├── flutter ├── .gitignore ├── .metadata ├── .vscode │ └── settings.json ├── README.md ├── android │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── flutter_graphql_upload │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── images │ ├── chrome.svg │ ├── firefox.svg │ └── safari.svg ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── Runner │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── main.m ├── lib │ └── main.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart ├── go.mod └── go.sum /--debug=localhost: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/--debug=localhost -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | Dockerfile* 4 | docker-compose* 5 | .dockerignore 6 | .git 7 | .gitignore 8 | .env 9 | */bin 10 | */obj 11 | README.md 12 | LICENSE 13 | .vscode 14 | flutter_graphql_upload -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/.vscode/launch.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workbench.colorCustomizations": {} 3 | } -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | #build stage 3 | FROM golang:alpine AS builder 4 | WORKDIR /app 5 | COPY . . 6 | WORKDIR /app/backend/server 7 | RUN apk add --no-cache git 8 | RUN go get -d -v ./... 9 | RUN go build -v -o app 10 | 11 | #final stage 12 | FROM alpine:latest 13 | RUN apk --no-cache add ca-certificates 14 | COPY --from=builder /app/backend/server/app /app 15 | RUN mkdir -p temp 16 | ENTRYPOINT ./app 17 | EXPOSE 8080 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter GraphQL Image Uploads 2 | 3 | This repo is to demo how to upload files using GraphQL and Flutter. The backend is build using Golang but can be run using docker - no need to install golang. 4 | 5 | ## Backend 6 | 7 | To run the backend, you can use [docker compose](https://docs.docker.com/compose/), simply run `docker-compose up -d --build` at the root directory. 8 | 9 | ### Upload Image Mutation 10 | 11 | To test the server, you can use the built in GraphiQL, whose URL is [http://localhost:8080](http://localhost:8080). 12 | 13 | You can run the upload file Mutation below: 14 | 15 | ```graphql 16 | mutation($file: Upload!) { 17 | upload(file: $file) 18 | } 19 | ``` 20 | 21 | ## Frontend 22 | 23 | To run the frontend, change directory to the `flutter` directory, and run `flutter run`. Make sure you have flutter [installed](https://flutter.dev/docs/get-started/install). 24 | 25 | ### Demo 26 | 27 |

28 | 29 |

30 | 31 | ### Accompanying Post 32 | 33 | You can find a detailed explanation for the fronted [here](https://codinglatte.com/posts/flutter/flutter-and-graphql-how-to-upload-files/). 34 | 35 | ## Contributions 36 | 37 | PR are welcome. 38 | -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | server/temp/* 2 | !server/temp/.gitkeep -------------------------------------------------------------------------------- /backend/generated.go: -------------------------------------------------------------------------------- 1 | // Code generated by github.com/99designs/gqlgen, DO NOT EDIT. 2 | 3 | package backend 4 | 5 | import ( 6 | "bytes" 7 | "context" 8 | "errors" 9 | "strconv" 10 | "sync" 11 | "sync/atomic" 12 | 13 | "github.com/99designs/gqlgen/graphql" 14 | "github.com/99designs/gqlgen/graphql/introspection" 15 | "github.com/vektah/gqlparser" 16 | "github.com/vektah/gqlparser/ast" 17 | ) 18 | 19 | // region ************************** generated!.gotpl ************************** 20 | 21 | // NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface. 22 | func NewExecutableSchema(cfg Config) graphql.ExecutableSchema { 23 | return &executableSchema{ 24 | resolvers: cfg.Resolvers, 25 | directives: cfg.Directives, 26 | complexity: cfg.Complexity, 27 | } 28 | } 29 | 30 | type Config struct { 31 | Resolvers ResolverRoot 32 | Directives DirectiveRoot 33 | Complexity ComplexityRoot 34 | } 35 | 36 | type ResolverRoot interface { 37 | Mutation() MutationResolver 38 | Query() QueryResolver 39 | } 40 | 41 | type DirectiveRoot struct { 42 | } 43 | 44 | type ComplexityRoot struct { 45 | Mutation struct { 46 | Upload func(childComplexity int, file graphql.Upload) int 47 | } 48 | 49 | Query struct { 50 | Hello func(childComplexity int, name string) int 51 | } 52 | } 53 | 54 | type MutationResolver interface { 55 | Upload(ctx context.Context, file graphql.Upload) (string, error) 56 | } 57 | type QueryResolver interface { 58 | Hello(ctx context.Context, name string) (string, error) 59 | } 60 | 61 | type executableSchema struct { 62 | resolvers ResolverRoot 63 | directives DirectiveRoot 64 | complexity ComplexityRoot 65 | } 66 | 67 | func (e *executableSchema) Schema() *ast.Schema { 68 | return parsedSchema 69 | } 70 | 71 | func (e *executableSchema) Complexity(typeName, field string, childComplexity int, rawArgs map[string]interface{}) (int, bool) { 72 | ec := executionContext{nil, e} 73 | _ = ec 74 | switch typeName + "." + field { 75 | 76 | case "Mutation.upload": 77 | if e.complexity.Mutation.Upload == nil { 78 | break 79 | } 80 | 81 | args, err := ec.field_Mutation_upload_args(context.TODO(), rawArgs) 82 | if err != nil { 83 | return 0, false 84 | } 85 | 86 | return e.complexity.Mutation.Upload(childComplexity, args["file"].(graphql.Upload)), true 87 | 88 | case "Query.hello": 89 | if e.complexity.Query.Hello == nil { 90 | break 91 | } 92 | 93 | args, err := ec.field_Query_hello_args(context.TODO(), rawArgs) 94 | if err != nil { 95 | return 0, false 96 | } 97 | 98 | return e.complexity.Query.Hello(childComplexity, args["name"].(string)), true 99 | 100 | } 101 | return 0, false 102 | } 103 | 104 | func (e *executableSchema) Query(ctx context.Context, op *ast.OperationDefinition) *graphql.Response { 105 | ec := executionContext{graphql.GetRequestContext(ctx), e} 106 | 107 | buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte { 108 | data := ec._Query(ctx, op.SelectionSet) 109 | var buf bytes.Buffer 110 | data.MarshalGQL(&buf) 111 | return buf.Bytes() 112 | }) 113 | 114 | return &graphql.Response{ 115 | Data: buf, 116 | Errors: ec.Errors, 117 | Extensions: ec.Extensions, 118 | } 119 | } 120 | 121 | func (e *executableSchema) Mutation(ctx context.Context, op *ast.OperationDefinition) *graphql.Response { 122 | ec := executionContext{graphql.GetRequestContext(ctx), e} 123 | 124 | buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte { 125 | data := ec._Mutation(ctx, op.SelectionSet) 126 | var buf bytes.Buffer 127 | data.MarshalGQL(&buf) 128 | return buf.Bytes() 129 | }) 130 | 131 | return &graphql.Response{ 132 | Data: buf, 133 | Errors: ec.Errors, 134 | Extensions: ec.Extensions, 135 | } 136 | } 137 | 138 | func (e *executableSchema) Subscription(ctx context.Context, op *ast.OperationDefinition) func() *graphql.Response { 139 | return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) 140 | } 141 | 142 | type executionContext struct { 143 | *graphql.RequestContext 144 | *executableSchema 145 | } 146 | 147 | func (ec *executionContext) introspectSchema() (*introspection.Schema, error) { 148 | if ec.DisableIntrospection { 149 | return nil, errors.New("introspection disabled") 150 | } 151 | return introspection.WrapSchema(parsedSchema), nil 152 | } 153 | 154 | func (ec *executionContext) introspectType(name string) (*introspection.Type, error) { 155 | if ec.DisableIntrospection { 156 | return nil, errors.New("introspection disabled") 157 | } 158 | return introspection.WrapTypeFromDef(parsedSchema, parsedSchema.Types[name]), nil 159 | } 160 | 161 | var parsedSchema = gqlparser.MustLoadSchema( 162 | &ast.Source{Name: "schema.graphql", Input: `scalar Upload 163 | 164 | type Query { 165 | hello(name: String!): String! 166 | } 167 | 168 | type Mutation { 169 | upload(file: Upload!): String! 170 | } 171 | `}, 172 | ) 173 | 174 | // endregion ************************** generated!.gotpl ************************** 175 | 176 | // region ***************************** args.gotpl ***************************** 177 | 178 | func (ec *executionContext) field_Mutation_upload_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { 179 | var err error 180 | args := map[string]interface{}{} 181 | var arg0 graphql.Upload 182 | if tmp, ok := rawArgs["file"]; ok { 183 | arg0, err = ec.unmarshalNUpload2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚐUpload(ctx, tmp) 184 | if err != nil { 185 | return nil, err 186 | } 187 | } 188 | args["file"] = arg0 189 | return args, nil 190 | } 191 | 192 | func (ec *executionContext) field_Query___type_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { 193 | var err error 194 | args := map[string]interface{}{} 195 | var arg0 string 196 | if tmp, ok := rawArgs["name"]; ok { 197 | arg0, err = ec.unmarshalNString2string(ctx, tmp) 198 | if err != nil { 199 | return nil, err 200 | } 201 | } 202 | args["name"] = arg0 203 | return args, nil 204 | } 205 | 206 | func (ec *executionContext) field_Query_hello_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { 207 | var err error 208 | args := map[string]interface{}{} 209 | var arg0 string 210 | if tmp, ok := rawArgs["name"]; ok { 211 | arg0, err = ec.unmarshalNString2string(ctx, tmp) 212 | if err != nil { 213 | return nil, err 214 | } 215 | } 216 | args["name"] = arg0 217 | return args, nil 218 | } 219 | 220 | func (ec *executionContext) field___Type_enumValues_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { 221 | var err error 222 | args := map[string]interface{}{} 223 | var arg0 bool 224 | if tmp, ok := rawArgs["includeDeprecated"]; ok { 225 | arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp) 226 | if err != nil { 227 | return nil, err 228 | } 229 | } 230 | args["includeDeprecated"] = arg0 231 | return args, nil 232 | } 233 | 234 | func (ec *executionContext) field___Type_fields_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { 235 | var err error 236 | args := map[string]interface{}{} 237 | var arg0 bool 238 | if tmp, ok := rawArgs["includeDeprecated"]; ok { 239 | arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp) 240 | if err != nil { 241 | return nil, err 242 | } 243 | } 244 | args["includeDeprecated"] = arg0 245 | return args, nil 246 | } 247 | 248 | // endregion ***************************** args.gotpl ***************************** 249 | 250 | // region ************************** directives.gotpl ************************** 251 | 252 | // endregion ************************** directives.gotpl ************************** 253 | 254 | // region **************************** field.gotpl ***************************** 255 | 256 | func (ec *executionContext) _Mutation_upload(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { 257 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 258 | defer func() { 259 | if r := recover(); r != nil { 260 | ec.Error(ctx, ec.Recover(ctx, r)) 261 | ret = graphql.Null 262 | } 263 | ec.Tracer.EndFieldExecution(ctx) 264 | }() 265 | rctx := &graphql.ResolverContext{ 266 | Object: "Mutation", 267 | Field: field, 268 | Args: nil, 269 | IsMethod: true, 270 | } 271 | ctx = graphql.WithResolverContext(ctx, rctx) 272 | rawArgs := field.ArgumentMap(ec.Variables) 273 | args, err := ec.field_Mutation_upload_args(ctx, rawArgs) 274 | if err != nil { 275 | ec.Error(ctx, err) 276 | return graphql.Null 277 | } 278 | rctx.Args = args 279 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 280 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 281 | ctx = rctx // use context from middleware stack in children 282 | return ec.resolvers.Mutation().Upload(rctx, args["file"].(graphql.Upload)) 283 | }) 284 | if err != nil { 285 | ec.Error(ctx, err) 286 | return graphql.Null 287 | } 288 | if resTmp == nil { 289 | if !ec.HasError(rctx) { 290 | ec.Errorf(ctx, "must not be null") 291 | } 292 | return graphql.Null 293 | } 294 | res := resTmp.(string) 295 | rctx.Result = res 296 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 297 | return ec.marshalNString2string(ctx, field.Selections, res) 298 | } 299 | 300 | func (ec *executionContext) _Query_hello(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { 301 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 302 | defer func() { 303 | if r := recover(); r != nil { 304 | ec.Error(ctx, ec.Recover(ctx, r)) 305 | ret = graphql.Null 306 | } 307 | ec.Tracer.EndFieldExecution(ctx) 308 | }() 309 | rctx := &graphql.ResolverContext{ 310 | Object: "Query", 311 | Field: field, 312 | Args: nil, 313 | IsMethod: true, 314 | } 315 | ctx = graphql.WithResolverContext(ctx, rctx) 316 | rawArgs := field.ArgumentMap(ec.Variables) 317 | args, err := ec.field_Query_hello_args(ctx, rawArgs) 318 | if err != nil { 319 | ec.Error(ctx, err) 320 | return graphql.Null 321 | } 322 | rctx.Args = args 323 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 324 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 325 | ctx = rctx // use context from middleware stack in children 326 | return ec.resolvers.Query().Hello(rctx, args["name"].(string)) 327 | }) 328 | if err != nil { 329 | ec.Error(ctx, err) 330 | return graphql.Null 331 | } 332 | if resTmp == nil { 333 | if !ec.HasError(rctx) { 334 | ec.Errorf(ctx, "must not be null") 335 | } 336 | return graphql.Null 337 | } 338 | res := resTmp.(string) 339 | rctx.Result = res 340 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 341 | return ec.marshalNString2string(ctx, field.Selections, res) 342 | } 343 | 344 | func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { 345 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 346 | defer func() { 347 | if r := recover(); r != nil { 348 | ec.Error(ctx, ec.Recover(ctx, r)) 349 | ret = graphql.Null 350 | } 351 | ec.Tracer.EndFieldExecution(ctx) 352 | }() 353 | rctx := &graphql.ResolverContext{ 354 | Object: "Query", 355 | Field: field, 356 | Args: nil, 357 | IsMethod: true, 358 | } 359 | ctx = graphql.WithResolverContext(ctx, rctx) 360 | rawArgs := field.ArgumentMap(ec.Variables) 361 | args, err := ec.field_Query___type_args(ctx, rawArgs) 362 | if err != nil { 363 | ec.Error(ctx, err) 364 | return graphql.Null 365 | } 366 | rctx.Args = args 367 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 368 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 369 | ctx = rctx // use context from middleware stack in children 370 | return ec.introspectType(args["name"].(string)) 371 | }) 372 | if err != nil { 373 | ec.Error(ctx, err) 374 | return graphql.Null 375 | } 376 | if resTmp == nil { 377 | return graphql.Null 378 | } 379 | res := resTmp.(*introspection.Type) 380 | rctx.Result = res 381 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 382 | return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 383 | } 384 | 385 | func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { 386 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 387 | defer func() { 388 | if r := recover(); r != nil { 389 | ec.Error(ctx, ec.Recover(ctx, r)) 390 | ret = graphql.Null 391 | } 392 | ec.Tracer.EndFieldExecution(ctx) 393 | }() 394 | rctx := &graphql.ResolverContext{ 395 | Object: "Query", 396 | Field: field, 397 | Args: nil, 398 | IsMethod: true, 399 | } 400 | ctx = graphql.WithResolverContext(ctx, rctx) 401 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 402 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 403 | ctx = rctx // use context from middleware stack in children 404 | return ec.introspectSchema() 405 | }) 406 | if err != nil { 407 | ec.Error(ctx, err) 408 | return graphql.Null 409 | } 410 | if resTmp == nil { 411 | return graphql.Null 412 | } 413 | res := resTmp.(*introspection.Schema) 414 | rctx.Result = res 415 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 416 | return ec.marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx, field.Selections, res) 417 | } 418 | 419 | func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { 420 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 421 | defer func() { 422 | if r := recover(); r != nil { 423 | ec.Error(ctx, ec.Recover(ctx, r)) 424 | ret = graphql.Null 425 | } 426 | ec.Tracer.EndFieldExecution(ctx) 427 | }() 428 | rctx := &graphql.ResolverContext{ 429 | Object: "__Directive", 430 | Field: field, 431 | Args: nil, 432 | IsMethod: false, 433 | } 434 | ctx = graphql.WithResolverContext(ctx, rctx) 435 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 436 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 437 | ctx = rctx // use context from middleware stack in children 438 | return obj.Name, nil 439 | }) 440 | if err != nil { 441 | ec.Error(ctx, err) 442 | return graphql.Null 443 | } 444 | if resTmp == nil { 445 | if !ec.HasError(rctx) { 446 | ec.Errorf(ctx, "must not be null") 447 | } 448 | return graphql.Null 449 | } 450 | res := resTmp.(string) 451 | rctx.Result = res 452 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 453 | return ec.marshalNString2string(ctx, field.Selections, res) 454 | } 455 | 456 | func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { 457 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 458 | defer func() { 459 | if r := recover(); r != nil { 460 | ec.Error(ctx, ec.Recover(ctx, r)) 461 | ret = graphql.Null 462 | } 463 | ec.Tracer.EndFieldExecution(ctx) 464 | }() 465 | rctx := &graphql.ResolverContext{ 466 | Object: "__Directive", 467 | Field: field, 468 | Args: nil, 469 | IsMethod: false, 470 | } 471 | ctx = graphql.WithResolverContext(ctx, rctx) 472 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 473 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 474 | ctx = rctx // use context from middleware stack in children 475 | return obj.Description, nil 476 | }) 477 | if err != nil { 478 | ec.Error(ctx, err) 479 | return graphql.Null 480 | } 481 | if resTmp == nil { 482 | return graphql.Null 483 | } 484 | res := resTmp.(string) 485 | rctx.Result = res 486 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 487 | return ec.marshalOString2string(ctx, field.Selections, res) 488 | } 489 | 490 | func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { 491 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 492 | defer func() { 493 | if r := recover(); r != nil { 494 | ec.Error(ctx, ec.Recover(ctx, r)) 495 | ret = graphql.Null 496 | } 497 | ec.Tracer.EndFieldExecution(ctx) 498 | }() 499 | rctx := &graphql.ResolverContext{ 500 | Object: "__Directive", 501 | Field: field, 502 | Args: nil, 503 | IsMethod: false, 504 | } 505 | ctx = graphql.WithResolverContext(ctx, rctx) 506 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 507 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 508 | ctx = rctx // use context from middleware stack in children 509 | return obj.Locations, nil 510 | }) 511 | if err != nil { 512 | ec.Error(ctx, err) 513 | return graphql.Null 514 | } 515 | if resTmp == nil { 516 | if !ec.HasError(rctx) { 517 | ec.Errorf(ctx, "must not be null") 518 | } 519 | return graphql.Null 520 | } 521 | res := resTmp.([]string) 522 | rctx.Result = res 523 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 524 | return ec.marshalN__DirectiveLocation2ᚕstring(ctx, field.Selections, res) 525 | } 526 | 527 | func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { 528 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 529 | defer func() { 530 | if r := recover(); r != nil { 531 | ec.Error(ctx, ec.Recover(ctx, r)) 532 | ret = graphql.Null 533 | } 534 | ec.Tracer.EndFieldExecution(ctx) 535 | }() 536 | rctx := &graphql.ResolverContext{ 537 | Object: "__Directive", 538 | Field: field, 539 | Args: nil, 540 | IsMethod: false, 541 | } 542 | ctx = graphql.WithResolverContext(ctx, rctx) 543 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 544 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 545 | ctx = rctx // use context from middleware stack in children 546 | return obj.Args, nil 547 | }) 548 | if err != nil { 549 | ec.Error(ctx, err) 550 | return graphql.Null 551 | } 552 | if resTmp == nil { 553 | if !ec.HasError(rctx) { 554 | ec.Errorf(ctx, "must not be null") 555 | } 556 | return graphql.Null 557 | } 558 | res := resTmp.([]introspection.InputValue) 559 | rctx.Result = res 560 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 561 | return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, field.Selections, res) 562 | } 563 | 564 | func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { 565 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 566 | defer func() { 567 | if r := recover(); r != nil { 568 | ec.Error(ctx, ec.Recover(ctx, r)) 569 | ret = graphql.Null 570 | } 571 | ec.Tracer.EndFieldExecution(ctx) 572 | }() 573 | rctx := &graphql.ResolverContext{ 574 | Object: "__EnumValue", 575 | Field: field, 576 | Args: nil, 577 | IsMethod: false, 578 | } 579 | ctx = graphql.WithResolverContext(ctx, rctx) 580 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 581 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 582 | ctx = rctx // use context from middleware stack in children 583 | return obj.Name, nil 584 | }) 585 | if err != nil { 586 | ec.Error(ctx, err) 587 | return graphql.Null 588 | } 589 | if resTmp == nil { 590 | if !ec.HasError(rctx) { 591 | ec.Errorf(ctx, "must not be null") 592 | } 593 | return graphql.Null 594 | } 595 | res := resTmp.(string) 596 | rctx.Result = res 597 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 598 | return ec.marshalNString2string(ctx, field.Selections, res) 599 | } 600 | 601 | func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { 602 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 603 | defer func() { 604 | if r := recover(); r != nil { 605 | ec.Error(ctx, ec.Recover(ctx, r)) 606 | ret = graphql.Null 607 | } 608 | ec.Tracer.EndFieldExecution(ctx) 609 | }() 610 | rctx := &graphql.ResolverContext{ 611 | Object: "__EnumValue", 612 | Field: field, 613 | Args: nil, 614 | IsMethod: false, 615 | } 616 | ctx = graphql.WithResolverContext(ctx, rctx) 617 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 618 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 619 | ctx = rctx // use context from middleware stack in children 620 | return obj.Description, nil 621 | }) 622 | if err != nil { 623 | ec.Error(ctx, err) 624 | return graphql.Null 625 | } 626 | if resTmp == nil { 627 | return graphql.Null 628 | } 629 | res := resTmp.(string) 630 | rctx.Result = res 631 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 632 | return ec.marshalOString2string(ctx, field.Selections, res) 633 | } 634 | 635 | func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { 636 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 637 | defer func() { 638 | if r := recover(); r != nil { 639 | ec.Error(ctx, ec.Recover(ctx, r)) 640 | ret = graphql.Null 641 | } 642 | ec.Tracer.EndFieldExecution(ctx) 643 | }() 644 | rctx := &graphql.ResolverContext{ 645 | Object: "__EnumValue", 646 | Field: field, 647 | Args: nil, 648 | IsMethod: true, 649 | } 650 | ctx = graphql.WithResolverContext(ctx, rctx) 651 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 652 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 653 | ctx = rctx // use context from middleware stack in children 654 | return obj.IsDeprecated(), nil 655 | }) 656 | if err != nil { 657 | ec.Error(ctx, err) 658 | return graphql.Null 659 | } 660 | if resTmp == nil { 661 | if !ec.HasError(rctx) { 662 | ec.Errorf(ctx, "must not be null") 663 | } 664 | return graphql.Null 665 | } 666 | res := resTmp.(bool) 667 | rctx.Result = res 668 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 669 | return ec.marshalNBoolean2bool(ctx, field.Selections, res) 670 | } 671 | 672 | func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { 673 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 674 | defer func() { 675 | if r := recover(); r != nil { 676 | ec.Error(ctx, ec.Recover(ctx, r)) 677 | ret = graphql.Null 678 | } 679 | ec.Tracer.EndFieldExecution(ctx) 680 | }() 681 | rctx := &graphql.ResolverContext{ 682 | Object: "__EnumValue", 683 | Field: field, 684 | Args: nil, 685 | IsMethod: true, 686 | } 687 | ctx = graphql.WithResolverContext(ctx, rctx) 688 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 689 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 690 | ctx = rctx // use context from middleware stack in children 691 | return obj.DeprecationReason(), nil 692 | }) 693 | if err != nil { 694 | ec.Error(ctx, err) 695 | return graphql.Null 696 | } 697 | if resTmp == nil { 698 | return graphql.Null 699 | } 700 | res := resTmp.(*string) 701 | rctx.Result = res 702 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 703 | return ec.marshalOString2ᚖstring(ctx, field.Selections, res) 704 | } 705 | 706 | func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { 707 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 708 | defer func() { 709 | if r := recover(); r != nil { 710 | ec.Error(ctx, ec.Recover(ctx, r)) 711 | ret = graphql.Null 712 | } 713 | ec.Tracer.EndFieldExecution(ctx) 714 | }() 715 | rctx := &graphql.ResolverContext{ 716 | Object: "__Field", 717 | Field: field, 718 | Args: nil, 719 | IsMethod: false, 720 | } 721 | ctx = graphql.WithResolverContext(ctx, rctx) 722 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 723 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 724 | ctx = rctx // use context from middleware stack in children 725 | return obj.Name, nil 726 | }) 727 | if err != nil { 728 | ec.Error(ctx, err) 729 | return graphql.Null 730 | } 731 | if resTmp == nil { 732 | if !ec.HasError(rctx) { 733 | ec.Errorf(ctx, "must not be null") 734 | } 735 | return graphql.Null 736 | } 737 | res := resTmp.(string) 738 | rctx.Result = res 739 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 740 | return ec.marshalNString2string(ctx, field.Selections, res) 741 | } 742 | 743 | func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { 744 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 745 | defer func() { 746 | if r := recover(); r != nil { 747 | ec.Error(ctx, ec.Recover(ctx, r)) 748 | ret = graphql.Null 749 | } 750 | ec.Tracer.EndFieldExecution(ctx) 751 | }() 752 | rctx := &graphql.ResolverContext{ 753 | Object: "__Field", 754 | Field: field, 755 | Args: nil, 756 | IsMethod: false, 757 | } 758 | ctx = graphql.WithResolverContext(ctx, rctx) 759 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 760 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 761 | ctx = rctx // use context from middleware stack in children 762 | return obj.Description, nil 763 | }) 764 | if err != nil { 765 | ec.Error(ctx, err) 766 | return graphql.Null 767 | } 768 | if resTmp == nil { 769 | return graphql.Null 770 | } 771 | res := resTmp.(string) 772 | rctx.Result = res 773 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 774 | return ec.marshalOString2string(ctx, field.Selections, res) 775 | } 776 | 777 | func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { 778 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 779 | defer func() { 780 | if r := recover(); r != nil { 781 | ec.Error(ctx, ec.Recover(ctx, r)) 782 | ret = graphql.Null 783 | } 784 | ec.Tracer.EndFieldExecution(ctx) 785 | }() 786 | rctx := &graphql.ResolverContext{ 787 | Object: "__Field", 788 | Field: field, 789 | Args: nil, 790 | IsMethod: false, 791 | } 792 | ctx = graphql.WithResolverContext(ctx, rctx) 793 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 794 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 795 | ctx = rctx // use context from middleware stack in children 796 | return obj.Args, nil 797 | }) 798 | if err != nil { 799 | ec.Error(ctx, err) 800 | return graphql.Null 801 | } 802 | if resTmp == nil { 803 | if !ec.HasError(rctx) { 804 | ec.Errorf(ctx, "must not be null") 805 | } 806 | return graphql.Null 807 | } 808 | res := resTmp.([]introspection.InputValue) 809 | rctx.Result = res 810 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 811 | return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, field.Selections, res) 812 | } 813 | 814 | func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { 815 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 816 | defer func() { 817 | if r := recover(); r != nil { 818 | ec.Error(ctx, ec.Recover(ctx, r)) 819 | ret = graphql.Null 820 | } 821 | ec.Tracer.EndFieldExecution(ctx) 822 | }() 823 | rctx := &graphql.ResolverContext{ 824 | Object: "__Field", 825 | Field: field, 826 | Args: nil, 827 | IsMethod: false, 828 | } 829 | ctx = graphql.WithResolverContext(ctx, rctx) 830 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 831 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 832 | ctx = rctx // use context from middleware stack in children 833 | return obj.Type, nil 834 | }) 835 | if err != nil { 836 | ec.Error(ctx, err) 837 | return graphql.Null 838 | } 839 | if resTmp == nil { 840 | if !ec.HasError(rctx) { 841 | ec.Errorf(ctx, "must not be null") 842 | } 843 | return graphql.Null 844 | } 845 | res := resTmp.(*introspection.Type) 846 | rctx.Result = res 847 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 848 | return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 849 | } 850 | 851 | func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { 852 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 853 | defer func() { 854 | if r := recover(); r != nil { 855 | ec.Error(ctx, ec.Recover(ctx, r)) 856 | ret = graphql.Null 857 | } 858 | ec.Tracer.EndFieldExecution(ctx) 859 | }() 860 | rctx := &graphql.ResolverContext{ 861 | Object: "__Field", 862 | Field: field, 863 | Args: nil, 864 | IsMethod: true, 865 | } 866 | ctx = graphql.WithResolverContext(ctx, rctx) 867 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 868 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 869 | ctx = rctx // use context from middleware stack in children 870 | return obj.IsDeprecated(), nil 871 | }) 872 | if err != nil { 873 | ec.Error(ctx, err) 874 | return graphql.Null 875 | } 876 | if resTmp == nil { 877 | if !ec.HasError(rctx) { 878 | ec.Errorf(ctx, "must not be null") 879 | } 880 | return graphql.Null 881 | } 882 | res := resTmp.(bool) 883 | rctx.Result = res 884 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 885 | return ec.marshalNBoolean2bool(ctx, field.Selections, res) 886 | } 887 | 888 | func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { 889 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 890 | defer func() { 891 | if r := recover(); r != nil { 892 | ec.Error(ctx, ec.Recover(ctx, r)) 893 | ret = graphql.Null 894 | } 895 | ec.Tracer.EndFieldExecution(ctx) 896 | }() 897 | rctx := &graphql.ResolverContext{ 898 | Object: "__Field", 899 | Field: field, 900 | Args: nil, 901 | IsMethod: true, 902 | } 903 | ctx = graphql.WithResolverContext(ctx, rctx) 904 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 905 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 906 | ctx = rctx // use context from middleware stack in children 907 | return obj.DeprecationReason(), nil 908 | }) 909 | if err != nil { 910 | ec.Error(ctx, err) 911 | return graphql.Null 912 | } 913 | if resTmp == nil { 914 | return graphql.Null 915 | } 916 | res := resTmp.(*string) 917 | rctx.Result = res 918 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 919 | return ec.marshalOString2ᚖstring(ctx, field.Selections, res) 920 | } 921 | 922 | func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { 923 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 924 | defer func() { 925 | if r := recover(); r != nil { 926 | ec.Error(ctx, ec.Recover(ctx, r)) 927 | ret = graphql.Null 928 | } 929 | ec.Tracer.EndFieldExecution(ctx) 930 | }() 931 | rctx := &graphql.ResolverContext{ 932 | Object: "__InputValue", 933 | Field: field, 934 | Args: nil, 935 | IsMethod: false, 936 | } 937 | ctx = graphql.WithResolverContext(ctx, rctx) 938 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 939 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 940 | ctx = rctx // use context from middleware stack in children 941 | return obj.Name, nil 942 | }) 943 | if err != nil { 944 | ec.Error(ctx, err) 945 | return graphql.Null 946 | } 947 | if resTmp == nil { 948 | if !ec.HasError(rctx) { 949 | ec.Errorf(ctx, "must not be null") 950 | } 951 | return graphql.Null 952 | } 953 | res := resTmp.(string) 954 | rctx.Result = res 955 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 956 | return ec.marshalNString2string(ctx, field.Selections, res) 957 | } 958 | 959 | func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { 960 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 961 | defer func() { 962 | if r := recover(); r != nil { 963 | ec.Error(ctx, ec.Recover(ctx, r)) 964 | ret = graphql.Null 965 | } 966 | ec.Tracer.EndFieldExecution(ctx) 967 | }() 968 | rctx := &graphql.ResolverContext{ 969 | Object: "__InputValue", 970 | Field: field, 971 | Args: nil, 972 | IsMethod: false, 973 | } 974 | ctx = graphql.WithResolverContext(ctx, rctx) 975 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 976 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 977 | ctx = rctx // use context from middleware stack in children 978 | return obj.Description, nil 979 | }) 980 | if err != nil { 981 | ec.Error(ctx, err) 982 | return graphql.Null 983 | } 984 | if resTmp == nil { 985 | return graphql.Null 986 | } 987 | res := resTmp.(string) 988 | rctx.Result = res 989 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 990 | return ec.marshalOString2string(ctx, field.Selections, res) 991 | } 992 | 993 | func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { 994 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 995 | defer func() { 996 | if r := recover(); r != nil { 997 | ec.Error(ctx, ec.Recover(ctx, r)) 998 | ret = graphql.Null 999 | } 1000 | ec.Tracer.EndFieldExecution(ctx) 1001 | }() 1002 | rctx := &graphql.ResolverContext{ 1003 | Object: "__InputValue", 1004 | Field: field, 1005 | Args: nil, 1006 | IsMethod: false, 1007 | } 1008 | ctx = graphql.WithResolverContext(ctx, rctx) 1009 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1010 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1011 | ctx = rctx // use context from middleware stack in children 1012 | return obj.Type, nil 1013 | }) 1014 | if err != nil { 1015 | ec.Error(ctx, err) 1016 | return graphql.Null 1017 | } 1018 | if resTmp == nil { 1019 | if !ec.HasError(rctx) { 1020 | ec.Errorf(ctx, "must not be null") 1021 | } 1022 | return graphql.Null 1023 | } 1024 | res := resTmp.(*introspection.Type) 1025 | rctx.Result = res 1026 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1027 | return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1028 | } 1029 | 1030 | func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { 1031 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1032 | defer func() { 1033 | if r := recover(); r != nil { 1034 | ec.Error(ctx, ec.Recover(ctx, r)) 1035 | ret = graphql.Null 1036 | } 1037 | ec.Tracer.EndFieldExecution(ctx) 1038 | }() 1039 | rctx := &graphql.ResolverContext{ 1040 | Object: "__InputValue", 1041 | Field: field, 1042 | Args: nil, 1043 | IsMethod: false, 1044 | } 1045 | ctx = graphql.WithResolverContext(ctx, rctx) 1046 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1047 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1048 | ctx = rctx // use context from middleware stack in children 1049 | return obj.DefaultValue, nil 1050 | }) 1051 | if err != nil { 1052 | ec.Error(ctx, err) 1053 | return graphql.Null 1054 | } 1055 | if resTmp == nil { 1056 | return graphql.Null 1057 | } 1058 | res := resTmp.(*string) 1059 | rctx.Result = res 1060 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1061 | return ec.marshalOString2ᚖstring(ctx, field.Selections, res) 1062 | } 1063 | 1064 | func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { 1065 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1066 | defer func() { 1067 | if r := recover(); r != nil { 1068 | ec.Error(ctx, ec.Recover(ctx, r)) 1069 | ret = graphql.Null 1070 | } 1071 | ec.Tracer.EndFieldExecution(ctx) 1072 | }() 1073 | rctx := &graphql.ResolverContext{ 1074 | Object: "__Schema", 1075 | Field: field, 1076 | Args: nil, 1077 | IsMethod: true, 1078 | } 1079 | ctx = graphql.WithResolverContext(ctx, rctx) 1080 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1081 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1082 | ctx = rctx // use context from middleware stack in children 1083 | return obj.Types(), nil 1084 | }) 1085 | if err != nil { 1086 | ec.Error(ctx, err) 1087 | return graphql.Null 1088 | } 1089 | if resTmp == nil { 1090 | if !ec.HasError(rctx) { 1091 | ec.Errorf(ctx, "must not be null") 1092 | } 1093 | return graphql.Null 1094 | } 1095 | res := resTmp.([]introspection.Type) 1096 | rctx.Result = res 1097 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1098 | return ec.marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1099 | } 1100 | 1101 | func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { 1102 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1103 | defer func() { 1104 | if r := recover(); r != nil { 1105 | ec.Error(ctx, ec.Recover(ctx, r)) 1106 | ret = graphql.Null 1107 | } 1108 | ec.Tracer.EndFieldExecution(ctx) 1109 | }() 1110 | rctx := &graphql.ResolverContext{ 1111 | Object: "__Schema", 1112 | Field: field, 1113 | Args: nil, 1114 | IsMethod: true, 1115 | } 1116 | ctx = graphql.WithResolverContext(ctx, rctx) 1117 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1118 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1119 | ctx = rctx // use context from middleware stack in children 1120 | return obj.QueryType(), nil 1121 | }) 1122 | if err != nil { 1123 | ec.Error(ctx, err) 1124 | return graphql.Null 1125 | } 1126 | if resTmp == nil { 1127 | if !ec.HasError(rctx) { 1128 | ec.Errorf(ctx, "must not be null") 1129 | } 1130 | return graphql.Null 1131 | } 1132 | res := resTmp.(*introspection.Type) 1133 | rctx.Result = res 1134 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1135 | return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1136 | } 1137 | 1138 | func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { 1139 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1140 | defer func() { 1141 | if r := recover(); r != nil { 1142 | ec.Error(ctx, ec.Recover(ctx, r)) 1143 | ret = graphql.Null 1144 | } 1145 | ec.Tracer.EndFieldExecution(ctx) 1146 | }() 1147 | rctx := &graphql.ResolverContext{ 1148 | Object: "__Schema", 1149 | Field: field, 1150 | Args: nil, 1151 | IsMethod: true, 1152 | } 1153 | ctx = graphql.WithResolverContext(ctx, rctx) 1154 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1155 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1156 | ctx = rctx // use context from middleware stack in children 1157 | return obj.MutationType(), nil 1158 | }) 1159 | if err != nil { 1160 | ec.Error(ctx, err) 1161 | return graphql.Null 1162 | } 1163 | if resTmp == nil { 1164 | return graphql.Null 1165 | } 1166 | res := resTmp.(*introspection.Type) 1167 | rctx.Result = res 1168 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1169 | return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1170 | } 1171 | 1172 | func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { 1173 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1174 | defer func() { 1175 | if r := recover(); r != nil { 1176 | ec.Error(ctx, ec.Recover(ctx, r)) 1177 | ret = graphql.Null 1178 | } 1179 | ec.Tracer.EndFieldExecution(ctx) 1180 | }() 1181 | rctx := &graphql.ResolverContext{ 1182 | Object: "__Schema", 1183 | Field: field, 1184 | Args: nil, 1185 | IsMethod: true, 1186 | } 1187 | ctx = graphql.WithResolverContext(ctx, rctx) 1188 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1189 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1190 | ctx = rctx // use context from middleware stack in children 1191 | return obj.SubscriptionType(), nil 1192 | }) 1193 | if err != nil { 1194 | ec.Error(ctx, err) 1195 | return graphql.Null 1196 | } 1197 | if resTmp == nil { 1198 | return graphql.Null 1199 | } 1200 | res := resTmp.(*introspection.Type) 1201 | rctx.Result = res 1202 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1203 | return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1204 | } 1205 | 1206 | func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { 1207 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1208 | defer func() { 1209 | if r := recover(); r != nil { 1210 | ec.Error(ctx, ec.Recover(ctx, r)) 1211 | ret = graphql.Null 1212 | } 1213 | ec.Tracer.EndFieldExecution(ctx) 1214 | }() 1215 | rctx := &graphql.ResolverContext{ 1216 | Object: "__Schema", 1217 | Field: field, 1218 | Args: nil, 1219 | IsMethod: true, 1220 | } 1221 | ctx = graphql.WithResolverContext(ctx, rctx) 1222 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1223 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1224 | ctx = rctx // use context from middleware stack in children 1225 | return obj.Directives(), nil 1226 | }) 1227 | if err != nil { 1228 | ec.Error(ctx, err) 1229 | return graphql.Null 1230 | } 1231 | if resTmp == nil { 1232 | if !ec.HasError(rctx) { 1233 | ec.Errorf(ctx, "must not be null") 1234 | } 1235 | return graphql.Null 1236 | } 1237 | res := resTmp.([]introspection.Directive) 1238 | rctx.Result = res 1239 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1240 | return ec.marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx, field.Selections, res) 1241 | } 1242 | 1243 | func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1244 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1245 | defer func() { 1246 | if r := recover(); r != nil { 1247 | ec.Error(ctx, ec.Recover(ctx, r)) 1248 | ret = graphql.Null 1249 | } 1250 | ec.Tracer.EndFieldExecution(ctx) 1251 | }() 1252 | rctx := &graphql.ResolverContext{ 1253 | Object: "__Type", 1254 | Field: field, 1255 | Args: nil, 1256 | IsMethod: true, 1257 | } 1258 | ctx = graphql.WithResolverContext(ctx, rctx) 1259 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1260 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1261 | ctx = rctx // use context from middleware stack in children 1262 | return obj.Kind(), nil 1263 | }) 1264 | if err != nil { 1265 | ec.Error(ctx, err) 1266 | return graphql.Null 1267 | } 1268 | if resTmp == nil { 1269 | if !ec.HasError(rctx) { 1270 | ec.Errorf(ctx, "must not be null") 1271 | } 1272 | return graphql.Null 1273 | } 1274 | res := resTmp.(string) 1275 | rctx.Result = res 1276 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1277 | return ec.marshalN__TypeKind2string(ctx, field.Selections, res) 1278 | } 1279 | 1280 | func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1281 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1282 | defer func() { 1283 | if r := recover(); r != nil { 1284 | ec.Error(ctx, ec.Recover(ctx, r)) 1285 | ret = graphql.Null 1286 | } 1287 | ec.Tracer.EndFieldExecution(ctx) 1288 | }() 1289 | rctx := &graphql.ResolverContext{ 1290 | Object: "__Type", 1291 | Field: field, 1292 | Args: nil, 1293 | IsMethod: true, 1294 | } 1295 | ctx = graphql.WithResolverContext(ctx, rctx) 1296 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1297 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1298 | ctx = rctx // use context from middleware stack in children 1299 | return obj.Name(), nil 1300 | }) 1301 | if err != nil { 1302 | ec.Error(ctx, err) 1303 | return graphql.Null 1304 | } 1305 | if resTmp == nil { 1306 | return graphql.Null 1307 | } 1308 | res := resTmp.(*string) 1309 | rctx.Result = res 1310 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1311 | return ec.marshalOString2ᚖstring(ctx, field.Selections, res) 1312 | } 1313 | 1314 | func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1315 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1316 | defer func() { 1317 | if r := recover(); r != nil { 1318 | ec.Error(ctx, ec.Recover(ctx, r)) 1319 | ret = graphql.Null 1320 | } 1321 | ec.Tracer.EndFieldExecution(ctx) 1322 | }() 1323 | rctx := &graphql.ResolverContext{ 1324 | Object: "__Type", 1325 | Field: field, 1326 | Args: nil, 1327 | IsMethod: true, 1328 | } 1329 | ctx = graphql.WithResolverContext(ctx, rctx) 1330 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1331 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1332 | ctx = rctx // use context from middleware stack in children 1333 | return obj.Description(), nil 1334 | }) 1335 | if err != nil { 1336 | ec.Error(ctx, err) 1337 | return graphql.Null 1338 | } 1339 | if resTmp == nil { 1340 | return graphql.Null 1341 | } 1342 | res := resTmp.(string) 1343 | rctx.Result = res 1344 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1345 | return ec.marshalOString2string(ctx, field.Selections, res) 1346 | } 1347 | 1348 | func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1349 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1350 | defer func() { 1351 | if r := recover(); r != nil { 1352 | ec.Error(ctx, ec.Recover(ctx, r)) 1353 | ret = graphql.Null 1354 | } 1355 | ec.Tracer.EndFieldExecution(ctx) 1356 | }() 1357 | rctx := &graphql.ResolverContext{ 1358 | Object: "__Type", 1359 | Field: field, 1360 | Args: nil, 1361 | IsMethod: true, 1362 | } 1363 | ctx = graphql.WithResolverContext(ctx, rctx) 1364 | rawArgs := field.ArgumentMap(ec.Variables) 1365 | args, err := ec.field___Type_fields_args(ctx, rawArgs) 1366 | if err != nil { 1367 | ec.Error(ctx, err) 1368 | return graphql.Null 1369 | } 1370 | rctx.Args = args 1371 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1372 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1373 | ctx = rctx // use context from middleware stack in children 1374 | return obj.Fields(args["includeDeprecated"].(bool)), nil 1375 | }) 1376 | if err != nil { 1377 | ec.Error(ctx, err) 1378 | return graphql.Null 1379 | } 1380 | if resTmp == nil { 1381 | return graphql.Null 1382 | } 1383 | res := resTmp.([]introspection.Field) 1384 | rctx.Result = res 1385 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1386 | return ec.marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx, field.Selections, res) 1387 | } 1388 | 1389 | func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1390 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1391 | defer func() { 1392 | if r := recover(); r != nil { 1393 | ec.Error(ctx, ec.Recover(ctx, r)) 1394 | ret = graphql.Null 1395 | } 1396 | ec.Tracer.EndFieldExecution(ctx) 1397 | }() 1398 | rctx := &graphql.ResolverContext{ 1399 | Object: "__Type", 1400 | Field: field, 1401 | Args: nil, 1402 | IsMethod: true, 1403 | } 1404 | ctx = graphql.WithResolverContext(ctx, rctx) 1405 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1406 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1407 | ctx = rctx // use context from middleware stack in children 1408 | return obj.Interfaces(), nil 1409 | }) 1410 | if err != nil { 1411 | ec.Error(ctx, err) 1412 | return graphql.Null 1413 | } 1414 | if resTmp == nil { 1415 | return graphql.Null 1416 | } 1417 | res := resTmp.([]introspection.Type) 1418 | rctx.Result = res 1419 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1420 | return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1421 | } 1422 | 1423 | func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1424 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1425 | defer func() { 1426 | if r := recover(); r != nil { 1427 | ec.Error(ctx, ec.Recover(ctx, r)) 1428 | ret = graphql.Null 1429 | } 1430 | ec.Tracer.EndFieldExecution(ctx) 1431 | }() 1432 | rctx := &graphql.ResolverContext{ 1433 | Object: "__Type", 1434 | Field: field, 1435 | Args: nil, 1436 | IsMethod: true, 1437 | } 1438 | ctx = graphql.WithResolverContext(ctx, rctx) 1439 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1440 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1441 | ctx = rctx // use context from middleware stack in children 1442 | return obj.PossibleTypes(), nil 1443 | }) 1444 | if err != nil { 1445 | ec.Error(ctx, err) 1446 | return graphql.Null 1447 | } 1448 | if resTmp == nil { 1449 | return graphql.Null 1450 | } 1451 | res := resTmp.([]introspection.Type) 1452 | rctx.Result = res 1453 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1454 | return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1455 | } 1456 | 1457 | func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1458 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1459 | defer func() { 1460 | if r := recover(); r != nil { 1461 | ec.Error(ctx, ec.Recover(ctx, r)) 1462 | ret = graphql.Null 1463 | } 1464 | ec.Tracer.EndFieldExecution(ctx) 1465 | }() 1466 | rctx := &graphql.ResolverContext{ 1467 | Object: "__Type", 1468 | Field: field, 1469 | Args: nil, 1470 | IsMethod: true, 1471 | } 1472 | ctx = graphql.WithResolverContext(ctx, rctx) 1473 | rawArgs := field.ArgumentMap(ec.Variables) 1474 | args, err := ec.field___Type_enumValues_args(ctx, rawArgs) 1475 | if err != nil { 1476 | ec.Error(ctx, err) 1477 | return graphql.Null 1478 | } 1479 | rctx.Args = args 1480 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1481 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1482 | ctx = rctx // use context from middleware stack in children 1483 | return obj.EnumValues(args["includeDeprecated"].(bool)), nil 1484 | }) 1485 | if err != nil { 1486 | ec.Error(ctx, err) 1487 | return graphql.Null 1488 | } 1489 | if resTmp == nil { 1490 | return graphql.Null 1491 | } 1492 | res := resTmp.([]introspection.EnumValue) 1493 | rctx.Result = res 1494 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1495 | return ec.marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx, field.Selections, res) 1496 | } 1497 | 1498 | func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1499 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1500 | defer func() { 1501 | if r := recover(); r != nil { 1502 | ec.Error(ctx, ec.Recover(ctx, r)) 1503 | ret = graphql.Null 1504 | } 1505 | ec.Tracer.EndFieldExecution(ctx) 1506 | }() 1507 | rctx := &graphql.ResolverContext{ 1508 | Object: "__Type", 1509 | Field: field, 1510 | Args: nil, 1511 | IsMethod: true, 1512 | } 1513 | ctx = graphql.WithResolverContext(ctx, rctx) 1514 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1515 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1516 | ctx = rctx // use context from middleware stack in children 1517 | return obj.InputFields(), nil 1518 | }) 1519 | if err != nil { 1520 | ec.Error(ctx, err) 1521 | return graphql.Null 1522 | } 1523 | if resTmp == nil { 1524 | return graphql.Null 1525 | } 1526 | res := resTmp.([]introspection.InputValue) 1527 | rctx.Result = res 1528 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1529 | return ec.marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, field.Selections, res) 1530 | } 1531 | 1532 | func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { 1533 | ctx = ec.Tracer.StartFieldExecution(ctx, field) 1534 | defer func() { 1535 | if r := recover(); r != nil { 1536 | ec.Error(ctx, ec.Recover(ctx, r)) 1537 | ret = graphql.Null 1538 | } 1539 | ec.Tracer.EndFieldExecution(ctx) 1540 | }() 1541 | rctx := &graphql.ResolverContext{ 1542 | Object: "__Type", 1543 | Field: field, 1544 | Args: nil, 1545 | IsMethod: true, 1546 | } 1547 | ctx = graphql.WithResolverContext(ctx, rctx) 1548 | ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx) 1549 | resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { 1550 | ctx = rctx // use context from middleware stack in children 1551 | return obj.OfType(), nil 1552 | }) 1553 | if err != nil { 1554 | ec.Error(ctx, err) 1555 | return graphql.Null 1556 | } 1557 | if resTmp == nil { 1558 | return graphql.Null 1559 | } 1560 | res := resTmp.(*introspection.Type) 1561 | rctx.Result = res 1562 | ctx = ec.Tracer.StartFieldChildExecution(ctx) 1563 | return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) 1564 | } 1565 | 1566 | // endregion **************************** field.gotpl ***************************** 1567 | 1568 | // region **************************** input.gotpl ***************************** 1569 | 1570 | // endregion **************************** input.gotpl ***************************** 1571 | 1572 | // region ************************** interface.gotpl *************************** 1573 | 1574 | // endregion ************************** interface.gotpl *************************** 1575 | 1576 | // region **************************** object.gotpl **************************** 1577 | 1578 | var mutationImplementors = []string{"Mutation"} 1579 | 1580 | func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { 1581 | fields := graphql.CollectFields(ec.RequestContext, sel, mutationImplementors) 1582 | 1583 | ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ 1584 | Object: "Mutation", 1585 | }) 1586 | 1587 | out := graphql.NewFieldSet(fields) 1588 | var invalids uint32 1589 | for i, field := range fields { 1590 | switch field.Name { 1591 | case "__typename": 1592 | out.Values[i] = graphql.MarshalString("Mutation") 1593 | case "upload": 1594 | out.Values[i] = ec._Mutation_upload(ctx, field) 1595 | if out.Values[i] == graphql.Null { 1596 | invalids++ 1597 | } 1598 | default: 1599 | panic("unknown field " + strconv.Quote(field.Name)) 1600 | } 1601 | } 1602 | out.Dispatch() 1603 | if invalids > 0 { 1604 | return graphql.Null 1605 | } 1606 | return out 1607 | } 1608 | 1609 | var queryImplementors = []string{"Query"} 1610 | 1611 | func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { 1612 | fields := graphql.CollectFields(ec.RequestContext, sel, queryImplementors) 1613 | 1614 | ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ 1615 | Object: "Query", 1616 | }) 1617 | 1618 | out := graphql.NewFieldSet(fields) 1619 | var invalids uint32 1620 | for i, field := range fields { 1621 | switch field.Name { 1622 | case "__typename": 1623 | out.Values[i] = graphql.MarshalString("Query") 1624 | case "hello": 1625 | field := field 1626 | out.Concurrently(i, func() (res graphql.Marshaler) { 1627 | defer func() { 1628 | if r := recover(); r != nil { 1629 | ec.Error(ctx, ec.Recover(ctx, r)) 1630 | } 1631 | }() 1632 | res = ec._Query_hello(ctx, field) 1633 | if res == graphql.Null { 1634 | atomic.AddUint32(&invalids, 1) 1635 | } 1636 | return res 1637 | }) 1638 | case "__type": 1639 | out.Values[i] = ec._Query___type(ctx, field) 1640 | case "__schema": 1641 | out.Values[i] = ec._Query___schema(ctx, field) 1642 | default: 1643 | panic("unknown field " + strconv.Quote(field.Name)) 1644 | } 1645 | } 1646 | out.Dispatch() 1647 | if invalids > 0 { 1648 | return graphql.Null 1649 | } 1650 | return out 1651 | } 1652 | 1653 | var __DirectiveImplementors = []string{"__Directive"} 1654 | 1655 | func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler { 1656 | fields := graphql.CollectFields(ec.RequestContext, sel, __DirectiveImplementors) 1657 | 1658 | out := graphql.NewFieldSet(fields) 1659 | var invalids uint32 1660 | for i, field := range fields { 1661 | switch field.Name { 1662 | case "__typename": 1663 | out.Values[i] = graphql.MarshalString("__Directive") 1664 | case "name": 1665 | out.Values[i] = ec.___Directive_name(ctx, field, obj) 1666 | if out.Values[i] == graphql.Null { 1667 | invalids++ 1668 | } 1669 | case "description": 1670 | out.Values[i] = ec.___Directive_description(ctx, field, obj) 1671 | case "locations": 1672 | out.Values[i] = ec.___Directive_locations(ctx, field, obj) 1673 | if out.Values[i] == graphql.Null { 1674 | invalids++ 1675 | } 1676 | case "args": 1677 | out.Values[i] = ec.___Directive_args(ctx, field, obj) 1678 | if out.Values[i] == graphql.Null { 1679 | invalids++ 1680 | } 1681 | default: 1682 | panic("unknown field " + strconv.Quote(field.Name)) 1683 | } 1684 | } 1685 | out.Dispatch() 1686 | if invalids > 0 { 1687 | return graphql.Null 1688 | } 1689 | return out 1690 | } 1691 | 1692 | var __EnumValueImplementors = []string{"__EnumValue"} 1693 | 1694 | func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler { 1695 | fields := graphql.CollectFields(ec.RequestContext, sel, __EnumValueImplementors) 1696 | 1697 | out := graphql.NewFieldSet(fields) 1698 | var invalids uint32 1699 | for i, field := range fields { 1700 | switch field.Name { 1701 | case "__typename": 1702 | out.Values[i] = graphql.MarshalString("__EnumValue") 1703 | case "name": 1704 | out.Values[i] = ec.___EnumValue_name(ctx, field, obj) 1705 | if out.Values[i] == graphql.Null { 1706 | invalids++ 1707 | } 1708 | case "description": 1709 | out.Values[i] = ec.___EnumValue_description(ctx, field, obj) 1710 | case "isDeprecated": 1711 | out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj) 1712 | if out.Values[i] == graphql.Null { 1713 | invalids++ 1714 | } 1715 | case "deprecationReason": 1716 | out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj) 1717 | default: 1718 | panic("unknown field " + strconv.Quote(field.Name)) 1719 | } 1720 | } 1721 | out.Dispatch() 1722 | if invalids > 0 { 1723 | return graphql.Null 1724 | } 1725 | return out 1726 | } 1727 | 1728 | var __FieldImplementors = []string{"__Field"} 1729 | 1730 | func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler { 1731 | fields := graphql.CollectFields(ec.RequestContext, sel, __FieldImplementors) 1732 | 1733 | out := graphql.NewFieldSet(fields) 1734 | var invalids uint32 1735 | for i, field := range fields { 1736 | switch field.Name { 1737 | case "__typename": 1738 | out.Values[i] = graphql.MarshalString("__Field") 1739 | case "name": 1740 | out.Values[i] = ec.___Field_name(ctx, field, obj) 1741 | if out.Values[i] == graphql.Null { 1742 | invalids++ 1743 | } 1744 | case "description": 1745 | out.Values[i] = ec.___Field_description(ctx, field, obj) 1746 | case "args": 1747 | out.Values[i] = ec.___Field_args(ctx, field, obj) 1748 | if out.Values[i] == graphql.Null { 1749 | invalids++ 1750 | } 1751 | case "type": 1752 | out.Values[i] = ec.___Field_type(ctx, field, obj) 1753 | if out.Values[i] == graphql.Null { 1754 | invalids++ 1755 | } 1756 | case "isDeprecated": 1757 | out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj) 1758 | if out.Values[i] == graphql.Null { 1759 | invalids++ 1760 | } 1761 | case "deprecationReason": 1762 | out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj) 1763 | default: 1764 | panic("unknown field " + strconv.Quote(field.Name)) 1765 | } 1766 | } 1767 | out.Dispatch() 1768 | if invalids > 0 { 1769 | return graphql.Null 1770 | } 1771 | return out 1772 | } 1773 | 1774 | var __InputValueImplementors = []string{"__InputValue"} 1775 | 1776 | func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler { 1777 | fields := graphql.CollectFields(ec.RequestContext, sel, __InputValueImplementors) 1778 | 1779 | out := graphql.NewFieldSet(fields) 1780 | var invalids uint32 1781 | for i, field := range fields { 1782 | switch field.Name { 1783 | case "__typename": 1784 | out.Values[i] = graphql.MarshalString("__InputValue") 1785 | case "name": 1786 | out.Values[i] = ec.___InputValue_name(ctx, field, obj) 1787 | if out.Values[i] == graphql.Null { 1788 | invalids++ 1789 | } 1790 | case "description": 1791 | out.Values[i] = ec.___InputValue_description(ctx, field, obj) 1792 | case "type": 1793 | out.Values[i] = ec.___InputValue_type(ctx, field, obj) 1794 | if out.Values[i] == graphql.Null { 1795 | invalids++ 1796 | } 1797 | case "defaultValue": 1798 | out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj) 1799 | default: 1800 | panic("unknown field " + strconv.Quote(field.Name)) 1801 | } 1802 | } 1803 | out.Dispatch() 1804 | if invalids > 0 { 1805 | return graphql.Null 1806 | } 1807 | return out 1808 | } 1809 | 1810 | var __SchemaImplementors = []string{"__Schema"} 1811 | 1812 | func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler { 1813 | fields := graphql.CollectFields(ec.RequestContext, sel, __SchemaImplementors) 1814 | 1815 | out := graphql.NewFieldSet(fields) 1816 | var invalids uint32 1817 | for i, field := range fields { 1818 | switch field.Name { 1819 | case "__typename": 1820 | out.Values[i] = graphql.MarshalString("__Schema") 1821 | case "types": 1822 | out.Values[i] = ec.___Schema_types(ctx, field, obj) 1823 | if out.Values[i] == graphql.Null { 1824 | invalids++ 1825 | } 1826 | case "queryType": 1827 | out.Values[i] = ec.___Schema_queryType(ctx, field, obj) 1828 | if out.Values[i] == graphql.Null { 1829 | invalids++ 1830 | } 1831 | case "mutationType": 1832 | out.Values[i] = ec.___Schema_mutationType(ctx, field, obj) 1833 | case "subscriptionType": 1834 | out.Values[i] = ec.___Schema_subscriptionType(ctx, field, obj) 1835 | case "directives": 1836 | out.Values[i] = ec.___Schema_directives(ctx, field, obj) 1837 | if out.Values[i] == graphql.Null { 1838 | invalids++ 1839 | } 1840 | default: 1841 | panic("unknown field " + strconv.Quote(field.Name)) 1842 | } 1843 | } 1844 | out.Dispatch() 1845 | if invalids > 0 { 1846 | return graphql.Null 1847 | } 1848 | return out 1849 | } 1850 | 1851 | var __TypeImplementors = []string{"__Type"} 1852 | 1853 | func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler { 1854 | fields := graphql.CollectFields(ec.RequestContext, sel, __TypeImplementors) 1855 | 1856 | out := graphql.NewFieldSet(fields) 1857 | var invalids uint32 1858 | for i, field := range fields { 1859 | switch field.Name { 1860 | case "__typename": 1861 | out.Values[i] = graphql.MarshalString("__Type") 1862 | case "kind": 1863 | out.Values[i] = ec.___Type_kind(ctx, field, obj) 1864 | if out.Values[i] == graphql.Null { 1865 | invalids++ 1866 | } 1867 | case "name": 1868 | out.Values[i] = ec.___Type_name(ctx, field, obj) 1869 | case "description": 1870 | out.Values[i] = ec.___Type_description(ctx, field, obj) 1871 | case "fields": 1872 | out.Values[i] = ec.___Type_fields(ctx, field, obj) 1873 | case "interfaces": 1874 | out.Values[i] = ec.___Type_interfaces(ctx, field, obj) 1875 | case "possibleTypes": 1876 | out.Values[i] = ec.___Type_possibleTypes(ctx, field, obj) 1877 | case "enumValues": 1878 | out.Values[i] = ec.___Type_enumValues(ctx, field, obj) 1879 | case "inputFields": 1880 | out.Values[i] = ec.___Type_inputFields(ctx, field, obj) 1881 | case "ofType": 1882 | out.Values[i] = ec.___Type_ofType(ctx, field, obj) 1883 | default: 1884 | panic("unknown field " + strconv.Quote(field.Name)) 1885 | } 1886 | } 1887 | out.Dispatch() 1888 | if invalids > 0 { 1889 | return graphql.Null 1890 | } 1891 | return out 1892 | } 1893 | 1894 | // endregion **************************** object.gotpl **************************** 1895 | 1896 | // region ***************************** type.gotpl ***************************** 1897 | 1898 | func (ec *executionContext) unmarshalNBoolean2bool(ctx context.Context, v interface{}) (bool, error) { 1899 | return graphql.UnmarshalBoolean(v) 1900 | } 1901 | 1902 | func (ec *executionContext) marshalNBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { 1903 | res := graphql.MarshalBoolean(v) 1904 | if res == graphql.Null { 1905 | if !ec.HasError(graphql.GetResolverContext(ctx)) { 1906 | ec.Errorf(ctx, "must not be null") 1907 | } 1908 | } 1909 | return res 1910 | } 1911 | 1912 | func (ec *executionContext) unmarshalNString2string(ctx context.Context, v interface{}) (string, error) { 1913 | return graphql.UnmarshalString(v) 1914 | } 1915 | 1916 | func (ec *executionContext) marshalNString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { 1917 | res := graphql.MarshalString(v) 1918 | if res == graphql.Null { 1919 | if !ec.HasError(graphql.GetResolverContext(ctx)) { 1920 | ec.Errorf(ctx, "must not be null") 1921 | } 1922 | } 1923 | return res 1924 | } 1925 | 1926 | func (ec *executionContext) unmarshalNUpload2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚐUpload(ctx context.Context, v interface{}) (graphql.Upload, error) { 1927 | return graphql.UnmarshalUpload(v) 1928 | } 1929 | 1930 | func (ec *executionContext) marshalNUpload2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚐUpload(ctx context.Context, sel ast.SelectionSet, v graphql.Upload) graphql.Marshaler { 1931 | res := graphql.MarshalUpload(v) 1932 | if res == graphql.Null { 1933 | if !ec.HasError(graphql.GetResolverContext(ctx)) { 1934 | ec.Errorf(ctx, "must not be null") 1935 | } 1936 | } 1937 | return res 1938 | } 1939 | 1940 | func (ec *executionContext) marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx context.Context, sel ast.SelectionSet, v introspection.Directive) graphql.Marshaler { 1941 | return ec.___Directive(ctx, sel, &v) 1942 | } 1943 | 1944 | func (ec *executionContext) marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx context.Context, sel ast.SelectionSet, v []introspection.Directive) graphql.Marshaler { 1945 | ret := make(graphql.Array, len(v)) 1946 | var wg sync.WaitGroup 1947 | isLen1 := len(v) == 1 1948 | if !isLen1 { 1949 | wg.Add(len(v)) 1950 | } 1951 | for i := range v { 1952 | i := i 1953 | rctx := &graphql.ResolverContext{ 1954 | Index: &i, 1955 | Result: &v[i], 1956 | } 1957 | ctx := graphql.WithResolverContext(ctx, rctx) 1958 | f := func(i int) { 1959 | defer func() { 1960 | if r := recover(); r != nil { 1961 | ec.Error(ctx, ec.Recover(ctx, r)) 1962 | ret = nil 1963 | } 1964 | }() 1965 | if !isLen1 { 1966 | defer wg.Done() 1967 | } 1968 | ret[i] = ec.marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx, sel, v[i]) 1969 | } 1970 | if isLen1 { 1971 | f(i) 1972 | } else { 1973 | go f(i) 1974 | } 1975 | 1976 | } 1977 | wg.Wait() 1978 | return ret 1979 | } 1980 | 1981 | func (ec *executionContext) unmarshalN__DirectiveLocation2string(ctx context.Context, v interface{}) (string, error) { 1982 | return graphql.UnmarshalString(v) 1983 | } 1984 | 1985 | func (ec *executionContext) marshalN__DirectiveLocation2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { 1986 | res := graphql.MarshalString(v) 1987 | if res == graphql.Null { 1988 | if !ec.HasError(graphql.GetResolverContext(ctx)) { 1989 | ec.Errorf(ctx, "must not be null") 1990 | } 1991 | } 1992 | return res 1993 | } 1994 | 1995 | func (ec *executionContext) unmarshalN__DirectiveLocation2ᚕstring(ctx context.Context, v interface{}) ([]string, error) { 1996 | var vSlice []interface{} 1997 | if v != nil { 1998 | if tmp1, ok := v.([]interface{}); ok { 1999 | vSlice = tmp1 2000 | } else { 2001 | vSlice = []interface{}{v} 2002 | } 2003 | } 2004 | var err error 2005 | res := make([]string, len(vSlice)) 2006 | for i := range vSlice { 2007 | res[i], err = ec.unmarshalN__DirectiveLocation2string(ctx, vSlice[i]) 2008 | if err != nil { 2009 | return nil, err 2010 | } 2011 | } 2012 | return res, nil 2013 | } 2014 | 2015 | func (ec *executionContext) marshalN__DirectiveLocation2ᚕstring(ctx context.Context, sel ast.SelectionSet, v []string) graphql.Marshaler { 2016 | ret := make(graphql.Array, len(v)) 2017 | var wg sync.WaitGroup 2018 | isLen1 := len(v) == 1 2019 | if !isLen1 { 2020 | wg.Add(len(v)) 2021 | } 2022 | for i := range v { 2023 | i := i 2024 | rctx := &graphql.ResolverContext{ 2025 | Index: &i, 2026 | Result: &v[i], 2027 | } 2028 | ctx := graphql.WithResolverContext(ctx, rctx) 2029 | f := func(i int) { 2030 | defer func() { 2031 | if r := recover(); r != nil { 2032 | ec.Error(ctx, ec.Recover(ctx, r)) 2033 | ret = nil 2034 | } 2035 | }() 2036 | if !isLen1 { 2037 | defer wg.Done() 2038 | } 2039 | ret[i] = ec.marshalN__DirectiveLocation2string(ctx, sel, v[i]) 2040 | } 2041 | if isLen1 { 2042 | f(i) 2043 | } else { 2044 | go f(i) 2045 | } 2046 | 2047 | } 2048 | wg.Wait() 2049 | return ret 2050 | } 2051 | 2052 | func (ec *executionContext) marshalN__EnumValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx context.Context, sel ast.SelectionSet, v introspection.EnumValue) graphql.Marshaler { 2053 | return ec.___EnumValue(ctx, sel, &v) 2054 | } 2055 | 2056 | func (ec *executionContext) marshalN__Field2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx context.Context, sel ast.SelectionSet, v introspection.Field) graphql.Marshaler { 2057 | return ec.___Field(ctx, sel, &v) 2058 | } 2059 | 2060 | func (ec *executionContext) marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx context.Context, sel ast.SelectionSet, v introspection.InputValue) graphql.Marshaler { 2061 | return ec.___InputValue(ctx, sel, &v) 2062 | } 2063 | 2064 | func (ec *executionContext) marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx context.Context, sel ast.SelectionSet, v []introspection.InputValue) graphql.Marshaler { 2065 | ret := make(graphql.Array, len(v)) 2066 | var wg sync.WaitGroup 2067 | isLen1 := len(v) == 1 2068 | if !isLen1 { 2069 | wg.Add(len(v)) 2070 | } 2071 | for i := range v { 2072 | i := i 2073 | rctx := &graphql.ResolverContext{ 2074 | Index: &i, 2075 | Result: &v[i], 2076 | } 2077 | ctx := graphql.WithResolverContext(ctx, rctx) 2078 | f := func(i int) { 2079 | defer func() { 2080 | if r := recover(); r != nil { 2081 | ec.Error(ctx, ec.Recover(ctx, r)) 2082 | ret = nil 2083 | } 2084 | }() 2085 | if !isLen1 { 2086 | defer wg.Done() 2087 | } 2088 | ret[i] = ec.marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, sel, v[i]) 2089 | } 2090 | if isLen1 { 2091 | f(i) 2092 | } else { 2093 | go f(i) 2094 | } 2095 | 2096 | } 2097 | wg.Wait() 2098 | return ret 2099 | } 2100 | 2101 | func (ec *executionContext) marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v introspection.Type) graphql.Marshaler { 2102 | return ec.___Type(ctx, sel, &v) 2103 | } 2104 | 2105 | func (ec *executionContext) marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v []introspection.Type) graphql.Marshaler { 2106 | ret := make(graphql.Array, len(v)) 2107 | var wg sync.WaitGroup 2108 | isLen1 := len(v) == 1 2109 | if !isLen1 { 2110 | wg.Add(len(v)) 2111 | } 2112 | for i := range v { 2113 | i := i 2114 | rctx := &graphql.ResolverContext{ 2115 | Index: &i, 2116 | Result: &v[i], 2117 | } 2118 | ctx := graphql.WithResolverContext(ctx, rctx) 2119 | f := func(i int) { 2120 | defer func() { 2121 | if r := recover(); r != nil { 2122 | ec.Error(ctx, ec.Recover(ctx, r)) 2123 | ret = nil 2124 | } 2125 | }() 2126 | if !isLen1 { 2127 | defer wg.Done() 2128 | } 2129 | ret[i] = ec.marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, sel, v[i]) 2130 | } 2131 | if isLen1 { 2132 | f(i) 2133 | } else { 2134 | go f(i) 2135 | } 2136 | 2137 | } 2138 | wg.Wait() 2139 | return ret 2140 | } 2141 | 2142 | func (ec *executionContext) marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v *introspection.Type) graphql.Marshaler { 2143 | if v == nil { 2144 | if !ec.HasError(graphql.GetResolverContext(ctx)) { 2145 | ec.Errorf(ctx, "must not be null") 2146 | } 2147 | return graphql.Null 2148 | } 2149 | return ec.___Type(ctx, sel, v) 2150 | } 2151 | 2152 | func (ec *executionContext) unmarshalN__TypeKind2string(ctx context.Context, v interface{}) (string, error) { 2153 | return graphql.UnmarshalString(v) 2154 | } 2155 | 2156 | func (ec *executionContext) marshalN__TypeKind2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { 2157 | res := graphql.MarshalString(v) 2158 | if res == graphql.Null { 2159 | if !ec.HasError(graphql.GetResolverContext(ctx)) { 2160 | ec.Errorf(ctx, "must not be null") 2161 | } 2162 | } 2163 | return res 2164 | } 2165 | 2166 | func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interface{}) (bool, error) { 2167 | return graphql.UnmarshalBoolean(v) 2168 | } 2169 | 2170 | func (ec *executionContext) marshalOBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { 2171 | return graphql.MarshalBoolean(v) 2172 | } 2173 | 2174 | func (ec *executionContext) unmarshalOBoolean2ᚖbool(ctx context.Context, v interface{}) (*bool, error) { 2175 | if v == nil { 2176 | return nil, nil 2177 | } 2178 | res, err := ec.unmarshalOBoolean2bool(ctx, v) 2179 | return &res, err 2180 | } 2181 | 2182 | func (ec *executionContext) marshalOBoolean2ᚖbool(ctx context.Context, sel ast.SelectionSet, v *bool) graphql.Marshaler { 2183 | if v == nil { 2184 | return graphql.Null 2185 | } 2186 | return ec.marshalOBoolean2bool(ctx, sel, *v) 2187 | } 2188 | 2189 | func (ec *executionContext) unmarshalOString2string(ctx context.Context, v interface{}) (string, error) { 2190 | return graphql.UnmarshalString(v) 2191 | } 2192 | 2193 | func (ec *executionContext) marshalOString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { 2194 | return graphql.MarshalString(v) 2195 | } 2196 | 2197 | func (ec *executionContext) unmarshalOString2ᚖstring(ctx context.Context, v interface{}) (*string, error) { 2198 | if v == nil { 2199 | return nil, nil 2200 | } 2201 | res, err := ec.unmarshalOString2string(ctx, v) 2202 | return &res, err 2203 | } 2204 | 2205 | func (ec *executionContext) marshalOString2ᚖstring(ctx context.Context, sel ast.SelectionSet, v *string) graphql.Marshaler { 2206 | if v == nil { 2207 | return graphql.Null 2208 | } 2209 | return ec.marshalOString2string(ctx, sel, *v) 2210 | } 2211 | 2212 | func (ec *executionContext) marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx context.Context, sel ast.SelectionSet, v []introspection.EnumValue) graphql.Marshaler { 2213 | if v == nil { 2214 | return graphql.Null 2215 | } 2216 | ret := make(graphql.Array, len(v)) 2217 | var wg sync.WaitGroup 2218 | isLen1 := len(v) == 1 2219 | if !isLen1 { 2220 | wg.Add(len(v)) 2221 | } 2222 | for i := range v { 2223 | i := i 2224 | rctx := &graphql.ResolverContext{ 2225 | Index: &i, 2226 | Result: &v[i], 2227 | } 2228 | ctx := graphql.WithResolverContext(ctx, rctx) 2229 | f := func(i int) { 2230 | defer func() { 2231 | if r := recover(); r != nil { 2232 | ec.Error(ctx, ec.Recover(ctx, r)) 2233 | ret = nil 2234 | } 2235 | }() 2236 | if !isLen1 { 2237 | defer wg.Done() 2238 | } 2239 | ret[i] = ec.marshalN__EnumValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx, sel, v[i]) 2240 | } 2241 | if isLen1 { 2242 | f(i) 2243 | } else { 2244 | go f(i) 2245 | } 2246 | 2247 | } 2248 | wg.Wait() 2249 | return ret 2250 | } 2251 | 2252 | func (ec *executionContext) marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx context.Context, sel ast.SelectionSet, v []introspection.Field) graphql.Marshaler { 2253 | if v == nil { 2254 | return graphql.Null 2255 | } 2256 | ret := make(graphql.Array, len(v)) 2257 | var wg sync.WaitGroup 2258 | isLen1 := len(v) == 1 2259 | if !isLen1 { 2260 | wg.Add(len(v)) 2261 | } 2262 | for i := range v { 2263 | i := i 2264 | rctx := &graphql.ResolverContext{ 2265 | Index: &i, 2266 | Result: &v[i], 2267 | } 2268 | ctx := graphql.WithResolverContext(ctx, rctx) 2269 | f := func(i int) { 2270 | defer func() { 2271 | if r := recover(); r != nil { 2272 | ec.Error(ctx, ec.Recover(ctx, r)) 2273 | ret = nil 2274 | } 2275 | }() 2276 | if !isLen1 { 2277 | defer wg.Done() 2278 | } 2279 | ret[i] = ec.marshalN__Field2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx, sel, v[i]) 2280 | } 2281 | if isLen1 { 2282 | f(i) 2283 | } else { 2284 | go f(i) 2285 | } 2286 | 2287 | } 2288 | wg.Wait() 2289 | return ret 2290 | } 2291 | 2292 | func (ec *executionContext) marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx context.Context, sel ast.SelectionSet, v []introspection.InputValue) graphql.Marshaler { 2293 | if v == nil { 2294 | return graphql.Null 2295 | } 2296 | ret := make(graphql.Array, len(v)) 2297 | var wg sync.WaitGroup 2298 | isLen1 := len(v) == 1 2299 | if !isLen1 { 2300 | wg.Add(len(v)) 2301 | } 2302 | for i := range v { 2303 | i := i 2304 | rctx := &graphql.ResolverContext{ 2305 | Index: &i, 2306 | Result: &v[i], 2307 | } 2308 | ctx := graphql.WithResolverContext(ctx, rctx) 2309 | f := func(i int) { 2310 | defer func() { 2311 | if r := recover(); r != nil { 2312 | ec.Error(ctx, ec.Recover(ctx, r)) 2313 | ret = nil 2314 | } 2315 | }() 2316 | if !isLen1 { 2317 | defer wg.Done() 2318 | } 2319 | ret[i] = ec.marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, sel, v[i]) 2320 | } 2321 | if isLen1 { 2322 | f(i) 2323 | } else { 2324 | go f(i) 2325 | } 2326 | 2327 | } 2328 | wg.Wait() 2329 | return ret 2330 | } 2331 | 2332 | func (ec *executionContext) marshalO__Schema2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx context.Context, sel ast.SelectionSet, v introspection.Schema) graphql.Marshaler { 2333 | return ec.___Schema(ctx, sel, &v) 2334 | } 2335 | 2336 | func (ec *executionContext) marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx context.Context, sel ast.SelectionSet, v *introspection.Schema) graphql.Marshaler { 2337 | if v == nil { 2338 | return graphql.Null 2339 | } 2340 | return ec.___Schema(ctx, sel, v) 2341 | } 2342 | 2343 | func (ec *executionContext) marshalO__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v introspection.Type) graphql.Marshaler { 2344 | return ec.___Type(ctx, sel, &v) 2345 | } 2346 | 2347 | func (ec *executionContext) marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v []introspection.Type) graphql.Marshaler { 2348 | if v == nil { 2349 | return graphql.Null 2350 | } 2351 | ret := make(graphql.Array, len(v)) 2352 | var wg sync.WaitGroup 2353 | isLen1 := len(v) == 1 2354 | if !isLen1 { 2355 | wg.Add(len(v)) 2356 | } 2357 | for i := range v { 2358 | i := i 2359 | rctx := &graphql.ResolverContext{ 2360 | Index: &i, 2361 | Result: &v[i], 2362 | } 2363 | ctx := graphql.WithResolverContext(ctx, rctx) 2364 | f := func(i int) { 2365 | defer func() { 2366 | if r := recover(); r != nil { 2367 | ec.Error(ctx, ec.Recover(ctx, r)) 2368 | ret = nil 2369 | } 2370 | }() 2371 | if !isLen1 { 2372 | defer wg.Done() 2373 | } 2374 | ret[i] = ec.marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, sel, v[i]) 2375 | } 2376 | if isLen1 { 2377 | f(i) 2378 | } else { 2379 | go f(i) 2380 | } 2381 | 2382 | } 2383 | wg.Wait() 2384 | return ret 2385 | } 2386 | 2387 | func (ec *executionContext) marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v *introspection.Type) graphql.Marshaler { 2388 | if v == nil { 2389 | return graphql.Null 2390 | } 2391 | return ec.___Type(ctx, sel, v) 2392 | } 2393 | 2394 | // endregion ***************************** type.gotpl ***************************** 2395 | -------------------------------------------------------------------------------- /backend/gqlgen.yml: -------------------------------------------------------------------------------- 1 | # .gqlgen.yml example 2 | # 3 | # Refer to https://gqlgen.com/config/ 4 | # for detailed .gqlgen.yml documentation. 5 | 6 | schema: 7 | - schema.graphql 8 | exec: 9 | filename: generated.go 10 | model: 11 | filename: models_gen.go 12 | resolver: 13 | filename: resolver.go 14 | type: Resolver 15 | autobind: [] 16 | 17 | -------------------------------------------------------------------------------- /backend/resolver.go: -------------------------------------------------------------------------------- 1 | package backend 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | "io/ioutil" 7 | "log" 8 | "math/rand" 9 | "os" 10 | "path/filepath" 11 | "time" 12 | 13 | "github.com/99designs/gqlgen/graphql" 14 | ) // THIS CODE IS A STARTING POINT ONLY. IT WILL NOT BE UPDATED WITH SCHEMA CHANGES. 15 | 16 | type Resolver struct{} 17 | 18 | func (r *Resolver) Mutation() MutationResolver { 19 | return &mutationResolver{r} 20 | } 21 | func (r *Resolver) Query() QueryResolver { 22 | return &queryResolver{r} 23 | } 24 | 25 | type mutationResolver struct{ *Resolver } 26 | 27 | func (r *mutationResolver) Upload(ctx context.Context, input graphql.Upload) (string, error) { 28 | 29 | ext := filepath.Ext(input.Filename) 30 | filename := fmt.Sprintf("%s%s", randString(10), ext) 31 | 32 | f, err := os.Create(fmt.Sprintf("temp/%s", filename)) 33 | 34 | if err != nil { 35 | log.Printf("Error: %v", err) 36 | return "", err 37 | } 38 | 39 | content, err := ioutil.ReadAll(input.File) 40 | 41 | if err != nil { 42 | log.Printf("Error: %v", err) 43 | return "", err 44 | } 45 | 46 | _, err = f.Write(content) 47 | 48 | if err != nil { 49 | log.Printf("Error: %v", err) 50 | return "", err 51 | } 52 | 53 | time.Sleep(2 * time.Second) 54 | 55 | return fmt.Sprintf("http://localhost:8080/temp/%s", filename), nil 56 | } 57 | 58 | type queryResolver struct{ *Resolver } 59 | 60 | func (r *queryResolver) Hello(ctx context.Context, name string) (string, error) { 61 | return fmt.Sprintf("Hello, %s", name), nil 62 | } 63 | 64 | var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") 65 | 66 | func randString(n int) string { 67 | b := make([]rune, n) 68 | for i := range b { 69 | b[i] = letterRunes[rand.Intn(len(letterRunes))] 70 | } 71 | return string(b) 72 | } 73 | -------------------------------------------------------------------------------- /backend/schema.graphql: -------------------------------------------------------------------------------- 1 | scalar Upload 2 | 3 | type Query { 4 | hello(name: String!): String! 5 | } 6 | 7 | type Mutation { 8 | upload(file: Upload!): String! 9 | } 10 | -------------------------------------------------------------------------------- /backend/server/server.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "log" 5 | "net/http" 6 | "os" 7 | 8 | "github.com/99designs/gqlgen/handler" 9 | "github.com/mainawycliffe/golang-gqlgen-graphql-upload-example/backend" 10 | ) 11 | 12 | const defaultPort = "8080" 13 | 14 | func main() { 15 | port := os.Getenv("PORT") 16 | if port == "" { 17 | port = defaultPort 18 | } 19 | 20 | http.Handle("/temp/", http.StripPrefix("/temp/", http.FileServer(http.Dir("temp")))) 21 | http.Handle("/", handler.Playground("GraphQL playground", "/query")) 22 | http.Handle("/query", handler.GraphQL(backend.NewExecutableSchema(backend.Config{Resolvers: &backend.Resolver{}}))) 23 | 24 | log.Printf("connect to http://localhost:%s/ for GraphQL playground", port) 25 | log.Fatal(http.ListenAndServe(":"+port, nil)) 26 | } 27 | -------------------------------------------------------------------------------- /backend/server/temp/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/backend/server/temp/.gitkeep -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/demo.gif -------------------------------------------------------------------------------- /docker-compose.debug.yml: -------------------------------------------------------------------------------- 1 | version: '2.1' 2 | 3 | services: 4 | golang-gqlgen-graphql-upload-example: 5 | image: golang-gqlgen-graphql-upload-example 6 | build: 7 | context: . 8 | dockerfile: Dockerfile 9 | ports: 10 | - 8080:8080 11 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2.1' 2 | 3 | services: 4 | golang-gqlgen-graphql-upload-example: 5 | image: golang-gqlgen-graphql-upload-example 6 | build: . 7 | ports: 8 | - 8080:8080 -------------------------------------------------------------------------------- /flutter/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Android related 33 | **/android/**/gradle-wrapper.jar 34 | **/android/.gradle 35 | **/android/captures/ 36 | **/android/gradlew 37 | **/android/gradlew.bat 38 | **/android/local.properties 39 | **/android/**/GeneratedPluginRegistrant.java 40 | 41 | # iOS/XCode related 42 | **/ios/**/*.mode1v3 43 | **/ios/**/*.mode2v3 44 | **/ios/**/*.moved-aside 45 | **/ios/**/*.pbxuser 46 | **/ios/**/*.perspectivev3 47 | **/ios/**/*sync/ 48 | **/ios/**/.sconsign.dblite 49 | **/ios/**/.tags* 50 | **/ios/**/.vagrant/ 51 | **/ios/**/DerivedData/ 52 | **/ios/**/Icon? 53 | **/ios/**/Pods/ 54 | **/ios/**/.symlinks/ 55 | **/ios/**/profile 56 | **/ios/**/xcuserdata 57 | **/ios/.generated/ 58 | **/ios/Flutter/App.framework 59 | **/ios/Flutter/Flutter.framework 60 | **/ios/Flutter/Generated.xcconfig 61 | **/ios/Flutter/app.flx 62 | **/ios/Flutter/app.zip 63 | **/ios/Flutter/flutter_assets/ 64 | **/ios/ServiceDefinitions.json 65 | **/ios/Runner/GeneratedPluginRegistrant.* 66 | 67 | # Exceptions to above rules. 68 | !**/ios/**/default.mode1v3 69 | !**/ios/**/default.mode2v3 70 | !**/ios/**/default.pbxuser 71 | !**/ios/**/default.perspectivev3 72 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 73 | -------------------------------------------------------------------------------- /flutter/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 20e59316b8b8474554b38493b8ca888794b0234a 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /flutter/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workbench.colorCustomizations": {} 3 | } -------------------------------------------------------------------------------- /flutter/README.md: -------------------------------------------------------------------------------- 1 | # flutter_graphql_upload 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /flutter/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 26 | 27 | android { 28 | compileSdkVersion 28 29 | 30 | lintOptions { 31 | disable 'InvalidPackage' 32 | } 33 | 34 | defaultConfig { 35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 36 | applicationId "com.example.flutter_graphql_upload" 37 | minSdkVersion 19 38 | targetSdkVersion 28 39 | versionCode flutterVersionCode.toInteger() 40 | versionName flutterVersionName 41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 42 | } 43 | 44 | buildTypes { 45 | release { 46 | // TODO: Add your own signing config for the release build. 47 | // Signing with the debug keys for now, so `flutter run --release` works. 48 | signingConfig signingConfigs.debug 49 | } 50 | } 51 | } 52 | 53 | flutter { 54 | source '../..' 55 | } 56 | 57 | dependencies { 58 | testImplementation 'junit:junit:4.12' 59 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 60 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 61 | } 62 | -------------------------------------------------------------------------------- /flutter/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 13 | 20 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /flutter/android/app/src/main/java/com/example/flutter_graphql_upload/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.flutter_graphql_upload; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /flutter/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /flutter/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | -------------------------------------------------------------------------------- /flutter/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /flutter/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /flutter/images/chrome.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /flutter/images/firefox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | firefox-logo 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /flutter/images/safari.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | Safari browser logo 22 | 24 | 27 | 31 | 35 | 39 | 43 | 47 | 48 | 51 | 55 | 59 | 60 | 70 | 81 | 89 | 93 | 94 | 102 | 106 | 107 | 108 | 137 | 139 | 140 | 142 | image/svg+xml 143 | 145 | Safari browser logo 146 | 03/04/2018 147 | 148 | 149 | Apple, Inc. 150 | 151 | 152 | 153 | 154 | CMetalCore 155 | 156 | 157 | https://fthmb.tqn.com/gnIDz9kkyZVRsWbJJOlHIYf_42g=/768x0/filters:no_upscale()/Safari-Yosemite-56a01c725f9b58eba4af0427.jpg 158 | 159 | 160 | 161 | 166 | 168 | 174 | 179 | 184 | 189 | 196 | 198 | 215 | 232 | 237 | 238 | 239 | 240 | 241 | -------------------------------------------------------------------------------- /flutter/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /flutter/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /flutter/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /flutter/ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 13 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 14 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 15 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 16 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 17 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 18 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 19 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 20 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 21 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXCopyFilesBuildPhase section */ 25 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 26 | isa = PBXCopyFilesBuildPhase; 27 | buildActionMask = 2147483647; 28 | dstPath = ""; 29 | dstSubfolderSpec = 10; 30 | files = ( 31 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 32 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, 33 | ); 34 | name = "Embed Frameworks"; 35 | runOnlyForDeploymentPostprocessing = 0; 36 | }; 37 | /* End PBXCopyFilesBuildPhase section */ 38 | 39 | /* Begin PBXFileReference section */ 40 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 41 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 42 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 43 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 44 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 45 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 46 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 47 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 48 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 49 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 50 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 52 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 54 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 55 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56 | /* End PBXFileReference section */ 57 | 58 | /* Begin PBXFrameworksBuildPhase section */ 59 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 60 | isa = PBXFrameworksBuildPhase; 61 | buildActionMask = 2147483647; 62 | files = ( 63 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 64 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 65 | ); 66 | runOnlyForDeploymentPostprocessing = 0; 67 | }; 68 | /* End PBXFrameworksBuildPhase section */ 69 | 70 | /* Begin PBXGroup section */ 71 | 9740EEB11CF90186004384FC /* Flutter */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | 3B80C3931E831B6300D905FE /* App.framework */, 75 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 76 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 77 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 78 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 79 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 80 | ); 81 | name = Flutter; 82 | sourceTree = ""; 83 | }; 84 | 97C146E51CF9000F007C117D = { 85 | isa = PBXGroup; 86 | children = ( 87 | 9740EEB11CF90186004384FC /* Flutter */, 88 | 97C146F01CF9000F007C117D /* Runner */, 89 | 97C146EF1CF9000F007C117D /* Products */, 90 | CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, 91 | ); 92 | sourceTree = ""; 93 | }; 94 | 97C146EF1CF9000F007C117D /* Products */ = { 95 | isa = PBXGroup; 96 | children = ( 97 | 97C146EE1CF9000F007C117D /* Runner.app */, 98 | ); 99 | name = Products; 100 | sourceTree = ""; 101 | }; 102 | 97C146F01CF9000F007C117D /* Runner */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 106 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 107 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 108 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 109 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 110 | 97C147021CF9000F007C117D /* Info.plist */, 111 | 97C146F11CF9000F007C117D /* Supporting Files */, 112 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 113 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 114 | ); 115 | path = Runner; 116 | sourceTree = ""; 117 | }; 118 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 97C146F21CF9000F007C117D /* main.m */, 122 | ); 123 | name = "Supporting Files"; 124 | sourceTree = ""; 125 | }; 126 | /* End PBXGroup section */ 127 | 128 | /* Begin PBXNativeTarget section */ 129 | 97C146ED1CF9000F007C117D /* Runner */ = { 130 | isa = PBXNativeTarget; 131 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 132 | buildPhases = ( 133 | 9740EEB61CF901F6004384FC /* Run Script */, 134 | 97C146EA1CF9000F007C117D /* Sources */, 135 | 97C146EB1CF9000F007C117D /* Frameworks */, 136 | 97C146EC1CF9000F007C117D /* Resources */, 137 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 138 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 139 | ); 140 | buildRules = ( 141 | ); 142 | dependencies = ( 143 | ); 144 | name = Runner; 145 | productName = Runner; 146 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 147 | productType = "com.apple.product-type.application"; 148 | }; 149 | /* End PBXNativeTarget section */ 150 | 151 | /* Begin PBXProject section */ 152 | 97C146E61CF9000F007C117D /* Project object */ = { 153 | isa = PBXProject; 154 | attributes = { 155 | LastUpgradeCheck = 1020; 156 | ORGANIZATIONNAME = "The Chromium Authors"; 157 | TargetAttributes = { 158 | 97C146ED1CF9000F007C117D = { 159 | CreatedOnToolsVersion = 7.3.1; 160 | }; 161 | }; 162 | }; 163 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 164 | compatibilityVersion = "Xcode 3.2"; 165 | developmentRegion = en; 166 | hasScannedForEncodings = 0; 167 | knownRegions = ( 168 | en, 169 | Base, 170 | ); 171 | mainGroup = 97C146E51CF9000F007C117D; 172 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 173 | projectDirPath = ""; 174 | projectRoot = ""; 175 | targets = ( 176 | 97C146ED1CF9000F007C117D /* Runner */, 177 | ); 178 | }; 179 | /* End PBXProject section */ 180 | 181 | /* Begin PBXResourcesBuildPhase section */ 182 | 97C146EC1CF9000F007C117D /* Resources */ = { 183 | isa = PBXResourcesBuildPhase; 184 | buildActionMask = 2147483647; 185 | files = ( 186 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 187 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 188 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 189 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 190 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 191 | ); 192 | runOnlyForDeploymentPostprocessing = 0; 193 | }; 194 | /* End PBXResourcesBuildPhase section */ 195 | 196 | /* Begin PBXShellScriptBuildPhase section */ 197 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 198 | isa = PBXShellScriptBuildPhase; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | ); 202 | inputPaths = ( 203 | ); 204 | name = "Thin Binary"; 205 | outputPaths = ( 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | shellPath = /bin/sh; 209 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 210 | }; 211 | 9740EEB61CF901F6004384FC /* Run Script */ = { 212 | isa = PBXShellScriptBuildPhase; 213 | buildActionMask = 2147483647; 214 | files = ( 215 | ); 216 | inputPaths = ( 217 | ); 218 | name = "Run Script"; 219 | outputPaths = ( 220 | ); 221 | runOnlyForDeploymentPostprocessing = 0; 222 | shellPath = /bin/sh; 223 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 224 | }; 225 | /* End PBXShellScriptBuildPhase section */ 226 | 227 | /* Begin PBXSourcesBuildPhase section */ 228 | 97C146EA1CF9000F007C117D /* Sources */ = { 229 | isa = PBXSourcesBuildPhase; 230 | buildActionMask = 2147483647; 231 | files = ( 232 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, 233 | 97C146F31CF9000F007C117D /* main.m in Sources */, 234 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 235 | ); 236 | runOnlyForDeploymentPostprocessing = 0; 237 | }; 238 | /* End PBXSourcesBuildPhase section */ 239 | 240 | /* Begin PBXVariantGroup section */ 241 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 242 | isa = PBXVariantGroup; 243 | children = ( 244 | 97C146FB1CF9000F007C117D /* Base */, 245 | ); 246 | name = Main.storyboard; 247 | sourceTree = ""; 248 | }; 249 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 250 | isa = PBXVariantGroup; 251 | children = ( 252 | 97C147001CF9000F007C117D /* Base */, 253 | ); 254 | name = LaunchScreen.storyboard; 255 | sourceTree = ""; 256 | }; 257 | /* End PBXVariantGroup section */ 258 | 259 | /* Begin XCBuildConfiguration section */ 260 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 261 | isa = XCBuildConfiguration; 262 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 263 | buildSettings = { 264 | ALWAYS_SEARCH_USER_PATHS = NO; 265 | CLANG_ANALYZER_NONNULL = YES; 266 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 267 | CLANG_CXX_LIBRARY = "libc++"; 268 | CLANG_ENABLE_MODULES = YES; 269 | CLANG_ENABLE_OBJC_ARC = YES; 270 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 271 | CLANG_WARN_BOOL_CONVERSION = YES; 272 | CLANG_WARN_COMMA = YES; 273 | CLANG_WARN_CONSTANT_CONVERSION = YES; 274 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 275 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 276 | CLANG_WARN_EMPTY_BODY = YES; 277 | CLANG_WARN_ENUM_CONVERSION = YES; 278 | CLANG_WARN_INFINITE_RECURSION = YES; 279 | CLANG_WARN_INT_CONVERSION = YES; 280 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 281 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 282 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 283 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 284 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 285 | CLANG_WARN_STRICT_PROTOTYPES = YES; 286 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 287 | CLANG_WARN_UNREACHABLE_CODE = YES; 288 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 289 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 290 | COPY_PHASE_STRIP = NO; 291 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 292 | ENABLE_NS_ASSERTIONS = NO; 293 | ENABLE_STRICT_OBJC_MSGSEND = YES; 294 | GCC_C_LANGUAGE_STANDARD = gnu99; 295 | GCC_NO_COMMON_BLOCKS = YES; 296 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 297 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 298 | GCC_WARN_UNDECLARED_SELECTOR = YES; 299 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 300 | GCC_WARN_UNUSED_FUNCTION = YES; 301 | GCC_WARN_UNUSED_VARIABLE = YES; 302 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 303 | MTL_ENABLE_DEBUG_INFO = NO; 304 | SDKROOT = iphoneos; 305 | TARGETED_DEVICE_FAMILY = "1,2"; 306 | VALIDATE_PRODUCT = YES; 307 | }; 308 | name = Profile; 309 | }; 310 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 311 | isa = XCBuildConfiguration; 312 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 313 | buildSettings = { 314 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 315 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 316 | DEVELOPMENT_TEAM = S8QB4VV633; 317 | ENABLE_BITCODE = NO; 318 | FRAMEWORK_SEARCH_PATHS = ( 319 | "$(inherited)", 320 | "$(PROJECT_DIR)/Flutter", 321 | ); 322 | INFOPLIST_FILE = Runner/Info.plist; 323 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 324 | LIBRARY_SEARCH_PATHS = ( 325 | "$(inherited)", 326 | "$(PROJECT_DIR)/Flutter", 327 | ); 328 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterGraphqlUpload; 329 | PRODUCT_NAME = "$(TARGET_NAME)"; 330 | VERSIONING_SYSTEM = "apple-generic"; 331 | }; 332 | name = Profile; 333 | }; 334 | 97C147031CF9000F007C117D /* Debug */ = { 335 | isa = XCBuildConfiguration; 336 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 337 | buildSettings = { 338 | ALWAYS_SEARCH_USER_PATHS = NO; 339 | CLANG_ANALYZER_NONNULL = YES; 340 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 341 | CLANG_CXX_LIBRARY = "libc++"; 342 | CLANG_ENABLE_MODULES = YES; 343 | CLANG_ENABLE_OBJC_ARC = YES; 344 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 345 | CLANG_WARN_BOOL_CONVERSION = YES; 346 | CLANG_WARN_COMMA = YES; 347 | CLANG_WARN_CONSTANT_CONVERSION = YES; 348 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 349 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 350 | CLANG_WARN_EMPTY_BODY = YES; 351 | CLANG_WARN_ENUM_CONVERSION = YES; 352 | CLANG_WARN_INFINITE_RECURSION = YES; 353 | CLANG_WARN_INT_CONVERSION = YES; 354 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 355 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 356 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 357 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 358 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 359 | CLANG_WARN_STRICT_PROTOTYPES = YES; 360 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 361 | CLANG_WARN_UNREACHABLE_CODE = YES; 362 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 363 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 364 | COPY_PHASE_STRIP = NO; 365 | DEBUG_INFORMATION_FORMAT = dwarf; 366 | ENABLE_STRICT_OBJC_MSGSEND = YES; 367 | ENABLE_TESTABILITY = YES; 368 | GCC_C_LANGUAGE_STANDARD = gnu99; 369 | GCC_DYNAMIC_NO_PIC = NO; 370 | GCC_NO_COMMON_BLOCKS = YES; 371 | GCC_OPTIMIZATION_LEVEL = 0; 372 | GCC_PREPROCESSOR_DEFINITIONS = ( 373 | "DEBUG=1", 374 | "$(inherited)", 375 | ); 376 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 377 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 378 | GCC_WARN_UNDECLARED_SELECTOR = YES; 379 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 380 | GCC_WARN_UNUSED_FUNCTION = YES; 381 | GCC_WARN_UNUSED_VARIABLE = YES; 382 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 383 | MTL_ENABLE_DEBUG_INFO = YES; 384 | ONLY_ACTIVE_ARCH = YES; 385 | SDKROOT = iphoneos; 386 | TARGETED_DEVICE_FAMILY = "1,2"; 387 | }; 388 | name = Debug; 389 | }; 390 | 97C147041CF9000F007C117D /* Release */ = { 391 | isa = XCBuildConfiguration; 392 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 393 | buildSettings = { 394 | ALWAYS_SEARCH_USER_PATHS = NO; 395 | CLANG_ANALYZER_NONNULL = YES; 396 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 397 | CLANG_CXX_LIBRARY = "libc++"; 398 | CLANG_ENABLE_MODULES = YES; 399 | CLANG_ENABLE_OBJC_ARC = YES; 400 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 401 | CLANG_WARN_BOOL_CONVERSION = YES; 402 | CLANG_WARN_COMMA = YES; 403 | CLANG_WARN_CONSTANT_CONVERSION = YES; 404 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 405 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 406 | CLANG_WARN_EMPTY_BODY = YES; 407 | CLANG_WARN_ENUM_CONVERSION = YES; 408 | CLANG_WARN_INFINITE_RECURSION = YES; 409 | CLANG_WARN_INT_CONVERSION = YES; 410 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 411 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 412 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 413 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 414 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 415 | CLANG_WARN_STRICT_PROTOTYPES = YES; 416 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 417 | CLANG_WARN_UNREACHABLE_CODE = YES; 418 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 419 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 420 | COPY_PHASE_STRIP = NO; 421 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 422 | ENABLE_NS_ASSERTIONS = NO; 423 | ENABLE_STRICT_OBJC_MSGSEND = YES; 424 | GCC_C_LANGUAGE_STANDARD = gnu99; 425 | GCC_NO_COMMON_BLOCKS = YES; 426 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 427 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 428 | GCC_WARN_UNDECLARED_SELECTOR = YES; 429 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 430 | GCC_WARN_UNUSED_FUNCTION = YES; 431 | GCC_WARN_UNUSED_VARIABLE = YES; 432 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 433 | MTL_ENABLE_DEBUG_INFO = NO; 434 | SDKROOT = iphoneos; 435 | TARGETED_DEVICE_FAMILY = "1,2"; 436 | VALIDATE_PRODUCT = YES; 437 | }; 438 | name = Release; 439 | }; 440 | 97C147061CF9000F007C117D /* Debug */ = { 441 | isa = XCBuildConfiguration; 442 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 443 | buildSettings = { 444 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 445 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 446 | ENABLE_BITCODE = NO; 447 | FRAMEWORK_SEARCH_PATHS = ( 448 | "$(inherited)", 449 | "$(PROJECT_DIR)/Flutter", 450 | ); 451 | INFOPLIST_FILE = Runner/Info.plist; 452 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 453 | LIBRARY_SEARCH_PATHS = ( 454 | "$(inherited)", 455 | "$(PROJECT_DIR)/Flutter", 456 | ); 457 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterGraphqlUpload; 458 | PRODUCT_NAME = "$(TARGET_NAME)"; 459 | VERSIONING_SYSTEM = "apple-generic"; 460 | }; 461 | name = Debug; 462 | }; 463 | 97C147071CF9000F007C117D /* Release */ = { 464 | isa = XCBuildConfiguration; 465 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 466 | buildSettings = { 467 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 468 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 469 | ENABLE_BITCODE = NO; 470 | FRAMEWORK_SEARCH_PATHS = ( 471 | "$(inherited)", 472 | "$(PROJECT_DIR)/Flutter", 473 | ); 474 | INFOPLIST_FILE = Runner/Info.plist; 475 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 476 | LIBRARY_SEARCH_PATHS = ( 477 | "$(inherited)", 478 | "$(PROJECT_DIR)/Flutter", 479 | ); 480 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterGraphqlUpload; 481 | PRODUCT_NAME = "$(TARGET_NAME)"; 482 | VERSIONING_SYSTEM = "apple-generic"; 483 | }; 484 | name = Release; 485 | }; 486 | /* End XCBuildConfiguration section */ 487 | 488 | /* Begin XCConfigurationList section */ 489 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 490 | isa = XCConfigurationList; 491 | buildConfigurations = ( 492 | 97C147031CF9000F007C117D /* Debug */, 493 | 97C147041CF9000F007C117D /* Release */, 494 | 249021D3217E4FDB00AE95B9 /* Profile */, 495 | ); 496 | defaultConfigurationIsVisible = 0; 497 | defaultConfigurationName = Release; 498 | }; 499 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 500 | isa = XCConfigurationList; 501 | buildConfigurations = ( 502 | 97C147061CF9000F007C117D /* Debug */, 503 | 97C147071CF9000F007C117D /* Release */, 504 | 249021D4217E4FDB00AE95B9 /* Profile */, 505 | ); 506 | defaultConfigurationIsVisible = 0; 507 | defaultConfigurationName = Release; 508 | }; 509 | /* End XCConfigurationList section */ 510 | }; 511 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 512 | } 513 | -------------------------------------------------------------------------------- /flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /flutter/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /flutter/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mainawycliffe/flutter-graphql-upload-example/687b45e889eafbed8b7a658769c5741f97f6b02c/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /flutter/ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /flutter/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /flutter/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | flutter_graphql_upload 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /flutter/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:graphql_flutter/graphql_flutter.dart'; 5 | import 'package:http/http.dart'; 6 | import 'package:http_parser/http_parser.dart'; 7 | import 'package:image_picker/image_picker.dart'; 8 | 9 | String get host => Platform.isAndroid ? '10.0.2.2' : 'localhost'; 10 | 11 | const uploadImage = r""" 12 | mutation($file: Upload!) { 13 | upload(file: $file) 14 | } 15 | """; 16 | 17 | void main() { 18 | runApp(MyApp()); 19 | } 20 | 21 | class MyApp extends StatelessWidget { 22 | @override 23 | Widget build(BuildContext context) { 24 | final httpLink = HttpLink( 25 | uri: 'http://$host:8080/query', 26 | ); 27 | 28 | var client = ValueNotifier( 29 | GraphQLClient( 30 | cache: InMemoryCache(), 31 | link: httpLink, 32 | ), 33 | ); 34 | 35 | return MaterialApp( 36 | title: 'Flutter Demo', 37 | theme: ThemeData( 38 | primarySwatch: Colors.blue, 39 | ), 40 | home: GraphQLProvider( 41 | client: client, 42 | child: Scaffold( 43 | appBar: AppBar( 44 | title: Text("Graphql Upload Image Demo"), 45 | ), 46 | body: MyHomePage(), 47 | ), 48 | ), 49 | ); 50 | } 51 | } 52 | 53 | class MyHomePage extends StatefulWidget { 54 | MyHomePage(); 55 | 56 | @override 57 | _MyHomePageState createState() => _MyHomePageState(); 58 | } 59 | 60 | class _MyHomePageState extends State { 61 | File _image; 62 | bool _uploadInProgress = false; 63 | 64 | _uploadImage(BuildContext context) async { 65 | setState(() { 66 | _uploadInProgress = true; 67 | }); 68 | 69 | var byteData = _image.readAsBytesSync(); 70 | 71 | var multipartFile = MultipartFile.fromBytes( 72 | 'photo', 73 | byteData, 74 | filename: '${DateTime.now().second}.jpg', 75 | contentType: MediaType("image", "jpg"), 76 | ); 77 | 78 | var opts = MutationOptions( 79 | document: uploadImage, 80 | variables: { 81 | "file": multipartFile, 82 | }, 83 | ); 84 | 85 | var client = GraphQLProvider.of(context).value; 86 | 87 | var results = await client.mutate(opts); 88 | 89 | setState(() { 90 | _uploadInProgress = false; 91 | }); 92 | 93 | var message = results.hasErrors 94 | ? '${results.errors.join(", ")}' 95 | : "Image was uploaded successfully!"; 96 | 97 | final snackBar = SnackBar(content: Text(message)); 98 | Scaffold.of(context).showSnackBar(snackBar); 99 | } 100 | 101 | Future selectImage() async { 102 | var image = await ImagePicker.pickImage(source: ImageSource.gallery); 103 | 104 | setState(() { 105 | _image = image; 106 | }); 107 | } 108 | 109 | @override 110 | Widget build(BuildContext context) { 111 | return Container( 112 | child: Column( 113 | // mainAxisAlignment: MainAxisAlignment.center, 114 | mainAxisSize: MainAxisSize.max, 115 | children: [ 116 | if (_image != null) 117 | Flexible( 118 | flex: 9, 119 | child: Image.file(_image), 120 | ) 121 | else 122 | Flexible( 123 | flex: 9, 124 | child: Center( 125 | child: Text("No Image Selected"), 126 | ), 127 | ), 128 | Flexible( 129 | child: Row( 130 | mainAxisAlignment: MainAxisAlignment.center, 131 | mainAxisSize: MainAxisSize.max, 132 | children: [ 133 | FlatButton( 134 | child: Row( 135 | mainAxisAlignment: MainAxisAlignment.center, 136 | mainAxisSize: MainAxisSize.min, 137 | children: [ 138 | Icon(Icons.photo_library), 139 | SizedBox( 140 | width: 5, 141 | ), 142 | Text("Select File"), 143 | ], 144 | ), 145 | onPressed: () => selectImage(), 146 | ), 147 | if (_image != null) 148 | Mutation( 149 | options: MutationOptions( 150 | document: uploadImage, 151 | ), 152 | builder: (RunMutation runMutation, QueryResult result) { 153 | return FlatButton( 154 | child: _isLoadingInProgress(), 155 | onPressed: () { 156 | setState(() { 157 | _uploadInProgress = true; 158 | }); 159 | 160 | var byteData = _image.readAsBytesSync(); 161 | 162 | var multipartFile = MultipartFile.fromBytes( 163 | 'photo', 164 | byteData, 165 | filename: '${DateTime.now().second}.jpg', 166 | contentType: MediaType("image", "jpg"), 167 | ); 168 | 169 | runMutation({ 170 | "file": multipartFile, 171 | }); 172 | }, 173 | ); 174 | }, 175 | onCompleted: (d) { 176 | print(d); 177 | setState(() { 178 | _uploadInProgress = false; 179 | }); 180 | }, 181 | update: (cache, results) { 182 | var message = results.hasErrors 183 | ? '${results.errors.join(", ")}' 184 | : "Image was uploaded successfully!"; 185 | 186 | final snackBar = SnackBar(content: Text(message)); 187 | Scaffold.of(context).showSnackBar(snackBar); 188 | }, 189 | ), 190 | // if (_image != null) 191 | // FlatButton( 192 | // child: _isLoadingInProgress(), 193 | // onPressed: () => _uploadImage(context), 194 | // ), 195 | ], 196 | ), 197 | ) 198 | ], 199 | ), 200 | ); 201 | } 202 | 203 | Widget _isLoadingInProgress() { 204 | return _uploadInProgress 205 | ? CircularProgressIndicator() 206 | : Row( 207 | mainAxisSize: MainAxisSize.min, 208 | children: [ 209 | Icon(Icons.file_upload), 210 | SizedBox( 211 | width: 5, 212 | ), 213 | Text("Upload File"), 214 | ], 215 | ); 216 | } 217 | } 218 | -------------------------------------------------------------------------------- /flutter/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.2.0" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "1.0.4" 18 | charcode: 19 | dependency: transitive 20 | description: 21 | name: charcode 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.1.2" 25 | collection: 26 | dependency: transitive 27 | description: 28 | name: collection 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.14.11" 32 | convert: 33 | dependency: transitive 34 | description: 35 | name: convert 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "2.1.1" 39 | crypto: 40 | dependency: transitive 41 | description: 42 | name: crypto 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.0.6" 46 | cupertino_icons: 47 | dependency: "direct main" 48 | description: 49 | name: cupertino_icons 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "0.1.2" 53 | flutter: 54 | dependency: "direct main" 55 | description: flutter 56 | source: sdk 57 | version: "0.0.0" 58 | flutter_test: 59 | dependency: "direct dev" 60 | description: flutter 61 | source: sdk 62 | version: "0.0.0" 63 | graphql: 64 | dependency: transitive 65 | description: 66 | name: graphql 67 | url: "https://pub.dartlang.org" 68 | source: hosted 69 | version: "2.0.0" 70 | graphql_flutter: 71 | dependency: "direct main" 72 | description: 73 | name: graphql_flutter 74 | url: "https://pub.dartlang.org" 75 | source: hosted 76 | version: "2.0.0" 77 | graphql_parser: 78 | dependency: transitive 79 | description: 80 | name: graphql_parser 81 | url: "https://pub.dartlang.org" 82 | source: hosted 83 | version: "1.1.3" 84 | http: 85 | dependency: transitive 86 | description: 87 | name: http 88 | url: "https://pub.dartlang.org" 89 | source: hosted 90 | version: "0.12.0+2" 91 | http_parser: 92 | dependency: transitive 93 | description: 94 | name: http_parser 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "3.1.3" 98 | image_picker: 99 | dependency: "direct main" 100 | description: 101 | name: image_picker 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "0.6.0+20" 105 | matcher: 106 | dependency: transitive 107 | description: 108 | name: matcher 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "0.12.5" 112 | meta: 113 | dependency: transitive 114 | description: 115 | name: meta 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "1.1.6" 119 | mime: 120 | dependency: transitive 121 | description: 122 | name: mime 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "0.9.6+3" 126 | path: 127 | dependency: transitive 128 | description: 129 | name: path 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "1.6.2" 133 | path_provider: 134 | dependency: transitive 135 | description: 136 | name: path_provider 137 | url: "https://pub.dartlang.org" 138 | source: hosted 139 | version: "1.2.0" 140 | pedantic: 141 | dependency: transitive 142 | description: 143 | name: pedantic 144 | url: "https://pub.dartlang.org" 145 | source: hosted 146 | version: "1.7.0" 147 | quiver: 148 | dependency: transitive 149 | description: 150 | name: quiver 151 | url: "https://pub.dartlang.org" 152 | source: hosted 153 | version: "2.0.3" 154 | rxdart: 155 | dependency: transitive 156 | description: 157 | name: rxdart 158 | url: "https://pub.dartlang.org" 159 | source: hosted 160 | version: "0.22.1" 161 | sky_engine: 162 | dependency: transitive 163 | description: flutter 164 | source: sdk 165 | version: "0.0.99" 166 | source_span: 167 | dependency: transitive 168 | description: 169 | name: source_span 170 | url: "https://pub.dartlang.org" 171 | source: hosted 172 | version: "1.5.5" 173 | stack_trace: 174 | dependency: transitive 175 | description: 176 | name: stack_trace 177 | url: "https://pub.dartlang.org" 178 | source: hosted 179 | version: "1.9.3" 180 | stream_channel: 181 | dependency: transitive 182 | description: 183 | name: stream_channel 184 | url: "https://pub.dartlang.org" 185 | source: hosted 186 | version: "2.0.0" 187 | string_scanner: 188 | dependency: transitive 189 | description: 190 | name: string_scanner 191 | url: "https://pub.dartlang.org" 192 | source: hosted 193 | version: "1.0.4" 194 | term_glyph: 195 | dependency: transitive 196 | description: 197 | name: term_glyph 198 | url: "https://pub.dartlang.org" 199 | source: hosted 200 | version: "1.1.0" 201 | test_api: 202 | dependency: transitive 203 | description: 204 | name: test_api 205 | url: "https://pub.dartlang.org" 206 | source: hosted 207 | version: "0.2.5" 208 | typed_data: 209 | dependency: transitive 210 | description: 211 | name: typed_data 212 | url: "https://pub.dartlang.org" 213 | source: hosted 214 | version: "1.1.6" 215 | uuid_enhanced: 216 | dependency: transitive 217 | description: 218 | name: uuid_enhanced 219 | url: "https://pub.dartlang.org" 220 | source: hosted 221 | version: "3.0.2" 222 | vector_math: 223 | dependency: transitive 224 | description: 225 | name: vector_math 226 | url: "https://pub.dartlang.org" 227 | source: hosted 228 | version: "2.0.8" 229 | websocket: 230 | dependency: transitive 231 | description: 232 | name: websocket 233 | url: "https://pub.dartlang.org" 234 | source: hosted 235 | version: "0.0.5" 236 | sdks: 237 | dart: ">=2.2.2 <3.0.0" 238 | flutter: ">=1.5.0 <2.0.0" 239 | -------------------------------------------------------------------------------- /flutter/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_graphql_upload 2 | description: A new Flutter project. 3 | 4 | version: 1.0.0+1 5 | 6 | environment: 7 | sdk: ">=2.2.2 <3.0.0" 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | 13 | graphql_flutter: ^2.0.0 14 | cupertino_icons: ^0.1.2 15 | image_picker: ^0.6.0 16 | 17 | dev_dependencies: 18 | flutter_test: 19 | sdk: flutter 20 | 21 | flutter: 22 | uses-material-design: true 23 | assets: 24 | - images/chrome.svg 25 | - images/firefox.svg 26 | - images/safari.svg -------------------------------------------------------------------------------- /flutter/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:flutter_graphql_upload/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mainawycliffe/golang-gqlgen-graphql-upload-example 2 | 3 | go 1.12 4 | 5 | require ( 6 | github.com/99designs/gqlgen v0.9.1 7 | github.com/vektah/gqlparser v1.1.2 8 | ) 9 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/99designs/gqlgen v0.9.1 h1:YqEOgwamerz8mNGwqL5fX/SJS3+TdQ8zE02jhHIwjx0= 2 | github.com/99designs/gqlgen v0.9.1/go.mod h1:HrrG7ic9EgLPsULxsZh/Ti+p0HNWgR3XRuvnD0pb5KY= 3 | github.com/agnivade/levenshtein v1.0.1 h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ= 4 | github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= 5 | github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= 6 | github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= 7 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 8 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 9 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 10 | github.com/go-chi/chi v3.3.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= 11 | github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 12 | github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= 13 | github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= 14 | github.com/gorilla/websocket v1.2.0 h1:VJtLvh6VQym50czpZzx07z/kw9EgAxI3x1ZB8taTMQQ= 15 | github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= 16 | github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= 17 | github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= 18 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 19 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 20 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 21 | github.com/mitchellh/mapstructure v0.0.0-20180203102830-a4e142e9c047/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= 22 | github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= 23 | github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= 24 | github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= 25 | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 26 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 27 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 28 | github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= 29 | github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= 30 | github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= 31 | github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= 32 | github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= 33 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 34 | github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 35 | github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= 36 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 37 | github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= 38 | github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= 39 | github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U= 40 | github.com/vektah/gqlparser v1.1.2 h1:ZsyLGn7/7jDNI+y4SEhI4yAxRChlv15pUHMjijT+e68= 41 | github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= 42 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 43 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 44 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 45 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 46 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 47 | golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 48 | golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd h1:oMEQDWVXVNpceQoVd1JN3CQ7LYJJzs5qWqZIUcxXHHw= 49 | golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= 50 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 51 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 52 | gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= 53 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 54 | sourcegraph.com/sourcegraph/appdash v0.0.0-20180110180208-2cc67fd64755/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= 55 | sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k= 56 | --------------------------------------------------------------------------------