From 57d2085ef58004853a1dc827fd2717f7ac09dfb1 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Mon, 14 May 2018 19:16:13 +0200 Subject: [PATCH 01/10] use fswatcher-child, to make watcher error prone --- package.json | 2 +- src/Bundler.js | 4 ++ src/Watcher.js | 22 ++++------ yarn.lock | 116 +++++++++++++++++++++++-------------------------- 4 files changed, 69 insertions(+), 75 deletions(-) diff --git a/package.json b/package.json index 28cc4a721b5..70576bb99c7 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "babylon-walk": "^1.0.2", "browserslist": "^3.2.6", "chalk": "^2.1.0", - "chokidar": "^2.0.3", "command-exists": "^1.2.6", "commander": "^2.11.0", "cross-spawn": "^6.0.4", @@ -31,6 +30,7 @@ "deasync": "^0.1.12", "dotenv": "^5.0.0", "filesize": "^3.6.0", + "fswatcher-child": "^0.0.5", "get-port": "^3.2.0", "glob": "^7.1.2", "grapheme-breaker": "^0.3.2", diff --git a/src/Bundler.js b/src/Bundler.js index 163cd6a1d48..c5b5287821a 100644 --- a/src/Bundler.js +++ b/src/Bundler.js @@ -324,6 +324,10 @@ class Bundler extends EventEmitter { if (this.options.watch) { this.watcher = new Watcher(); + // Wait for ready event for reliable testing on watcher + if (process.env.NODE_ENV === 'test') { + await new Promise(resolve => this.watcher.once('ready', resolve)); + } this.watcher.on('change', this.onChange.bind(this)); } diff --git a/src/Watcher.js b/src/Watcher.js index e6b68c8bc8c..c9736406eda 100644 --- a/src/Watcher.js +++ b/src/Watcher.js @@ -1,4 +1,4 @@ -const {FSWatcher} = require('chokidar'); +const FSWatcher = require('fswatcher-child'); const Path = require('path'); /** @@ -17,16 +17,7 @@ class Watcher { }); this.watchedDirectories = new Map(); - - // Only close the watcher after the ready event is emitted - this.ready = false; this.stopped = false; - this.watcher.once('ready', () => { - this.ready = true; - if (this.stopped) { - this.watcher.close(); - } - }); } /** @@ -124,14 +115,19 @@ class Watcher { this.watcher.on(event, callback); } + /** + * Add an event handler + */ + once(event, callback) { + this.watcher.once(event, callback); + } + /** * Stop watching all paths */ stop() { this.stopped = true; - if (this.ready) { - this.watcher.close(); - } + this.watcher.close(); } } diff --git a/yarn.lock b/yarn.lock index 503a6d7d330..28aeffed4c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -294,7 +294,7 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -atob@^2.0.0: +atob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" @@ -2502,6 +2502,12 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +fswatcher-child@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-0.0.3.tgz#60d03f2781b8070ee1a1d76985e40a49aa0c38cd" + dependencies: + chokidar "^2.0.3" + function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2669,38 +2675,25 @@ glsl-resolve@0.0.1: resolve "^0.6.1" xtend "^2.1.2" -glsl-token-assignments@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz#a5d82ab78499c2e8a6b83cb69495e6e665ce019f" - glsl-token-defines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz#cb892aa959936231728470d4f74032489697fa9d" dependencies: glsl-tokenizer "^2.0.0" -glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1: +glsl-token-depth@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84" glsl-token-descope@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz#0fc90ab326186b82f597b2e77dc9e21efcd32076" - dependencies: - glsl-token-assignments "^2.0.0" - glsl-token-depth "^1.1.0" - glsl-token-properties "^1.0.0" - glsl-token-scope "^1.1.0" glsl-token-inject-block@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz#e1015f5980c1091824adaa2625f1dfde8bd00034" -glsl-token-properties@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e" - -glsl-token-scope@^1.1.0, glsl-token-scope@^1.1.1: +glsl-token-scope@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1" @@ -2758,8 +2751,8 @@ grapheme-breaker@^0.3.2: unicode-trie "^0.3.1" graphql-tag@^2.6.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.9.1.tgz#1ab090ef7d3518b06d8c97d1393672145fe91587" + version "2.9.2" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.9.2.tgz#2f60a5a981375f430bf1e6e95992427dc18af686" graphql@^0.11.7: version "0.11.7" @@ -2997,10 +2990,10 @@ iconv-lite@0.4.19: resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" iconv-lite@^0.4.17, iconv-lite@^0.4.4: - version "0.4.21" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: - safer-buffer "^2.1.0" + safer-buffer ">= 2.1.2 < 3" icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: version "1.1.0" @@ -3770,8 +3763,8 @@ left-pad@^1.2.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" less@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/less/-/less-3.0.2.tgz#1bcb9813bb6090c884ac142f02c633bd42931844" + version "3.0.4" + resolved "https://registry.yarnpkg.com/less/-/less-3.0.4.tgz#d27dcedbac96031c9e7b76f1da1e4b7d83760814" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" @@ -3780,7 +3773,7 @@ less@^3.0.1: mkdirp "^0.5.0" promise "^7.1.1" request "^2.83.0" - source-map "^0.5.3" + source-map "~0.6.0" leven@^2.1.0: version "2.1.0" @@ -3794,8 +3787,8 @@ levn@^0.3.0, levn@~0.3.0: type-check "~0.3.2" lint-staged@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.0.5.tgz#1ed04c4bb2013579a3d4df4dfe0f2ea1cd988fad" + version "7.1.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.1.0.tgz#1514a5b71b8d9492ca0c3d2a44769cbcbc8bcc79" dependencies: app-root-path "^2.0.1" chalk "^2.3.1" @@ -3806,6 +3799,7 @@ lint-staged@^7.0.5: execa "^0.9.0" find-parent-dir "^0.3.0" is-glob "^4.0.0" + is-windows "^1.0.2" jest-validate "^22.4.0" listr "^0.13.0" lodash "^4.17.5" @@ -4137,8 +4131,8 @@ log-update@^1.0.2: cli-cursor "^1.0.2" lolex@^2.2.0, lolex@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.3.2.tgz#85f9450425103bf9e7a60668ea25dc43274ca807" + version "2.5.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.5.0.tgz#69d6a667607738564daf108f63240ae8cbd28fb4" longest@^1.0.1: version "1.0.1" @@ -4164,8 +4158,8 @@ lru-cache@^3.2.0: pseudomap "^1.0.1" lru-cache@^4.0.1, lru-cache@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -4252,7 +4246,7 @@ merge-source-map@1.0.4: dependencies: source-map "^0.5.6" -merge-source-map@^1.0.2, merge-source-map@^1.1.0: +merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" dependencies: @@ -4276,7 +4270,7 @@ micromatch@^2.1.5, micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" dependencies: @@ -4350,8 +4344,8 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" minipass@^2.2.1, minipass@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" + version "2.3.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.0.tgz#2e11b1c46df7fe7f1afbe9a490280add21ffe384" dependencies: safe-buffer "^5.1.1" yallist "^3.0.0" @@ -4653,8 +4647,8 @@ nwmatcher@^1.4.3: resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" nyc@^11.1.0: - version "11.7.1" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.7.1.tgz#7cb0a422e501b88ff2c1634341dec2560299d67b" + version "11.7.3" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.7.3.tgz#164f4cfad84dee6d8f353824231d9dd683aa14ea" dependencies: archy "^1.0.0" arrify "^1.0.1" @@ -4673,11 +4667,11 @@ nyc@^11.1.0: istanbul-lib-source-maps "^1.2.3" istanbul-reports "^1.4.0" md5-hex "^1.2.0" - merge-source-map "^1.0.2" - micromatch "^2.3.11" + merge-source-map "^1.1.0" + micromatch "^3.1.10" mkdirp "^0.5.0" resolve-from "^2.0.0" - rimraf "^2.5.4" + rimraf "^2.6.2" signal-exit "^3.0.1" spawn-wrap "^1.4.2" test-exclude "^4.2.0" @@ -5328,8 +5322,8 @@ posthtml-parser@^0.4.0: object-assign "^4.1.1" posthtml-render@^1.1.0, posthtml-render@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.3.tgz#53e91c3debd0e7443704efa299329e1e10867f0e" + version "1.1.4" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e" posthtml@^0.11.2, posthtml@^0.11.3: version "0.11.3" @@ -5520,8 +5514,8 @@ qs@~6.3.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" qs@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" query-string@^4.1.0: version "4.3.4" @@ -5603,7 +5597,7 @@ read-pkg@^1.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@~2.3.3: +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -5646,8 +5640,8 @@ reduce-function-call@^1.0.1: balanced-match "^0.4.2" regenerate@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" regenerator-runtime@^0.10.5: version "0.10.5" @@ -5861,7 +5855,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -5906,7 +5900,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -6054,8 +6048,8 @@ signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" sinon@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-5.0.1.tgz#e399e00b30df53abf816f16cfc8f3aa0a480ada2" + version "5.0.7" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-5.0.7.tgz#3bded6a73613ccc9e512e20246ced69a27c27dab" dependencies: "@sinonjs/formatio" "^2.0.0" diff "^3.1.0" @@ -6129,10 +6123,10 @@ sort-keys@^1.0.0: is-plain-obj "^1.0.0" source-map-resolve@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" dependencies: - atob "^2.0.0" + atob "^2.1.1" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" @@ -6145,8 +6139,8 @@ source-map-support@^0.4.15: source-map "^0.5.6" source-map-support@^0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -6165,7 +6159,7 @@ source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, sourc version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -6267,8 +6261,8 @@ static-extend@^0.1.1: object-copy "^0.1.0" static-module@^2.2.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.4.tgz#25a3ffbe6e1fdaf7e64e5bc21edcd77fc7708dac" + version "2.2.5" + resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" dependencies: concat-stream "~1.6.0" convert-source-map "^1.5.1" @@ -6311,12 +6305,12 @@ stream-browserify@^2.0.1: readable-stream "^2.0.2" stream-http@^2.7.2: - version "2.8.1" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.1.tgz#d0441be1a457a73a733a8a7b53570bebd9ef66a4" + version "2.8.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" - readable-stream "^2.3.3" + readable-stream "^2.3.6" to-arraybuffer "^1.0.0" xtend "^4.0.0" From 532ed48b42c251f5bfad73101ea14aef98039ed4 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Mon, 14 May 2018 19:24:00 +0200 Subject: [PATCH 02/10] update fswatcher-child --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 70576bb99c7..4e2e7e9eece 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "deasync": "^0.1.12", "dotenv": "^5.0.0", "filesize": "^3.6.0", - "fswatcher-child": "^0.0.5", + "fswatcher-child": "^1.0.0", "get-port": "^3.2.0", "glob": "^7.1.2", "grapheme-breaker": "^0.3.2", From 6f91bb46c8db9dcd1ece949a3ea7b94025586280 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Mon, 14 May 2018 19:35:17 +0200 Subject: [PATCH 03/10] fix yarn.lock --- yarn.lock | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/yarn.lock b/yarn.lock index 28aeffed4c7..5ae72443bbe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2502,9 +2502,9 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -fswatcher-child@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-0.0.3.tgz#60d03f2781b8070ee1a1d76985e40a49aa0c38cd" +fswatcher-child@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.0.tgz#8d24790182cab856861e38f08e77b11729339fa5" dependencies: chokidar "^2.0.3" @@ -2675,24 +2675,38 @@ glsl-resolve@0.0.1: resolve "^0.6.1" xtend "^2.1.2" +glsl-token-assignments@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz#a5d82ab78499c2e8a6b83cb69495e6e665ce019f" + glsl-token-defines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz#cb892aa959936231728470d4f74032489697fa9d" dependencies: glsl-tokenizer "^2.0.0" - + +glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1: glsl-token-depth@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84" - + glsl-token-descope@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz#0fc90ab326186b82f597b2e77dc9e21efcd32076" - + dependencies: + glsl-token-assignments "^2.0.0" + glsl-token-depth "^1.1.0" + glsl-token-properties "^1.0.0" + glsl-token-scope "^1.1.0" + glsl-token-inject-block@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz#e1015f5980c1091824adaa2625f1dfde8bd00034" - + +glsl-token-properties@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e" + glsl-token-scope@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1" From 48643ae802005f665078ec956f4691d0b2c1ea85 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Mon, 14 May 2018 19:41:07 +0200 Subject: [PATCH 04/10] fix yarn.lock spacing --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5ae72443bbe..096e56cff15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2678,18 +2678,18 @@ glsl-resolve@0.0.1: glsl-token-assignments@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz#a5d82ab78499c2e8a6b83cb69495e6e665ce019f" - + glsl-token-defines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz#cb892aa959936231728470d4f74032489697fa9d" dependencies: glsl-tokenizer "^2.0.0" - + glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1: glsl-token-depth@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84" - + glsl-token-descope@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz#0fc90ab326186b82f597b2e77dc9e21efcd32076" @@ -2698,15 +2698,15 @@ glsl-token-descope@^1.0.2: glsl-token-depth "^1.1.0" glsl-token-properties "^1.0.0" glsl-token-scope "^1.1.0" - + glsl-token-inject-block@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz#e1015f5980c1091824adaa2625f1dfde8bd00034" - + glsl-token-properties@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e" - + glsl-token-scope@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1" From 4f3472d8bc850b1b26cfe44572585a4f0870a5be Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Mon, 14 May 2018 21:10:48 +0200 Subject: [PATCH 05/10] lockfile fixed? --- yarn.lock | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 096e56cff15..15409317ff3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2686,7 +2686,6 @@ glsl-token-defines@^1.0.0: glsl-tokenizer "^2.0.0" glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1: -glsl-token-depth@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84" @@ -2707,7 +2706,7 @@ glsl-token-properties@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e" -glsl-token-scope@^1.1.1: +glsl-token-scope@^1.1.0, glsl-token-scope@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1" From 7b5993b06ca186e2ef1e0c418f762b10da8e5bf0 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Mon, 14 May 2018 23:19:05 +0200 Subject: [PATCH 06/10] fix windows tests --- package.json | 2 +- src/Bundler.js | 2 +- yarn.lock | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4e2e7e9eece..1a2e3d43434 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "deasync": "^0.1.12", "dotenv": "^5.0.0", "filesize": "^3.6.0", - "fswatcher-child": "^1.0.0", + "fswatcher-child": "^1.0.1", "get-port": "^3.2.0", "glob": "^7.1.2", "grapheme-breaker": "^0.3.2", diff --git a/src/Bundler.js b/src/Bundler.js index c5b5287821a..717e4c29f7c 100644 --- a/src/Bundler.js +++ b/src/Bundler.js @@ -325,7 +325,7 @@ class Bundler extends EventEmitter { if (this.options.watch) { this.watcher = new Watcher(); // Wait for ready event for reliable testing on watcher - if (process.env.NODE_ENV === 'test') { + if (process.env.NODE_ENV === 'test' && !this.watcher.ready) { await new Promise(resolve => this.watcher.once('ready', resolve)); } this.watcher.on('change', this.onChange.bind(this)); diff --git a/yarn.lock b/yarn.lock index 15409317ff3..16694ac7006 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2502,9 +2502,9 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -fswatcher-child@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.0.tgz#8d24790182cab856861e38f08e77b11729339fa5" +fswatcher-child@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.1.tgz#9dcf77a83d1487c400edfea2041d73a43321f435" dependencies: chokidar "^2.0.3" From 1751fa9566554bf1402ada34af157f717a30c945 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Tue, 15 May 2018 13:06:04 +0200 Subject: [PATCH 07/10] fix windows --- package.json | 2 +- test/hmr.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ yarn.lock | 6 +++--- 3 files changed, 56 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1a2e3d43434..8c2d6ecbc8a 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "deasync": "^0.1.12", "dotenv": "^5.0.0", "filesize": "^3.6.0", - "fswatcher-child": "^1.0.1", + "fswatcher-child": "^1.0.2", "get-port": "^3.2.0", "glob": "^7.1.2", "grapheme-breaker": "^0.3.2", diff --git a/test/hmr.js b/test/hmr.js index c4bd53ad343..15601d56b11 100644 --- a/test/hmr.js +++ b/test/hmr.js @@ -54,6 +54,10 @@ describe('hmr', function() { const buildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5;\nexports.b = 5;' @@ -99,6 +103,10 @@ describe('hmr', function() { const buildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5; exports.b = 5;' @@ -123,6 +131,10 @@ describe('hmr', function() { const buildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'require("fs"); exports.a = 5; exports.b = 5;' @@ -145,6 +157,10 @@ describe('hmr', function() { const buildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'require("fs"; exports.a = 5; exports.b = 5;' @@ -173,6 +189,10 @@ describe('hmr', function() { b = bundler(__dirname + '/input/index.js', {watch: true, hmr: true}); await b.bundle(); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'require("fs"; exports.a = 5; exports.b = 5;' @@ -195,6 +215,10 @@ describe('hmr', function() { const firstBuildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'require("fs"; exports.a = 5; exports.b = 5;' @@ -233,6 +257,10 @@ describe('hmr', function() { assert.deepEqual(outputs, [3]); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5; exports.b = 5;' @@ -261,6 +289,10 @@ describe('hmr', function() { assert.deepEqual(outputs, [3]); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5; exports.b = 5;' @@ -292,6 +324,10 @@ describe('hmr', function() { await sleep(50); assert.deepEqual(outputs, [3]); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5; exports.b = 5;' @@ -324,6 +360,10 @@ describe('hmr', function() { let spy = sinon.spy(ctx.document.body, 'appendChild'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'require("fs"; exports.a = 5; exports.b = 5;' @@ -362,6 +402,10 @@ describe('hmr', function() { let appendSpy = sinon.spy(ctx.document.body, 'appendChild'); let removeSpy = sinon.spy(ctx.document.getElementById('tmp'), 'remove'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'require("fs"; exports.a = 5; exports.b = 5;' @@ -401,6 +445,10 @@ describe('hmr', function() { const buildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5;\nexports.b = 5;' @@ -434,6 +482,10 @@ describe('hmr', function() { const buildEnd = nextEvent(b, 'buildEnd'); + if (process.platform === 'win32') { + await sleep(100); + } + fs.writeFileSync( __dirname + '/input/local.js', 'exports.a = 5;\nexports.b = 5;' diff --git a/yarn.lock b/yarn.lock index 16694ac7006..16849f296e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2502,9 +2502,9 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -fswatcher-child@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.1.tgz#9dcf77a83d1487c400edfea2041d73a43321f435" +fswatcher-child@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.2.tgz#e37dc2177ded60659cfbc0c89897b124efbc706b" dependencies: chokidar "^2.0.3" From bd898b157077859598fdb60bf4f059c8ca67aacf Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Wed, 16 May 2018 12:41:12 +0200 Subject: [PATCH 08/10] fix watcher test --- test/watcher.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/watcher.js b/test/watcher.js index beef708c431..c6986720ed2 100644 --- a/test/watcher.js +++ b/test/watcher.js @@ -239,6 +239,9 @@ describe('watcher', function() { fs.readFileSync(__dirname + '/input/.babelrc', 'utf8') ); babelrc.presets[0][1].targets.browsers.push('IE >= 11'); + + await sleep(100); + fs.writeFileSync(__dirname + '/input/.babelrc', JSON.stringify(babelrc)); await nextBundle(b); From 426f134fa0a252572494d87b17ca359f40e7dbd5 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Wed, 16 May 2018 12:43:17 +0200 Subject: [PATCH 09/10] update --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8c2d6ecbc8a..d45f05dd567 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "deasync": "^0.1.12", "dotenv": "^5.0.0", "filesize": "^3.6.0", - "fswatcher-child": "^1.0.2", + "fswatcher-child": "^1.0.3", "get-port": "^3.2.0", "glob": "^7.1.2", "grapheme-breaker": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 16849f296e2..7fd6a461b44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2502,9 +2502,9 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -fswatcher-child@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.2.tgz#e37dc2177ded60659cfbc0c89897b124efbc706b" +fswatcher-child@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.0.3.tgz#c89076126a3004909f6f68c0ea5c9d9143b237fd" dependencies: chokidar "^2.0.3" From 4fb34c6f313c09c060fd20fe6a23978c9ffc6c18 Mon Sep 17 00:00:00 2001 From: Jasper De Moor Date: Sat, 19 May 2018 14:48:28 +0200 Subject: [PATCH 10/10] ignore permission errors --- src/Watcher.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Watcher.js b/src/Watcher.js index c9736406eda..49d673fd32b 100644 --- a/src/Watcher.js +++ b/src/Watcher.js @@ -13,6 +13,7 @@ class Watcher { this.watcher = new FSWatcher({ useFsEvents: this.shouldWatchDirs, ignoreInitial: true, + ignorePermissionErrors: true, ignored: /\.cache|\.git/ });