master
(μ
λ°μ΄νΈ μ ) λλ λΆκΈ° bug-updating-deps
λ¬΄μ¨ μΌμ΄ μΌμ΄λκΈ°λ₯Ό κΈ°λ νμ΅λκΉ?
λͺ¨λ ν
μ€νΈλ λͺ¨λ νκ²½μμ ν΅κ³Όν©λλ€.
μ€μ λ‘ μΌμ΄λλ μΌ
νλμ ν
μ€νΈκ° μ€ν¨ν©λλ€.
1360 passing (919ms)
4 pending
1 failing
1) fakeTimers.clock
.useFakeTimers
fakes provided methods:
AssertionError: [refute.same] function onNextTick() {} expected not to be the same object as function onNextTick() {}
at Object.fail (node_modules/@sinonjs/referee/lib/create-fail.js:5)
at Object.fail (node_modules/@sinonjs/referee/lib/define-assertion.js:46)
at assertion (node_modules/@sinonjs/referee/lib/define-assertion.js:68)
at Function.referee.<computed>.<computed> [as same] (node_modules/@sinonjs/referee/lib/define-assertion.js:93)
at Context.<anonymous> (test/util/fake-timers-test.js:1075)
μ¬μμ° λ°©λ²
master
(671330ce)λ₯Ό νμΈνμΈμ. npm update && npm test
ν©λλ€.
λν μ λ°μ΄νΈλ₯Ό νΈμνμ΅λλ€ : https://github.com/sinonjs/sinon/commit/c8ff2b8f6f438ccac7c5c3abd9a106dc84914610
ν λ²μ νλμ ν¨ν€μ§λ₯Ό μλμΌλ‘ λλλ¦¬λ € κ³ μλνμ΅λλ€ (λΈλΌμ°μ ν, λ‘€μ , ++ μλ).
μ΄μ ν λ²μ νλμ ν¨ν€μ§λ₯Ό μ€μΉνκ³ ν μ€νΈνμ¬ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ λ°λλ‘ μλνμμμ€.
μ±κ³΅. [email protected]
μ λκ° λ€λ₯Έ μΌμν©λλ€.
$ cat test-script.sh
#!/bin/bash
set -e # exit on error
pkgs=([email protected] [email protected] [email protected] [email protected] [email protected])
for pkg in $pkgs; do
git reset --hard
npm install $pkg
npm test
done
diffμμ μμ¬μ€λ¬μ΄ κ²μ μ°Ύμ μ μμ΅λλ€ : https://github.com/browserify/browserify/compare/v16.2.3...v16.3.0?
μ
λ°μ΄νΈμ λν package-lock.json
μλ diffμ ν₯λ―Έλ‘μ΄ λΆλΆμ΄ νλ ν¬ν¨λμ΄ μμ΅λλ€.
"process-nextick-args": {
"version": "2.0.1",
},
μ 체 μ°¨μ΄ (
git diff package-lock.json | egrep -v 'resolved|integrity|"dev"'
)
diff --git a/package-lock.json b/package-lock.json
index e12873c6..23ea8984 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -409,29 +409,29 @@
},
"acorn-node": {
- "version": "1.6.2",
+ "version": "1.7.0",
"requires": {
- "acorn": "^6.0.2",
+ "acorn": "^6.1.1",
"acorn-dynamic-import": "^4.0.0",
- "acorn-walk": "^6.1.0",
+ "acorn-walk": "^6.1.1",
"xtend": "^4.0.1"
},
"dependencies": {
"acorn": {
- "version": "6.0.4",
+ "version": "6.2.1",
}
}
},
"acorn-walk": {
- "version": "6.1.1",
+ "version": "6.2.0",
},
"agent-base": {
@@ -607,12 +607,30 @@
}
},
"assert": {
- "version": "1.4.1",
+ "version": "1.5.0",
"requires": {
+ "object-assign": "^4.1.1",
"util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ },
+ "util": {
+ "version": "0.10.3",
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
}
},
"assign-symbols": {
@@ -627,15 +645,6 @@
},
- "astw": {
- "version": "2.2.0",
- "requires": {
- "acorn": "^4.0.3"
- }
- },
"async": {
"version": "2.6.1",
@@ -761,9 +770,9 @@
}
},
"base64-js": {
- "version": "1.2.1",
+ "version": "1.3.1",
},
"binary-extensions": {
@@ -881,9 +890,9 @@
},
"browser-resolve": {
- "version": "1.11.2",
+ "version": "1.11.3",
"requires": {
"resolve": "1.1.7"
@@ -904,9 +913,9 @@
},
"browserify": {
- "version": "16.2.3",
+ "version": "16.3.0",
"requires": {
"JSONStream": "^1.0.3",
@@ -971,13 +980,19 @@
"typedarray": "^0.0.6"
}
},
+ "safe-buffer": {
+ "version": "5.2.0",
+ },
"string_decoder": {
- "version": "1.1.1",
+ "version": "1.3.0",
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "~5.2.0"
}
}
}
@@ -1064,9 +1079,9 @@
}
},
"buffer": {
- "version": "5.0.7",
+ "version": "5.2.1",
"requires": {
"base64-js": "^1.0.2",
@@ -1690,6 +1705,12 @@
"randombytes": "^2.0.0"
}
},
+ "dash-ast": {
+ "version": "1.0.0",
+ },
"date-fns": {
"version": "1.29.0",
@@ -3332,6 +3353,12 @@
}
}
},
+ "get-assigned-identifiers": {
+ "version": "1.2.0",
+ },
"get-caller-file": {
"version": "2.0.5",
@@ -3652,9 +3679,9 @@
},
"ieee754": {
- "version": "1.1.8",
+ "version": "1.1.13",
},
"ignore": {
@@ -3793,19 +3820,47 @@
}
},
"insert-module-globals": {
- "version": "7.0.1",
+ "version": "7.2.0",
"requires": {
"JSONStream": "^1.0.3",
- "combine-source-map": "~0.7.1",
- "concat-stream": "~1.5.1",
+ "acorn-node": "^1.5.2",
+ "combine-source-map": "^0.8.0",
+ "concat-stream": "^1.6.1",
"is-buffer": "^1.1.0",
- "lexical-scope": "^1.2.0",
+ "path-is-absolute": "^1.0.1",
"process": "~0.11.0",
"through2": "^2.0.0",
+ "undeclared-identifiers": "^1.1.2",
"xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "combine-source-map": {
+ "version": "0.8.0",
+ "requires": {
+ "convert-source-map": "~1.1.0",
+ "inline-source-map": "~0.6.0",
+ "lodash.memoize": "~3.0.3",
+ "source-map": "~0.5.3"
+ }
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ }
}
},
"invert-kv": {
@@ -4343,13 +4398,12 @@
}
},
"labeled-stream-splicer": {
- "version": "2.0.0",
+ "version": "2.0.2",
"requires": {
"inherits": "^2.0.1",
- "isarray": "~0.0.1",
"stream-splicer": "^2.0.0"
}
},
@@ -4592,15 +4646,6 @@
"type-check": "~0.3.2"
}
},
- "lexical-scope": {
- "version": "1.2.0",
- "requires": {
- "astw": "^2.0.0"
- }
- },
"linkify-it": {
"version": "2.0.3",
@@ -5768,14 +5813,14 @@
}
},
"module-deps": {
- "version": "6.2.0",
+ "version": "6.2.1",
"requires": {
"JSONStream": "^1.0.3",
"browser-resolve": "^1.7.0",
- "cached-path-relative": "^1.0.0",
+ "cached-path-relative": "^1.0.2",
"concat-stream": "~1.6.0",
"defined": "^1.0.0",
"detective": "^5.0.2",
@@ -5803,12 +5848,12 @@
}
},
"detective": {
- "version": "5.1.0",
+ "version": "5.2.0",
"requires": {
- "acorn-node": "^1.3.0",
+ "acorn-node": "^1.6.1",
"defined": "^1.0.0",
"minimist": "^1.1.1"
}
@@ -6607,9 +6652,9 @@
}
},
"pako": {
- "version": "1.0.6",
+ "version": "1.0.10",
},
"parent-module": {
@@ -6666,9 +6711,9 @@
},
"path-browserify": {
- "version": "0.0.0",
+ "version": "0.0.1",
},
"path-dirname": {
@@ -8221,6 +8266,12 @@
},
+ "simple-concat": {
+ "version": "1.0.0",
+ },
"slash": {
"version": "1.0.0",
@@ -8509,9 +8560,9 @@
}
},
"stream-browserify": {
- "version": "2.0.1",
+ "version": "2.0.2",
"requires": {
"inherits": "~2.0.1",
@@ -8529,22 +8580,60 @@
}
},
"stream-http": {
- "version": "2.7.2",
+ "version": "2.8.3",
"requires": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.1",
- "readable-stream": "^2.2.6",
+ "readable-stream": "^2.3.6",
"to-arraybuffer": "^1.0.0",
"xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
}
},
"stream-splicer": {
- "version": "2.0.0",
+ "version": "2.0.1",
"requires": {
"inherits": "^2.0.1",
@@ -8679,12 +8768,12 @@
},
"syntax-error": {
- "version": "1.3.0",
+ "version": "1.4.0",
"requires": {
- "acorn": "^4.0.3"
+ "acorn-node": "^1.2.0"
}
},
"table": {
@@ -8987,6 +9076,19 @@
},
+ "undeclared-identifiers": {
+ "version": "1.1.3",
+ "requires": {
+ "acorn-node": "^1.3.0",
+ "dash-ast": "^1.0.0",
+ "get-assigned-identifiers": "^1.2.0",
+ "simple-concat": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
"union-value": {
"version": "1.0.1",
@@ -9105,20 +9207,12 @@
},
"util": {
- "version": "0.10.3",
+ "version": "0.10.4",
"requires": {
- "inherits": "2.0.1"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- }
+ "inherits": "2.0.3"
}
},
"util-deprecate": {
μ΄κ²μ΄ κ΄λ ¨μ΄ μλμ§ κΆκΈν©λλ€ (sinon λ° lolex κ°μ§ νμ΄λ¨Έ μΈκΈ).
https://github.com/calvinmetcalf/process-nextick-args/commit/108596de940c73e78e0378a4084ab73ac846aed0
process-nextick-args
μ λ²κ·Έκ° μμ λ κ² κ°μ΅λλ€. λ€μ μλ νμκ² μ΅λκΉ?
ν΄λΉ νλ‘μ νΈμμ 1 λ μ΄μ μ무 μΌλ μΌμ΄λμ§ μμμΌλ―λ‘ μ¬μ ν μ€ν¨ν΄μΌν©λλ€. μ°λ¦¬λ λ€λ₯Έ λͺ¨λ ν¨ν€μ§λ₯Ό μ λ°μ΄νΈ ν μ μμ§λ§ μ΄κ²μ browserify μ λ°μ΄νΈλ₯Όμν μ°¨λ¨κΈ°λ‘ λ¨μ μμ΅λλ€.
μ΄ λ²κ·Έκ° κ°μ§ νμ΄λ¨Έ μ½λμμ λλ¬λ¬κΈ° λλ¬Έμ λ²κ·Έκ° Lolexμ μλ€κ³ κ°μ νμ§λ§ μμ½κ²λ lolexμ λμΌν ν
μ€νΈλ₯Ό μΆκ°νκ³ Browserify (=> Chokidar => fsevents => process-nextick-args)λ₯Ό μ
κ·Έλ μ΄λνλ κ²μΌλ‘ λνλ¬μ΅λλ€. _not_ λ²κ·Έλ₯Ό λͺ
μνμ§ μμ΅λλ€. λμΌν process-nextick-args λ²μ (2.0.0)μ΄ Lolexμλμμμ΅λλ€. μ΄κ²μ Sinon μμ μ fake-timers.js
κ³ μ μ μμ μ½λμμ λνλ
λλ€. module.exports
μ½λμ λν μ μΆμΈ‘μ
λλ€.
μλ μΆλ ₯μ μν΄ μ½μ μΆλ ₯μ μΆκ°νμ΅λλ€.
$ git diff test/
diff --git a/test/util/fake-timers-test.js b/test/util/fake-timers-test.js
index 97965647..27944a18 100644
--- a/test/util/fake-timers-test.js
+++ b/test/util/fake-timers-test.js
@@ -1068,10 +1068,15 @@ describe("fakeTimers.clock", function() {
});
it("fakes provided methods", function() {
+ console.log("setImmediate", setImmediate);
+ console.log("fakeTimers.timers.setImmediate", fakeTimers.timers.setImmediate);
this.clock = fakeTimers.useFakeTimers({ toFake: ["setTimeout", "Date", "setImmediate"] });
refute.same(setTimeout, fakeTimers.timers.setTimeout);
refute.same(Date, fakeTimers.timers.Date);
+ console.log("setImmediate", setImmediate);
+ console.log("fakeTimers.timers.setImmediate", fakeTimers.timers.setImmediate);
refute.same(setImmediate, fakeTimers.timers.setImmediate);
});
Browserify / process-nextick-args μ
κ·Έλ μ΄λ μ μΆλ ₯
# chromium:
fakeTimers.clock
...
.setImmediate
β returns numeric id or object with numeric id
β calls the given callback immediately
β throws if no arguments
β manages separate timers per clock instance
β passes extra parameters through to the callback
.clearImmediate
β removes immediate callbacks
.tick
β triggers immediately without specified delay
β does not trigger without sufficient delay
β triggers after sufficient delay
β triggers simultaneous timers
β triggers multiple simultaneous timers
β triggers multiple simultaneous timers with zero callAt
β waits after setTimeout was called
β mini integration test
β triggers even when some throw
β calls function with global object or null (strict mode) as this
β triggers in the order scheduled
β creates updated Date while ticking
β fires timer in intervals of 13
β fires timers in correct order
β triggers timeouts and intervals in the order scheduled
β does not fire canceled intervals
β passes 6 seconds
β passes 1 minute
β passes 2 hours, 34 minutes and 12 seconds (63ms)
β throws for invalid format
β throws for invalid minutes
β throws for negative minutes
β treats missing argument as 0
β fires nested setTimeout calls properly
β does not silently catch exceptions
β returns the current now value
.useFakeTimers
β returns clock object
β has clock property
β sets initial timestamp
β replaces global setTimeout
β global fake setTimeout should return id
β replaces global clearTimeout
β restores global setTimeout
β restores global clearTimeout
β replaces global setInterval
β replaces global clearInterval
β restores global setInterval
β restores global clearInterval
β deletes global property on restore if it was inherited onto the global object
β restores global property on restore if it is present on the global object itself
β fakes Date constructor
β fake Date constructor should mirror Date's properties
β decide on Date.now support at call-time when supported
β decide on Date.now support at call-time when unsupported
β mirrors custom Date properties
β restores Date constructor
setImmediate undefined
fakeTimers.timers.setImmediate undefined
setImmediate function () {
return clock[method].apply(clock, arguments);
}
fakeTimers.timers.setImmediate undefined
β fakes provided methods
ν₯λ―Έλ‘μ΄ λΉνΈ : setImmediate
λ ν
μ€νΈλ₯Ό μ€ννκΈ° μ μ undefined
μ΄μ§λ§ ν
μ€νΈκ° μ€νλ©λλ€.
Browserify / process-nextick-argsλ₯Ό μ
κ·Έλ μ΄λνκΈ° μ μ μΆλ ₯ νμ§λ§ λ¨μΌ ν
μ€νΈ λ§ μ€νν©λλ€.
$ mochify test/util/fake-timers-test.js --grep "fakes provided methods" > output_pre.txt
# chromium:
fakeTimers.clock
.useFakeTimers
1) fakes provided methods
0 passing (32ms)
1 failing
1) fakeTimers.clock
.useFakeTimers
fakes provided methods:
ReferenceError: setImmediate is not defined
at Context.<anonymous> (test/util/fake-timers-test.js:1072)
ν₯λ―Έλ‘κ²λμ΄ λ¨μΌ μ€νμμ setImmediate is not defined
λΌλ μ€λ₯κ° λ°μν©λλ€. μ¦, μ 체 ν
μ€νΈ μ€μνΈλ₯Ό μ€νν λ κ±°κΈ°μμλ μ μμ μΆκ°ν©λλ€ ( undefined
μ€μ νλλΌλ). μ¦, ν
μ€νΈκ° μ μ λ²μμ μν₯μ λ―ΈμΉ©λλ€. μ΄κ²μ process-nextick-args
μ
κ·Έλ μ΄λ ν κ°μκΈ° setImmediate
ꡬνμ΄ λ μ΄μ λ₯Ό μ΄ν΄νλ λ° μ€μ ν μ μμ΅λλ€. μλ§λ λ³μκ° μ μ λμλμ§
Browserify / process-nextick-args μ
κ·Έλ μ΄λ ν μΆλ ₯ (λ¨μΌ ν
μ€νΈ μ€ν)
$ cat output_post.txt
# chromium:
fakeTimers.clock
.useFakeTimers
setImmediate function(fn) {
var id = nextImmediateId++;
var args = arguments.length < 2 ? false : slice.call(arguments, 1);
immediateIds[id] = true;
nextTick(function onNextTick() {
if (immediateIds[id]) {
// fn.call() is faster so we optimize for the common use-case
// <strong i="28">@see</strong> http://jsperf.com/call-apply-segu
if (args) {
fn.apply(null, args);
} else {
fn.call(null);
}
// Prevent ids from leaking
exports.clearImmediate(id);
}
});
return id;
}
fakeTimers.timers.setImmediate function(fn) {
var id = nextImmediateId++;
var args = arguments.length < 2 ? false : slice.call(arguments, 1);
immediateIds[id] = true;
nextTick(function onNextTick() {
if (immediateIds[id]) {
// fn.call() is faster so we optimize for the common use-case
// <strong i="29">@see</strong> http://jsperf.com/call-apply-segu
if (args) {
fn.apply(null, args);
} else {
fn.call(null);
}
// Prevent ids from leaking
exports.clearImmediate(id);
}
});
return id;
}
setImmediate function(fn) {
var id = nextImmediateId++;
var args = arguments.length < 2 ? false : slice.call(arguments, 1);
immediateIds[id] = true;
nextTick(function onNextTick() {
if (immediateIds[id]) {
// fn.call() is faster so we optimize for the common use-case
// <strong i="30">@see</strong> http://jsperf.com/call-apply-segu
if (args) {
fn.apply(null, args);
} else {
fn.call(null);
}
// Prevent ids from leaking
exports.clearImmediate(id);
}
});
return id;
}
fakeTimers.timers.setImmediate function(fn) {
var id = nextImmediateId++;
var args = arguments.length < 2 ? false : slice.call(arguments, 1);
immediateIds[id] = true;
nextTick(function onNextTick() {
if (immediateIds[id]) {
// fn.call() is faster so we optimize for the common use-case
// <strong i="31">@see</strong> http://jsperf.com/call-apply-segu
if (args) {
fn.apply(null, args);
} else {
fn.call(null);
}
// Prevent ids from leaking
exports.clearImmediate(id);
}
});
return id;
}
1) fakes provided methods
0 passing (79ms)
1 failing
1) fakeTimers.clock
.useFakeTimers
fakes provided methods:
AssertionError: [refute.same] function onNextTick() {} expected not to be the same object as function onNextTick() {}
at Object.fail (node_modules/@sinonjs/referee/lib/create-fail.js:5)
at Object.fail (node_modules/@sinonjs/referee/lib/define-assertion.js:46)
at assertion (node_modules/@sinonjs/referee/lib/define-assertion.js:68)
at Function.referee.<computed>.<computed> [as same] (node_modules/@sinonjs/referee/lib/define-assertion.js:93)
at Context.<anonymous> (test/util/fake-timers-test.js:1080)
μ¬κΈ°μ ν₯λ―Έλ‘μ΄ μ μ
setImmediate
λ ν
μ€νΈ μ μ (μ¬μ©μ μ μ) ν¨μλ‘ μ μλ©λλ€.setImmediate
_ λ³νμ§ μμ _Browserify 16.3μΌλ‘ μ
λ°μ΄νΈ ν νμκ° μμ΅λλ€. npm install [email protected]
λ§νλ©΄ μΆ©λΆνλ©° ν΄λΉ λ²μ μ λͺ¨λ depsλ₯Ό μ
λ°μ΄νΈνκ³ λμΌν λ²κ·Έλ₯Ό 보μ¬μ€λλ€.
μ΄κ²μ package-lock.jsonμ μ°¨μ΄μ μ λλ€.
git diff package-lock.json
diff --git a/package-lock.json b/package-lock.json
index c2290730..92060702 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -403,12 +403,6 @@
"integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
"dev": true
},
- "acorn-dynamic-import": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
- "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
- "dev": true
- },
"acorn-jsx": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz",
@@ -416,29 +410,34 @@
"dev": true
},
"acorn-node": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz",
- "integrity": "sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
+ "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
"dev": true,
"requires": {
- "acorn": "^6.0.2",
- "acorn-dynamic-import": "^4.0.0",
- "acorn-walk": "^6.1.0",
- "xtend": "^4.0.1"
+ "acorn": "^7.0.0",
+ "acorn-walk": "^7.0.0",
+ "xtend": "^4.0.2"
},
"dependencies": {
"acorn": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz",
- "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz",
+ "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
}
}
},
"acorn-walk": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
- "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz",
+ "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==",
"dev": true
},
"agent-base": {
@@ -614,12 +613,30 @@
}
},
"assert": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
- "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
"dev": true,
"requires": {
+ "object-assign": "^4.1.1",
"util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
}
},
"assign-symbols": {
@@ -634,15 +651,6 @@
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
- "astw": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
- "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
- "dev": true,
- "requires": {
- "acorn": "^4.0.3"
- }
- },
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
@@ -768,9 +776,9 @@
}
},
"base64-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
- "integrity": "sha1-qRlH2h9KUW6jjltOwOw3c2deCIY=",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
"dev": true
},
"binary-extensions": {
@@ -888,9 +896,9 @@
"dev": true
},
"browser-resolve": {
- "version": "1.11.2",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
- "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
"dev": true,
"requires": {
"resolve": "1.1.7"
@@ -978,13 +986,19 @@
"typedarray": "^0.0.6"
}
},
+ "safe-buffer": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
+ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
+ "dev": true
+ },
"string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "~5.2.0"
}
}
}
@@ -1071,9 +1085,9 @@
}
},
"buffer": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.7.tgz",
- "integrity": "sha512-NeeHXWh5pCbPQCt2/6rLvXqapZfVsqw/YgRgaHpT3H9Uzgs+S0lSg5SQzouIuDvcmlQRqBe8hOO2scKCu3cxrg==",
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz",
+ "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==",
"dev": true,
"requires": {
"base64-js": "^1.0.2",
@@ -1697,6 +1711,12 @@
"randombytes": "^2.0.0"
}
},
+ "dash-ast": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
+ "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==",
+ "dev": true
+ },
"date-fns": {
"version": "1.29.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
@@ -3392,6 +3412,12 @@
}
}
},
+ "get-assigned-identifiers": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
+ "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==",
+ "dev": true
+ },
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -3712,9 +3738,9 @@
"dev": true
},
"ieee754": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
- "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
"dev": true
},
"ignore": {
@@ -3853,19 +3879,47 @@
}
},
"insert-module-globals": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz",
- "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz",
+ "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==",
"dev": true,
"requires": {
"JSONStream": "^1.0.3",
- "combine-source-map": "~0.7.1",
- "concat-stream": "~1.5.1",
+ "acorn-node": "^1.5.2",
+ "combine-source-map": "^0.8.0",
+ "concat-stream": "^1.6.1",
"is-buffer": "^1.1.0",
- "lexical-scope": "^1.2.0",
+ "path-is-absolute": "^1.0.1",
"process": "~0.11.0",
"through2": "^2.0.0",
+ "undeclared-identifiers": "^1.1.2",
"xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "combine-source-map": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
+ "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "~1.1.0",
+ "inline-source-map": "~0.6.0",
+ "lodash.memoize": "~3.0.3",
+ "source-map": "~0.5.3"
+ }
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ }
}
},
"invert-kv": {
@@ -4403,13 +4457,12 @@
}
},
"labeled-stream-splicer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz",
- "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz",
+ "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
- "isarray": "~0.0.1",
"stream-splicer": "^2.0.0"
}
},
@@ -4652,15 +4705,6 @@
"type-check": "~0.3.2"
}
},
- "lexical-scope": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
- "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
- "dev": true,
- "requires": {
- "astw": "^2.0.0"
- }
- },
"linkify-it": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz",
@@ -5829,14 +5873,14 @@
}
},
"module-deps": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.0.tgz",
- "integrity": "sha512-hKPmO06so6bL/ZvqVNVqdTVO8UAYsi3tQWlCa+z9KuWhoN4KDQtb5hcqQQv58qYiDE21wIvnttZEPiDgEbpwbA==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz",
+ "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==",
"dev": true,
"requires": {
"JSONStream": "^1.0.3",
"browser-resolve": "^1.7.0",
- "cached-path-relative": "^1.0.0",
+ "cached-path-relative": "^1.0.2",
"concat-stream": "~1.6.0",
"defined": "^1.0.0",
"detective": "^5.0.2",
@@ -5864,12 +5908,12 @@
}
},
"detective": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/detective/-/detective-5.1.0.tgz",
- "integrity": "sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
+ "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==",
"dev": true,
"requires": {
- "acorn-node": "^1.3.0",
+ "acorn-node": "^1.6.1",
"defined": "^1.0.0",
"minimist": "^1.1.1"
}
@@ -6668,9 +6712,9 @@
}
},
"pako": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
- "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
+ "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
"dev": true
},
"parent-module": {
@@ -6727,9 +6771,9 @@
"dev": true
},
"path-browserify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
- "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
"dev": true
},
"path-dirname": {
@@ -8282,6 +8326,12 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
+ "simple-concat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
+ "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
+ "dev": true
+ },
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -8570,9 +8620,9 @@
}
},
"stream-browserify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
- "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
"dev": true,
"requires": {
"inherits": "~2.0.1",
@@ -8590,22 +8640,60 @@
}
},
"stream-http": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
- "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
"dev": true,
"requires": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.1",
- "readable-stream": "^2.2.6",
+ "readable-stream": "^2.3.6",
"to-arraybuffer": "^1.0.0",
"xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
}
},
"stream-splicer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
- "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz",
+ "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
@@ -8740,12 +8828,12 @@
"dev": true
},
"syntax-error": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz",
- "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
+ "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
"dev": true,
"requires": {
- "acorn": "^4.0.3"
+ "acorn-node": "^1.2.0"
}
},
"table": {
@@ -9048,6 +9136,19 @@
"integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
"dev": true
},
+ "undeclared-identifiers": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz",
+ "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==",
+ "dev": true,
+ "requires": {
+ "acorn-node": "^1.3.0",
+ "dash-ast": "^1.0.0",
+ "get-assigned-identifiers": "^1.2.0",
+ "simple-concat": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
"union-value": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
@@ -9166,20 +9267,12 @@
"dev": true
},
"util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dev": true,
"requires": {
- "inherits": "2.0.1"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- }
+ "inherits": "2.0.3"
}
},
"util-deprecate": {
node_modules
μμ μ μ£ μ©μμλ₯Ό μ°Ύλ λ° μ¬μ©λ μ μμ΅λλ€.
grep -rl setImmediate node_modules/
node_modules/inquirer/node_modules/rxjs/_esm2015/internal/util/Immediate.js
node_modules/inquirer/node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js
node_modules/inquirer/node_modules/rxjs/src/internal/util/Immediate.ts
node_modules/inquirer/node_modules/rxjs/src/internal/scheduler/AsapAction.ts
node_modules/inquirer/node_modules/rxjs/internal/util/Immediate.js
node_modules/inquirer/node_modules/rxjs/internal/util/Immediate.d.ts
node_modules/inquirer/node_modules/rxjs/internal/scheduler/AsapAction.js
node_modules/inquirer/node_modules/rxjs/_esm5/internal/util/Immediate.js
node_modules/inquirer/node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js
node_modules/inquirer/node_modules/rxjs/bundles/rxjs.umd.min.js
node_modules/inquirer/node_modules/rxjs/bundles/rxjs.umd.js
node_modules/inquirer/node_modules/rxjs/bundles/rxjs.umd.js.map
node_modules/inquirer/node_modules/rxjs/bundles/rxjs.umd.min.js.map
node_modules/@types/node/index.d.ts
node_modules/@types/node/README.md
node_modules/@sinonjs/samsam/node_modules/lodash/lodash.js
node_modules/uglify-js/tools/domprops.json
node_modules/uglify-js/tools/exit.js
node_modules/mochify/node_modules/mocha/mocha.js
node_modules/mochify/node_modules/mocha/CHANGELOG.md
node_modules/mochify/node_modules/mocha/lib/runner.js
node_modules/mochify/lib/mochify.js
node_modules/readable-stream/lib/_stream_writable.js
node_modules/stream-splicer/index.js
node_modules/levelup/CHANGELOG.md
node_modules/levelup/lib/write-stream.js
node_modules/external-editor/main/index.js
node_modules/rxjs/util/Immediate.js.map
node_modules/rxjs/util/Immediate.js
node_modules/rxjs/util/Immediate.d.ts
node_modules/rxjs/_esm2015/util/Immediate.js
node_modules/rxjs/_esm2015/scheduler/AsapAction.js
node_modules/rxjs/scheduler/AsapAction.js.map
node_modules/rxjs/scheduler/AsapAction.js
node_modules/rxjs/src/util/Immediate.ts
node_modules/rxjs/src/scheduler/AsapAction.ts
node_modules/rxjs/_esm5/util/Immediate.js
node_modules/rxjs/_esm5/scheduler/AsapAction.js
node_modules/rxjs/bundles/Rx.js.map
node_modules/rxjs/bundles/Rx.min.js
node_modules/rxjs/bundles/Rx.js
node_modules/rxjs/bundles/Rx.min.js.map
node_modules/native-promise-only/npo.js
node_modules/native-promise-only/lib/npo.src.js
node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js
node_modules/es6-promise/CHANGELOG.md
node_modules/path-type/node_modules/pify/readme.md
node_modules/globals/globals.json
node_modules/timers-browserify/CHANGELOG.md
node_modules/timers-browserify/README.md
node_modules/timers-browserify/main.js
node_modules/neo-async/async.js
node_modules/neo-async/README.md
node_modules/neo-async/async.min.js
node_modules/neo-async/setImmediate.js
node_modules/readdirp/stream-api.js
node_modules/readdirp/readdirp.js
node_modules/level-blobs/node_modules/readable-stream/float.patch
node_modules/transformify/node_modules/readable-stream/float.patch
node_modules/mocha/mocha.js
node_modules/mocha/CHANGELOG.md
node_modules/mocha/lib/runner.js
node_modules/mocaccino/node_modules/readable-stream/lib/_stream_writable.js
node_modules/mocaccino/node_modules/mocha/mocha.js
node_modules/mocaccino/node_modules/mocha/CHANGELOG.md
node_modules/mocaccino/node_modules/mocha/lib/runner.js
node_modules/esm/esm/loader.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/toolbox.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/devtools_compatibility.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/console/console_module.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/heap_snapshot_worker.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/text_editor/text_editor_module.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/audits_worker/audits_worker_module.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/network/network_module.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/formatter_worker.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/sources/sources_module.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/shell.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources.pak
node_modules/load-json-file/node_modules/pify/readme.md
node_modules/async/memoize.js
node_modules/async/wrapSync.js
node_modules/async/nextTick.js
node_modules/async/CHANGELOG.md
node_modules/async/asyncify.js
node_modules/async/dist/async.min.map
node_modules/async/dist/async.js
node_modules/async/dist/async.min.js
node_modules/async/internal/queue.js
node_modules/async/internal/setImmediate.js
node_modules/async/transform.js
node_modules/async/priorityQueue.js
node_modules/async/index.js
node_modules/async/setImmediate.js
node_modules/async/ensureAsync.js
node_modules/lodash/lodash.js
node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js
node_modules/lolex/lolex.js
node_modules/lolex/CHANGELOG.md
node_modules/lolex/src/lolex-src.js
node_modules/lolex/README.md
node_modules/prettier/bin-prettier.js
node_modules/prettier/index.js
node_modules/insert-module-globals/readme.markdown
node_modules/insert-module-globals/index.js
node_modules/insert-module-globals/test/immediate/main.js
node_modules/rollup-plugin-node-builtins/src/es6/timers.js
node_modules/rollup-plugin-node-builtins/src/es6/setimmediate.js
node_modules/lint-staged/node_modules/pify/readme.md
node_modules/fd-slicer/CHANGELOG.md
node_modules/fd-slicer/index.js
node_modules/nise/nise.js
node_modules/source-map-resolve/lib/source-map-resolve-node.js
node_modules/source-map-resolve/readme.md
node_modules/source-map-resolve/source-map-resolve.js
node_modules/yauzl/index.js
node_modules/yauzl/README.md
node_modules/rollup-plugin-node-globals/readme.md
node_modules/pify/readme.md
node_modules/extract-zip/index.js
μ΄λ€μ λͺ¨λ μΈκΈνλ νμΌμ
λλ€ setImmediate
μ¬μ©ν process-nextick-args
. λλ λ¬Έμ κ° μ΄κ²λ€κ³Ό κ΄λ ¨μ΄ μλ€κ³ μκ°νλλ°, Sinon μΈλΆμμ setImmediate
μ¬μ©νμ¬ nextTick
setImmediate
μ μ μνλ€λ κ²μ μ μ μμ΅λλ€.
$ grep -l process-nextick-args $(cat setImm_hits )
node_modules/mochify/node_modules/mocha/mocha.js
node_modules/readable-stream/lib/_stream_writable.js
node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js
node_modules/mocha/mocha.js
node_modules/mocaccino/node_modules/readable-stream/lib/_stream_writable.js
node_modules/mocaccino/node_modules/mocha/mocha.js
node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/resources/inspector/audits_worker/audits_worker_module.js
node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js
Mochify λ° μ€νΈλ¦Ό @mantoniμ κ΄λ ¨λ λ§μ κ²μ λ΄ λλ€. κ·Όλ³Έ μμΈμ΄ 무μμΈμ§ μκ³ κ³μλκΉ?
μ κ·Έλ μ΄λ μ μλ κ³μΈ΅ ꡬ쑰μ λ κ°μ§ μ’ μμ± λ§ μμ΅λλ€.
$ find node_modules/ -regex '.*/process-nextick-args/package.json'
node_modules/process-nextick-args/package.json
node_modules/mocaccino/node_modules/process-nextick-args/package.json
$ find node_modules/ -regex '.*/process-nextick-args/package.json' | xargs jq .version
"1.0.7"
"2.0.1"
μ
κ·Έλ μ΄λ ν μΈ κ°μ§κ° μμ΅λλ€ (μ κ· : stream-http
).
$ find node_modules/ -regex '.*/process-nextick-args/package.json'
node_modules/process-nextick-args/package.json
node_modules/mocaccino/node_modules/process-nextick-args/package.json
node_modules/stream-http/node_modules/process-nextick-args/package.json
carlerik at diffia9350 in /mnt/dev/sinon (2072-upgrade-browserify-bug)
$ find node_modules/ -regex '.*/process-nextick-args/package.json' | xargs jq .version
"1.0.7"
"2.0.1"
"2.0.1"
λλ μ΄κ²μ νν€μΉλ λ° 30 λΆμ ν¬μνλ€. μ μ΄λ° μΌμ΄ λ°μνλμ§ μ€λͺ
ν μλ μμ§λ§, Sinonμ΄ setImmediate
κ³Ό κ΄λ ¨νμ¬ μλͺ»λ μΌμνκ³ μλ€λ κ²°λ‘ μ λλ¬νμ΅λλ€.
μ무κ²λ μ
κ·Έλ μ΄λνμ§ μκ³ νμ¬ λ§μ€ν° λΈλμΉμμ λ€μ μ½ν
μΈ λ‘ issue.js
λ₯Ό λ§λλλ€.
'use strict';
console.log(String(window.setImmediate));
require('.').useFakeTimers();
console.log(String(window.setImmediate));
node_modules/.bin/mochify issue.js
μΈμλ‘ μ€ν
# chromium:
undefined
function () {
return clock[method].apply(clock, arguments);
}
0 passing (1ms)
보μλ€μνΌ Chromiumμ setImmediate
μ‘°μ°¨ ꡬννμ§ μμ΅λλ€. λλ ν¬λ‘¬ λ²κ·Έ λ³΄κ³ μλ₯Ό μ°Ύμλλ°, μ¬κΈ°μ λ©μΈν
μ΄λλ€μ κ·Έκ²μ ꡬνν μμ¬κ° μλ€κ³ λ§νμ΅λλ€ : https://bugs.chromium.org/p/chromium/issues/detail?id=146172
λ¬Έμ λ setImmediate
κ° μ λλ‘ λ³΅μλμ§ μμ κ²μ΄ μλλΌ μ²μμ μ€μΉν΄μλ μλλ€λ κ²μ
λλ€. νμ¬ λΈλΌμ°μ νκ²½μμ Sinon κ°μ§ νμ΄λ¨Έλ₯Ό μ¬μ©νλ©΄ setImmediate
μλνμ§λ§ μ€μ λ‘λ μλ©λλ€.
λ¬Έμ λ₯Ό 보μ¬μ£Όλ ν μ€νΈ μΌμ΄μ€κ° μ€ν¨ν ν μμ²μ λ§λ€μμ΅λλ€. μνκΉκ²λ μ€λ μμ μ κ³μν μκ°μ΄ μμ΅λλ€.
κ·Έκ²μ μ€μ©μ μΈ μ κ·Ό λ°©μμ λλ€. Sinonμ΄ setImmediateλ₯Ό μ€μΉνμ§ μλλ‘νλ©΄ λ²κ·Έκ° μ¬λΌμ§λ μ§ νμΈνμμμ€. Lolexμμ μ€μ μμ μ΄ νμν μ μμ΅λλ€.
λμ€μ lolexμμ μ΄κ²μ ν μ€νΈνμ΅λλ€. κ±°κΈ°μμ μ¬ν ν μ μμΌλ―λ‘ νμ΄λ¨Έμ λν Sinon μ€μΉ μ½λμ νμΈμ μΆκ°νλ©΄λ©λλ€.
μ μ λ μμ μ¬ν (sinonjs / lolex # 268 λ° sinonjs / lolex # 269)μ΄ λ¬Έμ λ₯Ό _not_ μμ ν κ²μλ³΄κ³ μ£μΈμ μ°Ύμμ΅λλ€. https://github.com/browserify/insert-module-globals/releases/tag/v7.1.0 μ μννλ λΈλΌμ°μ ν λ³ν μΈ κ² κ°μ΅λλ€.
mochify
μ λ¨μΌ ν
μ€νΈμμ test/util/fake-timers-test.js
mochify
λ₯Ό μ€ννμ¬ μμ λμ΅λλ€. μκ³λ₯Ό λ§λ μ€μ μ£Όμ μ²λ¦¬νλ©΄ setImmediate
λ κ³μ μ μλμ§ μμ΅λλ€. λ΄κ° μ£Όμμ λ¬λ©΄ μ μκ°λμλ€.
Lolex 5 (# 2131μ μ’
μμ±)μμ setImmediateλ₯Ό λ§λ€μ§ μλλ€λ κ²μ μκ³ Lolexλ μ±
μμμ§μ§ μλλ€λ κ²μ μμμ΅λλ€. κ·Έλμ setImmediateμ λ¬Έμμ΄ ν λ μ μμμ λͺ μ€μ κ²μνκ³ Browserifyμ μ’
μμ± μΈ insert-module-globalsμμ ν¨μ μ μλ₯Ό μ°Ύμμ΅λλ€. Browserifyλ₯Ό μ
λ°μ΄νΈνμ¬μ΄ μ’
μμ±μ v7.0.1μμ 7.3.0μΌλ‘ λ³κ²½νμ¬ v7.2μμ setImmediate
λ₯Ό μΆκ°νκΈ° μμνμ΅λλ€.
μ΄ browserify λ³νμ΄ setImmediateκ° μ¬μ© / μ°Έμ‘°λλ κ²μ κ°μ§νλ©΄μ΄ μ μμ μ€μΉνλ κ²μ²λΌ 보μ λλ€. μ΄μ¨λ μ°λ¦¬λ μ¬κΈ°μ λΉλλ°μ§ μλ κ² κ°μ΅λλ€.
νμ§λ§ ν κ°μ§ μ΄μν μ μ΄ μμ΅λλ€. Mochifyκ° μ¬λ―Έμλ μ¬μ
μνλμ§ κΆκΈν©λλ€ ...
μΈκΈ ν λ³νμ΄ mochify νλ‘μΈμ€μ ν¬ν¨λμ΄ μμμ μ μ μμ΅λλ€ : mochify --bundle bundle.js --consolify test/util/fake-timers-test.js
,νμ§λ§ Sinon λ²λ€μ λΉλ ν λ ν¬ν¨λμ§λ μμ΅λλ€ : npm run build
.
@mantoni Mochify κ° "μΌλ°μ μΈ"Browserifyκ° μννμ§ μλ λ³νμΌλ‘ λ§λλ μμΈμ 무μμ λκΉ?
λͺ
ννκ² λ§νλ©΄ :
μ΄ κ²½μ° λ¬Έμ λ 무μΈκ° (Browserify)κ° μ μ λ²μμ setImmediate
μ μΆκ°νλ€λ κ²μ
λλ€. _after_ νμ§ μ½λκ° μ΄λ―Έ μ€νλμ΄ λ§μ κ°μ μ΄ κΉ¨ μ‘μμ μλ―Έν©λλ€. setImmediate
μ (λ) μ μλμ§ μμ μνλ‘ μμνκ³ λ§μ§λ§μλ μ μλμ§ μμ κ²μΌλ‘ μμλμ§λ§ κ·Έ λμ μ΄λκ°μ μ€μ λμμ΅λλ€.
μ‘°μ¬ ν΄μ£Όμ μ κ°μ¬ν©λλ€ π―
λλ μ½κ°μ λΉλκΈ° μ μ΄μλλΌλ μ΄λ€ μ μΌλ‘λ ν΄μ»€ ν€ μ£Όλ§μ μ°Έκ°ν΄μΌνλ€.
μ¬κΈ°μ κΈ°λ³Έ μμ μ¬νμ μκ³ μλ€κ³ μκ° opts.insertGlobalVars
μ μ).νμ§λ§ @mantoni λ mochify
λΉνΈλ‘ μ λ₯Ό μ’ λμ μ€μΌν©λλ€.
mochify
λͺ
λ Ή μ€μμ Browserify νλκ·Έλ₯Ό μ λ¬νλ λ°©λ²μ΄ μμ΅λλ€. mochify λ¬Έμμμ λ΄κ° 보λ κ²μ λ€μκ³Ό κ°μ΅λλ€.
mochify ν¨μλ Browserify μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€. μμΈν λ΄μ©μ Browserify APIλ₯Ό μ°Έμ‘°νμμμ€.
μ¦, Mochifyμ νμ¬ CLI μ¬μ©μ λ체νκ³ μλ° μ€ν¬λ¦½νΈ ( build.js
μ μ μ¬)λ‘ λ체ν΄μΌν©λκΉ? λν λ°ν λ browserify μΈμ€ν΄μ€λ₯Ό μΆκ° μ΅μ
μ μ¬μ©νμ¬ κ΅¬μ± ν μ μμμ μλ―Ένλ€κ³ κ°μ ν©λλ€. λλ μ΄κ²μ μ°Έκ³ λ‘ λ λ² κ²μ ν μ μμ΅λλ€ ...
@ fatso83 Mochifyμ Browserify μ΅μ μ λ μΆκ°νκ²λμ΄ κΈ°μ©λλ€ :)
μ΄μ¨λ λ¬Έμ λ Mochifyμ λ§€μ° μ€λλ λΆλΆ μΈ brout
λ΄μ μλ€κ³ μκ°ν©λλ€. mochaμ λν process
κ°μ²΄λ₯Ό shimνκ³ stdout / stderrμμ write
νΈμΆμ 리λλ μ
ν©λλ€. μ΄λ browserifyκ° process
κ°μ²΄κ° μ¬μ©μ€μΈ κ²μ κ°μ§νκ³ μ΄μ λν μ μ shimμ μΆκ° ν¨μ μλ―Έν©λλ€. Mochifyμμ --no-insert-globals
λ₯Ό μ¬μ©νμ¬ λ΄λΆ browserify νμ΄ν λΌμΈμ μ€ννκ³ λμ brout
μ¬μ©μ μ§μ process
shimμ μ 곡νλ κ²μ΄ μ’μ΅λλ€.
_Edit : _ broutμ κ΄λ ¨ μ€μ λ€μκ³Ό κ°μ΅λλ€ : https://github.com/mantoni/brout.js/blob/14b62f4e8b88445f90a46adb1921c00921680087/lib/brout.js#L28
μ΄, ν보νκ³ μΆμ§λ§ λ΄κ° λν μ§ λͺ°λΌμ ...
κ±±μ λ§. λλ κ·Έκ²μ κ³ μΉ κ²μ΄κ³ νμ¬μ κ²λ³΄λ€ μ΄ν΄νκΈ° μ¬μ΄ ν΄κ²°μ± μ μκ°ν΄ λΌ κ²μ λλ€. νμ§λ§ μκ°μ μ°Ύμ λκΉμ§ λ©°μΉ μ΄ κ±Έλ¦½λλ€.