lighthouse-graphql 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +77 -1
- data/README.md +16 -1
- data/docs/caching.md +1 -1
- data/docs/configuration.md +68 -0
- data/docs/custom-directives.md +11 -1
- data/docs/directives.md +306 -0
- data/docs/events.md +201 -0
- data/docs/getting-started.md +38 -9
- data/docs/motivation.md +184 -0
- data/docs/mutations.md +15 -0
- data/docs/resolvers.md +13 -1
- data/docs/subscriptions.md +423 -0
- data/lib/generators/lighthouse/builder_generator.rb +1 -1
- data/lib/generators/lighthouse/install/templates/graphql_controller.rb.tt +7 -45
- data/lib/generators/lighthouse/install/templates/initializer.rb.tt +31 -3
- data/lib/generators/lighthouse/subscription_generator.rb +95 -0
- data/lib/lighthouse/broadcast_job.rb +14 -0
- data/lib/lighthouse/broadcasting.rb +143 -0
- data/lib/lighthouse/cache_control.rb +5 -2
- data/lib/lighthouse/config.rb +53 -12
- data/lib/lighthouse/controller.rb +131 -0
- data/lib/lighthouse/directive_resolvers/broadcast_resolver.rb +31 -0
- data/lib/lighthouse/directive_resolvers/convert_empty_strings_resolver.rb +134 -0
- data/lib/lighthouse/directive_resolvers/event_resolver.rb +37 -0
- data/lib/lighthouse/directive_resolvers/model_mutation_resolver.rb +28 -13
- data/lib/lighthouse/directive_resolvers/soft_delete_resolvers.rb +66 -0
- data/lib/lighthouse/directive_resolvers/subscription_resolver.rb +68 -0
- data/lib/lighthouse/directives/arguments/soft_deletes.rb +112 -0
- data/lib/lighthouse/directives/registry.rb +14 -6
- data/lib/lighthouse/directives/soft_deletes_directive.rb +123 -0
- data/lib/lighthouse/events/execution_trace.rb +51 -0
- data/lib/lighthouse/events/lifecycle.rb +146 -0
- data/lib/lighthouse/events/schema_build.rb +44 -0
- data/lib/lighthouse/events.rb +76 -0
- data/lib/lighthouse/feature_directive.rb +137 -0
- data/lib/lighthouse/field_resolver_stack.rb +22 -2
- data/lib/lighthouse/graphql/version.rb +1 -1
- data/lib/lighthouse/namespaces.rb +1 -0
- data/lib/lighthouse/persisted_queries/batch.rb +34 -0
- data/lib/lighthouse/persisted_queries.rb +17 -4
- data/lib/lighthouse/rb_lighthouse.rb +20 -0
- data/lib/lighthouse/schema_cache.rb +12 -5
- data/lib/lighthouse/schema_generator.rb +27 -2
- data/lib/lighthouse/subscription.rb +120 -0
- data/lib/lighthouse/support/soft_deletes.rb +164 -0
- data/lib/lighthouse/tasks/lighthouse.rake +10 -0
- data/sig/lighthouse/controller.rbs +30 -0
- data/sig/lighthouse/directives.rbs +158 -0
- data/sig/lighthouse/events.rbs +122 -0
- data/sig/lighthouse/graphql.rbs +111 -0
- data/sig/lighthouse.rbs +193 -0
- metadata +29 -2
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# The entrypoints: building the schema from SDL and running operations.
|
|
2
|
+
module Lighthouse
|
|
3
|
+
module GraphQL
|
|
4
|
+
VERSION: String
|
|
5
|
+
|
|
6
|
+
Config: singleton(Lighthouse::Config)
|
|
7
|
+
|
|
8
|
+
# A GraphQL::Schema subclass.
|
|
9
|
+
type schema = untyped
|
|
10
|
+
|
|
11
|
+
module RbLightHouse
|
|
12
|
+
# The schema built from the SDL in `sdl_folder` (default: Config.sdl_folder).
|
|
13
|
+
# `options` takes :base_types, :base_schema and the schema's own options.
|
|
14
|
+
def self.get_schema: (?sdl_folder: path?, ?options: Hash[Symbol, untyped]) -> schema
|
|
15
|
+
def self.configure: () ?{ (singleton(Lighthouse::Config) config) -> void } -> void
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module SchemaFactory
|
|
19
|
+
def self?.build_base_schema: (?sdl_folder: path?, ?sdl: String?, ?base_types: Hash[untyped, untyped],
|
|
20
|
+
?schema_options: Hash[Symbol, untyped], **untyped extra_options) -> schema
|
|
21
|
+
def self?.load_sdl: (path? sdl_folder) -> String
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Apollo's Automatic Persisted Queries, and a manifest of trusted operations.
|
|
25
|
+
module PersistedQueries
|
|
26
|
+
HASH: Regexp
|
|
27
|
+
NOT_FOUND: Array[String]
|
|
28
|
+
NOT_SUPPORTED: Array[String]
|
|
29
|
+
HASH_MISMATCH: Array[String]
|
|
30
|
+
NOT_IN_LIST: Array[String]
|
|
31
|
+
|
|
32
|
+
# A request the protocol rejects, rendered with Apollo's error codes.
|
|
33
|
+
class Error < StandardError
|
|
34
|
+
attr_reader code: String
|
|
35
|
+
|
|
36
|
+
def initialize: (String message, String code) -> void
|
|
37
|
+
def to_h: () -> Hash[String, untyped]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# `extensions` as the request carries it: a Hash, a JSON String (GET) or
|
|
41
|
+
# ActionController::Parameters.
|
|
42
|
+
#
|
|
43
|
+
# `schema.execute` with the query the request names: its result, or a
|
|
44
|
+
# protocol error as a ready-to-render { "errors" => [...] } Hash.
|
|
45
|
+
def self?.execute: (schema schema, query: String?, ?extensions: untyped, **untyped options) -> untyped
|
|
46
|
+
# A batch: `schema.multiplex` with the query each operation (a Hash of
|
|
47
|
+
# query, extensions, variables, operation_name, context) names. One result
|
|
48
|
+
# per operation, in order; a protocol error is a ready-to-render Hash.
|
|
49
|
+
def self?.multiplex: (schema schema, Array[Hash[Symbol | String, untyped]] operations, **untyped options) -> Array[untyped]
|
|
50
|
+
# The query text to run for a request's `query` and `extensions`.
|
|
51
|
+
def self?.resolve: (String? query, untyped extensions) -> String?
|
|
52
|
+
def self?.enabled?: () -> bool
|
|
53
|
+
def self?.digest: (String query) -> String
|
|
54
|
+
# Store a query ahead of time (e.g. from a deploy task); returns its hash.
|
|
55
|
+
def self?.register: (String query) -> String
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# A concern for a GraphQL::Schema::Subscription (graphql-ruby ships no RBS, so
|
|
59
|
+
# the class it is included in is not declared): PHP Lighthouse's hooks and
|
|
60
|
+
# topic. All optional. `object` is the broadcast root and `context` the
|
|
61
|
+
# subscriber's. Including it elsewhere raises Lighthouse::DefinitionError.
|
|
62
|
+
module Subscription
|
|
63
|
+
# May this client subscribe? Called with the subscription request only.
|
|
64
|
+
def authorize?: (**untyped args) -> boolish
|
|
65
|
+
# Should this subscriber receive the broadcast of `root`? `args` are the
|
|
66
|
+
# arguments it subscribed with.
|
|
67
|
+
def filter?: (untyped root, **untyped args) -> boolish
|
|
68
|
+
# The value an update resolves the field with.
|
|
69
|
+
def resolve_payload: (untyped root, **untyped args) -> untyped
|
|
70
|
+
|
|
71
|
+
# The class methods the concern adds to its includer.
|
|
72
|
+
module ClassMethods
|
|
73
|
+
# :field (default): every subscriber shares the field's topic and filter?
|
|
74
|
+
# decides; :arguments: graphql-ruby's, subscribers match the trigger's arguments.
|
|
75
|
+
def topic_by: (?(:field | :arguments)? mode) -> (:field | :arguments)
|
|
76
|
+
def topic_for: (arguments: untyped, field: untyped, scope: untyped) -> String
|
|
77
|
+
# What @broadcast triggers the subscription with, for the root a mutation returned.
|
|
78
|
+
def trigger_arguments: (untyped root, context context) -> Hash[Symbol | String, untyped]
|
|
79
|
+
def trigger_scope: (untyped root, context context) -> untyped
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# What a Subscription field with no class of its own resolves to.
|
|
83
|
+
class Default
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# The Cache-Control header the selected fields' @cacheControl hints allow.
|
|
88
|
+
module CacheControl
|
|
89
|
+
DEFINITION: String
|
|
90
|
+
TYPE_DEFINITIONS: Hash[String, String]
|
|
91
|
+
CONTEXT_KEY: Symbol
|
|
92
|
+
|
|
93
|
+
# For an executed query (a GraphQL::Query::Result or GraphQL::Query);
|
|
94
|
+
# nil when the schema does not use @cacheControl.
|
|
95
|
+
def self?.header: (untyped result) -> String?
|
|
96
|
+
# Set the header on a Rails (or Rack) response, and return it.
|
|
97
|
+
def self?.apply: (untyped response, untyped result) -> String?
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# The opt-in cache of the manipulated schema document, in tmp/cache.
|
|
101
|
+
module SchemaCache
|
|
102
|
+
PREFIX: String
|
|
103
|
+
|
|
104
|
+
def self?.enabled?: () -> bool
|
|
105
|
+
def self?.directory: () -> path
|
|
106
|
+
# Build the schema document now and return the cache file's path.
|
|
107
|
+
def self?.warm!: (?String? sdl) -> String
|
|
108
|
+
def self?.clear!: () -> void
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
data/sig/lighthouse.rbs
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Signatures for the parts of Lighthouse an application implements or calls:
|
|
2
|
+
# the classes a schema names (builders, validators), the configuration, the
|
|
3
|
+
# directive extension points and the entrypoints. Internals are left out.
|
|
4
|
+
#
|
|
5
|
+
# graphql-ruby and Active Record ship no RBS every app has, so the values that
|
|
6
|
+
# come from them are aliases of untyped, named for what they hold.
|
|
7
|
+
module Lighthouse
|
|
8
|
+
# An ActiveRecord::Relation, or anything with its query interface.
|
|
9
|
+
type relation = untyped
|
|
10
|
+
|
|
11
|
+
# A field's arguments, with snake_case Symbol keys as graphql-ruby passes them.
|
|
12
|
+
type arguments = Hash[Symbol, untyped]
|
|
13
|
+
|
|
14
|
+
# The request's GraphQL::Query::Context.
|
|
15
|
+
type context = untyped
|
|
16
|
+
|
|
17
|
+
# A path on disk: a String or a Pathname.
|
|
18
|
+
type path = String | _ToPath
|
|
19
|
+
|
|
20
|
+
# A class `@builder(class: "Name")` names, looked up in Config.namespaces[:builders].
|
|
21
|
+
# It refines the relation of a field resolved by @all, @paginate, @first,
|
|
22
|
+
# @count or @aggregate and returns the relation to use; nil keeps the one it
|
|
23
|
+
# was given. `@builder(method:)` names a method other than `call`, with the
|
|
24
|
+
# same signature. The class answers it, or else an instance built with no
|
|
25
|
+
# arguments does. A GraphQL::ExecutionError it raises reaches the client.
|
|
26
|
+
interface _Builder
|
|
27
|
+
def call: (relation relation, arguments args, context context) -> relation?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# A @validator contract other than a Dry::Validation::Contract: it gets the
|
|
31
|
+
# arguments (snake_case Symbol keys) and answers the errors by key,
|
|
32
|
+
# { title: ["is missing"] }, nested for input objects; empty when valid.
|
|
33
|
+
interface _Validator
|
|
34
|
+
def call: (Hash[Symbol, untyped] values) -> Hash[Symbol | String, untyped]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Config.on_error: called with an error a directive or resolver swallowed.
|
|
38
|
+
interface _ErrorHandler
|
|
39
|
+
def call: (StandardError error, context? context) -> void
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Config.authenticated_user and Config.policy_user: the user of a request.
|
|
43
|
+
interface _UserReader
|
|
44
|
+
def call: (context? context) -> untyped
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Config.authorizer: may `user` perform `ability` on `record` (a model
|
|
48
|
+
# instance, or a model class for @canModel)? `args` are the @can* `args:`,
|
|
49
|
+
# after the field's arguments with `injectArgs: true`.
|
|
50
|
+
interface _Authorizer
|
|
51
|
+
def call: (untyped user, untyped record, String | Symbol ability, ?Array[untyped] args) -> boolish
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Config.feature_checker: is the feature `name` (as written in @feature) on
|
|
55
|
+
# for `actor`? The default asks Flipper.
|
|
56
|
+
interface _FeatureChecker
|
|
57
|
+
def call: (String name, untyped actor, context? context) -> boolish
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Config.soft_deletes: what "trashed" means for @softDeletes, @trashed,
|
|
61
|
+
# @restore, @forceDelete and @withoutGlobalScopes. The filters take a model's
|
|
62
|
+
# relation and answer the constrained one; `restore` and `force_delete` act
|
|
63
|
+
# on a record and answer whether they succeeded.
|
|
64
|
+
interface _SoftDeletes
|
|
65
|
+
def soft_deletes?: (Class model) -> boolish
|
|
66
|
+
def only_trashed: (relation relation) -> relation
|
|
67
|
+
def with_trashed: (relation relation) -> relation
|
|
68
|
+
def without_trashed: (relation relation) -> relation
|
|
69
|
+
def restore: (untyped record) -> boolish
|
|
70
|
+
def force_delete: (untyped record) -> boolish
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# What DirectiveRegistry#register_manipulator takes: it transforms the SDL
|
|
74
|
+
# before the schema is built.
|
|
75
|
+
interface _SdlManipulator
|
|
76
|
+
def manipulate: (String sdl) -> String
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.configure: () ?{ (singleton(Config) config) -> void } -> void
|
|
80
|
+
|
|
81
|
+
module Config
|
|
82
|
+
DEFAULT_NAMESPACES: Hash[Symbol, Array[String]]
|
|
83
|
+
SETTINGS: Array[Symbol]
|
|
84
|
+
|
|
85
|
+
def self.configure: () ?{ (singleton(Config) config) -> void } -> void
|
|
86
|
+
def self.[]: (Symbol | String key) -> untyped
|
|
87
|
+
def self.reset!: () -> void
|
|
88
|
+
|
|
89
|
+
def self.sdl_folder: () -> path?
|
|
90
|
+
def self.sdl_folder=: (path? folder) -> path?
|
|
91
|
+
|
|
92
|
+
# { queries:, mutations:, subscriptions:, builders:, validators:, events: } => [namespace, ...].
|
|
93
|
+
# Assigning a partial hash overrides only the kinds it names.
|
|
94
|
+
def self.namespaces: () -> Hash[Symbol, Array[String]]
|
|
95
|
+
def self.namespaces=: (Hash[Symbol | String, String | Array[String]] overrides) -> Hash[Symbol | String, String | Array[String]]
|
|
96
|
+
|
|
97
|
+
def self.resolver_namespaces: () -> Array[String]
|
|
98
|
+
def self.resolver_namespaces=: (Array[String] namespaces) -> Array[String]
|
|
99
|
+
|
|
100
|
+
def self.directive_map: () -> Hash[untyped, untyped]
|
|
101
|
+
|
|
102
|
+
# An ActiveSupport::Cache::Store; Rails.cache by default.
|
|
103
|
+
def self.cache_store: () -> untyped
|
|
104
|
+
def self.cache_store=: (untyped store) -> untyped
|
|
105
|
+
|
|
106
|
+
def self.transactional_mutations: () -> bool
|
|
107
|
+
def self.transactional_mutations=: (bool? enabled) -> bool?
|
|
108
|
+
|
|
109
|
+
def self.pagination_default_count: () -> Integer?
|
|
110
|
+
def self.pagination_default_count=: (Integer? count) -> Integer?
|
|
111
|
+
def self.pagination_max_count: () -> Integer?
|
|
112
|
+
def self.pagination_max_count=: (Integer? count) -> Integer?
|
|
113
|
+
|
|
114
|
+
def self.schema_cache: () -> bool
|
|
115
|
+
def self.schema_cache=: (bool? enabled) -> bool?
|
|
116
|
+
def self.schema_cache_path: () -> path?
|
|
117
|
+
def self.schema_cache_path=: (path? path) -> path?
|
|
118
|
+
def self.watch_sdl: () -> bool
|
|
119
|
+
def self.watch_sdl=: (bool? enabled) -> bool?
|
|
120
|
+
|
|
121
|
+
def self.persisted_queries: () -> bool
|
|
122
|
+
def self.persisted_queries=: (bool? enabled) -> bool?
|
|
123
|
+
def self.persisted_queries_store: () -> untyped
|
|
124
|
+
def self.persisted_queries_store=: (untyped store) -> untyped
|
|
125
|
+
def self.persisted_queries_ttl: () -> Numeric?
|
|
126
|
+
def self.persisted_queries_ttl=: (Numeric? seconds) -> Numeric?
|
|
127
|
+
def self.persisted_queries_manifest: () -> path?
|
|
128
|
+
def self.persisted_queries_manifest=: (path? path) -> path?
|
|
129
|
+
def self.persisted_queries_only: () -> bool
|
|
130
|
+
def self.persisted_queries_only=: (bool? enabled) -> bool?
|
|
131
|
+
|
|
132
|
+
def self.convert_empty_strings_to_null: () -> bool
|
|
133
|
+
def self.convert_empty_strings_to_null=: (bool? enabled) -> bool?
|
|
134
|
+
|
|
135
|
+
# Whether @broadcast triggers in an ActiveJob (Lighthouse::GraphQL::BroadcastJob)
|
|
136
|
+
# unless the directive says shouldQueue; and the job's queue (nil: ActiveJob's default).
|
|
137
|
+
def self.queue_broadcasts: () -> bool
|
|
138
|
+
def self.queue_broadcasts=: (bool? enabled) -> bool?
|
|
139
|
+
def self.broadcast_queue: () -> (String | Symbol)?
|
|
140
|
+
def self.broadcast_queue=: ((String | Symbol)? queue) -> (String | Symbol)?
|
|
141
|
+
|
|
142
|
+
def self.on_error: () -> _ErrorHandler
|
|
143
|
+
def self.on_error=: (_ErrorHandler? handler) -> _ErrorHandler?
|
|
144
|
+
def self.handle_error: (StandardError error, ?context? context) -> void
|
|
145
|
+
|
|
146
|
+
def self.authenticated_user: () -> _UserReader
|
|
147
|
+
def self.authenticated_user=: (_UserReader? reader) -> _UserReader?
|
|
148
|
+
def self.policy_user: () -> _UserReader
|
|
149
|
+
def self.policy_user=: (_UserReader? reader) -> _UserReader?
|
|
150
|
+
def self.authorizer: () -> _Authorizer
|
|
151
|
+
def self.authorizer=: (_Authorizer? authorizer) -> _Authorizer?
|
|
152
|
+
|
|
153
|
+
def self.soft_deletes: () -> _SoftDeletes?
|
|
154
|
+
def self.soft_deletes=: (_SoftDeletes? adapter) -> _SoftDeletes?
|
|
155
|
+
|
|
156
|
+
def self.feature_checker: () -> _FeatureChecker
|
|
157
|
+
def self.feature_checker=: (_FeatureChecker? checker) -> _FeatureChecker?
|
|
158
|
+
def self.feature_actor: () -> _UserReader
|
|
159
|
+
def self.feature_actor=: (_UserReader? reader) -> _UserReader?
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
module Support
|
|
163
|
+
module SoftDeletes
|
|
164
|
+
# A nullable timestamp column marking trashed records, with no gem:
|
|
165
|
+
# `Config.soft_deletes = Support::SoftDeletes::Column.new(:archived_at)`.
|
|
166
|
+
class Column
|
|
167
|
+
include _SoftDeletes
|
|
168
|
+
|
|
169
|
+
DEFAULT_COLUMN: String
|
|
170
|
+
|
|
171
|
+
def initialize: (?String | Symbol column) -> void
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# The schema refers to something that does not exist or breaks a contract.
|
|
177
|
+
class DefinitionError < StandardError
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# A GraphQL::ExecutionError (declared from StandardError, which it descends
|
|
181
|
+
# from, as graphql-ruby ships no RBS): the @can* family denied the ability.
|
|
182
|
+
class AuthorizationError < StandardError
|
|
183
|
+
def initialize: (?String message, **untyped options) -> void
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# A GraphQL::ExecutionError: invalid arguments, keyed by argument path
|
|
187
|
+
# ({ "input.title" => ["Title can't be blank"] }) under extensions.validation.
|
|
188
|
+
class ValidationError < StandardError
|
|
189
|
+
attr_reader messages: Hash[String, Array[String]]
|
|
190
|
+
|
|
191
|
+
def initialize: (String | Symbol field_name, Hash[String, Array[String]] messages) -> void
|
|
192
|
+
end
|
|
193
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lighthouse-graphql
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vaz Innovation
|
|
@@ -59,13 +59,16 @@ files:
|
|
|
59
59
|
- docs/configuration.md
|
|
60
60
|
- docs/custom-directives.md
|
|
61
61
|
- docs/directives.md
|
|
62
|
+
- docs/events.md
|
|
62
63
|
- docs/federation.md
|
|
63
64
|
- docs/filtering-and-ordering.md
|
|
64
65
|
- docs/getting-started.md
|
|
66
|
+
- docs/motivation.md
|
|
65
67
|
- docs/mutations.md
|
|
66
68
|
- docs/performance.md
|
|
67
69
|
- docs/relationships.md
|
|
68
70
|
- docs/resolvers.md
|
|
71
|
+
- docs/subscriptions.md
|
|
69
72
|
- docs/validation.md
|
|
70
73
|
- lib/generators/lighthouse/builder_generator.rb
|
|
71
74
|
- lib/generators/lighthouse/class_generator.rb
|
|
@@ -77,8 +80,11 @@ files:
|
|
|
77
80
|
- lib/generators/lighthouse/install/templates/schema.rb.tt
|
|
78
81
|
- lib/generators/lighthouse/mutation_generator.rb
|
|
79
82
|
- lib/generators/lighthouse/query_generator.rb
|
|
83
|
+
- lib/generators/lighthouse/subscription_generator.rb
|
|
80
84
|
- lib/generators/lighthouse/validator_generator.rb
|
|
81
85
|
- lib/lighthouse-graphql.rb
|
|
86
|
+
- lib/lighthouse/broadcast_job.rb
|
|
87
|
+
- lib/lighthouse/broadcasting.rb
|
|
82
88
|
- lib/lighthouse/cache_control.rb
|
|
83
89
|
- lib/lighthouse/caching.rb
|
|
84
90
|
- lib/lighthouse/config.rb
|
|
@@ -88,6 +94,7 @@ files:
|
|
|
88
94
|
- lib/lighthouse/contracts/field_manipulator.rb
|
|
89
95
|
- lib/lighthouse/contracts/field_middleware.rb
|
|
90
96
|
- lib/lighthouse/contracts/field_resolver.rb
|
|
97
|
+
- lib/lighthouse/controller.rb
|
|
91
98
|
- lib/lighthouse/dataloader_sources/association_loader.rb
|
|
92
99
|
- lib/lighthouse/dataloader_sources/model_loader.rb
|
|
93
100
|
- lib/lighthouse/dataloader_sources/relation_count_loader.rb
|
|
@@ -97,11 +104,14 @@ files:
|
|
|
97
104
|
- lib/lighthouse/directive_resolvers/association_resolvers.rb
|
|
98
105
|
- lib/lighthouse/directive_resolvers/auth_resolver.rb
|
|
99
106
|
- lib/lighthouse/directive_resolvers/base.rb
|
|
107
|
+
- lib/lighthouse/directive_resolvers/broadcast_resolver.rb
|
|
100
108
|
- lib/lighthouse/directive_resolvers/builder_applier.rb
|
|
101
109
|
- lib/lighthouse/directive_resolvers/cache_resolvers.rb
|
|
102
110
|
- lib/lighthouse/directive_resolvers/can_resolvers.rb
|
|
103
111
|
- lib/lighthouse/directive_resolvers/convention_resolver.rb
|
|
112
|
+
- lib/lighthouse/directive_resolvers/convert_empty_strings_resolver.rb
|
|
104
113
|
- lib/lighthouse/directive_resolvers/count_resolver.rb
|
|
114
|
+
- lib/lighthouse/directive_resolvers/event_resolver.rb
|
|
105
115
|
- lib/lighthouse/directive_resolvers/field_resolver.rb
|
|
106
116
|
- lib/lighthouse/directive_resolvers/find_resolver.rb
|
|
107
117
|
- lib/lighthouse/directive_resolvers/first_resolver.rb
|
|
@@ -111,16 +121,25 @@ files:
|
|
|
111
121
|
- lib/lighthouse/directive_resolvers/paginate_resolver.rb
|
|
112
122
|
- lib/lighthouse/directive_resolvers/rename_resolver.rb
|
|
113
123
|
- lib/lighthouse/directive_resolvers/resolution.rb
|
|
124
|
+
- lib/lighthouse/directive_resolvers/soft_delete_resolvers.rb
|
|
125
|
+
- lib/lighthouse/directive_resolvers/subscription_resolver.rb
|
|
114
126
|
- lib/lighthouse/directive_resolvers/validator_resolver.rb
|
|
115
127
|
- lib/lighthouse/directive_resolvers/where_conditions_applier.rb
|
|
116
128
|
- lib/lighthouse/directives/arguments/base.rb
|
|
117
129
|
- lib/lighthouse/directives/arguments/filters.rb
|
|
118
130
|
- lib/lighthouse/directives/arguments/order_by.rb
|
|
131
|
+
- lib/lighthouse/directives/arguments/soft_deletes.rb
|
|
119
132
|
- lib/lighthouse/directives/pagination_info_types.rb
|
|
120
133
|
- lib/lighthouse/directives/pagination_manipulator.rb
|
|
121
134
|
- lib/lighthouse/directives/registry.rb
|
|
135
|
+
- lib/lighthouse/directives/soft_deletes_directive.rb
|
|
122
136
|
- lib/lighthouse/directives/where_conditions_directive.rb
|
|
123
137
|
- lib/lighthouse/errors.rb
|
|
138
|
+
- lib/lighthouse/events.rb
|
|
139
|
+
- lib/lighthouse/events/execution_trace.rb
|
|
140
|
+
- lib/lighthouse/events/lifecycle.rb
|
|
141
|
+
- lib/lighthouse/events/schema_build.rb
|
|
142
|
+
- lib/lighthouse/feature_directive.rb
|
|
124
143
|
- lib/lighthouse/federation_directives.rb
|
|
125
144
|
- lib/lighthouse/field_resolver_stack.rb
|
|
126
145
|
- lib/lighthouse/generated_resolvers.rb
|
|
@@ -137,6 +156,7 @@ files:
|
|
|
137
156
|
- lib/lighthouse/nested_mutations/partitioner.rb
|
|
138
157
|
- lib/lighthouse/pagination.rb
|
|
139
158
|
- lib/lighthouse/persisted_queries.rb
|
|
159
|
+
- lib/lighthouse/persisted_queries/batch.rb
|
|
140
160
|
- lib/lighthouse/railtie.rb
|
|
141
161
|
- lib/lighthouse/rb_lighthouse.rb
|
|
142
162
|
- lib/lighthouse/reference_resolver.rb
|
|
@@ -147,21 +167,28 @@ files:
|
|
|
147
167
|
- lib/lighthouse/schema_generator.rb
|
|
148
168
|
- lib/lighthouse/schema_implementation.rb
|
|
149
169
|
- lib/lighthouse/sdl_loader.rb
|
|
170
|
+
- lib/lighthouse/subscription.rb
|
|
150
171
|
- lib/lighthouse/support/arguments.rb
|
|
151
172
|
- lib/lighthouse/support/authorization.rb
|
|
152
173
|
- lib/lighthouse/support/batching.rb
|
|
153
174
|
- lib/lighthouse/support/directive_args.rb
|
|
154
175
|
- lib/lighthouse/support/model_resolver.rb
|
|
155
176
|
- lib/lighthouse/support/naming.rb
|
|
177
|
+
- lib/lighthouse/support/soft_deletes.rb
|
|
156
178
|
- lib/lighthouse/tasks/lighthouse.rake
|
|
157
179
|
- lib/lighthouse/where_conditions/operator_map.rb
|
|
180
|
+
- sig/lighthouse.rbs
|
|
181
|
+
- sig/lighthouse/controller.rbs
|
|
182
|
+
- sig/lighthouse/directives.rbs
|
|
183
|
+
- sig/lighthouse/events.rbs
|
|
184
|
+
- sig/lighthouse/graphql.rbs
|
|
158
185
|
homepage: https://github.com/Vaz-Innovation/lighthouse-graphql
|
|
159
186
|
licenses:
|
|
160
187
|
- MIT
|
|
161
188
|
metadata:
|
|
162
189
|
source_code_uri: https://github.com/Vaz-Innovation/lighthouse-graphql
|
|
163
190
|
changelog_uri: https://github.com/Vaz-Innovation/lighthouse-graphql/blob/main/CHANGELOG.md
|
|
164
|
-
documentation_uri: https://github.
|
|
191
|
+
documentation_uri: https://vaz-innovation.github.io/lighthouse-graphql/
|
|
165
192
|
rubygems_mfa_required: 'true'
|
|
166
193
|
rdoc_options: []
|
|
167
194
|
require_paths:
|