Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A library to query and manipulate GraphQL Introspection Query results in some useful ways.

License

NotificationsYou must be signed in to change notification settings

anvilco/graphql-introspection-tools

Repository files navigation

Microfiber - A.K.A. GraphQL Introspection Tools

npmdownloads

A library to query and manipulate GraphQL Introspection Query results in some useful ways. What ways you ask?

How about:

  • Digging through your Introspection Query Results for a specific Query, Mutation, Type, Field, Argument or Subscription.
  • Removing a specific Query, Mutation, Type, Field/InputField, Argument or Subscription from your Introspection Query Results.
  • Removing Queries, Mutations, Fields/InputFields or Arguments that refer to Type that does not exist in - or has been removed from - your Introspection Query Results.

Yay!

It's calledmicrofiber because it is heavily used to do the cleaning and manipulation inSpectaQL...itcleans thespectacles, get it?!

But, we also wanted to have a more intuitive, literal name so that people could find it. Hence it's also known as@anvilco/graphql-introspection-tools.


Repository sponsored byAnvil

Horizontal LockupblackHorizontal Lockup copywhite

Anvil provides easy APIs for all things paperwork.

  1. PDF filling API - fill out a PDF template with a web request and structured JSON data.
  2. PDF generation API - send markdown or HTML and Anvil will render it to a PDF.
  3. Etch e-sign with API - customizable, embeddable, e-signature platform with an API to control the signing process end-to-end.
  4. Anvil Workflows (w/ API) - Webforms + PDF + e-sign with a powerful no-code builder. Easily collect structured data, generate PDFs, and request signatures.

Learn more on ourAnvil developer page.


Getting Started

  1. Installmicrofiber
npm install microfiber# ORyarn add microfiber
  1. Clean your GraphQL Introspection Query Results
import{Microfiber}from'microfiber'constintrospectionQueryResults={...}constmicrofiber=newMicrofiber(introspectionQueryResults)// ...do some things to your schema with `microfiber`constcleanedIntrospectonQueryResults=microfiber.getResponse()// ...do something with your cleaned Introspection Query Results.

Usage

class Microfiber

Most of the useful stuff in this library is done through creating a new Microfiber class instance with your Introspection Query Results, and querying or manipulating it via that instance. Here are most of the interesting bits to know about class behavior.


constructor

constintrospectionQueryResponse={...}// Here are the publicly supported options and their sane defaults:constoptions={// Some GraphQL implementations have non-standard Query, Mutation and/or Subscription// type names. This option will fix them if they're messed up in the Introspection Query// ResultsfixQueryAndMutationAndSubscriptionTypes:true,// Remove Types that are not referenced anywhere by anythingremoveUnusedTypes:true,// Remove things whose Types are not found due to being removedremoveFieldsWithMissingTypes:true,removeArgsWithMissingTypes:true,removeInputFieldsWithMissingTypes:true,removePossibleTypesOfMissingTypes:true,// Remove all the types and things that are unreferenced immediately?cleanupSchemaImmediately:true,}constmicrofiber=newMicrofiber(introspectionQueryResponse,options)

cleanSchema

Clean up the schema by removing:

  • Fields or Input Fields whose Type does not exist in the schema.
  • Args whose Type does not exist in the schema.
  • Possible Types in a Union that do not exist in the schema.
  • Queries or Mutations whose return Type does not exist in the schema.

This method is usually called after altering the schema in any way so as to not leave any dangling/orphaned things around the schema.

microfiber.cleanSchema()

getResponse

Get out the Introspection Query Result that you have manipulated with Microfiber as an Object.

constcleanedResponse=microfiber.getResponse()

getAllTypes

Get all the Types from your schema as an Array of Objects. Supported options and their sane defaults are shown.

