├── .gitignore
├── .gitmodules
├── Client
├── Fireflies.GraphQL.Client.Console
│ ├── ConsoleLogger.cs
│ ├── Fireflies.GraphQL.Client.Console.csproj
│ ├── Fireflies.GraphQL.Client.Console.nuspec
│ ├── Generate
│ │ ├── GenerateHandler.cs
│ │ └── GenerateOptions.cs
│ ├── Program.cs
│ ├── ProjectInitHandler.cs
│ ├── ProjectInitOptions.cs
│ ├── Properties
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ └── launchSettings.json
│ ├── README.md
│ ├── ResultCode.cs
│ ├── Schema
│ │ ├── ClientInitOptions.cs
│ │ ├── ClientUpdateOptions.cs
│ │ ├── ISchemaOptions.cs
│ │ └── SchemaHandler.cs
│ └── build.sh
└── Fireflies.GraphQL.Client.Generator
│ ├── ASTNodeExtensions.cs
│ ├── Builders
│ ├── ClientBuilder.cs
│ ├── FieldMatch.cs
│ ├── FragmentTypeBuilder.cs
│ ├── ITypeBuilder.cs
│ ├── OperationResultTypeBuilder.cs
│ ├── RawTypeBuilder.cs
│ ├── ResultTypeBuilderBase.cs
│ ├── SchemaFieldExtensions.cs
│ ├── SubResultTypeBuilder.cs
│ └── TypeBuilder.cs
│ ├── ClientGenerator.cs
│ ├── ClientSettings.cs
│ ├── Fireflies.GraphQL.Client.Generator.csproj
│ ├── FragmentAccessor.cs
│ ├── GeneratorSettings.cs
│ ├── GraphQLGeneratorContext.cs
│ ├── GraphQLGeneratorException.cs
│ ├── GraphQLRootGeneratorContext.cs
│ ├── QueryCreator.cs
│ ├── Schema
│ ├── SchemaEnumValue.cs
│ ├── SchemaField.cs
│ ├── SchemaHelper.cs
│ ├── SchemaInputValue.cs
│ ├── SchemaType.cs
│ └── SchemaTypeKind.cs
│ ├── Shared
│ ├── Builder
│ │ ├── HttpBuilder.cs
│ │ └── WebSocketBuilder.cs
│ ├── Error
│ │ ├── ClientError.cs
│ │ ├── IClientError.cs
│ │ └── Location.cs
│ ├── GraphQLGlobalContext.cs
│ ├── GraphQLInt.cs
│ ├── GraphQLIntConverter.cs
│ ├── IGraphQLClient.cs
│ ├── IGraphQLGlobalContext.cs
│ ├── IOperationResult.cs
│ └── Subscription
│ │ ├── ConnectionNotAcceptedException.cs
│ │ ├── GraphQLSubscriber.cs
│ │ ├── GraphQLSubscription.cs
│ │ ├── GraphQLWsClient.cs
│ │ ├── SocketClosedException.cs
│ │ └── SubscriptionException.cs
│ ├── SharedGenerator.cs
│ └── TypeMapper.cs
├── Demos
├── Client
│ └── Fireflies.GraphQL.Demos.Client.Demo
│ │ ├── Fireflies.GraphQL.ClientDemo.csproj.DotSettings
│ │ ├── Fireflies.GraphQL.Demos.Client.Demo.csproj
│ │ ├── GraphQL
│ │ ├── GraphQLDemo
│ │ │ ├── GraphQLDemoClient.g.cs
│ │ │ ├── Queries.graphql
│ │ │ ├── Schema.json
│ │ │ └── Settings.json
│ │ ├── GraphQLShared.g.cs
│ │ └── Settings.json
│ │ └── Program.cs
└── Server
│ ├── Fireflies.GraphQL.Demos.Server.Api
│ ├── Fireflies.GraphQL.Demos.Server.Api.csproj
│ ├── Program.cs
│ └── Properties
│ │ └── launchSettings.json
│ ├── Fireflies.GraphQL.Demos.Server.Authors
│ ├── Authors
│ │ ├── AuthorOperations.cs
│ │ ├── AuthorsFilter.cs
│ │ ├── IAuthor.cs
│ │ ├── IBook.cs
│ │ ├── MustBeAllowedToUpdateAuthorAttribute.cs
│ │ ├── PseudnonymAuthor.cs
│ │ ├── RealAuthor.cs
│ │ └── UpdateAuthorInput.cs
│ ├── Fireflies.GraphQL.Demos.Server.Authors.csproj
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── RequestContainerBuilder.cs
│ ├── User.cs
│ ├── appsettings.Development.json
│ └── appsettings.json
│ └── Fireflies.GraphQL.Demos.Server.Books
│ ├── AddBookInput.cs
│ ├── Blogs
│ ├── Blog.cs
│ ├── BlogOperations.cs
│ ├── BloggingContext.cs
│ └── Post.cs
│ ├── Books
│ ├── BookOperations.cs
│ ├── Edition.cs
│ ├── IBook.cs
│ ├── InventoryBook.cs
│ └── RemoteBook.cs
│ ├── Fireflies.GraphQL.Demos.Server.Books.csproj
│ ├── Migrations
│ ├── 20230302101823_InitialCreate.Designer.cs
│ ├── 20230302101823_InitialCreate.cs
│ ├── BloggingContextModelSnapshot.cs
│ └── InitialCreate.cs
│ ├── MustBeSalesmanAttribute.cs
│ ├── Program.cs
│ ├── Properties
│ └── launchSettings.json
│ ├── RequestContainerBuilder.cs
│ ├── StringFilterOperatorInput.cs
│ ├── User.cs
│ ├── appsettings.Development.json
│ └── appsettings.json
├── Extensions
└── Fireflies.GraphQL.Extensions.EntityFrameworkCore
│ ├── EntityFrameworkCoreExtensionsBuilder.cs
│ ├── EntityFrameworkCoreGraphQLOptionsBuilder.cs
│ ├── EntityFrameworkCoreMethodExtender.cs
│ ├── Fireflies.GraphQL.Extensions.EntityFrameworkCore.csproj
│ ├── Fireflies.GraphQL.Extensions.EntityFrameworkCore.nuspec
│ └── README.md
├── Fireflies.GraphQL.Abstractions
├── Authorization
│ ├── GraphQLAuthorizationAttribute.cs
│ └── GraphQLAuthorizationBaseAttribute.cs
├── Connection
│ └── GraphQlPaginationAttribute.cs
├── Fireflies.GraphQL.Abstractions.csproj
├── Fireflies.GraphQL.Abstractions.nuspec
├── Generator
│ ├── GraphQLGeneratorAttribute.cs
│ ├── GraphQLNoWrapperAttribute.cs
│ └── GraphQLNullable.cs
├── GraphQLAttribute.cs
├── GraphQLId.cs
├── GraphQLInternalAttribute.cs
├── GraphQLMutationAttribute.cs
├── GraphQLOperationAttribute.cs
├── GraphQLParallel.cs
├── GraphQLQueryAttribute.cs
├── GraphQLSubscriptionAttribute.cs
├── GraphQlIdAttribute.cs
├── README.md
├── Schema
│ ├── GraphQLDeprecatedAttribute.cs
│ ├── GraphQLDescriptionAttribute.cs
│ └── GraphQLUnionAttribute.cs
├── Sorting
│ ├── GraphQLSortAttribute.cs
│ └── SortOrder.cs
└── Where
│ ├── BooleanWhere.cs
│ ├── CollectionWhere.cs
│ ├── DateTimeWhere.cs
│ ├── DecimalWhere.cs
│ ├── GraphQLWhereAttribute.cs
│ ├── IntWhere.cs
│ ├── NumberWhere.cs
│ ├── StringWhere.cs
│ └── Where.cs
├── Fireflies.GraphQL.AspNet
├── AspNetConnectionContext.cs
├── Fireflies.GraphQL.AspNet.csproj
├── Fireflies.GraphQL.AspNet.nuspec
├── GraphQLMiddleware.cs
├── GraphQLMiddlewareExtensions.cs
├── GraphQLWsProtocolHandler.cs
├── README.md
└── WsProtocolHandlerBase.cs
├── Fireflies.GraphQL.Core
├── ArgumentBuilder.cs
├── AuthorizationHelper.cs
├── Exceptions
│ ├── DuplicateNameException.cs
│ ├── GraphQLException.cs
│ ├── GraphQLTypeException.cs
│ └── GraphQLUnauthorizedException.cs
├── ExtensionRegistry.cs
├── Extensions
│ ├── AsyncParallelData.cs
│ ├── EmitExtensions.cs
│ ├── EnumerableExtensions.cs
│ ├── QueryableExtensions.cs
│ └── ReflectionExtensions.cs
├── Federation
│ ├── FederatedQuery.cs
│ ├── FederationBase.cs
│ ├── FederationClient.cs
│ ├── FederationException.cs
│ ├── FederationExecutionException.cs
│ ├── FederationGenerator.cs
│ ├── FederationHelper.cs
│ ├── FederationQueryBuilder.cs
│ ├── FederationWebsocket.cs
│ ├── GraphQLFederatedAttribute.cs
│ └── Schema
│ │ ├── FederationField.cs
│ │ ├── FederationFieldBase.cs
│ │ ├── FederationInputValue.cs
│ │ ├── FederationSchema.cs
│ │ └── FederationType.cs
├── Fireflies.GraphQL.Core.csproj
├── Fireflies.GraphQL.Core.nuspec
├── FragmentAccessor.cs
├── Generators
│ ├── BaseDescriptor.cs
│ ├── Connection
│ │ ├── ConnectionBase.cs
│ │ ├── ConnectionGenerator.cs
│ │ ├── EdgeBase.cs
│ │ └── PageInfo.cs
│ ├── GeneratorRegistry.cs
│ ├── IGenerator.cs
│ ├── IMethodExtenderGenerator.cs
│ ├── ITypeExtenderGenerator.cs
│ ├── MethodExtenderDescriptor.cs
│ ├── MethodExtenderStep.cs
│ ├── Sorting
│ │ ├── SortingGenerator.cs
│ │ └── SortingHelper.cs
│ └── Where
│ │ ├── BooleanWhereExpressionHelper.cs
│ │ ├── CollectionWhereExpressionBuilder.cs
│ │ ├── EnumerableWhereBuilder.cs
│ │ ├── NumberWhereExpressionHelper.cs
│ │ ├── QueryableWhereBuilder.cs
│ │ ├── StringWhereExpressionHelper.cs
│ │ ├── WhereExpressionBuilder.cs
│ │ ├── WhereExpressionBuilderHelper.cs
│ │ ├── WhereGenerator.cs
│ │ └── WhereHelper.cs
├── GraphQLEngine.cs
├── GraphQLOptions.cs
├── GraphQLOptionsBuilder.cs
├── GraphQLPath.cs
├── GraphQLRequest.cs
├── IConnectionContext.cs
├── IExtensionBuilder.cs
├── IGraphQLPath.cs
├── IRequestContainerBuilder.cs
├── IRequestContext.cs
├── IResultBuilder.cs
├── IWsProtocolHandler.cs
├── Json
│ ├── DefaultJsonSerializerSettings.cs
│ ├── GraphQLError.cs
│ ├── GraphQLRawError.cs
│ ├── IErrorCollection.cs
│ ├── IGraphQLError.cs
│ ├── JsonWriter.cs
│ ├── JsonWriterFactory.cs
│ ├── JsonWriterMetadata.cs
│ └── ResultJsonWriter.cs
├── NullabilityChecker.cs
├── OperationContext.cs
├── OperationDescriptor.cs
├── OperationVisitor.cs
├── README.md
├── ReflectionCache.cs
├── RequestContext.cs
├── RequestValidator.cs
├── ResolvedAttribute.cs
├── ResultBuilder.cs
├── ResultContext.cs
├── ResultVisitor.cs
├── Scalar
│ ├── BooleanScalarHandler.cs
│ ├── DateTimeOffsetScalarHandler.cs
│ ├── DateTimeScalarHandler.cs
│ ├── FloatScalarHandler.cs
│ ├── IScalarHandler.cs
│ ├── IntScalarHandler.cs
│ ├── ObjectScalarHandler.cs
│ ├── ScalarRegistry.cs
│ ├── StringScalarHandler.cs
│ ├── TimeSpanScalarHandler.cs
│ ├── UIntScalarHandler.cs
│ └── VersionScalarHandler.cs
├── Schema
│ ├── SchemaBuilder.cs
│ ├── TypeRegistry.cs
│ ├── __Directive.cs
│ ├── __DirectiveLocation.cs
│ ├── __EnumValue.cs
│ ├── __Field.cs
│ ├── __InputValue.cs
│ ├── __Schema.cs
│ ├── __SchemaQuery.cs
│ ├── __Type.cs
│ └── __TypeKind.cs
├── SchemaValidator.cs
├── ValueAccessor.cs
├── WrapperGenerator.cs
├── WrapperHelper.cs
└── WrapperRegistry.cs
├── Fireflies.GraphQL.sln
├── Fireflies.GraphQL.sln.DotSettings
├── Images
├── GraphQL.ai
├── Icon-128x128.png
├── Icon.ai
└── Organization.ai
├── LoadTest
├── LoadTest.csproj
└── Program.cs
├── README.md
└── build.sh
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "Fireflies.Shared"]
2 | path = Fireflies.Shared
3 | url = git@github.com:firefliestech/Fireflies.Shared.git
4 |
--------------------------------------------------------------------------------
/Client/Fireflies.GraphQL.Client.Console/ConsoleLogger.cs:
--------------------------------------------------------------------------------
1 | namespace Fireflies.GraphQL.Client.Console;
2 |
3 | public static class ConsoleLogger {
4 | public static void WriteInfo(string message) {
5 | System.Console.WriteLine(message);
6 | }
7 |
8 | public static void WriteWarning(string message) {
9 | var originalColor = System.Console.ForegroundColor;
10 | System.Console.ForegroundColor = ConsoleColor.Yellow;
11 | System.Console.WriteLine(message);
12 | System.Console.ForegroundColor = originalColor;
13 | }
14 |
15 | public static void WriteSuccess(string message) {
16 | var originalColor = System.Console.ForegroundColor;
17 | System.Console.ForegroundColor = ConsoleColor.Green;
18 | System.Console.WriteLine(message);
19 | System.Console.ForegroundColor = originalColor;
20 | }
21 |
22 | public static void WriteError(Exception exception, string message) {
23 | var originalColor = System.Console.ForegroundColor;
24 | System.Console.ForegroundColor = ConsoleColor.Red;
25 | System.Console.WriteLine($"{message}\r\n{exception}");
26 | System.Console.ForegroundColor = originalColor;
27 | }
28 |
29 | public static void WriteError(string message) {
30 | var originalColor = System.Console.ForegroundColor;
31 | System.Console.ForegroundColor = ConsoleColor.Red;
32 | System.Console.WriteLine(message);
33 | System.Console.ForegroundColor = originalColor;
34 | }
35 | }
--------------------------------------------------------------------------------
/Client/Fireflies.GraphQL.Client.Console/Fireflies.GraphQL.Client.Console.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net8.0
6 | enable
7 | enable
8 |
9 |
10 |
11 | true
12 | fireflies-graphql
13 |
14 |
15 |
16 | Fireflies.Tech
17 | Fireflies Client Generator
18 | 2023 Fireflies.tech
19 | MIT
20 | README.md
21 | Icon-128x128.png
22 | https://github.com/firefliestech/fireflies.graphql
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | True
41 | True
42 | Resources.resx
43 |
44 |
45 |
46 |
47 |
48 | ResXFileCodeGenerator
49 | Resources.Designer.cs
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/Client/Fireflies.GraphQL.Client.Console/Fireflies.GraphQL.Client.Console.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $id$
5 | $version$
6 | $title$
7 | $author$
8 | false
9 | $description$
10 | $copyright$
11 | fireflies graphql client generator
12 |
13 |
--------------------------------------------------------------------------------
/Client/Fireflies.GraphQL.Client.Console/Generate/GenerateOptions.cs:
--------------------------------------------------------------------------------
1 | using CommandLine;
2 |
3 | namespace Fireflies.GraphQL.Client.Console.Generate;
4 |
5 | [Verb("generate", HelpText = "Generates the client")]
6 | public class GenerateOptions {
7 | [Option('p', "path", Required = true, HelpText = "Path to project")]
8 | public string Path { get; set; }
9 |
10 | [Option('f', "force", Required = false, HelpText = "Force generation even if no changes were detected")]
11 | public bool Force { get; set; }
12 | }
--------------------------------------------------------------------------------
/Client/Fireflies.GraphQL.Client.Console/Program.cs:
--------------------------------------------------------------------------------
1 | using CommandLine;
2 | using CommandLine.Text;
3 | using Fireflies.GraphQL.Client.Console;
4 | using Fireflies.GraphQL.Client.Console.Generate;
5 | using Fireflies.GraphQL.Client.Console.Schema;
6 |
7 | var parser = new Parser(with => with.HelpWriter = null);
8 | var parseResult = parser.ParseArguments(args);
9 |
10 | DisplayHelp(parseResult);
11 |
12 | parseResult.WithParsed(_ => {
13 | parseResult.MapResult((ProjectInitOptions o) => RunProjectInit(o),
14 | (ClientInitOptions o) => RunClientInit(o),
15 | (ClientUpdateOptions o) => RunClientUpdate(o),
16 | (GenerateOptions o) => RunGenerate(o),
17 | _ => 1);
18 | });
19 |
20 | int RunProjectInit(ProjectInitOptions options) {
21 | var handler = new ProjectInitHandler();
22 | return (int)handler.Init(options).GetAwaiter().GetResult();
23 | }
24 |
25 | int RunClientUpdate(ClientUpdateOptions options) {
26 | var handler = new SchemaHandler();
27 | return (int)handler.Update(options).GetAwaiter().GetResult();
28 | }
29 |
30 | int RunClientInit(ClientInitOptions options) {
31 | var handler = new SchemaHandler();
32 | return (int)handler.Init(options).GetAwaiter().GetResult();
33 | }
34 |
35 | int RunGenerate(GenerateOptions options) {
36 | var handler = new GenerateHandler();
37 | return (int)handler.Generate(options).GetAwaiter().GetResult();
38 | }
39 |
40 | static void DisplayHelp(ParserResult