From bae64c36362d61d41b50d260ad4661ee724a54b6 Mon Sep 17 00:00:00 2001 From: Vincent Date: Sat, 16 Jul 2022 19:33:25 +1200 Subject: [PATCH 1/4] Doc: Updated references in Documentation --- Documentation/references/enums.md | 72 +++++++++++++++++++++++++++++ Documentation/references/pioneer.md | 5 ++ Documentation/references/structs.md | 4 +- 3 files changed, 79 insertions(+), 2 deletions(-) diff --git a/Documentation/references/enums.md b/Documentation/references/enums.md index 83a5872..c84f0f8 100644 --- a/Documentation/references/enums.md +++ b/Documentation/references/enums.md @@ -251,3 +251,75 @@ Using this meant no operations nor even a websocket connection is going to be ac !!! ||| + +## Validations + +Validation strategy to add custom rules that is executed before any resolver is executed + +||| `none` + +No rules, skip validation + +||| + +||| specified(\_: [[ValidationRule](#validationrule)]) + +Multiple constant rules + +||| + +||| computed(\_: @Sendable ([GraphQLRequest](/references/structs/#graphqlrequest)) -> [[ValidationRule](#validationrule)]) + +Cloud version of Banana Cake Pop + +||| + +### `init` (Array Literal) + +Construct a new Validations from an array of [ValidationRule](#validationrule), equivalent to `.specified` + +=== Example + +```swift +let server = Pioneer( + schema: schema, + resolver: .init(), + contextBuilder: { req, res in + Context(req: req, res: res, auth: req.headers[.authorization].first) + }, + validationRules: [MyValidationRule()] +) +``` + +=== + +==- Options + +| Name | Type | Description | +| -------------- | --------------------------------------------------- | -------------------------- | +| `arrayLiteral` | [!badge variant="warning" text="ValidationRule..."] | An array of ValidationRule | + +=== + +### `init` (Nil Literal) + +Construct a new Validations from a nil, equivalent to `.none` + +=== Example + +```swift +let server = Pioneer( + schema: schema, + resolver: .init(), + contextBuilder: { req, res in + Context(req: req, res: res, auth: req.headers[.authorization].first) + }, + validationRules: nil +) +``` + +=== + +### ValidationRule + +Typealias for `@Sendable (ValidationContext) -> Visitor` diff --git a/Documentation/references/pioneer.md b/Documentation/references/pioneer.md index c60ff34..0c48bb9 100644 --- a/Documentation/references/pioneer.md +++ b/Documentation/references/pioneer.md @@ -46,6 +46,7 @@ let server = Pioneer( | `websocketProtocol` | [!badge variant="primary" text="WebsocketProtocol"] | Websocket sub-protocol
**Default**: `.subscriptionsTransportws` | | `introspection` | [!badge variant="primary" text="Bool"] | Allowing introspection
**Default**: `true` | | `playground` | [!badge variant="primary" text="IDE"] | Allowing playground
**Default**: `.graphiql` | +| `validationRules` | [!badge variant="primary" text="Validations"] | Validation rules to be applied before operation
**Default**: `.none` | | `keepAlive` | [!badge variant="warning" text="UInt64?"] | Keep alive internal in nanosecond, `nil` for disabling
**Default**: 12.5 seconds | === @@ -85,6 +86,7 @@ let server = Pioneer( | `websocketProtocol` | [!badge variant="primary" text="WebsocketProtocol"] | Websocket sub-protocol
**Default**: `.subscriptionsTransportws` | | `introspection` | [!badge variant="primary" text="Bool"] | Allowing introspection
**Default**: `true` | | `playground` | [!badge variant="primary" text="IDE"] | Allowing playground
**Default**: `.graphiql` | +| `validationRules` | [!badge variant="primary" text="Validations"] | Validation rules to be applied before operation
**Default**: `.none` | | `keepAlive` | [!badge variant="warning" text="UInt64?"] | Keep alive internal in nanosecond, `nil` for disabling
**Default**: 12.5 seconds | === @@ -120,6 +122,7 @@ let server = Pioneer( | `websocketProtocol` | [!badge variant="primary" text="WebsocketProtocol"] | Websocket sub-protocol
**Default**: `.subscriptionsTransportws` | | `introspection` | [!badge variant="primary" text="Bool"] | Allowing introspection
**Default**: `true` | | `playground` | [!badge variant="primary" text="IDE"] | Allowing playground
**Default**: `.graphiql` | +| `validationRules` | [!badge variant="primary" text="Validations"] | Validation rules to be applied before operation
**Default**: `.none` | | `keepAlive` | [!badge variant="warning" text="UInt64?"] | Keep alive internal in nanosecond, `nil` for disabling
**Default**: 12.5 seconds | === @@ -159,6 +162,7 @@ let server = try Pioneer( | `websocketProtocol` | [!badge variant="primary" text="WebsocketProtocol"] | Websocket sub-protocol
**Default**: `.subscriptionsTransportws` | | `introspection` | [!badge variant="primary" text="Bool"] | Allowing introspection
**Default**: `true` | | `playground` | [!badge variant="primary" text="IDE"] | Allowing playground
**Default**: `.graphiql` | +| `validationRules` | [!badge variant="primary" text="Validations"] | Validation rules to be applied before operation
**Default**: `.none` | | `keepAlive` | [!badge variant="warning" text="UInt64?"] | Keep alive internal in nanosecond, `nil` for disabling
**Default**: 12.5 seconds | === @@ -206,6 +210,7 @@ let server = try Pioneer( | `websocketProtocol` | [!badge variant="primary" text="WebsocketProtocol"] | Websocket sub-protocol
**Default**: `.subscriptionsTransportws` | | `introspection` | [!badge variant="primary" text="Bool"] | Allowing introspection
**Default**: `true` | | `playground` | [!badge variant="primary" text="IDE"] | Allowing playground
**Default**: `.graphiql` | +| `validationRules` | [!badge variant="primary" text="Validations"] | Validation rules to be applied before operation
**Default**: `.none` | | `keepAlive` | [!badge variant="warning" text="UInt64?"] | Keep alive internal in nanosecond, `nil` for disabling
**Default**: 12.5 seconds | === diff --git a/Documentation/references/structs.md b/Documentation/references/structs.md index 8588ce4..1ef8233 100644 --- a/Documentation/references/structs.md +++ b/Documentation/references/structs.md @@ -225,8 +225,8 @@ Returning the parsed `operationType` of this request. ```swift let message: GraphQLRequest - -switch try message.operationType() { +guard let operationType = message.operationType else { return } +switch operationType { case .subscription: // ... case .query: From 292c592af0144f568118852f582682f3db9e04d8 Mon Sep 17 00:00:00 2001 From: Vincent Date: Sat, 16 Jul 2022 19:37:48 +1200 Subject: [PATCH 2/4] Doc: Updated FAQ --- Documentation/guides/advanced/faq.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Documentation/guides/advanced/faq.md b/Documentation/guides/advanced/faq.md index 6e92825..009b08c 100644 --- a/Documentation/guides/advanced/faq.md +++ b/Documentation/guides/advanced/faq.md @@ -173,7 +173,7 @@ Mostly. ### EventStream -#### Why does Pioneer only support `AsyncSequence` (and [AsyncEventStream](/features/async-event-stream/#asynceventstream))? +#### Why does Pioneer only support `AsyncSequence` (and to some extends [AsyncEventStream](/features/async-event-stream/#asynceventstream))? This is a limitation when resolving subscription, where there is not much that can be done until the subscription result is casted to another type of `EventStream`. Pioneer uses the `AsyncEventStream` which can be built from any `AsyncSequence` because it is a built-in protocol from Swift Standard Library and other streaming libraries are likely to support it as well. @@ -183,6 +183,10 @@ Not directly support [RxSwift](https://github.com/ReactiveX/RxSwift). However si However, Pioneer is not compatible with [GraphQLRxSwift](https://github.com/GraphQLSwift/GraphQLRxSwift), and all [RxSwift](https://github.com/ReactiveX/RxSwift)'s observable must be converted into an `AsyncSequence`. +#### Does Pioneer support [ConcurrentEventSTream](https://github.com/GraphQLSwift/GraphQL/blob/master/Sources/GraphQL/Subscription/EventStream.swift)? + +Yes, [ConcurrentEventSTream](https://github.com/GraphQLSwift/GraphQL/blob/master/Sources/GraphQL/Subscription/EventStream.swift) worked pratically the same as [AsyncEventStream](/features/async-event-stream/#asynceventstream), but limit itself to only `AsyncThrowingStream`. + ### PubSub #### Does Pioneer provide an [AsyncPubSub](/references/async-pubsub.md) that is backed by Redis? From 16504a51e6428e82f2117e650efbfc1f7ed1e54e Mon Sep 17 00:00:00 2001 From: Vincent Date: Sat, 16 Jul 2022 19:45:55 +1200 Subject: [PATCH 3/4] Doc&Fix: Fixed type, updated FAQ and versions --- Documentation/README.md | 2 +- Documentation/features/configuration.md | 2 +- Documentation/guides/advanced/faq.md | 8 ++++---- Documentation/guides/getting-started/setup.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Documentation/README.md b/Documentation/README.md index 7a84896..5b912f1 100644 --- a/Documentation/README.md +++ b/Documentation/README.md @@ -26,7 +26,7 @@ You can add Pioneer into any existing Vapor application with any GraphQL schema Add this line to add Pioneer as one of your dependencies. ```swift -.package(url: "https://github.com/d-exclaimation/pioneer", from: "0.8.6") +.package(url: "https://github.com/d-exclaimation/pioneer", from: "0.9.0") ``` Go to the `main.swift` or any Swift file where you apply your Vapor routing like your `routes.swift` file. diff --git a/Documentation/features/configuration.md b/Documentation/features/configuration.md index a48b380..279e557 100644 --- a/Documentation/features/configuration.md +++ b/Documentation/features/configuration.md @@ -6,7 +6,7 @@ order: 50 # Configuration !!!success Custom Configuration options -From `0.8.6`, Pioneer brought in a structure that will allow easier configuration, which would only require you to pass in the config object into [Pioneer](/references/pioneer) initializer. +From `0.9.0`, Pioneer brought in a structure that will allow easier configuration, which would only require you to pass in the config object into [Pioneer](/references/pioneer) initializer. !!! This configuration structure would allow user of the library to create multiple configuration for Pioneer on different environment or situation. diff --git a/Documentation/guides/advanced/faq.md b/Documentation/guides/advanced/faq.md index 009b08c..56d3714 100644 --- a/Documentation/guides/advanced/faq.md +++ b/Documentation/guides/advanced/faq.md @@ -107,7 +107,7 @@ No, there is no custom error from Pioneer (as of now), just use what works best Mostly. -- If the error(s) were thrown during context building, Pioneer will use the reason to build a GraphQL formatted error and set the response status code accordingly. +- If the error(s) were thrown during context building, Pioneer will use the reason to build a GraphQL formatted error, and set the response status and headers code accordingly. ==- Example ```swift Throwing Abort @@ -136,7 +136,7 @@ Mostly. === -- If the error(s) were thrown in the resolver functions, Pioneer will only throw back a GraphQL formatted error with the description of the error thrown but will not set the response status (unless it was set manually into the response object during the resolving function). +- If the error(s) were thrown in the resolver functions, Pioneer will only throw back a GraphQL formatted error with the description of the error thrown but will not set the response status nor headers (unless it was set manually into the response object during the resolving function). ==- Example @@ -183,9 +183,9 @@ Not directly support [RxSwift](https://github.com/ReactiveX/RxSwift). However si However, Pioneer is not compatible with [GraphQLRxSwift](https://github.com/GraphQLSwift/GraphQLRxSwift), and all [RxSwift](https://github.com/ReactiveX/RxSwift)'s observable must be converted into an `AsyncSequence`. -#### Does Pioneer support [ConcurrentEventSTream](https://github.com/GraphQLSwift/GraphQL/blob/master/Sources/GraphQL/Subscription/EventStream.swift)? +#### Does Pioneer support [ConcurrentEventStream](https://github.com/GraphQLSwift/GraphQL/blob/master/Sources/GraphQL/Subscription/EventStream.swift)? -Yes, [ConcurrentEventSTream](https://github.com/GraphQLSwift/GraphQL/blob/master/Sources/GraphQL/Subscription/EventStream.swift) worked pratically the same as [AsyncEventStream](/features/async-event-stream/#asynceventstream), but limit itself to only `AsyncThrowingStream`. +Yes, [ConcurrentEventStream](https://github.com/GraphQLSwift/GraphQL/blob/master/Sources/GraphQL/Subscription/EventStream.swift) worked pratically the same as [AsyncEventStream](/features/async-event-stream/#asynceventstream), but limit itself to only `AsyncThrowingStream`. ### PubSub diff --git a/Documentation/guides/getting-started/setup.md b/Documentation/guides/getting-started/setup.md index 3d0458e..b371388 100644 --- a/Documentation/guides/getting-started/setup.md +++ b/Documentation/guides/getting-started/setup.md @@ -36,7 +36,7 @@ let package = Package( dependencies: [ .package(url: "https://github.com/GraphQLSwift/Graphiti.git", from: "1.0.0"), .package(url: "https://github.com/vapor/vapor.git", from: "4.61.1"), - .package(url: "https://github.com/d-exclaimation/pioneer", from: "0.8.6") + .package(url: "https://github.com/d-exclaimation/pioneer", from: "0.9.0") ], targets: [ .target( From ebbd7bd677ca314fa1bed7f9bdbce193d728c872 Mon Sep 17 00:00:00 2001 From: Vincent Date: Sat, 16 Jul 2022 19:46:04 +1200 Subject: [PATCH 4/4] Doc: Updated version in README --- README.md | 2 +- logo.png | Bin 20609 -> 20656 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b799666..f1ae877 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Pioneer is an open-source Swift GraphQL server for [Vapor](https://github.com/va ## Setup ```swift -.package(url: "https://github.com/d-exclaimation/pioneer", from: "0.8.6") +.package(url: "https://github.com/d-exclaimation/pioneer", from: "0.9.0") ``` ## Swift for GraphQL diff --git a/logo.png b/logo.png index dc1f1a739295aa47e2bdaea686c554813c0a60fe..58398fd34d5c689abf391ff64c59b2163e6d7ca7 100644 GIT binary patch delta 19447 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 K*#=YZFF5& delta 19384 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