profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/benwilson512/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Ben Wilson benwilson512 Baltimore, MD

akira/exq 1240

Job processing library for Elixir - compatible with Resque / Sidekiq

benwilson512/ar-transmogrifier 6

Convert your ActiveRecord schema.rb into Ecto Models.

benwilson512/awesome-elixir 1

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

benwilson512/amnesia 0

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!

nathanl

comment created time in 14 hours

push eventabsinthe-graphql/absinthe

Nathan Long

commit sha fe02d15f4f92cfff49334ade58b308866f799858

Clarify the dataloader integration (#1076)

view details

push time in 14 hours

PR merged absinthe-graphql/absinthe

Documentation: clarify the dataloader integration

This was mysterious to me until I poked around the code a little.

+10 -0

0 comment

2 changed files

nathanl

pr closed time in 14 hours

pull request commentabsinthe-graphql/absinthe

Fix a small grammar issue in the guides

Thanks!

mackshkatz

comment created time in 14 hours

push eventabsinthe-graphql/absinthe

Max Katz

commit sha 6269157b6ba2b492ba3a52748b4f1fa584ce8341

Fix a small grammar issue in the guides (#1082)

view details

push time in 14 hours

PR merged absinthe-graphql/absinthe

Fix a small grammar issue in the guides

<!--

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 be false)
    • Public functions should have a @doc (may be false)
    • Consider checking /guides for documentation that needs to be updated
  • Specifications are good. Include @spec when 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

-->

+2 -2

0 comment

1 changed file

mackshkatz

pr closed time in 14 hours

PR opened absinthe-graphql/absinthe

Fix a small grammar issue in the guides

<!--

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 be false)
    • Public functions should have a @doc (may be false)
    • Consider checking /guides for documentation that needs to be updated
  • Specifications are good. Include @spec when 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

-->

+2 -2

0 comment

1 changed file

pr created time in a day

pull request commentCargoSense/briefly

add: config sub_directory name

just saw #24

mad42

comment created time in 5 days

PR opened CargoSense/briefly

add: config sub_directory name

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: ""
+7 -2

0 comment

3 changed files

pr created time in 5 days

issue commentabsinthe-graphql/absinthe

Apollo Federation

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

fbjork

comment created time in 6 days

issue commentabsinthe-graphql/absinthe

Apollo Federation

@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 ?

fbjork

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

Absinthe doesn't conform to GraphQL spec for validating schemas with interfaces that implement other interfaces

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.

jbcaprell

comment created time in 10 days

PR opened absinthe-graphql/absinthe_tutorial

Update `MixProject` dependencies list [:absinthe]

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.

+397 -509

0 comment

40 changed files

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?

maennchen

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

iteron-yasir

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?

maennchen

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 👍

maennchen

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.

maennchen

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?

maennchen

comment created time in 12 days

PR opened absinthe-graphql/absinthe

Fix Mix Format

Should make CI pass again

+19 -9

0 comment

1 changed file

pr created time in 12 days

PR opened absinthe-graphql/absinthe

Prevent key :is_type_of not found error on interfaces

Fix for https://github.com/absinthe-graphql/absinthe/issues/1077

+3 -1

0 comment

1 changed file

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

Support open ended scalars

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

kdawgwilk

comment created time in 15 days

PR opened absinthe-graphql/absinthe

Clarify the dataloader integration

This was mysterious to me until I poked around the code a little.

+10 -0

0 comment

2 changed files

pr created time in 18 days

pull request commentabsinthe-graphql/absinthe

Support open ended scalars

I am happy to make more changes but I think I have addressed the feedback so far

kdawgwilk

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!

lucianoengel

comment created time in 19 days

PR opened benwilson512/chirp

Bump browserslist from 4.12.0 to 4.16.6 in /assets

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 compatibility score

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 rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will 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 version will 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 dependency will 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 labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will 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>

+40 -71

0 comment

1 changed file

pr created time in 19 days