From b67e2af5ab9d6ba4a2a3937b2ad59ccc3e32c69c Mon Sep 17 00:00:00 2001 From: MayamaTakeshi Date: Fri, 21 Feb 2020 09:03:29 +0900 Subject: [PATCH 1/2] Corrected DTMF.on('decode', ...) --- lib/dtmf.js | 2 +- package-lock.json | 1043 +++++++++++++++++++++------------------------ package.json | 5 +- test/dtmf.test.js | 30 ++ 4 files changed, 512 insertions(+), 568 deletions(-) diff --git a/lib/dtmf.js b/lib/dtmf.js index 7be0e1ad..f6b0a8d2 100644 --- a/lib/dtmf.js +++ b/lib/dtmf.js @@ -91,7 +91,7 @@ class DTMF { if (this.repeatCounter === this.options.repeatMin) { result.push(value); for (let handler of Array.from(this.decodeHandlers)) { - setTimeout(handler(value), 0); + setTimeout(function() { handler(value) }, 0); } } } else { diff --git a/package-lock.json b/package-lock.json index bcac835b..7af189de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,13 +15,13 @@ } }, "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "dev": true, "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, "acorn": { @@ -356,9 +356,9 @@ } }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "async-each-series": { @@ -368,9 +368,9 @@ "dev": true }, "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, "async-settle": { @@ -389,13 +389,21 @@ "dev": true }, "axios": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", - "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "dev": true, "requires": { - "follow-redirects": "^1.2.5", - "is-buffer": "^1.1.5" + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } } }, "babel-code-frame": { @@ -1059,11 +1067,21 @@ } }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -1159,13 +1177,13 @@ "dev": true }, "browser-sync": { - "version": "2.26.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.3.tgz", - "integrity": "sha512-VLzpjCA4uXqfzkwqWtMM6hvPm2PNHp2RcmzBXcbi6C9WpkUhhFb8SVAr4CFrCsFxDg+oY6HalOjn8F+egyvhag==", + "version": "2.26.7", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.7.tgz", + "integrity": "sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w==", "dev": true, "requires": { - "browser-sync-client": "^2.26.2", - "browser-sync-ui": "^2.26.2", + "browser-sync-client": "^2.26.6", + "browser-sync-ui": "^2.26.4", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", "chokidar": "^2.0.4", @@ -1179,8 +1197,8 @@ "fs-extra": "3.0.1", "http-proxy": "1.15.2", "immutable": "^3", - "localtunnel": "1.9.1", - "micromatch": "2.3.11", + "localtunnel": "1.9.2", + "micromatch": "^3.1.10", "opn": "5.3.0", "portscanner": "2.1.1", "qs": "6.2.3", @@ -1197,9 +1215,9 @@ } }, "browser-sync-client": { - "version": "2.26.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.2.tgz", - "integrity": "sha512-FEuVJD41fI24HJ30XOT2RyF5WcnEtdJhhTqeyDlnMk/8Ox9MZw109rvk9pdfRWye4soZLe+xcAo9tHSMxvgAdw==", + "version": "2.26.6", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.6.tgz", + "integrity": "sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw==", "dev": true, "requires": { "etag": "1.8.1", @@ -1209,9 +1227,9 @@ } }, "browser-sync-ui": { - "version": "2.26.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.2.tgz", - "integrity": "sha512-LF7GMWo8ELOE0eAlxuRCfnGQT1ZxKP9flCfGgZdXFc6BwmoqaJHlYe7MmVvykKkXjolRXTz8ztXAKGVqNwJ3EQ==", + "version": "2.26.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz", + "integrity": "sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==", "dev": true, "requires": { "async-each-series": "0.1.1", @@ -1417,9 +1435,9 @@ "dev": true }, "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, "cache-base": { @@ -1448,9 +1466,9 @@ } }, "cached-path-relative": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", - "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", "dev": true }, "callsite": { @@ -1499,24 +1517,31 @@ "dev": true }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } } }, "cipher-base": { @@ -1720,9 +1745,9 @@ } }, "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "component-bind": { @@ -1807,9 +1832,9 @@ } }, "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, "console-browserify": { @@ -2163,14 +2188,6 @@ "dev": true, "requires": { "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } } }, "eazy-logger": { @@ -2240,43 +2257,73 @@ "requires": { "ms": "2.0.0" } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } } } }, "engine.io-client": { - "version": "3.2.1", - "resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz", + "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==", "dev": true, "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "~3.3.1", + "ws": "~6.1.0", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", "dev": true, "requires": { "after": "0.8.2", @@ -2477,54 +2524,6 @@ } } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -2608,11 +2607,12 @@ "time-stamp": "^1.0.0" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, "fill-range": { "version": "4.0.0", @@ -2767,15 +2767,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2819,14 +2810,15 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -2838,7 +2830,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2847,7 +2840,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -2859,19 +2852,21 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { - "version": "1.0.1", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true @@ -2879,17 +2874,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2898,16 +2896,16 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -2925,12 +2923,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -2956,7 +2954,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -2976,16 +2974,16 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -3004,9 +3002,10 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3018,6 +3017,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3032,6 +3032,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3039,67 +3040,70 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.9.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { - "version": "2.0.0", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.4.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { @@ -3113,13 +3117,22 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.7", "bundled": true, "dev": true, "optional": true, @@ -3143,7 +3156,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3155,6 +3169,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3188,18 +3203,18 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -3229,18 +3244,19 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3255,7 +3271,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -3276,6 +3292,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3295,6 +3312,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3306,18 +3324,18 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -3327,23 +3345,25 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -3385,42 +3405,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -3832,17 +3816,24 @@ "dev": true }, "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", "dev": true, "requires": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" }, "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -3868,9 +3859,9 @@ "dev": true }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -4075,21 +4066,6 @@ } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -4121,9 +4097,9 @@ } }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -4187,18 +4163,6 @@ } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -4404,9 +4368,9 @@ } }, "limiter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz", - "integrity": "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", "dev": true }, "load-json-file": { @@ -4423,17 +4387,32 @@ } }, "localtunnel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.1.tgz", - "integrity": "sha512-HWrhOslklDvxgOGFLxi6fQVnvpl6XdX4sPscfqMZkzi3gtt9V7LKBWYvNUcpHSVvjwCQ6xzXacVvICNbNcyPnQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.2.tgz", + "integrity": "sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg==", "dev": true, "requires": { - "axios": "0.17.1", - "debug": "2.6.9", + "axios": "0.19.0", + "debug": "4.1.1", "openurl": "1.1.1", "yargs": "6.6.0" }, "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "yargs": { "version": "6.6.0", "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", @@ -4458,9 +4437,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash._basecopy": { @@ -4517,12 +4496,6 @@ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, "lodash.escape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", @@ -4682,12 +4655,6 @@ } } }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -4711,84 +4678,31 @@ } }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } } } }, @@ -4809,18 +4723,18 @@ "dev": true }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "1.43.0" } }, "minimalistic-assert": { @@ -4851,15 +4765,15 @@ "dev": true }, "mitt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", - "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -5016,9 +4930,9 @@ "dev": true }, "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -5063,9 +4977,9 @@ } }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, "next-tick": { @@ -5266,16 +5180,6 @@ } } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -5422,35 +5326,6 @@ "path-root": "^0.1.1" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -5485,9 +5360,9 @@ } }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, "pascalcase": { @@ -5623,12 +5498,6 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -5711,31 +5580,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -5756,20 +5600,20 @@ } }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, @@ -5835,35 +5679,6 @@ "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } } }, "rechoir": { @@ -5898,15 +5713,6 @@ "private": "^0.1.6" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6158,6 +5964,24 @@ "statuses": "~1.4.0" }, "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", @@ -6179,6 +6003,32 @@ "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } } }, "serve-static": { @@ -6206,9 +6056,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -6229,9 +6079,9 @@ } }, "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, "sha.js": { @@ -6435,52 +6285,134 @@ "requires": { "ms": "2.0.0" } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } } } }, "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", "dev": true }, "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", "has-binary2": "~1.0.2", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", + "socket.io-parser": "~3.3.0", "to-array": "0.1.4" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, "socket.io-parser": { - "version": "3.2.0", - "resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -6951,6 +6883,12 @@ "through2": "^2.0.3" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -7023,38 +6961,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-stream": { @@ -7132,9 +7047,9 @@ } }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "urix": { @@ -7426,14 +7341,12 @@ "dev": true }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } }, "xmlhttprequest-ssl": { diff --git a/package.json b/package.json index 697b70c7..37cbcaa3 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,13 @@ "babel-preset-es2015": "^6.18.0", "babelify": "^7.3.0", "benchmark": "^2.1.0", - "browser-sync": "^2.26.3", + "browser-sync": "^2.26.7", "browserify": "^13.3.0", "chai": "^4.1.2", "gulp": "^4.0.0", "gulp-util": "^3.0.7", "mocha": "^5.0.5", "vinyl-source-stream": "^1.1.0" - } + }, + "dependencies": {} } diff --git a/test/dtmf.test.js b/test/dtmf.test.js index f781bd9a..56001dbe 100644 --- a/test/dtmf.test.js +++ b/test/dtmf.test.js @@ -106,6 +106,36 @@ describe('DTMF', function() { result = dtmf.processBuffer(Goertzel.Utilities.generateWhiteNoiseBuffer(44100, 512)); assert.isEmpty(result); }); + + it('should call decode handlers', function(done) { + let buffer, dtmf, dualTone, pair, vals; + dtmf = new DTMF({ + sampleRate: 44100, + repeatMin: 0 + }); + + let count = 0; + + dtmf.on('decode', function(digit) { + count++; + if(count == 2) done(); + }); + + dtmf.on('decode', function(digit) { + count++; + if(count == 2) done(); + }); + + setTimeout(function() { + if(count != 2) done('not all decode handlers were called'); + }, 1000) + + pair = pairs[0]; + dualTone = Goertzel.Utilities.generateSineBuffer([pair.low, pair.high], 44100, 512); + buffer = Goertzel.Utilities.floatBufferToInt(dualTone); + vals = dtmf.processBuffer(buffer); + assert.include(vals, pair.char); + }); }); From 79f53b4815f9460c8036cc8762e8499097a96bed Mon Sep 17 00:00:00 2001 From: MayamaTakeshi Date: Fri, 21 Feb 2020 11:09:58 +0900 Subject: [PATCH 2/2] Added samples/dtmf_from_wav_file --- package-lock.json | 70 ++++++++++++++++ package.json | 3 +- samples/dtmf_from_wav_file/1234.wav | Bin 0 -> 89658 bytes samples/dtmf_from_wav_file/README.md | 36 +++++++++ .../dtmf_from_wav_file/dtmf_from_wav_file.js | 76 ++++++++++++++++++ 5 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 samples/dtmf_from_wav_file/1234.wav create mode 100644 samples/dtmf_from_wav_file/README.md create mode 100644 samples/dtmf_from_wav_file/dtmf_from_wav_file.js diff --git a/package-lock.json b/package-lock.json index 7af189de..0e8f6b10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1404,12 +1404,34 @@ } } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", "dev": true }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -6641,6 +6663,15 @@ "xtend": "^4.0.0" } }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "dev": true, + "requires": { + "debug": "2" + } + }, "stream-shift": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", @@ -7303,6 +7334,45 @@ "indexof": "0.0.1" } }, + "wav": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz", + "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==", + "dev": true, + "requires": { + "buffer-alloc": "^1.1.0", + "buffer-from": "^1.0.0", + "debug": "^2.2.0", + "readable-stream": "^1.1.14", + "stream-parser": "^0.3.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index 37cbcaa3..2559edcf 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,8 @@ "gulp": "^4.0.0", "gulp-util": "^3.0.7", "mocha": "^5.0.5", - "vinyl-source-stream": "^1.1.0" + "vinyl-source-stream": "^1.1.0", + "wav": "^1.0.2" }, "dependencies": {} } diff --git a/samples/dtmf_from_wav_file/1234.wav b/samples/dtmf_from_wav_file/1234.wav new file mode 100644 index 0000000000000000000000000000000000000000..fe560571bd1dccf105c9d9157d3ace8cb9ae0ac3 GIT binary patch literal 89658 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 bKm!5|2s9wjfItHR4G1(K(15`Ir3m~lS$!8X literal 0 HcmV?d00001 diff --git a/samples/dtmf_from_wav_file/README.md b/samples/dtmf_from_wav_file/README.md new file mode 100644 index 00000000..ef4a8b11 --- /dev/null +++ b/samples/dtmf_from_wav_file/README.md @@ -0,0 +1,36 @@ +This sample shows lib/dtmf.js doesn't do continuous DTMF detection: it processes each buffer independently and doesn't consider what happened when processing previous buffers. + +The file 1234.wav contains digits +``` + 1 2 3 4 +``` +once. + +But depending on how data is fed to dtmf.processBuffer(), we get digit duplication and error (digit 'D'): +``` +$ node dtmf_from_wav_file.js 1234.wav 1024 +{ + audioFormat: 3, + endianness: 'LE', + channels: 1, + sampleRate: 16000, + byteRate: 64000, + blockAlign: 4, + bitDepth: 32, + signed: true, + float: true +} +digit: 1 +digit: 1 +digit: 1 +digit: 2 +digit: 2 +digit: 2 +digit: D +digit: 3 +digit: 3 +digit: 4 +digit: 4 + +``` + diff --git a/samples/dtmf_from_wav_file/dtmf_from_wav_file.js b/samples/dtmf_from_wav_file/dtmf_from_wav_file.js new file mode 100644 index 00000000..d50054a4 --- /dev/null +++ b/samples/dtmf_from_wav_file/dtmf_from_wav_file.js @@ -0,0 +1,76 @@ +const fs = require('fs'); +const wav = require('wav'); + +const DTMF = require('../../lib/dtmf') +const Goertzel = require('../../index') + +var usage = () => { + console.log(` +Usage: node ${process.argv[1]} file_name samples +Ex: node ${process.argv[1]} 1234.wav 1024 +`) +} + +if(process.argv.length != 4) { + usage() + process.exit(1) +} + +var file = process.argv[2] +var samples = parseInt(process.argv[3]) + +var rs = fs.createReadStream(file) +var reader = new wav.Reader() + +var acc = [] + +reader.on('format', function(format) { + console.log(format) + + if(format.bitDepth != 32) { + console.error('Invalid wav format: bitDepth must be 32') + process.exit(1) + } + + if(!format.signed) { + console.error('Invalid wav format: signed must be true') + process.exit(1) + } + + if(!format.float) { + console.error('Invalid wav format: float must be true') + process.exit(1) + } + + var dtmf = new DTMF({ + sampleRate: format.sampleRate, + repeatMin: 0, + }) + + dtmf.on('decode', value => { + if(value) console.log(`digit: ${value}`) + }) + + reader.on('data', (data) => { + acc.push(data) + }) + + reader.on('end', () => { + var data = Buffer.concat(acc) + + var len = data.length + + var b = new Array() + + for(var i=0; i<(data.length / 4)-1; i++) { + b.push( data.readFloatLE(i*4) ) + } + + for(var i=0; i