constallTypes=microfiber.getAllTypes({// Include reserved GraphQL types?includeReserved:false,// Include the Query type?includeQuery:false,// Include the Mutation type?includeMutation:false,// Include the Subscription type?includeSubscription:false,}={})

getType

Get a specific Type from your schema. Supported params and their sane defaults are shown.

consttype=microfiber.getType({kind:'OBJECT', name})

getDirectives

Get all the Directives from your schema.

constdirectives=microfiber.getDirectives()

getDirective

Get a specific Directive from your schema. Supported params and their sane defaults are shown.

constdirective=microfiber.getDirective({ name})

getQueryType

Get the Query Type from your schema.

constqueryType=microfiber.getQueryType()

getQuery

Get a specific Query from your schema.

constquery=microfiber.getQuery({ name})

getMutationType

Get the Mutation Type from your schema.

constmutationType=microfiber.getMutationType()

getMutation

Get a specific Mutation from your schema.

constmutation=microfiber.getMutation({ name})

getSubscriptionType

Get the Subscription Type from your schema.

constsubscriptionType=microfiber.getSubscription()

getSubscription

Get a specific Subscription from your schema.

constsubscription=microfiber.getSubscription({ name})

getField

Get a specific Field from your schema. Supported params and their sane defaults are shown.

constfield=microfiber.getField({typeKind:'OBJECT', typeName, fieldName})

getInterfaceField

Get a specific Field from an Interface in your schema. A convenience wrapper aroundgetField({ typeKind: 'INTERFACE', ...})

constinterfaceField=microfiber.getInterfaceField({ typeName, fieldName})

getEnumValue

Get a specific EnumValue from your schema. A convenience wrapper aroundgetField({ typeKind: 'ENUM', ...})

constinputField=microfiber.getEnumValue({ typeName, fieldName})

getInputField

Get a specific InputField from your schema. A convenience wrapper aroundgetField({ typeKind: 'INPUT_OBJECT', ...})

constinputField=microfiber.getInputField({ typeName, fieldName})

getArg

Get a specific Arg from your schema. Supported params and their sane defaults are shown.

constarg=microfiber.getArg({typeKind:'OBJECT', typeName, fieldName, argName})

getDirectiveArg

Get a specific Arg from a specifig Directive in your schema. Supported params and their sane defaults are shown.

constdirectiveArg=microfiber.getDirectiveArg({ directiveName, argName})

removeDirective

Get a specific Directive from your schema. Supported params and their sane defaults are shown.

constdirectiveArg=microfiber.removeDirective({  name,// Clean up the schema afterwards?  cleanup=true,})

removeType

Remove a Type from your schema, and optionally the references to that Type elsewhere in your schema. Supported params and their sane defaults are shown.

microfiber.removeType({kind:'OBJECT',  name,// Clean up the schema afterwards?cleanup:true,// Remove occurances of this Type from other places?removeFieldsOfType:constructorOptions.removeFieldsWithMissingTypes,removeInputFieldsOfType:constructorOptions.removeInputFieldsWithMissingTypes,removePossibleTypesOfType:constructorOptions.removePossibleTypesOfMissingTypes,removeArgsOfType:constructorOptions.removeArgsWithMissingTypes,})

removeField

Remove a specific Field from a specific Type in your schema. Supported params and their sane defaults are shown.

microfiber.removeField({typeKind:'OBJECT',  typeName,  fieldName,// Clean up the schema afterwards?cleanup:true,})

removeInputField

Remove a specific Input Field from a specific Input Object in your schema. Supported params and their sane defaults are shown.

microfiber.removeInputField({  typeName,  fieldName,// Clean up the schema afterwards?cleanup:true,})

removeArg

Remove a specific Arg from a specific Field or Input Field in your schema. Supported params and their sane defaults are shown.

microfiber.removeArg({  typeKind,  typeName,  fieldName,  argName,// Clean up the schema afterwards?cleanup:true,})

removeEnumValue

Remove a specifc Enum value from an Enum Type in your schema. Supported params are shown.

microfiber.removeEnumValue({// The name of the Enum Type  name,// The Enum value you want to remove  value,})

removePossibleType

Remove a Possible Type from a specific Union Type in your schema. Supported params and sane defaults are shown.

microfiber.removePossibleType({// The name of the Union Type  typeName,// The Kind of the possible Type you want to remove  possibleTypeKind,// The name of the possible Type you want to remove  possibleTypeName,// Clean up the schema afterwards?cleanup:true,})

removeQuery

Remove a specific Query from your schema. Supported params and their sane defaults are shown.

microfiber.removeQuery({  name,// Clean up the schema afterwards?cleanup:true,})

removeMutation

Remove a specific Mutation from your schema. Supported params and their sane defaults are shown.

microfiber.removeMutation({  name,// Clean up the schema afterwards?cleanup:true,})

removeSubscription

Remove a specific Subscription from your schema. Supported params and their sane defaults are shown.

microfiber.removeSubscription({  name,// Clean up the schema afterwards?cleanup:true,})

Other exports from this library

There are some other exports from this library, not just theMicrofiber class.


KINDS

An Object containing all the GraphQL Kind values you may encounter.

import{KINDS}from'microfiber'console.log(KINDS)// {//   SCALAR: 'SCALAR',//   OBJECT: 'OBJECT',//   INTERFACE: 'INTERFACE',//   UNION: 'UNION',//   ENUM: 'ENUM',//   INPUT_OBJECT: 'INPUT_OBJECT',//   LIST: 'LIST',//   NON_NULL: 'NON_NULL'// }

typesAreSame

A function that compares 2 types and determines if they have the same Kind and Name.

import{typesAreSame}from'microfiber'consttypeA={kind:'OBJECT',name:'Foo'}consttypeB={kind:'OBJECT',name:'Bar'}typesAreSame(typeA,typeB)// falsetypesAreSame(typeA,typeA)// true

digUnderlyingType

A function that digs through any Non-Null and List nesting and returns the underlying Type.

import{digUnderlyingType}from'microfiber'constnonNullableString={name:null,kind:'NON_NULL',ofType:{name:null,kind:'LIST',ofType:{name:'String',kind:'SCALAR',}}}digUnderlyingType(nonNullableString)// { name: 'String', kind: 'SCALAR' }

isReservedType

A function that returns a Boolean indicating whether a Type is special GraphQL reserved Type.

import{isReservedType}from'microfiber'constmyType={name:'Foo', ...}constreservedType={name:'__Foo', ...}isReservedType(myType)// falseisReservedType(reservedType)// true

About

A library to query and manipulate GraphQL Introspection Query results in some useful ways.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors4

  •  
  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp