extractExtensionsFromSchema.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.extractExtensionsFromSchema = void 0;
  4. const mapSchema_js_1 = require("./mapSchema.js");
  5. const Interfaces_js_1 = require("./Interfaces.js");
  6. function extractExtensionsFromSchema(schema) {
  7. const result = {
  8. schemaExtensions: schema.extensions || {},
  9. types: {},
  10. };
  11. (0, mapSchema_js_1.mapSchema)(schema, {
  12. [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {
  13. result.types[type.name] = { fields: {}, type: 'object', extensions: type.extensions || {} };
  14. return type;
  15. },
  16. [Interfaces_js_1.MapperKind.INTERFACE_TYPE]: type => {
  17. result.types[type.name] = { fields: {}, type: 'interface', extensions: type.extensions || {} };
  18. return type;
  19. },
  20. [Interfaces_js_1.MapperKind.FIELD]: (field, fieldName, typeName) => {
  21. result.types[typeName].fields[fieldName] = {
  22. arguments: {},
  23. extensions: field.extensions || {},
  24. };
  25. const args = field.args;
  26. if (args != null) {
  27. for (const argName in args) {
  28. result.types[typeName].fields[fieldName].arguments[argName] =
  29. args[argName].extensions || {};
  30. }
  31. }
  32. return field;
  33. },
  34. [Interfaces_js_1.MapperKind.ENUM_TYPE]: type => {
  35. result.types[type.name] = { values: {}, type: 'enum', extensions: type.extensions || {} };
  36. return type;
  37. },
  38. [Interfaces_js_1.MapperKind.ENUM_VALUE]: (value, typeName, _schema, valueName) => {
  39. result.types[typeName].values[valueName] = value.extensions || {};
  40. return value;
  41. },
  42. [Interfaces_js_1.MapperKind.SCALAR_TYPE]: type => {
  43. result.types[type.name] = { type: 'scalar', extensions: type.extensions || {} };
  44. return type;
  45. },
  46. [Interfaces_js_1.MapperKind.UNION_TYPE]: type => {
  47. result.types[type.name] = { type: 'union', extensions: type.extensions || {} };
  48. return type;
  49. },
  50. [Interfaces_js_1.MapperKind.INPUT_OBJECT_TYPE]: type => {
  51. result.types[type.name] = { fields: {}, type: 'input', extensions: type.extensions || {} };
  52. return type;
  53. },
  54. [Interfaces_js_1.MapperKind.INPUT_OBJECT_FIELD]: (field, fieldName, typeName) => {
  55. result.types[typeName].fields[fieldName] = {
  56. extensions: field.extensions || {},
  57. };
  58. return field;
  59. },
  60. });
  61. return result;
  62. }
  63. exports.extractExtensionsFromSchema = extractExtensionsFromSchema;