├── --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 |
106 |
--------------------------------------------------------------------------------
/flutter/images/firefox.svg:
--------------------------------------------------------------------------------
1 |
139 |
--------------------------------------------------------------------------------
/flutter/images/safari.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 |
--------------------------------------------------------------------------------