Quellcode durchsuchen

Merge pull request #16 from bjornbytes/fix-args

Fix empty field args caused by bad use of util.map;
Bjorn Swenson vor 8 Jahren
Ursprung
Commit
29c320aa18
1 geänderte Dateien mit 22 neuen und 43 gelöschten Zeilen
  1. 22 43
      graphql/introspection.lua

+ 22 - 43
graphql/introspection.lua

@@ -4,6 +4,26 @@ local util = require(path .. '.util')
 
 local __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue,__EnumValue, __TypeKind
 
+local function resolveArgs(field)
+  local function transformArg(arg, name)
+    if arg.__type then
+      return { kind = arg, name = name }
+    elseif arg.name then
+      return arg
+    else
+      local result = { name = name }
+
+      for k, v in pairs(arg) do
+        result[k] = v
+      end
+
+      return result
+    end
+  end
+
+  return util.values(util.map(field.arguments or {}, transformArg))
+end
+
 __Schema = types.object({
   name = '__Schema',
 
@@ -95,29 +115,7 @@ __Directive = types.object({
 
       args = {
         kind = types.nonNull(types.list(types.nonNull(__InputValue))),
-        resolve = function(field)
-          local args = {}
-          local transform = function(a, n)
-            if a.__type then
-              return { kind = a, name = n }
-            else
-              if a.name then return a end
-
-              local r = { name = n }
-              for k,v in pairs(a) do
-                r[k] = v
-              end
-
-              return r
-            end
-          end
-
-          for k, v in pairs(field.arguments or {}) do
-            table.insert(args, transform(v, k))
-          end
-
-          return args
-        end
+        resolve = resolveArgs
       }
     }
   end
@@ -290,27 +288,8 @@ __Field = types.object({
       description = types.string,
 
       args = {
-        -- kind = types.list(__InputValue),
         kind = types.nonNull(types.list(types.nonNull(__InputValue))),
-        resolve = function(field)
-          return util.map(field.arguments or {}, function(a, n)
-            if a.__type then
-              return { kind = a, name = n }
-            else
-              if not a.name then
-                local r = { name = n }
-
-                for k,v in pairs(a) do
-                  r[k] = v
-                end
-
-                return r
-              else
-                return a
-              end
-            end
-          end)
-        end
+        resolve = resolveArgs
       },
 
       type = {