diff --git a/package-lock.json b/package-lock.json index 40b42317c5..5cae29ae80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -275,7 +275,7 @@ "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -290,7 +290,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -546,7 +546,7 @@ "es6-promise": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha1-iBHpCRXZoNujYnTwskLb2nj5ySo=", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", "dev": true }, "escape-string-regexp": { @@ -1932,7 +1932,7 @@ "event-kit": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/event-kit/-/event-kit-2.4.0.tgz", - "integrity": "sha1-cYqvIt92ZwAkrWaSJIPhu6BUTzM=" + "integrity": "sha512-ZXd9jxUoc/f/zdLdR3OUcCzT84WnpaNWefquLyE125akIC90sDs8S3T/qihliuVsaj7Osc0z8lLL2fjooE9Z4A==" }, "exit": { "version": "0.1.2", @@ -2896,7 +2896,7 @@ "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "http-signature": { @@ -3362,7 +3362,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "1.1.8" } @@ -3431,7 +3431,7 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -3549,11 +3549,10 @@ } }, "pathwatcher": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/pathwatcher/-/pathwatcher-8.0.1.tgz", + "version": "https://registry.npmjs.org/pathwatcher/-/pathwatcher-8.0.1.tgz", "integrity": "sha1-UaLOKgHbbDLYZ/ZYXvKEvmvQo64=", "requires": { - "async": "0.2.10", + "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "emissary": "1.3.3", "event-kit": "2.4.0", "fs-plus": "3.0.1", @@ -3564,8 +3563,7 @@ }, "dependencies": { "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" } } @@ -3788,13 +3786,13 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "serializable": { @@ -3968,10 +3966,2822 @@ }, "superstring": { "version": "2.2.6", - "resolved": "https://registry.npmjs.org/superstring/-/superstring-2.2.6.tgz", - "integrity": "sha1-awp79Aw6nQmCyLrDpk3WI3o4FIc=", "requires": { - "nan": "2.6.2" + "nan": "2.7.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true + }, + "acorn": { + "version": "4.0.13", + "bundled": true + }, + "acorn-to-esprima": { + "version": "2.0.8", + "bundled": true + }, + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alter": { + "version": "0.2.0", + "bundled": true, + "requires": { + "stable": "0.1.6" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "argparse": { + "version": "1.0.9", + "bundled": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "assertion-error": { + "version": "1.0.0", + "bundled": true + }, + "ast-traverse": { + "version": "0.1.1", + "bundled": true + }, + "ast-types": { + "version": "0.9.6", + "bundled": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + } + } + }, + "babel-core": { + "version": "5.8.38", + "bundled": true, + "requires": { + "babel-plugin-constant-folding": "1.0.1", + "babel-plugin-dead-code-elimination": "1.0.2", + "babel-plugin-eval": "1.0.1", + "babel-plugin-inline-environment-variables": "1.0.1", + "babel-plugin-jscript": "1.0.4", + "babel-plugin-member-expression-literals": "1.0.1", + "babel-plugin-property-literals": "1.0.1", + "babel-plugin-proto-to-assign": "1.0.4", + "babel-plugin-react-constant-elements": "1.0.3", + "babel-plugin-react-display-name": "1.0.3", + "babel-plugin-remove-console": "1.0.1", + "babel-plugin-remove-debugger": "1.0.1", + "babel-plugin-runtime": "1.0.7", + "babel-plugin-undeclared-variables-check": "1.0.2", + "babel-plugin-undefined-to-void": "1.1.6", + "babylon": "5.8.38", + "bluebird": "2.11.0", + "chalk": "1.1.3", + "convert-source-map": "1.5.0", + "core-js": "1.2.7", + "debug": "2.2.0", + "detect-indent": "3.0.1", + "esutils": "2.0.2", + "fs-readdir-recursive": "0.1.2", + "globals": "6.4.1", + "home-or-tmp": "1.0.0", + "is-integer": "1.0.7", + "js-tokens": "1.0.1", + "json5": "0.4.0", + "lodash": "3.10.1", + "minimatch": "2.0.10", + "output-file-sync": "1.1.2", + "path-exists": "1.0.0", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "regenerator": "0.8.40", + "regexpu": "1.3.0", + "repeating": "1.1.3", + "resolve": "1.4.0", + "shebang-regex": "1.0.0", + "slash": "1.0.0", + "source-map": "0.5.7", + "source-map-support": "0.2.10", + "to-fast-properties": "1.0.3", + "trim-right": "1.0.1", + "try-resolve": "1.0.1" + }, + "dependencies": { + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "globals": { + "version": "6.4.1", + "bundled": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "minimatch": { + "version": "2.0.10", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-constant-folding": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "bundled": true + }, + "babel-plugin-eval": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "bundled": true + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-property-literals": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-proto-to-assign": { + "version": "1.0.4", + "bundled": true, + "requires": { + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "bundled": true + } + } + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "bundled": true + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "bundled": true + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "bundled": true + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "bundled": true + }, + "babel-plugin-undeclared-variables-check": { + "version": "1.0.2", + "bundled": true, + "requires": { + "leven": "1.0.2" + } + }, + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "bundled": true + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.5.1", + "bundled": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "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" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "ms": { + "version": "2.0.0", + "bundled": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + }, + "dependencies": { + "esutils": { + "version": "2.0.2", + "bundled": true + } + } + }, + "babylon": { + "version": "5.8.38", + "bundled": true + }, + "backoff": { + "version": "2.3.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "2.11.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "breakable": { + "version": "1.0.0", + "bundled": true + }, + "bunyan": { + "version": "1.8.1", + "bundled": true, + "requires": { + "dtrace-provider": "0.6.0", + "moment": "2.18.1", + "mv": "2.1.1", + "safe-json-stringify": "1.0.4" + } + }, + "camelcase": { + "version": "2.1.1", + "bundled": true + }, + "carrier": { + "version": "0.1.7", + "bundled": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chai": { + "version": "2.3.0", + "bundled": true, + "requires": { + "assertion-error": "1.0.0", + "deep-eql": "0.1.3" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.2", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "cli-width": { + "version": "1.1.1", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "0.1.19", + "bundled": true + }, + "cmdln": { + "version": "1.3.1", + "bundled": true, + "requires": { + "assert-plus": "0.1.3", + "dashdash": "1.3.2", + "extsprintf": "1.0.2", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.3", + "bundled": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "commander": { + "version": "2.3.0", + "bundled": true + }, + "commoner": { + "version": "0.10.8", + "bundled": true, + "requires": { + "commander": "2.11.0", + "detective": "4.5.0", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.7", + "q": "1.5.0", + "recast": "0.11.23" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "bundled": true + }, + "esprima": { + "version": "3.1.3", + "bundled": true + }, + "glob": { + "version": "5.0.15", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "recast": { + "version": "0.11.23", + "bundled": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.7", + "source-map": "0.5.7" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + } + }, + "convert-source-map": { + "version": "1.5.0", + "bundled": true + }, + "core-js": { + "version": "1.2.7", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "0.10.30" + } + }, + "dashdash": { + "version": "1.3.2", + "bundled": true, + "requires": { + "assert-plus": "0.1.2" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.2", + "bundled": true + } + } + }, + "debug": { + "version": "2.2.0", + "bundled": true, + "requires": { + "ms": "0.7.1" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "deep-eql": { + "version": "0.1.3", + "bundled": true, + "requires": { + "type-detect": "0.1.1" + } + }, + "deep-is": { + "version": "0.1.3", + "bundled": true + }, + "defined": { + "version": "1.0.0", + "bundled": true + }, + "defs": { + "version": "1.1.1", + "bundled": true, + "requires": { + "alter": "0.2.0", + "ast-traverse": "0.1.1", + "breakable": "1.0.0", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "simple-fmt": "0.1.0", + "simple-is": "0.2.0", + "stringmap": "0.2.2", + "stringset": "0.2.1", + "tryor": "0.1.2", + "yargs": "3.27.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "bundled": true + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "bundled": true + }, + "wordwrap": { + "version": "0.0.2", + "bundled": true + }, + "yargs": { + "version": "3.27.0", + "bundled": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } + }, + "deglob": { + "version": "1.1.2", + "bundled": true, + "requires": { + "find-root": "1.1.0", + "glob": "7.1.2", + "ignore": "3.3.5", + "pkg-config": "1.1.1", + "run-parallel": "1.1.6", + "uniq": "1.0.1", + "xtend": "4.0.1" + }, + "dependencies": { + "find-root": { + "version": "1.1.0", + "bundled": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "detect-indent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "detective": { + "version": "4.5.0", + "bundled": true, + "requires": { + "acorn": "4.0.13", + "defined": "1.0.0" + } + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "2.0.6", + "wrappy": "1.0.2" + } + }, + "diff": { + "version": "1.4.0", + "bundled": true + }, + "disparity": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "diff": "1.4.0" + } + }, + "doctrine": { + "version": "0.6.4", + "bundled": true, + "requires": { + "esutils": "1.1.6", + "isarray": "0.0.1" + } + }, + "dtrace-provider": { + "version": "0.6.0", + "bundled": true, + "requires": { + "nan": "2.7.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "editorconfig": { + "version": "0.13.3", + "bundled": true, + "requires": { + "bluebird": "3.5.0", + "commander": "2.11.0", + "lru-cache": "3.2.0", + "semver": "5.4.1", + "sigmund": "1.0.1" + }, + "dependencies": { + "bluebird": { + "version": "3.5.0", + "bundled": true + }, + "commander": { + "version": "2.11.0", + "bundled": true + }, + "lru-cache": { + "version": "3.2.0", + "bundled": true, + "requires": { + "pseudomap": "1.0.2" + } + } + } + }, + "es5-ext": { + "version": "0.10.30", + "bundled": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.1", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.2", + "bundled": true + }, + "escope": { + "version": "3.6.0", + "bundled": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "esformatter": { + "version": "0.8.2", + "bundled": true, + "requires": { + "debug": "0.7.4", + "disparity": "2.0.0", + "espree": "2.2.5", + "glob": "5.0.15", + "minimist": "1.2.0", + "mout": "1.0.0", + "npm-run": "2.0.0", + "resolve": "1.4.0", + "rocambole": "0.7.0", + "rocambole-indent": "2.0.4", + "rocambole-linebreak": "1.0.2", + "rocambole-node": "1.0.0", + "rocambole-token": "1.2.1", + "rocambole-whitespace": "1.0.0", + "stdin": "0.0.1", + "strip-json-comments": "0.1.3", + "supports-color": "1.3.1", + "user-home": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "bundled": true + }, + "glob": { + "version": "5.0.15", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "strip-json-comments": { + "version": "0.1.3", + "bundled": true + }, + "supports-color": { + "version": "1.3.1", + "bundled": true + }, + "user-home": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "1.0.2" + } + } + } + }, + "esformatter-eol-last": { + "version": "1.0.0", + "bundled": true, + "requires": { + "string.prototype.endswith": "0.2.0" + } + }, + "esformatter-ignore": { + "version": "0.1.3", + "bundled": true + }, + "esformatter-jsx": { + "version": "2.3.11", + "bundled": true, + "requires": { + "babel-core": "5.8.38", + "esformatter-ignore": "0.1.3", + "extend": "2.0.1", + "fresh-falafel": "1.2.0", + "js-beautify": "1.6.14" + } + }, + "esformatter-literal-notation": { + "version": "1.0.1", + "bundled": true, + "requires": { + "rocambole": "0.3.6", + "rocambole-token": "1.2.1" + }, + "dependencies": { + "esprima": { + "version": "1.0.4", + "bundled": true + }, + "rocambole": { + "version": "0.3.6", + "bundled": true, + "requires": { + "esprima": "1.0.4" + } + } + } + }, + "esformatter-parser": { + "version": "1.0.0", + "bundled": true, + "requires": { + "acorn-to-esprima": "2.0.8", + "babel-traverse": "6.26.0", + "babylon": "6.18.0", + "rocambole": "0.7.0" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "bundled": true + } + } + }, + "esformatter-quotes": { + "version": "1.1.0", + "bundled": true + }, + "esformatter-semicolon-first": { + "version": "1.2.0", + "bundled": true, + "requires": { + "esformatter-parser": "1.0.0", + "rocambole": "0.7.0", + "rocambole-linebreak": "1.0.2", + "rocambole-token": "1.2.1" + } + }, + "esformatter-spaced-lined-comment": { + "version": "2.0.1", + "bundled": true + }, + "eslint": { + "version": "0.24.1", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.2.0", + "doctrine": "0.6.4", + "escape-string-regexp": "1.0.2", + "escope": "3.6.0", + "espree": "2.2.5", + "estraverse": "4.2.0", + "estraverse-fb": "1.3.2", + "globals": "8.18.0", + "inquirer": "0.8.5", + "is-my-json-valid": "2.16.1", + "js-yaml": "3.10.0", + "minimatch": "2.0.10", + "mkdirp": "0.5.1", + "object-assign": "2.1.1", + "optionator": "0.5.0", + "path-is-absolute": "1.0.1", + "strip-json-comments": "1.0.4", + "text-table": "0.2.0", + "user-home": "1.1.1", + "xml-escape": "1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "2.0.10", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "eslint-config-standard": { + "version": "3.4.1", + "bundled": true + }, + "eslint-config-standard-react": { + "version": "1.0.1", + "bundled": true + }, + "eslint-plugin-react": { + "version": "2.7.1", + "bundled": true + }, + "espree": { + "version": "2.2.5", + "bundled": true + }, + "esrecurse": { + "version": "4.2.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "bundled": true + } + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "estraverse-fb": { + "version": "1.3.2", + "bundled": true + }, + "esutils": { + "version": "1.1.6", + "bundled": true + }, + "event-emitter": { + "version": "0.3.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "extend": { + "version": "2.0.1", + "bundled": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "fast-levenshtein": { + "version": "1.0.7", + "bundled": true + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + } + } + }, + "find-root": { + "version": "0.1.2", + "bundled": true + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "fresh-falafel": { + "version": "1.2.0", + "bundled": true, + "requires": { + "acorn": "1.2.2", + "foreach": "2.0.5", + "isarray": "0.0.1", + "object-keys": "1.0.11" + }, + "dependencies": { + "acorn": { + "version": "1.2.2", + "bundled": true + } + } + }, + "fs-readdir-recursive": { + "version": "0.1.2", + "bundled": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.4.5" + } + }, + "generate-function": { + "version": "2.0.0", + "bundled": true + }, + "generate-object-property": { + "version": "1.2.0", + "bundled": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-stdin": { + "version": "4.0.1", + "bundled": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "3.2.11", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "globals": { + "version": "8.18.0", + "bundled": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "growl": { + "version": "1.9.2", + "bundled": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "hogan.js": { + "version": "2.0.0", + "bundled": true + }, + "home-or-tmp": { + "version": "1.0.0", + "bundled": true, + "requires": { + "os-tmpdir": "1.0.2", + "user-home": "1.1.1" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + }, + "dependencies": { + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "ignore": { + "version": "3.3.5", + "bundled": true + }, + "in-publish": { + "version": "2.0.0", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true + }, + "inquirer": { + "version": "0.8.5", + "bundled": true, + "requires": { + "ansi-regex": "1.1.1", + "chalk": "1.1.3", + "cli-width": "1.1.1", + "figures": "1.7.0", + "lodash": "3.10.1", + "readline2": "0.1.1", + "rx": "2.5.3", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "1.1.1", + "bundled": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + } + } + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "is-buffer": { + "version": "1.1.5", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-integer": { + "version": "1.0.7", + "bundled": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "bundled": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-property": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "jade": { + "version": "0.26.3", + "bundled": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "bundled": true + }, + "mkdirp": { + "version": "0.3.0", + "bundled": true + } + } + }, + "js-beautify": { + "version": "1.6.14", + "bundled": true, + "requires": { + "config-chain": "1.1.11", + "editorconfig": "0.13.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6" + } + }, + "js-tokens": { + "version": "1.0.1", + "bundled": true + }, + "js-yaml": { + "version": "3.10.0", + "bundled": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "bundled": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "jsesc": { + "version": "0.5.0", + "bundled": true + }, + "json-schema": { + "version": "0.2.2", + "bundled": true + }, + "json5": { + "version": "0.4.0", + "bundled": true + }, + "jsonpointer": { + "version": "4.0.1", + "bundled": true + }, + "jsprim": { + "version": "0.5.1", + "bundled": true, + "requires": { + "extsprintf": "1.0.2", + "json-schema": "0.2.2", + "verror": "1.3.6" + } + }, + "keep-alive-agent": { + "version": "0.0.1", + "bundled": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "leven": { + "version": "1.0.2", + "bundled": true + }, + "levn": { + "version": "0.2.5", + "bundled": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true + }, + "lomstream": { + "version": "1.1.0", + "bundled": true, + "requires": { + "assert-plus": "0.1.5", + "extsprintf": "1.3.0", + "vstream": "0.1.0" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + } + } + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "3.0.2" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "bundled": true + } + } + }, + "lru-cache": { + "version": "2.7.3", + "bundled": true + }, + "lstream": { + "version": "0.0.4", + "bundled": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "manta": { + "version": "3.0.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "backoff": "2.3.0", + "bunyan": "1.8.1", + "clone": "0.1.19", + "cmdln": "1.3.1", + "dashdash": "1.3.2", + "extsprintf": "1.3.0", + "hogan.js": "2.0.0", + "jsprim": "1.4.1", + "lomstream": "1.1.0", + "lstream": "0.0.4", + "mime": "1.2.11", + "moment": "2.13.0", + "once": "1.3.3", + "path-platform": "0.0.1", + "progbar": "1.2.0", + "readable-stream": "1.1.14", + "restify-clients": "1.3.3", + "showdown": "1.4.4", + "smartdc-auth": "2.5.5", + "tar": "2.2.1", + "uuid": "2.0.3", + "vasync": "1.6.4", + "verror": "1.10.0", + "watershed": "0.3.3" + }, + "dependencies": { + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "moment": { + "version": "2.13.0", + "bundled": true + }, + "once": { + "version": "1.3.3", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "vasync": { + "version": "1.6.4", + "bundled": true, + "requires": { + "verror": "1.6.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "bundled": true + }, + "verror": { + "version": "1.6.0", + "bundled": true, + "requires": { + "extsprintf": "1.2.0" + } + } + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + } + } + }, + "mime": { + "version": "1.2.11", + "bundled": true + }, + "minimatch": { + "version": "0.3.0", + "bundled": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "2.5.3", + "bundled": true, + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + } + }, + "moment": { + "version": "2.18.1", + "bundled": true, + "optional": true + }, + "mooremachine": { + "version": "2.2.0", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "dtrace-provider": "0.8.5" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "dtrace-provider": { + "version": "0.8.5", + "bundled": true, + "optional": true, + "requires": { + "nan": "2.7.0" + } + } + } + }, + "mout": { + "version": "1.0.0", + "bundled": true + }, + "ms": { + "version": "0.7.1", + "bundled": true + }, + "mute-stream": { + "version": "0.0.4", + "bundled": true + }, + "mv": { + "version": "2.1.1", + "bundled": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + } + }, + "nan": { + "version": "2.7.0", + "bundled": true + }, + "ncp": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-uuid": { + "version": "1.4.1", + "bundled": true + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.0" + } + }, + "npm-path": { + "version": "1.1.0", + "bundled": true, + "requires": { + "which": "1.3.0" + } + }, + "npm-run": { + "version": "2.0.0", + "bundled": true, + "requires": { + "minimist": "1.2.0", + "npm-path": "1.1.0", + "npm-which": "2.0.0", + "serializerr": "1.0.3", + "spawn-sync": "1.0.15", + "sync-exec": "0.5.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "npm-which": { + "version": "2.0.0", + "bundled": true, + "requires": { + "commander": "2.3.0", + "npm-path": "1.1.0", + "which": "1.3.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "2.1.1", + "bundled": true + }, + "object-keys": { + "version": "1.0.11", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optionator": { + "version": "0.5.0", + "bundled": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "1.0.7", + "levn": "0.2.5", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-shim": { + "version": "0.1.3", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "output-file-sync": { + "version": "1.1.2", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "bundled": true + } + } + }, + "path-exists": { + "version": "1.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-platform": { + "version": "0.0.1", + "bundled": true + }, + "pkg-config": { + "version": "1.1.1", + "bundled": true, + "requires": { + "debug-log": "1.0.1", + "find-root": "1.1.0", + "xtend": "4.0.1" + }, + "dependencies": { + "find-root": { + "version": "1.1.0", + "bundled": true + } + } + }, + "posix-getopt": { + "version": "1.0.0", + "bundled": true + }, + "precond": { + "version": "0.2.3", + "bundled": true + }, + "prelude-ls": { + "version": "1.1.2", + "bundled": true + }, + "private": { + "version": "0.1.7", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "progbar": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "0.1.5", + "readable-stream": "1.0.34", + "sprintf": "0.1.5" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "bundled": true + }, + "readable-stream": { + "version": "1.0.34", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } + } + }, + "proto-list": { + "version": "1.2.4", + "bundled": true + }, + "protochain": { + "version": "1.0.5", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "q": { + "version": "1.5.0", + "bundled": true + }, + "random-seed": { + "version": "0.2.0", + "bundled": true + }, + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readline2": { + "version": "0.1.1", + "bundled": true, + "requires": { + "mute-stream": "0.0.4", + "strip-ansi": "2.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "1.1.1", + "bundled": true + }, + "strip-ansi": { + "version": "2.0.1", + "bundled": true, + "requires": { + "ansi-regex": "1.1.1" + } + } + } + }, + "recast": { + "version": "0.10.33", + "bundled": true, + "requires": { + "ast-types": "0.8.12", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.7", + "source-map": "0.5.7" + }, + "dependencies": { + "ast-types": { + "version": "0.8.12", + "bundled": true + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "bundled": true + } + } + }, + "regenerate": { + "version": "1.3.2", + "bundled": true + }, + "regenerator": { + "version": "0.8.40", + "bundled": true, + "requires": { + "commoner": "0.10.8", + "defs": "1.1.1", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.7", + "recast": "0.10.33", + "through": "2.3.8" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "bundled": true + } + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "bundled": true + }, + "regexpu": { + "version": "1.3.0", + "bundled": true, + "requires": { + "esprima": "2.7.3", + "recast": "0.10.33", + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "bundled": true + } + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "1.1.3", + "bundled": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "resolve": { + "version": "1.4.0", + "bundled": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "restify-clients": { + "version": "1.3.3", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "backoff": "2.5.0", + "bunyan": "1.8.1", + "dtrace-provider": "0.6.0", + "keep-alive-agent": "0.0.1", + "lodash": "4.17.4", + "lru-cache": "4.1.1", + "mime": "1.4.0", + "node-uuid": "1.4.8", + "once": "1.4.0", + "restify-errors": "3.1.0", + "semver": "5.4.1", + "tunnel-agent": "0.4.3" + }, + "dependencies": { + "backoff": { + "version": "2.5.0", + "bundled": true, + "requires": { + "precond": "0.2.3" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "mime": { + "version": "1.4.0", + "bundled": true + }, + "node-uuid": { + "version": "1.4.8", + "bundled": true + } + } + }, + "restify-errors": { + "version": "3.1.0", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "lodash": "3.10.1", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.4.5", + "bundled": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "rocambole": { + "version": "0.7.0", + "bundled": true, + "requires": { + "esprima": "2.7.3" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "bundled": true + } + } + }, + "rocambole-indent": { + "version": "2.0.4", + "bundled": true, + "requires": { + "debug": "2.2.0", + "mout": "0.11.1", + "rocambole-token": "1.2.1" + }, + "dependencies": { + "mout": { + "version": "0.11.1", + "bundled": true + } + } + }, + "rocambole-linebreak": { + "version": "1.0.2", + "bundled": true, + "requires": { + "debug": "2.2.0", + "rocambole-token": "1.2.1", + "semver": "4.3.6" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "bundled": true + } + } + }, + "rocambole-node": { + "version": "1.0.0", + "bundled": true + }, + "rocambole-token": { + "version": "1.2.1", + "bundled": true + }, + "rocambole-whitespace": { + "version": "1.0.0", + "bundled": true, + "requires": { + "debug": "2.2.0", + "repeat-string": "1.6.1", + "rocambole-token": "1.2.1" + } + }, + "run-parallel": { + "version": "1.1.6", + "bundled": true + }, + "rx": { + "version": "2.5.3", + "bundled": true + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safe-json-stringify": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "serializerr": { + "version": "1.0.3", + "bundled": true, + "requires": { + "protochain": "1.0.5" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "showdown": { + "version": "1.4.4", + "bundled": true, + "requires": { + "yargs": "3.32.0" + } + }, + "sigmund": { + "version": "1.0.1", + "bundled": true + }, + "simple-fmt": { + "version": "0.1.0", + "bundled": true + }, + "simple-is": { + "version": "0.2.0", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "smartdc-auth": { + "version": "2.5.5", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "bunyan": "1.5.1", + "clone": "0.1.5", + "dashdash": "1.10.1", + "http-signature": "1.2.0", + "once": "1.3.0", + "sshpk": "1.13.1", + "sshpk-agent": "1.6.1", + "vasync": "1.4.3" + }, + "dependencies": { + "bunyan": { + "version": "1.5.1", + "bundled": true, + "requires": { + "dtrace-provider": "0.6.0", + "mv": "2.1.1", + "safe-json-stringify": "1.0.4" + } + }, + "clone": { + "version": "0.1.5", + "bundled": true + }, + "dashdash": { + "version": "1.10.1", + "bundled": true, + "requires": { + "assert-plus": "0.1.5" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "bundled": true + } + } + }, + "extsprintf": { + "version": "1.0.0", + "bundled": true + }, + "jsprim": { + "version": "0.3.0", + "bundled": true, + "requires": { + "extsprintf": "1.0.0", + "json-schema": "0.2.2", + "verror": "1.3.3" + }, + "dependencies": { + "verror": { + "version": "1.3.3", + "bundled": true, + "requires": { + "extsprintf": "1.0.0" + } + } + } + }, + "once": { + "version": "1.3.0", + "bundled": true + }, + "vasync": { + "version": "1.4.3", + "bundled": true, + "requires": { + "jsprim": "0.3.0", + "verror": "1.1.0" + } + }, + "verror": { + "version": "1.1.0", + "bundled": true, + "requires": { + "extsprintf": "1.0.0" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "source-map-support": { + "version": "0.2.10", + "bundled": true, + "requires": { + "source-map": "0.1.32" + }, + "dependencies": { + "source-map": { + "version": "0.1.32", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "spawn-sync": { + "version": "1.0.15", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "os-shim": "0.1.3" + } + }, + "sprintf": { + "version": "0.1.5", + "bundled": true + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + } + } + }, + "sshpk-agent": { + "version": "1.6.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "mooremachine": "2.2.0", + "readable-stream": "2.3.3", + "sshpk": "1.13.1", + "verror": "1.10.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + } + } + }, + "stable": { + "version": "0.1.6", + "bundled": true + }, + "stackvis": { + "version": "0.4.0", + "bundled": true, + "requires": { + "bunyan": "1.8.1", + "carrier": "0.1.7", + "hogan.js": "2.0.0", + "jsprim": "0.5.1", + "manta": "3.0.0", + "node-uuid": "1.4.1", + "posix-getopt": "1.0.0", + "vasync": "1.4.0", + "verror": "1.3.6" + } + }, + "standard": { + "version": "4.5.4", + "bundled": true, + "requires": { + "deglob": "1.1.2", + "dezalgo": "1.0.3", + "eslint": "0.24.1", + "eslint-config-standard": "3.4.1", + "eslint-config-standard-react": "1.0.1", + "eslint-plugin-react": "2.7.1", + "find-root": "0.1.2", + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "pkg-config": "1.1.1", + "standard-format": "1.6.10", + "xtend": "4.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "standard-format": { + "version": "1.6.10", + "bundled": true, + "requires": { + "deglob": "1.1.2", + "esformatter": "0.8.2", + "esformatter-eol-last": "1.0.0", + "esformatter-jsx": "2.3.11", + "esformatter-literal-notation": "1.0.1", + "esformatter-quotes": "1.1.0", + "esformatter-semicolon-first": "1.2.0", + "esformatter-spaced-lined-comment": "2.0.1", + "minimist": "1.2.0", + "stdin": "0.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "stdin": { + "version": "0.0.1", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string.prototype.endswith": { + "version": "0.2.0", + "bundled": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + }, + "stringmap": { + "version": "0.2.2", + "bundled": true + }, + "stringset": { + "version": "0.2.1", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "bundled": true + }, + "supports-color": { + "version": "1.2.0", + "bundled": true + }, + "sync-exec": { + "version": "0.5.0", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "temp": { + "version": "0.8.3", + "bundled": true, + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-iso-string": { + "version": "0.0.2", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "try-resolve": { + "version": "1.0.1", + "bundled": true + }, + "tryor": { + "version": "0.1.2", + "bundled": true + }, + "tunnel-agent": { + "version": "0.4.3", + "bundled": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "bundled": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "0.1.1", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "uniq": { + "version": "1.0.1", + "bundled": true + }, + "user-home": { + "version": "1.1.1", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "2.0.3", + "bundled": true + }, + "vasync": { + "version": "1.4.0", + "bundled": true, + "requires": { + "jsprim": "0.3.0", + "verror": "1.1.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.0.0", + "bundled": true + }, + "jsprim": { + "version": "0.3.0", + "bundled": true, + "requires": { + "extsprintf": "1.0.0", + "json-schema": "0.2.2", + "verror": "1.3.3" + }, + "dependencies": { + "verror": { + "version": "1.3.3", + "bundled": true, + "requires": { + "extsprintf": "1.0.0" + } + } + } + }, + "verror": { + "version": "1.1.0", + "bundled": true, + "requires": { + "extsprintf": "1.0.0" + } + } + } + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "vstream": { + "version": "0.1.0", + "bundled": true, + "requires": { + "assert-plus": "0.1.5", + "extsprintf": "1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "bundled": true + }, + "extsprintf": { + "version": "1.2.0", + "bundled": true + } + } + }, + "watershed": { + "version": "0.3.3", + "bundled": true, + "requires": { + "dtrace-provider": "0.6.0", + "readable-stream": "1.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.2", + "bundled": true + } + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "bundled": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xml-escape": { + "version": "1.0.0", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "3.32.0", + "bundled": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } } }, "supports-color": { @@ -4077,7 +6887,7 @@ "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "dev": true }, "validate-npm-package-license": { diff --git a/spec/text-buffer-io-spec.js b/spec/text-buffer-io-spec.js index 249e0c8ee7..056b1aaf6f 100644 --- a/spec/text-buffer-io-spec.js +++ b/spec/text-buffer-io-spec.js @@ -255,7 +255,7 @@ describe('TextBuffer IO', () => { expect(buffer.isModified()).toBe(true) const changeEvents = [] - buffer.onWillChange((event) => changeEvents.push(['will-change', event])) + buffer.onWillChange(() => changeEvents.push(['will-change'])) buffer.onDidChange((event) => changeEvents.push(['did-change', event])) buffer.onDidChangeText((event) => changeEvents.push(['did-change-text', event])) @@ -877,9 +877,9 @@ describe('TextBuffer IO', () => { const events = [] buffer.onWillReload((event) => events.push(['will-reload'])) - buffer.onWillChange((event) => { + buffer.onWillChange(() => { expect(buffer.getText()).toEqual('abcde') - events.push(['will-change', event]) + events.push(['will-change']) }) buffer.onDidChange((event) => { expect(buffer.getText()).toEqual(newText) @@ -909,12 +909,7 @@ describe('TextBuffer IO', () => { 'will-reload' ], [ - 'will-change', { - oldRange: Range(Point(0, 0), Point(0, 5)), - newRange: Range(Point(0, 0), Point(0, newText.length)), - oldText: 'abcde', - newText: newText - } + 'will-change' ], [ 'did-change', { @@ -951,11 +946,11 @@ describe('TextBuffer IO', () => { }) }) - it('passes the smallest possible change event to onWillChange and onDidChange listeners', (done) => { + it('passes the smallest possible change event to onDidChange listeners', (done) => { fs.writeFileSync(buffer.getPath(), 'abc de ') const events = [] - buffer.onWillChange((event) => events.push(['will-change', event])) + buffer.onWillChange(() => events.push(['will-change'])) buffer.onDidChange((event) => events.push(['did-change', event])) buffer.onDidChangeText((event) => events.push(['did-change-text', event])) @@ -966,12 +961,7 @@ describe('TextBuffer IO', () => { expect(toPlainObject(events)).toEqual(toPlainObject([ [ - 'will-change', { - oldRange: Range(Point(0, 3), Point(0, 5)), - newRange: Range(Point(0, 3), Point(0, 7)), - oldText: 'de', - newText: ' de ' - } + 'will-change' ], [ 'did-change', { @@ -1027,7 +1017,7 @@ describe('TextBuffer IO', () => { it('does not fire duplicate change events when multiple changes happen on disk', (done) => { const changeEvents = [] - buffer.onWillChange((event) => changeEvents.push('will-change')) + buffer.onWillChange(() => changeEvents.push('will-change')) buffer.onDidChange((event) => changeEvents.push('did-change')) buffer.onDidChangeText((event) => changeEvents.push('did-change-text')) diff --git a/spec/text-buffer-spec.coffee b/spec/text-buffer-spec.coffee index 2089a7113f..7bfab9b97e 100644 --- a/spec/text-buffer-spec.coffee +++ b/spec/text-buffer-spec.coffee @@ -96,18 +96,6 @@ describe "TextBuffer", -> buffer.setTextInRange([[0, 2], [1, 3]], "y\nyou're o", normalizeLineEndings: false) expect(buffer.getText()).toEqual "hey\nyou're old\r\nhow are you doing?" - describe "before a change", -> - it "notifies ::onWillChange observers with the relevant details", -> - changes = [] - buffer.onWillChange (change) -> - expect(buffer.getText()).toBe "hello\nworld\r\nhow are you doing?" - changes.push(change) - - buffer.setTextInRange([[0, 2], [2, 3]], "y there\r\ncat\nwhat", normalizeLineEndings: false) - expect(changes).toEqual [{ - oldRange: [[0, 2], [2, 3]] - }] - describe "after a change", -> it "notifies, in order, decoration layers, display layers, ::onDidChange observers and display layer ::onDidChangeSync observers with the relevant details", -> events = [] @@ -2257,6 +2245,43 @@ describe "TextBuffer", -> buffer.setText('\n') expect(buffer.isEmpty()).toBeFalsy() + describe "::onWillChange", -> + it "notifies observers before a transaction, an undo or a redo", -> + changeCount = 0 + expectedText = '' + + buffer = new TextBuffer() + checkpoint = buffer.createCheckpoint() + + buffer.onWillChange (change) -> + expect(buffer.getText()).toBe expectedText + changeCount++ + + buffer.append('a') + expect(changeCount).toBe(1) + expectedText = 'a' + + buffer.transact -> + buffer.append('b') + buffer.append('c') + expect(changeCount).toBe(2) + expectedText = 'abc' + + # Empty transactions do not cause onWillChange listeners to be called + buffer.transact -> + expect(changeCount).toBe(2) + + buffer.undo() + expect(changeCount).toBe(3) + expectedText = 'a' + + buffer.redo() + expect(changeCount).toBe(4) + expectedText = 'abc' + + buffer.revertToCheckpoint(checkpoint) + expect(changeCount).toBe(5) + describe "::onDidChangeText(callback)", -> beforeEach -> filePath = require.resolve('./fixtures/sample.js') diff --git a/src/text-buffer.coffee b/src/text-buffer.coffee index d7aaeeaecc..c00968610e 100644 --- a/src/text-buffer.coffee +++ b/src/text-buffer.coffee @@ -29,29 +29,20 @@ class CompositeChangeEvent oldText = null newText = null - Object.defineProperty(this, 'didChange', { - enumerable: false, - writable: true, - value: false - }) - Object.defineProperty(this, 'oldText', { enumerable: true, get: -> unless oldText? - if @didChange - oldBuffer = new NativeTextBuffer(@newText) - for change in patch.getChanges() by -1 - oldBuffer.setTextInRange( - new Range( - traversal(change.newStart, compositeStart), - traversal(change.newEnd, compositeStart) - ), - change.oldText - ) - oldText = oldBuffer.getText() - else - oldText = buffer.getTextInRange(@oldRange) + oldBuffer = new NativeTextBuffer(@newText) + for change in patch.getChanges() by -1 + oldBuffer.setTextInRange( + new Range( + traversal(change.newStart, compositeStart), + traversal(change.newEnd, compositeStart) + ), + change.oldText + ) + oldText = oldBuffer.getText() oldText }) @@ -59,19 +50,7 @@ class CompositeChangeEvent enumerable: true, get: -> unless newText? - if @didChange - newText = buffer.getTextInRange(@newRange) - else - newBuffer = new NativeTextBuffer(@oldText) - for change in patch.getChanges() by -1 - newBuffer.setTextInRange( - new Range( - traversal(change.oldStart, compositeStart), - traversal(change.oldEnd, compositeStart) - ), - change.newText - ) - newText = newBuffer.getText() + newText = buffer.getTextInRange(@newRange) newText }) @@ -181,6 +160,7 @@ class TextBuffer @nextMarkerId = 1 @outstandingSaveCount = 0 @loadCount = 0 + @_emittedWillChangeEvent = false @setEncoding(params?.encoding) @setPreferredLineEnding(params?.preferredLineEnding) @@ -350,8 +330,6 @@ class TextBuffer # any expensive operations via this method. # # * `callback` {Function} to be called when the buffer changes. - # * `event` {Object} with the following keys: - # * `oldRange` {Range} of the old text. # # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. onWillChange: (callback) -> @@ -897,8 +875,8 @@ class TextBuffer changeEvent = {oldRange, newRange, oldText, newText} for id, displayLayer of @displayLayers displayLayer.bufferWillChange(changeEvent) - @emitter.emit 'will-change', {oldRange} + @emitWillChangeEvent() @buffer.setTextInRange(oldRange, newText) if @markerLayers? @@ -1157,6 +1135,7 @@ class TextBuffer # Public: Undo the last operation. If a transaction is in progress, aborts it. undo: -> if pop = @historyProvider.undo() + @emitWillChangeEvent() @applyChange(change) for change in pop.textUpdates @restoreFromMarkerSnapshot(pop.markers) @emitDidChangeTextEvent() @@ -1168,6 +1147,7 @@ class TextBuffer # Public: Redo the last operation redo: -> if pop = @historyProvider.redo() + @emitWillChangeEvent() @applyChange(change) for change in pop.textUpdates @restoreFromMarkerSnapshot(pop.markers) @emitDidChangeTextEvent() @@ -1241,6 +1221,7 @@ class TextBuffer # Returns a {Boolean} indicating whether the operation succeeded. revertToCheckpoint: (checkpoint, options) -> if truncated = @historyProvider.revertToCheckpoint(checkpoint, options) + @emitWillChangeEvent() @applyChange(change) for change in truncated.textUpdates @restoreFromMarkerSnapshot(truncated.markers) @emitDidChangeTextEvent() @@ -1730,17 +1711,15 @@ class TextBuffer Grim.deprecate('The .loadSync instance method is deprecated. Create a loaded buffer using TextBuffer.loadSync(filePath) instead.') checkpoint = null - changeEvent = null try patch = @buffer.loadSync( @getPath(), @getEncoding(), (percentDone, patch) => if patch and patch.getChangeCount() > 0 - changeEvent = new CompositeChangeEvent(@buffer, patch) checkpoint = @historyProvider.createCheckpoint(markers: @createMarkerSnapshot(), isBarrier: true) @emitter.emit('will-reload') - @emitter.emit('will-change', changeEvent) + @emitWillChangeEvent() ) catch error if not options.mustExist and error.code is 'ENOENT' @@ -1749,7 +1728,7 @@ class TextBuffer else throw error - @finishLoading(changeEvent, checkpoint, patch) + @finishLoading(checkpoint, patch) load: (options) -> unless options?.internal @@ -1761,7 +1740,6 @@ class TextBuffer @file.createReadStream() checkpoint = null - changeEvent = null loadCount = ++@loadCount @buffer.load( source, @@ -1774,14 +1752,13 @@ class TextBuffer return false if @loadCount > loadCount if patch if patch.getChangeCount() > 0 - changeEvent = new CompositeChangeEvent(@buffer, patch) checkpoint = @historyProvider.createCheckpoint(markers: @createMarkerSnapshot(), isBarrier: true) @emitter.emit('will-reload') - @emitter.emit('will-change', changeEvent) + @emitWillChangeEvent() else if options?.discardChanges @emitter.emit('will-reload') ).then((patch) => - @finishLoading(changeEvent, checkpoint, patch, options) + @finishLoading(checkpoint, patch, options) ).catch((error) => if not options?.mustExist and error.code is 'ENOENT' @emitter.emit('will-reload') @@ -1791,8 +1768,8 @@ class TextBuffer throw error ) - finishLoading: (changeEvent, checkpoint, patch, options) -> - if @isDestroyed() or (@loaded and not changeEvent? and patch?) + finishLoading: (checkpoint, patch, options) -> + if @isDestroyed() or (@loaded and not checkpoint? and patch?) if options?.discardChanges @emitter.emit('did-reload') return null @@ -1824,8 +1801,7 @@ class TextBuffer traversal(change.newEnd, change.newStart) ) - changeEvent.didChange = true - @emitDidChangeEvent(changeEvent) + @emitDidChangeEvent(new CompositeChangeEvent(@buffer, patch)) markersSnapshot = @createMarkerSnapshot() @historyProvider.groupChangesSinceCheckpoint(checkpoint, {markers: markersSnapshot, deleteCheckpoint: true}) @@ -1937,6 +1913,11 @@ class TextBuffer for markerLayerId, markerLayer of @markerLayers markerLayer.emitChangeEvents(snapshot?[markerLayerId]) + emitWillChangeEvent: -> + unless @_emittedWillChangeEvent + @emitter.emit('will-change') + @_emittedWillChangeEvent = true + emitDidChangeTextEvent: -> if @transactCallDepth is 0 and @changesSinceLastDidChangeTextEvent.length > 0 compactedChanges = Object.freeze(normalizePatchChanges( @@ -1945,6 +1926,7 @@ class TextBuffer @changesSinceLastDidChangeTextEvent.length = 0 @emitter.emit 'did-change-text', {changes: compactedChanges} @debouncedEmitDidStopChangingEvent() + @_emittedWillChangeEvent = false # Identifies if the buffer belongs to multiple editors. #