Add option to insert @format to first docblock if absent (#2865)

* Add option to insert @format pragma if absent

prependPragma --> insertPragma

add tst dir, move stripBom, add to README, update snapshots

remove noise from test + update snapshots

use jest@test new functions, update docs, rerun snapshots

fix accidental upgrade to jest@test

update jest-docblock again to latest with strip()

updated snapshot

* updated snapshots

* revert jest dep change

* apply a trim to parsed comments

* remove empty object

* Revert "apply a trim to parsed comments"

This reverts commit 467f71ce5f4b4f8a1b5c4474ee0484bc96c92141.

* rerun snapshots with proper jest version

* pin jest-docblock to latest @test release

* comment out docs for new feature from readme

* remove leading newlines

* ensure blank line between docblock and rest of file

* remove backtick string
master
Jake 2017-10-06 04:37:14 -04:00 committed by Lucas Azzola
parent bc420370c6
commit 50f3e646c7
14 changed files with 480 additions and 147 deletions

View File

@ -290,6 +290,11 @@ Require a special comment, called a pragma, to be present in the file's first do
Valid pragmas are `@prettier` and `@format`.
<!--
#### `--insert-pragma`
Insert a `@format` pragma to the top of formatted files when pragma is absent.
Works well when used in tandem with `--require-pragma`.
-->
#### `--list-different`
Another useful flag is `--list-different` (or `-l`) which prints the filenames of files that are different from Prettier formatting. If there are differences the script errors out, which is useful in a CI scenario.

View File

@ -156,3 +156,13 @@ or
Default | CLI Override | API Override
--------|--------------|-------------
`false` | `--require-pragma` | `requirePragma: <bool>`
<!-->
## Insert Pragma
Prettier can insert a special @format marker at the top of files specifying that the file has been formatted
with prettier. This works well when used in tandem with the `--require-pragma` option. If there is already a
docblock at the top of the file then this option will add a newline to it with the @format marker.
Default | CLI Override | API Override
--------|--------------|-------------
`false` | `--insert-pragma` | `insertPragma: <bool>`
-->

View File

@ -68,6 +68,24 @@ function formatWithCursor(text, opts, addAlignmentSize) {
}
text = stripBom(text);
if (
opts.insertPragma &&
!hasPragma(text) &&
opts.rangeStart === 0 &&
opts.rangeEnd === Infinity
) {
const parsedDocblock = docblock.parseWithComments(docblock.extract(text));
const pragmas = Object.assign({ format: "" }, parsedDocblock.pragmas);
const newDocblock = docblock.print({
pragmas,
comments: parsedDocblock.comments.replace(/^(\r?\n)+/, "") // remove leading newlines
});
const strippedText = docblock.strip(text);
const separatingNewlines = strippedText.startsWith("\n") ? "\n" : "\n\n";
text = newDocblock + separatingNewlines + strippedText;
}
addAlignmentSize = addAlignmentSize || 0;
const ast = parser.parse(text, opts);

View File

@ -27,7 +27,7 @@
"globby": "6.1.0",
"graphql": "0.10.1",
"ignore": "3.3.5",
"jest-docblock": "21.1.0",
"jest-docblock": "21.3.0-beta.1",
"jest-validate": "21.1.0",
"leven": "2.1.0",
"mem": "1.1.0",

View File

@ -167,6 +167,13 @@ const detailedOptions = normalizeDetailedOptions({
default: ".prettierignore",
description: "Path to a file with patterns describing files to ignore."
},
"insert-pragma": {
type: "boolean",
forwardToApi: true,
description: dedent(`
Insert @format pragma into file's first docblock comment.
`)
},
"jsx-bracket-same-line": {
type: "boolean",
category: CATEGORY_FORMAT,

View File

@ -15,6 +15,7 @@ const defaults = {
bracketSpacing: true,
jsxBracketSameLine: false,
parser: "babylon",
insertPragma: false,
requirePragma: false,
semi: true
};

View File

@ -0,0 +1,87 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`module-with-late-docblock.js 1`] = `
function foo(bar) {
return bar + 3 + 4;
}
/**
* Some notes that should not be appended to
*/
const fruit = 'tomatoes';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/** @format */
function foo(bar) {
return bar + 3 + 4;
}
/**
* Some notes that should not be appended to
*/
const fruit = "tomatoes";
`;
exports[`module-with-pragma.js 1`] = `
/**
* Here lie words above pragmas
*
* @flow
* @format
*/
function foo(bar) {
return bar + 3 + 4;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* Here lie words above pragmas
*
* @flow
* @format
*/
function foo(bar) {
return bar + 3 + 4;
}
`;
exports[`module-without-docblock.js 1`] = `
function foo(bar) {
return bar + 3 + 4;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/** @format */
function foo(bar) {
return bar + 3 + 4;
}
`;
exports[`module-without-pragma.js 1`] = `
/**
* @flow
*
* Words below the wrong pragma
*/
function foo(bar) {
return bar + 3 + 4;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* Words below the wrong pragma
*
* @format
* @flow
*/
function foo(bar) {
return bar + 3 + 4;
}
`;

View File

@ -0,0 +1 @@
run_spec(__dirname, { insertPragma: true });

View File

@ -0,0 +1,8 @@
function foo(bar) {
return bar + 3 + 4;
}
/**
* Some notes that should not be appended to
*/
const fruit = 'tomatoes';

View File

@ -0,0 +1,10 @@
/**
* Here lie words above pragmas
*
* @flow
* @format
*/
function foo(bar) {
return bar + 3 + 4;
}

View File

@ -0,0 +1,3 @@
function foo(bar) {
return bar + 3 + 4;
}

View File

@ -0,0 +1,9 @@
/**
* @flow
*
* Words below the wrong pragma
*/
function foo(bar) {
return bar + 3 + 4;
}

View File

@ -107,6 +107,19 @@ Default: .prettierignore
exports[`show detailed usage with --help ignore-path (write) 1`] = `Array []`;
exports[`show detailed usage with --help insert-pragma (stderr) 1`] = `""`;
exports[`show detailed usage with --help insert-pragma (stdout) 1`] = `
"--insert-pragma
Insert @format pragma into file's first docblock comment.
Default: false
"
`;
exports[`show detailed usage with --help insert-pragma (write) 1`] = `Array []`;
exports[`show detailed usage with --help jsx-bracket-same-line (stderr) 1`] = `""`;
exports[`show detailed usage with --help jsx-bracket-same-line (stdout) 1`] = `
@ -459,6 +472,8 @@ Other options:
--no-color Do not colorize error messages.
-h, --help <flag> Show CLI usage, or details about the given flag.
Example: --help write
--insert-pragma Insert @format pragma into file's first docblock comment.
Defaults to false.
--require-pragma Require either '@prettier' or '@format' to be present in the file's first docblock comment
in order for it to be formatted.
Defaults to false.
@ -586,6 +601,8 @@ Other options:
--no-color Do not colorize error messages.
-h, --help <flag> Show CLI usage, or details about the given flag.
Example: --help write
--insert-pragma Insert @format pragma into file's first docblock comment.
Defaults to false.
--require-pragma Require either '@prettier' or '@format' to be present in the file's first docblock comment
in order for it to be formatted.
Defaults to false.

449
yarn.lock
View File

@ -279,7 +279,39 @@ babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.0"
babel-core@^6.0.0, babel-core@^6.24.1:
babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
chalk "^1.1.3"
esutils "^2.0.2"
js-tokens "^3.0.2"
babel-core@^6.0.0, babel-core@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
dependencies:
babel-code-frame "^6.26.0"
babel-generator "^6.26.0"
babel-helpers "^6.24.1"
babel-messages "^6.23.0"
babel-register "^6.26.0"
babel-runtime "^6.26.0"
babel-template "^6.26.0"
babel-traverse "^6.26.0"
babel-types "^6.26.0"
babylon "^6.18.0"
convert-source-map "^1.5.0"
debug "^2.6.8"
json5 "^0.5.1"
lodash "^4.17.4"
minimatch "^3.0.4"
path-is-absolute "^1.0.1"
private "^0.1.7"
slash "^1.0.0"
source-map "^0.5.6"
babel-core@^6.24.1:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
dependencies:
@ -316,6 +348,19 @@ babel-generator@^6.18.0, babel-generator@^6.25.0:
source-map "^0.5.0"
trim-right "^1.0.1"
babel-generator@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
dependencies:
babel-messages "^6.23.0"
babel-runtime "^6.26.0"
babel-types "^6.26.0"
detect-indent "^4.0.0"
jsesc "^1.3.0"
lodash "^4.17.4"
source-map "^0.5.6"
trim-right "^1.0.1"
babel-helper-call-delegate@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
@ -391,12 +436,12 @@ babel-helpers@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
babel-jest@^21.0.2:
version "21.0.2"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-21.0.2.tgz#817ea52c23f1c6c4b684d6960968416b6a9e9c6c"
babel-jest@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-21.2.0.tgz#2ce059519a9374a2c46f2455b6fbef5ad75d863e"
dependencies:
babel-plugin-istanbul "^4.0.0"
babel-preset-jest "^21.0.2"
babel-preset-jest "^21.2.0"
babel-messages@^6.23.0:
version "6.23.0"
@ -418,9 +463,13 @@ babel-plugin-istanbul@^4.0.0:
istanbul-lib-instrument "^1.7.2"
test-exclude "^4.1.1"
babel-plugin-jest-hoist@^21.0.2:
version "21.0.2"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.0.2.tgz#cfdce5bca40d772a056cb8528ad159c7bb4bb03d"
babel-plugin-jest-hoist@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006"
babel-plugin-syntax-object-rest-spread@^6.13.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
babel-plugin-transform-es2015-arrow-functions@^6.22.0:
version "6.22.0"
@ -640,11 +689,12 @@ babel-preset-es2015@6.24.1:
babel-plugin-transform-es2015-unicode-regex "^6.24.1"
babel-plugin-transform-regenerator "^6.24.1"
babel-preset-jest@^21.0.2:
version "21.0.2"
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.0.2.tgz#9db25def2329f49eace3f5ea0de42a0b898d12cc"
babel-preset-jest@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz#ff9d2bce08abd98e8a36d9a8a5189b9173b85638"
dependencies:
babel-plugin-jest-hoist "^21.0.2"
babel-plugin-jest-hoist "^21.2.0"
babel-plugin-syntax-object-rest-spread "^6.13.0"
babel-register@^6.24.1:
version "6.24.1"
@ -658,6 +708,18 @@ babel-register@^6.24.1:
mkdirp "^0.5.1"
source-map-support "^0.4.2"
babel-register@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
dependencies:
babel-core "^6.26.0"
babel-runtime "^6.26.0"
core-js "^2.5.0"
home-or-tmp "^2.0.0"
lodash "^4.17.4"
mkdirp "^0.5.1"
source-map-support "^0.4.15"
babel-runtime@^6.18.0, babel-runtime@^6.22.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
@ -665,6 +727,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0:
core-js "^2.4.0"
regenerator-runtime "^0.10.0"
babel-runtime@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
dependencies:
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
@ -675,6 +744,16 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0:
babylon "^6.17.2"
lodash "^4.2.0"
babel-template@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
dependencies:
babel-runtime "^6.26.0"
babel-traverse "^6.26.0"
babel-types "^6.26.0"
babylon "^6.18.0"
lodash "^4.17.4"
babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
@ -689,6 +768,20 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
invariant "^2.2.0"
lodash "^4.2.0"
babel-traverse@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
dependencies:
babel-code-frame "^6.26.0"
babel-messages "^6.23.0"
babel-runtime "^6.26.0"
babel-types "^6.26.0"
babylon "^6.18.0"
debug "^2.6.8"
globals "^9.18.0"
invariant "^2.2.2"
lodash "^4.17.4"
babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
@ -698,6 +791,15 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25
lodash "^4.2.0"
to-fast-properties "^1.0.1"
babel-types@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
dependencies:
babel-runtime "^6.26.0"
esutils "^2.0.2"
lodash "^4.17.4"
to-fast-properties "^1.0.3"
babylon@7.0.0-beta.23:
version "7.0.0-beta.23"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.23.tgz#c7e8e7a389b6f6c6212ceac1a3905c7e73d7e45a"
@ -706,6 +808,10 @@ babylon@^6.13.0, babylon@^6.17.2:
version "6.17.3"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48"
babylon@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@ -1044,7 +1150,7 @@ content-type-parser@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
convert-source-map@^1.1.0, convert-source-map@^1.4.0:
convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
@ -1052,6 +1158,10 @@ core-js@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
core-js@^2.5.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -1209,6 +1319,10 @@ detect-indent@^4.0.0:
dependencies:
repeating "^2.0.0"
detect-newline@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
diacritics-map@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af"
@ -1492,16 +1606,16 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
expect@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-21.1.0.tgz#1c138ec803c72d28cbd10dfe97104966d967c24a"
expect@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b"
dependencies:
ansi-styles "^3.2.0"
jest-diff "^21.1.0"
jest-get-type "^21.0.2"
jest-matcher-utils "^21.1.0"
jest-message-util "^21.1.0"
jest-regex-util "^21.1.0"
jest-diff "^21.2.1"
jest-get-type "^21.2.0"
jest-matcher-utils "^21.2.1"
jest-message-util "^21.2.1"
jest-regex-util "^21.2.0"
extend-shallow@^2.0.1:
version "2.0.1"
@ -1728,7 +1842,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^9.0.0, globals@^9.17.0:
globals@^9.0.0, globals@^9.17.0, globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@ -1971,7 +2085,7 @@ interpret@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
invariant@^2.2.0:
invariant@^2.2.0, invariant@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
dependencies:
@ -2219,15 +2333,15 @@ iterall@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.1.tgz#f7f0af11e9a04ec6426260f5019d9fcca4d50214"
jest-changed-files@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.1.0.tgz#e70f6b33b75d5987f4eae07e35bea5525635f92a"
jest-changed-files@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.2.0.tgz#5dbeecad42f5d88b482334902ce1cba6d9798d29"
dependencies:
throat "^4.0.0"
jest-cli@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.1.0.tgz#4f671885ea3521803c96a1fd95baaa6a1ba8d70f"
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.2.1.tgz#9c528b6629d651911138d228bdb033c157ec8c00"
dependencies:
ansi-escapes "^3.0.0"
chalk "^2.0.1"
@ -2238,17 +2352,17 @@ jest-cli@^21.1.0:
istanbul-lib-coverage "^1.0.1"
istanbul-lib-instrument "^1.4.2"
istanbul-lib-source-maps "^1.1.0"
jest-changed-files "^21.1.0"
jest-config "^21.1.0"
jest-environment-jsdom "^21.1.0"
jest-haste-map "^21.1.0"
jest-message-util "^21.1.0"
jest-regex-util "^21.1.0"
jest-resolve-dependencies "^21.1.0"
jest-runner "^21.1.0"
jest-runtime "^21.1.0"
jest-snapshot "^21.1.0"
jest-util "^21.1.0"
jest-changed-files "^21.2.0"
jest-config "^21.2.1"
jest-environment-jsdom "^21.2.1"
jest-haste-map "^21.2.0"
jest-message-util "^21.2.1"
jest-regex-util "^21.2.0"
jest-resolve-dependencies "^21.2.0"
jest-runner "^21.2.1"
jest-runtime "^21.2.1"
jest-snapshot "^21.2.1"
jest-util "^21.2.1"
micromatch "^2.3.11"
node-notifier "^5.0.2"
pify "^3.0.0"
@ -2259,150 +2373,160 @@ jest-cli@^21.1.0:
worker-farm "^1.3.1"
yargs "^9.0.0"
jest-config@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.1.0.tgz#7ef8778af679de30dad75e355a0dfbb0330b8d2f"
jest-config@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.2.1.tgz#c7586c79ead0bcc1f38c401e55f964f13bf2a480"
dependencies:
chalk "^2.0.1"
glob "^7.1.1"
jest-environment-jsdom "^21.1.0"
jest-environment-node "^21.1.0"
jest-get-type "^21.0.2"
jest-jasmine2 "^21.1.0"
jest-regex-util "^21.1.0"
jest-resolve "^21.1.0"
jest-util "^21.1.0"
jest-validate "^21.1.0"
pretty-format "^21.1.0"
jest-environment-jsdom "^21.2.1"
jest-environment-node "^21.2.1"
jest-get-type "^21.2.0"
jest-jasmine2 "^21.2.1"
jest-regex-util "^21.2.0"
jest-resolve "^21.2.0"
jest-util "^21.2.1"
jest-validate "^21.2.1"
pretty-format "^21.2.1"
jest-diff@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.1.0.tgz#ca4c9d40272a6901dcde6c4c0bb2f568c363cc42"
jest-diff@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.2.1.tgz#46cccb6cab2d02ce98bc314011764bb95b065b4f"
dependencies:
chalk "^2.0.1"
diff "^3.2.0"
jest-get-type "^21.0.2"
pretty-format "^21.1.0"
jest-docblock@21.1.0, jest-docblock@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.1.0.tgz#43154be2441fb91403e36bb35cb791a5017cea81"
jest-get-type "^21.2.0"
pretty-format "^21.2.1"
jest-docblock@^20.0.1:
version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712"
jest-environment-jsdom@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.1.0.tgz#40729a60cd4544625f7d3a33c32bdaad63e57db7"
jest-docblock@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
jest-docblock@^21.3.0-beta.1:
version "21.3.0-beta.1"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.3.0-beta.1.tgz#f264d50ba1fc93cda8ef3ffcd530cef86b332c3d"
dependencies:
jest-mock "^21.1.0"
jest-util "^21.1.0"
detect-newline "^2.1.0"
jest-environment-jsdom@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz#38d9980c8259b2a608ec232deee6289a60d9d5b4"
dependencies:
jest-mock "^21.2.0"
jest-util "^21.2.1"
jsdom "^9.12.0"
jest-environment-node@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.1.0.tgz#a11fd611e8ae6c3e02b785aa1b12a3009f4fd0f1"
jest-environment-node@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.2.1.tgz#98c67df5663c7fbe20f6e792ac2272c740d3b8c8"
dependencies:
jest-mock "^21.1.0"
jest-util "^21.1.0"
jest-mock "^21.2.0"
jest-util "^21.2.1"
jest-get-type@^21.0.2:
version "21.0.2"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.0.2.tgz#304e6b816dd33cd1f47aba0597bcad258a509fc6"
jest-haste-map@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.1.0.tgz#08e7a8c584008d4b790b8dddf7dd3e3db03b75d3"
jest-get-type@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23"
jest-haste-map@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.2.0.tgz#1363f0a8bb4338f24f001806571eff7a4b2ff3d8"
dependencies:
fb-watchman "^2.0.0"
graceful-fs "^4.1.11"
jest-docblock "^21.1.0"
jest-docblock "^21.2.0"
micromatch "^2.3.11"
sane "^2.0.0"
worker-farm "^1.3.1"
jest-jasmine2@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.1.0.tgz#975c3cd3ecd9d50d385bfe3c680dd61979f50c9c"
jest-jasmine2@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz#9cc6fc108accfa97efebce10c4308548a4ea7592"
dependencies:
chalk "^2.0.1"
expect "^21.1.0"
expect "^21.2.1"
graceful-fs "^4.1.11"
jest-diff "^21.1.0"
jest-matcher-utils "^21.1.0"
jest-message-util "^21.1.0"
jest-snapshot "^21.1.0"
jest-diff "^21.2.1"
jest-matcher-utils "^21.2.1"
jest-message-util "^21.2.1"
jest-snapshot "^21.2.1"
p-cancelable "^0.3.0"
jest-matcher-utils@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.1.0.tgz#b02e237b287c58915ce9a5bf3c7138dba95125a7"
jest-matcher-utils@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz#72c826eaba41a093ac2b4565f865eb8475de0f64"
dependencies:
chalk "^2.0.1"
jest-get-type "^21.0.2"
pretty-format "^21.1.0"
jest-get-type "^21.2.0"
pretty-format "^21.2.1"
jest-message-util@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.1.0.tgz#7f9a52535d1a640af0d4c800edde737e14ea0526"
jest-message-util@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.2.1.tgz#bfe5d4692c84c827d1dcf41823795558f0a1acbe"
dependencies:
chalk "^2.0.1"
micromatch "^2.3.11"
slash "^1.0.0"
jest-mock@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.1.0.tgz#c4dddfa893a0b120b72b5ae87c7506745213a790"
jest-mock@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.2.0.tgz#7eb0770e7317968165f61ea2a7281131534b3c0f"
jest-regex-util@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.1.0.tgz#59e4bad74f5ffd62a3835225f9bc1ee3796b5adb"
jest-regex-util@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.2.0.tgz#1b1e33e63143babc3e0f2e6c9b5ba1eb34b2d530"
jest-resolve-dependencies@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.1.0.tgz#9f78852e65d864d04ad0919ac8226b3f1434e7b0"
jest-resolve-dependencies@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz#9e231e371e1a736a1ad4e4b9a843bc72bfe03d09"
dependencies:
jest-regex-util "^21.1.0"
jest-regex-util "^21.2.0"
jest-resolve@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.1.0.tgz#6bb806ca5ad876c250044fe62f298321d2da5c06"
jest-resolve@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.2.0.tgz#068913ad2ba6a20218e5fd32471f3874005de3a6"
dependencies:
browser-resolve "^1.11.2"
chalk "^2.0.1"
is-builtin-module "^1.0.0"
jest-runner@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.1.0.tgz#d7ea7e2fa10ed673d4dd25ba2f3faae2efb89a07"
jest-runner@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.2.1.tgz#194732e3e518bfb3d7cbfc0fd5871246c7e1a467"
dependencies:
jest-config "^21.1.0"
jest-docblock "^21.1.0"
jest-haste-map "^21.1.0"
jest-jasmine2 "^21.1.0"
jest-message-util "^21.1.0"
jest-runtime "^21.1.0"
jest-util "^21.1.0"
jest-config "^21.2.1"
jest-docblock "^21.2.0"
jest-haste-map "^21.2.0"
jest-jasmine2 "^21.2.1"
jest-message-util "^21.2.1"
jest-runtime "^21.2.1"
jest-util "^21.2.1"
pify "^3.0.0"
throat "^4.0.0"
worker-farm "^1.3.1"
jest-runtime@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.1.0.tgz#c9a180a9e06ef046d0ad157dea52355abb7cbad4"
jest-runtime@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.2.1.tgz#99dce15309c670442eee2ebe1ff53a3cbdbbb73e"
dependencies:
babel-core "^6.0.0"
babel-jest "^21.0.2"
babel-jest "^21.2.0"
babel-plugin-istanbul "^4.0.0"
chalk "^2.0.1"
convert-source-map "^1.4.0"
graceful-fs "^4.1.11"
jest-config "^21.1.0"
jest-haste-map "^21.1.0"
jest-regex-util "^21.1.0"
jest-resolve "^21.1.0"
jest-util "^21.1.0"
jest-config "^21.2.1"
jest-haste-map "^21.2.0"
jest-regex-util "^21.2.0"
jest-resolve "^21.2.0"
jest-util "^21.2.1"
json-stable-stringify "^1.0.1"
micromatch "^2.3.11"
slash "^1.0.0"
@ -2410,30 +2534,30 @@ jest-runtime@^21.1.0:
write-file-atomic "^2.1.0"
yargs "^9.0.0"
jest-snapshot@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.1.0.tgz#a5fa9d52847d8f52e19a1df6ccae9de699193ccc"
jest-snapshot@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.2.1.tgz#29e49f16202416e47343e757e5eff948c07fd7b0"
dependencies:
chalk "^2.0.1"
jest-diff "^21.1.0"
jest-matcher-utils "^21.1.0"
jest-diff "^21.2.1"
jest-matcher-utils "^21.2.1"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
pretty-format "^21.1.0"
pretty-format "^21.2.1"
jest-util@^21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.1.0.tgz#f92ff756422cc0609ddf5a9bfa4d34b2835d8c30"
jest-util@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.2.1.tgz#a274b2f726b0897494d694a6c3d6a61ab819bb78"
dependencies:
callsites "^2.0.0"
chalk "^2.0.1"
graceful-fs "^4.1.11"
jest-message-util "^21.1.0"
jest-mock "^21.1.0"
jest-validate "^21.1.0"
jest-message-util "^21.2.1"
jest-mock "^21.2.0"
jest-validate "^21.2.1"
mkdirp "^0.5.1"
jest-validate@21.1.0, jest-validate@^21.1.0:
jest-validate@21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.1.0.tgz#39d01115544a758bce49f221a5fcbb24ebdecc65"
dependencies:
@ -2442,6 +2566,15 @@ jest-validate@21.1.0, jest-validate@^21.1.0:
leven "^2.1.0"
pretty-format "^21.1.0"
jest-validate@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7"
dependencies:
chalk "^2.0.1"
jest-get-type "^21.2.0"
leven "^2.1.0"
pretty-format "^21.2.1"
jest@21.1.0:
version "21.1.0"
resolved "https://registry.yarnpkg.com/jest/-/jest-21.1.0.tgz#77c7baa8aa9e8bace7fe41a30d748ab56e89476a"
@ -2456,6 +2589,10 @@ js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.7.0, js-yaml@^3.8.1, js-yaml@^3.8.4, js-yaml@^3.9.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
@ -3083,7 +3220,7 @@ path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
path-is-absolute@^1.0.0:
path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@ -3229,7 +3366,14 @@ pretty-format@^21.1.0:
ansi-regex "^3.0.0"
ansi-styles "^3.2.0"
private@^0.1.6:
pretty-format@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36"
dependencies:
ansi-regex "^3.0.0"
ansi-styles "^3.2.0"
private@^0.1.6, private@^0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
@ -3378,6 +3522,10 @@ regenerator-runtime@^0.10.0:
version "0.10.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
regenerator-runtime@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
regenerator-transform@0.9.11:
version "0.9.11"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
@ -3636,8 +3784,8 @@ safe-buffer@^5.1.0:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223"
sane@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/sane/-/sane-2.0.0.tgz#99cb79f21f4a53a69d4d0cd957c2db04024b8eb2"
version "2.2.0"
resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56"
dependencies:
anymatch "^1.3.0"
exec-sh "^0.2.0"
@ -3645,7 +3793,7 @@ sane@^2.0.0:
minimatch "^3.0.2"
minimist "^1.1.1"
walker "~1.0.5"
watch "~0.10.0"
watch "~0.18.0"
optionalDependencies:
fsevents "^1.1.1"
@ -3735,6 +3883,12 @@ source-map-support@^0.4.0, source-map-support@^0.4.2:
dependencies:
source-map "^0.5.6"
source-map-support@^0.4.15:
version "0.4.18"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
dependencies:
source-map "^0.5.6"
source-map@^0.4.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
@ -3975,7 +4129,7 @@ to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
to-fast-properties@^1.0.1:
to-fast-properties@^1.0.1, to-fast-properties@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
@ -4146,9 +4300,12 @@ walker@~1.0.5:
dependencies:
makeerror "1.0.x"
watch@~0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"
watch@~0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
dependencies:
exec-sh "^0.2.0"
minimist "^1.2.0"
watchpack@^1.3.1:
version "1.3.1"
@ -4323,8 +4480,8 @@ yargs@^6.0.0:
yargs-parser "^4.2.0"
yargs@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.0.tgz#efe5b1ad3f94bdc20423411b90628eeec0b25f3c"
version "9.0.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c"
dependencies:
camelcase "^4.1.0"
cliui "^3.2.0"