akira/exq 1240
Job processing library for Elixir - compatible with Resque / Sidekiq
benwilson512/ar-transmogrifier 6
Convert your ActiveRecord schema.rb into Ecto Models.
A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things. Updates:
benwilson512/absinthe_benchmark 0
super basic code to profile absinthe with
Mnesia wrapper for Elixir.
benwilson512/apollo-tracing-elixir 0
Apollo Tracing middleware for Absinthe
pull request commentabsinthe-graphql/absinthe
Documentation: clarify the dataloader integration
Thanks!
comment created time in 14 hours
push eventabsinthe-graphql/absinthe
commit sha fe02d15f4f92cfff49334ade58b308866f799858
Clarify the dataloader integration (#1076)
push time in 14 hours
PR merged absinthe-graphql/absinthe
This was mysterious to me until I poked around the code a little.
pr closed time in 14 hours
pull request commentabsinthe-graphql/absinthe
Fix a small grammar issue in the guides
Thanks!
comment created time in 14 hours
push eventabsinthe-graphql/absinthe
commit sha 6269157b6ba2b492ba3a52748b4f1fa584ce8341
Fix a small grammar issue in the guides (#1082)
push time in 14 hours
PR merged absinthe-graphql/absinthe
<!--
Precheck
Thank you for submitting a pull request! Absinthe is a large project, and we really appreciate your help improving it.
Please keep the following in mind as you submit your code; it will help us review, discuss, and merge your PR as quickly as possible.
- Tests are good! Please include them if possible.
- Documentation is good:
- Modules should have a
@moduledoc(may befalse) - Public functions should have a
@doc(may befalse) - Consider checking
/guidesfor documentation that needs to be updated
- Modules should have a
- Specifications are good. Include
@specwhen possible. - Good Git history behavior is good. Don't rebase your PR branch, and make small, focused commits. We generally squash commits on merge for you, unless there is a reason not to (multiple committers on a PR, etc).
- Matching existing code style is good.
We're happy to work with you, providing guidance and assistance where we can, collaborating with you to help your contribution become part of Absinthe. Thanks again!
As always, feel free to reach out for questions/discussion via:
- Our Slack channel (#absinthe-graphql): https://elixir-slackin.herokuapp.com
- The Elixir Forum: https://elixirforum.com
-->
pr closed time in 14 hours
PR opened absinthe-graphql/absinthe
<!--
Precheck
Thank you for submitting a pull request! Absinthe is a large project, and we really appreciate your help improving it.
Please keep the following in mind as you submit your code; it will help us review, discuss, and merge your PR as quickly as possible.
- Tests are good! Please include them if possible.
- Documentation is good:
- Modules should have a
@moduledoc(may befalse) - Public functions should have a
@doc(may befalse) - Consider checking
/guidesfor documentation that needs to be updated
- Modules should have a
- Specifications are good. Include
@specwhen possible. - Good Git history behavior is good. Don't rebase your PR branch, and make small, focused commits. We generally squash commits on merge for you, unless there is a reason not to (multiple committers on a PR, etc).
- Matching existing code style is good.
We're happy to work with you, providing guidance and assistance where we can, collaborating with you to help your contribution become part of Absinthe. Thanks again!
As always, feel free to reach out for questions/discussion via:
- Our Slack channel (#absinthe-graphql): https://elixir-slackin.herokuapp.com
- The Elixir Forum: https://elixirforum.com
-->
pr created time in a day
pull request commentCargoSense/briefly
add: config sub_directory name
just saw #24
comment created time in 5 days
PR opened CargoSense/briefly
Added the possibility to configure temporary sub directory name. (defaults to "briefly")
config :briefly,
directory: [{:system, "TMPDIR"}, {:system, "TMP"}, {:system, "TEMP"}, "/tmp"],
sub_directory: "briefly",
default_prefix: "briefly",
default_extname: ""
pr created time in 5 days
issue commentabsinthe-graphql/absinthe
So is it not possible to leverage Apollo Federation while also using Absinthe Elixir ?
Mesh should, at least in principle, be able to add a Federation implementation to an existing nonconforming schema: https://www.graphql-mesh.com/docs/transforms/federation via https://github.com/0xR/graphql-transform-federation
comment created time in 6 days
issue commentabsinthe-graphql/absinthe
@d-led Schema stitching and federation are not the same though
Each system has a unique strategy for combining sub-services:
- Federation services are aware of each other’s data while the gateway is a generic agent that combines them. The gateway configures itself by reading SDLs from each service, and may be reloaded on the fly with new SDLs.
- Stitching services remain unaware of each other while the gateway loads and combines their schemas. Recent development has added SDL annotations that allow stitched schemas to also be reloaded on the fly.
So is it not possible to leverage Apollo Federation while also using Absinthe Elixir ?
comment created time in 6 days
issue openedabsinthe-graphql/absinthe
default_value for an enum type doesn't work when the enum type is defined with the shorthand syntax
If submitting a bug, please provide the following:
Environment
- Elixir version (elixir -v):
Erlang/OTP 23 [erts-11.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [hipe]
Elixir 1.11.4 (compiled with Erlang/OTP 23)
- Absinthe version (mix deps | grep absinthe): 1.6.3
- Client Framework and version (Relay, Apollo, etc): Not relevant as it's a backend bug
Expected behavior
Define an enum type with the shorthand syntax:
enum :example_type, values: [:A, :B, :C]
In the schema, have a field with default value: arg :example, :example_type, default_value: :A.
It should work as expected.
Actual behavior
A compilation error is thrown:
(ArgumentError) you attempted to apply :value on [:A, :B, :C]. If you are using apply/3, make sure the module is an atom. If you are using the dot syntax, such as map.field or module.function(), make sure the left side of the dot is an atom or a map
:erlang.apply([:A, :B, :C], :value, [])
Stacktrace:
│ (absinthe 1.6.3) lib/absinthe/phase/schema/validation/default_enum_value_present.ex:33: anonymous fn/1 in Absinthe.Phase.Schema.Validation.DefaultEnumValuePresent.validate_defaults/2
│ (elixir 1.11.4) lib/enum.ex:1411: Enum."-map/2-lists^map/1-0-"/2
│ (absinthe 1.6.3) lib/absinthe/phase/schema/validation/default_enum_value_present.ex:33: Absinthe.Phase.Schema.Validation.DefaultEnumValuePresent.validate_defaults/2
│ (absinthe 1.6.3) lib/absinthe/blueprint/transform.ex:16: anonymous fn/3 in Absinthe.Blueprint.Transform.prewalk/2
│ (absinthe 1.6.3) lib/absinthe/blueprint/transform.ex:109: Absinthe.Blueprint.Transform.walk/4
│ (elixir 1.11.4) lib/enum.ex:1533: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
│ (absinthe 1.6.3) lib/absinthe/blueprint/transform.ex:145: anonymous
I had to change the definition of the enum type like this:
enum :example_type do
value :A
value :B
value :C
end
for it to work, even though it seems that they should mean the exact same thing.
created time in 7 days
issue openedabsinthe-graphql/absinthe
If submitting a bug, please provide the following:
Environment
- Elixir version (elixir -v): Elixir 1.11.4 (compiled with Erlang/OTP 23)
- Absinthe version (mix deps | grep absinthe): absinthe 1.6.4
- Client Framework and version (Relay, Apollo, etc): n/a
Expected behavior
When defining a schema with a higher-order interface, for example, interface Mammal implements interface Animal, and object type Dog implements Mammal (and therefore Dog transitively implements Animal)...
I expect compilation of object types in that schema to enforce the interface transitivity requirement of the GraphQL spec:
Transitively implemented interfaces (interfaces implemented by the interface that is being implemented) must also be defined on an implementing type or interface. For example, Image cannot implement Resource without also implementing Node
Actual behavior
However, when defining an absinthe schema such as this Dog/Mammal/Animal example, if I only explicitly implement Mammal on Dog, I do not get a compilation error about the missing Animal interface declaration, and instead, I get runtime errors when resolving queries that spread on the various types. Here is an example.
My test schema:
defmodule AbsintheTestSchema do
use Absinthe.Schema
interface :animal do
field :name, :string
field :leg_count, :integer
resolve_type fn
%{breed: _}, _ -> :dog
_, _ -> nil
end
end
interface :mammal do
interface :animal
field :name, :string
field :leg_count, :integer
field :has_fur, :boolean
resolve_type fn
%{breed: _}, _ -> :dog
_, _ -> nil
end
end
object :dog do
interface :mammal
field :breed, :string
field :name, :string
field :leg_count, :integer
field :has_fur, :boolean
end
query do
field :my_animal, :animal do
resolve fn _, _ ->
{:ok, %{name: "Ponyo", leg_count: 4, has_fur: true, breed: "pitbull" }}
end
end
end
end
Then I hop into iex with this test project, and define this query string:
{
myAnimal {
name
... on Mammal {
hasFur
}
... on Dog {
breed
}
}
}
Passing that query string into Absinthe.run(AbsintheTestSchema) gives me these resolution errors:
{:ok,
%{
errors: [
%{
locations: [%{column: 5, line: 4}],
message: "Fragment spread has no type overlap with parent.\nParent possible types: [\"Mammal\"]\nSpread possible types: [\"Dog\"]\n"
},
%{
locations: [%{column: 5, line: 7}],
message: "Fragment spread has no type overlap with parent.\nParent possible types: [\"Mammal\"]\nSpread possible types: [\"Dog\"]\n"
}
]
}}
If I change the definition of :dog to explicitly implement both interfaces (interfaces [:mammal, :animal]), then recompile and run the same query, it works as expected, and gives me this result:
{:ok,
%{
data: %{
"myAnimal" => %{"breed" => "pitbull", "hasFur" => true, "name" => "Ponyo"}
}
}}
In contrast, I tested this with graphql-js (given that it is a reference implementation of the GraphQL spec), and a similar schema does not pass the validation--it gives me this error, which I expect absinthe to give also:
{
errors: [
GraphQLError [Object]: Type Dog must implement Animal because it is implemented by Mammal.
at SchemaValidationContext.reportError (/Users/epoley/node_modules/graphql/type/validate.js:86:19)
at validateTypeImplementsAncestors (/Users/epoley/node_modules/graphql/type/validate.js:379:15)
at validateInterfaces (/Users/epoley/node_modules/graphql/type/validate.js:293:5)
at validateTypes (/Users/epoley/node_modules/graphql/type/validate.js:209:7)
at validateSchema (/Users/epoley/node_modules/graphql/type/validate.js:52:3)
at graphqlImpl (/Users/epoley/node_modules/graphql/graphql.js:79:62)
at /Users/epoley/node_modules/graphql/graphql.js:28:59
at new Promise (<anonymous>)
at graphql (/Users/epoley/node_modules/graphql/graphql.js:26:10)
at Object.<anonymous> (/Users/epoley/code/test_graphql_js/test.js:42:1) {
locations: [Array]
}
]
}
This was a surprise to me when I used higher-order interfaces in GraphQL for the first time in absinthe. My assumption (coming from other languages with higher-order protocols and interfaces) was that I'd only need to explicitly implement Mammal on Dog, which was how I wrote the erroneous code. It's fine that GraphQL specifies that transitivity must be explicitly defined on the object type, but it's confusing that Absinthe doesn't enforce this when validating a schema.
Relevant Schema/Middleware Code
(provided above)
created time in 10 days
pull request commentabsinthe-graphql/absinthe_tutorial
Update `MixProject` dependencies list [:absinthe]
If this is helpful, I’m happy to make the associated changes in the absinthe tutorial. They’d be almost entirely formatting changes, and very simple to make.
comment created time in 10 days
PR opened absinthe-graphql/absinthe_tutorial
In practice, this builds the tutorial as an absinthe 1.6 project upon a fresh Phoenix 1.5.9 project generation, and formats the project with mix format. All the queries listed in the absinthe tutorial resolve as they ever did.
pr created time in 10 days
Pull request review commentabsinthe-graphql/absinthe
Prevent key :is_type_of not found error on interfaces
defmodule Absinthe.Type.Interface do end else type_name =- Enum.find(implementors, fn type ->+ implementors
@benwilson512 In which direction should I continue?
comment created time in 10 days
issue commentabsinthe-graphql/dataloader
Return response fields based on the context
@benwilson512 I've already asked same question in elixirforum https://elixirforum.com/t/return-response-fields-based-on-the-context-using-dataloader/40162. But, I didn't get any solution. That's why I asked here. Can you help me with this
comment created time in 11 days
issue openedabsinthe-graphql/dataloader
Return fields based on the context using dataloader
Need to return response based on the context.
This is my schema.ex
object(:user) do
field :name, :string
field :dob, :string
field :test_1, dataloader(Repo)
field :test_2, dataloader(Repo)
field :test_3, dataloader(Repo)
field :test_4, dataloader(Repo)
field :test_5, dataloader(Repo)
end
def plugins do
[Absinthe.Middleware.Dataloader | Absinthe.Plugin.defaults()]
end
def context(ctx) do
loader =
Dataloader.new()
|> Dataloader.add_source(Repo, Dataloader.Ecto.new(Repo))
Map.put(ctx, :loader, loader)
end
If the get_user API was hit by logged in user(By context, I was validating that). I will to return all the fields. The dataloader will do loading the associations job for me.
%{
name: "some name",
dob: "some dob",
test_1: "some_test_1",
test_2: "some_test_2",
test_3: "some_test_3",
test_4: "some_test_4",
test_5: "some_test_5"
}
If the same get_user API was hit by not logged user(Without token). I only want to return the “name” field from the backend!
%{
name: "some name",
dob: nil,
test_1: nil,
test_2: nil,
test_3: nil,
test_4: nil,
test_5: nil
}
How can i achieve this with dataloader?. Dataloader try to load all the association every time(If that particular field was passed from the frontend).
created time in 12 days
Pull request review commentabsinthe-graphql/absinthe
Prevent key :is_type_of not found error on interfaces
defmodule Absinthe.Type.Interface do end else type_name =- Enum.find(implementors, fn type ->+ implementors
@benwilson512 If I change it in finde_implementors, I break those two tests:
1) test interfaces are propagated across type imports (Absinthe.Schema.Rule.ObjectMustImplementInterfacesTest)
test/absinthe/schema/rule/object_must_implement_interfaces_test.exs:88
Assertion with == failed
code: assert %{named: [:cat, :dog, :user], favorite_foods: [:cat, :dog, :user], parented: [:named]} == Schema.__absinthe_interface_implementors__()
left: %{favorite_foods: [:cat, :dog, :user], named: [:cat, :dog, :user], parented: [:named]}
right: %{favorite_foods: [:cat, :dog, :user], named: [:cat, :dog, :user], parented: []}
stacktrace:
test/absinthe/schema/rule/object_must_implement_interfaces_test.exs:89: (test)
.
2) test interfaces are set from sdl (Absinthe.Schema.Rule.ObjectMustImplementInterfacesTest)
test/absinthe/schema/rule/object_must_implement_interfaces_test.exs:122
Assertion with == failed
code: assert %{image: [], node: [:image, :resource], resource: [:image]} == InterfaceImplementsInterfaces.__absinthe_interface_implementors__()
left: %{image: [], node: [:image, :resource], resource: [:image]}
right: %{image: [], node: [], resource: []}
stacktrace:
test/absinthe/schema/rule/object_must_implement_interfaces_test.exs:123: (test)
Do we consider those tests correct or wrong?
comment created time in 12 days
Pull request review commentabsinthe-graphql/absinthe
Prevent key :is_type_of not found error on interfaces
defmodule Absinthe.Type.Interface do end else type_name =- Enum.find(implementors, fn type ->+ implementors
I'm running out of time now, I'll nave a look later 👍
comment created time in 12 days
pull request commentabsinthe-graphql/absinthe
Prevent key :is_type_of not found error on interfaces
@benwilson512 I added a test.
comment created time in 12 days
pull request commentabsinthe-graphql/absinthe
Prevent key :is_type_of not found error on interfaces
@benwilson512 Where was the current functionality of the is_type_of tested?
comment created time in 12 days
PR opened absinthe-graphql/absinthe
Fix for https://github.com/absinthe-graphql/absinthe/issues/1077
pr created time in 12 days
issue openedabsinthe-graphql/absinthe
key :is_type_of not found on Interface
If submitting a bug, please provide the following:
Environment
- Elixir version (elixir -v):
Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:6:6] [ds:6:6:10] [async-threads:1] [jit]
Elixir 1.12.0 (compiled with Erlang/OTP 22)
- Absinthe version (mix deps | grep absinthe):
* absinthe 1.6.4 (Hex package) (mix)
locked at 1.6.4 (absinthe) 6e9c1cf3
* absinthe_error_payload 1.0.1 (Hex package) (mix)
locked at 1.0.1 (absinthe_error_payload) 03b30013
* absinthe_phoenix 2.0.1 (Hex package) (mix)
locked at 2.0.1 (absinthe_phoenix) e773adc8
* absinthe_plug 1.5.8 (Hex package) (mix)
locked at 1.5.8 (absinthe_plug) bbb04176
* absinthe_relay 1.5.1 (Hex package) (mix)
locked at 1.5.1 (absinthe_relay) 1fd2a355
- Client Framework and version (Relay, Apollo, etc): None yet
Expected behavior
When defining interface root / * interface* intermediate / object child and defining a is_type_of on the object, everything should work fine.
Actual behavior
** (KeyError) key :is_type_of not found in: %Absinthe.Type.Interface{__private__: [__absinthe_referenced__: true], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 6}, module: Sustema.CompanyApi.Schema.Company.Alias}, definition: Sustema.CompanyApi.Schema.Company.Alias, description: nil, fields: %{__typename: %Absinthe.Type.Field{__private__: [], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/deps/absinthe/lib/absinthe/phase/schema/introspection.ex", line: 74}, module: Absinthe.Phase.Schema.Introspection}, args: %{}, complexity: 0, config: 0, default_value: nil, definition: Absinthe.Phase.Schema.Introspection, deprecation: nil, description: "The name of the object type currently being queried.", identifier: :__typename, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :__typename, [{:ref, Absinthe.Phase.Schema.Introspection, :typename}]}}], name: "__typename", triggers: %{}, type: :string}, company: %Absinthe.Type.Field{__private__: [], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 11}, module: Sustema.CompanyApi.Schema.Company.Alias}, args: %{}, complexity: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :company}}}, config: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :company}}}, default_value: nil, definition: Sustema.CompanyApi.Schema.Company.Alias, deprecation: nil, description: nil, identifier: :company, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :company, [{:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :company}}}]}}], name: "company", triggers: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :company}}}, type: %Absinthe.Type.NonNull{of_type: :company}}, id: %Absinthe.Type.Field{__private__: [], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 7}, module: Sustema.CompanyApi.Schema.Company.Alias}, args: %{}, complexity: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :id}}}, config: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :id}}}, default_value: nil, definition: Sustema.CompanyApi.Schema.Company.Alias, deprecation: nil, description: nil, identifier: :id, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :id, [{:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :id}}}]}}], name: "id", triggers: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :id}}}, type: %Absinthe.Type.NonNull{of_type: :id}}, inserted_at: %Absinthe.Type.Field{__private__: [], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 10}, module: Sustema.CompanyApi.Schema.Company.Alias}, args: %{}, complexity: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :inserted_at}}}, config: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :inserted_at}}}, default_value: nil, definition: Sustema.CompanyApi.Schema.Company.Alias, deprecation: nil, description: nil, identifier: :inserted_at, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :inserted_at, [{:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :inserted_at}}}]}}], name: "inserted_at", triggers: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :inserted_at}}}, type: %Absinthe.Type.NonNull{of_type: :datetime}}, name: %Absinthe.Type.Field{__private__: [], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 8}, module: Sustema.CompanyApi.Schema.Company.Alias}, args: %{}, complexity: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :name}}}, config: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :name}}}, default_value: nil, definition: Sustema.CompanyApi.Schema.Company.Alias, deprecation: nil, description: nil, identifier: :name, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :name, [{:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :name}}}]}}], name: "name", triggers: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :name}}}, type: %Absinthe.Type.NonNull{of_type: :string}}, updated_at: %Absinthe.Type.Field{__private__: [], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 9}, module: Sustema.CompanyApi.Schema.Company.Alias}, args: %{}, complexity: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :updated_at}}}, config: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :updated_at}}}, default_value: nil, definition: Sustema.CompanyApi.Schema.Company.Alias, deprecation: nil, description: nil, identifier: :updated_at, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :updated_at, [{:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :updated_at}}}]}}], name: "updated_at", triggers: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :updated_at}}}, type: %Absinthe.Type.NonNull{of_type: :datetime}}, versions: %Absinthe.Type.Field{__private__: [absinthe_relay: [{{:paginate, :both}, {:fill, Absinthe.Relay.Connection.Notation}}]], __reference__: %{location: %{file: "/home/maennchen/Development/sustema/components/company-api/apps/sustema_company_api/lib/sustema_company_api/schema/company/alias.ex", line: 13}, module: Sustema.CompanyApi.Schema.Company.Alias}, args: %{after: %Absinthe.Type.Argument{__reference__: nil, default_value: nil, definition: nil, deprecation: nil, description: nil, identifier: :after, name: "after", type: :string}, before: %Absinthe.Type.Argument{__reference__: nil, default_value: nil, definition: nil, deprecation: nil, description: nil, identifier: :before, name: "before", type: :string}, first: %Absinthe.Type.Argument{__reference__: nil, default_value: nil, definition: nil, deprecation: nil, description: nil, identifier: :first, name: "first", type: :integer}, last: %Absinthe.Type.Argument{__reference__: nil, default_value: nil, definition: nil, deprecation: nil, description: nil, identifier: :last, name: "last", type: :integer}}, complexity: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :versions}}}, config: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :versions}}}, default_value: nil, definition: Sustema.CompanyApi.Schema.Company.Alias, deprecation: nil, description: nil, identifier: :versions, middleware: [{{Absinthe.Middleware, :shim}, {:company_alias, :versions, [{:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :versions}}}]}}], name: "versions", triggers: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.FieldDefinition, {:company_alias, :versions}}}, type: :version_connection}}, identifier: :company_alias, interfaces: [:resource, :versioned_resource, :node], name: "CompanyAlias", resolve_type: {:ref, Sustema.CompanyApi.Schema.Company.Alias, {Absinthe.Blueprint.Schema.InterfaceTypeDefinition, :company_alias}}}
Relevant Schema/Middleware Code
copied together from various schemas, using absinthe_relay
node interface do
end
interface :resource do
field :id, non_null(:id)
field :inserted_at, non_null(:datetime)
field :updated_at, non_null(:datetime)
interface :node
end
interface :company_alias do
field :id, non_null(:id)
field :name, non_null(:string)
field :updated_at, non_null(:datetime)
field :inserted_at, non_null(:datetime)
field :company, non_null(:company)
connection field :versions, node_type: :version do
end
interface :node
interface :versioned_resource
interface :resource
end
connection(node_type: :company_alias)
node object(:company_alias_global) do
field :name, non_null(:string)
field :updated_at, non_null(:datetime)
field :inserted_at, non_null(:datetime)
field :company, non_null(:company)
connection field :versions, node_type: :version do
end
interface :versioned_resource
interface :resource
interface :company_alias
is_type_of &match?(%Sustema.Company.CompanyContext.Alias{visibility: :global}, &1)
end
connection(node_type: :company_alias_global)
node object(:company_alias_tenant) do
field :name, non_null(:string)
field :tenant, non_null(:string)
field :updated_at, non_null(:datetime)
field :inserted_at, non_null(:datetime)
field :company, non_null(:company)
connection field :versions, node_type: :version do
end
interface :versioned_resource
interface :resource
interface :company_alias
is_type_of &match?(%Sustema.Company.CompanyContext.Alias{visibility: :tenant}, &1)
end
connection(node_type: :company_alias_tenant)
created time in 12 days
pull request commentabsinthe-graphql/absinthe
Is this something that would make sense to live in absinthe? Or would it be better as some sort of plugin to absinthe? I need this feature for my use case of federation but I may be able to put this behavior into the absinthe_federation library itself if we dont want this to be a core feature of absinthe. Would love some direction on this so I can move forward with whatever the team thinks is best for the absinthe ecosystem
comment created time in 15 days
PR opened absinthe-graphql/absinthe
This was mysterious to me until I poked around the code a little.
pr created time in 18 days
pull request commentabsinthe-graphql/absinthe
I am happy to make more changes but I think I have addressed the feedback so far
comment created time in 19 days
issue commentabsinthe-graphql/absinthe
Incomplete error response on mutation with multiple instances of the same mutation
Alright, will do that! Thanks @benwilson512 really appreciate the time!
comment created time in 19 days
PR opened benwilson512/chirp
Bumps browserslist from 4.12.0 to 4.16.6. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md">browserslist's changelog</a>.</em></p> <blockquote> <h2>4.16.6</h2> <ul> <li>Fixed <code>npm-shrinkwrap.json</code> support in <code>--update-db</code> (by Geoff Newman).</li> </ul> <h2>4.16.5</h2> <ul> <li>Fixed unsafe RegExp (by Yeting Li).</li> </ul> <h2>4.16.4</h2> <ul> <li>Fixed unsafe RegExp.</li> <li>Added artifactory support to <code>--update-db</code> (by Ittai Baratz).</li> </ul> <h2>4.16.3</h2> <ul> <li>Fixed <code>--update-db</code>.</li> </ul> <h2>4.16.2</h2> <ul> <li>Fixed <code>--update-db</code> (by <a href="https://github.com/ialarmedalien"><code>@ialarmedalien</code></a>).</li> </ul> <h2>4.16.1</h2> <ul> <li>Fixed Chrome 4 with <code>mobileToDesktop</code> (by Aron Woost).</li> </ul> <h2>4.16</h2> <ul> <li>Add <code>browserslist config</code> query.</li> </ul> <h2>4.15</h2> <ul> <li>Add TypeScript types (by Dmitry Semigradsky).</li> </ul> <h2>4.14.7</h2> <ul> <li>Fixed Yarn Workspaces support to <code>--update-db</code> (by Fausto Núñez Alberro).</li> <li>Added browser changes to <code>--update-db</code> (by <a href="https://github.com/AleksandrSl"><code>@AleksandrSl</code></a>).</li> <li>Added color output to <code>--update-db</code>.</li> <li>Updated <code>package.funding</code> to have link to our Open Collective.</li> </ul> <h2>4.14.6</h2> <ul> <li>Fixed Yarn support in <code>--update-db</code> (by Ivan Storck).</li> <li>Fixed npm 7 support in <code>--update-db</code>.</li> </ul> <h2>4.14.5</h2> <ul> <li>Fixed <code>last 2 electron versions</code> query (by Sergey Melyukov).</li> </ul> <h2>4.14.4</h2> <ul> <li>Fixed <code>Unknown version 59 of op_mob</code> error.</li> </ul> <h2>4.14.3</h2> <ul> <li>Update Firefox ESR.</li> </ul> <h2>4.14.2</h2> <ul> <li>Fixed <code>--update-db</code> on Windows (by James Ross).</li> <li>Improved <code>--update-db</code> output.</li> </ul> <h2>4.14.1</h2> <ul> <li>Added <code>--update-db</code> explanation (by Justin Zelinsky).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/browserslist/browserslist/commit/6fe3614db05b40f9dc1c63588a83d2ada05bae75"><code>6fe3614</code></a> Release 4.16.6 version</li> <li><a href="https://github.com/browserslist/browserslist/commit/33ebac933839847a62ede680273449f6cdca1e18"><code>33ebac9</code></a> Update dependencies</li> <li><a href="https://github.com/browserslist/browserslist/commit/2128170f231a6c9f462276006e09f302d811df31"><code>2128170</code></a> Add support for npm-shrinkwrap files alongside package-lock (<a href="https://github-redirect.dependabot.com/browserslist/browserslist/issues/595">#595</a>)</li> <li><a href="https://github.com/browserslist/browserslist/commit/7cc2aedd0047d800d44aa0259c02b6db1414105c"><code>7cc2aed</code></a> Release 4.16.5 version</li> <li><a href="https://github.com/browserslist/browserslist/commit/27e4afdc68798ca93f8c01c5ea6208b4b361a704"><code>27e4afd</code></a> Update dependencies</li> <li><a href="https://github.com/browserslist/browserslist/commit/1013a1847931a209c34a704aebc85a8c091286e7"><code>1013a18</code></a> Fix version RegExp</li> <li><a href="https://github.com/browserslist/browserslist/commit/b879a1a304def2563f42cc3d3f5711e760662be3"><code>b879a1a</code></a> Use Node.js 16 on CI</li> <li><a href="https://github.com/browserslist/browserslist/commit/bd1e9e01c95cad24be706fb11be7d151cd99ed0a"><code>bd1e9e0</code></a> Fix ReDoS (<a href="https://github-redirect.dependabot.com/browserslist/browserslist/issues/593">#593</a>)</li> <li><a href="https://github.com/browserslist/browserslist/commit/209adf9e0051fa39a2b25354cffd493300f34b02"><code>209adf9</code></a> Release 4.16.4 version</li> <li><a href="https://github.com/browserslist/browserslist/commit/3e2ae3b52daf7f5203247fd4f583b3bda66ea57d"><code>3e2ae3b</code></a> Fix types</li> <li>Additional commits viewable in <a href="https://github.com/browserslist/browserslist/compare/4.12.0...4.16.6">compare view</a></li> </ul> </details> <br />
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
<details> <summary>Dependabot commands and options</summary> <br />
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)@dependabot use these labelswill set the current labels as the default for future PRs for this repo and language@dependabot use these reviewerswill set the current reviewers as the default for future PRs for this repo and language@dependabot use these assigneeswill set the current assignees as the default for future PRs for this repo and language@dependabot use this milestonewill set the current milestone as the default for future PRs for this repo and language
You can disable automated security fix PRs for this repo from the Security Alerts page.
</details>
pr created time in 19 days