diff --git a/.circleci/config.yml b/.circleci/config.yml index 202a1d3aa1a..87bf7e2b52a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -98,6 +98,9 @@ jobs: docker: - image: artsy/hokusai:0.4.5 steps: + - run: + name: Validated Schemas + command: node scripts/validate_schemas.js - add_ssh_keys - checkout - setup_remote_docker diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000000..1ba2b63fc7c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: 10 +script: yarn danger ci diff --git a/dangerfile.ts b/dangerfile.ts index 4db1dc868f9..147ab9f1b45 100644 --- a/dangerfile.ts +++ b/dangerfile.ts @@ -1,10 +1,52 @@ -import { warn, danger } from 'danger' - -// Warn about creating new JS files -const jsFiles = danger.git.created_files.filter(f => f.endsWith('.js')) -if (jsFiles.length) { - const files = danger.github.utils.fileLinks(jsFiles) - warn( - `Please don't include .js files, we want to be using TypeScript found: ${files}.` +import { warn, danger } from "danger" +import { getBreakingChanges } from "./scripts/validate_schemas" +import { BreakingChange } from "graphql" + +// tslint:disable-next-line:no-default-export +export default async () => { + // Warn about creating new JS files + const jsFiles = danger.git.created_files.filter( + f => f.includes("src") && f.endsWith(".js") ) + if (jsFiles.length) { + const files = danger.github.utils.fileLinks(jsFiles) + warn( + `Please don't include .js files, we want to be using TypeScript found: ${files}.` + ) + } + + // Breaking change check for Metaphysics production when deploying + if (danger.github.pr.base.ref === "release") { + const breakingChanges = await getBreakingChanges() + const bc = breakingChanges + const typesMissing = bc.filter(b => b.type === "TYPE_REMOVED") + const fieldsMissing = bc.filter(b => b.type === "FIELD_REMOVED") + const unionOptionsMissing = bc.filter( + b => b.type === "TYPE_REMOVED_FROM_UNION" + ) + const fieldChanged = bc.filter(b => b.type === "FIELD_CHANGED_KIND") + + const descriptions = { + "Missing types": typesMissing, + "Fields missing": fieldsMissing, + "Fields changed": fieldChanged, + "Union types-mismatch": unionOptionsMissing, + } + + if (bc.length) { + fail( + `Metaphysics production does not have a compatible schema for force's GraphQL usage, please deploy metaphysics to production and re-run Travis CI.` + ) + } + + Object.keys(descriptions).forEach(key => { + const breakingChanges: BreakingChange[] = descriptions[key] + if (breakingChanges.length) { + const fields = breakingChanges.map( + b => "`" + b.description.split(" ")[0] + "`" + ) + fail(`${key}: ${danger.utils.sentence(fields)}`) + } + }) + } } diff --git a/package.json b/package.json index 79caac86f88..29c8c8e508d 100644 --- a/package.json +++ b/package.json @@ -245,7 +245,7 @@ "cache-loader": "^1.2.2", "coffee-loader": "^0.8.0", "core-js": "^2.5.7", - "danger": "^4.0.1", + "danger": "^6.0.2", "electron": "1.7.16", "enzyme": "^3.4.4", "enzyme-adapter-react-16": "^1.5.0", diff --git a/scripts/validate_schemas.js b/scripts/validate_schemas.js new file mode 100644 index 00000000000..4c6194e229d --- /dev/null +++ b/scripts/validate_schemas.js @@ -0,0 +1,81 @@ +// @ts-check + +// Grab the schema for reaction out of the node_modules +// to see if it is a subset of the production schema +// +// Used both by Danger during the deploy PR, and also +// before the deployment on circle +// +const { readFileSync } = require("fs") +const { + introspectionQuery, + buildClientSchema, + printSchema, + buildSchema, + findBreakingChanges, +} = require("graphql") + +const fetch = require("isomorphic-fetch") +const metaphysicsProd = "https://metaphysics-production.artsy.net/" + +const downloadProductionSchema = async endpoint => { + const postBody = { + query: introspectionQuery, + operationName: "IntrospectionQuery", + } + + const response = await fetch(endpoint, { + method: "POST", + body: JSON.stringify(postBody), + headers: { + "Content-Type": "application/json", + }, + }) + const { data } = await response.json() + // commentDescriptions is hidden + // @ts-ignore + return printSchema(buildClientSchema(data), { commentDescriptions: true }) +} + +const downloadGitHubReaction = async release => { + const response = await fetch( + `https://github.com/artsy/reaction/raw/v${release}/data/schema.graphql` + ) + + const body = await response.text() + return body +} + +const getBreakingChanges = async () => { + const packageJSON = JSON.parse( + readFileSync(__dirname + "/../package.json", "utf8") + ) + const reactionVersion = packageJSON["dependencies"]["@artsy/reaction"] + const reactionSchema = await downloadGitHubReaction(reactionVersion) + const metaphyicsSchema = await downloadProductionSchema(metaphysicsProd) + return findBreakingChanges( + buildSchema(metaphyicsSchema), + buildSchema(reactionSchema) + ) +} + +module.exports = { + getBreakingChanges, +} + +// @ts-ignore +if (require.main === module) { + // When this is being called as a script via `node scripts/validate_schemas.js` + getBreakingChanges().then(changes => { + if (changes.length) { + process.exitCode = 1 + console.error( + "Failing due to breaking changes between Force and Metaphysics Production\n\n" + ) + console.error(changes) + console.error( + "\n\nYou should deploy metaphysics production, and re-deploy force" + ) + } + }) +} diff --git a/yarn.lock b/yarn.lock index 1732804cbd7..d3c35ed2e89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -921,10 +921,10 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@octokit/rest@^15.9.5": - version "15.11.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.11.2.tgz#61bbfb6fa572eff0643cbe62ef695adac194ca8a" - integrity sha512-otmTLdH7K31Ul26wnIeV889lipjUwV2eHlbMimtE7XYtpxksmDeB/OQVzX0tHlYULszzZVY1uW/wOxi5LyjR7w== +"@octokit/rest@^15.12.1": + version "15.16.1" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.16.1.tgz#399b06660fe16852cf432059c845d4cdcaf77f5a" + integrity sha512-86RGoibm8AJ3ZBlM0NdMI932wEZ/bdo2eEppHtliEYwJT9hsy5qt+i9HA+T8CC90r4atoFQDrY7mDLBcAjp9ow== dependencies: before-after-hook "^1.1.0" btoa-lite "^1.0.0" @@ -933,6 +933,7 @@ https-proxy-agent "^2.2.0" lodash "^4.17.4" node-fetch "^2.1.1" + universal-user-agent "^2.0.0" url-template "^2.0.8" "@segment/loosely-validate-event@^1.1.2": @@ -1469,20 +1470,13 @@ add-dom-event-listener@1.x, add-dom-event-listener@^1.1.0: dependencies: object-assign "4.x" -agent-base@4: +agent-base@4, agent-base@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" -agent-base@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" - integrity sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg== - dependencies: - es6-promisify "^5.0.0" - ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -1622,6 +1616,7 @@ antigravity@artsy/antigravity: version "0.1.3" resolved "https://codeload.github.com/artsy/antigravity/tar.gz/a4438d2fe9d0cdf71f1c47faba371cd3d004e140" dependencies: + coffeescript "1.11.1" express "*" any-observable@^0.2.0: @@ -2686,9 +2681,9 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" before-after-hook@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.1.0.tgz#83165e15a59460d13702cb8febd6a1807896db5a" - integrity sha512-VOMDtYPwLbIncTxNoSzRyvaMxtXmLWLUqr8k5AfC1BzLk34HvBXaQX8snOwQZ4c0aX8aSERqtJSiI9/m2u5kuA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.2.0.tgz#1079c10312cd4d4ad0d1676d37951ef8bfc3a563" + integrity sha512-wI3QtdLppHNkmM1VgRVLCrlWCKk/YexlPicYbXPs4eYdd1InrUCTFsx5bX1iUQzzMsoRXXPpM1r+p7JEJJydag== bem-cn-lite@^3.0.0: version "3.0.0" @@ -3298,7 +3293,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== @@ -3307,7 +3302,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.1.0, chalk@^2.3.0: +chalk@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" integrity sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q== @@ -3623,16 +3618,16 @@ collection-visit@^1.0.0: object-visit "^1.0.0" color-convert@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" - integrity sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg== + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: - color-name "1.1.1" + color-name "1.1.3" -color-name@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" - integrity sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok= +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= colors@0.5.x: version "0.5.1" @@ -3719,6 +3714,11 @@ commander@^2.13.0, commander@^2.14.1, commander@^2.9.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== +commander@^2.18.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -4321,40 +4321,42 @@ d@1: dependencies: es5-ext "^0.10.9" -danger@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/danger/-/danger-4.0.1.tgz#e07c213b44fe9768534392ae4f2f2b0ba6121018" - integrity sha512-wPEcxBohF978/cgV+M06on42ih83OhWUru95nAHwgN5BsdlOE/dey37OM3HclhmtKFhWHDv0BwIjIRbxa4EqlQ== +danger@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/danger/-/danger-6.0.5.tgz#bcee3a06742cdce52da61d745c1d03670b30cd97" + integrity sha512-Lx27KzG+bYRojQYTuuS7r3A675SI+7ERQtuGCmHhKTkn66ZDf/CS/07tQ8X2wLhc+A7vr4x+MNVpT3RjDo2iQQ== dependencies: "@babel/polyfill" "^7.0.0" - "@octokit/rest" "^15.9.5" + "@octokit/rest" "^15.12.1" chalk "^2.3.0" - commander "^2.13.0" - debug "^3.1.0" + commander "^2.18.0" + debug "^4.0.1" get-stdin "^6.0.0" https-proxy-agent "^2.2.1" hyperlinker "^1.0.0" jsome "^2.3.25" - json5 "^1.0.0" + json5 "^2.1.0" jsonpointer "^4.0.1" jsonwebtoken "^8.2.1" lodash.find "^4.6.0" lodash.includes "^4.3.0" lodash.isobject "^3.0.2" lodash.keys "^4.0.8" + memfs-or-file-map-to-github-branch "^1.1.0" node-cleanup "^2.1.2" - node-fetch "^2.1.2" - p-limit "^1.2.0" - parse-diff "^0.4.2" - parse-git-config "^2.0.2" + node-fetch "^2.2.0" + override-require "^1.1.1" + p-limit "^2.0.0" + parse-diff "^0.5.1" + parse-git-config "^2.0.3" parse-github-url "^1.0.2" parse-link-header "^1.0.1" pinpoint "^1.1.0" readline-sync "^1.4.9" require-from-string "^2.0.2" - rfc6902 "^2.2.2" + rfc6902 "^3.0.1" supports-hyperlinks "^1.0.1" - vm2 "^3.6.0" + vm2 "^3.6.3" voca "^1.4.0" dashdash@^1.12.0: @@ -5246,9 +5248,9 @@ es6-map@^0.1.3: event-emitter "~0.3.5" es6-promise@^4.0.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" - integrity sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ== + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== es6-promise@^4.0.5: version "4.1.0" @@ -8917,10 +8919,10 @@ json5@^0.5.0, json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= -json5@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== dependencies: minimist "^1.2.0" @@ -9732,6 +9734,11 @@ lsmod@1.0.0: resolved "https://registry.yarnpkg.com/lsmod/-/lsmod-1.0.0.tgz#9a00f76dca36eb23fa05350afe1b585d4299e64b" integrity sha1-mgD3bco26yP6BTUK/htYXUKZ5ks= +macos-release@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-1.1.0.tgz#831945e29365b470aa8724b0ab36c8f8959d10fb" + integrity sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA== + mailcheck@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/mailcheck/-/mailcheck-1.1.1.tgz#d87cf6ba0b64ba512199dbf93f1489f479591e34" @@ -9811,6 +9818,11 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^1.1.0" +memfs-or-file-map-to-github-branch@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.1.2.tgz#9d46c02481b7eca8e5ee8a94f170b7e0138cad67" + integrity sha512-D2JKK2DTuVYQqquBWco3K6UfSVyVwmd58dgNqh+TgxHOZdTmR8I130gjMbVCkemDl/EzqDA62417cJxKL3/FFA== + memoize-one@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.0.3.tgz#cdfdd942853f1a1b4c71c5336b8c49da0bf0273c" @@ -10397,10 +10409,10 @@ node-fetch@^2.0.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@^2.1.1, node-fetch@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" - integrity sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA== +node-fetch@^2.1.1, node-fetch@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.1.tgz#1fe551e0ded6c45b3b3b937d0fb46f76df718d1e" + integrity sha512-ObXBpNCD3A/vYQiQtEWl7DuqjAXjfptYFuGHLdPl5U19/6kJuZV+8uMHLrkj3wJrJoyfg4nhgyFixZdaZoAiEQ== node-int64@^0.4.0: version "0.4.0" @@ -10903,6 +10915,14 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" +os-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-2.0.1.tgz#b9a386361c17ae3a21736ef0599405c9a8c5dc5e" + integrity sha1-uaOGNhwXrjohc27wWZQFyajF3F4= + dependencies: + macos-release "^1.0.0" + win-release "^1.0.0" + os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" @@ -10937,6 +10957,11 @@ output-file-sync@^2.0.0: is-plain-obj "^1.1.0" mkdirp "^0.5.1" +override-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df" + integrity sha1-auIvresfhQ/7DPTCD/e4fl62UN8= + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -10957,13 +10982,6 @@ p-limit@^1.1.0: resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" integrity sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw= -p-limit@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" @@ -10990,11 +11008,6 @@ p-map@^1.1.1: resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" @@ -11042,12 +11055,12 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" -parse-diff@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.4.2.tgz#b173390e916564e8c70ccd37756047941e5b3ef2" - integrity sha512-YYQzII66NqysdPgDVxzbdwNXMv5Ww562JSZSXZ4RIPoolzD7yqA4crgD8swrs+JNcvjoZMKMiT4kGcLYvf6IoA== +parse-diff@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.5.1.tgz#18b3e82a0765ac1c8796e3854e475073a691c4fb" + integrity sha512-/qXjo9x/pFa5bVk/ZXaJD0yr3Tf3Yp6MWWMr4vnUmumDrE0yoE6YDH2A8vmcCD/Ko3tW2o0X+zGYh2zMLXshsg== -parse-git-config@^2.0.2: +parse-git-config@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb" integrity sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A== @@ -12272,7 +12285,7 @@ react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -"react-lines-ellipsis@github:xiaody/react-lines-ellipsis#0cd517ad9079aeb5e6710178d93dd6faa65b924a": +react-lines-ellipsis@xiaody/react-lines-ellipsis#0cd517ad9079aeb5e6710178d93dd6faa65b924a: version "0.13.0" resolved "https://codeload.github.com/xiaody/react-lines-ellipsis/tar.gz/0cd517ad9079aeb5e6710178d93dd6faa65b924a" @@ -13270,10 +13283,10 @@ rewire@^2.3.1: resolved "https://registry.yarnpkg.com/rewire/-/rewire-2.5.2.tgz#6427de7b7feefa7d36401507eb64a5385bc58dc7" integrity sha1-ZCfee3/u+n02QBUH62SlOFvFjcc= -rfc6902@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-2.4.0.tgz#da188888602ce4fa0c36a5202b26b71a5184422a" - integrity sha512-Oof0+ZGIey7+U2kIU51Ao2YUjgkik6iFwyKNIRzNnl9DD/WnaxQnp21iUwBlkbqrRkxuE/DGPRroLzYjj/ngMA== +rfc6902@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-3.0.1.tgz#03a3d38329dbc266fbc92aa7fc14546d7839e89f" + integrity sha512-a4t5OlaOgAejBg48/lkyQMcV6EWpljjSjmXAtSXLhw83x1OhlcVGLMLf//GoUSpHsWt8x/7oxaf5FEGM9QH/iQ== right-align@^0.1.1: version "0.1.3" @@ -13504,7 +13517,7 @@ semver-diff@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@^5.5.1: +semver@^5.0.1, semver@^5.5.1: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -14519,14 +14532,14 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" -supports-color@^5.0.0, supports-color@^5.5.0: +supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^5.2.0, supports-color@^5.3.0: +supports-color@^5.2.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== @@ -15357,6 +15370,13 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universal-user-agent@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.1.tgz#18e591ca52b1cb804f6b9cbc4c336cf8191f80e1" + integrity sha512-vz+heWVydO0iyYAa65VHD7WZkYzhl7BeNVy4i54p4TF8OMiLSXdbuQe4hm+fmWAsL+rVibaQHXfhvkw3c1Ws2w== + dependencies: + os-name "^2.0.1" + universalify@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" @@ -15600,10 +15620,10 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" -vm2@^3.6.0: - version "3.6.3" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.3.tgz#6dd426bb67a387d03055c5d276720f3f23203b72" - integrity sha512-9sGC9T+R/afjDSVyG15ATUPzm5ZHzvIJvwkVmQ+4H2Cy55uDp0dXneXV4gXC7RMd2crWcL/awfdHjCsNSm+ufg== +vm2@^3.6.3: + version "3.6.4" + resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.4.tgz#88b27a9f328a0630671841363692a57d24dead33" + integrity sha512-LFj8YL9DyGn+fwgG2J+10HyuIpdIRHHN8/3NwKoc2e2t2Pr0aXV/2OSODceDR7NP7VNr8RTqmxHRYcwbNvpbwg== voca@^1.4.0: version "1.4.0" @@ -15871,6 +15891,13 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + integrity sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk= + dependencies: + semver "^5.0.1" + window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"