├── .babelrc ├── .eslintrc ├── .gitignore ├── .yarnrc ├── LICENSE ├── README.md ├── css ├── cgraphiql.css └── graphiql.css ├── example ├── README.md ├── index.html ├── package.json ├── server.js └── yarn.lock ├── package.json ├── resources ├── build.sh ├── cgraphiql.gif ├── cgraphiql2.png ├── checkgit.sh ├── prepublish.sh └── updateWebsite.sh ├── server ├── app.js ├── index.html ├── paths.js └── webpack.config.js ├── src ├── components │ ├── CustomGraphiQL.js │ ├── EditHeaderFormItem.js │ ├── EditHeaderModal.js │ ├── GenerateMutation.js │ ├── GetSetURL.js │ └── TopBar.js ├── helpers │ ├── getParameters.js │ └── json2-mod.js └── index.js ├── website ├── img │ └── favicon.png └── index.html └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | "@babel/preset-react" 5 | ], 6 | "plugins": [ 7 | "@babel/plugin-proposal-class-properties" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | 4 | "plugins": [ 5 | "babel", 6 | "react" 7 | ], 8 | 9 | "settings": { 10 | "react": { 11 | "version": "0.15.0" 12 | } 13 | }, 14 | 15 | "env": { 16 | "browser": true, 17 | "es6": true, 18 | "node": true 19 | }, 20 | 21 | "extends": [ 22 | "prettier" 23 | ], 24 | 25 | "parserOptions": { 26 | "arrowFunctions": true, 27 | "binaryLiterals": true, 28 | "blockBindings": true, 29 | "classes": true, 30 | "defaultParams": true, 31 | "destructuring": true, 32 | "experimentalObjectRestSpread": true, 33 | "forOf": true, 34 | "generators": true, 35 | "globalReturn": true, 36 | "jsx": true, 37 | "modules": true, 38 | "objectLiteralComputedProperties": true, 39 | "objectLiteralDuplicateProperties": true, 40 | "objectLiteralShorthandMethods": true, 41 | "objectLiteralShorthandProperties": true, 42 | "octalLiterals": true, 43 | "regexUFlag": true, 44 | "regexYFlag": true, 45 | "restParams": true, 46 | "spread": true, 47 | "superInFunctions": true, 48 | "templateStrings": true, 49 | "unicodeCodePointEscapes": true 50 | }, 51 | 52 | "rules": { 53 | "react/no-deprecated": 2, 54 | "react/no-did-mount-set-state": 2, 55 | "react/no-did-update-set-state": 2, 56 | "react/no-direct-mutation-state": 2, 57 | "react/no-string-refs": 2, 58 | "react/no-unknown-property": 2, 59 | "react/prefer-es6-class": 2, 60 | "react/prefer-stateless-function": 2, 61 | "react/prop-types": [2, {"ignore": ["children"]}], 62 | "react/react-in-jsx-scope": 2, 63 | "react/self-closing-comp": 2, 64 | "react/sort-comp": [2, {"order": [ 65 | "static-methods", 66 | "lifecycle", 67 | "everything-else", 68 | "render" 69 | ]}], 70 | "react/jsx-boolean-value": 2, 71 | "react/jsx-handler-names": 2, 72 | "react/jsx-key": 2, 73 | "react/jsx-no-duplicate-props": 2, 74 | "react/jsx-no-literals": 2, 75 | "react/jsx-no-undef": 2, 76 | "react/jsx-pascal-case": 2, 77 | "react/jsx-uses-react": 2, 78 | "react/jsx-uses-vars": 2, 79 | 80 | "block-scoped-var": 0, 81 | "callback-return": 2, 82 | "camelcase": [2, {"properties": "always"}], 83 | "comma-dangle": 0, 84 | "comma-spacing": 0, 85 | "complexity": 0, 86 | "consistent-return": 0, 87 | "consistent-this": 0, 88 | "curly": [2, "all"], 89 | "default-case": 0, 90 | "dot-notation": 0, 91 | "eqeqeq": 2, 92 | "func-names": 0, 93 | "func-style": 0, 94 | "guard-for-in": 2, 95 | "handle-callback-err": [2, "error"], 96 | "id-length": 0, 97 | "id-match": [2, "^(?:_?[a-zA-Z0-9]*)|[_A-Z0-9]+$"], 98 | "indent": 0, 99 | "init-declarations": 0, 100 | "linebreak-style": 2, 101 | "lines-around-comment": 0, 102 | "max-depth": 0, 103 | "max-nested-callbacks": 0, 104 | "max-params": 0, 105 | "max-statements": 0, 106 | "new-cap": 0, 107 | "newline-after-var": 0, 108 | "no-alert": 2, 109 | "no-array-constructor": 2, 110 | "no-await-in-loop": 2, 111 | "no-bitwise": 0, 112 | "no-caller": 2, 113 | "no-catch-shadow": 0, 114 | "no-class-assign": 2, 115 | "no-cond-assign": 2, 116 | "no-console": 1, 117 | "no-const-assign": 2, 118 | "no-constant-condition": 2, 119 | "no-continue": 0, 120 | "no-control-regex": 0, 121 | "no-debugger": 1, 122 | "no-delete-var": 2, 123 | "no-div-regex": 2, 124 | "no-dupe-args": 2, 125 | "no-dupe-keys": 2, 126 | "no-duplicate-case": 2, 127 | "no-else-return": 2, 128 | "no-empty": 2, 129 | "no-empty-character-class": 2, 130 | "no-eq-null": 0, 131 | "no-eval": 2, 132 | "no-ex-assign": 2, 133 | "no-extend-native": 2, 134 | "no-extra-bind": 2, 135 | "no-extra-boolean-cast": 2, 136 | "no-extra-parens": 0, 137 | "no-fallthrough": 2, 138 | "no-floating-decimal": 2, 139 | "no-func-assign": 2, 140 | "no-implicit-coercion": 2, 141 | "no-implied-eval": 2, 142 | "no-inline-comments": 0, 143 | "no-inner-declarations": [2, "functions"], 144 | "no-invalid-regexp": 2, 145 | "no-invalid-this": 0, 146 | "no-irregular-whitespace": 2, 147 | "no-iterator": 2, 148 | "no-label-var": 2, 149 | "no-labels": [2, {"allowLoop": true}], 150 | "no-lone-blocks": 2, 151 | "no-lonely-if": 2, 152 | "no-loop-func": 0, 153 | "no-mixed-requires": [2, true], 154 | "no-multi-str": 2, 155 | "no-multiple-empty-lines": 0, 156 | "no-native-reassign": 0, 157 | "no-negated-in-lhs": 2, 158 | "no-nested-ternary": 0, 159 | "no-new": 2, 160 | "no-new-func": 0, 161 | "no-new-object": 2, 162 | "no-new-require": 2, 163 | "no-new-wrappers": 2, 164 | "no-obj-calls": 2, 165 | "no-octal": 2, 166 | "no-octal-escape": 2, 167 | "no-param-reassign": 2, 168 | "no-path-concat": 2, 169 | "no-plusplus": 0, 170 | "no-process-env": 0, 171 | "no-process-exit": 0, 172 | "no-proto": 2, 173 | "no-redeclare": 2, 174 | "no-regex-spaces": 2, 175 | "no-restricted-modules": 0, 176 | "no-return-assign": 2, 177 | "no-script-url": 2, 178 | "no-self-compare": 0, 179 | "no-sequences": 2, 180 | "no-shadow": 2, 181 | "no-shadow-restricted-names": 2, 182 | "no-sparse-arrays": 2, 183 | "no-sync": 2, 184 | "no-ternary": 0, 185 | "no-this-before-super": 2, 186 | "no-throw-literal": 2, 187 | "no-undef": 2, 188 | "no-undef-init": 2, 189 | "no-undefined": 0, 190 | "no-underscore-dangle": 0, 191 | "no-unexpected-multiline": 2, 192 | "no-unneeded-ternary": 2, 193 | "no-unreachable": 2, 194 | "no-unused-expressions": 2, 195 | "no-unused-vars": [2, {"vars": "all", "args": "after-used"}], 196 | "no-use-before-define": 0, 197 | "no-useless-call": 2, 198 | "no-useless-escape": 2, 199 | "no-useless-return": 2, 200 | "no-var": 2, 201 | "no-void": 2, 202 | "no-warning-comments": 0, 203 | "no-with": 2, 204 | "object-curly-spacing": [0, "always"], 205 | "object-shorthand": [2, "always"], 206 | "one-var": [2, "never"], 207 | "operator-assignment": [2, "always"], 208 | "padded-blocks": 0, 209 | "prefer-const": 2, 210 | "prefer-reflect": 0, 211 | "prefer-spread": 0, 212 | "radix": 2, 213 | "require-yield": 2, 214 | "sort-vars": 0, 215 | "space-in-parens": 0, 216 | "spaced-comment": [2, "always"], 217 | "strict": 0, 218 | "use-isnan": 2, 219 | "valid-jsdoc": 0, 220 | "valid-typeof": 2, 221 | "vars-on-top": 0, 222 | "wrap-regex": 0, 223 | "yoda": [2, "never", {"exceptRange": true}] 224 | } 225 | } 226 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *~ 3 | .*.haste_cache.* 4 | .DS_Store 5 | npm-debug.log 6 | .env 7 | 8 | node_modules/ 9 | coverage/ 10 | dist/ 11 | /custom-graphiql.js 12 | /custom-graphiql.min.js 13 | /custom-graphiql.css 14 | 15 | yarn-error.log 16 | 17 | website/css 18 | website/js 19 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | save-prefix "" 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010-2016 Google, Inc. http://angularjs.org 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | CustomGraphiQL 2 | ============== 3 | 4 | A custom wrapper around [graphiql](https://github.com/graphql/graphiql/) package 5 | which offers more utility button and a component which allows to query any graphql 6 | endpoint. Inspired from [graphiql-app](https://github.com/skevy/graphiql-app/) 7 | but within browser without requirement for an app. 8 | 9 | [![npm](https://img.shields.io/npm/v/custom-graphiql.svg)](https://www.npmjs.com/package/custom-graphiql) 10 | 11 | Try it out here: https://graphiql-ide.netlify.com/ 12 | 13 | ![](resources/cgraphiql.gif) 14 | 15 | ![](resources/cgraphiql2.png) 16 | 17 | ### Getting started 18 | 19 | ```sh 20 | npm install --save custom-graphiql 21 | # OR 22 | yarn add custom-graphiql 23 | ``` 24 | 25 | CustomGraphiQL is React component which wraps existing GraphiQL component. It 26 | can be directly hosted on your server. Check the example directory for how to 27 | setup CustomGraphiQL on any endpoint of your express server. 28 | 29 | Build for the web with [webpack](http://webpack.github.io/) or 30 | [browserify](http://browserify.org/), or use the pre-bundled custom-graphiql.js 31 | file. See the example in the git repository to see how to use the pre-bundled 32 | file. Alternatively you can get custom-graphiql.js or custom-graphiql.min.js from 33 | the [releases page](https://github.com/shahankit/custom-graphiql/releases). 34 | 35 | Don't forget to include the CSS file on the page! If you're using npm, you can 36 | find it in `node_modules/custom-graphiql/custom-graphiql.css`, or you can 37 | download it from the [releases page](https://github.com/graphql/graphiql/releases). 38 | 39 | It can be directly hosted on your server. Check out the [example](./example) in 40 | thie repository for how to setup CustomGraphiQL on any endpoint of your express server. 41 | 42 | ### Features 43 | 44 | * Generates stub mutation by scanning you schema. 45 | * Share current query using Get or Set query button. 46 | 47 | ### Usage 48 | 49 | CustomGraphiQL exports a single React component and it can further customized. 50 | 51 | ```js 52 | import CustomGraphiQL from 'custom-graphiql'; 53 | 54 | 55 | ``` 56 | 57 | CustomGraphiQL supports all the props and children accepted by GraphiQL **except the 58 | `fetcher` prop**. The fetch function is implemented within the component and hence no 59 | fetcher props is required for CustomGraphiQL component. Check [here](https://github.com/graphql/graphiql#usage) 60 | for description of available props and children and their example usage. 61 | 62 | ### Contributing 63 | 64 | 1. Fork this repo by using the "Fork" button in the upper-right 65 | 66 | 2. Check out your fork 67 | 68 | ```sh 69 | git clone git@github.com:yournamehere/graphiql.git 70 | ``` 71 | 72 | 3. Install or Update all dependencies 73 | 74 | ```sh 75 | yarn 76 | ``` 77 | 78 | 4. Run development server 79 | 80 | ```sh 81 | yarn dev 82 | ``` 83 | 84 | 5. Push your changes and raise a PR. 85 | -------------------------------------------------------------------------------- /css/cgraphiql.css: -------------------------------------------------------------------------------- 1 | /* Root */ 2 | 3 | .cgraphiql-container { 4 | height: 100vh; 5 | margin: 0px; 6 | width: 100%; 7 | display: flex; 8 | overflow: hidden; 9 | flex-direction: column; 10 | } 11 | 12 | /* Common */ 13 | 14 | .shadow-button { 15 | padding: 3px 16px; 16 | font-size: 14px; 17 | line-height: 20px; 18 | height: 32px; 19 | box-sizing: border-box; 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | font-weight: 600; 24 | color: rgb(51, 51, 51); 25 | white-space: nowrap; 26 | cursor: pointer; 27 | user-select: none; 28 | background-color: rgb(238, 238, 238); 29 | background-image: linear-gradient(rgb(252, 252, 252), rgb(238, 238, 238)); 30 | border: 1px solid rgb(213, 213, 213); 31 | border-radius: 5px; 32 | font-family: Helvetica; 33 | } 34 | .shadow-button:hover { 35 | text-decoration: none; 36 | background-color: #ddd; 37 | background-image: linear-gradient(#eee, #ddd); 38 | border-color: #ccc; 39 | } 40 | .shadow-button:focus { 41 | box-shadow: 0 0 0 0.2em rgba(3, 102, 214, 0.3); 42 | outline: 0; 43 | } 44 | .toolbar-button-wrapper { 45 | position: relative; 46 | } 47 | .cgraphiql-container .menu-popup { 48 | position: absolute; 49 | top: 100%; 50 | left: 0px; 51 | z-index: 100; 52 | padding-top: 5px; 53 | padding-bottom: 5px; 54 | margin-top: 2px; 55 | margin-left: 5px; 56 | background-color: rgb(248, 248, 248); 57 | background-clip: padding-box; 58 | border: 1px solid rgba(0, 0, 0, 0.15); 59 | border-radius: 4px; 60 | box-shadow: rgba(0, 0, 0, 0.15) 0px 3px 12px; 61 | max-height: 385px; 62 | overflow-y: auto; 63 | } 64 | 65 | /* TopBar */ 66 | 67 | .top-bar { 68 | width: 100%; 69 | background: linear-gradient(#f7f7f7, #e2e2e2); 70 | border-bottom: 1px solid #d0d0d0; 71 | padding: 7px 14px 6px; 72 | display: flex; 73 | flex-direction: row; 74 | align-items: center; 75 | min-height: 53px; 76 | box-sizing: border-box; 77 | } 78 | .url-input-wrapper { 79 | display: flex; 80 | flex-direction: row; 81 | align-items: center; 82 | line-height: 25px; 83 | background-position: right 8px center; 84 | border-radius: 5px 0px 0px 5px; 85 | outline: none; 86 | border: 1px solid rgb(213, 213, 213); 87 | box-shadow: rgba(0, 0, 0, 0.075) 0px 1px 2px inset; 88 | color: rgb(118, 118, 118); 89 | background-color: rgb(255, 255, 255); 90 | } 91 | .url-input-wrapper:focus-within { 92 | border: 1px solid #51a7e8; 93 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 94 | 0 0 5px rgba(81, 167, 232, 0.5); 95 | color: #4078c0; 96 | background-color: #edf2f9; 97 | } 98 | .url-input-wrapper.error { 99 | color: #b00; 100 | background-image: linear-gradient(#fdf3f3, #e6d6d7); 101 | border: 1px solid rgba(187, 0, 0, 0.4); 102 | } 103 | .url-input { 104 | padding: 0px 8px; 105 | width: 300px; 106 | min-height: 30px; 107 | font-size: 15px; 108 | border: 0px; 109 | box-shadow: none; 110 | outline: none; 111 | background-color: white; 112 | } 113 | .url-input-label { 114 | padding-right: 12px; 115 | padding-left: 12px; 116 | font-size: 16px; 117 | white-space: nowrap; 118 | border-right: 1px solid rgb(238, 238, 238); 119 | font-family: Helvetica; 120 | } 121 | .fetch-button { 122 | border-left-width: 0; 123 | border-top-left-radius: 0; 124 | border-bottom-left-radius: 0; 125 | } 126 | .edit-headers-button { 127 | margin-left: 30px; 128 | } 129 | 130 | /* EditFormModal */ 131 | 132 | .edit-form-modal-container { 133 | position: absolute; 134 | top: 0px; 135 | right: 0px; 136 | bottom: 0px; 137 | left: 0px; 138 | z-index: 1000; 139 | background-color: rgba(0, 0, 0, 0.3); 140 | padding: 60px 0px; 141 | display: flex; 142 | flex-direction: column; 143 | align-items: center; 144 | } 145 | .edit-form-modal { 146 | box-shadow: rgba(0, 0, 0, 0.5) 0px 5px 15px; 147 | background-color: white; 148 | border: 1px solid rgba(0, 0, 0, 0.2); 149 | border-radius: 3px; 150 | outline: 0px; 151 | padding: 15px 20px; 152 | width: 50%; 153 | } 154 | .edit-form-modal .title { 155 | font-size: 14px; 156 | line-height: 20px; 157 | font-weight: 600; 158 | color: rgb(51, 51, 51); 159 | font-family: Helvetica; 160 | margin-bottom: 10px; 161 | } 162 | .edit-form-modal .buttons-container { 163 | display: flex; 164 | justify-content: flex-end; 165 | padding-top: 20px; 166 | } 167 | .edit-form-modal .save-button { 168 | margin-left: 25px; 169 | } 170 | 171 | /* EditFormModalItem */ 172 | 173 | .edit-form-input-item { 174 | display: flex; 175 | flex: 1 1 0%; 176 | flex-direction: row; 177 | margin-bottom: 3px; 178 | } 179 | .edit-form-input-item .input-row { 180 | display: flex; 181 | flex: 1 1 0%; 182 | flex-direction: row; 183 | border-radius: 3px 0px 0px 3px; 184 | } 185 | .edit-form-input-item .input-row:focus { 186 | background-color: #fafafa; 187 | } 188 | .edit-form-input-item .input-row.input-row-invalid { 189 | background-color: #f8eded; 190 | } 191 | .edit-form-input-item .input { 192 | width: calc(50% - 10px); 193 | height: 30px; 194 | background-color: transparent; 195 | font-size: 14px; 196 | border-width: 0px 0px 1px; 197 | border-bottom-style: solid; 198 | border-bottom-color: rgb(240, 240, 240); 199 | padding: 10px; 200 | color: rgb(80, 80, 80); 201 | font-family: Helvetica; 202 | box-sizing: border-box; 203 | line-height: normal; 204 | margin: 0px 10px 0px 0px; 205 | } 206 | .edit-form-input-item .input:focus { 207 | outline: none; 208 | border-bottom-color: #4078c0; 209 | } 210 | .edit-form-input-item .input.key-input { 211 | margin-right: 10px; 212 | } 213 | .edit-form-input-item .input.value-input { 214 | margin-left: 10px; 215 | } 216 | .edit-form-input-item .delete-button { 217 | width: 30px; 218 | height: 30px; 219 | padding: 0px; 220 | margin-left: 3px; 221 | } 222 | .edit-form-input-item .delete-button-stub { 223 | background-color: transparent; 224 | cursor: unset; 225 | } 226 | 227 | /* GenerateMutation */ 228 | 229 | .mutation-search-input { 230 | margin: 8px; 231 | padding: 0px 8px; 232 | width: 250px; 233 | min-height: 28px; 234 | font-size: 14px; 235 | font-family: Helvetica; 236 | background-color: white; 237 | color: rgb(51, 51, 51); 238 | vertical-align: middle; 239 | background-repeat: no-repeat; 240 | background-position: right 8px center; 241 | border-radius: 5px; 242 | border: 1px solid rgb(221, 221, 221); 243 | outline: none; 244 | box-shadow: rgba(0, 0, 0, 0.075) 0px 1px 2px inset; 245 | } 246 | .mutation-search-input:focus { 247 | border: 1px solid #51a7e8; 248 | outline: none; 249 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 250 | 0 0 5px rgba(81, 167, 232, 0.5); 251 | } 252 | .menu-list-item { 253 | display: block; 254 | padding: 8px 8px 8px 30px; 255 | overflow: hidden; 256 | text-overflow: ellipsis; 257 | white-space: nowrap; 258 | cursor: pointer; 259 | font-size: 13px; 260 | font-family: Helvetica; 261 | border-bottom: 1px solid rgb(238, 238, 238); 262 | background-color: white; 263 | color: rgb(102, 102, 102); 264 | } 265 | .menu-list-item:hover { 266 | background-color: #4078c0; 267 | color: white; 268 | } 269 | 270 | .saveURLButton:hover { 271 | background-color: #4078c0; 272 | color: white; 273 | } 274 | 275 | /* GetSetURL */ 276 | 277 | .get-set-url-popup .input { 278 | margin: 8px; 279 | padding: 0px 8px; 280 | width: 300px; 281 | min-height: 30px; 282 | font-size: 15px; 283 | background-color: white; 284 | color: rgb(51, 51, 51); 285 | vertical-align: middle; 286 | background-repeat: no-repeat; 287 | background-position: right 8px center; 288 | border: 1px solid rgb(221, 221, 221); 289 | border-radius: 5px; 290 | outline: none; 291 | box-shadow: rgba(0, 0, 0, 0.075) 0px 1px 2px inset; 292 | } 293 | .get-set-url-popup .input:focus { 294 | border: 1px solid #51a7e8; 295 | outline: none; 296 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5); 297 | } 298 | .get-set-url-popup .button-container { 299 | display: flex; 300 | flex-direction: row; 301 | margin: 0px 8px 8px 8px; 302 | } 303 | .get-set-url-popup .button { 304 | margin-right: 8px; 305 | min-width: 82px; 306 | } 307 | .get-set-url-popup .copied-button { 308 | color: #55b230; 309 | } 310 | .get-set-url-popup .copied-button:focus { 311 | box-shadow: 0 0 0 0.2em rgba(52,208,88,.4); 312 | } -------------------------------------------------------------------------------- /css/graphiql.css: -------------------------------------------------------------------------------- 1 | .graphiql-container, 2 | .graphiql-container button, 3 | .graphiql-container input { 4 | color: #141823; 5 | font-family: 6 | system, 7 | -apple-system, 8 | 'San Francisco', 9 | '.SFNSDisplay-Regular', 10 | 'Segoe UI', 11 | Segoe, 12 | 'Segoe WP', 13 | 'Helvetica Neue', 14 | helvetica, 15 | 'Lucida Grande', 16 | arial, 17 | sans-serif; 18 | font-size: 14px; 19 | } 20 | 21 | .graphiql-container { 22 | display: -webkit-box; 23 | display: -ms-flexbox; 24 | display: flex; 25 | -webkit-box-orient: horizontal; 26 | -webkit-box-direction: normal; 27 | -ms-flex-direction: row; 28 | flex-direction: row; 29 | height: 100%; 30 | margin: 0; 31 | overflow: hidden; 32 | width: 100%; 33 | } 34 | 35 | .graphiql-container .editorWrap { 36 | display: -webkit-box; 37 | display: -ms-flexbox; 38 | display: flex; 39 | -webkit-box-orient: vertical; 40 | -webkit-box-direction: normal; 41 | -ms-flex-direction: column; 42 | flex-direction: column; 43 | -webkit-box-flex: 1; 44 | -ms-flex: 1; 45 | flex: 1; 46 | overflow-x: hidden; 47 | } 48 | 49 | .graphiql-container .title { 50 | font-size: 18px; 51 | } 52 | 53 | .graphiql-container .title em { 54 | font-family: georgia; 55 | font-size: 19px; 56 | } 57 | 58 | .graphiql-container .topBarWrap { 59 | display: -webkit-box; 60 | display: -ms-flexbox; 61 | display: flex; 62 | -webkit-box-orient: horizontal; 63 | -webkit-box-direction: normal; 64 | -ms-flex-direction: row; 65 | flex-direction: row; 66 | } 67 | 68 | .graphiql-container .topBar { 69 | -webkit-box-align: center; 70 | -ms-flex-align: center; 71 | align-items: center; 72 | background: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#e2e2e2)); 73 | background: linear-gradient(#f7f7f7, #e2e2e2); 74 | border-bottom: 1px solid #d0d0d0; 75 | cursor: default; 76 | display: -webkit-box; 77 | display: -ms-flexbox; 78 | display: flex; 79 | -webkit-box-orient: horizontal; 80 | -webkit-box-direction: normal; 81 | -ms-flex-direction: row; 82 | flex-direction: row; 83 | -webkit-box-flex: 1; 84 | -ms-flex: 1; 85 | flex: 1; 86 | height: 34px; 87 | overflow-y: visible; 88 | padding: 7px 14px 6px; 89 | -webkit-user-select: none; 90 | -moz-user-select: none; 91 | -ms-user-select: none; 92 | user-select: none; 93 | } 94 | 95 | .graphiql-container .toolbar { 96 | overflow-x: visible; 97 | display: -webkit-box; 98 | display: -ms-flexbox; 99 | display: flex; 100 | } 101 | 102 | .graphiql-container .docExplorerShow, 103 | .graphiql-container .historyShow { 104 | background: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#e2e2e2)); 105 | background: linear-gradient(#f7f7f7, #e2e2e2); 106 | border-radius: 0; 107 | border-bottom: 1px solid #d0d0d0; 108 | border-right: none; 109 | border-top: none; 110 | color: #3B5998; 111 | cursor: pointer; 112 | font-size: 14px; 113 | margin: 0; 114 | outline: 0; 115 | padding: 2px 20px 0 18px; 116 | } 117 | 118 | .graphiql-container .docExplorerShow { 119 | border-left: 1px solid rgba(0, 0, 0, 0.2); 120 | } 121 | 122 | .graphiql-container .historyShow { 123 | border-right: 1px solid rgba(0, 0, 0, 0.2); 124 | border-left: 0; 125 | } 126 | 127 | .graphiql-container .docExplorerShow:before { 128 | border-left: 2px solid #3B5998; 129 | border-top: 2px solid #3B5998; 130 | content: ''; 131 | display: inline-block; 132 | height: 9px; 133 | margin: 0 3px -1px 0; 134 | position: relative; 135 | -webkit-transform: rotate(-45deg); 136 | transform: rotate(-45deg); 137 | width: 9px; 138 | } 139 | 140 | .graphiql-container .editorBar { 141 | display: -webkit-box; 142 | display: -ms-flexbox; 143 | display: flex; 144 | -webkit-box-orient: horizontal; 145 | -webkit-box-direction: normal; 146 | -ms-flex-direction: row; 147 | flex-direction: row; 148 | -webkit-box-flex: 1; 149 | -ms-flex: 1; 150 | flex: 1; 151 | } 152 | 153 | .graphiql-container .queryWrap { 154 | display: -webkit-box; 155 | display: -ms-flexbox; 156 | display: flex; 157 | -webkit-box-orient: vertical; 158 | -webkit-box-direction: normal; 159 | -ms-flex-direction: column; 160 | flex-direction: column; 161 | -webkit-box-flex: 1; 162 | -ms-flex: 1; 163 | flex: 1; 164 | } 165 | 166 | .graphiql-container .resultWrap { 167 | border-left: solid 1px #e0e0e0; 168 | display: -webkit-box; 169 | display: -ms-flexbox; 170 | display: flex; 171 | -webkit-box-orient: vertical; 172 | -webkit-box-direction: normal; 173 | -ms-flex-direction: column; 174 | flex-direction: column; 175 | -webkit-box-flex: 1; 176 | -ms-flex: 1; 177 | flex: 1; 178 | position: relative; 179 | } 180 | 181 | .graphiql-container .docExplorerWrap, 182 | .graphiql-container .historyPaneWrap { 183 | background: white; 184 | -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15); 185 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.15); 186 | position: relative; 187 | z-index: 3; 188 | } 189 | 190 | .graphiql-container .historyPaneWrap { 191 | min-width: 230px; 192 | z-index: 5; 193 | } 194 | 195 | .graphiql-container .docExplorerResizer { 196 | cursor: col-resize; 197 | height: 100%; 198 | left: -5px; 199 | position: absolute; 200 | top: 0; 201 | width: 10px; 202 | z-index: 10; 203 | } 204 | 205 | .graphiql-container .docExplorerHide { 206 | cursor: pointer; 207 | font-size: 18px; 208 | margin: -7px -8px -6px 0; 209 | padding: 18px 16px 15px 12px; 210 | } 211 | 212 | .graphiql-container div .query-editor { 213 | -webkit-box-flex: 1; 214 | -ms-flex: 1; 215 | flex: 1; 216 | position: relative; 217 | } 218 | 219 | .graphiql-container .variable-editor { 220 | display: -webkit-box; 221 | display: -ms-flexbox; 222 | display: flex; 223 | -webkit-box-orient: vertical; 224 | -webkit-box-direction: normal; 225 | -ms-flex-direction: column; 226 | flex-direction: column; 227 | height: 29px; 228 | position: relative; 229 | } 230 | 231 | .graphiql-container .variable-editor-title { 232 | background: #eeeeee; 233 | border-bottom: 1px solid #d6d6d6; 234 | border-top: 1px solid #e0e0e0; 235 | color: #777; 236 | font-variant: small-caps; 237 | font-weight: bold; 238 | letter-spacing: 1px; 239 | line-height: 14px; 240 | padding: 6px 0 8px 43px; 241 | text-transform: lowercase; 242 | -webkit-user-select: none; 243 | -moz-user-select: none; 244 | -ms-user-select: none; 245 | user-select: none; 246 | } 247 | 248 | .graphiql-container .codemirrorWrap { 249 | -webkit-box-flex: 1; 250 | -ms-flex: 1; 251 | flex: 1; 252 | height: 100%; 253 | position: relative; 254 | } 255 | 256 | .graphiql-container .result-window { 257 | -webkit-box-flex: 1; 258 | -ms-flex: 1; 259 | flex: 1; 260 | height: 100%; 261 | position: relative; 262 | } 263 | 264 | .graphiql-container .footer { 265 | background: #f6f7f8; 266 | border-left: 1px solid #e0e0e0; 267 | border-top: 1px solid #e0e0e0; 268 | margin-left: 12px; 269 | position: relative; 270 | } 271 | 272 | .graphiql-container .footer:before { 273 | background: #eeeeee; 274 | bottom: 0; 275 | content: " "; 276 | left: -13px; 277 | position: absolute; 278 | top: -1px; 279 | width: 12px; 280 | } 281 | 282 | /* No `.graphiql-container` here so themes can overwrite */ 283 | .result-window .CodeMirror { 284 | background: #f6f7f8; 285 | } 286 | 287 | .graphiql-container .result-window .CodeMirror-gutters { 288 | background-color: #eeeeee; 289 | border-color: #e0e0e0; 290 | cursor: col-resize; 291 | } 292 | 293 | .graphiql-container .result-window .CodeMirror-foldgutter, 294 | .graphiql-container .result-window .CodeMirror-foldgutter-open:after, 295 | .graphiql-container .result-window .CodeMirror-foldgutter-folded:after { 296 | padding-left: 3px; 297 | } 298 | 299 | .graphiql-container .toolbar-button { 300 | background: #fdfdfd; 301 | background: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); 302 | background: linear-gradient(#f9f9f9, #ececec); 303 | border-radius: 3px; 304 | -webkit-box-shadow: 305 | inset 0 0 0 1px rgba(0,0,0,0.20), 306 | 0 1px 0 rgba(255,255,255, 0.7), 307 | inset 0 1px #fff; 308 | box-shadow: 309 | inset 0 0 0 1px rgba(0,0,0,0.20), 310 | 0 1px 0 rgba(255,255,255, 0.7), 311 | inset 0 1px #fff; 312 | color: #555; 313 | cursor: pointer; 314 | display: inline-block; 315 | margin: 0 5px; 316 | padding: 3px 11px 5px; 317 | text-decoration: none; 318 | text-overflow: ellipsis; 319 | white-space: nowrap; 320 | max-width: 150px; 321 | } 322 | 323 | .graphiql-container .toolbar-button:active { 324 | background: -webkit-gradient(linear, left top, left bottom, from(#ececec), to(#d5d5d5)); 325 | background: linear-gradient(#ececec, #d5d5d5); 326 | -webkit-box-shadow: 327 | 0 1px 0 rgba(255, 255, 255, 0.7), 328 | inset 0 0 0 1px rgba(0,0,0,0.10), 329 | inset 0 1px 1px 1px rgba(0, 0, 0, 0.12), 330 | inset 0 0 5px rgba(0, 0, 0, 0.1); 331 | box-shadow: 332 | 0 1px 0 rgba(255, 255, 255, 0.7), 333 | inset 0 0 0 1px rgba(0,0,0,0.10), 334 | inset 0 1px 1px 1px rgba(0, 0, 0, 0.12), 335 | inset 0 0 5px rgba(0, 0, 0, 0.1); 336 | } 337 | 338 | .graphiql-container .toolbar-button.error { 339 | background: -webkit-gradient(linear, left top, left bottom, from(#fdf3f3), to(#e6d6d7)); 340 | background: linear-gradient(#fdf3f3, #e6d6d7); 341 | color: #b00; 342 | } 343 | 344 | .graphiql-container .toolbar-button-group { 345 | margin: 0 5px; 346 | white-space: nowrap; 347 | } 348 | 349 | .graphiql-container .toolbar-button-group > * { 350 | margin: 0; 351 | } 352 | 353 | .graphiql-container .toolbar-button-group > *:not(:last-child) { 354 | border-top-right-radius: 0; 355 | border-bottom-right-radius: 0; 356 | } 357 | 358 | .graphiql-container .toolbar-button-group > *:not(:first-child) { 359 | border-top-left-radius: 0; 360 | border-bottom-left-radius: 0; 361 | margin-left: -1px; 362 | } 363 | 364 | .graphiql-container .execute-button-wrap { 365 | height: 34px; 366 | margin: 0 14px 0 28px; 367 | position: relative; 368 | } 369 | 370 | .graphiql-container .execute-button { 371 | background: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#d2d3d6)); 372 | background: linear-gradient(#fdfdfd, #d2d3d6); 373 | border-radius: 17px; 374 | border: 1px solid rgba(0,0,0,0.25); 375 | -webkit-box-shadow: 0 1px 0 #fff; 376 | box-shadow: 0 1px 0 #fff; 377 | cursor: pointer; 378 | fill: #444; 379 | height: 34px; 380 | margin: 0; 381 | padding: 0; 382 | width: 34px; 383 | } 384 | 385 | .graphiql-container .execute-button svg { 386 | pointer-events: none; 387 | } 388 | 389 | .graphiql-container .execute-button:active { 390 | background: -webkit-gradient(linear, left top, left bottom, from(#e6e6e6), to(#c3c3c3)); 391 | background: linear-gradient(#e6e6e6, #c3c3c3); 392 | -webkit-box-shadow: 393 | 0 1px 0 #fff, 394 | inset 0 0 2px rgba(0, 0, 0, 0.2), 395 | inset 0 0 6px rgba(0, 0, 0, 0.1); 396 | box-shadow: 397 | 0 1px 0 #fff, 398 | inset 0 0 2px rgba(0, 0, 0, 0.2), 399 | inset 0 0 6px rgba(0, 0, 0, 0.1); 400 | } 401 | 402 | .graphiql-container .execute-button:focus { 403 | outline: 0; 404 | } 405 | 406 | .graphiql-container .toolbar-menu, 407 | .graphiql-container .toolbar-select { 408 | position: relative; 409 | } 410 | 411 | .graphiql-container .execute-options, 412 | .graphiql-container .toolbar-menu-items, 413 | .graphiql-container .toolbar-select-options { 414 | background: #fff; 415 | -webkit-box-shadow: 416 | 0 0 0 1px rgba(0,0,0,0.1), 417 | 0 2px 4px rgba(0,0,0,0.25); 418 | box-shadow: 419 | 0 0 0 1px rgba(0,0,0,0.1), 420 | 0 2px 4px rgba(0,0,0,0.25); 421 | margin: 0; 422 | padding: 6px 0; 423 | position: absolute; 424 | z-index: 100; 425 | } 426 | 427 | .graphiql-container .execute-options { 428 | min-width: 100px; 429 | top: 37px; 430 | left: -1px; 431 | } 432 | 433 | .graphiql-container .toolbar-menu-items { 434 | left: 1px; 435 | margin-top: -1px; 436 | min-width: 110%; 437 | top: 100%; 438 | visibility: hidden; 439 | } 440 | 441 | .graphiql-container .toolbar-menu-items.open { 442 | visibility: visible; 443 | } 444 | 445 | .graphiql-container .toolbar-select-options { 446 | left: 0; 447 | min-width: 100%; 448 | top: -5px; 449 | visibility: hidden; 450 | } 451 | 452 | .graphiql-container .toolbar-select-options.open { 453 | visibility: visible; 454 | } 455 | 456 | .graphiql-container .execute-options > li, 457 | .graphiql-container .toolbar-menu-items > li, 458 | .graphiql-container .toolbar-select-options > li { 459 | cursor: pointer; 460 | display: block; 461 | margin: none; 462 | max-width: 300px; 463 | overflow: hidden; 464 | padding: 2px 20px 4px 11px; 465 | text-overflow: ellipsis; 466 | white-space: nowrap; 467 | } 468 | 469 | .graphiql-container .execute-options > li.selected, 470 | .graphiql-container .toolbar-menu-items > li.hover, 471 | .graphiql-container .toolbar-menu-items > li:active, 472 | .graphiql-container .toolbar-menu-items > li:hover, 473 | .graphiql-container .toolbar-select-options > li.hover, 474 | .graphiql-container .toolbar-select-options > li:active, 475 | .graphiql-container .toolbar-select-options > li:hover, 476 | .graphiql-container .history-contents > p:hover, 477 | .graphiql-container .history-contents > p:active { 478 | background: #e10098; 479 | color: #fff; 480 | } 481 | 482 | .graphiql-container .toolbar-select-options > li > svg { 483 | display: inline; 484 | fill: #666; 485 | margin: 0 -6px 0 6px; 486 | pointer-events: none; 487 | vertical-align: middle; 488 | } 489 | 490 | .graphiql-container .toolbar-select-options > li.hover > svg, 491 | .graphiql-container .toolbar-select-options > li:active > svg, 492 | .graphiql-container .toolbar-select-options > li:hover > svg { 493 | fill: #fff; 494 | } 495 | 496 | .graphiql-container .CodeMirror-scroll { 497 | overflow-scrolling: touch; 498 | } 499 | 500 | .graphiql-container .CodeMirror { 501 | color: #141823; 502 | font-family: 503 | 'Consolas', 504 | 'Inconsolata', 505 | 'Droid Sans Mono', 506 | 'Monaco', 507 | monospace; 508 | font-size: 13px; 509 | height: 100%; 510 | left: 0; 511 | position: absolute; 512 | top: 0; 513 | width: 100%; 514 | } 515 | 516 | .graphiql-container .CodeMirror-lines { 517 | padding: 20px 0; 518 | } 519 | 520 | .CodeMirror-hint-information .content { 521 | box-orient: vertical; 522 | color: #141823; 523 | display: -webkit-box; 524 | display: -ms-flexbox; 525 | display: flex; 526 | font-family: system, -apple-system, 'San Francisco', '.SFNSDisplay-Regular', 'Segoe UI', Segoe, 'Segoe WP', 'Helvetica Neue', helvetica, 'Lucida Grande', arial, sans-serif; 527 | font-size: 13px; 528 | line-clamp: 3; 529 | line-height: 16px; 530 | max-height: 48px; 531 | overflow: hidden; 532 | text-overflow: -o-ellipsis-lastline; 533 | } 534 | 535 | .CodeMirror-hint-information .content p:first-child { 536 | margin-top: 0; 537 | } 538 | 539 | .CodeMirror-hint-information .content p:last-child { 540 | margin-bottom: 0; 541 | } 542 | 543 | .CodeMirror-hint-information .infoType { 544 | color: #CA9800; 545 | cursor: pointer; 546 | display: inline; 547 | margin-right: 0.5em; 548 | } 549 | 550 | .autoInsertedLeaf.cm-property { 551 | -webkit-animation-duration: 6s; 552 | animation-duration: 6s; 553 | -webkit-animation-name: insertionFade; 554 | animation-name: insertionFade; 555 | border-bottom: 2px solid rgba(255, 255, 255, 0); 556 | border-radius: 2px; 557 | margin: -2px -4px -1px; 558 | padding: 2px 4px 1px; 559 | } 560 | 561 | @-webkit-keyframes insertionFade { 562 | from, to { 563 | background: rgba(255, 255, 255, 0); 564 | border-color: rgba(255, 255, 255, 0); 565 | } 566 | 567 | 15%, 85% { 568 | background: #fbffc9; 569 | border-color: #f0f3c0; 570 | } 571 | } 572 | 573 | @keyframes insertionFade { 574 | from, to { 575 | background: rgba(255, 255, 255, 0); 576 | border-color: rgba(255, 255, 255, 0); 577 | } 578 | 579 | 15%, 85% { 580 | background: #fbffc9; 581 | border-color: #f0f3c0; 582 | } 583 | } 584 | 585 | div.CodeMirror-lint-tooltip { 586 | background-color: white; 587 | border-radius: 2px; 588 | border: 0; 589 | color: #141823; 590 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45); 591 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45); 592 | font-family: 593 | system, 594 | -apple-system, 595 | 'San Francisco', 596 | '.SFNSDisplay-Regular', 597 | 'Segoe UI', 598 | Segoe, 599 | 'Segoe WP', 600 | 'Helvetica Neue', 601 | helvetica, 602 | 'Lucida Grande', 603 | arial, 604 | sans-serif; 605 | font-size: 13px; 606 | line-height: 16px; 607 | max-width: 430px; 608 | opacity: 0; 609 | padding: 8px 10px; 610 | -webkit-transition: opacity 0.15s; 611 | transition: opacity 0.15s; 612 | white-space: pre-wrap; 613 | } 614 | 615 | div.CodeMirror-lint-tooltip > * { 616 | padding-left: 23px; 617 | } 618 | 619 | div.CodeMirror-lint-tooltip > * + * { 620 | margin-top: 12px; 621 | } 622 | 623 | /* COLORS */ 624 | 625 | .graphiql-container .CodeMirror-foldmarker { 626 | border-radius: 4px; 627 | background: #08f; 628 | background: -webkit-gradient(linear, left top, left bottom, from(#43A8FF), to(#0F83E8)); 629 | background: linear-gradient(#43A8FF, #0F83E8); 630 | -webkit-box-shadow: 631 | 0 1px 1px rgba(0, 0, 0, 0.2), 632 | inset 0 0 0 1px rgba(0, 0, 0, 0.1); 633 | box-shadow: 634 | 0 1px 1px rgba(0, 0, 0, 0.2), 635 | inset 0 0 0 1px rgba(0, 0, 0, 0.1); 636 | color: white; 637 | font-family: arial; 638 | font-size: 12px; 639 | line-height: 0; 640 | margin: 0 3px; 641 | padding: 0px 4px 1px; 642 | text-shadow: 0 -1px rgba(0, 0, 0, 0.1); 643 | } 644 | 645 | .graphiql-container div.CodeMirror span.CodeMirror-matchingbracket { 646 | color: #555; 647 | text-decoration: underline; 648 | } 649 | 650 | .graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket { 651 | color: #f00; 652 | } 653 | 654 | /* Comment */ 655 | .cm-comment { 656 | color: #999; 657 | } 658 | 659 | /* Punctuation */ 660 | .cm-punctuation { 661 | color: #555; 662 | } 663 | 664 | /* Keyword */ 665 | .cm-keyword { 666 | color: #B11A04; 667 | } 668 | 669 | /* OperationName, FragmentName */ 670 | .cm-def { 671 | color: #D2054E; 672 | } 673 | 674 | /* FieldName */ 675 | .cm-property { 676 | color: #1F61A0; 677 | } 678 | 679 | /* FieldAlias */ 680 | .cm-qualifier { 681 | color: #1C92A9; 682 | } 683 | 684 | /* ArgumentName and ObjectFieldName */ 685 | .cm-attribute { 686 | color: #8B2BB9; 687 | } 688 | 689 | /* Number */ 690 | .cm-number { 691 | color: #2882F9; 692 | } 693 | 694 | /* String */ 695 | .cm-string { 696 | color: #D64292; 697 | } 698 | 699 | /* Boolean */ 700 | .cm-builtin { 701 | color: #D47509; 702 | } 703 | 704 | /* EnumValue */ 705 | .cm-string-2 { 706 | color: #0B7FC7; 707 | } 708 | 709 | /* Variable */ 710 | .cm-variable { 711 | color: #397D13; 712 | } 713 | 714 | /* Directive */ 715 | .cm-meta { 716 | color: #B33086; 717 | } 718 | 719 | /* Type */ 720 | .cm-atom { 721 | color: #CA9800; 722 | } 723 | /* BASICS */ 724 | 725 | .CodeMirror { 726 | /* Set height, width, borders, and global font properties here */ 727 | color: black; 728 | font-family: monospace; 729 | height: 300px; 730 | } 731 | 732 | /* PADDING */ 733 | 734 | .CodeMirror-lines { 735 | padding: 4px 0; /* Vertical padding around content */ 736 | } 737 | .CodeMirror pre { 738 | padding: 0 4px; /* Horizontal padding of content */ 739 | } 740 | 741 | .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { 742 | background-color: white; /* The little square between H and V scrollbars */ 743 | } 744 | 745 | /* GUTTER */ 746 | 747 | .CodeMirror-gutters { 748 | border-right: 1px solid #ddd; 749 | background-color: #f7f7f7; 750 | white-space: nowrap; 751 | } 752 | .CodeMirror-linenumbers {} 753 | .CodeMirror-linenumber { 754 | color: #999; 755 | min-width: 20px; 756 | padding: 0 3px 0 5px; 757 | text-align: right; 758 | white-space: nowrap; 759 | } 760 | 761 | .CodeMirror-guttermarker { color: black; } 762 | .CodeMirror-guttermarker-subtle { color: #999; } 763 | 764 | /* CURSOR */ 765 | 766 | .CodeMirror .CodeMirror-cursor { 767 | border-left: 1px solid black; 768 | } 769 | /* Shown when moving in bi-directional text */ 770 | .CodeMirror div.CodeMirror-secondarycursor { 771 | border-left: 1px solid silver; 772 | } 773 | .CodeMirror.cm-fat-cursor div.CodeMirror-cursor { 774 | background: #7e7; 775 | border: 0; 776 | width: auto; 777 | } 778 | .CodeMirror.cm-fat-cursor div.CodeMirror-cursors { 779 | z-index: 1; 780 | } 781 | 782 | .cm-animate-fat-cursor { 783 | -webkit-animation: blink 1.06s steps(1) infinite; 784 | animation: blink 1.06s steps(1) infinite; 785 | border: 0; 786 | width: auto; 787 | } 788 | @-webkit-keyframes blink { 789 | 0% { background: #7e7; } 790 | 50% { background: none; } 791 | 100% { background: #7e7; } 792 | } 793 | @keyframes blink { 794 | 0% { background: #7e7; } 795 | 50% { background: none; } 796 | 100% { background: #7e7; } 797 | } 798 | 799 | /* Can style cursor different in overwrite (non-insert) mode */ 800 | div.CodeMirror-overwrite div.CodeMirror-cursor {} 801 | 802 | .cm-tab { display: inline-block; text-decoration: inherit; } 803 | 804 | .CodeMirror-ruler { 805 | border-left: 1px solid #ccc; 806 | position: absolute; 807 | } 808 | 809 | /* DEFAULT THEME */ 810 | 811 | .cm-s-default .cm-keyword {color: #708;} 812 | .cm-s-default .cm-atom {color: #219;} 813 | .cm-s-default .cm-number {color: #164;} 814 | .cm-s-default .cm-def {color: #00f;} 815 | .cm-s-default .cm-variable, 816 | .cm-s-default .cm-punctuation, 817 | .cm-s-default .cm-property, 818 | .cm-s-default .cm-operator {} 819 | .cm-s-default .cm-variable-2 {color: #05a;} 820 | .cm-s-default .cm-variable-3 {color: #085;} 821 | .cm-s-default .cm-comment {color: #a50;} 822 | .cm-s-default .cm-string {color: #a11;} 823 | .cm-s-default .cm-string-2 {color: #f50;} 824 | .cm-s-default .cm-meta {color: #555;} 825 | .cm-s-default .cm-qualifier {color: #555;} 826 | .cm-s-default .cm-builtin {color: #30a;} 827 | .cm-s-default .cm-bracket {color: #997;} 828 | .cm-s-default .cm-tag {color: #170;} 829 | .cm-s-default .cm-attribute {color: #00c;} 830 | .cm-s-default .cm-header {color: blue;} 831 | .cm-s-default .cm-quote {color: #090;} 832 | .cm-s-default .cm-hr {color: #999;} 833 | .cm-s-default .cm-link {color: #00c;} 834 | 835 | .cm-negative {color: #d44;} 836 | .cm-positive {color: #292;} 837 | .cm-header, .cm-strong {font-weight: bold;} 838 | .cm-em {font-style: italic;} 839 | .cm-link {text-decoration: underline;} 840 | .cm-strikethrough {text-decoration: line-through;} 841 | 842 | .cm-s-default .cm-error {color: #f00;} 843 | .cm-invalidchar {color: #f00;} 844 | 845 | .CodeMirror-composing { border-bottom: 2px solid; } 846 | 847 | /* Default styles for common addons */ 848 | 849 | div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} 850 | div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} 851 | .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } 852 | .CodeMirror-activeline-background {background: #e8f2ff;} 853 | 854 | /* STOP */ 855 | 856 | /* The rest of this file contains styles related to the mechanics of 857 | the editor. You probably shouldn't touch them. */ 858 | 859 | .CodeMirror { 860 | background: white; 861 | overflow: hidden; 862 | position: relative; 863 | } 864 | 865 | .CodeMirror-scroll { 866 | height: 100%; 867 | /* 30px is the magic margin used to hide the element's real scrollbars */ 868 | /* See overflow: hidden in .CodeMirror */ 869 | margin-bottom: -30px; margin-right: -30px; 870 | outline: none; /* Prevent dragging from highlighting the element */ 871 | overflow: scroll !important; /* Things will break if this is overridden */ 872 | padding-bottom: 30px; 873 | position: relative; 874 | } 875 | .CodeMirror-sizer { 876 | border-right: 30px solid transparent; 877 | position: relative; 878 | } 879 | 880 | /* The fake, visible scrollbars. Used to force redraw during scrolling 881 | before actual scrolling happens, thus preventing shaking and 882 | flickering artifacts. */ 883 | .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { 884 | display: none; 885 | position: absolute; 886 | z-index: 6; 887 | } 888 | .CodeMirror-vscrollbar { 889 | overflow-x: hidden; 890 | overflow-y: scroll; 891 | right: 0; top: 0; 892 | } 893 | .CodeMirror-hscrollbar { 894 | bottom: 0; left: 0; 895 | overflow-x: scroll; 896 | overflow-y: hidden; 897 | } 898 | .CodeMirror-scrollbar-filler { 899 | right: 0; bottom: 0; 900 | } 901 | .CodeMirror-gutter-filler { 902 | left: 0; bottom: 0; 903 | } 904 | 905 | .CodeMirror-gutters { 906 | min-height: 100%; 907 | position: absolute; left: 0; top: 0; 908 | z-index: 3; 909 | } 910 | .CodeMirror-gutter { 911 | display: inline-block; 912 | height: 100%; 913 | margin-bottom: -30px; 914 | vertical-align: top; 915 | white-space: normal; 916 | /* Hack to make IE7 behave */ 917 | *zoom:1; 918 | *display:inline; 919 | } 920 | .CodeMirror-gutter-wrapper { 921 | background: none !important; 922 | border: none !important; 923 | position: absolute; 924 | z-index: 4; 925 | } 926 | .CodeMirror-gutter-background { 927 | position: absolute; 928 | top: 0; bottom: 0; 929 | z-index: 4; 930 | } 931 | .CodeMirror-gutter-elt { 932 | cursor: default; 933 | position: absolute; 934 | z-index: 4; 935 | } 936 | .CodeMirror-gutter-wrapper { 937 | -webkit-user-select: none; 938 | -moz-user-select: none; 939 | -ms-user-select: none; 940 | user-select: none; 941 | } 942 | 943 | .CodeMirror-lines { 944 | cursor: text; 945 | min-height: 1px; /* prevents collapsing before first draw */ 946 | } 947 | .CodeMirror pre { 948 | -webkit-tap-highlight-color: transparent; 949 | /* Reset some styles that the rest of the page might have set */ 950 | background: transparent; 951 | border-radius: 0; 952 | border-width: 0; 953 | color: inherit; 954 | font-family: inherit; 955 | font-size: inherit; 956 | -webkit-font-variant-ligatures: none; 957 | font-variant-ligatures: none; 958 | line-height: inherit; 959 | margin: 0; 960 | overflow: visible; 961 | position: relative; 962 | white-space: pre; 963 | word-wrap: normal; 964 | z-index: 2; 965 | } 966 | .CodeMirror-wrap pre { 967 | word-wrap: break-word; 968 | white-space: pre-wrap; 969 | word-break: normal; 970 | } 971 | 972 | .CodeMirror-linebackground { 973 | position: absolute; 974 | left: 0; right: 0; top: 0; bottom: 0; 975 | z-index: 0; 976 | } 977 | 978 | .CodeMirror-linewidget { 979 | overflow: auto; 980 | position: relative; 981 | z-index: 2; 982 | } 983 | 984 | .CodeMirror-widget {} 985 | 986 | .CodeMirror-code { 987 | outline: none; 988 | } 989 | 990 | /* Force content-box sizing for the elements where we expect it */ 991 | .CodeMirror-scroll, 992 | .CodeMirror-sizer, 993 | .CodeMirror-gutter, 994 | .CodeMirror-gutters, 995 | .CodeMirror-linenumber { 996 | -webkit-box-sizing: content-box; 997 | box-sizing: content-box; 998 | } 999 | 1000 | .CodeMirror-measure { 1001 | height: 0; 1002 | overflow: hidden; 1003 | position: absolute; 1004 | visibility: hidden; 1005 | width: 100%; 1006 | } 1007 | 1008 | .CodeMirror-cursor { position: absolute; } 1009 | .CodeMirror-measure pre { position: static; } 1010 | 1011 | div.CodeMirror-cursors { 1012 | position: relative; 1013 | visibility: hidden; 1014 | z-index: 3; 1015 | } 1016 | div.CodeMirror-dragcursors { 1017 | visibility: visible; 1018 | } 1019 | 1020 | .CodeMirror-focused div.CodeMirror-cursors { 1021 | visibility: visible; 1022 | } 1023 | 1024 | .CodeMirror-selected { background: #d9d9d9; } 1025 | .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } 1026 | .CodeMirror-crosshair { cursor: crosshair; } 1027 | .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } 1028 | .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } 1029 | .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } 1030 | 1031 | .cm-searching { 1032 | background: #ffa; 1033 | background: rgba(255, 255, 0, .4); 1034 | } 1035 | 1036 | /* IE7 hack to prevent it from returning funny offsetTops on the spans */ 1037 | .CodeMirror span { *vertical-align: text-bottom; } 1038 | 1039 | /* Used to force a border model for a node */ 1040 | .cm-force-border { padding-right: .1px; } 1041 | 1042 | @media print { 1043 | /* Hide the cursor when printing */ 1044 | .CodeMirror div.CodeMirror-cursors { 1045 | visibility: hidden; 1046 | } 1047 | } 1048 | 1049 | /* See issue #2901 */ 1050 | .cm-tab-wrap-hack:after { content: ''; } 1051 | 1052 | /* Help users use markselection to safely style text background */ 1053 | span.CodeMirror-selectedtext { background: none; } 1054 | 1055 | .CodeMirror-dialog { 1056 | background: inherit; 1057 | color: inherit; 1058 | left: 0; right: 0; 1059 | overflow: hidden; 1060 | padding: .1em .8em; 1061 | position: absolute; 1062 | z-index: 15; 1063 | } 1064 | 1065 | .CodeMirror-dialog-top { 1066 | border-bottom: 1px solid #eee; 1067 | top: 0; 1068 | } 1069 | 1070 | .CodeMirror-dialog-bottom { 1071 | border-top: 1px solid #eee; 1072 | bottom: 0; 1073 | } 1074 | 1075 | .CodeMirror-dialog input { 1076 | background: transparent; 1077 | border: 1px solid #d3d6db; 1078 | color: inherit; 1079 | font-family: monospace; 1080 | outline: none; 1081 | width: 20em; 1082 | } 1083 | 1084 | .CodeMirror-dialog button { 1085 | font-size: 70%; 1086 | } 1087 | .graphiql-container .doc-explorer { 1088 | background: white; 1089 | } 1090 | 1091 | .graphiql-container .doc-explorer-title-bar, 1092 | .graphiql-container .history-title-bar { 1093 | cursor: default; 1094 | display: -webkit-box; 1095 | display: -ms-flexbox; 1096 | display: flex; 1097 | height: 34px; 1098 | line-height: 14px; 1099 | padding: 8px 8px 5px; 1100 | position: relative; 1101 | -webkit-user-select: none; 1102 | -moz-user-select: none; 1103 | -ms-user-select: none; 1104 | user-select: none; 1105 | } 1106 | 1107 | .graphiql-container .doc-explorer-title, 1108 | .graphiql-container .history-title { 1109 | -webkit-box-flex: 1; 1110 | -ms-flex: 1; 1111 | flex: 1; 1112 | font-weight: bold; 1113 | overflow-x: hidden; 1114 | padding: 10px 0 10px 10px; 1115 | text-align: center; 1116 | text-overflow: ellipsis; 1117 | -webkit-user-select: initial; 1118 | -moz-user-select: initial; 1119 | -ms-user-select: initial; 1120 | user-select: initial; 1121 | white-space: nowrap; 1122 | } 1123 | 1124 | .graphiql-container .doc-explorer-back { 1125 | color: #3B5998; 1126 | cursor: pointer; 1127 | margin: -7px 0 -6px -8px; 1128 | overflow-x: hidden; 1129 | padding: 17px 12px 16px 16px; 1130 | text-overflow: ellipsis; 1131 | white-space: nowrap; 1132 | } 1133 | 1134 | .doc-explorer-narrow .doc-explorer-back { 1135 | width: 0; 1136 | } 1137 | 1138 | .graphiql-container .doc-explorer-back:before { 1139 | border-left: 2px solid #3B5998; 1140 | border-top: 2px solid #3B5998; 1141 | content: ''; 1142 | display: inline-block; 1143 | height: 9px; 1144 | margin: 0 3px -1px 0; 1145 | position: relative; 1146 | -webkit-transform: rotate(-45deg); 1147 | transform: rotate(-45deg); 1148 | width: 9px; 1149 | } 1150 | 1151 | .graphiql-container .doc-explorer-rhs { 1152 | position: relative; 1153 | } 1154 | 1155 | .graphiql-container .doc-explorer-contents, 1156 | .graphiql-container .history-contents { 1157 | background-color: #ffffff; 1158 | border-top: 1px solid #d6d6d6; 1159 | bottom: 0; 1160 | left: 0; 1161 | overflow-y: auto; 1162 | padding: 20px 15px; 1163 | position: absolute; 1164 | right: 0; 1165 | top: 47px; 1166 | } 1167 | 1168 | .graphiql-container .doc-explorer-contents { 1169 | min-width: 300px; 1170 | } 1171 | 1172 | .graphiql-container .doc-type-description p:first-child , 1173 | .graphiql-container .doc-type-description blockquote:first-child { 1174 | margin-top: 0; 1175 | } 1176 | 1177 | .graphiql-container .doc-explorer-contents a { 1178 | cursor: pointer; 1179 | text-decoration: none; 1180 | } 1181 | 1182 | .graphiql-container .doc-explorer-contents a:hover { 1183 | text-decoration: underline; 1184 | } 1185 | 1186 | .graphiql-container .doc-value-description > :first-child { 1187 | margin-top: 4px; 1188 | } 1189 | 1190 | .graphiql-container .doc-value-description > :last-child { 1191 | margin-bottom: 4px; 1192 | } 1193 | 1194 | .graphiql-container .doc-category { 1195 | margin: 20px 0; 1196 | } 1197 | 1198 | .graphiql-container .doc-category-title { 1199 | border-bottom: 1px solid #e0e0e0; 1200 | color: #777; 1201 | cursor: default; 1202 | font-size: 14px; 1203 | font-variant: small-caps; 1204 | font-weight: bold; 1205 | letter-spacing: 1px; 1206 | margin: 0 -15px 10px 0; 1207 | padding: 10px 0; 1208 | -webkit-user-select: none; 1209 | -moz-user-select: none; 1210 | -ms-user-select: none; 1211 | user-select: none; 1212 | } 1213 | 1214 | .graphiql-container .doc-category-item { 1215 | margin: 12px 0; 1216 | color: #555; 1217 | } 1218 | 1219 | .graphiql-container .keyword { 1220 | color: #B11A04; 1221 | } 1222 | 1223 | .graphiql-container .type-name { 1224 | color: #CA9800; 1225 | } 1226 | 1227 | .graphiql-container .field-name { 1228 | color: #1F61A0; 1229 | } 1230 | 1231 | .graphiql-container .field-short-description { 1232 | color: #999; 1233 | margin-left: 5px; 1234 | overflow: hidden; 1235 | text-overflow: ellipsis; 1236 | } 1237 | 1238 | .graphiql-container .enum-value { 1239 | color: #0B7FC7; 1240 | } 1241 | 1242 | .graphiql-container .arg-name { 1243 | color: #8B2BB9; 1244 | } 1245 | 1246 | .graphiql-container .arg { 1247 | display: block; 1248 | margin-left: 1em; 1249 | } 1250 | 1251 | .graphiql-container .arg:first-child:last-child, 1252 | .graphiql-container .arg:first-child:nth-last-child(2), 1253 | .graphiql-container .arg:first-child:nth-last-child(2) ~ .arg { 1254 | display: inherit; 1255 | margin: inherit; 1256 | } 1257 | 1258 | .graphiql-container .arg:first-child:nth-last-child(2):after { 1259 | content: ', '; 1260 | } 1261 | 1262 | .graphiql-container .arg-default-value { 1263 | color: #43A047; 1264 | } 1265 | 1266 | .graphiql-container .doc-deprecation { 1267 | background: #fffae8; 1268 | -webkit-box-shadow: inset 0 0 1px #bfb063; 1269 | box-shadow: inset 0 0 1px #bfb063; 1270 | color: #867F70; 1271 | line-height: 16px; 1272 | margin: 8px -8px; 1273 | max-height: 80px; 1274 | overflow: hidden; 1275 | padding: 8px; 1276 | border-radius: 3px; 1277 | } 1278 | 1279 | .graphiql-container .doc-deprecation:before { 1280 | content: 'Deprecated:'; 1281 | color: #c79b2e; 1282 | cursor: default; 1283 | display: block; 1284 | font-size: 9px; 1285 | font-weight: bold; 1286 | letter-spacing: 1px; 1287 | line-height: 1; 1288 | padding-bottom: 5px; 1289 | text-transform: uppercase; 1290 | -webkit-user-select: none; 1291 | -moz-user-select: none; 1292 | -ms-user-select: none; 1293 | user-select: none; 1294 | } 1295 | 1296 | .graphiql-container .doc-deprecation > :first-child { 1297 | margin-top: 0; 1298 | } 1299 | 1300 | .graphiql-container .doc-deprecation > :last-child { 1301 | margin-bottom: 0; 1302 | } 1303 | 1304 | .graphiql-container .show-btn { 1305 | -webkit-appearance: initial; 1306 | display: block; 1307 | border-radius: 3px; 1308 | border: solid 1px #ccc; 1309 | text-align: center; 1310 | padding: 8px 12px 10px; 1311 | width: 100%; 1312 | -webkit-box-sizing: border-box; 1313 | box-sizing: border-box; 1314 | background: #fbfcfc; 1315 | color: #555; 1316 | cursor: pointer; 1317 | } 1318 | 1319 | .graphiql-container .search-box { 1320 | border-bottom: 1px solid #d3d6db; 1321 | display: block; 1322 | font-size: 14px; 1323 | margin: -15px -15px 12px 0; 1324 | position: relative; 1325 | } 1326 | 1327 | .graphiql-container .search-box:before { 1328 | content: '\26b2'; 1329 | cursor: pointer; 1330 | display: block; 1331 | font-size: 24px; 1332 | position: absolute; 1333 | top: -2px; 1334 | -webkit-transform: rotate(-45deg); 1335 | transform: rotate(-45deg); 1336 | -webkit-user-select: none; 1337 | -moz-user-select: none; 1338 | -ms-user-select: none; 1339 | user-select: none; 1340 | } 1341 | 1342 | .graphiql-container .search-box .search-box-clear { 1343 | background-color: #d0d0d0; 1344 | border-radius: 12px; 1345 | color: #fff; 1346 | cursor: pointer; 1347 | font-size: 11px; 1348 | padding: 1px 5px 2px; 1349 | position: absolute; 1350 | right: 3px; 1351 | top: 8px; 1352 | -webkit-user-select: none; 1353 | -moz-user-select: none; 1354 | -ms-user-select: none; 1355 | user-select: none; 1356 | } 1357 | 1358 | .graphiql-container .search-box .search-box-clear:hover { 1359 | background-color: #b9b9b9; 1360 | } 1361 | 1362 | .graphiql-container .search-box > input { 1363 | border: none; 1364 | -webkit-box-sizing: border-box; 1365 | box-sizing: border-box; 1366 | font-size: 14px; 1367 | outline: none; 1368 | padding: 6px 24px 8px 20px; 1369 | width: 100%; 1370 | } 1371 | 1372 | .graphiql-container .error-container { 1373 | font-weight: bold; 1374 | left: 0; 1375 | letter-spacing: 1px; 1376 | opacity: 0.5; 1377 | position: absolute; 1378 | right: 0; 1379 | text-align: center; 1380 | text-transform: uppercase; 1381 | top: 50%; 1382 | -webkit-transform: translate(0, -50%); 1383 | transform: translate(0, -50%); 1384 | } 1385 | .CodeMirror-foldmarker { 1386 | color: blue; 1387 | cursor: pointer; 1388 | font-family: arial; 1389 | line-height: .3; 1390 | text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; 1391 | } 1392 | .CodeMirror-foldgutter { 1393 | width: .7em; 1394 | } 1395 | .CodeMirror-foldgutter-open, 1396 | .CodeMirror-foldgutter-folded { 1397 | cursor: pointer; 1398 | } 1399 | .CodeMirror-foldgutter-open:after { 1400 | content: "\25BE"; 1401 | } 1402 | .CodeMirror-foldgutter-folded:after { 1403 | content: "\25B8"; 1404 | } 1405 | .graphiql-container .history-contents { 1406 | font-family: 'Consolas', 'Inconsolata', 'Droid Sans Mono', 'Monaco', monospace; 1407 | padding: 0; 1408 | } 1409 | 1410 | .graphiql-container .history-contents p { 1411 | font-size: 12px; 1412 | overflow: hidden; 1413 | text-overflow: ellipsis; 1414 | white-space: nowrap; 1415 | margin: 0; 1416 | padding: 8px; 1417 | border-bottom: 1px solid #e0e0e0; 1418 | } 1419 | 1420 | .graphiql-container .history-contents p:hover { 1421 | cursor: pointer; 1422 | } 1423 | .CodeMirror-info { 1424 | background: white; 1425 | border-radius: 2px; 1426 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45); 1427 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45); 1428 | -webkit-box-sizing: border-box; 1429 | box-sizing: border-box; 1430 | color: #555; 1431 | font-family: 1432 | system, 1433 | -apple-system, 1434 | 'San Francisco', 1435 | '.SFNSDisplay-Regular', 1436 | 'Segoe UI', 1437 | Segoe, 1438 | 'Segoe WP', 1439 | 'Helvetica Neue', 1440 | helvetica, 1441 | 'Lucida Grande', 1442 | arial, 1443 | sans-serif; 1444 | font-size: 13px; 1445 | line-height: 16px; 1446 | margin: 8px -8px; 1447 | max-width: 400px; 1448 | opacity: 0; 1449 | overflow: hidden; 1450 | padding: 8px 8px; 1451 | position: fixed; 1452 | -webkit-transition: opacity 0.15s; 1453 | transition: opacity 0.15s; 1454 | z-index: 50; 1455 | } 1456 | 1457 | .CodeMirror-info :first-child { 1458 | margin-top: 0; 1459 | } 1460 | 1461 | .CodeMirror-info :last-child { 1462 | margin-bottom: 0; 1463 | } 1464 | 1465 | .CodeMirror-info p { 1466 | margin: 1em 0; 1467 | } 1468 | 1469 | .CodeMirror-info .info-description { 1470 | color: #777; 1471 | line-height: 16px; 1472 | margin-top: 1em; 1473 | max-height: 80px; 1474 | overflow: hidden; 1475 | } 1476 | 1477 | .CodeMirror-info .info-deprecation { 1478 | background: #fffae8; 1479 | -webkit-box-shadow: inset 0 1px 1px -1px #bfb063; 1480 | box-shadow: inset 0 1px 1px -1px #bfb063; 1481 | color: #867F70; 1482 | line-height: 16px; 1483 | margin: -8px; 1484 | margin-top: 8px; 1485 | max-height: 80px; 1486 | overflow: hidden; 1487 | padding: 8px; 1488 | } 1489 | 1490 | .CodeMirror-info .info-deprecation-label { 1491 | color: #c79b2e; 1492 | cursor: default; 1493 | display: block; 1494 | font-size: 9px; 1495 | font-weight: bold; 1496 | letter-spacing: 1px; 1497 | line-height: 1; 1498 | padding-bottom: 5px; 1499 | text-transform: uppercase; 1500 | -webkit-user-select: none; 1501 | -moz-user-select: none; 1502 | -ms-user-select: none; 1503 | user-select: none; 1504 | } 1505 | 1506 | .CodeMirror-info .info-deprecation-label + * { 1507 | margin-top: 0; 1508 | } 1509 | 1510 | .CodeMirror-info a { 1511 | text-decoration: none; 1512 | } 1513 | 1514 | .CodeMirror-info a:hover { 1515 | text-decoration: underline; 1516 | } 1517 | 1518 | .CodeMirror-info .type-name { 1519 | color: #CA9800; 1520 | } 1521 | 1522 | .CodeMirror-info .field-name { 1523 | color: #1F61A0; 1524 | } 1525 | 1526 | .CodeMirror-info .enum-value { 1527 | color: #0B7FC7; 1528 | } 1529 | 1530 | .CodeMirror-info .arg-name { 1531 | color: #8B2BB9; 1532 | } 1533 | 1534 | .CodeMirror-info .directive-name { 1535 | color: #B33086; 1536 | } 1537 | .CodeMirror-jump-token { 1538 | text-decoration: underline; 1539 | cursor: pointer; 1540 | } 1541 | /* The lint marker gutter */ 1542 | .CodeMirror-lint-markers { 1543 | width: 16px; 1544 | } 1545 | 1546 | .CodeMirror-lint-tooltip { 1547 | background-color: infobackground; 1548 | border-radius: 4px 4px 4px 4px; 1549 | border: 1px solid black; 1550 | color: infotext; 1551 | font-family: monospace; 1552 | font-size: 10pt; 1553 | max-width: 600px; 1554 | opacity: 0; 1555 | overflow: hidden; 1556 | padding: 2px 5px; 1557 | position: fixed; 1558 | -webkit-transition: opacity .4s; 1559 | transition: opacity .4s; 1560 | white-space: pre-wrap; 1561 | z-index: 100; 1562 | } 1563 | 1564 | .CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning { 1565 | background-position: left bottom; 1566 | background-repeat: repeat-x; 1567 | } 1568 | 1569 | .CodeMirror-lint-mark-error { 1570 | background-image: 1571 | url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==") 1572 | ; 1573 | } 1574 | 1575 | .CodeMirror-lint-mark-warning { 1576 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII="); 1577 | } 1578 | 1579 | .CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning { 1580 | background-position: center center; 1581 | background-repeat: no-repeat; 1582 | cursor: pointer; 1583 | display: inline-block; 1584 | height: 16px; 1585 | position: relative; 1586 | vertical-align: middle; 1587 | width: 16px; 1588 | } 1589 | 1590 | .CodeMirror-lint-message-error, .CodeMirror-lint-message-warning { 1591 | background-position: top left; 1592 | background-repeat: no-repeat; 1593 | padding-left: 18px; 1594 | } 1595 | 1596 | .CodeMirror-lint-marker-error, .CodeMirror-lint-message-error { 1597 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII="); 1598 | } 1599 | 1600 | .CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning { 1601 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII="); 1602 | } 1603 | 1604 | .CodeMirror-lint-marker-multiple { 1605 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC"); 1606 | background-position: right bottom; 1607 | background-repeat: no-repeat; 1608 | width: 100%; height: 100%; 1609 | } 1610 | .graphiql-container .spinner-container { 1611 | height: 36px; 1612 | left: 50%; 1613 | position: absolute; 1614 | top: 50%; 1615 | -webkit-transform: translate(-50%, -50%); 1616 | transform: translate(-50%, -50%); 1617 | width: 36px; 1618 | z-index: 10; 1619 | } 1620 | 1621 | .graphiql-container .spinner { 1622 | -webkit-animation: rotation .6s infinite linear; 1623 | animation: rotation .6s infinite linear; 1624 | border-bottom: 6px solid rgba(150, 150, 150, .15); 1625 | border-left: 6px solid rgba(150, 150, 150, .15); 1626 | border-radius: 100%; 1627 | border-right: 6px solid rgba(150, 150, 150, .15); 1628 | border-top: 6px solid rgba(150, 150, 150, .8); 1629 | display: inline-block; 1630 | height: 24px; 1631 | position: absolute; 1632 | vertical-align: middle; 1633 | width: 24px; 1634 | } 1635 | 1636 | @-webkit-keyframes rotation { 1637 | from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 1638 | to { -webkit-transform: rotate(359deg); transform: rotate(359deg); } 1639 | } 1640 | 1641 | @keyframes rotation { 1642 | from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 1643 | to { -webkit-transform: rotate(359deg); transform: rotate(359deg); } 1644 | } 1645 | .CodeMirror-hints { 1646 | background: white; 1647 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45); 1648 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45); 1649 | font-family: 'Consolas', 'Inconsolata', 'Droid Sans Mono', 'Monaco', monospace; 1650 | font-size: 13px; 1651 | list-style: none; 1652 | margin-left: -6px; 1653 | margin: 0; 1654 | max-height: 14.5em; 1655 | overflow-y: auto; 1656 | overflow: hidden; 1657 | padding: 0; 1658 | position: absolute; 1659 | z-index: 10; 1660 | } 1661 | 1662 | .CodeMirror-hint { 1663 | border-top: solid 1px #f7f7f7; 1664 | color: #141823; 1665 | cursor: pointer; 1666 | margin: 0; 1667 | max-width: 300px; 1668 | overflow: hidden; 1669 | padding: 2px 6px; 1670 | white-space: pre; 1671 | } 1672 | 1673 | li.CodeMirror-hint-active { 1674 | background-color: #08f; 1675 | border-top-color: white; 1676 | color: white; 1677 | } 1678 | 1679 | .CodeMirror-hint-information { 1680 | border-top: solid 1px #c0c0c0; 1681 | max-width: 300px; 1682 | padding: 4px 6px; 1683 | position: relative; 1684 | z-index: 1; 1685 | } 1686 | 1687 | .CodeMirror-hint-information:first-child { 1688 | border-bottom: solid 1px #c0c0c0; 1689 | border-top: none; 1690 | margin-bottom: -1px; 1691 | } 1692 | 1693 | .CodeMirror-hint-deprecation { 1694 | background: #fffae8; 1695 | -webkit-box-shadow: inset 0 1px 1px -1px #bfb063; 1696 | box-shadow: inset 0 1px 1px -1px #bfb063; 1697 | color: #867F70; 1698 | font-family: 1699 | system, 1700 | -apple-system, 1701 | 'San Francisco', 1702 | '.SFNSDisplay-Regular', 1703 | 'Segoe UI', 1704 | Segoe, 1705 | 'Segoe WP', 1706 | 'Helvetica Neue', 1707 | helvetica, 1708 | 'Lucida Grande', 1709 | arial, 1710 | sans-serif; 1711 | font-size: 13px; 1712 | line-height: 16px; 1713 | margin-top: 4px; 1714 | max-height: 80px; 1715 | overflow: hidden; 1716 | padding: 6px; 1717 | } 1718 | 1719 | .CodeMirror-hint-deprecation .deprecation-label { 1720 | color: #c79b2e; 1721 | cursor: default; 1722 | display: block; 1723 | font-size: 9px; 1724 | font-weight: bold; 1725 | letter-spacing: 1px; 1726 | line-height: 1; 1727 | padding-bottom: 5px; 1728 | text-transform: uppercase; 1729 | -webkit-user-select: none; 1730 | -moz-user-select: none; 1731 | -ms-user-select: none; 1732 | user-select: none; 1733 | } 1734 | 1735 | .CodeMirror-hint-deprecation .deprecation-label + * { 1736 | margin-top: 0; 1737 | } 1738 | 1739 | .CodeMirror-hint-deprecation :last-child { 1740 | margin-bottom: 0; 1741 | } 1742 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | Example Custom-GraphiQL Install 2 | =============================== 3 | 4 | This example uses the version of Custom-GraphiQL found in the parent directory, rather 5 | than depending on npm, so that it is easier to test new changes. In order to use 6 | the compiled version of GraphiQL, first run build in the parent directory before 7 | installing and starting the example. 8 | 9 | 1. Run `npm install && npm run build` in the parent directory 10 | 2. Navigate to this directory (example) in Terminal 11 | 3. `npm install` 12 | 4. `npm start` 13 | 5. Open your browser to [http://localhost:8081/]() 14 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 23 | 24 | 31 | 32 | 33 | 34 | 35 | 36 | 41 | 42 | 43 | 44 | 45 | 46 |
Loading...
47 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "An example using GraphiQL", 3 | "scripts": { 4 | "start": "node server.js" 5 | }, 6 | "dependencies": { 7 | "express": "^4.13.3", 8 | "custom-graphiql": "../", 9 | "graphql": "^0.8.0" 10 | }, 11 | "optionalDependencies": { 12 | "react": "^15.0.1", 13 | "react-dom": "^15.0.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /example/server.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | const path = require('path'); 11 | const express = require('express'); 12 | 13 | const app = express(); 14 | 15 | app.use(express.static(__dirname)); 16 | app.use('/graphql', function (req, res) { 17 | res.sendFile(path.join(__dirname, 'index.html')); 18 | }); 19 | 20 | app.listen(8081, () => console.log('Started on http://localhost:8081/')); 21 | -------------------------------------------------------------------------------- /example/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | accepts@~1.3.5: 6 | version "1.3.5" 7 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" 8 | integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= 9 | dependencies: 10 | mime-types "~2.1.18" 11 | negotiator "0.6.1" 12 | 13 | argparse@^1.0.7: 14 | version "1.0.10" 15 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 16 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 17 | dependencies: 18 | sprintf-js "~1.0.2" 19 | 20 | array-flatten@1.1.1: 21 | version "1.1.1" 22 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 23 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 24 | 25 | asap@~2.0.3: 26 | version "2.0.6" 27 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 28 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= 29 | 30 | balanced-match@^1.0.0: 31 | version "1.0.0" 32 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 33 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 34 | 35 | body-parser@1.18.3: 36 | version "1.18.3" 37 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" 38 | integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= 39 | dependencies: 40 | bytes "3.0.0" 41 | content-type "~1.0.4" 42 | debug "2.6.9" 43 | depd "~1.1.2" 44 | http-errors "~1.6.3" 45 | iconv-lite "0.4.23" 46 | on-finished "~2.3.0" 47 | qs "6.5.2" 48 | raw-body "2.3.3" 49 | type-is "~1.6.16" 50 | 51 | brace-expansion@^1.1.7: 52 | version "1.1.11" 53 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 54 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 55 | dependencies: 56 | balanced-match "^1.0.0" 57 | concat-map "0.0.1" 58 | 59 | bytes@3.0.0: 60 | version "3.0.0" 61 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" 62 | integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= 63 | 64 | codemirror-graphql@^0.7.1: 65 | version "0.7.1" 66 | resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-0.7.1.tgz#64b995643d511b9aa8f85eeeb2feac7aeb4b94d4" 67 | integrity sha512-HtHXMJAn6iGJYpijkzi3IlqWIdGrB6V0RqJ607yffJTCKk/OgaNtdLOb8hZJyEtHfkw7PZDaKybMAVCi6ScWSQ== 68 | dependencies: 69 | graphql-language-service-interface "^1.3.2" 70 | graphql-language-service-parser "^1.2.2" 71 | 72 | codemirror@^5.26.0: 73 | version "5.42.2" 74 | resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.42.2.tgz#801ab715a7a7e1c7ed4162b78e9d8138b98de8f0" 75 | integrity sha512-Tkv6im39VuhduFMsDA3MlXcC/kKas3Z0PI1/8N88QvFQbtOeiiwnfFJE4juGyC8/a4sb1BSxQlzsil8XLQdxRw== 76 | 77 | concat-map@0.0.1: 78 | version "0.0.1" 79 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 80 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 81 | 82 | content-disposition@0.5.2: 83 | version "0.5.2" 84 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 85 | integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= 86 | 87 | content-type@~1.0.4: 88 | version "1.0.4" 89 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 90 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 91 | 92 | cookie-signature@1.0.6: 93 | version "1.0.6" 94 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 95 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 96 | 97 | cookie@0.3.1: 98 | version "0.3.1" 99 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 100 | integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= 101 | 102 | copy-to-clipboard@^3: 103 | version "3.0.8" 104 | resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.0.8.tgz#f4e82f4a8830dce4666b7eb8ded0c9bcc313aba9" 105 | integrity sha512-c3GdeY8qxCHGezVb1EFQfHYK/8NZRemgcTIzPq7PuxjHAf/raKibn2QdhHPb/y6q74PMgH6yizaDZlRmw6QyKw== 106 | dependencies: 107 | toggle-selection "^1.0.3" 108 | 109 | core-js@^1.0.0: 110 | version "1.2.7" 111 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" 112 | integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= 113 | 114 | create-react-class@^15.6.0: 115 | version "15.6.3" 116 | resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" 117 | integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== 118 | dependencies: 119 | fbjs "^0.8.9" 120 | loose-envify "^1.3.1" 121 | object-assign "^4.1.1" 122 | 123 | cross-fetch@2.2.2: 124 | version "2.2.2" 125 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" 126 | integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM= 127 | dependencies: 128 | node-fetch "2.1.2" 129 | whatwg-fetch "2.0.4" 130 | 131 | custom-graphiql@../: 132 | version "0.1.3" 133 | dependencies: 134 | graphiql "0.12.0" 135 | isomorphic-fetch "2.2.1" 136 | react-copy-to-clipboard "5.0.1" 137 | 138 | debug@2.6.9: 139 | version "2.6.9" 140 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 141 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 142 | dependencies: 143 | ms "2.0.0" 144 | 145 | depd@~1.1.2: 146 | version "1.1.2" 147 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 148 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 149 | 150 | destroy@~1.0.4: 151 | version "1.0.4" 152 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 153 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 154 | 155 | ee-first@1.1.1: 156 | version "1.1.1" 157 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 158 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 159 | 160 | encodeurl@~1.0.2: 161 | version "1.0.2" 162 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 163 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 164 | 165 | encoding@^0.1.11: 166 | version "0.1.12" 167 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" 168 | integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= 169 | dependencies: 170 | iconv-lite "~0.4.13" 171 | 172 | entities@~1.1.1: 173 | version "1.1.2" 174 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 175 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 176 | 177 | escape-html@~1.0.3: 178 | version "1.0.3" 179 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 180 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 181 | 182 | esprima@^4.0.0: 183 | version "4.0.1" 184 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 185 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 186 | 187 | etag@~1.8.1: 188 | version "1.8.1" 189 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 190 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 191 | 192 | express@^4.13.3: 193 | version "4.16.4" 194 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" 195 | integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== 196 | dependencies: 197 | accepts "~1.3.5" 198 | array-flatten "1.1.1" 199 | body-parser "1.18.3" 200 | content-disposition "0.5.2" 201 | content-type "~1.0.4" 202 | cookie "0.3.1" 203 | cookie-signature "1.0.6" 204 | debug "2.6.9" 205 | depd "~1.1.2" 206 | encodeurl "~1.0.2" 207 | escape-html "~1.0.3" 208 | etag "~1.8.1" 209 | finalhandler "1.1.1" 210 | fresh "0.5.2" 211 | merge-descriptors "1.0.1" 212 | methods "~1.1.2" 213 | on-finished "~2.3.0" 214 | parseurl "~1.3.2" 215 | path-to-regexp "0.1.7" 216 | proxy-addr "~2.0.4" 217 | qs "6.5.2" 218 | range-parser "~1.2.0" 219 | safe-buffer "5.1.2" 220 | send "0.16.2" 221 | serve-static "1.13.2" 222 | setprototypeof "1.1.0" 223 | statuses "~1.4.0" 224 | type-is "~1.6.16" 225 | utils-merge "1.0.1" 226 | vary "~1.1.2" 227 | 228 | fbjs@^0.8.9: 229 | version "0.8.17" 230 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" 231 | integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= 232 | dependencies: 233 | core-js "^1.0.0" 234 | isomorphic-fetch "^2.1.1" 235 | loose-envify "^1.0.0" 236 | object-assign "^4.1.0" 237 | promise "^7.1.1" 238 | setimmediate "^1.0.5" 239 | ua-parser-js "^0.7.18" 240 | 241 | finalhandler@1.1.1: 242 | version "1.1.1" 243 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" 244 | integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== 245 | dependencies: 246 | debug "2.6.9" 247 | encodeurl "~1.0.2" 248 | escape-html "~1.0.3" 249 | on-finished "~2.3.0" 250 | parseurl "~1.3.2" 251 | statuses "~1.4.0" 252 | unpipe "~1.0.0" 253 | 254 | forwarded@~0.1.2: 255 | version "0.1.2" 256 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 257 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 258 | 259 | fresh@0.5.2: 260 | version "0.5.2" 261 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 262 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 263 | 264 | graphiql@0.12.0: 265 | version "0.12.0" 266 | resolved "https://registry.yarnpkg.com/graphiql/-/graphiql-0.12.0.tgz#a035c93a6e3c18850c2f450c039747b2ea3eb953" 267 | integrity sha512-OM5dpcONLK1B2prez2WVTfohQlQKe4Fwv1YwNQYQhN+fFGEW87D5v5fN2M8ZebzxbZHqP12KkHicO3sv8k30TQ== 268 | dependencies: 269 | codemirror "^5.26.0" 270 | codemirror-graphql "^0.7.1" 271 | markdown-it "^8.4.0" 272 | 273 | graphql-config@2.0.1: 274 | version "2.0.1" 275 | resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.0.1.tgz#d34a9bdf1d7360af7b01db9b20260a342ddc7390" 276 | integrity sha512-eb4FzlODifHE/Q+91QptAmkGw39wL5ToinJ2556UUsGt2drPc4tzifL+HSnHSaxiIbH8EUhc/Fa6+neinF04qA== 277 | dependencies: 278 | graphql-import "^0.4.4" 279 | graphql-request "^1.5.0" 280 | js-yaml "^3.10.0" 281 | lodash "^4.17.4" 282 | minimatch "^3.0.4" 283 | 284 | graphql-import@^0.4.4: 285 | version "0.4.5" 286 | resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.4.5.tgz#e2f18c28d335733f46df8e0733d8deb1c6e2a645" 287 | integrity sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ== 288 | dependencies: 289 | lodash "^4.17.4" 290 | 291 | graphql-language-service-interface@^1.3.2: 292 | version "1.3.2" 293 | resolved "https://registry.yarnpkg.com/graphql-language-service-interface/-/graphql-language-service-interface-1.3.2.tgz#4bd5d49e23766c3d2ab65d110f26f10e321cc000" 294 | integrity sha512-sOxFV5sBSnYtKIFHtlmAHHVdhok7CRbvCPLcuHvL4Q1RSgKRsPpeHUDKU+yCbmlonOKn/RWEKaYWrUY0Sgv70A== 295 | dependencies: 296 | graphql-config "2.0.1" 297 | graphql-language-service-parser "^1.2.2" 298 | graphql-language-service-types "^1.2.2" 299 | graphql-language-service-utils "^1.2.2" 300 | 301 | graphql-language-service-parser@^1.2.2: 302 | version "1.2.2" 303 | resolved "https://registry.yarnpkg.com/graphql-language-service-parser/-/graphql-language-service-parser-1.2.2.tgz#010c8a5fdfae4726c8e15714137eee822753d3ea" 304 | integrity sha512-38zMqJibNKeQe3GheyJtBENoXMp+qc29smiiRQtHLZcwnQfsYtu6reJZKxxwzU7XOVh3SedNH15Gf3LjWJVkiQ== 305 | dependencies: 306 | graphql-config "2.0.1" 307 | graphql-language-service-types "^1.2.2" 308 | 309 | graphql-language-service-types@^1.2.2: 310 | version "1.2.2" 311 | resolved "https://registry.yarnpkg.com/graphql-language-service-types/-/graphql-language-service-types-1.2.2.tgz#078e0abc7936a593968c946a039502af136a9743" 312 | integrity sha512-WEAYYCP4jSzbz/Mw0Klc7HHMgtUHLgtaPMV6zyMMmvefCg/yBUkv7wREXKmqF1k1u9+f5ZX3dki0BMaXiwmJug== 313 | dependencies: 314 | graphql-config "2.0.1" 315 | 316 | graphql-language-service-utils@^1.2.2: 317 | version "1.2.2" 318 | resolved "https://registry.yarnpkg.com/graphql-language-service-utils/-/graphql-language-service-utils-1.2.2.tgz#d31d4b4288085bd31d1bb8efc35790d69e496cae" 319 | integrity sha512-98hzn1Dg3sSAiB+TuvNwWAoBrzuHs8NylkTK26TFyBjozM5wBZttp+T08OvOt+9hCFYRa43yRPrWcrs78KH9Hw== 320 | dependencies: 321 | graphql-config "2.0.1" 322 | graphql-language-service-types "^1.2.2" 323 | 324 | graphql-request@^1.5.0: 325 | version "1.8.2" 326 | resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" 327 | integrity sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg== 328 | dependencies: 329 | cross-fetch "2.2.2" 330 | 331 | graphql@^0.8.0: 332 | version "0.8.2" 333 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.8.2.tgz#eb1bb524b38104bbf2c9157f9abc67db2feba7d2" 334 | integrity sha1-6xu1JLOBBLvyyRV/mrxn2y/rp9I= 335 | dependencies: 336 | iterall "1.0.2" 337 | 338 | http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: 339 | version "1.6.3" 340 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" 341 | integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= 342 | dependencies: 343 | depd "~1.1.2" 344 | inherits "2.0.3" 345 | setprototypeof "1.1.0" 346 | statuses ">= 1.4.0 < 2" 347 | 348 | iconv-lite@0.4.23: 349 | version "0.4.23" 350 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" 351 | integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== 352 | dependencies: 353 | safer-buffer ">= 2.1.2 < 3" 354 | 355 | iconv-lite@~0.4.13: 356 | version "0.4.24" 357 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 358 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 359 | dependencies: 360 | safer-buffer ">= 2.1.2 < 3" 361 | 362 | inherits@2.0.3: 363 | version "2.0.3" 364 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 365 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 366 | 367 | ipaddr.js@1.8.0: 368 | version "1.8.0" 369 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" 370 | integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= 371 | 372 | is-stream@^1.0.1: 373 | version "1.1.0" 374 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 375 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 376 | 377 | isomorphic-fetch@2.2.1, isomorphic-fetch@^2.1.1: 378 | version "2.2.1" 379 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" 380 | integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= 381 | dependencies: 382 | node-fetch "^1.0.1" 383 | whatwg-fetch ">=0.10.0" 384 | 385 | iterall@1.0.2: 386 | version "1.0.2" 387 | resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.0.2.tgz#41a2e96ce9eda5e61c767ee5dc312373bb046e91" 388 | integrity sha1-QaLpbOntpeYcdn7l3DEjc7sEbpE= 389 | 390 | "js-tokens@^3.0.0 || ^4.0.0": 391 | version "4.0.0" 392 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 393 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 394 | 395 | js-yaml@^3.10.0: 396 | version "3.12.1" 397 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" 398 | integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== 399 | dependencies: 400 | argparse "^1.0.7" 401 | esprima "^4.0.0" 402 | 403 | linkify-it@^2.0.0: 404 | version "2.1.0" 405 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" 406 | integrity sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg== 407 | dependencies: 408 | uc.micro "^1.0.1" 409 | 410 | lodash@^4.17.4: 411 | version "4.17.11" 412 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 413 | integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== 414 | 415 | loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: 416 | version "1.4.0" 417 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 418 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 419 | dependencies: 420 | js-tokens "^3.0.0 || ^4.0.0" 421 | 422 | markdown-it@^8.4.0: 423 | version "8.4.2" 424 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" 425 | integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== 426 | dependencies: 427 | argparse "^1.0.7" 428 | entities "~1.1.1" 429 | linkify-it "^2.0.0" 430 | mdurl "^1.0.1" 431 | uc.micro "^1.0.5" 432 | 433 | mdurl@^1.0.1: 434 | version "1.0.1" 435 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 436 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= 437 | 438 | media-typer@0.3.0: 439 | version "0.3.0" 440 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 441 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 442 | 443 | merge-descriptors@1.0.1: 444 | version "1.0.1" 445 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 446 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 447 | 448 | methods@~1.1.2: 449 | version "1.1.2" 450 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 451 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 452 | 453 | mime-db@~1.37.0: 454 | version "1.37.0" 455 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" 456 | integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== 457 | 458 | mime-types@~2.1.18: 459 | version "2.1.21" 460 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" 461 | integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== 462 | dependencies: 463 | mime-db "~1.37.0" 464 | 465 | mime@1.4.1: 466 | version "1.4.1" 467 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" 468 | integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== 469 | 470 | minimatch@^3.0.4: 471 | version "3.0.4" 472 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 473 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 474 | dependencies: 475 | brace-expansion "^1.1.7" 476 | 477 | ms@2.0.0: 478 | version "2.0.0" 479 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 480 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 481 | 482 | negotiator@0.6.1: 483 | version "0.6.1" 484 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 485 | integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= 486 | 487 | node-fetch@2.1.2: 488 | version "2.1.2" 489 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" 490 | integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= 491 | 492 | node-fetch@^1.0.1: 493 | version "1.7.3" 494 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 495 | integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== 496 | dependencies: 497 | encoding "^0.1.11" 498 | is-stream "^1.0.1" 499 | 500 | object-assign@^4.1.0, object-assign@^4.1.1: 501 | version "4.1.1" 502 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 503 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 504 | 505 | on-finished@~2.3.0: 506 | version "2.3.0" 507 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 508 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 509 | dependencies: 510 | ee-first "1.1.1" 511 | 512 | parseurl@~1.3.2: 513 | version "1.3.2" 514 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" 515 | integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= 516 | 517 | path-to-regexp@0.1.7: 518 | version "0.1.7" 519 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 520 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 521 | 522 | promise@^7.1.1: 523 | version "7.3.1" 524 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 525 | integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== 526 | dependencies: 527 | asap "~2.0.3" 528 | 529 | prop-types@^15.5.10, prop-types@^15.5.8: 530 | version "15.6.2" 531 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" 532 | integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== 533 | dependencies: 534 | loose-envify "^1.3.1" 535 | object-assign "^4.1.1" 536 | 537 | proxy-addr@~2.0.4: 538 | version "2.0.4" 539 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" 540 | integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== 541 | dependencies: 542 | forwarded "~0.1.2" 543 | ipaddr.js "1.8.0" 544 | 545 | qs@6.5.2: 546 | version "6.5.2" 547 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 548 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 549 | 550 | range-parser@~1.2.0: 551 | version "1.2.0" 552 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 553 | integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= 554 | 555 | raw-body@2.3.3: 556 | version "2.3.3" 557 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" 558 | integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== 559 | dependencies: 560 | bytes "3.0.0" 561 | http-errors "1.6.3" 562 | iconv-lite "0.4.23" 563 | unpipe "1.0.0" 564 | 565 | react-copy-to-clipboard@5.0.1: 566 | version "5.0.1" 567 | resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz#8eae107bb400be73132ed3b6a7b4fb156090208e" 568 | integrity sha512-ELKq31/E3zjFs5rDWNCfFL4NvNFQvGRoJdAKReD/rUPA+xxiLPQmZBZBvy2vgH7V0GE9isIQpT9WXbwIVErYdA== 569 | dependencies: 570 | copy-to-clipboard "^3" 571 | prop-types "^15.5.8" 572 | 573 | react-dom@^15.0.1: 574 | version "15.6.2" 575 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730" 576 | integrity sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA= 577 | dependencies: 578 | fbjs "^0.8.9" 579 | loose-envify "^1.1.0" 580 | object-assign "^4.1.0" 581 | prop-types "^15.5.10" 582 | 583 | react@^15.0.1: 584 | version "15.6.2" 585 | resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" 586 | integrity sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI= 587 | dependencies: 588 | create-react-class "^15.6.0" 589 | fbjs "^0.8.9" 590 | loose-envify "^1.1.0" 591 | object-assign "^4.1.0" 592 | prop-types "^15.5.10" 593 | 594 | safe-buffer@5.1.2: 595 | version "5.1.2" 596 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 597 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 598 | 599 | "safer-buffer@>= 2.1.2 < 3": 600 | version "2.1.2" 601 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 602 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 603 | 604 | send@0.16.2: 605 | version "0.16.2" 606 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" 607 | integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== 608 | dependencies: 609 | debug "2.6.9" 610 | depd "~1.1.2" 611 | destroy "~1.0.4" 612 | encodeurl "~1.0.2" 613 | escape-html "~1.0.3" 614 | etag "~1.8.1" 615 | fresh "0.5.2" 616 | http-errors "~1.6.2" 617 | mime "1.4.1" 618 | ms "2.0.0" 619 | on-finished "~2.3.0" 620 | range-parser "~1.2.0" 621 | statuses "~1.4.0" 622 | 623 | serve-static@1.13.2: 624 | version "1.13.2" 625 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" 626 | integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== 627 | dependencies: 628 | encodeurl "~1.0.2" 629 | escape-html "~1.0.3" 630 | parseurl "~1.3.2" 631 | send "0.16.2" 632 | 633 | setimmediate@^1.0.5: 634 | version "1.0.5" 635 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 636 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 637 | 638 | setprototypeof@1.1.0: 639 | version "1.1.0" 640 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" 641 | integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== 642 | 643 | sprintf-js@~1.0.2: 644 | version "1.0.3" 645 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 646 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 647 | 648 | "statuses@>= 1.4.0 < 2": 649 | version "1.5.0" 650 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 651 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 652 | 653 | statuses@~1.4.0: 654 | version "1.4.0" 655 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" 656 | integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== 657 | 658 | toggle-selection@^1.0.3: 659 | version "1.0.6" 660 | resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" 661 | integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= 662 | 663 | type-is@~1.6.16: 664 | version "1.6.16" 665 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" 666 | integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== 667 | dependencies: 668 | media-typer "0.3.0" 669 | mime-types "~2.1.18" 670 | 671 | ua-parser-js@^0.7.18: 672 | version "0.7.19" 673 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" 674 | integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== 675 | 676 | uc.micro@^1.0.1, uc.micro@^1.0.5: 677 | version "1.0.5" 678 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" 679 | integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== 680 | 681 | unpipe@1.0.0, unpipe@~1.0.0: 682 | version "1.0.0" 683 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 684 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 685 | 686 | utils-merge@1.0.1: 687 | version "1.0.1" 688 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 689 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 690 | 691 | vary@~1.1.2: 692 | version "1.1.2" 693 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 694 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 695 | 696 | whatwg-fetch@2.0.4: 697 | version "2.0.4" 698 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" 699 | integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== 700 | 701 | whatwg-fetch@>=0.10.0: 702 | version "3.0.0" 703 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" 704 | integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== 705 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-graphiql", 3 | "version": "0.2.0", 4 | "description": "GraphiQL IDE with extra option for creating stub mutation and save queries to localStorage", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "build": ". ./resources/build.sh", 8 | "lint": "eslint src", 9 | "dev": "webpack-dev-server --config server/webpack.config.js --color --progress", 10 | "prepublish": ". ./resources/prepublish.sh", 11 | "preversion": ". ./resources/checkgit.sh", 12 | "update-website": ". ./resources/updateWebsite.sh" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/shahankit/custom-graphiql.git" 17 | }, 18 | "keywords": [ 19 | "graphql", 20 | "graphiql", 21 | "react", 22 | "ide", 23 | "server", 24 | "custom" 25 | ], 26 | "author": "Ankit Shah (http://github.com/shahankit)", 27 | "license": "MIT", 28 | "bugs": { 29 | "url": "https://github.com/shahankit/custom-graphiql/issues" 30 | }, 31 | "homepage": "https://github.com/shahankit/custom-graphiql#readme", 32 | "files": [ 33 | "dist", 34 | "custom-graphiql.js", 35 | "custom-graphiql.min.js", 36 | "custom-graphiql.css", 37 | "README.md", 38 | "LICENSE" 39 | ], 40 | "browserify-shim": { 41 | "react": "global:React", 42 | "react-dom": "global:ReactDOM" 43 | }, 44 | "dependencies": { 45 | "graphiql": "0.12.0", 46 | "isomorphic-fetch": "2.2.1", 47 | "react-copy-to-clipboard": "5.0.1" 48 | }, 49 | "peerDependencies": { 50 | "graphql": "^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0", 51 | "prop-types": ">=15.5.0", 52 | "react": "^15.6.0 || ^16.0.0", 53 | "react-dom": "^15.6.0 || ^16.0.0" 54 | }, 55 | "devDependencies": { 56 | "@babel/cli": "7.2.3", 57 | "@babel/core": "7.1.6", 58 | "@babel/plugin-proposal-class-properties": "7.2.3", 59 | "@babel/preset-env": "7.2.3", 60 | "@babel/preset-react": "7.0.0", 61 | "babel-eslint": "10.0.1", 62 | "babel-loader": "8.0.4", 63 | "browserify": "16.2.3", 64 | "browserify-shim": "3.8.14", 65 | "css-loader": "2.1.0", 66 | "eslint": "5.12.1", 67 | "eslint-config-prettier": "3.5.0", 68 | "eslint-plugin-babel": "5.3.0", 69 | "eslint-plugin-react": "7.12.4", 70 | "express": "4.16.4", 71 | "graphql": "0.13.2", 72 | "html-webpack-plugin": "3.2.0", 73 | "react": "16.7.0", 74 | "react-dom": "16.7.0", 75 | "remove-flow-types-loader": "1.1.0", 76 | "style-loader": "0.23.1", 77 | "uglify-js": "3.4.9", 78 | "uglifyify": "5.0.1", 79 | "webpack": "4.19.1", 80 | "webpack-cli": "3.2.1", 81 | "webpack-dev-server": "3.1.14" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /resources/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | if [ ! -d "node_modules/.bin" ]; then 6 | echo "Be sure to run \`npm install\` before building CustomGraphiQL." 7 | exit 1 8 | fi 9 | 10 | rm -rf dist/ && mkdir -p dist/ 11 | BABEL_ENV=production babel src --ignore __tests__ --out-dir dist/ 12 | echo "Bundling custom-graphiql.js..." 13 | browserify -g browserify-shim -s CustomGraphiQL dist/index.js > custom-graphiql.js 14 | echo "Bundling custom-graphiql.min.js..." 15 | browserify -g browserify-shim -g uglifyify -s CustomGraphiQL dist/index.js 2> /dev/null | uglifyjs -c > custom-graphiql.min.js 2> /dev/null 16 | echo "Bundling custom-graphiql.css..." 17 | cat css/*.css > custom-graphiql.css 18 | echo "Done" 19 | -------------------------------------------------------------------------------- /resources/cgraphiql.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shahankit/custom-graphiql/6096d0fb1a8c0575d315f0ca0a2a3872c02a152c/resources/cgraphiql.gif -------------------------------------------------------------------------------- /resources/cgraphiql2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shahankit/custom-graphiql/6096d0fb1a8c0575d315f0ca0a2a3872c02a152c/resources/cgraphiql2.png -------------------------------------------------------------------------------- /resources/checkgit.sh: -------------------------------------------------------------------------------- 1 | # 2 | # This script determines if current git state is the up to date master. If so 3 | # it exits normally. If not it prompts for an explicit continue. This script 4 | # intends to protect from versioning for NPM without first pushing changes 5 | # and including any changes on master. 6 | # 7 | 8 | # First fetch to ensure git is up to date. Fail-fast if this fails. 9 | git fetch; 10 | if [[ $? -ne 0 ]]; then exit 1; fi; 11 | 12 | # Extract useful information. 13 | GITBRANCH=$(git branch -v 2> /dev/null | sed '/^[^*]/d'); 14 | GITBRANCHNAME=$(echo "$GITBRANCH" | sed 's/* \([A-Za-z0-9_\-]*\).*/\1/'); 15 | GITBRANCHSYNC=$(echo "$GITBRANCH" | sed 's/* [^[]*.\([^]]*\).*/\1/'); 16 | 17 | # Check if master is checked out 18 | if [ "$GITBRANCHNAME" != "master" ]; then 19 | read -p "Git not on master but $GITBRANCHNAME. Continue? (y|N) " yn; 20 | if [ "$yn" != "y" ]; then exit 1; fi; 21 | fi; 22 | 23 | # Check if branch is synced with remote 24 | if [ "$GITBRANCHSYNC" != "" ]; then 25 | read -p "Git not up to date but $GITBRANCHSYNC. Continue? (y|N) " yn; 26 | if [ "$yn" != "y" ]; then exit 1; fi; 27 | fi; 28 | -------------------------------------------------------------------------------- /resources/prepublish.sh: -------------------------------------------------------------------------------- 1 | # Because of a long-running npm issue (https://github.com/npm/npm/issues/3059) 2 | # prepublish runs after `npm install` and `npm pack`. 3 | # In order to only run prepublish before `npm publish`, we have to check argv. 4 | if node -e "process.exit(($npm_config_argv).original[0].indexOf('pu') === 0)"; then 5 | exit 0; 6 | fi 7 | 8 | npm run build; 9 | -------------------------------------------------------------------------------- /resources/updateWebsite.sh: -------------------------------------------------------------------------------- 1 | yarn build 2 | 3 | mkdir -p ./website/js 4 | mkdir -p ./website/css 5 | 6 | cp ./custom-graphiql.js ./custom-graphiql.min.js ./website/js/ 7 | cp ./custom-graphiql.css ./website/css/ 8 | -------------------------------------------------------------------------------- /server/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import CustomGraphiQL from '../src/index'; 4 | 5 | const rootElement = document.getElementById('root'); 6 | 7 | ReactDOM.render( 8 | , 9 | rootElement 10 | ); 11 | -------------------------------------------------------------------------------- /server/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | Sample App 12 | 26 | 27 | 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /server/paths.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const fs = require('fs'); 3 | 4 | // Make sure any symlinks in the project folder are resolved: 5 | // https://github.com/facebookincubator/create-react-app/issues/637 6 | const appDirectory = fs.realpathSync(process.cwd()); 7 | function resolveApp(relativePath) { 8 | return path.resolve(appDirectory, relativePath); 9 | } 10 | 11 | module.exports = { 12 | appIndexJs: resolveApp('src/index.js'), 13 | appPackageJson: resolveApp('package.json'), 14 | appSrc: resolveApp('src'), 15 | appNodeModules: resolveApp('node_modules'), 16 | appContainerJs: resolveApp('server/app.js'), 17 | appCss: resolveApp('css'), 18 | appDist: resolveApp('dist'), 19 | appHtml: resolveApp('server/index.html'), 20 | }; 21 | -------------------------------------------------------------------------------- /server/webpack.config.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const paths = require('./paths'); 3 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 4 | 5 | const publicPath = '/' 6 | 7 | module.exports = { 8 | mode: 'development', 9 | entry: [ 10 | paths.appContainerJs 11 | ], 12 | devtool: 'cheap-module-source-map', 13 | output: { 14 | filename: 'bundle.js', 15 | publicPath: publicPath, 16 | }, 17 | module: { 18 | rules: [ 19 | { 20 | test: /\.js.flow$/, // assuming the files are named .js.flow 21 | enforce: 'pre', 22 | use: ['remove-flow-types-loader'] 23 | }, 24 | { 25 | test: /\.(js|mjs|jsx|ts|tsx)$/, 26 | enforce: 'pre', 27 | use: [ 28 | require.resolve('babel-loader') 29 | ], 30 | include: [ 31 | paths.appSrc, 32 | paths.appContainerJs 33 | ] 34 | }, 35 | // Avoid "require is not defined" errors 36 | // (found in graphql@0.13.2) 37 | { 38 | test: /\.mjs$/, 39 | include: /node_modules/, 40 | type: "javascript/auto", 41 | }, 42 | { 43 | test: /\.css$/, 44 | loader: 'style-loader!css-loader' 45 | } 46 | ] 47 | }, 48 | plugins: [ 49 | // Generates an `index.html` file with the 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
Loading...
44 | 54 | 55 | 56 | --------------------------------------------------------------------------------