From 338da570ad2003dc8381922c01a314fb6eeab330 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Tue, 30 Apr 2019 14:01:08 -0400 Subject: [PATCH 01/40] "schema-up" action to automatically update the GraphQL schema --- actions/schema-up/Dockerfile | 18 + actions/schema-up/README.md | 3 + actions/schema-up/fetch-schema.js | 122 + actions/schema-up/index.js | 99 + actions/schema-up/package-lock.json | 6250 +++++++++++++++++++++++++++ actions/schema-up/package.json | 14 + 6 files changed, 6506 insertions(+) create mode 100644 actions/schema-up/Dockerfile create mode 100644 actions/schema-up/README.md create mode 100644 actions/schema-up/fetch-schema.js create mode 100644 actions/schema-up/index.js create mode 100644 actions/schema-up/package-lock.json create mode 100644 actions/schema-up/package.json diff --git a/actions/schema-up/Dockerfile b/actions/schema-up/Dockerfile new file mode 100644 index 0000000000..75c4d49ee4 --- /dev/null +++ b/actions/schema-up/Dockerfile @@ -0,0 +1,18 @@ +FROM node:8-slim + +LABEL "com.github.actions.name"="schema-up" +LABEL "com.github.actions.description"="Update GraphQL schema and adjust Relay files" +LABEL "com.github.actions.icon"="arrow-up-right" +LABEL "com.github.actions.color"="blue" + +# Copy the package.json and package-lock.json +COPY package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy the rest of your action's code +COPY * . + +# Run `node /index.js` +ENTRYPOINT ["node", "/index.js"] diff --git a/actions/schema-up/README.md b/actions/schema-up/README.md new file mode 100644 index 0000000000..7e6ea7d390 --- /dev/null +++ b/actions/schema-up/README.md @@ -0,0 +1,3 @@ +# actions/schema-up + +Fetch the latest GraphQL schema changes from github.com. Commit and push the schema change directly to the `master` branch if no further changes are made. Otherwise, open a pull request with the ["schema update" label](https://github.com/atom/github/labels/schema%20update) applied, as long as no such pull request already exists. diff --git a/actions/schema-up/fetch-schema.js b/actions/schema-up/fetch-schema.js new file mode 100644 index 0000000000..1ee75c5536 --- /dev/null +++ b/actions/schema-up/fetch-schema.js @@ -0,0 +1,122 @@ +const fs = require('fs'); +const path = require('path'); +const fetch = require('node-fetch'); + +const {buildClientSchema, printSchema} = require('graphql/utilities'); +const SERVER = 'https://api.github.com/graphql'; +const introspectionQuery = ` + query IntrospectionQuery { + __schema { + queryType { name } + mutationType { name } + subscriptionType { name } + types { + ...FullType + } + directives { + name + description + locations + args { + ...InputValue + } + } + } + } + fragment FullType on __Type { + kind + name + description + fields(includeDeprecated: false) { + name + description + args { + ...InputValue + } + type { + ...TypeRef + } + isDeprecated + deprecationReason + } + inputFields { + ...InputValue + } + interfaces { + ...TypeRef + } + enumValues(includeDeprecated: false) { + name + description + isDeprecated + deprecationReason + } + possibleTypes { + ...TypeRef + } + } + fragment InputValue on __InputValue { + name + description + type { ...TypeRef } + defaultValue + } + fragment TypeRef on __Type { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + } + } + } + } + } + } + } + } +`; + +module.exports = async function() { + const token = process.env.GITHUB_TOKEN; + if (!token) { + throw new Error('You must specify a GitHub auth token in GITHUB_TOKEN'); + } + + const schemaPath = path.resolve(process.env.GITHUB_WORKSPACE, 'graphql', 'schema.graphql'); + + const res = await fetch(SERVER, { + method: 'POST', + headers: { + 'Accept': 'application/vnd.github.antiope-preview+json', + 'Content-Type': 'application/json', + 'Authorization': 'bearer ' + token, + }, + body: JSON.stringify({query: introspectionQuery}), + }); + const schemaJSON = await res.json(); + const graphQLSchema = buildClientSchema(schemaJSON.data); + await new Promise((resolve, reject) => { + fs.writeFile(schemaPath, printSchema(graphQLSchema), {encoding: 'utf8'}, err => { + if (err) { reject(err); } else { resolve(); } + }); + }); +}; diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js new file mode 100644 index 0000000000..bef74d9e42 --- /dev/null +++ b/actions/schema-up/index.js @@ -0,0 +1,99 @@ +const path = require('path'); + +const {Toolkit} = require('actions-toolkit'); +const fetchSchema = require('./fetch-schema'); + +Toolkit.run(async tools => { + tools.log.info('Fetching the latest GraphQL schema changes.'); + await fetchSchema(); + + const {exitCode: hasSchemaChanges} = await tools.runInWorkspace( + 'git', ['diff', '--quiet', '--', 'graphql/schema.graphql'], + {reject: false}, + ); + if (hasSchemaChanges === 0) { + tools.log.info('No schema changes to fetch.'); + tools.exit.neutral('Nothing to do.'); + } + + tools.log.info('Committing schema changes.'); + await tools.runInWorkspace('git', ['commit', '--all', '--message=":arrow_up: GraphQL schema"']); + + tools.log.info('Re-running relay compiler.'); + await tools.runInWorkspace( + path.resolve(__dirname, 'node_modules', '.bin', 'relay-compiler'), + ['--src', './lib', '--schema', 'graphql/schema.graphql'], + ); + + const {exitCode: hasRelayChanges} = await tools.runInWorkspace( + 'git', ['diff', '--quiet', '--', '**/__generated__/*.graphql.js'], + {reject: false}, + ); + if (hasRelayChanges === 0) { + tools.log.info('Generated relay files are unchanged.'); + await tools.runInWorkspace('git', ['push']); + tools.exit.success('Schema is up to date on master.'); + } + + tools.log.info('Checking for unmerged schema update pull requests.'); + const {data: openSchemaUpdatePRs} = await tools.github.graphql(` + query OpenPullRequests($owner: String!, $repo: String!) { + repository(owner: $owner, name: repo) { + pullRequests(first: 1, states: [OPEN], labels: ["schema update"]) { + totalCount + } + } + } + `, {...tools.context.repo}); + + if (openSchemaUpdatePRs.repository.pullRequests.totalCount > 0) { + tools.exit.failure('One or more schema update pull requests are already open. Please resolve those first.'); + } + + const branchName = `schema-update/${Date.now()}`; + tools.log.info(`Commiting relay-compiler changes to a new branch ${branchName}.`); + await tools.runInWorkspace('git', ['checkout', '-b', branchName]); + await tools.runInWorkspace('git', ['commit', '--all', '--message=":gear: relay-compiler changes"']); + await tools.runInWorkspace('git', ['push', 'origin', branchName]); + + tools.log.info('Creating a pull request.'); + + const body = `:robot: _This automated pull request brought to you by a GitHub action_ :robot: + +The GraphQL schema has been automatically updated and relay-compiler has been re-run on the package source. This +pull request will be automatically merged if all status checks are :white_check_mark:.`; + + const {data: createPR} = await tools.github.graphql(` + mutation CreatePullRequest($owner: String!, $repo: String!, $body: String!, $headRefName: String!) { + createPullRequest(input: { + title: "GraphQL schema update" + body: $body + headRefName: $headRefName + }) { + pullRequest { + id + number + } + } + } + `, {...tools.context.repo, body, headRefName: branchName}); + + const createdPullRequest = createPR.createPullRequest.pullRequest; + tools.log.info( + `Pull request #${createdPullRequest.number} has been opened with the changes from this schema upgrade.`); + + await tools.github.graphql(` + mutation LabelPullRequest($id: ID!, $labelIDs: [ID!]!) { + addLabelsToLabelable(input: { + labelableId: $id, + labelIds: [] + }) { + labelable { + id + } + } + } + `, {id: createdPullRequest.id, labelIDs: ['MDU6TGFiZWwxMzQyMzM1MjQ2']}); +}, { + secrets: ['GITHUB_TOKEN'], +}); diff --git a/actions/schema-up/package-lock.json b/actions/schema-up/package-lock.json new file mode 100644 index 0000000000..da264ce9e3 --- /dev/null +++ b/actions/schema-up/package-lock.json @@ -0,0 +1,6250 @@ +{ + "name": "schema-up", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz", + "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "requires": { + "@babel/types": "^7.4.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", + "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "requires": { + "@babel/types": "^7.3.0", + "esutils": "^2.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz", + "integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4" + } + }, + "@babel/helper-define-map": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", + "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", + "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + }, + "@babel/helper-replace-supers": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", + "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helpers": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "dev": true, + "requires": { + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==" + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz", + "integrity": "sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", + "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz", + "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", + "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", + "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", + "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", + "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz", + "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", + "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", + "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", + "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/polyfill": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/runtime": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz", + "integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@jest/console": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "dev": true, + "requires": { + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.7.1.tgz", + "integrity": "sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.7.0", + "jest-config": "^24.7.1", + "jest-haste-map": "^24.7.1", + "jest-message-util": "^24.7.1", + "jest-regex-util": "^24.3.0", + "jest-resolve-dependencies": "^24.7.1", + "jest-runner": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-snapshot": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "jest-watcher": "^24.7.1", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@jest/environment": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.7.1.tgz", + "integrity": "sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.7.1", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "jest-mock": "^24.7.0" + } + }, + "@jest/fake-timers": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.7.1.tgz", + "integrity": "sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-mock": "^24.7.0" + } + }, + "@jest/reporters": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.7.1.tgz", + "integrity": "sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw==", + "dev": true, + "requires": { + "@jest/environment": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-api": "^2.1.1", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-source-maps": "^3.0.1", + "jest-haste-map": "^24.7.1", + "jest-resolve": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-util": "^24.7.1", + "jest-worker": "^24.6.0", + "node-notifier": "^5.2.1", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", + "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.7.1.tgz", + "integrity": "sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz", + "integrity": "sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA==", + "dev": true, + "requires": { + "@jest/test-result": "^24.7.1", + "jest-haste-map": "^24.7.1", + "jest-runner": "^24.7.1", + "jest-runtime": "^24.7.1" + } + }, + "@jest/transform": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.7.1.tgz", + "integrity": "sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.7.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.7.1", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.7.1", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.7.0.tgz", + "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/yargs": "^12.0.9" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "@octokit/endpoint": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-4.2.0.tgz", + "integrity": "sha512-0GUrn0Lr4k8EQpbKLiNzY4gWkx98UuiEFggvk6IqJCHJawUicg2z8XiKvbCZXJbC26T9XJBZ+xURaYhNc5n3dw==", + "requires": { + "deepmerge": "3.2.0", + "is-plain-object": "^2.0.4", + "universal-user-agent": "^2.0.1", + "url-template": "^2.0.8" + } + }, + "@octokit/graphql": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.1.tgz", + "integrity": "sha512-BVRBRFulb2H42u/Slt+x59tFw7lRf94xX9/Dv++mYDmYRXaY6LIOzrCTY2GYOVQVcoBjPhfEiYAMuJUCPNoe2g==", + "requires": { + "@octokit/request": "^3.0.0", + "universal-user-agent": "^2.0.3" + } + }, + "@octokit/request": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-3.0.0.tgz", + "integrity": "sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA==", + "requires": { + "@octokit/endpoint": "^4.0.0", + "deprecation": "^1.0.1", + "is-plain-object": "^2.0.4", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^2.0.1" + } + }, + "@octokit/rest": { + "version": "16.25.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.25.0.tgz", + "integrity": "sha512-QKIzP0gNYjyIGmY3Gpm3beof0WFwxFR+HhRZ+Wi0fYYhkEUvkJiXqKF56Pf5glzzfhEwOrggfluEld5F/ZxsKw==", + "requires": { + "@octokit/request": "3.0.0", + "atob-lite": "^2.0.0", + "before-after-hook": "^1.4.0", + "btoa-lite": "^1.0.0", + "deprecation": "^1.0.1", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^2.0.0", + "url-template": "^2.0.8" + } + }, + "@types/babel__core": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", + "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.6.tgz", + "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", + "dev": true + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "dev": true + }, + "actions-toolkit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/actions-toolkit/-/actions-toolkit-2.0.0.tgz", + "integrity": "sha512-wzQa0KkN0IUrJdl72hLV1a/oOAUpKLriETV5+/85T6sLfCaIJJQ3YUMtKDc1ctjfsdRfvYO8Qst8OOVi64boKw==", + "requires": { + "@octokit/graphql": "^2.0.1", + "@octokit/rest": "^16.15.0", + "enquirer": "^2.3.0", + "execa": "^1.0.0", + "flat-cache": "^2.0.1", + "js-yaml": "^3.13.0", + "minimist": "^1.2.0", + "signale": "^1.4.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-jest": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.7.1.tgz", + "integrity": "sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg==", + "dev": true, + "requires": { + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.6.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.3.tgz", + "integrity": "sha512-IFyehbvRRwdBlI1lDp+FaMsWNnEndEk7065IB8NhzBX+ZKLPwPodgk4I5Gobw/8SNUUzso2Dv3hbqRh88eiSCQ==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.2.0", + "test-exclude": "^5.2.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + }, + "babel-preset-fbjs": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz", + "integrity": "sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g==", + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, + "babel-preset-jest": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.6.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", + "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "requires": { + "node-int64": "^0.4.0" + } + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + }, + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", + "dev": true + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", + "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==" + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "deprecation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-1.0.1.tgz", + "integrity": "sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg==" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", + "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.0.tgz", + "integrity": "sha512-RNGUbRVlfnjmpxV+Ed+7CGu0rg3MK7MmlW+DW0v7V2zdAUBC1s4BxCRiIAozbYB2UJ+q4D+8tW9UFb11kF72/g==", + "requires": { + "ansi-colors": "^3.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expect": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.1.tgz", + "integrity": "sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.3.0", + "jest-matcher-utils": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-regex-util": "^24.3.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", + "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "requires": { + "bser": "^2.0.0" + } + }, + "fbjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", + "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + "requires": { + "core-js": "^2.4.1", + "fbjs-css-vars": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "graphql": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.2.1.tgz", + "integrity": "sha512-2PL1UbvKeSjy/lUeJqHk+eR9CvuErXoCNwJI4jm3oNFEeY+9ELqHNKO1ZuSxAkasPkpWbmT/iMRMFxd3cEL3tQ==", + "requires": { + "iterall": "^1.2.2" + } + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.5.tgz", + "integrity": "sha512-meYk1BwDp59Pfse1TvPrkKYgVqAufbdBLEVoqvu/hLLKSaQ054ZTksbNepyc223tMnWdm6AdK2URIJJRqdP87g==", + "dev": true, + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.4", + "istanbul-lib-hook": "^2.0.6", + "istanbul-lib-instrument": "^3.2.0", + "istanbul-lib-report": "^2.0.7", + "istanbul-lib-source-maps": "^3.0.5", + "istanbul-reports": "^2.2.3", + "js-yaml": "^3.13.0", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", + "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", + "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.4", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", + "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.4", + "make-dir": "^2.1.0", + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", + "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.4", + "make-dir": "^2.1.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", + "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", + "dev": true, + "requires": { + "handlebars": "^4.1.0" + } + }, + "iterall": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", + "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" + }, + "jest": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.7.1.tgz", + "integrity": "sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.7.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "jest-cli": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.7.1.tgz", + "integrity": "sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ==", + "dev": true, + "requires": { + "@jest/core": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^12.0.2" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.7.0.tgz", + "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.7.1.tgz", + "integrity": "sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.7.1", + "@jest/types": "^24.7.0", + "babel-jest": "^24.7.1", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.7.1", + "jest-environment-node": "^24.7.1", + "jest-get-type": "^24.3.0", + "jest-jasmine2": "^24.7.1", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.7.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.7.0.tgz", + "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.3.0", + "pretty-format": "^24.7.0" + } + }, + "jest-docblock": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", + "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.7.1.tgz", + "integrity": "sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.3.0", + "jest-util": "^24.7.1", + "pretty-format": "^24.7.0" + } + }, + "jest-environment-jsdom": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz", + "integrity": "sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg==", + "dev": true, + "requires": { + "@jest/environment": "^24.7.1", + "@jest/fake-timers": "^24.7.1", + "@jest/types": "^24.7.0", + "jest-mock": "^24.7.0", + "jest-util": "^24.7.1", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.7.1.tgz", + "integrity": "sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA==", + "dev": true, + "requires": { + "@jest/environment": "^24.7.1", + "@jest/fake-timers": "^24.7.1", + "@jest/types": "^24.7.0", + "jest-mock": "^24.7.0", + "jest-util": "^24.7.1" + } + }, + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", + "dev": true + }, + "jest-haste-map": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.7.1.tgz", + "integrity": "sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.4.0", + "jest-util": "^24.7.1", + "jest-worker": "^24.6.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz", + "integrity": "sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.7.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.7.1", + "jest-matcher-utils": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-snapshot": "^24.7.1", + "jest-util": "^24.7.1", + "pretty-format": "^24.7.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz", + "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==", + "dev": true, + "requires": { + "pretty-format": "^24.7.0" + } + }, + "jest-matcher-utils": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz", + "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.7.0", + "jest-get-type": "^24.3.0", + "pretty-format": "^24.7.0" + } + }, + "jest-message-util": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.7.1.tgz", + "integrity": "sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.7.0.tgz", + "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", + "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", + "dev": true + }, + "jest-resolve": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.7.1.tgz", + "integrity": "sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz", + "integrity": "sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.7.1" + } + }, + "jest-runner": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.7.1.tgz", + "integrity": "sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.7.1", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.7.1", + "jest-jasmine2": "^24.7.1", + "jest-leak-detector": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-resolve": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-util": "^24.7.1", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.7.1.tgz", + "integrity": "sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.7.1", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/yargs": "^12.0.2", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.7.1", + "jest-haste-map": "^24.7.1", + "jest-message-util": "^24.7.1", + "jest-mock": "^24.7.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.7.1", + "jest-snapshot": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", + "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", + "dev": true + }, + "jest-snapshot": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.7.1.tgz", + "integrity": "sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "expect": "^24.7.1", + "jest-diff": "^24.7.0", + "jest-matcher-utils": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-resolve": "^24.7.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.7.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.7.1.tgz", + "integrity": "sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.7.1", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.7.0.tgz", + "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.3.0", + "leven": "^2.1.0", + "pretty-format": "^24.7.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.7.1.tgz", + "integrity": "sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/yargs": "^12.0.9", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.7.1", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "macos-release": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", + "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==" + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "merge2": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", + "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-fetch": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.4.1.tgz", + "integrity": "sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", + "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + } + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "pretty-format": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", + "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", + "dev": true, + "requires": { + "@jest/types": "^24.7.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prompts": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", + "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", + "dev": true, + "requires": { + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "relay-compiler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-3.0.0.tgz", + "integrity": "sha512-wCD1FV4IKCfeNZdNrdeRjAWl23C3hcInmBbR+rOE/w345+IoXwh1W4o152opRfwHMqPIC5YjyrWh2O73vJYGLw==", + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/polyfill": "^7.0.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.1.2", + "chalk": "^2.4.1", + "fast-glob": "^2.2.2", + "fb-watchman": "^2.0.0", + "fbjs": "^1.0.0", + "immutable": "~3.7.6", + "nullthrows": "^1.1.0", + "relay-runtime": "3.0.0", + "signedsource": "^1.0.0", + "yargs": "^9.0.0" + } + }, + "relay-runtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-3.0.0.tgz", + "integrity": "sha512-P9pDoAaqku9m5MTMjampwo+0vsNd2Nv8x78GpWuxPxvqJusqz8MBpu0RVBViIpLzCn77Pegw2ihtXgQSBdvs0w==", + "requires": { + "@babel/runtime": "^7.0.0", + "fbjs": "^1.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", + "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rsvp": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz", + "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "requires": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + } + }, + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=" + }, + "sisteransi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", + "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "test-exclude": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", + "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + } + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "ua-parser-js": { + "version": "0.7.19", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", + "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + }, + "uglify-js": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.9.tgz", + "integrity": "sha512-WpT0RqsDtAWPNJK955DEnb6xjymR8Fn0OlK4TT4pS0ASYsVPqr5ELhgwOwLCP5J5vHeJ4xmMmz3DEgdqC10JeQ==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "universal-user-agent": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.3.tgz", + "integrity": "sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==", + "requires": { + "os-name": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "requires": { + "execa": "^1.0.0" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "^4.1.0" + } + } + } +} diff --git a/actions/schema-up/package.json b/actions/schema-up/package.json new file mode 100644 index 0000000000..03dec3199a --- /dev/null +++ b/actions/schema-up/package.json @@ -0,0 +1,14 @@ +{ + "name": "schema-up", + "private": true, + "main": "index.js", + "scripts": { + "start": "node ./index.js" + }, + "dependencies": { + "actions-toolkit": "^2.0.0", + "graphql": "14.2.1", + "node-fetch": "2.4.1", + "relay-compiler": "3.0.0" + } +} From e86e5fc4b9b411a96321154917ab9545bdfb9d0c Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Tue, 30 Apr 2019 14:01:56 -0400 Subject: [PATCH 02/40] "schema-automerge" action to automatically merge PRs created by "schema-up" --- actions/schema-automerge/Dockerfile | 18 + actions/schema-automerge/README.md | 3 + actions/schema-automerge/index.js | 130 +++++ actions/schema-automerge/package-lock.json | 632 +++++++++++++++++++++ actions/schema-automerge/package.json | 11 + 5 files changed, 794 insertions(+) create mode 100644 actions/schema-automerge/Dockerfile create mode 100644 actions/schema-automerge/README.md create mode 100644 actions/schema-automerge/index.js create mode 100644 actions/schema-automerge/package-lock.json create mode 100644 actions/schema-automerge/package.json diff --git a/actions/schema-automerge/Dockerfile b/actions/schema-automerge/Dockerfile new file mode 100644 index 0000000000..68d5f971da --- /dev/null +++ b/actions/schema-automerge/Dockerfile @@ -0,0 +1,18 @@ +FROM node:8-slim + +LABEL "com.github.actions.name"="schema-automerge" +LABEL "com.github.actions.description"="Automatically merge schema upgrade pull requests that pass all checks" +LABEL "com.github.actions.icon"="check-circle" +LABEL "com.github.actions.color"="green" + +# Copy the package.json and package-lock.json +COPY package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy the rest of your action's code +COPY . . + +# Run `node /index.js` +ENTRYPOINT ["node", "/index.js"] diff --git a/actions/schema-automerge/README.md b/actions/schema-automerge/README.md new file mode 100644 index 0000000000..b7bb8ea322 --- /dev/null +++ b/actions/schema-automerge/README.md @@ -0,0 +1,3 @@ +# actions/schema-automerge + +Automatically merge pull requests with the ["schema update" label](https://github.com/atom/github/labels/schema%20update) applied when all status checks and commit statuses have been reported, as long as all are successful. diff --git a/actions/schema-automerge/index.js b/actions/schema-automerge/index.js new file mode 100644 index 0000000000..53fe9e6219 --- /dev/null +++ b/actions/schema-automerge/index.js @@ -0,0 +1,130 @@ +const {Toolkit} = require('actions-toolkit'); + +Toolkit.run(async tools => { + let commitOid; + const pullRequests = []; + + // Determine the commit oid and associated pull requests from the event payload. + if (tools.context.event === 'check_suite') { + commitOid = tools.payload.check_suite.head_sha; + const labelledPullRequests = tools.payload.check_suite.pull_requests + .filter(pr => pr.labels.some(label => label.name === 'schema update')) + .map(pr => pr.node_id); + pullRequests.push(...labelledPullRequests); + } else if (tools.context.event === 'status') { + commitOid = tools.payload.sha; + const {data: associatedPRs} = await tools.github.graphql(` + query PullRequests($owner: String!, $repo: String!, $commitOid: GitObjectID!) { + repository(owner: $owner, name: $repo) { + object(oid: $commitOid) { + ... on Commit { + associatedPullRequests(first: 100, orderBy: {field: UPDATED_AT, direction: DESC}) { + totalCount + nodes { + id + headRefOid + state + labels(first: 10) { + nodes { + name + } + } + } + } + } + } + } + } + `, { + ...tools.context.repo, + commitOid, + }); + + if (!associatedPRs.object) { + tools.exit.failure(`Unable to find git object: ${commitOid}`); + } + + const labelledPullRequests = associatedPRs.object.associatedPullRequests.nodes + .filter(n => n.labels.nodes.some(l => l.name === 'schema update')) + .filter(n => n.headRefOid === commitOid) + .filter(n => n.state === 'OPEN') + .map(n => n.id); + + pullRequests.push(...labelledPullRequests); + } else { + throw new Error(`Unexpected event: ${tools.context.event}`); + } + + tools.log.info(`Discovered ${pullRequests.length} pull requests matching the event sha.`); + if (pullRequests.length === 0) { + tools.exit.neutral("No labelled pull request associated with this event's commit."); + } + + if (pullRequests.length > 1) { + tools.log.warn(`Multiple associated pull requests discovered: ${pullRequests.length}.`); + } + const [pullRequest] = pullRequests; + + const {data: statusResult} = await tools.github.graphql(` + query CommitStatus($pullRequestID: ID!) { + node(id: $pullRequestID) { + ... on PullRequest { + headRefOid + commits(last: 1) { + nodes { + commit { + checkSuites(first: 5) { + nodes { + app { + id + } + conclusion + } + } + status { + state + } + } + } + } + } + } + } + `, { + pullRequestID: pullRequest, + }); + + if (statusResult.node.headRefOid !== commitOid) { + tools.exit.neutral(`Pull request ${pullRequest} did not have a head ref oid matching ${commitOid}`); + } + + const [commit] = statusResult.node.commits; + + // Exclude CodeCov because it publishes a QUEUED suite that never resolves + const suites = commit.checkSuites.nodes.filter(n => n.app.id !== 'MDM6QXBwMjU0'); + + if (!commit.status) { + tools.exit.neutral(`Commit status has not been reported yet on ${commitOid}.`); + } + + if (commit.status.state === 'SUCCESS' && suites.every(suite => suite.conclusion === 'SUCCESS')) { + await tools.github.graphql(` + mutation MergePullRequest($pullRequestID: ID!, $commitOid: GitObjectID!) { + mergePullRequest(input: {pullRequestId: $pullRequestID, expectedHeadOid: $commitOid}) { + pullRequest { + id + } + } + } + `, { + pullRequestID: pullRequest, + commitOid, + }); + tools.exit.success('Pull request has been merged.'); + } + + tools.exit.neutral('Declining to automatically merge pull request with failing checks.'); +}, { + event: ['check_suite.completed', 'status'], + secrets: ['GITHUB_TOKEN'], +}); diff --git a/actions/schema-automerge/package-lock.json b/actions/schema-automerge/package-lock.json new file mode 100644 index 0000000000..78ca6d1fd9 --- /dev/null +++ b/actions/schema-automerge/package-lock.json @@ -0,0 +1,632 @@ +{ + "name": "schema-automerge", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@octokit/endpoint": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-4.2.0.tgz", + "integrity": "sha512-0GUrn0Lr4k8EQpbKLiNzY4gWkx98UuiEFggvk6IqJCHJawUicg2z8XiKvbCZXJbC26T9XJBZ+xURaYhNc5n3dw==", + "requires": { + "deepmerge": "3.2.0", + "is-plain-object": "^2.0.4", + "universal-user-agent": "^2.0.1", + "url-template": "^2.0.8" + } + }, + "@octokit/graphql": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.1.tgz", + "integrity": "sha512-BVRBRFulb2H42u/Slt+x59tFw7lRf94xX9/Dv++mYDmYRXaY6LIOzrCTY2GYOVQVcoBjPhfEiYAMuJUCPNoe2g==", + "requires": { + "@octokit/request": "^3.0.0", + "universal-user-agent": "^2.0.3" + } + }, + "@octokit/request": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-3.0.0.tgz", + "integrity": "sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA==", + "requires": { + "@octokit/endpoint": "^4.0.0", + "deprecation": "^1.0.1", + "is-plain-object": "^2.0.4", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^2.0.1" + } + }, + "@octokit/rest": { + "version": "16.25.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.25.0.tgz", + "integrity": "sha512-QKIzP0gNYjyIGmY3Gpm3beof0WFwxFR+HhRZ+Wi0fYYhkEUvkJiXqKF56Pf5glzzfhEwOrggfluEld5F/ZxsKw==", + "requires": { + "@octokit/request": "3.0.0", + "atob-lite": "^2.0.0", + "before-after-hook": "^1.4.0", + "btoa-lite": "^1.0.0", + "deprecation": "^1.0.1", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^2.0.0", + "url-template": "^2.0.8" + } + }, + "actions-toolkit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/actions-toolkit/-/actions-toolkit-2.0.0.tgz", + "integrity": "sha512-wzQa0KkN0IUrJdl72hLV1a/oOAUpKLriETV5+/85T6sLfCaIJJQ3YUMtKDc1ctjfsdRfvYO8Qst8OOVi64boKw==", + "requires": { + "@octokit/graphql": "^2.0.1", + "@octokit/rest": "^16.15.0", + "enquirer": "^2.3.0", + "execa": "^1.0.0", + "flat-cache": "^2.0.1", + "js-yaml": "^3.13.0", + "minimist": "^1.2.0", + "signale": "^1.4.0" + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "before-after-hook": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", + "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "deepmerge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", + "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==" + }, + "deprecation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-1.0.1.tgz", + "integrity": "sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg==" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.0.tgz", + "integrity": "sha512-RNGUbRVlfnjmpxV+Ed+7CGu0rg3MK7MmlW+DW0v7V2zdAUBC1s4BxCRiIAozbYB2UJ+q4D+8tW9UFb11kF72/g==", + "requires": { + "ansi-colors": "^3.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "macos-release": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", + "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-fetch": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.4.1.tgz", + "integrity": "sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "requires": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "universal-user-agent": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.3.tgz", + "integrity": "sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==", + "requires": { + "os-name": "^3.0.0" + } + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "requires": { + "execa": "^1.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + } + } +} diff --git a/actions/schema-automerge/package.json b/actions/schema-automerge/package.json new file mode 100644 index 0000000000..d1e69b411d --- /dev/null +++ b/actions/schema-automerge/package.json @@ -0,0 +1,11 @@ +{ + "name": "schema-automerge", + "private": true, + "main": "index.js", + "scripts": { + "start": "node ./index.js" + }, + "dependencies": { + "actions-toolkit": "^2.0.0" + } +} From dd2d3155cc1c2981875e282fd4e5ae55e589a431 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Tue, 30 Apr 2019 14:37:20 -0400 Subject: [PATCH 03/40] Babby's first workflow file --- .github/main.workflow | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/main.workflow diff --git a/.github/main.workflow b/.github/main.workflow new file mode 100644 index 0000000000..e23ece9456 --- /dev/null +++ b/.github/main.workflow @@ -0,0 +1,24 @@ +workflow "GraphQL schema update" { + on = "schedule(0 1 * * MON)" + resolves = "Update schema" +} + +action "Update schema" { + uses = "./actions/schema-up" + secrets = ["GITHUB_TOKEN"] +} + +workflow "Schema update automerge: check suite" { + on = "check_suite" + resolves = "Automerge" +} + +workflow "Schema update automerge: commit status" { + on = "status" + resolves = "Automerge" +} + +action "Automerge" { + uses = "./actions/schema-automerge" + secrets = ["GITHUB_TOKEN"] +} From 696b3b2e25af9ee995e62df09d796ac336b8f19a Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Tue, 30 Apr 2019 14:40:37 -0400 Subject: [PATCH 04/40] Ah does it not support MON --- .github/main.workflow | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/main.workflow b/.github/main.workflow index e23ece9456..4e91589053 100644 --- a/.github/main.workflow +++ b/.github/main.workflow @@ -1,5 +1,5 @@ workflow "GraphQL schema update" { - on = "schedule(0 1 * * MON)" + on = "schedule(0 1 * * 1)" resolves = "Update schema" } From bbfc7e0bdbd7e261f8e7a1a01140870064f0f22e Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Tue, 30 Apr 2019 15:10:35 -0400 Subject: [PATCH 05/40] Okay on second thought let's not do the automerge thing --- .github/main.workflow | 15 - actions/schema-automerge/Dockerfile | 18 - actions/schema-automerge/README.md | 3 - actions/schema-automerge/index.js | 130 ----- actions/schema-automerge/package-lock.json | 632 --------------------- actions/schema-automerge/package.json | 11 - 6 files changed, 809 deletions(-) delete mode 100644 actions/schema-automerge/Dockerfile delete mode 100644 actions/schema-automerge/README.md delete mode 100644 actions/schema-automerge/index.js delete mode 100644 actions/schema-automerge/package-lock.json delete mode 100644 actions/schema-automerge/package.json diff --git a/.github/main.workflow b/.github/main.workflow index 4e91589053..c14ac60da3 100644 --- a/.github/main.workflow +++ b/.github/main.workflow @@ -7,18 +7,3 @@ action "Update schema" { uses = "./actions/schema-up" secrets = ["GITHUB_TOKEN"] } - -workflow "Schema update automerge: check suite" { - on = "check_suite" - resolves = "Automerge" -} - -workflow "Schema update automerge: commit status" { - on = "status" - resolves = "Automerge" -} - -action "Automerge" { - uses = "./actions/schema-automerge" - secrets = ["GITHUB_TOKEN"] -} diff --git a/actions/schema-automerge/Dockerfile b/actions/schema-automerge/Dockerfile deleted file mode 100644 index 68d5f971da..0000000000 --- a/actions/schema-automerge/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM node:8-slim - -LABEL "com.github.actions.name"="schema-automerge" -LABEL "com.github.actions.description"="Automatically merge schema upgrade pull requests that pass all checks" -LABEL "com.github.actions.icon"="check-circle" -LABEL "com.github.actions.color"="green" - -# Copy the package.json and package-lock.json -COPY package*.json ./ - -# Install dependencies -RUN npm ci - -# Copy the rest of your action's code -COPY . . - -# Run `node /index.js` -ENTRYPOINT ["node", "/index.js"] diff --git a/actions/schema-automerge/README.md b/actions/schema-automerge/README.md deleted file mode 100644 index b7bb8ea322..0000000000 --- a/actions/schema-automerge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# actions/schema-automerge - -Automatically merge pull requests with the ["schema update" label](https://github.com/atom/github/labels/schema%20update) applied when all status checks and commit statuses have been reported, as long as all are successful. diff --git a/actions/schema-automerge/index.js b/actions/schema-automerge/index.js deleted file mode 100644 index 53fe9e6219..0000000000 --- a/actions/schema-automerge/index.js +++ /dev/null @@ -1,130 +0,0 @@ -const {Toolkit} = require('actions-toolkit'); - -Toolkit.run(async tools => { - let commitOid; - const pullRequests = []; - - // Determine the commit oid and associated pull requests from the event payload. - if (tools.context.event === 'check_suite') { - commitOid = tools.payload.check_suite.head_sha; - const labelledPullRequests = tools.payload.check_suite.pull_requests - .filter(pr => pr.labels.some(label => label.name === 'schema update')) - .map(pr => pr.node_id); - pullRequests.push(...labelledPullRequests); - } else if (tools.context.event === 'status') { - commitOid = tools.payload.sha; - const {data: associatedPRs} = await tools.github.graphql(` - query PullRequests($owner: String!, $repo: String!, $commitOid: GitObjectID!) { - repository(owner: $owner, name: $repo) { - object(oid: $commitOid) { - ... on Commit { - associatedPullRequests(first: 100, orderBy: {field: UPDATED_AT, direction: DESC}) { - totalCount - nodes { - id - headRefOid - state - labels(first: 10) { - nodes { - name - } - } - } - } - } - } - } - } - `, { - ...tools.context.repo, - commitOid, - }); - - if (!associatedPRs.object) { - tools.exit.failure(`Unable to find git object: ${commitOid}`); - } - - const labelledPullRequests = associatedPRs.object.associatedPullRequests.nodes - .filter(n => n.labels.nodes.some(l => l.name === 'schema update')) - .filter(n => n.headRefOid === commitOid) - .filter(n => n.state === 'OPEN') - .map(n => n.id); - - pullRequests.push(...labelledPullRequests); - } else { - throw new Error(`Unexpected event: ${tools.context.event}`); - } - - tools.log.info(`Discovered ${pullRequests.length} pull requests matching the event sha.`); - if (pullRequests.length === 0) { - tools.exit.neutral("No labelled pull request associated with this event's commit."); - } - - if (pullRequests.length > 1) { - tools.log.warn(`Multiple associated pull requests discovered: ${pullRequests.length}.`); - } - const [pullRequest] = pullRequests; - - const {data: statusResult} = await tools.github.graphql(` - query CommitStatus($pullRequestID: ID!) { - node(id: $pullRequestID) { - ... on PullRequest { - headRefOid - commits(last: 1) { - nodes { - commit { - checkSuites(first: 5) { - nodes { - app { - id - } - conclusion - } - } - status { - state - } - } - } - } - } - } - } - `, { - pullRequestID: pullRequest, - }); - - if (statusResult.node.headRefOid !== commitOid) { - tools.exit.neutral(`Pull request ${pullRequest} did not have a head ref oid matching ${commitOid}`); - } - - const [commit] = statusResult.node.commits; - - // Exclude CodeCov because it publishes a QUEUED suite that never resolves - const suites = commit.checkSuites.nodes.filter(n => n.app.id !== 'MDM6QXBwMjU0'); - - if (!commit.status) { - tools.exit.neutral(`Commit status has not been reported yet on ${commitOid}.`); - } - - if (commit.status.state === 'SUCCESS' && suites.every(suite => suite.conclusion === 'SUCCESS')) { - await tools.github.graphql(` - mutation MergePullRequest($pullRequestID: ID!, $commitOid: GitObjectID!) { - mergePullRequest(input: {pullRequestId: $pullRequestID, expectedHeadOid: $commitOid}) { - pullRequest { - id - } - } - } - `, { - pullRequestID: pullRequest, - commitOid, - }); - tools.exit.success('Pull request has been merged.'); - } - - tools.exit.neutral('Declining to automatically merge pull request with failing checks.'); -}, { - event: ['check_suite.completed', 'status'], - secrets: ['GITHUB_TOKEN'], -}); diff --git a/actions/schema-automerge/package-lock.json b/actions/schema-automerge/package-lock.json deleted file mode 100644 index 78ca6d1fd9..0000000000 --- a/actions/schema-automerge/package-lock.json +++ /dev/null @@ -1,632 +0,0 @@ -{ - "name": "schema-automerge", - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@octokit/endpoint": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-4.2.0.tgz", - "integrity": "sha512-0GUrn0Lr4k8EQpbKLiNzY4gWkx98UuiEFggvk6IqJCHJawUicg2z8XiKvbCZXJbC26T9XJBZ+xURaYhNc5n3dw==", - "requires": { - "deepmerge": "3.2.0", - "is-plain-object": "^2.0.4", - "universal-user-agent": "^2.0.1", - "url-template": "^2.0.8" - } - }, - "@octokit/graphql": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.1.tgz", - "integrity": "sha512-BVRBRFulb2H42u/Slt+x59tFw7lRf94xX9/Dv++mYDmYRXaY6LIOzrCTY2GYOVQVcoBjPhfEiYAMuJUCPNoe2g==", - "requires": { - "@octokit/request": "^3.0.0", - "universal-user-agent": "^2.0.3" - } - }, - "@octokit/request": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-3.0.0.tgz", - "integrity": "sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA==", - "requires": { - "@octokit/endpoint": "^4.0.0", - "deprecation": "^1.0.1", - "is-plain-object": "^2.0.4", - "node-fetch": "^2.3.0", - "once": "^1.4.0", - "universal-user-agent": "^2.0.1" - } - }, - "@octokit/rest": { - "version": "16.25.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.25.0.tgz", - "integrity": "sha512-QKIzP0gNYjyIGmY3Gpm3beof0WFwxFR+HhRZ+Wi0fYYhkEUvkJiXqKF56Pf5glzzfhEwOrggfluEld5F/ZxsKw==", - "requires": { - "@octokit/request": "3.0.0", - "atob-lite": "^2.0.0", - "before-after-hook": "^1.4.0", - "btoa-lite": "^1.0.0", - "deprecation": "^1.0.1", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^2.0.0", - "url-template": "^2.0.8" - } - }, - "actions-toolkit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/actions-toolkit/-/actions-toolkit-2.0.0.tgz", - "integrity": "sha512-wzQa0KkN0IUrJdl72hLV1a/oOAUpKLriETV5+/85T6sLfCaIJJQ3YUMtKDc1ctjfsdRfvYO8Qst8OOVi64boKw==", - "requires": { - "@octokit/graphql": "^2.0.1", - "@octokit/rest": "^16.15.0", - "enquirer": "^2.3.0", - "execa": "^1.0.0", - "flat-cache": "^2.0.1", - "js-yaml": "^3.13.0", - "minimist": "^1.2.0", - "signale": "^1.4.0" - } - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "before-after-hook": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", - "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "deepmerge": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", - "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==" - }, - "deprecation": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-1.0.1.tgz", - "integrity": "sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg==" - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.0.tgz", - "integrity": "sha512-RNGUbRVlfnjmpxV+Ed+7CGu0rg3MK7MmlW+DW0v7V2zdAUBC1s4BxCRiIAozbYB2UJ+q4D+8tW9UFb11kF72/g==", - "requires": { - "ansi-colors": "^3.2.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "macos-release": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", - "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-fetch": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.4.1.tgz", - "integrity": "sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "requires": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "universal-user-agent": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.3.tgz", - "integrity": "sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==", - "requires": { - "os-name": "^3.0.0" - } - }, - "url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "windows-release": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", - "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", - "requires": { - "execa": "^1.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "requires": { - "mkdirp": "^0.5.1" - } - } - } -} diff --git a/actions/schema-automerge/package.json b/actions/schema-automerge/package.json deleted file mode 100644 index d1e69b411d..0000000000 --- a/actions/schema-automerge/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "schema-automerge", - "private": true, - "main": "index.js", - "scripts": { - "start": "node ./index.js" - }, - "dependencies": { - "actions-toolkit": "^2.0.0" - } -} From 80e7569d26398975551ee4ac328436133332fba6 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Wed, 1 May 2019 08:24:43 -0400 Subject: [PATCH 06/40] Since we're not actually making automerge happen. --- actions/schema-up/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index bef74d9e42..292bd75400 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -60,8 +60,7 @@ Toolkit.run(async tools => { const body = `:robot: _This automated pull request brought to you by a GitHub action_ :robot: -The GraphQL schema has been automatically updated and relay-compiler has been re-run on the package source. This -pull request will be automatically merged if all status checks are :white_check_mark:.`; +The GraphQL schema has been automatically updated and relay-compiler has been re-run on the package source.`; const {data: createPR} = await tools.github.graphql(` mutation CreatePullRequest($owner: String!, $repo: String!, $body: String!, $headRefName: String!) { From eff8f5681a80f59bf07d60744072e4959ae251bf Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Wed, 1 May 2019 08:38:08 -0400 Subject: [PATCH 07/40] Report `relay-compiler` failures to the opened PR --- actions/schema-up/index.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 292bd75400..ba3ea73dc0 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -20,16 +20,18 @@ Toolkit.run(async tools => { await tools.runInWorkspace('git', ['commit', '--all', '--message=":arrow_up: GraphQL schema"']); tools.log.info('Re-running relay compiler.'); - await tools.runInWorkspace( + const {failed: relayFailed, all: relayOutput} = await tools.runInWorkspace( path.resolve(__dirname, 'node_modules', '.bin', 'relay-compiler'), ['--src', './lib', '--schema', 'graphql/schema.graphql'], + {reject: false}, ); const {exitCode: hasRelayChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet', '--', '**/__generated__/*.graphql.js'], {reject: false}, ); - if (hasRelayChanges === 0) { + + if (hasRelayChanges === 0 && !relayFailed) { tools.log.info('Generated relay files are unchanged.'); await tools.runInWorkspace('git', ['push']); tools.exit.success('Schema is up to date on master.'); @@ -53,14 +55,25 @@ Toolkit.run(async tools => { const branchName = `schema-update/${Date.now()}`; tools.log.info(`Commiting relay-compiler changes to a new branch ${branchName}.`); await tools.runInWorkspace('git', ['checkout', '-b', branchName]); - await tools.runInWorkspace('git', ['commit', '--all', '--message=":gear: relay-compiler changes"']); + if (!relayFailed) { + await tools.runInWorkspace('git', ['commit', '--all', '--message=":gear: relay-compiler changes"']); + } await tools.runInWorkspace('git', ['push', 'origin', branchName]); tools.log.info('Creating a pull request.'); - const body = `:robot: _This automated pull request brought to you by a GitHub action_ :robot: + let body = `:robot: _This automated pull request brought to you by [a GitHub action](/actions/schema-up)_ :robot: -The GraphQL schema has been automatically updated and relay-compiler has been re-run on the package source.`; +The GraphQL schema has been automatically updated and \`relay-compiler\` has been re-run on the package source.`; + + if (!relayFailed) { + body += ' The modified files have been committed to this branch and pushed. '; + body += 'If all of the tests pass in CI, merge with confidence :zap:'; + } else { + body += ' `relay-compiler` failed with the following output:\n\n```\n'; + body += relayOutput; + body += '\n```\n\nCheck out this branch to fix things so we don\'t break.'; + } const {data: createPR} = await tools.github.graphql(` mutation CreatePullRequest($owner: String!, $repo: String!, $body: String!, $headRefName: String!) { From 7cc72bdf5bb9b574737e7414c6ce50ebca4969f3 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Wed, 1 May 2019 08:39:58 -0400 Subject: [PATCH 08/40] Let's run every ten minutes to work the kinks out. --- .github/main.workflow | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/main.workflow b/.github/main.workflow index c14ac60da3..4d8247a48b 100644 --- a/.github/main.workflow +++ b/.github/main.workflow @@ -1,5 +1,9 @@ workflow "GraphQL schema update" { - on = "schedule(0 1 * * 1)" + // Every Monday at 1am. + // on = "schedule(0 1 * * 1)" + + // Every ten minutes (while I'm debugging) + on = "schedule(*/10 * * * *)" resolves = "Update schema" } From 3d162bb00b482c985c89128c6d9eb25369dbaf8d Mon Sep 17 00:00:00 2001 From: Katrina Uychaco Date: Thu, 2 May 2019 14:12:23 -0400 Subject: [PATCH 09/40] Apply suggestions from code review Co-Authored-By: smashwilson --- actions/schema-up/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index ba3ea73dc0..1abe235d77 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -40,8 +40,8 @@ Toolkit.run(async tools => { tools.log.info('Checking for unmerged schema update pull requests.'); const {data: openSchemaUpdatePRs} = await tools.github.graphql(` query OpenPullRequests($owner: String!, $repo: String!) { - repository(owner: $owner, name: repo) { - pullRequests(first: 1, states: [OPEN], labels: ["schema update"]) { + repository(owner: $owner, name: $repo) { + pullRequests(first: 1, states: [OPEN], labels: [schemaUpdateLabel.name]) { totalCount } } @@ -76,7 +76,7 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee } const {data: createPR} = await tools.github.graphql(` - mutation CreatePullRequest($owner: String!, $repo: String!, $body: String!, $headRefName: String!) { + mutation CreatePullRequest($repositoryId: ID!, $baseRefName: String!, $body: String!, $headRefName: String!) { createPullRequest(input: { title: "GraphQL schema update" body: $body @@ -98,14 +98,14 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee mutation LabelPullRequest($id: ID!, $labelIDs: [ID!]!) { addLabelsToLabelable(input: { labelableId: $id, - labelIds: [] + labelIds: $labelIDs }) { labelable { id } } } - `, {id: createdPullRequest.id, labelIDs: ['MDU6TGFiZWwxMzQyMzM1MjQ2']}); + `, {id: createdPullRequest.id, labelIDs: [schemaUpdateLabel.id]}); }, { secrets: ['GITHUB_TOKEN'], }); From 324d362f24a3a46220a586aad9c5dbc31058ddff Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:25:39 -0400 Subject: [PATCH 10/40] Create schemaUpdateLabel constant --- actions/schema-up/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 1abe235d77..a87171c0dd 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -3,6 +3,11 @@ const path = require('path'); const {Toolkit} = require('actions-toolkit'); const fetchSchema = require('./fetch-schema'); +const schemaUpdateLabel = { + name: 'schema update', + id: 'MDU6TGFiZWwxMzQyMzM1MjQ2', +}; + Toolkit.run(async tools => { tools.log.info('Fetching the latest GraphQL schema changes.'); await fetchSchema(); @@ -39,14 +44,15 @@ Toolkit.run(async tools => { tools.log.info('Checking for unmerged schema update pull requests.'); const {data: openSchemaUpdatePRs} = await tools.github.graphql(` - query OpenPullRequests($owner: String!, $repo: String!) { + query OpenPullRequests($owner: String!, $repo: String!, $labelName: String!) { repository(owner: $owner, name: $repo) { - pullRequests(first: 1, states: [OPEN], labels: [schemaUpdateLabel.name]) { + id + pullRequests(first: 1, states: [OPEN], labels: [$labelName]) { totalCount } } } - `, {...tools.context.repo}); + `, {...tools.context.repo, labelName: schemaUpdateLabel.name}); if (openSchemaUpdatePRs.repository.pullRequests.totalCount > 0) { tools.exit.failure('One or more schema update pull requests are already open. Please resolve those first.'); From 193432c6af3186eb254e241dc14dd440f490ea18 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:26:02 -0400 Subject: [PATCH 11/40] Supply missing parameters to createPullRequest mutation --- actions/schema-up/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index a87171c0dd..29aa68c0ad 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -54,6 +54,8 @@ Toolkit.run(async tools => { } `, {...tools.context.repo, labelName: schemaUpdateLabel.name}); + const repositoryId = openSchemaUpdatePRs.repository.id; + if (openSchemaUpdatePRs.repository.pullRequests.totalCount > 0) { tools.exit.failure('One or more schema update pull requests are already open. Please resolve those first.'); } @@ -82,10 +84,12 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee } const {data: createPR} = await tools.github.graphql(` - mutation CreatePullRequest($repositoryId: ID!, $baseRefName: String!, $body: String!, $headRefName: String!) { + mutation CreatePullRequest($repositoryId: ID!, $headRefName: String!, $body: String!) { createPullRequest(input: { + repositoryId: $repositoryId title: "GraphQL schema update" body: $body + baseRefName: "master" headRefName: $headRefName }) { pullRequest { @@ -94,7 +98,11 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee } } } - `, {...tools.context.repo, body, headRefName: branchName}); + `, { + repositoryId, + headRefName: branchName, + body, + }); const createdPullRequest = createPR.createPullRequest.pullRequest; tools.log.info( From bddd2562974f2b1da6e124917faecd5a4c1d4b5b Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:26:09 -0400 Subject: [PATCH 12/40] Report success :tada: --- actions/schema-up/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 29aa68c0ad..f1f4466896 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -120,6 +120,9 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee } } `, {id: createdPullRequest.id, labelIDs: [schemaUpdateLabel.id]}); + tools.exit.success( + `Pull request #${createdPullRequest.number} has been opened and labelled for this schema upgrade.`, + ); }, { secrets: ['GITHUB_TOKEN'], }); From 9ab104d4cd49fc25b3b33e661c45066f4b7df895 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:34:47 -0400 Subject: [PATCH 13/40] Ensure the schema is up to date while I'm testing --- graphql/schema.graphql | 2090 ++++++++++++++++++++++++---------------- 1 file changed, 1245 insertions(+), 845 deletions(-) diff --git a/graphql/schema.graphql b/graphql/schema.graphql index 1a673bf385..375c81212b 100644 --- a/graphql/schema.graphql +++ b/graphql/schema.graphql @@ -1,12 +1,3 @@ -"""Autogenerated input type of AcceptBusinessMemberInvitation""" -input AcceptBusinessMemberInvitationInput { - """The id of the invitation being accepted""" - invitationId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """Autogenerated input type of AcceptTopicSuggestion""" input AcceptTopicSuggestionInput { """The Node ID of the repository.""" @@ -48,6 +39,27 @@ interface Actor { url: URI! } +"""Autogenerated input type of AddAssigneesToAssignable""" +input AddAssigneesToAssignableInput { + """The id of the assignable object to add assignees to.""" + assignableId: ID! + + """The id of users to add as assignees.""" + assigneeIds: [ID!]! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of AddAssigneesToAssignable""" +type AddAssigneesToAssignablePayload { + """The item that was assigned.""" + assignable: Assignable + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + """Autogenerated input type of AddComment""" input AddCommentInput { """The Node ID of the subject to modify.""" @@ -90,14 +102,33 @@ type AddedToProjectEvent implements Node { id: ID! } +"""Autogenerated input type of AddLabelsToLabelable""" +input AddLabelsToLabelableInput { + """The id of the labelable object to add labels to.""" + labelableId: ID! + + """The ids of the labels to add.""" + labelIds: [ID!]! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of AddLabelsToLabelable""" +type AddLabelsToLabelablePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The item that was labeled.""" + labelable: Labelable +} + """Autogenerated input type of AddProjectCard""" input AddProjectCardInput { """The Node ID of the ProjectColumn.""" projectColumnId: ID! - """ - The content of the card. Must be a member of the ProjectCardItem union - """ + """The content of the card. Must be a member of the ProjectCardItem union""" contentId: ID """The note on the card.""" @@ -301,9 +332,7 @@ type AppEdge { interface Assignable { """A list of Users assigned to this object.""" assignees( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -355,9 +384,7 @@ type BaseRefForcePushedEvent implements Node { """Identifies the actor who performed the event.""" actor: Actor - """ - Identifies the after commit SHA for the 'base_ref_force_pushed' event. - """ + """Identifies the after commit SHA for the 'base_ref_force_pushed' event.""" afterCommit: Commit """ @@ -469,9 +496,7 @@ type BranchProtectionRule implements Node { A list of conflicts matching branches protection rule and other branch protection rules """ branchProtectionRuleConflicts( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -503,9 +528,7 @@ type BranchProtectionRule implements Node { """Repository refs that are protected by this rule""" matchingRefs( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -525,9 +548,7 @@ type BranchProtectionRule implements Node { """A list push allowances for this branch protection rule.""" pushAllowances( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -573,9 +594,7 @@ type BranchProtectionRule implements Node { """A list review dismissal allowances for this branch protection rule.""" reviewDismissalAllowances( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -651,24 +670,6 @@ type BranchProtectionRuleEdge { node: BranchProtectionRule } -"""Autogenerated input type of CancelBusinessAdminInvitation""" -input CancelBusinessAdminInvitationInput { - """The Node ID of the pending business admin invitation.""" - invitationId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of CancelBusinessBillingManagerInvitation""" -input CancelBusinessBillingManagerInvitationInput { - """The Node ID of the pending business billing manager invitation.""" - invitationId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """Autogenerated input type of ChangeUserStatus""" input ChangeUserStatusInput { """ @@ -703,6 +704,60 @@ type ChangeUserStatusPayload { status: UserStatus } +"""Autogenerated input type of ClearLabelsFromLabelable""" +input ClearLabelsFromLabelableInput { + """The id of the labelable object to clear the labels from.""" + labelableId: ID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of ClearLabelsFromLabelable""" +type ClearLabelsFromLabelablePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The item that was unlabeled.""" + labelable: Labelable +} + +"""Autogenerated input type of CloneProject""" +input CloneProjectInput { + """The owner ID to create the project under.""" + targetOwnerId: ID! + + """The source project to clone.""" + sourceId: ID! + + """Whether or not to clone the source project's workflows.""" + includeWorkflows: Boolean! + + """The name of the project.""" + name: String! + + """The description of the project.""" + body: String + + """The visibility of the project, defaults to false (private).""" + public: Boolean + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of CloneProject""" +type CloneProjectPayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The id of the JobStatus for populating cloned fields.""" + jobStatusId: String + + """The new cloned project.""" + project: Project +} + """An object that can be closed""" interface Closable { """ @@ -736,6 +791,24 @@ type ClosedEvent implements Node & UniformResourceLocatable { url: URI! } +"""Autogenerated input type of CloseIssue""" +input CloseIssueInput { + """ID of the issue to be closed.""" + issueId: ID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of CloseIssue""" +type CloseIssuePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The issue that was closed.""" + issue: Issue +} + """Autogenerated input type of ClosePullRequest""" input ClosePullRequestInput { """ID of the pull request to be closed.""" @@ -836,9 +909,7 @@ interface Comment { """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -904,9 +975,7 @@ enum CommentCannotUpdateReason { DENIED } -""" -Represents a 'comment_deleted' event on a given issue or pull request. -""" +"""Represents a 'comment_deleted' event on a given issue or pull request.""" type CommentDeletedEvent implements Node { """Identifies the actor who performed the event.""" actor: Actor @@ -927,6 +996,26 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl """The number of additions in this commit.""" additions: Int! + """The pull requests associated with a commit""" + associatedPullRequests( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + + """Ordering options for pull requests.""" + orderBy: PullRequestOrder + ): PullRequestConnection + """Authorship details of the commit.""" author: GitActor @@ -947,9 +1036,7 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl """Comments made on the commit.""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -990,9 +1077,7 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl """Ordering options for deployments returned from the connection.""" orderBy: DeploymentOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1011,9 +1096,7 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl The linear commit history starting from (and including) this commit, in the same order as `git log`. """ history( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1065,9 +1148,7 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl """The parents of a commit.""" parents( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1209,9 +1290,7 @@ type CommitComment implements Node & Comment & Deletable & Updatable & Updatable """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1246,9 +1325,7 @@ type CommitComment implements Node & Comment & Deletable & Updatable & Updatable """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1310,9 +1387,7 @@ type CommitCommentEdge { type CommitCommentThread implements Node & RepositoryNode { """The comments that exist in this thread.""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1378,9 +1453,7 @@ enum CommitContributionOrderField { type CommitContributionsByRepository { """The commit contributions, each representing a day.""" contributions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1616,6 +1689,11 @@ type ContributionsCollection { firstIssueContribution( """ If true, the first issue will be returned even if it was opened outside of the collection's time range. + + **Upcoming Change on 2019-07-01 UTC** + **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back + **Reason:** ignore_time_range will be removed + """ ignoreTimeRange: Boolean = false ): CreatedIssueOrRestrictedContribution @@ -1629,6 +1707,11 @@ type ContributionsCollection { firstPullRequestContribution( """ If true, the first pull request will be returned even if it was opened outside of the collection's time range. + + **Upcoming Change on 2019-07-01 UTC** + **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back + **Reason:** ignore_time_range will be removed + """ ignoreTimeRange: Boolean = false ): CreatedPullRequestOrRestrictedContribution @@ -1642,6 +1725,11 @@ type ContributionsCollection { firstRepositoryContribution( """ If true, the first repository will be returned even if it was opened outside of the collection's time range. + + **Upcoming Change on 2019-07-01 UTC** + **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back + **Reason:** ignore_time_range will be removed + """ ignoreTimeRange: Boolean = false ): CreatedRepositoryOrRestrictedContribution @@ -1666,9 +1754,7 @@ type ContributionsCollection { """A list of issues the user opened.""" issueContributions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1692,6 +1778,18 @@ type ContributionsCollection { orderBy: ContributionOrder ): CreatedIssueContributionConnection! + """Issue contributions made by the user, grouped by repository.""" + issueContributionsByRepository( + """How many repositories should be included.""" + maxRepositories: Int = 25 + + """Should the user's first issue ever be excluded from the result.""" + excludeFirst: Boolean = false + + """Should the user's most commented issue be excluded from the result.""" + excludePopular: Boolean = false + ): [IssueContributionsByRepository!]! + """ When the user signed up for GitHub. This will be null if that sign up date falls outside the collection's time range and ignoreTimeRange is false. @@ -1699,6 +1797,11 @@ type ContributionsCollection { joinedGitHubContribution( """ If true, the contribution will be returned even if the user signed up outside of the collection's time range. + + **Upcoming Change on 2019-07-01 UTC** + **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back + **Reason:** ignore_time_range will be removed + """ ignoreTimeRange: Boolean = false ): JoinedGitHubContribution @@ -1739,9 +1842,7 @@ type ContributionsCollection { """Pull request contributions made by the user.""" pullRequestContributions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1755,9 +1856,7 @@ type ContributionsCollection { """Returns the last _n_ elements from the list.""" last: Int - """ - Should the user's first pull request ever be excluded from the result. - """ + """Should the user's first pull request ever be excluded from the result.""" excludeFirst: Boolean = false """ @@ -1769,11 +1868,23 @@ type ContributionsCollection { orderBy: ContributionOrder ): CreatedPullRequestContributionConnection! - """Pull request review contributions made by the user.""" - pullRequestReviewContributions( + """Pull request contributions made by the user, grouped by repository.""" + pullRequestContributionsByRepository( + """How many repositories should be included.""" + maxRepositories: Int = 25 + + """Should the user's first pull request ever be excluded from the result.""" + excludeFirst: Boolean = false + """ - Returns the elements in the list that come after the specified cursor. + Should the user's most commented pull request be excluded from the result. """ + excludePopular: Boolean = false + ): [PullRequestContributionsByRepository!]! + + """Pull request review contributions made by the user.""" + pullRequestReviewContributions( + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1791,13 +1902,19 @@ type ContributionsCollection { orderBy: ContributionOrder ): CreatedPullRequestReviewContributionConnection! + """ + Pull request review contributions made by the user, grouped by repository. + """ + pullRequestReviewContributionsByRepository( + """How many repositories should be included.""" + maxRepositories: Int = 25 + ): [PullRequestReviewContributionsByRepository!]! + """ A list of repositories owned by the user that the user created in this time range. """ repositoryContributions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -1841,9 +1958,7 @@ type ContributionsCollection { """How many pull requests the user opened.""" totalPullRequestContributions( - """ - Should the user's first pull request ever be excluded from this count. - """ + """Should the user's first pull request ever be excluded from this count.""" excludeFirst: Boolean = false """ @@ -1867,16 +1982,12 @@ type ContributionsCollection { excludePopular: Boolean = false ): Int! - """ - How many different repositories the user left pull request reviews in. - """ + """How many different repositories the user left pull request reviews in.""" totalRepositoriesWithContributedPullRequestReviews: Int! """How many different repositories the user opened pull requests in.""" totalRepositoriesWithContributedPullRequests( - """ - Should the user's first pull request ever be excluded from this count. - """ + """Should the user's first pull request ever be excluded from this count.""" excludeFirst: Boolean = false """ @@ -1910,6 +2021,35 @@ type ConvertedNoteToIssueEvent implements Node { id: ID! } +"""Autogenerated input type of ConvertProjectCardNoteToIssue""" +input ConvertProjectCardNoteToIssueInput { + """The ProjectCard ID to convert.""" + projectCardId: ID! + + """The ID of the repository to create the issue in.""" + repositoryId: ID! + + """ + The title of the newly created issue. Defaults to the card's note text. + """ + title: String + + """The body of the newly created issue.""" + body: String + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of ConvertProjectCardNoteToIssue""" +type ConvertProjectCardNoteToIssuePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The updated ProjectCard.""" + projectCard: ProjectCard +} + """Autogenerated input type of CreateBranchProtectionRule""" input CreateBranchProtectionRuleInput { """ @@ -1993,13 +2133,9 @@ input CreateContentAttachmentInput { clientMutationId: String } -""" -Represents the contribution a user made by committing to a repository. -""" +"""Represents the contribution a user made by committing to a repository.""" type CreatedCommitContribution implements Contribution { - """ - How many commits were made on this day to this repository by the user. - """ + """How many commits were made on this day to this repository by the user.""" commitCount: Int! """ @@ -2056,9 +2192,7 @@ type CreatedCommitContributionEdge { node: CreatedCommitContribution } -""" -Represents the contribution a user made on GitHub by opening an issue. -""" +"""Represents the contribution a user made on GitHub by opening an issue.""" type CreatedIssueContribution implements Contribution { """ Whether this contribution is associated with a record you do not have access to. For @@ -2297,6 +2431,42 @@ Represents either a repository the viewer can access or a restricted contributio """ union CreatedRepositoryOrRestrictedContribution = CreatedRepositoryContribution | RestrictedContribution +"""Autogenerated input type of CreateIssue""" +input CreateIssueInput { + """The Node ID of the repository.""" + repositoryId: ID! + + """The title for the issue.""" + title: String! + + """The body for the issue description.""" + body: String + + """The Node ID for the user assignee for this issue.""" + assigneeIds: [ID!] + + """The Node ID of the milestone for this issue.""" + milestoneId: ID + + """An array of Node IDs of labels for this issue.""" + labelIds: [ID!] + + """An array of Node IDs for projects associated with this issue.""" + projectIds: [ID!] + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of CreateIssue""" +type CreateIssuePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The new issue.""" + issue: Issue +} + """Autogenerated input type of CreateProject""" input CreateProjectInput { """The owner ID to create the project under.""" @@ -2460,6 +2630,21 @@ type DeleteBranchProtectionRulePayload { clientMutationId: String } +"""Autogenerated input type of DeleteIssueComment""" +input DeleteIssueCommentInput { + """The ID of the comment to delete.""" + id: ID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of DeleteIssueComment""" +type DeleteIssueCommentPayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + """Autogenerated input type of DeleteIssue""" input DeleteIssueInput { """The ID of the issue to delete.""" @@ -2469,6 +2654,15 @@ input DeleteIssueInput { clientMutationId: String } +"""Autogenerated return type of DeleteIssue""" +type DeleteIssuePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The repository the issue belonged to""" + repository: Repository +} + """Autogenerated input type of DeleteProjectCard""" input DeleteProjectCardInput { """The id of the card to delete.""" @@ -2693,9 +2887,7 @@ type Deployment implements Node { """A list of statuses associated with the deployment.""" statuses( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3004,9 +3196,7 @@ type FollowingConnection { type Gist implements Node & Starrable { """A list of comments associated with the gist""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3051,9 +3241,7 @@ type Gist implements Node & Starrable { """A list of users who have starred this starrable.""" stargazers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3135,9 +3323,7 @@ type GistComment implements Node & Comment & Deletable & Updatable & UpdatableCo """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3501,9 +3687,7 @@ type HeadRefForcePushedEvent implements Node { """Identifies the actor who performed the event.""" actor: Actor - """ - Identifies the after commit SHA for the 'head_ref_force_pushed' event. - """ + """Identifies the after commit SHA for the 'head_ref_force_pushed' event.""" afterCommit: Commit """ @@ -3541,18 +3725,18 @@ type HeadRefRestoredEvent implements Node { scalar HTML """ -The possible states in which authentication can be configured with an Identity Provider. +The possible states in which authentication can be configured with an identity provider. """ enum IdentityProviderConfigurationState { - """Authentication with an Identity Provider is configured and enforced.""" + """Authentication with an identity provider is configured and enforced.""" ENFORCED """ - Authentication with an Identity Provider is configured but not enforced. + Authentication with an identity provider is configured but not enforced. """ CONFIGURED - """Authentication with an Identity Provider is not configured.""" + """Authentication with an identity provider is not configured.""" UNCONFIGURED } @@ -3577,48 +3761,16 @@ input ImportProjectInput { clientMutationId: String } -"""Autogenerated input type of InviteBusinessAdmin""" -input InviteBusinessAdminInput { - """The ID of the business to which you want to invite an administrator.""" - businessId: ID! - - """The login of a user to invite as an administrator.""" - invitee: String - - """The email of the person to invite as an administrator.""" - email: String - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of InviteBusinessBillingManager""" -input InviteBusinessBillingManagerInput { - """The ID of the business to which you want to invite a billing manager.""" - businessId: ID! - - """The login of a user to invite as a billing manager.""" - invitee: String - - """The email of the person to invite as a billing manager.""" - email: String - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -""" -An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project. -""" -type Issue implements Node & Assignable & Closable & Comment & Updatable & UpdatableComment & Labelable & Lockable & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable { - """Reason that the conversation was locked.""" - activeLockReason: LockReason +""" +An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project. +""" +type Issue implements Node & Assignable & Closable & Comment & Updatable & UpdatableComment & Labelable & Lockable & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable { + """Reason that the conversation was locked.""" + activeLockReason: LockReason """A list of Users assigned to this object.""" assignees( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3658,9 +3810,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of comments associated with the Issue.""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3695,9 +3845,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of labels associated with the object.""" labels( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3726,9 +3874,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of Users that are participating in the Issue conversation.""" participants( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3745,9 +3891,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """List of project cards associated with this issue.""" projectCards( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3773,9 +3917,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3810,9 +3952,33 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """Allows filtering timeline events by a `since` timestamp.""" since: DateTime + """Returns the elements in the list that come after the specified cursor.""" + after: String + """ - Returns the elements in the list that come after the specified cursor. + Returns the elements in the list that come before the specified cursor. """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): IssueTimelineConnection! + + """A list of events, comments, commits, etc. associated with the issue.""" + timelineItems( + """Filter timeline items by a `since` timestamp.""" + since: DateTime + + """Skips the first _n_ elements in the list.""" + skip: Int + + """Filter timeline items by type.""" + itemTypes: [IssueTimelineItemsItemType!] + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3825,7 +3991,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """Returns the last _n_ elements from the list.""" last: Int - ): IssueTimelineConnection! + ): IssueTimelineItemsConnection! """Identifies the issue title.""" title: String! @@ -3838,9 +4004,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3940,9 +4104,7 @@ type IssueComment implements Node & Comment & Deletable & Updatable & UpdatableC """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -3977,9 +4139,7 @@ type IssueComment implements Node & Comment & Deletable & Updatable & UpdatableC """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -4052,6 +4212,32 @@ type IssueConnection { totalCount: Int! } +"""This aggregates issues opened by a user within one repository.""" +type IssueContributionsByRepository { + """The issue contributions.""" + contributions( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + + """Ordering options for contributions returned from the connection.""" + orderBy: ContributionOrder + ): CreatedIssueContributionConnection! + + """The repository in which the issues were opened.""" + repository: Repository! +} + """An edge in a connection.""" type IssueEdge { """A cursor for use in pagination.""" @@ -4061,6 +4247,40 @@ type IssueEdge { node: Issue } +"""Ways in which to filter lists of issues.""" +input IssueFilters { + """ + List issues assigned to given name. Pass in `null` for issues with no assigned + user, and `*` for issues assigned to any user. + """ + assignee: String + + """List issues created by given name.""" + createdBy: String + + """List issues where the list of label names exist on the issue.""" + labels: [String!] + + """List issues where the given name is mentioned in the issue.""" + mentioned: String + + """ + List issues by given milestone argument. If an string representation of an + integer is passed, it should refer to a milestone by its number field. Pass in + `null` for issues with no milestone, and `*` for issues that are assigned to any milestone. + """ + milestone: String + + """List issues that have been updated at or after the given date.""" + since: DateTime + + """List issues filtered by the list of states given.""" + states: [IssueState!] + + """List issues subscribed to by viewer.""" + viewerSubscribed: Boolean = false +} + """Ways in which lists of issues can be ordered upon return.""" input IssueOrder { """The field in which to order issues by.""" @@ -4125,7 +4345,7 @@ type IssueTimelineConnection { } """An item in an issue timeline""" -union IssueTimelineItem = Commit | IssueComment | CrossReferencedEvent | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | ReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | TransferredEvent +union IssueTimelineItem = Commit | IssueComment | CrossReferencedEvent | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | ReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | UserBlockedEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | TransferredEvent """An edge in a connection.""" type IssueTimelineItemEdge { @@ -4137,7 +4357,35 @@ type IssueTimelineItemEdge { } """An item in an issue timeline""" -union IssueTimelineItems = IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnpinnedEvent | UnsubscribedEvent +union IssueTimelineItems = IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UserBlockedEvent | UnpinnedEvent | UnsubscribedEvent + +"""The connection type for IssueTimelineItems.""" +type IssueTimelineItemsConnection { + """A list of edges.""" + edges: [IssueTimelineItemsEdge] + + """ + Identifies the count of items after applying `before` and `after` filters. + """ + filteredCount: Int! + + """A list of nodes.""" + nodes: [IssueTimelineItems] + + """ + Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. + """ + pageCount: Int! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! + + """Identifies the date and time when the timeline was last updated.""" + updatedAt: DateTime! +} """An edge in a connection.""" type IssueTimelineItemsEdge { @@ -4167,9 +4415,7 @@ enum IssueTimelineItemsItemType { """Represents a 'closed' event on any `Closable`.""" CLOSED_EVENT - """ - Represents a 'comment_deleted' event on a given issue or pull request. - """ + """Represents a 'comment_deleted' event on a given issue or pull request.""" COMMENT_DELETED_EVENT """ @@ -4229,6 +4475,9 @@ enum IssueTimelineItemsItemType { """Represents an 'unlocked' event on a given issue or pull request.""" UNLOCKED_EVENT + """Represents a 'user_blocked' event on a given user.""" + USER_BLOCKED_EVENT + """Represents an 'unpinned' event on a given issue or pull request.""" UNPINNED_EVENT @@ -4262,9 +4511,7 @@ type JoinedGitHubContribution implements Contribution { user: User! } -""" -A label for categorizing Issues or Milestones with a given Repository. -""" +"""A label for categorizing Issues or Milestones with a given Repository.""" type Label implements Node { """Identifies the label color.""" color: String! @@ -4290,9 +4537,10 @@ type Label implements Node { """A list of states to filter the issues by.""" states: [IssueState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Filtering options for issues returned from the connection.""" + filterBy: IssueFilters + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -4327,9 +4575,7 @@ type Label implements Node { """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -4361,9 +4607,7 @@ type Label implements Node { interface Labelable { """A list of labels associated with the object.""" labels( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -4666,7 +4910,7 @@ type MarketplaceListing implements Node { """ Whether this listing has been submitted for review from GitHub for approval to be displayed in the Marketplace. """ - hasApprovalBeenRequested: Boolean! + hasApprovalBeenRequested: Boolean! @deprecated(reason: "`hasApprovalBeenRequested` will be removed. Use `isVerificationPendingFromDraft` instead. Removal on 2019-10-01 UTC.") """Does this listing have any plans with a free trial?""" hasPublishedFreeTrialPlans: Boolean! @@ -4687,13 +4931,14 @@ type MarketplaceListing implements Node { """Whether this listing's app has been installed for the current viewer""" installedForViewer: Boolean! - """ - Whether this listing has been approved for display in the Marketplace. - """ - isApproved: Boolean! + """Whether this listing has been approved for display in the Marketplace.""" + isApproved: Boolean! @deprecated(reason: "`isApproved` will be removed. Use `isPublic` instead. Removal on 2019-10-01 UTC.") """Whether this listing has been removed from the Marketplace.""" - isDelisted: Boolean! + isArchived: Boolean! + + """Whether this listing has been removed from the Marketplace.""" + isDelisted: Boolean! @deprecated(reason: "`isDelisted` will be removed. Use `isArchived` instead. Removal on 2019-10-01 UTC.") """ Whether this listing is still an editable draft that has not been submitted @@ -4706,9 +4951,7 @@ type MarketplaceListing implements Node { """ isPaid: Boolean! - """ - Whether this listing has been approved for display in the Marketplace. - """ + """Whether this listing has been approved for display in the Marketplace.""" isPublic: Boolean! """ @@ -4764,7 +5007,9 @@ type MarketplaceListing implements Node { """The category that best describes the listing.""" primaryCategory: MarketplaceCategory! - """URL to the listing's privacy policy.""" + """ + URL to the listing's privacy policy, may return an empty string for listings that do not require a privacy policy URL. + """ privacyPolicyUrl: URI! """The HTTP path for the Marketplace listing.""" @@ -4788,7 +5033,10 @@ type MarketplaceListing implements Node { """An email address for support for this listing's app.""" supportEmail: String - """Either a URL or an email address for support for this listing's app.""" + """ + Either a URL or an email address for support for this listing's app, may + return an empty string for listings that do not require a support URL. + """ supportUrl: URI! """URL to the listing's terms of service.""" @@ -4835,7 +5083,7 @@ type MarketplaceListing implements Node { """ Can the current viewer request this listing be reviewed for display in - the Marketplace. + the Marketplace as verified. """ viewerCanRequestApproval: Boolean! @@ -4890,9 +5138,7 @@ interface MemberStatusable { Get the status messages members of this entity have set that are either public or visible only to the organization. """ memberStatuses( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5031,9 +5277,10 @@ type Milestone implements Node & Closable & UniformResourceLocatable { """A list of states to filter the issues by.""" states: [IssueState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Filtering options for issues returned from the connection.""" + filterBy: IssueFilters + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5068,9 +5315,7 @@ type Milestone implements Node & Closable & UniformResourceLocatable { """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5128,9 +5373,7 @@ type MilestonedEvent implements Node { createdAt: DateTime! id: ID! - """ - Identifies the milestone title associated with the 'milestoned' event. - """ + """Identifies the milestone title associated with the 'milestoned' event.""" milestoneTitle: String! """Object referenced by event.""" @@ -5263,9 +5506,15 @@ type Mutation { """Applies a suggested topic to the repository.""" acceptTopicSuggestion(input: AcceptTopicSuggestionInput!): AcceptTopicSuggestionPayload + """Adds assignees to an assignable object.""" + addAssigneesToAssignable(input: AddAssigneesToAssignableInput!): AddAssigneesToAssignablePayload + """Adds a comment to an Issue or Pull Request.""" addComment(input: AddCommentInput!): AddCommentPayload + """Adds labels to a labelable object.""" + addLabelsToLabelable(input: AddLabelsToLabelableInput!): AddLabelsToLabelablePayload + """ Adds a card to a ProjectColumn. Either `contentId` or `note` must be provided but **not** both. """ @@ -5289,12 +5538,31 @@ type Mutation { """Update your status on GitHub.""" changeUserStatus(input: ChangeUserStatusInput!): ChangeUserStatusPayload + """Clears all labels from a labelable object.""" + clearLabelsFromLabelable(input: ClearLabelsFromLabelableInput!): ClearLabelsFromLabelablePayload + + """ + Creates a new project by cloning configuration from an existing project. + """ + cloneProject(input: CloneProjectInput!): CloneProjectPayload + + """Close an issue.""" + closeIssue(input: CloseIssueInput!): CloseIssuePayload + """Close a pull request.""" closePullRequest(input: ClosePullRequestInput!): ClosePullRequestPayload + """ + Convert a project note card to one associated with a newly created issue. + """ + convertProjectCardNoteToIssue(input: ConvertProjectCardNoteToIssueInput!): ConvertProjectCardNoteToIssuePayload + """Create a new branch protection rule""" createBranchProtectionRule(input: CreateBranchProtectionRuleInput!): CreateBranchProtectionRulePayload + """Creates a new issue.""" + createIssue(input: CreateIssueInput!): CreateIssuePayload + """Creates a new project.""" createProject(input: CreateProjectInput!): CreateProjectPayload @@ -5307,6 +5575,12 @@ type Mutation { """Delete a branch protection rule""" deleteBranchProtectionRule(input: DeleteBranchProtectionRuleInput!): DeleteBranchProtectionRulePayload + """Deletes an Issue object.""" + deleteIssue(input: DeleteIssueInput!): DeleteIssuePayload + + """Deletes an IssueComment object.""" + deleteIssueComment(input: DeleteIssueCommentInput!): DeleteIssueCommentPayload + """Deletes a project.""" deleteProject(input: DeleteProjectInput!): DeleteProjectPayload @@ -5337,9 +5611,13 @@ type Mutation { """Moves a project column to another place.""" moveProjectColumn(input: MoveProjectColumnInput!): MoveProjectColumnPayload - """ - Removes outside collaborator from all repositories in an organization. - """ + """Removes assignees from an assignable object.""" + removeAssigneesFromAssignable(input: RemoveAssigneesFromAssignableInput!): RemoveAssigneesFromAssignablePayload + + """Removes labels from a Labelable object.""" + removeLabelsFromLabelable(input: RemoveLabelsFromLabelableInput!): RemoveLabelsFromLabelablePayload + + """Removes outside collaborator from all repositories in an organization.""" removeOutsideCollaborator(input: RemoveOutsideCollaboratorInput!): RemoveOutsideCollaboratorPayload """Removes a reaction from a subject.""" @@ -5348,6 +5626,9 @@ type Mutation { """Removes a star from a Starrable.""" removeStar(input: RemoveStarInput!): RemoveStarPayload + """Reopen a issue.""" + reopenIssue(input: ReopenIssueInput!): ReopenIssuePayload + """Reopen a pull request.""" reopenPullRequest(input: ReopenPullRequestInput!): ReopenPullRequestPayload @@ -5363,12 +5644,21 @@ type Mutation { """Unlock a lockable object""" unlockLockable(input: UnlockLockableInput!): UnlockLockablePayload + """Unmark an issue as a duplicate of another issue.""" + unmarkIssueAsDuplicate(input: UnmarkIssueAsDuplicateInput!): UnmarkIssueAsDuplicatePayload + """Marks a review thread as unresolved.""" unresolveReviewThread(input: UnresolveReviewThreadInput!): UnresolveReviewThreadPayload """Create a new branch protection rule""" updateBranchProtectionRule(input: UpdateBranchProtectionRuleInput!): UpdateBranchProtectionRulePayload + """Updates an Issue.""" + updateIssue(input: UpdateIssueInput!): UpdateIssuePayload + + """Updates an IssueComment object.""" + updateIssueComment(input: UpdateIssueCommentInput!): UpdateIssueCommentPayload + """Updates an existing project.""" updateProject(input: UpdateProjectInput!): UpdateProjectPayload @@ -5414,7 +5704,15 @@ enum OrderDirection { """ An account on GitHub, with one or more owners, that has repositories, members and teams. """ -type Organization implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable & MemberStatusable { +type Organization implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable & MemberStatusable & ProfileOwner { + """ + Determine if this repository owner has any items that can be pinned to their profile. + """ + anyPinnableItems( + """Filter to only a particular kind of pinnable item.""" + type: PinnableItemType + ): Boolean! + """A URL pointing to the organization's public avatar.""" avatarUrl( """The size of the resulting square image.""" @@ -5434,6 +5732,12 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Whether the organization has verified its profile email and website.""" isVerified: Boolean! + """ + Showcases a selection of repositories and gists that the profile owner has + either curated or that have been selected automatically based on popularity. + """ + itemShowcase: ProfileItemShowcase! + """The organization's public profile location.""" location: String @@ -5444,9 +5748,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka Get the status messages members of this entity have set that are either public or visible only to the organization. """ memberStatuses( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5464,30 +5766,9 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka orderBy: UserStatusOrder ): UserStatusConnection! - """A list of users who are members of this organization.""" - members( - """ - Returns the elements in the list that come after the specified cursor. - """ - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): UserConnection! @deprecated(reason: "The `members` field is deprecated and will be removed soon. Use `Organization.membersWithRole` instead. Removal on 2019-04-01 UTC.") - """A list of users who are members of this organization.""" membersWithRole( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5516,9 +5797,29 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """A list of users who have been invited to join this organization.""" pendingMembers( + """Returns the elements in the list that come after the specified cursor.""" + after: String + """ - Returns the elements in the list that come after the specified cursor. + Returns the elements in the list that come before the specified cursor. """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): UserConnection! + + """ + A list of repositories and gists this profile owner can pin to their profile. + """ + pinnableItems( + """Filter the types of pinnable items that are returned.""" + types: [PinnableItemType!] + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5531,7 +5832,34 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Returns the last _n_ elements from the list.""" last: Int - ): UserConnection! + ): PinnableItemConnection! + + """ + A list of repositories and gists this profile owner has pinned to their profile + """ + pinnedItems( + """Filter the types of pinned items that are returned.""" + types: [PinnableItemType!] + + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PinnableItemConnection! + + """ + Returns how many more items this profile owner can pin to their profile. + """ + pinnedItemsRemaining: Int! """A list of repositories this user has pinned to their profile""" pinnedRepositories( @@ -5560,9 +5888,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5575,7 +5901,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Returns the last _n_ elements from the list.""" last: Int - ): RepositoryConnection! + ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-07-01 UTC.") """Find project by number.""" project( @@ -5594,9 +5920,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """A list of states to filter the projects by.""" states: [ProjectState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5644,9 +5968,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5681,7 +6003,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """The HTTP path for this organization.""" resourcePath: URI! - """The Organization's SAML Identity Providers""" + """The Organization's SAML identity providers""" samlIdentityProvider: OrganizationIdentityProvider """Find an organization's team by its slug.""" @@ -5717,9 +6039,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """If true, restrict to only root teams""" rootTeamsOnly: Boolean = false - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5746,6 +6066,9 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Organization is adminable by the viewer.""" viewerCanAdminister: Boolean! + """Can the viewer pin repositories and gists to the profile?""" + viewerCanChangePinnedItems: Boolean! + """Can the current viewer create new projects on this owner.""" viewerCanCreateProjects: Boolean! @@ -5797,9 +6120,7 @@ type OrganizationIdentityProvider implements Node { """External Identities provisioned by this Identity Provider""" externalIdentities( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -5964,6 +6285,21 @@ type PageInfo { startCursor: String } +"""Types that can grant permissions on a repository to a user""" +union PermissionGranter = Organization | Repository | Team + +"""A level of permission and source for a user's access to a repository.""" +type PermissionSource { + """The organization the repository belongs to.""" + organization: Organization! + + """The level of access this source has granted to the user.""" + permission: DefaultRepositoryPermissionField! + + """The source of this permission.""" + source: PermissionGranter! +} + """Autogenerated input type of PinIssue""" input PinIssueInput { """The ID of the issue to be pinned""" @@ -5973,6 +6309,42 @@ input PinIssueInput { clientMutationId: String } +"""Types that can be pinned to a profile page.""" +union PinnableItem = Gist | Repository + +"""The connection type for PinnableItem.""" +type PinnableItemConnection { + """A list of edges.""" + edges: [PinnableItemEdge] + + """A list of nodes.""" + nodes: [PinnableItem] + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! +} + +"""An edge in a connection.""" +type PinnableItemEdge { + """A cursor for use in pagination.""" + cursor: String! + + """The item at the end of the edge.""" + node: PinnableItem +} + +"""Represents items that can be pinned to a profile page.""" +enum PinnableItemType { + """A repository.""" + REPOSITORY + + """A gist.""" + GIST +} + """Represents a 'pinned' event on a given issue or pull request.""" type PinnedEvent implements Node { """Identifies the actor who performed the event.""" @@ -5986,6 +6358,121 @@ type PinnedEvent implements Node { issue: Issue! } +""" +A curatable list of repositories relating to a repository owner, which defaults +to showing the most popular repositories they own. +""" +type ProfileItemShowcase { + """Whether or not the owner has pinned any repositories or gists.""" + hasPinnedItems: Boolean! + + """ + The repositories and gists in the showcase. If the profile owner has any + pinned items, those will be returned. Otherwise, the profile owner's popular + repositories will be returned. + """ + items( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PinnableItemConnection! +} + +"""Represents any entity on GitHub that has a profile page.""" +interface ProfileOwner { + """ + Determine if this repository owner has any items that can be pinned to their profile. + """ + anyPinnableItems( + """Filter to only a particular kind of pinnable item.""" + type: PinnableItemType + ): Boolean! + + """The public profile email.""" + email: String + id: ID! + + """ + Showcases a selection of repositories and gists that the profile owner has + either curated or that have been selected automatically based on popularity. + """ + itemShowcase: ProfileItemShowcase! + + """The public profile location.""" + location: String + + """The username used to login.""" + login: String! + + """The public profile name.""" + name: String + + """ + A list of repositories and gists this profile owner can pin to their profile. + """ + pinnableItems( + """Filter the types of pinnable items that are returned.""" + types: [PinnableItemType!] + + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PinnableItemConnection! + + """ + A list of repositories and gists this profile owner has pinned to their profile + """ + pinnedItems( + """Filter the types of pinned items that are returned.""" + types: [PinnableItemType!] + + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PinnableItemConnection! + + """ + Returns how many more items this profile owner can pin to their profile. + """ + pinnedItemsRemaining: Int! + + """Can the viewer pin repositories and gists to the profile?""" + viewerCanChangePinnedItems: Boolean! + + """The public profile website URL.""" + websiteUrl: URI +} + """ Projects manage issues, pull requests and notes within a project owner. """ @@ -6006,9 +6493,7 @@ type Project implements Node & Closable & Updatable { """List of columns in the project""" columns( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6046,9 +6531,7 @@ type Project implements Node & Closable & Updatable { """List of pending cards in this project""" pendingCards( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6161,9 +6644,7 @@ type ProjectCardEdge { node: ProjectCard } -""" -An issue or PR and its owning repository to be used in a project card. -""" +"""An issue or PR and its owning repository to be used in a project card.""" input ProjectCardImport { """Repository name with owner (owner/repository).""" repository: String! @@ -6191,9 +6672,7 @@ enum ProjectCardState { type ProjectColumn implements Node { """List of cards in the column""" cards( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6351,9 +6830,7 @@ interface ProjectOwner { """A list of states to filter the projects by.""" states: [ProjectState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6378,116 +6855,13 @@ interface ProjectOwner { viewerCanCreateProjects: Boolean! } -"""State of the project; either 'open' or 'closed'""" -enum ProjectState { - """The project is open.""" - OPEN - - """The project is closed.""" - CLOSED -} - -"""A repository protected branch.""" -type ProtectedBranch implements Node { - """The actor who created this protected branch.""" - creator: Actor - - """ - Will new commits pushed to this branch dismiss pull request review approvals. - """ - hasDismissableStaleReviews: Boolean! - - """Are reviews required to update this branch.""" - hasRequiredReviews: Boolean! - - """Are status checks required to update this branch.""" - hasRequiredStatusChecks: Boolean! - - """Is pushing to this branch restricted.""" - hasRestrictedPushes: Boolean! - - """Is dismissal of pull request reviews restricted.""" - hasRestrictedReviewDismissals: Boolean! - - """Are branches required to be up to date before merging.""" - hasStrictRequiredStatusChecks: Boolean! - id: ID! - - """Can admins overwrite branch protection.""" - isAdminEnforced: Boolean! - - """The name of the protected branch rule.""" - name: String! - - """A list push allowances for this protected branch.""" - pushAllowances( - """ - Returns the elements in the list that come after the specified cursor. - """ - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PushAllowanceConnection! - - """The repository associated with this protected branch.""" - repository: Repository! - - """ - List of required status check contexts that must pass for commits to be accepted to this branch. - """ - requiredStatusCheckContexts: [String] - - """A list review dismissal allowances for this protected branch.""" - reviewDismissalAllowances( - """ - Returns the elements in the list that come after the specified cursor. - """ - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): ReviewDismissalAllowanceConnection! -} - -"""The connection type for ProtectedBranch.""" -type ProtectedBranchConnection { - """A list of edges.""" - edges: [ProtectedBranchEdge] - - """A list of nodes.""" - nodes: [ProtectedBranch] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""An edge in a connection.""" -type ProtectedBranchEdge { - """A cursor for use in pagination.""" - cursor: String! +"""State of the project; either 'open' or 'closed'""" +enum ProjectState { + """The project is open.""" + OPEN - """The item at the end of the edge.""" - node: ProtectedBranch + """The project is closed.""" + CLOSED } """A user's public key.""" @@ -6546,9 +6920,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of Users assigned to this object.""" assignees( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6582,6 +6954,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """ baseRefOid: GitObjectID! + """The repository associated with this pull request's base Ref.""" + baseRepository: Repository + """The body as Markdown.""" body: String! @@ -6602,9 +6977,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of comments associated with the pull request.""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6623,9 +6996,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & A list of commits present in this pull request's head branch not present in the base branch. """ commits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6657,9 +7028,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Lists the files changed within this pull request.""" files( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6706,9 +7075,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of labels associated with the object.""" labels( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6759,9 +7126,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & A list of Users that are participating in the Pull Request conversation. """ participants( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6789,9 +7154,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """List of project cards associated with this pull request.""" projectCards( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6817,9 +7180,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6854,9 +7215,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of review requests associated with the pull request.""" reviewRequests( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6873,9 +7232,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """The list of all review threads for this pull request.""" reviewThreads( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6892,9 +7249,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of reviews associated with the pull request.""" reviews( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6930,9 +7285,35 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Allows filtering timeline events by a `since` timestamp.""" since: DateTime + """Returns the elements in the list that come after the specified cursor.""" + after: String + """ - Returns the elements in the list that come after the specified cursor. + Returns the elements in the list that come before the specified cursor. """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PullRequestTimelineConnection! + + """ + A list of events, comments, commits, etc. associated with the pull request. + """ + timelineItems( + """Filter timeline items by a `since` timestamp.""" + since: DateTime + + """Skips the first _n_ elements in the list.""" + skip: Int + + """Filter timeline items by type.""" + itemTypes: [PullRequestTimelineItemsItemType!] + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -6945,7 +7326,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Returns the last _n_ elements from the list.""" last: Int - ): PullRequestTimelineConnection! + ): PullRequestTimelineItemsConnection! """Identifies the pull request title.""" title: String! @@ -6958,9 +7339,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7053,6 +7432,42 @@ type PullRequestCommit implements Node & UniformResourceLocatable { url: URI! } +"""Represents a commit comment thread part of a pull request.""" +type PullRequestCommitCommentThread implements Node & RepositoryNode { + """The comments that exist in this thread.""" + comments( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): CommitCommentConnection! + + """The commit the comments were made on.""" + commit: Commit! + id: ID! + + """The file the comments were made on.""" + path: String + + """The position in the diff for the commit that the comment was made on.""" + position: Int + + """The pull request this commit comment thread belongs to""" + pullRequest: PullRequest! + + """The repository associated with this node.""" + repository: Repository! +} + """The connection type for PullRequestCommit.""" type PullRequestCommitConnection { """A list of edges.""" @@ -7092,6 +7507,32 @@ type PullRequestConnection { totalCount: Int! } +"""This aggregates pull requests opened by a user within one repository.""" +type PullRequestContributionsByRepository { + """The pull request contributions.""" + contributions( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + + """Ordering options for contributions returned from the connection.""" + orderBy: ContributionOrder + ): CreatedPullRequestContributionConnection! + + """The repository in which the pull requests were opened.""" + repository: Repository! +} + """An edge in a connection.""" type PullRequestEdge { """A cursor for use in pagination.""" @@ -7156,9 +7597,7 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of review comments for the current pull request review.""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7199,9 +7638,7 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of teams that this review was made on behalf of.""" onBehalfOf( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7227,9 +7664,7 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7270,9 +7705,7 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7385,9 +7818,7 @@ type PullRequestReviewComment implements Node & Comment & Deletable & Updatable """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7428,9 +7859,7 @@ type PullRequestReviewComment implements Node & Comment & Deletable & Updatable """A list of edits to this content.""" userContentEdits( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7512,6 +7941,34 @@ type PullRequestReviewConnection { totalCount: Int! } +""" +This aggregates pull request reviews made by a user within one repository. +""" +type PullRequestReviewContributionsByRepository { + """The pull request review contributions.""" + contributions( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + + """Ordering options for contributions returned from the connection.""" + orderBy: ContributionOrder + ): CreatedPullRequestReviewContributionConnection! + + """The repository in which the pull request reviews were made.""" + repository: Repository! +} + """An edge in a connection.""" type PullRequestReviewEdge { """A cursor for use in pagination.""" @@ -7558,9 +8015,7 @@ enum PullRequestReviewState { type PullRequestReviewThread implements Node { """A list of pull request comments associated with the thread.""" comments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7619,6 +8074,20 @@ type PullRequestReviewThreadEdge { node: PullRequestReviewThread } +""" +Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits. +""" +type PullRequestRevisionMarker { + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + + """The last commit the viewer has seen.""" + lastSeenCommit: Commit! + + """The pull request to which the marker belongs.""" + pullRequest: PullRequest! +} + """The possible states of a pull request.""" enum PullRequestState { """A pull request that is still open.""" @@ -7647,7 +8116,7 @@ type PullRequestTimelineConnection { } """An item in an pull request timeline""" -union PullRequestTimelineItem = Commit | CommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestReviewComment | IssueComment | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | MergedEvent | ReferencedEvent | CrossReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefRestoredEvent | HeadRefForcePushedEvent | BaseRefForcePushedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | ReviewDismissedEvent +union PullRequestTimelineItem = Commit | CommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestReviewComment | IssueComment | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | MergedEvent | ReferencedEvent | CrossReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefRestoredEvent | HeadRefForcePushedEvent | BaseRefForcePushedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | ReviewDismissedEvent | UserBlockedEvent """An edge in a connection.""" type PullRequestTimelineItemEdge { @@ -7659,7 +8128,35 @@ type PullRequestTimelineItemEdge { } """An item in a pull request timeline""" -union PullRequestTimelineItems = PullRequestCommit | PullRequestReview | PullRequestReviewThread | BaseRefChangedEvent | BaseRefForcePushedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefForcePushedEvent | HeadRefRestoredEvent | MergedEvent | ReviewDismissedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnpinnedEvent | UnsubscribedEvent +union PullRequestTimelineItems = PullRequestCommit | PullRequestCommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestRevisionMarker | BaseRefChangedEvent | BaseRefForcePushedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefForcePushedEvent | HeadRefRestoredEvent | MergedEvent | ReviewDismissedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UserBlockedEvent | UnpinnedEvent | UnsubscribedEvent + +"""The connection type for PullRequestTimelineItems.""" +type PullRequestTimelineItemsConnection { + """A list of edges.""" + edges: [PullRequestTimelineItemsEdge] + + """ + Identifies the count of items after applying `before` and `after` filters. + """ + filteredCount: Int! + + """A list of nodes.""" + nodes: [PullRequestTimelineItems] + + """ + Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. + """ + pageCount: Int! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! + + """Identifies the date and time when the timeline was last updated.""" + updatedAt: DateTime! +} """An edge in a connection.""" type PullRequestTimelineItemsEdge { @@ -7745,9 +8242,7 @@ enum PullRequestTimelineItemsItemType { """Represents a 'closed' event on any `Closable`.""" CLOSED_EVENT - """ - Represents a 'comment_deleted' event on a given issue or pull request. - """ + """Represents a 'comment_deleted' event on a given issue or pull request.""" COMMENT_DELETED_EVENT """ @@ -7807,6 +8302,9 @@ enum PullRequestTimelineItemsItemType { """Represents an 'unlocked' event on a given issue or pull request.""" UNLOCKED_EVENT + """Represents a 'user_blocked' event on a given user.""" + USER_BLOCKED_EVENT + """Represents an 'unpinned' event on a given issue or pull request.""" UNPINNED_EVENT @@ -7904,9 +8402,7 @@ type Query { """Look up Marketplace listings""" marketplaceListings( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8017,9 +8513,7 @@ type Query { """Perform a search across resources.""" search( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8054,9 +8548,7 @@ type Query { """Filter advisories to those updated since a time in the past.""" updatedSince: DateTime - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8091,9 +8583,7 @@ type Query { """A list of severities to filter vulnerabilities by.""" severities: [SecurityAdvisorySeverity!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8157,9 +8647,7 @@ interface Reactable { """A list of Reactions left on the Issue.""" reactions( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8299,9 +8787,7 @@ type ReactionGroup { Users who have reacted to the reaction subject with the emotion represented by this reaction group """ users( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8356,9 +8842,7 @@ type Ref implements Node { """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8459,17 +8943,6 @@ enum RefOrderField { ALPHABETICAL } -""" -Autogenerated input type of RegenerateBusinessIdentityProviderRecoveryCodes -""" -input RegenerateBusinessIdentityProviderRecoveryCodesInput { - """The ID of the business on which to set an Identity Provider.""" - businessId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """Represents an owner of a registry package.""" interface RegistryPackageOwner { id: ID! @@ -8506,9 +8979,7 @@ type Release implements Node & UniformResourceLocatable { """List of releases assets which are dependent on this release.""" releaseAssets( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8644,34 +9115,22 @@ enum ReleaseOrderField { NAME } -"""Autogenerated input type of RemoveBusinessAdmin""" -input RemoveBusinessAdminInput { - """The Business ID to update.""" - businessId: ID! - - """The login of the user to add as an admin.""" - login: String! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of RemoveBusinessBillingManager""" -input RemoveBusinessBillingManagerInput { - """The Business ID to update.""" - businessId: ID! +"""Autogenerated input type of RemoveAssigneesFromAssignable""" +input RemoveAssigneesFromAssignableInput { + """The id of the assignable object to remove assignees from.""" + assignableId: ID! - """The login of the user to add as a billing manager.""" - login: String! + """The id of users to remove as assignees.""" + assigneeIds: [ID!]! """A unique identifier for the client performing the mutation.""" clientMutationId: String } -"""Autogenerated input type of RemoveBusinessIdentityProvider""" -input RemoveBusinessIdentityProviderInput { - """The ID of the business from which to remove the Identity Provider.""" - businessId: ID! +"""Autogenerated return type of RemoveAssigneesFromAssignable""" +type RemoveAssigneesFromAssignablePayload { + """The item that was unassigned.""" + assignable: Assignable """A unique identifier for the client performing the mutation.""" clientMutationId: String @@ -8692,6 +9151,27 @@ type RemovedFromProjectEvent implements Node { id: ID! } +"""Autogenerated input type of RemoveLabelsFromLabelable""" +input RemoveLabelsFromLabelableInput { + """The id of the Labelable to remove labels from.""" + labelableId: ID! + + """The ids of labels to remove.""" + labelIds: [ID!]! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of RemoveLabelsFromLabelable""" +type RemoveLabelsFromLabelablePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The Labelable the labels were removed from.""" + labelable: Labelable +} + """Autogenerated input type of RemoveOutsideCollaborator""" input RemoveOutsideCollaboratorInput { """The ID of the outside collaborator to remove.""" @@ -8790,6 +9270,24 @@ type ReopenedEvent implements Node { id: ID! } +"""Autogenerated input type of ReopenIssue""" +input ReopenIssueInput { + """ID of the issue to be opened.""" + issueId: ID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of ReopenIssue""" +type ReopenIssuePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The issue that was opened.""" + issue: Issue +} + """Autogenerated input type of ReopenPullRequest""" input ReopenPullRequestInput { """ID of the pull request to be reopened.""" @@ -8830,9 +9328,7 @@ enum ReportedContentClassifiers { type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscribable & Starrable & UniformResourceLocatable & RepositoryInfo { """A list of users that can be assigned to issues in this repository.""" assignableUsers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8849,9 +9345,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of branch protection rules for this repository.""" branchProtectionRules( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8874,9 +9368,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Collaborators affiliation level with a repository.""" affiliation: CollaboratorAffiliation - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8893,9 +9385,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of commit comments associated with the repository.""" commitComments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8921,9 +9411,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of deploy keys that are on this repository.""" deployKeys( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -8946,9 +9434,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Ordering options for deployments returned from the connection.""" orderBy: DeploymentOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9004,9 +9490,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9034,6 +9518,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Indicates if the repository is unmaintained.""" isArchived: Boolean! + """Returns whether or not this repository disabled.""" + isDisabled: Boolean! + """Identifies if the repository is a fork.""" isFork: Boolean! @@ -9071,9 +9558,10 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of states to filter the issues by.""" states: [IssueState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Filtering options for issues returned from the connection.""" + filterBy: IssueFilters + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9096,9 +9584,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of labels associated with the repository.""" labels( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9120,9 +9606,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib A list containing a breakdown of the language composition of the repository. """ languages( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9150,9 +9634,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib A list of Users that can be mentioned in the context of the repository. """ mentionableUsers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9178,9 +9660,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of milestones associated with the repository.""" milestones( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9245,9 +9725,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of states to filter the projects by.""" states: [ProjectState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9268,25 +9746,6 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """The HTTP URL listing the repository's projects""" projectsUrl: URI! - """A list of protected branches that are on this repository.""" - protectedBranches( - """ - Returns the elements in the list that come after the specified cursor. - """ - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): ProtectedBranchConnection! @deprecated(reason: "The `ProtectedBranch` type is deprecated and will be removed soon. Use `Repository.branchProtectionRules` instead. Removal on 2019-01-01 UTC.") - """Returns a single pull request from the current repository by number.""" pullRequest( """The number for the pull request to be returned.""" @@ -9310,9 +9769,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9344,9 +9801,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Fetch a list of refs from the repository""" refs( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9378,9 +9833,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """List of releases which are dependent on this repository.""" releases( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9400,9 +9853,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of applied repository-topic associations for this repository.""" repositoryTopics( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9436,9 +9887,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of users who have starred this starrable.""" stargazers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9462,9 +9911,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """The HTTP URL for this repository""" url: URI! - """ - Indicates whether the viewer has admin permissions on this repository. - """ + """Indicates whether the viewer has admin permissions on this repository.""" viewerCanAdminister: Boolean! """Can the current viewer create new projects on this owner.""" @@ -9475,9 +9922,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """ viewerCanSubscribe: Boolean! - """ - Indicates whether the viewer can update the topics of this repository. - """ + """Indicates whether the viewer can update the topics of this repository.""" viewerCanUpdateTopics: Boolean! """ @@ -9497,9 +9942,7 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of users watching the repository.""" watchers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9562,6 +10005,9 @@ type RepositoryCollaboratorEdge { """The permission the user has on the repository.""" permission: RepositoryPermission! + + """A list of sources for the user's access to the repository.""" + permissionSources: [PermissionSource!] } """A list of repositories owned by the subject.""" @@ -9801,9 +10247,7 @@ interface RepositoryOwner { """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -9816,7 +10260,7 @@ interface RepositoryOwner { """Returns the last _n_ elements from the list.""" last: Int - ): RepositoryConnection! + ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-07-01 UTC.") """A list of repositories that the user owns.""" repositories( @@ -9845,9 +10289,7 @@ interface RepositoryOwner { """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10275,9 +10717,7 @@ type SecurityAdvisory implements Node { """A list of severities to filter vulnerabilities by.""" severities: [SecurityAdvisorySeverity!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10482,34 +10922,12 @@ input SecurityVulnerabilityOrder { direction: OrderDirection! } -""" -Properties by which security vulnerability connections can be ordered. -""" +"""Properties by which security vulnerability connections can be ordered.""" enum SecurityVulnerabilityOrderField { """Order vulnerability by update time""" UPDATED_AT } -"""Autogenerated input type of SetBusinessIdentityProvider""" -input SetBusinessIdentityProviderInput { - """The ID of the business on which to set an Identity Provider.""" - businessId: ID! - - """The URL endpoint for the Identity Provider's SAML SSO.""" - ssoUrl: URI! - - """The Issuer Entity ID for the SAML Identity Provider""" - issuer: String - - """ - The x509 certificate used by the Identity Provider to sign assertions and responses. - """ - idpCertificate: String! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """Represents an S/MIME signature on a Commit or Tag.""" type SmimeSignature implements GitSignature { """Email used to sign this object.""" @@ -10585,9 +11003,7 @@ interface Starrable { """A list of users who have starred this starrable.""" stargazers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10811,9 +11227,7 @@ type Tag implements Node & GitObject { type Team implements Node & Subscribable & MemberStatusable { """A list of teams that are ancestors of this team.""" ancestors( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10845,9 +11259,7 @@ type Team implements Node & Subscribable & MemberStatusable { """Whether to list immediate child teams or all descendant child teams.""" immediateOnly: Boolean = true - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10880,9 +11292,7 @@ type Team implements Node & Subscribable & MemberStatusable { """A list of pending invitations for users to this team""" invitations( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10901,9 +11311,7 @@ type Team implements Node & Subscribable & MemberStatusable { Get the status messages members of this entity have set that are either public or visible only to the organization. """ memberStatuses( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10923,9 +11331,7 @@ type Team implements Node & Subscribable & MemberStatusable { """A list of users who are members of this team.""" members( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -10978,9 +11384,7 @@ type Team implements Node & Subscribable & MemberStatusable { """A list of repositories this team has access to.""" repositories( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -11268,9 +11672,7 @@ type Topic implements Node & Starrable { """A list of users who have starred this starrable.""" stargazers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -11495,6 +11897,29 @@ type UnlockLockablePayload { unlockedRecord: Lockable } +"""Autogenerated input type of UnmarkIssueAsDuplicate""" +input UnmarkIssueAsDuplicateInput { + """ID of the issue or pull request currently marked as a duplicate.""" + duplicateId: ID! + + """ + ID of the issue or pull request currently considered canonical/authoritative/original. + """ + canonicalId: ID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of UnmarkIssueAsDuplicate""" +type UnmarkIssueAsDuplicatePayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The issue or pull request that was marked as a duplicate.""" + duplicate: IssueOrPullRequest +} + """Autogenerated input type of UnminimizeComment""" input UnminimizeCommentInput { """The Node ID of the subject to modify.""" @@ -11635,160 +12060,64 @@ type UpdateBranchProtectionRulePayload { clientMutationId: String } -""" -Autogenerated input type of UpdateBusinessAllowPrivateRepositoryForkingSetting -""" -input UpdateBusinessAllowPrivateRepositoryForkingSettingInput { - """ - The ID of the business on which to set the allow private repository forking setting. - """ - businessId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -""" -Autogenerated input type of UpdateBusinessDefaultRepositoryPermissionSetting -""" -input UpdateBusinessDefaultRepositoryPermissionSettingInput { - """ - The ID of the business on which to set the default repository permission setting. - """ - businessId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -""" -Autogenerated input type of UpdateBusinessMembersCanChangeRepositoryVisibilitySetting -""" -input UpdateBusinessMembersCanChangeRepositoryVisibilitySettingInput { - """ - The ID of the business on which to set the members can change repository visibility setting. - """ - businessId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -""" -Autogenerated input type of UpdateBusinessMembersCanCreateRepositoriesSetting -""" -input UpdateBusinessMembersCanCreateRepositoriesSettingInput { - """ - The ID of the business on which to set the members can create repositories setting. - """ - businessId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} +"""Autogenerated input type of UpdateIssueComment""" +input UpdateIssueCommentInput { + """The ID of the IssueComment to modify.""" + id: ID! -""" -Autogenerated input type of UpdateBusinessMembersCanDeleteIssuesSetting -""" -input UpdateBusinessMembersCanDeleteIssuesSettingInput { - """ - The ID of the business on which to set the members can delete issues setting. - """ - businessId: ID! + """The updated text of the comment.""" + body: String! """A unique identifier for the client performing the mutation.""" clientMutationId: String } -""" -Autogenerated input type of UpdateBusinessMembersCanDeleteRepositoriesSetting -""" -input UpdateBusinessMembersCanDeleteRepositoriesSettingInput { - """ - The ID of the business on which to set the members can delete repositories setting. - """ - businessId: ID! - +"""Autogenerated return type of UpdateIssueComment""" +type UpdateIssueCommentPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String -} - -""" -Autogenerated input type of UpdateBusinessMembersCanInviteCollaboratorsSetting -""" -input UpdateBusinessMembersCanInviteCollaboratorsSettingInput { - """ - The ID of the business on which to set the members can invite collaborators setting. - """ - businessId: ID! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + """The updated comment.""" + issueComment: IssueComment } -"""Autogenerated input type of UpdateBusinessOrganizationProjectsSetting""" -input UpdateBusinessOrganizationProjectsSettingInput { - """ - The ID of the business on which to set the organization projects setting. - """ - businessId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} +"""Autogenerated input type of UpdateIssue""" +input UpdateIssueInput { + """The ID of the Issue to modify.""" + id: ID! -"""Autogenerated input type of UpdateBusinessProfile""" -input UpdateBusinessProfileInput { - """The Business ID to update.""" - businessId: ID! + """The title for the issue.""" + title: String - """The name of business.""" - name: String + """The body for the issue description.""" + body: String - """The description of the business.""" - description: String + """An array of Node IDs of users for this issue.""" + assigneeIds: [ID!] - """The URL of the business's website""" - websiteUrl: String + """The Node ID of the milestone for this issue.""" + milestoneId: ID - """The location of the business""" - location: String + """An array of Node IDs of labels for this issue.""" + labelIds: [ID!] - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} + """The desired issue state.""" + state: IssueState -"""Autogenerated input type of UpdateBusinessRepositoryProjectsSetting""" -input UpdateBusinessRepositoryProjectsSettingInput { - """ - The ID of the business on which to set the repository projects setting. - """ - businessId: ID! + """An array of Node IDs for projects associated with this issue.""" + projectIds: [ID!] """A unique identifier for the client performing the mutation.""" clientMutationId: String } -"""Autogenerated input type of UpdateBusinessTeamDiscussionsSetting""" -input UpdateBusinessTeamDiscussionsSettingInput { - """The ID of the business on which to set the team discussions setting.""" - businessId: ID! - +"""Autogenerated return type of UpdateIssue""" +type UpdateIssuePayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String -} - -""" -Autogenerated input type of UpdateBusinessTwoFactorAuthenticationRequiredSetting -""" -input UpdateBusinessTwoFactorAuthenticationRequiredSettingInput { - """ - The ID of the business on which to set the two factor authentication required setting. - """ - businessId: ID! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + """The issue.""" + issue: Issue } """Autogenerated input type of UpdateProjectCard""" @@ -11993,7 +12322,15 @@ scalar URI """ A user is an individual's account on GitHub that owns repositories and can make new content. """ -type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable { +type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable & ProfileOwner { + """ + Determine if this repository owner has any items that can be pinned to their profile. + """ + anyPinnableItems( + """Filter to only a particular kind of pinnable item.""" + type: PinnableItemType + ): Boolean! + """A URL pointing to the user's public avatar.""" avatarUrl( """The size of the resulting square image.""" @@ -12008,9 +12345,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of commit comments made by this user.""" commitComments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12061,9 +12396,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of users the given user is followed by.""" followers( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12080,9 +12413,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of users the given user is following.""" following( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12105,9 +12436,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of gist comments made by this user.""" gistComments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12130,9 +12459,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Ordering options for gists returned from the connection""" orderBy: GistOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12175,9 +12502,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of issue comments made by this user.""" issueComments( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12203,9 +12528,10 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of states to filter the issues by.""" states: [IssueState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Filtering options for issues returned from the connection.""" + filterBy: IssueFilters + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12220,6 +12546,12 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch last: Int ): IssueConnection! + """ + Showcases a selection of repositories and gists that the profile owner has + either curated or that have been selected automatically based on popularity. + """ + itemShowcase: ProfileItemShowcase! + """The user's public profile location.""" location: String @@ -12237,9 +12569,51 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of organizations the user belongs to.""" organizations( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): OrganizationConnection! + + """ + A list of repositories and gists this profile owner can pin to their profile. + """ + pinnableItems( + """Filter the types of pinnable items that are returned.""" + types: [PinnableItemType!] + + """Returns the elements in the list that come after the specified cursor.""" + after: String + """ - Returns the elements in the list that come after the specified cursor. + Returns the elements in the list that come before the specified cursor. """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PinnableItemConnection! + + """ + A list of repositories and gists this profile owner has pinned to their profile + """ + pinnedItems( + """Filter the types of pinned items that are returned.""" + types: [PinnableItemType!] + + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12252,7 +12626,12 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Returns the last _n_ elements from the list.""" last: Int - ): OrganizationConnection! + ): PinnableItemConnection! + + """ + Returns how many more items this profile owner can pin to their profile. + """ + pinnedItemsRemaining: Int! """A list of repositories this user has pinned to their profile""" pinnedRepositories( @@ -12281,9 +12660,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12296,7 +12673,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Returns the last _n_ elements from the list.""" last: Int - ): RepositoryConnection! + ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-07-01 UTC.") """Find project by number.""" project( @@ -12315,9 +12692,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of states to filter the projects by.""" states: [ProjectState!] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12340,9 +12715,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of public keys associated with this user.""" publicKeys( - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12374,9 +12747,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12418,9 +12789,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12462,9 +12831,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ contributionTypes: [RepositoryContributionType] - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12498,9 +12865,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Order for connection""" orderBy: StarOrder - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12524,6 +12889,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """The HTTP URL for this user""" url: URI! + """Can the viewer pin repositories and gists to the profile?""" + viewerCanChangePinnedItems: Boolean! + """Can the current viewer create new projects on this owner.""" viewerCanCreateProjects: Boolean! @@ -12556,9 +12924,7 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ isLocked: Boolean - """ - Returns the elements in the list that come after the specified cursor. - """ + """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -12577,6 +12943,40 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch websiteUrl: URI } +"""The possible durations that a user can be blocked for.""" +enum UserBlockDuration { + """The user was blocked for 1 day""" + ONE_DAY + + """The user was blocked for 3 days""" + THREE_DAYS + + """The user was blocked for 7 days""" + ONE_WEEK + + """The user was blocked for 30 days""" + ONE_MONTH + + """The user was blocked permanently""" + PERMANENT +} + +"""Represents a 'user_blocked' event on a given user.""" +type UserBlockedEvent implements Node { + """Identifies the actor who performed the event.""" + actor: Actor + + """Number of days that the user was blocked for.""" + blockDuration: UserBlockDuration! + + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + id: ID! + + """The user who was blocked.""" + subject: User +} + """The connection type for User.""" type UserConnection { """A list of edges.""" From da0277032561467263b262aa75d766d970d2046e Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:35:02 -0400 Subject: [PATCH 14/40] Trigger on push --- .github/main.workflow | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/main.workflow b/.github/main.workflow index 4d8247a48b..bb567a330c 100644 --- a/.github/main.workflow +++ b/.github/main.workflow @@ -2,8 +2,7 @@ workflow "GraphQL schema update" { // Every Monday at 1am. // on = "schedule(0 1 * * 1)" - // Every ten minutes (while I'm debugging) - on = "schedule(*/10 * * * *)" + on = "push" resolves = "Update schema" } From e1d35c373786f987078893cee1177ab6a440d817 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:39:29 -0400 Subject: [PATCH 15/40] Maybe specify the COPY paths explicitly? --- actions/schema-up/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/schema-up/Dockerfile b/actions/schema-up/Dockerfile index 75c4d49ee4..8e2eb4e6f6 100644 --- a/actions/schema-up/Dockerfile +++ b/actions/schema-up/Dockerfile @@ -6,13 +6,13 @@ LABEL "com.github.actions.icon"="arrow-up-right" LABEL "com.github.actions.color"="blue" # Copy the package.json and package-lock.json -COPY package*.json ./ +COPY package*.json / # Install dependencies RUN npm ci # Copy the rest of your action's code -COPY * . +COPY * / # Run `node /index.js` ENTRYPOINT ["node", "/index.js"] From 3c98bbfac4669eb227842a32520dad49b56ecedc Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:44:45 -0400 Subject: [PATCH 16/40] Actually install git --- actions/schema-up/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/actions/schema-up/Dockerfile b/actions/schema-up/Dockerfile index 8e2eb4e6f6..a71125086e 100644 --- a/actions/schema-up/Dockerfile +++ b/actions/schema-up/Dockerfile @@ -5,6 +5,8 @@ LABEL "com.github.actions.description"="Update GraphQL schema and adjust Relay f LABEL "com.github.actions.icon"="arrow-up-right" LABEL "com.github.actions.color"="blue" +RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* + # Copy the package.json and package-lock.json COPY package*.json / From 1eee99dbc610eb5068f06edda75a618640f6d3ba Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 14:56:32 -0400 Subject: [PATCH 17/40] Configure git username and email (hi @hubot) --- actions/schema-up/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index f1f4466896..b5f14e65bb 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -9,6 +9,9 @@ const schemaUpdateLabel = { }; Toolkit.run(async tools => { + await tools.runInWorkspace('git', ['config', '--global', 'user.email', 'hubot@github.com']); + await tools.runInWorkspace('git', ['config', '--global', 'user.name', 'hubot']); + tools.log.info('Fetching the latest GraphQL schema changes.'); await fetchSchema(); From b6740dfc2eb00c9ab3e6dd2a4ae8ba2dd88c16dc Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:03:01 -0400 Subject: [PATCH 18/40] `tools.github.graphql` has a different return value than I thought --- actions/schema-up/index.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index b5f14e65bb..dc9b9b52bc 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -46,8 +46,8 @@ Toolkit.run(async tools => { } tools.log.info('Checking for unmerged schema update pull requests.'); - const {data: openSchemaUpdatePRs} = await tools.github.graphql(` - query OpenPullRequests($owner: String!, $repo: String!, $labelName: String!) { + const {openPullRequestsQuery} = await tools.github.graphql(` + query openPullRequestsQuery($owner: String!, $repo: String!, $labelName: String!) { repository(owner: $owner, name: $repo) { id pullRequests(first: 1, states: [OPEN], labels: [$labelName]) { @@ -57,9 +57,9 @@ Toolkit.run(async tools => { } `, {...tools.context.repo, labelName: schemaUpdateLabel.name}); - const repositoryId = openSchemaUpdatePRs.repository.id; + const repositoryId = openPullRequestsQuery.repository.id; - if (openSchemaUpdatePRs.repository.pullRequests.totalCount > 0) { + if (openPullRequestsQuery.repository.pullRequests.totalCount > 0) { tools.exit.failure('One or more schema update pull requests are already open. Please resolve those first.'); } @@ -86,8 +86,8 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee body += '\n```\n\nCheck out this branch to fix things so we don\'t break.'; } - const {data: createPR} = await tools.github.graphql(` - mutation CreatePullRequest($repositoryId: ID!, $headRefName: String!, $body: String!) { + const {createPullRequestMutation} = await tools.github.graphql(` + mutation createPullRequestMutation($repositoryId: ID!, $headRefName: String!, $body: String!) { createPullRequest(input: { repositoryId: $repositoryId title: "GraphQL schema update" @@ -107,12 +107,12 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee body, }); - const createdPullRequest = createPR.createPullRequest.pullRequest; + const createdPullRequest = createPullRequestMutation.createPullRequest.pullRequest; tools.log.info( `Pull request #${createdPullRequest.number} has been opened with the changes from this schema upgrade.`); await tools.github.graphql(` - mutation LabelPullRequest($id: ID!, $labelIDs: [ID!]!) { + mutation labelPullRequestMutation($id: ID!, $labelIDs: [ID!]!) { addLabelsToLabelable(input: { labelableId: $id, labelIds: $labelIDs From 6525b8d16c11c1f2bccf03d4a166956d3bfa1ee1 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:07:41 -0400 Subject: [PATCH 19/40] Log the GraphQL response --- actions/schema-up/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index dc9b9b52bc..51ca96ecd9 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -46,7 +46,7 @@ Toolkit.run(async tools => { } tools.log.info('Checking for unmerged schema update pull requests.'); - const {openPullRequestsQuery} = await tools.github.graphql(` + const response = await tools.github.graphql(` query openPullRequestsQuery($owner: String!, $repo: String!, $labelName: String!) { repository(owner: $owner, name: $repo) { id @@ -56,6 +56,8 @@ Toolkit.run(async tools => { } } `, {...tools.context.repo, labelName: schemaUpdateLabel.name}); + tools.log.info('GraphQL response: ' + require('util').inspect(response)); + const {openPullRequestsQuery} = response; const repositoryId = openPullRequestsQuery.repository.id; From ad0b2c82c5ba7ce82df884e9bee8d22a51e2cf4d Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:10:14 -0400 Subject: [PATCH 20/40] Looks like it just returns the query shape as an object? --- actions/schema-up/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index dc9b9b52bc..4f3ac4ea3e 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -46,7 +46,7 @@ Toolkit.run(async tools => { } tools.log.info('Checking for unmerged schema update pull requests.'); - const {openPullRequestsQuery} = await tools.github.graphql(` + const openPullRequestsQuery = await tools.github.graphql(` query openPullRequestsQuery($owner: String!, $repo: String!, $labelName: String!) { repository(owner: $owner, name: $repo) { id @@ -86,7 +86,7 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee body += '\n```\n\nCheck out this branch to fix things so we don\'t break.'; } - const {createPullRequestMutation} = await tools.github.graphql(` + const createPullRequestMutation = await tools.github.graphql(` mutation createPullRequestMutation($repositoryId: ID!, $headRefName: String!, $body: String!) { createPullRequest(input: { repositoryId: $repositoryId @@ -109,7 +109,8 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee const createdPullRequest = createPullRequestMutation.createPullRequest.pullRequest; tools.log.info( - `Pull request #${createdPullRequest.number} has been opened with the changes from this schema upgrade.`); + `Pull request #${createdPullRequest.number} has been opened with the changes from this schema upgrade.`, + ); await tools.github.graphql(` mutation labelPullRequestMutation($id: ID!, $labelIDs: [ID!]!) { From ba2c5ffa8386984117edcf8c6455530e68b0a77d Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:14:36 -0400 Subject: [PATCH 21/40] Labelable doesn't have an ID. Just select the null mutation ID --- actions/schema-up/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 4f3ac4ea3e..12065dee73 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -118,9 +118,7 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee labelableId: $id, labelIds: $labelIDs }) { - labelable { - id - } + clientMutationId } } `, {id: createdPullRequest.id, labelIDs: [schemaUpdateLabel.id]}); From caa1af97286a487e1966c5b3b39aa0f325c14a9c Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:17:06 -0400 Subject: [PATCH 22/40] No quotes around the commit message --- actions/schema-up/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 12065dee73..912eaeacde 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -25,7 +25,7 @@ Toolkit.run(async tools => { } tools.log.info('Committing schema changes.'); - await tools.runInWorkspace('git', ['commit', '--all', '--message=":arrow_up: GraphQL schema"']); + await tools.runInWorkspace('git', ['commit', '--all', '--message', ':arrow_up: GraphQL schema']); tools.log.info('Re-running relay compiler.'); const {failed: relayFailed, all: relayOutput} = await tools.runInWorkspace( From a474d57d97a5974dd668296be11bfc0026d69714 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:25:16 -0400 Subject: [PATCH 23/40] Okay log _that_ output object --- actions/schema-up/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 912eaeacde..4f3afc707d 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -28,11 +28,13 @@ Toolkit.run(async tools => { await tools.runInWorkspace('git', ['commit', '--all', '--message', ':arrow_up: GraphQL schema']); tools.log.info('Re-running relay compiler.'); - const {failed: relayFailed, all: relayOutput} = await tools.runInWorkspace( + const result = await tools.runInWorkspace( path.resolve(__dirname, 'node_modules', '.bin', 'relay-compiler'), ['--src', './lib', '--schema', 'graphql/schema.graphql'], {reject: false}, ); + tools.log.info('exec output: ' + require('util').inspect(result)); + const {failed: relayFailed, all: relayOutput} = result; const {exitCode: hasRelayChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet', '--', '**/__generated__/*.graphql.js'], From 142dcb0a038bb2a5c243fe23234f04753e78349c Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:30:20 -0400 Subject: [PATCH 24/40] Pass --watchman false to relay-compiler --- actions/schema-up/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 912eaeacde..beef93d230 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -28,11 +28,12 @@ Toolkit.run(async tools => { await tools.runInWorkspace('git', ['commit', '--all', '--message', ':arrow_up: GraphQL schema']); tools.log.info('Re-running relay compiler.'); - const {failed: relayFailed, all: relayOutput} = await tools.runInWorkspace( + const {failed: relayFailed, stderr: relayError, stdout: relayOutput} = await tools.runInWorkspace( path.resolve(__dirname, 'node_modules', '.bin', 'relay-compiler'), - ['--src', './lib', '--schema', 'graphql/schema.graphql'], + ['--watchman', 'false', '--src', './lib', '--schema', 'graphql/schema.graphql'], {reject: false}, ); + tools.log.info('Relay output:\n%s', relayOutput); const {exitCode: hasRelayChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet', '--', '**/__generated__/*.graphql.js'], @@ -82,7 +83,7 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee body += 'If all of the tests pass in CI, merge with confidence :zap:'; } else { body += ' `relay-compiler` failed with the following output:\n\n```\n'; - body += relayOutput; + body += relayError; body += '\n```\n\nCheck out this branch to fix things so we don\'t break.'; } From ef16f6a7ce11361de41c630e605387158f6284d7 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:32:50 -0400 Subject: [PATCH 25/40] Just log the PR body for now --- actions/schema-up/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index beef93d230..fc54919e1f 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -86,7 +86,9 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee body += relayError; body += '\n```\n\nCheck out this branch to fix things so we don\'t break.'; } + tools.log.info('Pull request body:\n%s', body); + /* const createPullRequestMutation = await tools.github.graphql(` mutation createPullRequestMutation($repositoryId: ID!, $headRefName: String!, $body: String!) { createPullRequest(input: { @@ -126,6 +128,8 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee tools.exit.success( `Pull request #${createdPullRequest.number} has been opened and labelled for this schema upgrade.`, ); + */ + tools.exit.success('Not creating pull request to reduce testing noise'); }, { secrets: ['GITHUB_TOKEN'], }); From 60293473017387f75eab980c0a026b5c240f908a Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:34:50 -0400 Subject: [PATCH 26/40] Let's make the already-existing-PR case a neutral result --- actions/schema-up/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index beef93d230..b49ee6dc42 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -61,7 +61,7 @@ Toolkit.run(async tools => { const repositoryId = openPullRequestsQuery.repository.id; if (openPullRequestsQuery.repository.pullRequests.totalCount > 0) { - tools.exit.failure('One or more schema update pull requests are already open. Please resolve those first.'); + tools.exit.neutral('One or more schema update pull requests are already open. Please resolve those first.'); } const branchName = `schema-update/${Date.now()}`; From 22cf03dfff224619f371c550e819593cae416c21 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:39:49 -0400 Subject: [PATCH 27/40] git diff doesn't understand the ** splat That might be a bash thing. --- actions/schema-up/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index b49ee6dc42..998d2913f8 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -36,7 +36,7 @@ Toolkit.run(async tools => { tools.log.info('Relay output:\n%s', relayOutput); const {exitCode: hasRelayChanges} = await tools.runInWorkspace( - 'git', ['diff', '--quiet', '--', '**/__generated__/*.graphql.js'], + 'git', ['diff', '--quiet'], {reject: false}, ); From d482bf850a0457dde40187077c081932c011f861 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:40:30 -0400 Subject: [PATCH 28/40] Okay actually make the schema update a no-op --- graphql/schema.graphql | 143 ----------------------------------------- 1 file changed, 143 deletions(-) diff --git a/graphql/schema.graphql b/graphql/schema.graphql index 375c81212b..9ea290d47b 100644 --- a/graphql/schema.graphql +++ b/graphql/schema.graphql @@ -4907,11 +4907,6 @@ type MarketplaceListing implements Node { """The listing's introductory description rendered to HTML.""" fullDescriptionHTML: HTML! - """ - Whether this listing has been submitted for review from GitHub for approval to be displayed in the Marketplace. - """ - hasApprovalBeenRequested: Boolean! @deprecated(reason: "`hasApprovalBeenRequested` will be removed. Use `isVerificationPendingFromDraft` instead. Removal on 2019-10-01 UTC.") - """Does this listing have any plans with a free trial?""" hasPublishedFreeTrialPlans: Boolean! @@ -4931,15 +4926,9 @@ type MarketplaceListing implements Node { """Whether this listing's app has been installed for the current viewer""" installedForViewer: Boolean! - """Whether this listing has been approved for display in the Marketplace.""" - isApproved: Boolean! @deprecated(reason: "`isApproved` will be removed. Use `isPublic` instead. Removal on 2019-10-01 UTC.") - """Whether this listing has been removed from the Marketplace.""" isArchived: Boolean! - """Whether this listing has been removed from the Marketplace.""" - isDelisted: Boolean! @deprecated(reason: "`isDelisted` will be removed. Use `isArchived` instead. Removal on 2019-10-01 UTC.") - """ Whether this listing is still an editable draft that has not been submitted for review and is not publicly visible in the Marketplace. @@ -5861,48 +5850,6 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """ pinnedItemsRemaining: Int! - """A list of repositories this user has pinned to their profile""" - pinnedRepositories( - """If non-null, filters repositories according to privacy""" - privacy: RepositoryPrivacy - - """Ordering options for repositories returned from the connection""" - orderBy: RepositoryOrder - - """ - Array of viewer's affiliation options for repositories returned from the - connection. For example, OWNER will include only repositories that the - current viewer owns. - """ - affiliations: [RepositoryAffiliation] - - """ - Array of owner's affiliation options for repositories returned from the - connection. For example, OWNER will include only repositories that the - organization or user being viewed owns. - """ - ownerAffiliations: [RepositoryAffiliation] - - """ - If non-null, filters repositories according to whether they have been locked - """ - isLocked: Boolean - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-07-01 UTC.") - """Find project by number.""" project( """The project number to find.""" @@ -10220,48 +10167,6 @@ interface RepositoryOwner { """The username used to login.""" login: String! - """A list of repositories this user has pinned to their profile""" - pinnedRepositories( - """If non-null, filters repositories according to privacy""" - privacy: RepositoryPrivacy - - """Ordering options for repositories returned from the connection""" - orderBy: RepositoryOrder - - """ - Array of viewer's affiliation options for repositories returned from the - connection. For example, OWNER will include only repositories that the - current viewer owns. - """ - affiliations: [RepositoryAffiliation] - - """ - Array of owner's affiliation options for repositories returned from the - connection. For example, OWNER will include only repositories that the - organization or user being viewed owns. - """ - ownerAffiliations: [RepositoryAffiliation] - - """ - If non-null, filters repositories according to whether they have been locked - """ - isLocked: Boolean - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-07-01 UTC.") - """A list of repositories that the user owns.""" repositories( """If non-null, filters repositories according to privacy""" @@ -10523,12 +10428,6 @@ type ReviewDismissedEvent implements Node & UniformResourceLocatable { dismissalMessageHTML: String id: ID! - """Identifies the message associated with the 'review_dismissed' event.""" - message: String! @deprecated(reason: "`message` is being removed because it not nullable, whereas the underlying field is optional. Use `dismissalMessage` instead. Removal on 2019-07-01 UTC.") - - """The message associated with the event, rendered to HTML.""" - messageHtml: HTML! @deprecated(reason: "`messageHtml` is being removed because it not nullable, whereas the underlying field is optional. Use `dismissalMessageHTML` instead. Removal on 2019-07-01 UTC.") - """ Identifies the previous state of the review with the 'review_dismissed' event. """ @@ -12633,48 +12532,6 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ pinnedItemsRemaining: Int! - """A list of repositories this user has pinned to their profile""" - pinnedRepositories( - """If non-null, filters repositories according to privacy""" - privacy: RepositoryPrivacy - - """Ordering options for repositories returned from the connection""" - orderBy: RepositoryOrder - - """ - Array of viewer's affiliation options for repositories returned from the - connection. For example, OWNER will include only repositories that the - current viewer owns. - """ - affiliations: [RepositoryAffiliation] - - """ - Array of owner's affiliation options for repositories returned from the - connection. For example, OWNER will include only repositories that the - organization or user being viewed owns. - """ - ownerAffiliations: [RepositoryAffiliation] - - """ - If non-null, filters repositories according to whether they have been locked - """ - isLocked: Boolean - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-07-01 UTC.") - """Find project by number.""" project( """The project number to find.""" From 74daa154b0837c0d428cadde11838c24692ba869 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:44:36 -0400 Subject: [PATCH 29/40] Report the git diff results --- actions/schema-up/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index d017b23653..0f169eb37d 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -15,10 +15,12 @@ Toolkit.run(async tools => { tools.log.info('Fetching the latest GraphQL schema changes.'); await fetchSchema(); - const {exitCode: hasSchemaChanges} = await tools.runInWorkspace( + const result0 = await tools.runInWorkspace( 'git', ['diff', '--quiet', '--', 'graphql/schema.graphql'], {reject: false}, ); + tools.log.info('git diff result: ' + require('util').inspect(result0)); + const {exitCode: hasSchemaChanges} = result0; if (hasSchemaChanges === 0) { tools.log.info('No schema changes to fetch.'); tools.exit.neutral('Nothing to do.'); @@ -35,10 +37,12 @@ Toolkit.run(async tools => { ); tools.log.info('Relay output:\n%s', relayOutput); - const {exitCode: hasRelayChanges} = await tools.runInWorkspace( + const result1 = await tools.runInWorkspace( 'git', ['diff', '--quiet'], {reject: false}, ); + tools.log.info('git diff result: ' + require('util').inspect(result1)); + const {exitCode: hasRelayChanges} = result1; if (hasRelayChanges === 0 && !relayFailed) { tools.log.info('Generated relay files are unchanged.'); From ad79a9e803ced741ed08bee94f01b1e599bc77bf Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:46:44 -0400 Subject: [PATCH 30/40] Revert "Report the git diff results" This reverts commit 74daa154b0837c0d428cadde11838c24692ba869. --- actions/schema-up/index.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 0f169eb37d..d017b23653 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -15,12 +15,10 @@ Toolkit.run(async tools => { tools.log.info('Fetching the latest GraphQL schema changes.'); await fetchSchema(); - const result0 = await tools.runInWorkspace( + const {exitCode: hasSchemaChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet', '--', 'graphql/schema.graphql'], {reject: false}, ); - tools.log.info('git diff result: ' + require('util').inspect(result0)); - const {exitCode: hasSchemaChanges} = result0; if (hasSchemaChanges === 0) { tools.log.info('No schema changes to fetch.'); tools.exit.neutral('Nothing to do.'); @@ -37,12 +35,10 @@ Toolkit.run(async tools => { ); tools.log.info('Relay output:\n%s', relayOutput); - const result1 = await tools.runInWorkspace( + const {exitCode: hasRelayChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet'], {reject: false}, ); - tools.log.info('git diff result: ' + require('util').inspect(result1)); - const {exitCode: hasRelayChanges} = result1; if (hasRelayChanges === 0 && !relayFailed) { tools.log.info('Generated relay files are unchanged.'); From 1ba63d76147344836ad391ed1330e8f3a9053316 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:47:14 -0400 Subject: [PATCH 31/40] It's "code" not "exitCode" --- actions/schema-up/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 998d2913f8..d26f4d8d3f 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -15,7 +15,7 @@ Toolkit.run(async tools => { tools.log.info('Fetching the latest GraphQL schema changes.'); await fetchSchema(); - const {exitCode: hasSchemaChanges} = await tools.runInWorkspace( + const {code: hasSchemaChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet', '--', 'graphql/schema.graphql'], {reject: false}, ); @@ -35,7 +35,7 @@ Toolkit.run(async tools => { ); tools.log.info('Relay output:\n%s', relayOutput); - const {exitCode: hasRelayChanges} = await tools.runInWorkspace( + const {code: hasRelayChanges} = await tools.runInWorkspace( 'git', ['diff', '--quiet'], {reject: false}, ); From 6956b00ed87d10194c24f93454dd0cada4a519a6 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:53:23 -0400 Subject: [PATCH 32/40] Specify the upstream to push to --- actions/schema-up/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index d26f4d8d3f..601fc901e0 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -42,7 +42,8 @@ Toolkit.run(async tools => { if (hasRelayChanges === 0 && !relayFailed) { tools.log.info('Generated relay files are unchanged.'); - await tools.runInWorkspace('git', ['push']); + const upstream = tools.context.ref.replace(/^refs\/heads\//, ''); + await tools.runInWorkspace('git', ['push', 'origin', upstream]); tools.exit.success('Schema is up to date on master.'); } From 00d2247c7d6971b988118c08b9409f3db451d7a4 Mon Sep 17 00:00:00 2001 From: hubot Date: Thu, 2 May 2019 19:54:29 +0000 Subject: [PATCH 33/40] :arrow_up: GraphQL schema --- graphql/schema.graphql | 682 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 682 insertions(+) diff --git a/graphql/schema.graphql b/graphql/schema.graphql index 9ea290d47b..18a35bca98 100644 --- a/graphql/schema.graphql +++ b/graphql/schema.graphql @@ -704,6 +704,454 @@ type ChangeUserStatusPayload { status: UserStatus } +"""A single check annotation.""" +type CheckAnnotation { + """The annotation's severity level.""" + annotationLevel: CheckAnnotationLevel + + """The path to the file that this annotation was made on.""" + blobUrl: URI! + + """Identifies the primary key from the database.""" + databaseId: Int + + """The position of this annotation.""" + location: CheckAnnotationSpan! + + """The annotation's message.""" + message: String! + + """The path that this annotation was made on.""" + path: String! + + """Additional information about the annotation.""" + rawDetails: String + + """The annotation's title""" + title: String +} + +"""The connection type for CheckAnnotation.""" +type CheckAnnotationConnection { + """A list of edges.""" + edges: [CheckAnnotationEdge] + + """A list of nodes.""" + nodes: [CheckAnnotation] + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! +} + +"""Information from a check run analysis to specific lines of code.""" +input CheckAnnotationData { + """The path of the file to add an annotation to.""" + path: String! + + """The location of the annotation""" + location: CheckAnnotationRange! + + """Represents an annotation's information level""" + annotationLevel: CheckAnnotationLevel! + + """A short description of the feedback for these lines of code.""" + message: String! + + """The title that represents the annotation.""" + title: String + + """Details about this annotation.""" + rawDetails: String +} + +"""An edge in a connection.""" +type CheckAnnotationEdge { + """A cursor for use in pagination.""" + cursor: String! + + """The item at the end of the edge.""" + node: CheckAnnotation +} + +"""Represents an annotation's information level.""" +enum CheckAnnotationLevel { + """An annotation indicating an inescapable error.""" + FAILURE + + """An annotation indicating some information.""" + NOTICE + + """An annotation indicating an ignorable error.""" + WARNING +} + +"""A character position in a check annotation.""" +type CheckAnnotationPosition { + """Column number (1 indexed).""" + column: Int + + """Line number (1 indexed).""" + line: Int! +} + +"""Information from a check run analysis to specific lines of code.""" +input CheckAnnotationRange { + """The starting line of the range.""" + startLine: Int! + + """The starting column of the range.""" + startColumn: Int + + """The ending line of the range.""" + endLine: Int! + + """The ending column of the range.""" + endColumn: Int +} + +"""An inclusive pair of positions for a check annotation.""" +type CheckAnnotationSpan { + """End position (inclusive).""" + end: CheckAnnotationPosition! + + """Start position (inclusive).""" + start: CheckAnnotationPosition! +} + +"""The possible states for a check suite or run conclusion.""" +enum CheckConclusionState { + """The check suite or run requires action.""" + ACTION_REQUIRED + + """The check suite or run has timed out.""" + TIMED_OUT + + """The check suite or run has been cancelled.""" + CANCELLED + + """The check suite or run has failed.""" + FAILURE + + """The check suite or run has succeeded.""" + SUCCESS + + """The check suite or run was neutral.""" + NEUTRAL +} + +"""A check run.""" +type CheckRun implements Node & UniformResourceLocatable { + """The check run's annotations""" + annotations( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): CheckAnnotationConnection + + """The check suite that this run is a part of.""" + checkSuite: CheckSuite! + + """Identifies the date and time when the check run was completed.""" + completedAt: DateTime + + """The conclusion of the check run.""" + conclusion: CheckConclusionState + + """Identifies the primary key from the database.""" + databaseId: Int + + """ + The URL from which to find full details of the check run on the integrator's site. + """ + detailsUrl: URI + + """A reference for the check run on the integrator's system.""" + externalId: String + id: ID! + + """The name of the check for this check run.""" + name: String! + + """The permalink to the check run summary.""" + permalink: URI! + + """The repository associated with this check run.""" + repository: Repository! + + """The HTTP path for this check run.""" + resourcePath: URI! + + """Identifies the date and time when the check run was started.""" + startedAt: DateTime + + """The current status of the check run.""" + status: CheckStatusState! + + """A string representing the check run's summary""" + summary: String + + """A string representing the check run's text""" + text: String + + """A string representing the check run""" + title: String + + """The HTTP URL for this check run.""" + url: URI! +} + +"""Possible further actions the integrator can perform.""" +input CheckRunAction { + """The text to be displayed on a button in the web UI.""" + label: String! + + """A short explanation of what this action would do.""" + description: String! + + """A reference for the action on the integrator's system. """ + identifier: String! +} + +"""The connection type for CheckRun.""" +type CheckRunConnection { + """A list of edges.""" + edges: [CheckRunEdge] + + """A list of nodes.""" + nodes: [CheckRun] + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! +} + +"""An edge in a connection.""" +type CheckRunEdge { + """A cursor for use in pagination.""" + cursor: String! + + """The item at the end of the edge.""" + node: CheckRun +} + +"""The filters that are available when fetching check runs.""" +input CheckRunFilter { + """Filters the check runs by this type.""" + checkType: CheckRunType + + """Filters the check runs created by this application ID.""" + appId: Int + + """Filters the check runs by this name.""" + checkName: String + + """Filters the check runs by this status.""" + status: CheckStatusState +} + +"""Descriptive details about the check run.""" +input CheckRunOutput { + """A title to provide for this check run.""" + title: String! + + """The summary of the check run (supports Commonmark).""" + summary: String! + + """The details of the check run (supports Commonmark).""" + text: String + + """The annotations that are made as part of the check run.""" + annotations: [CheckAnnotationData!] + + """ + Images attached to the check run output displayed in the GitHub pull request UI. + """ + images: [CheckRunOutputImage!] +} + +""" +Images attached to the check run output displayed in the GitHub pull request UI. +""" +input CheckRunOutputImage { + """The alternative text for the image.""" + alt: String! + + """The full URL of the image.""" + imageUrl: URI! + + """A short image description.""" + caption: String +} + +"""The possible types of check runs.""" +enum CheckRunType { + """Every check run available.""" + ALL + + """The latest check run.""" + LATEST +} + +"""The possible states for a check suite or run status.""" +enum CheckStatusState { + """The check suite or run has been queued.""" + QUEUED + + """The check suite or run is in progress.""" + IN_PROGRESS + + """The check suite or run has been completed.""" + COMPLETED + + """The check suite or run has been requested.""" + REQUESTED +} + +"""A check suite.""" +type CheckSuite implements Node { + """The GitHub App which created this check suite.""" + app: App + + """The name of the branch for this check suite.""" + branch: Ref + + """The check runs associated with a check suite.""" + checkRuns( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + + """Filters the check runs by this type.""" + filterBy: CheckRunFilter + ): CheckRunConnection + + """The commit for this check suite""" + commit: Commit! + + """The conclusion of this check suite.""" + conclusion: CheckConclusionState + + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + + """Identifies the primary key from the database.""" + databaseId: Int + id: ID! + + """A list of open pull requests matching the check suite.""" + matchingPullRequests( + """A list of states to filter the pull requests by.""" + states: [PullRequestState!] + + """A list of label names to filter the pull requests by.""" + labels: [String!] + + """The head ref name to filter the pull requests by.""" + headRefName: String + + """The base ref name to filter the pull requests by.""" + baseRefName: String + + """Ordering options for pull requests returned from the connection.""" + orderBy: IssueOrder + + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PullRequestConnection + + """The push that triggered this check suite.""" + push: Push + + """The repository associated with this check suite.""" + repository: Repository! + + """The status of this check suite.""" + status: CheckStatusState! + + """Identifies the date and time when the object was last updated.""" + updatedAt: DateTime! +} + +"""The auto-trigger preferences that are available for check suites.""" +input CheckSuiteAutoTriggerPreference { + """The node ID of the application that owns the check suite.""" + appId: ID! + + """ + Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository. + """ + setting: Boolean! +} + +"""The connection type for CheckSuite.""" +type CheckSuiteConnection { + """A list of edges.""" + edges: [CheckSuiteEdge] + + """A list of nodes.""" + nodes: [CheckSuite] + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! +} + +"""An edge in a connection.""" +type CheckSuiteEdge { + """A cursor for use in pagination.""" + cursor: String! + + """The item at the end of the edge.""" + node: CheckSuite +} + +"""The filters that are available when fetching check suites.""" +input CheckSuiteFilter { + """Filters the check suites created by this application ID.""" + appId: Int + + """Filters the check suites by this name.""" + checkName: String +} + """Autogenerated input type of ClearLabelsFromLabelable""" input ClearLabelsFromLabelableInput { """The id of the labelable object to clear the labels from.""" @@ -1034,6 +1482,26 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl """The number of changed files in this commit.""" changedFiles: Int! + """The check suites associated with a commit.""" + checkSuites( + """Returns the elements in the list that come after the specified cursor.""" + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + + """Filters the check suites by this type.""" + filterBy: CheckSuiteFilter + ): CheckSuiteConnection + """Comments made on the commit.""" comments( """Returns the elements in the list that come after the specified cursor.""" @@ -2118,6 +2586,79 @@ type CreateBranchProtectionRulePayload { clientMutationId: String } +"""Autogenerated input type of CreateCheckRun""" +input CreateCheckRunInput { + """The node ID of the repository.""" + repositoryId: ID! + + """The name of the check.""" + name: String! + + """The SHA of the head commit.""" + headSha: GitObjectID! + + """ + The URL of the integrator's site that has the full details of the check. + """ + detailsUrl: URI + + """A reference for the run on the integrator's system.""" + externalId: String + + """The current status.""" + status: RequestableCheckStatusState + + """The time that the check run began.""" + startedAt: DateTime + + """The final conclusion of the check.""" + conclusion: CheckConclusionState + + """The time that the check run finished.""" + completedAt: DateTime + + """Descriptive details about the run.""" + output: CheckRunOutput + + """ + Possible further actions the integrator can perform, which a user may trigger. + """ + actions: [CheckRunAction!] + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of CreateCheckRun""" +type CreateCheckRunPayload { + """The newly created check run.""" + checkRun: CheckRun + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated input type of CreateCheckSuite""" +input CreateCheckSuiteInput { + """The Node ID of the repository.""" + repositoryId: ID! + + """The SHA of the head commit.""" + headSha: GitObjectID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of CreateCheckSuite""" +type CreateCheckSuitePayload { + """The newly created check suite.""" + checkSuite: CheckSuite + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + """Autogenerated input type of CreateContentAttachment""" input CreateContentAttachmentInput { """The node ID of the content_reference.""" @@ -5549,6 +6090,12 @@ type Mutation { """Create a new branch protection rule""" createBranchProtectionRule(input: CreateBranchProtectionRuleInput!): CreateBranchProtectionRulePayload + """Create a check run.""" + createCheckRun(input: CreateCheckRunInput!): CreateCheckRunPayload + + """Create a check suite""" + createCheckSuite(input: CreateCheckSuiteInput!): CreateCheckSuitePayload + """Creates a new issue.""" createIssue(input: CreateIssueInput!): CreateIssuePayload @@ -5624,6 +6171,9 @@ type Mutation { """Set review requests on a pull request.""" requestReviews(input: RequestReviewsInput!): RequestReviewsPayload + """Rerequests an existing check suite.""" + rerequestCheckSuite(input: RerequestCheckSuiteInput!): RerequestCheckSuitePayload + """Marks a review thread as resolved.""" resolveReviewThread(input: ResolveReviewThreadInput!): ResolveReviewThreadPayload @@ -5642,6 +6192,12 @@ type Mutation { """Create a new branch protection rule""" updateBranchProtectionRule(input: UpdateBranchProtectionRuleInput!): UpdateBranchProtectionRulePayload + """Update a check run""" + updateCheckRun(input: UpdateCheckRunInput!): UpdateCheckRunPayload + + """Modifies the settings of an existing check suite""" + updateCheckSuitePreferences(input: UpdateCheckSuitePreferencesInput!): UpdateCheckSuitePreferencesPayload + """Updates an Issue.""" updateIssue(input: UpdateIssueInput!): UpdateIssuePayload @@ -8259,6 +8815,26 @@ enum PullRequestTimelineItemsItemType { UNSUBSCRIBED_EVENT } +"""A Git push.""" +type Push implements Node { + id: ID! + + """The SHA after the push""" + nextSha: GitObjectID + + """The permalink for this push.""" + permalink: URI! + + """The SHA before the push""" + previousSha: GitObjectID + + """The user who pushed""" + pusher: User! + + """The repository that was pushed to""" + repository: Repository! +} + """A team or user who has the ability to push to a protected branch.""" type PushAllowance implements Node { """The actor that can push.""" @@ -10286,6 +10862,18 @@ type RepositoryTopicEdge { node: RepositoryTopic } +"""The possible states that can be requested when creating a check run.""" +enum RequestableCheckStatusState { + """The check suite or run has been queued.""" + QUEUED + + """The check suite or run is in progress.""" + IN_PROGRESS + + """The check suite or run has been completed.""" + COMPLETED +} + """Types that can be requested reviewers.""" union RequestedReviewer = User | Team @@ -10319,6 +10907,27 @@ type RequestReviewsPayload { requestedReviewersEdge: UserEdge } +"""Autogenerated input type of RerequestCheckSuite""" +input RerequestCheckSuiteInput { + """The Node ID of the repository.""" + repositoryId: ID! + + """The Node ID of the check suite.""" + checkSuiteId: ID! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of RerequestCheckSuite""" +type RerequestCheckSuitePayload { + """The requested check suite.""" + checkSuite: CheckSuite + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + """Autogenerated input type of ResolveReviewThread""" input ResolveReviewThreadInput { """The ID of the thread to resolve""" @@ -11959,6 +12568,79 @@ type UpdateBranchProtectionRulePayload { clientMutationId: String } +"""Autogenerated input type of UpdateCheckRun""" +input UpdateCheckRunInput { + """The node ID of the repository.""" + repositoryId: ID! + + """The node of the check.""" + checkRunId: ID! + + """The name of the check.""" + name: String + + """ + The URL of the integrator's site that has the full details of the check. + """ + detailsUrl: URI + + """A reference for the run on the integrator's system.""" + externalId: String + + """The current status.""" + status: RequestableCheckStatusState + + """The time that the check run began.""" + startedAt: DateTime + + """The final conclusion of the check.""" + conclusion: CheckConclusionState + + """The time that the check run finished.""" + completedAt: DateTime + + """Descriptive details about the run.""" + output: CheckRunOutput + + """ + Possible further actions the integrator can perform, which a user may trigger. + """ + actions: [CheckRunAction!] + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of UpdateCheckRun""" +type UpdateCheckRunPayload { + """The updated check run.""" + checkRun: CheckRun + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated input type of UpdateCheckSuitePreferences""" +input UpdateCheckSuitePreferencesInput { + """The Node ID of the repository.""" + repositoryId: ID! + + """The check suite preferences to modify.""" + autoTriggerPreferences: [CheckSuiteAutoTriggerPreference!]! + + """A unique identifier for the client performing the mutation.""" + clientMutationId: String +} + +"""Autogenerated return type of UpdateCheckSuitePreferences""" +type UpdateCheckSuitePreferencesPayload { + """A unique identifier for the client performing the mutation.""" + clientMutationId: String + + """The updated repository.""" + repository: Repository +} + """Autogenerated input type of UpdateIssueComment""" input UpdateIssueCommentInput { """The ID of the IssueComment to modify.""" From f6d09152e029780883386557464ae3b59174d51c Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:57:08 -0400 Subject: [PATCH 34/40] bunp From 397e747b9b339dfef85baa35ca16ab690f8dc95d Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 15:58:59 -0400 Subject: [PATCH 35/40] Uncomment the PR creation again --- actions/schema-up/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index b30f7f2abe..dbb6836c72 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -89,7 +89,6 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee } tools.log.info('Pull request body:\n%s', body); - /* const createPullRequestMutation = await tools.github.graphql(` mutation createPullRequestMutation($repositoryId: ID!, $headRefName: String!, $body: String!) { createPullRequest(input: { @@ -129,7 +128,6 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee tools.exit.success( `Pull request #${createdPullRequest.number} has been opened and labelled for this schema upgrade.`, ); - */ tools.exit.success('Not creating pull request to reduce testing noise'); }, { secrets: ['GITHUB_TOKEN'], From f49079d7859a787aa80d49e5c23f146851068167 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 16:01:51 -0400 Subject: [PATCH 36/40] Force a schema update and compiled query change --- graphql/schema.graphql | 6196 +++++------------ .../current-pull-request-container.js | 1 + 2 files changed, 1722 insertions(+), 4475 deletions(-) diff --git a/graphql/schema.graphql b/graphql/schema.graphql index 18a35bca98..2817a8a414 100644 --- a/graphql/schema.graphql +++ b/graphql/schema.graphql @@ -15,8 +15,16 @@ type AcceptTopicSuggestionPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The accepted topic.""" - topic: Topic + """ + The accepted topic. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `topic` will change from `Topic!` to `Topic`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + topic: Topic! } """ @@ -39,27 +47,6 @@ interface Actor { url: URI! } -"""Autogenerated input type of AddAssigneesToAssignable""" -input AddAssigneesToAssignableInput { - """The id of the assignable object to add assignees to.""" - assignableId: ID! - - """The id of users to add as assignees.""" - assigneeIds: [ID!]! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of AddAssigneesToAssignable""" -type AddAssigneesToAssignablePayload { - """The item that was assigned.""" - assignable: Assignable - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """Autogenerated input type of AddComment""" input AddCommentInput { """The Node ID of the subject to modify.""" @@ -77,14 +64,38 @@ type AddCommentPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The edge from the subject's comment connection.""" - commentEdge: IssueCommentEdge + """ + The edge from the subject's comment connection. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `commentEdge` will change from `IssueCommentEdge!` to `IssueCommentEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + commentEdge: IssueCommentEdge! - """The subject""" - subject: Node + """ + The subject + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `subject` will change from `Node!` to `Node`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + subject: Node! - """The edge from the subject's timeline connection.""" - timelineEdge: IssueTimelineItemEdge + """ + The edge from the subject's timeline connection. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `timelineEdge` will change from `IssueTimelineItemEdge!` to `IssueTimelineItemEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + timelineEdge: IssueTimelineItemEdge! } """ @@ -102,33 +113,14 @@ type AddedToProjectEvent implements Node { id: ID! } -"""Autogenerated input type of AddLabelsToLabelable""" -input AddLabelsToLabelableInput { - """The id of the labelable object to add labels to.""" - labelableId: ID! - - """The ids of the labels to add.""" - labelIds: [ID!]! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of AddLabelsToLabelable""" -type AddLabelsToLabelablePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The item that was labeled.""" - labelable: Labelable -} - """Autogenerated input type of AddProjectCard""" input AddProjectCardInput { """The Node ID of the ProjectColumn.""" projectColumnId: ID! - """The content of the card. Must be a member of the ProjectCardItem union""" + """ + The content of the card. Must be a member of the ProjectCardItem union + """ contentId: ID """The note on the card.""" @@ -140,14 +132,30 @@ input AddProjectCardInput { """Autogenerated return type of AddProjectCard""" type AddProjectCardPayload { - """The edge from the ProjectColumn's card connection.""" - cardEdge: ProjectCardEdge + """ + The edge from the ProjectColumn's card connection. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `cardEdge` will change from `ProjectCardEdge!` to `ProjectCardEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + cardEdge: ProjectCardEdge! """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The ProjectColumn""" - projectColumn: ProjectColumn + """ + The ProjectColumn + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `projectColumn` will change from `Project!` to `ProjectColumn`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + projectColumn: Project! } """Autogenerated input type of AddProjectColumn""" @@ -167,11 +175,27 @@ type AddProjectColumnPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The edge from the project's column connection.""" - columnEdge: ProjectColumnEdge + """ + The edge from the project's column connection. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `columnEdge` will change from `ProjectColumnEdge!` to `ProjectColumnEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + columnEdge: ProjectColumnEdge! - """The project""" - project: Project + """ + The project + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `project` will change from `Project!` to `Project`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + project: Project! } """Autogenerated input type of AddPullRequestReviewComment""" @@ -203,11 +227,28 @@ type AddPullRequestReviewCommentPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The newly created comment.""" - comment: PullRequestReviewComment + """ + The newly created comment. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `comment` will change from `PullRequestReviewComment!` to `PullRequestReviewComment`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + comment: PullRequestReviewComment! - """The edge from the review's comment connection.""" - commentEdge: PullRequestReviewCommentEdge + """ + The edge from the review's comment connection. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `commentEdge` will change from + `PullRequestReviewCommentEdge!` to `PullRequestReviewCommentEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + commentEdge: PullRequestReviewCommentEdge! } """Autogenerated input type of AddPullRequestReview""" @@ -236,11 +277,27 @@ type AddPullRequestReviewPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The newly created pull request review.""" - pullRequestReview: PullRequestReview + """ + The newly created pull request review. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequestReview` will change from `PullRequestReview!` to `PullRequestReview`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequestReview: PullRequestReview! - """The edge from the pull request's review connection.""" - reviewEdge: PullRequestReviewEdge + """ + The edge from the pull request's review connection. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `reviewEdge` will change from `PullRequestReviewEdge!` to `PullRequestReviewEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + reviewEdge: PullRequestReviewEdge! } """Autogenerated input type of AddReaction""" @@ -260,11 +317,27 @@ type AddReactionPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The reaction object.""" - reaction: Reaction + """ + The reaction object. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `reaction` will change from `Reaction!` to `Reaction`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + reaction: Reaction! - """The reactable subject.""" - subject: Reactable + """ + The reactable subject. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `subject` will change from `Reactable!` to `Reactable`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + subject: Reactable! } """Autogenerated input type of AddStar""" @@ -281,8 +354,16 @@ type AddStarPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The starrable.""" - starrable: Starrable + """ + The starrable. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `starrable` will change from `Starrable!` to `Starrable`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + starrable: Starrable! } """A GitHub App.""" @@ -332,7 +413,9 @@ type AppEdge { interface Assignable { """A list of Users assigned to this object.""" assignees( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -384,7 +467,9 @@ type BaseRefForcePushedEvent implements Node { """Identifies the actor who performed the event.""" actor: Actor - """Identifies the after commit SHA for the 'base_ref_force_pushed' event.""" + """ + Identifies the after commit SHA for the 'base_ref_force_pushed' event. + """ afterCommit: Commit """ @@ -496,7 +581,9 @@ type BranchProtectionRule implements Node { A list of conflicts matching branches protection rule and other branch protection rules """ branchProtectionRuleConflicts( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -528,7 +615,9 @@ type BranchProtectionRule implements Node { """Repository refs that are protected by this rule""" matchingRefs( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -548,7 +637,9 @@ type BranchProtectionRule implements Node { """A list push allowances for this branch protection rule.""" pushAllowances( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -594,7 +685,9 @@ type BranchProtectionRule implements Node { """A list review dismissal allowances for this branch protection rule.""" reviewDismissalAllowances( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -670,183 +763,120 @@ type BranchProtectionRuleEdge { node: BranchProtectionRule } -"""Autogenerated input type of ChangeUserStatus""" -input ChangeUserStatusInput { - """ - The emoji to represent your status. Can either be a native Unicode emoji or an emoji name with colons, e.g., :grinning:. - """ - emoji: String - - """A short description of your current status.""" - message: String - - """ - The ID of the organization whose members will be allowed to see the status. If - omitted, the status will be publicly visible. - """ - organizationId: ID - +"""An object that can be closed""" +interface Closable { """ - Whether this status should indicate you are not fully available on GitHub, e.g., you are away. + `true` if the object is closed (definition of closed may depend on type) """ - limitedAvailability: Boolean = false - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of ChangeUserStatus""" -type ChangeUserStatusPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + closed: Boolean! - """Your updated status.""" - status: UserStatus + """Identifies the date and time when the object was closed.""" + closedAt: DateTime } -"""A single check annotation.""" -type CheckAnnotation { - """The annotation's severity level.""" - annotationLevel: CheckAnnotationLevel - - """The path to the file that this annotation was made on.""" - blobUrl: URI! - - """Identifies the primary key from the database.""" - databaseId: Int - - """The position of this annotation.""" - location: CheckAnnotationSpan! - - """The annotation's message.""" - message: String! - - """The path that this annotation was made on.""" - path: String! - - """Additional information about the annotation.""" - rawDetails: String +"""Represents a 'closed' event on any `Closable`.""" +type ClosedEvent implements Node & UniformResourceLocatable { + """Identifies the actor who performed the event.""" + actor: Actor - """The annotation's title""" - title: String -} + """Object that was closed.""" + closable: Closable! -"""The connection type for CheckAnnotation.""" -type CheckAnnotationConnection { - """A list of edges.""" - edges: [CheckAnnotationEdge] + """Object which triggered the creation of this event.""" + closer: Closer - """A list of nodes.""" - nodes: [CheckAnnotation] + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + id: ID! - """Information to aid in pagination.""" - pageInfo: PageInfo! + """The HTTP path for this closed event.""" + resourcePath: URI! - """Identifies the total count of items in the connection.""" - totalCount: Int! + """The HTTP URL for this closed event.""" + url: URI! } -"""Information from a check run analysis to specific lines of code.""" -input CheckAnnotationData { - """The path of the file to add an annotation to.""" - path: String! - - """The location of the annotation""" - location: CheckAnnotationRange! - - """Represents an annotation's information level""" - annotationLevel: CheckAnnotationLevel! - - """A short description of the feedback for these lines of code.""" - message: String! +"""The object which triggered a `ClosedEvent`.""" +union Closer = Commit | PullRequest - """The title that represents the annotation.""" - title: String +"""The Code of Conduct for a repository""" +type CodeOfConduct { + """The body of the CoC""" + body: String - """Details about this annotation.""" - rawDetails: String -} + """The key for the CoC""" + key: String! -"""An edge in a connection.""" -type CheckAnnotationEdge { - """A cursor for use in pagination.""" - cursor: String! + """The formal name of the CoC""" + name: String! - """The item at the end of the edge.""" - node: CheckAnnotation + """The path to the CoC""" + url: URI } -"""Represents an annotation's information level.""" -enum CheckAnnotationLevel { - """An annotation indicating an inescapable error.""" - FAILURE +"""Collaborators affiliation level with a subject.""" +enum CollaboratorAffiliation { + """All outside collaborators of an organization-owned subject.""" + OUTSIDE - """An annotation indicating some information.""" - NOTICE + """ + All collaborators with permissions to an organization-owned subject, regardless of organization membership status. + """ + DIRECT - """An annotation indicating an ignorable error.""" - WARNING + """All collaborators the authenticated user can see.""" + ALL } -"""A character position in a check annotation.""" -type CheckAnnotationPosition { - """Column number (1 indexed).""" - column: Int - - """Line number (1 indexed).""" - line: Int! -} +"""Types that can be inside Collection Items.""" +union CollectionItemContent = Repository | Organization | User -"""Information from a check run analysis to specific lines of code.""" -input CheckAnnotationRange { - """The starting line of the range.""" - startLine: Int! +"""Represents a comment.""" +interface Comment { + """The actor who authored the comment.""" + author: Actor - """The starting column of the range.""" - startColumn: Int + """Author's association with the subject of the comment.""" + authorAssociation: CommentAuthorAssociation! - """The ending line of the range.""" - endLine: Int! + """The body as Markdown.""" + body: String! - """The ending column of the range.""" - endColumn: Int -} + """The body rendered to HTML.""" + bodyHTML: HTML! -"""An inclusive pair of positions for a check annotation.""" -type CheckAnnotationSpan { - """End position (inclusive).""" - end: CheckAnnotationPosition! + """The body rendered to text.""" + bodyText: String! - """Start position (inclusive).""" - start: CheckAnnotationPosition! -} + """Identifies the date and time when the object was created.""" + createdAt: DateTime! -"""The possible states for a check suite or run conclusion.""" -enum CheckConclusionState { - """The check suite or run requires action.""" - ACTION_REQUIRED + """Check if this comment was created via an email reply.""" + createdViaEmail: Boolean! - """The check suite or run has timed out.""" - TIMED_OUT + """The actor who edited the comment.""" + editor: Actor + id: ID! - """The check suite or run has been cancelled.""" - CANCELLED + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! - """The check suite or run has failed.""" - FAILURE + """The moment the editor made the last edit""" + lastEditedAt: DateTime - """The check suite or run has succeeded.""" - SUCCESS + """Identifies when the comment was published at.""" + publishedAt: DateTime - """The check suite or run was neutral.""" - NEUTRAL -} + """Identifies the date and time when the object was last updated.""" + updatedAt: DateTime! -"""A check run.""" -type CheckRun implements Node & UniformResourceLocatable { - """The check run's annotations""" - annotations( - """Returns the elements in the list that come after the specified cursor.""" + """A list of edits to this content.""" + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -859,180 +889,144 @@ type CheckRun implements Node & UniformResourceLocatable { """Returns the last _n_ elements from the list.""" last: Int - ): CheckAnnotationConnection - - """The check suite that this run is a part of.""" - checkSuite: CheckSuite! - - """Identifies the date and time when the check run was completed.""" - completedAt: DateTime + ): UserContentEditConnection - """The conclusion of the check run.""" - conclusion: CheckConclusionState + """Did the viewer author this comment.""" + viewerDidAuthor: Boolean! +} - """Identifies the primary key from the database.""" - databaseId: Int +"""A comment author association with repository.""" +enum CommentAuthorAssociation { + """Author is a member of the organization that owns the repository.""" + MEMBER - """ - The URL from which to find full details of the check run on the integrator's site. - """ - detailsUrl: URI + """Author is the owner of the repository.""" + OWNER - """A reference for the check run on the integrator's system.""" - externalId: String - id: ID! + """Author has been invited to collaborate on the repository.""" + COLLABORATOR - """The name of the check for this check run.""" - name: String! + """Author has previously committed to the repository.""" + CONTRIBUTOR - """The permalink to the check run summary.""" - permalink: URI! + """Author has not previously committed to the repository.""" + FIRST_TIME_CONTRIBUTOR - """The repository associated with this check run.""" - repository: Repository! + """Author has not previously committed to GitHub.""" + FIRST_TIMER - """The HTTP path for this check run.""" - resourcePath: URI! + """Author has no association with the repository.""" + NONE +} - """Identifies the date and time when the check run was started.""" - startedAt: DateTime - - """The current status of the check run.""" - status: CheckStatusState! - - """A string representing the check run's summary""" - summary: String - - """A string representing the check run's text""" - text: String +"""The possible errors that will prevent a user from updating a comment.""" +enum CommentCannotUpdateReason { + """ + You must be the author or have write access to this repository to update this comment. + """ + INSUFFICIENT_ACCESS - """A string representing the check run""" - title: String + """Unable to create comment because issue is locked.""" + LOCKED - """The HTTP URL for this check run.""" - url: URI! -} + """You must be logged in to update this comment.""" + LOGIN_REQUIRED -"""Possible further actions the integrator can perform.""" -input CheckRunAction { - """The text to be displayed on a button in the web UI.""" - label: String! + """Repository is under maintenance.""" + MAINTENANCE - """A short explanation of what this action would do.""" - description: String! + """At least one email address must be verified to update this comment.""" + VERIFIED_EMAIL_REQUIRED - """A reference for the action on the integrator's system. """ - identifier: String! + """You cannot update this comment""" + DENIED } -"""The connection type for CheckRun.""" -type CheckRunConnection { - """A list of edges.""" - edges: [CheckRunEdge] - - """A list of nodes.""" - nodes: [CheckRun] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} +""" +Represents a 'comment_deleted' event on a given issue or pull request. +""" +type CommentDeletedEvent implements Node { + """Identifies the actor who performed the event.""" + actor: Actor -"""An edge in a connection.""" -type CheckRunEdge { - """A cursor for use in pagination.""" - cursor: String! + """Identifies the date and time when the object was created.""" + createdAt: DateTime! - """The item at the end of the edge.""" - node: CheckRun + """Identifies the primary key from the database.""" + databaseId: Int + id: ID! } -"""The filters that are available when fetching check runs.""" -input CheckRunFilter { - """Filters the check runs by this type.""" - checkType: CheckRunType - - """Filters the check runs created by this application ID.""" - appId: Int - - """Filters the check runs by this name.""" - checkName: String - - """Filters the check runs by this status.""" - status: CheckStatusState -} +"""Represents a Git commit.""" +type Commit implements Node & GitObject & Subscribable & UniformResourceLocatable { + """An abbreviated version of the Git object ID""" + abbreviatedOid: String! -"""Descriptive details about the check run.""" -input CheckRunOutput { - """A title to provide for this check run.""" - title: String! + """The number of additions in this commit.""" + additions: Int! - """The summary of the check run (supports Commonmark).""" - summary: String! + """Authorship details of the commit.""" + author: GitActor - """The details of the check run (supports Commonmark).""" - text: String + """Check if the committer and the author match.""" + authoredByCommitter: Boolean! - """The annotations that are made as part of the check run.""" - annotations: [CheckAnnotationData!] + """The datetime when this commit was authored.""" + authoredDate: DateTime! - """ - Images attached to the check run output displayed in the GitHub pull request UI. - """ - images: [CheckRunOutputImage!] -} + """Fetches `git blame` information.""" + blame( + """The file whose Git blame information you want.""" + path: String! + ): Blame! -""" -Images attached to the check run output displayed in the GitHub pull request UI. -""" -input CheckRunOutputImage { - """The alternative text for the image.""" - alt: String! + """The number of changed files in this commit.""" + changedFiles: Int! - """The full URL of the image.""" - imageUrl: URI! + """Comments made on the commit.""" + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String - """A short image description.""" - caption: String -} + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String -"""The possible types of check runs.""" -enum CheckRunType { - """Every check run available.""" - ALL + """Returns the first _n_ elements from the list.""" + first: Int - """The latest check run.""" - LATEST -} + """Returns the last _n_ elements from the list.""" + last: Int + ): CommitCommentConnection! -"""The possible states for a check suite or run status.""" -enum CheckStatusState { - """The check suite or run has been queued.""" - QUEUED + """The HTTP path for this Git object""" + commitResourcePath: URI! - """The check suite or run is in progress.""" - IN_PROGRESS + """The HTTP URL for this Git object""" + commitUrl: URI! - """The check suite or run has been completed.""" - COMPLETED + """The datetime when this commit was committed.""" + committedDate: DateTime! - """The check suite or run has been requested.""" - REQUESTED -} + """Check if commited via GitHub web UI.""" + committedViaWeb: Boolean! -"""A check suite.""" -type CheckSuite implements Node { - """The GitHub App which created this check suite.""" - app: App + """Committership details of the commit.""" + committer: GitActor - """The name of the branch for this check suite.""" - branch: Ref + """The number of deletions in this commit.""" + deletions: Int! - """The check runs associated with a check suite.""" - checkRuns( - """Returns the elements in the list that come after the specified cursor.""" + """ + The linear commit history starting from (and including) this commit, in the same order as `git log`. + """ + history( + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -1046,41 +1040,47 @@ type CheckSuite implements Node { """Returns the last _n_ elements from the list.""" last: Int - """Filters the check runs by this type.""" - filterBy: CheckRunFilter - ): CheckRunConnection - - """The commit for this check suite""" - commit: Commit! + """ + If non-null, filters history to only show commits touching files under this path. + """ + path: String - """The conclusion of this check suite.""" - conclusion: CheckConclusionState + """ + If non-null, filters history to only show commits with matching authorship. + """ + author: CommitAuthor - """Identifies the date and time when the object was created.""" - createdAt: DateTime! + """Allows specifying a beginning time or date for fetching commits.""" + since: GitTimestamp - """Identifies the primary key from the database.""" - databaseId: Int + """Allows specifying an ending time or date for fetching commits.""" + until: GitTimestamp + ): CommitHistoryConnection! id: ID! - """A list of open pull requests matching the check suite.""" - matchingPullRequests( - """A list of states to filter the pull requests by.""" - states: [PullRequestState!] + """The Git commit message""" + message: String! - """A list of label names to filter the pull requests by.""" - labels: [String!] + """The Git commit message body""" + messageBody: String! - """The head ref name to filter the pull requests by.""" - headRefName: String + """The commit message body rendered to HTML.""" + messageBodyHTML: HTML! - """The base ref name to filter the pull requests by.""" - baseRefName: String + """The Git commit message headline""" + messageHeadline: String! - """Ordering options for pull requests returned from the connection.""" - orderBy: IssueOrder + """The commit message headline rendered to HTML.""" + messageHeadlineHTML: HTML! + + """The Git object ID""" + oid: GitObjectID! - """Returns the elements in the list that come after the specified cursor.""" + """The parents of a commit.""" + parents( + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -1093,271 +1093,175 @@ type CheckSuite implements Node { """Returns the last _n_ elements from the list.""" last: Int - ): PullRequestConnection + ): CommitConnection! - """The push that triggered this check suite.""" - push: Push + """The datetime when this commit was pushed.""" + pushedDate: DateTime - """The repository associated with this check suite.""" + """The Repository this commit belongs to""" repository: Repository! - """The status of this check suite.""" - status: CheckStatusState! + """The HTTP path for this commit""" + resourcePath: URI! - """Identifies the date and time when the object was last updated.""" - updatedAt: DateTime! -} + """Commit signing information, if present.""" + signature: GitSignature -"""The auto-trigger preferences that are available for check suites.""" -input CheckSuiteAutoTriggerPreference { - """The node ID of the application that owns the check suite.""" - appId: ID! + """Status information for this commit""" + status: Status """ - Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository. + Returns a URL to download a tarball archive for a repository. + Note: For private repositories, these links are temporary and expire after five minutes. """ - setting: Boolean! -} - -"""The connection type for CheckSuite.""" -type CheckSuiteConnection { - """A list of edges.""" - edges: [CheckSuiteEdge] + tarballUrl: URI! - """A list of nodes.""" - nodes: [CheckSuite] + """Commit's root Tree""" + tree: Tree! - """Information to aid in pagination.""" - pageInfo: PageInfo! + """The HTTP path for the tree of this commit""" + treeResourcePath: URI! - """Identifies the total count of items in the connection.""" - totalCount: Int! -} + """The HTTP URL for the tree of this commit""" + treeUrl: URI! -"""An edge in a connection.""" -type CheckSuiteEdge { - """A cursor for use in pagination.""" - cursor: String! + """The HTTP URL for this commit""" + url: URI! - """The item at the end of the edge.""" - node: CheckSuite -} + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! -"""The filters that are available when fetching check suites.""" -input CheckSuiteFilter { - """Filters the check suites created by this application ID.""" - appId: Int + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState - """Filters the check suites by this name.""" - checkName: String + """ + Returns a URL to download a zipball archive for a repository. + Note: For private repositories, these links are temporary and expire after five minutes. + """ + zipballUrl: URI! } -"""Autogenerated input type of ClearLabelsFromLabelable""" -input ClearLabelsFromLabelableInput { - """The id of the labelable object to clear the labels from.""" - labelableId: ID! +"""Specifies an author for filtering Git commits.""" +input CommitAuthor { + """ + ID of a User to filter by. If non-null, only commits authored by this user + will be returned. This field takes precedence over emails. + """ + id: ID - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + """ + Email addresses to filter by. Commits authored by any of the specified email addresses will be returned. + """ + emails: [String!] } -"""Autogenerated return type of ClearLabelsFromLabelable""" -type ClearLabelsFromLabelablePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String +"""Represents a comment on a given Commit.""" +type CommitComment implements Node & Comment & Deletable & Updatable & UpdatableComment & Reactable & RepositoryNode { + """The actor who authored the comment.""" + author: Actor - """The item that was unlabeled.""" - labelable: Labelable -} + """Author's association with the subject of the comment.""" + authorAssociation: CommentAuthorAssociation! -"""Autogenerated input type of CloneProject""" -input CloneProjectInput { - """The owner ID to create the project under.""" - targetOwnerId: ID! + """Identifies the comment body.""" + body: String! - """The source project to clone.""" - sourceId: ID! + """Identifies the comment body rendered to HTML.""" + bodyHTML: HTML! - """Whether or not to clone the source project's workflows.""" - includeWorkflows: Boolean! + """The body rendered to text.""" + bodyText: String! - """The name of the project.""" - name: String! + """ + Identifies the commit associated with the comment, if the commit exists. + """ + commit: Commit - """The description of the project.""" - body: String + """Identifies the date and time when the object was created.""" + createdAt: DateTime! - """The visibility of the project, defaults to false (private).""" - public: Boolean + """Check if this comment was created via an email reply.""" + createdViaEmail: Boolean! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of CloneProject""" -type CloneProjectPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The id of the JobStatus for populating cloned fields.""" - jobStatusId: String + """Identifies the primary key from the database.""" + databaseId: Int - """The new cloned project.""" - project: Project -} + """The actor who edited the comment.""" + editor: Actor + id: ID! -"""An object that can be closed""" -interface Closable { """ - `true` if the object is closed (definition of closed may depend on type) + Check if this comment was edited and includes an edit with the creation data """ - closed: Boolean! - - """Identifies the date and time when the object was closed.""" - closedAt: DateTime -} - -"""Represents a 'closed' event on any `Closable`.""" -type ClosedEvent implements Node & UniformResourceLocatable { - """Identifies the actor who performed the event.""" - actor: Actor - - """Object that was closed.""" - closable: Closable! - - """Object which triggered the creation of this event.""" - closer: Closer - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - id: ID! - - """The HTTP path for this closed event.""" - resourcePath: URI! - - """The HTTP URL for this closed event.""" - url: URI! -} - -"""Autogenerated input type of CloseIssue""" -input CloseIssueInput { - """ID of the issue to be closed.""" - issueId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of CloseIssue""" -type CloseIssuePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The issue that was closed.""" - issue: Issue -} - -"""Autogenerated input type of ClosePullRequest""" -input ClosePullRequestInput { - """ID of the pull request to be closed.""" - pullRequestId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of ClosePullRequest""" -type ClosePullRequestPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The pull request that was closed.""" - pullRequest: PullRequest -} - -"""The object which triggered a `ClosedEvent`.""" -union Closer = Commit | PullRequest - -"""The Code of Conduct for a repository""" -type CodeOfConduct implements Node { - """The body of the Code of Conduct""" - body: String - id: ID! - - """The key for the Code of Conduct""" - key: String! - - """The formal name of the Code of Conduct""" - name: String! - - """The HTTP path for this Code of Conduct""" - resourcePath: URI - - """The HTTP URL for this Code of Conduct""" - url: URI -} + includesCreatedEdit: Boolean! -"""Collaborators affiliation level with a subject.""" -enum CollaboratorAffiliation { - """All outside collaborators of an organization-owned subject.""" - OUTSIDE + """Returns whether or not a comment has been minimized.""" + isMinimized: Boolean! - """ - All collaborators with permissions to an organization-owned subject, regardless of organization membership status. - """ - DIRECT + """The moment the editor made the last edit""" + lastEditedAt: DateTime - """All collaborators the authenticated user can see.""" - ALL -} + """Returns why the comment was minimized.""" + minimizedReason: String -"""Types that can be inside Collection Items.""" -union CollectionItemContent = Repository | Organization | User + """Identifies the file path associated with the comment.""" + path: String -"""Represents a comment.""" -interface Comment { - """The actor who authored the comment.""" - author: Actor + """Identifies the line position associated with the comment.""" + position: Int - """Author's association with the subject of the comment.""" - authorAssociation: CommentAuthorAssociation! + """Identifies when the comment was published at.""" + publishedAt: DateTime - """The body as Markdown.""" - body: String! + """A list of reactions grouped by content left on the subject.""" + reactionGroups: [ReactionGroup!] - """The body rendered to HTML.""" - bodyHTML: HTML! + """A list of Reactions left on the Issue.""" + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String - """The body rendered to text.""" - bodyText: String! + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String - """Identifies the date and time when the object was created.""" - createdAt: DateTime! + """Returns the first _n_ elements from the list.""" + first: Int - """Check if this comment was created via an email reply.""" - createdViaEmail: Boolean! + """Returns the last _n_ elements from the list.""" + last: Int - """The actor who edited the comment.""" - editor: Actor - id: ID! + """Allows filtering Reactions by emoji.""" + content: ReactionContent - """ - Check if this comment was edited and includes an edit with the creation data - """ - includesCreatedEdit: Boolean! + """Allows specifying the order in which reactions are returned.""" + orderBy: ReactionOrder + ): ReactionConnection! - """The moment the editor made the last edit""" - lastEditedAt: DateTime + """The repository associated with this node.""" + repository: Repository! - """Identifies when the comment was published at.""" - publishedAt: DateTime + """The HTTP path permalink for this commit comment.""" + resourcePath: URI! """Identifies the date and time when the object was last updated.""" updatedAt: DateTime! + """The HTTP URL permalink for this commit comment.""" + url: URI! + """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -1372,81 +1276,56 @@ interface Comment { last: Int ): UserContentEditConnection - """Did the viewer author this comment.""" - viewerDidAuthor: Boolean! -} - -"""A comment author association with repository.""" -enum CommentAuthorAssociation { - """Author is a member of the organization that owns the repository.""" - MEMBER - - """Author is the owner of the repository.""" - OWNER + """Check if the current viewer can delete this object.""" + viewerCanDelete: Boolean! - """Author has been invited to collaborate on the repository.""" - COLLABORATOR + """Check if the current viewer can minimize this object.""" + viewerCanMinimize: Boolean! - """Author has previously committed to the repository.""" - CONTRIBUTOR + """Can user react to this subject""" + viewerCanReact: Boolean! - """Author has not previously committed to the repository.""" - FIRST_TIME_CONTRIBUTOR + """Check if the current viewer can update this object.""" + viewerCanUpdate: Boolean! - """Author has not previously committed to GitHub.""" - FIRST_TIMER + """Reasons why the current viewer can not update this comment.""" + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! - """Author has no association with the repository.""" - NONE + """Did the viewer author this comment.""" + viewerDidAuthor: Boolean! } -"""The possible errors that will prevent a user from updating a comment.""" -enum CommentCannotUpdateReason { - """ - You must be the author or have write access to this repository to update this comment. - """ - INSUFFICIENT_ACCESS - - """Unable to create comment because issue is locked.""" - LOCKED - - """You must be logged in to update this comment.""" - LOGIN_REQUIRED +"""The connection type for CommitComment.""" +type CommitCommentConnection { + """A list of edges.""" + edges: [CommitCommentEdge] - """Repository is under maintenance.""" - MAINTENANCE + """A list of nodes.""" + nodes: [CommitComment] - """At least one email address must be verified to update this comment.""" - VERIFIED_EMAIL_REQUIRED + """Information to aid in pagination.""" + pageInfo: PageInfo! - """You cannot update this comment""" - DENIED + """Identifies the total count of items in the connection.""" + totalCount: Int! } -"""Represents a 'comment_deleted' event on a given issue or pull request.""" -type CommentDeletedEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! +"""An edge in a connection.""" +type CommitCommentEdge { + """A cursor for use in pagination.""" + cursor: String! - """Identifies the primary key from the database.""" - databaseId: Int - id: ID! + """The item at the end of the edge.""" + node: CommitComment } -"""Represents a Git commit.""" -type Commit implements Node & GitObject & Subscribable & UniformResourceLocatable { - """An abbreviated version of the Git object ID""" - abbreviatedOid: String! - - """The number of additions in this commit.""" - additions: Int! - - """The pull requests associated with a commit""" - associatedPullRequests( - """Returns the elements in the list that come after the specified cursor.""" +"""A thread of comments on a commit.""" +type CommitCommentThread implements Node & RepositoryNode { + """The comments that exist in this thread.""" + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -1459,1553 +1338,374 @@ type Commit implements Node & GitObject & Subscribable & UniformResourceLocatabl """Returns the last _n_ elements from the list.""" last: Int + ): CommitCommentConnection! - """Ordering options for pull requests.""" - orderBy: PullRequestOrder - ): PullRequestConnection + """The commit the comments were made on.""" + commit: Commit! + id: ID! - """Authorship details of the commit.""" - author: GitActor - - """Check if the committer and the author match.""" - authoredByCommitter: Boolean! - - """The datetime when this commit was authored.""" - authoredDate: DateTime! - - """Fetches `git blame` information.""" - blame( - """The file whose Git blame information you want.""" - path: String! - ): Blame! - - """The number of changed files in this commit.""" - changedFiles: Int! - - """The check suites associated with a commit.""" - checkSuites( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Filters the check suites by this type.""" - filterBy: CheckSuiteFilter - ): CheckSuiteConnection - - """Comments made on the commit.""" - comments( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): CommitCommentConnection! - - """The HTTP path for this Git object""" - commitResourcePath: URI! - - """The HTTP URL for this Git object""" - commitUrl: URI! - - """The datetime when this commit was committed.""" - committedDate: DateTime! - - """Check if commited via GitHub web UI.""" - committedViaWeb: Boolean! - - """Committership details of the commit.""" - committer: GitActor - - """The number of deletions in this commit.""" - deletions: Int! - - """The deployments associated with a commit.""" - deployments( - """Environments to list deployments for""" - environments: [String!] - - """Ordering options for deployments returned from the connection.""" - orderBy: DeploymentOrder - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): DeploymentConnection - - """ - The linear commit history starting from (and including) this commit, in the same order as `git log`. - """ - history( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """ - If non-null, filters history to only show commits touching files under this path. - """ - path: String - - """ - If non-null, filters history to only show commits with matching authorship. - """ - author: CommitAuthor - - """Allows specifying a beginning time or date for fetching commits.""" - since: GitTimestamp - - """Allows specifying an ending time or date for fetching commits.""" - until: GitTimestamp - ): CommitHistoryConnection! - id: ID! - - """The Git commit message""" - message: String! - - """The Git commit message body""" - messageBody: String! - - """The commit message body rendered to HTML.""" - messageBodyHTML: HTML! - - """The Git commit message headline""" - messageHeadline: String! - - """The commit message headline rendered to HTML.""" - messageHeadlineHTML: HTML! - - """The Git object ID""" - oid: GitObjectID! - - """The parents of a commit.""" - parents( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): CommitConnection! - - """The datetime when this commit was pushed.""" - pushedDate: DateTime - - """The Repository this commit belongs to""" - repository: Repository! - - """The HTTP path for this commit""" - resourcePath: URI! - - """Commit signing information, if present.""" - signature: GitSignature - - """Status information for this commit""" - status: Status - - """ - Returns a URL to download a tarball archive for a repository. - Note: For private repositories, these links are temporary and expire after five minutes. - """ - tarballUrl: URI! - - """Commit's root Tree""" - tree: Tree! - - """The HTTP path for the tree of this commit""" - treeResourcePath: URI! - - """The HTTP URL for the tree of this commit""" - treeUrl: URI! - - """The HTTP URL for this commit""" - url: URI! - - """ - Check if the viewer is able to change their subscription status for the repository. - """ - viewerCanSubscribe: Boolean! - - """ - Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. - """ - viewerSubscription: SubscriptionState - - """ - Returns a URL to download a zipball archive for a repository. - Note: For private repositories, these links are temporary and expire after five minutes. - """ - zipballUrl: URI! -} - -"""Specifies an author for filtering Git commits.""" -input CommitAuthor { - """ - ID of a User to filter by. If non-null, only commits authored by this user - will be returned. This field takes precedence over emails. - """ - id: ID - - """ - Email addresses to filter by. Commits authored by any of the specified email addresses will be returned. - """ - emails: [String!] -} - -"""Represents a comment on a given Commit.""" -type CommitComment implements Node & Comment & Deletable & Updatable & UpdatableComment & Reactable & RepositoryNode { - """The actor who authored the comment.""" - author: Actor - - """Author's association with the subject of the comment.""" - authorAssociation: CommentAuthorAssociation! - - """Identifies the comment body.""" - body: String! - - """Identifies the comment body rendered to HTML.""" - bodyHTML: HTML! - - """The body rendered to text.""" - bodyText: String! - - """ - Identifies the commit associated with the comment, if the commit exists. - """ - commit: Commit - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - - """Check if this comment was created via an email reply.""" - createdViaEmail: Boolean! - - """Identifies the primary key from the database.""" - databaseId: Int - - """The actor who edited the comment.""" - editor: Actor - id: ID! - - """ - Check if this comment was edited and includes an edit with the creation data - """ - includesCreatedEdit: Boolean! - - """Returns whether or not a comment has been minimized.""" - isMinimized: Boolean! - - """The moment the editor made the last edit""" - lastEditedAt: DateTime - - """Returns why the comment was minimized.""" - minimizedReason: String - - """Identifies the file path associated with the comment.""" - path: String - - """Identifies the line position associated with the comment.""" - position: Int - - """Identifies when the comment was published at.""" - publishedAt: DateTime - - """A list of reactions grouped by content left on the subject.""" - reactionGroups: [ReactionGroup!] - - """A list of Reactions left on the Issue.""" - reactions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Allows filtering Reactions by emoji.""" - content: ReactionContent - - """Allows specifying the order in which reactions are returned.""" - orderBy: ReactionOrder - ): ReactionConnection! - - """The repository associated with this node.""" - repository: Repository! - - """The HTTP path permalink for this commit comment.""" - resourcePath: URI! - - """Identifies the date and time when the object was last updated.""" - updatedAt: DateTime! - - """The HTTP URL permalink for this commit comment.""" - url: URI! - - """A list of edits to this content.""" - userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): UserContentEditConnection - - """Check if the current viewer can delete this object.""" - viewerCanDelete: Boolean! - - """Check if the current viewer can minimize this object.""" - viewerCanMinimize: Boolean! - - """Can user react to this subject""" - viewerCanReact: Boolean! - - """Check if the current viewer can update this object.""" - viewerCanUpdate: Boolean! - - """Reasons why the current viewer can not update this comment.""" - viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! - - """Did the viewer author this comment.""" - viewerDidAuthor: Boolean! -} - -"""The connection type for CommitComment.""" -type CommitCommentConnection { - """A list of edges.""" - edges: [CommitCommentEdge] - - """A list of nodes.""" - nodes: [CommitComment] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""An edge in a connection.""" -type CommitCommentEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: CommitComment -} - -"""A thread of comments on a commit.""" -type CommitCommentThread implements Node & RepositoryNode { - """The comments that exist in this thread.""" - comments( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): CommitCommentConnection! - - """The commit the comments were made on.""" - commit: Commit! - id: ID! - - """The file the comments were made on.""" - path: String - - """The position in the diff for the commit that the comment was made on.""" - position: Int - - """The repository associated with this node.""" - repository: Repository! -} - -"""The connection type for Commit.""" -type CommitConnection { - """A list of edges.""" - edges: [CommitEdge] - - """A list of nodes.""" - nodes: [Commit] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""Ordering options for commit contribution connections.""" -input CommitContributionOrder { - """The field by which to order commit contributions.""" - field: CommitContributionOrderField! - - """The ordering direction.""" - direction: OrderDirection! -} - -"""Properties by which commit contribution connections can be ordered.""" -enum CommitContributionOrderField { - """Order commit contributions by when they were made.""" - OCCURRED_AT - - """Order commit contributions by how many commits they represent.""" - COMMIT_COUNT -} - -"""This aggregates commits made by a user within one repository.""" -type CommitContributionsByRepository { - """The commit contributions, each representing a day.""" - contributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """ - Ordering options for commit contributions returned from the connection. - """ - orderBy: CommitContributionOrder - ): CreatedCommitContributionConnection! - - """The repository in which the commits were made.""" - repository: Repository! - - """ - The HTTP path for the user's commits to the repository in this time range. - """ - resourcePath: URI! - - """ - The HTTP URL for the user's commits to the repository in this time range. - """ - url: URI! -} - -"""An edge in a connection.""" -type CommitEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: Commit -} - -"""The connection type for Commit.""" -type CommitHistoryConnection { - """A list of edges.""" - edges: [CommitEdge] - - """A list of nodes.""" - nodes: [Commit] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""A content attachment""" -type ContentAttachment { - """ - The body text of the content attachment. This parameter supports markdown. - """ - body: String! - - """The content reference that the content attachment is attached to.""" - contentReference: ContentReference! - - """Identifies the primary key from the database.""" - databaseId: Int! - id: ID! - - """The title of the content attachment.""" - title: String! -} - -"""A content reference""" -type ContentReference { - """Identifies the primary key from the database.""" - databaseId: Int! - id: ID! - - """The reference of the content reference.""" - reference: String! -} - -""" -Represents a contribution a user made on GitHub, such as opening an issue. -""" -interface Contribution { - """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - - """ - isRestricted: Boolean! - - """When this contribution was made.""" - occurredAt: DateTime! - - """The HTTP path for this contribution.""" - resourcePath: URI! - - """The HTTP URL for this contribution.""" - url: URI! - - """ - The user who made this contribution. - - """ - user: User! -} - -"""A calendar of contributions made on GitHub by a user.""" -type ContributionCalendar { - """ - A list of hex color codes used in this calendar. The darker the color, the more contributions it represents. - """ - colors: [String!]! - - """ - Determine if the color set was chosen because it's currently Halloween. - """ - isHalloween: Boolean! - - """A list of the months of contributions in this calendar.""" - months: [ContributionCalendarMonth!]! - - """The count of total contributions in the calendar.""" - totalContributions: Int! - - """A list of the weeks of contributions in this calendar.""" - weeks: [ContributionCalendarWeek!]! -} - -"""Represents a single day of contributions on GitHub by a user.""" -type ContributionCalendarDay { - """ - The hex color code that represents how many contributions were made on this day compared to others in the calendar. - """ - color: String! - - """How many contributions were made by the user on this day.""" - contributionCount: Int! - - """The day this square represents.""" - date: Date! - - """ - A number representing which day of the week this square represents, e.g., 1 is Monday. - """ - weekday: Int! -} - -"""A month of contributions in a user's contribution graph.""" -type ContributionCalendarMonth { - """The date of the first day of this month.""" - firstDay: Date! - - """The name of the month.""" - name: String! - - """How many weeks started in this month.""" - totalWeeks: Int! - - """The year the month occurred in.""" - year: Int! -} - -"""A week of contributions in a user's contribution graph.""" -type ContributionCalendarWeek { - """The days of contributions in this week.""" - contributionDays: [ContributionCalendarDay!]! - - """The date of the earliest square in this week.""" - firstDay: Date! -} - -"""Ordering options for contribution connections.""" -input ContributionOrder { - """The field by which to order contributions.""" - field: ContributionOrderField! - - """The ordering direction.""" - direction: OrderDirection! -} - -"""Properties by which contribution connections can be ordered.""" -enum ContributionOrderField { - """Order contributions by when they were made.""" - OCCURRED_AT -} - -""" -A contributions collection aggregates contributions such as opened issues and commits created by a user. -""" -type ContributionsCollection { - """Commit contributions made by the user, grouped by repository.""" - commitContributionsByRepository( - """How many repositories should be included.""" - maxRepositories: Int = 25 - ): [CommitContributionsByRepository!]! - - """A calendar of this user's contributions on GitHub.""" - contributionCalendar: ContributionCalendar! - - """ - The years the user has been making contributions with the most recent year first. - """ - contributionYears: [Int!]! - - """ - Determine if this collection's time span ends in the current month. - - """ - doesEndInCurrentMonth: Boolean! - - """ - The date of the first restricted contribution the user made in this time - period. Can only be non-null when the user has enabled private contribution counts. - """ - earliestRestrictedContributionDate: Date - - """The ending date and time of this collection.""" - endedAt: DateTime! - - """ - The first issue the user opened on GitHub. This will be null if that issue was - opened outside the collection's time range and ignoreTimeRange is false. If - the issue is not visible but the user has opted to show private contributions, - a RestrictedContribution will be returned. - """ - firstIssueContribution( - """ - If true, the first issue will be returned even if it was opened outside of the collection's time range. - - **Upcoming Change on 2019-07-01 UTC** - **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back - **Reason:** ignore_time_range will be removed - - """ - ignoreTimeRange: Boolean = false - ): CreatedIssueOrRestrictedContribution - - """ - The first pull request the user opened on GitHub. This will be null if that - pull request was opened outside the collection's time range and - ignoreTimeRange is not true. If the pull request is not visible but the user - has opted to show private contributions, a RestrictedContribution will be returned. - """ - firstPullRequestContribution( - """ - If true, the first pull request will be returned even if it was opened outside of the collection's time range. - - **Upcoming Change on 2019-07-01 UTC** - **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back - **Reason:** ignore_time_range will be removed - - """ - ignoreTimeRange: Boolean = false - ): CreatedPullRequestOrRestrictedContribution - - """ - The first repository the user created on GitHub. This will be null if that - first repository was created outside the collection's time range and - ignoreTimeRange is false. If the repository is not visible, then a - RestrictedContribution is returned. - """ - firstRepositoryContribution( - """ - If true, the first repository will be returned even if it was opened outside of the collection's time range. - - **Upcoming Change on 2019-07-01 UTC** - **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back - **Reason:** ignore_time_range will be removed - - """ - ignoreTimeRange: Boolean = false - ): CreatedRepositoryOrRestrictedContribution - - """ - Does the user have any more activity in the timeline that occurred prior to the collection's time range? - """ - hasActivityInThePast: Boolean! - - """Determine if there are any contributions in this collection.""" - hasAnyContributions: Boolean! - - """ - Determine if the user made any contributions in this time frame whose details - are not visible because they were made in a private repository. Can only be - true if the user enabled private contribution counts. - """ - hasAnyRestrictedContributions: Boolean! - - """Whether or not the collector's time span is all within the same day.""" - isSingleDay: Boolean! - - """A list of issues the user opened.""" - issueContributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Should the user's first issue ever be excluded from the result.""" - excludeFirst: Boolean = false - - """Should the user's most commented issue be excluded from the result.""" - excludePopular: Boolean = false - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedIssueContributionConnection! - - """Issue contributions made by the user, grouped by repository.""" - issueContributionsByRepository( - """How many repositories should be included.""" - maxRepositories: Int = 25 - - """Should the user's first issue ever be excluded from the result.""" - excludeFirst: Boolean = false - - """Should the user's most commented issue be excluded from the result.""" - excludePopular: Boolean = false - ): [IssueContributionsByRepository!]! - - """ - When the user signed up for GitHub. This will be null if that sign up date - falls outside the collection's time range and ignoreTimeRange is false. - """ - joinedGitHubContribution( - """ - If true, the contribution will be returned even if the user signed up outside of the collection's time range. - - **Upcoming Change on 2019-07-01 UTC** - **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back - **Reason:** ignore_time_range will be removed - - """ - ignoreTimeRange: Boolean = false - ): JoinedGitHubContribution - - """ - The date of the most recent restricted contribution the user made in this time - period. Can only be non-null when the user has enabled private contribution counts. - """ - latestRestrictedContributionDate: Date - - """ - When this collection's time range does not include any activity from the user, use this - to get a different collection from an earlier time range that does have activity. - - """ - mostRecentCollectionWithActivity: ContributionsCollection - - """ - Returns a different contributions collection from an earlier time range than this one - that does not have any contributions. - - """ - mostRecentCollectionWithoutActivity: ContributionsCollection - - """ - The issue the user opened on GitHub that received the most comments in the specified - time frame. - - """ - popularIssueContribution: CreatedIssueContribution - - """ - The pull request the user opened on GitHub that received the most comments in the - specified time frame. - - """ - popularPullRequestContribution: CreatedPullRequestContribution - - """Pull request contributions made by the user.""" - pullRequestContributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Should the user's first pull request ever be excluded from the result.""" - excludeFirst: Boolean = false - - """ - Should the user's most commented pull request be excluded from the result. - """ - excludePopular: Boolean = false - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedPullRequestContributionConnection! - - """Pull request contributions made by the user, grouped by repository.""" - pullRequestContributionsByRepository( - """How many repositories should be included.""" - maxRepositories: Int = 25 - - """Should the user's first pull request ever be excluded from the result.""" - excludeFirst: Boolean = false - - """ - Should the user's most commented pull request be excluded from the result. - """ - excludePopular: Boolean = false - ): [PullRequestContributionsByRepository!]! - - """Pull request review contributions made by the user.""" - pullRequestReviewContributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedPullRequestReviewContributionConnection! - - """ - Pull request review contributions made by the user, grouped by repository. - """ - pullRequestReviewContributionsByRepository( - """How many repositories should be included.""" - maxRepositories: Int = 25 - ): [PullRequestReviewContributionsByRepository!]! - - """ - A list of repositories owned by the user that the user created in this time range. - """ - repositoryContributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Should the user's first repository ever be excluded from the result.""" - excludeFirst: Boolean = false - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedRepositoryContributionConnection! - - """ - A count of contributions made by the user that the viewer cannot access. Only - non-zero when the user has chosen to share their private contribution counts. - """ - restrictedContributionsCount: Int! - - """The beginning date and time of this collection.""" - startedAt: DateTime! - - """How many commits were made by the user in this time span.""" - totalCommitContributions: Int! - - """How many issues the user opened.""" - totalIssueContributions( - """Should the user's first issue ever be excluded from this count.""" - excludeFirst: Boolean = false - - """Should the user's most commented issue be excluded from this count.""" - excludePopular: Boolean = false - ): Int! - - """How many pull requests the user opened.""" - totalPullRequestContributions( - """Should the user's first pull request ever be excluded from this count.""" - excludeFirst: Boolean = false - - """ - Should the user's most commented pull request be excluded from this count. - """ - excludePopular: Boolean = false - ): Int! - - """How many pull request reviews the user left.""" - totalPullRequestReviewContributions: Int! - - """How many different repositories the user committed to.""" - totalRepositoriesWithContributedCommits: Int! - - """How many different repositories the user opened issues in.""" - totalRepositoriesWithContributedIssues( - """Should the user's first issue ever be excluded from this count.""" - excludeFirst: Boolean = false - - """Should the user's most commented issue be excluded from this count.""" - excludePopular: Boolean = false - ): Int! - - """How many different repositories the user left pull request reviews in.""" - totalRepositoriesWithContributedPullRequestReviews: Int! - - """How many different repositories the user opened pull requests in.""" - totalRepositoriesWithContributedPullRequests( - """Should the user's first pull request ever be excluded from this count.""" - excludeFirst: Boolean = false - - """ - Should the user's most commented pull request be excluded from this count. - """ - excludePopular: Boolean = false - ): Int! - - """How many repositories the user created.""" - totalRepositoryContributions( - """Should the user's first repository ever be excluded from this count.""" - excludeFirst: Boolean = false - ): Int! - - """The user who made the contributions in this collection.""" - user: User! -} - -""" -Represents a 'converted_note_to_issue' event on a given issue or pull request. -""" -type ConvertedNoteToIssueEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor + """The file the comments were made on.""" + path: String - """Identifies the date and time when the object was created.""" - createdAt: DateTime! + """The position in the diff for the commit that the comment was made on.""" + position: Int - """Identifies the primary key from the database.""" - databaseId: Int - id: ID! + """The repository associated with this node.""" + repository: Repository! } -"""Autogenerated input type of ConvertProjectCardNoteToIssue""" -input ConvertProjectCardNoteToIssueInput { - """The ProjectCard ID to convert.""" - projectCardId: ID! - - """The ID of the repository to create the issue in.""" - repositoryId: ID! +"""The connection type for Commit.""" +type CommitConnection { + """A list of edges.""" + edges: [CommitEdge] - """ - The title of the newly created issue. Defaults to the card's note text. - """ - title: String + """A list of nodes.""" + nodes: [Commit] - """The body of the newly created issue.""" - body: String + """Information to aid in pagination.""" + pageInfo: PageInfo! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + """Identifies the total count of items in the connection.""" + totalCount: Int! } -"""Autogenerated return type of ConvertProjectCardNoteToIssue""" -type ConvertProjectCardNoteToIssuePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String +"""An edge in a connection.""" +type CommitEdge { + """A cursor for use in pagination.""" + cursor: String! - """The updated ProjectCard.""" - projectCard: ProjectCard + """The item at the end of the edge.""" + node: Commit } -"""Autogenerated input type of CreateBranchProtectionRule""" -input CreateBranchProtectionRuleInput { - """ - The global relay id of the repository in which a new branch protection rule should be created in. - """ - repositoryId: ID! - - """The glob-like pattern used to determine matching branches.""" - pattern: String! - - """Are approving reviews required to update matching branches.""" - requiresApprovingReviews: Boolean - - """Number of approving reviews required to update matching branches.""" - requiredApprovingReviewCount: Int - - """Are commits required to be signed.""" - requiresCommitSignatures: Boolean - - """Can admins overwrite branch protection.""" - isAdminEnforced: Boolean - - """Are status checks required to update matching branches.""" - requiresStatusChecks: Boolean - - """Are branches required to be up to date before merging.""" - requiresStrictStatusChecks: Boolean - - """Are reviews from code owners required to update matching branches.""" - requiresCodeOwnerReviews: Boolean - - """ - Will new commits pushed to matching branches dismiss pull request review approvals. - """ - dismissesStaleReviews: Boolean - - """Is dismissal of pull request reviews restricted.""" - restrictsReviewDismissals: Boolean - - """ - A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches. - """ - reviewDismissalActorIds: [ID!] - - """Is pushing to matching branches restricted.""" - restrictsPushes: Boolean - - """A list of User or Team IDs allowed to push to matching branches.""" - pushActorIds: [ID!] - - """ - List of required status check contexts that must pass for commits to be accepted to matching branches. - """ - requiredStatusCheckContexts: [String!] +"""The connection type for Commit.""" +type CommitHistoryConnection { + edges: [CommitEdge] - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} + """A list of nodes.""" + nodes: [Commit] -"""Autogenerated return type of CreateBranchProtectionRule""" -type CreateBranchProtectionRulePayload { - """The newly created BranchProtectionRule.""" - branchProtectionRule: BranchProtectionRule + """Information to aid in pagination.""" + pageInfo: PageInfo! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + """Identifies the total count of items in the connection.""" + totalCount: Int! } -"""Autogenerated input type of CreateCheckRun""" -input CreateCheckRunInput { - """The node ID of the repository.""" - repositoryId: ID! - - """The name of the check.""" - name: String! - - """The SHA of the head commit.""" - headSha: GitObjectID! - - """ - The URL of the integrator's site that has the full details of the check. - """ - detailsUrl: URI - - """A reference for the run on the integrator's system.""" - externalId: String - - """The current status.""" - status: RequestableCheckStatusState - - """The time that the check run began.""" - startedAt: DateTime - - """The final conclusion of the check.""" - conclusion: CheckConclusionState - - """The time that the check run finished.""" - completedAt: DateTime - - """Descriptive details about the run.""" - output: CheckRunOutput - +"""A content attachment""" +type ContentAttachment { """ - Possible further actions the integrator can perform, which a user may trigger. + The body text of the content attachment. This parameter supports markdown. """ - actions: [CheckRunAction!] - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of CreateCheckRun""" -type CreateCheckRunPayload { - """The newly created check run.""" - checkRun: CheckRun - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of CreateCheckSuite""" -input CreateCheckSuiteInput { - """The Node ID of the repository.""" - repositoryId: ID! - - """The SHA of the head commit.""" - headSha: GitObjectID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of CreateCheckSuite""" -type CreateCheckSuitePayload { - """The newly created check suite.""" - checkSuite: CheckSuite + body: String! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} + """The content reference that the content attachment is attached to.""" + contentReference: ContentReference! -"""Autogenerated input type of CreateContentAttachment""" -input CreateContentAttachmentInput { - """The node ID of the content_reference.""" - contentReferenceId: ID! + """Identifies the primary key from the database.""" + databaseId: Int! + id: ID! """The title of the content attachment.""" title: String! - - """The body of the content attachment, which may contain markdown.""" - body: String! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String } -"""Represents the contribution a user made by committing to a repository.""" -type CreatedCommitContribution implements Contribution { - """How many commits were made on this day to this repository by the user.""" - commitCount: Int! - - """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - - """ - isRestricted: Boolean! - - """When this contribution was made.""" - occurredAt: DateTime! - - """The repository the user made a commit in.""" - repository: Repository! - - """The HTTP path for this contribution.""" - resourcePath: URI! +"""A content reference""" +type ContentReference { + """Identifies the primary key from the database.""" + databaseId: Int! + id: ID! - """The HTTP URL for this contribution.""" - url: URI! + """The reference of the content reference.""" + reference: String! +} +"""A calendar of contributions made on GitHub by a user.""" +type ContributionCalendar { """ - The user who made this contribution. - + A list of hex color codes used in this calendar. The darker the color, the more contributions it represents. """ - user: User! -} - -"""The connection type for CreatedCommitContribution.""" -type CreatedCommitContributionConnection { - """A list of edges.""" - edges: [CreatedCommitContributionEdge] - - """A list of nodes.""" - nodes: [CreatedCommitContribution] - - """Information to aid in pagination.""" - pageInfo: PageInfo! + colors: [String!]! """ - Identifies the total count of commits across days and repositories in the connection. - + Determine if the color set was chosen because it's currently Halloween. """ - totalCount: Int! -} + isHalloween: Boolean! -"""An edge in a connection.""" -type CreatedCommitContributionEdge { - """A cursor for use in pagination.""" - cursor: String! + """A list of the months of contributions in this calendar.""" + months: [ContributionCalendarMonth!]! - """The item at the end of the edge.""" - node: CreatedCommitContribution + """The count of total contributions in the calendar.""" + totalContributions: Int! + + """A list of the weeks of contributions in this calendar.""" + weeks: [ContributionCalendarWeek!]! } -"""Represents the contribution a user made on GitHub by opening an issue.""" -type CreatedIssueContribution implements Contribution { +"""Represents a single day of contributions on GitHub by a user.""" +type ContributionCalendarDay { """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - + The hex color code that represents how many contributions were made on this day compared to others in the calendar. """ - isRestricted: Boolean! - - """The issue that was opened.""" - issue: Issue! - - """When this contribution was made.""" - occurredAt: DateTime! + color: String! - """The HTTP path for this contribution.""" - resourcePath: URI! + """How many contributions were made by the user on this day.""" + contributionCount: Int! - """The HTTP URL for this contribution.""" - url: URI! + """The day this square represents.""" + date: Date! """ - The user who made this contribution. - + A number representing which day of the week this square represents, e.g., 1 is Monday. """ - user: User! + weekday: Int! } -"""The connection type for CreatedIssueContribution.""" -type CreatedIssueContributionConnection { - """A list of edges.""" - edges: [CreatedIssueContributionEdge] +"""A month of contributions in a user's contribution graph.""" +type ContributionCalendarMonth { + """The date of the first day of this month.""" + firstDay: Date! - """A list of nodes.""" - nodes: [CreatedIssueContribution] + """The name of the month.""" + name: String! - """Information to aid in pagination.""" - pageInfo: PageInfo! + """How many weeks started in this month.""" + totalWeeks: Int! - """Identifies the total count of items in the connection.""" - totalCount: Int! + """The year the month occurred in.""" + year: Int! } -"""An edge in a connection.""" -type CreatedIssueContributionEdge { - """A cursor for use in pagination.""" - cursor: String! +"""A week of contributions in a user's contribution graph.""" +type ContributionCalendarWeek { + """The days of contributions in this week.""" + contributionDays: [ContributionCalendarDay!]! - """The item at the end of the edge.""" - node: CreatedIssueContribution + """The date of the earliest square in this week.""" + firstDay: Date! } """ -Represents either a issue the viewer can access or a restricted contribution. +A contributions collection aggregates contributions such as opened issues and commits created by a user. """ -union CreatedIssueOrRestrictedContribution = CreatedIssueContribution | RestrictedContribution +type ContributionsCollection { + """A calendar of this user's contributions on GitHub.""" + contributionCalendar: ContributionCalendar! -""" -Represents the contribution a user made on GitHub by opening a pull request. -""" -type CreatedPullRequestContribution implements Contribution { """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. + Determine if this collection's time span ends in the current month. """ - isRestricted: Boolean! - - """When this contribution was made.""" - occurredAt: DateTime! + doesEndInCurrentMonth: Boolean! - """The pull request that was opened.""" - pullRequest: PullRequest! + """ + The date of the first restricted contribution the user made in this time + period. Can only be non-null when the user has enabled private contribution counts. + """ + earliestRestrictedContributionDate: Date - """The HTTP path for this contribution.""" - resourcePath: URI! + """The ending date and time of this collection.""" + endedAt: DateTime! - """The HTTP URL for this contribution.""" - url: URI! + """Determine if there are any contributions in this collection.""" + hasAnyContributions: Boolean! """ - The user who made this contribution. - + Determine if the user made any contributions in this time frame whose details + are not visible because they were made in a private repository. Can only be + true if the user enabled private contribution counts. """ - user: User! -} + hasAnyRestrictedContributions: Boolean! -"""The connection type for CreatedPullRequestContribution.""" -type CreatedPullRequestContributionConnection { - """A list of edges.""" - edges: [CreatedPullRequestContributionEdge] + """Whether or not the collector's time span is all within the same day.""" + isSingleDay: Boolean! - """A list of nodes.""" - nodes: [CreatedPullRequestContribution] + """ + The date of the most recent restricted contribution the user made in this time + period. Can only be non-null when the user has enabled private contribution counts. + """ + latestRestrictedContributionDate: Date - """Information to aid in pagination.""" - pageInfo: PageInfo! + """ + When this collection's time range does not include any activity from the user, use this + to get a different collection from an earlier time range that does have activity. + + """ + mostRecentCollectionWithActivity: ContributionsCollection - """Identifies the total count of items in the connection.""" - totalCount: Int! -} + """ + A count of contributions made by the user that the viewer cannot access. Only + non-zero when the user has chosen to share their private contribution counts. + """ + restrictedContributionsCount: Int! -"""An edge in a connection.""" -type CreatedPullRequestContributionEdge { - """A cursor for use in pagination.""" - cursor: String! + """The beginning date and time of this collection.""" + startedAt: DateTime! - """The item at the end of the edge.""" - node: CreatedPullRequestContribution -} + """How many commits were made by the user in this time span.""" + totalCommitContributions: Int! -""" -Represents either a pull request the viewer can access or a restricted contribution. -""" -union CreatedPullRequestOrRestrictedContribution = CreatedPullRequestContribution | RestrictedContribution + """How many issues the user opened.""" + totalIssueContributions( + """Should the user's first issue ever be excluded from this count.""" + excludeFirst: Boolean = false -""" -Represents the contribution a user made by leaving a review on a pull request. -""" -type CreatedPullRequestReviewContribution implements Contribution { - """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - - """ - isRestricted: Boolean! + """Should the user's most commented issue be excluded from this count.""" + excludePopular: Boolean = false + ): Int! - """When this contribution was made.""" - occurredAt: DateTime! + """How many pull requests the user opened.""" + totalPullRequestContributions( + """ + Should the user's first pull request ever be excluded from this count. + """ + excludeFirst: Boolean = false - """The pull request the user reviewed.""" - pullRequest: PullRequest! + """ + Should the user's most commented pull request be excluded from this count. + """ + excludePopular: Boolean = false + ): Int! - """The review the user left on the pull request.""" - pullRequestReview: PullRequestReview! + """How many pull request reviews the user left.""" + totalPullRequestReviewContributions: Int! - """The repository containing the pull request that the user reviewed.""" - repository: Repository! + """How many different repositories the user committed to.""" + totalRepositoriesWithContributedCommits: Int! - """The HTTP path for this contribution.""" - resourcePath: URI! + """How many different repositories the user opened issues in.""" + totalRepositoriesWithContributedIssues( + """Should the user's first issue ever be excluded from this count.""" + excludeFirst: Boolean = false - """The HTTP URL for this contribution.""" - url: URI! + """Should the user's most commented issue be excluded from this count.""" + excludePopular: Boolean = false + ): Int! """ - The user who made this contribution. - + How many different repositories the user left pull request reviews in. """ - user: User! -} + totalRepositoriesWithContributedPullRequestReviews: Int! -"""The connection type for CreatedPullRequestReviewContribution.""" -type CreatedPullRequestReviewContributionConnection { - """A list of edges.""" - edges: [CreatedPullRequestReviewContributionEdge] + """How many different repositories the user opened pull requests in.""" + totalRepositoriesWithContributedPullRequests( + """ + Should the user's first pull request ever be excluded from this count. + """ + excludeFirst: Boolean = false - """A list of nodes.""" - nodes: [CreatedPullRequestReviewContribution] + """ + Should the user's most commented pull request be excluded from this count. + """ + excludePopular: Boolean = false + ): Int! - """Information to aid in pagination.""" - pageInfo: PageInfo! + """How many repositories the user created.""" + totalRepositoryContributions( + """Should the user's first repository ever be excluded from this count.""" + excludeFirst: Boolean = false + ): Int! - """Identifies the total count of items in the connection.""" - totalCount: Int! + """The user who made the contributions in this collection.""" + user: User! } -"""An edge in a connection.""" -type CreatedPullRequestReviewContributionEdge { - """A cursor for use in pagination.""" - cursor: String! +""" +Represents a 'converted_note_to_issue' event on a given issue or pull request. +""" +type ConvertedNoteToIssueEvent implements Node { + """Identifies the actor who performed the event.""" + actor: Actor - """The item at the end of the edge.""" - node: CreatedPullRequestReviewContribution + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + + """Identifies the primary key from the database.""" + databaseId: Int + id: ID! } -""" -Represents the contribution a user made on GitHub by creating a repository. -""" -type CreatedRepositoryContribution implements Contribution { +"""Autogenerated input type of CreateBranchProtectionRule""" +input CreateBranchProtectionRuleInput { """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - + The global relay id of the repository in which a new branch protection rule should be created in. """ - isRestricted: Boolean! + repositoryId: ID! - """When this contribution was made.""" - occurredAt: DateTime! + """The glob-like pattern used to determine matching branches.""" + pattern: String! - """The repository that was created.""" - repository: Repository! + """Are approving reviews required to update matching branches.""" + requiresApprovingReviews: Boolean - """The HTTP path for this contribution.""" - resourcePath: URI! + """Number of approving reviews required to update matching branches.""" + requiredApprovingReviewCount: Int + + """Are commits required to be signed.""" + requiresCommitSignatures: Boolean + + """Can admins overwrite branch protection.""" + isAdminEnforced: Boolean + + """Are status checks required to update matching branches.""" + requiresStatusChecks: Boolean + + """Are branches required to be up to date before merging.""" + requiresStrictStatusChecks: Boolean + + """Are reviews from code owners required to update matching branches.""" + requiresCodeOwnerReviews: Boolean + + """ + Will new commits pushed to matching branches dismiss pull request review approvals. + """ + dismissesStaleReviews: Boolean - """The HTTP URL for this contribution.""" - url: URI! + """Is dismissal of pull request reviews restricted.""" + restrictsReviewDismissals: Boolean """ - The user who made this contribution. - + A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches. """ - user: User! -} + reviewDismissalActorIds: [ID!] -"""The connection type for CreatedRepositoryContribution.""" -type CreatedRepositoryContributionConnection { - """A list of edges.""" - edges: [CreatedRepositoryContributionEdge] + """Is pushing to matching branches restricted.""" + restrictsPushes: Boolean - """A list of nodes.""" - nodes: [CreatedRepositoryContribution] + """A list of User or Team IDs allowed to push to matching branches.""" + pushActorIds: [ID!] - """Information to aid in pagination.""" - pageInfo: PageInfo! + """ + List of required status check contexts that must pass for commits to be accepted to matching branches. + """ + requiredStatusCheckContexts: [String!] - """Identifies the total count of items in the connection.""" - totalCount: Int! + """A unique identifier for the client performing the mutation.""" + clientMutationId: String } -"""An edge in a connection.""" -type CreatedRepositoryContributionEdge { - """A cursor for use in pagination.""" - cursor: String! +"""Autogenerated return type of CreateBranchProtectionRule""" +type CreateBranchProtectionRulePayload { + """The newly created BranchProtectionRule.""" + branchProtectionRule: BranchProtectionRule - """The item at the end of the edge.""" - node: CreatedRepositoryContribution + """A unique identifier for the client performing the mutation.""" + clientMutationId: String } -""" -Represents either a repository the viewer can access or a restricted contribution. -""" -union CreatedRepositoryOrRestrictedContribution = CreatedRepositoryContribution | RestrictedContribution - -"""Autogenerated input type of CreateIssue""" -input CreateIssueInput { - """The Node ID of the repository.""" - repositoryId: ID! +"""Autogenerated input type of CreateContentAttachment""" +input CreateContentAttachmentInput { + """The node ID of the content_reference.""" + contentReferenceId: ID! - """The title for the issue.""" + """The title of the content attachment.""" title: String! - """The body for the issue description.""" - body: String - - """The Node ID for the user assignee for this issue.""" - assigneeIds: [ID!] - - """The Node ID of the milestone for this issue.""" - milestoneId: ID - - """An array of Node IDs of labels for this issue.""" - labelIds: [ID!] - - """An array of Node IDs for projects associated with this issue.""" - projectIds: [ID!] - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} + """The body of the content attachment, which may contain markdown.""" + body: String! -"""Autogenerated return type of CreateIssue""" -type CreateIssuePayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - - """The new issue.""" - issue: Issue } """Autogenerated input type of CreateProject""" @@ -3028,50 +1728,16 @@ type CreateProjectPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The new project.""" - project: Project -} - -"""Autogenerated input type of CreatePullRequest""" -input CreatePullRequestInput { - """The Node ID of the repository.""" - repositoryId: ID! - """ - The name of the branch you want your changes pulled into. This should be an existing branch - on the current repository. You cannot update the base branch on a pull request to point - to another repository. + The new project. - """ - baseRefName: String! - - """ - The name of the branch where your changes are implemented. For cross-repository pull requests - in the same network, namespace `head_ref_name` with a user like this: `username:branch`. + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `project` will change from `Project!` to `Project`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. """ - headRefName: String! - - """The title of the pull request.""" - title: String! - - """The contents of the pull request.""" - body: String - - """Indicates whether maintainers can modify the pull request.""" - maintainerCanModify: Boolean = true - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of CreatePullRequest""" -type CreatePullRequestPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The new pull request.""" - pullRequest: PullRequest + project: Project! } """Represents a mention made by one issue or pull request to another.""" @@ -3131,8 +1797,16 @@ type DeclineTopicSuggestionPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The declined topic.""" - topic: Topic + """ + The declined topic. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `topic` will change from `Topic!` to `Topic`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + topic: Topic! } """The possible default permissions for repositories.""" @@ -3171,39 +1845,6 @@ type DeleteBranchProtectionRulePayload { clientMutationId: String } -"""Autogenerated input type of DeleteIssueComment""" -input DeleteIssueCommentInput { - """The ID of the comment to delete.""" - id: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of DeleteIssueComment""" -type DeleteIssueCommentPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of DeleteIssue""" -input DeleteIssueInput { - """The ID of the issue to delete.""" - issueId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of DeleteIssue""" -type DeleteIssuePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The repository the issue belonged to""" - repository: Repository -} - """Autogenerated input type of DeleteProjectCard""" input DeleteProjectCardInput { """The id of the card to delete.""" @@ -3218,11 +1859,27 @@ type DeleteProjectCardPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The column the deleted card was in.""" - column: ProjectColumn + """ + The column the deleted card was in. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `column` will change from `ProjectColumn!` to `ProjectColumn`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + column: ProjectColumn! - """The deleted card ID.""" - deletedCardId: ID + """ + The deleted card ID. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `deletedCardId` will change from `ID!` to `ID`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + deletedCardId: ID! } """Autogenerated input type of DeleteProjectColumn""" @@ -3239,11 +1896,27 @@ type DeleteProjectColumnPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The deleted column ID.""" - deletedColumnId: ID + """ + The deleted column ID. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `deletedColumnId` will change from `ID!` to `ID`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + deletedColumnId: ID! - """The project the deleted column was in.""" - project: Project + """ + The project the deleted column was in. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `project` will change from `Project!` to `Project`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + project: Project! } """Autogenerated input type of DeleteProject""" @@ -3260,26 +1933,16 @@ type DeleteProjectPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The repository or organization the project was removed from.""" - owner: ProjectOwner -} - -"""Autogenerated input type of DeletePullRequestReviewComment""" -input DeletePullRequestReviewCommentInput { - """The ID of the comment to delete.""" - id: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of DeletePullRequestReviewComment""" -type DeletePullRequestReviewCommentPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The pull request review the deleted comment belonged to.""" - pullRequestReview: PullRequestReview + """ + The repository or organization the project was removed from. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `owner` will change from `ProjectOwner!` to `ProjectOwner`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + owner: ProjectOwner! } """Autogenerated input type of DeletePullRequestReview""" @@ -3296,8 +1959,16 @@ type DeletePullRequestReviewPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The deleted pull request review.""" - pullRequestReview: PullRequestReview + """ + The deleted pull request review. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequestReview` will change from `PullRequestReview!` to `PullRequestReview`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequestReview: PullRequestReview! } """Represents a 'demilestoned' event on a given issue or pull request.""" @@ -3428,7 +2099,9 @@ type Deployment implements Node { """A list of statuses associated with the deployment.""" statuses( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -3492,21 +2165,6 @@ type DeploymentEnvironmentChangedEvent implements Node { pullRequest: PullRequest! } -"""Ordering options for deployment connections""" -input DeploymentOrder { - """The field to order deployments by.""" - field: DeploymentOrderField! - - """The ordering direction.""" - direction: OrderDirection! -} - -"""Properties by which deployment connections can be ordered.""" -enum DeploymentOrderField { - """Order collection by creation time""" - CREATED_AT -} - """The possible states in which a deployment can be.""" enum DeploymentState { """The pending deployment was not updated after 30 minutes.""" @@ -3529,12 +2187,6 @@ enum DeploymentState { """The deployment is pending.""" PENDING - - """The deployment has queued""" - QUEUED - - """The deployment is in progress.""" - IN_PROGRESS } """Describes the status of a given deployment attempt.""" @@ -3605,12 +2257,6 @@ enum DeploymentStatusState { """The deployment experienced an error.""" ERROR - - """The deployment is queued""" - QUEUED - - """The deployment is in progress.""" - IN_PROGRESS } """Autogenerated input type of DismissPullRequestReview""" @@ -3630,8 +2276,16 @@ type DismissPullRequestReviewPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The dismissed pull request review.""" - pullRequestReview: PullRequestReview + """ + The dismissed pull request review. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequestReview` will change from `PullRequestReview!` to `PullRequestReview`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequestReview: PullRequestReview! } """Specifies a review comment to be left with a Pull Request Review.""" @@ -3737,7 +2391,9 @@ type FollowingConnection { type Gist implements Node & Starrable { """A list of comments associated with the gist""" comments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -3757,17 +2413,8 @@ type Gist implements Node & Starrable { """The gist description.""" description: String - - """The files in this gist.""" - files( - """The maximum number of files to return.""" - limit: Int = 10 - ): [GistFile] id: ID! - """Identifies if the gist is a fork.""" - isFork: Boolean! - """Whether the gist is public or not.""" isPublic: Boolean! @@ -3782,7 +2429,9 @@ type Gist implements Node & Starrable { """A list of users who have starred this starrable.""" stargazers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -3864,7 +2513,9 @@ type GistComment implements Node & Comment & Deletable & Updatable & UpdatableCo """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -3943,41 +2594,6 @@ type GistEdge { node: Gist } -"""A file in a gist.""" -type GistFile { - """ - The file name encoded to remove characters that are invalid in URL paths. - """ - encodedName: String - - """The gist file encoding.""" - encoding: String - - """The file extension from the file name.""" - extension: String - - """Indicates if this file is an image.""" - isImage: Boolean! - - """Whether the file's contents were truncated.""" - isTruncated: Boolean! - - """The programming language this file is written in.""" - language: Language - - """The gist file name.""" - name: String - - """The gist file size in bytes.""" - size: Int - - """UTF8 text data or null if the file is binary""" - text( - """Optionally truncate the returned file to this length.""" - truncate: Int - ): String -} - """Ordering options for gist connections""" input GistOrder { """The field to order repositories by.""" @@ -4228,7 +2844,9 @@ type HeadRefForcePushedEvent implements Node { """Identifies the actor who performed the event.""" actor: Actor - """Identifies the after commit SHA for the 'head_ref_force_pushed' event.""" + """ + Identifies the after commit SHA for the 'head_ref_force_pushed' event. + """ afterCommit: Commit """ @@ -4265,43 +2883,6 @@ type HeadRefRestoredEvent implements Node { """A string containing HTML code.""" scalar HTML -""" -The possible states in which authentication can be configured with an identity provider. -""" -enum IdentityProviderConfigurationState { - """Authentication with an identity provider is configured and enforced.""" - ENFORCED - - """ - Authentication with an identity provider is configured but not enforced. - """ - CONFIGURED - - """Authentication with an identity provider is not configured.""" - UNCONFIGURED -} - -"""Autogenerated input type of ImportProject""" -input ImportProjectInput { - """The name of the Organization or User to create the Project under.""" - ownerName: String! - - """The name of Project.""" - name: String! - - """The description of Project.""" - body: String - - """Whether the Project is public or not.""" - public: Boolean = false - - """A list of columns containing issues and pull requests.""" - columnImports: [ProjectColumnImport!]! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """ An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project. """ @@ -4311,7 +2892,9 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of Users assigned to this object.""" assignees( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4351,7 +2934,9 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of comments associated with the Issue.""" comments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4386,7 +2971,9 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of labels associated with the object.""" labels( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4415,7 +3002,9 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of Users that are participating in the Issue conversation.""" participants( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4432,7 +3021,12 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """List of project cards associated with this issue.""" projectCards( - """Returns the elements in the list that come after the specified cursor.""" + """A list of archived states to filter the cards by""" + archivedStates: [ProjectCardArchivedState] + + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4445,9 +3039,6 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """Returns the last _n_ elements from the list.""" last: Int - - """A list of archived states to filter the cards by""" - archivedStates: [ProjectCardArchivedState] ): ProjectCardConnection! """Identifies when the comment was published at.""" @@ -4458,7 +3049,9 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of Reactions left on the Issue.""" reactions( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4483,43 +3076,19 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat repository: Repository! """The HTTP path for this issue""" - resourcePath: URI! - - """Identifies the state of the issue.""" - state: IssueState! - - """A list of events, comments, commits, etc. associated with the issue.""" - timeline( - """Allows filtering timeline events by a `since` timestamp.""" - since: DateTime - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): IssueTimelineConnection! + resourcePath: URI! + + """Identifies the state of the issue.""" + state: IssueState! """A list of events, comments, commits, etc. associated with the issue.""" - timelineItems( - """Filter timeline items by a `since` timestamp.""" + timeline( + """Allows filtering timeline events by a `since` timestamp.""" since: DateTime - """Skips the first _n_ elements in the list.""" - skip: Int - - """Filter timeline items by type.""" - itemTypes: [IssueTimelineItemsItemType!] - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4532,7 +3101,7 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """Returns the last _n_ elements from the list.""" last: Int - ): IssueTimelineItemsConnection! + ): IssueTimelineConnection! """Identifies the issue title.""" title: String! @@ -4545,7 +3114,9 @@ type Issue implements Node & Assignable & Closable & Comment & Updatable & Updat """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4645,7 +3216,9 @@ type IssueComment implements Node & Comment & Deletable & Updatable & UpdatableC """A list of Reactions left on the Issue.""" reactions( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4680,7 +3253,9 @@ type IssueComment implements Node & Comment & Deletable & Updatable & UpdatableC """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -4753,32 +3328,6 @@ type IssueConnection { totalCount: Int! } -"""This aggregates issues opened by a user within one repository.""" -type IssueContributionsByRepository { - """The issue contributions.""" - contributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedIssueContributionConnection! - - """The repository in which the issues were opened.""" - repository: Repository! -} - """An edge in a connection.""" type IssueEdge { """A cursor for use in pagination.""" @@ -4788,40 +3337,6 @@ type IssueEdge { node: Issue } -"""Ways in which to filter lists of issues.""" -input IssueFilters { - """ - List issues assigned to given name. Pass in `null` for issues with no assigned - user, and `*` for issues assigned to any user. - """ - assignee: String - - """List issues created by given name.""" - createdBy: String - - """List issues where the list of label names exist on the issue.""" - labels: [String!] - - """List issues where the given name is mentioned in the issue.""" - mentioned: String - - """ - List issues by given milestone argument. If an string representation of an - integer is passed, it should refer to a milestone by its number field. Pass in - `null` for issues with no milestone, and `*` for issues that are assigned to any milestone. - """ - milestone: String - - """List issues that have been updated at or after the given date.""" - since: DateTime - - """List issues filtered by the list of states given.""" - states: [IssueState!] - - """List issues subscribed to by viewer.""" - viewerSubscribed: Boolean = false -} - """Ways in which lists of issues can be ordered upon return.""" input IssueOrder { """The field in which to order issues by.""" @@ -4886,7 +3401,7 @@ type IssueTimelineConnection { } """An item in an issue timeline""" -union IssueTimelineItem = Commit | IssueComment | CrossReferencedEvent | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | ReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | UserBlockedEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | TransferredEvent +union IssueTimelineItem = Commit | IssueComment | CrossReferencedEvent | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | ReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | TransferredEvent """An edge in a connection.""" type IssueTimelineItemEdge { @@ -4898,35 +3413,7 @@ type IssueTimelineItemEdge { } """An item in an issue timeline""" -union IssueTimelineItems = IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UserBlockedEvent | UnpinnedEvent | UnsubscribedEvent - -"""The connection type for IssueTimelineItems.""" -type IssueTimelineItemsConnection { - """A list of edges.""" - edges: [IssueTimelineItemsEdge] - - """ - Identifies the count of items after applying `before` and `after` filters. - """ - filteredCount: Int! - - """A list of nodes.""" - nodes: [IssueTimelineItems] - - """ - Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. - """ - pageCount: Int! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! - - """Identifies the date and time when the timeline was last updated.""" - updatedAt: DateTime! -} +union IssueTimelineItems = IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnsubscribedEvent """An edge in a connection.""" type IssueTimelineItemsEdge { @@ -4956,7 +3443,9 @@ enum IssueTimelineItemsItemType { """Represents a 'closed' event on any `Closable`.""" CLOSED_EVENT - """Represents a 'comment_deleted' event on a given issue or pull request.""" + """ + Represents a 'comment_deleted' event on a given issue or pull request. + """ COMMENT_DELETED_EVENT """ @@ -4984,9 +3473,6 @@ enum IssueTimelineItemsItemType { """ MOVED_COLUMNS_IN_PROJECT_EVENT - """Represents a 'pinned' event on a given issue or pull request.""" - PINNED_EVENT - """Represents a 'referenced' event on a given `ReferencedSubject`.""" REFERENCED_EVENT @@ -5016,43 +3502,13 @@ enum IssueTimelineItemsItemType { """Represents an 'unlocked' event on a given issue or pull request.""" UNLOCKED_EVENT - """Represents a 'user_blocked' event on a given user.""" - USER_BLOCKED_EVENT - - """Represents an 'unpinned' event on a given issue or pull request.""" - UNPINNED_EVENT - """Represents an 'unsubscribed' event on a given `Subscribable`.""" UNSUBSCRIBED_EVENT } -"""Represents a user signing up for a GitHub account.""" -type JoinedGitHubContribution implements Contribution { - """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - - """ - isRestricted: Boolean! - - """When this contribution was made.""" - occurredAt: DateTime! - - """The HTTP path for this contribution.""" - resourcePath: URI! - - """The HTTP URL for this contribution.""" - url: URI! - - """ - The user who made this contribution. - - """ - user: User! -} - -"""A label for categorizing Issues or Milestones with a given Repository.""" +""" +A label for categorizing Issues or Milestones with a given Repository. +""" type Label implements Node { """Identifies the label color.""" color: String! @@ -5078,10 +3534,9 @@ type Label implements Node { """A list of states to filter the issues by.""" states: [IssueState!] - """Filtering options for issues returned from the connection.""" - filterBy: IssueFilters - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -5116,7 +3571,9 @@ type Label implements Node { """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -5148,7 +3605,9 @@ type Label implements Node { interface Labelable { """A list of labels associated with the object.""" labels( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -5448,6 +3907,11 @@ type MarketplaceListing implements Node { """The listing's introductory description rendered to HTML.""" fullDescriptionHTML: HTML! + """ + Whether this listing has been submitted for review from GitHub for approval to be displayed in the Marketplace. + """ + hasApprovalBeenRequested: Boolean! + """Does this listing have any plans with a free trial?""" hasPublishedFreeTrialPlans: Boolean! @@ -5467,8 +3931,13 @@ type MarketplaceListing implements Node { """Whether this listing's app has been installed for the current viewer""" installedForViewer: Boolean! + """ + Whether this listing has been approved for display in the Marketplace. + """ + isApproved: Boolean! + """Whether this listing has been removed from the Marketplace.""" - isArchived: Boolean! + isDelisted: Boolean! """ Whether this listing is still an editable draft that has not been submitted @@ -5481,39 +3950,11 @@ type MarketplaceListing implements Node { """ isPaid: Boolean! - """Whether this listing has been approved for display in the Marketplace.""" - isPublic: Boolean! - """ Whether this listing has been rejected by GitHub for display in the Marketplace. """ isRejected: Boolean! - """ - Whether this listing has been approved for unverified display in the Marketplace. - """ - isUnverified: Boolean! - - """ - Whether this draft listing has been submitted for review for approval to be unverified in the Marketplace. - """ - isUnverifiedPending: Boolean! - - """ - Whether this draft listing has been submitted for review from GitHub for approval to be verified in the Marketplace. - """ - isVerificationPendingFromDraft: Boolean! - - """ - Whether this unverified listing has been submitted for review from GitHub for approval to be verified in the Marketplace. - """ - isVerificationPendingFromUnverified: Boolean! - - """ - Whether this listing has been approved for verified display in the Marketplace. - """ - isVerified: Boolean! - """The hex color code, without the leading '#', for the logo background.""" logoBackgroundColor: String! @@ -5537,9 +3978,7 @@ type MarketplaceListing implements Node { """The category that best describes the listing.""" primaryCategory: MarketplaceCategory! - """ - URL to the listing's privacy policy, may return an empty string for listings that do not require a privacy policy URL. - """ + """URL to the listing's privacy policy.""" privacyPolicyUrl: URI! """The HTTP path for the Marketplace listing.""" @@ -5563,10 +4002,7 @@ type MarketplaceListing implements Node { """An email address for support for this listing's app.""" supportEmail: String - """ - Either a URL or an email address for support for this listing's app, may - return an empty string for listings that do not require a support URL. - """ + """Either a URL or an email address for support for this listing's app.""" supportUrl: URI! """URL to the listing's terms of service.""" @@ -5613,7 +4049,7 @@ type MarketplaceListing implements Node { """ Can the current viewer request this listing be reviewed for display in - the Marketplace as verified. + the Marketplace. """ viewerCanRequestApproval: Boolean! @@ -5662,31 +4098,6 @@ type MarketplaceListingEdge { node: MarketplaceListing } -"""Entities that have members who can set status messages.""" -interface MemberStatusable { - """ - Get the status messages members of this entity have set that are either public or visible only to the organization. - """ - memberStatuses( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Ordering options for user statuses returned from the connection.""" - orderBy: UserStatusOrder - ): UserStatusConnection! -} - """Represents a 'mentioned' event on a given issue or pull request.""" type MentionedEvent implements Node { """Identifies the actor who performed the event.""" @@ -5740,39 +4151,6 @@ type MergedEvent implements Node & UniformResourceLocatable { url: URI! } -"""Autogenerated input type of MergePullRequest""" -input MergePullRequestInput { - """ID of the pull request to be merged.""" - pullRequestId: ID! - - """ - Commit headline to use for the merge commit; if omitted, a default message will be used. - """ - commitHeadline: String - - """ - Commit body to use for the merge commit; if omitted, a default message will be used - """ - commitBody: String - - """ - OID that the pull request head ref must match to allow merge; if omitted, no check is performed. - """ - expectedHeadOid: GitObjectID - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of MergePullRequest""" -type MergePullRequestPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The pull request that was merged.""" - pullRequest: PullRequest -} - """Represents a Milestone object on a given repository.""" type Milestone implements Node & Closable & UniformResourceLocatable { """ @@ -5807,10 +4185,9 @@ type Milestone implements Node & Closable & UniformResourceLocatable { """A list of states to filter the issues by.""" states: [IssueState!] - """Filtering options for issues returned from the connection.""" - filterBy: IssueFilters - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -5845,7 +4222,9 @@ type Milestone implements Node & Closable & UniformResourceLocatable { """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -5903,7 +4282,9 @@ type MilestonedEvent implements Node { createdAt: DateTime! id: ID! - """Identifies the milestone title associated with the 'milestoned' event.""" + """ + Identifies the milestone title associated with the 'milestoned' event. + """ milestoneTitle: String! """Object referenced by event.""" @@ -6001,8 +4382,16 @@ input MoveProjectCardInput { """Autogenerated return type of MoveProjectCard""" type MoveProjectCardPayload { - """The new edge of the moved card.""" - cardEdge: ProjectCardEdge + """ + The new edge of the moved card. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `cardEdge` will change from `ProjectCardEdge!` to `ProjectCardEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + cardEdge: ProjectCardEdge! """A unique identifier for the client performing the mutation.""" clientMutationId: String @@ -6027,8 +4416,16 @@ type MoveProjectColumnPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The new edge of the moved column.""" - columnEdge: ProjectColumnEdge + """ + The new edge of the moved column. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `columnEdge` will change from `ProjectColumnEdge!` to `ProjectColumnEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + columnEdge: ProjectColumnEdge! } """The root query for implementing GraphQL mutations.""" @@ -6036,15 +4433,9 @@ type Mutation { """Applies a suggested topic to the repository.""" acceptTopicSuggestion(input: AcceptTopicSuggestionInput!): AcceptTopicSuggestionPayload - """Adds assignees to an assignable object.""" - addAssigneesToAssignable(input: AddAssigneesToAssignableInput!): AddAssigneesToAssignablePayload - """Adds a comment to an Issue or Pull Request.""" addComment(input: AddCommentInput!): AddCommentPayload - """Adds labels to a labelable object.""" - addLabelsToLabelable(input: AddLabelsToLabelableInput!): AddLabelsToLabelablePayload - """ Adds a card to a ProjectColumn. Either `contentId` or `note` must be provided but **not** both. """ @@ -6065,58 +4456,18 @@ type Mutation { """Adds a star to a Starrable.""" addStar(input: AddStarInput!): AddStarPayload - """Update your status on GitHub.""" - changeUserStatus(input: ChangeUserStatusInput!): ChangeUserStatusPayload - - """Clears all labels from a labelable object.""" - clearLabelsFromLabelable(input: ClearLabelsFromLabelableInput!): ClearLabelsFromLabelablePayload - - """ - Creates a new project by cloning configuration from an existing project. - """ - cloneProject(input: CloneProjectInput!): CloneProjectPayload - - """Close an issue.""" - closeIssue(input: CloseIssueInput!): CloseIssuePayload - - """Close a pull request.""" - closePullRequest(input: ClosePullRequestInput!): ClosePullRequestPayload - - """ - Convert a project note card to one associated with a newly created issue. - """ - convertProjectCardNoteToIssue(input: ConvertProjectCardNoteToIssueInput!): ConvertProjectCardNoteToIssuePayload - """Create a new branch protection rule""" createBranchProtectionRule(input: CreateBranchProtectionRuleInput!): CreateBranchProtectionRulePayload - """Create a check run.""" - createCheckRun(input: CreateCheckRunInput!): CreateCheckRunPayload - - """Create a check suite""" - createCheckSuite(input: CreateCheckSuiteInput!): CreateCheckSuitePayload - - """Creates a new issue.""" - createIssue(input: CreateIssueInput!): CreateIssuePayload - """Creates a new project.""" createProject(input: CreateProjectInput!): CreateProjectPayload - """Create a new pull request""" - createPullRequest(input: CreatePullRequestInput!): CreatePullRequestPayload - """Rejects a suggested topic for the repository.""" declineTopicSuggestion(input: DeclineTopicSuggestionInput!): DeclineTopicSuggestionPayload """Delete a branch protection rule""" deleteBranchProtectionRule(input: DeleteBranchProtectionRuleInput!): DeleteBranchProtectionRulePayload - """Deletes an Issue object.""" - deleteIssue(input: DeleteIssueInput!): DeleteIssuePayload - - """Deletes an IssueComment object.""" - deleteIssueComment(input: DeleteIssueCommentInput!): DeleteIssueCommentPayload - """Deletes a project.""" deleteProject(input: DeleteProjectInput!): DeleteProjectPayload @@ -6129,31 +4480,21 @@ type Mutation { """Deletes a pull request review.""" deletePullRequestReview(input: DeletePullRequestReviewInput!): DeletePullRequestReviewPayload - """Deletes a pull request review comment.""" - deletePullRequestReviewComment(input: DeletePullRequestReviewCommentInput!): DeletePullRequestReviewCommentPayload - """Dismisses an approved or rejected pull request review.""" dismissPullRequestReview(input: DismissPullRequestReviewInput!): DismissPullRequestReviewPayload """Lock a lockable object""" lockLockable(input: LockLockableInput!): LockLockablePayload - """Merge a pull request.""" - mergePullRequest(input: MergePullRequestInput!): MergePullRequestPayload - """Moves a project card to another place.""" moveProjectCard(input: MoveProjectCardInput!): MoveProjectCardPayload """Moves a project column to another place.""" moveProjectColumn(input: MoveProjectColumnInput!): MoveProjectColumnPayload - """Removes assignees from an assignable object.""" - removeAssigneesFromAssignable(input: RemoveAssigneesFromAssignableInput!): RemoveAssigneesFromAssignablePayload - - """Removes labels from a Labelable object.""" - removeLabelsFromLabelable(input: RemoveLabelsFromLabelableInput!): RemoveLabelsFromLabelablePayload - - """Removes outside collaborator from all repositories in an organization.""" + """ + Removes outside collaborator from all repositories in an organization. + """ removeOutsideCollaborator(input: RemoveOutsideCollaboratorInput!): RemoveOutsideCollaboratorPayload """Removes a reaction from a subject.""" @@ -6162,48 +4503,18 @@ type Mutation { """Removes a star from a Starrable.""" removeStar(input: RemoveStarInput!): RemoveStarPayload - """Reopen a issue.""" - reopenIssue(input: ReopenIssueInput!): ReopenIssuePayload - - """Reopen a pull request.""" - reopenPullRequest(input: ReopenPullRequestInput!): ReopenPullRequestPayload - """Set review requests on a pull request.""" requestReviews(input: RequestReviewsInput!): RequestReviewsPayload - """Rerequests an existing check suite.""" - rerequestCheckSuite(input: RerequestCheckSuiteInput!): RerequestCheckSuitePayload - - """Marks a review thread as resolved.""" - resolveReviewThread(input: ResolveReviewThreadInput!): ResolveReviewThreadPayload - """Submits a pending pull request review.""" submitPullRequestReview(input: SubmitPullRequestReviewInput!): SubmitPullRequestReviewPayload """Unlock a lockable object""" unlockLockable(input: UnlockLockableInput!): UnlockLockablePayload - """Unmark an issue as a duplicate of another issue.""" - unmarkIssueAsDuplicate(input: UnmarkIssueAsDuplicateInput!): UnmarkIssueAsDuplicatePayload - - """Marks a review thread as unresolved.""" - unresolveReviewThread(input: UnresolveReviewThreadInput!): UnresolveReviewThreadPayload - """Create a new branch protection rule""" updateBranchProtectionRule(input: UpdateBranchProtectionRuleInput!): UpdateBranchProtectionRulePayload - """Update a check run""" - updateCheckRun(input: UpdateCheckRunInput!): UpdateCheckRunPayload - - """Modifies the settings of an existing check suite""" - updateCheckSuitePreferences(input: UpdateCheckSuitePreferencesInput!): UpdateCheckSuitePreferencesPayload - - """Updates an Issue.""" - updateIssue(input: UpdateIssueInput!): UpdateIssuePayload - - """Updates an IssueComment object.""" - updateIssueComment(input: UpdateIssueCommentInput!): UpdateIssueCommentPayload - """Updates an existing project.""" updateProject(input: UpdateProjectInput!): UpdateProjectPayload @@ -6213,9 +4524,6 @@ type Mutation { """Updates an existing project column.""" updateProjectColumn(input: UpdateProjectColumnInput!): UpdateProjectColumnPayload - """Update a pull request""" - updatePullRequest(input: UpdatePullRequestInput!): UpdatePullRequestPayload - """Updates the body of a pull request review.""" updatePullRequestReview(input: UpdatePullRequestReviewInput!): UpdatePullRequestReviewPayload @@ -6249,15 +4557,7 @@ enum OrderDirection { """ An account on GitHub, with one or more owners, that has repositories, members and teams. """ -type Organization implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable & MemberStatusable & ProfileOwner { - """ - Determine if this repository owner has any items that can be pinned to their profile. - """ - anyPinnableItems( - """Filter to only a particular kind of pinnable item.""" - type: PinnableItemType - ): Boolean! - +type Organization implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable { """A URL pointing to the organization's public avatar.""" avatarUrl( """The size of the resulting square image.""" @@ -6277,23 +4577,17 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Whether the organization has verified its profile email and website.""" isVerified: Boolean! - """ - Showcases a selection of repositories and gists that the profile owner has - either curated or that have been selected automatically based on popularity. - """ - itemShowcase: ProfileItemShowcase! - """The organization's public profile location.""" location: String """The organization's login name.""" login: String! - """ - Get the status messages members of this entity have set that are either public or visible only to the organization. - """ - memberStatuses( - """Returns the elements in the list that come after the specified cursor.""" + """A list of users who are members of this organization.""" + members( + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6306,14 +4600,13 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Returns the last _n_ elements from the list.""" last: Int - - """Ordering options for user statuses returned from the connection.""" - orderBy: UserStatusOrder - ): UserStatusConnection! + ): UserConnection! @deprecated(reason: "The `members` field is deprecated and will be removed soon. Use `Organization.membersWithRole` instead. Removal on 2019-04-01 UTC.") """A list of users who are members of this organization.""" membersWithRole( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6340,53 +4633,36 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """The billing email for the organization.""" organizationBillingEmail: String - """A list of users who have been invited to join this organization.""" - pendingMembers( - """Returns the elements in the list that come after the specified cursor.""" - after: String + """A list of repositories this user has pinned to their profile""" + pinnedRepositories( + """If non-null, filters repositories according to privacy""" + privacy: RepositoryPrivacy + + """Ordering options for repositories returned from the connection""" + orderBy: RepositoryOrder """ - Returns the elements in the list that come before the specified cursor. + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): UserConnection! - - """ - A list of repositories and gists this profile owner can pin to their profile. - """ - pinnableItems( - """Filter the types of pinnable items that are returned.""" - types: [PinnableItemType!] + affiliations: [RepositoryAffiliation] - """Returns the elements in the list that come after the specified cursor.""" - after: String + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] """ - Returns the elements in the list that come before the specified cursor. + If non-null, filters repositories according to whether they have been locked """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PinnableItemConnection! - - """ - A list of repositories and gists this profile owner has pinned to their profile - """ - pinnedItems( - """Filter the types of pinned items that are returned.""" - types: [PinnableItemType!] + isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6399,12 +4675,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Returns the last _n_ elements from the list.""" last: Int - ): PinnableItemConnection! - - """ - Returns how many more items this profile owner can pin to their profile. - """ - pinnedItemsRemaining: Int! + ): RepositoryConnection! """Find project by number.""" project( @@ -6423,7 +4694,9 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """A list of states to filter the projects by.""" states: [ProjectState!] - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6471,7 +4744,9 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """ isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6506,7 +4781,7 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """The HTTP path for this organization.""" resourcePath: URI! - """The Organization's SAML identity providers""" + """The Organization's SAML Identity Providers""" samlIdentityProvider: OrganizationIdentityProvider """Find an organization's team by its slug.""" @@ -6542,7 +4817,9 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """If true, restrict to only root teams""" rootTeamsOnly: Boolean = false - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6569,9 +4846,6 @@ type Organization implements Node & Actor & RegistryPackageOwner & RegistryPacka """Organization is adminable by the viewer.""" viewerCanAdminister: Boolean! - """Can the viewer pin repositories and gists to the profile?""" - viewerCanChangePinnedItems: Boolean! - """Can the current viewer create new projects on this owner.""" viewerCanCreateProjects: Boolean! @@ -6623,7 +4897,9 @@ type OrganizationIdentityProvider implements Node { """External Identities provisioned by this Identity Provider""" externalIdentities( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -6752,11 +5028,6 @@ type OrganizationMemberEdge { """A cursor for use in pagination.""" cursor: String! - """ - Whether the organization member has two factor enabled or not. Returns null if information is not available to viewer. - """ - hasTwoFactorEnabled: Boolean - """The item at the end of the edge.""" node: User @@ -6788,194 +5059,6 @@ type PageInfo { startCursor: String } -"""Types that can grant permissions on a repository to a user""" -union PermissionGranter = Organization | Repository | Team - -"""A level of permission and source for a user's access to a repository.""" -type PermissionSource { - """The organization the repository belongs to.""" - organization: Organization! - - """The level of access this source has granted to the user.""" - permission: DefaultRepositoryPermissionField! - - """The source of this permission.""" - source: PermissionGranter! -} - -"""Autogenerated input type of PinIssue""" -input PinIssueInput { - """The ID of the issue to be pinned""" - issueId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Types that can be pinned to a profile page.""" -union PinnableItem = Gist | Repository - -"""The connection type for PinnableItem.""" -type PinnableItemConnection { - """A list of edges.""" - edges: [PinnableItemEdge] - - """A list of nodes.""" - nodes: [PinnableItem] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""An edge in a connection.""" -type PinnableItemEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: PinnableItem -} - -"""Represents items that can be pinned to a profile page.""" -enum PinnableItemType { - """A repository.""" - REPOSITORY - - """A gist.""" - GIST -} - -"""Represents a 'pinned' event on a given issue or pull request.""" -type PinnedEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - id: ID! - - """Identifies the issue associated with the event.""" - issue: Issue! -} - -""" -A curatable list of repositories relating to a repository owner, which defaults -to showing the most popular repositories they own. -""" -type ProfileItemShowcase { - """Whether or not the owner has pinned any repositories or gists.""" - hasPinnedItems: Boolean! - - """ - The repositories and gists in the showcase. If the profile owner has any - pinned items, those will be returned. Otherwise, the profile owner's popular - repositories will be returned. - """ - items( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PinnableItemConnection! -} - -"""Represents any entity on GitHub that has a profile page.""" -interface ProfileOwner { - """ - Determine if this repository owner has any items that can be pinned to their profile. - """ - anyPinnableItems( - """Filter to only a particular kind of pinnable item.""" - type: PinnableItemType - ): Boolean! - - """The public profile email.""" - email: String - id: ID! - - """ - Showcases a selection of repositories and gists that the profile owner has - either curated or that have been selected automatically based on popularity. - """ - itemShowcase: ProfileItemShowcase! - - """The public profile location.""" - location: String - - """The username used to login.""" - login: String! - - """The public profile name.""" - name: String - - """ - A list of repositories and gists this profile owner can pin to their profile. - """ - pinnableItems( - """Filter the types of pinnable items that are returned.""" - types: [PinnableItemType!] - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PinnableItemConnection! - - """ - A list of repositories and gists this profile owner has pinned to their profile - """ - pinnedItems( - """Filter the types of pinned items that are returned.""" - types: [PinnableItemType!] - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PinnableItemConnection! - - """ - Returns how many more items this profile owner can pin to their profile. - """ - pinnedItemsRemaining: Int! - - """Can the viewer pin repositories and gists to the profile?""" - viewerCanChangePinnedItems: Boolean! - - """The public profile website URL.""" - websiteUrl: URI -} - """ Projects manage issues, pull requests and notes within a project owner. """ @@ -6996,7 +5079,9 @@ type Project implements Node & Closable & Updatable { """List of columns in the project""" columns( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7028,13 +5113,18 @@ type Project implements Node & Closable & Updatable { number: Int! """ - The project's owner. Currently limited to repositories, organizations, and users. + The project's owner. Currently limited to repositories and organizations. """ owner: ProjectOwner! """List of pending cards in this project""" pendingCards( - """Returns the elements in the list that come after the specified cursor.""" + """A list of archived states to filter the cards by""" + archivedStates: [ProjectCardArchivedState] + + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7047,9 +5137,6 @@ type Project implements Node & Closable & Updatable { """Returns the last _n_ elements from the list.""" last: Int - - """A list of archived states to filter the cards by""" - archivedStates: [ProjectCardArchivedState] ): ProjectCardConnection! """The HTTP path for this project""" @@ -7147,15 +5234,6 @@ type ProjectCardEdge { node: ProjectCard } -"""An issue or PR and its owning repository to be used in a project card.""" -input ProjectCardImport { - """Repository name with owner (owner/repository).""" - repository: String! - - """The issue or pull request number.""" - number: Int! -} - """Types that can be inside Project Cards.""" union ProjectCardItem = Issue | PullRequest @@ -7175,7 +5253,12 @@ enum ProjectCardState { type ProjectColumn implements Node { """List of cards in the column""" cards( - """Returns the elements in the list that come after the specified cursor.""" + """A list of archived states to filter the cards by""" + archivedStates: [ProjectCardArchivedState] + + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7188,9 +5271,6 @@ type ProjectColumn implements Node { """Returns the last _n_ elements from the list.""" last: Int - - """A list of archived states to filter the cards by""" - archivedStates: [ProjectCardArchivedState] ): ProjectCardConnection! """Identifies the date and time when the object was created.""" @@ -7243,18 +5323,6 @@ type ProjectColumnEdge { node: ProjectColumn } -"""A project column and a list of its issues and PRs.""" -input ProjectColumnImport { - """The name of the column.""" - columnName: String! - - """The position of the column, starting from 0.""" - position: Int! - - """A list of issues and pull requests in the column.""" - issues: [ProjectCardImport!] -} - """The semantic purpose of the column - todo, in progress, or done.""" enum ProjectColumnPurpose { """The column contains cards still to be worked on""" @@ -7333,7 +5401,9 @@ interface ProjectOwner { """A list of states to filter the projects by.""" states: [ProjectState!] - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7358,35 +5428,124 @@ interface ProjectOwner { viewerCanCreateProjects: Boolean! } -"""State of the project; either 'open' or 'closed'""" -enum ProjectState { - """The project is open.""" - OPEN +"""State of the project; either 'open' or 'closed'""" +enum ProjectState { + """The project is open.""" + OPEN + + """The project is closed.""" + CLOSED +} + +"""A repository protected branch.""" +type ProtectedBranch implements Node { + """The actor who created this protected branch.""" + creator: Actor + + """ + Will new commits pushed to this branch dismiss pull request review approvals. + """ + hasDismissableStaleReviews: Boolean! + + """Are reviews required to update this branch.""" + hasRequiredReviews: Boolean! + + """Are status checks required to update this branch.""" + hasRequiredStatusChecks: Boolean! + + """Is pushing to this branch restricted.""" + hasRestrictedPushes: Boolean! + + """Is dismissal of pull request reviews restricted.""" + hasRestrictedReviewDismissals: Boolean! + + """Are branches required to be up to date before merging.""" + hasStrictRequiredStatusChecks: Boolean! + id: ID! + + """Can admins overwrite branch protection.""" + isAdminEnforced: Boolean! + + """The name of the protected branch rule.""" + name: String! + + """A list push allowances for this protected branch.""" + pushAllowances( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): PushAllowanceConnection! + + """The repository associated with this protected branch.""" + repository: Repository! + + """ + List of required status check contexts that must pass for commits to be accepted to this branch. + """ + requiredStatusCheckContexts: [String] + + """A list review dismissal allowances for this protected branch.""" + reviewDismissalAllowances( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): ReviewDismissalAllowanceConnection! +} + +"""The connection type for ProtectedBranch.""" +type ProtectedBranchConnection { + """A list of edges.""" + edges: [ProtectedBranchEdge] + + """A list of nodes.""" + nodes: [ProtectedBranch] + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """Identifies the total count of items in the connection.""" + totalCount: Int! +} + +"""An edge in a connection.""" +type ProtectedBranchEdge { + """A cursor for use in pagination.""" + cursor: String! - """The project is closed.""" - CLOSED + """The item at the end of the edge.""" + node: ProtectedBranch } """A user's public key.""" type PublicKey implements Node { - """The last time this authorization was used to perform an action""" - accessedAt: DateTime - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - - """The fingerprint for this PublicKey""" - fingerprint: String id: ID! - """Whether this PublicKey is read-only or not""" - isReadOnly: Boolean! - """The public key string""" key: String! - - """Identifies the date and time when the object was last updated.""" - updatedAt: DateTime! } """The connection type for PublicKey.""" @@ -7423,7 +5582,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of Users assigned to this object.""" assignees( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7457,9 +5618,6 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """ baseRefOid: GitObjectID! - """The repository associated with this pull request's base Ref.""" - baseRepository: Repository - """The body as Markdown.""" body: String! @@ -7480,7 +5638,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of comments associated with the pull request.""" comments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7499,7 +5659,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & A list of commits present in this pull request's head branch not present in the base branch. """ commits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7529,23 +5691,6 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """The actor who edited this pull request's body.""" editor: Actor - """Lists the files changed within this pull request.""" - files( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PullRequestChangedFileConnection - """Identifies the head Ref associated with the pull request.""" headRef: Ref @@ -7578,7 +5723,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of labels associated with the object.""" labels( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7629,7 +5776,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & A list of Users that are participating in the Pull Request conversation. """ participants( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7657,7 +5806,12 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """List of project cards associated with this pull request.""" projectCards( - """Returns the elements in the list that come after the specified cursor.""" + """A list of archived states to filter the cards by""" + archivedStates: [ProjectCardArchivedState] + + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7670,9 +5824,6 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Returns the last _n_ elements from the list.""" last: Int - - """A list of archived states to filter the cards by""" - archivedStates: [ProjectCardArchivedState] ): ProjectCardConnection! """Identifies when the comment was published at.""" @@ -7683,7 +5834,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of Reactions left on the Issue.""" reactions( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7718,24 +5871,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of review requests associated with the pull request.""" reviewRequests( - """Returns the elements in the list that come after the specified cursor.""" - after: String - """ - Returns the elements in the list that come before the specified cursor. + Returns the elements in the list that come after the specified cursor. """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): ReviewRequestConnection - - """The list of all review threads for this pull request.""" - reviewThreads( - """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7748,11 +5886,13 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Returns the last _n_ elements from the list.""" last: Int - ): PullRequestReviewThreadConnection! + ): ReviewRequestConnection """A list of reviews associated with the pull request.""" reviews( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7788,35 +5928,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Allows filtering timeline events by a `since` timestamp.""" since: DateTime - """Returns the elements in the list that come after the specified cursor.""" - after: String - """ - Returns the elements in the list that come before the specified cursor. + Returns the elements in the list that come after the specified cursor. """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PullRequestTimelineConnection! - - """ - A list of events, comments, commits, etc. associated with the pull request. - """ - timelineItems( - """Filter timeline items by a `since` timestamp.""" - since: DateTime - - """Skips the first _n_ elements in the list.""" - skip: Int - - """Filter timeline items by type.""" - itemTypes: [PullRequestTimelineItemsItemType!] - - """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -7829,7 +5943,7 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """Returns the last _n_ elements from the list.""" last: Int - ): PullRequestTimelineItemsConnection! + ): PullRequestTimelineConnection! """Identifies the pull request title.""" title: String! @@ -7842,7 +5956,9 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -7883,42 +5999,6 @@ type PullRequest implements Node & Assignable & Closable & Comment & Updatable & viewerSubscription: SubscriptionState } -"""A file changed in a pull request.""" -type PullRequestChangedFile { - """The number of additions to the file.""" - additions: Int! - - """The number of deletions to the file.""" - deletions: Int! - - """The path of the file.""" - path: String! -} - -"""The connection type for PullRequestChangedFile.""" -type PullRequestChangedFileConnection { - """A list of edges.""" - edges: [PullRequestChangedFileEdge] - - """A list of nodes.""" - nodes: [PullRequestChangedFile] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""An edge in a connection.""" -type PullRequestChangedFileEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: PullRequestChangedFile -} - """Represents a Git commit part of a pull request.""" type PullRequestCommit implements Node & UniformResourceLocatable { """The Git commit object""" @@ -7935,42 +6015,6 @@ type PullRequestCommit implements Node & UniformResourceLocatable { url: URI! } -"""Represents a commit comment thread part of a pull request.""" -type PullRequestCommitCommentThread implements Node & RepositoryNode { - """The comments that exist in this thread.""" - comments( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): CommitCommentConnection! - - """The commit the comments were made on.""" - commit: Commit! - id: ID! - - """The file the comments were made on.""" - path: String - - """The position in the diff for the commit that the comment was made on.""" - position: Int - - """The pull request this commit comment thread belongs to""" - pullRequest: PullRequest! - - """The repository associated with this node.""" - repository: Repository! -} - """The connection type for PullRequestCommit.""" type PullRequestCommitConnection { """A list of edges.""" @@ -8010,32 +6054,6 @@ type PullRequestConnection { totalCount: Int! } -"""This aggregates pull requests opened by a user within one repository.""" -type PullRequestContributionsByRepository { - """The pull request contributions.""" - contributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedPullRequestContributionConnection! - - """The repository in which the pull requests were opened.""" - repository: Repository! -} - """An edge in a connection.""" type PullRequestEdge { """A cursor for use in pagination.""" @@ -8082,7 +6100,7 @@ enum PullRequestPubSubTopic { } """A review object for a given pull request.""" -type PullRequestReview implements Node & Comment & Deletable & Updatable & UpdatableComment & Reactable & RepositoryNode { +type PullRequestReview implements Node & Comment & Deletable & Updatable & UpdatableComment & RepositoryNode { """The actor who authored the comment.""" author: Actor @@ -8100,7 +6118,9 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of review comments for the current pull request review.""" comments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -8141,7 +6161,9 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of teams that this review was made on behalf of.""" onBehalfOf( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -8162,32 +6184,6 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """Identifies the pull request associated with this pull request review.""" pullRequest: PullRequest! - """A list of reactions grouped by content left on the subject.""" - reactionGroups: [ReactionGroup!] - - """A list of Reactions left on the Issue.""" - reactions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Allows filtering Reactions by emoji.""" - content: ReactionContent - - """Allows specifying the order in which reactions are returned.""" - orderBy: ReactionOrder - ): ReactionConnection! - """The repository associated with this node.""" repository: Repository! @@ -8208,7 +6204,9 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -8226,9 +6224,6 @@ type PullRequestReview implements Node & Comment & Deletable & Updatable & Updat """Check if the current viewer can delete this object.""" viewerCanDelete: Boolean! - """Can user react to this subject""" - viewerCanReact: Boolean! - """Check if the current viewer can update this object.""" viewerCanUpdate: Boolean! @@ -8321,7 +6316,9 @@ type PullRequestReviewComment implements Node & Comment & Deletable & Updatable """A list of Reactions left on the Issue.""" reactions( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -8362,7 +6359,9 @@ type PullRequestReviewComment implements Node & Comment & Deletable & Updatable """A list of edits to this content.""" userContentEdits( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -8444,34 +6443,6 @@ type PullRequestReviewConnection { totalCount: Int! } -""" -This aggregates pull request reviews made by a user within one repository. -""" -type PullRequestReviewContributionsByRepository { - """The pull request review contributions.""" - contributions( - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - - """Ordering options for contributions returned from the connection.""" - orderBy: ContributionOrder - ): CreatedPullRequestReviewContributionConnection! - - """The repository in which the pull request reviews were made.""" - repository: Repository! -} - """An edge in a connection.""" type PullRequestReviewEdge { """A cursor for use in pagination.""" @@ -8518,7 +6489,9 @@ enum PullRequestReviewState { type PullRequestReviewThread implements Node { """A list of pull request comments associated with the thread.""" comments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -8534,61 +6507,11 @@ type PullRequestReviewThread implements Node { ): PullRequestReviewCommentConnection! id: ID! - """Whether this thread has been resolved""" - isResolved: Boolean! - """Identifies the pull request associated with this thread.""" pullRequest: PullRequest! """Identifies the repository associated with this thread.""" repository: Repository! - - """The user who resolved this thread""" - resolvedBy: User - - """Whether or not the viewer can resolve this thread""" - viewerCanResolve: Boolean! - - """Whether or not the viewer can unresolve this thread""" - viewerCanUnresolve: Boolean! -} - -"""Review comment threads for a pull request review.""" -type PullRequestReviewThreadConnection { - """A list of edges.""" - edges: [PullRequestReviewThreadEdge] - - """A list of nodes.""" - nodes: [PullRequestReviewThread] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""An edge in a connection.""" -type PullRequestReviewThreadEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: PullRequestReviewThread -} - -""" -Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits. -""" -type PullRequestRevisionMarker { - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - - """The last commit the viewer has seen.""" - lastSeenCommit: Commit! - - """The pull request to which the marker belongs.""" - pullRequest: PullRequest! } """The possible states of a pull request.""" @@ -8619,7 +6542,7 @@ type PullRequestTimelineConnection { } """An item in an pull request timeline""" -union PullRequestTimelineItem = Commit | CommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestReviewComment | IssueComment | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | MergedEvent | ReferencedEvent | CrossReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefRestoredEvent | HeadRefForcePushedEvent | BaseRefForcePushedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | ReviewDismissedEvent | UserBlockedEvent +union PullRequestTimelineItem = Commit | CommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestReviewComment | IssueComment | ClosedEvent | ReopenedEvent | SubscribedEvent | UnsubscribedEvent | MergedEvent | ReferencedEvent | CrossReferencedEvent | AssignedEvent | UnassignedEvent | LabeledEvent | UnlabeledEvent | MilestonedEvent | DemilestonedEvent | RenamedTitleEvent | LockedEvent | UnlockedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefRestoredEvent | HeadRefForcePushedEvent | BaseRefForcePushedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | ReviewDismissedEvent """An edge in a connection.""" type PullRequestTimelineItemEdge { @@ -8631,35 +6554,7 @@ type PullRequestTimelineItemEdge { } """An item in a pull request timeline""" -union PullRequestTimelineItems = PullRequestCommit | PullRequestCommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestRevisionMarker | BaseRefChangedEvent | BaseRefForcePushedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefForcePushedEvent | HeadRefRestoredEvent | MergedEvent | ReviewDismissedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UserBlockedEvent | UnpinnedEvent | UnsubscribedEvent - -"""The connection type for PullRequestTimelineItems.""" -type PullRequestTimelineItemsConnection { - """A list of edges.""" - edges: [PullRequestTimelineItemsEdge] - - """ - Identifies the count of items after applying `before` and `after` filters. - """ - filteredCount: Int! - - """A list of nodes.""" - nodes: [PullRequestTimelineItems] - - """ - Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. - """ - pageCount: Int! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! - - """Identifies the date and time when the timeline was last updated.""" - updatedAt: DateTime! -} +union PullRequestTimelineItems = PullRequestCommit | PullRequestReview | PullRequestReviewThread | BaseRefChangedEvent | BaseRefForcePushedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefForcePushedEvent | HeadRefRestoredEvent | MergedEvent | ReviewDismissedEvent | ReviewRequestedEvent | ReviewRequestRemovedEvent | IssueComment | CrossReferencedEvent | AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | DemilestonedEvent | LabeledEvent | LockedEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnsubscribedEvent """An edge in a connection.""" type PullRequestTimelineItemsEdge { @@ -8745,7 +6640,9 @@ enum PullRequestTimelineItemsItemType { """Represents a 'closed' event on any `Closable`.""" CLOSED_EVENT - """Represents a 'comment_deleted' event on a given issue or pull request.""" + """ + Represents a 'comment_deleted' event on a given issue or pull request. + """ COMMENT_DELETED_EVENT """ @@ -8773,9 +6670,6 @@ enum PullRequestTimelineItemsItemType { """ MOVED_COLUMNS_IN_PROJECT_EVENT - """Represents a 'pinned' event on a given issue or pull request.""" - PINNED_EVENT - """Represents a 'referenced' event on a given `ReferencedSubject`.""" REFERENCED_EVENT @@ -8805,36 +6699,10 @@ enum PullRequestTimelineItemsItemType { """Represents an 'unlocked' event on a given issue or pull request.""" UNLOCKED_EVENT - """Represents a 'user_blocked' event on a given user.""" - USER_BLOCKED_EVENT - - """Represents an 'unpinned' event on a given issue or pull request.""" - UNPINNED_EVENT - """Represents an 'unsubscribed' event on a given `Subscribable`.""" UNSUBSCRIBED_EVENT } -"""A Git push.""" -type Push implements Node { - id: ID! - - """The SHA after the push""" - nextSha: GitObjectID - - """The permalink for this push.""" - permalink: URI! - - """The SHA before the push""" - previousSha: GitObjectID - - """The user who pushed""" - pusher: User! - - """The repository that was pushed to""" - repository: Repository! -} - """A team or user who has the ability to push to a protected branch.""" type PushAllowance implements Node { """The actor that can push.""" @@ -8845,6 +6713,11 @@ type PushAllowance implements Node { """ branchProtectionRule: BranchProtectionRule id: ID! + + """ + Identifies the protected branch associated with the allowed user or team. + """ + protectedBranch: ProtectedBranch! @deprecated(reason: "The `ProtectedBranch` type is deprecated and will be removed soon. Use `Repository.branchProtectionRule` instead. Removal on 2019-01-01 UTC.") } """Types that can be an actor.""" @@ -8925,7 +6798,9 @@ type Query { """Look up Marketplace listings""" marketplaceListings( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9036,7 +6911,9 @@ type Query { """Perform a search across resources.""" search( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9057,70 +6934,6 @@ type Query { type: SearchType! ): SearchResultItemConnection! - """GitHub Security Advisories""" - securityAdvisories( - """Ordering options for the returned topics.""" - orderBy: SecurityAdvisoryOrder - - """Filter advisories by identifier, e.g. GHSA or CVE.""" - identifier: SecurityAdvisoryIdentifierFilter - - """Filter advisories to those published since a time in the past.""" - publishedSince: DateTime - - """Filter advisories to those updated since a time in the past.""" - updatedSince: DateTime - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): SecurityAdvisoryConnection! - - """Fetch a Security Advisory by its GHSA ID""" - securityAdvisory( - """GitHub Security Advisory ID.""" - ghsaId: String! - ): SecurityAdvisory - - """Software Vulnerabilities documented by GitHub Security Advisories""" - securityVulnerabilities( - """Ordering options for the returned topics.""" - orderBy: SecurityVulnerabilityOrder - - """An ecosystem to filter vulnerabilities by.""" - ecosystem: SecurityAdvisoryEcosystem - - """A package name to filter vulnerabilities by.""" - package: String - - """A list of severities to filter vulnerabilities by.""" - severities: [SecurityAdvisorySeverity!] - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): SecurityVulnerabilityConnection! - """Look up a topic by name.""" topic( """The topic's name.""" @@ -9170,7 +6983,9 @@ interface Reactable { """A list of Reactions left on the Issue.""" reactions( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9278,12 +7093,6 @@ enum ReactionContent { """Represents the ❤️ emoji.""" HEART - - """Represents the 🚀 emoji.""" - ROCKET - - """Represents the 👀 emoji.""" - EYES } """An edge in a connection.""" @@ -9310,7 +7119,9 @@ type ReactionGroup { Users who have reacted to the reaction subject with the emotion represented by this reaction group """ users( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9365,7 +7176,9 @@ type Ref implements Node { """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9502,7 +7315,9 @@ type Release implements Node & UniformResourceLocatable { """List of releases assets which are dependent on this release.""" releaseAssets( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9638,27 +7453,6 @@ enum ReleaseOrderField { NAME } -"""Autogenerated input type of RemoveAssigneesFromAssignable""" -input RemoveAssigneesFromAssignableInput { - """The id of the assignable object to remove assignees from.""" - assignableId: ID! - - """The id of users to remove as assignees.""" - assigneeIds: [ID!]! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of RemoveAssigneesFromAssignable""" -type RemoveAssigneesFromAssignablePayload { - """The item that was unassigned.""" - assignable: Assignable - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - """ Represents a 'removed_from_project' event on a given issue or pull request. """ @@ -9674,27 +7468,6 @@ type RemovedFromProjectEvent implements Node { id: ID! } -"""Autogenerated input type of RemoveLabelsFromLabelable""" -input RemoveLabelsFromLabelableInput { - """The id of the Labelable to remove labels from.""" - labelableId: ID! - - """The ids of labels to remove.""" - labelIds: [ID!]! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of RemoveLabelsFromLabelable""" -type RemoveLabelsFromLabelablePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The Labelable the labels were removed from.""" - labelable: Labelable -} - """Autogenerated input type of RemoveOutsideCollaborator""" input RemoveOutsideCollaboratorInput { """The ID of the outside collaborator to remove.""" @@ -9712,8 +7485,16 @@ type RemoveOutsideCollaboratorPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The user that was removed as an outside collaborator.""" - removedUser: User + """ + The user that was removed as an outside collaborator. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `removedUser` will change from `User!` to `User`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + removedUser: User! } """Autogenerated input type of RemoveReaction""" @@ -9733,11 +7514,27 @@ type RemoveReactionPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The reaction object.""" - reaction: Reaction + """ + The reaction object. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `reaction` will change from `Reaction!` to `Reaction`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + reaction: Reaction! - """The reactable subject.""" - subject: Reactable + """ + The reactable subject. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `subject` will change from `Reactable!` to `Reactable`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + subject: Reactable! } """Autogenerated input type of RemoveStar""" @@ -9754,8 +7551,16 @@ type RemoveStarPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The starrable.""" - starrable: Starrable + """ + The starrable. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `starrable` will change from `Starrable!` to `Starrable`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + starrable: Starrable! } """Represents a 'renamed' event on a given issue or pull request""" @@ -9793,42 +7598,6 @@ type ReopenedEvent implements Node { id: ID! } -"""Autogenerated input type of ReopenIssue""" -input ReopenIssueInput { - """ID of the issue to be opened.""" - issueId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of ReopenIssue""" -type ReopenIssuePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The issue that was opened.""" - issue: Issue -} - -"""Autogenerated input type of ReopenPullRequest""" -input ReopenPullRequestInput { - """ID of the pull request to be reopened.""" - pullRequestId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of ReopenPullRequest""" -type ReopenPullRequestPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The pull request that was reopened.""" - pullRequest: PullRequest -} - """The reasons a piece of content can be reported or minimized.""" enum ReportedContentClassifiers { """A spammy piece of content""" @@ -9851,7 +7620,9 @@ enum ReportedContentClassifiers { type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscribable & Starrable & UniformResourceLocatable & RepositoryInfo { """A list of users that can be assigned to issues in this repository.""" assignableUsers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9868,7 +7639,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of branch protection rules for this repository.""" branchProtectionRules( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9888,10 +7661,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of collaborators associated with the repository.""" collaborators( - """Collaborators affiliation level with a repository.""" - affiliation: CollaboratorAffiliation - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9904,11 +7676,16 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Returns the last _n_ elements from the list.""" last: Int + + """Collaborators affiliation level with a repository.""" + affiliation: CollaboratorAffiliation ): RepositoryCollaboratorConnection """A list of commit comments associated with the repository.""" commitComments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9934,7 +7711,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of deploy keys that are on this repository.""" deployKeys( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9951,13 +7730,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Deployments associated with the repository""" deployments( - """Environments to list deployments for""" - environments: [String!] - - """Ordering options for deployments returned from the connection.""" - orderBy: DeploymentOrder - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -9970,6 +7745,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Returns the last _n_ elements from the list.""" last: Int + + """Environments to list deployments for""" + environments: [String!] ): DeploymentConnection! """The description of the repository.""" @@ -10013,7 +7791,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """ isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10041,9 +7821,6 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Indicates if the repository is unmaintained.""" isArchived: Boolean! - """Returns whether or not this repository disabled.""" - isDisabled: Boolean! - """Identifies if the repository is a fork.""" isFork: Boolean! @@ -10081,10 +7858,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of states to filter the issues by.""" states: [IssueState!] - """Filtering options for issues returned from the connection.""" - filterBy: IssueFilters - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10107,7 +7883,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of labels associated with the repository.""" labels( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10129,7 +7907,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib A list containing a breakdown of the language composition of the repository. """ languages( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10157,7 +7937,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib A list of Users that can be mentioned in the context of the repository. """ mentionableUsers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10183,7 +7965,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of milestones associated with the repository.""" milestones( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10248,7 +8032,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of states to filter the projects by.""" states: [ProjectState!] - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10269,6 +8055,25 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """The HTTP URL listing the repository's projects""" projectsUrl: URI! + """A list of protected branches that are on this repository.""" + protectedBranches( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): ProtectedBranchConnection! @deprecated(reason: "The `ProtectedBranch` type is deprecated and will be removed soon. Use `Repository.branchProtectionRules` instead. Removal on 2019-01-01 UTC.") + """Returns a single pull request from the current repository by number.""" pullRequest( """The number for the pull request to be returned.""" @@ -10292,7 +8097,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10324,7 +8131,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """Fetch a list of refs from the repository""" refs( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10356,7 +8165,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """List of releases which are dependent on this repository.""" releases( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10376,7 +8187,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of applied repository-topic associations for this repository.""" repositoryTopics( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10410,7 +8223,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of users who have starred this starrable.""" stargazers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10434,7 +8249,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """The HTTP URL for this repository""" url: URI! - """Indicates whether the viewer has admin permissions on this repository.""" + """ + Indicates whether the viewer has admin permissions on this repository. + """ viewerCanAdminister: Boolean! """Can the current viewer create new projects on this owner.""" @@ -10445,7 +8262,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """ viewerCanSubscribe: Boolean! - """Indicates whether the viewer can update the topics of this repository.""" + """ + Indicates whether the viewer can update the topics of this repository. + """ viewerCanUpdateTopics: Boolean! """ @@ -10465,7 +8284,9 @@ type Repository implements Node & ProjectOwner & RegistryPackageOwner & Subscrib """A list of users watching the repository.""" watchers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10528,9 +8349,6 @@ type RepositoryCollaboratorEdge { """The permission the user has on the repository.""" permission: RepositoryPermission! - - """A list of sources for the user's access to the repository.""" - permissionSources: [PermissionSource!] } """A list of repositories owned by the subject.""" @@ -10740,8 +8558,52 @@ interface RepositoryOwner { ): URI! id: ID! - """The username used to login.""" - login: String! + """The username used to login.""" + login: String! + + """A list of repositories this user has pinned to their profile""" + pinnedRepositories( + """If non-null, filters repositories according to privacy""" + privacy: RepositoryPrivacy + + """Ordering options for repositories returned from the connection""" + orderBy: RepositoryOrder + + """ + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. + """ + affiliations: [RepositoryAffiliation] + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """Returns the first _n_ elements from the list.""" + first: Int + + """Returns the last _n_ elements from the list.""" + last: Int + ): RepositoryConnection! """A list of repositories that the user owns.""" repositories( @@ -10770,7 +8632,9 @@ interface RepositoryOwner { """ isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -10862,18 +8726,6 @@ type RepositoryTopicEdge { node: RepositoryTopic } -"""The possible states that can be requested when creating a check run.""" -enum RequestableCheckStatusState { - """The check suite or run has been queued.""" - QUEUED - - """The check suite or run is in progress.""" - IN_PROGRESS - - """The check suite or run has been completed.""" - COMPLETED -} - """Types that can be requested reviewers.""" union RequestedReviewer = User | Team @@ -10900,32 +8752,27 @@ type RequestReviewsPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The pull request that is getting requests.""" - pullRequest: PullRequest - - """The edge from the pull request to the requested reviewers.""" - requestedReviewersEdge: UserEdge -} - -"""Autogenerated input type of RerequestCheckSuite""" -input RerequestCheckSuiteInput { - """The Node ID of the repository.""" - repositoryId: ID! - - """The Node ID of the check suite.""" - checkSuiteId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of RerequestCheckSuite""" -type RerequestCheckSuitePayload { - """The requested check suite.""" - checkSuite: CheckSuite + """ + The pull request that is getting requests. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequest` will change from `PullRequest!` to `PullRequest`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequest: PullRequest! - """A unique identifier for the client performing the mutation.""" - clientMutationId: String + """ + The edge from the pull request to the requested reviewers. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `requestedReviewersEdge` will change from `UserEdge!` to `UserEdge`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + requestedReviewersEdge: UserEdge! } """Autogenerated input type of ResolveReviewThread""" @@ -10937,41 +8784,6 @@ input ResolveReviewThreadInput { clientMutationId: String } -"""Autogenerated return type of ResolveReviewThread""" -type ResolveReviewThreadPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The thread to resolve.""" - thread: PullRequestReviewThread -} - -"""Represents a private contribution a user made on GitHub.""" -type RestrictedContribution implements Contribution { - """ - Whether this contribution is associated with a record you do not have access to. For - example, your own 'first issue' contribution may have been made on a repository you can no - longer access. - - """ - isRestricted: Boolean! - - """When this contribution was made.""" - occurredAt: DateTime! - - """The HTTP path for this contribution.""" - resourcePath: URI! - - """The HTTP URL for this contribution.""" - url: URI! - - """ - The user who made this contribution. - - """ - user: User! -} - """ A team or user who has the ability to dismiss a review on a protected branch. """ @@ -10984,6 +8796,11 @@ type ReviewDismissalAllowance implements Node { """ branchProtectionRule: BranchProtectionRule id: ID! + + """ + Identifies the protected branch associated with the allowed user or team. + """ + protectedBranch: ProtectedBranch! @deprecated(reason: "The `ProtectedBranch` type is deprecated and will be removed soon. Use `ReviewDismissalAllowance.branchProtectionRule` instead. Removal on 2019-01-01 UTC.") } """Types that can be an actor.""" @@ -11025,17 +8842,13 @@ type ReviewDismissedEvent implements Node & UniformResourceLocatable { """Identifies the primary key from the database.""" databaseId: Int + id: ID! - """ - Identifies the optional message associated with the 'review_dismissed' event. - """ - dismissalMessage: String + """Identifies the message associated with the 'review_dismissed' event.""" + message: String! - """ - Identifies the optional message associated with the event, rendered to HTML. - """ - dismissalMessageHTML: String - id: ID! + """The message associated with the event, rendered to HTML.""" + messageHtml: HTML! """ Identifies the previous state of the review with the 'review_dismissed' event. @@ -11068,372 +8881,117 @@ type ReviewRequest implements Node { pullRequest: PullRequest! """The reviewer that is requested.""" - requestedReviewer: RequestedReviewer -} - -"""The connection type for ReviewRequest.""" -type ReviewRequestConnection { - """A list of edges.""" - edges: [ReviewRequestEdge] - - """A list of nodes.""" - nodes: [ReviewRequest] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""Represents an 'review_requested' event on a given pull request.""" -type ReviewRequestedEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - id: ID! - - """PullRequest referenced by event.""" - pullRequest: PullRequest! - - """Identifies the reviewer whose review was requested.""" - requestedReviewer: RequestedReviewer -} - -"""An edge in a connection.""" -type ReviewRequestEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: ReviewRequest -} - -"""Represents an 'review_request_removed' event on a given pull request.""" -type ReviewRequestRemovedEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - id: ID! - - """PullRequest referenced by event.""" - pullRequest: PullRequest! - - """Identifies the reviewer whose review request was removed.""" - requestedReviewer: RequestedReviewer -} - -"""The results of a search.""" -union SearchResultItem = Issue | PullRequest | Repository | User | Organization | MarketplaceListing - -"""A list of results that matched against a search query.""" -type SearchResultItemConnection { - """The number of pieces of code that matched the search query.""" - codeCount: Int! - - """A list of edges.""" - edges: [SearchResultItemEdge] - - """The number of issues that matched the search query.""" - issueCount: Int! - - """A list of nodes.""" - nodes: [SearchResultItem] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """The number of repositories that matched the search query.""" - repositoryCount: Int! - - """The number of users that matched the search query.""" - userCount: Int! - - """The number of wiki pages that matched the search query.""" - wikiCount: Int! -} - -"""An edge in a connection.""" -type SearchResultItemEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: SearchResultItem - - """Text matches on the result found.""" - textMatches: [TextMatch] -} - -"""Represents the individual results of a search.""" -enum SearchType { - """Returns results matching issues in repositories.""" - ISSUE - - """Returns results matching repositories.""" - REPOSITORY - - """Returns results matching users and organizations on GitHub.""" - USER -} - -"""A GitHub Security Advisory""" -type SecurityAdvisory implements Node { - """Identifies the primary key from the database.""" - databaseId: Int - - """This is a long plaintext description of the advisory""" - description: String! - - """The GitHub Security Advisory ID""" - ghsaId: String! - id: ID! - - """A list of identifiers for this advisory""" - identifiers: [SecurityAdvisoryIdentifier!]! - - """When the advisory was published""" - publishedAt: DateTime! - - """A list of references for this advisory""" - references: [SecurityAdvisoryReference!]! - - """The severity of the advisory""" - severity: SecurityAdvisorySeverity! - - """A short plaintext summary of the advisory""" - summary: String! - - """When the advisory was last updated""" - updatedAt: DateTime! - - """Vulnerabilities associated with this Advisory""" - vulnerabilities( - """Ordering options for the returned topics.""" - orderBy: SecurityVulnerabilityOrder - - """An ecosystem to filter vulnerabilities by.""" - ecosystem: SecurityAdvisoryEcosystem - - """A package name to filter vulnerabilities by.""" - package: String - - """A list of severities to filter vulnerabilities by.""" - severities: [SecurityAdvisorySeverity!] - - """Returns the elements in the list that come after the specified cursor.""" - after: String - - """ - Returns the elements in the list that come before the specified cursor. - """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): SecurityVulnerabilityConnection! - - """When the advisory was withdrawn, if it has been withdrawn""" - withdrawnAt: DateTime -} - -"""The connection type for SecurityAdvisory.""" -type SecurityAdvisoryConnection { - """A list of edges.""" - edges: [SecurityAdvisoryEdge] - - """A list of nodes.""" - nodes: [SecurityAdvisory] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""The possible ecosystems of a security vulnerability's package.""" -enum SecurityAdvisoryEcosystem { - """Ruby gems hosted at RubyGems.org""" - RUBYGEMS - - """JavaScript packages hosted at npmjs.com""" - NPM - - """Python packages hosted at PyPI.org""" - PIP - - """Java artifacts hosted at the Maven central repository""" - MAVEN - - """.NET packages hosted at the NuGet Gallery""" - NUGET -} - -"""An edge in a connection.""" -type SecurityAdvisoryEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: SecurityAdvisory -} - -"""A GitHub Security Advisory Identifier""" -type SecurityAdvisoryIdentifier { - """The identifier type, e.g. GHSA, CVE""" - type: String! - - """The identifier""" - value: String! -} - -"""An advisory identifier to filter results on.""" -input SecurityAdvisoryIdentifierFilter { - """The identifier type.""" - type: SecurityAdvisoryIdentifierType! - - """The identifier string. Supports exact or partial matching.""" - value: String! -} - -"""Identifier formats available for advisories.""" -enum SecurityAdvisoryIdentifierType { - """Common Vulnerabilities and Exposures Identifier.""" - CVE - - """GitHub Security Advisory ID.""" - GHSA -} - -"""Ordering options for security advisory connections""" -input SecurityAdvisoryOrder { - """The field to order security advisories by.""" - field: SecurityAdvisoryOrderField! - - """The ordering direction.""" - direction: OrderDirection! -} - -"""Properties by which security advisory connections can be ordered.""" -enum SecurityAdvisoryOrderField { - """Order advisories by publication time""" - PUBLISHED_AT - - """Order advisories by update time""" - UPDATED_AT + requestedReviewer: RequestedReviewer } -"""An individual package""" -type SecurityAdvisoryPackage { - """The ecosystem the package belongs to, e.g. RUBYGEMS, NPM""" - ecosystem: SecurityAdvisoryEcosystem! +"""The connection type for ReviewRequest.""" +type ReviewRequestConnection { + """A list of edges.""" + edges: [ReviewRequestEdge] - """The package name""" - name: String! -} + """A list of nodes.""" + nodes: [ReviewRequest] -"""An individual package version""" -type SecurityAdvisoryPackageVersion { - """The package name or version""" - identifier: String! -} + """Information to aid in pagination.""" + pageInfo: PageInfo! -"""A GitHub Security Advisory Reference""" -type SecurityAdvisoryReference { - """A publicly accessible reference""" - url: URI! + """Identifies the total count of items in the connection.""" + totalCount: Int! } -"""Severity of the vulnerability.""" -enum SecurityAdvisorySeverity { - """Low.""" - LOW +"""Represents an 'review_requested' event on a given pull request.""" +type ReviewRequestedEvent implements Node { + """Identifies the actor who performed the event.""" + actor: Actor - """Moderate.""" - MODERATE + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + id: ID! - """High.""" - HIGH + """PullRequest referenced by event.""" + pullRequest: PullRequest! - """Critical.""" - CRITICAL + """Identifies the reviewer whose review was requested.""" + requestedReviewer: RequestedReviewer } -"""An individual vulnerability within an Advisory""" -type SecurityVulnerability { - """The Advisory associated with this Vulnerability""" - advisory: SecurityAdvisory! +"""An edge in a connection.""" +type ReviewRequestEdge { + """A cursor for use in pagination.""" + cursor: String! - """The first version containing a fix for the vulnerability""" - firstPatchedVersion: SecurityAdvisoryPackageVersion + """The item at the end of the edge.""" + node: ReviewRequest +} - """A description of the vulnerable package""" - package: SecurityAdvisoryPackage! +"""Represents an 'review_request_removed' event on a given pull request.""" +type ReviewRequestRemovedEvent implements Node { + """Identifies the actor who performed the event.""" + actor: Actor - """The severity of the vulnerability within this package""" - severity: SecurityAdvisorySeverity! + """Identifies the date and time when the object was created.""" + createdAt: DateTime! + id: ID! - """When the vulnerability was last updated""" - updatedAt: DateTime! + """PullRequest referenced by event.""" + pullRequest: PullRequest! - """ - A string that describes the vulnerable package versions. - This string follows a basic syntax with a few forms. - + `= 0.2.0` denotes a single vulnerable version. - + `<= 1.0.8` denotes a version range up to and including the specified version - + `< 0.1.11` denotes a version range up to, but excluding, the specified version - + `>= 4.3.0, < 4.3.5` denotes a version range with a known minimum and maximum version. - + `>= 0.0.1` denotes a version range with a known minimum, but no known maximum - - """ - vulnerableVersionRange: String! + """Identifies the reviewer whose review request was removed.""" + requestedReviewer: RequestedReviewer } -"""The connection type for SecurityVulnerability.""" -type SecurityVulnerabilityConnection { +"""The results of a search.""" +union SearchResultItem = Issue | PullRequest | Repository | User | Organization | MarketplaceListing + +"""A list of results that matched against a search query.""" +type SearchResultItemConnection { + """The number of pieces of code that matched the search query.""" + codeCount: Int! + """A list of edges.""" - edges: [SecurityVulnerabilityEdge] + edges: [SearchResultItemEdge] + + """The number of issues that matched the search query.""" + issueCount: Int! """A list of nodes.""" - nodes: [SecurityVulnerability] + nodes: [SearchResultItem] """Information to aid in pagination.""" pageInfo: PageInfo! - """Identifies the total count of items in the connection.""" - totalCount: Int! + """The number of repositories that matched the search query.""" + repositoryCount: Int! + + """The number of users that matched the search query.""" + userCount: Int! + + """The number of wiki pages that matched the search query.""" + wikiCount: Int! } """An edge in a connection.""" -type SecurityVulnerabilityEdge { +type SearchResultItemEdge { """A cursor for use in pagination.""" cursor: String! """The item at the end of the edge.""" - node: SecurityVulnerability + node: SearchResultItem + + """Text matches on the result found.""" + textMatches: [TextMatch] } -"""Ordering options for security vulnerability connections""" -input SecurityVulnerabilityOrder { - """The field to order security vulnerabilities by.""" - field: SecurityVulnerabilityOrderField! +"""Represents the individual results of a search.""" +enum SearchType { + """Returns results matching issues in repositories.""" + ISSUE - """The ordering direction.""" - direction: OrderDirection! -} + """Returns results matching repositories.""" + REPOSITORY -"""Properties by which security vulnerability connections can be ordered.""" -enum SecurityVulnerabilityOrderField { - """Order vulnerability by update time""" - UPDATED_AT + """Returns results matching users and organizations on GitHub.""" + USER } """Represents an S/MIME signature on a Commit or Tag.""" @@ -11511,7 +9069,9 @@ interface Starrable { """A list of users who have starred this starrable.""" stargazers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -11642,8 +9202,16 @@ type SubmitPullRequestReviewPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The submitted pull request review.""" - pullRequestReview: PullRequestReview + """ + The submitted pull request review. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequestReview` will change from `PullRequestReview!` to `PullRequestReview`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequestReview: PullRequestReview! } """Entities that can be subscribed to for web and email notifications.""" @@ -11732,10 +9300,12 @@ type Tag implements Node & GitObject { } """A team of users in an organization.""" -type Team implements Node & Subscribable & MemberStatusable { +type Team implements Node & Subscribable { """A list of teams that are ancestors of this team.""" ancestors( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -11767,7 +9337,9 @@ type Team implements Node & Subscribable & MemberStatusable { """Whether to list immediate child teams or all descendant child teams.""" immediateOnly: Boolean = true - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -11800,26 +9372,9 @@ type Team implements Node & Subscribable & MemberStatusable { """A list of pending invitations for users to this team""" invitations( - """Returns the elements in the list that come after the specified cursor.""" - after: String - """ - Returns the elements in the list that come before the specified cursor. + Returns the elements in the list that come after the specified cursor. """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): OrganizationInvitationConnection - - """ - Get the status messages members of this entity have set that are either public or visible only to the organization. - """ - memberStatuses( - """Returns the elements in the list that come after the specified cursor.""" after: String """ @@ -11832,14 +9387,13 @@ type Team implements Node & Subscribable & MemberStatusable { """Returns the last _n_ elements from the list.""" last: Int - - """Ordering options for user statuses returned from the connection.""" - orderBy: UserStatusOrder - ): UserStatusConnection! + ): OrganizationInvitationConnection """A list of users who are members of this team.""" members( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -11892,7 +9446,9 @@ type Team implements Node & Subscribable & MemberStatusable { """A list of repositories this team has access to.""" repositories( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -12170,17 +9726,16 @@ type Topic implements Node & Starrable { """ A list of related topics, including aliases of this topic, sorted with the most relevant - first. Returns up to 10 Topics. + first. """ - relatedTopics( - """How many topics to return.""" - first: Int = 3 - ): [Topic!]! + relatedTopics: [Topic!]! """A list of users who have starred this starrable.""" stargazers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -12405,29 +9960,6 @@ type UnlockLockablePayload { unlockedRecord: Lockable } -"""Autogenerated input type of UnmarkIssueAsDuplicate""" -input UnmarkIssueAsDuplicateInput { - """ID of the issue or pull request currently marked as a duplicate.""" - duplicateId: ID! - - """ - ID of the issue or pull request currently considered canonical/authoritative/original. - """ - canonicalId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of UnmarkIssueAsDuplicate""" -type UnmarkIssueAsDuplicatePayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The issue or pull request that was marked as a duplicate.""" - duplicate: IssueOrPullRequest -} - """Autogenerated input type of UnminimizeComment""" input UnminimizeCommentInput { """The Node ID of the subject to modify.""" @@ -12437,28 +9969,6 @@ input UnminimizeCommentInput { clientMutationId: String } -"""Autogenerated input type of UnpinIssue""" -input UnpinIssueInput { - """The ID of the issue to be unpinned""" - issueId: ID! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Represents an 'unpinned' event on a given issue or pull request.""" -type UnpinnedEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - id: ID! - - """Identifies the issue associated with the event.""" - issue: Issue! -} - """Autogenerated input type of UnresolveReviewThread""" input UnresolveReviewThreadInput { """The ID of the thread to unresolve""" @@ -12468,15 +9978,6 @@ input UnresolveReviewThreadInput { clientMutationId: String } -"""Autogenerated return type of UnresolveReviewThread""" -type UnresolveReviewThreadPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The thread to resolve.""" - thread: PullRequestReviewThread -} - """Represents an 'unsubscribed' event on a given `Subscribable`.""" type UnsubscribedEvent implements Node { """Identifies the actor who performed the event.""" @@ -12519,186 +10020,53 @@ input UpdateBranchProtectionRuleInput { """Are commits required to be signed.""" requiresCommitSignatures: Boolean - """Can admins overwrite branch protection.""" - isAdminEnforced: Boolean - - """Are status checks required to update matching branches.""" - requiresStatusChecks: Boolean - - """Are branches required to be up to date before merging.""" - requiresStrictStatusChecks: Boolean - - """Are reviews from code owners required to update matching branches.""" - requiresCodeOwnerReviews: Boolean - - """ - Will new commits pushed to matching branches dismiss pull request review approvals. - """ - dismissesStaleReviews: Boolean - - """Is dismissal of pull request reviews restricted.""" - restrictsReviewDismissals: Boolean - - """ - A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches. - """ - reviewDismissalActorIds: [ID!] - - """Is pushing to matching branches restricted.""" - restrictsPushes: Boolean - - """A list of User or Team IDs allowed to push to matching branches.""" - pushActorIds: [ID!] - - """ - List of required status check contexts that must pass for commits to be accepted to matching branches. - """ - requiredStatusCheckContexts: [String!] - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of UpdateBranchProtectionRule""" -type UpdateBranchProtectionRulePayload { - """The newly created BranchProtectionRule.""" - branchProtectionRule: BranchProtectionRule - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of UpdateCheckRun""" -input UpdateCheckRunInput { - """The node ID of the repository.""" - repositoryId: ID! - - """The node of the check.""" - checkRunId: ID! - - """The name of the check.""" - name: String - - """ - The URL of the integrator's site that has the full details of the check. - """ - detailsUrl: URI - - """A reference for the run on the integrator's system.""" - externalId: String - - """The current status.""" - status: RequestableCheckStatusState - - """The time that the check run began.""" - startedAt: DateTime - - """The final conclusion of the check.""" - conclusion: CheckConclusionState - - """The time that the check run finished.""" - completedAt: DateTime - - """Descriptive details about the run.""" - output: CheckRunOutput - - """ - Possible further actions the integrator can perform, which a user may trigger. - """ - actions: [CheckRunAction!] - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of UpdateCheckRun""" -type UpdateCheckRunPayload { - """The updated check run.""" - checkRun: CheckRun - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated input type of UpdateCheckSuitePreferences""" -input UpdateCheckSuitePreferencesInput { - """The Node ID of the repository.""" - repositoryId: ID! - - """The check suite preferences to modify.""" - autoTriggerPreferences: [CheckSuiteAutoTriggerPreference!]! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of UpdateCheckSuitePreferences""" -type UpdateCheckSuitePreferencesPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The updated repository.""" - repository: Repository -} - -"""Autogenerated input type of UpdateIssueComment""" -input UpdateIssueCommentInput { - """The ID of the IssueComment to modify.""" - id: ID! - - """The updated text of the comment.""" - body: String! - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of UpdateIssueComment""" -type UpdateIssueCommentPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The updated comment.""" - issueComment: IssueComment -} + """Can admins overwrite branch protection.""" + isAdminEnforced: Boolean -"""Autogenerated input type of UpdateIssue""" -input UpdateIssueInput { - """The ID of the Issue to modify.""" - id: ID! + """Are status checks required to update matching branches.""" + requiresStatusChecks: Boolean + + """Are branches required to be up to date before merging.""" + requiresStrictStatusChecks: Boolean - """The title for the issue.""" - title: String + """Are reviews from code owners required to update matching branches.""" + requiresCodeOwnerReviews: Boolean - """The body for the issue description.""" - body: String + """ + Will new commits pushed to matching branches dismiss pull request review approvals. + """ + dismissesStaleReviews: Boolean - """An array of Node IDs of users for this issue.""" - assigneeIds: [ID!] + """Is dismissal of pull request reviews restricted.""" + restrictsReviewDismissals: Boolean - """The Node ID of the milestone for this issue.""" - milestoneId: ID + """ + A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches. + """ + reviewDismissalActorIds: [ID!] - """An array of Node IDs of labels for this issue.""" - labelIds: [ID!] + """Is pushing to matching branches restricted.""" + restrictsPushes: Boolean - """The desired issue state.""" - state: IssueState + """A list of User or Team IDs allowed to push to matching branches.""" + pushActorIds: [ID!] - """An array of Node IDs for projects associated with this issue.""" - projectIds: [ID!] + """ + List of required status check contexts that must pass for commits to be accepted to matching branches. + """ + requiredStatusCheckContexts: [String!] """A unique identifier for the client performing the mutation.""" clientMutationId: String } -"""Autogenerated return type of UpdateIssue""" -type UpdateIssuePayload { +"""Autogenerated return type of UpdateBranchProtectionRule""" +type UpdateBranchProtectionRulePayload { + """The newly created BranchProtectionRule.""" + branchProtectionRule: BranchProtectionRule + """A unique identifier for the client performing the mutation.""" clientMutationId: String - - """The issue.""" - issue: Issue } """Autogenerated input type of UpdateProjectCard""" @@ -12721,8 +10089,16 @@ type UpdateProjectCardPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The updated ProjectCard.""" - projectCard: ProjectCard + """ + The updated ProjectCard. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `projectCard` will change from `ProjectCard!` to `ProjectCard`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + projectCard: ProjectCard! } """Autogenerated input type of UpdateProjectColumn""" @@ -12742,8 +10118,16 @@ type UpdateProjectColumnPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The updated project column.""" - projectColumn: ProjectColumn + """ + The updated project column. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `projectColumn` will change from `ProjectColumn!` to `ProjectColumn`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + projectColumn: ProjectColumn! } """Autogenerated input type of UpdateProject""" @@ -12772,42 +10156,16 @@ type UpdateProjectPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The updated project.""" - project: Project -} - -"""Autogenerated input type of UpdatePullRequest""" -input UpdatePullRequestInput { - """The Node ID of the pull request.""" - pullRequestId: ID! - """ - The name of the branch you want your changes pulled into. This should be an existing branch - on the current repository. + The updated project. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `project` will change from `Project!` to `Project`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. """ - baseRefName: String - - """The title of the pull request.""" - title: String - - """The contents of the pull request.""" - body: String - - """Indicates whether maintainers can modify the pull request.""" - maintainerCanModify: Boolean - - """A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""Autogenerated return type of UpdatePullRequest""" -type UpdatePullRequestPayload { - """A unique identifier for the client performing the mutation.""" - clientMutationId: String - - """The updated pull request.""" - pullRequest: PullRequest + project: Project! } """Autogenerated input type of UpdatePullRequestReviewComment""" @@ -12827,8 +10185,17 @@ type UpdatePullRequestReviewCommentPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The updated comment.""" - pullRequestReviewComment: PullRequestReviewComment + """ + The updated comment. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequestReviewComment` will change from + `PullRequestReviewComment!` to `PullRequestReviewComment`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequestReviewComment: PullRequestReviewComment! } """Autogenerated input type of UpdatePullRequestReview""" @@ -12848,8 +10215,16 @@ type UpdatePullRequestReviewPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The updated pull request review.""" - pullRequestReview: PullRequestReview + """ + The updated pull request review. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `pullRequestReview` will change from `PullRequestReview!` to `PullRequestReview`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + pullRequestReview: PullRequestReview! } """Autogenerated input type of UpdateSubscription""" @@ -12869,8 +10244,16 @@ type UpdateSubscriptionPayload { """A unique identifier for the client performing the mutation.""" clientMutationId: String - """The input subscribable entity.""" - subscribable: Subscribable + """ + The input subscribable entity. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `subscribable` will change from `Subscribable!` to `Subscribable`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + subscribable: Subscribable! } """Autogenerated input type of UpdateTopics""" @@ -12893,8 +10276,16 @@ type UpdateTopicsPayload { """Names of the provided topics that are not valid.""" invalidTopicNames: [String!] - """The updated repository.""" - repository: Repository + """ + The updated repository. + + **Upcoming Change on 2019-01-01 UTC** + **Description:** Type for `repository` will change from `Repository!` to `Repository`. + **Reason:** In preparation for an upcoming change to the way we report + mutation errors, non-nullable payload fields are becoming nullable. + + """ + repository: Repository! } """An RFC 3986, RFC 3987, and RFC 6570 (level 4) compliant URI string.""" @@ -12903,15 +10294,7 @@ scalar URI """ A user is an individual's account on GitHub that owns repositories and can make new content. """ -type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & ProjectOwner & RepositoryOwner & UniformResourceLocatable & ProfileOwner { - """ - Determine if this repository owner has any items that can be pinned to their profile. - """ - anyPinnableItems( - """Filter to only a particular kind of pinnable item.""" - type: PinnableItemType - ): Boolean! - +type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch & RepositoryOwner & UniformResourceLocatable { """A URL pointing to the user's public avatar.""" avatarUrl( """The size of the resulting square image.""" @@ -12926,7 +10309,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of commit comments made by this user.""" commitComments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -12977,7 +10362,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of users the given user is followed by.""" followers( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -12994,7 +10381,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of users the given user is following.""" following( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13017,7 +10406,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of gist comments made by this user.""" gistComments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13040,7 +10431,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Ordering options for gists returned from the connection""" orderBy: GistOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13083,7 +10476,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of issue comments made by this user.""" issueComments( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13109,10 +10504,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of states to filter the issues by.""" states: [IssueState!] - """Filtering options for issues returned from the connection.""" - filterBy: IssueFilters - - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13127,12 +10521,6 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch last: Int ): IssueConnection! - """ - Showcases a selection of repositories and gists that the profile owner has - either curated or that have been selected automatically based on popularity. - """ - itemShowcase: ProfileItemShowcase! - """The user's public profile location.""" location: String @@ -13150,7 +10538,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """A list of organizations the user belongs to.""" organizations( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13165,73 +10555,36 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch last: Int ): OrganizationConnection! - """ - A list of repositories and gists this profile owner can pin to their profile. - """ - pinnableItems( - """Filter the types of pinnable items that are returned.""" - types: [PinnableItemType!] + """A list of repositories this user has pinned to their profile""" + pinnedRepositories( + """If non-null, filters repositories according to privacy""" + privacy: RepositoryPrivacy - """Returns the elements in the list that come after the specified cursor.""" - after: String + """Ordering options for repositories returned from the connection""" + orderBy: RepositoryOrder """ - Returns the elements in the list that come before the specified cursor. + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PinnableItemConnection! - - """ - A list of repositories and gists this profile owner has pinned to their profile - """ - pinnedItems( - """Filter the types of pinned items that are returned.""" - types: [PinnableItemType!] - - """Returns the elements in the list that come after the specified cursor.""" - after: String + affiliations: [RepositoryAffiliation] """ - Returns the elements in the list that come before the specified cursor. + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. """ - before: String - - """Returns the first _n_ elements from the list.""" - first: Int - - """Returns the last _n_ elements from the list.""" - last: Int - ): PinnableItemConnection! - - """ - Returns how many more items this profile owner can pin to their profile. - """ - pinnedItemsRemaining: Int! - - """Find project by number.""" - project( - """The project number to find.""" - number: Int! - ): Project - - """A list of projects under the owner.""" - projects( - """Ordering options for projects returned from the connection""" - orderBy: ProjectOrder - - """Query to search projects by, currently only searching by name.""" - search: String + ownerAffiliations: [RepositoryAffiliation] - """A list of states to filter the projects by.""" - states: [ProjectState!] + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13244,17 +10597,13 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Returns the last _n_ elements from the list.""" last: Int - ): ProjectConnection! - - """The HTTP path listing user's projects""" - projectsResourcePath: URI! - - """The HTTP URL listing user's projects""" - projectsUrl: URI! + ): RepositoryConnection! """A list of public keys associated with this user.""" publicKeys( - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13286,7 +10635,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Ordering options for pull requests returned from the connection.""" orderBy: IssueOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13328,7 +10679,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13370,7 +10723,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ contributionTypes: [RepositoryContributionType] - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13404,7 +10759,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """Order for connection""" orderBy: StarOrder - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13419,21 +10776,12 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch last: Int ): StarredRepositoryConnection! - """The user's description of what they're currently doing.""" - status: UserStatus - """Identifies the date and time when the object was last updated.""" updatedAt: DateTime! """The HTTP URL for this user""" url: URI! - """Can the viewer pin repositories and gists to the profile?""" - viewerCanChangePinnedItems: Boolean! - - """Can the current viewer create new projects on this owner.""" - viewerCanCreateProjects: Boolean! - """Whether or not the viewer is able to follow the user.""" viewerCanFollow: Boolean! @@ -13463,7 +10811,9 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch """ isLocked: Boolean - """Returns the elements in the list that come after the specified cursor.""" + """ + Returns the elements in the list that come after the specified cursor. + """ after: String """ @@ -13482,40 +10832,6 @@ type User implements Node & Actor & RegistryPackageOwner & RegistryPackageSearch websiteUrl: URI } -"""The possible durations that a user can be blocked for.""" -enum UserBlockDuration { - """The user was blocked for 1 day""" - ONE_DAY - - """The user was blocked for 3 days""" - THREE_DAYS - - """The user was blocked for 7 days""" - ONE_WEEK - - """The user was blocked for 30 days""" - ONE_MONTH - - """The user was blocked permanently""" - PERMANENT -} - -"""Represents a 'user_blocked' event on a given user.""" -type UserBlockedEvent implements Node { - """Identifies the actor who performed the event.""" - actor: Actor - - """Number of days that the user was blocked for.""" - blockDuration: UserBlockDuration! - - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - id: ID! - - """The user who was blocked.""" - subject: User -} - """The connection type for User.""" type UserConnection { """A list of edges.""" @@ -13589,75 +10905,5 @@ type UserEdge { node: User } -"""The user's description of what they're currently doing.""" -type UserStatus implements Node { - """Identifies the date and time when the object was created.""" - createdAt: DateTime! - - """An emoji summarizing the user's status.""" - emoji: String - - """ID of the object.""" - id: ID! - - """ - Whether this status indicates the user is not fully available on GitHub. - """ - indicatesLimitedAvailability: Boolean! - - """A brief message describing what the user is doing.""" - message: String - - """ - The organization whose members can see this status. If null, this status is publicly visible. - """ - organization: Organization - - """Identifies the date and time when the object was last updated.""" - updatedAt: DateTime! - - """The user who has this status.""" - user: User! -} - -"""The connection type for UserStatus.""" -type UserStatusConnection { - """A list of edges.""" - edges: [UserStatusEdge] - - """A list of nodes.""" - nodes: [UserStatus] - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """Identifies the total count of items in the connection.""" - totalCount: Int! -} - -"""An edge in a connection.""" -type UserStatusEdge { - """A cursor for use in pagination.""" - cursor: String! - - """The item at the end of the edge.""" - node: UserStatus -} - -"""Ordering options for user status connections.""" -input UserStatusOrder { - """The field to order user statuses by.""" - field: UserStatusOrderField! - - """The ordering direction.""" - direction: OrderDirection! -} - -"""Properties by which user status connections can be ordered.""" -enum UserStatusOrderField { - """Order user statuses by when they were updated.""" - UPDATED_AT -} - """A valid x509 certificate string""" scalar X509Certificate diff --git a/lib/containers/current-pull-request-container.js b/lib/containers/current-pull-request-container.js index 6bccb589df..2a2eb747e9 100644 --- a/lib/containers/current-pull-request-container.js +++ b/lib/containers/current-pull-request-container.js @@ -75,6 +75,7 @@ export default class CurrentPullRequestContainer extends React.Component { const query = graphql` query currentPullRequestContainerQuery($headOwner: String!, $headName: String!, $headRef: String!, $first: Int!) { repository(owner: $headOwner, name: $headName) { + id ref(qualifiedName: $headRef) { associatedPullRequests(first: $first, states: [OPEN]) { totalCount From bd98a6a65361f346c8b940a3a0a3d1a190a58f76 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 16:04:10 -0400 Subject: [PATCH 37/40] Remove more commit message quotes --- actions/schema-up/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 601fc901e0..9dc94e2b59 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -69,7 +69,7 @@ Toolkit.run(async tools => { tools.log.info(`Commiting relay-compiler changes to a new branch ${branchName}.`); await tools.runInWorkspace('git', ['checkout', '-b', branchName]); if (!relayFailed) { - await tools.runInWorkspace('git', ['commit', '--all', '--message=":gear: relay-compiler changes"']); + await tools.runInWorkspace('git', ['commit', '--all', '--message', ':gear: relay-compiler changes']); } await tools.runInWorkspace('git', ['push', 'origin', branchName]); From 4c586f1e3323ac803ca7c63bb0827695c7681666 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 16:08:39 -0400 Subject: [PATCH 38/40] Break relay-compiler :boom: --- lib/containers/current-pull-request-container.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/containers/current-pull-request-container.js b/lib/containers/current-pull-request-container.js index 2a2eb747e9..fdd78513d4 100644 --- a/lib/containers/current-pull-request-container.js +++ b/lib/containers/current-pull-request-container.js @@ -75,7 +75,7 @@ export default class CurrentPullRequestContainer extends React.Component { const query = graphql` query currentPullRequestContainerQuery($headOwner: String!, $headName: String!, $headRef: String!, $first: Int!) { repository(owner: $headOwner, name: $headName) { - id + arglbargl ref(qualifiedName: $headRef) { associatedPullRequests(first: $first, states: [OPEN]) { totalCount From 5f0650bb8aed548f213994bc9747f97c8059eadf Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 16:11:03 -0400 Subject: [PATCH 39/40] relay-compiler dumps errors to stdout --- actions/schema-up/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/schema-up/index.js b/actions/schema-up/index.js index 9dc94e2b59..db4c34f2bd 100644 --- a/actions/schema-up/index.js +++ b/actions/schema-up/index.js @@ -28,7 +28,7 @@ Toolkit.run(async tools => { await tools.runInWorkspace('git', ['commit', '--all', '--message', ':arrow_up: GraphQL schema']); tools.log.info('Re-running relay compiler.'); - const {failed: relayFailed, stderr: relayError, stdout: relayOutput} = await tools.runInWorkspace( + const {failed: relayFailed, stdout: relayOutput} = await tools.runInWorkspace( path.resolve(__dirname, 'node_modules', '.bin', 'relay-compiler'), ['--watchman', 'false', '--src', './lib', '--schema', 'graphql/schema.graphql'], {reject: false}, @@ -84,7 +84,7 @@ The GraphQL schema has been automatically updated and \`relay-compiler\` has bee body += 'If all of the tests pass in CI, merge with confidence :zap:'; } else { body += ' `relay-compiler` failed with the following output:\n\n```\n'; - body += relayError; + body += relayOutput; body += '\n```\n\nCheck out this branch to fix things so we don\'t break.'; } From 71b6e638ca51541d388e6962bd4d677a59265c84 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Thu, 2 May 2019 16:14:47 -0400 Subject: [PATCH 40/40] bunp again