bluejay 0.1.0.alpha.2-arm64-darwin
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +411 -0
- data/lib/bluejay/3.1/bluejay_rb.bundle +0 -0
- data/lib/bluejay/3.2/bluejay_rb.bundle +0 -0
- data/lib/bluejay/base/custom_scalar_type.rb +25 -0
- data/lib/bluejay/base/directive.rb +25 -0
- data/lib/bluejay/base/enum_type.rb +25 -0
- data/lib/bluejay/base/input_object_type.rb +25 -0
- data/lib/bluejay/base/interface_type.rb +25 -0
- data/lib/bluejay/base/object_type.rb +25 -0
- data/lib/bluejay/base/query_root.rb +25 -0
- data/lib/bluejay/base/schema.rb +25 -0
- data/lib/bluejay/base/union_type.rb +25 -0
- data/lib/bluejay/base.rb +11 -0
- data/lib/bluejay/base_input_type.rb +13 -0
- data/lib/bluejay/base_output_type.rb +15 -0
- data/lib/bluejay/builtin/directives/deprecated.rb +34 -0
- data/lib/bluejay/builtin/directives/include.rb +35 -0
- data/lib/bluejay/builtin/directives/skip.rb +35 -0
- data/lib/bluejay/builtin/directives/specified_by.rb +33 -0
- data/lib/bluejay/builtin/enum_types/directive_location.rb +44 -0
- data/lib/bluejay/builtin/enum_types/type_kind.rb +33 -0
- data/lib/bluejay/builtin/object_types/directive.rb +34 -0
- data/lib/bluejay/builtin/object_types/enum_value.rb +33 -0
- data/lib/bluejay/builtin/object_types/field.rb +35 -0
- data/lib/bluejay/builtin/object_types/input_value.rb +29 -0
- data/lib/bluejay/builtin/object_types/schema.rb +31 -0
- data/lib/bluejay/builtin/object_types/type.rb +57 -0
- data/lib/bluejay/builtin.rb +25 -0
- data/lib/bluejay/custom_scalar_type.rb +69 -0
- data/lib/bluejay/directive.rb +71 -0
- data/lib/bluejay/enum_type.rb +48 -0
- data/lib/bluejay/errors.rb +20 -0
- data/lib/bluejay/finalize.rb +27 -0
- data/lib/bluejay/input_object_type.rb +73 -0
- data/lib/bluejay/input_type_shorthands.rb +28 -0
- data/lib/bluejay/interface_type.rb +74 -0
- data/lib/bluejay/json_value.rb +16 -0
- data/lib/bluejay/name_from_class.rb +18 -0
- data/lib/bluejay/object_type.rb +81 -0
- data/lib/bluejay/output_type_shorthands.rb +28 -0
- data/lib/bluejay/query_root.rb +64 -0
- data/lib/bluejay/schema.rb +91 -0
- data/lib/bluejay/union_type.rb +50 -0
- data/lib/bluejay/version.rb +5 -0
- data/lib/bluejay.rb +45 -0
- data/lib/rbi_ext/model.rb +64 -0
- data/lib/tapioca/dsl/compilers/directive.rb +42 -0
- data/lib/tapioca/dsl/compilers/input_object_type.rb +41 -0
- data/lib/tapioca/dsl/compilers/interface_type.rb +33 -0
- data/lib/tapioca/dsl/compilers/object_type.rb +53 -0
- data/lib/tapioca/dsl/compilers/schema.rb +51 -0
- data/rust-toolchain.toml +2 -0
- metadata +118 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
BaseOutputType = T.type_alias do
|
6
|
+
T.any(
|
7
|
+
Scalar,
|
8
|
+
Base::EnumType::ClassMethods,
|
9
|
+
Base::ObjectType::ClassMethods,
|
10
|
+
Base::UnionType::ClassMethods,
|
11
|
+
Base::InterfaceType::ClassMethods,
|
12
|
+
Base::CustomScalarType::ClassMethods,
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module Directives
|
7
|
+
class Deprecated < Directive
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"deprecated"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[InputValueDefinition]) }
|
17
|
+
def argument_definitions
|
18
|
+
[
|
19
|
+
InputValueDefinition.new(name: "reason", type: it(Scalar::String)),
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
sig { override.returns(T::Array[DirectiveLocation]) }
|
24
|
+
def locations
|
25
|
+
[
|
26
|
+
DirectiveLocation::FIELD_DEFINITION,
|
27
|
+
DirectiveLocation::ENUM_VALUE,
|
28
|
+
]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module Directives
|
7
|
+
class Include < Directive
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"include"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[InputValueDefinition]) }
|
17
|
+
def argument_definitions
|
18
|
+
[
|
19
|
+
InputValueDefinition.new(name: "if", type: it!(Scalar::Boolean), ruby_name: "if_arg"),
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
sig { override.returns(T::Array[DirectiveLocation]) }
|
24
|
+
def locations
|
25
|
+
[
|
26
|
+
DirectiveLocation::FIELD,
|
27
|
+
DirectiveLocation::FRAGMENT_SPREAD,
|
28
|
+
DirectiveLocation::INLINE_FRAGMENT,
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module Directives
|
7
|
+
class Skip < Directive
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"skip"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[InputValueDefinition]) }
|
17
|
+
def argument_definitions
|
18
|
+
[
|
19
|
+
InputValueDefinition.new(name: "if", type: it!(Scalar::Boolean), ruby_name: "if_arg"),
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
sig { override.returns(T::Array[DirectiveLocation]) }
|
24
|
+
def locations
|
25
|
+
[
|
26
|
+
DirectiveLocation::FIELD,
|
27
|
+
DirectiveLocation::FRAGMENT_SPREAD,
|
28
|
+
DirectiveLocation::INLINE_FRAGMENT,
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module Directives
|
7
|
+
class SpecifiedBy < Directive
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"specifiedBy"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[InputValueDefinition]) }
|
17
|
+
def argument_definitions
|
18
|
+
[
|
19
|
+
InputValueDefinition.new(name: "url", type: it!(Scalar::String)),
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
sig { override.returns(T::Array[DirectiveLocation]) }
|
24
|
+
def locations
|
25
|
+
[
|
26
|
+
DirectiveLocation::SCALAR,
|
27
|
+
]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module EnumTypes
|
7
|
+
class DirectiveLocation < EnumType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__DirectiveLocation"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[EnumValueDefinition]) }
|
17
|
+
def enum_value_definitions
|
18
|
+
[
|
19
|
+
EnumValueDefinition.new(name: "QUERY"),
|
20
|
+
EnumValueDefinition.new(name: "MUTATION"),
|
21
|
+
EnumValueDefinition.new(name: "SUBSCRIPTION"),
|
22
|
+
EnumValueDefinition.new(name: "FIELD"),
|
23
|
+
EnumValueDefinition.new(name: "FRAGMENT_DEFINITION"),
|
24
|
+
EnumValueDefinition.new(name: "FRAGMENT_SPREAD"),
|
25
|
+
EnumValueDefinition.new(name: "INLINE_FRAGMENT"),
|
26
|
+
EnumValueDefinition.new(name: "VARIABLE_DEFINITION"),
|
27
|
+
EnumValueDefinition.new(name: "SCHEMA"),
|
28
|
+
EnumValueDefinition.new(name: "SCALAR"),
|
29
|
+
EnumValueDefinition.new(name: "OBJECT"),
|
30
|
+
EnumValueDefinition.new(name: "FIELD_DEFINITION"),
|
31
|
+
EnumValueDefinition.new(name: "ARGUMENT_DEFINITION"),
|
32
|
+
EnumValueDefinition.new(name: "INTERFACE"),
|
33
|
+
EnumValueDefinition.new(name: "UNION"),
|
34
|
+
EnumValueDefinition.new(name: "ENUM"),
|
35
|
+
EnumValueDefinition.new(name: "ENUM_VALUE"),
|
36
|
+
EnumValueDefinition.new(name: "INPUT_OBJECT"),
|
37
|
+
EnumValueDefinition.new(name: "INPUT_FIELD_DEFINITION"),
|
38
|
+
]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module EnumTypes
|
7
|
+
class TypeKind < EnumType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__TypeKind"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[EnumValueDefinition]) }
|
17
|
+
def enum_value_definitions
|
18
|
+
[
|
19
|
+
EnumValueDefinition.new(name: "SCALAR"),
|
20
|
+
EnumValueDefinition.new(name: "OBJECT"),
|
21
|
+
EnumValueDefinition.new(name: "INTERFACE"),
|
22
|
+
EnumValueDefinition.new(name: "UNION"),
|
23
|
+
EnumValueDefinition.new(name: "ENUM"),
|
24
|
+
EnumValueDefinition.new(name: "INPUT_OBJECT"),
|
25
|
+
EnumValueDefinition.new(name: "LIST"),
|
26
|
+
EnumValueDefinition.new(name: "NON_NULL"),
|
27
|
+
]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module ObjectTypes
|
7
|
+
class Directive < ObjectType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__Directive"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[FieldDefinition]) }
|
17
|
+
def field_definitions
|
18
|
+
[
|
19
|
+
FieldDefinition.new(name: "name", type: ot!(Scalar::String)),
|
20
|
+
FieldDefinition.new(name: "description", type: ot(Scalar::String)),
|
21
|
+
FieldDefinition.new(name: "locations", type: lot!(ot!(EnumTypes::DirectiveLocation))),
|
22
|
+
FieldDefinition.new(name: "args", type: lot!(ot!(InputValue))),
|
23
|
+
FieldDefinition.new(
|
24
|
+
name: "isRepeatable",
|
25
|
+
type: ot!(Scalar::Boolean),
|
26
|
+
resolver_method_name: "repeatable?",
|
27
|
+
),
|
28
|
+
]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module ObjectTypes
|
7
|
+
class EnumValue < ObjectType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__EnumValue"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[FieldDefinition]) }
|
17
|
+
def field_definitions
|
18
|
+
[
|
19
|
+
FieldDefinition.new(name: "name", type: ot!(Scalar::String)),
|
20
|
+
FieldDefinition.new(name: "description", type: ot(Scalar::String)),
|
21
|
+
FieldDefinition.new(
|
22
|
+
name: "isDeprecated",
|
23
|
+
type: ot!(Scalar::Boolean),
|
24
|
+
resolver_method_name: "deprecated?",
|
25
|
+
),
|
26
|
+
FieldDefinition.new(name: "deprecationReason", type: ot(Scalar::String)),
|
27
|
+
]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module ObjectTypes
|
7
|
+
class Field < ObjectType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__Field"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[FieldDefinition]) }
|
17
|
+
def field_definitions
|
18
|
+
[
|
19
|
+
FieldDefinition.new(name: "name", type: ot!(Scalar::String), resolver_method_name: "name"),
|
20
|
+
FieldDefinition.new(name: "description", type: ot(Scalar::String)),
|
21
|
+
FieldDefinition.new(name: "args", type: lot!(ot!(InputValue))),
|
22
|
+
FieldDefinition.new(name: "type", type: ot!(Type)),
|
23
|
+
FieldDefinition.new(
|
24
|
+
name: "isDeprecated",
|
25
|
+
type: ot!(Scalar::Boolean),
|
26
|
+
resolver_method_name: "deprecated?",
|
27
|
+
),
|
28
|
+
FieldDefinition.new(name: "deprecationReason", type: ot(Scalar::String)),
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module ObjectTypes
|
7
|
+
class InputValue < ObjectType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__InputValue"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[FieldDefinition]) }
|
17
|
+
def field_definitions
|
18
|
+
[
|
19
|
+
FieldDefinition.new(name: "description", type: ot(Scalar::String)),
|
20
|
+
FieldDefinition.new(name: "name", type: ot(Scalar::String)),
|
21
|
+
FieldDefinition.new(name: "type", type: ot!(Type)),
|
22
|
+
FieldDefinition.new(name: "defaultValue", type: ot(Scalar::String)),
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module ObjectTypes
|
7
|
+
class Schema < ObjectType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__Schema"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[FieldDefinition]) }
|
17
|
+
def field_definitions
|
18
|
+
[
|
19
|
+
FieldDefinition.new(name: "description", type: ot(Scalar::String)),
|
20
|
+
FieldDefinition.new(name: "types", type: lot!(ot!(Type))),
|
21
|
+
FieldDefinition.new(name: "queryType", type: ot!(Type)),
|
22
|
+
FieldDefinition.new(name: "mutationType", type: ot(Type)),
|
23
|
+
FieldDefinition.new(name: "subscriptionType", type: ot(Type)),
|
24
|
+
FieldDefinition.new(name: "directives", type: lot!(ot!(Directive))),
|
25
|
+
]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
module ObjectTypes
|
7
|
+
class Type < ObjectType
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
|
11
|
+
sig { override.returns(String) }
|
12
|
+
def graphql_name
|
13
|
+
"__Type"
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { override.returns(T::Array[FieldDefinition]) }
|
17
|
+
def field_definitions
|
18
|
+
[
|
19
|
+
FieldDefinition.new(name: "kind", type: ot!(EnumTypes::TypeKind)),
|
20
|
+
FieldDefinition.new(name: "name", type: ot(Scalar::String)),
|
21
|
+
FieldDefinition.new(name: "description", type: ot(Scalar::String)),
|
22
|
+
FieldDefinition.new(
|
23
|
+
name: "fields",
|
24
|
+
argument_definitions: [InputValueDefinition.new(
|
25
|
+
name: "includeDeprecated",
|
26
|
+
type: it(Scalar::Boolean),
|
27
|
+
default_value: false,
|
28
|
+
)],
|
29
|
+
type: lot(ot!(Field)),
|
30
|
+
),
|
31
|
+
FieldDefinition.new(name: "interfaces", type: lot(ot!(Type))),
|
32
|
+
FieldDefinition.new(name: "possibleTypes", type: lot(ot!(Type))),
|
33
|
+
FieldDefinition.new(
|
34
|
+
name: "enumValues",
|
35
|
+
argument_definitions: [InputValueDefinition.new(
|
36
|
+
name: "includeDeprecated",
|
37
|
+
type: it(Scalar::Boolean),
|
38
|
+
default_value: false,
|
39
|
+
)],
|
40
|
+
type: lot(ot!(EnumValue)),
|
41
|
+
),
|
42
|
+
FieldDefinition.new(
|
43
|
+
name: "inputFields",
|
44
|
+
type: lot(ot!(InputValue)),
|
45
|
+
),
|
46
|
+
FieldDefinition.new(name: "ofType", type: ot(Type)),
|
47
|
+
FieldDefinition.new(
|
48
|
+
name: "specifiedByURL",
|
49
|
+
type: ot(Scalar::String),
|
50
|
+
),
|
51
|
+
]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
module Builtin
|
6
|
+
class << self
|
7
|
+
extend(T::Sig)
|
8
|
+
|
9
|
+
sig { returns(FieldDefinition) }
|
10
|
+
def typename_field_definition
|
11
|
+
@typename_field_definition ||= T.let(
|
12
|
+
FieldDefinition.new(
|
13
|
+
name: "__typename",
|
14
|
+
type: OutputType.new(
|
15
|
+
type: Scalar::String,
|
16
|
+
required: true,
|
17
|
+
),
|
18
|
+
resolver_method_name: "resolve_typename",
|
19
|
+
),
|
20
|
+
T.nilable(FieldDefinition),
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
class CustomScalarType
|
6
|
+
extend(T::Generic)
|
7
|
+
include(Base::CustomScalarType)
|
8
|
+
|
9
|
+
InternalRepresentation = type_template
|
10
|
+
|
11
|
+
class << self
|
12
|
+
extend(T::Sig)
|
13
|
+
extend(T::Helpers)
|
14
|
+
include(NameFromClass)
|
15
|
+
|
16
|
+
abstract!
|
17
|
+
|
18
|
+
sig { overridable.returns(String) }
|
19
|
+
def graphql_name
|
20
|
+
name_from_class
|
21
|
+
end
|
22
|
+
|
23
|
+
sig { overridable.returns(T.nilable(String)) }
|
24
|
+
def description
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
sig { overridable.returns(T::Array[Directive]) }
|
29
|
+
def directives
|
30
|
+
[]
|
31
|
+
end
|
32
|
+
|
33
|
+
sig { overridable.returns(T.nilable(String)) }
|
34
|
+
def specified_by_url
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
|
38
|
+
sig { overridable.params(value: InternalRepresentation).returns(Result[T.untyped, String]) }
|
39
|
+
def coerce_result(value)
|
40
|
+
Result.ok(value)
|
41
|
+
end
|
42
|
+
|
43
|
+
sig { abstract.params(value: T.untyped).returns(Result[InternalRepresentation, String]) }
|
44
|
+
def coerce_input(value); end
|
45
|
+
|
46
|
+
sig { overridable.returns(String) }
|
47
|
+
def internal_representation_sorbet_type_name
|
48
|
+
const_get(:InternalRepresentation).name
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
sig(:final) { override.returns(CustomScalarTypeDefinition) }
|
54
|
+
def definition
|
55
|
+
@definition ||= T.let(
|
56
|
+
CustomScalarTypeDefinition.new(
|
57
|
+
name: graphql_name,
|
58
|
+
description:,
|
59
|
+
directives:,
|
60
|
+
specified_by_url:,
|
61
|
+
ruby_class: self,
|
62
|
+
internal_representation_sorbet_type_name:,
|
63
|
+
),
|
64
|
+
T.nilable(CustomScalarTypeDefinition),
|
65
|
+
)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
class Directive
|
6
|
+
include(Base::Directive)
|
7
|
+
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
extend(T::Helpers)
|
11
|
+
include(InputTypeShorthands)
|
12
|
+
include(NameFromClass)
|
13
|
+
|
14
|
+
abstract!
|
15
|
+
|
16
|
+
sig { overridable.returns(String) }
|
17
|
+
def graphql_name
|
18
|
+
name_from_class
|
19
|
+
end
|
20
|
+
|
21
|
+
sig { overridable.returns(T.nilable(String)) }
|
22
|
+
def description
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
|
26
|
+
sig { abstract.returns(T::Array[InputValueDefinition]) }
|
27
|
+
def argument_definitions; end
|
28
|
+
|
29
|
+
sig { abstract.returns(T::Array[DirectiveLocation]) }
|
30
|
+
def locations; end
|
31
|
+
|
32
|
+
sig { overridable.returns(T::Boolean) }
|
33
|
+
def repeatable?
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
sig(:final) { override.returns(DirectiveDefinition) }
|
40
|
+
def definition
|
41
|
+
@definition ||= T.let(nil, T.nilable(DirectiveDefinition))
|
42
|
+
@definition ||= begin
|
43
|
+
argument_definitions = self.argument_definitions
|
44
|
+
argument_definitions.each { |ivd| attr_reader(ivd.ruby_name) }
|
45
|
+
DirectiveDefinition.new(
|
46
|
+
name: graphql_name,
|
47
|
+
argument_definitions:,
|
48
|
+
description:,
|
49
|
+
locations:,
|
50
|
+
is_repeatable: repeatable?,
|
51
|
+
ruby_class: self,
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
define_method(:initialize) do |**kwargs|
|
58
|
+
self.class.send(:definition).argument_definitions.each do |ivd|
|
59
|
+
arg = kwargs[ivd.ruby_name]
|
60
|
+
instance_variable_set("@#{ivd.ruby_name}", arg)
|
61
|
+
end
|
62
|
+
freeze
|
63
|
+
end
|
64
|
+
|
65
|
+
define_method(:==) do |other|
|
66
|
+
self.class == other.class && self.class.send(:definition).argument_definitions.all? do |ivd|
|
67
|
+
send(ivd.ruby_name) == other.send(ivd.ruby_name)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Bluejay
|
5
|
+
class EnumType
|
6
|
+
include(Base::EnumType)
|
7
|
+
|
8
|
+
class << self
|
9
|
+
extend(T::Sig)
|
10
|
+
extend(T::Helpers)
|
11
|
+
include(NameFromClass)
|
12
|
+
|
13
|
+
abstract!
|
14
|
+
|
15
|
+
sig { overridable.returns(String) }
|
16
|
+
def graphql_name
|
17
|
+
name_from_class
|
18
|
+
end
|
19
|
+
|
20
|
+
sig { overridable.returns(T.nilable(String)) }
|
21
|
+
def description
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
sig { abstract.returns(T::Array[EnumValueDefinition]) }
|
26
|
+
def enum_value_definitions; end
|
27
|
+
|
28
|
+
sig { overridable.returns(T::Array[Directive]) }
|
29
|
+
def directives
|
30
|
+
[]
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
sig(:final) { override.returns(EnumTypeDefinition) }
|
36
|
+
def definition
|
37
|
+
@definition ||= T.let(nil, T.nilable(EnumTypeDefinition))
|
38
|
+
@definition ||= EnumTypeDefinition.new(
|
39
|
+
name: graphql_name,
|
40
|
+
enum_value_definitions:,
|
41
|
+
description:,
|
42
|
+
directives:,
|
43
|
+
ruby_class: self,
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|