1 | <!DOCTYPE html>
|
2 | <html lang="en">
|
3 | <head>
|
4 | <meta charset="utf-8">
|
5 | <meta name="viewport" content="width=device-width,initial-scale=1">
|
6 | <title>GQLEnum.js - Documentation</title>
|
7 |
|
8 | <script src="scripts/prettify/prettify.js"></script>
|
9 | <script src="scripts/prettify/lang-css.js"></script>
|
10 | |
11 |
|
12 |
|
13 | <link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
14 | <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
15 | <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
16 | </head>
|
17 | <body>
|
18 |
|
19 | <input type="checkbox" id="nav-trigger" class="nav-trigger" />
|
20 | <label for="nav-trigger" class="navicon-button x">
|
21 | <div class="navicon"></div>
|
22 | </label>
|
23 |
|
24 | <label for="nav-trigger" class="overlay"></label>
|
25 |
|
26 | <nav>
|
27 | <li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="AwaitingPromiseError.html">AwaitingPromiseError</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="AwaitingPromiseError.html#%25E2%258C%25BE%25E2%25A0%2580asyncFn">⌾⠀asyncFn</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="AwaitingPromiseError.html#%25E2%258C%25BE%25E2%25A0%2580setPromise">⌾⠀setPromise</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="AwaitingPromiseError_exports.AwaitingPromiseError.html">AwaitingPromiseError</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="AwaitingPromiseError_exports.AwaitingPromiseError.html#setPromise">setPromise</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Deferred_exports.Deferred.html">Deferred</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="DirectTypeAdd.html">DirectTypeAdd</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="FunctionExecutionError_FunctionExecutionError.html">FunctionExecutionError</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLBase.html">GQLBase</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.apiDocs">apiDocs</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580getMergedRoot">⌾⠀getMergedRoot</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580getProp">⌾⠀getProp</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580getResolver">⌾⠀getResolver</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580IDLFilePath">⌾⠀IDLFilePath</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580MUTATORS">⌾⠀MUTATORS</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580RESOLVERS">⌾⠀RESOLVERS</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%258C%25BE%25E2%25A0%2580setupModel">⌾⠀setupModel</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580handler">⬇︎⠀handler</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#.%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580SCHEMA">⬇︎⠀SCHEMA</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580applyAutoProps">⌾⠀applyAutoProps</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580callProp">⌾⠀callProp</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580extendModel">⌾⠀extendModel</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580getModel">⌾⠀getModel</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580getProp">⌾⠀getProp</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580getResolver">⌾⠀getResolver</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%258C%25BE%25E2%25A0%2580setModel">⌾⠀setModel</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%25AC%2586%25EF%25B8%258E%25E2%25A0%2580requestData">⬆︎⠀requestData</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580requestData">⬇︎⠀requestData</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#~deleteProperty">deleteProperty</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBase.html#~set">set</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLBase.%25E2%258E%2586%25E2%25A0%2580constructor.html">⎆⠀constructor</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLEnum.html">GQLEnum</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#..get">.get</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#..set">.set</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#.valueFor">valueFor</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#.%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580enums">⬇︎⠀enums</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#.%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580name">⬇︎⠀name</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#.%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580value">⬇︎⠀value</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#.%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580values">⬇︎⠀values</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLEnum.html#GenerateEnumsProxyHandler">GenerateEnumsProxyHandler</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html">GQLExpressMiddleware</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#.clearCache">clearCache</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#.%25E2%258C%25BE%25E2%25A0%2580generateSchemaSDL">⌾⠀generateSchemaSDL</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#astMiddleware">astMiddleware</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#schemaMiddleware">schemaMiddleware</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#%25E2%258C%25BE%25E2%25A0%2580customMiddleware">⌾⠀customMiddleware</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580middleware">⬇︎⠀middleware</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580middlewareWithoutGraphiQL">⬇︎⠀middlewareWithoutGraphiQL</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLExpressMiddleware.html#%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580schema">⬇︎⠀schema</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLExpressMiddleware.%25E2%258E%2586%25E2%25A0%2580constructor.html">⎆⠀constructor</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLInterface.html">GQLInterface</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLInterface.html#.%25E2%258C%25BE%25E2%25A0%2580resolveType">⌾⠀resolveType</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="GQLScalar.html">GQLScalar</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLScalar.html#.parseLiteral">parseLiteral</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLScalar.html#.parseValue">parseValue</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLScalar.html#.serialize">serialize</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="IDLFileHandler.html">IDLFileHandler</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="IDLFileHandler.html#%25E2%258C%25BE%25E2%25A0%2580getFile">⌾⠀getFile</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="IDLFileHandler.html#%25E2%258C%25BE%25E2%25A0%2580getSchema">⌾⠀getSchema</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="IDLFileHandler.html#%25E2%258C%25BE%25E2%25A0%2580getSyntaxTree">⌾⠀getSyntaxTree</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="IDLFileHandler.%25E2%258E%2586%25E2%25A0%2580constructor.html">⎆⠀constructor</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ModuleParser.html">ModuleParser</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#.%25E2%258C%25BE%25E2%25A0%2580arrayToPattern">⌾⠀arrayToPattern</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#.%25E2%258C%25BE%25E2%25A0%2580checkForPackageExtensions">⌾⠀checkForPackageExtensions</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#%25E2%258C%25BE%25E2%25A0%2580findGQLBaseClasses">⌾⠀findGQLBaseClasses</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#%25E2%258C%25BE%25E2%25A0%2580importClass">⌾⠀importClass</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#%25E2%258C%25BE%25E2%25A0%2580parse">⌾⠀parse</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#%25E2%258C%25BE%25E2%25A0%2580parseSync">⌾⠀parseSync</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#~%25E2%258C%25BE%25E2%25A0%2580walk">⌾⠀walk</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#~%25E2%258C%25BE%25E2%25A0%2580walkSync">⌾⠀walkSync</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ModuleParser.html#~%25E2%258E%2586%25E2%25A0%2580constructor">⎆⠀constructor</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ModuleParser.exports.ModuleParser.html">exports.ModuleParser</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="SchemaUtils.html">SchemaUtils</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SchemaUtils.html#.%25E2%258C%25BE%25E2%25A0%2580createMergedRoot">⌾⠀createMergedRoot</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SchemaUtils.html#.%25E2%258C%25BE%25E2%25A0%2580injectComments">⌾⠀injectComments</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SchemaUtils.html#.%25E2%258C%25BE%25E2%25A0%2580injectEnums">⌾⠀injectEnums</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SchemaUtils.html#.%25E2%258C%25BE%25E2%25A0%2580injectInterfaceResolvers">⌾⠀injectInterfaceResolvers</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SchemaUtils.html#.%25E2%258C%25BE%25E2%25A0%2580injectScalars">⌾⠀injectScalars</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="SyntaxTree.html">SyntaxTree</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580EmptyDocument">⌾⠀EmptyDocument</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580EmptyMutation">⌾⠀EmptyMutation</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580EmptyQuery">⌾⠀EmptyQuery</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580findDefinition">⌾⠀findDefinition</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580findField">⌾⠀findField</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580findInASTArrayByNameValue">⌾⠀findInASTArrayByNameValue</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580from">⌾⠀from</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580fromAST">⌾⠀fromAST</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258C%25BE%25E2%25A0%2580fromSchema">⌾⠀fromSchema</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#.%25E2%258E%2586%25E2%25A0%2580constructor">⎆⠀constructor</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580appendDefinitions">⌾⠀appendDefinitions</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580consumeDefinition">⌾⠀consumeDefinition</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580find">⌾⠀find</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580findEnumDefinition">⌾⠀findEnumDefinition</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580setAST">⌾⠀setAST</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580toString">⌾⠀toString</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%258C%25BE%25E2%25A0%2580updateAST">⌾⠀updateAST</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%25AC%2586%25EF%25B8%258E%25E2%25A0%2580ast">⬆︎⠀ast</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SyntaxTree.html#%25E2%25AC%2587%25EF%25B8%258E%25E2%25A0%2580ast">⬇︎⠀ast</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="utils.Deferred.html">Deferred</a></span></li><li class="nav-heading">Namespaces</li><li class="nav-heading"><span class="nav-item-type type-namespace">N</span><span class="nav-item-name"><a href="decorators.html">decorators</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#.%25E2%258C%25BE%25E2%25A0%2580extractBits">⌾⠀extractBits</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#..%25F0%259F%258F%25B7%25E2%25A0%2580AdjacentSchema">.🏷⠀AdjacentSchema</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#..%25F0%259F%258F%25B7%25E2%25A0%2580FileSchema">.🏷⠀FileSchema</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#..%25F0%259F%258F%25B7%25E2%25A0%2580Getters">.🏷⠀Getters</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#..%25F0%259F%258F%25B7%25E2%25A0%2580Properties">.🏷⠀Properties</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#..%25F0%259F%258F%25B7%25E2%25A0%2580Schema">.🏷⠀Schema</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#..%25F0%259F%258F%25B7%25E2%25A0%2580Setters">.🏷⠀Setters</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="decorators.html#~decorate">decorate</a></span></li><li class="nav-heading"><span class="nav-item-type type-namespace">N</span><span class="nav-item-name"><a href="GQLBaseEnv.html">GQLBaseEnv</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="GQLBaseEnv.html#~notDefined">notDefined</a></span></li><li class="nav-heading"><a href="global.html">Globals</a></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#applyTags">applyTags</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#AsyncFunctionExecutionError">AsyncFunctionExecutionError</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#CHECK_API_DOCS">CHECK_API_DOCS</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#CHECK_RESOLVERS">CHECK_RESOLVERS</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#CHECK_SCHEMA">CHECK_SCHEMA</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#CHECKLIST">CHECKLIST</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#FunctionExecutionError">FunctionExecutionError</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#getChecklist">getChecklist</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#hasChecklist">hasChecklist</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#newChecklist">newChecklist</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#setChecklist">setChecklist</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#types">types</a></span></li>
|
28 | </nav>
|
29 |
|
30 | <div id="main">
|
31 |
|
32 | <h1 class="page-title">GQLEnum.js</h1>
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | <section>
|
41 | <article>
|
42 | <pre class="prettyprint source linenums"><code>/**
|
43 | @namespace GQLInterface
|
44 | @flow
|
45 | */
|
46 |
|
47 | import { GQLBase } from './GQLBase'
|
48 | import { GraphQLEnumType, parse } from 'graphql'
|
49 | import { Getters } from './decorators/ModelProperties'
|
50 | import { LatticeLogs as ll } from './utils'
|
51 |
|
52 | /* Internal Symbol referring to real accessor to GQLBase model object */
|
53 | const _MODEL_KEY = Symbol.for('data-model-contents-value');
|
54 |
|
55 | /* Internal Symbol referring to the static object containing a proxy handler */
|
56 | const _PROXY_HANDLER = Symbol.for('internal-base-proxy-handler')
|
57 |
|
58 | /* Internal Symbol property referring to the mapping of values on the GQLEnum */
|
59 | const ENUMS = Symbol();
|
60 |
|
61 | /**
|
62 | * GraphQL Enum types can be a bit picky when it comes to how scalar types
|
63 | * equate to enum values. Lattice makes this easier by allowing you to specify
|
64 | * a value or the key when your enum has a value other than the key; GraphQL
|
65 | * does not allow this by default.
|
66 | *
|
67 | * Further more, when instantiating a GQLEnum type, you can pass a string or
|
68 | * value matching the enum key or value or you can pass an object with key of
|
69 | * value and the value being either the enum key or value. If any of those
|
70 | * things match, then your `instance.value` will equate to the enum's key. If,
|
71 | * on the other hand, your supplied values do not match then `instance.value`
|
72 | * will be `null`.
|
73 | *
|
74 | * @class GQLEnum
|
75 | */
|
76 | @Getters('symbol')
|
77 | export class GQLEnum extends GQLBase {
|
78 | constructor(enumValueOrKey: ?Object, requestData: ?Object) {
|
79 | super({}, requestData)
|
80 |
|
81 | const Class = this.constructor
|
82 | const enums = Class.enums;
|
83 | let symbol;
|
84 | let enumVK: (Object | string | null) = enumValueOrKey || null
|
85 |
|
86 | // @ComputedType
|
87 | symbol = enums[enumVK] || enumVK && enums[enumVK.value] || null
|
88 |
|
89 | Object.assign(this.getModel(), {
|
90 | name: symbol ? symbol.name : null,
|
91 | value: symbol ? symbol.value : null,
|
92 | symbol: symbol ? symbol : null
|
93 | })
|
94 | }
|
95 |
|
96 | /**
|
97 | * Retrieves the actual symbol stored name property from the internal
|
98 | * model object for this enum instance. That is a mouthfull, but it
|
99 | * basically means that if your enum is something like:
|
100 | *
|
101 | * ```
|
102 | * enum Person { TALL, SHORT }
|
103 | * ```
|
104 | *
|
105 | * and you create an instance using any of the following
|
106 | *
|
107 | * ```
|
108 | * p = new Person('TALL')
|
109 | * p = new Person(valueFor('TALL'))
|
110 | * p = new Person({value: 'TALL'})
|
111 | * ```
|
112 | *
|
113 | * that your response to `p.name` will equate to `TALL`.
|
114 | *
|
115 | * @method ⬇︎⠀name
|
116 | * @memberof GQLEnum
|
117 | * @return {mixed} typically a String but any valid type supplied
|
118 | */
|
119 | get name(): mixed {
|
120 | const name = this.getModel().name
|
121 |
|
122 | return (
|
123 | name !== undefined &&
|
124 | name !== null &&
|
125 | name !== NaN
|
126 | ) ? name : null;
|
127 | }
|
128 |
|
129 | /**
|
130 | * Much like the `.name` getter, the `.value` getter will typically
|
131 | * retreive the name of the enum key you are requesting. In rare cases
|
132 | * where you have defined values that differ from the name, the `.value`
|
133 | * getter will retrieve that custom value from the `.value` property on
|
134 | * the symbol in question.
|
135 | *
|
136 | * This should do the right thing even if you instantiated the instance
|
137 | * using the name.
|
138 | *
|
139 | * @memberof GQLEnum
|
140 | * @method ⬇︎⠀value
|
141 | * @return {mixed} the value of the enum type; this in all likihood should
|
142 | * be a String or potentially an object
|
143 | */
|
144 | get value(): mixed {
|
145 | const value = this.getModel().value
|
146 |
|
147 | return (
|
148 | value !== undefined &&
|
149 | value !== null &&
|
150 | value !== NaN
|
151 | ) ? value : null;
|
152 | }
|
153 |
|
154 | /**
|
155 | * Determines the default type targeted by this GQLBase class. Any
|
156 | * type will technically be valid but only will trigger special behavior
|
157 | *
|
158 | * @memberof GQLEnum
|
159 | * @method ⬇︎⠀GQL_TYPE
|
160 | * @static
|
161 | * @const
|
162 | *
|
163 | * @return {Function} a type, such as `GraphQLObjectType` or
|
164 | * `GraphQLInterfaceType`
|
165 | */
|
166 | static get GQL_TYPE(): Function {
|
167 | return GraphQLEnumType;
|
168 | }
|
169 |
|
170 | /**
|
171 | * Each instance of GQLEnum must specify a map of keys and values. If this
|
172 | * method returns null or is not defined, the value of the enum will match
|
173 | * the name of the enum as per the reference implementation.
|
174 | *
|
175 | * Example:
|
176 | * ```
|
177 | * static get values(): ?Object {
|
178 | * const { valueOf } = this;
|
179 | *
|
180 | * return {
|
181 | * NAME: valueOf(value)
|
182 | * }
|
183 | * }
|
184 | * ```
|
185 | *
|
186 | * @method ⬇︎⠀values
|
187 | * @memberof GQLEnum
|
188 | * @static
|
189 | *
|
190 | * @return {Object|Null} an object mapping with each key mapping to an object
|
191 | * possessing at least a value field, which in turn maps to the desired value
|
192 | */
|
193 | static get values(): Object {
|
194 | return {};
|
195 | }
|
196 |
|
197 | /**
|
198 | * Shorthand method to generate a GraphQLEnumValueDefinition implementation
|
199 | * object. Use this for building and customizing your `values` key/value
|
200 | * object in your child classes.
|
201 | *
|
202 | * @memberof GQLEnum
|
203 | * @method valueFor
|
204 | * @static
|
205 | *
|
206 | * @param {mixed} value any nonstandard value you wish your enum to have
|
207 | * @param {String} deprecationReason an optional reason to deprecate an enum
|
208 | * @param {String} description a non Lattice standard way to write a comment
|
209 | * @return {Object} an object that conforms to the GraphQLEnumValueDefinition
|
210 | * defined here http://graphql.org/graphql-js/type/#graphqlenumtype
|
211 | */
|
212 | static valueFor(
|
213 | value: mixed,
|
214 | deprecationReason: ?string,
|
215 | description: ?string
|
216 | ): Object {
|
217 | const result: Object = { value }
|
218 |
|
219 | if (deprecationReason) { result.deprecationReason = deprecationReason }
|
220 | if (description) { result.description = description }
|
221 |
|
222 | return result;
|
223 | }
|
224 |
|
225 | /**
|
226 | * For easier use within JavaScript, the static enums method provides a
|
227 | * Symbol backed solution for each of the enums defined. Each `Symbol`
|
228 | * instance is wrapped in Object so as to allow some additional properties
|
229 | * to be written to it.
|
230 | *
|
231 | * @memberof GQLEnum
|
232 | * @method ⬇︎⠀enums
|
233 | * @static
|
234 | *
|
235 | * @return {Array<Symbol>} an array of modified Symbols for each enum
|
236 | * variation defined.
|
237 | */
|
238 | static get enums(): Array<Symbol> {
|
239 | // @ComputedType
|
240 | if (!this[ENUMS]) {
|
241 | const map: Map<*,*> = new Map();
|
242 | const ast = parse((this.SCHEMA: any));
|
243 | const array = new Proxy([], GQLEnum.GenerateEnumsProxyHandler(map));
|
244 | const values = this.values || {};
|
245 | let astValues: Array<any>;
|
246 |
|
247 | try {
|
248 | // TODO: $FlowFixMe
|
249 | astValues = ast.definitions[0].values;
|
250 | }
|
251 | catch (error) {
|
252 | ll.error('Unable to discern the values from your enums SCHEMA')
|
253 | ll.error(error)
|
254 | throw error;
|
255 | }
|
256 |
|
257 | // Walk the AST for the class' schema and extract the names (same as
|
258 | // values when specified in GraphQL SDL) and build an object the has
|
259 | // the actual defined value and the AST generated name/value.
|
260 | for (let enumDef of astValues) {
|
261 | let defKey = enumDef.name.value;
|
262 | let symObj: Object = Object(Symbol.for(defKey));
|
263 |
|
264 | symObj.value = (values[defKey] && values[defKey].value) || defKey;
|
265 | symObj.name = defKey
|
266 | symObj.sym = symObj.valueOf()
|
267 |
|
268 | map.set(symObj.name, symObj)
|
269 | map.set(symObj.value, symObj)
|
270 |
|
271 | // This bit of logic allows us to look into the "enums" property and
|
272 | // get the generated Object wrapped Symbol with keys and values by
|
273 | // supplying either a key or value.
|
274 | array.push(symObj)
|
275 | }
|
276 |
|
277 | // @ComputedType
|
278 | this[ENUMS] = array;
|
279 | }
|
280 |
|
281 | // @ComputedType
|
282 | return this[ENUMS];
|
283 | }
|
284 |
|
285 | /**
|
286 | * Due to the complexity of being able to access both the keys and values
|
287 | * properly for an enum type, a Map is used as the backing store. The handler
|
288 | * returned by this method is to be passed to a Proxy.
|
289 | *
|
290 | * @method GQLEnum#GenerateEnumsProxyHandler
|
291 | * @static
|
292 | *
|
293 | * @param {Map} map the map containing the key<->value and
|
294 | * value<->key mappings; the true storage backing the array in question.
|
295 | * @return {Object}
|
296 | */
|
297 | static GenerateEnumsProxyHandler(map: Map<*, *>) {
|
298 | return {
|
299 | /**
|
300 | * Get handler for the Map backed Array Proxy
|
301 | *
|
302 | * @memberof! GQLEnum
|
303 | * @method get
|
304 | *
|
305 | * @param {mixed} obj the object targeted by the Proxy
|
306 | * @param {string} key `key` of the value being requested
|
307 | * @return {mixed} the `value` being requested
|
308 | */
|
309 | get(obj, key) {
|
310 | if (map.has(key)) {
|
311 | return map.get(key)
|
312 | }
|
313 |
|
314 | return obj[key]
|
315 | },
|
316 |
|
317 | /**
|
318 | * Set handler for the Map backed Array Proxy.
|
319 | *
|
320 | * @memberof! GQLEnum
|
321 | * @method set
|
322 | *
|
323 | * @param {mixed} obj the object the Proxy is targeting
|
324 | * @param {string} key a string `key` being set
|
325 | * @param {mixed} value the `value` being assigned to `key`
|
326 | */
|
327 | set(obj, key, value) {
|
328 | if (isFinite(key) && value instanceof Symbol) {
|
329 | map.set(value.name, value)
|
330 | map.set(value.value, value)
|
331 | }
|
332 |
|
333 | // Some accessor on the receiving array
|
334 | obj[key] = value;
|
335 |
|
336 | // Arrays return length when pushing. Assume value as return
|
337 | // otherwise. ¯\_(ツ)_/¯
|
338 | return isFinite(key) ? obj.length : obj[key];
|
339 | }
|
340 | }
|
341 | }
|
342 |
|
343 | /** @inheritdoc */
|
344 | static apiDocs(): Object {
|
345 | const { DOC_CLASS, DOC_FIELDS, joinLines } = this;
|
346 |
|
347 | return {
|
348 | [DOC_CLASS]: joinLines`
|
349 | GQLEnums allow the definition of enum types with description fields
|
350 | and values other than a 1:1 mapping of their types and their type
|
351 | names. If you are reading this, the implementor likely did not
|
352 | contribute comments for their type.
|
353 | `
|
354 | }
|
355 | }
|
356 | }
|
357 | </code></pre>
|
358 | </article>
|
359 | </section>
|
360 |
|
361 |
|
362 |
|
363 |
|
364 | </div>
|
365 |
|
366 | <br class="clear">
|
367 |
|
368 | <footer>
|
369 | Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Fri Jun 08 2018 19:28:39 GMT-0700 (PDT) using the Minami theme.
|
370 | </footer>
|
371 |
|
372 | <script>prettyPrint();</script>
|
373 | <script src="scripts/linenumber.js"></script>
|
374 | </body>
|
375 | </html>
|