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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -1
  3. data/README.md +16 -1
  4. data/docs/caching.md +1 -1
  5. data/docs/configuration.md +68 -0
  6. data/docs/custom-directives.md +11 -1
  7. data/docs/directives.md +306 -0
  8. data/docs/events.md +201 -0
  9. data/docs/getting-started.md +38 -9
  10. data/docs/motivation.md +184 -0
  11. data/docs/mutations.md +15 -0
  12. data/docs/resolvers.md +13 -1
  13. data/docs/subscriptions.md +423 -0
  14. data/lib/generators/lighthouse/builder_generator.rb +1 -1
  15. data/lib/generators/lighthouse/install/templates/graphql_controller.rb.tt +7 -45
  16. data/lib/generators/lighthouse/install/templates/initializer.rb.tt +31 -3
  17. data/lib/generators/lighthouse/subscription_generator.rb +95 -0
  18. data/lib/lighthouse/broadcast_job.rb +14 -0
  19. data/lib/lighthouse/broadcasting.rb +143 -0
  20. data/lib/lighthouse/cache_control.rb +5 -2
  21. data/lib/lighthouse/config.rb +53 -12
  22. data/lib/lighthouse/controller.rb +131 -0
  23. data/lib/lighthouse/directive_resolvers/broadcast_resolver.rb +31 -0
  24. data/lib/lighthouse/directive_resolvers/convert_empty_strings_resolver.rb +134 -0
  25. data/lib/lighthouse/directive_resolvers/event_resolver.rb +37 -0
  26. data/lib/lighthouse/directive_resolvers/model_mutation_resolver.rb +28 -13
  27. data/lib/lighthouse/directive_resolvers/soft_delete_resolvers.rb +66 -0
  28. data/lib/lighthouse/directive_resolvers/subscription_resolver.rb +68 -0
  29. data/lib/lighthouse/directives/arguments/soft_deletes.rb +112 -0
  30. data/lib/lighthouse/directives/registry.rb +14 -6
  31. data/lib/lighthouse/directives/soft_deletes_directive.rb +123 -0
  32. data/lib/lighthouse/events/execution_trace.rb +51 -0
  33. data/lib/lighthouse/events/lifecycle.rb +146 -0
  34. data/lib/lighthouse/events/schema_build.rb +44 -0
  35. data/lib/lighthouse/events.rb +76 -0
  36. data/lib/lighthouse/feature_directive.rb +137 -0
  37. data/lib/lighthouse/field_resolver_stack.rb +22 -2
  38. data/lib/lighthouse/graphql/version.rb +1 -1
  39. data/lib/lighthouse/namespaces.rb +1 -0
  40. data/lib/lighthouse/persisted_queries/batch.rb +34 -0
  41. data/lib/lighthouse/persisted_queries.rb +17 -4
  42. data/lib/lighthouse/rb_lighthouse.rb +20 -0
  43. data/lib/lighthouse/schema_cache.rb +12 -5
  44. data/lib/lighthouse/schema_generator.rb +27 -2
  45. data/lib/lighthouse/subscription.rb +120 -0
  46. data/lib/lighthouse/support/soft_deletes.rb +164 -0
  47. data/lib/lighthouse/tasks/lighthouse.rake +10 -0
  48. data/sig/lighthouse/controller.rbs +30 -0
  49. data/sig/lighthouse/directives.rbs +158 -0
  50. data/sig/lighthouse/events.rbs +122 -0
  51. data/sig/lighthouse/graphql.rbs +111 -0
  52. data/sig/lighthouse.rbs +193 -0
  53. 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
@@ -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.2.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.com/Vaz-Innovation/lighthouse-graphql/tree/main/docs
191
+ documentation_uri: https://vaz-innovation.github.io/lighthouse-graphql/
165
192
  rubygems_mfa_required: 'true'
166
193
  rdoc_options: []
167
194
  require_paths: